diff --git a/.cextrc b/.cextrc new file mode 100644 index 0000000..30804c9 --- /dev/null +++ b/.cextrc @@ -0,0 +1,31 @@ +# +# File: .cextrc +# +# This config file was generated by version 1.7 of cextract. +# Edit carefully. +# +# Created: Sun Jan 4 17:13:28 2015 +# +cpp-program: /lib/cpp -C +!merge-output +dual-output +extract-only !ansi-code +doc-only ansi-code +show-anyway +extract-only !sort +doc-only sort-by-files +wrap-parameters: 0 +tab-width: 8 +!break-after-types +!first-comments +!prepend-filename +extract-only !yank-comments +doc-only yank-comments +extract-only statics: none +doc-only statics: any +extract-only externs +doc-only !externs +single-comments +define: __CEXTRACT__ +doc-only define: __CEXTDOC__ +# diff --git a/00INDENT.BAT b/00INDENT.BAT new file mode 100644 index 0000000..33a5533 --- /dev/null +++ b/00INDENT.BAT @@ -0,0 +1,30 @@ +REM Filename: 00INDENT.BAT +REM Purpose: format source code +REM Author: Howard Wulf, AF5NE +REM Date: 2015-01-29 +REM Uasage: implementation defined +REM Example: +REM CD \sdcard\Download\BASIC\bwbasic-2.62\ +REM 00INDENT.BAT +REM +call 01indent.bat BWBASIC.C +call 01indent.bat BWBASIC.H +call 01indent.bat BWB_CMD.C +call 01indent.bat BWB_CND.C +call 01indent.bat BWB_DIO.C +call 01indent.bat BWB_ELX.C +call 01indent.bat BWB_EXP.C +call 01indent.bat BWB_FNC.C +call 01indent.bat BWB_INP.C +call 01indent.bat BWB_INT.C +call 01indent.bat BWB_OPS.C +call 01indent.bat BWB_PRN.C +call 01indent.bat BWB_STC.C +call 01indent.bat BWB_STR.C +call 01indent.bat BWB_TBL.C +call 01indent.bat BWB_VAR.C +call 01indent.bat BWD_CMD.C +call 01indent.bat BWD_FUN.C +call 01indent.bat BWD_SIX.H +call 01indent.bat BWX_TTY.C +REM EOF diff --git a/01INDENT.BAT b/01INDENT.BAT new file mode 100644 index 0000000..2125d75 --- /dev/null +++ b/01INDENT.BAT @@ -0,0 +1,14 @@ +REM Filename: 00INDENT.BAT +REM Purpose: format source code of one file +REM Author: Howard Wulf, AF5NE +REM Date: 2015-01-29 +REM Uasage: implementation defined +REM Example: +REM CD \sdcard\Download\BASIC\bwbasic-2.62\ +REM 01INDENT.BAT bwbasic.c +REM +indent.exe %1 -bl -ncdb -nfc1 -nce -ei +xtabs.exe %1 to TEMP.TMP +del %1 +ren TEMP.TMP %1 +REM EOF diff --git a/BP100/00readme.txt b/BP100/00readme.txt new file mode 100644 index 0000000..da3ef01 --- /dev/null +++ b/BP100/00readme.txt @@ -0,0 +1,20 @@ +These programs appear to work, and are part of regression testing. + +Changes made: +a) add missing semicolon/comma in PRINT statements +b) change array names so they were not identical to scalar variable names +c) add spaces around reserved words +d) CASSETTE is not supported, use DISKETTE instead +e) add missing THEN after IF +f) change PRINT #1,X,Y to WRITE #1,X,Y +g) add exit for autmated testing + +These programs were downloaded from +http://www.willus.com/trs80/?q=Business+Pac+100 + +Program: Business Pac 100 (124984) + Author: Dr. Peter Shenkin + Files: +ACCTPAY, ACCTREC, ANNU1, ANNUDEF, ARBCOMP, ASSIGN, AUTOEXP, BAYES, BETAALPH, BLACKSH, BONDVAL, BONDVAL2, BREAKEVN, BUSBUD, CAP1, CHECK2, CHECKBK1, COMPBAL, CONDPROF, CVP, DATE, DATEVAL, DAYYEAR, DEPLETE, DEPRDB, DEPRDDB, DEPRSF, DEPRSL, DEPRSY, DILANAL, DISCBAL, EFFECT, ENVELOPE, EOQ, EPSEST, EXPVAL, FINRAT, FQEOQ, FQEOQPB, FQEOWSH, FUPRINF, FVAL, INSFILE, INVENT2, INVOICE, LABEL1, LABEL2, LEASEINT, LETWRT, LOANAFFD, LOANPAY, MAILPAC, MARKUP, MERGANAL, MORTGAGE.A, MULTMON, NCFANAL, NPV, OPTLOSS, OPTWRITE, PAYNET, PAYROLL2, PORTVAL9, PRINDLAS, PRINDPA, PROFIND, PVAL, QUEUE1, QUEUECB, REGWITH, RENTPRCH, RRCONST, RRCONVBD, RRVARIN, RTVAL, RULE78, SALELEAS, SALVAGE, SEASIND, SELLPR, SHARPE1, SIMPDISK, SIMPLEX, SINKFUND, SORT3, STOCVAL1, TAXDEP, TELDIR, TERMSPAY, TIMECLCK, TIMEMOV, TIMETR, TIMUSAN, TRANS, UPSZONE, UTILITY, VALADINF, VALPRINF, WACC, WARVAL + +EOF diff --git a/BP100/00test.sh b/BP100/00test.sh new file mode 100644 index 0000000..0ee6f3f --- /dev/null +++ b/BP100/00test.sh @@ -0,0 +1,141 @@ +# Puropose: Verify existing BWBASIC behavior +# Author: Howard Wulf +# Date: 2014-03-28 +# Usage: implementatino defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic3/BP100 +# ash ./00test.sh +# + +rm *.80 +rm *.OUT +rm *.dif + +# ---------------------------------------------- +# Regression Tests +# ---------------------------------------------- +testcase() +{ + TESTCASE=${1} + echo "TESTCASE=${TESTCASE}" + ~/bwbasic ${TESTCASE} > ${TESTCASE}.OUT + echo "500 DATA ${TESTCASE}.OUT, ${TESTCASE}.80" > PAD80.INP + ~/bwbasic PAD80.BAS + diff ${TESTCASE}.run ${TESTCASE}.80 > ${TESTCASE}.dif + if test -s ${TESTCASE}.dif + then + echo less ${TESTCASE}.dif + fi +} + +# --------------------------------------------- +echo "OPTION VERSION BYWATER" > profile.bas +echo "OPTION LABELS OFF" >> profile.bas + + +testcase ACCTPAY +testcase ACCTREC +testcase ANNU1 +testcase ANNUDEF +testcase ARBCOMP +testcase ASSIGN +testcase AUTOEXP +testcase BAYES +testcase BETAALPH +testcase BLACKSH +testcase BONDVAL +testcase BONDVAL2 +testcase BREAKEVN +testcase BUSBUD +testcase CAP1 +testcase CHECK2 +testcase CHECKBK1 +testcase COMPBAL +testcase CONDPROF +testcase CVP +testcase DATE +testcase DATEVAL +testcase DAYYEAR +testcase DEPLETE +testcase DEPRDB +testcase DEPRDDB +testcase DEPRSF +testcase DEPRSL +testcase DEPRSY +testcase DILANAL +testcase DISCBAL +testcase EFFECT +testcase ENVELOPE +testcase EOQ +testcase EPSEST +testcase EXPVAL +testcase FINRAT +testcase FQEOQ +testcase FQEOQPB +testcase FQEOWSH +testcase FUPRINF +testcase FVAL +testcase INSFILE +testcase INVENT2 +testcase INVOICE +testcase LABEL1 +testcase LABEL2 +testcase LEASEINT +testcase LETWRT +testcase LOANAFFD +testcase LOANPAY +testcase MAILPAC +testcase MARKUP +testcase MERGANAL +testcase MORTGAGE +testcase MULTMON +testcase NCFANAL +testcase NPV +testcase OPTLOSS +testcase OPTWRITE +testcase PAYNET +testcase PAYROLL2 +testcase PORTVAL9 +testcase PRINDLAS +testcase PRINDPA +testcase PROFIND +testcase PVAL +testcase QUEUE1 +testcase QUEUECB +testcase REGWITH +testcase RENTPRCH +testcase RRCONST +testcase RRCONVBD +testcase RRVARIN +testcase RTVAL +testcase RULE78 +testcase SALELEAS +testcase SALVAGE +testcase SEASIND +testcase SELLPR +testcase SHARPE1 +testcase SIMPDISK +testcase SIMPLEX +testcase SINKFUND +testcase SORT3 +testcase STOCVAL1 +testcase TAXDEP +testcase TELDIR +testcase TERMSPAY +testcase TIMECLCK +testcase TIMEMOV +testcase TIMETR +testcase TIMUSAN +testcase TRANS +testcase UPSZONE +testcase UTILITY +testcase VALADINF +testcase VALPRINF +testcase WACC +testcase WARVAL + + +cat *.dif > dif.OUT +less dif.OUT + +# EOF diff --git a/BP100/01ok.sh b/BP100/01ok.sh new file mode 100644 index 0000000..65099a4 --- /dev/null +++ b/BP100/01ok.sh @@ -0,0 +1,11 @@ +# Puropose: Promote current results to regression +# Author: Howard Wulf +# Date: 2014-03-28 +# Usage: implementatino defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic3/BP100 +# ash ./01ok.sh +# + +for f in *.80; do mv "$f" "${f/.80/.run}"; done +# EOF diff --git a/BP100/ACCTPAY.80 b/BP100/ACCTPAY.80 new file mode 100644 index 0000000..ce34560 --- /dev/null +++ b/BP100/ACCTPAY.80 @@ -0,0 +1,206 @@ + ACCOUNTS PAYABLE PROGRAM + +THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS PAYABLE +SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE +TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM +BALANCES PAYABLE. THIS TYPE OF A/P SYSTEM IS TYPICALLY +USED WHEN TOTAL OWED RATHER THAN INDIVIDUAL INVOICES ARE +IMPORTANT. FOR EXAMPLE, MONEY OWED ON CHARGE CARDS IS OF THIS +TYPE. INVOICES ARE KEPT ON FILE UNTIL THE +MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES +MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE +ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 6 +EDITING INVOICE FILE(I) OR VENDOR FILE(V)? V +VENDOR NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 1 +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 9999 0.00 0.00 0.00 0.00 + + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $0.00 $0.00 $0.00 + +9999VEND. NAME ? TOM CAT + 0.00CURRENT OWED ? 12.34 + 0.0030-60 OWED ? 56.78 + 0.0060-90 OWED ? 78.91 + 0.0090+ OWED ? 01.23 + 0.00PAY LAST MTH ? 65.43 + 0.00CHG LAST MTH ? 43.21 + 0.00CUMUL. CHGES ? 98.76 + +PRESS ENTER TO CONTINUE? +VENDOR NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + +ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT + + ITEM NUMBER ? 12 + 0VEND. NUMBER? 1 + 0.00ITEM AMOUNT ? 34.56 + COMMENT ? NICE + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? ACCTPAY.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? ACCTPAY.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 + AGED PAYABLES REPORT + +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + + TOTALS 12.34 56.78 78.91 1.23 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 + VENDOR LIST +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $65.43 $43.21 $98.76 + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + VENDOR LIST +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $65.43 $43.21 $98.76 + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE + + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 4 + INVOICE LIST + + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE + TOTAL CHARGES $34.56 + TOTAL PAYMENTS $0.00 + CHG-PAYMENTS $34.56 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 5 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 0 diff --git a/BP100/ACCTPAY.BAS b/BP100/ACCTPAY.BAS new file mode 100644 index 0000000..95ecf08 --- /dev/null +++ b/BP100/ACCTPAY.BAS @@ -0,0 +1,324 @@ +1 REM ACCTPAY +10 CLS:PRINT TAB(10);"ACCOUNTS PAYABLE PROGRAM":PRINT +20 PRINT "THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS PAYABLE +25 PRINT "SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE +30 PRINT "TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM +35 PRINT "BALANCES PAYABLE. THIS TYPE OF A/P SYSTEM IS TYPICALLY +40 PRINT "USED WHEN TOTAL OWED RATHER THAN INDIVIDUAL INVOICES ARE +42 PRINT "IMPORTANT. FOR EXAMPLE, MONEY OWED ON CHARGE CARDS IS OF THIS +43 PRINT "TYPE. INVOICES ARE KEPT ON FILE UNTIL THE +45 PRINT "MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES +50 PRINT "MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE +55 PRINT "ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS. +56 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +58 CLEAR 2000 +59 NC=25:DIM A(NC+1,7),A$(NC+1,1):REM MAX VENDORS IN SYSTEM +60 MI=200:DIM B(MI,1),B$(MI,1):REM MAX INVOICES IN SYSTEM +65 DIM F$(20):REM FORMATTING +70 GOSUB 9000 +80 FOR I=1 TO NC:A$(I,1)="9999":NEXT +100 CLS:INPUT "ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +110 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 100 +500 CLS:PRINT " MAIN MENU":PRINT +505 PRINT " 0.QUIT" +510 PRINT " 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE" +520 PRINT " 2.READ FILE IN FROM TAPE +530 PRINT " 3.WRITE FILE OUT ONTO TAPE +540 PRINT " 4.READ FILE IN FROM DISK +550 PRINT " 5.WRITE FILE OUT ONTO DISK +560 PRINT " 6.EDIT FILE +570 PRINT " 7.REPORT GENERATOR +580 PRINT " 8.POST & ELIMINATE INVOICES-UPDATE FILES +600 INPUT "ENTER YOUR CHOICE";Z9 +605 IF Z9 = 0 THEN END +610 ON Z9 GOSUB 1000,2000,2100,2200,2300,3000,5000,7000 +620 GOTO 500 +1000 REM ADD TO OR START FILE ALREADY IN MEMORY +1010 CLS: IF NI=0 THEN PRINT "NEW FILE":GOSUB 10100 +1015 I=NI+1 +1016 J=I +1020 GOSUB 6050:REM INPUT 1 RECORD +1030 CLS:PRINT F$(1):GOSUB 6300:REM PRINT OUT 1 RECORD +1040 GOSUB 10200:IF Z9$="N" THEN GOTO 1020 +1050 IF Z9$="A" THEN RETURN +1060 NI=NI+1:REM NEW RECORD ON FILE +1070 GOSUB 10400:REM MORE? +1080 IF Z9$="Y" THEN GOTO 1010 : ELSE RETURN +2000 REM READ IN FILE FROM TAPE +2010 CLS:PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2015 ' IF ZD$="Y" THEN CMD"T" +2020 INPUT #-1,NI +2030 FOR I=1 TO NI:GOSUB 2700:NEXT I +2035 FOR I=1 TO NC:GOSUB 2500:NEXT I +2040 RETURN +2100 REM WRITE OUT FILE ONTO TAPE +2105 CLS +2110 PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2115 ' IF ZD$="Y" THEN CMD"T" +2130 WRITE #-1,NI +2140 FOR I=1 TO NI:GOSUB 2800:NEXT I +2145 FOR I=1 TO NC:GOSUB 2600:NEXT I +2150 RETURN +2200 REM READ IN FILE FROM DISK +2210 CLS:PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2220 ON ERROR GOTO 2290 +2225 INPUT "ENTER NAME OF DATA FILE TO BE READ ";ZN$ +2230 OPEN "I",1,ZN$ +2240 INPUT # 1,NI +2250 FOR I=1 TO NI:GOSUB 2750:NEXT I +2255 FOR I=1 TO NC:GOSUB 2550:NEXT I +2260 CLOSE # 1 +2270 RETURN +2290 PRINT "FILE DOES NOT EXIST":GOSUB 10100:RETURN +2300 REM WRITE FILE OUT TO DISK +2305 CLS +2310 PRINT :PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2315 PRINT "PRESENT FILE NAME IS ";ZN$;:INPUT " NEW NAME";ZN$ +2320 OPEN "O",1,ZN$ +2330 WRITE # 1,NI +2340 FOR I=1 TO NI:GOSUB 2850:NEXT I +2345 FOR I=1 TO NC:GOSUB 2650:NEXT I +2370 CLOSE # 1 +2380 RETURN +2500 REM INPUT 1 VENDOR FROM TAPE +2510 INPUT #-1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7): Z8$=A$(I,1):GOSUB 11000:A$(I,1)=Z8$ +2520 RETURN +2550 REM INPUT 1 VENDOR FROM DISKETTE +2560 INPUT # 1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7): Z8$=A$(I,1):GOSUB 11000:A$(I,1)=Z8$ +2570 RETURN +2600 REM OUTPUT 1 VENDOR TO TAPE +2610 WRITE #-1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7) +2620 RETURN +2650 REM OUTPUT 1 VENDOR TO DISKETTE +2660 WRITE # 1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7) +2670 RETURN +2700 REM INPUT 1 INVOICE FROM CASSETTE +2710 INPUT #-1,B$(I,0),B(I,0),B(I,1),B$(I,1) +2720 RETURN +2750 REM INPUT 1 INVOICE FROM DISKETTE +2760 INPUT # 1,B$(I,0),B(I,0),B(I,1),B$(I,1) +2770 RETURN +2800 REM OUTPUT 1 INVOICE TO CASSETTE +2810 WRITE #-1,B$(I,0),B(I,0),B(I,1),B$(I,1) +2820 RETURN +2850 REM OUTPUT 1 INVOICE TO DISKETTE +2860 WRITE # 1,B$(I,0),B(I,0),B(I,1),B$(I,1) +2870 RETURN +3000 REM EDIT FILE +3002 CLS:INPUT "EDITING INVOICE FILE(I) OR VENDOR FILE(V)";Z9$ +3004 IF Z9$<>"I" AND Z9$<>"V" THEN GOSUB 10000:GOTO 3002 +3006 IF Z9$="V" THEN GOTO 3100 +3010 CLS:PRINT F$(1) +3020 FOR J=1 TO NI +3030 GOSUB 6300 +3050 IF J/12=INT(J/12) THEN GOSUB 4000:PRINT F$(1) +3060 NEXT J +3062 J=J-1 +3065 IF J/12=INT(J/12) THEN GOTO 3080 +3070 GOSUB 4000 +3080 RETURN +3100 REM EDIT VENDOR +3110 CLS +3120 PRINT "VENDOR NUMBER TO EDIT MUST BE LESS THAN";NC+1 +3130 PRINT :INPUT "CUSTOMER NUMBER TO EDIT(0 TO END)";I +3135 IF I=0 THEN RETURN +3140 A(I,0)=I:PRINT F$(4):GOSUB 6100:PRINT :PRINT F$(7):GOSUB 6150:PRINT +3150 GOSUB 6000 +3160 PRINT :GOSUB 10100:GOTO 3110 +4000 REM EDIT SUBROUTINE +4020 PRINT +4025 I=0 +4030 INPUT "ENTER # OF ITEM YOU WISH TO EDIT,0 IF NONE";I +4035 IF I=0 THEN RETURN +4040 K=J:J=I:CLS:PRINT F$(1):GOSUB 6300:PRINT :GOSUB 6050 +4050 CLS:J=K:GOTO 4025 +4060 PRINT :GOSUB 6000 +4070 CLS:PRINT " ";F$(2):PRINT " ";F$(3) +4080 FOR J=INT(K/12)*12+1 TO K:PRINT USING "## ";J;:GOSUB 6100:NEXT +4090 GOTO 4020 +5000 REM REPORT GENERATOR +5005 CLS:INPUT "IS A LINE PRINTER TO BE USED(Y/N)";Z2$:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 5005 +5007 CLS:PRINT TAB(10);"REPORT MENU":PRINT +5010 PRINT "1. AGED PAYABLES REPORT +5020 PRINT "2. COMPLETE VENDOR LIST +5030 PRINT "3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +5040 PRINT "4. LIST OF ALL INVOICES +5050 PRINT "5. END LIST PROGRAM +5060 PRINT :INPUT "ENTER APPROPRIATE CHOICE";Z9 +5065 IF Z9=5 THEN RETURN +5070 ON Z9 GOSUB 5100,5200,5300,5400 +5080 GOTO 5007 +5100 REM AGED PAYABLES REPORT +5105 FOR I=0 TO 7:V(I)=0:NEXT +5106 CLS +5107 F$="AGED PAYABLES REPORT":PRINT TAB(15); F$:PRINT :IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " " +5110 PRINT F$(4):IF Z2$="Y" THEN LPRINT F$(4):LPRINT " " +5115 FOR I=1 TO NC +5117 IF A$(I,1)="9999" THEN GOTO 5133 +5120 GOSUB 6100:IF Z2$="Y" THEN GOSUB 6200 +5125 FOR J=1 TO 4:V(J)=V(J)+A(I,J):NEXT +5130 IF I/12=INT(I/12) AND Z2$="N" THEN PRINT :GOSUB 10100 +5133 NEXT I +5135 PRINT :IF Z2$="Y" THEN LPRINT " " +5140 PRINT USING F$(6);"TOTALS",V(1),V(2),V(3),V(4) +5150 IF Z2$="Y" THEN LPRINT USING F$(6);"TOTALS",V(1),V(2),V(3),V(4) +5190 PRINT :GOSUB 10100 +5195 RETURN +5200 REM COMPLETE VENDOR LIST +5205 F$="VENDOR LIST":PRINT TAB(20); F$:IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " " +5210 CLS +5215 FOR I=1 TO NC +5220 IF A$(I,1)="9999" THEN GOTO 5260 +5230 PRINT F$(4):GOSUB 6100:PRINT F$(7):GOSUB 6150 +5240 IF Z2$="Y" THEN LPRINT F$(4):GOSUB 6200:LPRINT " ":LPRINT F$(7):GOSUB 6250:LPRINT " ":LPRINT " " +5250 IF Z2$<>"Y" THEN PRINT :GOSUB 10100:PRINT +5260 NEXT I +5290 RETURN +5300 REM COMPLETE CUSTOMER LIST PLUS INVOICES +5310 CLS +5312 F$="VENDOR LIST":PRINT TAB(20); F$:IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " " +5315 FOR I=1 TO NC +5320 IF A$(I,1)="9999" THEN GOTO 5360 +5325 FOR J=1 TO 7:V(J)=0:NEXT +5330 PRINT F$(4):GOSUB 6100:PRINT F$(7):GOSUB 6150 +5332 PRINT F$(1) +5334 FOR J=1 TO NI +5335 IF B(J,0)=I THEN GOSUB 6300:V(1)=V(1)+B(J,1) +5336 NEXT J +5337 PRINT +5340 IF Z2$="Y" THEN LPRINT F$(4):GOSUB 6200:LPRINT " ":LPRINT F$(7):GOSUB 6250:LPRINT " " +5345 IF Z2$<>"Y" THEN GOTO 5355 +5347 LPRINT F$(1) +5348 FOR J=1 TO NI +5349 IF B(J,0)=I THEN GOSUB 6350 +5350 NEXT J +5351 IF Z2$="Y" THEN LPRINT "CHANGE IN OWED THIS MONTH = ";V(1) +5352 IF Z2$="Y" THEN LPRINT " ":LPRINT " " +5355 IF Z2$<>"Y" THEN PRINT :GOSUB 10100 +5360 NEXT I +5370 RETURN +5400 REM COMPLETE INVOICE LIST +5410 CLS +5415 F$="INVOICE LIST":PRINT TAB(25); F$:PRINT :IF Z2$="Y" THEN LPRINT TAB(25); F$:LPRINT " " +5420 V(0)=0:V(1)=0:V(2)=0 +5430 PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1):LPRINT " " +5440 FOR J= 1 TO NI +5450 GOSUB 6300:IF Z2$="Y" THEN GOSUB 6350 +5455 V(0)=V(0)+B(J,1) +5460 IF B(J,1)>0 THEN V(1)=V(1)+B(J,1) : ELSE V(2)=V(2)+B(J,1) +5470 IF Z2$<>"Y" AND J/12=INT(J/12) THEN PRINT :GOSUB 10100:CLS:PRINT F$(1) +5475 NEXT J +5480 PRINT USING F$(3);"TOTAL CHARGES",V(1) +5482 PRINT USING F$(3);"TOTAL PAYMENTS",V(2) +5484 PRINT USING F$(3);"CHG-PAYMENTS ",V(0) +5486 IF Z2$<>"Y" THEN GOTO 5495 +5488 LPRINT USING F$(3);"TOTAL CHARGES",V(1) +5489 LPRINT USING F$(3);"TOTAL PAYMENTS",V(2) +5490 LPRINT USING F$(3);"CHG-PAYMENTS ",V(0) +5495 PRINT :GOSUB 10100 +5499 RETURN +6000 REM SBR FOR INPUTTING DATA ON 1 VENDOR +6005 F$(9)="% % " +6006 F$(10)=" #####.## " +6010 A(I,0)=I +6015 PRINT USING F$(9);A$(I,1),:INPUT "VEND. NAME ";A$(I,1) +6018 PRINT USING F$(10);A(I,1),:INPUT "CURRENT OWED ";A(I,1) +6020 PRINT USING F$(10);A(I,2),:INPUT "30-60 OWED ";A(I,2) +6022 PRINT USING F$(10);A(I,3),:INPUT "60-90 OWED ";A(I,3) +6024 PRINT USING F$(10);A(I,4),:INPUT "90+ OWED ";A(I,4) +6026 PRINT USING F$(10);A(I,5),:INPUT "PAY LAST MTH ";A(I,5) +6028 PRINT USING F$(10);A(I,6),:INPUT "CHG LAST MTH ";A(I,6) +6030 PRINT USING F$(10);A(I,7),:INPUT "CUMUL. CHGES ";A(I,7) +6040 RETURN +6050 REM SBR FOR INPUTTING DATA FOR 1 INVOICE +6055 F$(9)=" % %":F$(10)=" ######.## ": F$(11)=" ### " +6057 PRINT :PRINT "ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT":PRINT +6060 PRINT USING F$(9);B$(I,0),:INPUT "ITEM NUMBER ";B$(I,0) +6065 PRINT USING F$(11);B(I,0),:INPUT "VEND. NUMBER";B(I,0) +6067 IF B(I,0)>NC THEN PRINT "ILLEGAL VENDOR NUMBER":GOTO 6065 +6068 IF A$(B(I,0),1)="9999" THEN PRINT "ILLEGAL VENDOR NUMBER":GOTO 6065 +6070 PRINT USING F$(10);B(I,1),:INPUT "ITEM AMOUNT ";B(I,1) +6075 PRINT USING F$(9);B$(I,1),:INPUT "COMMENT ";B$(I,1) +6099 RETURN +6100 REM PRINT VENDOR 1ST LINE ON CRT +6110 PRINT USING F$(5);A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4) +6120 RETURN +6150 REM PRINT VENDOR 2ND LINE ON CRT +6160 PRINT USING F$(8);A(I,5),A(I,6),A(I,7) +6170 RETURN +6200 REM PRINT VENDOR 1ST LINE ON PRINTER +6210 LPRINT USING F$(5);A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4) +6220 RETURN +6250 REM PRINT VENDOR 2ND LINE ON PRINTER +6260 LPRINT USING F$(8);A(I,5),A(I,6),A(I,7) +6270 RETURN +6300 REM PRINT 1 INVOICE LINE ON CRT +6310 PRINT USING F$(2);J,B$(J,0),B(J,0),B(J,1),B$(J,1) +6320 RETURN +6350 REM PRINT 1 INVOICE LINE ON PRINTER +6360 IF Z2$="Y" THEN LPRINT USING F$(2);J,B$(J,0),B(J,0),B(J,1),B$(J,1) +6370 RETURN +7000 REM POST TO ACCTS. +7010 CLS +7020 INPUT "POSTING ACCTS-PRESS Y TO PROCEED,N TO RETURN";Z9$ +7030 IF Z9$="N" THEN RETURN +7040 IF Z9$<>"Y" THEN GOSUB 10000:PRINT :GOTO 7020 +7050 FOR I=1 TO NC:A(I,5)=0:A(I,6)=0:NEXT I +7060 FOR I=1 TO NI +7070 IF B(I,1)>0 THEN A(B(I,0),6)=A(B(I,0),6)+B(I,1) : ELSE A(B(I,0),5)=A(B(I,0),5)+B(I,1) +7080 NEXT I +7100 PRINT :INPUT "ARE OWED BY DATE AND CUMULATIVE BILL TO BE UPDATED(Y/N)";Z3$ +7110 IF Z3$<>"Y" AND Z3$<>"N" THEN GOSUB 10000:GOTO 7100 +7120 IF Z3$="N" THEN RETURN +7150 REM UPDATE FILES +7155 NI=0:B$(1,0)="":B(1,0)=0:B(1,1)=0:B$(1,1)="" +7160 FOR I = 1 TO NC +7165 A(I,7)=A(I,7)+A(I,6) +7170 A(I,4)=A(I,4)+A(I,3):A(I,3)=A(I,2):A(I,2)=A(I,1):A(I,1)=A(I,6) +7180 REM NOW APPLY PAYMENTS +7185 AA=A(I,5) +7190 FOR J=4 TO 1 STEP -1 +7195 IF AA=0 THEN GOTO 7290 +7200 IF A(I,J)=0 THEN GOTO 7290 +7210 A(I,J)=A(I,J)+AA:IF A(I,J)>=0 THEN AA=0:GOTO 7290 +7220 AA=A(I,J):A(I,J)=0 +7290 NEXT J +7300 A(I,1)=AA+A(I,1) +7310 NEXT I +7320 RETURN +9000 REM FORMATTING VARIABLES +9010 F$(1)=" NO. ITEM # VENDOR # ITEM AMOUNT COMMENT" +9020 F$(2)="### % % ### #####.## % %" +9030 F$(3)=" % % $$######.##" +9040 F$(4)="VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+" +9050 F$(5)=" ### % % #####.## #####.## #####.## #####.##" +9060 F$(6)=" % % ######.## ######.## ######.## ######.##" +9070 F$(7)=" PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES" +9080 F$(8)=" $$#####.## $$#####.## $$######.##" +9099 RETURN +10000 REM INPUT ERROR SBR +10010 PRINT "INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9 +10020 RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9:RETURN +10200 REM Y,N,A SBR +10205 Z9$=" " +10210 INPUT "ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$ +10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205 +10230 RETURN +10300 REM Y,N SBR +10305 Z9$=" " +10310 INPUT "ENTER Y IF OK, N IF ERROR";Z9$ +10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305 +10330 RETURN +10400 REM MORE ENTRY? SBR +10405 Z9$=" " +10410 INPUT "DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$ +10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405 +10430 RETURN +10500 REM ONLY Y/N SBR +10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000 +10520 RETURN +11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$ +11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010 +11020 RETURN + diff --git a/BP100/ACCTPAY.DAT b/BP100/ACCTPAY.DAT new file mode 100644 index 0000000..75dbe1e --- /dev/null +++ b/BP100/ACCTPAY.DAT @@ -0,0 +1,27 @@ + 1 +"12", 1, 34.56,"NICE" + 1,"TOM CAT", 12.34, 56.78, 78.91, 1.23, 65.43, 43.21, 98.76 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 diff --git a/BP100/ACCTPAY.INP b/BP100/ACCTPAY.INP new file mode 100644 index 0000000..7c52f68 --- /dev/null +++ b/BP100/ACCTPAY.INP @@ -0,0 +1,39 @@ + +Y +6 +V +1 +TOM CAT +12.34 +56.78 +78.91 +01.23 +65.43 +43.21 +98.76 + +0 +1 + +12 +1 +34.56 +NICE +Y +N +5 + +ACCTPAY.DAT +4 + +ACCTPAY.DAT +7 +Y +1 + +2 +3 +4 + +5 +0 diff --git a/BP100/ACCTPAY.OUT b/BP100/ACCTPAY.OUT new file mode 100644 index 0000000..b971df2 --- /dev/null +++ b/BP100/ACCTPAY.OUT @@ -0,0 +1,206 @@ + ACCOUNTS PAYABLE PROGRAM + +THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS PAYABLE +SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE +TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM +BALANCES PAYABLE. THIS TYPE OF A/P SYSTEM IS TYPICALLY +USED WHEN TOTAL OWED RATHER THAN INDIVIDUAL INVOICES ARE +IMPORTANT. FOR EXAMPLE, MONEY OWED ON CHARGE CARDS IS OF THIS +TYPE. INVOICES ARE KEPT ON FILE UNTIL THE +MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES +MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE +ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 6 +EDITING INVOICE FILE(I) OR VENDOR FILE(V)? V +VENDOR NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 1 +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 9999 0.00 0.00 0.00 0.00 + + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $0.00 $0.00 $0.00 + +9999VEND. NAME ? TOM CAT + 0.00CURRENT OWED ? 12.34 + 0.0030-60 OWED ? 56.78 + 0.0060-90 OWED ? 78.91 + 0.0090+ OWED ? 01.23 + 0.00PAY LAST MTH ? 65.43 + 0.00CHG LAST MTH ? 43.21 + 0.00CUMUL. CHGES ? 98.76 + +PRESS ENTER TO CONTINUE? +VENDOR NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + +ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT + + ITEM NUMBER ? 12 + 0VEND. NUMBER? 1 + 0.00ITEM AMOUNT ? 34.56 + COMMENT ? NICE + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? ACCTPAY.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? ACCTPAY.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 + AGED PAYABLES REPORT + +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + + TOTALS 12.34 56.78 78.91 1.23 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 + VENDOR LIST +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $65.43 $43.21 $98.76 + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + VENDOR LIST +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $65.43 $43.21 $98.76 + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE + + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 4 + INVOICE LIST + + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE + TOTAL CHARGES $34.56 + TOTAL PAYMENTS $0.00 + CHG-PAYMENTS $34.56 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 5 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 0 diff --git a/BP100/ACCTPAY.dif b/BP100/ACCTPAY.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/ACCTPAY.run b/BP100/ACCTPAY.run new file mode 100644 index 0000000..ce34560 --- /dev/null +++ b/BP100/ACCTPAY.run @@ -0,0 +1,206 @@ + ACCOUNTS PAYABLE PROGRAM + +THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS PAYABLE +SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE +TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM +BALANCES PAYABLE. THIS TYPE OF A/P SYSTEM IS TYPICALLY +USED WHEN TOTAL OWED RATHER THAN INDIVIDUAL INVOICES ARE +IMPORTANT. FOR EXAMPLE, MONEY OWED ON CHARGE CARDS IS OF THIS +TYPE. INVOICES ARE KEPT ON FILE UNTIL THE +MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES +MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE +ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 6 +EDITING INVOICE FILE(I) OR VENDOR FILE(V)? V +VENDOR NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 1 +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 9999 0.00 0.00 0.00 0.00 + + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $0.00 $0.00 $0.00 + +9999VEND. NAME ? TOM CAT + 0.00CURRENT OWED ? 12.34 + 0.0030-60 OWED ? 56.78 + 0.0060-90 OWED ? 78.91 + 0.0090+ OWED ? 01.23 + 0.00PAY LAST MTH ? 65.43 + 0.00CHG LAST MTH ? 43.21 + 0.00CUMUL. CHGES ? 98.76 + +PRESS ENTER TO CONTINUE? +VENDOR NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + +ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT + + ITEM NUMBER ? 12 + 0VEND. NUMBER? 1 + 0.00ITEM AMOUNT ? 34.56 + COMMENT ? NICE + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? ACCTPAY.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? ACCTPAY.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 + AGED PAYABLES REPORT + +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + + TOTALS 12.34 56.78 78.91 1.23 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 + VENDOR LIST +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $65.43 $43.21 $98.76 + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + VENDOR LIST +VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+ + 1 TOM CAT 12.34 56.78 78.91 1.23 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $65.43 $43.21 $98.76 + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE + + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 4 + INVOICE LIST + + NO. ITEM # VENDOR # ITEM AMOUNT COMMENT + 1 12 1 34.56 NICE + TOTAL CHARGES $34.56 + TOTAL PAYMENTS $0.00 + CHG-PAYMENTS $34.56 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED PAYABLES REPORT +2. COMPLETE VENDOR LIST +3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 5 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 0 diff --git a/BP100/ACCTREC.80 b/BP100/ACCTREC.80 new file mode 100644 index 0000000..9131035 --- /dev/null +++ b/BP100/ACCTREC.80 @@ -0,0 +1,206 @@ + ACCOUNTS RECEIVABLE PROGRAM + +THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS RECEIVABLE +SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE +TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM +BALANCES RECEIVABLE. THIS TYPE OF A/R SYSTEM IS TYPICALLY +USED BY PROFESSIONALS. INVOICES ARE KEPT ON FILE UNTIL +MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES +MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE +ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 6 +EDITING INVOICE FILE(I) OR CUSTOMER FILE(C)? C +CUSTOMER NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 3 +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 9999 0.00 0.00 0.00 0.00 + + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $0.00 $0.00 $0.00 + +9999CUST. NAME ? JERRY MOUSE + 0.00CURRENT OWED ? 98.76 + 0.0030-60 OWED ? 54.32 + 0.0060-90 OWED ? 10.98 + 0.0090+ OWED ? 23.45 + 0.00PAY LAST MTH ? 476.32 + 0.00CHG LAST MTH ? 642.96 + 0.00CUMUL. CHGES ? 83.82 + +PRESS ENTER TO CONTINUE? +CUSTOMER NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + +ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT + + ITEM NUMBER ? 34-AB-45/2 + 0CUST. NUMBER? 12 +ILLEGAL CUSTOMER NUMBER + 12CUST. NUMBER? 3 + 0.00ITEM AMOUNT ? 87.01 + COMMENT ? CAT FOOD + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? ACCTREC.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? ACCTREC.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 + AGED RECEIVABLES REPORT + +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + + TOTALS 98.76 54.32 10.98 23.45 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 + CUSTOMER LIST +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $476.32 $642.96 $83.82 + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + CUSTOMER LIST +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $476.32 $642.96 $83.82 + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD + + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 4 + INVOICE LIST + + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD + TOTAL CHARGES $87.01 + TOTAL PAYMENTS $0.00 + CHG-PAYMENTS $87.01 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 5 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 0 diff --git a/BP100/ACCTREC.BAS b/BP100/ACCTREC.BAS new file mode 100644 index 0000000..9570fac --- /dev/null +++ b/BP100/ACCTREC.BAS @@ -0,0 +1,322 @@ +1 REM ACCTREC +10 CLS:PRINT TAB(10);"ACCOUNTS RECEIVABLE PROGRAM":PRINT +20 PRINT "THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS RECEIVABLE +25 PRINT "SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE +30 PRINT "TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM +35 PRINT "BALANCES RECEIVABLE. THIS TYPE OF A/R SYSTEM IS TYPICALLY +40 PRINT "USED BY PROFESSIONALS. INVOICES ARE KEPT ON FILE UNTIL +45 PRINT "MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES +50 PRINT "MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE +55 PRINT "ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS. +56 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +58 CLEAR 2000 +59 NC=25:DIM A(NC+1,7),A$(NC+1,1) +60 MI=200:DIM B(MI,1),B$(MI,1):REM MAX INVOICES IN SYSTEM +65 DIM F$(20):REM FORMATTING +70 GOSUB 9000 +80 FOR I=1 TO NC:A$(I,1)="9999":NEXT +100 CLS:INPUT "ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +110 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 100 +500 CLS:PRINT " MAIN MENU":PRINT +505 PRINT " 0.QUIT" +510 PRINT " 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE" +520 PRINT " 2.READ FILE IN FROM TAPE +530 PRINT " 3.WRITE FILE OUT ONTO TAPE +540 PRINT " 4.READ FILE IN FROM DISK +550 PRINT " 5.WRITE FILE OUT ONTO DISK +560 PRINT " 6.EDIT FILE +570 PRINT " 7.REPORT GENERATOR +580 PRINT " 8.POST & ELIMINATE INVOICES-UPDATE FILES +600 INPUT "ENTER YOUR CHOICE";Z9 +605 IF Z9 = 0 THEN END +610 ON Z9 GOSUB 1000,2000,2100,2200,2300,3000,5000,7000 +620 GOTO 500 +1000 REM ADD TO OR START FILE ALREADY IN MEMORY +1010 CLS: IF NI=0 THEN PRINT "NEW FILE":GOSUB 10100 +1015 I=NI+1 +1016 J=I +1020 GOSUB 6050:REM INPUT 1 RECORD +1030 CLS:PRINT F$(1):GOSUB 6300:REM PRINT OUT 1 RECORD +1040 GOSUB 10200:IF Z9$="N" THEN GOTO 1020 +1050 IF Z9$="A" THEN RETURN +1060 NI=NI+1:REM NEW RECORD ON FILE +1070 GOSUB 10400:REM MORE? +1080 IF Z9$="Y" THEN GOTO 1010 : ELSE RETURN +2000 REM READ IN FILE FROM TAPE +2010 CLS:PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2015 ' IF ZD$="Y" THEN CMD"T" +2020 INPUT #-1,NI +2030 FOR I=1 TO NI:GOSUB 2700:NEXT I +2035 FOR I=1 TO NC:GOSUB 2500:NEXT I +2040 RETURN +2100 REM WRITE OUT FILE ONTO TAPE +2105 CLS +2110 PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2115 ' IF ZD$="Y" THEN CMD"T" +2130 WRITE #-1,NI +2140 FOR I=1 TO NI:GOSUB 2800:NEXT I +2145 FOR I=1 TO NC:GOSUB 2600:NEXT I +2150 RETURN +2200 REM READ IN FILE FROM DISK +2210 CLS:PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2220 ON ERROR GOTO 2290 +2225 INPUT "ENTER NAME OF DATA FILE TO BE READ ";ZN$ +2230 OPEN "I",1,ZN$ +2240 INPUT # 1,NI +2250 FOR I=1 TO NI:GOSUB 2750:NEXT I +2255 FOR I=1 TO NC:GOSUB 2550:NEXT I +2260 CLOSE # 1 +2270 RETURN +2290 PRINT "FILE DOES NOT EXIST":GOSUB 10100:RETURN +2300 REM WRITE FILE OUT TO DISK +2305 CLS +2310 PRINT :PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2315 PRINT "PRESENT FILE NAME IS ";ZN$;:INPUT " NEW NAME";ZN$ +2320 OPEN "O",1,ZN$ +2330 WRITE # 1,NI +2340 FOR I=1 TO NI:GOSUB 2850:NEXT I +2345 FOR I=1 TO NC:GOSUB 2650:NEXT I +2370 CLOSE # 1 +2380 RETURN +2500 REM INPUT 1 CUSTOMER FROM TAPE +2510 INPUT #-1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7): Z8$=A$(I,1):GOSUB 11000:A$(I,1)=Z8$ +2520 RETURN +2550 REM INPUT 1 CUSTOMER FROM DISKETTE +2560 INPUT # 1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7): Z8$=A$(I,1):GOSUB 11000:A$(I,1)=Z8$ +2570 RETURN +2600 REM OUTPUT 1 CUSTOMER TO TAPE +2610 WRITE #-1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7) +2620 RETURN +2650 REM OUTPUT 1 CUSTOMER TO DISKETTE +2660 WRITE # 1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7) +2670 RETURN +2700 REM INPUT 1 INVOICE FROM CASSETTE +2710 INPUT #-1,B$(I,0),B(I,0),B(I,1),B$(I,1) +2720 RETURN +2750 REM INPUT 1 INVOICE FROM DISKETTE +2760 INPUT # 1,B$(I,0),B(I,0),B(I,1),B$(I,1) +2770 RETURN +2800 REM OUTPUT 1 INVOICE TO CASSETTE +2810 WRITE #-1,B$(I,0),B(I,0),B(I,1),B$(I,1) +2820 RETURN +2850 REM OUTPUT 1 INVOICE TO DISKETTE +2860 WRITE # 1,B$(I,0),B(I,0),B(I,1),B$(I,1) +2870 RETURN +3000 REM EDIT FILE +3002 CLS:INPUT "EDITING INVOICE FILE(I) OR CUSTOMER FILE(C)";Z9$ +3004 IF Z9$<>"I" AND Z9$<>"C" THEN GOSUB 10000:GOTO 3002 +3006 IF Z9$="C" THEN GOTO 3100 +3010 CLS:PRINT F$(1) +3020 FOR J=1 TO NI +3030 GOSUB 6300 +3050 IF J/12=INT(J/12) THEN GOSUB 4000:PRINT F$(1) +3060 NEXT J +3062 J=J-1 +3065 IF J/12=INT(J/12) THEN GOTO 3080 +3070 GOSUB 4000 +3080 RETURN +3100 REM EDIT CUSTOMER +3110 CLS +3120 PRINT "CUSTOMER NUMBER TO EDIT MUST BE LESS THAN";NC+1 +3130 PRINT :INPUT "CUSTOMER NUMBER TO EDIT(0 TO END)";I +3135 IF I=0 THEN RETURN +3140 A(I,0)=I:PRINT F$(4):GOSUB 6100:PRINT :PRINT F$(7):GOSUB 6150:PRINT +3150 GOSUB 6000 +3160 PRINT :GOSUB 10100:GOTO 3110 +4000 REM EDIT SUBROUTINE +4020 PRINT +4025 I=0 +4030 INPUT "ENTER # OF ITEM YOU WISH TO EDIT,0 IF NONE";I +4035 IF I=0 THEN RETURN +4040 K=J:J=I:CLS:PRINT F$(1):GOSUB 6300:PRINT :GOSUB 6050 +4050 CLS:J=K:GOTO 4025 +4060 PRINT :GOSUB 6000 +4070 CLS:PRINT " ";F$(2):PRINT " ";F$(3) +4080 FOR J=INT(K/12)*12+1 TO K:PRINT USING "## ";J;:GOSUB 6100:NEXT +4090 GOTO 4020 +5000 REM REPORT GENERATOR +5005 CLS:INPUT "IS A LINE PRINTER TO BE USED(Y/N)";Z2$:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 5005 +5007 CLS:PRINT TAB(10);"REPORT MENU":PRINT +5010 PRINT "1. AGED RECEIVABLES REPORT +5020 PRINT "2. COMPLETE CUSTOMER LIST +5030 PRINT "3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +5040 PRINT "4. LIST OF ALL INVOICES +5050 PRINT "5. END LIST PROGRAM +5060 PRINT :INPUT "ENTER APPROPRIATE CHOICE";Z9 +5065 IF Z9=5 THEN RETURN +5070 ON Z9 GOSUB 5100,5200,5300,5400 +5080 GOTO 5007 +5100 REM AGED RECEIVABLES REPORT +5105 FOR I=0 TO 7:V(I)=0:NEXT +5106 CLS +5107 F$="AGED RECEIVABLES REPORT":PRINT TAB(15); F$:PRINT :IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " " +5110 PRINT F$(4):IF Z2$="Y" THEN LPRINT F$(4):LPRINT " " +5115 FOR I=1 TO NC +5117 IF A$(I,1)="9999" THEN GOTO 5133 +5120 GOSUB 6100:IF Z2$="Y" THEN GOSUB 6200 +5125 FOR J=1 TO 4:V(J)=V(J)+A(I,J):NEXT +5130 IF I/12=INT(I/12) AND Z2$="N" THEN PRINT :GOSUB 10100 +5133 NEXT I +5135 PRINT :IF Z2$="Y" THEN LPRINT " " +5140 PRINT USING F$(6);"TOTALS",V(1),V(2),V(3),V(4) +5150 IF Z2$="Y" THEN LPRINT USING F$(6);"TOTALS",V(1),V(2),V(3),V(4) +5190 PRINT :GOSUB 10100 +5195 RETURN +5200 REM COMPLETE CUSTOMER LIST +5205 F$="CUSTOMER LIST":PRINT TAB(20); F$:IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " " +5210 CLS +5215 FOR I=1 TO NC +5220 IF A$(I,1)="9999" THEN GOTO 5260 +5230 PRINT F$(4):GOSUB 6100:PRINT F$(7):GOSUB 6150 +5240 IF Z2$="Y" THEN LPRINT F$(4):GOSUB 6200:LPRINT " ":LPRINT F$(7):GOSUB 6250:LPRINT " ":LPRINT " " +5250 IF Z2$<>"Y" THEN PRINT :GOSUB 10100:PRINT +5260 NEXT I +5290 RETURN +5300 REM COMPLETE CUSTOMER LIST PLUS INVOICES +5310 CLS +5312 F$="CUSTOMER LIST":PRINT TAB(20); F$:IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " " +5315 FOR I=1 TO NC +5320 IF A$(I,1)="9999" THEN GOTO 5360 +5325 FOR J=1 TO 7:V(J)=0:NEXT +5330 PRINT F$(4):GOSUB 6100:PRINT F$(7):GOSUB 6150 +5332 PRINT F$(1) +5334 FOR J=1 TO NI +5335 IF B(J,0)=I THEN GOSUB 6300:V(1)=V(1)+B(J,1) +5336 NEXT J +5337 PRINT +5340 IF Z2$="Y" THEN LPRINT F$(4):GOSUB 6200:LPRINT " ":LPRINT F$(7):GOSUB 6250:LPRINT " " +5345 IF Z2$<>"Y" THEN GOTO 5355 +5347 LPRINT F$(1) +5348 FOR J=1 TO NI +5349 IF B(J,0)=I THEN GOSUB 6350 +5350 NEXT J +5351 IF Z2$="Y" THEN LPRINT "CHANGE IN OWED THIS MONTH = ";V(1) +5352 IF Z2$="Y" THEN LPRINT " ":LPRINT " " +5355 IF Z2$<>"Y" THEN PRINT :GOSUB 10100 +5360 NEXT I +5370 RETURN +5400 REM COMPLETE INVOICE LIST +5410 CLS +5415 F$="INVOICE LIST":PRINT TAB(25); F$:PRINT :IF Z2$="Y" THEN LPRINT TAB(25); F$:LPRINT " " +5420 V(0)=0:V(1)=0:V(2)=0 +5430 PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1):LPRINT " " +5440 FOR J= 1 TO NI +5450 GOSUB 6300:IF Z2$="Y" THEN GOSUB 6350 +5455 V(0)=V(0)+B(J,1) +5460 IF B(J,1)>0 THEN V(1)=V(1)+B(J,1) : ELSE V(2)=V(2)+B(J,1) +5470 IF Z2$<>"Y" AND J/12=INT(J/12) THEN PRINT :GOSUB 10100:CLS:PRINT F$(1) +5475 NEXT J +5480 PRINT USING F$(3);"TOTAL CHARGES",V(1) +5482 PRINT USING F$(3);"TOTAL PAYMENTS",V(2) +5484 PRINT USING F$(3);"CHG-PAYMENTS ",V(0) +5486 IF Z2$<>"Y" THEN GOTO 5495 +5488 LPRINT USING F$(3);"TOTAL CHARGES",V(1) +5489 LPRINT USING F$(3);"TOTAL PAYMENTS",V(2) +5490 LPRINT USING F$(3);"CHG-PAYMENTS ",V(0) +5495 PRINT :GOSUB 10100 +5499 RETURN +6000 REM SBR FOR INPUTTING DATA ON 1 CUSTOMER +6005 F$(9)="% % " +6006 F$(10)=" #####.## " +6010 A(I,0)=I +6015 PRINT USING F$(9);A$(I,1),:INPUT "CUST. NAME ";A$(I,1) +6018 PRINT USING F$(10);A(I,1),:INPUT "CURRENT OWED ";A(I,1) +6020 PRINT USING F$(10);A(I,2),:INPUT "30-60 OWED ";A(I,2) +6022 PRINT USING F$(10);A(I,3),:INPUT "60-90 OWED ";A(I,3) +6024 PRINT USING F$(10);A(I,4),:INPUT "90+ OWED ";A(I,4) +6026 PRINT USING F$(10);A(I,5),:INPUT "PAY LAST MTH ";A(I,5) +6028 PRINT USING F$(10);A(I,6),:INPUT "CHG LAST MTH ";A(I,6) +6030 PRINT USING F$(10);A(I,7),:INPUT "CUMUL. CHGES ";A(I,7) +6040 RETURN +6050 REM SBR FOR INPUTTING DATA FOR 1 INVOICE +6055 F$(9)=" % %":F$(10)=" ######.## ": F$(11)=" ### " +6057 PRINT :PRINT "ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT":PRINT +6060 PRINT USING F$(9);B$(I,0),:INPUT "ITEM NUMBER ";B$(I,0) +6065 PRINT USING F$(11);B(I,0),:INPUT "CUST. NUMBER";B(I,0) +6067 IF B(I,0)>NC THEN PRINT "ILLEGAL CUSTOMER NUMBER":GOTO 6065 +6068 IF A$(B(I,0),1)="9999" THEN PRINT "ILLEGAL CUSTOMER NUMBER":GOTO 6065 +6070 PRINT USING F$(10);B(I,1),:INPUT "ITEM AMOUNT ";B(I,1) +6075 PRINT USING F$(9);B$(I,1),:INPUT "COMMENT ";B$(I,1) +6099 RETURN +6100 REM PRINT CUSTOMER 1ST LINE ON CRT +6110 PRINT USING F$(5);A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4) +6120 RETURN +6150 REM PRINT CUSTOMER 2ND LINE ON CRT +6160 PRINT USING F$(8);A(I,5),A(I,6),A(I,7) +6170 RETURN +6200 REM PRINT CUSTOMER 1ST LINE ON PRINTER +6210 LPRINT USING F$(5);A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4) +6220 RETURN +6250 REM PRINT CUSTOMER 2ND LINE ON PRINTER +6260 LPRINT USING F$(8);A(I,5),A(I,6),A(I,7) +6270 RETURN +6300 REM PRINT 1 INVOICE LINE ON CRT +6310 PRINT USING F$(2);J,B$(J,0),B(J,0),B(J,1),B$(J,1) +6320 RETURN +6350 REM PRINT 1 INVOICE LINE ON PRINTER +6360 IF Z2$="Y" THEN LPRINT USING F$(2);J,B$(J,0),B(J,0),B(J,1),B$(J,1) +6370 RETURN +7000 REM POST TO ACCTS. +7010 CLS +7020 INPUT "POSTING ACCTS-PRESS Y TO PROCEED,N TO RETURN";Z9$ +7030 IF Z9$="N" THEN RETURN +7040 IF Z9$<>"Y" THEN GOSUB 10000:PRINT :GOTO 7020 +7050 FOR I=1 TO NC:A(I,5)=0:A(I,6)=0:NEXT I +7060 FOR I=1 TO NI +7070 IF B(I,1)>0 THEN A(B(I,0),6)=A(B(I,0),6)+B(I,1) : ELSE A(B(I,0),5)=A(B(I,0),5)+B(I,1) +7080 NEXT I +7100 PRINT :INPUT "ARE OWED BY DATE AND CUMULATIVE BILL TO BE UPDATED(Y/N)";Z3$ +7110 IF Z3$<>"Y" AND Z3$<>"N" THEN GOSUB 10000:GOTO 7100 +7120 IF Z3$="N" THEN RETURN +7150 REM UPDATE FILES +7155 NI=0:B$(1,0)="":B(1,0)=0:B(1,1)=0:B$(1,1)="" +7160 FOR I = 1 TO NC +7165 A(I,7)=A(I,7)+A(I,6) +7170 A(I,4)=A(I,4)+A(I,3):A(I,3)=A(I,2):A(I,2)=A(I,1):A(I,1)=A(I,6) +7180 REM NOW APPLY PAYMENTS +7185 AA=A(I,5) +7190 FOR J=4 TO 1 STEP -1 +7195 IF AA=0 THEN GOTO 7290 +7200 IF A(I,J)=0 THEN GOTO 7290 +7210 A(I,J)=A(I,J)+AA:IF A(I,J)>=0 THEN AA=0:GOTO 7290 +7220 AA=A(I,J):A(I,J)=0 +7290 NEXT J +7300 A(I,1)=AA+A(I,1) +7310 NEXT I +7320 RETURN +9000 REM FORMATTING VARIABLES +9010 F$(1)=" NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT" +9020 F$(2)="### % % ### #####.## % %" +9030 F$(3)=" % % $$######.##" +9040 F$(4)="CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+" +9050 F$(5)=" ### % % #####.## #####.## #####.## #####.##" +9060 F$(6)=" % % ######.## ######.## ######.## ######.##" +9070 F$(7)=" PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES" +9080 F$(8)=" $$#####.## $$#####.## $$######.##" +9099 RETURN +10000 REM INPUT ERROR SBR +10010 PRINT "INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9 +10020 RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9:RETURN +10200 REM Y,N,A SBR +10205 Z9$=" " +10210 INPUT "ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$ +10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205 +10230 RETURN +10300 REM Y,N SBR +10305 Z9$=" " +10310 INPUT "ENTER Y IF OK, N IF ERROR";Z9$ +10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305 +10330 RETURN +10400 REM MORE ENTRY? SBR +10405 Z9$=" " +10410 INPUT "DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$ +10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405 +10430 RETURN +10500 REM ONLY Y/N SBR +10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000 +10520 RETURN +11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$ +11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010 +11020 RETURN + diff --git a/BP100/ACCTREC.DAT b/BP100/ACCTREC.DAT new file mode 100644 index 0000000..ac050f0 --- /dev/null +++ b/BP100/ACCTREC.DAT @@ -0,0 +1,27 @@ + 1 +"34-AB-45/2", 3, 87.01,"CAT FOOD" + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 3,"JERRY MOUSE", 98.76, 54.32, 10.98, 23.45, 476.32, 642.96, 83.82 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 + 0,"9999", 0, 0, 0, 0, 0, 0, 0 diff --git a/BP100/ACCTREC.INP b/BP100/ACCTREC.INP new file mode 100644 index 0000000..be9b32d --- /dev/null +++ b/BP100/ACCTREC.INP @@ -0,0 +1,40 @@ + +Y +6 +C +3 +JERRY MOUSE +98.76 +54.32 +10.98 +23.45 +476.32 +642.96 +83.82 + +0 +1 + +34-AB-45/2 +12 +3 +87.01 +CAT FOOD +Y +N +5 + +ACCTREC.DAT +4 + +ACCTREC.DAT +7 +Y +1 + +2 +3 +4 + +5 +0 diff --git a/BP100/ACCTREC.OUT b/BP100/ACCTREC.OUT new file mode 100644 index 0000000..536b0ba --- /dev/null +++ b/BP100/ACCTREC.OUT @@ -0,0 +1,206 @@ + ACCOUNTS RECEIVABLE PROGRAM + +THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS RECEIVABLE +SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE +TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM +BALANCES RECEIVABLE. THIS TYPE OF A/R SYSTEM IS TYPICALLY +USED BY PROFESSIONALS. INVOICES ARE KEPT ON FILE UNTIL +MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES +MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE +ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 6 +EDITING INVOICE FILE(I) OR CUSTOMER FILE(C)? C +CUSTOMER NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 3 +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 9999 0.00 0.00 0.00 0.00 + + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $0.00 $0.00 $0.00 + +9999CUST. NAME ? JERRY MOUSE + 0.00CURRENT OWED ? 98.76 + 0.0030-60 OWED ? 54.32 + 0.0060-90 OWED ? 10.98 + 0.0090+ OWED ? 23.45 + 0.00PAY LAST MTH ? 476.32 + 0.00CHG LAST MTH ? 642.96 + 0.00CUMUL. CHGES ? 83.82 + +PRESS ENTER TO CONTINUE? +CUSTOMER NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + +ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT + + ITEM NUMBER ? 34-AB-45/2 + 0CUST. NUMBER? 12 +ILLEGAL CUSTOMER NUMBER + 12CUST. NUMBER? 3 + 0.00ITEM AMOUNT ? 87.01 + COMMENT ? CAT FOOD + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? ACCTREC.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? ACCTREC.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 + AGED RECEIVABLES REPORT + +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + + TOTALS 98.76 54.32 10.98 23.45 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 + CUSTOMER LIST +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $476.32 $642.96 $83.82 + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + CUSTOMER LIST +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $476.32 $642.96 $83.82 + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD + + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 4 + INVOICE LIST + + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD + TOTAL CHARGES $87.01 + TOTAL PAYMENTS $0.00 + CHG-PAYMENTS $87.01 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 5 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 0 diff --git a/BP100/ACCTREC.dif b/BP100/ACCTREC.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/ACCTREC.run b/BP100/ACCTREC.run new file mode 100644 index 0000000..9131035 --- /dev/null +++ b/BP100/ACCTREC.run @@ -0,0 +1,206 @@ + ACCOUNTS RECEIVABLE PROGRAM + +THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS RECEIVABLE +SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE +TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM +BALANCES RECEIVABLE. THIS TYPE OF A/R SYSTEM IS TYPICALLY +USED BY PROFESSIONALS. INVOICES ARE KEPT ON FILE UNTIL +MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES +MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE +ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 6 +EDITING INVOICE FILE(I) OR CUSTOMER FILE(C)? C +CUSTOMER NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 3 +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 9999 0.00 0.00 0.00 0.00 + + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $0.00 $0.00 $0.00 + +9999CUST. NAME ? JERRY MOUSE + 0.00CURRENT OWED ? 98.76 + 0.0030-60 OWED ? 54.32 + 0.0060-90 OWED ? 10.98 + 0.0090+ OWED ? 23.45 + 0.00PAY LAST MTH ? 476.32 + 0.00CHG LAST MTH ? 642.96 + 0.00CUMUL. CHGES ? 83.82 + +PRESS ENTER TO CONTINUE? +CUSTOMER NUMBER TO EDIT MUST BE LESS THAN 26 + +CUSTOMER NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + +ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT + + ITEM NUMBER ? 34-AB-45/2 + 0CUST. NUMBER? 12 +ILLEGAL CUSTOMER NUMBER + 12CUST. NUMBER? 3 + 0.00ITEM AMOUNT ? 87.01 + COMMENT ? CAT FOOD + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? ACCTREC.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? ACCTREC.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 + AGED RECEIVABLES REPORT + +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + + TOTALS 98.76 54.32 10.98 23.45 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 + CUSTOMER LIST +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $476.32 $642.96 $83.82 + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + CUSTOMER LIST +CUST.NO. CUST.NAME CURRENT 30-60 60-90 90+ + 3 JERRY MOUSE 98.76 54.32 10.98 23.45 + PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES + $476.32 $642.96 $83.82 + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD + + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 4 + INVOICE LIST + + NO. ITEM # CUSTOMER # ITEM AMOUNT COMMENT + 1 34-AB-4 3 87.01 CAT FOOD + TOTAL CHARGES $87.01 + TOTAL PAYMENTS $0.00 + CHG-PAYMENTS $87.01 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. AGED RECEIVABLES REPORT +2. COMPLETE CUSTOMER LIST +3. COMPLETE CUSTOMER LIST WITH INVOICES ATTACHED +4. LIST OF ALL INVOICES +5. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 5 + MAIN MENU + + 0.QUIT + 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.REPORT GENERATOR + 8.POST & ELIMINATE INVOICES-UPDATE FILES +ENTER YOUR CHOICE? 0 diff --git a/BP100/ANNU1.80 b/BP100/ANNU1.80 new file mode 100644 index 0000000..13bbdc5 --- /dev/null +++ b/BP100/ANNU1.80 @@ -0,0 +1,142 @@ + ANNUITY COMPUTATION BY DR. PETER SHENKIN + AN ANNUITY IS ANY SET OF EQUAL PAYMENTS MADE AT +EQUAL INTERVALS OF TIME. WITH AN ORDINARY ANNUITY +PAYMENTS ARE MADE AT THE ENDS OF THE PERIODS DE- +FINED BY THESE TIME INTERVALS. FOR AN ANNUITY DUE +THE PAYMENTS ARE MADE AT THE BEGINNING OF THE PER- +IODS IN QUESTION. THE PRESENT VALUE OF AN ANNUITY +IS THE AMOUNT OF CASH ONE WOULD ACCEPT NOW INSTEAD +OF THE SEQUENCE OF FUTURE PAYMENTS. BECAUSE MONEY +HAS TIME VALUE (INTEREST IS CHARGED) THE PRESENT +VALUE DOES NOT EQUAL THE SUM OF THE PAYMENTS. tHE +FUTURE VALUE OF AN ANNUITY IS THE AMOUNT OF CASH +WHICH WOULD ACCUMULATE BY THE END OF THE ANNUITY +IF THE INDIVIDUAL PAYMENTS ARE INVESTED AT THE +PREVAILING INTEREST RATE. +PRESS ENTER TO CONTINUE? +MANY ANNUITIES ALSO INVOLVE A LAST BALLOON PAY- +MENT.IN THE ANNUITY PROBLEMS WE EXAMINE,THE VARIABLES +OF INTEREST ARE NUMBER OF PAYMENTS,INTEREST RATE PER +PERIOD,PAYMENT PER PERIOD,PRESENT OR FUTURE VALUE,AND +BALLOON PAYMENT (AT END OF TERM) IF DESIRED.GIVEN ANY +FOUR VALUES OF THE ABOVE VARIABLES THIS PROGRAM WILL +FIND THE FIFTH VARIABLE WHEN CONSIDERING THE PRESENT +VALUE SITUATION. IN THE FUTURE VALUE CASE NO BALLOON +PAYMENTS ARE CONSIDERED AS IN THIS CASE A BALLOON +PAYMENT OF A CERTAIN AMOUNT WOULD ADD THAT AMOUNT +TO FUTURE VALUE.NOTE THAT INTEREST RATES ARE WRITTEN +AS PER CENTS, NOT AS DECIMALS(E.G. 6%, NOT .06). IN +ADDITION NOTE THAT INTEREST RATE IS PER PERIOD,I.E. +PER MONTH,PER YEAR,ETC. + +PRESS ENTER TO BEGIN? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 1 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +FUTURE VALUE ? 2345.67 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 12 +ANNUAL INTEREST RATE ? 3.75 +FUTURE VALUE = 2345.67 +NUMBER OF PAYMENTS = 12 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.75 +PAYMENT = 89.01 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 2 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? P +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +FUTURE VALUE ? 1234.56 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 36 +INTEREST RATE PER PERIOD(%)? 0.175 +FUTURE VALUE = 1234.56 +NUMBER OF PAYMENTS = 36 +INT. RATE PER PERIOD= .175 +PAYMENT = 89.01 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 3 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 24 +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +PRESENT VALUE ? 1234.56 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 52 +ANNUAL INTEREST RATE ? 3.25 +BALLOON PAYMENT ? 9999 +PRESENT VALUE = 1234.56 +NUMBER OF PAYMENTS = 52 + CONSISTING OF 24 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.25 +PAYMENT = 89.01 +BALLOON PAYMENT =-3467.45 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 4 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? P +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +PRESENT VALUE ? 1234.56 +PAYMENT ? 9999 +NUMBER OF PAYMENTS ? 36 +INTEREST RATE PER PERIOD(%)? 5 +BALLOON PAYMENT ? 55.55 +PRESENT VALUE = 1234.56 +NUMBER OF PAYMENTS = 36 +INT. RATE PER PERIOD= 5 +PAYMENT = 70.5051 +BALLOON PAYMENT = 55.55 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/ANNU1.BAS b/BP100/ANNU1.BAS new file mode 100644 index 0000000..87e6dad --- /dev/null +++ b/BP100/ANNU1.BAS @@ -0,0 +1,135 @@ +1000 CLS:PRINT" ANNUITY COMPUTATION BY DR. PETER SHENKIN" +1002 PRINT" AN ANNUITY IS ANY SET OF EQUAL PAYMENTS MADE AT +1003 PRINT"EQUAL INTERVALS OF TIME. WITH AN ORDINARY ANNUITY +1004 PRINT"PAYMENTS ARE MADE AT THE ENDS OF THE PERIODS DE- +1005 PRINT"FINED BY THESE TIME INTERVALS. FOR AN ANNUITY DUE +1006 PRINT"THE PAYMENTS ARE MADE AT THE BEGINNING OF THE PER- +1007 PRINT"IODS IN QUESTION. THE PRESENT VALUE OF AN ANNUITY +1008 PRINT"IS THE AMOUNT OF CASH ONE WOULD ACCEPT NOW INSTEAD +1009 PRINT"OF THE SEQUENCE OF FUTURE PAYMENTS. BECAUSE MONEY +1010 PRINT"HAS TIME VALUE (INTEREST IS CHARGED) THE PRESENT +1011 PRINT"VALUE DOES NOT EQUAL THE SUM OF THE PAYMENTS. tHE +1012 PRINT"FUTURE VALUE OF AN ANNUITY IS THE AMOUNT OF CASH +1013 PRINT"WHICH WOULD ACCUMULATE BY THE END OF THE ANNUITY +1014 PRINT"IF THE INDIVIDUAL PAYMENTS ARE INVESTED AT THE +1015 PRINT"PREVAILING INTEREST RATE. +1016 INPUT"PRESS ENTER TO CONTINUE";Z9$ +1017 CLS:PRINT"MANY ANNUITIES ALSO INVOLVE A LAST BALLOON PAY- +1018 PRINT"MENT.IN THE ANNUITY PROBLEMS WE EXAMINE,THE VARIABLES +1020 PRINT"OF INTEREST ARE NUMBER OF PAYMENTS,INTEREST RATE PER +1030 PRINT"PERIOD,PAYMENT PER PERIOD,PRESENT OR FUTURE VALUE,AND +1040 PRINT"BALLOON PAYMENT (AT END OF TERM) IF DESIRED.GIVEN ANY +1045 PRINT"FOUR VALUES OF THE ABOVE VARIABLES THIS PROGRAM WILL +1050 PRINT"FIND THE FIFTH VARIABLE WHEN CONSIDERING THE PRESENT +1060 PRINT"VALUE SITUATION. IN THE FUTURE VALUE CASE NO BALLOON +1065 PRINT"PAYMENTS ARE CONSIDERED AS IN THIS CASE A BALLOON +1067 PRINT"PAYMENT OF A CERTAIN AMOUNT WOULD ADD THAT AMOUNT +1070 PRINT"TO FUTURE VALUE.NOTE THAT INTEREST RATES ARE WRITTEN +1075 PRINT"AS PER CENTS, NOT AS DECIMALS(E.G. 6%, NOT .06). IN +1080 PRINT"ADDITION NOTE THAT INTEREST RATE IS PER PERIOD,I.E. +1085 PRINT"PER MONTH,PER YEAR,ETC. +1090 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9:CLS +1095 CLS +1100 PRINT"SELECT TYPE OF PROBLEM DESIRED." +1105 PRINT" 0.QUIT" +1110 PRINT" 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) +1120 PRINT" 2.ANNUITY DUE-FUTURE VALUE +1130 PRINT" 3.ORDINARY ANNUITY-PRESENT VALUE +1140 PRINT" 4.ANNUITY DUE-PRESENT VALUE +1150 PRINT:INPUT"MAKE YOUR CHOICE";C +1153 IF C = 0 THEN END +1155 PRINT:INPUT"IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)";ZI$ +1157 IF ZI$<>"P" AND ZI$<>"A" THEN PRINT"INPUT ERROR":GOTO 1155 +1158 IF ZI$="A" THEN PRINT:INPUT"NUMBER OF PAYMENTS PER YEAR";ZN +1160 ON C GOTO 1200,1300,1400,1500 +1200 REM"ORDINARY ANNUITY-FUTURE VALUE TYPE PROBLEM +1210 CLS +1220 GOSUB 3000 +1223 I=I/100 +1225 IF FV=9999 THEN FV=PMT*((1+I)[N-1)/I +1230 IF PMT=9999 THEN PMT=FV*I/((1+I)[N-1) +1240 IF N=9999 THEN N=LOG((FV*I/PMT+1))/LOG(1+I) +1250 IF ABS(I-99.99)<.01 THEN GOSUB 4000 +1260 GOTO 5000:REM PRINTOUT +1300 GOSUB 3000 +1310 I=I/100 +1325 IF FV=9999 THEN FV=PMT*(1+I)*((1+I)[N-1)/I +1330 IF PMT=9999 THEN PMT=FV*I*(1/(1+I))/((1+I)[N-1) +1340 IF N=9999 THEN N=LOG((FV*I/(PMT*(1+I))+1))/LOG(1+I) +1350 IF ABS(I-99.99)<.01 THEN GOSUB 4100 +1360 GOTO 5000:REM PRINTOUT +1400 GOSUB 3000:GOSUB 3080 +1405 I=I/100 +1410 IF PV=9999 THEN PV=PMT*(1/I)*(1-(1+I)[(-N))+BAL*(1+I)[(-N) +1420 IF PMT=9999 THEN PMT=(PV-BAL*(1+I)[(-N))*I/(1-(1+I)[(-N)) +1430 IF N=9999 THEN T=(BAL*I-PMT)/(PV*I-PMT):N=LOG(T)/LOG(1+I) +1440 IF BAL=9999 THEN BAL=PV-PMT*(1/I)*(1-(1+I)[(-N)):BAL=BAL*(1+I)[N +1450 IF ABS(I-99.99)<.01 THEN GOSUB 4200 +1460 GOTO 5000 +1500 GOSUB 3000:GOSUB 3080 +1510 I=I/100 +1520 IF PV=9999 THEN PV=PMT*(1+I)*(1/I)*(1-(1+I)[(-N))+BAL*(1+I)[(-N) +1525 IF PMT=9999 THEN PMT=(PV-BAL*(1+I)[(-N))*I/(1+I)/(1-(1+I)[(-N)) +1530 IF N=9999 THEN T=(BAL*I-PMT*(1+I))/(PV*I-PMT*(1+I)):N=LOG(T)/LOG(1+I) +1540 IF BAL=9999 THEN BAL=PV-PMT*(1+I)*(1/I)*(1-(1+I)[(-N)):BAL=BAL*(1+I)[N +1550 IF ABS(I-99.99)<.01 THEN GOSUB 4300 +1560 GOTO 5000 +3000 REM INPUT SBR +3010 CLS:PRINT"ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +3020 PRINT"ENTER 9999.":PRINT +3030 IF C<3 THEN INPUT"FUTURE VALUE ";FV +3035 IF C>=3 THEN INPUT"PRESENT VALUE ";PV +3040 INPUT"PAYMENT ";PMT +3050 INPUT"NUMBER OF PAYMENTS ";N +3055 IF ZI$="A" THEN INPUT"ANNUAL INTEREST RATE ";I +3056 IF ZI$="A" AND I<>9999 THEN I=I/ZN +3057 IF ZI$="A" THEN GOTO 3070 +3060 INPUT"INTEREST RATE PER PERIOD(%)";I +3070 RETURN +3080 INPUT"BALLOON PAYMENT ";BAL +3090 RETURN +4000 REM I FOR FV REG. ANNU.-SINKING FUND +4010 I=.01 +4020 P=FV-PMT/I*((1+I)[N-1) +4025 D=PMT*(N*(1+I)[(N-1)/I- ((1+I)[N-1)/I[2) +4027 D=-D +4030 GOSUB 4600 +4040 IF ABS(P)<=.1 THEN RETURN +4050 GOTO 4020 +4100 REM I FOR FV ANNUITY DUE +4110 I=.01 +4120 P=FV-PMT*(1+I)/I*((1+I)[N-1) +4125 D=PMT*((N+1)*(1+I)[N-1)/I-PMT*((1+I)[(N+1)-1-I)/I[2 +4127 D=-D +4130 GOSUB 4600 +4140 IF ABS(P)<=.1 THEN RETURN +4150 GOTO 4120 +4200 REM I FOR PV/ORDINARY ANNUITY +4210 I=.01 +4220 P=PMT/I*(1-(1+I)[(-N))+BAL*(1+I)[(-N)-PV +4225 D=N*PMT/(I*(1+I)[(N+1))-PMT/(I[2)*(1-(1+I)[(-N))-N*BAL/(1+I)[(N+1) +4230 GOSUB 4600 +4240 IF ABS(P)<=.1 THEN RETURN +4250 GOTO 4220 +4300 REM I FOR PV/ANNUITY DUE +4305 I=.01 +4310 P=PMT*(1+I)/I*(1-(1+I)[(-N))+BAL*(1+I)[(-N)-PV +4320 D=(1+I)*(N*PMT/(I*(1+I)[(N+1))-PMT/(I[2)*(1-(1+I)[(-N)))+PMT/I*(1-(1+I)[(-N))-N*BAL/(1+I)[(N+1) +4330 GOSUB 4600 +4335 IF ABS(P)<.1 THEN RETURN +4340 GOTO 4310 +4600 REM COMPUTATION +4610 I=I-P/D +4620 RETURN +5000 REM PRINT OUT +5010 CLS +5020 IF C=1 OR C=2 THEN PRINT"FUTURE VALUE =";FV +5025 IF C=3 OR C=4 THEN PRINT"PRESENT VALUE =";PV +5030 PRINT"NUMBER OF PAYMENTS =";N +5033 IF ZI$="A" THEN PRINT " CONSISTING OF ";ZN;" PAYMENTS ANNUALLY." +5035 IF ZI$="A" THEN PRINT"ANNUAL INTEREST RATE =";100*I*ZN:GOTO 5050 +5040 PRINT"INT. RATE PER PERIOD=";100*I +5050 PRINT"PAYMENT =";PMT +5060 IF C=3 OR C=4 THEN PRINT"BALLOON PAYMENT =";BAL +5090 PRINT:INPUT"PRESS ENTER FOR MORE";Z9 +5100 GOTO 1095 diff --git a/BP100/ANNU1.INP b/BP100/ANNU1.INP new file mode 100644 index 0000000..407751e --- /dev/null +++ b/BP100/ANNU1.INP @@ -0,0 +1,35 @@ + + +1 +A +12 +2345.67 +89.01 +12 +3.75 + +2 +P +1234.56 +89.01 +36 +0.175 + +3 +A +24 +1234.56 +89.01 +52 +3.25 +9999 + +4 +P +1234.56 +9999 +36 +5 +55.55 + +0 diff --git a/BP100/ANNU1.OUT b/BP100/ANNU1.OUT new file mode 100644 index 0000000..61c1cd5 --- /dev/null +++ b/BP100/ANNU1.OUT @@ -0,0 +1,142 @@ + ANNUITY COMPUTATION BY DR. PETER SHENKIN + AN ANNUITY IS ANY SET OF EQUAL PAYMENTS MADE AT +EQUAL INTERVALS OF TIME. WITH AN ORDINARY ANNUITY +PAYMENTS ARE MADE AT THE ENDS OF THE PERIODS DE- +FINED BY THESE TIME INTERVALS. FOR AN ANNUITY DUE +THE PAYMENTS ARE MADE AT THE BEGINNING OF THE PER- +IODS IN QUESTION. THE PRESENT VALUE OF AN ANNUITY +IS THE AMOUNT OF CASH ONE WOULD ACCEPT NOW INSTEAD +OF THE SEQUENCE OF FUTURE PAYMENTS. BECAUSE MONEY +HAS TIME VALUE (INTEREST IS CHARGED) THE PRESENT +VALUE DOES NOT EQUAL THE SUM OF THE PAYMENTS. tHE +FUTURE VALUE OF AN ANNUITY IS THE AMOUNT OF CASH +WHICH WOULD ACCUMULATE BY THE END OF THE ANNUITY +IF THE INDIVIDUAL PAYMENTS ARE INVESTED AT THE +PREVAILING INTEREST RATE. +PRESS ENTER TO CONTINUE? +MANY ANNUITIES ALSO INVOLVE A LAST BALLOON PAY- +MENT.IN THE ANNUITY PROBLEMS WE EXAMINE,THE VARIABLES +OF INTEREST ARE NUMBER OF PAYMENTS,INTEREST RATE PER +PERIOD,PAYMENT PER PERIOD,PRESENT OR FUTURE VALUE,AND +BALLOON PAYMENT (AT END OF TERM) IF DESIRED.GIVEN ANY +FOUR VALUES OF THE ABOVE VARIABLES THIS PROGRAM WILL +FIND THE FIFTH VARIABLE WHEN CONSIDERING THE PRESENT +VALUE SITUATION. IN THE FUTURE VALUE CASE NO BALLOON +PAYMENTS ARE CONSIDERED AS IN THIS CASE A BALLOON +PAYMENT OF A CERTAIN AMOUNT WOULD ADD THAT AMOUNT +TO FUTURE VALUE.NOTE THAT INTEREST RATES ARE WRITTEN +AS PER CENTS, NOT AS DECIMALS(E.G. 6%, NOT .06). IN +ADDITION NOTE THAT INTEREST RATE IS PER PERIOD,I.E. +PER MONTH,PER YEAR,ETC. + +PRESS ENTER TO BEGIN? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 1 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +FUTURE VALUE ? 2345.67 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 12 +ANNUAL INTEREST RATE ? 3.75 +FUTURE VALUE = 2345.67 +NUMBER OF PAYMENTS = 12 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.75 +PAYMENT = 89.01 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 2 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? P +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +FUTURE VALUE ? 1234.56 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 36 +INTEREST RATE PER PERIOD(%)? 0.175 +FUTURE VALUE = 1234.56 +NUMBER OF PAYMENTS = 36 +INT. RATE PER PERIOD= .175 +PAYMENT = 89.01 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 3 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 24 +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +PRESENT VALUE ? 1234.56 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 52 +ANNUAL INTEREST RATE ? 3.25 +BALLOON PAYMENT ? 9999 +PRESENT VALUE = 1234.56 +NUMBER OF PAYMENTS = 52 + CONSISTING OF 24 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.25 +PAYMENT = 89.01 +BALLOON PAYMENT =-3467.45 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 4 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? P +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +PRESENT VALUE ? 1234.56 +PAYMENT ? 9999 +NUMBER OF PAYMENTS ? 36 +INTEREST RATE PER PERIOD(%)? 5 +BALLOON PAYMENT ? 55.55 +PRESENT VALUE = 1234.56 +NUMBER OF PAYMENTS = 36 +INT. RATE PER PERIOD= 5 +PAYMENT = 70.5051 +BALLOON PAYMENT = 55.55 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/ANNU1.dif b/BP100/ANNU1.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/ANNU1.run b/BP100/ANNU1.run new file mode 100644 index 0000000..13bbdc5 --- /dev/null +++ b/BP100/ANNU1.run @@ -0,0 +1,142 @@ + ANNUITY COMPUTATION BY DR. PETER SHENKIN + AN ANNUITY IS ANY SET OF EQUAL PAYMENTS MADE AT +EQUAL INTERVALS OF TIME. WITH AN ORDINARY ANNUITY +PAYMENTS ARE MADE AT THE ENDS OF THE PERIODS DE- +FINED BY THESE TIME INTERVALS. FOR AN ANNUITY DUE +THE PAYMENTS ARE MADE AT THE BEGINNING OF THE PER- +IODS IN QUESTION. THE PRESENT VALUE OF AN ANNUITY +IS THE AMOUNT OF CASH ONE WOULD ACCEPT NOW INSTEAD +OF THE SEQUENCE OF FUTURE PAYMENTS. BECAUSE MONEY +HAS TIME VALUE (INTEREST IS CHARGED) THE PRESENT +VALUE DOES NOT EQUAL THE SUM OF THE PAYMENTS. tHE +FUTURE VALUE OF AN ANNUITY IS THE AMOUNT OF CASH +WHICH WOULD ACCUMULATE BY THE END OF THE ANNUITY +IF THE INDIVIDUAL PAYMENTS ARE INVESTED AT THE +PREVAILING INTEREST RATE. +PRESS ENTER TO CONTINUE? +MANY ANNUITIES ALSO INVOLVE A LAST BALLOON PAY- +MENT.IN THE ANNUITY PROBLEMS WE EXAMINE,THE VARIABLES +OF INTEREST ARE NUMBER OF PAYMENTS,INTEREST RATE PER +PERIOD,PAYMENT PER PERIOD,PRESENT OR FUTURE VALUE,AND +BALLOON PAYMENT (AT END OF TERM) IF DESIRED.GIVEN ANY +FOUR VALUES OF THE ABOVE VARIABLES THIS PROGRAM WILL +FIND THE FIFTH VARIABLE WHEN CONSIDERING THE PRESENT +VALUE SITUATION. IN THE FUTURE VALUE CASE NO BALLOON +PAYMENTS ARE CONSIDERED AS IN THIS CASE A BALLOON +PAYMENT OF A CERTAIN AMOUNT WOULD ADD THAT AMOUNT +TO FUTURE VALUE.NOTE THAT INTEREST RATES ARE WRITTEN +AS PER CENTS, NOT AS DECIMALS(E.G. 6%, NOT .06). IN +ADDITION NOTE THAT INTEREST RATE IS PER PERIOD,I.E. +PER MONTH,PER YEAR,ETC. + +PRESS ENTER TO BEGIN? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 1 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +FUTURE VALUE ? 2345.67 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 12 +ANNUAL INTEREST RATE ? 3.75 +FUTURE VALUE = 2345.67 +NUMBER OF PAYMENTS = 12 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.75 +PAYMENT = 89.01 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 2 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? P +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +FUTURE VALUE ? 1234.56 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 36 +INTEREST RATE PER PERIOD(%)? 0.175 +FUTURE VALUE = 1234.56 +NUMBER OF PAYMENTS = 36 +INT. RATE PER PERIOD= .175 +PAYMENT = 89.01 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 3 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 24 +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +PRESENT VALUE ? 1234.56 +PAYMENT ? 89.01 +NUMBER OF PAYMENTS ? 52 +ANNUAL INTEREST RATE ? 3.25 +BALLOON PAYMENT ? 9999 +PRESENT VALUE = 1234.56 +NUMBER OF PAYMENTS = 52 + CONSISTING OF 24 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.25 +PAYMENT = 89.01 +BALLOON PAYMENT =-3467.45 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 4 + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? P +ENTER EACH OF THE FOLLOWING.FOR THE UNKNOWN VALUE +ENTER 9999. + +PRESENT VALUE ? 1234.56 +PAYMENT ? 9999 +NUMBER OF PAYMENTS ? 36 +INTEREST RATE PER PERIOD(%)? 5 +BALLOON PAYMENT ? 55.55 +PRESENT VALUE = 1234.56 +NUMBER OF PAYMENTS = 36 +INT. RATE PER PERIOD= 5 +PAYMENT = 70.5051 +BALLOON PAYMENT = 55.55 + +PRESS ENTER FOR MORE? +SELECT TYPE OF PROBLEM DESIRED. + 0.QUIT + 1.ORDINARY ANNUITY-FUTURE VALUE(SINKING FUND) + 2.ANNUITY DUE-FUTURE VALUE + 3.ORDINARY ANNUITY-PRESENT VALUE + 4.ANNUITY DUE-PRESENT VALUE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/ANNUDEF.80 b/BP100/ANNUDEF.80 new file mode 100644 index 0000000..e7361ec --- /dev/null +++ b/BP100/ANNUDEF.80 @@ -0,0 +1,31 @@ + PRESENT VALUE OF A DEFERRED ANNUITY + +AN ANNUITY IS A SEQUENCE OF EQUAL PAYMENTS MADE AT EQUAL +INTERVALS OF TIME. A DEFERRED ANNUITY IS AN ANNUITY FOR +WHICH THE FIRST PAYMENT IS NOT MADE UNTIL SOME FIXED TIME +IN THE FUTURE. THIS PROGRAM WILL COMPUTE THE PRESENT VALUE +OF A DEFERRED ANNUITY GIVEN THE AMOUNT OF THE INDIVIDUAL +PAYMENTS, THE NUMBER OF PAYMENTS, THE INTEREST RATE, AND +THE TIME THE ANNUITY BEGINS. IF DESIRED, A LAST EXTRA +BALLOON PAYMENT COINCIDING WITH BUT IN ADDITION TO THE +LAST PAYMENT MAY BE CONSIDERED. + +PRESS ENTER TO BEGIN? + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +NUMBER OF YEARS INTO FUTURE UNTIL 1ST PAYMENT? 5 +ENTER EACH OF THE FOLLOWING. +ANNUAL INTEREST RATE(%) ? 3.25 +TOTAL NUMBER OF PAYMENTS? 360 +ENTER REGULAR PAYMENT? 1234.56 +BALLOON PAYMENT ? 56789.01 +PRESENT VALUE = 260117. +NUMBER OF PAYMENTS = 360 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.25 +PAYMENT = 1234.56 +BALLOON PAYMENT = 56789. + +PRESS ENTER FOR MORE? 0 diff --git a/BP100/ANNUDEF.BAS b/BP100/ANNUDEF.BAS new file mode 100644 index 0000000..eaa6f5e --- /dev/null +++ b/BP100/ANNUDEF.BAS @@ -0,0 +1,49 @@ +1 REM ANNUDEF +5 CLEAR 1000 +10 CLS:PRINT TAB(10); "PRESENT VALUE OF A DEFERRED ANNUITY":PRINT +20 PRINT"AN ANNUITY IS A SEQUENCE OF EQUAL PAYMENTS MADE AT EQUAL +25 PRINT"INTERVALS OF TIME. A DEFERRED ANNUITY IS AN ANNUITY FOR +30 PRINT"WHICH THE FIRST PAYMENT IS NOT MADE UNTIL SOME FIXED TIME +35 PRINT"IN THE FUTURE. THIS PROGRAM WILL COMPUTE THE PRESENT VALUE +40 PRINT"OF A DEFERRED ANNUITY GIVEN THE AMOUNT OF THE INDIVIDUAL +45 PRINT"PAYMENTS, THE NUMBER OF PAYMENTS, THE INTEREST RATE, AND +50 PRINT"THE TIME THE ANNUITY BEGINS. IF DESIRED, A LAST EXTRA +55 PRINT"BALLOON PAYMENT COINCIDING WITH BUT IN ADDITION TO THE +60 PRINT"LAST PAYMENT MAY BE CONSIDERED. +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +1155 PRINT:INPUT"IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)";ZI$ +1157 IF ZI$<>"P" AND ZI$<>"A" THEN PRINT"INPUT ERROR":GOTO 1155 +1158 IF ZI$="A" THEN PRINT:INPUT"NUMBER OF PAYMENTS PER YEAR";ZN +1160 IF ZI$="A" THEN INPUT"NUMBER OF YEARS INTO FUTURE UNTIL 1ST PAYMENT";NF +1400 GOSUB 3000:GOSUB 3080 +1405 I=I/100 +1410 PV=PMT*(1/I)*(1-(1+I)[(-N))+BAL*(1+I)[(-N) +1420 PV=PV*(1+I)[(-NF) +1460 GOTO 5000 +3000 REM INPUT SBR +3010 CLS:PRINT"ENTER EACH OF THE FOLLOWING. +3050 IF ZI$="A" THEN INPUT"ANNUAL INTEREST RATE(%) ";I +3056 IF ZI$="A" THEN I=I/ZN:NF=NF*ZN-1: GOTO 3070 +3060 INPUT"INTEREST RATE PER PERIOD(%)";I +3065 INPUT"# OF PERIODS INTO FUTURE UNTIL FIRST PAYMENT";NF +3067 NF=NF-1 +3070 INPUT"TOTAL NUMBER OF PAYMENTS";N +3075 RETURN +3080 INPUT"ENTER REGULAR PAYMENT";PMT +3085 INPUT"BALLOON PAYMENT ";BAL +3090 RETURN +5000 REM PRINT OUT +5010 CLS +5025 PRINT"PRESENT VALUE =";PV +5030 PRINT"NUMBER OF PAYMENTS =";N +5033 IF ZI$="A" THEN PRINT " CONSISTING OF ";ZN;" PAYMENTS ANNUALLY." +5035 IF ZI$="A" THEN PRINT"ANNUAL INTEREST RATE =";100*I*ZN:GOTO 5050 +5040 PRINT"INT. RATE PER PERIOD=";100*I +5045 PRINT"PAYMENTS BEGIN";NF+1;"PERIODS INTO THE FUTURE." +5047 IF NI$="A" THEN PRINT"THIS IS";(NF+1)/NV;"YEARS IN THE FUTURE." +5050 PRINT"PAYMENT =";PMT +5060 IF BAL<>0 THEN PRINT"BALLOON PAYMENT =";BAL +5090 PRINT:INPUT"PRESS ENTER FOR MORE";Z9 +5095 IF Z9 = 0 THEN END +5100 GOTO 100 diff --git a/BP100/ANNUDEF.INP b/BP100/ANNUDEF.INP new file mode 100644 index 0000000..516423f --- /dev/null +++ b/BP100/ANNUDEF.INP @@ -0,0 +1,9 @@ + +A +12 +5 +3.25 +360 +1234.56 +56789.01 +0 diff --git a/BP100/ANNUDEF.OUT b/BP100/ANNUDEF.OUT new file mode 100644 index 0000000..3fc8114 --- /dev/null +++ b/BP100/ANNUDEF.OUT @@ -0,0 +1,31 @@ + PRESENT VALUE OF A DEFERRED ANNUITY + +AN ANNUITY IS A SEQUENCE OF EQUAL PAYMENTS MADE AT EQUAL +INTERVALS OF TIME. A DEFERRED ANNUITY IS AN ANNUITY FOR +WHICH THE FIRST PAYMENT IS NOT MADE UNTIL SOME FIXED TIME +IN THE FUTURE. THIS PROGRAM WILL COMPUTE THE PRESENT VALUE +OF A DEFERRED ANNUITY GIVEN THE AMOUNT OF THE INDIVIDUAL +PAYMENTS, THE NUMBER OF PAYMENTS, THE INTEREST RATE, AND +THE TIME THE ANNUITY BEGINS. IF DESIRED, A LAST EXTRA +BALLOON PAYMENT COINCIDING WITH BUT IN ADDITION TO THE +LAST PAYMENT MAY BE CONSIDERED. + +PRESS ENTER TO BEGIN? + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +NUMBER OF YEARS INTO FUTURE UNTIL 1ST PAYMENT? 5 +ENTER EACH OF THE FOLLOWING. +ANNUAL INTEREST RATE(%) ? 3.25 +TOTAL NUMBER OF PAYMENTS? 360 +ENTER REGULAR PAYMENT? 1234.56 +BALLOON PAYMENT ? 56789.01 +PRESENT VALUE = 260117. +NUMBER OF PAYMENTS = 360 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.25 +PAYMENT = 1234.56 +BALLOON PAYMENT = 56789. + +PRESS ENTER FOR MORE? 0 diff --git a/BP100/ANNUDEF.dif b/BP100/ANNUDEF.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/ANNUDEF.run b/BP100/ANNUDEF.run new file mode 100644 index 0000000..e7361ec --- /dev/null +++ b/BP100/ANNUDEF.run @@ -0,0 +1,31 @@ + PRESENT VALUE OF A DEFERRED ANNUITY + +AN ANNUITY IS A SEQUENCE OF EQUAL PAYMENTS MADE AT EQUAL +INTERVALS OF TIME. A DEFERRED ANNUITY IS AN ANNUITY FOR +WHICH THE FIRST PAYMENT IS NOT MADE UNTIL SOME FIXED TIME +IN THE FUTURE. THIS PROGRAM WILL COMPUTE THE PRESENT VALUE +OF A DEFERRED ANNUITY GIVEN THE AMOUNT OF THE INDIVIDUAL +PAYMENTS, THE NUMBER OF PAYMENTS, THE INTEREST RATE, AND +THE TIME THE ANNUITY BEGINS. IF DESIRED, A LAST EXTRA +BALLOON PAYMENT COINCIDING WITH BUT IN ADDITION TO THE +LAST PAYMENT MAY BE CONSIDERED. + +PRESS ENTER TO BEGIN? + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +NUMBER OF YEARS INTO FUTURE UNTIL 1ST PAYMENT? 5 +ENTER EACH OF THE FOLLOWING. +ANNUAL INTEREST RATE(%) ? 3.25 +TOTAL NUMBER OF PAYMENTS? 360 +ENTER REGULAR PAYMENT? 1234.56 +BALLOON PAYMENT ? 56789.01 +PRESENT VALUE = 260117. +NUMBER OF PAYMENTS = 360 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 3.25 +PAYMENT = 1234.56 +BALLOON PAYMENT = 56789. + +PRESS ENTER FOR MORE? 0 diff --git a/BP100/ARBCOMP.80 b/BP100/ARBCOMP.80 new file mode 100644 index 0000000..c0185e0 --- /dev/null +++ b/BP100/ARBCOMP.80 @@ -0,0 +1,36 @@ + ARBITRAGE COMPUTATIONS + +ARBITRAGE IS SIMPLY BUYING AN ARTICLE IN ONE MARKET AND +SELLING IT IN ANOTHER MARKET, HOPEFULLY AT A HIGHER PRICE. +IN THE STOCK MARKET THIS MAY INVOLVE BUYING ONE SECURITY +AND SELLING ANOTHER EQUIVALENT SECURITY IN THE SAME MARKET. +THIS TYPE OF ARBITRAGE OCCURS WHEN MERGERS ARE BEING CONSID- +ERED. OWNERS OF ONE SECURITY MAY TRADE THEM IN FOR ANOTHER +PACKAGE OF SECURITIES. IN THIS CASE THE OWNERS OF THE FIRST +SECURITY MAY WONDER WHAT THE VALUE OF THE SECOND PACKAGE IS. +THIS PROGRAM EVALUATES THE VALUE OF A PACKAGE OF DIFFERENT +SECURITIES. IN A MERGER A PACKAGE OF COMPANY A SECURITIES AND +CASH ARE GENERALLY TRADED FOR A PACKAGE OF COMPANY B SECURITIES +USUALLY SOME SHARES OF COMMON STOCK. + +PRESS ENTER TO BEGIN? +FOR EACH SECURITY IN PACKAGE ENTER PRICE/UNIT AND NO. UNITS +IN PACKAGE. +ENTER VALUE OF 1 UNIT OF SECURITY 1 (-1 TO END)? 123.45 +ENTER # OF UNITS OF SECURITY 1 IN PACKAGE? 67 + +ENTER VALUE OF 1 UNIT OF SECURITY 2 (-1 TO END)? 89.01 +ENTER # OF UNITS OF SECURITY 2 IN PACKAGE? 234 + +ENTER VALUE OF 1 UNIT OF SECURITY 3 (-1 TO END)? -1 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + +PRESS ENTER WHEN PRINTER READY? +VALUE OF UNIT # OF UNITS TOTAL VALUE + + $123.45 67.0000 $8271.150 + $89.01 234.0000 $20828.340 +================================================================ + GRAND TOTAL VALUE $29099.490 + +PRESS ENTER FOR MORE COMPUTATION? 0 diff --git a/BP100/ARBCOMP.BAS b/BP100/ARBCOMP.BAS new file mode 100644 index 0000000..67a9d08 --- /dev/null +++ b/BP100/ARBCOMP.BAS @@ -0,0 +1,51 @@ +1 REM ARBCOMP +5 CLEAR 1000 +10 CLS +20 PRINT TAB(10); "ARBITRAGE COMPUTATIONS":PRINT +25 S=0:REM TOTAL VALUE OF PACKAGE +30 PRINT "ARBITRAGE IS SIMPLY BUYING AN ARTICLE IN ONE MARKET AND +35 PRINT "SELLING IT IN ANOTHER MARKET, HOPEFULLY AT A HIGHER PRICE. +40 PRINT "IN THE STOCK MARKET THIS MAY INVOLVE BUYING ONE SECURITY +45 PRINT "AND SELLING ANOTHER EQUIVALENT SECURITY IN THE SAME MARKET. +50 PRINT "THIS TYPE OF ARBITRAGE OCCURS WHEN MERGERS ARE BEING CONSID- +55 PRINT "ERED. OWNERS OF ONE SECURITY MAY TRADE THEM IN FOR ANOTHER +60 PRINT "PACKAGE OF SECURITIES. IN THIS CASE THE OWNERS OF THE FIRST +65 PRINT "SECURITY MAY WONDER WHAT THE VALUE OF THE SECOND PACKAGE IS. +70 PRINT "THIS PROGRAM EVALUATES THE VALUE OF A PACKAGE OF DIFFERENT +75 PRINT "SECURITIES. IN A MERGER A PACKAGE OF COMPANY A SECURITIES AND +80 PRINT "CASH ARE GENERALLY TRADED FOR A PACKAGE OF COMPANY B SECURITIES +85 PRINT "USUALLY SOME SHARES OF COMMON STOCK. +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 DIM A(100),B(100),C(100) +110 REM A( )=VALUE OF 1 UNIT:B( )=# UNITS:C( )=EXTENDED VALUE +200 CLS +210 PRINT "FOR EACH SECURITY IN PACKAGE ENTER PRICE/UNIT AND NO. UNITS +220 PRINT "IN PACKAGE. +230 I=1 +240 PRINT "ENTER VALUE OF 1 UNIT OF SECURITY";I;"(-1 TO END)";:INPUT A(I) +250 IF A(I)=-1 THEN GOTO 300 +260 PRINT "ENTER # OF UNITS OF SECURITY";I;"IN PACKAGE";:INPUT B(I) +270 C(I)=A(I)*B(I):S=S+C(I) +280 I=I+1:PRINT :GOTO 240 +300 REM FINISH UP & PRINT +310 I=I-1 +320 F$(1)="VALUE OF UNIT # OF UNITS TOTAL VALUE" +330 F$(2)=" $$#####.## #####.#### $$######.###" +340 F$(3)=" GRAND TOTAL VALUE $$#######.###" +350 CLS +360 INPUT "IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +370 IF Z2$<>"Y" AND Z2$<>"N" THEN GOTO 360 +375 PRINT :IF Z2$="Y" THEN INPUT "PRESS ENTER WHEN PRINTER READY";Z9$ +380 CLS +400 PRINT F$(1):PRINT :IF Z2$="Y" THEN LPRINT F$(1):LPRINT " " +410 FOR J=1 TO I +420 PRINT USING F$(2);A(J),B(J),C(J) +430 IF Z2$="Y" THEN LPRINT USING F$(2);A(J),B(J),C(J) +440 NEXT J +450 PRINT STRING$(64,"="):IF Z2$="Y" THEN LPRINT STRING$(64,"=") +460 PRINT USING F$(3);S:IF Z2$="Y" THEN LPRINT USING F$(3);S +470 PRINT +480 INPUT "PRESS ENTER FOR MORE COMPUTATION";Z9$ +485 IF Z9$ = "0" THEN END +490 GOTO 200 + diff --git a/BP100/ARBCOMP.INP b/BP100/ARBCOMP.INP new file mode 100644 index 0000000..09c8cfd --- /dev/null +++ b/BP100/ARBCOMP.INP @@ -0,0 +1,9 @@ + +123.45 +67 +89.01 +234 +-1 +Y + +0 diff --git a/BP100/ARBCOMP.OUT b/BP100/ARBCOMP.OUT new file mode 100644 index 0000000..6772d3d --- /dev/null +++ b/BP100/ARBCOMP.OUT @@ -0,0 +1,36 @@ + ARBITRAGE COMPUTATIONS + +ARBITRAGE IS SIMPLY BUYING AN ARTICLE IN ONE MARKET AND +SELLING IT IN ANOTHER MARKET, HOPEFULLY AT A HIGHER PRICE. +IN THE STOCK MARKET THIS MAY INVOLVE BUYING ONE SECURITY +AND SELLING ANOTHER EQUIVALENT SECURITY IN THE SAME MARKET. +THIS TYPE OF ARBITRAGE OCCURS WHEN MERGERS ARE BEING CONSID- +ERED. OWNERS OF ONE SECURITY MAY TRADE THEM IN FOR ANOTHER +PACKAGE OF SECURITIES. IN THIS CASE THE OWNERS OF THE FIRST +SECURITY MAY WONDER WHAT THE VALUE OF THE SECOND PACKAGE IS. +THIS PROGRAM EVALUATES THE VALUE OF A PACKAGE OF DIFFERENT +SECURITIES. IN A MERGER A PACKAGE OF COMPANY A SECURITIES AND +CASH ARE GENERALLY TRADED FOR A PACKAGE OF COMPANY B SECURITIES +USUALLY SOME SHARES OF COMMON STOCK. + +PRESS ENTER TO BEGIN? +FOR EACH SECURITY IN PACKAGE ENTER PRICE/UNIT AND NO. UNITS +IN PACKAGE. +ENTER VALUE OF 1 UNIT OF SECURITY 1 (-1 TO END)? 123.45 +ENTER # OF UNITS OF SECURITY 1 IN PACKAGE? 67 + +ENTER VALUE OF 1 UNIT OF SECURITY 2 (-1 TO END)? 89.01 +ENTER # OF UNITS OF SECURITY 2 IN PACKAGE? 234 + +ENTER VALUE OF 1 UNIT OF SECURITY 3 (-1 TO END)? -1 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + +PRESS ENTER WHEN PRINTER READY? +VALUE OF UNIT # OF UNITS TOTAL VALUE + + $123.45 67.0000 $8271.150 + $89.01 234.0000 $20828.340 +================================================================ + GRAND TOTAL VALUE $29099.490 + +PRESS ENTER FOR MORE COMPUTATION? 0 diff --git a/BP100/ARBCOMP.dif b/BP100/ARBCOMP.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/ARBCOMP.run b/BP100/ARBCOMP.run new file mode 100644 index 0000000..c0185e0 --- /dev/null +++ b/BP100/ARBCOMP.run @@ -0,0 +1,36 @@ + ARBITRAGE COMPUTATIONS + +ARBITRAGE IS SIMPLY BUYING AN ARTICLE IN ONE MARKET AND +SELLING IT IN ANOTHER MARKET, HOPEFULLY AT A HIGHER PRICE. +IN THE STOCK MARKET THIS MAY INVOLVE BUYING ONE SECURITY +AND SELLING ANOTHER EQUIVALENT SECURITY IN THE SAME MARKET. +THIS TYPE OF ARBITRAGE OCCURS WHEN MERGERS ARE BEING CONSID- +ERED. OWNERS OF ONE SECURITY MAY TRADE THEM IN FOR ANOTHER +PACKAGE OF SECURITIES. IN THIS CASE THE OWNERS OF THE FIRST +SECURITY MAY WONDER WHAT THE VALUE OF THE SECOND PACKAGE IS. +THIS PROGRAM EVALUATES THE VALUE OF A PACKAGE OF DIFFERENT +SECURITIES. IN A MERGER A PACKAGE OF COMPANY A SECURITIES AND +CASH ARE GENERALLY TRADED FOR A PACKAGE OF COMPANY B SECURITIES +USUALLY SOME SHARES OF COMMON STOCK. + +PRESS ENTER TO BEGIN? +FOR EACH SECURITY IN PACKAGE ENTER PRICE/UNIT AND NO. UNITS +IN PACKAGE. +ENTER VALUE OF 1 UNIT OF SECURITY 1 (-1 TO END)? 123.45 +ENTER # OF UNITS OF SECURITY 1 IN PACKAGE? 67 + +ENTER VALUE OF 1 UNIT OF SECURITY 2 (-1 TO END)? 89.01 +ENTER # OF UNITS OF SECURITY 2 IN PACKAGE? 234 + +ENTER VALUE OF 1 UNIT OF SECURITY 3 (-1 TO END)? -1 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + +PRESS ENTER WHEN PRINTER READY? +VALUE OF UNIT # OF UNITS TOTAL VALUE + + $123.45 67.0000 $8271.150 + $89.01 234.0000 $20828.340 +================================================================ + GRAND TOTAL VALUE $29099.490 + +PRESS ENTER FOR MORE COMPUTATION? 0 diff --git a/BP100/ASSIGN.80 b/BP100/ASSIGN.80 new file mode 100644 index 0000000..80c97dd --- /dev/null +++ b/BP100/ASSIGN.80 @@ -0,0 +1,42 @@ + ASSIGNMENT COST + +THE ASSIGNMENT PROBLEM EXAMINED IN THIS PROGRAM IS OF THE +FOLLOWING TYPE: THERE ARE A FIXED NUMBER OF JOBS TO BE DONE +(SAY N JOBS), AND THE SAME NUMBER(N) OF POSSIBLE ASSIGNEES, +I.E. THOSE WHO CAN DO THE JOB. THE ASSIGNEES HAVE DIFFERENT +EFFICIENCIES FOR THE DIFFERENT JOBS. IN FACT FOR EACH +JOB-ASSIGNEE COMBINATION WE CAN ASSIGN SOME COST. EACH +ASSIGNEE IS ASSIGNED TO 1 AND ONLY 1 JOB. THE PROGRAM WILL +FIND THE ASSIGNMENT WHICH MINIMIZES TOTAL COST. + +THIS PROGRAM IS SET UP FOR A MAXIMUM OF 9 DIFFERENT JOBS +AND 9 DIFFERENT POSSIBLE ASSIGNMENTS. + +PRESS ENTER TO CONTINUE? +HOW MANY JOBS MUST BE ASSIGNED(<= 9 ? 2 + +FOR JOB 1 + COST FOR ASSIGNEE 1 ? 123.45 + COST FOR ASSIGNEE 2 ? 678.90 + +FOR JOB 2 + COST FOR ASSIGNEE 1 ? 987.65 + COST FOR ASSIGNEE 2 ? 432.10 + + +PRESS ENTER TO CONTINUE? +IS LINEPRINTER OUTPUT OF INITIAL COST ASSIGNMENT DESIRED(Y/N)? Y + +PRESS ENTER WHEN PRINTER READY? + + + +COMPUTING +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +OPTIMAL ASSIGNMENT + JOB 1 GETS ASSIGNEE 1 COST = 123.45 + JOB 2 GETS ASSIGNEE 2 COST = 432.1 + + TOTAL COST = 555.55 + +PRESS ENTER TO START AGAIN? 0 diff --git a/BP100/ASSIGN.BAS b/BP100/ASSIGN.BAS new file mode 100644 index 0000000..83c9a0e --- /dev/null +++ b/BP100/ASSIGN.BAS @@ -0,0 +1,119 @@ +1 REM ASSIGN +5 CLEAR 100 +10 CLS:PRINT TAB(20);"ASSIGNMENT COST":PRINT +20 PRINT"THE ASSIGNMENT PROBLEM EXAMINED IN THIS PROGRAM IS OF THE +25 PRINT"FOLLOWING TYPE: THERE ARE A FIXED NUMBER OF JOBS TO BE DONE +30 PRINT"(SAY N JOBS), AND THE SAME NUMBER(N) OF POSSIBLE ASSIGNEES, +35 PRINT"I.E. THOSE WHO CAN DO THE JOB. THE ASSIGNEES HAVE DIFFERENT +40 PRINT"EFFICIENCIES FOR THE DIFFERENT JOBS. IN FACT FOR EACH +45 PRINT"JOB-ASSIGNEE COMBINATION WE CAN ASSIGN SOME COST. EACH +50 PRINT"ASSIGNEE IS ASSIGNED TO 1 AND ONLY 1 JOB. THE PROGRAM WILL +55 PRINT"FIND THE ASSIGNMENT WHICH MINIMIZES TOTAL COST. +60 PRINT:PRINT"THIS PROGRAM IS SET UP FOR A MAXIMUM OF 9 DIFFERENT JOBS +65 PRINT"AND 9 DIFFERENT POSSIBLE ASSIGNMENTS. +90 PRINT:INPUT"PRESS ENTER TO CONTINUE";Z9$ +100 MAXX = 9 +110 DIM C(MAXX+1,MAXX+1),MA(MAXX+1),JO(MAXX+1),SZ(MAXX+1),AU(MAXX+1),SA(MAXX+1) +120 CLS +130 PRINT"HOW MANY JOBS MUST BE ASSIGNED(<=";MAXX;:INPUT N +140 IF N<1 OR N>MAXX OR N<>INT(N) THEN GOSUB 10000:PRINT:GOTO 130 +150 PRINT +160 FOR I=1 TO N +170 PRINT"FOR JOB";I +180 FOR J=1 TO N +190 PRINT" COST FOR ASSIGNEE";J;:INPUT C(I,J) +200 NEXT J +210 PRINT +220 NEXT I +230 PRINT:GOSUB 10100 +235 CLS +240 INPUT"IS LINEPRINTER OUTPUT OF INITIAL COST ASSIGNMENT DESIRED(Y/N)";Z2$ +250 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:PRINT:GOTO 240 +260 IF Z2$="N" THEN GOTO 300 +270 PRINT:INPUT"PRESS ENTER WHEN PRINTER READY";Z9$ +273 FOR I=1 TO N +275 LPRINT"FOR JOB";I +278 FOR J=1 TO N +280 LPRINT" COST FOR ASSIGNEE";J;"=";C(I,J) +285 NEXT J:NEXT I +300 CLS:PRINT:PRINT:PRINT:PRINT"COMPUTING" +305 FOR I=1 TO N:FOR J=1 TO N:C(I,J)=-C(I,J):NEXT:NEXT +320 ZL=0:FOR I=1 TO N:AU(I)=0:NEXT +326 FOR I=1 TO N:MA(I)=0:W=-1E9 +332 FOR J=1 TO N +334 IF AU(J)=1 THEN GOTO 342 +336 IF C(I,J)<=W THEN GOTO 342 +338 W=C(I,J):J1=J +342 NEXT J +344 AU(J1)=1 +346 ZL=ZL+W +348 SA(I)=J1 +350 NEXT I +370 REM START SEARCH +375 I=1 +380 J=1 +390 FOR M=1 TO I +400 IF J=MA(M) THEN J=J+1:GOTO 390 +410 NEXT M +420 MA(I)=J +430 GOSUB 1000 +440 SZ(I)=ZU:IF ZU<=ZL THEN GOTO 600 +460 I=I+1:IF I<=N THEN GOTO 380 +480 FOR I=1 TO N:SA(I)=MA(I):NEXT I +510 I=N:ZL=ZU:REM NEW BOUND +540 IF SZ(I-1)<>ZL THEN GOTO 660 +550 MA(I)=0:I=I-1:IF I=1 THEN GOTO 660 +580 GOTO 540 +600 J=MA(I) +610 J=J+1 +620 IF J<=N THEN GOTO 680 +630 MA(I)=0:I=I-1 +660 IF I=0 THEN GOTO 740 +670 GOTO 600 +680 IM=I-1 +690 IF IM=0 THEN IM=1 +700 FOR L=1 TO IM:IF J=MA(L) THEN GOTO 610 +720 NEXT L +730 GOTO 420 +740 CLS +750 INPUT"IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +760 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 750 +770 CLS:PRINT"OPTIMAL ASSIGNMENT" +780 FOR I=1 TO N +790 PRINT TAB(10);"JOB ";SA(I);"GETS ASSIGNEE";I;" COST = ";-C(SA(I),I) +800 NEXT +802 ZL=-ZL +805 PRINT:PRINT TAB(30);"TOTAL COST = ";ZL +810 IF Z2$="N" THEN GOTO 900 +815 LPRINT TAB(20);"OPTIMAL ASSIGNMENT":LPRINT" " +820 FOR I=1 TO N +830 LPRINT "JOB ";SA(I);"GETS ASSIGNEE";I;" COST = ";-C(SA(I),I) +832 NEXT I +835 LPRINT TAB(20);"TOTAL COST = ";ZL +900 PRINT:INPUT"PRESS ENTER TO START AGAIN";Z9$ +905 IF Z9$ = "0" THEN END +910 CLEAR 1000:GOTO 100 +1000 FOR CI=1 TO N:AU(CI)=MA(CI):NEXT CI +1030 FOR CI=1 TO N +1040 IF AU(CI)=0 THEN GOTO 1070 +1050 NEXT CI +1060 CI=N+1:CM=CI-1:GOTO 1210 +1070 CM=CI-1 +1080 FOR MN=CI TO N +1090 CW=-1E9 +1100 FOR JB=1 TO N +1110 IF CI=1 THEN GOTO 1150 +1120 FOR L=1 TO CM +1130 IF JB=AU(L) THEN GOTO 1170 +1140 NEXT L +1150 IF C(MN,JB)<=CW THEN GOTO 1170 +1160 CW=C(MN,JB) +1170 NEXT JB +1180 AU(MN)=CW +1190 NEXT MN +1200 IF CI=1 THEN GOTO 1240 +1210 FOR CJ=1 TO CM:AU(CJ)=C(CJ,MA(CJ)):NEXT CJ +1240 ZU=0:FOR CJ=1 TO N:ZU=ZU+AU(CJ):NEXT CJ +1280 RETURN +10000 PRINT"INPUT ERROR!TRY AGAIN!":FOR JJ=1 TO 300:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/ASSIGN.INP b/BP100/ASSIGN.INP new file mode 100644 index 0000000..5b190e3 --- /dev/null +++ b/BP100/ASSIGN.INP @@ -0,0 +1,11 @@ + +2 +123.45 +678.90 +987.65 +432.10 + +Y + +Y +0 diff --git a/BP100/ASSIGN.OUT b/BP100/ASSIGN.OUT new file mode 100644 index 0000000..1589b10 --- /dev/null +++ b/BP100/ASSIGN.OUT @@ -0,0 +1,42 @@ + ASSIGNMENT COST + +THE ASSIGNMENT PROBLEM EXAMINED IN THIS PROGRAM IS OF THE +FOLLOWING TYPE: THERE ARE A FIXED NUMBER OF JOBS TO BE DONE +(SAY N JOBS), AND THE SAME NUMBER(N) OF POSSIBLE ASSIGNEES, +I.E. THOSE WHO CAN DO THE JOB. THE ASSIGNEES HAVE DIFFERENT +EFFICIENCIES FOR THE DIFFERENT JOBS. IN FACT FOR EACH +JOB-ASSIGNEE COMBINATION WE CAN ASSIGN SOME COST. EACH +ASSIGNEE IS ASSIGNED TO 1 AND ONLY 1 JOB. THE PROGRAM WILL +FIND THE ASSIGNMENT WHICH MINIMIZES TOTAL COST. + +THIS PROGRAM IS SET UP FOR A MAXIMUM OF 9 DIFFERENT JOBS +AND 9 DIFFERENT POSSIBLE ASSIGNMENTS. + +PRESS ENTER TO CONTINUE? +HOW MANY JOBS MUST BE ASSIGNED(<= 9 ? 2 + +FOR JOB 1 + COST FOR ASSIGNEE 1 ? 123.45 + COST FOR ASSIGNEE 2 ? 678.90 + +FOR JOB 2 + COST FOR ASSIGNEE 1 ? 987.65 + COST FOR ASSIGNEE 2 ? 432.10 + + +PRESS ENTER TO CONTINUE? +IS LINEPRINTER OUTPUT OF INITIAL COST ASSIGNMENT DESIRED(Y/N)? Y + +PRESS ENTER WHEN PRINTER READY? + + + +COMPUTING +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +OPTIMAL ASSIGNMENT + JOB 1 GETS ASSIGNEE 1 COST = 123.45 + JOB 2 GETS ASSIGNEE 2 COST = 432.1 + + TOTAL COST = 555.55 + +PRESS ENTER TO START AGAIN? 0 diff --git a/BP100/ASSIGN.dif b/BP100/ASSIGN.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/ASSIGN.run b/BP100/ASSIGN.run new file mode 100644 index 0000000..80c97dd --- /dev/null +++ b/BP100/ASSIGN.run @@ -0,0 +1,42 @@ + ASSIGNMENT COST + +THE ASSIGNMENT PROBLEM EXAMINED IN THIS PROGRAM IS OF THE +FOLLOWING TYPE: THERE ARE A FIXED NUMBER OF JOBS TO BE DONE +(SAY N JOBS), AND THE SAME NUMBER(N) OF POSSIBLE ASSIGNEES, +I.E. THOSE WHO CAN DO THE JOB. THE ASSIGNEES HAVE DIFFERENT +EFFICIENCIES FOR THE DIFFERENT JOBS. IN FACT FOR EACH +JOB-ASSIGNEE COMBINATION WE CAN ASSIGN SOME COST. EACH +ASSIGNEE IS ASSIGNED TO 1 AND ONLY 1 JOB. THE PROGRAM WILL +FIND THE ASSIGNMENT WHICH MINIMIZES TOTAL COST. + +THIS PROGRAM IS SET UP FOR A MAXIMUM OF 9 DIFFERENT JOBS +AND 9 DIFFERENT POSSIBLE ASSIGNMENTS. + +PRESS ENTER TO CONTINUE? +HOW MANY JOBS MUST BE ASSIGNED(<= 9 ? 2 + +FOR JOB 1 + COST FOR ASSIGNEE 1 ? 123.45 + COST FOR ASSIGNEE 2 ? 678.90 + +FOR JOB 2 + COST FOR ASSIGNEE 1 ? 987.65 + COST FOR ASSIGNEE 2 ? 432.10 + + +PRESS ENTER TO CONTINUE? +IS LINEPRINTER OUTPUT OF INITIAL COST ASSIGNMENT DESIRED(Y/N)? Y + +PRESS ENTER WHEN PRINTER READY? + + + +COMPUTING +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +OPTIMAL ASSIGNMENT + JOB 1 GETS ASSIGNEE 1 COST = 123.45 + JOB 2 GETS ASSIGNEE 2 COST = 432.1 + + TOTAL COST = 555.55 + +PRESS ENTER TO START AGAIN? 0 diff --git a/BP100/AUTOEXP.80 b/BP100/AUTOEXP.80 new file mode 100644 index 0000000..841b395 --- /dev/null +++ b/BP100/AUTOEXP.80 @@ -0,0 +1,156 @@ + AUTO EXPENSE ANALYSIS + +THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL TO KEEP A +RECORD OF ALL EXPENSES PERTAINING TO THE USE OF AN AUTOMOBILE. +FOR EACH EXPENSE THIS PROGRAM STORES THE FOLLOWING: +AN EXPENSE TYPE CHOSEN FROM GAS,OIL,MAIN,TOLL,INS,PAYM OR MISC +MAIN MEANS MAINTENANCE,INS IS INSURANCE,PAYM IS CAR PAYMENT. +IN ADDITION TO TYPE EXPENSE THERE IS DESCRIPTION,DATE,PLACE OF +SERVICE,QUANTITY PURCHASED,BILL AMOUNT AND ODOMETER READING. +THIS DATA IS STORED IN A FILE IN MEMORY. THIS FILE MAY BE +SAVED ON DISKETTE OR CASSETTE AND RECALLED,IT MAY BE EDITED +LISTED ON CRT OR PRINTER,ETC. A MILES PER GALLON CALCULATION +MAY ALSO BE PERFORMED. + +PRESS ENTER TO BEGIN? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? +INITIAL INPUT ENTRY +MAKE THIS ENTRY WITH A FULL GAS TANK + +ENTER DATE(MM/DD/YY)? 01/02/03 +ENTER ODOMETER READING? 123000 +INITIAL ENTRY DONE +PRESS ENTER TO CONTINUE? +EXPENSE TYPES: GAS OIL MAIN TOLL INS PAYM MISC + + TYPE EXPENSE ? GAS + EXP. DESCRIPTION ? fillup + DATE OF EXPENSE ? 01/03/03 + PLACE OF SERVICE ? 66 + 0.00QUANT. PURCH ? 12.3 + 0.00BILL AMOUNT ? 39.87 + 0.00ODOMETER READ. ? 123456 +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS fillup 01/03/03 66 12.3 39.87 123456.0 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +PRESENT DISK FILE IS NEW FILE ? AUTOEXP.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +ENTER NAME OF FILE TO READ IN? AUTOEXP.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS INITIAL 01/02/03 0.00000 0.0 123000.00 + +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS fillup 01/03/03 66 12.3 39.87 123456.0 + +PRESS ENTER TO CONTINUE? +TOTAL GASOLINE USED : 12.30 +TOTAL MILEAGE GONE : 456.00 +TOTAL COST OF USE : $39.87 +MILES/GALLON : 37.07 +TOTAL COST/MILE : $0.09 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 +ENTER TYPE DESIRED? GAS +******* COMPUTING ******* +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS INITIAL 01/02/03 0.00000 0.0 123000.00 +GAS fillup 01/03/03 66 12.3 39.87 123456.0 + +PRESS ENTER TO CONTINUE? + +TOTAL COST FOR THIS EXPENSE TYPE : $39.87 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/AUTOEXP.BAS b/BP100/AUTOEXP.BAS new file mode 100644 index 0000000..51b69d5 --- /dev/null +++ b/BP100/AUTOEXP.BAS @@ -0,0 +1,239 @@ +1 CLS:PRINT TAB(5);"AUTO EXPENSE ANALYSIS":PRINT +2 PRINT "THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL TO KEEP A +3 PRINT "RECORD OF ALL EXPENSES PERTAINING TO THE USE OF AN AUTOMOBILE. +4 PRINT "FOR EACH EXPENSE THIS PROGRAM STORES THE FOLLOWING: +5 PRINT "AN EXPENSE TYPE CHOSEN FROM GAS,OIL,MAIN,TOLL,INS,PAYM OR MISC +6 PRINT "MAIN MEANS MAINTENANCE,INS IS INSURANCE,PAYM IS CAR PAYMENT. +7 PRINT "IN ADDITION TO TYPE EXPENSE THERE IS DESCRIPTION,DATE,PLACE OF +8 PRINT "SERVICE,QUANTITY PURCHASED,BILL AMOUNT AND ODOMETER READING. +9 PRINT "THIS DATA IS STORED IN A FILE IN MEMORY. THIS FILE MAY BE +10 PRINT "SAVED ON DISKETTE OR CASSETTE AND RECALLED,IT MAY BE EDITED +11 PRINT "LISTED ON CRT OR PRINTER,ETC. A MILES PER GALLON CALCULATION +12 PRINT "MAY ALSO BE PERFORMED. +15 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +50 CLEAR 3000 +60 DIM AA$(70,4),BB(70,3) +65 DIM AT$(70,4),BT(70,3) +70 GOSUB 9000 +100 ' CLS:INPUT "ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +110 ' IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 100 +120 ZD$ = "Y" ' bwBASIC does not support cassette input +500 CLS:PRINT " MAIN MENU":PRINT +505 PRINT " 0.QUIT +510 PRINT " 1.ADD TO FILE OR BEGIN NEW FILE +520 PRINT " 2.READ FILE IN FROM TAPE +530 PRINT " 3.WRITE FILE OUT ONTO TAPE +540 PRINT " 4.READ FILE IN FROM DISK +550 PRINT " 5.WRITE FILE OUT ONTO DISK +560 PRINT " 6.EDIT FILE +570 PRINT " 7.LIST CONTENTS, COMPLETE OR BY TYPE +580 PRINT " 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +590 Z9=0 +600 INPUT "ENTER YOUR CHOICE";Z9 +605 IF Z9 = 0 THEN END +610 ON Z9 GOSUB 1000,2000,2100,2200,2300,3000,5000,7000 +620 GOTO 500 +1000 REM ADD TO OR START FILE ALREADY IN MEMORY +1010 CLS: IF NI=0 THEN PRINT "NEW FILE":GOSUB 10100 +1013 IF NI=0 THEN GOSUB 6500:PRINT "INITIAL ENTRY DONE":GOSUB 10100:CLS +1015 J=NI+1 +1020 GOSUB 6000:REM INPUT 1 RECORD +1030 CLS:PRINT F$(2):GOSUB 6100:REM PRINT OUT 1 RECORD +1040 GOSUB 10200:IF Z9$="N" THEN GOTO 1020 +1050 IF Z9$="A" THEN RETURN +1060 NI=NI+1:REM NEW RECORD ON FILE +1070 GOSUB 10400:REM MORE? +1080 IF Z9$="Y" THEN GOTO 1000 : ELSE RETURN +2000 REM READ IN FILE FROM TAPE +2010 CLS:PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2015 ' IF ZD$="Y" THEN CMD"T" +2020 INPUT #-1,NI +2030 FOR J=0 TO NI:INPUT #-1,AA$(J,1),AA$(J,2),AA$(J,3),AA$(J,4),BB(J,1),BB(J,2),BB(J,3):NEXT +2040 RETURN +2100 REM WRITE OUT FILE ONTO TAPE +2105 CLS +2110 PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2115 ' IF ZD$="Y" THEN CMD"T" +2130 WRITE #-1,NI +2140 FOR J=0 TO NI:WRITE #-1,AA$(J,1),AA$(J,2),AA$(J,3),AA$(J,4),BB(J,1),BB(J,2),BB(J,3):NEXT +2150 RETURN +2200 REM READ IN FILE FROM DISK +2210 CLS:PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2220 ON ERROR GOTO 2290 +2225 PRINT :INPUT "ENTER NAME OF FILE TO READ IN";FI$ +2230 OPEN "I",1,FI$ +2240 INPUT # 1,NI +2250 FOR J=0 TO NI:INPUT # 1,AA$(J,1),AA$(J,2),AA$(J,3),AA$(J,4),BB(J,1),BB(J,2),BB(J,3):FOR JJ=1 TO 4:Z8$=AA$(J,JJ):GOSUB 11000:AA$(J,JJ)=Z8$:NEXT JJ:NEXT +2260 CLOSE # 1 +2270 RETURN +2290 PRINT "FILE DOES NOT EXIST":GOSUB 10100:RETURN +2300 REM WRITE FILE OUT TO DISK +2305 CLS +2310 PRINT :PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2315 PRINT :PRINT "PRESENT DISK FILE IS ";FI$;" ";:INPUT "NEW FILE ";FI$ +2320 OPEN "O",1,FI$ +2330 WRITE # 1,NI +2340 FOR J=0 TO NI:WRITE # 1,AA$(J,1),AA$(J,2),AA$(J,3),AA$(J,4),BB(J,1),BB(J,2),BB(J,3):NEXT +2370 CLOSE # 1 +2380 RETURN +3000 REM EDIT FILE +3010 CLS:PRINT " ";F$(2) +3020 FOR J=0 TO NI +3030 PRINT USING "## ";J; +3040 GOSUB 6100 +3050 IF J/12=INT(J/12) THEN GOSUB 4000 +3060 NEXT J +3062 J=J-1 +3065 IF J/12=INT(J/12) THEN GOTO 3080 +3070 GOSUB 4000 +3080 RETURN +4000 REM EDIT SUBROUTINE +4010 K=J +4020 PRINT +4025 J=0 +4028 PRINT "CHANGE TYPE CODE TO ZZZZ FOR DELETING" +4030 INPUT "ENTER # OF ITEM YOU WISH TO EDIT,0 IF NONE";J +4035 IF J=0 THEN J=K:RETURN +4040 CLS:PRINT " ";F$(2):PRINT +4050 PRINT " ";:GOSUB 6100 +4060 PRINT :GOSUB 6000 +4070 CLS:PRINT " ";F$(2) +4080 FOR J=INT(K/12)*12+1 TO K:PRINT USING "## ";J;:GOSUB 6100:NEXT +4090 GOTO 4020 +5000 REM LIST FILE WITH ANALYSIS +5005 INPUT "IS A LINE PRINTER TO BE USED(Y/N)";Z2$:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 5005 +5010 CLS:PRINT " LIST MENU":PRINT +5020 PRINT "1. COMPLETE LIST AS ON FILE +5030 PRINT "2. LIST BY TYPE +5050 PRINT "3. END LIST PROGRAM +5060 PRINT :INPUT "ENTER APPROPRIATE CHOICE";Z9 +5065 IF Z9=3 THEN RETURN +5070 ON Z9 GOSUB 5200,5300 +5080 GOTO 5010 +5100 RETURN +5200 REM COMPLETE LIST +5205 CLS:IF Z2$="Y" THEN PRINT "PUT PAPER INTO PRINTER":GOSUB 10100 +5210 PRINT F$(2):IF Z2$="Y" THEN LPRINT TAB(20);"COMPLETE LIST":LPRINT F$(5) +5215 V(1)=0:V(2)=0:V(3)=0:V(4)=0 +5220 FOR J = 0 TO NI +5230 GOSUB 6100:GOSUB 6300:REM 1 RECORD PRINTED +5233 IF AA$(J,1)="GAS" THEN V(1)=V(1)+BB(J,1):GM=J:OD=BB(J,3) ' REM TOTAL GASOLINE +5236 V(2)=V(2)+BB(J,2):REM TOTAL COST +5237 V(3)=OD-BB(0,3):REM TOTAL MILEAGE +5238 V(4)=BB(GM,3)-BB(0,3):REM TOTAL MILEAGE FOR GASOLINE +5240 IF J/12 = INT(J/12) THEN PRINT :GOSUB 10100:CLS:PRINT F$(2) +5250 NEXT J +5260 PRINT :GOSUB 10100 +5262 PRINT USING "TOTAL GASOLINE USED : #####.##";V(1) +5264 PRINT USING "TOTAL MILEAGE GONE : ######.##";V(3) +5265 PRINT USING "TOTAL COST OF USE : $$####.##";V(2) +5266 PRINT USING "MILES/GALLON : ###.##";V(4)/V(1) +5267 PRINT USING "TOTAL COST/MILE : $$#####.##";V(2)/V(3) +5268 IF Z2$<>"Y" THEN GOTO 5280 +5271 LPRINT " ":LPRINT " " +5272 LPRINT USING "TOTAL GASOLINE USED : #####.##";V(1) +5274 LPRINT USING "TOTAL MILEAGE GONE : ######.##";V(3) +5275 LPRINT USING "TOTAL COST OF USE : $$####.##";V(2) +5276 LPRINT USING "MILES/GALLON : ###.##";V(4)/V(1) +5277 LPRINT USING "TOTAL COST/MILE : $$#####.##";V(2)/V(3) +5280 PRINT :GOSUB 10100:RETURN +5300 REM LIST TYPE +5305 CLS:INPUT "ENTER TYPE DESIRED";RM$ +5310 V(1)=0:V(2)=0:V(3)=0:V(4)=0 +5315 CLS:PRINT @ 398,"******* COMPUTING *******" +5320 FOR J=0 TO NI +5325 IF RM$<>AA$(J,1) THEN GOTO 5390 +5330 V(1)=V(1)+BB(J,2):REM TOTAL COST FOR THIS EXPESE TYPE +5390 NEXT J +5400 CLS:PRINT F$(2):IF Z2$="Y" THEN LPRINT TAB(20); "LIST OF TYPE ";RM$:LPRINT F$(5) +5405 JJ=0 +5410 FOR J=0 TO NI +5415 IF RM$<>AA$(J,1) THEN GOTO 5450 +5417 JJ=JJ+1 +5420 GOSUB 6100 +5430 GOSUB 6300 +5440 IF JJ/12=INT(JJ/12) THEN GOSUB 10100:CLS:PRINT F$(2):PRINT F$(6) +5450 NEXT J +5460 PRINT :GOSUB 10100 +5470 PRINT +5480 PRINT USING "TOTAL COST FOR THIS EXPENSE TYPE : $$#####.##";V(1) +5500 IF Z2$<>"Y" THEN GOTO 5550 +5505 LPRINT " ":LPRINT " " +5510 LPRINT USING "TOTAL COST FOR THIS EXPENSE TYPE : $$#####.##";V(1) +5530 LPRINT :LPRINT +5550 PRINT :GOSUB 10100:RETURN +6000 REM SBR FOR INPUTTING DATA ON 1 PURCHASE +6005 F$(1)="% %" +6008 PRINT "EXPENSE TYPES: GAS OIL MAIN TOLL INS PAYM MISC":PRINT +6010 PRINT USING F$(1);AA$(J,1),:INPUT "TYPE EXPENSE ";AA$(J,1) +6012 A$=AA$(J,1):IF A$<>"GAS" AND A$<>"OIL" AND A$<>"MAIN" AND A$<>"TOLL" AND A$<>"INS" AND A$<>"PAYM" AND A$<>"MISC" AND A$<>"ZZZZ" THEN GOSUB 10000:GOTO 6008 +6015 PRINT USING F$(1);AA$(J,2),:INPUT "EXP. DESCRIPTION ";AA$(J,2) +6020 PRINT USING F$(1);AA$(J,3),:INPUT "DATE OF EXPENSE ";AA$(J,3) +6023 PRINT USING F$(1);AA$(J,4),:INPUT "PLACE OF SERVICE ";AA$(J,4) +6035 F$(1)=" #########.## " +6040 PRINT USING F$(1);BB(J,1),:INPUT "QUANT. PURCH ";BB(J,1) +6050 PRINT USING F$(1);BB(J,2),:INPUT "BILL AMOUNT ";BB(J,2) +6055 PRINT USING F$(1);BB(J,3),:INPUT "ODOMETER READ. ";BB(J,3) +6099 RETURN +6100 REM PRINT 1 LINE OF PORTFOLIO +6110 PRINT USING F$(4);AA$(J,1),AA$(J,2),AA$(J,3),AA$(J,4),BB(J,1),BB(J,2),BB(J,3) +6120 RETURN +6300 REM PRINT 1 LINE OF PORTFOLIO ON PRINTER +6310 IF Z2$<>"Y" THEN RETURN +6320 LPRINT USING F$(7);AA$(J,1),AA$(J,2),AA$(J,3),AA$(J,4),BB(J,1),BB(J,2),BB(J,3) +6330 RETURN +6500 REM INITIAL INPUT +6510 CLS +6520 PRINT "INITIAL INPUT ENTRY" +6522 PRINT "MAKE THIS ENTRY WITH A FULL GAS TANK":PRINT +6530 AA$(0,1)="GAS":AA$(0,2)="INITIAL" +6540 INPUT "ENTER DATE(MM/DD/YY)";AA$(0,3) +6550 INPUT "ENTER ODOMETER READING";BB(0,3) +6560 RETURN +7000 REM DELETE SBR COMPUTATION +7005 K=1:REM K=NO. OF RECORDS NOT DELETED +7010 FOR J=1 TO NI +7020 IF AA$(J,1)="ZZZZ" THEN GOTO 7090 +7030 REM DO NOT DELETE RECORD +7040 FOR J6=1 TO 4:AT$(K,J6)=AA$(J,J6):NEXT +7050 FOR J6=1 TO 3:BT(K,J6)=BB(J,J6):NEXT +7060 K=K+1:GOTO 7090 +7090 NEXT J +7100 K=K-1:NI=K +7110 FOR J=1 TO NI +7120 FOR J6=1 TO 4:AA$(J,J6)=AT$(J,J6):NEXT +7130 FOR J6=1 TO 3:BB(J,J6)=BT(J,J6):NEXT +7140 NEXT J +7150 RETURN +9000 REM FORMATTING VARIABLES +9020 F$(2)="TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER" +9030 F$(4)="% % % % % % % % ####.# ####.## ######.#" +9040 F$(5)="TYPE DESCRIPTION DATE PLACE QUANTITY $ AMT. ODOMETER" +9060 F$(7)="% % % % % % % % ####.# $$###.## ######.#" +9099 RETURN +10000 REM INPUT ERROR SBR +10010 PRINT "INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9 +10020 RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9:RETURN +10200 REM Y,N,A SBR +10205 Z9$=" " +10210 INPUT "ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$ +10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205 +10230 RETURN +10300 REM Y,N SBR +10305 Z9$=" " +10310 INPUT "ENTER Y IF OK, N IF ERROR";Z9$ +10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305 +10330 RETURN +10400 REM MORE ENTRY? SBR +10405 Z9$=" " +10410 INPUT "DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$ +10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405 +10430 RETURN +10500 REM ONLY Y/N SBR +10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000 +10520 RETURN +11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$ +11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010 +11020 RETURN + diff --git a/BP100/AUTOEXP.DAT b/BP100/AUTOEXP.DAT new file mode 100644 index 0000000..65a875a --- /dev/null +++ b/BP100/AUTOEXP.DAT @@ -0,0 +1,3 @@ + 1 +"GAS","INITIAL","01/02/03","", 0, 0, 123000 +"GAS","fillup","01/03/03","66", 12.3, 39.87, 123456 diff --git a/BP100/AUTOEXP.INP b/BP100/AUTOEXP.INP new file mode 100644 index 0000000..a67091c --- /dev/null +++ b/BP100/AUTOEXP.INP @@ -0,0 +1,34 @@ + +1 + +01/02/03 +123000 + +GAS +fillup +01/03/03 +66 +12.3 +39.87 +123456 +Y +N +5 + +AUTOEXP.DAT +4 + +AUTOEXP.DAT +7 +Y +1 + + + + +2 +GAS + + +3 +0 diff --git a/BP100/AUTOEXP.OUT b/BP100/AUTOEXP.OUT new file mode 100644 index 0000000..6cc5444 --- /dev/null +++ b/BP100/AUTOEXP.OUT @@ -0,0 +1,156 @@ + AUTO EXPENSE ANALYSIS + +THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL TO KEEP A +RECORD OF ALL EXPENSES PERTAINING TO THE USE OF AN AUTOMOBILE. +FOR EACH EXPENSE THIS PROGRAM STORES THE FOLLOWING: +AN EXPENSE TYPE CHOSEN FROM GAS,OIL,MAIN,TOLL,INS,PAYM OR MISC +MAIN MEANS MAINTENANCE,INS IS INSURANCE,PAYM IS CAR PAYMENT. +IN ADDITION TO TYPE EXPENSE THERE IS DESCRIPTION,DATE,PLACE OF +SERVICE,QUANTITY PURCHASED,BILL AMOUNT AND ODOMETER READING. +THIS DATA IS STORED IN A FILE IN MEMORY. THIS FILE MAY BE +SAVED ON DISKETTE OR CASSETTE AND RECALLED,IT MAY BE EDITED +LISTED ON CRT OR PRINTER,ETC. A MILES PER GALLON CALCULATION +MAY ALSO BE PERFORMED. + +PRESS ENTER TO BEGIN? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? +INITIAL INPUT ENTRY +MAKE THIS ENTRY WITH A FULL GAS TANK + +ENTER DATE(MM/DD/YY)? 01/02/03 +ENTER ODOMETER READING? 123000 +INITIAL ENTRY DONE +PRESS ENTER TO CONTINUE? +EXPENSE TYPES: GAS OIL MAIN TOLL INS PAYM MISC + + TYPE EXPENSE ? GAS + EXP. DESCRIPTION ? fillup + DATE OF EXPENSE ? 01/03/03 + PLACE OF SERVICE ? 66 + 0.00QUANT. PURCH ? 12.3 + 0.00BILL AMOUNT ? 39.87 + 0.00ODOMETER READ. ? 123456 +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS fillup 01/03/03 66 12.3 39.87 123456.0 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +PRESENT DISK FILE IS NEW FILE ? AUTOEXP.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +ENTER NAME OF FILE TO READ IN? AUTOEXP.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS INITIAL 01/02/03 0.00000 0.0 123000.00 + +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS fillup 01/03/03 66 12.3 39.87 123456.0 + +PRESS ENTER TO CONTINUE? +TOTAL GASOLINE USED : 12.30 +TOTAL MILEAGE GONE : 456.00 +TOTAL COST OF USE : $39.87 +MILES/GALLON : 37.07 +TOTAL COST/MILE : $0.09 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 +ENTER TYPE DESIRED? GAS +******* COMPUTING ******* +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS INITIAL 01/02/03 0.00000 0.0 123000.00 +GAS fillup 01/03/03 66 12.3 39.87 123456.0 + +PRESS ENTER TO CONTINUE? + +TOTAL COST FOR THIS EXPENSE TYPE : $39.87 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/AUTOEXP.dif b/BP100/AUTOEXP.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/AUTOEXP.run b/BP100/AUTOEXP.run new file mode 100644 index 0000000..841b395 --- /dev/null +++ b/BP100/AUTOEXP.run @@ -0,0 +1,156 @@ + AUTO EXPENSE ANALYSIS + +THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL TO KEEP A +RECORD OF ALL EXPENSES PERTAINING TO THE USE OF AN AUTOMOBILE. +FOR EACH EXPENSE THIS PROGRAM STORES THE FOLLOWING: +AN EXPENSE TYPE CHOSEN FROM GAS,OIL,MAIN,TOLL,INS,PAYM OR MISC +MAIN MEANS MAINTENANCE,INS IS INSURANCE,PAYM IS CAR PAYMENT. +IN ADDITION TO TYPE EXPENSE THERE IS DESCRIPTION,DATE,PLACE OF +SERVICE,QUANTITY PURCHASED,BILL AMOUNT AND ODOMETER READING. +THIS DATA IS STORED IN A FILE IN MEMORY. THIS FILE MAY BE +SAVED ON DISKETTE OR CASSETTE AND RECALLED,IT MAY BE EDITED +LISTED ON CRT OR PRINTER,ETC. A MILES PER GALLON CALCULATION +MAY ALSO BE PERFORMED. + +PRESS ENTER TO BEGIN? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? +INITIAL INPUT ENTRY +MAKE THIS ENTRY WITH A FULL GAS TANK + +ENTER DATE(MM/DD/YY)? 01/02/03 +ENTER ODOMETER READING? 123000 +INITIAL ENTRY DONE +PRESS ENTER TO CONTINUE? +EXPENSE TYPES: GAS OIL MAIN TOLL INS PAYM MISC + + TYPE EXPENSE ? GAS + EXP. DESCRIPTION ? fillup + DATE OF EXPENSE ? 01/03/03 + PLACE OF SERVICE ? 66 + 0.00QUANT. PURCH ? 12.3 + 0.00BILL AMOUNT ? 39.87 + 0.00ODOMETER READ. ? 123456 +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS fillup 01/03/03 66 12.3 39.87 123456.0 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +PRESENT DISK FILE IS NEW FILE ? AUTOEXP.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +ENTER NAME OF FILE TO READ IN? AUTOEXP.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS INITIAL 01/02/03 0.00000 0.0 123000.00 + +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS fillup 01/03/03 66 12.3 39.87 123456.0 + +PRESS ENTER TO CONTINUE? +TOTAL GASOLINE USED : 12.30 +TOTAL MILEAGE GONE : 456.00 +TOTAL COST OF USE : $39.87 +MILES/GALLON : 37.07 +TOTAL COST/MILE : $0.09 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 +ENTER TYPE DESIRED? GAS +******* COMPUTING ******* +TYPE DESCRIPT DATE PLACE QUANT. $ AMT. ODOMETER +GAS INITIAL 01/02/03 0.00000 0.0 123000.00 +GAS fillup 01/03/03 66 12.3 39.87 123456.0 + +PRESS ENTER TO CONTINUE? + +TOTAL COST FOR THIS EXPENSE TYPE : $39.87 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/BAYES.80 b/BP100/BAYES.80 new file mode 100644 index 0000000..498fbdc --- /dev/null +++ b/BP100/BAYES.80 @@ -0,0 +1,34 @@ + BAYES PROBABILITIES + +THIS THEOREM USES BAYES THEOREM TO REVISE ESTIMATES OF +THE PROBABILITIES OF THE OCCURRENCE OF THE VARIOUS STATES OF +NATURE. INPUT TO THIS PROGRAM ARE THE PROBABILITIES OF A +A FINITE AND USER SELECTABLE NUMBER OF STATES OF NATURE, +THESE PROBABILITIES MUST SUM UP TO 1. IN ADDITION, +THERE MUST BE INPUT FOR EACH STATE OF NATURE THE PROBABILITY +OF A CERTAIN EVENT,SAY B, OCCURRING GIVEN THAT STATE OF +IS THE TRUE STATE OF NATURE. THEN THE PROGRAM WILL COMPUTE +THE CONDITIONAL PROBAILITIES OF EACH OF THE STATES OF NATURE +BEING TRUE GIVEN THAT EVENT B OCCURS. THESE ARE CALLED +POSTERIOR PROBABILITIES AND MAY BE USED IN DECISION MAKING + +PRESS ENTER TO BEGIN? +ENTER PROBABILITIES OF POSSIBLE STATES OF NATURE 1 BY 1. +THESE PROBABILITIES SHOULD ADD TO 1. + +ENTER PROB. ST. OF NATURE 1 (-1 TO END)? 12 +ENTER PROB. ST. OF NATURE 2 (-1 TO END)? 34 +ENTER PROB. ST. OF NATURE 3 (-1 TO END)? 56 +ENTER PROB. ST. OF NATURE 4 (-1 TO END)? -1 +PROBABILITIES SUM TO 102 THIS SHOULD BE STANDARDIZED +TO SUM TO 1. ENTER 1 TO STANDARDIZE, 0 TO END? 1 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 1 ? .145 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 2 ? .267 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 3 ? .389 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +S OF N ORIG. PROB B POSTERIOR PROB + PROB. GIVEN S OF N S OF N GIVEN B + 1 0.118 0.145 0.053 + 2 0.333 0.267 0.278 + 3 0.549 0.389 0.668 +PRESS ENTER FOR ANOTHER COMPUTATION? 0 diff --git a/BP100/BAYES.BAS b/BP100/BAYES.BAS new file mode 100644 index 0000000..78313fa --- /dev/null +++ b/BP100/BAYES.BAS @@ -0,0 +1,55 @@ +1 REM BAYES +10 CLS:PRINT TAB(10); "BAYES PROBABILITIES":PRINT +20 PRINT"THIS THEOREM USES BAYES THEOREM TO REVISE ESTIMATES OF +25 PRINT "THE PROBABILITIES OF THE OCCURRENCE OF THE VARIOUS STATES OF +30 PRINT "NATURE. INPUT TO THIS PROGRAM ARE THE PROBABILITIES OF A +35 PRINT "A FINITE AND USER SELECTABLE NUMBER OF STATES OF NATURE, +40 PRINT "THESE PROBABILITIES MUST SUM UP TO 1. IN ADDITION, +45 PRINT "THERE MUST BE INPUT FOR EACH STATE OF NATURE THE PROBABILITY +50 PRINT "OF A CERTAIN EVENT,SAY B, OCCURRING GIVEN THAT STATE OF +55 PRINT "IS THE TRUE STATE OF NATURE. THEN THE PROGRAM WILL COMPUTE +60 PRINT "THE CONDITIONAL PROBAILITIES OF EACH OF THE STATES OF NATURE +70 PRINT "BEING TRUE GIVEN THAT EVENT B OCCURS. THESE ARE CALLED +75 PRINT "POSTERIOR PROBABILITIES AND MAY BE USED IN DECISION MAKING +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +95 CLEAR 1000 +100 DIM AB(100),BA(100),A(100) +110 CLS +120 N=0 +130 PRINT "ENTER PROBABILITIES OF POSSIBLE STATES OF NATURE 1 BY 1. +135 PRINT "THESE PROBABILITIES SHOULD ADD TO 1.":PRINT +140 PRINT "ENTER PROB. ST. OF NATURE";N+1;"(-1 TO END)";:INPUT A(N+1) +150 IF A(N+1)=-1 THEN GOTO 500 ' REM ALL OVER +160 N=N+1:P=P+A(N) +170 GOTO 140 +500 REM END OF COMPUTATION +510 IF P=1 THEN GOTO 550 +520 CLS:PRINT "PROBABILITIES SUM TO";P;"THIS SHOULD BE STANDARDIZED +530 PRINT "TO SUM TO 1. ENTER 1 TO STANDARDIZE, 0 TO END";:INPUT Z9 +540 IF Z9<>1 AND Z9<>0 THEN GOSUB 10000:GOTO 530 +550 IF Z9=0 THEN END +560 FOR I=1 TO N:A(I)=A(I)/P:NEXT :P=1 +570 CLS +580 FOR I=1 TO N +590 PRINT "ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE";I;:INPUT BA(I) +600 NEXT I +610 PB=0 +620 FOR I=1 TO N:PB=PB+A(I)*BA(I):NEXT:REM PB=PROBABILITY OF B +625 IF PB>1 THEN PRINT "PROBABILITY OF B IS GREATER THAN 1. PROGRAM WILL ABORT":END +630 FOR I=1 TO N:AB(I)=BA(I)*A(I)/PB:NEXT I +700 F$(1)="S OF N ORIG. PROB B POSTERIOR PROB" +710 F$(2)=" PROB. GIVEN S OF N S OF N GIVEN B" +720 F$(3)=" ### #.### #.### #.###" +750 INPUT "IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +760 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 750 +800 CLS:PRINT F$(1):PRINT F$(2):IF Z2$="Y" THEN LPRINT F$(1):LPRINT F$(2):LPRINT " " +810 FOR I=1 TO N +820 PRINT USING F$(3);I,A(I),BA(I),AB(I) +830 IF Z2$="Y" THEN LPRINT USING F$(3);I,A(I),BA(I),AB(I) +840 NEXT +890 INPUT "PRESS ENTER FOR ANOTHER COMPUTATION";Z9$ +892 IF Z9$ = "0" THEN END +895 GOTO 95 +10000 PRINT "INPUT ERROR!TRY AGAIN!":FOR Q=1 TO 300:NEXT :RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/BAYES.INP b/BP100/BAYES.INP new file mode 100644 index 0000000..e469b35 --- /dev/null +++ b/BP100/BAYES.INP @@ -0,0 +1,11 @@ + +12 +34 +56 +-1 +1 +.145 +.267 +.389 +Y +0 diff --git a/BP100/BAYES.OUT b/BP100/BAYES.OUT new file mode 100644 index 0000000..045cf11 --- /dev/null +++ b/BP100/BAYES.OUT @@ -0,0 +1,34 @@ + BAYES PROBABILITIES + +THIS THEOREM USES BAYES THEOREM TO REVISE ESTIMATES OF +THE PROBABILITIES OF THE OCCURRENCE OF THE VARIOUS STATES OF +NATURE. INPUT TO THIS PROGRAM ARE THE PROBABILITIES OF A +A FINITE AND USER SELECTABLE NUMBER OF STATES OF NATURE, +THESE PROBABILITIES MUST SUM UP TO 1. IN ADDITION, +THERE MUST BE INPUT FOR EACH STATE OF NATURE THE PROBABILITY +OF A CERTAIN EVENT,SAY B, OCCURRING GIVEN THAT STATE OF +IS THE TRUE STATE OF NATURE. THEN THE PROGRAM WILL COMPUTE +THE CONDITIONAL PROBAILITIES OF EACH OF THE STATES OF NATURE +BEING TRUE GIVEN THAT EVENT B OCCURS. THESE ARE CALLED +POSTERIOR PROBABILITIES AND MAY BE USED IN DECISION MAKING + +PRESS ENTER TO BEGIN? +ENTER PROBABILITIES OF POSSIBLE STATES OF NATURE 1 BY 1. +THESE PROBABILITIES SHOULD ADD TO 1. + +ENTER PROB. ST. OF NATURE 1 (-1 TO END)? 12 +ENTER PROB. ST. OF NATURE 2 (-1 TO END)? 34 +ENTER PROB. ST. OF NATURE 3 (-1 TO END)? 56 +ENTER PROB. ST. OF NATURE 4 (-1 TO END)? -1 +PROBABILITIES SUM TO 102 THIS SHOULD BE STANDARDIZED +TO SUM TO 1. ENTER 1 TO STANDARDIZE, 0 TO END? 1 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 1 ? .145 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 2 ? .267 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 3 ? .389 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +S OF N ORIG. PROB B POSTERIOR PROB + PROB. GIVEN S OF N S OF N GIVEN B + 1 0.118 0.145 0.053 + 2 0.333 0.267 0.278 + 3 0.549 0.389 0.668 +PRESS ENTER FOR ANOTHER COMPUTATION? 0 diff --git a/BP100/BAYES.dif b/BP100/BAYES.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/BAYES.run b/BP100/BAYES.run new file mode 100644 index 0000000..498fbdc --- /dev/null +++ b/BP100/BAYES.run @@ -0,0 +1,34 @@ + BAYES PROBABILITIES + +THIS THEOREM USES BAYES THEOREM TO REVISE ESTIMATES OF +THE PROBABILITIES OF THE OCCURRENCE OF THE VARIOUS STATES OF +NATURE. INPUT TO THIS PROGRAM ARE THE PROBABILITIES OF A +A FINITE AND USER SELECTABLE NUMBER OF STATES OF NATURE, +THESE PROBABILITIES MUST SUM UP TO 1. IN ADDITION, +THERE MUST BE INPUT FOR EACH STATE OF NATURE THE PROBABILITY +OF A CERTAIN EVENT,SAY B, OCCURRING GIVEN THAT STATE OF +IS THE TRUE STATE OF NATURE. THEN THE PROGRAM WILL COMPUTE +THE CONDITIONAL PROBAILITIES OF EACH OF THE STATES OF NATURE +BEING TRUE GIVEN THAT EVENT B OCCURS. THESE ARE CALLED +POSTERIOR PROBABILITIES AND MAY BE USED IN DECISION MAKING + +PRESS ENTER TO BEGIN? +ENTER PROBABILITIES OF POSSIBLE STATES OF NATURE 1 BY 1. +THESE PROBABILITIES SHOULD ADD TO 1. + +ENTER PROB. ST. OF NATURE 1 (-1 TO END)? 12 +ENTER PROB. ST. OF NATURE 2 (-1 TO END)? 34 +ENTER PROB. ST. OF NATURE 3 (-1 TO END)? 56 +ENTER PROB. ST. OF NATURE 4 (-1 TO END)? -1 +PROBABILITIES SUM TO 102 THIS SHOULD BE STANDARDIZED +TO SUM TO 1. ENTER 1 TO STANDARDIZE, 0 TO END? 1 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 1 ? .145 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 2 ? .267 +ENTER COND.PROB. OF EVENT B GIVEN ST.OF.NATURE 3 ? .389 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +S OF N ORIG. PROB B POSTERIOR PROB + PROB. GIVEN S OF N S OF N GIVEN B + 1 0.118 0.145 0.053 + 2 0.333 0.267 0.278 + 3 0.549 0.389 0.668 +PRESS ENTER FOR ANOTHER COMPUTATION? 0 diff --git a/BP100/BETAALPH.80 b/BP100/BETAALPH.80 new file mode 100644 index 0000000..2f7b9af --- /dev/null +++ b/BP100/BETAALPH.80 @@ -0,0 +1,38 @@ + BETA AND ALPHA + +GIVEN DATA WITH REGARDS TO PRICES AND DIVIDENDS OVER A +PERIOD OF TIME FOR A GIVEN STOCK AND AN INVESTOR SELECTED +MARKET INDEX THIS PROGRAM WILL COMPUTE THE ALPHA AND BETA +VALUES FOR A STOCK ALONG WITH ITS EXPECTED RETURN, VARIANCE +OF RETURN, AND STANDARD DEVIATION OF RETURN. + +PRESS ENTER TO BEGIN? +HOW MANY PERIODS OF DATA ARE AVAILABLE ? 3 + +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 1 ? 123,55 +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 2 ? 149,66 +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 3 ? 197,77 + +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 1 ? 23.45,5.60 +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 2 ? 33.98,6.30 +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 3 ? 44.36,7.23 +THE NUMBER OF OBSERVATIONS = 3 +THE ESTIMATED EQUATION IS Y = -2.193 X +2.358 + +THE CORRELATION COEFFICIENT = -1.0000 +THE COEFF. OF DETERMINATION = 1.0000 +*** WARNING: Divide by 0 *** +THE STANDARD ERROR OF ESTIMATE = +13407807929942595611008317640802934282464207265959107021466054756094376573581619 +054852612241927956455650759996398703782412109633178814162067569513603268608.000 +ALPHA = 2.35782 +BETA = -2.19277 +EXPECTED RETURN = .617972 +*** WARNING: Divide by 0 *** +VARIANCE OF RETURN= 1.79769E+308 +STAN DEV OF RETURN= 1.34078E+154 +FOR INDEX EXPECTED RETURN = .793447 VAR OF RETURN = 4.13674E-3 + SD OF RETURN = 6.43175E-2 + +PRESS ENTER TO SUBMIT DATA FOR SAME TIME PERIOD BUT +DIFFERENT STOCK,I.E. MARKET DATA STAYS THE SAME? 0 diff --git a/BP100/BETAALPH.BAS b/BP100/BETAALPH.BAS new file mode 100644 index 0000000..3d6a018 --- /dev/null +++ b/BP100/BETAALPH.BAS @@ -0,0 +1,64 @@ +10 CLS +20 PRINT " BETA AND ALPHA" +30 PRINT +40 PRINT"GIVEN DATA WITH REGARDS TO PRICES AND DIVIDENDS OVER A +50 PRINT"PERIOD OF TIME FOR A GIVEN STOCK AND AN INVESTOR SELECTED +60 PRINT"MARKET INDEX THIS PROGRAM WILL COMPUTE THE ALPHA AND BETA +70 PRINT"VALUES FOR A STOCK ALONG WITH ITS EXPECTED RETURN, VARIANCE +80 PRINT"OF RETURN, AND STANDARD DEVIATION OF RETURN." +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9 +1000 CLS +1010 INPUT"HOW MANY PERIODS OF DATA ARE AVAILABLE ";N +1013 Z=N+2:DIM PP(Z),DI(Z),YI(Z),P(Z),D(Z),Y(Z) +1015 PRINT +1020 FOR I=1 TO N +1030 PRINT"INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD";I;:INPUT PP(I),DI(I) +1040 NEXT I +1045 PRINT +1050 FOR I=1 TO N +1060 PRINT"INPUT STOCK PRICE,DIVIDEND FOR PERIOD ";I;:INPUT P(I),D(I) +1070 NEXT I +1080 FOR I=1 TO N-1 +1090 YI(I)=(PP(I+1)-PP(I)+DI(I+1))/PP(I) +1095 Y(I)=(P(I+1)-P(I)+D(I+1))/P(I) +1099 NEXT I +1100 REM COMPUTATION SUBROUTINE +1110 X1=0:X2=0:Y1=0:Y2=0:XY=0 +1115 N2=N:N=N-1 +1120 FOR I=1 TO N +1130 X1=X1+YI(I):X2=X2+YI(I)[2 +1140 Y1=Y1+Y(I):Y2=Y2+Y(I)[2 +1150 XY=XY+YI(I)*Y(I) +1160 NEXT I +1170 SX=X2-X1[2/N: SY=Y2-Y1[2/N +1180 SPROD=XY-X1*Y1/N +1190 A=SPROD/SX:REM SLOPE OF REGRESSION LINE +1200 B=Y1/N-A*X1/N:REM Y INTERCEPT OF REGRESSION LINE +1210 SE=SY-A*SPROD:REM ERROR SUM OF SQUARES +1220 R=SPROD/SQR(SX*SY) +1300 CLS +1302 PRINT"THE NUMBER OF OBSERVATIONS = ";N2 +1305 F$(2)="THE ESTIMATED EQUATION IS Y = #####.### X + #####.###" +1310 PRINT USING F$(2);A,B +1315 F$(3)="THE CORRELATION COEFFICIENT = #.####" +1317 F$(4)="THE COEFF. OF DETERMINATION = #.####" +1320 PRINT:PRINT USING F$(3);R +1325 PRINT USING F$(4);R[2 +1330 F$(5)="THE STANDARD ERROR OF ESTIMATE = ####.###" +1335 PRINT USING F$(5);SQR(SE/(N-2)) +1345 PRINT"ALPHA = ";B +1350 PRINT"BETA = ";A +1360 PRINT"EXPECTED RETURN = ";B+A*X1/N +1365 VARI=SX/(N-1) +1370 SDI=SQR(VARI) +1380 S2=(Y2-B*Y1-A*XY)/(N-2) +1390 V=A[2*VARI + S2 +1400 PRINT"VARIANCE OF RETURN= ";V +1410 PRINT"STAN DEV OF RETURN= ";SQR(V) +1430 PRINT"FOR INDEX EXPECTED RETURN =";X1/N;" VAR OF RETURN =";SX/(N-1) +1440 PRINT" SD OF RETURN = ";SQR(SX/(N-1)) +1500 PRINT +1510 PRINT"PRESS ENTER TO SUBMIT DATA FOR SAME TIME PERIOD BUT +1520 INPUT"DIFFERENT STOCK,I.E. MARKET DATA STAYS THE SAME";Z9 +1525 IF Z9 = 0 THEN END +1530 CLS:N=N2:GOTO 1050 diff --git a/BP100/BETAALPH.INP b/BP100/BETAALPH.INP new file mode 100644 index 0000000..d05c840 --- /dev/null +++ b/BP100/BETAALPH.INP @@ -0,0 +1,9 @@ + +3 +123,55 +149,66 +197,77 +23.45,5.60 +33.98,6.30 +44.36,7.23 +0 diff --git a/BP100/BETAALPH.OUT b/BP100/BETAALPH.OUT new file mode 100644 index 0000000..f0efbb0 --- /dev/null +++ b/BP100/BETAALPH.OUT @@ -0,0 +1,38 @@ + BETA AND ALPHA + +GIVEN DATA WITH REGARDS TO PRICES AND DIVIDENDS OVER A +PERIOD OF TIME FOR A GIVEN STOCK AND AN INVESTOR SELECTED +MARKET INDEX THIS PROGRAM WILL COMPUTE THE ALPHA AND BETA +VALUES FOR A STOCK ALONG WITH ITS EXPECTED RETURN, VARIANCE +OF RETURN, AND STANDARD DEVIATION OF RETURN. + +PRESS ENTER TO BEGIN? +HOW MANY PERIODS OF DATA ARE AVAILABLE ? 3 + +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 1 ? 123,55 +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 2 ? 149,66 +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 3 ? 197,77 + +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 1 ? 23.45,5.60 +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 2 ? 33.98,6.30 +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 3 ? 44.36,7.23 +THE NUMBER OF OBSERVATIONS = 3 +THE ESTIMATED EQUATION IS Y = -2.193 X +2.358 + +THE CORRELATION COEFFICIENT = -1.0000 +THE COEFF. OF DETERMINATION = 1.0000 +*** WARNING: Divide by 0 *** +THE STANDARD ERROR OF ESTIMATE = +13407807929942595611008317640802934282464207265959107021466054756094376573581619 +054852612241927956455650759996398703782412109633178814162067569513603268608.000 +ALPHA = 2.35782 +BETA = -2.19277 +EXPECTED RETURN = .617972 +*** WARNING: Divide by 0 *** +VARIANCE OF RETURN= 1.79769E+308 +STAN DEV OF RETURN= 1.34078E+154 +FOR INDEX EXPECTED RETURN = .793447 VAR OF RETURN = 4.13674E-3 + SD OF RETURN = 6.43175E-2 + +PRESS ENTER TO SUBMIT DATA FOR SAME TIME PERIOD BUT +DIFFERENT STOCK,I.E. MARKET DATA STAYS THE SAME? 0 diff --git a/BP100/BETAALPH.dif b/BP100/BETAALPH.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/BETAALPH.run b/BP100/BETAALPH.run new file mode 100644 index 0000000..2f7b9af --- /dev/null +++ b/BP100/BETAALPH.run @@ -0,0 +1,38 @@ + BETA AND ALPHA + +GIVEN DATA WITH REGARDS TO PRICES AND DIVIDENDS OVER A +PERIOD OF TIME FOR A GIVEN STOCK AND AN INVESTOR SELECTED +MARKET INDEX THIS PROGRAM WILL COMPUTE THE ALPHA AND BETA +VALUES FOR A STOCK ALONG WITH ITS EXPECTED RETURN, VARIANCE +OF RETURN, AND STANDARD DEVIATION OF RETURN. + +PRESS ENTER TO BEGIN? +HOW MANY PERIODS OF DATA ARE AVAILABLE ? 3 + +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 1 ? 123,55 +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 2 ? 149,66 +INPUT MARKET INDEX PRICE,DIVIDEND FOR PERIOD 3 ? 197,77 + +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 1 ? 23.45,5.60 +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 2 ? 33.98,6.30 +INPUT STOCK PRICE,DIVIDEND FOR PERIOD 3 ? 44.36,7.23 +THE NUMBER OF OBSERVATIONS = 3 +THE ESTIMATED EQUATION IS Y = -2.193 X +2.358 + +THE CORRELATION COEFFICIENT = -1.0000 +THE COEFF. OF DETERMINATION = 1.0000 +*** WARNING: Divide by 0 *** +THE STANDARD ERROR OF ESTIMATE = +13407807929942595611008317640802934282464207265959107021466054756094376573581619 +054852612241927956455650759996398703782412109633178814162067569513603268608.000 +ALPHA = 2.35782 +BETA = -2.19277 +EXPECTED RETURN = .617972 +*** WARNING: Divide by 0 *** +VARIANCE OF RETURN= 1.79769E+308 +STAN DEV OF RETURN= 1.34078E+154 +FOR INDEX EXPECTED RETURN = .793447 VAR OF RETURN = 4.13674E-3 + SD OF RETURN = 6.43175E-2 + +PRESS ENTER TO SUBMIT DATA FOR SAME TIME PERIOD BUT +DIFFERENT STOCK,I.E. MARKET DATA STAYS THE SAME? 0 diff --git a/BP100/BLACKSH.80 b/BP100/BLACKSH.80 new file mode 100644 index 0000000..bf5c75d --- /dev/null +++ b/BP100/BLACKSH.80 @@ -0,0 +1,17 @@ +THIS PROGRAM WILL GIVE THE VALUE OF A CALL OPTION VIA THE +BLACK SCHOLES OPTION VALUATION FORMULA. NECESSARY INPUT +CONSISTS OF PRESENT STOCK PRICE, EXERCISE PRICE OF THE +OPTION,INTEREST RATE,# OF DAYS TO EXPIRATION OF THE OPTION +AND STOCK VOLATILITY. OUTPUT IS THE VALUE OF THE OPTION +AND THE HEDGE RATIO. + +PRESS ENTER TO CONTINUE? +STOCK PRICE,EXERCISE PR.,INT.RATE(%),DAYS TO EXP,VOLATILITY(%) +? 12.34,45.67,5,39,7 + +ARE OPTIONS PUTS(P) OR CALLS(C)? P +ST.PR. EX.PR. INT.RT. D.T.EXP. VOL. VALUE HEDGE + + 12.34 45.67 0.05 39 0.07 33.09 1.00 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/BLACKSH.BAS b/BP100/BLACKSH.BAS new file mode 100644 index 0000000..29b47f2 --- /dev/null +++ b/BP100/BLACKSH.BAS @@ -0,0 +1,45 @@ +5 CLS +8 GOSUB 30000 +10 PRINT"THIS PROGRAM WILL GIVE THE VALUE OF A CALL OPTION VIA THE +20 PRINT"BLACK SCHOLES OPTION VALUATION FORMULA. NECESSARY INPUT +30 PRINT"CONSISTS OF PRESENT STOCK PRICE, EXERCISE PRICE OF THE +40 PRINT"OPTION,INTEREST RATE,# OF DAYS TO EXPIRATION OF THE OPTION +50 PRINT"AND STOCK VOLATILITY. OUTPUT IS THE VALUE OF THE OPTION +60 PRINT"AND THE HEDGE RATIO." +70 PRINT:INPUT"PRESS ENTER TO CONTINUE";Z9 +1000 PRINT"STOCK PRICE,EXERCISE PR.,INT.RATE(%),DAYS TO EXP,VOLATILITY(%)" +1010 INPUT ST,EX,IN,TM,VL +1015 TI=TM/365:IN=IN/100:VL=VL/100 +1020 PRINT:INPUT"ARE OPTIONS PUTS(P) OR CALLS(C)";Z9$ +1030 IF Z9$<>"P" AND Z9$<>"C" THEN PRINT"INPUT ERROR":GOTO 1020 +1100 D1=(LOG(ST/EX)+(IN + 1/2*VL[2)*TI)/(VL*SQR(TI)) +1110 D2=(LOG(ST/EX)+(IN - 1/2*VL[2)*TI)/(VL*SQR(TI)) +1120 IF Z9$="P" THEN GOTO 1200 +1150 X1=D1:GOSUB 9000:N1=N +1160 X1=D2:GOSUB 9000:N2=N +1170 W= ST*N1 - EX*EXP(-IN*TI)*N2 +1180 GOTO 1500 +1200 REM VALUE OF PUT +1210 X1=-D1:GOSUB 9000:N1=N +1220 X1=-D2:GOSUB 9000:N2=N +1230 W=-ST*N1+EX*EXP(-IN*TI)*N2 +1240 GOTO 1500 +1500 CLS:PRINT F$(1) +1510 PRINT:PRINT USING F$(2);ST,EX,IN,TM,VL,W,N1 +1520 PRINT:INPUT"PRESS ENTER FOR MORE";Z9 +1530 IF Z9 = -1 THEN END +1540 CLS:GOTO 1000 +1600 GOTO 1000 +9000 ' PI=3.141592654 +9005 X = ABS(X1) +9015 Z = 1/SQR(2*PI)*EXP(-X[2/2) +9020 B1=.319381530 :B2=-.356563782:B3=1.781477937 +9025 B4= -1.821255978:B5=1.330274429:P=.2316419 +9030 T=1/(1+P*X) +9040 Q=Z*(B1*T+B2*T[2+B3*T[3+B4*T[4+B5*T[5) +9050 IF X1>0 THEN N=1-Q ELSE N=Q +9060 RETURN +30000 REM FORMAT VARIABLES +30010 F$(1)="ST.PR. EX.PR. INT.RT. D.T.EXP. VOL. VALUE HEDGE" +30020 F$(2)="###.## ###.## ###.## ### ##.## ###.## ##.##" +30030 RETURN diff --git a/BP100/BLACKSH.INP b/BP100/BLACKSH.INP new file mode 100644 index 0000000..220c19c --- /dev/null +++ b/BP100/BLACKSH.INP @@ -0,0 +1,4 @@ + +12.34,45.67,5,39,7 +P +-1 diff --git a/BP100/BLACKSH.OUT b/BP100/BLACKSH.OUT new file mode 100644 index 0000000..975151d --- /dev/null +++ b/BP100/BLACKSH.OUT @@ -0,0 +1,17 @@ +THIS PROGRAM WILL GIVE THE VALUE OF A CALL OPTION VIA THE +BLACK SCHOLES OPTION VALUATION FORMULA. NECESSARY INPUT +CONSISTS OF PRESENT STOCK PRICE, EXERCISE PRICE OF THE +OPTION,INTEREST RATE,# OF DAYS TO EXPIRATION OF THE OPTION +AND STOCK VOLATILITY. OUTPUT IS THE VALUE OF THE OPTION +AND THE HEDGE RATIO. + +PRESS ENTER TO CONTINUE? +STOCK PRICE,EXERCISE PR.,INT.RATE(%),DAYS TO EXP,VOLATILITY(%) +? 12.34,45.67,5,39,7 + +ARE OPTIONS PUTS(P) OR CALLS(C)? P +ST.PR. EX.PR. INT.RT. D.T.EXP. VOL. VALUE HEDGE + + 12.34 45.67 0.05 39 0.07 33.09 1.00 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/BLACKSH.dif b/BP100/BLACKSH.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/BLACKSH.run b/BP100/BLACKSH.run new file mode 100644 index 0000000..bf5c75d --- /dev/null +++ b/BP100/BLACKSH.run @@ -0,0 +1,17 @@ +THIS PROGRAM WILL GIVE THE VALUE OF A CALL OPTION VIA THE +BLACK SCHOLES OPTION VALUATION FORMULA. NECESSARY INPUT +CONSISTS OF PRESENT STOCK PRICE, EXERCISE PRICE OF THE +OPTION,INTEREST RATE,# OF DAYS TO EXPIRATION OF THE OPTION +AND STOCK VOLATILITY. OUTPUT IS THE VALUE OF THE OPTION +AND THE HEDGE RATIO. + +PRESS ENTER TO CONTINUE? +STOCK PRICE,EXERCISE PR.,INT.RATE(%),DAYS TO EXP,VOLATILITY(%) +? 12.34,45.67,5,39,7 + +ARE OPTIONS PUTS(P) OR CALLS(C)? P +ST.PR. EX.PR. INT.RT. D.T.EXP. VOL. VALUE HEDGE + + 12.34 45.67 0.05 39 0.07 33.09 1.00 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/BONDVAL.80 b/BP100/BONDVAL.80 new file mode 100644 index 0000000..e31c00b --- /dev/null +++ b/BP100/BONDVAL.80 @@ -0,0 +1,48 @@ + BONDS + +WHEN CONSIDERING THE VALUE OF BONDS ITEMS WHICH SHOULD +BE CONSIDERED INCLUDE YIELD TO MATURITY,TIME TO MATURITY +MATURITY VALUE, CURRENT VALUE, AND COUPON INTEREST RATE. +GIVEN ANY FOUR OF THE ABOVE THIS PROGRAM WILL COMPUTE THE +FIFTH. IN ADDITION,IF DESIRED INCOME TAXES,CAPITAL GAINS +TAXES AND COMMISSIONS MAY BE CONSIDERED. + +PRESS ENTER TO BEGIN? +INPUT THE FOLLOWING AMOUNTS.PRESS ENTER WHEN AN +ITEM WILL BE COMPUTED. INPUT 0 IF AN ITEM IS +NOT TO BE CONSIDERED.POSSIBLE FIELDS FOR +NONCONSIDERATION ARE COMMISSION, CAPITAL GAINS +AND INCOME TAX RATES. + +PURCHASE PRICE PER BOND ? 975 +COMMISSION PER BOND ? 5.25 +MATURITY VALUE ? 1000 +NUMBER OF INTEREST PAYMENTS PER YEAR ? 4 +NUMBER OF PAYMENT PERIODS TO MATURITY ? +ANNUAL COUPON INTEREST RATE(%) ? 7.75 +ANNUAL YIELD TO MATURITY ? +CAPITAL GAINS TAX RATE ? 28 +INCOME TAX RATE ? 35 +ENTER THE NUMBER OF THE VARIABLE TO BE COMPUTED + +1.CURRENT PRICE PLUS COMMISSION +2.MATURITY VALUE OF THE BOND +3.COUPON INTEREST RATE +4.YIELD TO MATURITY OF THE BOND +5.LENGTH OF TIME TO MATURITY + +MAKE CHOICE? 2 +*** WARNING: Divide by 0 *** + + + +1.CURRENT PRICE PLUS COMMISSION : 980.25 +2.MATURITY VALUE OF THE BOND : 3.92603E-306 +3.ANNUAL COUPON INTEREST RATE : 7.75 +4.ANNUAL YIELD TO MATURITY OF BOND : 0 +5.LENGTH OF TIME TO MATURITY(PERIODS) : 0 +6.INCOME TAX RATE : 35 +7.CAPITAL GAINS TAX RATE : 28. +8.NUMBER OF INTEREST PAYMENTS PER YEAR : 4 + +PRESS ENTER FOR MORE COMPUTATION ? -1 diff --git a/BP100/BONDVAL.BAS b/BP100/BONDVAL.BAS new file mode 100644 index 0000000..3145776 --- /dev/null +++ b/BP100/BONDVAL.BAS @@ -0,0 +1,95 @@ +10 CLS +20 PRINT" BONDS":PRINT +30 PRINT"WHEN CONSIDERING THE VALUE OF BONDS ITEMS WHICH SHOULD +40 PRINT"BE CONSIDERED INCLUDE YIELD TO MATURITY,TIME TO MATURITY +50 PRINT"MATURITY VALUE, CURRENT VALUE, AND COUPON INTEREST RATE. +60 PRINT"GIVEN ANY FOUR OF THE ABOVE THIS PROGRAM WILL COMPUTE THE +70 PRINT"FIFTH. IN ADDITION,IF DESIRED INCOME TAXES,CAPITAL GAINS +80 PRINT"TAXES AND COMMISSIONS MAY BE CONSIDERED.":PRINT +90 INPUT"PRESS ENTER TO BEGIN";Z9 +1000 REM DATA INPUT +1010 CLS:GOSUB 6000 +1020 CLS +1030 PRINT"ENTER THE NUMBER OF THE VARIABLE TO BE COMPUTED " +1035 PRINT +1040 PRINT"1.CURRENT PRICE PLUS COMMISSION +1050 PRINT"2.MATURITY VALUE OF THE BOND +1060 PRINT"3.COUPON INTEREST RATE +1070 PRINT"4.YIELD TO MATURITY OF THE BOND +1080 PRINT"5.LENGTH OF TIME TO MATURITY +1100 PRINT:INPUT"MAKE CHOICE";CC +1110 ON CC GOSUB 1200,1300,1400,1500,1600 +1120 IF CC<1 OR CC>5 OR CC<>INT(CC) THEN GOSUB 10000:GOTO 1000 +1130 CLS:GOSUB 6500:REM PRINTOUT +1199 GOTO 1000 +1200 REM CURRENT PRICE PLUS COMMISSION +1210 T1=((1+I)[J-(1+I)[(-N))/I:T2=C*MAT*(1-TAX)*T1 +1220 T3=MAT*(1-CGT)/(1+I)[N-J*C*MAT*(1-TAX) +1230 B1=(T2+T3)/(1-CGT/(1+I)[N) +1240 RETURN +1300 REM MATURITY VALUE OF BOND +1310 T1=C*(1-TAX)*((1+I)[J-(1+I)[(-N))/I +1320 T2=(1-CGT)/(1+I)[N:T3=J*C*(1-TAX) +1330 T4=(BUY+CBUY)*(1-CGT/(1+I)[N) +1340 MAT=T4/(T1+T2-T3) +1350 B1=BUY+CBUY +1360 RETURN +1400 REM COUPON INTEREST RATE +1410 T1=((1+I)[J-(1+I)[(-N))/I:T2=T1*MAT*(1-TAX) +1420 T3=(MAT-(MAT-(BUY+CBUY))*CGT)/(1+I)[N:T4=J*MAT*(1-TAX) +1430 C=(BUY+CBUY-T3)/(T2-T4) +1440 RETURN +1500 REM YIELD TO MATURITY +1505 I=.1 +1510 T1=BUY+CBUY+J*C*MAT*(1-TAX) +1520 T2=C*MAT*(1-TAX):T3=((1+I)[J-(1+I)[(-N))/I +1525 T4=MAT-(MAT-(BUY+CBUY))*CGT:T5=(1+I)[(-N) +1530 F=T1-T2*T3-T4*T5 +1535 IF ABS(F)<.2 THEN RETURN +1538 T6=I*((J*(1+I)[(J-1)+N*(1+I)[(-N-1)))-(1+I)[J+(1+I)[(-N) +1540 T7=T6/I[2:T8=-N*(1+I)[(-N-1) +1545 D=-T2*T7-T4*T8 +1550 I=I-F/D:GOTO 1510 +1600 REM LENGTH OF TIME TO MATURITY +1610 T1=BUY+CBUY+J*C*MAT*(1-TAX):T2=C*MAT*(1-TAX)*(1+I)[J/I +1620 T3=T1-T2:REM T3=NUMERATOR +1630 T4=(MAT-(MAT-(BUY+CBUY))*CGT) +1635 T8=T2/(1+I)[J +1640 T5=T3/(T4-T8):T6=LOG(T5)/LOG(1+I):T7=-T6 +1650 N=T7 +1660 RETURN +6000 REM DATA INPUT SUBROUTINE +6002 CLS:PRINT"INPUT THE FOLLOWING AMOUNTS.PRESS ENTER WHEN AN +6004 PRINT"ITEM WILL BE COMPUTED. INPUT 0 IF AN ITEM IS +6006 PRINT"NOT TO BE CONSIDERED.POSSIBLE FIELDS FOR +6008 PRINT"NONCONSIDERATION ARE COMMISSION, CAPITAL GAINS +6009 PRINT"AND INCOME TAX RATES.":PRINT +6010 INPUT"PURCHASE PRICE PER BOND ";BUY +6020 INPUT"COMMISSION PER BOND ";CBUY +6030 INPUT"MATURITY VALUE ";MAT +6035 INPUT"NUMBER OF INTEREST PAYMENTS PER YEAR ";N1 +6040 INPUT"NUMBER OF PAYMENT PERIODS TO MATURITY ";N +6050 INPUT"ANNUAL COUPON INTEREST RATE(%) ";C +6060 INPUT"ANNUAL YIELD TO MATURITY ";I +6070 INPUT"CAPITAL GAINS TAX RATE ";CGT +6080 INPUT"INCOME TAX RATE ";TAX +6090 J=1-(N-INT(N)):C=C/100:I=I/100:CGT=CGT/100:TAX=TAX/100 +6092 C=C/N1 +6099 RETURN +6500 REM PRINTOUT +6505 C=100*C:I=100*I:CGT=100*CGT:TAX=100*TAX +6506 C=C*N1 +6510 CLS:PRINT:PRINT:PRINT +6520 PRINT"1.CURRENT PRICE PLUS COMMISSION :";B1 +6530 PRINT"2.MATURITY VALUE OF THE BOND :";MAT +6540 PRINT"3.ANNUAL COUPON INTEREST RATE :";C +6550 PRINT"4.ANNUAL YIELD TO MATURITY OF BOND :";I*N1 +6560 PRINT"5.LENGTH OF TIME TO MATURITY(PERIODS) :";N +6570 PRINT"6.INCOME TAX RATE :";TAX +6580 PRINT"7.CAPITAL GAINS TAX RATE :";CGT +6585 PRINT"8.NUMBER OF INTEREST PAYMENTS PER YEAR :";N1 +6590 PRINT:INPUT"PRESS ENTER FOR MORE COMPUTATION ";Z9 +6595 IF Z9 = -1 THEN END +6599 RETURN +10000 PRINT"INPUT ERROR! TRY AGAIN!":FOR JJ=1 TO 300:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9:RETURN diff --git a/BP100/BONDVAL.INP b/BP100/BONDVAL.INP new file mode 100644 index 0000000..efb9090 --- /dev/null +++ b/BP100/BONDVAL.INP @@ -0,0 +1,13 @@ + +975 +5.25 +1000 +4 + +7.75 + +28 +35 +2 +-1 + diff --git a/BP100/BONDVAL.OUT b/BP100/BONDVAL.OUT new file mode 100644 index 0000000..8a9bba2 --- /dev/null +++ b/BP100/BONDVAL.OUT @@ -0,0 +1,48 @@ + BONDS + +WHEN CONSIDERING THE VALUE OF BONDS ITEMS WHICH SHOULD +BE CONSIDERED INCLUDE YIELD TO MATURITY,TIME TO MATURITY +MATURITY VALUE, CURRENT VALUE, AND COUPON INTEREST RATE. +GIVEN ANY FOUR OF THE ABOVE THIS PROGRAM WILL COMPUTE THE +FIFTH. IN ADDITION,IF DESIRED INCOME TAXES,CAPITAL GAINS +TAXES AND COMMISSIONS MAY BE CONSIDERED. + +PRESS ENTER TO BEGIN? +INPUT THE FOLLOWING AMOUNTS.PRESS ENTER WHEN AN +ITEM WILL BE COMPUTED. INPUT 0 IF AN ITEM IS +NOT TO BE CONSIDERED.POSSIBLE FIELDS FOR +NONCONSIDERATION ARE COMMISSION, CAPITAL GAINS +AND INCOME TAX RATES. + +PURCHASE PRICE PER BOND ? 975 +COMMISSION PER BOND ? 5.25 +MATURITY VALUE ? 1000 +NUMBER OF INTEREST PAYMENTS PER YEAR ? 4 +NUMBER OF PAYMENT PERIODS TO MATURITY ? +ANNUAL COUPON INTEREST RATE(%) ? 7.75 +ANNUAL YIELD TO MATURITY ? +CAPITAL GAINS TAX RATE ? 28 +INCOME TAX RATE ? 35 +ENTER THE NUMBER OF THE VARIABLE TO BE COMPUTED + +1.CURRENT PRICE PLUS COMMISSION +2.MATURITY VALUE OF THE BOND +3.COUPON INTEREST RATE +4.YIELD TO MATURITY OF THE BOND +5.LENGTH OF TIME TO MATURITY + +MAKE CHOICE? 2 +*** WARNING: Divide by 0 *** + + + +1.CURRENT PRICE PLUS COMMISSION : 980.25 +2.MATURITY VALUE OF THE BOND : 3.92603E-306 +3.ANNUAL COUPON INTEREST RATE : 7.75 +4.ANNUAL YIELD TO MATURITY OF BOND : 0 +5.LENGTH OF TIME TO MATURITY(PERIODS) : 0 +6.INCOME TAX RATE : 35 +7.CAPITAL GAINS TAX RATE : 28. +8.NUMBER OF INTEREST PAYMENTS PER YEAR : 4 + +PRESS ENTER FOR MORE COMPUTATION ? -1 diff --git a/BP100/BONDVAL.dif b/BP100/BONDVAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/BONDVAL.run b/BP100/BONDVAL.run new file mode 100644 index 0000000..e31c00b --- /dev/null +++ b/BP100/BONDVAL.run @@ -0,0 +1,48 @@ + BONDS + +WHEN CONSIDERING THE VALUE OF BONDS ITEMS WHICH SHOULD +BE CONSIDERED INCLUDE YIELD TO MATURITY,TIME TO MATURITY +MATURITY VALUE, CURRENT VALUE, AND COUPON INTEREST RATE. +GIVEN ANY FOUR OF THE ABOVE THIS PROGRAM WILL COMPUTE THE +FIFTH. IN ADDITION,IF DESIRED INCOME TAXES,CAPITAL GAINS +TAXES AND COMMISSIONS MAY BE CONSIDERED. + +PRESS ENTER TO BEGIN? +INPUT THE FOLLOWING AMOUNTS.PRESS ENTER WHEN AN +ITEM WILL BE COMPUTED. INPUT 0 IF AN ITEM IS +NOT TO BE CONSIDERED.POSSIBLE FIELDS FOR +NONCONSIDERATION ARE COMMISSION, CAPITAL GAINS +AND INCOME TAX RATES. + +PURCHASE PRICE PER BOND ? 975 +COMMISSION PER BOND ? 5.25 +MATURITY VALUE ? 1000 +NUMBER OF INTEREST PAYMENTS PER YEAR ? 4 +NUMBER OF PAYMENT PERIODS TO MATURITY ? +ANNUAL COUPON INTEREST RATE(%) ? 7.75 +ANNUAL YIELD TO MATURITY ? +CAPITAL GAINS TAX RATE ? 28 +INCOME TAX RATE ? 35 +ENTER THE NUMBER OF THE VARIABLE TO BE COMPUTED + +1.CURRENT PRICE PLUS COMMISSION +2.MATURITY VALUE OF THE BOND +3.COUPON INTEREST RATE +4.YIELD TO MATURITY OF THE BOND +5.LENGTH OF TIME TO MATURITY + +MAKE CHOICE? 2 +*** WARNING: Divide by 0 *** + + + +1.CURRENT PRICE PLUS COMMISSION : 980.25 +2.MATURITY VALUE OF THE BOND : 3.92603E-306 +3.ANNUAL COUPON INTEREST RATE : 7.75 +4.ANNUAL YIELD TO MATURITY OF BOND : 0 +5.LENGTH OF TIME TO MATURITY(PERIODS) : 0 +6.INCOME TAX RATE : 35 +7.CAPITAL GAINS TAX RATE : 28. +8.NUMBER OF INTEREST PAYMENTS PER YEAR : 4 + +PRESS ENTER FOR MORE COMPUTATION ? -1 diff --git a/BP100/BONDVAL2.80 b/BP100/BONDVAL2.80 new file mode 100644 index 0000000..fb31500 --- /dev/null +++ b/BP100/BONDVAL2.80 @@ -0,0 +1,34 @@ + VALUE OF A BOND + +THIS PROGRAM SHOWS HOW THE VALUE OF A BOND MAY CHANGE +WHEN THE INTEREST RATE CHANGES. WE ASSUME WE HAVE A BOND WITH +A FIXED NUMBER OF YEARS TO MATURITY. FOR VARIOUS INTEREST +RATES THE PRESENT VALUE OF THE FUTURE CASHFLOWS FROM THE +BOND ARE DETERMINED. IT IS VERY INTERESTING TO SEE HOW MUCH +THIS VARIES FOR LONG TERM BONDS. + +PRESS ENTER TO BEGIN? +NUMBER OF YEARS TO MATURITY ? 10 +COUPON INTEREST PAYMENT PER YEAR ? 40 +MATURITY VALUE OF THE BOND ? 1000 +LOWEST INTEREST RATE TO CONSIDER(%) ? 1 +HIGHEST INTEREST RATE TO CONSIDER(%)? 20 +DO YOU DESIRE LINE PRINTER OUTPUT(Y/N)? Y +PRESENT VALUE OF BOND AT VARYING INTEREST RATES + + 10 YEARS TO MATURITY. +COUPON PAYS $ 40 PER YEAR FOR INTEREST. +MATURITY VALUE FOR THE BOND IS 1000 +INTEREST RATE VALUE OF BOND + 1.0 1284.14 + 2.9 1094.31 + 4.8 937.62 + 6.7 807.71 + 8.6 699.52 + 10.5 609.04 + 12.4 533.05 + 14.3 468.97 + 16.2 414.71 + 18.1 368.58 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/BONDVAL2.BAS b/BP100/BONDVAL2.BAS new file mode 100644 index 0000000..32c6701 --- /dev/null +++ b/BP100/BONDVAL2.BAS @@ -0,0 +1,40 @@ +1 REM BONDVAL2 +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"VALUE OF A BOND":PRINT +20 PRINT"THIS PROGRAM SHOWS HOW THE VALUE OF A BOND MAY CHANGE +25 PRINT"WHEN THE INTEREST RATE CHANGES. WE ASSUME WE HAVE A BOND WITH +30 PRINT"A FIXED NUMBER OF YEARS TO MATURITY. FOR VARIOUS INTEREST +35 PRINT"RATES THE PRESENT VALUE OF THE FUTURE CASHFLOWS FROM THE +40 PRINT"BOND ARE DETERMINED. IT IS VERY INTERESTING TO SEE HOW MUCH +45 PRINT"THIS VARIES FOR LONG TERM BONDS. +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +95 DIM A(15),I(15) +100 CLS +110 INPUT "NUMBER OF YEARS TO MATURITY ";N +120 INPUT "COUPON INTEREST PAYMENT PER YEAR ";C +130 INPUT "MATURITY VALUE OF THE BOND ";M +140 INPUT"LOWEST INTEREST RATE TO CONSIDER(%) ";L:L=L/100 +150 INPUT"HIGHEST INTEREST RATE TO CONSIDER(%)";H:H=H/100 +195 REM COMPUTING PV +197 K=0 +200 FOR I=L TO H STEP (H-L)/10 +205 K=K+1 +210 I(K)=I:A(K)=C*(1-(1+I)[(-N))/I + M*(1+I)[(-N) +220 NEXT I +225 INPUT"DO YOU DESIRE LINE PRINTER OUTPUT(Y/N)";Z2$ +230 CLS:PRINT"PRESENT VALUE OF BOND AT VARYING INTEREST RATES":PRINT +240 PRINT N;"YEARS TO MATURITY." +250 PRINT"COUPON PAYS $";C;" PER YEAR FOR INTEREST. +260 PRINT"MATURITY VALUE FOR THE BOND IS";M +262 IF Z2$="N" THEN GOTO 270 +265 LPRINT N;"YEARS TO MATURITY." +266 LPRINT"COUPON PAYS $";C;" PER YEAR FOR INTEREST. +267 LPRINT"MATURITY VALUE FOR THE BOND IS";M +270 F$(1)= "INTEREST RATE VALUE OF BOND" +280 F$(2)= " ###.# ######.## +290 PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1):LPRINT" " +300 FOR K=1 TO 10:PRINT USING F$(2);100*I(K),A(K):NEXT +310 IF Z2$="Y" THEN FOR K=1 TO 10:LPRINT USING F$(2);100*I(K),A(K):NEXT +320 PRINT:INPUT"PRESS ENTER FOR MORE COMPUTATION";Z9$ +325 IF Z9$ = "-1" THEN END +330 GOTO 100 diff --git a/BP100/BONDVAL2.INP b/BP100/BONDVAL2.INP new file mode 100644 index 0000000..c07ad09 --- /dev/null +++ b/BP100/BONDVAL2.INP @@ -0,0 +1,8 @@ + +10 +40 +1000 +1 +20 +Y +-1 diff --git a/BP100/BONDVAL2.OUT b/BP100/BONDVAL2.OUT new file mode 100644 index 0000000..5e23bee --- /dev/null +++ b/BP100/BONDVAL2.OUT @@ -0,0 +1,34 @@ + VALUE OF A BOND + +THIS PROGRAM SHOWS HOW THE VALUE OF A BOND MAY CHANGE +WHEN THE INTEREST RATE CHANGES. WE ASSUME WE HAVE A BOND WITH +A FIXED NUMBER OF YEARS TO MATURITY. FOR VARIOUS INTEREST +RATES THE PRESENT VALUE OF THE FUTURE CASHFLOWS FROM THE +BOND ARE DETERMINED. IT IS VERY INTERESTING TO SEE HOW MUCH +THIS VARIES FOR LONG TERM BONDS. + +PRESS ENTER TO BEGIN? +NUMBER OF YEARS TO MATURITY ? 10 +COUPON INTEREST PAYMENT PER YEAR ? 40 +MATURITY VALUE OF THE BOND ? 1000 +LOWEST INTEREST RATE TO CONSIDER(%) ? 1 +HIGHEST INTEREST RATE TO CONSIDER(%)? 20 +DO YOU DESIRE LINE PRINTER OUTPUT(Y/N)? Y +PRESENT VALUE OF BOND AT VARYING INTEREST RATES + + 10 YEARS TO MATURITY. +COUPON PAYS $ 40 PER YEAR FOR INTEREST. +MATURITY VALUE FOR THE BOND IS 1000 +INTEREST RATE VALUE OF BOND + 1.0 1284.14 + 2.9 1094.31 + 4.8 937.62 + 6.7 807.71 + 8.6 699.52 + 10.5 609.04 + 12.4 533.05 + 14.3 468.97 + 16.2 414.71 + 18.1 368.58 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/BONDVAL2.dif b/BP100/BONDVAL2.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/BONDVAL2.run b/BP100/BONDVAL2.run new file mode 100644 index 0000000..fb31500 --- /dev/null +++ b/BP100/BONDVAL2.run @@ -0,0 +1,34 @@ + VALUE OF A BOND + +THIS PROGRAM SHOWS HOW THE VALUE OF A BOND MAY CHANGE +WHEN THE INTEREST RATE CHANGES. WE ASSUME WE HAVE A BOND WITH +A FIXED NUMBER OF YEARS TO MATURITY. FOR VARIOUS INTEREST +RATES THE PRESENT VALUE OF THE FUTURE CASHFLOWS FROM THE +BOND ARE DETERMINED. IT IS VERY INTERESTING TO SEE HOW MUCH +THIS VARIES FOR LONG TERM BONDS. + +PRESS ENTER TO BEGIN? +NUMBER OF YEARS TO MATURITY ? 10 +COUPON INTEREST PAYMENT PER YEAR ? 40 +MATURITY VALUE OF THE BOND ? 1000 +LOWEST INTEREST RATE TO CONSIDER(%) ? 1 +HIGHEST INTEREST RATE TO CONSIDER(%)? 20 +DO YOU DESIRE LINE PRINTER OUTPUT(Y/N)? Y +PRESENT VALUE OF BOND AT VARYING INTEREST RATES + + 10 YEARS TO MATURITY. +COUPON PAYS $ 40 PER YEAR FOR INTEREST. +MATURITY VALUE FOR THE BOND IS 1000 +INTEREST RATE VALUE OF BOND + 1.0 1284.14 + 2.9 1094.31 + 4.8 937.62 + 6.7 807.71 + 8.6 699.52 + 10.5 609.04 + 12.4 533.05 + 14.3 468.97 + 16.2 414.71 + 18.1 368.58 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/BREAKEVN.80 b/BP100/BREAKEVN.80 new file mode 100644 index 0000000..04620e3 --- /dev/null +++ b/BP100/BREAKEVN.80 @@ -0,0 +1,25 @@ + BREAK-EVEN ANALYSIS + +FOR THIS PROGRAM,WE ASSUME THAT A COMPANY HAS CERTAIN +FIXED COSTS. tHIS COMPANY IS SELLING AN ITEM SUCH THAT +VARIABLE COST/UNIT SOLD OF THAT ITEM IS KNOWN. wE ALSO +KNOW THE PRICE AT WHICH THE ITEM IS SOLD. gIVEN THIS +INFORMATION WE CAN COMPUTE THE NUMBER OF UNITS OF THE +ITEM WHICH THE COMPANY MUST SELL TO JUST BREAK EVEN, +I.E. SO THAT THE NET SALE REVENUE JUST COVERS FIXED +COSTS. WE CAN ALSO COMPUTE THE NUMBER OF ITEMS THE +COMPANY MUST SELL TO MAKE ANY GIVEN PROFIT. THIS +PROGRAM WILL DO BOTH TYPES OF COMPUTATIONS. +PRESS ENTER TO BEGIN? +INPUT TOTAL FIXED COSTS IN DOLLARS ? 123000 +INPUT UNIT SELLING PRICE IN DOLLARS? 19.99 +INPUT VARIABLE COST PER UNIT IN DOLLARS ? 1.25 + +BREAK EVEN POINT = 6563.5 UNITS. + +TO LOOK FOR GIVEN PROFIT POINT INPUT 1 +TO DO ANOTHER BREAK EVEN ANALYSIS INPUT 2 +? 1 +WHAT PROFIT DO YOU DESIRE? 100000 +SALES NEEDED FOR PROFIT 100000 EQUALS 11899.7 UNITS. +INPUT 1 FOR ANOTHER BREAKEVEN ANALYSIS? -1 diff --git a/BP100/BREAKEVN.BAS b/BP100/BREAKEVN.BAS new file mode 100644 index 0000000..d4fc4be --- /dev/null +++ b/BP100/BREAKEVN.BAS @@ -0,0 +1,31 @@ +5 CLS +10 PRINT" BREAK-EVEN ANALYSIS +20 PRINT +30 PRINT"FOR THIS PROGRAM,WE ASSUME THAT A COMPANY HAS CERTAIN +35 PRINT"FIXED COSTS. tHIS COMPANY IS SELLING AN ITEM SUCH THAT +40 PRINT"VARIABLE COST/UNIT SOLD OF THAT ITEM IS KNOWN. wE ALSO +50 PRINT"KNOW THE PRICE AT WHICH THE ITEM IS SOLD. gIVEN THIS +55 PRINT"INFORMATION WE CAN COMPUTE THE NUMBER OF UNITS OF THE +60 PRINT"ITEM WHICH THE COMPANY MUST SELL TO JUST BREAK EVEN, +65 PRINT"I.E. SO THAT THE NET SALE REVENUE JUST COVERS FIXED +70 PRINT"COSTS. WE CAN ALSO COMPUTE THE NUMBER OF ITEMS THE +75 PRINT"COMPANY MUST SELL TO MAKE ANY GIVEN PROFIT. THIS +80 PRINT"PROGRAM WILL DO BOTH TYPES OF COMPUTATIONS. +90 INPUT"PRESS ENTER TO BEGIN";Z9 +100 CLS +110 INPUT"INPUT TOTAL FIXED COSTS IN DOLLARS ";FC +120 INPUT"INPUT UNIT SELLING PRICE IN DOLLARS";SP +130 INPUT"INPUT VARIABLE COST PER UNIT IN DOLLARS ";VC +140 BE=FC/(SP-VC) +150 PRINT:PRINT "BREAK EVEN POINT = ";BE;" UNITS. +160 PRINT +170 PRINT"TO LOOK FOR GIVEN PROFIT POINT INPUT 1 +175 PRINT"TO DO ANOTHER BREAK EVEN ANALYSIS INPUT 2 +180 INPUT Z8:IF Z8=2 THEN GOTO 100 +190 IF Z8=1 THEN GOTO 250 +200 PRINT"INPUT ERROR,TRY AGAIN.":FOR I=1 TO 300:NEXT I:GOTO 160 +250 PRINT"WHAT PROFIT DO YOU DESIRE";:INPUT P +260 BE=(FC+P)/(SP-VC) +270 PRINT"SALES NEEDED FOR PROFIT ";P;" EQUALS ";BE;" UNITS." +280 INPUT"INPUT 1 FOR ANOTHER BREAKEVEN ANALYSIS";Z9 +290 IF Z9=1 THEN GOTO 100 diff --git a/BP100/BREAKEVN.INP b/BP100/BREAKEVN.INP new file mode 100644 index 0000000..cce9fc2 --- /dev/null +++ b/BP100/BREAKEVN.INP @@ -0,0 +1,7 @@ + +123000 +19.99 +1.25 +1 +100000 +-1 diff --git a/BP100/BREAKEVN.OUT b/BP100/BREAKEVN.OUT new file mode 100644 index 0000000..9bf3734 --- /dev/null +++ b/BP100/BREAKEVN.OUT @@ -0,0 +1,25 @@ + BREAK-EVEN ANALYSIS + +FOR THIS PROGRAM,WE ASSUME THAT A COMPANY HAS CERTAIN +FIXED COSTS. tHIS COMPANY IS SELLING AN ITEM SUCH THAT +VARIABLE COST/UNIT SOLD OF THAT ITEM IS KNOWN. wE ALSO +KNOW THE PRICE AT WHICH THE ITEM IS SOLD. gIVEN THIS +INFORMATION WE CAN COMPUTE THE NUMBER OF UNITS OF THE +ITEM WHICH THE COMPANY MUST SELL TO JUST BREAK EVEN, +I.E. SO THAT THE NET SALE REVENUE JUST COVERS FIXED +COSTS. WE CAN ALSO COMPUTE THE NUMBER OF ITEMS THE +COMPANY MUST SELL TO MAKE ANY GIVEN PROFIT. THIS +PROGRAM WILL DO BOTH TYPES OF COMPUTATIONS. +PRESS ENTER TO BEGIN? +INPUT TOTAL FIXED COSTS IN DOLLARS ? 123000 +INPUT UNIT SELLING PRICE IN DOLLARS? 19.99 +INPUT VARIABLE COST PER UNIT IN DOLLARS ? 1.25 + +BREAK EVEN POINT = 6563.5 UNITS. + +TO LOOK FOR GIVEN PROFIT POINT INPUT 1 +TO DO ANOTHER BREAK EVEN ANALYSIS INPUT 2 +? 1 +WHAT PROFIT DO YOU DESIRE? 100000 +SALES NEEDED FOR PROFIT 100000 EQUALS 11899.7 UNITS. +INPUT 1 FOR ANOTHER BREAKEVEN ANALYSIS? -1 diff --git a/BP100/BREAKEVN.dif b/BP100/BREAKEVN.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/BREAKEVN.run b/BP100/BREAKEVN.run new file mode 100644 index 0000000..04620e3 --- /dev/null +++ b/BP100/BREAKEVN.run @@ -0,0 +1,25 @@ + BREAK-EVEN ANALYSIS + +FOR THIS PROGRAM,WE ASSUME THAT A COMPANY HAS CERTAIN +FIXED COSTS. tHIS COMPANY IS SELLING AN ITEM SUCH THAT +VARIABLE COST/UNIT SOLD OF THAT ITEM IS KNOWN. wE ALSO +KNOW THE PRICE AT WHICH THE ITEM IS SOLD. gIVEN THIS +INFORMATION WE CAN COMPUTE THE NUMBER OF UNITS OF THE +ITEM WHICH THE COMPANY MUST SELL TO JUST BREAK EVEN, +I.E. SO THAT THE NET SALE REVENUE JUST COVERS FIXED +COSTS. WE CAN ALSO COMPUTE THE NUMBER OF ITEMS THE +COMPANY MUST SELL TO MAKE ANY GIVEN PROFIT. THIS +PROGRAM WILL DO BOTH TYPES OF COMPUTATIONS. +PRESS ENTER TO BEGIN? +INPUT TOTAL FIXED COSTS IN DOLLARS ? 123000 +INPUT UNIT SELLING PRICE IN DOLLARS? 19.99 +INPUT VARIABLE COST PER UNIT IN DOLLARS ? 1.25 + +BREAK EVEN POINT = 6563.5 UNITS. + +TO LOOK FOR GIVEN PROFIT POINT INPUT 1 +TO DO ANOTHER BREAK EVEN ANALYSIS INPUT 2 +? 1 +WHAT PROFIT DO YOU DESIRE? 100000 +SALES NEEDED FOR PROFIT 100000 EQUALS 11899.7 UNITS. +INPUT 1 FOR ANOTHER BREAKEVEN ANALYSIS? -1 diff --git a/BP100/BUSBUD.80 b/BP100/BUSBUD.80 new file mode 100644 index 0000000..38e1739 --- /dev/null +++ b/BP100/BUSBUD.80 @@ -0,0 +1,225 @@ + BUSINESS BOOKKEEPING SYSTEM + +THIS BUSINESS BOOKKEEPING AND BUDGET ANALYSIS PROGRAM HAS THE +SAME CATEGORIES AS THE DOME SIMPLIFIED WEEKLY BOOKKEEPING +RECORD #600. THE PROGRAM CAN HANDLE 1 MONTH'S WORTH OF DATA +AT A TIME, BUT NOT TO EXCEED 100 ENTRIES ON A 16K MACHINE. +ON MACHINES WITH GREATER MEMORY IT IS ONLY NECESSARY TO CHANGE +THE MAXX=100 ON LINE 100 TO MAXX=200 FOR 200 ENTRIES, +ETC. TO LEARN THE SYSTEM, USE IT. REMEMBER TO READ A MONTH'S +DATA INTO MEMORY BEFORE USE(UNLESS IT'S A NEW MONTH), AND TO +SAVE THE DATA AFTER USE. OTHERWISE DRASTIC RESULTS MAY OCCUR. +THE BUDGET ANALYSIS WILL COMPARE ACTUAL EXPENDITURES TO +USER INPUT BUDGET AMOUNTS FOR EACH CATEGORY. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 5 +ADD TO FILE ROUTINE + +LAST ITEM SO FAR. + + 0 0 INCOME 0.00 0 + +CLASSIFICATION,AMOUNT,DAY? 1,234.56,7 + +MDSE-MATERIALS $ 234.56 7 +ENTER 1 IF OK,2 IF IN ERROR,3 TO ABORT? 1 + +ANY MORE ADDITIONS TODAY(Y/N)? N + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 4 +DATA OUTPUT TO DISK +ENTER MONTH NUMBER(1-12)? 1 +PREPARE DISKETTE IN DRIVE +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 2 +DISK DATA INPUT + +ENTER MONTH(1-12)? 1 +PREPARE DISKETTE IN DISK DRIVE +PRESS ENTER TO CONTINUE ? +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 8 + + 0 INCOME 0.00 0.00 0.00 + 1 MDSE-MATERIALS 234.56 0.00 234.56 + 2 ACCOUNTING 0.00 0.00 0.00 + 3 ADVERTISING 0.00 0.00 0.00 + 4 AUTO EXP 0.00 0.00 0.00 + 5 CARTONS-ETC. 0.00 0.00 0.00 + 6 CONTRIBUTIONS 0.00 0.00 0.00 + 7 DELIVERY EXP. 0.00 0.00 0.00 + 8 ELECTRICITY 0.00 0.00 0.00 + 9 ENTERTAINMENT 0.00 0.00 0.00 +10 FREIGHT & EXPRE 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +11 HEAT 0.00 0.00 0.00 +12 INSURANCE 0.00 0.00 0.00 +13 INTEREST 0.00 0.00 0.00 +14 LAUNDRY 0.00 0.00 0.00 +15 LEGAL EXP. 0.00 0.00 0.00 +16 LICENSES 0.00 0.00 0.00 +17 MISC. EXP. 0.00 0.00 0.00 +18 OFFICE EXP. 0.00 0.00 0.00 +19 POSTAGE 0.00 0.00 0.00 +20 RENT 0.00 0.00 0.00 +21 REPAIRS 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +22 SHOP EXP. 0.00 0.00 0.00 +23 TAX-SOC.SEC. 0.00 0.00 0.00 +24 TAX-STATE UNEMP 0.00 0.00 0.00 +25 TAX-OTHER 0.00 0.00 0.00 +26 SELLING EXP. 0.00 0.00 0.00 +27 SUPPLIES 0.00 0.00 0.00 +28 TELEPHONE 0.00 0.00 0.00 +29 TRADE DUES-ETC. 0.00 0.00 0.00 +30 TRAVELING EXP. 0.00 0.00 0.00 +31 WAGES & COMM. 0.00 0.00 0.00 +32 WATER 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +33 0.00 0.00 0.00 +34 0.00 0.00 0.00 +35 0.00 0.00 0.00 +36 NOTES PAYABLE 0.00 0.00 0.00 +37 FED. INC. TAX 0.00 0.00 0.00 +38 LOANS PAYABLE 0.00 0.00 0.00 +39 LOANS RECEIV. 0.00 0.00 0.00 +40 PERSONAL 0.00 0.00 0.00 +41 FIXED ASSETS 0.00 0.00 0.00 +42 0.00 0.00 0.00 + +PRESS ENTER FOR TOTALS? + + 0 TOTAL INCOME 0.00 0.00 0.00 + 0 DEDUCT.EXP. 234.56 0.00 234.56 + 0 NON DED EXP. 0.00 0.00 0.00 + 0 NET CASH FLOW -234.56 0.00 -234.56 + +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 7 + MENU + +1.REVIEW OF ALL CATEGORIES +2.CHANGE BUDGET AMOUNTS FOR MONTH +3.RETURN TO MAIN MENU + +MAKE CHOICE? 1 + 0 INCOME 1 MDSE-MATERIALS + 2 ACCOUNTING 3 ADVERTISING + 4 AUTO EXP 5 CARTONS-ETC. + 6 CONTRIBUTIONS 7 DELIVERY EXP. + 8 ELECTRICITY 9 ENTERTAINMENT +10 FREIGHT & EXPRESS 11 HEAT +12 INSURANCE 13 INTEREST +14 LAUNDRY 15 LEGAL EXP. +16 LICENSES 17 MISC. EXP. +18 OFFICE EXP. 19 POSTAGE +20 RENT 21 REPAIRS +22 SHOP EXP. 23 TAX-SOC.SEC. + +PRESS ENTER TO CONTINUE ? 1 +24 TAX-STATE UNEMP. 25 TAX-OTHER +26 SELLING EXP. 27 SUPPLIES +28 TELEPHONE 29 TRADE DUES-ETC. +30 TRAVELING EXP. 31 WAGES & COMM. +32 WATER 33 +34 35 +36 NOTES PAYABLE 37 FED. INC. TAX +38 LOANS PAYABLE 39 LOANS RECEIV. +40 PERSONAL 41 FIXED ASSETS +42 43 + +CATEGORIES 1-35 DEDUCTABLES EXPENSES +CATEGORIES 36-42 NONDEDUCTABLE EXPENSES + +PRESS ENTER TO CONTINUE ? + MENU + +1.REVIEW OF ALL CATEGORIES +2.CHANGE BUDGET AMOUNTS FOR MONTH +3.RETURN TO MAIN MENU + +MAKE CHOICE? 3 + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 10 +ARE YOU SURE(Y/N)? Y diff --git a/BP100/BUSBUD.BAS b/BP100/BUSBUD.BAS new file mode 100644 index 0000000..50a5a5a --- /dev/null +++ b/BP100/BUSBUD.BAS @@ -0,0 +1,263 @@ +1 REM BUSBUD +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"BUSINESS BOOKKEEPING SYSTEM":PRINT +20 PRINT"THIS BUSINESS BOOKKEEPING AND BUDGET ANALYSIS PROGRAM HAS THE +25 PRINT"SAME CATEGORIES AS THE DOME SIMPLIFIED WEEKLY BOOKKEEPING +30 PRINT"RECORD #600. THE PROGRAM CAN HANDLE 1 MONTH'S WORTH OF DATA +35 PRINT"AT A TIME, BUT NOT TO EXCEED 100 ENTRIES ON A 16K MACHINE. +40 PRINT"ON MACHINES WITH GREATER MEMORY IT IS ONLY NECESSARY TO CHANGE +45 PRINT"THE MAXX=100 ON LINE 100 TO MAXX=200 FOR 200 ENTRIES, +50 PRINT"ETC. TO LEARN THE SYSTEM, USE IT. REMEMBER TO READ A MONTH'S +55 PRINT"DATA INTO MEMORY BEFORE USE(UNLESS IT'S A NEW MONTH), AND TO +60 PRINT"SAVE THE DATA AFTER USE. OTHERWISE DRASTIC RESULTS MAY OCCUR. +65 PRINT"THE BUDGET ANALYSIS WILL COMPARE ACTUAL EXPENDITURES TO +70 PRINT"USER INPUT BUDGET AMOUNTS FOR EACH CATEGORY. +80 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +95 CLS +96 INPUT"ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +98 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 95 +100 CLEAR 1000:DEFDBL A,C,Y:MAXX=100:DIM A(100,3),C(43,3),C$(43),Y(43) +110 DIM AE(3),AT(3),AS(3),AO(3) +120 GOSUB 10500:GOSUB 14000:GOSUB 11000 +1000 CLS:PRINT" MAIN MENU" +1005 PRINT +1010 PRINT"1.READ IN MONTH'S DATA FROM CASSETTE" +1020 PRINT"2.READ IN MONTH'S DATA FROM DISK +1030 PRINT"3.WRITE MONTH'S DATA TO CASSETTE +1040 PRINT"4.WRITE MONTH'S DATA TO DISK +1050 PRINT"5.ADD TO MONTH'S FILE +1060 PRINT"6.EDIT MONTH'S FILE +1070 PRINT"7.CATEGORY REVIEW AND CHANGE +1080 PRINT"8.BUDGET ANALYSIS +1085 PRINT"9.NEW MONTH INITIALIZE,BUDGET SAME" +1090 PRINT"10.END PROGRAM +1100 PRINT:INPUT"MAKE YOUR CHOICE ";Z5 +1110 IF Z5<>INT(Z5) OR Z5<1 OR Z5>10 THEN GOSUB 10000:GOTO 1000 +1120 ON Z5 GOSUB 2100,2200,2300,2400,2500,2600,2700,2800,2950,2900 +1130 GOTO 1000 +2100 REM DATA INPUT FROM CASSETTE +2105 CLS:PRINT"CASSETTE INPUT +2130 PRINT:INPUT"INPUT MONTH ";M1 +2150 INPUT"PREPARE CASSETTE TAPE.PRESS ENTER WHEN READY";Z9 +2160 GOSUB 12000 +2165 IF M<>M1 THEN GOSUB 10200 ' WRONG MONTH +2170 GOSUB 10100:RETURN +2200 REM DATA INPUT FROM DISK +2210 CLS:PRINT"DISK DATA INPUT " +2220 PRINT:INPUT"ENTER MONTH(1-12)";M1 +2230 IF M1<>INT(M1) OR M1<1 OR M1>12 THEN GOSUB 10000:GOTO 2210 +2240 PRINT"PREPARE DISKETTE IN DISK DRIVE":GOSUB 10100 +2250 GOSUB 13000 +2260 IF M<>M1 THEN GOSUB 10200 +2270 GOSUB 10100:RETURN +2300 REM DATA OUTPUT TO CASSETTE +2310 CLS:PRINT"DATA OUTPUT TO CASSETTE" +2320 INPUT"ENTER MONTH(1-12)";M1:M=M1 +2350 INPUT"PRESS ENTER WHEN CASSETTE READY";Z9 +2360 GOSUB 12200 +2370 RETURN +2400 REM DATA OUTPUT TO DISK +2410 CLS:PRINT"DATA OUTPUT TO DISK" +2415 INPUT"ENTER MONTH NUMBER(1-12)";M1 +2420 M=M1:PRINT"PREPARE DISKETTE IN DRIVE ":GOSUB 10100 +2430 GOSUB 13200 +2450 RETURN +2500 CLS:PRINT"ADD TO FILE ROUTINE":PRINT +2505 PRINT"LAST ITEM SO FAR.":PRINT USING F$(3);ZZ$ +2510 N=N1:GOSUB 10700 +2515 GOSUB 15500 +2520 PRINT:INPUT"ANY MORE ADDITIONS TODAY(Y/N)";Z9$ +2530 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 2520 +2540 IF Z9$="Y" THEN GOTO 2500 ELSE RETURN +2600 REM EDIT & REVIEW +2610 CLS:PRINT USING F$(3);ZZ$ +2620 FOR N=1 TO N1:GOSUB 10700 +2630 IF N/10= INT(N/10) THEN GOSUB 2640:CLS:PRINT USING F$(3);ZZ$ +2635 NEXT N +2637 X$=" " +2640 INPUT"INPUT E TO EDIT,ENTER FOR MORE";X$ +2645 IF X$="E" THEN GOSUB 10800 +2650 IF N<>N+1 THEN RETURN +2660 RETURN +2700 REM CATEGORY REVIEW OR CHANGE +2710 CLS:PRINT " MENU" +2720 PRINT:PRINT"1.REVIEW OF ALL CATEGORIES" +2730 PRINT"2.CHANGE BUDGET AMOUNTS FOR MONTH" +2735 PRINT"3.RETURN TO MAIN MENU" +2740 PRINT:INPUT"MAKE CHOICE";Z9:ON Z9 GOTO 2750,2770,2799 +2745 GOSUB 10100:GOTO 2710 +2750 GOSUB 14200:GOTO 2710 +2770 FOR I=0 TO 42 +2775 PRINT USING F$(4);I,C$(I),C(I,2);:INPUT" CHANGE AMT. ";C(I,2) +2780 NEXT I :GOTO 2710 +2799 RETURN +2800 REM BUDGET ANALYSIS +2810 FOR I=0 TO 42:C(I,1)=0:NEXT I +2820 FOR I=1 TO N1:C(A(I,1),1)=C(A(I,1),1)+A(I,2):NEXT I +2830 AI(1)=C(0,1):AI(2)=C(0,2):AI(3)=AI(1)-AI(2) +2840 AE(1)=0:AE(2)=0:AE(3)=0 +2850 FOR I=1 TO 35:AE(1)=AE(1)+C(I,1):AE(2)=AE(2)+C(I,2):NEXT +2855 AE(3)=AE(1)-AE(2) +2865 AT(1)=0:AT(2)=0:AT(3)=0 +2868 FOR I=36 TO 42:AT(1)=AT(1)+C(I,1):AT(2)=AT(2)+C(I,2):NEXT +2870 AT(3)=AT(1)-AT(2) +2872 CLS:PRINT USING F$(6);ZZ$ +2875 FOR I=0 TO 42 +2878 IF I/11=INT(I/11) AND I<>0 THEN GOSUB 10100:CLS:PRINT USING F$(6);ZZ$ +2880 PRINT USING F$(5);I,C$(I),C(I,1),C(I,2),C(I,1)-C(I,2) +2882 NEXT I +2883 PRINT:INPUT"PRESS ENTER FOR TOTALS";Z9$:CLS +2884 PRINT USING F$(6);ZZ$ +2885 PRINT USING F$(5);0,"TOTAL INCOME",AI(1),AI(2),AI(3) +2888 PRINT USING F$(5);0,"DEDUCT.EXP.",AE(1),AE(2),AE(3) +2890 PRINT USING F$(5);0,"NON DED EXP.",AT(1),AT(2),AT(3) +2892 AO(1)=AI(1)-AE(1)-AT(1):AO(2)=AI(2)-AE(2)-AT(2):AO(3)=AO(1)-AO(2) +2895 PRINT USING F$(5);0,"NET CASH FLOW",AO(1),AO(2),AO(3) +2898 PRINT:GOSUB 10100 +2899 RETURN +2900 CLS:INPUT"ARE YOU SURE(Y/N)";Z9$ +2910 IF Z9$<>"Y" THEN RETURN +2920 END +2950 REM ZERO FOR NEW MONTH.LEAVES BUDGET AMTS ALONE +2960 GOSUB 11000:RETURN +10000 REM INPUT ERROR SBR +10010 PRINT"INPUT ERROR! TRY AGAIN!":FOR J3=1 TO 300:NEXT +10020 RETURN +10100 INPUT"PRESS ENTER TO CONTINUE ";Z9:RETURN +10200 PRINT"MONTHS DO NOT COINCIDE.INPUT IS FOR MONTH ";M:RETURN +10500 REM FORMATS +10505 F$(4)="## \ \ ######.##" +10510 F$(2)="### ## \ \ ######.## ##" +10520 F$(3)="NO. CL. CL. AMT. DAY !" +10530 F$(5)="## \ \ ######.## ######.## ######.##" +10540 F$(6)="CL CL TOTAL BUDGET OV.OR.UND !" +10590 RETURN +10700 PRINT USING F$(2);N,A(N,1),C$(A(N,1)),A(N,2),A(N,3) +10705 RETURN +10800 REM EDIT ROUTINE +10805 INPUT"WHICH ITEM NUMBER TO EDIT";E +10810 IF E<0 OR E>N1 OR E<>INT(E) THEN GOSUB 10000:GOTO 10805 +10815 C(A(E,1),1)=C(A(E,1),1)-A(E,2) +10820 N2=E:GOSUB 15520 +10830 IF Z8=1 THEN N1=N1-1 +10850 RETURN +11000 REM SBR ZEROES MONTHLY AMOUNTS +11010 FOR J3=1 TO MAXX:FOR J4=1 TO 3 +11020 A(J3,J4)=0 +11030 NEXT J4:NEXT J3 +11040 FOR J3=0 TO 42 +11050 C(J3,1)=0:C(J3,3)=0 +11060 NEXT J3 +11070 N1=0 +11090 RETURN +12000 REM SBR TO READ IN MONTHLY DATA FROM CASSETTE +12010 GOSUB 11000:REM ZERO ANY OLD AMOUNTS +12015 ON ERROR GOTO 12020 +12016 ' IF ZD$="Y" THEN CMD"T" +12020 INPUT #-1,M:REM M IS MONTH NUMBER +12025 FOR N=0 TO 42 +12030 INPUT #-1,C(N,1),C(N,2),C(N,3):REM BUDGET & SPENT AMTS. +12040 NEXT N +12050 INPUT #-1,N1:REM N1 = # RECORDS IN FILE +12060 IF N1=0 THEN RETURN +12070 FOR N=1 TO N1 +12080 INPUT #-1,A(N,1),A(N,2),A(N,3) +12090 NEXT N +12110 RETURN +12200 REM PRINT MONTHLY DATA ONTO CASSETTE +12205 ON ERROR GOTO 12210 +12208 ' IF ZD$="Y" THEN CMD"T" +12210 WRITE #-1,M :REM MONTH NUMBER +12220 FOR N=0 TO 42 +12230 WRITE #-1,C(N,1),C(N,2),C(N,3):REM BUDGET & AMTS SPENT +12235 NEXT N +12240 WRITE #-1,N1:REM N1=NO. OF RECORDS IN FILE +12250 IF N1=0 THEN RETURN +12260 FOR N=1 TO N1 +12270 WRITE #-1,A(N,1),A(N,2),A(N,3) +12280 NEXT N +12290 RETURN +12440 NEXT N +12450 RETURN +12600 REM JUST GET FINAL MONTHLY TOTALS FROM CASSETTE +12610 INPUT #-1,M:REM MONTH NUMBER +12620 FOR N=0 TO 42 +12630 INPUT #-1,C(N,1),C(N,2),C(N,3) +12640 NEXT N +12650 RETURN +13000 REM READ IN MONTHLY DATA FROM DISK +13010 GOSUB 11000: REM ZERO ANY OLD AMOUNTS +13015 FF$=STR$(M1):FF$=RIGHT$(FF$,LEN(FF$)-1) +13020 F$="MONTH"+FF$:REM M1 IS MONTH IN PROGRAM +13025 OPEN"I",1,F$ +13030 INPUT #1,M:REM MONTH NUMBER +13040 FOR N=0 TO 42 +13050 INPUT #1,C(N,1),C(N,2),C(N,3):REM BUDGET AMTS & TOTALS FOR CAT. +13060 NEXT N +13070 INPUT #1,N1:REM NUMBER OF ITEMS PRSENTLY IN FILE +13080 IF N1=0 THEN CLOSE #1:RETURN +13090 FOR N=1 TO N1 +13100 INPUT #1,A(N,1),A(N,2),A(N,3) +13110 NEXT N +13120 CLOSE #1:RETURN +13200 REM PRINT MONTHLY DATA ONTO DISK +13205 FF$=STR$(M1):FF$=RIGHT$(FF$,LEN(FF$)-1) +13210 F$="MONTH"+FF$:REM M1 IS MONTH IN PROGRAM +13220 OPEN"O",1,F$ +13230 WRITE # 1,M +13240 FOR N=0 TO 42 +13250 WRITE # 1,C(N,1),C(N,2),C(N,3) +13260 NEXT N +13270 WRITE # 1,N1:REM NUMBER OF ITEMS PRESENTLY ON FILE +13280 IF N1=0 THEN CLOSE #1:RETURN +13290 FOR N=1 TO N1 +13300 WRITE # 1,A(N,1),A(N,2),A(N,3) +13310 NEXT N +13320 CLOSE #1:RETURN +13600 REM JUST GET FINAL MONTHLY TOTALS FROM DISK +13610 GOSUB 11000:REM ZERO OLD AMOUNTS +13620 F$="MONTH"+STR$(M1) +13630 OPEN"I",1,F$ +13640 INPUT # 1,M +13650 FOR N=0 TO 42 +13660 INPUT # 1,C(N,1),C(N,2),C(N,3) +13670 NEXT N +13680 CLOSE #1:RETURN +14000 REM ROUTINE LOADING C$() ARRAY +14010 DATA INCOME,MDSE-MATERIALS,ACCOUNTING,ADVERTISING,AUTO EXP +14015 DATA CARTONS-ETC.,CONTRIBUTIONS,DELIVERY EXP.,ELECTRICITY +14020 DATA ENTERTAINMENT,FREIGHT & EXPRESS,HEAT,INSURANCE,INTEREST +14025 DATA LAUNDRY,LEGAL EXP.,LICENSES,MISC. EXP.,OFFICE EXP.,POSTAGE +14030 DATA RENT,REPAIRS,SHOP EXP.,TAX-SOC.SEC.,TAX-STATE UNEMP.,TAX-OTHER +14035 DATA SELLING EXP.,SUPPLIES,TELEPHONE,TRADE DUES-ETC.,TRAVELING EXP. +14040 DATA WAGES & COMM.,WATER," "," "," " +14045 DATA NOTES PAYABLE,FED. INC. TAX,LOANS PAYABLE,LOANS RECEIV. +14050 DATA PERSONAL,FIXED ASSETS," "," "," "," " +14070 FOR J3=0 TO 42:READ C$(J3):NEXT +14080 RETURN +14200 REM REVIEW OF CATEGORIES +14210 F$(1)="## \ \ ## \ \" +14220 CLS:FOR I=0 TO 42 STEP 2 +14230 PRINT USING F$(1);I,C$(I),I+1,C$(I+1) +14235 IF I/22=INT(I/22) AND I<>0 THEN PRINT:GOSUB 10100:CLS +14240 NEXT I +14245 PRINT:PRINT"CATEGORIES 1-35 DEDUCTABLES EXPENSES":PRINT"CATEGORIES 36-42 NONDEDUCTABLE EXPENSES":PRINT +14250 GOSUB 10100 +14260 RETURN +15000 REM GET MONTHLY TOTALS FROM MONTH'S DATA +15010 FOR N=1 TO N1 +15020 K=A(N,1):C(K,1)=C(K,1)+A(N,2) +15030 NEXT N +15040 RETURN +15500 REM INPUT ROUTINE +15510 N2=N1+1:PRINT +15515 REM +15520 INPUT"CLASSIFICATION,AMOUNT,DAY";A(N2,1),A(N2,2),A(N2,3) +15522 A9=A(N2,1):IF A9<>ABS(INT(A9)) OR A9>42 THEN GOSUB 10000:GOTO 15515 +15525 PRINT:PRINT C$(A(N2,1));" $";A(N2,2),A(N2,3) +15530 INPUT"ENTER 1 IF OK,2 IF IN ERROR,3 TO ABORT";Z8 +15540 IF Z8<>1 AND Z8<>2 AND Z8<>3 THEN GOSUB 10000:GOTO 15530 +15550 IF Z8=2 THEN GOTO 15520 +15555 IF Z8=3 THEN RETURN +15560 N1=N1+1:C(A(N2,1),1)=C(A(N2,1),1)+A(N2,2) +15570 RETURN diff --git a/BP100/BUSBUD.INP b/BP100/BUSBUD.INP new file mode 100644 index 0000000..96da7b6 --- /dev/null +++ b/BP100/BUSBUD.INP @@ -0,0 +1,26 @@ + +Y +5 +1,234.56,7 +1 +N +4 +1 + +2 +1 + + +8 + + + + + +7 +1 +1 + +3 +10 +Y diff --git a/BP100/BUSBUD.OUT b/BP100/BUSBUD.OUT new file mode 100644 index 0000000..d1182bf --- /dev/null +++ b/BP100/BUSBUD.OUT @@ -0,0 +1,225 @@ + BUSINESS BOOKKEEPING SYSTEM + +THIS BUSINESS BOOKKEEPING AND BUDGET ANALYSIS PROGRAM HAS THE +SAME CATEGORIES AS THE DOME SIMPLIFIED WEEKLY BOOKKEEPING +RECORD #600. THE PROGRAM CAN HANDLE 1 MONTH'S WORTH OF DATA +AT A TIME, BUT NOT TO EXCEED 100 ENTRIES ON A 16K MACHINE. +ON MACHINES WITH GREATER MEMORY IT IS ONLY NECESSARY TO CHANGE +THE MAXX=100 ON LINE 100 TO MAXX=200 FOR 200 ENTRIES, +ETC. TO LEARN THE SYSTEM, USE IT. REMEMBER TO READ A MONTH'S +DATA INTO MEMORY BEFORE USE(UNLESS IT'S A NEW MONTH), AND TO +SAVE THE DATA AFTER USE. OTHERWISE DRASTIC RESULTS MAY OCCUR. +THE BUDGET ANALYSIS WILL COMPARE ACTUAL EXPENDITURES TO +USER INPUT BUDGET AMOUNTS FOR EACH CATEGORY. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 5 +ADD TO FILE ROUTINE + +LAST ITEM SO FAR. + + 0 0 INCOME 0.00 0 + +CLASSIFICATION,AMOUNT,DAY? 1,234.56,7 + +MDSE-MATERIALS $ 234.56 7 +ENTER 1 IF OK,2 IF IN ERROR,3 TO ABORT? 1 + +ANY MORE ADDITIONS TODAY(Y/N)? N + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 4 +DATA OUTPUT TO DISK +ENTER MONTH NUMBER(1-12)? 1 +PREPARE DISKETTE IN DRIVE +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 2 +DISK DATA INPUT + +ENTER MONTH(1-12)? 1 +PREPARE DISKETTE IN DISK DRIVE +PRESS ENTER TO CONTINUE ? +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 8 + + 0 INCOME 0.00 0.00 0.00 + 1 MDSE-MATERIALS 234.56 0.00 234.56 + 2 ACCOUNTING 0.00 0.00 0.00 + 3 ADVERTISING 0.00 0.00 0.00 + 4 AUTO EXP 0.00 0.00 0.00 + 5 CARTONS-ETC. 0.00 0.00 0.00 + 6 CONTRIBUTIONS 0.00 0.00 0.00 + 7 DELIVERY EXP. 0.00 0.00 0.00 + 8 ELECTRICITY 0.00 0.00 0.00 + 9 ENTERTAINMENT 0.00 0.00 0.00 +10 FREIGHT & EXPRE 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +11 HEAT 0.00 0.00 0.00 +12 INSURANCE 0.00 0.00 0.00 +13 INTEREST 0.00 0.00 0.00 +14 LAUNDRY 0.00 0.00 0.00 +15 LEGAL EXP. 0.00 0.00 0.00 +16 LICENSES 0.00 0.00 0.00 +17 MISC. EXP. 0.00 0.00 0.00 +18 OFFICE EXP. 0.00 0.00 0.00 +19 POSTAGE 0.00 0.00 0.00 +20 RENT 0.00 0.00 0.00 +21 REPAIRS 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +22 SHOP EXP. 0.00 0.00 0.00 +23 TAX-SOC.SEC. 0.00 0.00 0.00 +24 TAX-STATE UNEMP 0.00 0.00 0.00 +25 TAX-OTHER 0.00 0.00 0.00 +26 SELLING EXP. 0.00 0.00 0.00 +27 SUPPLIES 0.00 0.00 0.00 +28 TELEPHONE 0.00 0.00 0.00 +29 TRADE DUES-ETC. 0.00 0.00 0.00 +30 TRAVELING EXP. 0.00 0.00 0.00 +31 WAGES & COMM. 0.00 0.00 0.00 +32 WATER 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +33 0.00 0.00 0.00 +34 0.00 0.00 0.00 +35 0.00 0.00 0.00 +36 NOTES PAYABLE 0.00 0.00 0.00 +37 FED. INC. TAX 0.00 0.00 0.00 +38 LOANS PAYABLE 0.00 0.00 0.00 +39 LOANS RECEIV. 0.00 0.00 0.00 +40 PERSONAL 0.00 0.00 0.00 +41 FIXED ASSETS 0.00 0.00 0.00 +42 0.00 0.00 0.00 + +PRESS ENTER FOR TOTALS? + + 0 TOTAL INCOME 0.00 0.00 0.00 + 0 DEDUCT.EXP. 234.56 0.00 234.56 + 0 NON DED EXP. 0.00 0.00 0.00 + 0 NET CASH FLOW -234.56 0.00 -234.56 + +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 7 + MENU + +1.REVIEW OF ALL CATEGORIES +2.CHANGE BUDGET AMOUNTS FOR MONTH +3.RETURN TO MAIN MENU + +MAKE CHOICE? 1 + 0 INCOME 1 MDSE-MATERIALS + 2 ACCOUNTING 3 ADVERTISING + 4 AUTO EXP 5 CARTONS-ETC. + 6 CONTRIBUTIONS 7 DELIVERY EXP. + 8 ELECTRICITY 9 ENTERTAINMENT +10 FREIGHT & EXPRESS 11 HEAT +12 INSURANCE 13 INTEREST +14 LAUNDRY 15 LEGAL EXP. +16 LICENSES 17 MISC. EXP. +18 OFFICE EXP. 19 POSTAGE +20 RENT 21 REPAIRS +22 SHOP EXP. 23 TAX-SOC.SEC. + +PRESS ENTER TO CONTINUE ? 1 +24 TAX-STATE UNEMP. 25 TAX-OTHER +26 SELLING EXP. 27 SUPPLIES +28 TELEPHONE 29 TRADE DUES-ETC. +30 TRAVELING EXP. 31 WAGES & COMM. +32 WATER 33 +34 35 +36 NOTES PAYABLE 37 FED. INC. TAX +38 LOANS PAYABLE 39 LOANS RECEIV. +40 PERSONAL 41 FIXED ASSETS +42 43 + +CATEGORIES 1-35 DEDUCTABLES EXPENSES +CATEGORIES 36-42 NONDEDUCTABLE EXPENSES + +PRESS ENTER TO CONTINUE ? + MENU + +1.REVIEW OF ALL CATEGORIES +2.CHANGE BUDGET AMOUNTS FOR MONTH +3.RETURN TO MAIN MENU + +MAKE CHOICE? 3 + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 10 +ARE YOU SURE(Y/N)? Y diff --git a/BP100/BUSBUD.dif b/BP100/BUSBUD.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/BUSBUD.run b/BP100/BUSBUD.run new file mode 100644 index 0000000..38e1739 --- /dev/null +++ b/BP100/BUSBUD.run @@ -0,0 +1,225 @@ + BUSINESS BOOKKEEPING SYSTEM + +THIS BUSINESS BOOKKEEPING AND BUDGET ANALYSIS PROGRAM HAS THE +SAME CATEGORIES AS THE DOME SIMPLIFIED WEEKLY BOOKKEEPING +RECORD #600. THE PROGRAM CAN HANDLE 1 MONTH'S WORTH OF DATA +AT A TIME, BUT NOT TO EXCEED 100 ENTRIES ON A 16K MACHINE. +ON MACHINES WITH GREATER MEMORY IT IS ONLY NECESSARY TO CHANGE +THE MAXX=100 ON LINE 100 TO MAXX=200 FOR 200 ENTRIES, +ETC. TO LEARN THE SYSTEM, USE IT. REMEMBER TO READ A MONTH'S +DATA INTO MEMORY BEFORE USE(UNLESS IT'S A NEW MONTH), AND TO +SAVE THE DATA AFTER USE. OTHERWISE DRASTIC RESULTS MAY OCCUR. +THE BUDGET ANALYSIS WILL COMPARE ACTUAL EXPENDITURES TO +USER INPUT BUDGET AMOUNTS FOR EACH CATEGORY. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 5 +ADD TO FILE ROUTINE + +LAST ITEM SO FAR. + + 0 0 INCOME 0.00 0 + +CLASSIFICATION,AMOUNT,DAY? 1,234.56,7 + +MDSE-MATERIALS $ 234.56 7 +ENTER 1 IF OK,2 IF IN ERROR,3 TO ABORT? 1 + +ANY MORE ADDITIONS TODAY(Y/N)? N + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 4 +DATA OUTPUT TO DISK +ENTER MONTH NUMBER(1-12)? 1 +PREPARE DISKETTE IN DRIVE +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 2 +DISK DATA INPUT + +ENTER MONTH(1-12)? 1 +PREPARE DISKETTE IN DISK DRIVE +PRESS ENTER TO CONTINUE ? +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 8 + + 0 INCOME 0.00 0.00 0.00 + 1 MDSE-MATERIALS 234.56 0.00 234.56 + 2 ACCOUNTING 0.00 0.00 0.00 + 3 ADVERTISING 0.00 0.00 0.00 + 4 AUTO EXP 0.00 0.00 0.00 + 5 CARTONS-ETC. 0.00 0.00 0.00 + 6 CONTRIBUTIONS 0.00 0.00 0.00 + 7 DELIVERY EXP. 0.00 0.00 0.00 + 8 ELECTRICITY 0.00 0.00 0.00 + 9 ENTERTAINMENT 0.00 0.00 0.00 +10 FREIGHT & EXPRE 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +11 HEAT 0.00 0.00 0.00 +12 INSURANCE 0.00 0.00 0.00 +13 INTEREST 0.00 0.00 0.00 +14 LAUNDRY 0.00 0.00 0.00 +15 LEGAL EXP. 0.00 0.00 0.00 +16 LICENSES 0.00 0.00 0.00 +17 MISC. EXP. 0.00 0.00 0.00 +18 OFFICE EXP. 0.00 0.00 0.00 +19 POSTAGE 0.00 0.00 0.00 +20 RENT 0.00 0.00 0.00 +21 REPAIRS 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +22 SHOP EXP. 0.00 0.00 0.00 +23 TAX-SOC.SEC. 0.00 0.00 0.00 +24 TAX-STATE UNEMP 0.00 0.00 0.00 +25 TAX-OTHER 0.00 0.00 0.00 +26 SELLING EXP. 0.00 0.00 0.00 +27 SUPPLIES 0.00 0.00 0.00 +28 TELEPHONE 0.00 0.00 0.00 +29 TRADE DUES-ETC. 0.00 0.00 0.00 +30 TRAVELING EXP. 0.00 0.00 0.00 +31 WAGES & COMM. 0.00 0.00 0.00 +32 WATER 0.00 0.00 0.00 +PRESS ENTER TO CONTINUE ? + +33 0.00 0.00 0.00 +34 0.00 0.00 0.00 +35 0.00 0.00 0.00 +36 NOTES PAYABLE 0.00 0.00 0.00 +37 FED. INC. TAX 0.00 0.00 0.00 +38 LOANS PAYABLE 0.00 0.00 0.00 +39 LOANS RECEIV. 0.00 0.00 0.00 +40 PERSONAL 0.00 0.00 0.00 +41 FIXED ASSETS 0.00 0.00 0.00 +42 0.00 0.00 0.00 + +PRESS ENTER FOR TOTALS? + + 0 TOTAL INCOME 0.00 0.00 0.00 + 0 DEDUCT.EXP. 234.56 0.00 234.56 + 0 NON DED EXP. 0.00 0.00 0.00 + 0 NET CASH FLOW -234.56 0.00 -234.56 + +PRESS ENTER TO CONTINUE ? + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 7 + MENU + +1.REVIEW OF ALL CATEGORIES +2.CHANGE BUDGET AMOUNTS FOR MONTH +3.RETURN TO MAIN MENU + +MAKE CHOICE? 1 + 0 INCOME 1 MDSE-MATERIALS + 2 ACCOUNTING 3 ADVERTISING + 4 AUTO EXP 5 CARTONS-ETC. + 6 CONTRIBUTIONS 7 DELIVERY EXP. + 8 ELECTRICITY 9 ENTERTAINMENT +10 FREIGHT & EXPRESS 11 HEAT +12 INSURANCE 13 INTEREST +14 LAUNDRY 15 LEGAL EXP. +16 LICENSES 17 MISC. EXP. +18 OFFICE EXP. 19 POSTAGE +20 RENT 21 REPAIRS +22 SHOP EXP. 23 TAX-SOC.SEC. + +PRESS ENTER TO CONTINUE ? 1 +24 TAX-STATE UNEMP. 25 TAX-OTHER +26 SELLING EXP. 27 SUPPLIES +28 TELEPHONE 29 TRADE DUES-ETC. +30 TRAVELING EXP. 31 WAGES & COMM. +32 WATER 33 +34 35 +36 NOTES PAYABLE 37 FED. INC. TAX +38 LOANS PAYABLE 39 LOANS RECEIV. +40 PERSONAL 41 FIXED ASSETS +42 43 + +CATEGORIES 1-35 DEDUCTABLES EXPENSES +CATEGORIES 36-42 NONDEDUCTABLE EXPENSES + +PRESS ENTER TO CONTINUE ? + MENU + +1.REVIEW OF ALL CATEGORIES +2.CHANGE BUDGET AMOUNTS FOR MONTH +3.RETURN TO MAIN MENU + +MAKE CHOICE? 3 + MAIN MENU + +1.READ IN MONTH'S DATA FROM CASSETTE +2.READ IN MONTH'S DATA FROM DISK +3.WRITE MONTH'S DATA TO CASSETTE +4.WRITE MONTH'S DATA TO DISK +5.ADD TO MONTH'S FILE +6.EDIT MONTH'S FILE +7.CATEGORY REVIEW AND CHANGE +8.BUDGET ANALYSIS +9.NEW MONTH INITIALIZE,BUDGET SAME +10.END PROGRAM + +MAKE YOUR CHOICE ? 10 +ARE YOU SURE(Y/N)? Y diff --git a/BP100/CAP1.80 b/BP100/CAP1.80 new file mode 100644 index 0000000..60698fe --- /dev/null +++ b/BP100/CAP1.80 @@ -0,0 +1,29 @@ + CAPITAL ASSET PRICING MODEL ANALYSIS OF PROJECT +THE CAPITAL ASSET PRICING MODEL STUDIES THE RISK-RETURN +IMPACT OF AN INVESTMENT PROPOSAL UPON AN INVESTOR'S PORTFOLIO +OF STOCKS AND OTHER INVESTMENTS. THE MODEL GIVES THE EXPECTED +RETURN FOR AN INVESTMENT GIVEN THE EXPECTED RETURN FOR THE +MARKET AS A WHOLE, THE RISK-FREE(I.E. U.S.TREASURY BOND) +INTEREST RATE, AND THE VOLATILITY OF THE RETURN ON THE INVEST- +MENT WITH RESPECT TO THE REST OF THE MARKET. A VOLATILITY OF +1 MEANS THE RETURN ON THE INVESTMENT WILL CHANGE JUST AS THE +MARKET CHANGES, A VOLATILTY GREATER THAN 1 MEANS THE INVEST- +MENT'S RETURN MOVES IN THE SAME DIRECTION AS THE MARKET BUT +AT A MORE RAPID RATE. VOLATILITY OF 0 MEANS THE RETURN ON THE +INVESTMENT IS INDEPENDENT OF MARKET MOVEMENT. NEGATIVE +VOLATILITY MEANS RETURN ON THE INVESTMENT AND THE MARKET MOVE +IN OPPOSITE DIRECTIONS. +PRESS ENTER TO CONTINUE? +FOR PUBLICLY TRADED STOCKS VOLATILITY MAY BE ASCERTAINED +BY EXAMINING THE LITERATURE. JUST LOOK FOR BETA. +FOR OTHER INVESTMENTS ASCERTAINING VOLATILITY IS SOMEWHAT +MORE DIFFICULT. + +PRESS ENTER TO BEGIN? +ENTER TREASURY INTEREST RATE(%) ? 2.75 +ENTER EXPECTED MARKET RETURN(%) ? 5.25 +ENTER VOLATILITY FOR INVESTMENT ? 0.10 +THE EXPECTED RETURN ON THIS INVESTMENT IS 3 % + + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/CAP1.BAS b/BP100/CAP1.BAS new file mode 100644 index 0000000..d56d8c0 --- /dev/null +++ b/BP100/CAP1.BAS @@ -0,0 +1,38 @@ +1 REM CAP1 +5 CLEAR 1000 +10 CLS +20 PRINT TAB(5);"CAPITAL ASSET PRICING MODEL ANALYSIS OF PROJECT" +25 PRINT"THE CAPITAL ASSET PRICING MODEL STUDIES THE RISK-RETURN +30 PRINT"IMPACT OF AN INVESTMENT PROPOSAL UPON AN INVESTOR'S PORTFOLIO +35 PRINT"OF STOCKS AND OTHER INVESTMENTS. THE MODEL GIVES THE EXPECTED +40 PRINT"RETURN FOR AN INVESTMENT GIVEN THE EXPECTED RETURN FOR THE +45 PRINT"MARKET AS A WHOLE, THE RISK-FREE(I.E. U.S.TREASURY BOND) +50 PRINT"INTEREST RATE, AND THE VOLATILITY OF THE RETURN ON THE INVEST- +55 PRINT"MENT WITH RESPECT TO THE REST OF THE MARKET. A VOLATILITY OF +60 PRINT"1 MEANS THE RETURN ON THE INVESTMENT WILL CHANGE JUST AS THE +65 PRINT"MARKET CHANGES, A VOLATILTY GREATER THAN 1 MEANS THE INVEST- +70 PRINT"MENT'S RETURN MOVES IN THE SAME DIRECTION AS THE MARKET BUT +75 PRINT"AT A MORE RAPID RATE. VOLATILITY OF 0 MEANS THE RETURN ON THE +80 PRINT"INVESTMENT IS INDEPENDENT OF MARKET MOVEMENT. NEGATIVE +85 PRINT"VOLATILITY MEANS RETURN ON THE INVESTMENT AND THE MARKET MOVE +90 PRINT"IN OPPOSITE DIRECTIONS. +95 INPUT"PRESS ENTER TO CONTINUE";Z9$ +97 CLS +100 PRINT"FOR PUBLICLY TRADED STOCKS VOLATILITY MAY BE ASCERTAINED +105 PRINT"BY EXAMINING THE LITERATURE. JUST LOOK FOR BETA. +110 PRINT"FOR OTHER INVESTMENTS ASCERTAINING VOLATILITY IS SOMEWHAT +112 PRINT"MORE DIFFICULT. +115 PRINT +120 INPUT"PRESS ENTER TO BEGIN";Z9$ +200 CLS +210 INPUT"ENTER TREASURY INTEREST RATE(%) ";RF:RF=RF/100 +220 INPUT"ENTER EXPECTED MARKET RETURN(%) ";RM:RM=RM/100 +230 INPUT"ENTER VOLATILITY FOR INVESTMENT ";B +240 RI= RF + (RM-RF)*B:REM RI IS EXPECTED RETURN +250 RI=RI*100 +260 PRINT"THE EXPECTED RETURN ON THIS INVESTMENT IS ";RI;"%" +270 PRINT:PRINT +275 RF=RF*100:RM=RM*100 +280 INPUT"PRESS ENTER FOR MORE COMPUTATIONS";Z9$ +285 IF Z9$ = "-1" THEN END +290 GOTO 200 diff --git a/BP100/CAP1.INP b/BP100/CAP1.INP new file mode 100644 index 0000000..f0ab931 --- /dev/null +++ b/BP100/CAP1.INP @@ -0,0 +1,6 @@ + + +2.75 +5.25 +0.10 +-1 diff --git a/BP100/CAP1.OUT b/BP100/CAP1.OUT new file mode 100644 index 0000000..89c0fe0 --- /dev/null +++ b/BP100/CAP1.OUT @@ -0,0 +1,29 @@ + CAPITAL ASSET PRICING MODEL ANALYSIS OF PROJECT +THE CAPITAL ASSET PRICING MODEL STUDIES THE RISK-RETURN +IMPACT OF AN INVESTMENT PROPOSAL UPON AN INVESTOR'S PORTFOLIO +OF STOCKS AND OTHER INVESTMENTS. THE MODEL GIVES THE EXPECTED +RETURN FOR AN INVESTMENT GIVEN THE EXPECTED RETURN FOR THE +MARKET AS A WHOLE, THE RISK-FREE(I.E. U.S.TREASURY BOND) +INTEREST RATE, AND THE VOLATILITY OF THE RETURN ON THE INVEST- +MENT WITH RESPECT TO THE REST OF THE MARKET. A VOLATILITY OF +1 MEANS THE RETURN ON THE INVESTMENT WILL CHANGE JUST AS THE +MARKET CHANGES, A VOLATILTY GREATER THAN 1 MEANS THE INVEST- +MENT'S RETURN MOVES IN THE SAME DIRECTION AS THE MARKET BUT +AT A MORE RAPID RATE. VOLATILITY OF 0 MEANS THE RETURN ON THE +INVESTMENT IS INDEPENDENT OF MARKET MOVEMENT. NEGATIVE +VOLATILITY MEANS RETURN ON THE INVESTMENT AND THE MARKET MOVE +IN OPPOSITE DIRECTIONS. +PRESS ENTER TO CONTINUE? +FOR PUBLICLY TRADED STOCKS VOLATILITY MAY BE ASCERTAINED +BY EXAMINING THE LITERATURE. JUST LOOK FOR BETA. +FOR OTHER INVESTMENTS ASCERTAINING VOLATILITY IS SOMEWHAT +MORE DIFFICULT. + +PRESS ENTER TO BEGIN? +ENTER TREASURY INTEREST RATE(%) ? 2.75 +ENTER EXPECTED MARKET RETURN(%) ? 5.25 +ENTER VOLATILITY FOR INVESTMENT ? 0.10 +THE EXPECTED RETURN ON THIS INVESTMENT IS 3 % + + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/CAP1.dif b/BP100/CAP1.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/CAP1.run b/BP100/CAP1.run new file mode 100644 index 0000000..60698fe --- /dev/null +++ b/BP100/CAP1.run @@ -0,0 +1,29 @@ + CAPITAL ASSET PRICING MODEL ANALYSIS OF PROJECT +THE CAPITAL ASSET PRICING MODEL STUDIES THE RISK-RETURN +IMPACT OF AN INVESTMENT PROPOSAL UPON AN INVESTOR'S PORTFOLIO +OF STOCKS AND OTHER INVESTMENTS. THE MODEL GIVES THE EXPECTED +RETURN FOR AN INVESTMENT GIVEN THE EXPECTED RETURN FOR THE +MARKET AS A WHOLE, THE RISK-FREE(I.E. U.S.TREASURY BOND) +INTEREST RATE, AND THE VOLATILITY OF THE RETURN ON THE INVEST- +MENT WITH RESPECT TO THE REST OF THE MARKET. A VOLATILITY OF +1 MEANS THE RETURN ON THE INVESTMENT WILL CHANGE JUST AS THE +MARKET CHANGES, A VOLATILTY GREATER THAN 1 MEANS THE INVEST- +MENT'S RETURN MOVES IN THE SAME DIRECTION AS THE MARKET BUT +AT A MORE RAPID RATE. VOLATILITY OF 0 MEANS THE RETURN ON THE +INVESTMENT IS INDEPENDENT OF MARKET MOVEMENT. NEGATIVE +VOLATILITY MEANS RETURN ON THE INVESTMENT AND THE MARKET MOVE +IN OPPOSITE DIRECTIONS. +PRESS ENTER TO CONTINUE? +FOR PUBLICLY TRADED STOCKS VOLATILITY MAY BE ASCERTAINED +BY EXAMINING THE LITERATURE. JUST LOOK FOR BETA. +FOR OTHER INVESTMENTS ASCERTAINING VOLATILITY IS SOMEWHAT +MORE DIFFICULT. + +PRESS ENTER TO BEGIN? +ENTER TREASURY INTEREST RATE(%) ? 2.75 +ENTER EXPECTED MARKET RETURN(%) ? 5.25 +ENTER VOLATILITY FOR INVESTMENT ? 0.10 +THE EXPECTED RETURN ON THIS INVESTMENT IS 3 % + + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/CHECK2.80 b/BP100/CHECK2.80 new file mode 100644 index 0000000..ac377ca --- /dev/null +++ b/BP100/CHECK2.80 @@ -0,0 +1,71 @@ + CHECK1 + +THIS PROGRAM PERMITS THE USER TO INPUT THE NECESSARY DATA +IN ORDER TO PRINT CHECK AND STUB ON NEBS CHECKS ,PRODUCT 9020 +AVAILABLE FROM NEW ENGLAND BUSINESS SERVICE(1-800-225-6380) +IN MASS. (1-800-252-9226) + AS MANY AS 50 CHECKS MAY BE PRINTED IN A RUN. A REGISTER MAY +BE GENERATED OF ALL CHECKS IN THE RUN +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 3 +ENTER TODAY'S DATE IN FORM MM/DD/YY? 12/34/56 + +SYSTEM DATE IS 12/34/56 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 1 +CHECK DATE(0 TO END)? 01/02/03 +INPUT CHECK # ? 50013 +INPUT AMT OF CHECK ? 1234.56 +ENTER PAYABLE TO ? TOM CAT +ENTER COMMENTS(LINE 1)? JERRY MOUSE +ENTER COMMENTS(LINE 2)? CARTOON +CHECK DATE: 01/02/03 +CHECK # 50013 +CHECK AMOUNT 1234.56 +PAYABLE TO TOM CAT +COMMENT 1 JERRY MOUSE +COMMENT 2 CARTOON + +ENTER Y IF OK,N IF ERROR? Y +ENTER Y TO PRINT CHECK,N TO SKIP PRINT? Y +CHECK DATE(0 TO END)? 0 + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 2 +INPUT P FOR LINE PRINTER OUTPUT,S FOR SCREEN ONLY? P + +PRESS ENTER WHEN PRINTER READY? +CHECK # DATE PAYABLE TO AMOUNT +50013 01/02/03 TOM CAT 1234.56 + +TOTAL CHECKS = 1 TOTAL CHECK AMOUNTS = $1234.56 + +PRESS ENTER TO CONTINUE? 0 + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? diff --git a/BP100/CHECK2.BAS b/BP100/CHECK2.BAS new file mode 100644 index 0000000..368b1c8 --- /dev/null +++ b/BP100/CHECK2.BAS @@ -0,0 +1,103 @@ +1 CLS +10 PRINT TAB(15);"CHECK1":PRINT +20 PRINT"THIS PROGRAM PERMITS THE USER TO INPUT THE NECESSARY DATA +30 PRINT"IN ORDER TO PRINT CHECK AND STUB ON NEBS CHECKS ,PRODUCT 9020 +40 PRINT"AVAILABLE FROM NEW ENGLAND BUSINESS SERVICE(1-800-225-6380) +50 PRINT"IN MASS. (1-800-252-9226) +60 PRINT" AS MANY AS 50 CHECKS MAY BE PRINTED IN A RUN. A REGISTER MAY +70 PRINT"BE GENERATED OF ALL CHECKS IN THE RUN +90 INPUT"PRESS ENTER TO BEGIN";Z9$ +95 CLEAR 2000 +97 DIM D$(55),CN$(55),XX(55),P$(55) +99 GOSUB 9000 +100 CLS:PRINT TAB(10); "MENU":PRINT +105 PRINT"0. QUIT +110 PRINT"1. INPUT DATA AND PRINT CHECKS +120 PRINT"2. PRINT CHECK REGISTER +130 PRINT"3. INPUT TODAY'S DATE INTO SYSTEM" +190 PRINT:INPUT"ENTER CHOICE ";Z9 +195 IF Z9 = 0 THEN END +200 ON Z9 GOSUB 400,600,300 +210 GOTO 100 +300 REM INPUT SYSTEM DATE +310 CLS:INPUT"ENTER TODAY'S DATE IN FORM MM/DD/YY";D9$ +320 IF LEN(D9$)<>8 THEN GOSUB 10000:GOTO 310 +330 PRINT:PRINT"SYSTEM DATE IS ";D9$ +340 PRINT:GOSUB 10100:RETURN +400 REM CHECK DATA INPUT & PRINTING +402 D$=D9$ +405 CLS +410 INPUT"CHECK DATE(0 TO END)";D$ +412 IF D$="0" THEN RETURN +415 INPUT"INPUT CHECK # ";CN$ +420 INPUT"INPUT AMT OF CHECK ";X +425 IF X>100000 THEN GOSUB 10000:GOTO 420 +430 INPUT"ENTER PAYABLE TO ";P$ +435 IF LEN(P$)>22 THEN PRINT"LENGTH TOO LONG. 22 CHARACTERS IS MAX.":PRINT: GOTO 430 +440 INPUT"ENTER COMMENTS(LINE 1)";C$(1) +445 INPUT"ENTER COMMENTS(LINE 2)";C$(2) +450 CLS:GOSUB 1000 +460 INPUT"ENTER Y IF OK,N IF ERROR";Z8$ +465 IF Z8$<>"Y" AND Z8$<>"N" THEN GOSUB 10000:GOTO 460 +470 IF Z8$="N" THEN GOTO 405 +475 N=N+1:D$(N)=D$:CN$(N)=CN$:XX(N)=X:P$(N)=P$:REM REGISTER +480 GOSUB 2000:REM ACTUALLY PRINT OUT CHECK +490 GOTO 400 +600 REM PRINT TODAY'S CHECK REGISTER +610 CLS:INPUT"INPUT P FOR LINE PRINTER OUTPUT,S FOR SCREEN ONLY";Z2$ +615 IF Z2$<>"P" AND Z2$<>"S" THEN GOSUB 10000:GOTO 610 +620 PRINT:IF Z2$="P" THEN INPUT"PRESS ENTER WHEN PRINTER READY";Z9$ +622 IF Z2$="P" THEN LPRINT TAB(20);"CHECK REGISTER FOR ";D9$ +625 CLS:PRINT F$(2):IF Z2$="P" THEN LPRINT F$(2):LPRINT " " +627 XX=0:REM TOTAL CHECK AMOUNT +630 FOR J=1 TO N +635 XX=XX+XX(J) +640 PRINT USING F$(1);CN$(J),D$(J),P$(J),XX(J) +645 IF Z2$="P" THEN LPRINT USING F$(1);CN$(J),D$(J),P$(J),XX(J) +650 IF J/12=INT(J/12) THEN GOSUB 10100:CLS:PRINT F$(2) +660 NEXT J +670 PRINT:PRINT "TOTAL CHECKS = ";N;:PRINT USING " TOTAL CHECK AMOUNTS = $$#####.##";XX +675 IF Z2$<>"P" THEN GOTO 690 +680 LPRINT" ":LPRINT "TOTAL CHECKS = ";N;:LPRINT USING " TOTAL CHECK AMOUNTS = $$#####.##";XX +690 PRINT:GOSUB 10100 +695 RETURN +1000 REM DISPLAY CHECK DATA +1010 PRINT "CHECK DATE: ";D$ +1020 PRINT "CHECK # ";CN$ +1030 PRINT "CHECK AMOUNT";X +1035 PRINT "PAYABLE TO ";P$ +1040 PRINT "COMMENT 1 ";C$(1) +1045 PRINT "COMMENT 2 ";C$(2) +1050 PRINT +1060 RETURN +2000 REM ACTUALLY PRINT OUT CHECK +2010 CLS:INPUT"ENTER Y TO PRINT CHECK,N TO SKIP PRINT";Z4$ +2015 IF Z4$<>"Y" AND Z4$<>"N" THEN GOSUB 10000:GOTO 2010 +2020 IF Z4$="N" THEN RETURN +2030 LPRINT " ":LPRINT " " +2035 LPRINT D9$;TAB(10); P$;TAB(63); +2037 LPRINT USING " $$####.##";X +2040 LPRINT " ":LPRINT " " +2045 LPRINT TAB(10); C$(1):LPRINT TAB(10); C$(2) +2050 CP=9:GOSUB 10600 +2060 LPRINT D$;TAB(13); CN$;TAB(63); +2062 LPRINT USING " $$####.##";X +2070 CP=13:GOSUB 10600 +2080 LPRINT TAB(7);TAB(41);D$;TAB(55); CN$;TAB(63); +2082 LPRINT USING " $$####.##";X; +2090 LPRINT " " +2100 LPRINT TAB(7); +2102 LPRINT USING "$$####.##";X;:LPRINT"*****" +2110 CP=10:GOSUB 10600 +2120 D$="":CN$="":X=0:P$="":C$(1)="":C$(2)="" +2130 RETURN +9000 REM FORMAT VARIABLES +9010 F$(1)="% % % % % % ######.##" +9020 F$(2)="CHECK # DATE PAYABLE TO AMOUNT" +9099 RETURN +10000 PRINT"INPUT ERROR! TRY AGAIN!":FOR JJ=1 TO 600:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$ +10110 RETURN +10600 REM SKIP CP LINES ON LINE PRINTER +10610 FOR JK=1 TO CP:LPRINT" ":NEXT +10620 RETURN diff --git a/BP100/CHECK2.INP b/BP100/CHECK2.INP new file mode 100644 index 0000000..156362b --- /dev/null +++ b/BP100/CHECK2.INP @@ -0,0 +1,19 @@ + +3 +12/34/56 + +1 +01/02/03 +50013 +1234.56 +TOM CAT +JERRY MOUSE +CARTOON +Y +Y +0 +2 +P + +0 + diff --git a/BP100/CHECK2.OUT b/BP100/CHECK2.OUT new file mode 100644 index 0000000..bcb0f3a --- /dev/null +++ b/BP100/CHECK2.OUT @@ -0,0 +1,71 @@ + CHECK1 + +THIS PROGRAM PERMITS THE USER TO INPUT THE NECESSARY DATA +IN ORDER TO PRINT CHECK AND STUB ON NEBS CHECKS ,PRODUCT 9020 +AVAILABLE FROM NEW ENGLAND BUSINESS SERVICE(1-800-225-6380) +IN MASS. (1-800-252-9226) + AS MANY AS 50 CHECKS MAY BE PRINTED IN A RUN. A REGISTER MAY +BE GENERATED OF ALL CHECKS IN THE RUN +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 3 +ENTER TODAY'S DATE IN FORM MM/DD/YY? 12/34/56 + +SYSTEM DATE IS 12/34/56 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 1 +CHECK DATE(0 TO END)? 01/02/03 +INPUT CHECK # ? 50013 +INPUT AMT OF CHECK ? 1234.56 +ENTER PAYABLE TO ? TOM CAT +ENTER COMMENTS(LINE 1)? JERRY MOUSE +ENTER COMMENTS(LINE 2)? CARTOON +CHECK DATE: 01/02/03 +CHECK # 50013 +CHECK AMOUNT 1234.56 +PAYABLE TO TOM CAT +COMMENT 1 JERRY MOUSE +COMMENT 2 CARTOON + +ENTER Y IF OK,N IF ERROR? Y +ENTER Y TO PRINT CHECK,N TO SKIP PRINT? Y +CHECK DATE(0 TO END)? 0 + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 2 +INPUT P FOR LINE PRINTER OUTPUT,S FOR SCREEN ONLY? P + +PRESS ENTER WHEN PRINTER READY? +CHECK # DATE PAYABLE TO AMOUNT +50013 01/02/03 TOM CAT 1234.56 + +TOTAL CHECKS = 1 TOTAL CHECK AMOUNTS = $1234.56 + +PRESS ENTER TO CONTINUE? 0 + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? diff --git a/BP100/CHECK2.dif b/BP100/CHECK2.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/CHECK2.run b/BP100/CHECK2.run new file mode 100644 index 0000000..ac377ca --- /dev/null +++ b/BP100/CHECK2.run @@ -0,0 +1,71 @@ + CHECK1 + +THIS PROGRAM PERMITS THE USER TO INPUT THE NECESSARY DATA +IN ORDER TO PRINT CHECK AND STUB ON NEBS CHECKS ,PRODUCT 9020 +AVAILABLE FROM NEW ENGLAND BUSINESS SERVICE(1-800-225-6380) +IN MASS. (1-800-252-9226) + AS MANY AS 50 CHECKS MAY BE PRINTED IN A RUN. A REGISTER MAY +BE GENERATED OF ALL CHECKS IN THE RUN +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 3 +ENTER TODAY'S DATE IN FORM MM/DD/YY? 12/34/56 + +SYSTEM DATE IS 12/34/56 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 1 +CHECK DATE(0 TO END)? 01/02/03 +INPUT CHECK # ? 50013 +INPUT AMT OF CHECK ? 1234.56 +ENTER PAYABLE TO ? TOM CAT +ENTER COMMENTS(LINE 1)? JERRY MOUSE +ENTER COMMENTS(LINE 2)? CARTOON +CHECK DATE: 01/02/03 +CHECK # 50013 +CHECK AMOUNT 1234.56 +PAYABLE TO TOM CAT +COMMENT 1 JERRY MOUSE +COMMENT 2 CARTOON + +ENTER Y IF OK,N IF ERROR? Y +ENTER Y TO PRINT CHECK,N TO SKIP PRINT? Y +CHECK DATE(0 TO END)? 0 + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? 2 +INPUT P FOR LINE PRINTER OUTPUT,S FOR SCREEN ONLY? P + +PRESS ENTER WHEN PRINTER READY? +CHECK # DATE PAYABLE TO AMOUNT +50013 01/02/03 TOM CAT 1234.56 + +TOTAL CHECKS = 1 TOTAL CHECK AMOUNTS = $1234.56 + +PRESS ENTER TO CONTINUE? 0 + MENU + +0. QUIT +1. INPUT DATA AND PRINT CHECKS +2. PRINT CHECK REGISTER +3. INPUT TODAY'S DATE INTO SYSTEM + +ENTER CHOICE ? diff --git a/BP100/CHECKBK1.80 b/BP100/CHECKBK1.80 new file mode 100644 index 0000000..d692d86 --- /dev/null +++ b/BP100/CHECKBK1.80 @@ -0,0 +1,227 @@ + CHECKBOOK MAINTENANCE PROGRAM + BY DR. PETER SHENKIN +****************************************************** + THIS SELF-DOCUMENTING PROGRAM WILL KEEP TRACK OF ALL + CHECKBOOK ITEMS. dEPOSITS AND EXPENSES MAY BE + CATEGORIZED. UP TO 100 CATEGORIES ARE ALLOWED. + CATEGORIES ENTERED FROM PROG. LINES 3020-3089 + CHECKBOOK ITEMS MAY BE STORED ON CASSETTE OR DISKETTE + AND READ IN FROM CASSETTE OR DISKETTE. + AT PRESENT DIMENSIONING IS SET UP FOR A MAXIMUM OF + 120 ITEMS IN YOUR CHECKBOOK AT ANY ONE TIME. THIS MAY BE + CHANGED BY CHANGING DIMENSION VARIABLE V IN LINE 101 + TO RUN PROGRAM DELETE REM STATEMENTS FOR MEMORY SPACE. + PRESS ENTER TO BEGIN.THERE SHOULD BE NO PROBLEM? +ARE DISK DRIVE(S) IN USE(Y/N)? Y + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 1 +INITIAL BALANCE? 100.00 +INITIAL CHECK NUMBER? 5000 +INPUT INITIAL DATE IN FORM MM/DD/YY? 01/01/01 +INPUT DATE ? 01/02/01 +INPUT C FOR CHECK,D FOR DEP.,CM FOR MISC. CHARGE? D +WHAT WAS DEPOSITED ? PAY +DEPOSIT CATEGORY TYPE(0 TO SEE CATEGORIES)? 0 +CATEGORY DESCRIPTION + 1. LOAN PAYMENT + 2. BANK CARD PAYMENT + 3. MEDICAL EXPENSE + 4. HOUSEKEEPING MONEY + 5. MORTGAGE + 6. HOME EXPENSE,UTILITIES,ETC. + 7. STORE CHARGE CARD PAYMENT + 8. INSURANCE + 50. PAYCHECK DEPOSIT + 51. CONSULTING FEE + 52. MEDICAL REIMBURSEMENT + 53. OTHER BUSINESS INCOME + 54. MISC. DEPOSITS +9. BUSINESS EXPENSE 10. OTHER EXPENSE +PRESS ENTER TO RETURN ? +DEPOSIT CATEGORY TYPE(0 TO SEE CATEGORIES)? 50 +AMOUNT OF DEPOSIT ? 3456.78 + + 01/01/01 $100.00 + -1 01/02/01 PAY 50 $3456.78 $3556.78 + + + + +IF ERROR INPUT E.OTHERWISE ENTER? +ANY MORE ENTRIES (Y/N)? Y +INPUT DATE ? 01/03/01 +INPUT C FOR CHECK,D FOR DEP.,CM FOR MISC. CHARGE? C +CHECK ISSUED TO? MORTGAGE LLC +CHECK CATEGORY TYPE(0 TO SEE CATEGORIES)? 0 +CATEGORY DESCRIPTION + 1. LOAN PAYMENT + 2. BANK CARD PAYMENT + 3. MEDICAL EXPENSE + 4. HOUSEKEEPING MONEY + 5. MORTGAGE + 6. HOME EXPENSE,UTILITIES,ETC. + 7. STORE CHARGE CARD PAYMENT + 8. INSURANCE + 50. PAYCHECK DEPOSIT + 51. CONSULTING FEE + 52. MEDICAL REIMBURSEMENT + 53. OTHER BUSINESS INCOME + 54. MISC. DEPOSITS +9. BUSINESS EXPENSE 10. OTHER EXPENSE +PRESS ENTER TO RETURN ? +CHECK CATEGORY TYPE(0 TO SEE CATEGORIES)? 5 +CHECK AMOUNT? 2987.65 + + 01/02/01 $3556.78 +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + + + + +IF ERROR INPUT E.OTHERWISE ENTER? +ANY MORE ENTRIES (Y/N)? N + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 9 + IS THE PRESENT FILE. +ENTER THE DISK FILE NAME FOR OUTPUT ? CHECKBK1.DAT + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 8 +WHAT IS THE NAME OF THE DISK CHECK FILE? CHECKBK1.DAT +PRESS ENTER WHEN DISKETTE WITH CHECKBK1.DAT IS READY? +I= 1 +I= 2 + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 6 +IS OUTPUT ON LINE PRINTER DESIRED(Y/N)? Y + + 01/01/01 $100.00 + -1 01/02/01 PAY 50 $3456.78 $3556.78 +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + +THE END. PRESS ENTER TO RETURN TO MENU.? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 7 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +INPUT CATEGORY NUMBER OF INTEREST? 50 + + -1 01/02/01 PAY 50 $3456.78 $3556.78 + +TOTAL FOR THIS ITEM =$ 3456.78 +PRESS ENTER TO RETURN TO MENU? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 7 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +INPUT CATEGORY NUMBER OF INTEREST? 5 + +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + +TOTAL FOR THIS ITEM =$ 2987.65 +PRESS ENTER TO RETURN TO MENU? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 11 +ARE YOU SURE YOU WANT TO END(Y/N)? Y diff --git a/BP100/CHECKBK1.BAS b/BP100/CHECKBK1.BAS new file mode 100644 index 0000000..f13428e --- /dev/null +++ b/BP100/CHECKBK1.BAS @@ -0,0 +1,262 @@ +5 CLS +10 PRINT" CHECKBOOK MAINTENANCE PROGRAM +15 PRINT" BY DR. PETER SHENKIN +17 PRINT"****************************************************** +20 PRINT" THIS SELF-DOCUMENTING PROGRAM WILL KEEP TRACK OF ALL +22 PRINT" CHECKBOOK ITEMS. dEPOSITS AND EXPENSES MAY BE +24 PRINT" CATEGORIZED. UP TO 100 CATEGORIES ARE ALLOWED. +25 PRINT" CATEGORIES ENTERED FROM PROG. LINES 3020-3089 +26 PRINT" CHECKBOOK ITEMS MAY BE STORED ON CASSETTE OR DISKETTE +27 PRINT" AND READ IN FROM CASSETTE OR DISKETTE. +28 PRINT" AT PRESENT DIMENSIONING IS SET UP FOR A MAXIMUM OF +30 PRINT" 120 ITEMS IN YOUR CHECKBOOK AT ANY ONE TIME. THIS MAY BE +32 PRINT" CHANGED BY CHANGING DIMENSION VARIABLE V IN LINE 101 +34 PRINT" TO RUN PROGRAM DELETE REM STATEMENTS FOR MEMORY SPACE. +36 INPUT" PRESS ENTER TO BEGIN.THERE SHOULD BE NO PROBLEM";Z9 +50 CLS:CLEAR 5500 +70 INPUT "ARE DISK DRIVE(S) IN USE(Y/N)";ZD$ +80 IF ZD$<>"Y" AND ZD$<>"N" THEN PRINT"INPUT ERROR!":GOTO 70 +101 V=120 +102 DIM CN(V),D$(V),P$(V),T(V),A(V),B(V) +105 GOSUB 990 +110 REM CHECK MENU +120 GOSUB 2000 +990 REM SUBROUTINE WITH PRINT USING FORMAT VARIABLES +1000 H$="CHK NO. DATE CHK ISSUED TO TYPE AMOUNT BAL.!" +1010 Z$="#### % % % % ## $$#####.## $$#####.##" +1020 Z1$=" % % $$#####.##" +1099 RETURN +1100 REM SUBROUTINE PRINTING FORMATS +1110 PRINT USING H$;ZZ$ +1120 IF Z2$="Y" THEN LPRINT "ITEM #";TAB(10); " ";:LPRINT USING H$;ZZ$ +1199 RETURN +1200 REM SUBROUTINE FOR PRINTING CHECKBOOK INFORMATION +1210 PRINT USING Z$;CN(I);D$(I);P$(I);T(I);A(I);B(I) +1212 IF Z2$="Y" THEN LPRINT USING "####";I;:LPRINT TAB(10); " ";:LPRINT USING Z$;CN(I),D$(I),P$(I),T(I),A(I),B(I) +1215 RETURN +1230 REM SUBROUTINE FOR INPUTTING CHECKBOOK INFO. FROM TAPE +1235 INPUT #-1,CN(I),D$(I),P$(I),T(I),A(I),B(I) +1240 RETURN +1245 REM SUBROUTINE FOR OUTPUTTING CHECKBOOK INFO. ONTO TAPE +1250 WRITE #-1,CN(I),D$(I),P$(I),T(I),A(I),B(I) +1255 RETURN +1260 REM SUBROUTINE FOR PRINTING PREVIOUS BALANCE +1262 PRINT USING Z1$;D$(I-1);B(I-1) +1263 IF Z2$="Y" THEN LPRINT USING "####";0;: LPRINT TAB(10); " ";:LPRINT USING Z1$;D$(I-1),B(I-1) +1265 RETURN +1299 RETURN +1300 REM SUBROUTINE FOR INPUTTING CHECKBOOK INFO. FROM DISK +1305 PRINT "I=";I +1310 INPUT # 1,CN(I),D$(I),P$(I),T(I),A(I),B(I) +1320 RETURN +1350 REM SUBROUTINE FOR OUTPUTTING CHECKBOOK INFO. ONTO DISK +1360 WRITE # 1,CN(I),D$(I),P$(I),T(I),A(I),B(I) +1370 RETURN +1500 REM SUBROUTINE TO ENTER NEW ENTRY +1510 INPUT "INPUT DATE ";D$(I) +1515 PRINT "INPUT C FOR CHECK,D FOR DEP.,CM FOR MISC. CHARGE"; +1520 INPUT Z9$ +1525 IF Z9$="C" GOTO 1540 +1526 IF Z9$="D" GOTO 1570 +1527 IF Z9$="CM" GOTO 1600 +1530 PRINT "INPUT ERROR. TRY AGAIN":GOTO 1515 +1540 CN(I)=CI :CI=CI+1 +1545 IF ZJ=99 THEN CI=CI-1 +1550 INPUT "CHECK ISSUED TO";P$(I) +1555 INPUT "CHECK CATEGORY TYPE(0 TO SEE CATEGORIES)";T(I):IF T(I)=0 THEN GOSUB 3000: CLS: GOTO 1555 +1560 INPUT "CHECK AMOUNT";A(I) +1565 B(I)=B(I-1)-A(I):IF ZJ=99 THEN B(I)=B(IT-1)-A(I) +1569 GOTO 1610 +1570 CN(I)=-1 +1575 INPUT "WHAT WAS DEPOSITED ";P$(I) +1580 INPUT"DEPOSIT CATEGORY TYPE(0 TO SEE CATEGORIES)";T(I):IF T(I)=0 THEN GOSUB 3000: CLS: GOTO 1580 +1585 INPUT "AMOUNT OF DEPOSIT ";A(I) +1590 B(I)=B(I-1)+A(I):IF ZJ=99 THEN B(I)=B(IT-1)+A(I) +1595 GOTO 1610 +1600 CN(I)=-2 +1602 INPUT "WHY CHARGED TO ACCT. ";P$(I) +1604 INPUT "CHARGE AMOUNT";A(I) +1605 INPUT "CHARGE CATEGORY TYPE(0 TO SEE CATEGORIES)";T(I):IF T(I)=0 THEN GOSUB 3000: CLS: GOTO 1605 +1606 B(I)=B(I-1)-A(I):IF ZJ=99 THEN B(I)=B(IT-1)-A(I) +1608 GOTO 1610 +1610 CLS +1613 GOSUB 1100 +1614 GOSUB 1260 +1615 GOSUB 1200 +1616 FOR K=1 TO 4:PRINT:NEXT K +1617 PRINT "IF ERROR INPUT E.OTHERWISE ENTER";:INPUT Z8$ +1619 IF ZJ=99 THEN RETURN +1621 IF Z8$="E" GOTO 1623 +1622 GOTO 1625 +1623 Z8$="ZZZZ":IF Z9$="C" THEN CI=CI-1 +1624 CLS:GOTO 1510 +1625 PRINT "ANY MORE ENTRIES (Y/N)";:INPUT Z9$ +1630 IF Z9$="N" GOTO 1690 +1635 IF Z9$="Y" GOTO 1650 +1640 PRINT "INPUT ERROR. TRY AGAIN.":GOTO 1625 +1650 I=I+1 :CLS:GOTO 1510 +1690 CN(0)=I +1699 RETURN +2000 REM MENU SUBROUTINE +2010 CLS +2020 PRINT" CHECKBOOK MAINTENANCE PROGRAM " +2025 PRINT:PRINT "CHOOSE NUMBER OF DESIRED OPTION":PRINT +2030 PRINT "1.SET UP NEW CHECKBOOK" +2035 PRINT "2.INPUT OLD CHECKBOOK FROM TAPE" +2040 PRINT "3.ADD TO OLD CHECKBOOK" +2050 PRINT "4.OUTPUT CHECKBOOK TO CASSETTE" +2055 PRINT "5.REVIEW OF CHECK EXPENSE CATEGORIES" +2060 PRINT "6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT." +2070 PRINT "7.LIST BY CATEGORY" +2075 PRINT "8.LOAD OLD CHECKBOOK FROM DISKETTE +2080 PRINT "9.OUTPUT CHECKBOOK TO DISKETTE +2082 PRINT"10.EDIT CHECKBOOK ITEM +2085 PRINT "11.END THIS PROGRAM" +2090 PRINT:INPUT "OPTION # ";Z +2092 CLS +2094 ON Z GOSUB 2200,2400,2600,2800,3000,3200,3500,2500,2900,4000,3900 +2097 GOTO 2010 +2099 RETURN +2200 REM SUBROUTINE FOR SETTING UP NEW CHECKBOOK +2210 I=1 +2215 INPUT "INITIAL BALANCE";B(0) +2217 INPUT "INITIAL CHECK NUMBER";CI +2218 INPUT"INPUT INITIAL DATE IN FORM MM/DD/YY";D$(0) +2219 CLS +2220 REM NOW WRITE CHECK ,MAKE DEPOSIT,OR OTHER CHARGE +2225 GOSUB 1500 +2250 RETURN +2400 REM SUBROUTINE FOR INPUTTING OLD CHECKBOOK FROM TAPE +2410 CLS:PRINT "PUT & POSITION DATA TAPE IN CASSETTE #-1." +2412 PRINT "PRESS PLAY BUTTON." +2415 PRINT "PRESS ENTER WHEN READY.":INPUT Q +2417 ' IF ZD$="Y" THEN CMD"T" +2420 INPUT #-1,CI,CN(0),B(0),D$(0) +2430 FOR I=1 TO CN(0) +2435 ' IF ZD$="Y" THEN CMD"T" +2440 GOSUB 1230 +2450 NEXT I +2460 RETURN +2500 REM SUBROUTINE FOR INPUTTING OLD CHECKBOOK FROM DISK +2510 CLS:INPUT"WHAT IS THE NAME OF THE DISK CHECK FILE";CF$ +2515 PRINT"PRESS ENTER WHEN DISKETTE WITH ";CF$;" IS READY";:INPUT Q +2520 OPEN"I",1,CF$: INPUT #1,CI,CN(0),B(0),D$(0) +2530 FOR I=1 TO CN(0): GOSUB 1300:NEXT I +2560 RETURN +2600 REM SUBROUTINE TO ADD TO CHECKBOOK +2610 GOSUB 1500 +2615 CLOSE 1 +2620 RETURN +2800 REM SUBROUTINE FOR OUTPUTTING CHECKBOOK TO CASSETTE +2810 CLS:PRINT"POSITION BLANK TAPE INTO CASSETTE PLAYER" +2812 PRINT"PRESS PLAY AND RECORD BUTTONS." +2815 PRINT "PRESS ENTER WHEN READY.":INPUT Q +2817 ' IF ZD$="Y" THEN CMD"T" +2820 WRITE #-1,CI,CN(0),B(0),D$(0) +2830 FOR I=1 TO CN(0) +2835 ' IF ZD$="Y" THEN CMD"T" +2840 GOSUB 1245 +2850 NEXT I +2860 RETURN +2900 REM SUBROUTINE FOR OUTPUTTING OLD CHECKBOOK TO DISKETTE +2905 CLS:PRINT CF$;" IS THE PRESENT FILE." +2910 INPUT"ENTER THE DISK FILE NAME FOR OUTPUT ";CF$ +2915 OPEN"O",1,CF$ +2920 WRITE # 1,CI,CN(0),B(0),D$(0) +2930 FOR I=1 TO CN(0):GOSUB 1350: NEXT I +2955 CLOSE 1 +2960 RETURN +3000 REM SUBROUTINE TO REVIEW EXPENSE CATEGORIES +3010 PRINT "CATEGORY DESCRIPTION" +3020 PRINT " 1. LOAN PAYMENT" +3022 PRINT " 2. BANK CARD PAYMENT" +3024 PRINT " 3. MEDICAL EXPENSE" +3025 REM THIS SPACE IS TO PUT IN CATEGORIES & DESCRIPTIONS IN +3026 PRINT " 4. HOUSEKEEPING MONEY" +3028 PRINT " 5. MORTGAGE +3030 PRINT " 6. HOME EXPENSE,UTILITIES,ETC." +3050 PRINT " 7. STORE CHARGE CARD PAYMENT" +3052 PRINT " 8. INSURANCE" +3060 PRINT " 50. PAYCHECK DEPOSIT " +3062 PRINT " 51. CONSULTING FEE " +3064 PRINT " 52. MEDICAL REIMBURSEMENT" +3066 PRINT " 53. OTHER BUSINESS INCOME" +3068 PRINT " 54. MISC. DEPOSITS" +3070 PRINT @ 230 ,"9. BUSINESS EXPENSE "; +3072 PRINT @ 294,"10. OTHER EXPENSE "; +3088 PRINT @ 896," " +3090 INPUT "PRESS ENTER TO RETURN ";Z3 +3099 RETURN +3200 REM SUBROUTINE TO REVIEW CHECKBOOK +3204 INPUT"IS OUTPUT ON LINE PRINTER DESIRED(Y/N)";Z2$ +3206 IF Z2$<>"Y" AND Z2$<>"N" THEN PRINT"INPUT ERROR!":GOTO 3204 +3210 CLS +3215 I=1 +3220 GOSUB 1100 +3230 GOSUB 1260 +3240 FOR I=1 TO CN(0) +3250 GOSUB 1200 +3255 IF Z2$="Y" THEN GOTO 3270 +3260 IF I/10=INT(I/10) AND I<>0 THEN GOSUB 3300 +3270 NEXT I +3280 PRINT:INPUT"THE END. PRESS ENTER TO RETURN TO MENU.";Z3 +3290 RETURN +3300 REM SUBROUTINE FOR TEN ENTRY SCREEN DISPLAY +3310 IF I=CN(0) RETURN +3320 PRINT +3330 INPUT "PRESS ENTER FOR MORE ENTRIES.";Z3 +3335 CLS:GOSUB 1100 +3340 RETURN +3500 REM SUBROUTINE FOR LISTING BY CATEGORIES +3502 CLS:INPUT"IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +3504 IF Z2$<>"Y" AND Z2$<>"N" THEN GOTO 3502 +3505 REM E1 IS TOTAL OF ITEM +3506 E1=0 +3510 INPUT "INPUT CATEGORY NUMBER OF INTEREST";Z5 +3520 GOSUB 1100 +3530 FOR I=1 TO CN(0) +3540 IF T(I)=Z5 GOTO 3560 +3550 GOTO 3580 +3560 GOSUB 1200 +3570 E1=E1+A(I) +3580 NEXT I +3590 PRINT:PRINT "TOTAL FOR THIS ITEM =$";E1 +3592 IF Z2$="Y" THEN LPRINT:LPRINT"TOTAL FOR THIS ITEM =$";E1 +3595 PRINT"PRESS ENTER TO RETURN TO MENU";:INPUT Z3 +3599 RETURN +3900 REM SUBROUTINE TO END +3905 CLS +3910 PRINT "ARE YOU SURE YOU WANT TO END(Y/N)";:INPUT Z3$ +3920 IF Z3$="N" THEN RETURN +3930 IF Z3$="Y" THEN END +3940 PRINT "INPUT ERROR.TRY AGAIN.":GOTO 3910 +4000 REM EDIT ROUTINE +4005 Z2$="" +4010 CLS:INPUT"ENTER ITEM NUMBER OF ITEM TO EDIT(-1 TO END)";IT +4015 IF IT=-1 THEN RETURN +4020 IF IT<0 OR IT>CN(0) OR IT<>INT(IT) THEN PRINT"INPUT ERROR!":FOR JJ=1 TO 300:NEXT:GOTO 4010 +4030 I=IT:GOSUB 1100:GOSUB 1200 +4033 ZA$="" +4035 INPUT"PRESS Y & IF EDIT DESIRED, JUST IF NOT";ZA$ +4037 IF ZA$<>"Y" THEN GOTO 4005 +4040 I=CN(0)+1 +4042 IF IT=0 THEN GOTO 4200 +4045 P$(I)=P$(IT):T(I)=T(IT):A(I)=A(IT):CN(I)=CN(IT) +4050 PRINT :INPUT"CHECK # ";CN(I) +4060 ZJ=99:GOSUB 1500 +4070 ZJ=0 +4080 IF Z8$="E" THEN GOTO 4000 +4085 B=B(IT):REM OLD BALANCE +4090 CN(IT)=CN(I):P$(IT)=P$(I):T(IT)=T(I):A(IT)=A(I):B(IT)=B(I) +4100 IF B=B(IT) THEN RETURN +4110 FOR I=IT+1 TO CN(0): B(I)=B(I)+(B(IT)-B):NEXT +4115 RETURN +4200 INPUT "INITIAL BALANCE ";B(I) +4210 INPUT "INITIAL DATE ";D$(I) +4213 ZA$="" +4215 INPUT"IF OK PRESS Y AND ELSE JUST ";ZA$ +4220 IF ZA$<>"Y" THEN RETURN +4230 D$(0)=D$(I):B=B(0):B(0)=B(I) +4235 IF B=B(0) THEN RETURN +4240 FOR I=1 TO CN(0): B(I)=B(I)+(B(0)-B):NEXT +4245 RETURN diff --git a/BP100/CHECKBK1.DAT b/BP100/CHECKBK1.DAT new file mode 100644 index 0000000..efcb195 --- /dev/null +++ b/BP100/CHECKBK1.DAT @@ -0,0 +1,3 @@ + 5001, 2, 100,"01/01/01" +-1,"01/02/01","PAY", 50, 3456.78, 3556.78 + 5000,"01/03/01","MORTGAGE LLC", 5, 2987.65, 569.13 diff --git a/BP100/CHECKBK1.INP b/BP100/CHECKBK1.INP new file mode 100644 index 0000000..3eeeea9 --- /dev/null +++ b/BP100/CHECKBK1.INP @@ -0,0 +1,42 @@ + +Y +1 +100.00 +5000 +01/01/01 +01/02/01 +D +PAY +0 + +50 +3456.78 + +Y +01/03/01 +C +MORTGAGE LLC +0 + +5 +2987.65 + +N +9 +CHECKBK1.DAT +8 +CHECKBK1.DAT + +6 +Y + +7 +Y +50 + +7 +Y +5 + +11 +Y diff --git a/BP100/CHECKBK1.OUT b/BP100/CHECKBK1.OUT new file mode 100644 index 0000000..6d913d7 --- /dev/null +++ b/BP100/CHECKBK1.OUT @@ -0,0 +1,227 @@ + CHECKBOOK MAINTENANCE PROGRAM + BY DR. PETER SHENKIN +****************************************************** + THIS SELF-DOCUMENTING PROGRAM WILL KEEP TRACK OF ALL + CHECKBOOK ITEMS. dEPOSITS AND EXPENSES MAY BE + CATEGORIZED. UP TO 100 CATEGORIES ARE ALLOWED. + CATEGORIES ENTERED FROM PROG. LINES 3020-3089 + CHECKBOOK ITEMS MAY BE STORED ON CASSETTE OR DISKETTE + AND READ IN FROM CASSETTE OR DISKETTE. + AT PRESENT DIMENSIONING IS SET UP FOR A MAXIMUM OF + 120 ITEMS IN YOUR CHECKBOOK AT ANY ONE TIME. THIS MAY BE + CHANGED BY CHANGING DIMENSION VARIABLE V IN LINE 101 + TO RUN PROGRAM DELETE REM STATEMENTS FOR MEMORY SPACE. + PRESS ENTER TO BEGIN.THERE SHOULD BE NO PROBLEM? +ARE DISK DRIVE(S) IN USE(Y/N)? Y + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 1 +INITIAL BALANCE? 100.00 +INITIAL CHECK NUMBER? 5000 +INPUT INITIAL DATE IN FORM MM/DD/YY? 01/01/01 +INPUT DATE ? 01/02/01 +INPUT C FOR CHECK,D FOR DEP.,CM FOR MISC. CHARGE? D +WHAT WAS DEPOSITED ? PAY +DEPOSIT CATEGORY TYPE(0 TO SEE CATEGORIES)? 0 +CATEGORY DESCRIPTION + 1. LOAN PAYMENT + 2. BANK CARD PAYMENT + 3. MEDICAL EXPENSE + 4. HOUSEKEEPING MONEY + 5. MORTGAGE + 6. HOME EXPENSE,UTILITIES,ETC. + 7. STORE CHARGE CARD PAYMENT + 8. INSURANCE + 50. PAYCHECK DEPOSIT + 51. CONSULTING FEE + 52. MEDICAL REIMBURSEMENT + 53. OTHER BUSINESS INCOME + 54. MISC. DEPOSITS +9. BUSINESS EXPENSE 10. OTHER EXPENSE +PRESS ENTER TO RETURN ? +DEPOSIT CATEGORY TYPE(0 TO SEE CATEGORIES)? 50 +AMOUNT OF DEPOSIT ? 3456.78 + + 01/01/01 $100.00 + -1 01/02/01 PAY 50 $3456.78 $3556.78 + + + + +IF ERROR INPUT E.OTHERWISE ENTER? +ANY MORE ENTRIES (Y/N)? Y +INPUT DATE ? 01/03/01 +INPUT C FOR CHECK,D FOR DEP.,CM FOR MISC. CHARGE? C +CHECK ISSUED TO? MORTGAGE LLC +CHECK CATEGORY TYPE(0 TO SEE CATEGORIES)? 0 +CATEGORY DESCRIPTION + 1. LOAN PAYMENT + 2. BANK CARD PAYMENT + 3. MEDICAL EXPENSE + 4. HOUSEKEEPING MONEY + 5. MORTGAGE + 6. HOME EXPENSE,UTILITIES,ETC. + 7. STORE CHARGE CARD PAYMENT + 8. INSURANCE + 50. PAYCHECK DEPOSIT + 51. CONSULTING FEE + 52. MEDICAL REIMBURSEMENT + 53. OTHER BUSINESS INCOME + 54. MISC. DEPOSITS +9. BUSINESS EXPENSE 10. OTHER EXPENSE +PRESS ENTER TO RETURN ? +CHECK CATEGORY TYPE(0 TO SEE CATEGORIES)? 5 +CHECK AMOUNT? 2987.65 + + 01/02/01 $3556.78 +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + + + + +IF ERROR INPUT E.OTHERWISE ENTER? +ANY MORE ENTRIES (Y/N)? N + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 9 + IS THE PRESENT FILE. +ENTER THE DISK FILE NAME FOR OUTPUT ? CHECKBK1.DAT + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 8 +WHAT IS THE NAME OF THE DISK CHECK FILE? CHECKBK1.DAT +PRESS ENTER WHEN DISKETTE WITH CHECKBK1.DAT IS READY? +I= 1 +I= 2 + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 6 +IS OUTPUT ON LINE PRINTER DESIRED(Y/N)? Y + + 01/01/01 $100.00 + -1 01/02/01 PAY 50 $3456.78 $3556.78 +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + +THE END. PRESS ENTER TO RETURN TO MENU.? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 7 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +INPUT CATEGORY NUMBER OF INTEREST? 50 + + -1 01/02/01 PAY 50 $3456.78 $3556.78 + +TOTAL FOR THIS ITEM =$ 3456.78 +PRESS ENTER TO RETURN TO MENU? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 7 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +INPUT CATEGORY NUMBER OF INTEREST? 5 + +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + +TOTAL FOR THIS ITEM =$ 2987.65 +PRESS ENTER TO RETURN TO MENU? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 11 +ARE YOU SURE YOU WANT TO END(Y/N)? Y diff --git a/BP100/CHECKBK1.dif b/BP100/CHECKBK1.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/CHECKBK1.run b/BP100/CHECKBK1.run new file mode 100644 index 0000000..d692d86 --- /dev/null +++ b/BP100/CHECKBK1.run @@ -0,0 +1,227 @@ + CHECKBOOK MAINTENANCE PROGRAM + BY DR. PETER SHENKIN +****************************************************** + THIS SELF-DOCUMENTING PROGRAM WILL KEEP TRACK OF ALL + CHECKBOOK ITEMS. dEPOSITS AND EXPENSES MAY BE + CATEGORIZED. UP TO 100 CATEGORIES ARE ALLOWED. + CATEGORIES ENTERED FROM PROG. LINES 3020-3089 + CHECKBOOK ITEMS MAY BE STORED ON CASSETTE OR DISKETTE + AND READ IN FROM CASSETTE OR DISKETTE. + AT PRESENT DIMENSIONING IS SET UP FOR A MAXIMUM OF + 120 ITEMS IN YOUR CHECKBOOK AT ANY ONE TIME. THIS MAY BE + CHANGED BY CHANGING DIMENSION VARIABLE V IN LINE 101 + TO RUN PROGRAM DELETE REM STATEMENTS FOR MEMORY SPACE. + PRESS ENTER TO BEGIN.THERE SHOULD BE NO PROBLEM? +ARE DISK DRIVE(S) IN USE(Y/N)? Y + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 1 +INITIAL BALANCE? 100.00 +INITIAL CHECK NUMBER? 5000 +INPUT INITIAL DATE IN FORM MM/DD/YY? 01/01/01 +INPUT DATE ? 01/02/01 +INPUT C FOR CHECK,D FOR DEP.,CM FOR MISC. CHARGE? D +WHAT WAS DEPOSITED ? PAY +DEPOSIT CATEGORY TYPE(0 TO SEE CATEGORIES)? 0 +CATEGORY DESCRIPTION + 1. LOAN PAYMENT + 2. BANK CARD PAYMENT + 3. MEDICAL EXPENSE + 4. HOUSEKEEPING MONEY + 5. MORTGAGE + 6. HOME EXPENSE,UTILITIES,ETC. + 7. STORE CHARGE CARD PAYMENT + 8. INSURANCE + 50. PAYCHECK DEPOSIT + 51. CONSULTING FEE + 52. MEDICAL REIMBURSEMENT + 53. OTHER BUSINESS INCOME + 54. MISC. DEPOSITS +9. BUSINESS EXPENSE 10. OTHER EXPENSE +PRESS ENTER TO RETURN ? +DEPOSIT CATEGORY TYPE(0 TO SEE CATEGORIES)? 50 +AMOUNT OF DEPOSIT ? 3456.78 + + 01/01/01 $100.00 + -1 01/02/01 PAY 50 $3456.78 $3556.78 + + + + +IF ERROR INPUT E.OTHERWISE ENTER? +ANY MORE ENTRIES (Y/N)? Y +INPUT DATE ? 01/03/01 +INPUT C FOR CHECK,D FOR DEP.,CM FOR MISC. CHARGE? C +CHECK ISSUED TO? MORTGAGE LLC +CHECK CATEGORY TYPE(0 TO SEE CATEGORIES)? 0 +CATEGORY DESCRIPTION + 1. LOAN PAYMENT + 2. BANK CARD PAYMENT + 3. MEDICAL EXPENSE + 4. HOUSEKEEPING MONEY + 5. MORTGAGE + 6. HOME EXPENSE,UTILITIES,ETC. + 7. STORE CHARGE CARD PAYMENT + 8. INSURANCE + 50. PAYCHECK DEPOSIT + 51. CONSULTING FEE + 52. MEDICAL REIMBURSEMENT + 53. OTHER BUSINESS INCOME + 54. MISC. DEPOSITS +9. BUSINESS EXPENSE 10. OTHER EXPENSE +PRESS ENTER TO RETURN ? +CHECK CATEGORY TYPE(0 TO SEE CATEGORIES)? 5 +CHECK AMOUNT? 2987.65 + + 01/02/01 $3556.78 +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + + + + +IF ERROR INPUT E.OTHERWISE ENTER? +ANY MORE ENTRIES (Y/N)? N + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 9 + IS THE PRESENT FILE. +ENTER THE DISK FILE NAME FOR OUTPUT ? CHECKBK1.DAT + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 8 +WHAT IS THE NAME OF THE DISK CHECK FILE? CHECKBK1.DAT +PRESS ENTER WHEN DISKETTE WITH CHECKBK1.DAT IS READY? +I= 1 +I= 2 + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 6 +IS OUTPUT ON LINE PRINTER DESIRED(Y/N)? Y + + 01/01/01 $100.00 + -1 01/02/01 PAY 50 $3456.78 $3556.78 +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + +THE END. PRESS ENTER TO RETURN TO MENU.? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 7 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +INPUT CATEGORY NUMBER OF INTEREST? 50 + + -1 01/02/01 PAY 50 $3456.78 $3556.78 + +TOTAL FOR THIS ITEM =$ 3456.78 +PRESS ENTER TO RETURN TO MENU? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 7 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +INPUT CATEGORY NUMBER OF INTEREST? 5 + +5000 01/03/01 MORTGAGE LLC 5 $2987.65 $569.13 + +TOTAL FOR THIS ITEM =$ 2987.65 +PRESS ENTER TO RETURN TO MENU? + CHECKBOOK MAINTENANCE PROGRAM + +CHOOSE NUMBER OF DESIRED OPTION + +1.SET UP NEW CHECKBOOK +2.INPUT OLD CHECKBOOK FROM TAPE +3.ADD TO OLD CHECKBOOK +4.OUTPUT CHECKBOOK TO CASSETTE +5.REVIEW OF CHECK EXPENSE CATEGORIES +6.PRINT CHECKBOOK 10 ENTRIES AT A TIME OR LINEPRINT. +7.LIST BY CATEGORY +8.LOAD OLD CHECKBOOK FROM DISKETTE +9.OUTPUT CHECKBOOK TO DISKETTE +10.EDIT CHECKBOOK ITEM +11.END THIS PROGRAM + +OPTION # ? 11 +ARE YOU SURE YOU WANT TO END(Y/N)? Y diff --git a/BP100/COMPBAL.80 b/BP100/COMPBAL.80 new file mode 100644 index 0000000..c2c76a5 --- /dev/null +++ b/BP100/COMPBAL.80 @@ -0,0 +1,25 @@ + LOAN RATE WITH COMPENSATING BALANCE + +WHEN A BUSINESSMAN BORROWS MONEY FROM A BANK HE IS SOMETIMES +REQUIRED TO KEEP A COMPENSATING BALANCE IN THE ACCOUNT. +A COMPENSATING BALANCE IS AN AMOUNT THAT THE BUSINESSMAN +PAYS INTEREST ON(AS HE HAS BORROWED IT) BUT WHICH HE +CANNOT WITHDRAW FROM HIS ACCOUNT. IF A 15% COMPENSATING +BALANCE IS REQUIRED,E.G. THIS MEANS THAT FOR EVERY $1,000 +BORROWED THE BUSINESSMAN CAN ONLY WRITE CHECKS FOR $850. +THIS IS ONE METHOD A BANK USES TO RAISE THE EFFECTIVE INTEREST +RATE ON A LOAN. THE NOMINAL RATE ,IN THIS CASE, IS LOWER +THAN THE 'TRUE' EFFECTIVE RATE. + +PRESS ENTER TO BEGIN? +INPUT PROCEEDS OF LOAN IN $ ? 123456.78 +INPUT COMPENSATING BALANCE % ? 3.45 +NOMINAL INTEREST RATE ON LOAN(%) ? 6.78 +NORMAL ACCOUNT BALANCE WITH NO LOAN $? 34567.89 + +NOMINAL COMPENSATING BALANCE AMOUNT $0.00 +TRUE COMPENSATING BALANCE AMOUNT -$34567.89 +AVAILABLE FUNDS FROM LOAN $153765.41 +EFFECTIVE INTEREST RATE 5.44% + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/COMPBAL.BAS b/BP100/COMPBAL.BAS new file mode 100644 index 0000000..5df9c17 --- /dev/null +++ b/BP100/COMPBAL.BAS @@ -0,0 +1,33 @@ +1 REM COMPBAL +5 CLEAR 1000 +10 CLS +20 PRINT TAB(5); "LOAN RATE WITH COMPENSATING BALANCE":PRINT +30 PRINT"WHEN A BUSINESSMAN BORROWS MONEY FROM A BANK HE IS SOMETIMES +35 PRINT "REQUIRED TO KEEP A COMPENSATING BALANCE IN THE ACCOUNT. +40 PRINT"A COMPENSATING BALANCE IS AN AMOUNT THAT THE BUSINESSMAN +45 PRINT"PAYS INTEREST ON(AS HE HAS BORROWED IT) BUT WHICH HE +50 PRINT"CANNOT WITHDRAW FROM HIS ACCOUNT. IF A 15% COMPENSATING +55 PRINT"BALANCE IS REQUIRED,E.G. THIS MEANS THAT FOR EVERY $1,000 +60 PRINT"BORROWED THE BUSINESSMAN CAN ONLY WRITE CHECKS FOR $850. +65 PRINT"THIS IS ONE METHOD A BANK USES TO RAISE THE EFFECTIVE INTEREST +70 PRINT"RATE ON A LOAN. THE NOMINAL RATE ,IN THIS CASE, IS LOWER +75 PRINT"THAN THE 'TRUE' EFFECTIVE RATE. +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT"INPUT PROCEEDS OF LOAN IN $ ";AMOUNT +120 INPUT"INPUT COMPENSATING BALANCE % ";CP:CP=CP/100 +130 INPUT"NOMINAL INTEREST RATE ON LOAN(%) ";NI:NI=NI/100 +140 INPUT"NORMAL ACCOUNT BALANCE WITH NO LOAN $";NA +150 PRINT +170 AF=AMOUNT*(1-CP)+NA:REM AVAILABLE FUNDS +180 TI=AMOUNT*NI:REM TOTAL INTEREST +190 EF = TI/AF:REM EFFECTIVE INTEREST RATE. +260 F$(1)="% % $$######.##" +265 F$(2)="% % ###.## " +268 PRINT USING F$(1);"NOMINAL COMPENSATING BALANCE AMOUNT",AM*CP +269 PRINT USING F$(1);"TRUE COMPENSATING BALANCE AMOUNT",AM*CP-NA +270 PRINT USING F$(1);"AVAILABLE FUNDS FROM LOAN",AF +280 PRINT USING F$(2);"EFFECTIVE INTEREST RATE ";100*EF;:PRINT "%" +290 PRINT:INPUT"PRESS ENTER FOR MORE COMPUTATION";Z9$ +295 IF Z9$ = "-1" THEN END +300 GOTO 100 diff --git a/BP100/COMPBAL.INP b/BP100/COMPBAL.INP new file mode 100644 index 0000000..1405d27 --- /dev/null +++ b/BP100/COMPBAL.INP @@ -0,0 +1,6 @@ + +123456.78 +3.45 +6.78 +34567.89 +-1 diff --git a/BP100/COMPBAL.OUT b/BP100/COMPBAL.OUT new file mode 100644 index 0000000..2a2d81e --- /dev/null +++ b/BP100/COMPBAL.OUT @@ -0,0 +1,25 @@ + LOAN RATE WITH COMPENSATING BALANCE + +WHEN A BUSINESSMAN BORROWS MONEY FROM A BANK HE IS SOMETIMES +REQUIRED TO KEEP A COMPENSATING BALANCE IN THE ACCOUNT. +A COMPENSATING BALANCE IS AN AMOUNT THAT THE BUSINESSMAN +PAYS INTEREST ON(AS HE HAS BORROWED IT) BUT WHICH HE +CANNOT WITHDRAW FROM HIS ACCOUNT. IF A 15% COMPENSATING +BALANCE IS REQUIRED,E.G. THIS MEANS THAT FOR EVERY $1,000 +BORROWED THE BUSINESSMAN CAN ONLY WRITE CHECKS FOR $850. +THIS IS ONE METHOD A BANK USES TO RAISE THE EFFECTIVE INTEREST +RATE ON A LOAN. THE NOMINAL RATE ,IN THIS CASE, IS LOWER +THAN THE 'TRUE' EFFECTIVE RATE. + +PRESS ENTER TO BEGIN? +INPUT PROCEEDS OF LOAN IN $ ? 123456.78 +INPUT COMPENSATING BALANCE % ? 3.45 +NOMINAL INTEREST RATE ON LOAN(%) ? 6.78 +NORMAL ACCOUNT BALANCE WITH NO LOAN $? 34567.89 + +NOMINAL COMPENSATING BALANCE AMOUNT $0.00 +TRUE COMPENSATING BALANCE AMOUNT -$34567.89 +AVAILABLE FUNDS FROM LOAN $153765.41 +EFFECTIVE INTEREST RATE 5.44% + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/COMPBAL.dif b/BP100/COMPBAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/COMPBAL.run b/BP100/COMPBAL.run new file mode 100644 index 0000000..c2c76a5 --- /dev/null +++ b/BP100/COMPBAL.run @@ -0,0 +1,25 @@ + LOAN RATE WITH COMPENSATING BALANCE + +WHEN A BUSINESSMAN BORROWS MONEY FROM A BANK HE IS SOMETIMES +REQUIRED TO KEEP A COMPENSATING BALANCE IN THE ACCOUNT. +A COMPENSATING BALANCE IS AN AMOUNT THAT THE BUSINESSMAN +PAYS INTEREST ON(AS HE HAS BORROWED IT) BUT WHICH HE +CANNOT WITHDRAW FROM HIS ACCOUNT. IF A 15% COMPENSATING +BALANCE IS REQUIRED,E.G. THIS MEANS THAT FOR EVERY $1,000 +BORROWED THE BUSINESSMAN CAN ONLY WRITE CHECKS FOR $850. +THIS IS ONE METHOD A BANK USES TO RAISE THE EFFECTIVE INTEREST +RATE ON A LOAN. THE NOMINAL RATE ,IN THIS CASE, IS LOWER +THAN THE 'TRUE' EFFECTIVE RATE. + +PRESS ENTER TO BEGIN? +INPUT PROCEEDS OF LOAN IN $ ? 123456.78 +INPUT COMPENSATING BALANCE % ? 3.45 +NOMINAL INTEREST RATE ON LOAN(%) ? 6.78 +NORMAL ACCOUNT BALANCE WITH NO LOAN $? 34567.89 + +NOMINAL COMPENSATING BALANCE AMOUNT $0.00 +TRUE COMPENSATING BALANCE AMOUNT -$34567.89 +AVAILABLE FUNDS FROM LOAN $153765.41 +EFFECTIVE INTEREST RATE 5.44% + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/CONDPROF.80 b/BP100/CONDPROF.80 new file mode 100644 index 0000000..8fe16e7 --- /dev/null +++ b/BP100/CONDPROF.80 @@ -0,0 +1,42 @@ + CONDITIONAL PROFIT TABLE + +THIS PROGRAM ASSUMES THERE ARE FROM 1 TO 6 STATES OF NATURE. +THERE ARE ALSO FROM 1 TO 6 POSSIBLE ACTIONS WE CAN TAKE. IF THE +STATE OF NATURE(S OF N) IS KNOWN THEN EACH ACTION LEADS TO +A KNOWN MONETARY RESULT. THIS RESULT IS A CONDITIONAL PROFIT. +FOR EXAMPLE, IF ACTION 3 LEADS TO A $35 PAYOFF WHEN STATE OF +NATURE 4 IS TRUE THEN 35 IS THE CONDITIONAL PROFIT OF ACTION +3 GIVEN STATE OF NATURE 4. THE FOLLOWING PROGRAM CONSTRUCTS +A MATRIX WITH ELEMENTS BEING THE CONDITIONAL PROFITS. +IN ADDITION THE PROBABILITY OF EACH S OF N IS ENTERED AND +THE EXPECTED VALUE OF EACH ACTION IS COMPUTED. + +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 2 + +ENTER PROBABILITY OF S OF N 1 ? 0.33 +ENTER PROBABILITY OF S OF N 2 ? 0.67 + + +ENTER NUMBER OF POSSIBLE ACTIONS(<=5)? 2 +NO PAYOFF MORE THAN 9999.99 + + +ACTION 1 + PAYOFF WHEN S OF N IS 1 ? 234.56 + PAYOFF WHEN S OF N IS 2 ? 543.21 + +ACTION 2 + PAYOFF WHEN S OF N IS 1 ? 831.74 + PAYOFF WHEN S OF N IS 2 ? 987.65 +COMPUTING + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + CONDITIONAL PAYOFFS OF ACTION GIVEN S OF N + +S N PR ACTION + ACTION 1 ACTION 2 + 1 0.33 234.56 831.74 + 2 0.67 543.21 987.65 + +EXP VAL. 441.36 936.20 diff --git a/BP100/CONDPROF.BAS b/BP100/CONDPROF.BAS new file mode 100644 index 0000000..08dfe82 --- /dev/null +++ b/BP100/CONDPROF.BAS @@ -0,0 +1,71 @@ +1 REM CONDPROF +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"CONDITIONAL PROFIT TABLE":PRINT +20 PRINT"THIS PROGRAM ASSUMES THERE ARE FROM 1 TO 6 STATES OF NATURE. +25 PRINT"THERE ARE ALSO FROM 1 TO 6 POSSIBLE ACTIONS WE CAN TAKE. IF THE +30 PRINT"STATE OF NATURE(S OF N) IS KNOWN THEN EACH ACTION LEADS TO +35 PRINT"A KNOWN MONETARY RESULT. THIS RESULT IS A CONDITIONAL PROFIT. +40 PRINT"FOR EXAMPLE, IF ACTION 3 LEADS TO A $35 PAYOFF WHEN STATE OF +45 PRINT"NATURE 4 IS TRUE THEN 35 IS THE CONDITIONAL PROFIT OF ACTION +50 PRINT"3 GIVEN STATE OF NATURE 4. THE FOLLOWING PROGRAM CONSTRUCTS +55 PRINT"A MATRIX WITH ELEMENTS BEING THE CONDITIONAL PROFITS. +60 PRINT"IN ADDITION THE PROBABILITY OF EACH S OF N IS ENTERED AND +70 PRINT"THE EXPECTED VALUE OF EACH ACTION IS COMPUTED. +95 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 D=6:REM MAXIMUM DIMENSION +102 DIM AA(D+2,D+2),PP(D),EE(D) +105 P=0 +110 CLS +120 INPUT"ENTER NUMBER OF POSSIBLE STATES OF NATURE";N +125 IF N<2 OR N>D OR N<>INT(N) THEN GOSUB 10000:GOTO 120 +127 PRINT +130 FOR I=1 TO N +135 PRINT"ENTER PROBABILITY OF S OF N";I;:INPUT PP(I) +140 P=P+PP(I) +150 NEXT I +160 IF P=1 THEN PRINT:GOTO 200 +170 PRINT:PRINT"PROBABILITIES DO NOT SUM TO 1." +175 INPUT"ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER";Z9 +180 IF Z9<>0 AND Z9<>1 THEN GOSUB 10000:GOTO 170 +185 IF Z9=0 THEN GOTO 105 +190 FOR I=1 TO N:PP(I)=PP(I)/P:NEXT:P=1 +200 PRINT:INPUT"ENTER NUMBER OF POSSIBLE ACTIONS(<=5)";M +205 IF M<2 OR M>6 OR M<>INT(M) THEN GOSUB 10000:GOTO 200 +210 PRINT "NO PAYOFF MORE THAN 9999.99":PRINT +220 FOR J=1 TO M +225 PRINT +230 PRINT"ACTION";J +240 FOR I=1 TO N +250 PRINT TAB(5);"PAYOFF WHEN S OF N IS";I;:INPUT AA(I,J) +260 NEXT I +270 NEXT J +300 REM COMPUTATION +310 CLS:PRINT @ 340,"COMPUTING" +400 FOR J=1 TO M +410 FOR I=1 TO N:EE(J)=EE(J)+AA(I,J)*PP(I):NEXT I:REM EXP. VAL. +420 NEXT J +495 REM PRINT +500 CLS +510 F$(1)=" ACTION # " +515 F$(2)=" #####.## " +520 F$(3)=" CONDITIONAL PAYOFFS OF ACTION GIVEN S OF N " +521 F$(4)="S N PR ACTION" +525 PRINT:INPUT"IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +527 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 525 +530 PRINT F$(3):PRINT:PRINT F$(4):IF Z2$="Y" THEN LPRINT F$(3):LPRINT" ":LPRINT F$(4) +535 PRINT TAB(9);"";:FOR I=1 TO M:PRINT USING F$(1);I;:NEXT:PRINT +537 IF Z2$="Y" THEN LPRINT TAB(9);"";:FOR I=1 TO M:LPRINT USING F$(1);I;:NEXT:LPRINT" " +540 FOR I=1 TO N +550 PRINT USING "## #.## ";I,PP(I); +555 IF Z2$="Y" THEN LPRINT USING "## #.## ";I,PP(I); +560 FOR J=1 TO M:PRINT USING F$(2);AA(I,J);:NEXT:PRINT +562 IF Z2$="Y" THEN FOR J=1 TO M:LPRINT USING F$(2);AA(I,J);:NEXT:LPRINT" " +563 NEXT +564 PRINT:IF Z2$="Y" THEN LPRINT" " +565 PRINT "EXP VAL.";TAB(9);"";: +570 IF Z2$="Y" THEN LPRINT "EXP VAL.";TAB(9);"";: +575 FOR I=1 TO M:PRINT USING F$(2);EE(I);:NEXT +580 IF Z2$="Y" THEN FOR I=1 TO M:LPRINT USING F$(2);EE(I);:NEXT +600 PRINT:END +10000 PRINT"INPUT ERROR!TRY AGAIN!":FOR JJ=1 TO 300:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/CONDPROF.INP b/BP100/CONDPROF.INP new file mode 100644 index 0000000..34ac998 --- /dev/null +++ b/BP100/CONDPROF.INP @@ -0,0 +1,10 @@ + +2 +0.33 +0.67 +2 +234.56 +543.21 +831.74 +987.65 +Y diff --git a/BP100/CONDPROF.OUT b/BP100/CONDPROF.OUT new file mode 100644 index 0000000..9e07f3f --- /dev/null +++ b/BP100/CONDPROF.OUT @@ -0,0 +1,42 @@ + CONDITIONAL PROFIT TABLE + +THIS PROGRAM ASSUMES THERE ARE FROM 1 TO 6 STATES OF NATURE. +THERE ARE ALSO FROM 1 TO 6 POSSIBLE ACTIONS WE CAN TAKE. IF THE +STATE OF NATURE(S OF N) IS KNOWN THEN EACH ACTION LEADS TO +A KNOWN MONETARY RESULT. THIS RESULT IS A CONDITIONAL PROFIT. +FOR EXAMPLE, IF ACTION 3 LEADS TO A $35 PAYOFF WHEN STATE OF +NATURE 4 IS TRUE THEN 35 IS THE CONDITIONAL PROFIT OF ACTION +3 GIVEN STATE OF NATURE 4. THE FOLLOWING PROGRAM CONSTRUCTS +A MATRIX WITH ELEMENTS BEING THE CONDITIONAL PROFITS. +IN ADDITION THE PROBABILITY OF EACH S OF N IS ENTERED AND +THE EXPECTED VALUE OF EACH ACTION IS COMPUTED. + +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 2 + +ENTER PROBABILITY OF S OF N 1 ? 0.33 +ENTER PROBABILITY OF S OF N 2 ? 0.67 + + +ENTER NUMBER OF POSSIBLE ACTIONS(<=5)? 2 +NO PAYOFF MORE THAN 9999.99 + + +ACTION 1 + PAYOFF WHEN S OF N IS 1 ? 234.56 + PAYOFF WHEN S OF N IS 2 ? 543.21 + +ACTION 2 + PAYOFF WHEN S OF N IS 1 ? 831.74 + PAYOFF WHEN S OF N IS 2 ? 987.65 +COMPUTING + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + CONDITIONAL PAYOFFS OF ACTION GIVEN S OF N + +S N PR ACTION + ACTION 1 ACTION 2 + 1 0.33 234.56 831.74 + 2 0.67 543.21 987.65 + +EXP VAL. 441.36 936.20 diff --git a/BP100/CONDPROF.dif b/BP100/CONDPROF.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/CONDPROF.run b/BP100/CONDPROF.run new file mode 100644 index 0000000..8fe16e7 --- /dev/null +++ b/BP100/CONDPROF.run @@ -0,0 +1,42 @@ + CONDITIONAL PROFIT TABLE + +THIS PROGRAM ASSUMES THERE ARE FROM 1 TO 6 STATES OF NATURE. +THERE ARE ALSO FROM 1 TO 6 POSSIBLE ACTIONS WE CAN TAKE. IF THE +STATE OF NATURE(S OF N) IS KNOWN THEN EACH ACTION LEADS TO +A KNOWN MONETARY RESULT. THIS RESULT IS A CONDITIONAL PROFIT. +FOR EXAMPLE, IF ACTION 3 LEADS TO A $35 PAYOFF WHEN STATE OF +NATURE 4 IS TRUE THEN 35 IS THE CONDITIONAL PROFIT OF ACTION +3 GIVEN STATE OF NATURE 4. THE FOLLOWING PROGRAM CONSTRUCTS +A MATRIX WITH ELEMENTS BEING THE CONDITIONAL PROFITS. +IN ADDITION THE PROBABILITY OF EACH S OF N IS ENTERED AND +THE EXPECTED VALUE OF EACH ACTION IS COMPUTED. + +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 2 + +ENTER PROBABILITY OF S OF N 1 ? 0.33 +ENTER PROBABILITY OF S OF N 2 ? 0.67 + + +ENTER NUMBER OF POSSIBLE ACTIONS(<=5)? 2 +NO PAYOFF MORE THAN 9999.99 + + +ACTION 1 + PAYOFF WHEN S OF N IS 1 ? 234.56 + PAYOFF WHEN S OF N IS 2 ? 543.21 + +ACTION 2 + PAYOFF WHEN S OF N IS 1 ? 831.74 + PAYOFF WHEN S OF N IS 2 ? 987.65 +COMPUTING + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + CONDITIONAL PAYOFFS OF ACTION GIVEN S OF N + +S N PR ACTION + ACTION 1 ACTION 2 + 1 0.33 234.56 831.74 + 2 0.67 543.21 987.65 + +EXP VAL. 441.36 936.20 diff --git a/BP100/CVP.80 b/BP100/CVP.80 new file mode 100644 index 0000000..f6ad5fa --- /dev/null +++ b/BP100/CVP.80 @@ -0,0 +1,50 @@ + COST-VOLUME-PROFIT ANALYSIS + +THE BUSINESSMAN IS VERY INTERESTED IN INCOME AFTER TAXES. +SOMETIMES IT IS VERY DIFFICULT TO FIND THIS. VARIABLES WHICH +MUST BE CONSIDERED INCLUDE VARIABLE COSTS PER UNIT, +FIXED COSTS, TAX RATE,SALES DOLLARS, SALES PRICE PER UNIT. +THE CURRENT PROGRAM ALSO USES RATIO OF VARIABLE COSTS PER UNIT +TO SALES PRICE PER UNIT. +WITH THE ABOVE THIS PROGRAM COMPUTES INCOME AFTER TAXES. +AS AN OPTION IT CAN ALSO COMPUTE SALES DOLLARS NEEDED FOR +A SPECIFIED INCOME. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 1 +ENTER TOTAL FIXED COSTS IN DOLLARS ? 9876.54 +ENTER TAX RATE AS PER CENT ? 35 +ENTER RATIO OF VARIABLE COSTS PER UNIT TO SALES PR +ICE PER UNIT ? 0.25 +ENTER DESIRED INCOME LEVEL ? 123456 +TO REACH INCOME LEVEL $123456.00 YOU MUST SELL $266411.80 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 2 +ENTER TOTAL FIXED COSTS IN DOLLARS ? 4567 +ENTER TAX RATE AS PER CENT ? 22 +ENTER RATIO OF VARIABLE COSTS PER UNIT TO SALES PR +ICE PER UNIT ? 0.15 +ENTER SPECIFIED SALES LEVEL ? 234567 +FOR SALES LEVEL $234567.00 YOUR INCOME WILL EQUAL $151955.66 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 0 diff --git a/BP100/CVP.BAS b/BP100/CVP.BAS new file mode 100644 index 0000000..0ad12c5 --- /dev/null +++ b/BP100/CVP.BAS @@ -0,0 +1,45 @@ +1 REM CVP +5 CLEAR 1000 +10 CLS +20 PRINT TAB(10); "COST-VOLUME-PROFIT ANALYSIS":PRINT +30 PRINT"THE BUSINESSMAN IS VERY INTERESTED IN INCOME AFTER TAXES. +35 PRINT"SOMETIMES IT IS VERY DIFFICULT TO FIND THIS. VARIABLES WHICH +40 PRINT"MUST BE CONSIDERED INCLUDE VARIABLE COSTS PER UNIT, +45 PRINT"FIXED COSTS, TAX RATE,SALES DOLLARS, SALES PRICE PER UNIT. +50 PRINT"THE CURRENT PROGRAM ALSO USES RATIO OF VARIABLE COSTS PER UNIT +55 PRINT"TO SALES PRICE PER UNIT. +60 PRINT"WITH THE ABOVE THIS PROGRAM COMPUTES INCOME AFTER TAXES. +65 PRINT"AS AN OPTION IT CAN ALSO COMPUTE SALES DOLLARS NEEDED FOR +70 PRINT"A SPECIFIED INCOME. +90 PRINT +95 INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 PRINT TAB(10); "MENU":PRINT +115 PRINT"0. QUIT +120 PRINT"1. DETERMINE SALES FOR SPECIFIED INCOME +130 PRINT"2. DETERMINE INCOME FOR SPECIFIED SALES +150 PRINT:INPUT"ENTER YOUR CHOICE";Z9 +155 IF Z9 = 0 THEN END +160 ON Z9 GOSUB 200,300 +170 GOTO 100 +200 REM FIND SALES FOR SPECIFIED INCOME +210 CLS:GOSUB 500 +220 INPUT"ENTER DESIRED INCOME LEVEL ";I +230 S = (1/(1-R))*(FC + I/(1-TX)) +240 F$(1)="TO REACH INCOME LEVEL $$######.## YOU MUST SELL $$#######.## IN GOODS" +250 PRINT USING F$(1);I,S +290 PRINT:INPUT"PRESS ENTER TO CONTINUE";Z9$ +295 RETURN +300 REM DETERMINE INCOME FOR SPECIFIED SALES +310 CLS:GOSUB 500 +320 INPUT"ENTER SPECIFIED SALES LEVEL ";S +330 I = (1-TX)*(S*(1-R)-FC) +340 F$(1)="FOR SALES LEVEL $$#######.## YOUR INCOME WILL EQUAL $$#####.##" +350 PRINT USING F$(1);S,I +390 PRINT:INPUT"PRESS ENTER TO CONTINUE";Z9$ +395 RETURN +500 REM INPUT SUBROUTINE +510 INPUT"ENTER TOTAL FIXED COSTS IN DOLLARS ";FC +520 INPUT"ENTER TAX RATE AS PER CENT ";TX:TX=TX/100 +530 INPUT"ENTER RATIO OF VARIABLE COSTS PER UNIT TO SALES PRICE PER UNIT ";R +590 RETURN diff --git a/BP100/CVP.INP b/BP100/CVP.INP new file mode 100644 index 0000000..1954a49 --- /dev/null +++ b/BP100/CVP.INP @@ -0,0 +1,14 @@ + +1 +9876.54 +35 +0.25 +123456 + +2 +4567 +22 +0.15 +234567 + +0 diff --git a/BP100/CVP.OUT b/BP100/CVP.OUT new file mode 100644 index 0000000..95fef28 --- /dev/null +++ b/BP100/CVP.OUT @@ -0,0 +1,50 @@ + COST-VOLUME-PROFIT ANALYSIS + +THE BUSINESSMAN IS VERY INTERESTED IN INCOME AFTER TAXES. +SOMETIMES IT IS VERY DIFFICULT TO FIND THIS. VARIABLES WHICH +MUST BE CONSIDERED INCLUDE VARIABLE COSTS PER UNIT, +FIXED COSTS, TAX RATE,SALES DOLLARS, SALES PRICE PER UNIT. +THE CURRENT PROGRAM ALSO USES RATIO OF VARIABLE COSTS PER UNIT +TO SALES PRICE PER UNIT. +WITH THE ABOVE THIS PROGRAM COMPUTES INCOME AFTER TAXES. +AS AN OPTION IT CAN ALSO COMPUTE SALES DOLLARS NEEDED FOR +A SPECIFIED INCOME. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 1 +ENTER TOTAL FIXED COSTS IN DOLLARS ? 9876.54 +ENTER TAX RATE AS PER CENT ? 35 +ENTER RATIO OF VARIABLE COSTS PER UNIT TO SALES PR +ICE PER UNIT ? 0.25 +ENTER DESIRED INCOME LEVEL ? 123456 +TO REACH INCOME LEVEL $123456.00 YOU MUST SELL $266411.80 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 2 +ENTER TOTAL FIXED COSTS IN DOLLARS ? 4567 +ENTER TAX RATE AS PER CENT ? 22 +ENTER RATIO OF VARIABLE COSTS PER UNIT TO SALES PR +ICE PER UNIT ? 0.15 +ENTER SPECIFIED SALES LEVEL ? 234567 +FOR SALES LEVEL $234567.00 YOUR INCOME WILL EQUAL $151955.66 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 0 diff --git a/BP100/CVP.dif b/BP100/CVP.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/CVP.run b/BP100/CVP.run new file mode 100644 index 0000000..f6ad5fa --- /dev/null +++ b/BP100/CVP.run @@ -0,0 +1,50 @@ + COST-VOLUME-PROFIT ANALYSIS + +THE BUSINESSMAN IS VERY INTERESTED IN INCOME AFTER TAXES. +SOMETIMES IT IS VERY DIFFICULT TO FIND THIS. VARIABLES WHICH +MUST BE CONSIDERED INCLUDE VARIABLE COSTS PER UNIT, +FIXED COSTS, TAX RATE,SALES DOLLARS, SALES PRICE PER UNIT. +THE CURRENT PROGRAM ALSO USES RATIO OF VARIABLE COSTS PER UNIT +TO SALES PRICE PER UNIT. +WITH THE ABOVE THIS PROGRAM COMPUTES INCOME AFTER TAXES. +AS AN OPTION IT CAN ALSO COMPUTE SALES DOLLARS NEEDED FOR +A SPECIFIED INCOME. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 1 +ENTER TOTAL FIXED COSTS IN DOLLARS ? 9876.54 +ENTER TAX RATE AS PER CENT ? 35 +ENTER RATIO OF VARIABLE COSTS PER UNIT TO SALES PR +ICE PER UNIT ? 0.25 +ENTER DESIRED INCOME LEVEL ? 123456 +TO REACH INCOME LEVEL $123456.00 YOU MUST SELL $266411.80 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 2 +ENTER TOTAL FIXED COSTS IN DOLLARS ? 4567 +ENTER TAX RATE AS PER CENT ? 22 +ENTER RATIO OF VARIABLE COSTS PER UNIT TO SALES PR +ICE PER UNIT ? 0.15 +ENTER SPECIFIED SALES LEVEL ? 234567 +FOR SALES LEVEL $234567.00 YOUR INCOME WILL EQUAL $151955.66 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SALES FOR SPECIFIED INCOME +2. DETERMINE INCOME FOR SPECIFIED SALES + +ENTER YOUR CHOICE? 0 diff --git a/BP100/DATE.80 b/BP100/DATE.80 new file mode 100644 index 0000000..4c83842 --- /dev/null +++ b/BP100/DATE.80 @@ -0,0 +1,17 @@ + NUMBER OF DAYS BETWEEN DATES + +THIS PROGRAM WILL DETERMINE THE NUMBER OF DAYS BETWEEN ANY +TWO CALENDAR DATES AFTER 1582. tHE PROGRAM IS SET UP SO +THAT THERE IS ONE DAY'S DIFFERENCE BETWEEN 2 CONSECUTIVE +DAYS. +INPUT IS JUST THE 2 GIVEN DATES. OUTPUT GIVES THE NUMBER +OF DAYS BETWEEN THE DATES. + +PRESS ENTER TO BEGIN? +INPUT DATE 1 IN FORM MM,DD,YYYY? 01,01,2015 +INPUT DATE 2 IN FORM MM,DD,YYYY? 01,02,2015 + +THE NUMBER OF DAYS BETWEEN 1 / 1 / 2015 AND + 1 / 2 / 2015 EQUALS 1 + +PRESS 1 FOR MORE FOR TRIALS, 0 TO END.? 0 diff --git a/BP100/DATE.BAS b/BP100/DATE.BAS new file mode 100644 index 0000000..2f673e6 --- /dev/null +++ b/BP100/DATE.BAS @@ -0,0 +1,41 @@ +5 REM PROGRAM DATE +12000 CLS +12093 REM DELETE LINES 12000-12105 TO WRITE AS SUBROUTINE +12095 REM DELETE LINES 20000 - TO WRITE AS SUBROUTINE +12100 GOTO 20000 +12105 CLS +12110 FOR I= 1 TO 2 +12115 REM REMOVE 12120 & 12130 TO WRITE AS SUBROUTINE +12120 PRINT "INPUT DATE ";I;" IN FORM MM,DD,YYYY"; +12130 INPUT M(I),D(I),Y(I) +12140 IF M(I)=1 OR M(I)=2 GOTO 12180 +12150 A1=365*Y(I) + D(I)+31*(M(I)-1) - INT(.4*M(I)+2.3) +12155 A2=INT(Y(I)/4)-INT(.75*(INT(Y(I)/100)+1)) +12160 GOTO 12190 +12180 A1=365*Y(I)+D(I)+31*(M(I)-1)+INT((Y(I)-1)/4) +12185 A2=-INT(.75*INT(((Y(I)-1)/100)+1)) +12190 F(I)=A1+A2 +12195 NEXT I +12197 F(3)=F(2)-F(1) +12198 REM RETURN HERE IF WRITTEN AS SUBROUTINE. F(3) IS CALCULATED NUMBER OF DAYS +12199 PRINT @ 320," " +12200 PRINT"THE NUMBER OF DAYS BETWEEN ";M(1);"/";D(1);"/";Y(1);"AND" +12210 PRINT M(2);"/";D(2);"/";Y(2) ;"EQUALS "; F(2)-F(1) +12300 PRINT +12310 PRINT "PRESS 1 FOR MORE FOR TRIALS, 0 TO END.";:INPUT Z8 +12320 IF Z8=1 GOTO 12105 +12330 IF Z8=0 THEN END +12340 PRINT "INPUT ERROR.TRY AGAIN" +12350 FOR I=1 TO 300:NEXT I +12360 GOTO 12300 +20000 PRINT" NUMBER OF DAYS BETWEEN DATES" +20010 PRINT +20020 PRINT"THIS PROGRAM WILL DETERMINE THE NUMBER OF DAYS BETWEEN ANY +20030 PRINT"TWO CALENDAR DATES AFTER 1582. tHE PROGRAM IS SET UP SO +20040 PRINT"THAT THERE IS ONE DAY'S DIFFERENCE BETWEEN 2 CONSECUTIVE +20050 PRINT"DAYS. +20060 PRINT"INPUT IS JUST THE 2 GIVEN DATES. OUTPUT GIVES THE NUMBER +20070 PRINT"OF DAYS BETWEEN THE DATES. +20080 PRINT +20090 INPUT"PRESS ENTER TO BEGIN";Z9 +20100 GOTO 12105 diff --git a/BP100/DATE.INP b/BP100/DATE.INP new file mode 100644 index 0000000..234bb9c --- /dev/null +++ b/BP100/DATE.INP @@ -0,0 +1,4 @@ + +01,01,2015 +01,02,2015 +0 diff --git a/BP100/DATE.OUT b/BP100/DATE.OUT new file mode 100644 index 0000000..0fee12a --- /dev/null +++ b/BP100/DATE.OUT @@ -0,0 +1,17 @@ + NUMBER OF DAYS BETWEEN DATES + +THIS PROGRAM WILL DETERMINE THE NUMBER OF DAYS BETWEEN ANY +TWO CALENDAR DATES AFTER 1582. tHE PROGRAM IS SET UP SO +THAT THERE IS ONE DAY'S DIFFERENCE BETWEEN 2 CONSECUTIVE +DAYS. +INPUT IS JUST THE 2 GIVEN DATES. OUTPUT GIVES THE NUMBER +OF DAYS BETWEEN THE DATES. + +PRESS ENTER TO BEGIN? +INPUT DATE 1 IN FORM MM,DD,YYYY? 01,01,2015 +INPUT DATE 2 IN FORM MM,DD,YYYY? 01,02,2015 + +THE NUMBER OF DAYS BETWEEN 1 / 1 / 2015 AND + 1 / 2 / 2015 EQUALS 1 + +PRESS 1 FOR MORE FOR TRIALS, 0 TO END.? 0 diff --git a/BP100/DATE.dif b/BP100/DATE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DATE.run b/BP100/DATE.run new file mode 100644 index 0000000..4c83842 --- /dev/null +++ b/BP100/DATE.run @@ -0,0 +1,17 @@ + NUMBER OF DAYS BETWEEN DATES + +THIS PROGRAM WILL DETERMINE THE NUMBER OF DAYS BETWEEN ANY +TWO CALENDAR DATES AFTER 1582. tHE PROGRAM IS SET UP SO +THAT THERE IS ONE DAY'S DIFFERENCE BETWEEN 2 CONSECUTIVE +DAYS. +INPUT IS JUST THE 2 GIVEN DATES. OUTPUT GIVES THE NUMBER +OF DAYS BETWEEN THE DATES. + +PRESS ENTER TO BEGIN? +INPUT DATE 1 IN FORM MM,DD,YYYY? 01,01,2015 +INPUT DATE 2 IN FORM MM,DD,YYYY? 01,02,2015 + +THE NUMBER OF DAYS BETWEEN 1 / 1 / 2015 AND + 1 / 2 / 2015 EQUALS 1 + +PRESS 1 FOR MORE FOR TRIALS, 0 TO END.? 0 diff --git a/BP100/DATEVAL.80 b/BP100/DATEVAL.80 new file mode 100644 index 0000000..ac6d5a6 --- /dev/null +++ b/BP100/DATEVAL.80 @@ -0,0 +1,29 @@ + DATED VALUE FOR OBLIGATIONS + +THE MATURITY VALUE OF AN OBLIGATION ALONG WITH THE DATE +OF MATURITY IS A DATED VALUE. AN EXAMPLE OF A DATED VALUE +WOULD BE $750 DUE ON SEPTEMBER 13,1980. DIFFERENT SETS OF +DATED VALUES MAY BE COMPARED BUT E.G. TO COMPARE $750 DUE ON +9/13/80 WITH $900 DUE ON 9/13/82 WE MUST PICK SOME INTEREST +RATE AND PERFORM SOME TYPE OF COMPOUND INTEREST ANALYSIS. +IN THE PRESENT PROGRAM THIS IS DONE. WE ARE GIVEN A DATED +VALUE MATURING SOME FIXED NUMBER OF YEARS IN THE FUTURE. WE +ARE ALSO AN INTEREST RATE TO BE USED IN COMPARISON. WHAT THE +PROGRAM THEN DOES IS FIND AN EQUIVALENT DEBT MATURING AT +SOME OTHER FIXED TIME IN THE FUTURE. + +PRESS ENTER TO BEGIN? +ENTER INTEREST RATE(%) TO BE USED IN COMPUTATIONS? 5 + +INPUT FOR GIVEN DATED VALUE + INPUT MATURITY VALUE ? 1000 + INPUT # OF YEARS INTO FUTURE FOR MATURITY? 10 + + +INPUT # OF YEARS INTO FUTURE FOR MATURITY OF DATED VALUE FOR +COMPARISON? 5 + + 1000 DUE IN 10 YEARS IS EQUIVALENT TO 783.526 DUE IN 5 YEARS + +PRESS 1 TO KEEP SAME ORIGINAL DATED VALUE, 2 TO BEGIN OVER? -1 + diff --git a/BP100/DATEVAL.BAS b/BP100/DATEVAL.BAS new file mode 100644 index 0000000..66d44ed --- /dev/null +++ b/BP100/DATEVAL.BAS @@ -0,0 +1,32 @@ +1 REM DATEVAL +5 CLEAR 1000 +10 CLS:PRINT TAB(10); "DATED VALUE FOR OBLIGATIONS":PRINT +20 PRINT"THE MATURITY VALUE OF AN OBLIGATION ALONG WITH THE DATE +25 PRINT"OF MATURITY IS A DATED VALUE. AN EXAMPLE OF A DATED VALUE +30 PRINT"WOULD BE $750 DUE ON SEPTEMBER 13,1980. DIFFERENT SETS OF +35 PRINT"DATED VALUES MAY BE COMPARED BUT E.G. TO COMPARE $750 DUE ON +40 PRINT"9/13/80 WITH $900 DUE ON 9/13/82 WE MUST PICK SOME INTEREST +45 PRINT"RATE AND PERFORM SOME TYPE OF COMPOUND INTEREST ANALYSIS. +50 PRINT"IN THE PRESENT PROGRAM THIS IS DONE. WE ARE GIVEN A DATED +55 PRINT"VALUE MATURING SOME FIXED NUMBER OF YEARS IN THE FUTURE. WE +60 PRINT"ARE ALSO AN INTEREST RATE TO BE USED IN COMPARISON. WHAT THE +65 PRINT"PROGRAM THEN DOES IS FIND AN EQUIVALENT DEBT MATURING AT +70 PRINT"SOME OTHER FIXED TIME IN THE FUTURE." +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT"ENTER INTEREST RATE(%) TO BE USED IN COMPUTATIONS";P:P=P/100 +120 PRINT:PRINT"INPUT FOR GIVEN DATED VALUE" +125 PRINT TAB(10);"INPUT MATURITY VALUE ";:INPUT MV +130 PRINT TAB(10);"INPUT # OF YEARS INTO FUTURE FOR MATURITY";:INPUT NY +150 PRINT:PRINT +155 PRINT"INPUT # OF YEARS INTO FUTURE FOR MATURITY OF DATED VALUE FOR +160 PRINT"COMPARISON";:INPUT N +170 EDV=MV*(1+P)[(N-NY) +180 PRINT:PRINT MV;"DUE IN";NY;"YEARS IS EQUIVALENT TO";EDV;"DUE IN";N;"YEARS" +190 PRINT +200 INPUT"PRESS 1 TO KEEP SAME ORIGINAL DATED VALUE, 2 TO BEGIN OVER";Z9 +205 PRINT +207 IF Z9 = -1 THEN END +210 IF Z9<>1 AND Z9<>2 THEN GOSUB 10000:PRINT:GOTO 200 +220 IF Z9=2 THEN GOTO 100 ELSE GOTO 155 +10000 PRINT"INPUT ERROR!TRY AGAIN":FOR I=1 TO 300:NEXT:RETURN diff --git a/BP100/DATEVAL.INP b/BP100/DATEVAL.INP new file mode 100644 index 0000000..a19f45d --- /dev/null +++ b/BP100/DATEVAL.INP @@ -0,0 +1,6 @@ + +5 +1000 +10 +5 +-1 diff --git a/BP100/DATEVAL.OUT b/BP100/DATEVAL.OUT new file mode 100644 index 0000000..d0ebcb2 --- /dev/null +++ b/BP100/DATEVAL.OUT @@ -0,0 +1,29 @@ + DATED VALUE FOR OBLIGATIONS + +THE MATURITY VALUE OF AN OBLIGATION ALONG WITH THE DATE +OF MATURITY IS A DATED VALUE. AN EXAMPLE OF A DATED VALUE +WOULD BE $750 DUE ON SEPTEMBER 13,1980. DIFFERENT SETS OF +DATED VALUES MAY BE COMPARED BUT E.G. TO COMPARE $750 DUE ON +9/13/80 WITH $900 DUE ON 9/13/82 WE MUST PICK SOME INTEREST +RATE AND PERFORM SOME TYPE OF COMPOUND INTEREST ANALYSIS. +IN THE PRESENT PROGRAM THIS IS DONE. WE ARE GIVEN A DATED +VALUE MATURING SOME FIXED NUMBER OF YEARS IN THE FUTURE. WE +ARE ALSO AN INTEREST RATE TO BE USED IN COMPARISON. WHAT THE +PROGRAM THEN DOES IS FIND AN EQUIVALENT DEBT MATURING AT +SOME OTHER FIXED TIME IN THE FUTURE. + +PRESS ENTER TO BEGIN? +ENTER INTEREST RATE(%) TO BE USED IN COMPUTATIONS? 5 + +INPUT FOR GIVEN DATED VALUE + INPUT MATURITY VALUE ? 1000 + INPUT # OF YEARS INTO FUTURE FOR MATURITY? 10 + + +INPUT # OF YEARS INTO FUTURE FOR MATURITY OF DATED VALUE FOR +COMPARISON? 5 + + 1000 DUE IN 10 YEARS IS EQUIVALENT TO 783.526 DUE IN 5 YEARS + +PRESS 1 TO KEEP SAME ORIGINAL DATED VALUE, 2 TO BEGIN OVER? -1 + diff --git a/BP100/DATEVAL.dif b/BP100/DATEVAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DATEVAL.run b/BP100/DATEVAL.run new file mode 100644 index 0000000..ac6d5a6 --- /dev/null +++ b/BP100/DATEVAL.run @@ -0,0 +1,29 @@ + DATED VALUE FOR OBLIGATIONS + +THE MATURITY VALUE OF AN OBLIGATION ALONG WITH THE DATE +OF MATURITY IS A DATED VALUE. AN EXAMPLE OF A DATED VALUE +WOULD BE $750 DUE ON SEPTEMBER 13,1980. DIFFERENT SETS OF +DATED VALUES MAY BE COMPARED BUT E.G. TO COMPARE $750 DUE ON +9/13/80 WITH $900 DUE ON 9/13/82 WE MUST PICK SOME INTEREST +RATE AND PERFORM SOME TYPE OF COMPOUND INTEREST ANALYSIS. +IN THE PRESENT PROGRAM THIS IS DONE. WE ARE GIVEN A DATED +VALUE MATURING SOME FIXED NUMBER OF YEARS IN THE FUTURE. WE +ARE ALSO AN INTEREST RATE TO BE USED IN COMPARISON. WHAT THE +PROGRAM THEN DOES IS FIND AN EQUIVALENT DEBT MATURING AT +SOME OTHER FIXED TIME IN THE FUTURE. + +PRESS ENTER TO BEGIN? +ENTER INTEREST RATE(%) TO BE USED IN COMPUTATIONS? 5 + +INPUT FOR GIVEN DATED VALUE + INPUT MATURITY VALUE ? 1000 + INPUT # OF YEARS INTO FUTURE FOR MATURITY? 10 + + +INPUT # OF YEARS INTO FUTURE FOR MATURITY OF DATED VALUE FOR +COMPARISON? 5 + + 1000 DUE IN 10 YEARS IS EQUIVALENT TO 783.526 DUE IN 5 YEARS + +PRESS 1 TO KEEP SAME ORIGINAL DATED VALUE, 2 TO BEGIN OVER? -1 + diff --git a/BP100/DAYYEAR.80 b/BP100/DAYYEAR.80 new file mode 100644 index 0000000..862c1f5 --- /dev/null +++ b/BP100/DAYYEAR.80 @@ -0,0 +1,24 @@ + DAY OF YEAR + +GIVEN THE MONTH AND DAY OF A PARTICULAR DATE IN THE YEAR +THIS PROGRAM WILL CALCULATE ON WHICH DAY OF THE YEAR THAT DATE +OCCURS. FOR EXAMPLE 02/15 IS THE 46 TH DAY OF THE YEAR. FOR +ALL DATES AFTER FEBRUARY 28 THE PROGRAM PRINTS 2 ANSWERS, ONE +FOR A LEAP YEAR AND ONE FOR NON-LEAP YEARS. +THE PROGRAM ALSO GIVES THE NUMBER OF DAYS FROM THE PRESENT +DATE TO THE PREVIOUSLY ENTERED DATE. A NEGATIVE HERE MEANS +THAT THE PRESENT DATE COMES LAST. THIS PART OF THE PROGRAM +GIVES AN INCORRECT ANSWER FOR FEBRUARY 29 DURING LEAP YEAR. + +PRESS ENTER TO BEGIN? +ENTER MONTH OF DESIRED DATE IN NUMERICAL MM FORM? 02 +ENTER DAY OF FEBRUARY DESIRED? 01 + + +FEBRUARY 1 IS DAY NUMBER 32 OF THE YEAR. + + +NUMBER OF DAYS FROM LAST DATE = 32 + + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/DAYYEAR.BAS b/BP100/DAYYEAR.BAS new file mode 100644 index 0000000..499844c --- /dev/null +++ b/BP100/DAYYEAR.BAS @@ -0,0 +1,40 @@ +1 REM DAYYEAR +4 CLEAR 1000:CLS +10 DIM M$(15),S(15) +15 DEFINT L +20 PRINT TAB(15); "DAY OF YEAR" +30 PRINT:PRINT"GIVEN THE MONTH AND DAY OF A PARTICULAR DATE IN THE YEAR +40 PRINT"THIS PROGRAM WILL CALCULATE ON WHICH DAY OF THE YEAR THAT DATE +50 PRINT"OCCURS. FOR EXAMPLE 02/15 IS THE 46 TH DAY OF THE YEAR. FOR +60 PRINT"ALL DATES AFTER FEBRUARY 28 THE PROGRAM PRINTS 2 ANSWERS, ONE +70 PRINT"FOR A LEAP YEAR AND ONE FOR NON-LEAP YEARS." +75 PRINT"THE PROGRAM ALSO GIVES THE NUMBER OF DAYS FROM THE PRESENT +80 PRINT"DATE TO THE PREVIOUSLY ENTERED DATE. A NEGATIVE HERE MEANS +85 PRINT"THAT THE PRESENT DATE COMES LAST. THIS PART OF THE PROGRAM +90 PRINT"GIVES AN INCORRECT ANSWER FOR FEBRUARY 29 DURING LEAP YEAR. +95 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +97 FOR LL=1 TO 12:READ M$(LL):NEXT:REM READ MONTHS IN +98 FOR LL=1 TO 13:READ S(LL):NEXT:REM READ 1ST DAY OF MONTH DATA +100 CLS +110 INPUT"ENTER MONTH OF DESIRED DATE IN NUMERICAL MM FORM";MM +115 IF MM<1 OR MM>12 OR MM<>INT(MM) THEN GOSUB 10000:GOTO 110 +120 PRINT"ENTER DAY OF ";M$(MM);" DESIRED";:INPUT DD +125 IF MM=2 AND DD=29 THEN GOTO 150 +130 IF DD<>INT(DD) OR DD<1 OR DD>S(MM+1)-S(MM) THEN GOSUB 10000:GOTO 120 +150 PRINT:PRINT +160 PRINT M$(MM);DD;" IS DAY NUMBER ";S(MM)+DD;" OF THE YEAR." +170 PRINT +180 IF MM>2 THEN PRINT "DURING A LEAP YEAR "; M$(MM);DD;" IS DAY NUMBER ";S(MM)+DD+1;" OF THE YEAR." +182 PRINT:PRINT"NUMBER OF DAYS FROM LAST DATE = ";S(MM)+DD-JR +183 IF JM<=2 AND MM>2 THEN PRINT"NUMBER OF DAYS FROM LAST DATE DURING LEAP YEAR = ";S(MM)+DD+1-JR +184 IF JM>2 AND MM<=2 THEN PRINT"NUMBER OF DAYS FROM LAST DATE DURING LEAP YEAR = ";S(MM)+DD-JR-1 +185 JR=S(MM)+DD:JM=MM +190 PRINT:PRINT +195 INPUT"PRESS ENTER FOR MORE COMPUTATIONS";Z9$ +197 IF Z9$ = "-1" THEN END +199 GOTO 100 +900 DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST +910 DATA SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER +920 REM NO. OF DAYS TO FIRST DAY OF MONTH DATA +930 DATA 0,31,59,90,120,151,181,212,243,273,304,334,365 +10000 PRINT"INPUT ERROR! TRY AGAIN":FOR JJ=1 TO 300:NEXT:RETURN diff --git a/BP100/DAYYEAR.INP b/BP100/DAYYEAR.INP new file mode 100644 index 0000000..9f2d191 --- /dev/null +++ b/BP100/DAYYEAR.INP @@ -0,0 +1,4 @@ + +02 +01 +-1 diff --git a/BP100/DAYYEAR.OUT b/BP100/DAYYEAR.OUT new file mode 100644 index 0000000..b13dca2 --- /dev/null +++ b/BP100/DAYYEAR.OUT @@ -0,0 +1,24 @@ + DAY OF YEAR + +GIVEN THE MONTH AND DAY OF A PARTICULAR DATE IN THE YEAR +THIS PROGRAM WILL CALCULATE ON WHICH DAY OF THE YEAR THAT DATE +OCCURS. FOR EXAMPLE 02/15 IS THE 46 TH DAY OF THE YEAR. FOR +ALL DATES AFTER FEBRUARY 28 THE PROGRAM PRINTS 2 ANSWERS, ONE +FOR A LEAP YEAR AND ONE FOR NON-LEAP YEARS. +THE PROGRAM ALSO GIVES THE NUMBER OF DAYS FROM THE PRESENT +DATE TO THE PREVIOUSLY ENTERED DATE. A NEGATIVE HERE MEANS +THAT THE PRESENT DATE COMES LAST. THIS PART OF THE PROGRAM +GIVES AN INCORRECT ANSWER FOR FEBRUARY 29 DURING LEAP YEAR. + +PRESS ENTER TO BEGIN? +ENTER MONTH OF DESIRED DATE IN NUMERICAL MM FORM? 02 +ENTER DAY OF FEBRUARY DESIRED? 01 + + +FEBRUARY 1 IS DAY NUMBER 32 OF THE YEAR. + + +NUMBER OF DAYS FROM LAST DATE = 32 + + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/DAYYEAR.dif b/BP100/DAYYEAR.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DAYYEAR.run b/BP100/DAYYEAR.run new file mode 100644 index 0000000..862c1f5 --- /dev/null +++ b/BP100/DAYYEAR.run @@ -0,0 +1,24 @@ + DAY OF YEAR + +GIVEN THE MONTH AND DAY OF A PARTICULAR DATE IN THE YEAR +THIS PROGRAM WILL CALCULATE ON WHICH DAY OF THE YEAR THAT DATE +OCCURS. FOR EXAMPLE 02/15 IS THE 46 TH DAY OF THE YEAR. FOR +ALL DATES AFTER FEBRUARY 28 THE PROGRAM PRINTS 2 ANSWERS, ONE +FOR A LEAP YEAR AND ONE FOR NON-LEAP YEARS. +THE PROGRAM ALSO GIVES THE NUMBER OF DAYS FROM THE PRESENT +DATE TO THE PREVIOUSLY ENTERED DATE. A NEGATIVE HERE MEANS +THAT THE PRESENT DATE COMES LAST. THIS PART OF THE PROGRAM +GIVES AN INCORRECT ANSWER FOR FEBRUARY 29 DURING LEAP YEAR. + +PRESS ENTER TO BEGIN? +ENTER MONTH OF DESIRED DATE IN NUMERICAL MM FORM? 02 +ENTER DAY OF FEBRUARY DESIRED? 01 + + +FEBRUARY 1 IS DAY NUMBER 32 OF THE YEAR. + + +NUMBER OF DAYS FROM LAST DATE = 32 + + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/DEPLETE.80 b/BP100/DEPLETE.80 new file mode 100644 index 0000000..7ca3ba1 --- /dev/null +++ b/BP100/DEPLETE.80 @@ -0,0 +1,23 @@ + DEPLETION ANALYSIS + +DEPLETION REFERS TO EXHAUSTING NATURAL RESOURCES. DEPRECIATION +CHARGES, WHEN COMPUTED BY THE DEPLETION METHOD ARE PROPORTIONAL +TO THE PRODUCTION LEVEL. THIS IS BECAUSE, IN THE CASE OF +NONREPLACEABLE NATURAL RESOURCES, WHEN THE RESOURCE IS USED +UP THEN THE LAND USED IS OF NO MORE VALUE FOR THAT PURPOSE. +IF SOME ESTIMATE CAN BE MADE OF THE TOTAL PRODUCTIVE OUTPUT +OF A MINE, E.G. AND OF THE COST OF THE MINE TO DEVELOP THEN +IN A YEAR IN WHICH 10% OF THE TOTAL PRODUCTIVE OUTPUT IS MINED +10% OF THE ORIGINAL VALUE OF THE MINE WOULD BE USED AS THE +DEPRECIATION AMOUNT. + +PRESS ENTER TO BEGIN? +COST OF PURCHASE & DEVELOPMENT ? 234567 +FINAL SALVAGE VALUE ESTIMATE ? 1234 +TOTAL REPAIR COST OVER LIFE ? 87654 +ESTIMATE OF LIFETIME PRODUCTIVE OUTPUT? 10 + +ENTER PRODUCTION LEVEL(-1 TO END)? 1 +DEPRECIATION CHARGES ARE $32098.70 + +ENTER 1 FOR NEW PRODUCTION LEVEL,2 FOR NEW ITEM,3 TO END? 3 diff --git a/BP100/DEPLETE.BAS b/BP100/DEPLETE.BAS new file mode 100644 index 0000000..bedb138 --- /dev/null +++ b/BP100/DEPLETE.BAS @@ -0,0 +1,30 @@ +1 REM DEPLETE +5 CLEAR 1000 +7 DEFDBL A-Z +10 CLS +20 PRINT TAB(15); "DEPLETION ANALYSIS":PRINT +30 PRINT"DEPLETION REFERS TO EXHAUSTING NATURAL RESOURCES. DEPRECIATION +35 PRINT"CHARGES, WHEN COMPUTED BY THE DEPLETION METHOD ARE PROPORTIONAL +40 PRINT"TO THE PRODUCTION LEVEL. THIS IS BECAUSE, IN THE CASE OF +45 PRINT"NONREPLACEABLE NATURAL RESOURCES, WHEN THE RESOURCE IS USED +50 PRINT"UP THEN THE LAND USED IS OF NO MORE VALUE FOR THAT PURPOSE. +55 PRINT"IF SOME ESTIMATE CAN BE MADE OF THE TOTAL PRODUCTIVE OUTPUT +60 PRINT"OF A MINE, E.G. AND OF THE COST OF THE MINE TO DEVELOP THEN +65 PRINT"IN A YEAR IN WHICH 10% OF THE TOTAL PRODUCTIVE OUTPUT IS MINED +70 PRINT"10% OF THE ORIGINAL VALUE OF THE MINE WOULD BE USED AS THE +75 PRINT"DEPRECIATION AMOUNT." +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +200 CLS +210 INPUT"COST OF PURCHASE & DEVELOPMENT ";C +220 INPUT"FINAL SALVAGE VALUE ESTIMATE ";S +230 INPUT"TOTAL REPAIR COST OVER LIFE ";K +240 INPUT"ESTIMATE OF LIFETIME PRODUCTIVE OUTPUT";E +250 A=((C-S)+K)/E:REM MULTIPLICATION FACTOR ON PRODUCTION +300 PRINT:REM INPUT SEVERAL PRODUCTION LEVELS +310 INPUT"ENTER PRODUCTION LEVEL(-1 TO END)";X +320 PRINT USING "DEPRECIATION CHARGES ARE $$#########.##";A*X +330 PRINT +340 INPUT"ENTER 1 FOR NEW PRODUCTION LEVEL,2 FOR NEW ITEM,3 TO END";Z9 +350 IF Z9<>1 AND Z9<>2 AND Z9<>3 THEN PRINT"ERROR!!!":GOTO 340 +360 IF Z9=1 THEN PRINT:GOTO 310 +370 IF Z9=2 THEN GOTO 200 diff --git a/BP100/DEPLETE.INP b/BP100/DEPLETE.INP new file mode 100644 index 0000000..838f48d --- /dev/null +++ b/BP100/DEPLETE.INP @@ -0,0 +1,7 @@ + +234567 +1234 +87654 +10 +1 +3 diff --git a/BP100/DEPLETE.OUT b/BP100/DEPLETE.OUT new file mode 100644 index 0000000..00cb098 --- /dev/null +++ b/BP100/DEPLETE.OUT @@ -0,0 +1,23 @@ + DEPLETION ANALYSIS + +DEPLETION REFERS TO EXHAUSTING NATURAL RESOURCES. DEPRECIATION +CHARGES, WHEN COMPUTED BY THE DEPLETION METHOD ARE PROPORTIONAL +TO THE PRODUCTION LEVEL. THIS IS BECAUSE, IN THE CASE OF +NONREPLACEABLE NATURAL RESOURCES, WHEN THE RESOURCE IS USED +UP THEN THE LAND USED IS OF NO MORE VALUE FOR THAT PURPOSE. +IF SOME ESTIMATE CAN BE MADE OF THE TOTAL PRODUCTIVE OUTPUT +OF A MINE, E.G. AND OF THE COST OF THE MINE TO DEVELOP THEN +IN A YEAR IN WHICH 10% OF THE TOTAL PRODUCTIVE OUTPUT IS MINED +10% OF THE ORIGINAL VALUE OF THE MINE WOULD BE USED AS THE +DEPRECIATION AMOUNT. + +PRESS ENTER TO BEGIN? +COST OF PURCHASE & DEVELOPMENT ? 234567 +FINAL SALVAGE VALUE ESTIMATE ? 1234 +TOTAL REPAIR COST OVER LIFE ? 87654 +ESTIMATE OF LIFETIME PRODUCTIVE OUTPUT? 10 + +ENTER PRODUCTION LEVEL(-1 TO END)? 1 +DEPRECIATION CHARGES ARE $32098.70 + +ENTER 1 FOR NEW PRODUCTION LEVEL,2 FOR NEW ITEM,3 TO END? 3 diff --git a/BP100/DEPLETE.dif b/BP100/DEPLETE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DEPLETE.run b/BP100/DEPLETE.run new file mode 100644 index 0000000..7ca3ba1 --- /dev/null +++ b/BP100/DEPLETE.run @@ -0,0 +1,23 @@ + DEPLETION ANALYSIS + +DEPLETION REFERS TO EXHAUSTING NATURAL RESOURCES. DEPRECIATION +CHARGES, WHEN COMPUTED BY THE DEPLETION METHOD ARE PROPORTIONAL +TO THE PRODUCTION LEVEL. THIS IS BECAUSE, IN THE CASE OF +NONREPLACEABLE NATURAL RESOURCES, WHEN THE RESOURCE IS USED +UP THEN THE LAND USED IS OF NO MORE VALUE FOR THAT PURPOSE. +IF SOME ESTIMATE CAN BE MADE OF THE TOTAL PRODUCTIVE OUTPUT +OF A MINE, E.G. AND OF THE COST OF THE MINE TO DEVELOP THEN +IN A YEAR IN WHICH 10% OF THE TOTAL PRODUCTIVE OUTPUT IS MINED +10% OF THE ORIGINAL VALUE OF THE MINE WOULD BE USED AS THE +DEPRECIATION AMOUNT. + +PRESS ENTER TO BEGIN? +COST OF PURCHASE & DEVELOPMENT ? 234567 +FINAL SALVAGE VALUE ESTIMATE ? 1234 +TOTAL REPAIR COST OVER LIFE ? 87654 +ESTIMATE OF LIFETIME PRODUCTIVE OUTPUT? 10 + +ENTER PRODUCTION LEVEL(-1 TO END)? 1 +DEPRECIATION CHARGES ARE $32098.70 + +ENTER 1 FOR NEW PRODUCTION LEVEL,2 FOR NEW ITEM,3 TO END? 3 diff --git a/BP100/DEPRDB.80 b/BP100/DEPRDB.80 new file mode 100644 index 0000000..b5a48dc --- /dev/null +++ b/BP100/DEPRDB.80 @@ -0,0 +1,26 @@ + DEPRECIATION SCHEDULE-DECLINING BALANCE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE DECLINING BALANCE METHOD +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 56789 +ENTER SALVAGE VALUE ? 12345 +ENTER LIFE IN YEARS ? 10 +RATE OF DEPRECIATION(%) ? 12.5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. ! + 0 56789.00 + 1 7098.62 7098.62 49690.38 + 2 6211.30 13309.92 43479.08 + 3 5434.88 18744.81 38044.19 + 4 4755.52 23500.33 33288.67 + 5 4161.08 27661.41 29127.59 + 6 3640.95 31302.36 25486.64 + 7 3185.83 34488.19 22300.81 + 8 2787.60 37275.79 19513.21 + 9 2439.15 39714.94 17074.06 + 10 4729.06 44444.00 12345.00 diff --git a/BP100/DEPRDB.BAS b/BP100/DEPRDB.BAS new file mode 100644 index 0000000..d4097e1 --- /dev/null +++ b/BP100/DEPRDB.BAS @@ -0,0 +1,66 @@ +5 CLS +10 PRINT " DEPRECIATION SCHEDULE-DECLINING BALANCE" +20 PRINT "THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +30 PRINT"BY THE DECLINING BALANCE METHOD" +40 PRINT "INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +50 PRINT"OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +60 PRINT"ACCUMULATED DEPRECIATION AND BOOK VALUE. +90 INPUT " PRESS ENTER TO BEGIN";Z9 +100 CLS +105 INPUT"DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)";Z2$ +106 IF Z2$<>"Y" AND Z2$<>"N" THEN GOTO 105 +110 INPUT "ENTER COST ";C +120 INPUT "ENTER SALVAGE VALUE ";S +130 INPUT "ENTER LIFE IN YEARS ";L +135 INPUT "RATE OF DEPRECIATION(%) ";RD +137 RD=RD/100 +140 IF C >= S GOTO 200 +150 PRINT +160 PRINT"SALVAGE VALUE > COST ---- ERROR-ERROR" +170 PRINT"ENTER DATA AGAIN." +180 FOR I= 1 TO 400:NEXT I +190 GOTO 100 +200 CLS +210 GOSUB 1000:REM HEADING +220 GOSUB 1100:REM INITIALIZE +230 GOSUB 1200:REM COMPUTE & PRINT +250 END +1000 REM HEADING SUBROUTINE +1010 CLS +1015 IF Z2$="Y" THEN INPUT"PRESS ENTER WHEN PRINTER READY";Z9$:PRINT +1020 H1$="YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. !" +1030 C1$=" ## #####.## #######.## #######.##" +1035 C2$=" ## #######.##" +1037 IF Z2$="Y" THEN LPRINT "DECLINING BALANCE DEPRECIATION SCHEDULE":LPRINT" ":LPRINT "INITIAL COST = ";C:LPRINT"SALVAGE VALUE = ";S:LPRINT"LIFE OF ASSET(YEARS) = ";L +1038 IF Z2$="Y" THEN LPRINT"RATE OF DEPRECIATION = ";100*RD;"%":LPRINT" " +1040 PRINT H1$:IF Z2$="Y" THEN LPRINT H1$:LPRINT " " +1050 RETURN +1100 REM INITIALIZE SUBROUTINE +1110 AD=0:REM ACCUMULATED DEPRECIATION +1115 DP=C-S :REM AMOUNT TO BE DEPRECIATED +1120 BV=C :REM BOOK VALUE +1125 YR=0 :REM PRESENT YEAR +1150 RETURN +1200 REM COMPUTATION AND PRINTING SUBROUTINE +1210 PRINT USING C2$;YR,C +1215 IF Z2$="Y" THEN LPRINT USING C2$;YR,C:LPRINT" " +1220 FOR I=1 TO L-1 +1230 D=BV*RD +1240 BV=BV-D : AD=AD+D +1250 YR=YR+1 +1255 IF BV>=S GOTO 1260 +1256 AD=AD-D +1257 D=BV+D-S:AD=AD+D:BV=S +1260 PRINT USING C1$;YR,D,AD,BV +1262 IF Z2$="Y" THEN LPRINT USING C1$;YR,D,AD,BV:GOTO 1270 +1265 IF I/10=INT(I/10) THEN GOSUB 1400 ' STOP SCROLLING OFF SCREEN +1270 NEXT I +1280 D=(C-S)-AD +1290 BV=BV-D:AD=AD+D : YR=YR+1 +1295 PRINT USING C1$;YR,D,AD,BV +1297 IF Z2$="Y" THEN LPRINT USING C1$;YR,D,AD,BV +1300 RETURN +1400 REM SUBROUTINE TO HOLD OUTPUT ON SCREEN +1410 INPUT "FOR MORE OF TABLE PRESS ENTER";Z9 +1420 GOSUB 1000 +1430 RETURN diff --git a/BP100/DEPRDB.INP b/BP100/DEPRDB.INP new file mode 100644 index 0000000..6dd3882 --- /dev/null +++ b/BP100/DEPRDB.INP @@ -0,0 +1,7 @@ + +Y +56789 +12345 +10 +12.5 + diff --git a/BP100/DEPRDB.OUT b/BP100/DEPRDB.OUT new file mode 100644 index 0000000..73b55f5 --- /dev/null +++ b/BP100/DEPRDB.OUT @@ -0,0 +1,26 @@ + DEPRECIATION SCHEDULE-DECLINING BALANCE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE DECLINING BALANCE METHOD +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 56789 +ENTER SALVAGE VALUE ? 12345 +ENTER LIFE IN YEARS ? 10 +RATE OF DEPRECIATION(%) ? 12.5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. ! + 0 56789.00 + 1 7098.62 7098.62 49690.38 + 2 6211.30 13309.92 43479.08 + 3 5434.88 18744.81 38044.19 + 4 4755.52 23500.33 33288.67 + 5 4161.08 27661.41 29127.59 + 6 3640.95 31302.36 25486.64 + 7 3185.83 34488.19 22300.81 + 8 2787.60 37275.79 19513.21 + 9 2439.15 39714.94 17074.06 + 10 4729.06 44444.00 12345.00 diff --git a/BP100/DEPRDB.dif b/BP100/DEPRDB.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DEPRDB.run b/BP100/DEPRDB.run new file mode 100644 index 0000000..b5a48dc --- /dev/null +++ b/BP100/DEPRDB.run @@ -0,0 +1,26 @@ + DEPRECIATION SCHEDULE-DECLINING BALANCE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE DECLINING BALANCE METHOD +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 56789 +ENTER SALVAGE VALUE ? 12345 +ENTER LIFE IN YEARS ? 10 +RATE OF DEPRECIATION(%) ? 12.5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. ! + 0 56789.00 + 1 7098.62 7098.62 49690.38 + 2 6211.30 13309.92 43479.08 + 3 5434.88 18744.81 38044.19 + 4 4755.52 23500.33 33288.67 + 5 4161.08 27661.41 29127.59 + 6 3640.95 31302.36 25486.64 + 7 3185.83 34488.19 22300.81 + 8 2787.60 37275.79 19513.21 + 9 2439.15 39714.94 17074.06 + 10 4729.06 44444.00 12345.00 diff --git a/BP100/DEPRDDB.80 b/BP100/DEPRDDB.80 new file mode 100644 index 0000000..28f01a6 --- /dev/null +++ b/BP100/DEPRDDB.80 @@ -0,0 +1,20 @@ + DEPRECIATION SCHEDULE-DOUBLE DECLINING BALANCE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE DOUBLE DECLINING BALANCE METHOD +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 987654 +ENTER SALVAGE VALUE ? 2345 +ENTER LIFE IN YEARS ? 5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. ! + 0 987654.00 + 1 395061.60 395061.60 592592.40 + 2 237036.96 632098.56 355555.44 + 3 142222.18 774320.74 213333.26 + 4 85333.31 859654.04 127999.96 + 5 125654.96 985309.00 2345.00 diff --git a/BP100/DEPRDDB.BAS b/BP100/DEPRDDB.BAS new file mode 100644 index 0000000..a9026d4 --- /dev/null +++ b/BP100/DEPRDDB.BAS @@ -0,0 +1,66 @@ +1 REM DEPRDDB +5 CLS +10 PRINT " DEPRECIATION SCHEDULE-DOUBLE DECLINING BALANCE" +20 PRINT "THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +30 PRINT"BY THE DOUBLE DECLINING BALANCE METHOD" +40 PRINT "INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +50 PRINT"OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +60 PRINT"ACCUMULATED DEPRECIATION AND BOOK VALUE. +90 INPUT " PRESS ENTER TO BEGIN";Z9 +100 CLS +105 INPUT"DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)";Z2$ +106 IF Z2$<>"Y" AND Z2$<>"N" THEN GOTO 105 +110 INPUT "ENTER COST ";C +120 INPUT "ENTER SALVAGE VALUE ";S +130 INPUT "ENTER LIFE IN YEARS ";L +135 RD=2/L:REM RATE OF DEPRECIATION +140 IF C >= S GOTO 200 +150 PRINT +160 PRINT"SALVAGE VALUE > COST ---- ERROR-ERROR" +170 PRINT"ENTER DATA AGAIN." +180 FOR I= 1 TO 400:NEXT I +190 GOTO 100 +200 CLS +210 GOSUB 1000:REM HEADING +220 GOSUB 1100:REM INITIALIZE +230 GOSUB 1200:REM COMPUTE & PRINT +250 END +1000 REM HEADING SUBROUTINE +1010 CLS +1015 IF Z2$="Y" THEN INPUT"PRESS ENTER WHEN PRINTER READY";Z9$:PRINT +1020 H1$="YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. !" +1030 C1$=" ## #######.## #########.## #########.##" +1035 C2$=" ## #######.##" +1037 IF Z2$="Y" THEN LPRINT "DOUBLE DECLINING BALANCE DEPRECIATION SCHEDULE":LPRINT" ":LPRINT "INITIAL COST = ";C:LPRINT"SALVAGE VALUE = ";S:LPRINT"LIFE OF ASSET(YEARS) = ";L +1038 IF Z2$="Y" THEN LPRINT"RATE OF DEPRECIATION = ";100*RD;"%":LPRINT" " +1040 PRINT H1$:IF Z2$="Y" THEN LPRINT H1$:LPRINT " " +1050 RETURN +1100 REM INITIALIZE SUBROUTINE +1110 AD=0:REM ACCUMULATED DEPRECIATION +1115 DP=C-S :REM AMOUNT TO BE DEPRECIATED +1120 BV=C :REM BOOK VALUE +1125 YR=0 :REM PRESENT YEAR +1150 RETURN +1200 REM COMPUTATION AND PRINTING SUBROUTINE +1210 PRINT USING C2$;YR,C +1215 IF Z2$="Y" THEN LPRINT USING C2$;YR,C:LPRINT" " +1220 FOR I=1 TO L-1 +1230 D=(2/L)*(1-2/L)[(I-1)*C +1240 BV=BV-D : AD=AD+D +1250 YR=YR+1 +1255 IF BV>=S GOTO 1260 +1256 AD=AD-D +1257 D=BV+D-S:AD=AD+D:BV=S +1260 PRINT USING C1$;YR,D,AD,BV +1262 IF Z2$="Y" THEN LPRINT USING C1$;YR,D,AD,BV:GOTO 1270 +1265 IF I/10=INT(I/10) GOSUB 1400 ' STOP SCROLLING OFF SCREEN +1270 NEXT I +1280 D=(C-S)-AD +1290 BV=BV-D:AD=AD+D : YR=YR+1 +1295 PRINT USING C1$;YR,D,AD,BV +1297 IF Z2$="Y" THEN LPRINT USING C1$;YR,D,AD,BV +1300 RETURN +1400 REM SUBROUTINE TO HOLD OUTPUT ON SCREEN +1410 INPUT "FOR MORE OF TABLE PRESS ENTER";Z9 +1420 GOSUB 1000 +1430 RETURN diff --git a/BP100/DEPRDDB.INP b/BP100/DEPRDDB.INP new file mode 100644 index 0000000..fe68975 --- /dev/null +++ b/BP100/DEPRDDB.INP @@ -0,0 +1,6 @@ + +Y +987654 +2345 +5 + diff --git a/BP100/DEPRDDB.OUT b/BP100/DEPRDDB.OUT new file mode 100644 index 0000000..30b6ab6 --- /dev/null +++ b/BP100/DEPRDDB.OUT @@ -0,0 +1,20 @@ + DEPRECIATION SCHEDULE-DOUBLE DECLINING BALANCE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE DOUBLE DECLINING BALANCE METHOD +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 987654 +ENTER SALVAGE VALUE ? 2345 +ENTER LIFE IN YEARS ? 5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. ! + 0 987654.00 + 1 395061.60 395061.60 592592.40 + 2 237036.96 632098.56 355555.44 + 3 142222.18 774320.74 213333.26 + 4 85333.31 859654.04 127999.96 + 5 125654.96 985309.00 2345.00 diff --git a/BP100/DEPRDDB.dif b/BP100/DEPRDDB.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DEPRDDB.run b/BP100/DEPRDDB.run new file mode 100644 index 0000000..28f01a6 --- /dev/null +++ b/BP100/DEPRDDB.run @@ -0,0 +1,20 @@ + DEPRECIATION SCHEDULE-DOUBLE DECLINING BALANCE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE DOUBLE DECLINING BALANCE METHOD +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 987654 +ENTER SALVAGE VALUE ? 2345 +ENTER LIFE IN YEARS ? 5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. ! + 0 987654.00 + 1 395061.60 395061.60 592592.40 + 2 237036.96 632098.56 355555.44 + 3 142222.18 774320.74 213333.26 + 4 85333.31 859654.04 127999.96 + 5 125654.96 985309.00 2345.00 diff --git a/BP100/DEPRSF.80 b/BP100/DEPRSF.80 new file mode 100644 index 0000000..5d01631 --- /dev/null +++ b/BP100/DEPRSF.80 @@ -0,0 +1,31 @@ + DEPRECIATION SCHEDULE-SINKING FUND METHOD +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE SINKING FUND METHOD. THIS METHOD IS USED BY REGULATED +INDUSTRIES QUITE A BIT. IN THIS METHOD THERE ARE EQUAL YEARLY +DEPRECIATION CHARGES BUT THE DEPRECIATION IS ASSUMED TO BE +INVESTED IN A (SINKING FUND) ACCOUNT EARNING STATED INTEREST. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE, LIFE IN YEARS, +AND SINKING FUND INTEREST RATE. + +OUTPUT INCLUDES ANNUAL DEPRECIATION CHARGES PLUS A YEAR BY +YEAR SCHEDULE OF BOOK VALUE,INTEREST ON SINKING FUND, INCREASE +IN SIZE OF SINKING FUND, AND TOTAL VALUE OF SINKING FUND. + + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 76543 +ENTER SALVAGE VALUE ? 9876 +ENTER LIFE IN YEARS ? 7 +ENTER INT RATE ON SINKING FUND(%)? 3.75 +PRESS ENTER WHEN PRINTER READY? + +ANNUAL DEPRECIATION CHARGES = 8504.96 +YEAR BOOK VAL. FUND INT. INCR. IN FUND FUND VAL. + 0 76543.00 + 1 68038.04 0.00 8504.96 8504.96 + 2 59214.15 318.94 8823.89 17328.85 + 3 50059.37 649.83 9154.79 26483.63 + 4 40561.27 993.14 9498.09 35981.73 + 5 30707.00 1349.31 9854.27 45836.00 + 6 20483.20 1718.85 10223.81 56059.80 + 7 9876.00 2102.24 10607.20 66667.00 diff --git a/BP100/DEPRSF.BAS b/BP100/DEPRSF.BAS new file mode 100644 index 0000000..cc81a65 --- /dev/null +++ b/BP100/DEPRSF.BAS @@ -0,0 +1,68 @@ +1 REM DEPRDDB +5 CLS +10 PRINT " DEPRECIATION SCHEDULE-SINKING FUND METHOD" +20 PRINT "THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +30 PRINT"BY THE SINKING FUND METHOD. THIS METHOD IS USED BY REGULATED +33 PRINT"INDUSTRIES QUITE A BIT. IN THIS METHOD THERE ARE EQUAL YEARLY +35 PRINT"DEPRECIATION CHARGES BUT THE DEPRECIATION IS ASSUMED TO BE +37 PRINT"INVESTED IN A (SINKING FUND) ACCOUNT EARNING STATED INTEREST. +40 PRINT "INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE, LIFE IN YEARS, +45 PRINT "AND SINKING FUND INTEREST RATE." +50 PRINT:PRINT"OUTPUT INCLUDES ANNUAL DEPRECIATION CHARGES PLUS A YEAR BY +60 PRINT"YEAR SCHEDULE OF BOOK VALUE,INTEREST ON SINKING FUND, INCREASE +70 PRINT"IN SIZE OF SINKING FUND, AND TOTAL VALUE OF SINKING FUND. +80 PRINT +90 INPUT " PRESS ENTER TO BEGIN";Z9 +100 CLS +105 INPUT"DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)";Z2$ +106 IF Z2$<>"Y" AND Z2$<>"N" THEN GOTO 105 +110 INPUT "ENTER COST ";C +120 INPUT "ENTER SALVAGE VALUE ";S +130 INPUT "ENTER LIFE IN YEARS ";L +135 INPUT"ENTER INT RATE ON SINKING FUND(%)";IR:IR=IR/100 +140 IF C >= S THEN GOTO 200 +150 PRINT +160 PRINT"SALVAGE VALUE > COST ---- ERROR-ERROR" +170 PRINT"ENTER DATA AGAIN." +180 FOR I= 1 TO 400:NEXT I +190 GOTO 100 +200 CLS +210 GOSUB 1000:REM HEADING +220 GOSUB 1100:REM INITIALIZE +230 GOSUB 1200:REM COMPUTE & PRINT +250 END +1000 REM HEADING SUBROUTINE +1010 CLS +1015 IF Z2$="Y" THEN INPUT"PRESS ENTER WHEN PRINTER READY";Z9$:PRINT +1020 H1$="YEAR BOOK VAL. FUND INT. INCR. IN FUND FUND VAL. +1030 H2$=" ## #######.## #######.## #######.## #######.##" +1037 IF Z2$="Y" THEN LPRINT "SINKING FUND DEPRECIATION SCHEDULE":LPRINT" ":LPRINT "INITIAL COST = ";C:LPRINT "SALVAGE VALUE = ";S:LPRINT"LIFE OF ASSET(YEARS) =";L +1038 IF Z2$="Y" THEN LPRINT"INTEREST RATE ON SINKING FUND = ";IR*100 +1039 D=(C-S)*(IR/((1+IR)[L-1)):PRINT "ANNUAL DEPRECIATION CHARGES = ";INT(100*D+.5)/100:IF Z2$="Y" THEN LPRINT"ANNUAL DEPRECIATION CHARGE = ";INT(100*D+.5)/100 +1040 PRINT H1$:IF Z2$="Y" THEN LPRINT H1$:LPRINT " " +1050 RETURN +1100 REM INITIALIZE SUBROUTINE +1110 AD=0:REM ACCUMULATED DEPRECIATION +1115 DP=C-S :REM AMOUNT TO BE DEPRECIATED +1120 BV=C :REM BOOK VALUE +1125 YR=0 :REM PRESENT YEAR +1150 RETURN +1200 REM COMPUTATION AND PRINTING SUBROUTINE +1210 PRINT USING H2$;YR,C +1215 IF Z2$="Y" THEN LPRINT USING H2$;YR,C:LPRINT" " +1217 BV=C +1220 FOR I=1 TO L +1230 FI=FV*IR:REM FUND INTEREST FOR YEAR +1232 FC=FI+D:REM FUND VALUE INCREASE +1234 FV=FV+FC:REM NEW FUND VALUE +1240 BV=BV-FC +1250 YR=YR+1 +1260 PRINT USING H2$;YR,BV,FI,FC,FV +1262 IF Z2$="Y" THEN LPRINT USING H2$;YR,BV,FI,FC,FV:GOTO 1270 +1265 IF I/10=INT(I/10) GOSUB 1400 ' STOP SCROLLING OFF SCREEN +1270 NEXT I +1300 RETURN +1400 REM SUBROUTINE TO HOLD OUTPUT ON SCREEN +1410 INPUT "FOR MORE OF TABLE PRESS ENTER";Z9 +1420 GOSUB 1000 +1430 RETURN diff --git a/BP100/DEPRSF.INP b/BP100/DEPRSF.INP new file mode 100644 index 0000000..0e900d5 --- /dev/null +++ b/BP100/DEPRSF.INP @@ -0,0 +1,7 @@ + +Y +76543 +9876 +7 +3.75 + diff --git a/BP100/DEPRSF.OUT b/BP100/DEPRSF.OUT new file mode 100644 index 0000000..3209457 --- /dev/null +++ b/BP100/DEPRSF.OUT @@ -0,0 +1,31 @@ + DEPRECIATION SCHEDULE-SINKING FUND METHOD +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE SINKING FUND METHOD. THIS METHOD IS USED BY REGULATED +INDUSTRIES QUITE A BIT. IN THIS METHOD THERE ARE EQUAL YEARLY +DEPRECIATION CHARGES BUT THE DEPRECIATION IS ASSUMED TO BE +INVESTED IN A (SINKING FUND) ACCOUNT EARNING STATED INTEREST. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE, LIFE IN YEARS, +AND SINKING FUND INTEREST RATE. + +OUTPUT INCLUDES ANNUAL DEPRECIATION CHARGES PLUS A YEAR BY +YEAR SCHEDULE OF BOOK VALUE,INTEREST ON SINKING FUND, INCREASE +IN SIZE OF SINKING FUND, AND TOTAL VALUE OF SINKING FUND. + + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 76543 +ENTER SALVAGE VALUE ? 9876 +ENTER LIFE IN YEARS ? 7 +ENTER INT RATE ON SINKING FUND(%)? 3.75 +PRESS ENTER WHEN PRINTER READY? + +ANNUAL DEPRECIATION CHARGES = 8504.96 +YEAR BOOK VAL. FUND INT. INCR. IN FUND FUND VAL. + 0 76543.00 + 1 68038.04 0.00 8504.96 8504.96 + 2 59214.15 318.94 8823.89 17328.85 + 3 50059.37 649.83 9154.79 26483.63 + 4 40561.27 993.14 9498.09 35981.73 + 5 30707.00 1349.31 9854.27 45836.00 + 6 20483.20 1718.85 10223.81 56059.80 + 7 9876.00 2102.24 10607.20 66667.00 diff --git a/BP100/DEPRSF.dif b/BP100/DEPRSF.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DEPRSF.run b/BP100/DEPRSF.run new file mode 100644 index 0000000..5d01631 --- /dev/null +++ b/BP100/DEPRSF.run @@ -0,0 +1,31 @@ + DEPRECIATION SCHEDULE-SINKING FUND METHOD +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE SINKING FUND METHOD. THIS METHOD IS USED BY REGULATED +INDUSTRIES QUITE A BIT. IN THIS METHOD THERE ARE EQUAL YEARLY +DEPRECIATION CHARGES BUT THE DEPRECIATION IS ASSUMED TO BE +INVESTED IN A (SINKING FUND) ACCOUNT EARNING STATED INTEREST. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE, LIFE IN YEARS, +AND SINKING FUND INTEREST RATE. + +OUTPUT INCLUDES ANNUAL DEPRECIATION CHARGES PLUS A YEAR BY +YEAR SCHEDULE OF BOOK VALUE,INTEREST ON SINKING FUND, INCREASE +IN SIZE OF SINKING FUND, AND TOTAL VALUE OF SINKING FUND. + + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 76543 +ENTER SALVAGE VALUE ? 9876 +ENTER LIFE IN YEARS ? 7 +ENTER INT RATE ON SINKING FUND(%)? 3.75 +PRESS ENTER WHEN PRINTER READY? + +ANNUAL DEPRECIATION CHARGES = 8504.96 +YEAR BOOK VAL. FUND INT. INCR. IN FUND FUND VAL. + 0 76543.00 + 1 68038.04 0.00 8504.96 8504.96 + 2 59214.15 318.94 8823.89 17328.85 + 3 50059.37 649.83 9154.79 26483.63 + 4 40561.27 993.14 9498.09 35981.73 + 5 30707.00 1349.31 9854.27 45836.00 + 6 20483.20 1718.85 10223.81 56059.80 + 7 9876.00 2102.24 10607.20 66667.00 diff --git a/BP100/DEPRSL.80 b/BP100/DEPRSL.80 new file mode 100644 index 0000000..85ab736 --- /dev/null +++ b/BP100/DEPRSL.80 @@ -0,0 +1,21 @@ + DEPRECIATION SCHEDULE-STRAIGHT LINE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE STRAIGHT LINE METHOD. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y + +ENTER COST ? 256789 +ENTER SALVAGE VALUE ? 1432 +ENTER LIFE IN YEARS ? 5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. + 0 256789.00 + 1 51071.40 51071.40 205717.60 + 2 51071.40 102142.80 154646.20 + 3 51071.40 153214.20 103574.80 + 4 51071.40 204285.60 52503.40 + 5 51071.40 255357.00 1432.00 diff --git a/BP100/DEPRSL.BAS b/BP100/DEPRSL.BAS new file mode 100644 index 0000000..f416dac --- /dev/null +++ b/BP100/DEPRSL.BAS @@ -0,0 +1,61 @@ +5 CLS +10 PRINT " DEPRECIATION SCHEDULE-STRAIGHT LINE" +20 PRINT "THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +30 PRINT "BY THE STRAIGHT LINE METHOD. +40 PRINT "INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +50 PRINT"OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +60 PRINT"ACCUMULATED DEPRECIATION AND BOOK VALUE. +90 INPUT " PRESS ENTER TO BEGIN";Z9 +100 CLS +105 INPUT"DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)";Z2$ +106 IF Z2$<>"Y" AND Z2$<>"N" THEN GOTO 105 +108 PRINT +110 INPUT "ENTER COST ";C +120 INPUT "ENTER SALVAGE VALUE ";S +130 INPUT "ENTER LIFE IN YEARS ";L +140 IF C >= S GOTO 200 +150 PRINT +160 PRINT"SALVAGE VALUE > COST ---- ERROR-ERROR" +170 PRINT"ENTER DATA AGAIN." +180 FOR I= 1 TO 400:NEXT I +190 GOTO 100 +200 CLS +210 GOSUB 1000:REM HEADING +220 GOSUB 1100:REM INITIALIZE +230 GOSUB 1200:REM COMPUTE & PRINT +250 END +1000 REM HEADING SUBROUTINE +1010 CLS +1015 IF Z2$="Y" THEN INPUT"PRESS ENTER WHEN PRINTER READY";Z9$:PRINT +1020 H1$="YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. " +1030 C1$=" ## #####.## #######.## #######.##" +1035 C2$=" ## #######.##" +1037 IF Z2$="Y" THEN LPRINT "STRAIGHT-LINE DEPRECIATION SCHEDULE":LPRINT" ":LPRINT "INITIAL COST = ";C:LPRINT"SALVAGE VALUE = ";S:LPRINT"LIFE OF ASSET(YEARS) = ";L:LPRINT" " +1040 PRINT H1$:IF Z2$="Y" THEN LPRINT H1$:LPRINT " " +1050 RETURN +1100 REM INITIALIZE SUBROUTINE +1110 AD=0:REM ACCUMULATED DEPRECIATION +1115 DP=C-S :REM AMOUNT TO BE DEPRECIATED +1120 BV=C :REM BOOK VALUE +1125 YR=0 :REM PRESENT YEAR +1150 RETURN +1200 REM COMPUTATION AND PRINTING SUBROUTINE +1210 PRINT USING C2$;YR,C +1215 IF Z2$="Y" THEN LPRINT USING C2$;YR,C:LPRINT" " +1220 FOR I=1 TO L-1 +1230 D=(C-S)/L +1240 BV=BV-D : AD=AD+D +1250 YR=YR+1 +1260 PRINT USING C1$;YR,D,AD,BV +1262 IF Z2$="Y" THEN LPRINT USING C1$;YR,D,AD,BV:GOTO 1270 +1265 IF I/10=INT(I/10) GOSUB 1400 ' STOP SCROLLING OFF SCREEN +1270 NEXT I +1280 D=(C-S)-AD +1290 BV=BV-D:AD=AD+D : YR=YR+1 +1295 PRINT USING C1$;YR,D,AD,BV +1297 IF Z2$="Y" THEN LPRINT USING C1$;YR,D,AD,BV +1300 RETURN +1400 REM SUBROUTINE TO HOLD OUTPUT ON SCREEN +1410 INPUT "FOR MORE OF TABLE PRESS ENTER";Z9 +1420 GOSUB 1000 +1430 RETURN diff --git a/BP100/DEPRSL.INP b/BP100/DEPRSL.INP new file mode 100644 index 0000000..3baab71 --- /dev/null +++ b/BP100/DEPRSL.INP @@ -0,0 +1,6 @@ + +Y +256789 +1432 +5 + diff --git a/BP100/DEPRSL.OUT b/BP100/DEPRSL.OUT new file mode 100644 index 0000000..90c686e --- /dev/null +++ b/BP100/DEPRSL.OUT @@ -0,0 +1,21 @@ + DEPRECIATION SCHEDULE-STRAIGHT LINE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE STRAIGHT LINE METHOD. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y + +ENTER COST ? 256789 +ENTER SALVAGE VALUE ? 1432 +ENTER LIFE IN YEARS ? 5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. + 0 256789.00 + 1 51071.40 51071.40 205717.60 + 2 51071.40 102142.80 154646.20 + 3 51071.40 153214.20 103574.80 + 4 51071.40 204285.60 52503.40 + 5 51071.40 255357.00 1432.00 diff --git a/BP100/DEPRSL.dif b/BP100/DEPRSL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DEPRSL.run b/BP100/DEPRSL.run new file mode 100644 index 0000000..85ab736 --- /dev/null +++ b/BP100/DEPRSL.run @@ -0,0 +1,21 @@ + DEPRECIATION SCHEDULE-STRAIGHT LINE +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE STRAIGHT LINE METHOD. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y + +ENTER COST ? 256789 +ENTER SALVAGE VALUE ? 1432 +ENTER LIFE IN YEARS ? 5 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. + 0 256789.00 + 1 51071.40 51071.40 205717.60 + 2 51071.40 102142.80 154646.20 + 3 51071.40 153214.20 103574.80 + 4 51071.40 204285.60 52503.40 + 5 51071.40 255357.00 1432.00 diff --git a/BP100/DEPRSY.80 b/BP100/DEPRSY.80 new file mode 100644 index 0000000..a2016f5 --- /dev/null +++ b/BP100/DEPRSY.80 @@ -0,0 +1,18 @@ + DEPRECIATION SCHEDULE-SUM OF DIGITS +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE SUM OF DIGITS METHOD. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 567234 +ENTER SALVAGE VALUE ? 891 +ENTER LIFE IN YEARS ? 3 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. + 0 567234.00 + 1 283171.50 283171.50 284062.50 + 2 188781.00 471952.50 95281.50 + 3 94390.50 566343.00 891.00 diff --git a/BP100/DEPRSY.BAS b/BP100/DEPRSY.BAS new file mode 100644 index 0000000..019050f --- /dev/null +++ b/BP100/DEPRSY.BAS @@ -0,0 +1,61 @@ +5 CLS +10 PRINT " DEPRECIATION SCHEDULE-SUM OF DIGITS" +20 PRINT "THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +30 PRINT "BY THE SUM OF DIGITS METHOD." +40 PRINT "INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +50 PRINT"OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +60 PRINT"ACCUMULATED DEPRECIATION AND BOOK VALUE. +90 INPUT " PRESS ENTER TO BEGIN";Z9 +100 CLS +105 INPUT"DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)";Z2$ +106 IF Z2$<>"Y" AND Z2$<>"N" THEN GOTO 105 +110 INPUT "ENTER COST ";C +120 INPUT "ENTER SALVAGE VALUE ";S +130 INPUT "ENTER LIFE IN YEARS ";L +140 IF C >= S GOTO 200 +150 PRINT +160 PRINT"SALVAGE VALUE > COST ---- ERROR-ERROR" +170 PRINT"ENTER DATA AGAIN." +180 FOR I= 1 TO 400:NEXT I +190 GOTO 100 +200 CLS +210 GOSUB 1000:REM HEADING +220 GOSUB 1100:REM INITIALIZE +230 GOSUB 1200:REM COMPUTE & PRINT +250 END +1000 REM HEADING SUBROUTINE +1010 CLS +1015 IF Z2$="Y" THEN INPUT"PRESS ENTER WHEN PRINTER READY";Z9$:PRINT +1020 H1$="YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. " +1030 C1$=" ## #####.## #######.## #######.##" +1035 C2$=" ## #######.##" +1037 IF Z2$="Y" THEN LPRINT "SUM OF DIGITS DEPRECIATION SCHEDULE":LPRINT" ":LPRINT "INITIAL COST = ";C:LPRINT"SALVAGE VALUE = ";S:LPRINT"LIFE OF ASSET(YEARS) = ";L:LPRINT" " +1040 PRINT H1$:IF Z2$="Y" THEN LPRINT H1$:LPRINT " " +1050 RETURN +1100 REM INITIALIZE SUBROUTINE +1110 AD=0:REM ACCUMULATED DEPRECIATION +1115 DP=C-S :REM AMOUNT TO BE DEPRECIATED +1120 BV=C :REM BOOK VALUE +1125 YR=0 :REM PRESENT YEAR +1150 RETURN +1200 REM COMPUTATION AND PRINTING SUBROUTINE +1210 PRINT USING C2$;YR,C +1215 IF Z2$="Y" THEN LPRINT USING C2$;YR,C:LPRINT" " +1218 SY=L*(L+1)/2:REM SUM OF YEARS DIGITS +1220 FOR I=1 TO L-1 +1230 D=(C-S)*(L-I+1)/SY +1240 BV=BV-D : AD=AD+D +1250 YR=YR+1 +1260 PRINT USING C1$;YR,D,AD,BV +1262 IF Z2$="Y" THEN LPRINT USING C1$;YR,D,AD,BV:GOTO 1270 +1265 IF I/10=INT(I/10) GOSUB 1400 ' STOP SCROLLING OFF SCREEN +1270 NEXT I +1280 D=(C-S)-AD +1290 BV=BV-D:AD=AD+D : YR=YR+1 +1295 PRINT USING C1$;YR,D,AD,BV +1297 IF Z2$="Y" THEN LPRINT USING C1$;YR,D,AD,BV +1300 RETURN +1400 REM SUBROUTINE TO HOLD OUTPUT ON SCREEN +1410 INPUT "FOR MORE OF TABLE PRESS ENTER";Z9 +1420 GOSUB 1000 +1430 RETURN diff --git a/BP100/DEPRSY.INP b/BP100/DEPRSY.INP new file mode 100644 index 0000000..29195ca --- /dev/null +++ b/BP100/DEPRSY.INP @@ -0,0 +1,6 @@ + +Y +567234 +891 +3 + diff --git a/BP100/DEPRSY.OUT b/BP100/DEPRSY.OUT new file mode 100644 index 0000000..7ad8f96 --- /dev/null +++ b/BP100/DEPRSY.OUT @@ -0,0 +1,18 @@ + DEPRECIATION SCHEDULE-SUM OF DIGITS +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE SUM OF DIGITS METHOD. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 567234 +ENTER SALVAGE VALUE ? 891 +ENTER LIFE IN YEARS ? 3 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. + 0 567234.00 + 1 283171.50 283171.50 284062.50 + 2 188781.00 471952.50 95281.50 + 3 94390.50 566343.00 891.00 diff --git a/BP100/DEPRSY.dif b/BP100/DEPRSY.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DEPRSY.run b/BP100/DEPRSY.run new file mode 100644 index 0000000..a2016f5 --- /dev/null +++ b/BP100/DEPRSY.run @@ -0,0 +1,18 @@ + DEPRECIATION SCHEDULE-SUM OF DIGITS +THIS PROGRAM PRINTS A SCHEDULE FOR DEPRECIATING AN ASSET +BY THE SUM OF DIGITS METHOD. +INPUTS ARE ITEM COST,ESTIMATED SALVAGE VALUE & LIFE IN YEARS. +OUTPUT IS A YEAR BY YEAR SCHEDULE OF CURRENT DEPRECIATION, +ACCUMULATED DEPRECIATION AND BOOK VALUE. + PRESS ENTER TO BEGIN? +DO YOU WANT OUTPUT ON LINEPRINTER(Y/N)? Y +ENTER COST ? 567234 +ENTER SALVAGE VALUE ? 891 +ENTER LIFE IN YEARS ? 3 +PRESS ENTER WHEN PRINTER READY? + +YEAR CURR.DEP. ACCUM.DEP. BOOK VAL. + 0 567234.00 + 1 283171.50 283171.50 284062.50 + 2 188781.00 471952.50 95281.50 + 3 94390.50 566343.00 891.00 diff --git a/BP100/DILANAL.80 b/BP100/DILANAL.80 new file mode 100644 index 0000000..9320b53 --- /dev/null +++ b/BP100/DILANAL.80 @@ -0,0 +1,43 @@ + DILUTION ANALYSIS +WHEN TWO PUBLICLY TRADED COMPANIES DECIDE TO MERGE VIA USE OF +AN EXCHANGE OF STOCK, THE ANALYSIS IS DOMINATED BY THE EXCHANGE +RATIO(I.E. # OF SHARES THE SURVIVING COMPANY OFFERS FOR EACH +SHARE OF THE ACQUIRED COMPANY), THE PRICE-EARNINGS RATIOS OF +THE SURVIVING FIRM, AND GENERAL CONDITIONS IN THE STOCK MARKET. +IN GENERAL WE DO NOT WANT EARNINGS PER SHARE FOR THE ACQUIRING +TO DECREASE. IF A DECREASE OCCURS THEN DILUTION OCCURS. +IF THE P-E RATIO FOR THE ACQUIRING FIRM REMAINS AS BEFORE THE +MERGER THEN DILUTION MEANS A LOWER PER SHARE STOCK PRICE. +IN THIS PROGRAM WE INPUT FOR EACH OF THE TWO COMPANIES THE +FOLLOWING: EARNINGS AFTER TAXES, SHARES OUTSTANDING,ERS, SHARE +PRICE AT TIME OF EXCHANGE. WE ALSO INPUT THE EXCHANGE RATIO. +OUTPUT CONSISTS OF THE NUMBER OF NEW SHARES ISSUED, EARNINGS +AFTER TAXES AND EARNINGS PER SHARE FOR THE SURVIVING FIRM. +PRESS ENTER TO BEGIN? +ANSWER THE FOLLOWING FOR THE ACQUIRING FIRM + +EARNINGS AFTER TAXES ? 123456789 +SHARES OUTSTANDING ? 987654 +PRICE AT TIME OF EXCHANGE ? 345 + +ANSWER THE FOLLOWING FOR THE ACQUIRED FIRM + +EARNINGS AFTER TAXES ? 678234 +SHARES OUTSTANDING ? 842741 +PRICE AT TIME OF EXCHANGE ? 65 + +INPUT EXCHANGE RATIO ? 7.75 + ACQUIRING(BEFORE) ACQUIRED ACQUIRING(AFTER) + +EAT 123456789.00 678234.00 124135023.00 +SH. OUTST. 987654.00 842741.00 7518896.75 +ERS 125.00 0.80 16.51 +P-E RATIO 2.76 80.77 + +EXCHANGE RATIO IS 7.75 ACQUIRING FOR EACH 1 ACQUIRED. + +ASSUMING NEW P-E RATIO WILL BE BETWEEN 2.76 AND 80.7659 +NEW PER SHARE PRICE WILL BE BETWEEN 45.5669 AND + 1333.42 + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/DILANAL.BAS b/BP100/DILANAL.BAS new file mode 100644 index 0000000..095e160 --- /dev/null +++ b/BP100/DILANAL.BAS @@ -0,0 +1,53 @@ +1 REM DILANAL +5 CLEAR 1000 +10 CLS:PRINT TAB(20); "DILUTION ANALYSIS" +20 PRINT"WHEN TWO PUBLICLY TRADED COMPANIES DECIDE TO MERGE VIA USE OF +25 PRINT"AN EXCHANGE OF STOCK, THE ANALYSIS IS DOMINATED BY THE EXCHANGE +30 PRINT"RATIO(I.E. # OF SHARES THE SURVIVING COMPANY OFFERS FOR EACH +35 PRINT"SHARE OF THE ACQUIRED COMPANY), THE PRICE-EARNINGS RATIOS OF +40 PRINT"THE SURVIVING FIRM, AND GENERAL CONDITIONS IN THE STOCK MARKET. +45 PRINT"IN GENERAL WE DO NOT WANT EARNINGS PER SHARE FOR THE ACQUIRING +50 PRINT"TO DECREASE. IF A DECREASE OCCURS THEN DILUTION OCCURS. +55 PRINT"IF THE P-E RATIO FOR THE ACQUIRING FIRM REMAINS AS BEFORE THE +60 PRINT"MERGER THEN DILUTION MEANS A LOWER PER SHARE STOCK PRICE. +65 PRINT"IN THIS PROGRAM WE INPUT FOR EACH OF THE TWO COMPANIES THE +70 PRINT"FOLLOWING: EARNINGS AFTER TAXES, SHARES OUTSTANDING,ERS, SHARE +75 PRINT"PRICE AT TIME OF EXCHANGE. WE ALSO INPUT THE EXCHANGE RATIO. +80 PRINT"OUTPUT CONSISTS OF THE NUMBER OF NEW SHARES ISSUED, EARNINGS +85 PRINT"AFTER TAXES AND EARNINGS PER SHARE FOR THE SURVIVING FIRM. +90 INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 PRINT"ANSWER THE FOLLOWING FOR THE ACQUIRING FIRM":PRINT +120 INPUT"EARNINGS AFTER TAXES ";EAT(1) +125 INPUT"SHARES OUTSTANDING ";SO(1) +130 INPUT"PRICE AT TIME OF EXCHANGE ";P(1) +140 PRINT:PRINT"ANSWER THE FOLLOWING FOR THE ACQUIRED FIRM":PRINT +150 INPUT"EARNINGS AFTER TAXES ";EAT(2) +155 INPUT"SHARES OUTSTANDING ";SO(2) +160 INPUT"PRICE AT TIME OF EXCHANGE ";P(2) +165 PRINT +170 INPUT"INPUT EXCHANGE RATIO ";ER +200 REM COMPUTATIONS +210 ERS(1)=EAT(1)/SO(1):ERS(2)=EAT(2)/SO(2):REM EARNINGS PER SHARE +220 PE(1)=P(1)/ERS(1):PE(2)=P(2)/ERS(2):REM P-E RATIOS +230 REM SUBSCRIPT 3 REFERS TO MERGED COMPANY +240 EAT(3)=EAT(1)+EAT(2) +250 SO(3)=SO(1)+SO(2)*ER +260 ERS(3)=EAT(3)/SO(3) +300 CLS +310 F$(1)="% % #######.## #######.## #######.##" +320 F$(2)=" ACQUIRING(BEFORE) ACQUIRED ACQUIRING(AFTER)" +330 PRINT F$(2) +340 PRINT +350 PRINT USING F$(1);"EAT",EAT(1),EAT(2),EAT(3) +360 PRINT USING F$(1);"SH. OUTST.",SO(1),SO(2),SO(3) +370 PRINT USING F$(1);"ERS",ERS(1),ERS(2),ERS(3) +380 PRINT USING F$(1);"P-E RATIO",PE(1),PE(2) +390 PRINT:PRINT "EXCHANGE RATIO IS ";ER;" ACQUIRING FOR EACH 1 ACQUIRED." +400 PRINT:PRINT"ASSUMING NEW P-E RATIO WILL BE BETWEEN ";PE(1);"AND";PE(2) +410 PRINT "NEW PER SHARE PRICE WILL BE BETWEEN ";ERS(3)*PE(1);" AND" +420 PRINT ERS(3)*PE(2) +430 PRINT:INPUT"PRESS ENTER FOR MORE COMPUTATIONS";Z9$ +432 IF Z9$ = "-1" THEN END +435 CLEAR 1000 +440 GOTO 100 diff --git a/BP100/DILANAL.INP b/BP100/DILANAL.INP new file mode 100644 index 0000000..2ead959 --- /dev/null +++ b/BP100/DILANAL.INP @@ -0,0 +1,9 @@ + +123456789 +987654 +345 +678234 +842741 +65 +7.75 +-1 diff --git a/BP100/DILANAL.OUT b/BP100/DILANAL.OUT new file mode 100644 index 0000000..14bb2bf --- /dev/null +++ b/BP100/DILANAL.OUT @@ -0,0 +1,43 @@ + DILUTION ANALYSIS +WHEN TWO PUBLICLY TRADED COMPANIES DECIDE TO MERGE VIA USE OF +AN EXCHANGE OF STOCK, THE ANALYSIS IS DOMINATED BY THE EXCHANGE +RATIO(I.E. # OF SHARES THE SURVIVING COMPANY OFFERS FOR EACH +SHARE OF THE ACQUIRED COMPANY), THE PRICE-EARNINGS RATIOS OF +THE SURVIVING FIRM, AND GENERAL CONDITIONS IN THE STOCK MARKET. +IN GENERAL WE DO NOT WANT EARNINGS PER SHARE FOR THE ACQUIRING +TO DECREASE. IF A DECREASE OCCURS THEN DILUTION OCCURS. +IF THE P-E RATIO FOR THE ACQUIRING FIRM REMAINS AS BEFORE THE +MERGER THEN DILUTION MEANS A LOWER PER SHARE STOCK PRICE. +IN THIS PROGRAM WE INPUT FOR EACH OF THE TWO COMPANIES THE +FOLLOWING: EARNINGS AFTER TAXES, SHARES OUTSTANDING,ERS, SHARE +PRICE AT TIME OF EXCHANGE. WE ALSO INPUT THE EXCHANGE RATIO. +OUTPUT CONSISTS OF THE NUMBER OF NEW SHARES ISSUED, EARNINGS +AFTER TAXES AND EARNINGS PER SHARE FOR THE SURVIVING FIRM. +PRESS ENTER TO BEGIN? +ANSWER THE FOLLOWING FOR THE ACQUIRING FIRM + +EARNINGS AFTER TAXES ? 123456789 +SHARES OUTSTANDING ? 987654 +PRICE AT TIME OF EXCHANGE ? 345 + +ANSWER THE FOLLOWING FOR THE ACQUIRED FIRM + +EARNINGS AFTER TAXES ? 678234 +SHARES OUTSTANDING ? 842741 +PRICE AT TIME OF EXCHANGE ? 65 + +INPUT EXCHANGE RATIO ? 7.75 + ACQUIRING(BEFORE) ACQUIRED ACQUIRING(AFTER) + +EAT 123456789.00 678234.00 124135023.00 +SH. OUTST. 987654.00 842741.00 7518896.75 +ERS 125.00 0.80 16.51 +P-E RATIO 2.76 80.77 + +EXCHANGE RATIO IS 7.75 ACQUIRING FOR EACH 1 ACQUIRED. + +ASSUMING NEW P-E RATIO WILL BE BETWEEN 2.76 AND 80.7659 +NEW PER SHARE PRICE WILL BE BETWEEN 45.5669 AND + 1333.42 + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/DILANAL.dif b/BP100/DILANAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DILANAL.run b/BP100/DILANAL.run new file mode 100644 index 0000000..9320b53 --- /dev/null +++ b/BP100/DILANAL.run @@ -0,0 +1,43 @@ + DILUTION ANALYSIS +WHEN TWO PUBLICLY TRADED COMPANIES DECIDE TO MERGE VIA USE OF +AN EXCHANGE OF STOCK, THE ANALYSIS IS DOMINATED BY THE EXCHANGE +RATIO(I.E. # OF SHARES THE SURVIVING COMPANY OFFERS FOR EACH +SHARE OF THE ACQUIRED COMPANY), THE PRICE-EARNINGS RATIOS OF +THE SURVIVING FIRM, AND GENERAL CONDITIONS IN THE STOCK MARKET. +IN GENERAL WE DO NOT WANT EARNINGS PER SHARE FOR THE ACQUIRING +TO DECREASE. IF A DECREASE OCCURS THEN DILUTION OCCURS. +IF THE P-E RATIO FOR THE ACQUIRING FIRM REMAINS AS BEFORE THE +MERGER THEN DILUTION MEANS A LOWER PER SHARE STOCK PRICE. +IN THIS PROGRAM WE INPUT FOR EACH OF THE TWO COMPANIES THE +FOLLOWING: EARNINGS AFTER TAXES, SHARES OUTSTANDING,ERS, SHARE +PRICE AT TIME OF EXCHANGE. WE ALSO INPUT THE EXCHANGE RATIO. +OUTPUT CONSISTS OF THE NUMBER OF NEW SHARES ISSUED, EARNINGS +AFTER TAXES AND EARNINGS PER SHARE FOR THE SURVIVING FIRM. +PRESS ENTER TO BEGIN? +ANSWER THE FOLLOWING FOR THE ACQUIRING FIRM + +EARNINGS AFTER TAXES ? 123456789 +SHARES OUTSTANDING ? 987654 +PRICE AT TIME OF EXCHANGE ? 345 + +ANSWER THE FOLLOWING FOR THE ACQUIRED FIRM + +EARNINGS AFTER TAXES ? 678234 +SHARES OUTSTANDING ? 842741 +PRICE AT TIME OF EXCHANGE ? 65 + +INPUT EXCHANGE RATIO ? 7.75 + ACQUIRING(BEFORE) ACQUIRED ACQUIRING(AFTER) + +EAT 123456789.00 678234.00 124135023.00 +SH. OUTST. 987654.00 842741.00 7518896.75 +ERS 125.00 0.80 16.51 +P-E RATIO 2.76 80.77 + +EXCHANGE RATIO IS 7.75 ACQUIRING FOR EACH 1 ACQUIRED. + +ASSUMING NEW P-E RATIO WILL BE BETWEEN 2.76 AND 80.7659 +NEW PER SHARE PRICE WILL BE BETWEEN 45.5669 AND + 1333.42 + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/DISCBAL.80 b/BP100/DISCBAL.80 new file mode 100644 index 0000000..d3bef9c --- /dev/null +++ b/BP100/DISCBAL.80 @@ -0,0 +1,28 @@ + TRUE INTEREST RATE ON DISCOUNTED LOAN + +MOST CONSUMER BANK LOANS ARE WHAT ARE CALLED 'DISCOUNT LOANS'. +IN A LOAN OF THIS TYPE THE FINANCE CHARGE IS PREPAID. +FOR EXAMPLE, THE BANK WILL GIVE YOU A LOAN WITH FACE VALUE +EQUAL TO A STATED AMOUNT(TOTAL OF REPAYMENTS) AND WILL THEN +DEDUCT THE INTEREST CHARGES FROM THE PROCEEDS OF THE LOAN. +THUS THE CONSUMER DOES NOT GET THE FACE VALUE, BUT SOME LOWER +AMOUNT. TO MAKE MATTERS WORSE CHARGES FOR ACCIDENT & HEALTH +INSURANCE,CREDIT LIFE INSURANCE, AND OFFICIAL FEES MAY BE +REQUIRED.THIS PROGRAM COMPUTES THE PROCEEDS AND THE EFFECTIVE +INTEREST RATE IN SUCH A CASE. +THE CHARGES SUCH AS A & H ARE CONSIDERED AND TEND TO RAISE +THE EFFECTIVE RATE. + +PRESS ENTER TO BEGIN? +TOTAL REPAYMENTS OF LOAN ? 250000 +TOTAL INTEREST PREPAID ? 12500 +TOTAL A & H INSURANCE CHARGES ? 876 +TOTAL CREDIT LIFE INS. CHARGES ? 321 +TOTAL OFFICIAL FEES CHARGES ? 5678 +MONTHLY LOAN PAYMENT ? 1275 +TOTAL NUMBER OF MONTHLY PMTS ? 360 + +PROCEEDS OF LOAN $230625.00 +ANNUAL EFFECTIVE INT. RATE 5.26% + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/DISCBAL.BAS b/BP100/DISCBAL.BAS new file mode 100644 index 0000000..b3b135f --- /dev/null +++ b/BP100/DISCBAL.BAS @@ -0,0 +1,46 @@ +1 REM DISCBAL +5 CLEAR 1000 +10 CLS +20 PRINT TAB(5); "TRUE INTEREST RATE ON DISCOUNTED LOAN":PRINT +30 PRINT"MOST CONSUMER BANK LOANS ARE WHAT ARE CALLED 'DISCOUNT LOANS'. +35 PRINT"IN A LOAN OF THIS TYPE THE FINANCE CHARGE IS PREPAID. +40 PRINT"FOR EXAMPLE, THE BANK WILL GIVE YOU A LOAN WITH FACE VALUE +45 PRINT"EQUAL TO A STATED AMOUNT(TOTAL OF REPAYMENTS) AND WILL THEN +50 PRINT"DEDUCT THE INTEREST CHARGES FROM THE PROCEEDS OF THE LOAN. +55 PRINT"THUS THE CONSUMER DOES NOT GET THE FACE VALUE, BUT SOME LOWER +57 PRINT"AMOUNT. TO MAKE MATTERS WORSE CHARGES FOR ACCIDENT & HEALTH +58 PRINT"INSURANCE,CREDIT LIFE INSURANCE, AND OFFICIAL FEES MAY BE +60 PRINT"REQUIRED.THIS PROGRAM COMPUTES THE PROCEEDS AND THE EFFECTIVE +65 PRINT"INTEREST RATE IN SUCH A CASE." +70 PRINT"THE CHARGES SUCH AS A & H ARE CONSIDERED AND TEND TO RAISE +75 PRINT"THE EFFECTIVE RATE. +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT"TOTAL REPAYMENTS OF LOAN ";FV +120 INPUT"TOTAL INTEREST PREPAID ";IR +122 INPUT"TOTAL A & H INSURANCE CHARGES ";IH +124 INPUT"TOTAL CREDIT LIFE INS. CHARGES ";IC +126 INPUT"TOTAL OFFICIAL FEES CHARGES ";IO +130 PV=FV-IR-IH-IC-IO:REM PROCEEDS OF LOAN +140 INPUT"MONTHLY LOAN PAYMENT ";PMT +150 INPUT"TOTAL NUMBER OF MONTHLY PMTS ";N +160 GOSUB 4200:REM COMPUTE EFFECTIVE INTEREST RATE +170 F$(1)="% % $$######.##" +180 F$(2)="% % ###.##" +190 PRINT +200 PRINT USING F$(1);"PROCEEDS OF LOAN",PV +205 I=1200*I +210 PRINT USING F$(2);"ANNUAL EFFECTIVE INT. RATE",I;:PRINT"%" +220 PRINT:INPUT"PRESS ENTER FOR MORE COMPUTATIONS";Z9$ +225 IF Z9$ = "-1" THEN END +230 GOTO 100 +4200 REM I FOR DISCOUNT LOAN +4210 I=.01 +4220 P=PMT/I*(1-(1+I)[(-N))-PV +4225 D=N*PMT/(I*(1+I)[(N+1))-PMT/(I[2)*(1-(1+I)[(-N)) +4230 GOSUB 4600 +4240 IF ABS(P)<=.1 THEN RETURN +4250 GOTO 4220 +4600 REM COMPUTATION +4610 I=I-P/D +4620 RETURN diff --git a/BP100/DISCBAL.INP b/BP100/DISCBAL.INP new file mode 100644 index 0000000..93178ac --- /dev/null +++ b/BP100/DISCBAL.INP @@ -0,0 +1,9 @@ + +250000 +12500 +876 +321 +5678 +1275 +360 +-1 diff --git a/BP100/DISCBAL.OUT b/BP100/DISCBAL.OUT new file mode 100644 index 0000000..a567454 --- /dev/null +++ b/BP100/DISCBAL.OUT @@ -0,0 +1,28 @@ + TRUE INTEREST RATE ON DISCOUNTED LOAN + +MOST CONSUMER BANK LOANS ARE WHAT ARE CALLED 'DISCOUNT LOANS'. +IN A LOAN OF THIS TYPE THE FINANCE CHARGE IS PREPAID. +FOR EXAMPLE, THE BANK WILL GIVE YOU A LOAN WITH FACE VALUE +EQUAL TO A STATED AMOUNT(TOTAL OF REPAYMENTS) AND WILL THEN +DEDUCT THE INTEREST CHARGES FROM THE PROCEEDS OF THE LOAN. +THUS THE CONSUMER DOES NOT GET THE FACE VALUE, BUT SOME LOWER +AMOUNT. TO MAKE MATTERS WORSE CHARGES FOR ACCIDENT & HEALTH +INSURANCE,CREDIT LIFE INSURANCE, AND OFFICIAL FEES MAY BE +REQUIRED.THIS PROGRAM COMPUTES THE PROCEEDS AND THE EFFECTIVE +INTEREST RATE IN SUCH A CASE. +THE CHARGES SUCH AS A & H ARE CONSIDERED AND TEND TO RAISE +THE EFFECTIVE RATE. + +PRESS ENTER TO BEGIN? +TOTAL REPAYMENTS OF LOAN ? 250000 +TOTAL INTEREST PREPAID ? 12500 +TOTAL A & H INSURANCE CHARGES ? 876 +TOTAL CREDIT LIFE INS. CHARGES ? 321 +TOTAL OFFICIAL FEES CHARGES ? 5678 +MONTHLY LOAN PAYMENT ? 1275 +TOTAL NUMBER OF MONTHLY PMTS ? 360 + +PROCEEDS OF LOAN $230625.00 +ANNUAL EFFECTIVE INT. RATE 5.26% + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/DISCBAL.dif b/BP100/DISCBAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/DISCBAL.run b/BP100/DISCBAL.run new file mode 100644 index 0000000..d3bef9c --- /dev/null +++ b/BP100/DISCBAL.run @@ -0,0 +1,28 @@ + TRUE INTEREST RATE ON DISCOUNTED LOAN + +MOST CONSUMER BANK LOANS ARE WHAT ARE CALLED 'DISCOUNT LOANS'. +IN A LOAN OF THIS TYPE THE FINANCE CHARGE IS PREPAID. +FOR EXAMPLE, THE BANK WILL GIVE YOU A LOAN WITH FACE VALUE +EQUAL TO A STATED AMOUNT(TOTAL OF REPAYMENTS) AND WILL THEN +DEDUCT THE INTEREST CHARGES FROM THE PROCEEDS OF THE LOAN. +THUS THE CONSUMER DOES NOT GET THE FACE VALUE, BUT SOME LOWER +AMOUNT. TO MAKE MATTERS WORSE CHARGES FOR ACCIDENT & HEALTH +INSURANCE,CREDIT LIFE INSURANCE, AND OFFICIAL FEES MAY BE +REQUIRED.THIS PROGRAM COMPUTES THE PROCEEDS AND THE EFFECTIVE +INTEREST RATE IN SUCH A CASE. +THE CHARGES SUCH AS A & H ARE CONSIDERED AND TEND TO RAISE +THE EFFECTIVE RATE. + +PRESS ENTER TO BEGIN? +TOTAL REPAYMENTS OF LOAN ? 250000 +TOTAL INTEREST PREPAID ? 12500 +TOTAL A & H INSURANCE CHARGES ? 876 +TOTAL CREDIT LIFE INS. CHARGES ? 321 +TOTAL OFFICIAL FEES CHARGES ? 5678 +MONTHLY LOAN PAYMENT ? 1275 +TOTAL NUMBER OF MONTHLY PMTS ? 360 + +PROCEEDS OF LOAN $230625.00 +ANNUAL EFFECTIVE INT. RATE 5.26% + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/EFFECT.80 b/BP100/EFFECT.80 new file mode 100644 index 0000000..69227d0 --- /dev/null +++ b/BP100/EFFECT.80 @@ -0,0 +1,13 @@ + EFFECTIVE INTEREST RATE ON LOAN + +GIVEN TOTAL AMOUNT BORROWED,NUMBER OF PAYMENTS PER YEAR, +TOTAL NUMBER OF PAYMENTS,AND AMOUNT OF EACH PAYMENT THIS +PROGRAM CALCULATES AN EFFECTIVE INTEREST RATE FOR A LOAN. +PRESS ENTER TO BEGIN? +TOTAL AMOUNT BORROWED = ? 250000 +NUMBER OF PAYMENTS YEARLY = ? 12 +TOTAL NUMBER OF PAYMENTS = ? 360 +AMOUNT OF EACH PAYMENT = ? 1275 + +EFFECTIVE INTEREST RATE = 5.55789 +TOTAL INTEREST PAID = 209000 diff --git a/BP100/EFFECT.BAS b/BP100/EFFECT.BAS new file mode 100644 index 0000000..c79e45c --- /dev/null +++ b/BP100/EFFECT.BAS @@ -0,0 +1,17 @@ +5 CLS +10 PRINT " EFFECTIVE INTEREST RATE ON LOAN" +20 PRINT +30 PRINT "GIVEN TOTAL AMOUNT BORROWED,NUMBER OF PAYMENTS PER YEAR, +40 PRINT "TOTAL NUMBER OF PAYMENTS,AND AMOUNT OF EACH PAYMENT THIS +50 PRINT "PROGRAM CALCULATES AN EFFECTIVE INTEREST RATE FOR A LOAN. +60 INPUT "PRESS ENTER TO BEGIN";Z9 +100 CLS +110 INPUT "TOTAL AMOUNT BORROWED = ";B +120 INPUT "NUMBER OF PAYMENTS YEARLY = ";NY +130 INPUT "TOTAL NUMBER OF PAYMENTS = ";N +140 INPUT "AMOUNT OF EACH PAYMENT = ";P +150 EFF= 2*NY*(N*P-B)/(B*(N+1)) +160 PRINT +170 EFF = EFF*100 +180 PRINT "EFFECTIVE INTEREST RATE = ";EFF +190 PRINT"TOTAL INTEREST PAID = ";N*P-B diff --git a/BP100/EFFECT.INP b/BP100/EFFECT.INP new file mode 100644 index 0000000..47b79dc --- /dev/null +++ b/BP100/EFFECT.INP @@ -0,0 +1,5 @@ + +250000 +12 +360 +1275 diff --git a/BP100/EFFECT.OUT b/BP100/EFFECT.OUT new file mode 100644 index 0000000..d836dfb --- /dev/null +++ b/BP100/EFFECT.OUT @@ -0,0 +1,13 @@ + EFFECTIVE INTEREST RATE ON LOAN + +GIVEN TOTAL AMOUNT BORROWED,NUMBER OF PAYMENTS PER YEAR, +TOTAL NUMBER OF PAYMENTS,AND AMOUNT OF EACH PAYMENT THIS +PROGRAM CALCULATES AN EFFECTIVE INTEREST RATE FOR A LOAN. +PRESS ENTER TO BEGIN? +TOTAL AMOUNT BORROWED = ? 250000 +NUMBER OF PAYMENTS YEARLY = ? 12 +TOTAL NUMBER OF PAYMENTS = ? 360 +AMOUNT OF EACH PAYMENT = ? 1275 + +EFFECTIVE INTEREST RATE = 5.55789 +TOTAL INTEREST PAID = 209000 diff --git a/BP100/EFFECT.dif b/BP100/EFFECT.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/EFFECT.run b/BP100/EFFECT.run new file mode 100644 index 0000000..69227d0 --- /dev/null +++ b/BP100/EFFECT.run @@ -0,0 +1,13 @@ + EFFECTIVE INTEREST RATE ON LOAN + +GIVEN TOTAL AMOUNT BORROWED,NUMBER OF PAYMENTS PER YEAR, +TOTAL NUMBER OF PAYMENTS,AND AMOUNT OF EACH PAYMENT THIS +PROGRAM CALCULATES AN EFFECTIVE INTEREST RATE FOR A LOAN. +PRESS ENTER TO BEGIN? +TOTAL AMOUNT BORROWED = ? 250000 +NUMBER OF PAYMENTS YEARLY = ? 12 +TOTAL NUMBER OF PAYMENTS = ? 360 +AMOUNT OF EACH PAYMENT = ? 1275 + +EFFECTIVE INTEREST RATE = 5.55789 +TOTAL INTEREST PAID = 209000 diff --git a/BP100/ENVELOPE.80 b/BP100/ENVELOPE.80 new file mode 100644 index 0000000..2468ead --- /dev/null +++ b/BP100/ENVELOPE.80 @@ -0,0 +1,110 @@ + ENVELOPE WRITING PROGRAM +THIS PROGRAM WILL GENERATE A PRINTED ENVELOPE ON A LINE +PRINTER. UNLESS TRACTOR FED ENVELOPES ARE AVAILABLE A FRICTION +FEED PRINTER MUST BE HOOKED UP TO THE SYSTEM. THE USER +INPUTS A RETURN ADDRESS,AN ADDRESS, THE LENGTH OF THE ENVELOPE +IN LINES(6 LINES TO THE INCH), AND NUMBER OF COPIES. MANY +OF THE INPUT VALUES MAY BE REPEATED ON SEVERAL ENVELOPES +WITHOUT ADDITIONAL INPUT. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 1 +NO COMMAS IN THE FOLLOWING, PLEASE. + +NO COMMAS IN THE FOLLOWING, PLEASE. + +ENTER LINE # 1 OF RETURN ADDRESS(-1 FOR EMPTY) +? TOM CAT +ENTER LINE # 2 OF RETURN ADDRESS(-1 FOR EMPTY) +? 123 FUNNY STREET +ENTER LINE # 3 OF RETURN ADDRESS(-1 FOR EMPTY) +? "SOMEWHERE, TX 98765" +ENTER LINE # 4 OF RETURN ADDRESS(-1 FOR EMPTY) +? -1 + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 2 + +NO COMMAS IN THE FOLLOWING, PLEASE. + +ENTER LINE # 1 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? JERRY MOUSE +ENTER LINE # 2 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? 567 CARTOON LANE +ENTER LINE # 3 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? "ANYWHERE, TX 12345" +ENTER LINE # 4 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? -1 + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 3 + + TOM CAT + 123 FUNNY STREET + SOMEWHERE, TX 98765 + + + + + JERRY MOUSE + 567 CARTOON LANE + ANYWHERE, TX 12345 + + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 4 +HOW MANY ENVELOPES DO YOU DESIRE? 1 +PRESS ENTER TO CONTINUE? + + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/ENVELOPE.BAS b/BP100/ENVELOPE.BAS new file mode 100644 index 0000000..5d8521e --- /dev/null +++ b/BP100/ENVELOPE.BAS @@ -0,0 +1,89 @@ +1 REM ENVELOPE +5 CLEAR 1000 +10 CLS +20 PRINT TAB(15); "ENVELOPE WRITING PROGRAM" +30 PRINT"THIS PROGRAM WILL GENERATE A PRINTED ENVELOPE ON A LINE +35 PRINT "PRINTER. UNLESS TRACTOR FED ENVELOPES ARE AVAILABLE A FRICTION +40 PRINT"FEED PRINTER MUST BE HOOKED UP TO THE SYSTEM. THE USER +45 PRINT"INPUTS A RETURN ADDRESS,AN ADDRESS, THE LENGTH OF THE ENVELOPE +50 PRINT"IN LINES(6 LINES TO THE INCH), AND NUMBER OF COPIES. MANY +55 PRINT"OF THE INPUT VALUES MAY BE REPEATED ON SEVERAL ENVELOPES +60 PRINT"WITHOUT ADDITIONAL INPUT. +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +190 GOSUB 600 +195 GOTO 1000 +200 CLS +210 INPUT"ENTER # OF TYPED LINES WHICH CAN FIT ON ENVELOPE";N +215 IF N<>INT(N) OR N<=0 THEN GOSUB 10000:GOTO 210 +220 REM INPUT OF RETURN ADDRESS +222 PRINT"NO COMMAS IN THE FOLLOWING, PLEASE.":PRINT +225 CLS +226 PRINT"NO COMMAS IN THE FOLLOWING, PLEASE.":PRINT +227 FOR I=1 TO 4 +230 PRINT"ENTER LINE #";I;" OF RETURN ADDRESS(-1 FOR EMPTY)" +240 INPUT L$(I+1) +245 IF L$(I+1)="-1" THEN L$(I+1)=" " +250 NEXT I +290 RETURN +300 REM ENTER MAIL TO ADDRESS +305 PRINT +307 CLS +308 PRINT"NO COMMAS IN THE FOLLOWING, PLEASE.":PRINT +310 FOR I=1 TO 4 +320 PRINT"ENTER LINE #";I;" OF MAIL TO ADDRESS(-1 FOR EMPTY)" +330 INPUT L$(I+8) +340 IF L$(I+8)="-1" THEN L$(I+8)=" " +350 NEXT I +390 RETURN +400 REM PRINT ENVELOPE ON SCREEN +410 CLS +420 FOR I=1 TO 12:PRINT TAB(T(I)); L$(I):NEXT +430 PRINT:GOSUB 10100 +490 RETURN +500 REM PRINT ENVELOPE ON PRINTER +505 CLS:INPUT"HOW MANY ENVELOPES DO YOU DESIRE";K +510 FOR JE=1 TO K +520 FOR I=1 TO N:LPRINT TAB(T(I)); L$(I):NEXT +530 GOSUB 10100 +540 PRINT +550 NEXT +590 RETURN +600 REM NEW DATA +610 CLEAR 1000 +620 DIM L$(100):DIM T(30) +625 FOR I = 1 TO 30:T(I)=1:NEXT +630 FOR I=1 TO 5:T(I)=2:NEXT +640 FOR I=7 TO 12:T(I)=30:NEXT +650 N=22:REM LENGTH OF ENVELOPE IN PRINTED LINES +655 FOR I = 1 TO 100:L$(I)="":NEXT +660 FOR I=1 TO 25:L$(I)=" ":NEXT +690 GOTO 1000 +700 REM CHANGE PRINT TABS +710 CLS +720 PRINT"PRESENT RETURN ADDRESS TAB = ";T(3) +730 INPUT"NEW RETURN ADDRESS TAB";T(3) +735 FOR I=1 TO 5:T(I)=T(3):NEXT +740 PRINT +750 PRINT"PRESENT MAIL-TO ADDRESS TAB = ";T(10) +760 INPUT"NEW MAIL-TO TO ADDRESS TAB";T(10) +770 FOR I=7 TO 12:T(I)=T(10):NEXT +780 RETURN +800 CLS:PRINT"PRESENT NUMBER OF ENVELOPE LINES = ";N +810 PRINT:INPUT"NEW NUMBER OF LINES ";N +815 IF N<>INT(N) OR N<=0 THEN GOSUB 10000:GOTO 810 +820 RETURN +1000 CLS:PRINT TAB(15); "MENU":PRINT +1005 PRINT "0. QUIT +1010 PRINT "1. INPUT RETURN ADDRESS +1020 PRINT "2. INPUT MAIL TO ADDRESS +1030 PRINT "3. PRINT ENVELOPE ON SCREEN +1040 PRINT "4. PRINT ENVELOPE ON PRINTER +1050 PRINT "5. CLEAR DATA:READY FOR NEW ENVELOPE +1060 PRINT "6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +1070 PRINT"7. CHANGE # LINES ON ENVELOPE +1100 PRINT:INPUT"MAKE YOUR CHOICE";ZC +1105 IF ZC = 0 THEN END +1110 ON ZC GOSUB 220,300,400,500,600,700,800 +1120 GOTO 1000 +10000 PRINT"INPUT ERROR! TRY AGAIN!":FOR J=1 TO 300:NEXT J:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/ENVELOPE.INP b/BP100/ENVELOPE.INP new file mode 100644 index 0000000..53f54ec --- /dev/null +++ b/BP100/ENVELOPE.INP @@ -0,0 +1,17 @@ + +1 +TOM CAT +123 FUNNY STREET +"SOMEWHERE, TX 98765" +-1 +2 +JERRY MOUSE +567 CARTOON LANE +"ANYWHERE, TX 12345" +-1 +3 + +4 +1 + +0 diff --git a/BP100/ENVELOPE.OUT b/BP100/ENVELOPE.OUT new file mode 100644 index 0000000..dc6912e --- /dev/null +++ b/BP100/ENVELOPE.OUT @@ -0,0 +1,110 @@ + ENVELOPE WRITING PROGRAM +THIS PROGRAM WILL GENERATE A PRINTED ENVELOPE ON A LINE +PRINTER. UNLESS TRACTOR FED ENVELOPES ARE AVAILABLE A FRICTION +FEED PRINTER MUST BE HOOKED UP TO THE SYSTEM. THE USER +INPUTS A RETURN ADDRESS,AN ADDRESS, THE LENGTH OF THE ENVELOPE +IN LINES(6 LINES TO THE INCH), AND NUMBER OF COPIES. MANY +OF THE INPUT VALUES MAY BE REPEATED ON SEVERAL ENVELOPES +WITHOUT ADDITIONAL INPUT. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 1 +NO COMMAS IN THE FOLLOWING, PLEASE. + +NO COMMAS IN THE FOLLOWING, PLEASE. + +ENTER LINE # 1 OF RETURN ADDRESS(-1 FOR EMPTY) +? TOM CAT +ENTER LINE # 2 OF RETURN ADDRESS(-1 FOR EMPTY) +? 123 FUNNY STREET +ENTER LINE # 3 OF RETURN ADDRESS(-1 FOR EMPTY) +? "SOMEWHERE, TX 98765" +ENTER LINE # 4 OF RETURN ADDRESS(-1 FOR EMPTY) +? -1 + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 2 + +NO COMMAS IN THE FOLLOWING, PLEASE. + +ENTER LINE # 1 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? JERRY MOUSE +ENTER LINE # 2 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? 567 CARTOON LANE +ENTER LINE # 3 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? "ANYWHERE, TX 12345" +ENTER LINE # 4 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? -1 + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 3 + + TOM CAT + 123 FUNNY STREET + SOMEWHERE, TX 98765 + + + + + JERRY MOUSE + 567 CARTOON LANE + ANYWHERE, TX 12345 + + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 4 +HOW MANY ENVELOPES DO YOU DESIRE? 1 +PRESS ENTER TO CONTINUE? + + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/ENVELOPE.dif b/BP100/ENVELOPE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/ENVELOPE.run b/BP100/ENVELOPE.run new file mode 100644 index 0000000..2468ead --- /dev/null +++ b/BP100/ENVELOPE.run @@ -0,0 +1,110 @@ + ENVELOPE WRITING PROGRAM +THIS PROGRAM WILL GENERATE A PRINTED ENVELOPE ON A LINE +PRINTER. UNLESS TRACTOR FED ENVELOPES ARE AVAILABLE A FRICTION +FEED PRINTER MUST BE HOOKED UP TO THE SYSTEM. THE USER +INPUTS A RETURN ADDRESS,AN ADDRESS, THE LENGTH OF THE ENVELOPE +IN LINES(6 LINES TO THE INCH), AND NUMBER OF COPIES. MANY +OF THE INPUT VALUES MAY BE REPEATED ON SEVERAL ENVELOPES +WITHOUT ADDITIONAL INPUT. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 1 +NO COMMAS IN THE FOLLOWING, PLEASE. + +NO COMMAS IN THE FOLLOWING, PLEASE. + +ENTER LINE # 1 OF RETURN ADDRESS(-1 FOR EMPTY) +? TOM CAT +ENTER LINE # 2 OF RETURN ADDRESS(-1 FOR EMPTY) +? 123 FUNNY STREET +ENTER LINE # 3 OF RETURN ADDRESS(-1 FOR EMPTY) +? "SOMEWHERE, TX 98765" +ENTER LINE # 4 OF RETURN ADDRESS(-1 FOR EMPTY) +? -1 + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 2 + +NO COMMAS IN THE FOLLOWING, PLEASE. + +ENTER LINE # 1 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? JERRY MOUSE +ENTER LINE # 2 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? 567 CARTOON LANE +ENTER LINE # 3 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? "ANYWHERE, TX 12345" +ENTER LINE # 4 OF MAIL TO ADDRESS(-1 FOR EMPTY) +? -1 + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 3 + + TOM CAT + 123 FUNNY STREET + SOMEWHERE, TX 98765 + + + + + JERRY MOUSE + 567 CARTOON LANE + ANYWHERE, TX 12345 + + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 4 +HOW MANY ENVELOPES DO YOU DESIRE? 1 +PRESS ENTER TO CONTINUE? + + MENU + +0. QUIT +1. INPUT RETURN ADDRESS +2. INPUT MAIL TO ADDRESS +3. PRINT ENVELOPE ON SCREEN +4. PRINT ENVELOPE ON PRINTER +5. CLEAR DATA:READY FOR NEW ENVELOPE +6. CHANGE PRINT TABS FOR RETURN ADDRESS OR MAIL TO ADDRESS +7. CHANGE # LINES ON ENVELOPE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/EOQ.80 b/BP100/EOQ.80 new file mode 100644 index 0000000..69e1c0d --- /dev/null +++ b/BP100/EOQ.80 @@ -0,0 +1,24 @@ + EOQ INVENTORY MODEL + +IN INVENTORY THEORY A REORDER COST IS A FIXED COST ASSESSED +EACH TIME AN ORDER FOR AN ITEM IS PLACED, NO MATTER WHAT +THE ORDER QUANTITY IS. +A HOLDING COST IS A COST DUE TO HOLDING INVENTORY,E.G.INTEREST. +A STOCKOUT COST IS DUE TO RUNNING OUT OF AN ITEM. +IN THIS PROGRAM WE ASSUME THAT THERE WILL BE NO STOCKOUTS. +IN ADDITION THE ITEMS ARE USED UNIFORMLY THROUGHOUT THE YEAR +WE CAN TAKE DELIVERY OF A REORDER WHENEVER WE WANT. +DEMAND IS IN NUMBER OF ITEMS USED PER YEAR. +REORDER COST IS IN DOLLARS PER REORDER. +HOLDING COST IS IN DOLLARS PER ITEM PER YEAR. + +TO BEGIN PRESS ENTER? +DEMAND ? 3456 +REORDER COST ? 56.78 +HOLDING COST ? 12.34 + +TO MINIMIZE TOTAL COSTS OF INVENTORY : + REORDER 178 ITEMS AT A TIME + +THIS MEANS ORDER APPROXIMATELY 19 TIMES PER YEAR +OR ABOUT EVERY 19 DAYS. diff --git a/BP100/EOQ.BAS b/BP100/EOQ.BAS new file mode 100644 index 0000000..475a487 --- /dev/null +++ b/BP100/EOQ.BAS @@ -0,0 +1,28 @@ +5 CLS +10 PRINT" EOQ INVENTORY MODEL " +20 PRINT +30 PRINT"IN INVENTORY THEORY A REORDER COST IS A FIXED COST ASSESSED +35 PRINT"EACH TIME AN ORDER FOR AN ITEM IS PLACED, NO MATTER WHAT +40 PRINT"THE ORDER QUANTITY IS. +50 PRINT"A HOLDING COST IS A COST DUE TO HOLDING INVENTORY,E.G.INTEREST. +60 PRINT"A STOCKOUT COST IS DUE TO RUNNING OUT OF AN ITEM. +65 PRINT"IN THIS PROGRAM WE ASSUME THAT THERE WILL BE NO STOCKOUTS. +70 PRINT"IN ADDITION THE ITEMS ARE USED UNIFORMLY THROUGHOUT THE YEAR +75 PRINT"WE CAN TAKE DELIVERY OF A REORDER WHENEVER WE WANT. +80 PRINT "DEMAND IS IN NUMBER OF ITEMS USED PER YEAR. +85 PRINT "REORDER COST IS IN DOLLARS PER REORDER. +90 PRINT "HOLDING COST IS IN DOLLARS PER ITEM PER YEAR. +95 PRINT +99 INPUT "TO BEGIN PRESS ENTER";Z9 +200 CLS +210 INPUT "DEMAND ";D +220 INPUT "REORDER COST ";CR +230 INPUT "HOLDING COST ";CH +240 Q=SQR(2*CR*D/CH) +250 Q1 = INT(Q+.5) +300 PRINT +320 PRINT "TO MINIMIZE TOTAL COSTS OF INVENTORY :" +330 PRINT" REORDER ";Q1;" ITEMS AT A TIME" +340 PRINT +350 PRINT"THIS MEANS ORDER APPROXIMATELY";INT(D/Q1+.5);" TIMES PER YEAR +360 PRINT"OR ABOUT EVERY ";INT(365/INT(D/Q1+.5)+.5);" DAYS." diff --git a/BP100/EOQ.INP b/BP100/EOQ.INP new file mode 100644 index 0000000..b4791e5 --- /dev/null +++ b/BP100/EOQ.INP @@ -0,0 +1,4 @@ + +3456 +56.78 +12.34 diff --git a/BP100/EOQ.OUT b/BP100/EOQ.OUT new file mode 100644 index 0000000..a3c0f91 --- /dev/null +++ b/BP100/EOQ.OUT @@ -0,0 +1,24 @@ + EOQ INVENTORY MODEL + +IN INVENTORY THEORY A REORDER COST IS A FIXED COST ASSESSED +EACH TIME AN ORDER FOR AN ITEM IS PLACED, NO MATTER WHAT +THE ORDER QUANTITY IS. +A HOLDING COST IS A COST DUE TO HOLDING INVENTORY,E.G.INTEREST. +A STOCKOUT COST IS DUE TO RUNNING OUT OF AN ITEM. +IN THIS PROGRAM WE ASSUME THAT THERE WILL BE NO STOCKOUTS. +IN ADDITION THE ITEMS ARE USED UNIFORMLY THROUGHOUT THE YEAR +WE CAN TAKE DELIVERY OF A REORDER WHENEVER WE WANT. +DEMAND IS IN NUMBER OF ITEMS USED PER YEAR. +REORDER COST IS IN DOLLARS PER REORDER. +HOLDING COST IS IN DOLLARS PER ITEM PER YEAR. + +TO BEGIN PRESS ENTER? +DEMAND ? 3456 +REORDER COST ? 56.78 +HOLDING COST ? 12.34 + +TO MINIMIZE TOTAL COSTS OF INVENTORY : + REORDER 178 ITEMS AT A TIME + +THIS MEANS ORDER APPROXIMATELY 19 TIMES PER YEAR +OR ABOUT EVERY 19 DAYS. diff --git a/BP100/EOQ.dif b/BP100/EOQ.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/EOQ.run b/BP100/EOQ.run new file mode 100644 index 0000000..69e1c0d --- /dev/null +++ b/BP100/EOQ.run @@ -0,0 +1,24 @@ + EOQ INVENTORY MODEL + +IN INVENTORY THEORY A REORDER COST IS A FIXED COST ASSESSED +EACH TIME AN ORDER FOR AN ITEM IS PLACED, NO MATTER WHAT +THE ORDER QUANTITY IS. +A HOLDING COST IS A COST DUE TO HOLDING INVENTORY,E.G.INTEREST. +A STOCKOUT COST IS DUE TO RUNNING OUT OF AN ITEM. +IN THIS PROGRAM WE ASSUME THAT THERE WILL BE NO STOCKOUTS. +IN ADDITION THE ITEMS ARE USED UNIFORMLY THROUGHOUT THE YEAR +WE CAN TAKE DELIVERY OF A REORDER WHENEVER WE WANT. +DEMAND IS IN NUMBER OF ITEMS USED PER YEAR. +REORDER COST IS IN DOLLARS PER REORDER. +HOLDING COST IS IN DOLLARS PER ITEM PER YEAR. + +TO BEGIN PRESS ENTER? +DEMAND ? 3456 +REORDER COST ? 56.78 +HOLDING COST ? 12.34 + +TO MINIMIZE TOTAL COSTS OF INVENTORY : + REORDER 178 ITEMS AT A TIME + +THIS MEANS ORDER APPROXIMATELY 19 TIMES PER YEAR +OR ABOUT EVERY 19 DAYS. diff --git a/BP100/EPSEST.80 b/BP100/EPSEST.80 new file mode 100644 index 0000000..cb14d07 --- /dev/null +++ b/BP100/EPSEST.80 @@ -0,0 +1,22 @@ +THIS PROGRAM WILL ESTIMATE EXPECTED EARNINGS PER SHARE FOR +A COMPANY BASED UPON VARIOUS CURRENT AND EXPECTED PARAMETERS. + +HOW MANY YEARS INTO FUTURE SHOULD ESTIMATE BE? 5 +CURRENT SALES ? 876543 +EXPECTED SALES IN 5 YEARS ? 987654 +CURRENT PROFIT MARGIN ? 12 +EXPECTED PROFIT MARGIN IN 5 YEARS ? 14 +CURRENT TURNOVER ? 2 +EXPECTED TURNOVER IN 5 YEARS ? 3 +CURRENT LEVERAGE ? 7 +EXPECTED LEVERAGE IN 5 YEARS ? 8 +CURRENT PROFIT ON NET WORTH ? 12345 +EXPECTED PROFIT ON NET WORTH IN 5 YEARS ? 23456 +CURRENT DIVIDEND PAY-OUT RATIO ? 7 +EXPECTED DIVIDEND PAY-OUT RATIO IN 5 YEARS ? 6 +ENTER BOOK/MARKET RATIO ? 1.25 +CURRENT EARNINGS PER SHARE ? 65.43 + +EXPECTED EARNINGS PER SHARE IN 5 YEARS = 0 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/EPSEST.BAS b/BP100/EPSEST.BAS new file mode 100644 index 0000000..dc87b0f --- /dev/null +++ b/BP100/EPSEST.BAS @@ -0,0 +1,28 @@ +10 CLS +20 PRINT"THIS PROGRAM WILL ESTIMATE EXPECTED EARNINGS PER SHARE FOR +30 PRINT"A COMPANY BASED UPON VARIOUS CURRENT AND EXPECTED PARAMETERS. +40 PRINT +1000 REM INPUT DATA +1010 INPUT"HOW MANY YEARS INTO FUTURE SHOULD ESTIMATE BE";N +1020 INPUT"CURRENT SALES ";S +1030 PRINT"EXPECTED SALES IN ";N;" YEARS";:INPUT" ";SN +1040 INPUT"CURRENT PROFIT MARGIN ";PI +1050 PRINT"EXPECTED PROFIT MARGIN IN ";N;" YEARS";:INPUT" "; PN +1060 INPUT"CURRENT TURNOVER ";T +1070 PRINT"EXPECTED TURNOVER IN ";N;" YEARS";:INPUT" ";TN +1080 INPUT"CURRENT LEVERAGE ";L +1090 PRINT"EXPECTED LEVERAGE IN ";N;" YEARS";:INPUT" ";LN +1100 INPUT"CURRENT PROFIT ON NET WORTH ";PC +1110 PRINT"EXPECTED PROFIT ON NET WORTH IN";N;"YEARS ";:INPUT PE +1129 INPUT"CURRENT DIVIDEND PAY-OUT RATIO ";DC +1140 PRINT"EXPECTED DIVIDEND PAY-OUT RATIO IN";N;"YEARS ";:INPUT DE +1150 INPUT"ENTER BOOK/MARKET RATIO ";BM +1160 INPUT"CURRENT EARNINGS PER SHARE ";EP +1200 REM COMPUTING EXPECTED EPS +1210 X1=SN*PN/(S*PI):X2=SN*T*L/(S*TN*LN) +1220 X3=(1 + .5*(PC+PE)*(1-.5*(DC+DE))):X4=BM+1 +1230 X5=EP*X1/((X2-X3[N)*BM+1) +1240 PRINT:PRINT "EXPECTED EARNINGS PER SHARE IN ";N;"YEARS = ";INT(X5*100+.5)/100 +1250 PRINT:INPUT"PRESS ENTER TO CONTINUE";Z9 +1255 IF Z9 = -1 THEN END +1260 CLS:GOTO 1000 diff --git a/BP100/EPSEST.INP b/BP100/EPSEST.INP new file mode 100644 index 0000000..1018eb6 --- /dev/null +++ b/BP100/EPSEST.INP @@ -0,0 +1,16 @@ +5 +876543 +987654 +12 +14 +2 +3 +7 +8 +12345 +23456 +7 +6 +1.25 +65.43 +-1 diff --git a/BP100/EPSEST.OUT b/BP100/EPSEST.OUT new file mode 100644 index 0000000..d5714c0 --- /dev/null +++ b/BP100/EPSEST.OUT @@ -0,0 +1,22 @@ +THIS PROGRAM WILL ESTIMATE EXPECTED EARNINGS PER SHARE FOR +A COMPANY BASED UPON VARIOUS CURRENT AND EXPECTED PARAMETERS. + +HOW MANY YEARS INTO FUTURE SHOULD ESTIMATE BE? 5 +CURRENT SALES ? 876543 +EXPECTED SALES IN 5 YEARS ? 987654 +CURRENT PROFIT MARGIN ? 12 +EXPECTED PROFIT MARGIN IN 5 YEARS ? 14 +CURRENT TURNOVER ? 2 +EXPECTED TURNOVER IN 5 YEARS ? 3 +CURRENT LEVERAGE ? 7 +EXPECTED LEVERAGE IN 5 YEARS ? 8 +CURRENT PROFIT ON NET WORTH ? 12345 +EXPECTED PROFIT ON NET WORTH IN 5 YEARS ? 23456 +CURRENT DIVIDEND PAY-OUT RATIO ? 7 +EXPECTED DIVIDEND PAY-OUT RATIO IN 5 YEARS ? 6 +ENTER BOOK/MARKET RATIO ? 1.25 +CURRENT EARNINGS PER SHARE ? 65.43 + +EXPECTED EARNINGS PER SHARE IN 5 YEARS = 0 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/EPSEST.dif b/BP100/EPSEST.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/EPSEST.run b/BP100/EPSEST.run new file mode 100644 index 0000000..cb14d07 --- /dev/null +++ b/BP100/EPSEST.run @@ -0,0 +1,22 @@ +THIS PROGRAM WILL ESTIMATE EXPECTED EARNINGS PER SHARE FOR +A COMPANY BASED UPON VARIOUS CURRENT AND EXPECTED PARAMETERS. + +HOW MANY YEARS INTO FUTURE SHOULD ESTIMATE BE? 5 +CURRENT SALES ? 876543 +EXPECTED SALES IN 5 YEARS ? 987654 +CURRENT PROFIT MARGIN ? 12 +EXPECTED PROFIT MARGIN IN 5 YEARS ? 14 +CURRENT TURNOVER ? 2 +EXPECTED TURNOVER IN 5 YEARS ? 3 +CURRENT LEVERAGE ? 7 +EXPECTED LEVERAGE IN 5 YEARS ? 8 +CURRENT PROFIT ON NET WORTH ? 12345 +EXPECTED PROFIT ON NET WORTH IN 5 YEARS ? 23456 +CURRENT DIVIDEND PAY-OUT RATIO ? 7 +EXPECTED DIVIDEND PAY-OUT RATIO IN 5 YEARS ? 6 +ENTER BOOK/MARKET RATIO ? 1.25 +CURRENT EARNINGS PER SHARE ? 65.43 + +EXPECTED EARNINGS PER SHARE IN 5 YEARS = 0 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/EXPVAL.80 b/BP100/EXPVAL.80 new file mode 100644 index 0000000..64a0443 --- /dev/null +++ b/BP100/EXPVAL.80 @@ -0,0 +1,35 @@ + EXPECTED VALUE ANALYSIS + +THERE ARE MANY SITUATIONS FOR WHICH THE FINAL RESULT IS +A MONETARY PAYOFF BUT FOR WHICH THE AMOUNT OF THE PAYOFF +IS UNCERTAIN. IF WE CAN SOMEHOW MAKE A LIST OF THE POSSIBLE +PAYOFFS AND THEIR RELATIVE LIKELIHOODS OF OCCURRENCE THEN +THE CONCEPT OF EXPECTED VALUE MAY BE USED TO COMPUTE AN +'AVERAGE' PAYOFF. THE PRESENT PROGRAM COMPUTES THE EXPECTED +VALUE OR AVERAGE PAYOFF OF A SITUATION AS THE ABOVE. +INPUT INCLUDES A PAYOFF AND A PROBABILITY FOR EACH +POSSIBLE RESULT. THE PROBABILITY IS A NUMBER BETWEEN 0 AND 1 +REPRESENTING LIKELIHOOD OF OCCURRENCE. THE PROBABILITIES +SHOULD REALLY SUM TO 1 BUT THE PROGRAM WILL NORMALIZE THEM. +THUS,E.G. THE USER MUST ONLY NOTE THAT A PROBABILITY OF .4 +MEANS TWICE AS LIKELY TO OCCUR AS A PROBABILITY O .2 . +PRESS ENTER TO BEGIN? +FOR EACH POSSIBLE PAYOFF INPUT PAYOFF AMOUNT AND PROBAILITY. +INPUT 0,0 TO COMPLETE ENTRY AND TO DO COMPUTATION. + +ENTRY 1 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 23,0.11 +ENTRY 2 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 34,0.22 +ENTRY 3 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 45,0.33 +ENTRY 4 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 56,0.44 +ENTRY 5 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 0,0 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +ENTRY VALUE PROB. PROB. ENTRY + ENTERED STANDARD EXP VAL + 1 23.00 0.110 0.100 2.30 + 2 34.00 0.220 0.200 6.80 + 3 45.00 0.330 0.300 13.50 + 4 56.00 0.440 0.400 22.40 + + EXPECTED VALUE EQUALS 45.00 + +ENTER 1 FOR MORE COMPUTATION,0 TO END? 0 diff --git a/BP100/EXPVAL.BAS b/BP100/EXPVAL.BAS new file mode 100644 index 0000000..96d147b --- /dev/null +++ b/BP100/EXPVAL.BAS @@ -0,0 +1,54 @@ +1 REM EXPVAL +10 CLS:PRINT TAB(10); "EXPECTED VALUE ANALYSIS":PRINT +20 PRINT"THERE ARE MANY SITUATIONS FOR WHICH THE FINAL RESULT IS +30 PRINT"A MONETARY PAYOFF BUT FOR WHICH THE AMOUNT OF THE PAYOFF +35 PRINT"IS UNCERTAIN. IF WE CAN SOMEHOW MAKE A LIST OF THE POSSIBLE +40 PRINT"PAYOFFS AND THEIR RELATIVE LIKELIHOODS OF OCCURRENCE THEN +45 PRINT"THE CONCEPT OF EXPECTED VALUE MAY BE USED TO COMPUTE AN +50 PRINT"'AVERAGE' PAYOFF. THE PRESENT PROGRAM COMPUTES THE EXPECTED +55 PRINT"VALUE OR AVERAGE PAYOFF OF A SITUATION AS THE ABOVE. +60 PRINT"INPUT INCLUDES A PAYOFF AND A PROBABILITY FOR EACH +65 PRINT"POSSIBLE RESULT. THE PROBABILITY IS A NUMBER BETWEEN 0 AND 1 +70 PRINT"REPRESENTING LIKELIHOOD OF OCCURRENCE. THE PROBABILITIES +75 PRINT"SHOULD REALLY SUM TO 1 BUT THE PROGRAM WILL NORMALIZE THEM. +80 PRINT"THUS,E.G. THE USER MUST ONLY NOTE THAT A PROBABILITY OF .4 +85 PRINT"MEANS TWICE AS LIKELY TO OCCUR AS A PROBABILITY O .2 . +90 INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +105 CLEAR 1000 +110 DIM A(100),PP(100),PC(100) +120 PRINT"FOR EACH POSSIBLE PAYOFF INPUT PAYOFF AMOUNT AND PROBAILITY. +130 PRINT"INPUT 0,0 TO COMPLETE ENTRY AND TO DO COMPUTATION." +140 PRINT +150 N=0 +160 PRINT"ENTRY";N+1;:INPUT"ENTER PAYOFF,PROBAILITY (0,0 TO END)";A(N+1),PP(N+1) +170 IF A(N+1)=0 AND PP(N+1)=0 THEN GOTO 200 ' ALL DONE +180 N=N+1:P=P+PP(N):REM TOTAL OF PROBABILITIES +190 GOTO 160 +200 REM END UP COMPUTATION +210 FOR I=1 TO N:PC(I)=PP(I)/P:NEXT:REM STANDARDIZED PROBABILITIES +220 EX=0 +230 FOR I=1 TO N:EX=EX+A(I)*PC(I):NEXT:REM EX = EXPECTED VALUE +240 F$(1)="ENTRY VALUE PROB. PROB. ENTRY +245 F$(2)=" ENTERED STANDARD EXP VAL" +250 F$(3)=" ### #######.## #.### #.### ######.## ###.##" +255 F$(4)=" EXPECTED VALUE EQUALS ######.##" +260 INPUT"IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +270 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 260 +300 REM PRINTOUT +310 CLS:PRINT F$(1):PRINT F$(2) +320 IF Z2$="Y" THEN LPRINT F$(1):LPRINT F$(2):LPRINT " " +330 FOR I=1 TO N +340 PRINT USING F$(3);I,A(I),PP(I),PC(I),A(I)*PC(I) +350 IF Z2$="Y" THEN LPRINT USING F$(3);I,A(I),PP(I),PC(I),A(I)*PC(I) +355 IF I/12=INT(I/12) THEN PRINT:GOSUB 10100:PRINT +360 NEXT I +390 PRINT:LPRINT" " +400 PRINT USING F$(4);EX:IF Z2$="Y" THEN LPRINT USING F$(4);EX +410 PRINT +420 INPUT"ENTER 1 FOR MORE COMPUTATION,0 TO END";Z9$ +425 CLS +430 IF Z9$="1" THEN GOTO 105 +440 END +10000 PRINT"INPUT ERROR! TRY AGAIN!":FORQ=1TO300:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/EXPVAL.INP b/BP100/EXPVAL.INP new file mode 100644 index 0000000..808ca34 --- /dev/null +++ b/BP100/EXPVAL.INP @@ -0,0 +1,8 @@ + +23,0.11 +34,0.22 +45,0.33 +56,0.44 +0,0 +Y +0 diff --git a/BP100/EXPVAL.OUT b/BP100/EXPVAL.OUT new file mode 100644 index 0000000..8bd2258 --- /dev/null +++ b/BP100/EXPVAL.OUT @@ -0,0 +1,35 @@ + EXPECTED VALUE ANALYSIS + +THERE ARE MANY SITUATIONS FOR WHICH THE FINAL RESULT IS +A MONETARY PAYOFF BUT FOR WHICH THE AMOUNT OF THE PAYOFF +IS UNCERTAIN. IF WE CAN SOMEHOW MAKE A LIST OF THE POSSIBLE +PAYOFFS AND THEIR RELATIVE LIKELIHOODS OF OCCURRENCE THEN +THE CONCEPT OF EXPECTED VALUE MAY BE USED TO COMPUTE AN +'AVERAGE' PAYOFF. THE PRESENT PROGRAM COMPUTES THE EXPECTED +VALUE OR AVERAGE PAYOFF OF A SITUATION AS THE ABOVE. +INPUT INCLUDES A PAYOFF AND A PROBABILITY FOR EACH +POSSIBLE RESULT. THE PROBABILITY IS A NUMBER BETWEEN 0 AND 1 +REPRESENTING LIKELIHOOD OF OCCURRENCE. THE PROBABILITIES +SHOULD REALLY SUM TO 1 BUT THE PROGRAM WILL NORMALIZE THEM. +THUS,E.G. THE USER MUST ONLY NOTE THAT A PROBABILITY OF .4 +MEANS TWICE AS LIKELY TO OCCUR AS A PROBABILITY O .2 . +PRESS ENTER TO BEGIN? +FOR EACH POSSIBLE PAYOFF INPUT PAYOFF AMOUNT AND PROBAILITY. +INPUT 0,0 TO COMPLETE ENTRY AND TO DO COMPUTATION. + +ENTRY 1 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 23,0.11 +ENTRY 2 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 34,0.22 +ENTRY 3 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 45,0.33 +ENTRY 4 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 56,0.44 +ENTRY 5 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 0,0 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +ENTRY VALUE PROB. PROB. ENTRY + ENTERED STANDARD EXP VAL + 1 23.00 0.110 0.100 2.30 + 2 34.00 0.220 0.200 6.80 + 3 45.00 0.330 0.300 13.50 + 4 56.00 0.440 0.400 22.40 + + EXPECTED VALUE EQUALS 45.00 + +ENTER 1 FOR MORE COMPUTATION,0 TO END? 0 diff --git a/BP100/EXPVAL.dif b/BP100/EXPVAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/EXPVAL.run b/BP100/EXPVAL.run new file mode 100644 index 0000000..64a0443 --- /dev/null +++ b/BP100/EXPVAL.run @@ -0,0 +1,35 @@ + EXPECTED VALUE ANALYSIS + +THERE ARE MANY SITUATIONS FOR WHICH THE FINAL RESULT IS +A MONETARY PAYOFF BUT FOR WHICH THE AMOUNT OF THE PAYOFF +IS UNCERTAIN. IF WE CAN SOMEHOW MAKE A LIST OF THE POSSIBLE +PAYOFFS AND THEIR RELATIVE LIKELIHOODS OF OCCURRENCE THEN +THE CONCEPT OF EXPECTED VALUE MAY BE USED TO COMPUTE AN +'AVERAGE' PAYOFF. THE PRESENT PROGRAM COMPUTES THE EXPECTED +VALUE OR AVERAGE PAYOFF OF A SITUATION AS THE ABOVE. +INPUT INCLUDES A PAYOFF AND A PROBABILITY FOR EACH +POSSIBLE RESULT. THE PROBABILITY IS A NUMBER BETWEEN 0 AND 1 +REPRESENTING LIKELIHOOD OF OCCURRENCE. THE PROBABILITIES +SHOULD REALLY SUM TO 1 BUT THE PROGRAM WILL NORMALIZE THEM. +THUS,E.G. THE USER MUST ONLY NOTE THAT A PROBABILITY OF .4 +MEANS TWICE AS LIKELY TO OCCUR AS A PROBABILITY O .2 . +PRESS ENTER TO BEGIN? +FOR EACH POSSIBLE PAYOFF INPUT PAYOFF AMOUNT AND PROBAILITY. +INPUT 0,0 TO COMPLETE ENTRY AND TO DO COMPUTATION. + +ENTRY 1 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 23,0.11 +ENTRY 2 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 34,0.22 +ENTRY 3 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 45,0.33 +ENTRY 4 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 56,0.44 +ENTRY 5 ENTER PAYOFF,PROBAILITY (0,0 TO END)? 0,0 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +ENTRY VALUE PROB. PROB. ENTRY + ENTERED STANDARD EXP VAL + 1 23.00 0.110 0.100 2.30 + 2 34.00 0.220 0.200 6.80 + 3 45.00 0.330 0.300 13.50 + 4 56.00 0.440 0.400 22.40 + + EXPECTED VALUE EQUALS 45.00 + +ENTER 1 FOR MORE COMPUTATION,0 TO END? 0 diff --git a/BP100/FINRAT.80 b/BP100/FINRAT.80 new file mode 100644 index 0000000..1d652ec --- /dev/null +++ b/BP100/FINRAT.80 @@ -0,0 +1,190 @@ + FINANCIAL RATIOS + +THIS PROGRAM WILL COMPUTE SOME COMMONLY USED FINANCIAL RATIOS +USING INFORMATION FROM A FIRM'S BALANCE SHEET AND INCOME +STATEMENT. THE PROGRAM IS MENU DRIVEN. DATA FOR A COMPANY +MAY BE INPUT, COMPUTATIONS MAY TAKE PLACE, INPUT DATA MAY +BE EDITED, AND THE DATA MAY EVEN BE STORED ON CASSETTE OR +DISKETTE. THE PROGRAM MAY BE EASILY MODIFIED BY THOSE +DESIRING TO COMPUTE OTHER RATIOS OR DESIRING TO SHOW MORE +DETAIL IN THE BALANCE SHEET. + +PRESS ENTER TO BEGIN? + +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 1 +ENTER THE FOLLOWING DATA + +SALES ? 98765 +COST OF GOODS SOLD ? 65432 +ADMINISTRATIVE & SELLING EXP. ? 1234 +GENERAL EXPENSES ? 2345 +DEPRECIATION ? 4567 +OTHER EXPENSES ? 52 +INTEREST EXPENSE ? 65 +INCOME TAXES ? 75 +DIVIDENDS ON PREFERRED STOCKS ? 87 +SHARES OUTSTANDING ? 1230 +CASH ? 87654 +MARKETABLE SECURITIES ? 76543 +NET ACCTS RECEIVABLE ? 90500 +INVENTORY ? 84350 +PREPAID EXPENSE ? 79234 +NET PLANT & EQUIP. ? 1567 +NET BUILDINGS ? 2648 +LAND(COST) ? 987 +INTANGIBLES ? 654 +ACCOUNTS PAYABLE ? 123 +NOTES PAYABLE ? 456 +ACCRUED EXPENSES ? 78 +LONG TERM DEBT(CURR. PORTION) ? 42 +LONG TERM DEBT(NON CURR) ? 31 +PREFERRED STOCK ? 15750 +RETAINED EARNINGS ? 11 +COMMON STOCK ? 1200 + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 5 +PRESS ENTER WHEN DISKETTE READY? + +PRESENT DISK FILE NAME IS NEW NAME? FINRAT.DAT + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 6 +PRESS ENTER WHEN DISKETTE READY? + +ENTER NAME OF DISK FILE ? FINRAT.DAT + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 9 +DATE CHANGE + +PRESENT DATE FOR DATA IS NEW DATE ? 12/34/56 + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 2 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? +DATE IS 12/34/56 + 1 SALES 98765.00 + 2 COST OF GOODS SOLD 65432.00 + 3 ADMINISTRATIVE & SELLING EXP. 1234.00 + 4 GENERAL EXPENSES 2345.00 + 5 DEPRECIATION 4567.00 + 6 OTHER EXPENSES 52.00 + 7 INTEREST EXPENSE 65.00 + 8 INCOME TAXES 75.00 + 9 DIVIDENDS ON PREFERRED STOCKS 87.00 +10 SHARES OUTSTANDING 1230.00 +11 CASH 87654.00 +12 MARKETABLE SECURITIES 76543.00 +13 NET ACCTS RECEIVABLE 90500.00 +14 INVENTORY 84350.00 +15 PREPAID EXPENSE 79234.00 +16 NET PLANT & EQUIP. 1567.00 +17 NET BUILDINGS 2648.00 +18 LAND(COST) 987.00 +19 INTANGIBLES 654.00 +20 ACCOUNTS PAYABLE 123.00 +21 NOTES PAYABLE 456.00 +22 ACCRUED EXPENSES 78.00 +23 LONG TERM DEBT(CURR. PORTION) 42.00 +24 LONG TERM DEBT(NON CURR) 31.00 +25 PREFERRED STOCK 15750.00 +26 RETAINED EARNINGS 11.00 +27 COMMON STOCK 1200.00 +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 4 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +12/34/56 +EPS 20.25 +TURNOVER OF OPERATING ASSETS 0.23 +CURRENT RATIO 598.40 +ACID TEST RATIO 234.90 +RECEIVABLES TURNOVER 1.09 +INVENTORY TURNOVER 0.78 +GROSS PROFIT MARGIN 0.34 +WORKING CAPITAL TURNOVER 0.24 +NET PROFITS TO WORKING CAPITAL 0.06 +CURRENT DEBT TO NET WORTH 0.04 +WORKING CAPITAL TO TOTAL ASSETS 0.98 +SALES TO TOTAL ASSETS 0.23 +BOOK VALUE PER SHARE 0.98 +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 0 diff --git a/BP100/FINRAT.BAS b/BP100/FINRAT.BAS new file mode 100644 index 0000000..a5026fa --- /dev/null +++ b/BP100/FINRAT.BAS @@ -0,0 +1,149 @@ +1 REM FINRAT +5 CLEAR 3000 +10 CLS +20 PRINT TAB(10); "FINANCIAL RATIOS":PRINT +30 PRINT"THIS PROGRAM WILL COMPUTE SOME COMMONLY USED FINANCIAL RATIOS +35 PRINT"USING INFORMATION FROM A FIRM'S BALANCE SHEET AND INCOME +40 PRINT"STATEMENT. THE PROGRAM IS MENU DRIVEN. DATA FOR A COMPANY +45 PRINT"MAY BE INPUT, COMPUTATIONS MAY TAKE PLACE, INPUT DATA MAY +50 PRINT"BE EDITED, AND THE DATA MAY EVEN BE STORED ON CASSETTE OR +55 PRINT"DISKETTE. THE PROGRAM MAY BE EASILY MODIFIED BY THOSE +60 PRINT"DESIRING TO COMPUTE OTHER RATIOS OR DESIRING TO SHOW MORE +65 PRINT"DETAIL IN THE BALANCE SHEET. +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 DIM A$(40),A(40),R$(30),R(30),B$(30),B(30) +110 FOR I=1 TO 27:READ A$(I):NEXT +113 FOR I=1 TO 13:READ R$(I):NEXT +120 GOSUB 9000 +140 PRINT +150 INPUT"ARE DISK DRIVES ATTACHED(Y/N)";Z7$ +160 IF Z7$<>"Y" AND Z7$<>"N" THEN GOSUB 10000:GOTO 150 +200 CLS:PRINT TAB(10); "MENU":PRINT +205 PRINT"0. QUIT +210 PRINT"1. INPUT BALANCE SHEET AND INCOME DATA +220 PRINT"2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +230 PRINT"3. EDIT INPUT DATA +240 PRINT"4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +250 PRINT"5. STORE COMPANY INPUT DATA ONTO DISKETTE +260 PRINT"6. READ COMPANY INPUT DATA FROM DISKETTE +270 PRINT"7. STORE COMPANY INPUT DATA ONTO CASSETTE +280 PRINT"8. READ COMPANY INPUT DATA FROM CASSETTE +290 PRINT"9. CHANGE DATE +300 INPUT"INPUT YOUR CHOICE";Z1 +305 IF Z1 = 0 THEN END +310 ON Z1 GOSUB 6000,6100,6200,6300,4000,4100,4200,4300,900 +320 GOTO 200 +900 CLS:PRINT "DATE CHANGE":PRINT +910 PRINT"PRESENT DATE FOR DATA IS ";D$;:INPUT"NEW DATE ";D$ +920 RETURN +4000 REM PRINT OUT DATA FOR COMPANY ON DISKETTE +4010 CLS:INPUT"PRESS ENTER WHEN DISKETTE READY";Z9$ +4020 PRINT +4030 PRINT"PRESENT DISK FILE NAME IS ";C$;:INPUT" NEW NAME";C$ +4040 OPEN"O",1,C$ +4050 FOR I=1 TO 27:WRITE # 1,A(I):NEXT:WRITE # 1,D$ +4060 CLOSE #1 +4070 RETURN +4100 REM INPUT DATA FOR COMPANY FROM DISKETTE +4110 CLS:INPUT"PRESS ENTER WHEN DISKETTE READY";Z9$ +4120 PRINT +4130 INPUT"ENTER NAME OF DISK FILE ";C$ +4140 OPEN"I",1,C$ +4150 FOR I=1 TO 27:INPUT #1,A(I):NEXT:INPUT #1,D$ +4160 CLOSE #1 +4170 RETURN +4200 REM INPUT COMPANY DATA FROM CASSETTE +4210 CLS:INPUT"PRESS ENTER WHEN CASSETTE READY";Z9$ +4220 ' IF Z7$="Y" THEN CMD"T" +4230 FOR I=1 TO 27:INPUT #-1,A(I):NEXT:INPUT #-1,D$ +4240 RETURN +4300 REM PRINT COMPANY DATA ONTO CASETTE +4310 CLS:INPUT"PRESS ENTER WHEN CASSETTE READY";Z9$ +4320 ' IF Z7$="Y" THEN CMD"T" +4330 FOR I=1 TO 27:WRITE #-1,A(I):NEXT:WRITE #-1,D$ +4340 RETURN +6000 REM INPUT OF BALANCE SHEET AND INCOME STATEMENT DATA +6005 CLS:PRINT"ENTER THE FOLLOWING DATA":PRINT +6010 FOR I=1 TO 27 +6020 PRINT A$(I);TAB(40);:INPUT A(I) +6030 NEXT I +6040 RETURN +6100 REM DISPLAY INPUTS +6105 CLS +6110 INPUT"IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +6120 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 6110 +6125 IF Z2$="Y" THEN INPUT"PRESS ENTER WHEN PRINTER READY";Z9$ +6130 CLS +6135 PRINT "DATE IS ";D$:IF Z2$="Y" THEN LPRINT "DATE IS ";D$:LPRINT " " +6140 FOR I=1 TO 27 +6150 PRINT USING F$(1);I,A$(I),A(I):IF Z2$="Y" THEN LPRINT USING F$(1);I,A$(I),A(I) +6160 IF Z2$="N" AND I/14=INT(I/14) THEN GOSUB 10100 +6170 NEXT I +6180 GOSUB 10100 +6190 RETURN +6200 REM EDIT INPUT ITEM +6210 CLS +6220 FOR I=1 TO 27:PRINT USING F$(1);I,A$(I),A(I):FOR JJ=1 TO 300:NEXT:NEXT I +6230 INPUT"INPUT ITEM # TO CHANGE(0 TO END)";II +6240 IF II=0 THEN RETURN +6250 PRINT:PRINT USING F$(2);II,A$(II),A(II); +6260 INPUT A(II) +6270 PRINT:GOTO 6230 +6300 REM COMPUTATION AND PRINTOUT OF RATIOS AND OTHER DERIVED DATA +6305 INPUT"IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +6307 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 6305 +6310 B(1)=A(11)+A(12)+A(13)+A(14)+A(15):REM CURRENT ASSETS +6320 B(2)=A(16)+A(17)+A(18)+A(19):REM FIXED & INTANGIBLE ASSETS +6330 B(3)=B(1)+B(2):REM TOTAL ASSETS +6340 B(4)=B(3)-A(19):REM TOTAL OPERATING ASSETS +6350 B(5)=A(20)+A(21)+A(22)+A(23):REM CURRENT LIABILITIES +6360 B(6)=A(24)+A(25):REM LONG TERM DEBT & PREFERRED +6370 B(7)=A(26):REM RETAINED EARNINGS +6380 B(8)=A(27):REM COMMON STOCK +6390 B(9)=B(7)+B(8):REM TOTAL STOCKHOLDERS EQUITY +6400 B(10)=B(5)+B(6)+B(9):REM TOTAL LIABILITIES AND EQUITY +6410 B(11)=A(1)-A(2):REM GROSS MARGIN +6420 B(12)=B(11)-A(3)-A(4)-A(5)-A(6):REM INCOME FROM OPERATIONS +6430 B(13)=B(12):REM EBIT +6440 B(14)=B(13)-A(7):REM EBT +6450 B(15)=B(14)-A(8):REM EARNINGS AFTER TAXES +6460 B(16)=A(9):REM DIVIDENDS ON PREFERRED STOCK +6470 B(17)=B(15)-B(16):REM EARNINGS AVAILABLE TO COMMON SHAREHOLDERS +6480 B(18)=B(1) - B(5) :REM WORKING CAPITAL +6500 REM RATIOS NEXT +6510 R(1)=B(17)/A(10):REM EPS +6520 R(2)=A(1)/B(4):REM TURNOVER OF OPERATING ASSETS +6530 R(3)=B(1)/B(5):REM CURRENT RATIO +6540 R(4)=(A(11)+A(12))/B(5):REM ACID TEST RATIO +6550 R(5)=A(1)/A(13):REM RECEIVABLES TURNOVER +6560 R(6)=A(2)/A(14):REM INVENTORY TURNOVER +6570 R(7)=B(11)/A(1):REM GROSS PROFIT MARGIN +6580 R(8)=A(1)/B(18):REM WORKING CAPITAL TURNOVER +6590 R(9)=B(15)/B(18):REM NET PROFITS TO WORKING CAPITAL +6600 R(10)=B(5)/(B(9)+A(25)-A(19)):REM CURRENT DEBT TO NET WORTH +6610 R(11)=B(18)/B(3):REM WORKING CAPITAL TO TOTAL ASSETS +6620 R(12)=A(1)/B(3):REM SALES TO TOTAL ASSETS +6630 R(13)=B(9)/A(10):REM BOOK VALUE PER SHARE +6800 REM PRINT RATIOS +6805 CLS +6807 PRINT D$:IF Z2$="Y" THEN LPRINT "DATE IS ";D$:LPRINT +6810 FOR I=1 TO 13 +6820 PRINT USING F$(3);R$(I),R(I) +6830 IF Z2$="Y" THEN LPRINT USING F$(3);R$(I),R(I) +6840 NEXT I +6850 GOSUB 10100 +6860 RETURN +8000 REM DATA +8010 DATA SALES,COST OF GOODS SOLD,ADMINISTRATIVE & SELLING EXP.,GENERAL EXPENSES,DEPRECIATION,OTHER EXPENSES,INTEREST EXPENSE,INCOME TAXES,DIVIDENDS ON PREFERRED STOCKS,SHARES OUTSTANDING +8020 DATA CASH,MARKETABLE SECURITIES,NET ACCTS RECEIVABLE,INVENTORY,PREPAID EXPENSE,NET PLANT & EQUIP.,NET BUILDINGS, LAND(COST),INTANGIBLES +8030 DATA ACCOUNTS PAYABLE,NOTES PAYABLE,ACCRUED EXPENSES,LONG TERM DEBT(CURR. PORTION),LONG TERM DEBT(NON CURR),PREFERRED STOCK,RETAINED EARNINGS, COMMON STOCK +8050 DATA EPS,TURNOVER OF OPERATING ASSETS,CURRENT RATIO,ACID TEST RATIO,RECEIVABLES TURNOVER,INVENTORY TURNOVER +8060 DATA GROSS PROFIT MARGIN,WORKING CAPITAL TURNOVER,NET PROFITS TO WORKING CAPITAL,CURRENT DEBT TO NET WORTH +8070 DATA WORKING CAPITAL TO TOTAL ASSETS,SALES TO TOTAL ASSETS,BOOK VALUE PER SHARE +9000 REM PRINTING FORMATS +9010 F$(1)="## % % #########.##" +9020 F$(2)="## % % ########.##" +9030 F$(3)="% % ####.##" +9099 RETURN +10000 PRINT"INPUT ERROR! TRY AGAIN":FOR JJ=1 TO 300:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/FINRAT.DAT b/BP100/FINRAT.DAT new file mode 100644 index 0000000..9790528 --- /dev/null +++ b/BP100/FINRAT.DAT @@ -0,0 +1,28 @@ + 98765 + 65432 + 1234 + 2345 + 4567 + 52 + 65 + 75 + 87 + 1230 + 87654 + 76543 + 90500 + 84350 + 79234 + 1567 + 2648 + 987 + 654 + 123 + 456 + 78 + 42 + 31 + 15750 + 11 + 1200 +"" diff --git a/BP100/FINRAT.INP b/BP100/FINRAT.INP new file mode 100644 index 0000000..caa9888 --- /dev/null +++ b/BP100/FINRAT.INP @@ -0,0 +1,46 @@ + +Y +1 +98765 +65432 +1234 +2345 +4567 +52 +65 +75 +87 +1230 +87654 +76543 +90500 +84350 +79234 +1567 +2648 +987 +654 +123 +456 +78 +42 +31 +15750 +11 +1200 +5 + +FINRAT.DAT +6 + +FINRAT.DAT +9 +12/34/56 +2 +Y + + +4 +Y + +0 diff --git a/BP100/FINRAT.OUT b/BP100/FINRAT.OUT new file mode 100644 index 0000000..94b20bc --- /dev/null +++ b/BP100/FINRAT.OUT @@ -0,0 +1,190 @@ + FINANCIAL RATIOS + +THIS PROGRAM WILL COMPUTE SOME COMMONLY USED FINANCIAL RATIOS +USING INFORMATION FROM A FIRM'S BALANCE SHEET AND INCOME +STATEMENT. THE PROGRAM IS MENU DRIVEN. DATA FOR A COMPANY +MAY BE INPUT, COMPUTATIONS MAY TAKE PLACE, INPUT DATA MAY +BE EDITED, AND THE DATA MAY EVEN BE STORED ON CASSETTE OR +DISKETTE. THE PROGRAM MAY BE EASILY MODIFIED BY THOSE +DESIRING TO COMPUTE OTHER RATIOS OR DESIRING TO SHOW MORE +DETAIL IN THE BALANCE SHEET. + +PRESS ENTER TO BEGIN? + +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 1 +ENTER THE FOLLOWING DATA + +SALES ? 98765 +COST OF GOODS SOLD ? 65432 +ADMINISTRATIVE & SELLING EXP. ? 1234 +GENERAL EXPENSES ? 2345 +DEPRECIATION ? 4567 +OTHER EXPENSES ? 52 +INTEREST EXPENSE ? 65 +INCOME TAXES ? 75 +DIVIDENDS ON PREFERRED STOCKS ? 87 +SHARES OUTSTANDING ? 1230 +CASH ? 87654 +MARKETABLE SECURITIES ? 76543 +NET ACCTS RECEIVABLE ? 90500 +INVENTORY ? 84350 +PREPAID EXPENSE ? 79234 +NET PLANT & EQUIP. ? 1567 +NET BUILDINGS ? 2648 +LAND(COST) ? 987 +INTANGIBLES ? 654 +ACCOUNTS PAYABLE ? 123 +NOTES PAYABLE ? 456 +ACCRUED EXPENSES ? 78 +LONG TERM DEBT(CURR. PORTION) ? 42 +LONG TERM DEBT(NON CURR) ? 31 +PREFERRED STOCK ? 15750 +RETAINED EARNINGS ? 11 +COMMON STOCK ? 1200 + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 5 +PRESS ENTER WHEN DISKETTE READY? + +PRESENT DISK FILE NAME IS NEW NAME? FINRAT.DAT + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 6 +PRESS ENTER WHEN DISKETTE READY? + +ENTER NAME OF DISK FILE ? FINRAT.DAT + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 9 +DATE CHANGE + +PRESENT DATE FOR DATA IS NEW DATE ? 12/34/56 + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 2 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? +DATE IS 12/34/56 + 1 SALES 98765.00 + 2 COST OF GOODS SOLD 65432.00 + 3 ADMINISTRATIVE & SELLING EXP. 1234.00 + 4 GENERAL EXPENSES 2345.00 + 5 DEPRECIATION 4567.00 + 6 OTHER EXPENSES 52.00 + 7 INTEREST EXPENSE 65.00 + 8 INCOME TAXES 75.00 + 9 DIVIDENDS ON PREFERRED STOCKS 87.00 +10 SHARES OUTSTANDING 1230.00 +11 CASH 87654.00 +12 MARKETABLE SECURITIES 76543.00 +13 NET ACCTS RECEIVABLE 90500.00 +14 INVENTORY 84350.00 +15 PREPAID EXPENSE 79234.00 +16 NET PLANT & EQUIP. 1567.00 +17 NET BUILDINGS 2648.00 +18 LAND(COST) 987.00 +19 INTANGIBLES 654.00 +20 ACCOUNTS PAYABLE 123.00 +21 NOTES PAYABLE 456.00 +22 ACCRUED EXPENSES 78.00 +23 LONG TERM DEBT(CURR. PORTION) 42.00 +24 LONG TERM DEBT(NON CURR) 31.00 +25 PREFERRED STOCK 15750.00 +26 RETAINED EARNINGS 11.00 +27 COMMON STOCK 1200.00 +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 4 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +12/34/56 +EPS 20.25 +TURNOVER OF OPERATING ASSETS 0.23 +CURRENT RATIO 598.40 +ACID TEST RATIO 234.90 +RECEIVABLES TURNOVER 1.09 +INVENTORY TURNOVER 0.78 +GROSS PROFIT MARGIN 0.34 +WORKING CAPITAL TURNOVER 0.24 +NET PROFITS TO WORKING CAPITAL 0.06 +CURRENT DEBT TO NET WORTH 0.04 +WORKING CAPITAL TO TOTAL ASSETS 0.98 +SALES TO TOTAL ASSETS 0.23 +BOOK VALUE PER SHARE 0.98 +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 0 diff --git a/BP100/FINRAT.dif b/BP100/FINRAT.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/FINRAT.run b/BP100/FINRAT.run new file mode 100644 index 0000000..1d652ec --- /dev/null +++ b/BP100/FINRAT.run @@ -0,0 +1,190 @@ + FINANCIAL RATIOS + +THIS PROGRAM WILL COMPUTE SOME COMMONLY USED FINANCIAL RATIOS +USING INFORMATION FROM A FIRM'S BALANCE SHEET AND INCOME +STATEMENT. THE PROGRAM IS MENU DRIVEN. DATA FOR A COMPANY +MAY BE INPUT, COMPUTATIONS MAY TAKE PLACE, INPUT DATA MAY +BE EDITED, AND THE DATA MAY EVEN BE STORED ON CASSETTE OR +DISKETTE. THE PROGRAM MAY BE EASILY MODIFIED BY THOSE +DESIRING TO COMPUTE OTHER RATIOS OR DESIRING TO SHOW MORE +DETAIL IN THE BALANCE SHEET. + +PRESS ENTER TO BEGIN? + +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 1 +ENTER THE FOLLOWING DATA + +SALES ? 98765 +COST OF GOODS SOLD ? 65432 +ADMINISTRATIVE & SELLING EXP. ? 1234 +GENERAL EXPENSES ? 2345 +DEPRECIATION ? 4567 +OTHER EXPENSES ? 52 +INTEREST EXPENSE ? 65 +INCOME TAXES ? 75 +DIVIDENDS ON PREFERRED STOCKS ? 87 +SHARES OUTSTANDING ? 1230 +CASH ? 87654 +MARKETABLE SECURITIES ? 76543 +NET ACCTS RECEIVABLE ? 90500 +INVENTORY ? 84350 +PREPAID EXPENSE ? 79234 +NET PLANT & EQUIP. ? 1567 +NET BUILDINGS ? 2648 +LAND(COST) ? 987 +INTANGIBLES ? 654 +ACCOUNTS PAYABLE ? 123 +NOTES PAYABLE ? 456 +ACCRUED EXPENSES ? 78 +LONG TERM DEBT(CURR. PORTION) ? 42 +LONG TERM DEBT(NON CURR) ? 31 +PREFERRED STOCK ? 15750 +RETAINED EARNINGS ? 11 +COMMON STOCK ? 1200 + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 5 +PRESS ENTER WHEN DISKETTE READY? + +PRESENT DISK FILE NAME IS NEW NAME? FINRAT.DAT + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 6 +PRESS ENTER WHEN DISKETTE READY? + +ENTER NAME OF DISK FILE ? FINRAT.DAT + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 9 +DATE CHANGE + +PRESENT DATE FOR DATA IS NEW DATE ? 12/34/56 + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 2 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? +DATE IS 12/34/56 + 1 SALES 98765.00 + 2 COST OF GOODS SOLD 65432.00 + 3 ADMINISTRATIVE & SELLING EXP. 1234.00 + 4 GENERAL EXPENSES 2345.00 + 5 DEPRECIATION 4567.00 + 6 OTHER EXPENSES 52.00 + 7 INTEREST EXPENSE 65.00 + 8 INCOME TAXES 75.00 + 9 DIVIDENDS ON PREFERRED STOCKS 87.00 +10 SHARES OUTSTANDING 1230.00 +11 CASH 87654.00 +12 MARKETABLE SECURITIES 76543.00 +13 NET ACCTS RECEIVABLE 90500.00 +14 INVENTORY 84350.00 +15 PREPAID EXPENSE 79234.00 +16 NET PLANT & EQUIP. 1567.00 +17 NET BUILDINGS 2648.00 +18 LAND(COST) 987.00 +19 INTANGIBLES 654.00 +20 ACCOUNTS PAYABLE 123.00 +21 NOTES PAYABLE 456.00 +22 ACCRUED EXPENSES 78.00 +23 LONG TERM DEBT(CURR. PORTION) 42.00 +24 LONG TERM DEBT(NON CURR) 31.00 +25 PREFERRED STOCK 15750.00 +26 RETAINED EARNINGS 11.00 +27 COMMON STOCK 1200.00 +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 4 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +12/34/56 +EPS 20.25 +TURNOVER OF OPERATING ASSETS 0.23 +CURRENT RATIO 598.40 +ACID TEST RATIO 234.90 +RECEIVABLES TURNOVER 1.09 +INVENTORY TURNOVER 0.78 +GROSS PROFIT MARGIN 0.34 +WORKING CAPITAL TURNOVER 0.24 +NET PROFITS TO WORKING CAPITAL 0.06 +CURRENT DEBT TO NET WORTH 0.04 +WORKING CAPITAL TO TOTAL ASSETS 0.98 +SALES TO TOTAL ASSETS 0.23 +BOOK VALUE PER SHARE 0.98 +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. INPUT BALANCE SHEET AND INCOME DATA +2. PRINT OUT BALANCE SHEET AND INCOME DATA AS INPUT +3. EDIT INPUT DATA +4. COMPUTE AND PRINT OUT APPROPRIATE RATIOS +5. STORE COMPANY INPUT DATA ONTO DISKETTE +6. READ COMPANY INPUT DATA FROM DISKETTE +7. STORE COMPANY INPUT DATA ONTO CASSETTE +8. READ COMPANY INPUT DATA FROM CASSETTE +9. CHANGE DATE +INPUT YOUR CHOICE? 0 diff --git a/BP100/FQEOQ.80 b/BP100/FQEOQ.80 new file mode 100644 index 0000000..2bf3dd8 --- /dev/null +++ b/BP100/FQEOQ.80 @@ -0,0 +1,31 @@ + INVENTORY THEORY-FIXED QUANTITY EOQ + +THIS PROGRAM INVOLVES AN INVENTORY PROBLEM FOR WHICH IT IS +ASSUMED THAT THE FOLLOWING CONDITIONS HOLD: + THERE IS A CONSTANT ORDERING COST PER ORDER + INVENTORY HOLDING COST IS CONSTANT PER UNIT HELD + NO BACKORDERS ARE PERMITTED (STOCKOUTS NOT ALLOWED) + ORDER LEAD TIME IS CONSTANT AND KNOWN + DEMAND FOR THE ITEMS ARE CONSTANT AND UNIFORM THROUGH TIME + THERE ARE NO QUANTITY PRICE BREAKS. + +WE SHALL INPUT LEAD TIME,ANNUAL DEMAND, ORDERING COST, +HOLDING COST PER UNIT PER YEAR AND UNIT PURCHASE PRICE. +OUTPUT INCLUDES OPTIMAL ORDER QUANTITY,REORDER POINT, AND +TOTAL ANNUAL COST OF THE INVENTORY SYSTEM. +PRESS ENTER TO BEGIN? +ENTER ANNUAL DEMAND(IN UNITS) ? 123456 +ENTER REORDER COST(PER ORDER) ? 38.56 +ENTER LEAD TIME(DAYS) ? 37 +ENTER HOLDING COST(PER UNIT/YEAR ? 1.75 +ENTER PURCHASE PRICE PER ITEM ? 12.74 + +OPTIMAL ORDER QUANTITY IS 2332.49 UNITS +THIS MEANS ORDER ABOUT 52.9287 TIMES PER YEAR. + OR ABOUT EVERY 6.89606 DAYS. +THE REORDER LEVEL IS 12514.7 UNITS, I.E. WHEN THIS QUANTITY + IS REACHED REORDER 2332.49 UNITS. +TOTAL INVENTORY COST(HOLDING + REORDERING + COST OF ITEMS) + PER YEAR EQUALS 1.57691E+6 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/FQEOQ.BAS b/BP100/FQEOQ.BAS new file mode 100644 index 0000000..25d97c2 --- /dev/null +++ b/BP100/FQEOQ.BAS @@ -0,0 +1,35 @@ +1 REM FQEOQ +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"INVENTORY THEORY-FIXED QUANTITY EOQ":PRINT +20 PRINT"THIS PROGRAM INVOLVES AN INVENTORY PROBLEM FOR WHICH IT IS +25 PRINT"ASSUMED THAT THE FOLLOWING CONDITIONS HOLD: +30 PRINT" THERE IS A CONSTANT ORDERING COST PER ORDER +35 PRINT" INVENTORY HOLDING COST IS CONSTANT PER UNIT HELD +40 PRINT" NO BACKORDERS ARE PERMITTED (STOCKOUTS NOT ALLOWED) +45 PRINT" ORDER LEAD TIME IS CONSTANT AND KNOWN +50 PRINT" DEMAND FOR THE ITEMS ARE CONSTANT AND UNIFORM THROUGH TIME +55 PRINT" THERE ARE NO QUANTITY PRICE BREAKS. +60 PRINT:PRINT"WE SHALL INPUT LEAD TIME,ANNUAL DEMAND, ORDERING COST, +65 PRINT"HOLDING COST PER UNIT PER YEAR AND UNIT PURCHASE PRICE. +70 PRINT"OUTPUT INCLUDES OPTIMAL ORDER QUANTITY,REORDER POINT, AND +75 PRINT"TOTAL ANNUAL COST OF THE INVENTORY SYSTEM. +90 INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT"ENTER ANNUAL DEMAND(IN UNITS) ";D +120 INPUT"ENTER REORDER COST(PER ORDER) ";S +130 INPUT"ENTER LEAD TIME(DAYS) ";L +140 INPUT"ENTER HOLDING COST(PER UNIT/YEAR ";C +150 INPUT"ENTER PURCHASE PRICE PER ITEM ";P +200 Q=SQR(2*D*S/C): REM OPTIMAL ORDER QUANTITY +210 R = L*D/365:REM REORDER LEVEL BASED ON 365 DAY YEAR +300 PRINT +310 PRINT"OPTIMAL ORDER QUANTITY IS ";Q;"UNITS" +320 PRINT"THIS MEANS ORDER ABOUT";D/Q;"TIMES PER YEAR." +330 PRINT" OR ABOUT EVERY ";365*Q/D;"DAYS." +340 PRINT"THE REORDER LEVEL IS";R;"UNITS, I.E. WHEN THIS QUANTITY +350 PRINT" IS REACHED REORDER";Q;"UNITS." +360 PRINT"TOTAL INVENTORY COST(HOLDING + REORDERING + COST OF ITEMS)" +370 PRINT" PER YEAR EQUALS";D*P + D*S/Q + Q*C/2 +380 PRINT:INPUT"PRESS ENTER FOR MORE";Z9$ +385 IF Z9$ = "-1" THEN END +390 GOTO 100 diff --git a/BP100/FQEOQ.INP b/BP100/FQEOQ.INP new file mode 100644 index 0000000..d58fe37 --- /dev/null +++ b/BP100/FQEOQ.INP @@ -0,0 +1,7 @@ + +123456 +38.56 +37 +1.75 +12.74 +-1 diff --git a/BP100/FQEOQ.OUT b/BP100/FQEOQ.OUT new file mode 100644 index 0000000..f92f048 --- /dev/null +++ b/BP100/FQEOQ.OUT @@ -0,0 +1,31 @@ + INVENTORY THEORY-FIXED QUANTITY EOQ + +THIS PROGRAM INVOLVES AN INVENTORY PROBLEM FOR WHICH IT IS +ASSUMED THAT THE FOLLOWING CONDITIONS HOLD: + THERE IS A CONSTANT ORDERING COST PER ORDER + INVENTORY HOLDING COST IS CONSTANT PER UNIT HELD + NO BACKORDERS ARE PERMITTED (STOCKOUTS NOT ALLOWED) + ORDER LEAD TIME IS CONSTANT AND KNOWN + DEMAND FOR THE ITEMS ARE CONSTANT AND UNIFORM THROUGH TIME + THERE ARE NO QUANTITY PRICE BREAKS. + +WE SHALL INPUT LEAD TIME,ANNUAL DEMAND, ORDERING COST, +HOLDING COST PER UNIT PER YEAR AND UNIT PURCHASE PRICE. +OUTPUT INCLUDES OPTIMAL ORDER QUANTITY,REORDER POINT, AND +TOTAL ANNUAL COST OF THE INVENTORY SYSTEM. +PRESS ENTER TO BEGIN? +ENTER ANNUAL DEMAND(IN UNITS) ? 123456 +ENTER REORDER COST(PER ORDER) ? 38.56 +ENTER LEAD TIME(DAYS) ? 37 +ENTER HOLDING COST(PER UNIT/YEAR ? 1.75 +ENTER PURCHASE PRICE PER ITEM ? 12.74 + +OPTIMAL ORDER QUANTITY IS 2332.49 UNITS +THIS MEANS ORDER ABOUT 52.9287 TIMES PER YEAR. + OR ABOUT EVERY 6.89606 DAYS. +THE REORDER LEVEL IS 12514.7 UNITS, I.E. WHEN THIS QUANTITY + IS REACHED REORDER 2332.49 UNITS. +TOTAL INVENTORY COST(HOLDING + REORDERING + COST OF ITEMS) + PER YEAR EQUALS 1.57691E+6 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/FQEOQ.dif b/BP100/FQEOQ.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/FQEOQ.run b/BP100/FQEOQ.run new file mode 100644 index 0000000..2bf3dd8 --- /dev/null +++ b/BP100/FQEOQ.run @@ -0,0 +1,31 @@ + INVENTORY THEORY-FIXED QUANTITY EOQ + +THIS PROGRAM INVOLVES AN INVENTORY PROBLEM FOR WHICH IT IS +ASSUMED THAT THE FOLLOWING CONDITIONS HOLD: + THERE IS A CONSTANT ORDERING COST PER ORDER + INVENTORY HOLDING COST IS CONSTANT PER UNIT HELD + NO BACKORDERS ARE PERMITTED (STOCKOUTS NOT ALLOWED) + ORDER LEAD TIME IS CONSTANT AND KNOWN + DEMAND FOR THE ITEMS ARE CONSTANT AND UNIFORM THROUGH TIME + THERE ARE NO QUANTITY PRICE BREAKS. + +WE SHALL INPUT LEAD TIME,ANNUAL DEMAND, ORDERING COST, +HOLDING COST PER UNIT PER YEAR AND UNIT PURCHASE PRICE. +OUTPUT INCLUDES OPTIMAL ORDER QUANTITY,REORDER POINT, AND +TOTAL ANNUAL COST OF THE INVENTORY SYSTEM. +PRESS ENTER TO BEGIN? +ENTER ANNUAL DEMAND(IN UNITS) ? 123456 +ENTER REORDER COST(PER ORDER) ? 38.56 +ENTER LEAD TIME(DAYS) ? 37 +ENTER HOLDING COST(PER UNIT/YEAR ? 1.75 +ENTER PURCHASE PRICE PER ITEM ? 12.74 + +OPTIMAL ORDER QUANTITY IS 2332.49 UNITS +THIS MEANS ORDER ABOUT 52.9287 TIMES PER YEAR. + OR ABOUT EVERY 6.89606 DAYS. +THE REORDER LEVEL IS 12514.7 UNITS, I.E. WHEN THIS QUANTITY + IS REACHED REORDER 2332.49 UNITS. +TOTAL INVENTORY COST(HOLDING + REORDERING + COST OF ITEMS) + PER YEAR EQUALS 1.57691E+6 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/FQEOQPB.80 b/BP100/FQEOQPB.80 new file mode 100644 index 0000000..4af6cf8 --- /dev/null +++ b/BP100/FQEOQPB.80 @@ -0,0 +1,40 @@ + INVENTORY THEORY-FIXED QUANTITY EOQ + WITH QUANTITY PRICE BREAKS + +THIS PROGRAM INVOLVES AN INVENTORY PROBLEM FOR WHICH IT IS +ASSUMED THAT THE FOLLOWING CONDITIONS HOLD: + THERE IS A CONSTANT ORDERING COST PER ORDER + INVENTORY HOLDING COST IS CONSTANT PER UNIT HELD + NO BACKORDERS ARE PERMITTED (STOCKOUTS NOT ALLOWED) + DEMAND FOR THE ITEMS ARE CONSTANT AND UNIFORM THROUGH TIME + THERE ARE QUANTITY PRICE BREAKS. +THE QUANTITY PRICE BREAKS ARE OF THE FIXED-LOT DISCOUNT TYPE. +I.E. DISCOUNTS (IN PRICE/UNIT) ARE OFFERED FOR THE PURCHASE +OF CERTAIN FIXED LOT SIZES. THERE IS ALSO AN ORDINARY PRICE/ +UNIT IF THAT PARTICULAR LOT SIZE IS NOT OFFERED. +PRESS ENTER TO BEGIN? +ENTER ANNUAL DEMAND(IN UNITS) ? 123456 +ENTER REORDER COST(PER ORDER) ? 38.54 +ENTER HOLDING COST(PER UNIT/YEAR ? 1.74 +ENTER NORMAL PURCHASE PRICE/ITEM ? 19.99 + +HOW MANY DIFFERENT LOT SIZES ARE OFFERED? 2 +FOR LOT SIZE # 1 + LOT SIZE QUANTITY ? 144 + PRICE/UNIT ? 2.50 + +FOR LOT SIZE # 2 + LOT SIZE QUANTITY ? 1000 + PRICE/UNIT ? 1.25 + +# REFERS TO THAT LOT SIZE #. LOT SIZE #0 REFERS TO THE +LOT SIZE WITHOUT CONSIDERING THE QUANTITY PRICE BREAKS + + # SIZE PRICE/UNIT TOTAL COST + 0 2338.6 19.99 2471954.57 + 1 144.0 2.50 341806.91 + 2 1000.0 1.25 159947.99 + +MINIMUM COST IS 159948. ATTAINED BY CHOOSING LOT SIZE 1000 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/FQEOQPB.BAS b/BP100/FQEOQPB.BAS new file mode 100644 index 0000000..1e8f720 --- /dev/null +++ b/BP100/FQEOQPB.BAS @@ -0,0 +1,48 @@ +1 REM FQUOQ +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"INVENTORY THEORY-FIXED QUANTITY EOQ" +15 PRINT TAB(13);"WITH QUANTITY PRICE BREAKS":PRINT +20 PRINT"THIS PROGRAM INVOLVES AN INVENTORY PROBLEM FOR WHICH IT IS +25 PRINT"ASSUMED THAT THE FOLLOWING CONDITIONS HOLD: +30 PRINT" THERE IS A CONSTANT ORDERING COST PER ORDER +35 PRINT" INVENTORY HOLDING COST IS CONSTANT PER UNIT HELD +40 PRINT" NO BACKORDERS ARE PERMITTED (STOCKOUTS NOT ALLOWED) +50 PRINT" DEMAND FOR THE ITEMS ARE CONSTANT AND UNIFORM THROUGH TIME +55 PRINT" THERE ARE QUANTITY PRICE BREAKS. +60 PRINT"THE QUANTITY PRICE BREAKS ARE OF THE FIXED-LOT DISCOUNT TYPE. +65 PRINT"I.E. DISCOUNTS (IN PRICE/UNIT) ARE OFFERED FOR THE PURCHASE +70 PRINT"OF CERTAIN FIXED LOT SIZES. THERE IS ALSO AN ORDINARY PRICE/ +75 PRINT"UNIT IF THAT PARTICULAR LOT SIZE IS NOT OFFERED. +90 INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT"ENTER ANNUAL DEMAND(IN UNITS) ";D +120 INPUT"ENTER REORDER COST(PER ORDER) ";S +140 INPUT"ENTER HOLDING COST(PER UNIT/YEAR ";C +150 INPUT"ENTER NORMAL PURCHASE PRICE/ITEM ";P +160 PRINT:INPUT"HOW MANY DIFFERENT LOT SIZES ARE OFFERED";NL +165 NL = INT(NL): IF NL < 1 OR NL > 10 THEN 160 +170 FOR I=1 TO NL +180 PRINT"FOR LOT SIZE #";I +185 INPUT" LOT SIZE QUANTITY ";QQ(I) +190 INPUT" PRICE/UNIT ";PP(I) +200 PRINT +210 NEXT I +220 QQ(0)= SQR(2*D*S/C):PP(0)=P +230 FOR I=0 TO NL:TC(I)=D*PP(I)+D/QQ(I)*S+QQ(I)/2*C:NEXT +300 F$(1)=" # SIZE PRICE/UNIT TOTAL COST" +310 F$(2)=" ## ######.# ######.## #########.##" +350 CLS +360 PRINT"# REFERS TO THAT LOT SIZE #. LOT SIZE #0 REFERS TO THE +370 PRINT"LOT SIZE WITHOUT CONSIDERING THE QUANTITY PRICE BREAKS" +380 PRINT +390 PRINT F$(1) +400 FOR I=0 TO NL +410 PRINT USING F$(2);I,QQ(I),PP(I),TC(I) +420 NEXT +430 M=1E20:FOR I=0 TO NL +440 IF TC(I)"Y" AND Z2$<>"N" THEN PRINT"INPUT ERROR!":GOTO 135 +150 F$(1)="YEAR COST % OF ORIG. COST" +155 F$(2)="### $$#####.## ###.##" +200 REM PRINT +202 CLS +204 IF Z2$="Y" THEN LPRINT"PRICE ESTIMATION @ ";100*P;"% PRICE INFLATION":LPRINT +205 PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1):LPRINT" " +210 FOR I=0 TO N +220 PRINT USING F$(2);I,C*(1+P)[I,100*((1+P)[N-1) +230 IF Z2$="Y" THEN LPRINT USING F$(2);I,C*(1+P)[N,100*((1+P)[N-1) +240 IF I<>0 AND I/12=INT(I/12) THEN PRINT:GOSUB 10100:PRINT:PRINT F$(1) +250 NEXT I +260 PRINT:END +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/FUPRINF.INP b/BP100/FUPRINF.INP new file mode 100644 index 0000000..781c4ac --- /dev/null +++ b/BP100/FUPRINF.INP @@ -0,0 +1,5 @@ + +1000 +10 +2 +Y diff --git a/BP100/FUPRINF.OUT b/BP100/FUPRINF.OUT new file mode 100644 index 0000000..d4afbf2 --- /dev/null +++ b/BP100/FUPRINF.OUT @@ -0,0 +1,33 @@ + FUTURE PRICES WITH INFLATION + +IN THESE DAYS OF INFLATION WE WOULD LIKE TO KNOW HOW +THE PRICE OF AN ITEM IN THE FUTURE IS RELATED TO THE +PRICE OF THAT ITEM TODAY. THERE ARE COMPLEX RELATIONSHIPS +BUT A VERY GOOD ESTIMATE IS THAT THE % RISE IN THE COST OF +THE ITEM WILL EQUAL THE % RISE IN THE COST OF LIVING. + +THE PRESENT PROGRAM TAKES THE PRESENT PRICE OF THE ITEM +THE EXPECTED % INCREASE IN ITS PRICE AND THE NUMBER OF YEARS +IN QUESTION AND PRINTS OUT A TABLE OF THE EXPECTED PRICE +YEAR BY YEAR. + +PRESS ENTER TO BEGIN? + + +ENTER PRESENT COST OF THE ITEM ? 1000 +HOW MANY YEARS INTO THE FUTURE ARE DESIRED? 10 +WHAT IS THE ESTIMATED YEARLY % COST INCR. ? 2 +IS LINEPRINTER OUTPUT DESIRED(Y/N)? Y +YEAR COST % OF ORIG. COST + 0 $1000.00 21.90 + 1 $1020.00 21.90 + 2 $1040.40 21.90 + 3 $1061.21 21.90 + 4 $1082.43 21.90 + 5 $1104.08 21.90 + 6 $1126.16 21.90 + 7 $1148.69 21.90 + 8 $1171.66 21.90 + 9 $1195.09 21.90 + 10 $1218.99 21.90 + diff --git a/BP100/FUPRINF.dif b/BP100/FUPRINF.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/FUPRINF.run b/BP100/FUPRINF.run new file mode 100644 index 0000000..1a3d200 --- /dev/null +++ b/BP100/FUPRINF.run @@ -0,0 +1,33 @@ + FUTURE PRICES WITH INFLATION + +IN THESE DAYS OF INFLATION WE WOULD LIKE TO KNOW HOW +THE PRICE OF AN ITEM IN THE FUTURE IS RELATED TO THE +PRICE OF THAT ITEM TODAY. THERE ARE COMPLEX RELATIONSHIPS +BUT A VERY GOOD ESTIMATE IS THAT THE % RISE IN THE COST OF +THE ITEM WILL EQUAL THE % RISE IN THE COST OF LIVING. + +THE PRESENT PROGRAM TAKES THE PRESENT PRICE OF THE ITEM +THE EXPECTED % INCREASE IN ITS PRICE AND THE NUMBER OF YEARS +IN QUESTION AND PRINTS OUT A TABLE OF THE EXPECTED PRICE +YEAR BY YEAR. + +PRESS ENTER TO BEGIN? + + +ENTER PRESENT COST OF THE ITEM ? 1000 +HOW MANY YEARS INTO THE FUTURE ARE DESIRED? 10 +WHAT IS THE ESTIMATED YEARLY % COST INCR. ? 2 +IS LINEPRINTER OUTPUT DESIRED(Y/N)? Y +YEAR COST % OF ORIG. COST + 0 $1000.00 21.90 + 1 $1020.00 21.90 + 2 $1040.40 21.90 + 3 $1061.21 21.90 + 4 $1082.43 21.90 + 5 $1104.08 21.90 + 6 $1126.16 21.90 + 7 $1148.69 21.90 + 8 $1171.66 21.90 + 9 $1195.09 21.90 + 10 $1218.99 21.90 + diff --git a/BP100/FVAL.80 b/BP100/FVAL.80 new file mode 100644 index 0000000..409e4df --- /dev/null +++ b/BP100/FVAL.80 @@ -0,0 +1,25 @@ + FUTURE VALUE OF AN INVESTMENT + +THIS PROGRAM GIVES THE FUTURE VALUE OF AN INVESTMENT KEPT +FOR N PERIODS WITH INTEREST COMPOUNDED AT A RATE OF +I % PER PERIOD. THE INPUT NEEDED TO RUN THE PROGRAM IS +THE AMOUNT OF THE INVESTMENT, THE INTEREST RATE (AS A PER CENT) +AND THE NUMBER OF PERIODS. IF DATA IS ANNUAL WITH FIXED +NUMBER OF COMPOUNDINGS THEN PROGRAM WILL COMPUTE THE INTEREST +RATE PER PERIOD. + +PRESS ENTER TO BEGIN? +IS INTEREST RATE QUOTED ANNUALLY WITH COMPOUNDING(Y/N)? Y + +ANNUAL INTEREST RATE IN %? 3.75 +NUMBER OF COMPOUNDINGS ANNUALLY? 12 + +INTEREST RATE PER PERIOD = .3125 % + +AMOUNT OF INVESTMENT ? 10000 +INTEREST RATE PER PERIOD: ? 7 +NUMBER OF PERIODS:? 24 + +FUTURE VALUE = 50723.7 + +PRESS 1 FOR MORE TRIALS, 0 TO END? 0 diff --git a/BP100/FVAL.BAS b/BP100/FVAL.BAS new file mode 100644 index 0000000..c250a61 --- /dev/null +++ b/BP100/FVAL.BAS @@ -0,0 +1,37 @@ +5 CLS +10 PRINT " FUTURE VALUE OF AN INVESTMENT" +20 PRINT +30 PRINT "THIS PROGRAM GIVES THE FUTURE VALUE OF AN INVESTMENT KEPT +40 PRINT "FOR N PERIODS WITH INTEREST COMPOUNDED AT A RATE OF +50 PRINT "I % PER PERIOD. THE INPUT NEEDED TO RUN THE PROGRAM IS +60 PRINT "THE AMOUNT OF THE INVESTMENT, THE INTEREST RATE (AS A PER CENT) +70 PRINT "AND THE NUMBER OF PERIODS. IF DATA IS ANNUAL WITH FIXED +75 PRINT"NUMBER OF COMPOUNDINGS THEN PROGRAM WILL COMPUTE THE INTEREST +77 PRINT"RATE PER PERIOD. +80 PRINT +90 INPUT "PRESS ENTER TO BEGIN";Z9 +100 CLS +105 INPUT"IS INTEREST RATE QUOTED ANNUALLY WITH COMPOUNDING(Y/N)";Z9$ +106 IF Z9$<>"Y" AND Z9$<>"N" THEN PRINT "INPUT ERROR!":GOTO 105 +108 IF Z9$="Y" THEN GOSUB 500 +110 PRINT @ 254," " +120 INPUT "AMOUNT OF INVESTMENT ";A +130 INPUT "INTEREST RATE PER PERIOD: ";I +135 I=I/100 +140 INPUT "NUMBER OF PERIODS:";N +150 FV= A*(1+I)[N +160 PRINT +170 PRINT "FUTURE VALUE = ";FV +200 PRINT +220 INPUT"PRESS 1 FOR MORE TRIALS, 0 TO END";Z8 +230 IF Z8=1 GOTO 100 +240 IF Z8=0 THEN END +250 PRINT "INPUT ERROR. TRY AGAIN." +260 FOR L=1 TO 300:NEXT L +270 GOTO 220 +500 REM COMPUTATION FOR ANNUAL DATA +510 PRINT:INPUT"ANNUAL INTEREST RATE IN %";I1 +520 INPUT"NUMBER OF COMPOUNDINGS ANNUALLY";N1 +530 I=I1/N1 +540 PRINT:PRINT"INTEREST RATE PER PERIOD = ";I;"%" +550 FOR J=1 TO 1000:NEXT :CLS:RETURN diff --git a/BP100/FVAL.INP b/BP100/FVAL.INP new file mode 100644 index 0000000..8bed15e --- /dev/null +++ b/BP100/FVAL.INP @@ -0,0 +1,9 @@ + +Y +3.75 +12 +10000 +7 +24 +0 + diff --git a/BP100/FVAL.OUT b/BP100/FVAL.OUT new file mode 100644 index 0000000..8132aec --- /dev/null +++ b/BP100/FVAL.OUT @@ -0,0 +1,25 @@ + FUTURE VALUE OF AN INVESTMENT + +THIS PROGRAM GIVES THE FUTURE VALUE OF AN INVESTMENT KEPT +FOR N PERIODS WITH INTEREST COMPOUNDED AT A RATE OF +I % PER PERIOD. THE INPUT NEEDED TO RUN THE PROGRAM IS +THE AMOUNT OF THE INVESTMENT, THE INTEREST RATE (AS A PER CENT) +AND THE NUMBER OF PERIODS. IF DATA IS ANNUAL WITH FIXED +NUMBER OF COMPOUNDINGS THEN PROGRAM WILL COMPUTE THE INTEREST +RATE PER PERIOD. + +PRESS ENTER TO BEGIN? +IS INTEREST RATE QUOTED ANNUALLY WITH COMPOUNDING(Y/N)? Y + +ANNUAL INTEREST RATE IN %? 3.75 +NUMBER OF COMPOUNDINGS ANNUALLY? 12 + +INTEREST RATE PER PERIOD = .3125 % + +AMOUNT OF INVESTMENT ? 10000 +INTEREST RATE PER PERIOD: ? 7 +NUMBER OF PERIODS:? 24 + +FUTURE VALUE = 50723.7 + +PRESS 1 FOR MORE TRIALS, 0 TO END? 0 diff --git a/BP100/FVAL.dif b/BP100/FVAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/FVAL.run b/BP100/FVAL.run new file mode 100644 index 0000000..409e4df --- /dev/null +++ b/BP100/FVAL.run @@ -0,0 +1,25 @@ + FUTURE VALUE OF AN INVESTMENT + +THIS PROGRAM GIVES THE FUTURE VALUE OF AN INVESTMENT KEPT +FOR N PERIODS WITH INTEREST COMPOUNDED AT A RATE OF +I % PER PERIOD. THE INPUT NEEDED TO RUN THE PROGRAM IS +THE AMOUNT OF THE INVESTMENT, THE INTEREST RATE (AS A PER CENT) +AND THE NUMBER OF PERIODS. IF DATA IS ANNUAL WITH FIXED +NUMBER OF COMPOUNDINGS THEN PROGRAM WILL COMPUTE THE INTEREST +RATE PER PERIOD. + +PRESS ENTER TO BEGIN? +IS INTEREST RATE QUOTED ANNUALLY WITH COMPOUNDING(Y/N)? Y + +ANNUAL INTEREST RATE IN %? 3.75 +NUMBER OF COMPOUNDINGS ANNUALLY? 12 + +INTEREST RATE PER PERIOD = .3125 % + +AMOUNT OF INVESTMENT ? 10000 +INTEREST RATE PER PERIOD: ? 7 +NUMBER OF PERIODS:? 24 + +FUTURE VALUE = 50723.7 + +PRESS 1 FOR MORE TRIALS, 0 TO END? 0 diff --git a/BP100/INSFILE.80 b/BP100/INSFILE.80 new file mode 100644 index 0000000..cb1fdd5 --- /dev/null +++ b/BP100/INSFILE.80 @@ -0,0 +1,135 @@ + INSURANCE POLICY FILE + +THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL OR SMALL +BUSINESS TO STORE DATA ABOUT THE PORTFOLIO OF ALL INSURANCE +POLICIES HELD. FOR EACH POLICY THE FOLLOWING DATA MAY BE +STORED: TYPE INSURANCE,DESCRIPTION,DATE EXPIRES,INSURANCE +COMPANY,UNDERWRITER, POLICY NUMBER, FACE AMOUNT, AND ANNUAL +PREMIUM. THE FILE MAY BE STORED ON CASSETTE OR DISKETTE AND +RECALLED. THE POLICIES MAY BE LISTED EITHER IN FULL OR BY TYPE +WITH SUMMARIES OF TOTAL POLICY FACE VALUES AND PREMIUMS. +A PROVISION FOR A MAXIMUM OF 70 POLICIES IS MADE. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + TYPE INSUR. ? HOME + POL. DESCRIPTION ? HOME OWNERS + DATE EXPIRES ? 01/23/45 + COMPANY WRITING ? GEICO + UNDERWRITER ? LIZARD + POLICY NUMBER ? AB/23-67*D + 0 FACE AMOUNT ? 5000 + 0 ANNUAL PREMIUM ? 12.50 +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +HOME HOME OWNE 01/23/45 GEI LIZAR AB/23-67*D 5000 12 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? Y + TYPE INSUR. ? RENTERS + POL. DESCRIPTION ? WATER DAMAGE + DATE EXPIRES ? 98/76/54 + COMPANY WRITING ? FLO + UNDERWRITER ? LADY + POLICY NUMBER ? ??%^&* + 0 FACE AMOUNT ? 500 + 0 ANNUAL PREMIUM ? 2.50 +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +RENT WATER DAM 98/76/54 FLO LADY ??%^&* 500 2 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +PRESENT DISK FILE IS NEW FILE ? INSFILE.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +ENTER NAME OF FILE TO READ IN? INSFILE.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +HOME HOME OWNE 01/23/45 GEI LIZAR AB/23-67*D 5000 12 +RENT WATER DAM 98/76/54 FLO LADY ??%^&* 500 2 + +PRESS ENTER TO CONTINUE? +TOTAL FACE VALUE AMOUNT : $5500.00 +TOTAL PREMU IUM AMOUNT : $15.00 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/INSFILE.BAS b/BP100/INSFILE.BAS new file mode 100644 index 0000000..3b53b2f --- /dev/null +++ b/BP100/INSFILE.BAS @@ -0,0 +1,223 @@ +1 CLS:PRINT TAB(10);"INSURANCE POLICY FILE":PRINT +2 PRINT"THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL OR SMALL +3 PRINT"BUSINESS TO STORE DATA ABOUT THE PORTFOLIO OF ALL INSURANCE +4 PRINT"POLICIES HELD. FOR EACH POLICY THE FOLLOWING DATA MAY BE +5 PRINT"STORED: TYPE INSURANCE,DESCRIPTION,DATE EXPIRES,INSURANCE +6 PRINT"COMPANY,UNDERWRITER, POLICY NUMBER, FACE AMOUNT, AND ANNUAL +7 PRINT"PREMIUM. THE FILE MAY BE STORED ON CASSETTE OR DISKETTE AND +8 PRINT"RECALLED. THE POLICIES MAY BE LISTED EITHER IN FULL OR BY TYPE +9 PRINT"WITH SUMMARIES OF TOTAL POLICY FACE VALUES AND PREMIUMS. +10 PRINT"A PROVISION FOR A MAXIMUM OF 70 POLICIES IS MADE." +15 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +50 CLEAR 1000 +55 DEFDBL B,V +60 DIM A$(70,6),B(70,3) +65 DIM AT$(70,6),BT(70,3) +70 GOSUB 9000 +100 CLS:INPUT"ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +110 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 100 +500 CLS:PRINT" MAIN MENU":PRINT +505 PRINT" 0.QUIT +510 PRINT" 1.ADD TO FILE OR BEGIN NEW FILE +520 PRINT" 2.READ FILE IN FROM TAPE +530 PRINT" 3.WRITE FILE OUT ONTO TAPE +540 PRINT" 4.READ FILE IN FROM DISK +550 PRINT" 5.WRITE FILE OUT ONTO DISK +560 PRINT" 6.EDIT FILE +570 PRINT" 7.LIST CONTENTS, COMPLETE OR BY TYPE +580 PRINT" 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +590 Z9=0 +600 INPUT"ENTER YOUR CHOICE";Z9 +605 IF Z9 = 0 THEN END +610 ON Z9 GOSUB 1000,2000,2100,2200,2300,3000,5000,7000 +620 GOTO 500 +1000 REM ADD TO OR START FILE ALREADY IN MEMORY +1010 CLS: IF NI=0 THEN PRINT "NEW FILE":GOSUB 10100 +1015 J=NI+1 +1020 GOSUB 6000:REM INPUT 1 RECORD +1030 CLS:PRINT F$(2):GOSUB 6100:REM PRINT OUT 1 RECORD +1040 GOSUB 10200:IF Z9$="N" GOTO 1020 +1050 IF Z9$="A" THEN RETURN +1060 NI=NI+1:REM NEW RECORD ON FILE +1070 GOSUB 10400:REM MORE? +1080 IF Z9$="Y" THEN GOTO 1000 ELSE RETURN +2000 REM READ IN FILE FROM TAPE +2010 CLS:PRINT"PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2015 ' IF ZD$="Y" THEN CMD"T" +2020 INPUT #-1,NI +2030 FOR J=1 TO NI:INPUT #-1,A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2),B(J,3):NEXT +2040 RETURN +2100 REM WRITE OUT FILE ONTO TAPE +2105 CLS +2110 PRINT"PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2115 ' IF ZD$="Y" THEN CMD"T" +2130 WRITE #-1,NI +2140 FOR J=1 TO NI:WRITE #-1,A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2),B(J,3):NEXT +2150 RETURN +2200 REM READ IN FILE FROM DISK +2210 CLS:PRINT"PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2220 ON ERROR GOTO 2290 +2225 PRINT:INPUT"ENTER NAME OF FILE TO READ IN";FI$ +2230 OPEN"I",1,FI$ +2240 INPUT #1,NI +2250 FOR J=1 TO NI:INPUT #1,A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2),B(J,3):FOR JJ=1 TO 6:Z8$=A$(J,JJ):GOSUB 11000:A$(J,JJ)=Z8$:NEXT JJ:NEXT +2260 CLOSE #1 +2270 RETURN +2290 PRINT "FILE DOES NOT EXIST":GOSUB 10100:RETURN +2300 REM WRITE FILE OUT TO DISK +2305 CLS +2310 PRINT:PRINT"PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2315 PRINT:PRINT"PRESENT DISK FILE IS ";FI$;" ";:INPUT"NEW FILE ";FI$ +2320 OPEN"O",1,FI$ +2330 WRITE # 1,NI +2340 FOR J=1 TO NI +2350 WRITE # 1,A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2),B(J,3) +2360 NEXT J +2370 CLOSE #1 +2380 RETURN +3000 REM EDIT FILE +3010 CLS:PRINT" ";F$(2) +3020 FOR J=1 TO NI +3030 PRINT USING"## ";J; +3040 GOSUB 6100 +3050 IF J/12=INT(J/12) THEN GOSUB 4000 +3060 NEXT J +3062 J=J-1 +3065 IF J/12=INT(J/12) GOTO 3080 +3070 GOSUB 4000 +3080 RETURN +4000 REM EDIT SUBROUTINE +4010 K=J +4020 PRINT +4025 J=0 +4028 PRINT"CHANGE TYPE CODE TO ZZZZ FOR DELETING" +4030 INPUT"ENTER # OF ITEM YOU WISH TO EDIT,0 IF NONE";J +4035 IF J=0 THEN J=K:RETURN +4040 CLS:PRINT" ";F$(2):PRINT +4050 PRINT" ";:GOSUB 6100 +4060 PRINT:GOSUB 6000 +4070 CLS:PRINT" ";F$(2) +4080 FOR J=INT(K/12)*12+1 TO K:PRINT USING"## ";J;:GOSUB 6100:NEXT +4090 GOTO 4020 +5000 REM LIST FILE WITH ANALYSIS +5005 INPUT"IS A LINE PRINTER TO BE USED(Y/N)";Z2$:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 5005 +5010 CLS:PRINT" LIST MENU":PRINT +5020 PRINT"1. COMPLETE LIST AS ON FILE +5030 PRINT"2. LIST BY TYPE +5050 PRINT"3. END LIST PROGRAM +5060 PRINT:INPUT"ENTER APPROPRIATE CHOICE";Z9 +5065 IF Z9=3 THEN RETURN +5070 ON Z9 GOSUB 5200,5300 +5080 GOTO 5010 +5100 RETURN +5200 REM COMPLETE LIST +5205 CLS:IF Z2$="Y" THEN PRINT"PUT PAPER INTO PRINTER":GOSUB 10100 +5210 PRINT F$(2):IF Z2$="Y" THEN LPRINT TAB(20);"COMPLETE LIST":LPRINT F$(5) +5215 V(1)=0:V(2)=0:V(3)=0:V(4)=0 +5220 FOR J = 1 TO NI +5230 GOSUB 6100:GOSUB 6300:REM 1 RECORD PRINTED +5233 V(1)=V(1)+B(J,1):REM TOTAL FACE AMOUNT +5236 V(2)=V(2)+B(J,2):REM TOTAL PREMIUM AMOUNT +5240 IF J/12 = INT(J/12) THEN PRINT:GOSUB 10100:CLS:PRINT F$(2) +5250 NEXT J +5260 PRINT:GOSUB 10100 +5265 PRINT USING "TOTAL FACE VALUE AMOUNT : $$#####.##";V(1) +5266 PRINT USING "TOTAL PREMUIUM AMOUNT : $$#####.##";V(2) +5268 IF Z2$<>"Y" THEN GOTO 5280 +5271 LPRINT " ":LPRINT " " +5273 LPRINT USING "TOTAL FACE VALUE AMOUNT : $$#####.##";V(1) +5276 LPRINT USING "TOTAL PREMUIUM AMOUNT : $$#####.##";V(2) +5280 PRINT:GOSUB 10100:RETURN +5300 REM LIST TYPE +5305 CLS:INPUT"ENTER TYPE DESIRED";RM$ +5310 V(1)=0:V(2)=0:V(3)=0:V(4)=0 +5315 CLS:PRINT @ 398,"******* COMPUTING *******" +5320 FOR J=1 TO NI +5325 IF RM$<>A$(J,1) THEN GOTO 5390 +5330 V(1)=V(1)+B(J,1):REM TOTAL FACE AMOUNT +5340 V(2)=V(2)+B(J,2):REM TOTAL PREMIUM AMOUNT +5390 NEXT J +5400 CLS:PRINT F$(2):IF Z2$="Y" THEN LPRINT TAB(20); "LIST OF TYPE ";RM$:LPRINT F$(5) +5405 JJ=0 +5410 FOR J=1 TO NI +5415 IF RM$<>A$(J,1) THEN GOTO 5450 +5417 JJ=JJ+1 +5420 GOSUB 6100 +5430 GOSUB 6300 +5440 IF JJ/12=INT(JJ/12) THEN GOSUB 10100:CLS:PRINT F$(2):PRINT F$(6) +5450 NEXT J +5460 PRINT:GOSUB 10100 +5470 PRINT +5480 PRINT USING "TOTAL FACE VALUE AMOUNT : $$#####.##";V(1) +5485 PRINT USING "TOTAL PREMUIUM AMOUNT : $$#####.##";V(2) +5500 IF Z2$<>"Y" THEN GOTO 5550 +5505 LPRINT " ":LPRINT " " +5510 LPRINT USING "TOTAL FACE VALUE AMOUNT : $$#####.##";V(1) +5515 LPRINT USING "TOTAL PREMUIUM AMOUNT : $$#####.##";V(2) +5530 LPRINT:LPRINT +5550 PRINT:GOSUB 10100:RETURN +6000 REM SBR FOR INPUTTING DATA ON 1 PURCHASE +6005 F$(1)="% %" +6010 PRINT USINGF$(1);A$(J,1),:INPUT"TYPE INSUR. ";A$(J,1) +6015 PRINT USINGF$(1);A$(J,2),:INPUT"POL. DESCRIPTION ";A$(J,2) +6020 PRINT USINGF$(1);A$(J,3),:INPUT"DATE EXPIRES ";A$(J,3) +6023 PRINT USINGF$(1);A$(J,4),:INPUT"COMPANY WRITING ";A$(J,4) +6025 PRINT USINGF$(1);A$(J,5),:INPUT"UNDERWRITER ";A$(J,5) +6030 PRINT USINGF$(1);A$(J,6),:INPUT"POLICY NUMBER ";A$(J,6) +6035 F$(1)=" #########.## " +6040 PRINT USINGF$(1);B(J,1),:INPUT"FACE AMOUNT ";B(J,1) +6050 PRINT USINGF$(1);B(J,2),:INPUT"ANNUAL PREMIUM ";B(J,2) +6099 RETURN +6100 REM PRINT 1 LINE OF PORTFOLIO +6110 PRINT USING F$(4);A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2) +6120 RETURN +6300 REM PRINT 1 LINE OF PORTFOLIO ON PRINTER +6310 IF Z2$<>"Y" THEN RETURN +6320 LPRINT USING F$(7);A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2) +6330 RETURN +7000 REM DELETE SBR COMPUTATION +7005 K=1:REM K=NO. OF RECORDS NOT DELETED +7010 FOR J=1 TO NI +7020 IF A$(J,1)="ZZZZ" GOTO 7090 +7030 REM DO NOT DELETE RECORD +7040 FOR J6=1 TO 6:AT$(K,J6)=A$(J,J6):NEXT +7050 FOR J6=1 TO 3:BT(K,J6)=B(J,J6):NEXT +7060 K=K+1:GOTO 7090 +7090 NEXT J +7100 K=K-1:NI=K +7110 FOR J=1 TO NI +7120 FOR J6=1 TO 6:A$(J,J6)=AT$(J,J6):NEXT +7130 FOR J6=1 TO 3:B(J,J6)=BT(J,J6):NEXT +7140 NEXT J +7150 RETURN +9000 REM FORMATTING VARIABLES +9020 F$(2)="TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM" +9030 F$(4)="% % % % % % % % % % % % ####### #####" +9040 F$(5)="TYPE DESCRIPTION EXPIRES COMP. UNDWRT POLICY # FACE AMT. PREMIUM" +9060 F$(7)="% % % % % % % % % % % % ####### ########" +9099 RETURN +10000 REM INPUT ERROR SBR +10010 PRINT"INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9 +10020 RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9:RETURN +10200 REM Y,N,A SBR +10205 Z9$=" " +10210 INPUT"ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$ +10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205 +10230 RETURN +10300 REM Y,N SBR +10305 Z9$=" " +10310 INPUT"ENTER Y IF OK, N IF ERROR";Z9$ +10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305 +10330 RETURN +10400 REM MORE ENTRY? SBR +10405 Z9$=" " +10410 INPUT"DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$ +10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405 +10430 RETURN +10500 REM ONLY Y/N SBR +10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000 +10520 RETURN +11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$ +11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010 +11020 RETURN diff --git a/BP100/INSFILE.DAT b/BP100/INSFILE.DAT new file mode 100644 index 0000000..2fc490c --- /dev/null +++ b/BP100/INSFILE.DAT @@ -0,0 +1,3 @@ + 2 +"HOME","HOME OWNERS","01/23/45","GEICO","LIZARD","AB/23-67*D", 5000, 12.5, 0 +"RENTERS","WATER DAMAGE","98/76/54","FLO","LADY","??%^&*", 500, 2.5, 0 diff --git a/BP100/INSFILE.INP b/BP100/INSFILE.INP new file mode 100644 index 0000000..0c4ace7 --- /dev/null +++ b/BP100/INSFILE.INP @@ -0,0 +1,38 @@ + +Y +1 + +HOME +HOME OWNERS +01/23/45 +GEICO +LIZARD +AB/23-67*D +5000 +12.50 +Y +Y +RENTERS +WATER DAMAGE +98/76/54 +FLO +LADY +??%^&* +500 +2.50 +Y +N +5 + +INSFILE.DAT +4 + +INSFILE.DAT +7 +Y +1 + + + +3 +0 diff --git a/BP100/INSFILE.OUT b/BP100/INSFILE.OUT new file mode 100644 index 0000000..44d7cf2 --- /dev/null +++ b/BP100/INSFILE.OUT @@ -0,0 +1,135 @@ + INSURANCE POLICY FILE + +THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL OR SMALL +BUSINESS TO STORE DATA ABOUT THE PORTFOLIO OF ALL INSURANCE +POLICIES HELD. FOR EACH POLICY THE FOLLOWING DATA MAY BE +STORED: TYPE INSURANCE,DESCRIPTION,DATE EXPIRES,INSURANCE +COMPANY,UNDERWRITER, POLICY NUMBER, FACE AMOUNT, AND ANNUAL +PREMIUM. THE FILE MAY BE STORED ON CASSETTE OR DISKETTE AND +RECALLED. THE POLICIES MAY BE LISTED EITHER IN FULL OR BY TYPE +WITH SUMMARIES OF TOTAL POLICY FACE VALUES AND PREMIUMS. +A PROVISION FOR A MAXIMUM OF 70 POLICIES IS MADE. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + TYPE INSUR. ? HOME + POL. DESCRIPTION ? HOME OWNERS + DATE EXPIRES ? 01/23/45 + COMPANY WRITING ? GEICO + UNDERWRITER ? LIZARD + POLICY NUMBER ? AB/23-67*D + 0 FACE AMOUNT ? 5000 + 0 ANNUAL PREMIUM ? 12.50 +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +HOME HOME OWNE 01/23/45 GEI LIZAR AB/23-67*D 5000 12 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? Y + TYPE INSUR. ? RENTERS + POL. DESCRIPTION ? WATER DAMAGE + DATE EXPIRES ? 98/76/54 + COMPANY WRITING ? FLO + UNDERWRITER ? LADY + POLICY NUMBER ? ??%^&* + 0 FACE AMOUNT ? 500 + 0 ANNUAL PREMIUM ? 2.50 +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +RENT WATER DAM 98/76/54 FLO LADY ??%^&* 500 2 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +PRESENT DISK FILE IS NEW FILE ? INSFILE.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +ENTER NAME OF FILE TO READ IN? INSFILE.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +HOME HOME OWNE 01/23/45 GEI LIZAR AB/23-67*D 5000 12 +RENT WATER DAM 98/76/54 FLO LADY ??%^&* 500 2 + +PRESS ENTER TO CONTINUE? +TOTAL FACE VALUE AMOUNT : $5500.00 +TOTAL PREMU IUM AMOUNT : $15.00 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/INSFILE.dif b/BP100/INSFILE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/INSFILE.run b/BP100/INSFILE.run new file mode 100644 index 0000000..cb1fdd5 --- /dev/null +++ b/BP100/INSFILE.run @@ -0,0 +1,135 @@ + INSURANCE POLICY FILE + +THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL OR SMALL +BUSINESS TO STORE DATA ABOUT THE PORTFOLIO OF ALL INSURANCE +POLICIES HELD. FOR EACH POLICY THE FOLLOWING DATA MAY BE +STORED: TYPE INSURANCE,DESCRIPTION,DATE EXPIRES,INSURANCE +COMPANY,UNDERWRITER, POLICY NUMBER, FACE AMOUNT, AND ANNUAL +PREMIUM. THE FILE MAY BE STORED ON CASSETTE OR DISKETTE AND +RECALLED. THE POLICIES MAY BE LISTED EITHER IN FULL OR BY TYPE +WITH SUMMARIES OF TOTAL POLICY FACE VALUES AND PREMIUMS. +A PROVISION FOR A MAXIMUM OF 70 POLICIES IS MADE. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + TYPE INSUR. ? HOME + POL. DESCRIPTION ? HOME OWNERS + DATE EXPIRES ? 01/23/45 + COMPANY WRITING ? GEICO + UNDERWRITER ? LIZARD + POLICY NUMBER ? AB/23-67*D + 0 FACE AMOUNT ? 5000 + 0 ANNUAL PREMIUM ? 12.50 +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +HOME HOME OWNE 01/23/45 GEI LIZAR AB/23-67*D 5000 12 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? Y + TYPE INSUR. ? RENTERS + POL. DESCRIPTION ? WATER DAMAGE + DATE EXPIRES ? 98/76/54 + COMPANY WRITING ? FLO + UNDERWRITER ? LADY + POLICY NUMBER ? ??%^&* + 0 FACE AMOUNT ? 500 + 0 ANNUAL PREMIUM ? 2.50 +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +RENT WATER DAM 98/76/54 FLO LADY ??%^&* 500 2 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +PRESENT DISK FILE IS NEW FILE ? INSFILE.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + +ENTER NAME OF FILE TO READ IN? INSFILE.DAT + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM +HOME HOME OWNE 01/23/45 GEI LIZAR AB/23-67*D 5000 12 +RENT WATER DAM 98/76/54 FLO LADY ??%^&* 500 2 + +PRESS ENTER TO CONTINUE? +TOTAL FACE VALUE AMOUNT : $5500.00 +TOTAL PREMU IUM AMOUNT : $15.00 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST BY TYPE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST CONTENTS, COMPLETE OR BY TYPE + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/INVDATA b/BP100/INVDATA new file mode 100644 index 0000000..22e8e9b --- /dev/null +++ b/BP100/INVDATA @@ -0,0 +1,2 @@ + 1 +"A56-C7","MOUSE PAD","JM-5*D", 125, 2.5, 9.99, 3.33, 100, 1000, 750, 931, 593 diff --git a/BP100/INVENT2.80 b/BP100/INVENT2.80 new file mode 100644 index 0000000..dabfff5 --- /dev/null +++ b/BP100/INVENT2.80 @@ -0,0 +1,181 @@ + INVENTORY CONTROL FOR TRS-80 + BY DR. PETER SHENKIN + ******************************************************* +THIS PROGRAM IS A RELATIVELY COMPLETE INVENTORY CONTROL PROGRAM +THE ONLY REAL LIMITATION OF WHICH IS THAT IT IS IN MEMORY AND +THUS ONLY HANDLES 50 DIFFERENT INVENTORY ITEMS. ACTUALLY +THIS LIMITATION MAY BE RELAXED BY CHANGING THE APPROPRIATE +DIMENSION STATEMENTS IF ENOUGH MEMORY IS AVAILABLE. + THE PROGRAM SUPPORTS LINE PRINTER OUTPUT AND ALLOWS THE +THE INVENTORY FILE TO BE STORED ON EITHER CASSETTE OR DISKETTE. +REPORTS INCLUDE A LIST OF ALL DATA AND AN ACTIVITY REPORT +WHICH OUTLINE PAST ACTIVITY FOR EACH ITEM. AN AVERAGE COST IS +KEPT UPDATED FOR EACH ITEM. + *****************************************************+ + +PRESS ENTER TO CONTINUE? +ARE DISK DRIVES ATTACHED(Y/N)? Y + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 1 +ADDITIONAL INVENTORY ITEM SUBROUTINE + +HAS ANY EXISTING FILE BEEN READ FROM TAPE OR DISKETTE?(Y/N); +? Y +INPUT DATA FOR NEXT ITEM. + +ITEM NUMBER ? A56-C7 +DESCRIPTION( < 20 CHAR) ? MOUSE PAD +VENDOR NUMBER ? JM-5*D +QUANTITY ON HAND ? 125 +LAST ORDER UNIT COST ? 2.50 +SELLING PRICE ? 9.99 +AVERAGE UNIT COST ? 3.33 +REORDER POINT ? 100 +MAXIMUM INVENTORY ? 1000 +# SOLD THIS INV. PERIOD ? 750 +# SOLD LAST INV. PERIOD ? 931 +# SOLD 2 INV. PER. AGO ? 593 +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + +IF OK PRESS 1,OTHERWISE PRESS 0? 1 +DO YOU DESIRE MORE ENTRIES ?(Y/N) +? N + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 7 +PREPARE INVENTORY MASTER DISKETTE +PRESS ENTER WHEN READY? + +THERE ARE 1 ITEMS + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 2 +CHOOSE DESIRED OPTION AND PRESS ENTER +1. COMPLETE INVENTORY LIST +2. INVENTORY LIST BY VENDOR +3. LIST OF ITEMS BELOW REORDER POINT +OPTION # ? 1 +IS PRINTED OUTPUT DESIRED(Y/N)? Y +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 5 +PLACE INVENTORY DATA DISKETTE IN DRIVE. +PRESS ENTER WHEN READY? + + 1 ITEMS TO BE READ + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 2 +CHOOSE DESIRED OPTION AND PRESS ENTER +1. COMPLETE INVENTORY LIST +2. INVENTORY LIST BY VENDOR +3. LIST OF ITEMS BELOW REORDER POINT +OPTION # ? 2 +IS PRINTED OUTPUT DESIRED(Y/N)? Y +DESIRED VENDOR NUMBER ? JM-5*D +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 11 +ARE YOU SURE YOU WISH TO END PROGRAM(Y/N)? Y diff --git a/BP100/INVENT2.BAS b/BP100/INVENT2.BAS new file mode 100644 index 0000000..32cb8f1 --- /dev/null +++ b/BP100/INVENT2.BAS @@ -0,0 +1,326 @@ +1 REM PROGRAM INV1 +5 CLS +10 PRINT" INVENTORY CONTROL FOR TRS-80 +20 PRINT" BY DR. PETER SHENKIN +30 PRINT" ******************************************************* +40 PRINT"THIS PROGRAM IS A RELATIVELY COMPLETE INVENTORY CONTROL PROGRAM +45 PRINT"THE ONLY REAL LIMITATION OF WHICH IS THAT IT IS IN MEMORY AND +50 PRINT"THUS ONLY HANDLES 50 DIFFERENT INVENTORY ITEMS. ACTUALLY +55 PRINT"THIS LIMITATION MAY BE RELAXED BY CHANGING THE APPROPRIATE +60 PRINT"DIMENSION STATEMENTS IF ENOUGH MEMORY IS AVAILABLE. +65 PRINT" THE PROGRAM SUPPORTS LINE PRINTER OUTPUT AND ALLOWS THE +70 PRINT"THE INVENTORY FILE TO BE STORED ON EITHER CASSETTE OR DISKETTE." +75 PRINT"REPORTS INCLUDE A LIST OF ALL DATA AND AN ACTIVITY REPORT +80 PRINT"WHICH OUTLINE PAST ACTIVITY FOR EACH ITEM. AN AVERAGE COST IS +85 PRINT"KEPT UPDATED FOR EACH ITEM." +120 PRINT" *****************************************************+ +130 PRINT +140 GOSUB 10100 +145 CLS +150 INPUT"ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +155 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 150 +190 CLEAR 2500 +200 DIM N$(50),D$(50),V$(50),Q(50),U(50),P(50),AC(50) +210 DIM RL(50),RA(50),S(3,50) +230 NI=0 +240 GOSUB 3200 +400 CLS +410 PRINT " INVENTORY CONTROL" +420 PRINT " ENTER NUMBER OF DESIRED OPTION." +425 PRINT +430 PRINT "1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE)" +440 PRINT "2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR)" +450 PRINT "3.PROCESSING CHANGES OF INVENTORY AMOUNTS" +460 PRINT "4.READ INVENTORY FILE FROM CASSETTE" +465 PRINT "5.READ INVENTORY FILE IN FROM DISKETTE +470 PRINT "6.WRITE INVENTORY FILE ONTO CASSETTE" +475 PRINT "7.WRITE INVENTORY FILE ONTO DISKETTE" +480 PRINT "8.UPDATE TO BEGIN NEW INVENTORY PERIOD" +483 PRINT "9.ACTIVITY REPORT" +486 PRINT "10.EDITING INVENTORY FILE" +490 PRINT "11.END THIS PROGRAM" +500 PRINT +510 INPUT "INPUT OPTION NUMBER & PRESS ENTER";OP +520 ON OP GOSUB 1000,1300,1600,1900,2000,2200,2300,2500,3000,3500,2800 +540 GOTO 400 +1000 REM SUBROUTINE FOR ADDING ITEM TYPES TO INVENTORY FILE +1010 CLS +1015 PRINT "ADDITIONAL INVENTORY ITEM SUBROUTINE":PRINT +1020 PRINT "HAS ANY EXISTING FILE BEEN READ FROM TAPE OR DISKETTE?(Y/N); +1030 INPUT Z9$ +1040 IF Z9$="N" GOTO 1290 +1050 IF Z9$="Y" GOTO 1075 +1060 GOSUB 5200 +1070 GOTO 1010 +1075 I=NI+1 +1080 CLS +1085 PRINT "INPUT DATA FOR NEXT ITEM.":PRINT +1090 GOSUB 6700 +1230 REM EXHIBIT DISPLAY FOR THIS ITEM +1240 GOSUB 6000 +1250 GOSUB 6200 +1260 IF Z8=0 GOTO 1080 +1270 GOSUB 6500 +1280 NI=NI+1:IF Z9$= "Y" GOTO 1075 +1290 RETURN +1300 REM SUBROUTINE GIVING INVENTORY LIST +1310 CLS:PRINT "CHOOSE DESIRED OPTION AND PRESS ENTER" +1320 PRINT "1. COMPLETE INVENTORY LIST" +1330 PRINT "2. INVENTORY LIST BY VENDOR" +1340 PRINT "3. LIST OF ITEMS BELOW REORDER POINT" +1350 INPUT "OPTION # ";N8 +1355 GOSUB 10800:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 1355 +1360 ON N8 GOSUB 1380,1410,1440 +1370 RETURN +1380 FOR I=1 TO NI +1390 GOSUB 6000 +1395 IF Z2$="Y" THEN GOSUB 6100 +1400 FOR J = 1 TO 2000:NEXT J +1403 NEXT I +1405 RETURN +1410 INPUT "DESIRED VENDOR NUMBER ";VN$ +1420 FOR I=1 TO NI +1430 IF V$(I)<>VN$ THEN GOTO 1435 +1432 GOSUB 6000 +1433 IF Z2$="Y" THEN GOSUB 6100 +1434 FOR J= 1 TO 1000:NEXT J +1435 NEXT I +1439 RETURN +1440 FOR I= 1 TO NI +1450 IF Q(I) >= RL(I) THEN GOTO 1470 +1460 GOSUB 6000 +1462 IF Z2$="Y" THEN GOSUB 6100 +1465 FOR J= 1 TO 1000:NEXT J +1470 NEXT I +1480 RETURN +1600 REM SUBROUTINE FOR CHANGING INVENTORY AMOUNTS +1610 REM AVERAGE COST AUTOMATICALLY CHANGED WITH ADDITIONS +1615 REM TO INVENTORY +1620 CLS +1630 PRINT " CHANGING INVENTORY AMOUNTS" +1640 PRINT +1650 PRINT "FOR EACH ITEM OF INTEREST IT WILL BE NECESSARY TO +1660 PRINT "ENTER THE ITEM NUMBER AND PRESS ENTER. INFORMATION +1670 PRINT "ABOUT THAT ITEM WILL THEN BE DISPLAYED. THEN THE +1680 PRINT "USER MUST INDICATE WHETHER THE ITEM SUPPLY IS BEING" +1690 PRINT "DIMINISHED OR INCREASED,AND BY HOW MUCH." +1695 FOR I=1 TO 1000:NEXT I +1700 CLS +1705 I=0 +1710 PRINT @ 320,"ITEM NUMBER :";:INPUT IT$ +1720 I = I+1 +1730 IF IT$=N$(I) GOTO 1800 +1740 IF I=NI GOTO 1770 +1750 GOTO 1720 +1770 PRINT:PRINT "ITEM NOT ON INVENTORY LIST." +1775 FOR J=1 TO 200:NEXT J +1780 GOTO 1870 +1800 GOSUB 6000 : REM LIST ITEM INFORMATION +1810 PRINT "INPUT A FOR ADDITIONS,D FOR DELETIONS,R FOR END" +1812 INPUT R$ +1814 IF R$ = "R" THEN RETURN +1815 IF R$="A" OR R$="D" GOTO 1820 +1817 GOSUB 5200 +1819 GOTO 1800 +1820 IF R$="A" GOTO 1840 +1822 CLS:PRINT"HOW MANY ITEMS DO YOU WISH TO DELETE";:INPUT Q1 +1824 IF Q1<= Q(I) GOTO 1828 +1825 PRINT:PRINT "ONLY ";Q(I);" ITEMS IN INVENTORY.TRY AGAIN" +1826 FOR I= 1 TO 300:NEXT I +1827 GOTO 1822 +1828 PRINT "ARE YOU SURE YOU WANT TO DELETE ";Q1;" ITEMS(Y/N)"; +1829 INPUT Z9$ +1831 IF Z9$="Y" OR Z9$="N" GOTO 1834 +1832 GOSUB 5200 +1833 GOTO 1828 +1834 IF Z9$="N" GOTO 1800 +1835 Q(I)=Q(I) - Q1:S(0,I)=S(0,I)+Q1 +1836 GOTO 1870 +1840 INPUT "INPUT NO. OF UNITS TO ADD";Q1 +1845 INPUT "UNIT COST";UI +1847 Z5=0 +1850 INPUT "PRESS 1 AND ENTER IF IN ERROR.JUST ENTER IF OK";Z5 +1855 IF Z5=1 GOTO 1800 +1858 AC=(AC(I)*Q(I)+Q1*UI)/(Q(I)+Q1) +1859 AC(I)=INT(100*AC)/100 +1860 Q(I)=Q(I) + Q1 +1862 U(I)=UI +1865 GOTO 1870 +1870 GOSUB 6500 +1875 IF Z9$= "Y" GOTO 1700 +1880 RETURN +1900 REM SUBROUTINE FOR READING INV. FILE FROM CASSETTE +1910 CLS:PRINT "PREPARE TAPE RECORDER AND INV. TAPE." +1920 INPUT "PRESS ENTER WHEN READY";Z7 +1925 ' IF ZD$="Y" THEN CMD"T" +1930 INPUT #-1,NI +1940 FOR I=1 TO NI +1950 GOSUB 5000 +1960 NEXT I +1970 RETURN +2000 REM SUBROUTINE FOR READING INV FILE IN FROM DISKETTE +2010 CLS:PRINT"PLACE INVENTORY DATA DISKETTE IN DRIVE." +2020 INPUT"PRESS ENTER WHEN READY";Z7 +2025 OPEN "I",1,"INVDATA" +2030 INPUT #1,NI +2035 PRINT:PRINT NI;" ITEMS TO BE READ" +2040 FOR I=1 TO NI +2050 GOSUB 5050 +2060 NEXT I +2070 CLOSE #1:RETURN +2200 REM SUBROUTINE FOR WRITING INV FILE ONTO CASSETTE +2210 CLS:PRINT "PREPARE TAPE RECORDER AND INV. TAPE." +2220 INPUT "PRESS ENTER WHEN READY";Z7 +2225 ' IF ZD$="Y" THEN CMD"T" +2230 WRITE #-1,NI +2240 FOR I= 1 TO NI +2250 GOSUB 5100 +2260 NEXT I +2270 RETURN +2300 REM SUBROUTINE FOR WRITING INV FILE ONTO DISKETTE +2310 CLS:PRINT"PREPARE INVENTORY MASTER DISKETTE +2320 INPUT"PRESS ENTER WHEN READY";Z7 +2325 PRINT:PRINT"THERE ARE ";NI;" ITEMS" +2330 OPEN "O",1,"INVDATA" +2335 WRITE # 1,NI +2340 FOR I=1 TO NI +2350 GOSUB 5150 +2360 NEXT I +2370 CLOSE #1:RETURN +2500 REM UPDATE TO BEGIN NEW INVENTORY PERIOD +2510 FOR I=1 TO NI +2520 S(2,I) = S(1,I) : S(1,I)=S(0,I) : S(0,I) = 0 +2530 NEXT I +2535 CLS:PRINT "UPDATE COMPLETE":FOR I=1 TO 200:NEXT I +2540 RETURN +2800 REM END PROGRAM SUBROUTINE +2805 CLS +2810 INPUT"ARE YOU SURE YOU WISH TO END PROGRAM(Y/N)";Z7$ +2820 IF Z7$="N" THEN RETURN +2830 IF Z7$="Y" THEN END +2840 GOSUB 5200 +2850 GOTO 2805 +3000 REM SUBROUTINE FOR ACTIVITY REPORT +3005 CLS:GOSUB 10800:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 3005 +3010 CLS:GOSUB 3300 +3015 IF Z2$="Y" THEN LPRINT H$:LPRINT" " +3020 FOR I= 1 TO NI +3030 GOSUB 3250 +3040 IF I/10 = INT(I/10) GOTO 3070 +3050 NEXT I +3055 PRINT +3056 INPUT "END OF REPORT. PRESS ENTER TO RETURN TO MENU";Z4 +3060 RETURN +3070 PRINT:INPUT "PRESS ENTER FOR MORE OF REPORT";Z4 +3080 CLS +3090 GOSUB 3300 +3100 GOTO 3050 +3200 REM SUBROUTINE WITH PRINT USING FORMAT VARIABLES +3210 H$="ITEM NO. DESCRIPTION ON HAND THIS PER. LAST PER." +3220 Z$="% % % % ####### ####### ####### " +3225 RETURN +3250 REM SUBROUTINE FOR PRINTING ACTIVITY INFORMATION +3260 PRINT USING Z$;N$(I),D$(I),Q(I),S(0,I),S(1,I) +3265 IF Z2$="Y" THEN LPRINT USING Z$;N$(I),D$(I),Q(I),S(0,I),S(1,I) +3270 RETURN +3300 REM SUBROUTINE FOR PRINTING HEADING +3310 PRINT H$ +3320 RETURN +3500 REM EDITING SUBROUTINE +3510 CLS +3520 PRINT " EDITING ITEM ENTRIES" +3530 PRINT +3540 PRINT "FOR EACH ITEM MAKE THE APPROPRIATE CHANGES AND" +3550 PRINT "AND PRESS ENTER AFTER EACH CHANGE. JUST PRESS +3560 PRINT "ENTER WHEN ITEM IS NOT CHANGED." +3570 FOR I= 1 TO 1000:NEXT I +3580 CLS +3590 I=0 +3600 PRINT @ 320,"ITEM NUMBER (99999 FOR RETURN)";:INPUT IT$ +3610 IF IT$="99999" THEN RETURN +3620 I=I+1 +3630 IF IT$=N$(I) GOTO 3700 +3640 IF I = NI GOTO 3670 +3650 GOTO 3620 +3670 PRINT:PRINT "ITEM NOT ON INVENTORY LIST." +3675 FOR J=1 TO 200:NEXT J +3680 GOTO 3755 +3700 GOSUB 6000 : REM LIST ITEM INFORMATION +3710 PRINT +3720 GOSUB 6700 +3730 CLS +3740 GOSUB 6000 +3750 PRINT:PRINT +3755 GOSUB 6500 : REM QUERY SUBROUTINE +3760 IF Z9$="Y" GOTO 3590 +3780 RETURN +5000 REM SUBROUTINE FoR READING RECORD FROM CASSETTE +5010 INPUT #-1,N$(I),D$(I),V$(I),Q(I),U(I),P(I),AC(I),RL(I),RA(I),S(0,I),S(1,I),S(2,I) +5020 RETURN +5050 REM SUBROUTINE FOR READING DATA FROM DISKETTE +5060 INPUT # 1,N$(I),D$(I),V$(I),Q(I),U(I),P(I),AC(I),RL(I),RA(I),S(0,I),S(1,I),S(2,I) +5070 RETURN +5100 REM SUBROUTINE FOR COPYING RECORD ONTO CASSETTE +5110 WRITE #-1,N$(I),D$(I),V$(I),Q(I),U(I),P(I),AC(I),RL(I),RA(I),S(0,I),S(1,I),S(2,I) +5120 RETURN +5150 REM SUBROUTINE FOR COPYING RECORD ONTO DISKETTE +5160 WRITE # 1,N$(I),D$(I),V$(I),Q(I),U(I),P(I),AC(I),RL(I),RA(I),S(0,I),S(1,I),S(2,I) +5170 RETURN +5200 REM SUBROUTINE FOR INPUT ERROR +5210 PRINT:PRINT "INPUT ERROR. ENTER AGAIN." +5220 FOR K=1 TO 1000:NEXT K +5230 PRINT:RETURN +6000 REM SUBROUTINE DISPLAYING DATA FOR 1 ITEM +6010 CLS +6020 PRINT "ITEM NO. : ";N$(I);" DESCRIP. :";D$(I) +6030 PRINT "VENDOR NO. : ";V$(I) +6040 PRINT "QUANT. ON HAND: ";Q(I);" LAST UNIT COST:";U(I) +6050 PRINT "SELLING PR. :";P(I);" AVERAGE COST : ";AC(I) +6060 PRINT "REORDER PT.: ";RL(I);" MAX INV.: ";RA(I) +6070 PRINT "ORDERS THIS INV. PERIOD : ";S(0,I) +6080 PRINT "ORdERS LAST INV. PER:";S(1,I);" PREV. PER:";S(2,I) +6085 PRINT +6090 RETURN +6100 REM SUBROUTINE PRINTING DATA FOR 1 ITEM +6120 LPRINT "ITEM NO. : ";N$(I);" DESCRIP. :";D$(I) +6130 LPRINT "VENDOR NO. : ";V$(I) +6140 LPRINT "QUANT. ON HAND: ";Q(I);" LAST UNIT COST:";U(I) +6150 LPRINT "SELLING PR. :";P(I);" AVERAGE COST : ";AC(I) +6160 LPRINT "REORDER PT.: ";RL(I);" MAX INV.: ";RA(I) +6170 LPRINT "ORDERS THIS INV. PERIOD : ";S(0,I) +6180 LPRINT "ORDERS LAST INV. PER:";S(1,I);" PREV. PER:";S(2,I) +6185 LPRINT " ":LPRINT " ":LPRINT " " +6190 RETURN +6200 REM OK SUBROUTINE +6210 PRINT +6220 PRINT "IF OK PRESS 1,OTHERWISE PRESS 0";:INPUT Z8 +6230 IF Z8=0 OR Z8=1 GOTO 6270 +6240 GOSUB 5200 +6250 GOSUB 6000 +6260 GOTO 6210 +6270 REM +6290 RETURN +6500 REM QuERY SUBROUTINE +6510 PRINT "DO YOU DESIRE MORE ENTRIES ?(Y/N)":INPUT Z9$ +6520 IF Z9$<> "Y" AND Z9$<> "N" GOTO 6530 +6525 RETURN +6530 GOSUB 5200 +6540 CLS:GOTO 6510 +6700 REM DATA ITEM INPUT SUBROUTINE +6710 INPUT "ITEM NUMBER ";N$(I) +6720 INPUT "DESCRIPTION( < 20 CHAR) ";D$(I) +6730 INPUT "VENDOR NUMBER ";V$(I) +6740 INPUT "QUANTITY ON HAND ";Q(I) +6750 INPUT "LAST ORDER UNIT COST ";U(I) +6760 INPUT "SELLING PRICE ";P(I) +6770 INPUT "AVERAGE UNIT COST ";AC(I) +6780 INPUT "REORDER POINT ";RL(I) +6790 INPUT "MAXIMUM INVENTORY ";RA(I) +6800 INPUT "# SOLD THIS INV. PERIOD ";S(0,I) +6810 INPUT "# SOLD LAST INV. PERIOD ";S(1,I) +6820 INPUT "# SOLD 2 INV. PER. AGO ";S(2,I) +6830 RETURN +10000 PRINT"INPUT ERROR! TRY AGAIN:FOR JZ=1 TO 500:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN +10800 Z2$="":INPUT"IS PRINTED OUTPUT DESIRED(Y/N)";Z2$:RETURN +10900 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:RETURN diff --git a/BP100/INVENT2.INP b/BP100/INVENT2.INP new file mode 100644 index 0000000..ac41c5f --- /dev/null +++ b/BP100/INVENT2.INP @@ -0,0 +1,31 @@ + +Y +1 +Y +A56-C7 +MOUSE PAD +JM-5*D +125 +2.50 +9.99 +3.33 +100 +1000 +750 +931 +593 +1 +N +7 + +2 +1 +Y +5 + +2 +2 +Y +JM-5*D +11 +Y diff --git a/BP100/INVENT2.OUT b/BP100/INVENT2.OUT new file mode 100644 index 0000000..0eeecef --- /dev/null +++ b/BP100/INVENT2.OUT @@ -0,0 +1,181 @@ + INVENTORY CONTROL FOR TRS-80 + BY DR. PETER SHENKIN + ******************************************************* +THIS PROGRAM IS A RELATIVELY COMPLETE INVENTORY CONTROL PROGRAM +THE ONLY REAL LIMITATION OF WHICH IS THAT IT IS IN MEMORY AND +THUS ONLY HANDLES 50 DIFFERENT INVENTORY ITEMS. ACTUALLY +THIS LIMITATION MAY BE RELAXED BY CHANGING THE APPROPRIATE +DIMENSION STATEMENTS IF ENOUGH MEMORY IS AVAILABLE. + THE PROGRAM SUPPORTS LINE PRINTER OUTPUT AND ALLOWS THE +THE INVENTORY FILE TO BE STORED ON EITHER CASSETTE OR DISKETTE. +REPORTS INCLUDE A LIST OF ALL DATA AND AN ACTIVITY REPORT +WHICH OUTLINE PAST ACTIVITY FOR EACH ITEM. AN AVERAGE COST IS +KEPT UPDATED FOR EACH ITEM. + *****************************************************+ + +PRESS ENTER TO CONTINUE? +ARE DISK DRIVES ATTACHED(Y/N)? Y + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 1 +ADDITIONAL INVENTORY ITEM SUBROUTINE + +HAS ANY EXISTING FILE BEEN READ FROM TAPE OR DISKETTE?(Y/N); +? Y +INPUT DATA FOR NEXT ITEM. + +ITEM NUMBER ? A56-C7 +DESCRIPTION( < 20 CHAR) ? MOUSE PAD +VENDOR NUMBER ? JM-5*D +QUANTITY ON HAND ? 125 +LAST ORDER UNIT COST ? 2.50 +SELLING PRICE ? 9.99 +AVERAGE UNIT COST ? 3.33 +REORDER POINT ? 100 +MAXIMUM INVENTORY ? 1000 +# SOLD THIS INV. PERIOD ? 750 +# SOLD LAST INV. PERIOD ? 931 +# SOLD 2 INV. PER. AGO ? 593 +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + +IF OK PRESS 1,OTHERWISE PRESS 0? 1 +DO YOU DESIRE MORE ENTRIES ?(Y/N) +? N + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 7 +PREPARE INVENTORY MASTER DISKETTE +PRESS ENTER WHEN READY? + +THERE ARE 1 ITEMS + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 2 +CHOOSE DESIRED OPTION AND PRESS ENTER +1. COMPLETE INVENTORY LIST +2. INVENTORY LIST BY VENDOR +3. LIST OF ITEMS BELOW REORDER POINT +OPTION # ? 1 +IS PRINTED OUTPUT DESIRED(Y/N)? Y +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 5 +PLACE INVENTORY DATA DISKETTE IN DRIVE. +PRESS ENTER WHEN READY? + + 1 ITEMS TO BE READ + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 2 +CHOOSE DESIRED OPTION AND PRESS ENTER +1. COMPLETE INVENTORY LIST +2. INVENTORY LIST BY VENDOR +3. LIST OF ITEMS BELOW REORDER POINT +OPTION # ? 2 +IS PRINTED OUTPUT DESIRED(Y/N)? Y +DESIRED VENDOR NUMBER ? JM-5*D +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 11 +ARE YOU SURE YOU WISH TO END PROGRAM(Y/N)? Y diff --git a/BP100/INVENT2.dif b/BP100/INVENT2.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/INVENT2.run b/BP100/INVENT2.run new file mode 100644 index 0000000..dabfff5 --- /dev/null +++ b/BP100/INVENT2.run @@ -0,0 +1,181 @@ + INVENTORY CONTROL FOR TRS-80 + BY DR. PETER SHENKIN + ******************************************************* +THIS PROGRAM IS A RELATIVELY COMPLETE INVENTORY CONTROL PROGRAM +THE ONLY REAL LIMITATION OF WHICH IS THAT IT IS IN MEMORY AND +THUS ONLY HANDLES 50 DIFFERENT INVENTORY ITEMS. ACTUALLY +THIS LIMITATION MAY BE RELAXED BY CHANGING THE APPROPRIATE +DIMENSION STATEMENTS IF ENOUGH MEMORY IS AVAILABLE. + THE PROGRAM SUPPORTS LINE PRINTER OUTPUT AND ALLOWS THE +THE INVENTORY FILE TO BE STORED ON EITHER CASSETTE OR DISKETTE. +REPORTS INCLUDE A LIST OF ALL DATA AND AN ACTIVITY REPORT +WHICH OUTLINE PAST ACTIVITY FOR EACH ITEM. AN AVERAGE COST IS +KEPT UPDATED FOR EACH ITEM. + *****************************************************+ + +PRESS ENTER TO CONTINUE? +ARE DISK DRIVES ATTACHED(Y/N)? Y + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 1 +ADDITIONAL INVENTORY ITEM SUBROUTINE + +HAS ANY EXISTING FILE BEEN READ FROM TAPE OR DISKETTE?(Y/N); +? Y +INPUT DATA FOR NEXT ITEM. + +ITEM NUMBER ? A56-C7 +DESCRIPTION( < 20 CHAR) ? MOUSE PAD +VENDOR NUMBER ? JM-5*D +QUANTITY ON HAND ? 125 +LAST ORDER UNIT COST ? 2.50 +SELLING PRICE ? 9.99 +AVERAGE UNIT COST ? 3.33 +REORDER POINT ? 100 +MAXIMUM INVENTORY ? 1000 +# SOLD THIS INV. PERIOD ? 750 +# SOLD LAST INV. PERIOD ? 931 +# SOLD 2 INV. PER. AGO ? 593 +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + +IF OK PRESS 1,OTHERWISE PRESS 0? 1 +DO YOU DESIRE MORE ENTRIES ?(Y/N) +? N + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 7 +PREPARE INVENTORY MASTER DISKETTE +PRESS ENTER WHEN READY? + +THERE ARE 1 ITEMS + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 2 +CHOOSE DESIRED OPTION AND PRESS ENTER +1. COMPLETE INVENTORY LIST +2. INVENTORY LIST BY VENDOR +3. LIST OF ITEMS BELOW REORDER POINT +OPTION # ? 1 +IS PRINTED OUTPUT DESIRED(Y/N)? Y +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 5 +PLACE INVENTORY DATA DISKETTE IN DRIVE. +PRESS ENTER WHEN READY? + + 1 ITEMS TO BE READ + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 2 +CHOOSE DESIRED OPTION AND PRESS ENTER +1. COMPLETE INVENTORY LIST +2. INVENTORY LIST BY VENDOR +3. LIST OF ITEMS BELOW REORDER POINT +OPTION # ? 2 +IS PRINTED OUTPUT DESIRED(Y/N)? Y +DESIRED VENDOR NUMBER ? JM-5*D +ITEM NO. : A56-C7 DESCRIP. :MOUSE PAD +VENDOR NO. : JM-5*D +QUANT. ON HAND: 125 LAST UNIT COST: 2.5 +SELLING PR. : 9.99 AVERAGE COST : 3.33 +REORDER PT.: 100 MAX INV.: 1000 +ORDERS THIS INV. PERIOD : 750 +ORdERS LAST INV. PER: 931 PREV. PER: 593 + + INVENTORY CONTROL + ENTER NUMBER OF DESIRED OPTION. + +1.ADD ITEM TYPES TO INVENTORY FILE(OR START FILE) +2.INVENTORY LIST(ENTIRE OR BY CLASS OR BY VENDOR) +3.PROCESSING CHANGES OF INVENTORY AMOUNTS +4.READ INVENTORY FILE FROM CASSETTE +5.READ INVENTORY FILE IN FROM DISKETTE +6.WRITE INVENTORY FILE ONTO CASSETTE +7.WRITE INVENTORY FILE ONTO DISKETTE +8.UPDATE TO BEGIN NEW INVENTORY PERIOD +9.ACTIVITY REPORT +10.EDITING INVENTORY FILE +11.END THIS PROGRAM + +INPUT OPTION NUMBER & PRESS ENTER? 11 +ARE YOU SURE YOU WISH TO END PROGRAM(Y/N)? Y diff --git a/BP100/INVOICE.80 b/BP100/INVOICE.80 new file mode 100644 index 0000000..c222881 --- /dev/null +++ b/BP100/INVOICE.80 @@ -0,0 +1,70 @@ + PROGRAM INVOICE + + INVOICING PROCEDURE + +EACH INVOICE CAN HAVE AT MOST 10 LINES. INVOICE IS +PRINTED ON SCREEN AND/OR PRINTER WHEN COMPLETE. +AT MOST 50 INVOICES MAY BE PROCESSED IN ONE RUN. +PRESS ENTER TO CONTINUE? +IS PRINTER BEING USED(Y/N)? Y +PREPARE INVOICE IN PRINTER. +PRESS ENTER TO CONTINUE? +ENTER NUMBER OF CUSTOMER TO BE INVOICED(-1 TO END)? 765 +CUSTOMER NAME ? JERRY MOUSE +2ND LINE NAME ? & TOM CAT +STREET ADDRESS? 1234 FUNNY WAY +CITY,STATE,ZIP? FRED,TX,98765 +PRESS 1 TO INVOICE,2 TO ABORT? 1 +INVOICE NUMBER ? AB*76-Q#12 +DATE OF INVOICE IN FORM MM/DD/YY? 12/34/56 +CUSTOMER ORDER NUMBER? P.O. #976-ZX-1 +SHIPPED VIA ? FEDEX/UPS +TERMS ? FOB NET 30 + ********** +LINE 1 ITEM NO.? Q6 + ITEM DESCRIPTION MOUSE PAD +QUANTITY ORDERED,UNIT PRICE ? 3,19.99 +NUMBER OF LINES PRINTED SO FAR = 1 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +Q6 MOUSE PAD 3 19.99 59.97 +ENTER Y IF OK, N IF ERROR? Y +MORE ITEMS ON INVOICE(Y/N)? Y + ********** +LINE 2 ITEM NO.? R2D2 + ITEM DESCRIPTION KITTY LITTER +QUANTITY ORDERED,UNIT PRICE ? 4,5.99 +NUMBER OF LINES PRINTED SO FAR = 2 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +R2D2 KITTY LITTER 4 5.99 23.96 +ENTER Y IF OK, N IF ERROR? Y +MORE ITEMS ON INVOICE(Y/N)? N +TAXABLE(Y/N)? Y +TAX RATE (%) ? 7.89 + + +SHIPPING ? 2.34 +INVOICE NUMBER AB*76-Q#12 DATE :12/34/56 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +Q6 MOUSE PAD 3 19.99 59.97 +R2D2 KITTY LITTER 4 5.99 23.96 +-------------------------------------------------------------- + TOTAL 7 $83.93 + SALES TAX $6.62 + CARFARE $2.34 + PAY THIS AMOUNT $92.89 + +ENTER Y IF OK, N IF ERROR? Y +DO YOU WANT MORE INVOICES(Y/N)? N +PRESS 1 FOR TRANSACTIONS REPORT...ELSE 2? 1 +PREPARE PRINTER FOR TRANSACTIONS FILE. +PRESS ENTER TO CONTINUE? + TRANSACTIONS REPORT + +CUST. NO. DATE INVOICE # TYPE AMOUNT OTHER CH. + 765 12/34/56 AB*76-Q#1 93 0.00 + +EXTENDED PRICE TOTALS: $83.93 +TOTAL SHIPPING: $2.34 +TOTAL SALES TAX: $6.62 +TOTAL OF INVOICE AMOUNTS: $92.89 + diff --git a/BP100/INVOICE.BAS b/BP100/INVOICE.BAS new file mode 100644 index 0000000..7384290 --- /dev/null +++ b/BP100/INVOICE.BAS @@ -0,0 +1,215 @@ +1 REM INVOICE +5 CLS +10 PRINT TAB(10); "PROGRAM INVOICE":PRINT +20 CLEAR 6000 +30 DEFINT C,J,I +40 DEFDBL S,P,A,V,Q +54 DIM F$(20) +55 DIM R$(15) +57 GOSUB 9000 +65 DIM NN$(20),D2$(20),QU(20),P1(20),PE(20),QO(20) +66 DIM D3$(20),D4$(20),D5$(20),D6$(20),D7$(20) +70 DIM H0(50),H1$(50),H2$(50),H3$(50),H4$(50),H5(50),H6(50) +75 DIM H7(50),H8(50),H9(50) +80 FOR I=1 TO 200:NEXT I +1000 REM INVOICING +1005 CLS:PRINT TAB(15); "INVOICING PROCEDURE":PRINT +1010 PRINT"EACH INVOICE CAN HAVE AT MOST 10 LINES. INVOICE IS +1015 PRINT"PRINTED ON SCREEN AND/OR PRINTER WHEN COMPLETE." +1017 PRINT"AT MOST 50 INVOICES MAY BE PROCESSED IN ONE RUN." +1020 GOSUB 10100 +1040 INPUT"IS PRINTER BEING USED(Y/N)";Z2$ +1045 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 1040 +1100 IF Z2$="Y" THEN PRINT"PREPARE INVOICE IN PRINTER.":GOSUB 10100 +1110 CLS +1120 INPUT"ENTER NUMBER OF CUSTOMER TO BE INVOICED(-1 TO END)";C +1125 IF C=-1 THEN GOTO 1800 +1130 INPUT"CUSTOMER NAME ";N$(1) +1135 INPUT"2ND LINE NAME ";N$(2) +1140 INPUT"STREET ADDRESS";N$(3) +1145 INPUT"CITY,STATE,ZIP";N$(4),N$(5),N$(6) +1280 INPUT"PRESS 1 TO INVOICE,2 TO ABORT";Z9 +1285 IF Z9<>1 AND Z9<>2 THEN GOSUB 10000:GOTO 1280 +1290 IF Z9=2 GOTO 1110 +1295 CG=0 ' CG=# PRINTED LINES SO FAR +1300 CLS:J=CR+1 +1305 J1=1 ' NUMBER OF LINES IN INVOICE SO FAR +1307 INPUT"INVOICE NUMBER ";N1$(J) +1310 INPUT"DATE OF INVOICE IN FORM MM/DD/YY";D$(J) +1320 IF LEN(D$(J))<>8 THEN GOSUB 10000:GOTO 1310 +1321 PO$="" +1322 INPUT"CUSTOMER ORDER NUMBER";PO$ +1325 INPUT"SHIPPED VIA ";SV$ +1326 TM$="NET 10 DAYS" +1327 INPUT"TERMS ";TM$ +1330 PRINT TAB(50);"**********":PRINT"LINE";J1;:INPUT"ITEM NO.";NN$(J1) +1340 LINE INPUT " ITEM DESCRIPTION ";XXX$:D2$(J1)=XXX$:CG=CG+1:IF NN$(J1)="EK" THEN NN$(J1)="0":J1=J1+1:GOTO 1330 +1341 GOTO 1350 +1346 CG=CG+1 +1350 REM +1354 INPUT"QUANTITY ORDERED,UNIT PRICE ";QU(J1),P1(J1) +1355 CLS +1360 PRINT"NUMBER OF LINES PRINTED SO FAR = ";CG +1370 PE(J1)=QU(J1)*P1(J1) +1377 J2=J1 +1380 PRINT F$(3):GOSUB 4000 +1390 GOSUB 10300 +1400 IF Z9$="N" THEN PRINT "DO AGAIN":GOSUB 10100:CG=CG-1:GOTO 1330 +1410 INPUT"MORE ITEMS ON INVOICE(Y/N)";Z9$ +1415 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 1410 +1420 IF Z9$="N" THEN GOTO 1450 +1430 IF CG>=10 THEN PRINT"INVOICE FULL. MACHINE TO TOTAL":GOSUB 10100:GOTO 1450 +1440 J1=J1+1: GOTO 1330 +1450 REM INVOICE COMPLETE +1451 CLS:INPUT"TAXABLE(Y/N)";XX$:IF XX$<>"Y" AND XX$<>"N" THEN GOTO 1451 +1452 IF XX$="Y" THEN INPUT"TAX RATE (%) ";TX:TX=TX/100 +1454 PRINT:PRINT:INPUT "SHIPPING ";AF +1455 CLS:PRINT"INVOICE NUMBER ";N1$(J);TAB(40); "DATE :";D$(J) +1460 PRINT F$(3) +1470 TE=0:QU=0:QO=0 +1480 FOR J2=1 TO J1:GOSUB 4000:TE=TE+PE(J2):QU=QU+QU(J2):QO=QO+QO(J2):NEXT J2 +1485 FOR J5=1 TO 62:PRINT"-";:NEXT:PRINT +1490 PRINT USING F$(5);QU,TE +1491 AT=0 +1492 IF XX$="Y" THEN AT=TE*TX +1494 PRINT USING F$(9);AT +1496 PRINT USING F$(8);AF +1497 AQ=TE+AT+AF:SA(1)=AQ +1498 PRINT USING F$(10);AQ +1500 PRINT:GOSUB 10300 +1510 IF Z9$="N" THEN PRINT "OLD INVOICE ELIMINATED":GOTO 1700 +1520 REM COMPLETED INVOICE GOOD +1530 IF Z2$<>"Y" GOTO 1600 +1550 LPRINT TAB(5); CN +1555 LPRINT TAB(5); N$(1) +1560 IF N$(2)<>"" THEN LPRINT TAB(5); N$(2) +1565 LPRINT TAB(5); N$(3) +1570 LPRINT TAB(5); N$(4);",";N$(5);" ";N$(6) +1575 LPRINT:IF N$(2)="" THEN LPRINT" " +1580 LPRINT" ":LPRINT" " +1582 LPRINT USING F$(11);PO$,N1$(J),SV$,STR$(CF),TM$,D$(J):LPRINT" ":LPRINT" " +1583 FOR J2=1 TO J1:GOSUB 4100:NEXT J2 +1584 FOR J2=CG+1 TO 18:LPRINT" ":NEXT +1587 LPRINT TAB(60);" ";:FOR J5=1 TO 12:LPRINT"-";:NEXT:LPRINT" " +1590 LPRINT TAB(38);" ";:LPRINT USING "TOTAL $$#####.##";TE +1594 LPRINT TAB(38);" ";:LPRINT USING "SALES TAX $$#####.##";AT +1596 LPRINT TAB(38);" ";:LPRINT USING "CARFARE $$#####.##";AF +1598 LPRINT TAB(38);" ";:LPRINT USING "PAY THIS AMT. $$#####.##";AQ +1599 FOR J7=1 TO 18:LPRINT" ":NEXT +1660 C7=C7+1:H0(C7)=C:H1$(C7)=D$(1):H2$(C7)=N1$(1):H3$(C7)=T$(1) +1670 H4$(C7)=N2$(1):H5(C7)=SA(1):H6(C7)=SD(1) +1680 H7(C7)=AF:H8(C7)=AT:H9(C7)=TE +1700 REM ZERO ALL INVOICE VARIABLES +1710 FOR J=1 TO 19:NN$(J)="":D2$(J)="":QU(J)=0:P1(J)=0:PE(J)=0:QO(J)=0:D3$(J)="":D4$(J)="":D5$(J)="":D6$(J)="":NEXT J +1720 CLS +1730 INPUT"DO YOU WANT MORE INVOICES(Y/N)";Z9$ +1740 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 1730 +1745 IF C7=50 THEN PRINT"TRANSACTION MATRIX FULL":GOSUB 10100:GOTO 1800 +1750 IF Z9$="Y" THEN GOTO 1100 +1800 CLS +1806 CLS:INPUT"PRESS 1 FOR TRANSACTIONS REPORT...ELSE 2";Z9$ +1807 IF Z9$<>"1"AND Z9$<>"2" THEN GOSUB 10000:GOTO 1806 +1808 IF Z9$="2" GOTO 1900 +1810 IF Z2$="Y" THEN PRINT"PREPARE PRINTER FOR TRANSACTIONS FILE." +1820 GOSUB 10100 +1830 CLS +1835 PRINT" TRANSACTIONS REPORT":PRINT +1836 IF Z2$="Y" THEN LPRINT TAB(20); "TRANSACTIONS REPORT" +1840 PRINT F$(6):IF Z2$="Y" THEN LPRINT F$(6) +1850 FOR J=1 TO C7:PRINT USING F$(7);H0(J),H1$(J),H2$(J),H3$(J),H5(J),H6(J):NEXT J +1860 IF Z2$="Y" THEN FOR J=1 TO C7:LPRINT USING F$(7);H0(J),H1$(J),H2$(J),H3$(J),H5(J),H6(J):NEXT J +1870 T=0:T3=0:T4=0:T5=0 +1872 FOR J=1 TO C7 +1874 T=T+H5(J):T3=T3+H7(J):T4=T4+H8(J):T5=T5+H9(J) +1875 NEXT J +1880 PRINT +1881 PRINT USING "EXTENDED PRICE TOTALS: $$####.##";T5 +1882 PRINT USING "TOTAL SHIPPING: $$####.##";T3 +1883 PRINT USING "TOTAL SALES TAX: $$####.##";T4 +1884 PRINT USING "TOTAL OF INVOICE AMOUNTS: $$####.##";T +1885 IF Z2$="Y" THEN LPRINT" " +1889 IF Z2$<>"Y" GOTO 1900 +1890 LPRINT" " +1891 LPRINT USING "EXTENTED PRICE TOTALS: $$####.##";T5 +1892 LPRINT USING "TOTAL CARFARE: $$####.##";T3 +1893 LPRINT USING "TOTAL SALES TAX: $$####.##";T4 +1894 LPRINT USING "TOTAL OF INVOICE AMOUNTS: $$####.##";T +1896 PRINT:END +4000 REM PRINTING LINE OF INVOICE ON CRT +4010 PRINT USING F$(4);NN$(J2),D2$(J2),QU(J2),P1(J2),PE(J2) +4020 RETURN +4100 REM PRINTING LINE OF INVOICE ON PRINTER +4101 REM LINE BELOW EXECUTED IF QUANTITY NOT AN INTEGER +4102 IF ABS(QU(J2)-INT(QU(J2)))>.01 THEN LPRINT USING F$(14);NN$(J2),QU(J2),D2$(J2),P1(J2),PE(J2) +4104 IF NN$(J2)="0" THEN LPRINT USING F$(15);D2$(J2):GOTO 4120 +4105 IF Z2$="Y" THEN LPRINT USING F$(12);NN$(J2),QU(J2),D2$(J2),P1(J2),PE(J2) +4110 IF D3$(J2)<>"" THEN LPRINT USING F$(13);D3$(J2) +4112 IF D4$(J2)<>"" THEN LPRINT USING F$(13);D4$(J2) +4114 IF D5$(J2)<>"" THEN LPRINT USING F$(13);D5$(J2) +4116 IF D6$(J2)<>"" THEN LPRINT USING F$(13);D6$(J2) +4118 IF D7$(J2)<>"" THEN LPRINT USING F$(13);D7$(J2) +4120 RETURN +6000 REM SBR DISPLAYING DATA FOR 1 CUSTOMER RECORD(NO AR) +6010 CLS +6020 PRINT "CUST NUMBER =";CN;TAB(30);"NAME = ";N$(1) +6030 PRINT"DEPARTMENT: ";N$(2) +6040 PRINT N$(3);" , ";N$(4);",";N$(5);" ";N$(6) +6050 PRINT +6055 L$(1)="YTD SALES:#######.## YTD PAYMENTS:#######.## YTD NO SALES ###" +6060 PRINT USING L$(1);SY,PY,CS +6065 L$(1)="DATE LAST PAYMENT: % % AMT.LAST PAYMENT:#######.##" +6070 PRINT USING L$(1);D1$(2),SL +6075 PRINT"SALESMAN CODE :";CF,:IF TX$="Y" THEN PRINT "TAXABLE" ELSE PRINT "NONTAXABLE" +6077 PRINT"PRICING CODE(1-5):";JK +6080 PRINT"# RECORDS IN FILE :";CR;TAB(32);"# PHYSICAL RECORDS:";CZ +6099 RETURN +6100 REM SBR DISPLAYS DATA FOR CUSTOMER A/R +6110 PRINT F$(1) +6120 FOR J=1 TO CR +6125 PRINT J;":"; +6130 PRINT USING F$(2);N1$(J),D$(J),T$(J),N2$(J),SA(J),SD(J) +6140 IF J/13 = INT(J/13) THEN GOSUB 10100:PRINT F$(1) +6150 NEXT J +6160 RETURN +9000 REM FORMATTING VARIABLES +9010 F$(1)="RF ITEM # DATE TYPE APPLY TO AMOUNT DISCOUNTS " +9020 F$(2)=" % % % % ######## % % ######.## ######.##" +9030 F$(3)="ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR." +9040 F$(4)="% % % % #### ####.## #####.## " +9050 F$(5)=" TOTAL ##### $$#####.##" +9060 F$(6)="CUST. NO. DATE INVOICE # TYPE AMOUNT OTHER CH." +9070 F$(7)=" ##### % % % % ####### ######.## ######.##" +9080 F$(8)=" CARFARE $$#####.##" +9090 F$(9)=" SALES TAX $$#####.##" +9092 F$(10)=" PAY THIS AMOUNT $$#####.##" +9093 F$(11)="% % % % % % % % % % % %" +9094 F$(12)="% %### % %######.## ######.##" +9095 F$(13)=" % %" +9096 F$(14)="% % ###.## % % ######.## ######.##" +9098 F$(15)=" % %" +9099 RETURN +10000 REM INPUT ERROR SBR +10010 PRINT"INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9 +10020 RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9:RETURN +10200 REM Y,N,A SBR +10205 Z9$=" " +10210 INPUT"ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$ +10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205 +10230 RETURN +10300 REM Y,N SBR +10305 Z9$=" " +10310 INPUT"ENTER Y IF OK, N IF ERROR";Z9$ +10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305 +10330 RETURN +10400 REM MORE ENTRY? SBR +10405 Z9$=" " +10410 INPUT"DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$ +10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405 +10430 RETURN +10500 REM ONLY Y/N SBR +10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000 +10520 RETURN +11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$ +11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010 +11020 RETURN diff --git a/BP100/INVOICE.INP b/BP100/INVOICE.INP new file mode 100644 index 0000000..bb1a533 --- /dev/null +++ b/BP100/INVOICE.INP @@ -0,0 +1,31 @@ + +Y + +765 +JERRY MOUSE +& TOM CAT +1234 FUNNY WAY +FRED,TX,98765 +1 +AB*76-Q#12 +12/34/56 +P.O. #976-ZX-1 +FEDEX/UPS +FOB NET 30 +Q6 +MOUSE PAD +3,19.99 +Y +Y +R2D2 +KITTY LITTER +4,5.99 +Y +N +Y +7.89 +2.34 +Y +N +1 + diff --git a/BP100/INVOICE.OUT b/BP100/INVOICE.OUT new file mode 100644 index 0000000..b7348b7 --- /dev/null +++ b/BP100/INVOICE.OUT @@ -0,0 +1,70 @@ + PROGRAM INVOICE + + INVOICING PROCEDURE + +EACH INVOICE CAN HAVE AT MOST 10 LINES. INVOICE IS +PRINTED ON SCREEN AND/OR PRINTER WHEN COMPLETE. +AT MOST 50 INVOICES MAY BE PROCESSED IN ONE RUN. +PRESS ENTER TO CONTINUE? +IS PRINTER BEING USED(Y/N)? Y +PREPARE INVOICE IN PRINTER. +PRESS ENTER TO CONTINUE? +ENTER NUMBER OF CUSTOMER TO BE INVOICED(-1 TO END)? 765 +CUSTOMER NAME ? JERRY MOUSE +2ND LINE NAME ? & TOM CAT +STREET ADDRESS? 1234 FUNNY WAY +CITY,STATE,ZIP? FRED,TX,98765 +PRESS 1 TO INVOICE,2 TO ABORT? 1 +INVOICE NUMBER ? AB*76-Q#12 +DATE OF INVOICE IN FORM MM/DD/YY? 12/34/56 +CUSTOMER ORDER NUMBER? P.O. #976-ZX-1 +SHIPPED VIA ? FEDEX/UPS +TERMS ? FOB NET 30 + ********** +LINE 1 ITEM NO.? Q6 + ITEM DESCRIPTION MOUSE PAD +QUANTITY ORDERED,UNIT PRICE ? 3,19.99 +NUMBER OF LINES PRINTED SO FAR = 1 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +Q6 MOUSE PAD 3 19.99 59.97 +ENTER Y IF OK, N IF ERROR? Y +MORE ITEMS ON INVOICE(Y/N)? Y + ********** +LINE 2 ITEM NO.? R2D2 + ITEM DESCRIPTION KITTY LITTER +QUANTITY ORDERED,UNIT PRICE ? 4,5.99 +NUMBER OF LINES PRINTED SO FAR = 2 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +R2D2 KITTY LITTER 4 5.99 23.96 +ENTER Y IF OK, N IF ERROR? Y +MORE ITEMS ON INVOICE(Y/N)? N +TAXABLE(Y/N)? Y +TAX RATE (%) ? 7.89 + + +SHIPPING ? 2.34 +INVOICE NUMBER AB*76-Q#12 DATE :12/34/56 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +Q6 MOUSE PAD 3 19.99 59.97 +R2D2 KITTY LITTER 4 5.99 23.96 +-------------------------------------------------------------- + TOTAL 7 $83.93 + SALES TAX $6.62 + CARFARE $2.34 + PAY THIS AMOUNT $92.89 + +ENTER Y IF OK, N IF ERROR? Y +DO YOU WANT MORE INVOICES(Y/N)? N +PRESS 1 FOR TRANSACTIONS REPORT...ELSE 2? 1 +PREPARE PRINTER FOR TRANSACTIONS FILE. +PRESS ENTER TO CONTINUE? + TRANSACTIONS REPORT + +CUST. NO. DATE INVOICE # TYPE AMOUNT OTHER CH. + 765 12/34/56 AB*76-Q#1 93 0.00 + +EXTENDED PRICE TOTALS: $83.93 +TOTAL SHIPPING: $2.34 +TOTAL SALES TAX: $6.62 +TOTAL OF INVOICE AMOUNTS: $92.89 + diff --git a/BP100/INVOICE.dif b/BP100/INVOICE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/INVOICE.run b/BP100/INVOICE.run new file mode 100644 index 0000000..c222881 --- /dev/null +++ b/BP100/INVOICE.run @@ -0,0 +1,70 @@ + PROGRAM INVOICE + + INVOICING PROCEDURE + +EACH INVOICE CAN HAVE AT MOST 10 LINES. INVOICE IS +PRINTED ON SCREEN AND/OR PRINTER WHEN COMPLETE. +AT MOST 50 INVOICES MAY BE PROCESSED IN ONE RUN. +PRESS ENTER TO CONTINUE? +IS PRINTER BEING USED(Y/N)? Y +PREPARE INVOICE IN PRINTER. +PRESS ENTER TO CONTINUE? +ENTER NUMBER OF CUSTOMER TO BE INVOICED(-1 TO END)? 765 +CUSTOMER NAME ? JERRY MOUSE +2ND LINE NAME ? & TOM CAT +STREET ADDRESS? 1234 FUNNY WAY +CITY,STATE,ZIP? FRED,TX,98765 +PRESS 1 TO INVOICE,2 TO ABORT? 1 +INVOICE NUMBER ? AB*76-Q#12 +DATE OF INVOICE IN FORM MM/DD/YY? 12/34/56 +CUSTOMER ORDER NUMBER? P.O. #976-ZX-1 +SHIPPED VIA ? FEDEX/UPS +TERMS ? FOB NET 30 + ********** +LINE 1 ITEM NO.? Q6 + ITEM DESCRIPTION MOUSE PAD +QUANTITY ORDERED,UNIT PRICE ? 3,19.99 +NUMBER OF LINES PRINTED SO FAR = 1 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +Q6 MOUSE PAD 3 19.99 59.97 +ENTER Y IF OK, N IF ERROR? Y +MORE ITEMS ON INVOICE(Y/N)? Y + ********** +LINE 2 ITEM NO.? R2D2 + ITEM DESCRIPTION KITTY LITTER +QUANTITY ORDERED,UNIT PRICE ? 4,5.99 +NUMBER OF LINES PRINTED SO FAR = 2 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +R2D2 KITTY LITTER 4 5.99 23.96 +ENTER Y IF OK, N IF ERROR? Y +MORE ITEMS ON INVOICE(Y/N)? N +TAXABLE(Y/N)? Y +TAX RATE (%) ? 7.89 + + +SHIPPING ? 2.34 +INVOICE NUMBER AB*76-Q#12 DATE :12/34/56 +ITEM NO. DESCRIPTION QUANT. UNIT PR. EXTENDED PR. +Q6 MOUSE PAD 3 19.99 59.97 +R2D2 KITTY LITTER 4 5.99 23.96 +-------------------------------------------------------------- + TOTAL 7 $83.93 + SALES TAX $6.62 + CARFARE $2.34 + PAY THIS AMOUNT $92.89 + +ENTER Y IF OK, N IF ERROR? Y +DO YOU WANT MORE INVOICES(Y/N)? N +PRESS 1 FOR TRANSACTIONS REPORT...ELSE 2? 1 +PREPARE PRINTER FOR TRANSACTIONS FILE. +PRESS ENTER TO CONTINUE? + TRANSACTIONS REPORT + +CUST. NO. DATE INVOICE # TYPE AMOUNT OTHER CH. + 765 12/34/56 AB*76-Q#1 93 0.00 + +EXTENDED PRICE TOTALS: $83.93 +TOTAL SHIPPING: $2.34 +TOTAL SALES TAX: $6.62 +TOTAL OF INVOICE AMOUNTS: $92.89 + diff --git a/BP100/LABEL1.80 b/BP100/LABEL1.80 new file mode 100644 index 0000000..f53fd7f --- /dev/null +++ b/BP100/LABEL1.80 @@ -0,0 +1,23 @@ + SHIPPING LABEL MAKER + +THIS SIMPLE PROGRAM WILL PRODUCE SHIPPING LABELS FOR AN ORDER +CONSISTING OF MANY CARTONS. THE TOP LINE OF EACH LABEL HAS +WRITTEN ON IT , E.G. 2 OF 3 P/O #45RT6, 3 OF 3 P/O #45RT6, ETC +P/O # IS PURCHASE ORDER NUMBER. STANDARD 1 INCH LABELS ARE +USED. + +PRESS ENTER TO BEGIN? +HOW MANY LABELS DO YOU NEED ? 2 +ENTER PURCHASE ORDER NUMBER 9876 +INPUT NAME TOM & JERRY +INPUT COMPANY(ENTER IF NONE)WARNER BROTHERS +INPUT STREET ADDRESS 12345 FUNNY LANE +INPUT CITY,STATE ZIP AUSTIN, TX 45678 + +PRESS ENTER WHEN PRINTER IS READY? +DO YOU WANT A MASK(Y/N)? Y + +PRESS ENTER WHEN PRINTER IS READY? +DO YOU WANT A MASK(Y/N)? N + +PRESS ENTER FOR MORE LABELS? -1 diff --git a/BP100/LABEL1.BAS b/BP100/LABEL1.BAS new file mode 100644 index 0000000..46050d9 --- /dev/null +++ b/BP100/LABEL1.BAS @@ -0,0 +1,32 @@ +1 REM LABEL1 +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"SHIPPING LABEL MAKER":PRINT +20 PRINT"THIS SIMPLE PROGRAM WILL PRODUCE SHIPPING LABELS FOR AN ORDER +25 PRINT"CONSISTING OF MANY CARTONS. THE TOP LINE OF EACH LABEL HAS +30 PRINT"WRITTEN ON IT , E.G. 2 OF 3 P/O #45RT6, 3 OF 3 P/O #45RT6, ETC +35 PRINT"P/O # IS PURCHASE ORDER NUMBER. STANDARD 1 INCH LABELS ARE +40 PRINT"USED. +90 PRINT:INPUT "PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT "HOW MANY LABELS DO YOU NEED ";A +120 LINE INPUT "ENTER PURCHASE ORDER NUMBER ";P$ +130 LINE INPUT "INPUT NAME ";N$ +140 LINE INPUT "INPUT COMPANY(ENTER IF NONE)";CMP$ +150 LINE INPUT "INPUT STREET ADDRESS ";A$ +160 LINE INPUT "INPUT CITY,STATE ZIP ";C$ +190 PRINT +200 INPUT "PRESS ENTER WHEN PRINTER IS READY";Z9$ +210 INPUT "DO YOU WANT A MASK(Y/N)";Z9$ +220 IF Z9$="Y" THEN FOR L=1 TO 6:LPRINT STRING$(30,"#"):NEXT:GOTO 190 +230 FOR L=1 TO A +240 LPRINT L;"OF";A;"P/O #";P$ +250 LPRINT N$ +260 IF CMP$<>"" THEN LPRINT CMP$ +270 LPRINT A$ +280 LPRINT C$ +290 LPRINT" ":IF CMP$="" THEN LPRINT " " +300 NEXT L +400 PRINT +410 INPUT "PRESS ENTER FOR MORE LABELS";Z9$ +415 IF Z9$ = "-1" THEN END +420 GOTO 100 diff --git a/BP100/LABEL1.INP b/BP100/LABEL1.INP new file mode 100644 index 0000000..54144fe --- /dev/null +++ b/BP100/LABEL1.INP @@ -0,0 +1,12 @@ + +2 +9876 +TOM & JERRY +WARNER BROTHERS +12345 FUNNY LANE +AUSTIN, TX 45678 + +Y + +N +-1 diff --git a/BP100/LABEL1.OUT b/BP100/LABEL1.OUT new file mode 100644 index 0000000..acb0589 --- /dev/null +++ b/BP100/LABEL1.OUT @@ -0,0 +1,23 @@ + SHIPPING LABEL MAKER + +THIS SIMPLE PROGRAM WILL PRODUCE SHIPPING LABELS FOR AN ORDER +CONSISTING OF MANY CARTONS. THE TOP LINE OF EACH LABEL HAS +WRITTEN ON IT , E.G. 2 OF 3 P/O #45RT6, 3 OF 3 P/O #45RT6, ETC +P/O # IS PURCHASE ORDER NUMBER. STANDARD 1 INCH LABELS ARE +USED. + +PRESS ENTER TO BEGIN? +HOW MANY LABELS DO YOU NEED ? 2 +ENTER PURCHASE ORDER NUMBER 9876 +INPUT NAME TOM & JERRY +INPUT COMPANY(ENTER IF NONE)WARNER BROTHERS +INPUT STREET ADDRESS 12345 FUNNY LANE +INPUT CITY,STATE ZIP AUSTIN, TX 45678 + +PRESS ENTER WHEN PRINTER IS READY? +DO YOU WANT A MASK(Y/N)? Y + +PRESS ENTER WHEN PRINTER IS READY? +DO YOU WANT A MASK(Y/N)? N + +PRESS ENTER FOR MORE LABELS? -1 diff --git a/BP100/LABEL1.dif b/BP100/LABEL1.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/LABEL1.run b/BP100/LABEL1.run new file mode 100644 index 0000000..f53fd7f --- /dev/null +++ b/BP100/LABEL1.run @@ -0,0 +1,23 @@ + SHIPPING LABEL MAKER + +THIS SIMPLE PROGRAM WILL PRODUCE SHIPPING LABELS FOR AN ORDER +CONSISTING OF MANY CARTONS. THE TOP LINE OF EACH LABEL HAS +WRITTEN ON IT , E.G. 2 OF 3 P/O #45RT6, 3 OF 3 P/O #45RT6, ETC +P/O # IS PURCHASE ORDER NUMBER. STANDARD 1 INCH LABELS ARE +USED. + +PRESS ENTER TO BEGIN? +HOW MANY LABELS DO YOU NEED ? 2 +ENTER PURCHASE ORDER NUMBER 9876 +INPUT NAME TOM & JERRY +INPUT COMPANY(ENTER IF NONE)WARNER BROTHERS +INPUT STREET ADDRESS 12345 FUNNY LANE +INPUT CITY,STATE ZIP AUSTIN, TX 45678 + +PRESS ENTER WHEN PRINTER IS READY? +DO YOU WANT A MASK(Y/N)? Y + +PRESS ENTER WHEN PRINTER IS READY? +DO YOU WANT A MASK(Y/N)? N + +PRESS ENTER FOR MORE LABELS? -1 diff --git a/BP100/LABEL2.80 b/BP100/LABEL2.80 new file mode 100644 index 0000000..d0d42e8 --- /dev/null +++ b/BP100/LABEL2.80 @@ -0,0 +1,23 @@ +REPETITIVE LABEL MAKER + +THIS PROGRAM WILL PERMIT THE USER TO MAKE ANY NUMBER OF +IDENTICAL PRINTED LABELS ON STANDARD 1 INCH LABEL FORMS. +THERE IS PROVISION FOR UP TO 5 PRINTED LINES, THOUGH +FROM 1 TO 5 LINES MAY BE PRINTED + +PRESS ENTER TO BEGIN? +HOW MANY LABELS ARE DESIRED? 2 + +FIRST LABEL LINE JERRY MOUSE +SECOND LABEL LINE C/O TOM CAT +THIRD LABEL LINE 98765 CARTOON LANE +FOURTH LABEL LINE SOMEWHERE, OVERTHER 12345 +FIFTH LABEL LINE U. S. A. + +PRESS ENTER WHEN PRINTER READY? + +DO YOU WANT A PRINT MASK(Y/N)? Y + +DO YOU WANT A PRINT MASK(Y/N)? N + +PRESS ENTER TO INPUT DATA FOR MORE LABELS? -1 diff --git a/BP100/LABEL2.BAS b/BP100/LABEL2.BAS new file mode 100644 index 0000000..cd3c70a --- /dev/null +++ b/BP100/LABEL2.BAS @@ -0,0 +1,29 @@ +1 REM LABEL2 +5 CLEAR 1000 +10 CLS:PRINT"REPETITIVE LABEL MAKER":PRINT +20 PRINT"THIS PROGRAM WILL PERMIT THE USER TO MAKE ANY NUMBER OF +25 PRINT"IDENTICAL PRINTED LABELS ON STANDARD 1 INCH LABEL FORMS. +30 PRINT"THERE IS PROVISION FOR UP TO 5 PRINTED LINES, THOUGH +35 PRINT"FROM 1 TO 5 LINES MAY BE PRINTED" +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS:INPUT"HOW MANY LABELS ARE DESIRED";A +110 IF A=0 THEN GOTO 100 +120 PRINT +130 LINE INPUT "FIRST LABEL LINE ";Z$:N$(1)=Z$ +140 LINE INPUT "SECOND LABEL LINE ";Z$:N$(2)=Z$ +150 LINE INPUT "THIRD LABEL LINE ";Z$:N$(3)=Z$ +160 LINE INPUT "FOURTH LABEL LINE ";Z$:N$(4)=Z$ +170 LINE INPUT "FIFTH LABEL LINE ";Z$:N$(5)=Z$ +200 PRINT:INPUT"PRESS ENTER WHEN PRINTER READY";Z9$:PRINT +210 INPUT"DO YOU WANT A PRINT MASK(Y/N)";Z$ +220 IF Z$="Y" THEN FOR L=1 TO 6:LPRINT STRING$(30,"#"):NEXT:PRINT:GOTO 210 +230 FOR L=1 TO A +240 FOR K=1 TO 5 +250 IF N$(K)<>"" THEN LPRINT N$(K) :ELSE LPRINT " " +260 NEXT K +270 LPRINT " " +280 NEXT L +300 PRINT +310 INPUT"PRESS ENTER TO INPUT DATA FOR MORE LABELS";Z9$ +315 IF Z9$ = "-1" THEN END +320 GOTO 100 diff --git a/BP100/LABEL2.INP b/BP100/LABEL2.INP new file mode 100644 index 0000000..a9ff4fe --- /dev/null +++ b/BP100/LABEL2.INP @@ -0,0 +1,11 @@ + +2 +JERRY MOUSE +C/O TOM CAT +98765 CARTOON LANE +SOMEWHERE, OVERTHER 12345 +U. S. A. + +Y +N +-1 diff --git a/BP100/LABEL2.OUT b/BP100/LABEL2.OUT new file mode 100644 index 0000000..8146e88 --- /dev/null +++ b/BP100/LABEL2.OUT @@ -0,0 +1,23 @@ +REPETITIVE LABEL MAKER + +THIS PROGRAM WILL PERMIT THE USER TO MAKE ANY NUMBER OF +IDENTICAL PRINTED LABELS ON STANDARD 1 INCH LABEL FORMS. +THERE IS PROVISION FOR UP TO 5 PRINTED LINES, THOUGH +FROM 1 TO 5 LINES MAY BE PRINTED + +PRESS ENTER TO BEGIN? +HOW MANY LABELS ARE DESIRED? 2 + +FIRST LABEL LINE JERRY MOUSE +SECOND LABEL LINE C/O TOM CAT +THIRD LABEL LINE 98765 CARTOON LANE +FOURTH LABEL LINE SOMEWHERE, OVERTHER 12345 +FIFTH LABEL LINE U. S. A. + +PRESS ENTER WHEN PRINTER READY? + +DO YOU WANT A PRINT MASK(Y/N)? Y + +DO YOU WANT A PRINT MASK(Y/N)? N + +PRESS ENTER TO INPUT DATA FOR MORE LABELS? -1 diff --git a/BP100/LABEL2.dif b/BP100/LABEL2.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/LABEL2.run b/BP100/LABEL2.run new file mode 100644 index 0000000..d0d42e8 --- /dev/null +++ b/BP100/LABEL2.run @@ -0,0 +1,23 @@ +REPETITIVE LABEL MAKER + +THIS PROGRAM WILL PERMIT THE USER TO MAKE ANY NUMBER OF +IDENTICAL PRINTED LABELS ON STANDARD 1 INCH LABEL FORMS. +THERE IS PROVISION FOR UP TO 5 PRINTED LINES, THOUGH +FROM 1 TO 5 LINES MAY BE PRINTED + +PRESS ENTER TO BEGIN? +HOW MANY LABELS ARE DESIRED? 2 + +FIRST LABEL LINE JERRY MOUSE +SECOND LABEL LINE C/O TOM CAT +THIRD LABEL LINE 98765 CARTOON LANE +FOURTH LABEL LINE SOMEWHERE, OVERTHER 12345 +FIFTH LABEL LINE U. S. A. + +PRESS ENTER WHEN PRINTER READY? + +DO YOU WANT A PRINT MASK(Y/N)? Y + +DO YOU WANT A PRINT MASK(Y/N)? N + +PRESS ENTER TO INPUT DATA FOR MORE LABELS? -1 diff --git a/BP100/LEASEINT.80 b/BP100/LEASEINT.80 new file mode 100644 index 0000000..66534f4 --- /dev/null +++ b/BP100/LEASEINT.80 @@ -0,0 +1,62 @@ + LEASE INTEREST RATE +THERE ARE MANY TYPES OF EQUIPMENT LEASES. ONE TYPE OF AUTO +LEASE IS CALLED AN OPEN END LEASE. THE WAY IT WORKS IS THAT +THE LESSEE PAYS THE LEASING COMPANY A DOWN PAYMENT AND A FIXED +AMOUNT EACH MONTH FOR A GIVEN NUMBER OF MONTHS. AT THE END +OF THE LEASE PERIOD THE LESSEE MUST PAY THE LEASING COMPANY A +PRE-AGREED AMOUNT (BUY-BACK AMOUNT). THE LESSEE THEN OWNS THE +CAR. THERE ARE SEVERAL ADVANTAGES TO LEASING. IF THE INITIAL +DOWN PAYMENT IS LOW AND PAYMENTS ARE LESS PER MONTH THAN ON A +STRAIGHT LOAN THEN THE LESSEE PAYS LESS MONEY EARLY THAN +ON THE LOAN. THE BALLOON PAYMENT MAKES UP FOR THIS LATER. +THE PRESENT PROGRAM COMPUTES AN EFFECTIVE INTEREST RATE ON THE +LEASE GIVEN THE PURCHASE PRICE OF THE CAR, THE DOWN PAYMENT +THE MONTHLY PAYMENT, AND THE BUY-BACK AMOUNT. + +PRESS ENTER TO BEGIN ? +IT IS ASSUMED THAT THE BUY-BACK OCCURS ONE MONTH AFTER THE +LAST PAYMENT. IF THE LAST PAYMENT AND THE BUY-BACK OCCUR AT +THE SAME TIME THEN DECREASE THE NUMBER OF PAYMENTS BY 1 AND +INCREASE THE BUY-BACK BY THE AMOUNT OF 1 PAYMENT + + IN ADDITION, THE FIRST PAYMENT MAY BE AT THE END OF THE +1ST MONTH, 2ND MONTH, ETC. + +INPUT CASH COST OF ITEM ? 10000 +INPUT DOWN PAYMENT ? 2000 +INPUT MONTHLY PAYMENT ? 300 +INPUT NUMBER OF MONTHLY PAYMENTS ? 50 +INPUT MONTH OF 1ST PAYMENT ? 1 +INPUT BUY-BACK AMOUNT ? 6000 + + + +COMPUTING INTEREST RATE +PASS 0 CURRENT MONTHLY RATE = 0 % +PASS 1 CURRENT MONTHLY RATE = 10 % +PASS 2 CURRENT MONTHLY RATE = 1 % +PASS 3 CURRENT MONTHLY RATE = 2 % +PASS 4 CURRENT MONTHLY RATE = 3 % +PASS 5 CURRENT MONTHLY RATE = 4 % +PASS 6 CURRENT MONTHLY RATE = 3.1 % +PASS 7 CURRENT MONTHLY RATE = 3.2 % +PASS 8 CURRENT MONTHLY RATE = 3.3 % +PASS 9 CURRENT MONTHLY RATE = 3.4 % +PASS 10 CURRENT MONTHLY RATE = 3.5 % +PASS 11 CURRENT MONTHLY RATE = 3.6 % +PASS 12 CURRENT MONTHLY RATE = 3.51 % +PASS 13 CURRENT MONTHLY RATE = 3.52 % +PASS 14 CURRENT MONTHLY RATE = 3.53 % +PASS 15 CURRENT MONTHLY RATE = 3.54 % +PASS 16 CURRENT MONTHLY RATE = 3.55 % +PASS 17 CURRENT MONTHLY RATE = 3.541 % +PASS 18 CURRENT MONTHLY RATE = 3.542 % +MONTHLY INTEREST RATE = 3.542 % +ANNUAL INTEREST RATE(EFF) = 51.8443 % +ANNUAL INTEREST RATE(SIMP) = 42.504 % + + INTEREST RATE(SIMP) COMPUTED BY MULTIPLYING + MONTHLY INTEREST RATE BY 12 WHILE INTEREST + RATE(SIMP) IS A COMPOUNDED MONTHLY RATE + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/LEASEINT.BAS b/BP100/LEASEINT.BAS new file mode 100644 index 0000000..a035844 --- /dev/null +++ b/BP100/LEASEINT.BAS @@ -0,0 +1,53 @@ +5 CLS +990 PRINT" LEASE INTEREST RATE" +1000 PRINT"THERE ARE MANY TYPES OF EQUIPMENT LEASES. ONE TYPE OF AUTO +1010 PRINT"LEASE IS CALLED AN OPEN END LEASE. THE WAY IT WORKS IS THAT +1020 PRINT"THE LESSEE PAYS THE LEASING COMPANY A DOWN PAYMENT AND A FIXED +1030 PRINT"AMOUNT EACH MONTH FOR A GIVEN NUMBER OF MONTHS. AT THE END +1040 PRINT"OF THE LEASE PERIOD THE LESSEE MUST PAY THE LEASING COMPANY A +1050 PRINT"PRE-AGREED AMOUNT (BUY-BACK AMOUNT). THE LESSEE THEN OWNS THE +1060 PRINT"CAR. THERE ARE SEVERAL ADVANTAGES TO LEASING. IF THE INITIAL +1070 PRINT"DOWN PAYMENT IS LOW AND PAYMENTS ARE LESS PER MONTH THAN ON A +1080 PRINT"STRAIGHT LOAN THEN THE LESSEE PAYS LESS MONEY EARLY THAN +1090 PRINT"ON THE LOAN. THE BALLOON PAYMENT MAKES UP FOR THIS LATER. +1100 PRINT"THE PRESENT PROGRAM COMPUTES AN EFFECTIVE INTEREST RATE ON THE +1110 PRINT"LEASE GIVEN THE PURCHASE PRICE OF THE CAR, THE DOWN PAYMENT +1120 PRINT"THE MONTHLY PAYMENT, AND THE BUY-BACK AMOUNT. +1130 PRINT:INPUT"PRESS ENTER TO BEGIN ";Z9$ +1200 CLS +1202 PRINT"IT IS ASSUMED THAT THE BUY-BACK OCCURS ONE MONTH AFTER THE +1204 PRINT"LAST PAYMENT. IF THE LAST PAYMENT AND THE BUY-BACK OCCUR AT +1206 PRINT"THE SAME TIME THEN DECREASE THE NUMBER OF PAYMENTS BY 1 AND +1207 PRINT"INCREASE THE BUY-BACK BY THE AMOUNT OF 1 PAYMENT +1208 PRINT:PRINT" IN ADDITION, THE FIRST PAYMENT MAY BE AT THE END OF THE +1210 PRINT"1ST MONTH, 2ND MONTH, ETC. +1211 CLEAR 300:DIM A(400) +1213 PRINT +1215 INPUT"INPUT CASH COST OF ITEM ";CASH +1220 INPUT"INPUT DOWN PAYMENT ";A(0) +1230 INPUT"INPUT MONTHLY PAYMENT ";PAYMENT +1240 INPUT"INPUT NUMBER OF MONTHLY PAYMENTS ";N +1250 INPUT"INPUT MONTH OF 1ST PAYMENT ";FIRST +1260 INPUT"INPUT BUY-BACK AMOUNT ";BUYBACK +1300 CLS: PRINT:PRINT:PRINT +1310 PRINT"COMPUTING INTEREST RATE " +1320 R=0:JUMP=.1 +1330 P=0 +1335 PRINT @ 1,"PASS"; LZ;" ";"CURRENT MONTHLY RATE =";100*R;"%":LZ=LZ+1 +1340 P=-CASH +1350 P=P+A(0) +1360 FOR K=FIRST TO FIRST+N-1:P=P+PAYMENT/(1+R)[K:NEXT K +1370 P=P+BUYBACK/(1+R)[(FIRST+N) +1380 IF ABS(P)<.5 THEN GOTO 1500 +1390 IF P>0 THEN R=R+JUMP:GOTO 1330 +1400 R=R-JUMP:JUMP=JUMP/10:R=R+JUMP:GOTO 1330 +1500 REM PRINTOUT ROUTINE +1510 CLS +1515 PRINT"MONTHLY INTEREST RATE = ";100*R;"%" +1520 RA=(1+R)[12-1 +1530 PRINT"ANNUAL INTEREST RATE(EFF) = ";100*RA;"%" +1540 PRINT"ANNUAL INTEREST RATE(SIMP) = ";100*R*12;"%" +1545 PRINT:PRINT TAB(10); "INTEREST RATE(SIMP) COMPUTED BY MULTIPLYING":PRINT TAB(10); "MONTHLY INTEREST RATE BY 12 WHILE INTEREST":PRINT TAB(10); "RATE(SIMP) IS A COMPOUNDED MONTHLY RATE" +1550 PRINT:INPUT"PRESS ENTER FOR MORE COMPUTATIONS";Z9$ +1555 IF Z9$ = "-1" THEN END +1560 CLS:GOTO 1211 diff --git a/BP100/LEASEINT.INP b/BP100/LEASEINT.INP new file mode 100644 index 0000000..916c0bd --- /dev/null +++ b/BP100/LEASEINT.INP @@ -0,0 +1,8 @@ + +10000 +2000 +300 +50 +1 +6000 +-1 diff --git a/BP100/LEASEINT.OUT b/BP100/LEASEINT.OUT new file mode 100644 index 0000000..31ae15d --- /dev/null +++ b/BP100/LEASEINT.OUT @@ -0,0 +1,62 @@ + LEASE INTEREST RATE +THERE ARE MANY TYPES OF EQUIPMENT LEASES. ONE TYPE OF AUTO +LEASE IS CALLED AN OPEN END LEASE. THE WAY IT WORKS IS THAT +THE LESSEE PAYS THE LEASING COMPANY A DOWN PAYMENT AND A FIXED +AMOUNT EACH MONTH FOR A GIVEN NUMBER OF MONTHS. AT THE END +OF THE LEASE PERIOD THE LESSEE MUST PAY THE LEASING COMPANY A +PRE-AGREED AMOUNT (BUY-BACK AMOUNT). THE LESSEE THEN OWNS THE +CAR. THERE ARE SEVERAL ADVANTAGES TO LEASING. IF THE INITIAL +DOWN PAYMENT IS LOW AND PAYMENTS ARE LESS PER MONTH THAN ON A +STRAIGHT LOAN THEN THE LESSEE PAYS LESS MONEY EARLY THAN +ON THE LOAN. THE BALLOON PAYMENT MAKES UP FOR THIS LATER. +THE PRESENT PROGRAM COMPUTES AN EFFECTIVE INTEREST RATE ON THE +LEASE GIVEN THE PURCHASE PRICE OF THE CAR, THE DOWN PAYMENT +THE MONTHLY PAYMENT, AND THE BUY-BACK AMOUNT. + +PRESS ENTER TO BEGIN ? +IT IS ASSUMED THAT THE BUY-BACK OCCURS ONE MONTH AFTER THE +LAST PAYMENT. IF THE LAST PAYMENT AND THE BUY-BACK OCCUR AT +THE SAME TIME THEN DECREASE THE NUMBER OF PAYMENTS BY 1 AND +INCREASE THE BUY-BACK BY THE AMOUNT OF 1 PAYMENT + + IN ADDITION, THE FIRST PAYMENT MAY BE AT THE END OF THE +1ST MONTH, 2ND MONTH, ETC. + +INPUT CASH COST OF ITEM ? 10000 +INPUT DOWN PAYMENT ? 2000 +INPUT MONTHLY PAYMENT ? 300 +INPUT NUMBER OF MONTHLY PAYMENTS ? 50 +INPUT MONTH OF 1ST PAYMENT ? 1 +INPUT BUY-BACK AMOUNT ? 6000 + + + +COMPUTING INTEREST RATE +PASS 0 CURRENT MONTHLY RATE = 0 % +PASS 1 CURRENT MONTHLY RATE = 10 % +PASS 2 CURRENT MONTHLY RATE = 1 % +PASS 3 CURRENT MONTHLY RATE = 2 % +PASS 4 CURRENT MONTHLY RATE = 3 % +PASS 5 CURRENT MONTHLY RATE = 4 % +PASS 6 CURRENT MONTHLY RATE = 3.1 % +PASS 7 CURRENT MONTHLY RATE = 3.2 % +PASS 8 CURRENT MONTHLY RATE = 3.3 % +PASS 9 CURRENT MONTHLY RATE = 3.4 % +PASS 10 CURRENT MONTHLY RATE = 3.5 % +PASS 11 CURRENT MONTHLY RATE = 3.6 % +PASS 12 CURRENT MONTHLY RATE = 3.51 % +PASS 13 CURRENT MONTHLY RATE = 3.52 % +PASS 14 CURRENT MONTHLY RATE = 3.53 % +PASS 15 CURRENT MONTHLY RATE = 3.54 % +PASS 16 CURRENT MONTHLY RATE = 3.55 % +PASS 17 CURRENT MONTHLY RATE = 3.541 % +PASS 18 CURRENT MONTHLY RATE = 3.542 % +MONTHLY INTEREST RATE = 3.542 % +ANNUAL INTEREST RATE(EFF) = 51.8443 % +ANNUAL INTEREST RATE(SIMP) = 42.504 % + + INTEREST RATE(SIMP) COMPUTED BY MULTIPLYING + MONTHLY INTEREST RATE BY 12 WHILE INTEREST + RATE(SIMP) IS A COMPOUNDED MONTHLY RATE + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/LEASEINT.dif b/BP100/LEASEINT.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/LEASEINT.run b/BP100/LEASEINT.run new file mode 100644 index 0000000..66534f4 --- /dev/null +++ b/BP100/LEASEINT.run @@ -0,0 +1,62 @@ + LEASE INTEREST RATE +THERE ARE MANY TYPES OF EQUIPMENT LEASES. ONE TYPE OF AUTO +LEASE IS CALLED AN OPEN END LEASE. THE WAY IT WORKS IS THAT +THE LESSEE PAYS THE LEASING COMPANY A DOWN PAYMENT AND A FIXED +AMOUNT EACH MONTH FOR A GIVEN NUMBER OF MONTHS. AT THE END +OF THE LEASE PERIOD THE LESSEE MUST PAY THE LEASING COMPANY A +PRE-AGREED AMOUNT (BUY-BACK AMOUNT). THE LESSEE THEN OWNS THE +CAR. THERE ARE SEVERAL ADVANTAGES TO LEASING. IF THE INITIAL +DOWN PAYMENT IS LOW AND PAYMENTS ARE LESS PER MONTH THAN ON A +STRAIGHT LOAN THEN THE LESSEE PAYS LESS MONEY EARLY THAN +ON THE LOAN. THE BALLOON PAYMENT MAKES UP FOR THIS LATER. +THE PRESENT PROGRAM COMPUTES AN EFFECTIVE INTEREST RATE ON THE +LEASE GIVEN THE PURCHASE PRICE OF THE CAR, THE DOWN PAYMENT +THE MONTHLY PAYMENT, AND THE BUY-BACK AMOUNT. + +PRESS ENTER TO BEGIN ? +IT IS ASSUMED THAT THE BUY-BACK OCCURS ONE MONTH AFTER THE +LAST PAYMENT. IF THE LAST PAYMENT AND THE BUY-BACK OCCUR AT +THE SAME TIME THEN DECREASE THE NUMBER OF PAYMENTS BY 1 AND +INCREASE THE BUY-BACK BY THE AMOUNT OF 1 PAYMENT + + IN ADDITION, THE FIRST PAYMENT MAY BE AT THE END OF THE +1ST MONTH, 2ND MONTH, ETC. + +INPUT CASH COST OF ITEM ? 10000 +INPUT DOWN PAYMENT ? 2000 +INPUT MONTHLY PAYMENT ? 300 +INPUT NUMBER OF MONTHLY PAYMENTS ? 50 +INPUT MONTH OF 1ST PAYMENT ? 1 +INPUT BUY-BACK AMOUNT ? 6000 + + + +COMPUTING INTEREST RATE +PASS 0 CURRENT MONTHLY RATE = 0 % +PASS 1 CURRENT MONTHLY RATE = 10 % +PASS 2 CURRENT MONTHLY RATE = 1 % +PASS 3 CURRENT MONTHLY RATE = 2 % +PASS 4 CURRENT MONTHLY RATE = 3 % +PASS 5 CURRENT MONTHLY RATE = 4 % +PASS 6 CURRENT MONTHLY RATE = 3.1 % +PASS 7 CURRENT MONTHLY RATE = 3.2 % +PASS 8 CURRENT MONTHLY RATE = 3.3 % +PASS 9 CURRENT MONTHLY RATE = 3.4 % +PASS 10 CURRENT MONTHLY RATE = 3.5 % +PASS 11 CURRENT MONTHLY RATE = 3.6 % +PASS 12 CURRENT MONTHLY RATE = 3.51 % +PASS 13 CURRENT MONTHLY RATE = 3.52 % +PASS 14 CURRENT MONTHLY RATE = 3.53 % +PASS 15 CURRENT MONTHLY RATE = 3.54 % +PASS 16 CURRENT MONTHLY RATE = 3.55 % +PASS 17 CURRENT MONTHLY RATE = 3.541 % +PASS 18 CURRENT MONTHLY RATE = 3.542 % +MONTHLY INTEREST RATE = 3.542 % +ANNUAL INTEREST RATE(EFF) = 51.8443 % +ANNUAL INTEREST RATE(SIMP) = 42.504 % + + INTEREST RATE(SIMP) COMPUTED BY MULTIPLYING + MONTHLY INTEREST RATE BY 12 WHILE INTEREST + RATE(SIMP) IS A COMPOUNDED MONTHLY RATE + +PRESS ENTER FOR MORE COMPUTATIONS? -1 diff --git a/BP100/LETWRT.80 b/BP100/LETWRT.80 new file mode 100644 index 0000000..795fbb4 --- /dev/null +++ b/BP100/LETWRT.80 @@ -0,0 +1,148 @@ + TEXTEDIT AND LETTER WRITING SYSTEM + + +THIS MINI TEXT EDITOR MAKES IT POSSIBLE TO WRITE SOME TEXT, +TO ADD TO IT,TO CHANGE IT,TO SAVE IT ON CASSETTE OR DISKETTE +AND TO READ IT BACK FROM SAME. +THE TEXT MAY ALSO BE PRINTED ON THE LINE PRINTER. +THIS IS A LINE ORIENTED EDITOR.ONLY ENTIRE LINES MAY BE +INSERTED,DELETED OR CHANGED.FOR LONGER TEXT CLEAR MORE THAN +4000 IN LINE 1000. +THE FILES GENERATED BY THE EDITOR MAY BE LINKED TO THE NAMES +ON THE MAIL PAC. THE NAME AND ADDRESS OF THE MAILPAC NAME +IS PUT AT THE HEAD OF THE FILE(LETTER) GENERATED BY THIS +EDITOR. +TO BEGIN PRESS ENTER? + + +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 10 +INPUT LINES END WITH ENTER.FOR INDENTED LINES,OR LINES +CONTAINING COMMAS OR COLONS BEGIN WITH A " +INPUT @ TO RETURN TO MENU + 1 .? LINE ONE + 2 .? LINE TWO + 3 .? LINE THREE + 4 .? @ + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 1 + 1.LINE ONE + 2.LINE TWO + 3.LINE THREE + +PRESS ENTER TO RETURN TO MENU? + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 4 +TEXTFILE TO BE SAVED ON DISKETTE +PRESENT TEXFILE NAME IS +ENTER NEW TEXTFILE NAME( FOR NO CHANGE)? LETWRT.DAT +PRESS ENTER WHEN DISKETTE IS READY ? + + 3 LINES TO BE SAVED. + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 6 +TEXTFILE TO BE READ FROM DISKETTE + +INPUT NAME OF DISK FILE TO BE READ? LETWRT.DAT +PRESS ENTER WHEN DISKETTE IS READY ? + + 3 TEXT LINES TO BE READ + + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 11 +IF PRINTING WITH LINE #'S PRESS 1,ELSE PRESS 0? 1 + +PRESS ENTER WHEN LINE PRINTER READY? + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 0 diff --git a/BP100/LETWRT.BAS b/BP100/LETWRT.BAS new file mode 100644 index 0000000..be21698 --- /dev/null +++ b/BP100/LETWRT.BAS @@ -0,0 +1,200 @@ +1 REM LETWRT +5 CLS +10 PRINT TAB(10); "TEXTEDIT AND LETTER WRITING SYSTEM":PRINT +20 PRINT +30 PRINT"THIS MINI TEXT EDITOR MAKES IT POSSIBLE TO WRITE SOME TEXT, +40 PRINT"TO ADD TO IT,TO CHANGE IT,TO SAVE IT ON CASSETTE OR DISKETTE +45 PRINT"AND TO READ IT BACK FROM SAME. +50 PRINT"THE TEXT MAY ALSO BE PRINTED ON THE LINE PRINTER. +60 PRINT"THIS IS A LINE ORIENTED EDITOR.ONLY ENTIRE LINES MAY BE +63 PRINT"INSERTED,DELETED OR CHANGED.FOR LONGER TEXT CLEAR MORE THAN +65 PRINT"4000 IN LINE 1000. +70 PRINT"THE FILES GENERATED BY THE EDITOR MAY BE LINKED TO THE NAMES +75 PRINT"ON THE MAIL PAC. THE NAME AND ADDRESS OF THE MAILPAC NAME +77 PRINT"IS PUT AT THE HEAD OF THE FILE(LETTER) GENERATED BY THIS +80 PRINT"EDITOR. +90 INPUT"TO BEGIN PRESS ENTER";Z9 +100 CLS:PRINT:PRINT: +1000 CLEAR 4000 +1002 INPUT"ARE DISK DRIVES ATTACHED(Y/N)";DZ$ +1003 IF DZ$<>"Y" AND DZ$<>"N" THEN PRINT"INPUT ERROR":GOTO 110 +1005 DIM A$(100) +1007 CLS:PRINT" MENU" +1010 PRINT +1015 PRINT "0.QUIT" +1020 PRINT "1.DISPLAY TEXT FILE WITH LINE NUMBERS" +1030 PRINT "2.PRINT TEXT FILE WITHOUT NUMBERS" +1040 PRINT "3.SAVE TEXT FILE ON CASSETTE." +1045 PRINT "4.SAVE A TEXTFILE ON DISKETTE +1050 PRINT "5.READ TEXT FILE FROM CASSETTE." +1055 PRINT "6.READ TEXTFILE FROM DISKETTE +1060 PRINT "7.CHANGE A LINE." +1070 PRINT "8.DELETE A LINE. +1075 PRINT"9.INSERT A LINE +1080 PRINT "10.ADD TO OR START TEXT FILE +1082 PRINT "11. PRINT FILE OUT ONTO LINE PRINTER +1084 PRINT "12. MERGE WITH MAILPAC +1090 PRINT:INPUT"ENTER NUMBER OF YOUR CHOICE";Z +1092 IF Z = 0 THEN END +1095 ON Z GOSUB 2100,2200,2300,2350,2400,2450,2500,2600,2700,2800,2900,6000 +1100 CLS:GOTO 1007 +2100 REM ROUTINE FOR DISPLAYING TEXTFILE WITH NUMBERS +2105 CLS +2107 IF K=0 GOTO 2150 +2110 FOR I=1 TO K:ZZ$=RIGHT$("0"+STR$(I)+".",3) +2120 PRINT ZZ$;A$(I) +2130 IF I/10 = INT(I/10) THEN GOSUB 4000:PRINT +2140 NEXT I +2150 PRINT:GOSUB 4100:RETURN +2200 REM ROUTINE FOR DISPLAYING TEXTFILE WITH NUMBERS +2205 CLS +2210 FOR I=1 TO K +2220 PRINT A$(I) +2230 IF I/10=INT(I/10) THEN GOSUB 4000:PRINT +2240 NEXT I +2250 PRINT:GOSUB 4100:RETURN +2300 REM SAVE TEXTFILE ON CASSETTE +2310 CLS:INPUT"PRESS ENTER WHEN CASSETTE RECORDER IS READY TO RECORD";Z9 +2315 ' IF DZ$="Y" THEN CMD"T" +2320 WRITE #-1,K +2330 FOR I=1 TO K:WRITE #-1,A$(I):NEXT I +2340 RETURN +2350 REM SAVE TEXTFILE ON DISKETTE +2355 CLS:PRINT"TEXTFILE TO BE SAVED ON DISKETTE" +2360 PRINT"PRESENT TEXFILE NAME IS ";ZD$ +2362 INPUT"ENTER NEW TEXTFILE NAME( FOR NO CHANGE)";ZD$ +2365 INPUT"PRESS ENTER WHEN DISKETTE IS READY ";Z9 +2370 OPEN"O",1,ZD$ +2375 WRITE # 1,K:PRINT:PRINT K;" LINES TO BE SAVED." +2380 FOR I=1 TO K: WRITE # 1,A$(I):NEXT +2385 CLOSE #1 +2390 RETURN +2400 REM READ TEXTFILE FROM CASSETTE +2410 CLS:INPUT"PRESS ENTER WHEN CASSETTE RECORDER IS READY";Z9 +2415 ' IF DZ$="Y" THEN CMD"T" +2420 INPUT #-1,K +2430 FOR I=1 TO K:INPUT #-1,A$(I):NEXT I +2440 RETURN +2450 REM READ TEXTFILE FROM DISKETTE +2455 CLS:PRINT"TEXTFILE TO BE READ FROM DISKETTE":PRINT +2460 INPUT"INPUT NAME OF DISK FILE TO BE READ";ZD$ +2465 INPUT"PRESS ENTER WHEN DISKETTE IS READY ";Z9 +2470 OPEN "I",1,ZD$ +2475 INPUT # 1,K:PRINT:PRINT K;" TEXT LINES TO BE READ":PRINT +2477 FOR II=1 TO 200:NEXT +2480 FOR I=1 TO K:INPUT # 1,A$(I):NEXT I +2485 CLOSE #1 +2490 RETURN +2500 REM CHANGE A LINE SUBROUTINE +2510 CLS +2520 INPUT"WHAT LINE NUMBER DO YOU WANT TO CHANGE(0 TO RETURN)";LN +2523 IF LN=0 THEN RETURN +2525 IF LN<0 OR LN<>INT(LN) OR LN>K THEN PRINT"NO SUCH LINE":GOSUB 4400:GOTO 2510 +2530 GOSUB 4500 +2540 PRINT:PRINT"ARE YOU SURE YOU WANT TO CHANGE LINE ";LN;"(Y/N)";:INPUT Z9$ +2550 IF Z9$="N" GOTO 2510 +2555 IF Z9$<>"Y" THEN GOSUB 4300:GOTO 2540 +2560 PRINT:PRINT"ENTER NEW LINE ";LN +2570 PRINT:PRINT LN;".";:INPUT A$(LN) +2580 CLS:GOSUB 4500 +2585 INPUT"PRESS 1 IF OK,ELSE 0";Z9 +2587 IF Z9=1 THEN RETURN +2590 IF Z9=0 THEN CLS:GOTO 2530 +2592 GOSUB 4300:GOTO 2580 +2600 REM DELETE A LINE SUBROUTINE +2610 CLS:INPUT"WHAT LINE NUMBER DO YOU WANT TO DELETE(0 TO RETURN)";LN +2612 IF LN=0 THEN RETURN +2614 IF LN<>INT(LN) OR LN <1 THEN GOSUB 4300:GOTO 2610 +2616 IF LN>K THEN PRINT"LINE";LN;" NOT IN TEXT":GOSUB 4400:GOTO 2610 +2620 GOSUB 4500 +2630 PRINT"ARE YOU SURE YOU WANT TO DELETE LINE";LN;"(Y/N)";:INPUT Z9$ +2640 IF Z9$="N" GOTO 2710 +2650 IF Z9$<>"Y" THEN GOSUB 4300:GOTO 2630 +2655 FOR I=LN+1 TO K:A$(I-1)=A$(I):NEXT I +2657 K=K-1 +2660 PRINT:PRINT"DELETE COMPLETE":GOSUB 4400:GOTO 2610 +2700 REM INSERT A LINE SUBROUTINE +2710 CLS:INPUT"WHAT LINE NUMBER DO YOU WISH TO INSERT(0 TO RETURN)";LN +2712 IF LN=0 THEN RETURN +2714 IF LN<>INT(LN) OR LN<1 THEN GOSUB 4300:GOTO 2710 +2716 IF LN>K THEN PRINT"ONLY ";K;" LINES EXIST IN TEXT.INSERT LINE MUST BE <= ";K:GOSUB 4400:GOTO 2710 +2720 GOSUB 4500 +2730 PRINT"ARE YOU SURE YOU WANT TO INSERT LINE";LN;"(Y/N)";:INPUT Z9$ +2740 IF Z9$="N" GOTO 2710 +2750 IF Z9$<>"Y" THEN GOSUB 4300:GOTO 2730 +2755 FOR I=K+1 TO LN+1 STEP-1:A$(I)=A$(I-1):NEXT I +2757 K=K+1 +2760 PRINT:PRINT"INSERT BELOW :" +2765 A$(LN)=" " +2770 PRINT:PRINT LN;".";:INPUT A$(LN) +2780 PRINT:PRINT"INSERT COMPLETE":GOSUB 4400:GOTO 2710 +2800 REM ADD OR START FILE SUBROUTINE +2805 CLS +2810 PRINT"INPUT LINES END WITH ENTER.FOR INDENTED LINES,OR LINES +2812 PRINT"CONTAINING COMMAS OR COLONS BEGIN WITH A ";CHR$(34) +2815 PRINT"INPUT @ TO RETURN TO MENU" +2817 GOSUB 4400 +2820 IF K<1 THEN K=0:GOTO 2830 +2825 FOR I=1 TO K:PRINT I;".";A$(I):NEXT I +2830 K=K+1 +2840 PRINT K;".";:INPUT A$(K) +2850 IF A$(K)="@" THEN A$(K)="":K=K-1:RETURN +2860 GOTO 2830 +2900 REM LINE PRINTER SUBROUTINE +2910 CLS +2920 PRINT"IF PRINTING WITH LINE #'S PRESS 1,ELSE PRESS 0";:INPUT Z +2930 IF Z<>1 AND Z<>0 THEN GOSUB 4300:GOTO 2910 +2940 PRINT:INPUT"PRESS ENTER WHEN LINE PRINTER READY";Z9 +2950 FOR I=1 TO K +2960 IF Z=1 THEN LPRINT I;"."; +2970 LPRINT A$(I) +2980 NEXT I +2990 RETURN +4000 REM PRESS ENTER SUBROUTINE +4010 PRINT:INPUT"PRESS ENTER TO CONTINUE";Z9 +4020 RETURN +4100 REM RETURN TO MENU SUBROUTINE +4110 INPUT"PRESS ENTER TO RETURN TO MENU";Z9 +4120 RETURN +4300 REM INPUT ERROR SUBROUTINE +4310 PRINT:PRINT"INPUT ERROR.TRY AGAIN" +4320 FOR Z9=1 TO 400:NEXT Z9 +4330 RETURN +4400 REM DELAY SUBROUTINE +4410 FOR Z8=1 TO 400:NEXT Z8 +4420 RETURN +4500 REM PRINT LINE BEFORE,LINE, LINE AFTER +4510 PRINT:FOR I=LN-1 TO LN+1:PRINT I;".";A$(I):NEXT I +4520 RETURN +6000 REM MERGE WITH MAILPAC PROGRAM +6005 CLS +6010 IF DZ$="N" THEN PRINT"PREPARE FILE ON CASSETTE":GOSUB 10100:INPUT #-1,P1:GOTO 6050 +6020 PRINT"FILE TO BE READ IN FROM DISKETTE":PRINT +6030 INPUT"ENTER NAME OF FILE TO BE READ";ND$ +6040 OPEN"I",1,ND$:INPUT # 1,P1 +6050 PRINT P1;" NAMES TO BE READ" +6060 PRINT"PREPARE PRINTER FOR LETTER":GOSUB 10100 +6070 FOR J=1 TO P1 +6080 IF DZ$="N" THEN INPUT #-1,NL$,N1$,N2$,CO$,A1$,A2$,A$ +6090 IF DZ$="Y" THEN INPUT # 1,NL$,N1$,N2$,CO$,A1$,A2$,A$ +6100 CLS:PRINT NL$ +6110 PRINT N1$;" ",N2$ +6120 PRINT CO$ +6130 PRINT A1$ +6140 PRINT A2$ +6145 PRINT:PRINT"NAME ";J;"OF";P1 +6150 PRINT:PRINT +6160 INPUT"PRESS 1 TO PRINT LETTER FOR NAME, 0 TO SKIP";Z1$ +6170 IF Z1$<>"1" AND Z1$<>"0" THEN GOSUB 4300:GOTO 6160 +6180 IF Z1$="0" THEN GOTO 7050 +7000 LPRINT NL$ +7005 LPRINT N1$;" ";N2$ +7010 LPRINT CO$ +7015 LPRINT A1$ +7020 LPRINT A2$ +7025 LPRINT " " +7030 GOSUB 2950 +7040 FOR IL=1 TO 60-K:LPRINT" ":NEXT +7050 NEXT J +7060 RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/LETWRT.DAT b/BP100/LETWRT.DAT new file mode 100644 index 0000000..263a65e --- /dev/null +++ b/BP100/LETWRT.DAT @@ -0,0 +1,4 @@ + 3 +"LINE ONE" +"LINE TWO" +"LINE THREE" diff --git a/BP100/LETWRT.INP b/BP100/LETWRT.INP new file mode 100644 index 0000000..80df17e --- /dev/null +++ b/BP100/LETWRT.INP @@ -0,0 +1,19 @@ + +Y +10 +LINE ONE +LINE TWO +LINE THREE +@ +1 + +4 +LETWRT.DAT + +6 +LETWRT.DAT + +11 +1 + +0 diff --git a/BP100/LETWRT.OUT b/BP100/LETWRT.OUT new file mode 100644 index 0000000..850896d --- /dev/null +++ b/BP100/LETWRT.OUT @@ -0,0 +1,148 @@ + TEXTEDIT AND LETTER WRITING SYSTEM + + +THIS MINI TEXT EDITOR MAKES IT POSSIBLE TO WRITE SOME TEXT, +TO ADD TO IT,TO CHANGE IT,TO SAVE IT ON CASSETTE OR DISKETTE +AND TO READ IT BACK FROM SAME. +THE TEXT MAY ALSO BE PRINTED ON THE LINE PRINTER. +THIS IS A LINE ORIENTED EDITOR.ONLY ENTIRE LINES MAY BE +INSERTED,DELETED OR CHANGED.FOR LONGER TEXT CLEAR MORE THAN +4000 IN LINE 1000. +THE FILES GENERATED BY THE EDITOR MAY BE LINKED TO THE NAMES +ON THE MAIL PAC. THE NAME AND ADDRESS OF THE MAILPAC NAME +IS PUT AT THE HEAD OF THE FILE(LETTER) GENERATED BY THIS +EDITOR. +TO BEGIN PRESS ENTER? + + +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 10 +INPUT LINES END WITH ENTER.FOR INDENTED LINES,OR LINES +CONTAINING COMMAS OR COLONS BEGIN WITH A " +INPUT @ TO RETURN TO MENU + 1 .? LINE ONE + 2 .? LINE TWO + 3 .? LINE THREE + 4 .? @ + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 1 + 1.LINE ONE + 2.LINE TWO + 3.LINE THREE + +PRESS ENTER TO RETURN TO MENU? + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 4 +TEXTFILE TO BE SAVED ON DISKETTE +PRESENT TEXFILE NAME IS +ENTER NEW TEXTFILE NAME( FOR NO CHANGE)? LETWRT.DAT +PRESS ENTER WHEN DISKETTE IS READY ? + + 3 LINES TO BE SAVED. + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 6 +TEXTFILE TO BE READ FROM DISKETTE + +INPUT NAME OF DISK FILE TO BE READ? LETWRT.DAT +PRESS ENTER WHEN DISKETTE IS READY ? + + 3 TEXT LINES TO BE READ + + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 11 +IF PRINTING WITH LINE #'S PRESS 1,ELSE PRESS 0? 1 + +PRESS ENTER WHEN LINE PRINTER READY? + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 0 diff --git a/BP100/LETWRT.dif b/BP100/LETWRT.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/LETWRT.run b/BP100/LETWRT.run new file mode 100644 index 0000000..795fbb4 --- /dev/null +++ b/BP100/LETWRT.run @@ -0,0 +1,148 @@ + TEXTEDIT AND LETTER WRITING SYSTEM + + +THIS MINI TEXT EDITOR MAKES IT POSSIBLE TO WRITE SOME TEXT, +TO ADD TO IT,TO CHANGE IT,TO SAVE IT ON CASSETTE OR DISKETTE +AND TO READ IT BACK FROM SAME. +THE TEXT MAY ALSO BE PRINTED ON THE LINE PRINTER. +THIS IS A LINE ORIENTED EDITOR.ONLY ENTIRE LINES MAY BE +INSERTED,DELETED OR CHANGED.FOR LONGER TEXT CLEAR MORE THAN +4000 IN LINE 1000. +THE FILES GENERATED BY THE EDITOR MAY BE LINKED TO THE NAMES +ON THE MAIL PAC. THE NAME AND ADDRESS OF THE MAILPAC NAME +IS PUT AT THE HEAD OF THE FILE(LETTER) GENERATED BY THIS +EDITOR. +TO BEGIN PRESS ENTER? + + +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 10 +INPUT LINES END WITH ENTER.FOR INDENTED LINES,OR LINES +CONTAINING COMMAS OR COLONS BEGIN WITH A " +INPUT @ TO RETURN TO MENU + 1 .? LINE ONE + 2 .? LINE TWO + 3 .? LINE THREE + 4 .? @ + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 1 + 1.LINE ONE + 2.LINE TWO + 3.LINE THREE + +PRESS ENTER TO RETURN TO MENU? + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 4 +TEXTFILE TO BE SAVED ON DISKETTE +PRESENT TEXFILE NAME IS +ENTER NEW TEXTFILE NAME( FOR NO CHANGE)? LETWRT.DAT +PRESS ENTER WHEN DISKETTE IS READY ? + + 3 LINES TO BE SAVED. + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 6 +TEXTFILE TO BE READ FROM DISKETTE + +INPUT NAME OF DISK FILE TO BE READ? LETWRT.DAT +PRESS ENTER WHEN DISKETTE IS READY ? + + 3 TEXT LINES TO BE READ + + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 11 +IF PRINTING WITH LINE #'S PRESS 1,ELSE PRESS 0? 1 + +PRESS ENTER WHEN LINE PRINTER READY? + MENU + +0.QUIT +1.DISPLAY TEXT FILE WITH LINE NUMBERS +2.PRINT TEXT FILE WITHOUT NUMBERS +3.SAVE TEXT FILE ON CASSETTE. +4.SAVE A TEXTFILE ON DISKETTE +5.READ TEXT FILE FROM CASSETTE. +6.READ TEXTFILE FROM DISKETTE +7.CHANGE A LINE. +8.DELETE A LINE. +9.INSERT A LINE +10.ADD TO OR START TEXT FILE +11. PRINT FILE OUT ONTO LINE PRINTER +12. MERGE WITH MAILPAC + +ENTER NUMBER OF YOUR CHOICE? 0 diff --git a/BP100/LOANAFFD.80 b/BP100/LOANAFFD.80 new file mode 100644 index 0000000..33dde48 --- /dev/null +++ b/BP100/LOANAFFD.80 @@ -0,0 +1,27 @@ + AMOUNT OF LOAN HOME BUYER CAN AFFORD + +ONE SIMPLE METHOD FOR DETERMINING WHETHER TO GIVE A MORTGAGE +TO AN APPLICANT IS TO SEE IF THE MONTHLY MORTGAGE PAYMENT +WOULD BE MORE THAN A CERTAIN FIXED PER CENT OF THAT +APPLICANT'S GROSS MONTHLY INCOME. IN THIS PROGRAM THE +MORTGAGE INTEREST RATE AND TERM IS KNOWN, ALONG WITH THE +APPLICANT'S GROSS MONTHLY INCOME AND THE FIXED PER CENT +MENTIONED ABOVE. IN ADDITION WE KNOW WHAT PER CENT OF THE +MONTHLY PAYMENT GOES FOR TAXES AND INSURANCE(MORTGAGE PAYMENT +IS NOT ALL FOR BANK). WITH THIS INFORMATION THE PROGRAM OUTPUTS +THE MAXIMUM MORTGAGE AMOUNT THAT THE APPLICANT CAN SUPPORT + +PRESS ENTER TO BEGIN? +ENTER APPLICANT'S GROSS MONTHLY INCOME ? 1234 +ENTER FIXED PER CENT ? 5 +ENTER TAX-INS % OF TOTAL PAYMENT ? 25 +ENTER ANNUAL MORTGAGE INT RATE(%) ? 3.75 +ENTER LENGTH OF MORTGAGE(YEARS) ? 30 + +MAXIMUM MONTHLY PAYMENT AMOUNT IS $62 +CONTAINING INSURANCE AND TAXES OF $15.42 +MAXIMUM MONTHLY PAYMENT FOR MORTGAGE IS $46.28 + +MAXIMUM MORTGAGE LOAN AVAILABLE IS $9992 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/LOANAFFD.BAS b/BP100/LOANAFFD.BAS new file mode 100644 index 0000000..45d92e4 --- /dev/null +++ b/BP100/LOANAFFD.BAS @@ -0,0 +1,33 @@ +1 REM LOANAFFD +5 CLEAR 1000 +10 CLS:PRINT TAB(10); "AMOUNT OF LOAN HOME BUYER CAN AFFORD":PRINT +20 PRINT "ONE SIMPLE METHOD FOR DETERMINING WHETHER TO GIVE A MORTGAGE +25 PRINT "TO AN APPLICANT IS TO SEE IF THE MONTHLY MORTGAGE PAYMENT +30 PRINT "WOULD BE MORE THAN A CERTAIN FIXED PER CENT OF THAT +35 PRINT "APPLICANT'S GROSS MONTHLY INCOME. IN THIS PROGRAM THE +40 PRINT "MORTGAGE INTEREST RATE AND TERM IS KNOWN, ALONG WITH THE +45 PRINT "APPLICANT'S GROSS MONTHLY INCOME AND THE FIXED PER CENT +50 PRINT "MENTIONED ABOVE. IN ADDITION WE KNOW WHAT PER CENT OF THE +52 PRINT "MONTHLY PAYMENT GOES FOR TAXES AND INSURANCE(MORTGAGE PAYMENT +53 PRINT "IS NOT ALL FOR BANK). WITH THIS INFORMATION THE PROGRAM OUTPUTS +55 PRINT "THE MAXIMUM MORTGAGE AMOUNT THAT THE APPLICANT CAN SUPPORT +70 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT "ENTER APPLICANT'S GROSS MONTHLY INCOME ";MG +120 INPUT "ENTER FIXED PER CENT ";P:P=P/100 +125 AMT=MG*P +127 INPUT "ENTER TAX-INS % OF TOTAL PAYMENT ";P1:P1=P1/100 +128 PMT=AMT*(1-P1) +130 INPUT "ENTER ANNUAL MORTGAGE INT RATE(%) ";I:I=I/1200 +135 REM I IS NOW MONTHLY RATE AS DECIMAL +140 INPUT "ENTER LENGTH OF MORTGAGE(YEARS) ";N:N=12*N +150 PV=PMT*(1/I)*(1-(1+I)[(-N))+BAL*(1+I)[(-N) +200 PRINT +210 PRINT USING "MAXIMUM MONTHLY PAYMENT AMOUNT IS $$######";AMT +212 PRINT USING "CONTAINING INSURANCE AND TAXES OF $$####.##";AMT-PMT +215 PRINT USING "MAXIMUM MONTHLY PAYMENT FOR MORTGAGE IS $$####.##";PMT +220 PRINT +230 PRINT USING "MAXIMUM MORTGAGE LOAN AVAILABLE IS $$######";PV +240 PRINT :INPUT "PRESS ENTER FOR MORE COMPUTATION";Z9$ +250 IF Z9$ = "-1" THEN END +260 GOTO 100 diff --git a/BP100/LOANAFFD.INP b/BP100/LOANAFFD.INP new file mode 100644 index 0000000..d4caf29 --- /dev/null +++ b/BP100/LOANAFFD.INP @@ -0,0 +1,7 @@ + +1234 +5 +25 +3.75 +30 +-1 diff --git a/BP100/LOANAFFD.OUT b/BP100/LOANAFFD.OUT new file mode 100644 index 0000000..4b6471f --- /dev/null +++ b/BP100/LOANAFFD.OUT @@ -0,0 +1,27 @@ + AMOUNT OF LOAN HOME BUYER CAN AFFORD + +ONE SIMPLE METHOD FOR DETERMINING WHETHER TO GIVE A MORTGAGE +TO AN APPLICANT IS TO SEE IF THE MONTHLY MORTGAGE PAYMENT +WOULD BE MORE THAN A CERTAIN FIXED PER CENT OF THAT +APPLICANT'S GROSS MONTHLY INCOME. IN THIS PROGRAM THE +MORTGAGE INTEREST RATE AND TERM IS KNOWN, ALONG WITH THE +APPLICANT'S GROSS MONTHLY INCOME AND THE FIXED PER CENT +MENTIONED ABOVE. IN ADDITION WE KNOW WHAT PER CENT OF THE +MONTHLY PAYMENT GOES FOR TAXES AND INSURANCE(MORTGAGE PAYMENT +IS NOT ALL FOR BANK). WITH THIS INFORMATION THE PROGRAM OUTPUTS +THE MAXIMUM MORTGAGE AMOUNT THAT THE APPLICANT CAN SUPPORT + +PRESS ENTER TO BEGIN? +ENTER APPLICANT'S GROSS MONTHLY INCOME ? 1234 +ENTER FIXED PER CENT ? 5 +ENTER TAX-INS % OF TOTAL PAYMENT ? 25 +ENTER ANNUAL MORTGAGE INT RATE(%) ? 3.75 +ENTER LENGTH OF MORTGAGE(YEARS) ? 30 + +MAXIMUM MONTHLY PAYMENT AMOUNT IS $62 +CONTAINING INSURANCE AND TAXES OF $15.42 +MAXIMUM MONTHLY PAYMENT FOR MORTGAGE IS $46.28 + +MAXIMUM MORTGAGE LOAN AVAILABLE IS $9992 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/LOANAFFD.dif b/BP100/LOANAFFD.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/LOANAFFD.run b/BP100/LOANAFFD.run new file mode 100644 index 0000000..33dde48 --- /dev/null +++ b/BP100/LOANAFFD.run @@ -0,0 +1,27 @@ + AMOUNT OF LOAN HOME BUYER CAN AFFORD + +ONE SIMPLE METHOD FOR DETERMINING WHETHER TO GIVE A MORTGAGE +TO AN APPLICANT IS TO SEE IF THE MONTHLY MORTGAGE PAYMENT +WOULD BE MORE THAN A CERTAIN FIXED PER CENT OF THAT +APPLICANT'S GROSS MONTHLY INCOME. IN THIS PROGRAM THE +MORTGAGE INTEREST RATE AND TERM IS KNOWN, ALONG WITH THE +APPLICANT'S GROSS MONTHLY INCOME AND THE FIXED PER CENT +MENTIONED ABOVE. IN ADDITION WE KNOW WHAT PER CENT OF THE +MONTHLY PAYMENT GOES FOR TAXES AND INSURANCE(MORTGAGE PAYMENT +IS NOT ALL FOR BANK). WITH THIS INFORMATION THE PROGRAM OUTPUTS +THE MAXIMUM MORTGAGE AMOUNT THAT THE APPLICANT CAN SUPPORT + +PRESS ENTER TO BEGIN? +ENTER APPLICANT'S GROSS MONTHLY INCOME ? 1234 +ENTER FIXED PER CENT ? 5 +ENTER TAX-INS % OF TOTAL PAYMENT ? 25 +ENTER ANNUAL MORTGAGE INT RATE(%) ? 3.75 +ENTER LENGTH OF MORTGAGE(YEARS) ? 30 + +MAXIMUM MONTHLY PAYMENT AMOUNT IS $62 +CONTAINING INSURANCE AND TAXES OF $15.42 +MAXIMUM MONTHLY PAYMENT FOR MORTGAGE IS $46.28 + +MAXIMUM MORTGAGE LOAN AVAILABLE IS $9992 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/LOANPAY.80 b/BP100/LOANPAY.80 new file mode 100644 index 0000000..d294be1 --- /dev/null +++ b/BP100/LOANPAY.80 @@ -0,0 +1,14 @@ + LOAN DEBT PAYMENT + +THIS PROGRAM COMPUTES THE AMOUNT REQUIRED AS A +MONTHLY PAYMENT TO PAY OFF A LOAN IN A GIVEN +NUMBER OF PAYMENTS IF THE NOMINAL INTEREST RATE +IS KNOWN. + +PRESS ENTER WHEN READY TO BEGIN? +WHAT IS THE AMOUNT OF THE LOAN ? 123456 +HOW MANY PAYMENTS ARE NEEDED ? 360 +WHAT IS THE NOMINAL INTEREST RATE(%)? 3.75 + + MONTHLY PAYMENT EQUALS $571.74 +INPUT 0 TO END,1 FOR NEW LOAN,2 FOR NEW INTEREST RATE? 0 diff --git a/BP100/LOANPAY.BAS b/BP100/LOANPAY.BAS new file mode 100644 index 0000000..2d76898 --- /dev/null +++ b/BP100/LOANPAY.BAS @@ -0,0 +1,26 @@ +1 REM MODEBTPA +5 CLS +10 PRINT " LOAN DEBT PAYMENT" +20 PRINT +30 PRINT "THIS PROGRAM COMPUTES THE AMOUNT REQUIRED AS A +35 PRINT "MONTHLY PAYMENT TO PAY OFF A LOAN IN A GIVEN +40 PRINT "NUMBER OF PAYMENTS IF THE NOMINAL INTEREST RATE +45 PRINT "IS KNOWN. +50 PRINT +55 INPUT "PRESS ENTER WHEN READY TO BEGIN";Z9 +100 CLS +110 INPUT "WHAT IS THE AMOUNT OF THE LOAN ";P +120 INPUT "HOW MANY PAYMENTS ARE NEEDED ";N +130 INPUT "WHAT IS THE NOMINAL INTEREST RATE(%)";I +140 I=I/1200 :REM MONTHLY INTEREST RATE +145 IF I=0 THEN DP=P/N: GOTO 160 +150 DP=P*I*(1+I)[N/((1+I)[N-1) +160 PRINT +170 F$(1)=" MONTHLY PAYMENT EQUALS $$#####.##" +180 PRINT USING F$(1);DP +200 INPUT "INPUT 0 TO END,1 FOR NEW LOAN,2 FOR NEW INTEREST RATE";Z9 +210 IF Z9=1 THEN GOTO 100 +220 IF Z9=0 THEN END +225 IF Z9=2 THEN GOTO 130 +230 PRINT "INPUT ERROR. TRY AGAIN":PRINT :GOTO 200 + diff --git a/BP100/LOANPAY.INP b/BP100/LOANPAY.INP new file mode 100644 index 0000000..e586315 --- /dev/null +++ b/BP100/LOANPAY.INP @@ -0,0 +1,5 @@ + +123456 +360 +3.75 +0 diff --git a/BP100/LOANPAY.OUT b/BP100/LOANPAY.OUT new file mode 100644 index 0000000..85eb857 --- /dev/null +++ b/BP100/LOANPAY.OUT @@ -0,0 +1,14 @@ + LOAN DEBT PAYMENT + +THIS PROGRAM COMPUTES THE AMOUNT REQUIRED AS A +MONTHLY PAYMENT TO PAY OFF A LOAN IN A GIVEN +NUMBER OF PAYMENTS IF THE NOMINAL INTEREST RATE +IS KNOWN. + +PRESS ENTER WHEN READY TO BEGIN? +WHAT IS THE AMOUNT OF THE LOAN ? 123456 +HOW MANY PAYMENTS ARE NEEDED ? 360 +WHAT IS THE NOMINAL INTEREST RATE(%)? 3.75 + + MONTHLY PAYMENT EQUALS $571.74 +INPUT 0 TO END,1 FOR NEW LOAN,2 FOR NEW INTEREST RATE? 0 diff --git a/BP100/LOANPAY.dif b/BP100/LOANPAY.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/LOANPAY.run b/BP100/LOANPAY.run new file mode 100644 index 0000000..d294be1 --- /dev/null +++ b/BP100/LOANPAY.run @@ -0,0 +1,14 @@ + LOAN DEBT PAYMENT + +THIS PROGRAM COMPUTES THE AMOUNT REQUIRED AS A +MONTHLY PAYMENT TO PAY OFF A LOAN IN A GIVEN +NUMBER OF PAYMENTS IF THE NOMINAL INTEREST RATE +IS KNOWN. + +PRESS ENTER WHEN READY TO BEGIN? +WHAT IS THE AMOUNT OF THE LOAN ? 123456 +HOW MANY PAYMENTS ARE NEEDED ? 360 +WHAT IS THE NOMINAL INTEREST RATE(%)? 3.75 + + MONTHLY PAYMENT EQUALS $571.74 +INPUT 0 TO END,1 FOR NEW LOAN,2 FOR NEW INTEREST RATE? 0 diff --git a/BP100/LPRINT.OUT b/BP100/LPRINT.OUT new file mode 100644 index 0000000..709484a --- /dev/null +++ b/BP100/LPRINT.OUT @@ -0,0 +1,17 @@ + PAYOFF UTILITY + + 0 0.00 + 100 1.00 + 1000 2.00 + 3000 3.00 + 5000 4.00 + 10000 5.00 + 20000 6.00 + 30000 7.00 + 40000 8.00 + 50000 9.00 + 60000 10.00 + 70000 10.00 + 80000 10.00 + 90000 10.00 + 100000 10.00 diff --git a/BP100/MAILPAC.80 b/BP100/MAILPAC.80 new file mode 100644 index 0000000..3674c88 --- /dev/null +++ b/BP100/MAILPAC.80 @@ -0,0 +1,181 @@ + MAILING LIST PROGRAM + +ARE DISK DRIVES ATTACHED(Y/N)? Y +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 1 +ADDITION OF NAMES TO FILE. 0 NAMES ALREADY ON FILE +PRESS 0 TO ADD NAMES, 1 TO END? 0 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 12 +ENTER FIRST NAME? JERRY +ENTER LAST NAME? MOUSE +ENTER COMPANY NAME OR APARTMENT #? WARNER BROTHERS +ENTER YOUR ADDRESS? 12345 FUNNY LANE +ENTER CITY,STATE AND ZIP CODE? SOMEWHERE TX 98765 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 7 +ENTER FIRST NAME? TOM +ENTER LAST NAME? CAT +ENTER COMPANY NAME OR APARTMENT #? FOX NETWORK +ENTER YOUR ADDRESS? 846 ANOTHER DRIVE +ENTER CITY,STATE AND ZIP CODE? ANOTHER TX 63941 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 9999 +FILE CLOSED-- +TO SEE THE MENU HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 2 +12 +JERRY MOUSE +WARNER BROTHERS +12345 FUNNY LANE +SOMEWHERE TX 98765 +7 +TOM CAT +FOX NETWORK +846 ANOTHER DRIVE +ANOTHER TX 63941 +TO SEE THE MENU, HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 6 +SAVING FILE ON DISKETTE + +PRESENT MAIL FILE NAME IS NEW NAME ? MAILPAC.DAT + 3 ITEMS IN MAILING LIST INCLUDING TRAILER. +PRESS ENTER WHEN DISKETTE IS READY? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 8 +FILE TO BE READ IN FROM DISKETTE + + ENTER NAME OF FILE TO BE READ ? MAILPAC.DAT + + 2 NAMES TO BE INPUT +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 9 +TO SEE THE MENU, HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 10 + +TO SEE MENU PRESS ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 11 +ENTER LAST NAME? MOUSE +9999 +PRESS 1 IF CORRECT NAME,ELSE 2? 1 + +FOR ANOTHER NAME TYPE 1, OTHERWISE 0 +? 0 +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 0 diff --git a/BP100/MAILPAC.BAS b/BP100/MAILPAC.BAS new file mode 100644 index 0000000..8723455 --- /dev/null +++ b/BP100/MAILPAC.BAS @@ -0,0 +1,162 @@ +1 REM MAILPAC +5 CLEAR 9000 :CLS :P1=1 :DIM A$(100) +10 DIM NL$(100),N1$(100),N2$(100),CO$(100),A1$(100),A2$(100) +12 PRINT " MAILING LIST PROGRAM ":PRINT +15 INPUT "ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +17 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 15 +20 CLS :PRINT @ 10,"**MENU**" :PRINT :PRINT +25 PRINT "TO QUIT TYPE 0 +30 PRINT "TO BUILD OR ADD TO A FILE TYPE 1 +40 PRINT "TO SEE THE ENTIRE FILE TYPE 2 +50 PRINT "TO SEE AN INDIVIDUAL NAME TYPE 3 +60 PRINT "TO MAKE CORRECTIONS TYPE 4 +70 PRINT "TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +75 PRINT "TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +80 PRINT "TO INPUT A FILE FROM TAPE TYPE 7 +82 PRINT "TO INPUT A FILE FROM DISKETTE TYPE 8 +84 PRINT "TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +85 PRINT "TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +86 PRINT "TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +90 INPUT Q +92 IF Q = 0 THEN END +94 ON Q GOSUB 100,200,300,400,500,550,600,650,700,800,900 +99 GOTO 20 +100 CLS:PRINT "ADDITION OF NAMES TO FILE.";P1-1;" NAMES ALREADY ON FILE" +103 INPUT "PRESS 0 TO ADD NAMES, 1 TO END";X +105 IF X<>0 AND X<>1 THEN GOSUB 10000:GOTO 100 +107 IF X=1 THEN RETURN +110 FOR I=P1 TO 500 :CLS :PRINT "ENTER MEMBERSHIP #(9999 TO END) +112 PRINT "THEN HIT THE 'ENTER' KEY" ;:INPUT NL$(I) +115 IF NL$(I)="9999" THEN P1=I :I=500:GOTO 140 +117 INPUT "ENTER FIRST NAME"; N1$(I) +118 INPUT "ENTER LAST NAME"; N2$(I) +119 INPUT "ENTER COMPANY NAME OR APARTMENT #"; CO$(I) +120 INPUT "ENTER YOUR ADDRESS"; A1$(I) +130 INPUT "ENTER CITY,STATE AND ZIP CODE"; A2$(I) +140 NEXT +150 PRINT "FILE CLOSED--" :INPUT "TO SEE THE MENU HIT ENTER"; X +160 RETURN +200 CLS :FOR I=1 TO P1-1 +210 GOSUB 4000 +220 FOR JJ=1 TO 100:NEXT +260 NEXT +270 INPUT "TO SEE THE MENU, HIT ENTER"; X :RETURN +300 CLS :INPUT "ENTER LAST NAME"; N2$ +310 I=0 +312 I=I+1:IF N2$=N2$(I) THEN GOTO 330 +315 IF I0 THEN LPRINT CO$ +740 LPRINT A1$(I) +750 LPRINT A2$(I) +768 LPRINT " " +770 IF LEN(CO$)=0 THEN LPRINT " " +780 NEXT +790 INPUT "TO SEE THE MENU, HIT ENTER"; X:RETURN +800 N=P1-1 +805 FOR I=1 TO N +810 A$(I)=N2$(I)+N1$(I) +815 NEXT +820 CLS :K=0 +825 I=1 +830 FOR J=2 TO N +835 IF A$(I)1 THEN GOTO 912 +935 LPRINT NL$(I) +940 LPRINT N1$(I);" ";N2$(I) +949 CO$=CO$(I) +950 IF LEN(CO$)>0 THEN LPRINT CO$(I) +955 LPRINT A1$(I) +960 LPRINT A2$(I) +965 LPRINT " " +966 IF LEN(CO$)=0 THEN LPRINT " " +970 PRINT :PRINT "FOR ANOTHER NAME TYPE 1, OTHERWISE 0" :INPUT X +980 IF X=1 THEN GOTO 900 : ELSE RETURN +4000 REM PRINT INFORMATION ABOUT 1 NAME +4010 PRINT NL$(I) +4020 PRINT N1$(I);" ";N2$(I) +4030 CO$=CO$(I) +4040 IF LEN(CO$)>0 THEN PRINT CO$ +4050 PRINT A1$(I) +4060 PRINT A2$(I) +4099 RETURN +10000 PRINT "INPUT ERROR! TRY AGAIN!":FOR JJ=1 TO 400:NEXT :RETURN + diff --git a/BP100/MAILPAC.DAT b/BP100/MAILPAC.DAT new file mode 100644 index 0000000..a33c1ff --- /dev/null +++ b/BP100/MAILPAC.DAT @@ -0,0 +1,4 @@ + 3 +"12","JERRY","MOUSE","WARNER BROTHERS","12345 FUNNY LANE","SOMEWHERE TX 98765","" +"7","TOM","CAT","FOX NETWORK","846 ANOTHER DRIVE","ANOTHER TX 63941","" +"9999","","","","","","" diff --git a/BP100/MAILPAC.INP b/BP100/MAILPAC.INP new file mode 100644 index 0000000..a84bbcc --- /dev/null +++ b/BP100/MAILPAC.INP @@ -0,0 +1,33 @@ +Y +1 +0 +12 +JERRY +MOUSE +WARNER BROTHERS +12345 FUNNY LANE +SOMEWHERE TX 98765 +7 +TOM +CAT +FOX NETWORK +846 ANOTHER DRIVE +ANOTHER TX 63941 +9999 + +2 + +6 +MAILPAC.DAT + +8 +MAILPAC.DAT +9 + +10 + +11 +MOUSE +1 +0 +0 diff --git a/BP100/MAILPAC.OUT b/BP100/MAILPAC.OUT new file mode 100644 index 0000000..c259c99 --- /dev/null +++ b/BP100/MAILPAC.OUT @@ -0,0 +1,181 @@ + MAILING LIST PROGRAM + +ARE DISK DRIVES ATTACHED(Y/N)? Y +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 1 +ADDITION OF NAMES TO FILE. 0 NAMES ALREADY ON FILE +PRESS 0 TO ADD NAMES, 1 TO END? 0 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 12 +ENTER FIRST NAME? JERRY +ENTER LAST NAME? MOUSE +ENTER COMPANY NAME OR APARTMENT #? WARNER BROTHERS +ENTER YOUR ADDRESS? 12345 FUNNY LANE +ENTER CITY,STATE AND ZIP CODE? SOMEWHERE TX 98765 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 7 +ENTER FIRST NAME? TOM +ENTER LAST NAME? CAT +ENTER COMPANY NAME OR APARTMENT #? FOX NETWORK +ENTER YOUR ADDRESS? 846 ANOTHER DRIVE +ENTER CITY,STATE AND ZIP CODE? ANOTHER TX 63941 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 9999 +FILE CLOSED-- +TO SEE THE MENU HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 2 +12 +JERRY MOUSE +WARNER BROTHERS +12345 FUNNY LANE +SOMEWHERE TX 98765 +7 +TOM CAT +FOX NETWORK +846 ANOTHER DRIVE +ANOTHER TX 63941 +TO SEE THE MENU, HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 6 +SAVING FILE ON DISKETTE + +PRESENT MAIL FILE NAME IS NEW NAME ? MAILPAC.DAT + 3 ITEMS IN MAILING LIST INCLUDING TRAILER. +PRESS ENTER WHEN DISKETTE IS READY? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 8 +FILE TO BE READ IN FROM DISKETTE + + ENTER NAME OF FILE TO BE READ ? MAILPAC.DAT + + 2 NAMES TO BE INPUT +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 9 +TO SEE THE MENU, HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 10 + +TO SEE MENU PRESS ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 11 +ENTER LAST NAME? MOUSE +9999 +PRESS 1 IF CORRECT NAME,ELSE 2? 1 + +FOR ANOTHER NAME TYPE 1, OTHERWISE 0 +? 0 +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 0 diff --git a/BP100/MAILPAC.dif b/BP100/MAILPAC.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/MAILPAC.run b/BP100/MAILPAC.run new file mode 100644 index 0000000..3674c88 --- /dev/null +++ b/BP100/MAILPAC.run @@ -0,0 +1,181 @@ + MAILING LIST PROGRAM + +ARE DISK DRIVES ATTACHED(Y/N)? Y +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 1 +ADDITION OF NAMES TO FILE. 0 NAMES ALREADY ON FILE +PRESS 0 TO ADD NAMES, 1 TO END? 0 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 12 +ENTER FIRST NAME? JERRY +ENTER LAST NAME? MOUSE +ENTER COMPANY NAME OR APARTMENT #? WARNER BROTHERS +ENTER YOUR ADDRESS? 12345 FUNNY LANE +ENTER CITY,STATE AND ZIP CODE? SOMEWHERE TX 98765 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 7 +ENTER FIRST NAME? TOM +ENTER LAST NAME? CAT +ENTER COMPANY NAME OR APARTMENT #? FOX NETWORK +ENTER YOUR ADDRESS? 846 ANOTHER DRIVE +ENTER CITY,STATE AND ZIP CODE? ANOTHER TX 63941 +ENTER MEMBERSHIP #(9999 TO END) +THEN HIT THE 'ENTER' KEY? 9999 +FILE CLOSED-- +TO SEE THE MENU HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 2 +12 +JERRY MOUSE +WARNER BROTHERS +12345 FUNNY LANE +SOMEWHERE TX 98765 +7 +TOM CAT +FOX NETWORK +846 ANOTHER DRIVE +ANOTHER TX 63941 +TO SEE THE MENU, HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 6 +SAVING FILE ON DISKETTE + +PRESENT MAIL FILE NAME IS NEW NAME ? MAILPAC.DAT + 3 ITEMS IN MAILING LIST INCLUDING TRAILER. +PRESS ENTER WHEN DISKETTE IS READY? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 8 +FILE TO BE READ IN FROM DISKETTE + + ENTER NAME OF FILE TO BE READ ? MAILPAC.DAT + + 2 NAMES TO BE INPUT +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 9 +TO SEE THE MENU, HIT ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 10 + +TO SEE MENU PRESS ENTER? +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 11 +ENTER LAST NAME? MOUSE +9999 +PRESS 1 IF CORRECT NAME,ELSE 2? 1 + +FOR ANOTHER NAME TYPE 1, OTHERWISE 0 +? 0 +**MENU** + + +TO QUIT TYPE 0 +TO BUILD OR ADD TO A FILE TYPE 1 +TO SEE THE ENTIRE FILE TYPE 2 +TO SEE AN INDIVIDUAL NAME TYPE 3 +TO MAKE CORRECTIONS TYPE 4 +TO SAVE THE CURRENT FILE ON TAPE TYPE 5 +TO SAVE THE CURRENT FILE ON DISKETTE TYPE 6 +TO INPUT A FILE FROM TAPE TYPE 7 +TO INPUT A FILE FROM DISKETTE TYPE 8 +TO PRINT THE ENTIRE FILE (LINE PRINTER) TYPE 9 +TO PRINT ALPHABETIZED LIST(LINE PRINTER) TYPE 10 +TO PRINT AN INDIVIDUAL NAME (LINE PRINTER) TYPE 11 +? 0 diff --git a/BP100/MARKUP.80 b/BP100/MARKUP.80 new file mode 100644 index 0000000..c0c0f51 --- /dev/null +++ b/BP100/MARKUP.80 @@ -0,0 +1,65 @@ + MARKUP ANALYSIS + +MARKUP IS THE GROSS PROFIT A BUSINESSMAN MAKES ON AN ITEM +EXPRESSED EITHER AS A PER CENT OF COST OR SELLING PRICE. +THE PRESENT PROGRAM DETERMINES THE SELLING PRICE GIVEN THE +PRICE AND MARKUP. ALSO, GIVEN COST AND SELLING PRICE THE +PROGRAM CAN COMPUTE MARKUP BASED ON SELLING PRICE AND COST. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 1 +GROSS MARKUP BASED UPON COST + +ENTER COST IN DOLLARS? 2345 +ENTER MARKUP AS % ? 67 +SELLING PRICE IS $3916.15 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 2 +GROSS MARKUP BASED UPON SELLING PRICE + +ENTER COST IN DOLLARS? 45 +ENTER MARKUP AS % ? 23 +SELLING PRICE IS $58.44 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 3 +GROSS MARKUP GIVEN COST & SELLING PRICE + +INPUT COST ? 87 +INPUT SELLING PRICE? 123 + +GROSS MARKUP BASED UPON COST IS 41.379% + +GROSS MARKUP BASED UPON SELLING PRICE IS 29.268% + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/MARKUP.BAS b/BP100/MARKUP.BAS new file mode 100644 index 0000000..4e3b424 --- /dev/null +++ b/BP100/MARKUP.BAS @@ -0,0 +1,55 @@ +1 REM MARKUP +5 CLEAR 1000 +10 CLS +20 PRINT TAB(15); "MARKUP ANALYSIS":PRINT +30 PRINT "MARKUP IS THE GROSS PROFIT A BUSINESSMAN MAKES ON AN ITEM +35 PRINT "EXPRESSED EITHER AS A PER CENT OF COST OR SELLING PRICE. +40 PRINT "THE PRESENT PROGRAM DETERMINES THE SELLING PRICE GIVEN THE +45 PRINT "PRICE AND MARKUP. ALSO, GIVEN COST AND SELLING PRICE THE +50 PRINT "PROGRAM CAN COMPUTE MARKUP BASED ON SELLING PRICE AND COST. +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +95 GOSUB 9000 +100 CLS:PRINT TAB(10); "MENU":PRINT +105 PRINT "0. QUIT" +110 PRINT "1. COMPUTE GROSS MARKUP BASED ON COST" +120 PRINT "2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +130 PRINT "3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE +190 PRINT :INPUT "MAKE YOUR CHOICE";Z9 +195 IF Z9 = 0 THEN END +200 ON Z9 GOSUB 500,600,700 +210 GOTO 100 +500 REM GROSS MARKUP BASED UPON COST +510 CLS +520 PRINT "GROSS MARKUP BASED UPON COST":PRINT +530 INPUT "ENTER COST IN DOLLARS";C +540 INPUT "ENTER MARKUP AS % ";M:M=M/100 +550 SP=C*(1+M) +560 PRINT USING F$(1);SP +570 PRINT :GOSUB 10100 +580 RETURN +600 REM GROSS MARKUP BASED UPON SELLING PRICE +610 CLS +620 PRINT "GROSS MARKUP BASED UPON SELLING PRICE":PRINT +630 INPUT "ENTER COST IN DOLLARS";C +640 INPUT "ENTER MARKUP AS % ";M:M=M/100 +650 SP=C/(1-M) +660 PRINT USING F$(1);SP +670 PRINT :GOSUB 10100 +680 RETURN +700 REM GROSS MARKUP GIVEN COST & SELLING PRICE +710 CLS:PRINT "GROSS MARKUP GIVEN COST & SELLING PRICE":PRINT +720 INPUT "INPUT COST ";C +730 INPUT "INPUT SELLING PRICE";SP +740 MC=100*(SP/C- 1) : MSP=100*(1 - C/SP) +750 PRINT +760 PRINT "GROSS MARKUP BASED UPON COST IS ";:PRINT USING F$(2);MC;:PRINT "%" +770 PRINT +780 PRINT "GROSS MARKUP BASED UPON SELLING PRICE IS ";:PRINT USING F$(2);MSP;:PRINT "%" +790 PRINT : GOSUB 10100 +795 RETURN +9000 REM FORMATS +9010 F$(1)="SELLING PRICE IS $$#######.##" +9020 F$(2)="###.###" +9099 RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/MARKUP.INP b/BP100/MARKUP.INP new file mode 100644 index 0000000..9006018 --- /dev/null +++ b/BP100/MARKUP.INP @@ -0,0 +1,14 @@ + +1 +2345 +67 + +2 +45 +23 + +3 +87 +123 + +0 diff --git a/BP100/MARKUP.OUT b/BP100/MARKUP.OUT new file mode 100644 index 0000000..615cf9b --- /dev/null +++ b/BP100/MARKUP.OUT @@ -0,0 +1,65 @@ + MARKUP ANALYSIS + +MARKUP IS THE GROSS PROFIT A BUSINESSMAN MAKES ON AN ITEM +EXPRESSED EITHER AS A PER CENT OF COST OR SELLING PRICE. +THE PRESENT PROGRAM DETERMINES THE SELLING PRICE GIVEN THE +PRICE AND MARKUP. ALSO, GIVEN COST AND SELLING PRICE THE +PROGRAM CAN COMPUTE MARKUP BASED ON SELLING PRICE AND COST. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 1 +GROSS MARKUP BASED UPON COST + +ENTER COST IN DOLLARS? 2345 +ENTER MARKUP AS % ? 67 +SELLING PRICE IS $3916.15 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 2 +GROSS MARKUP BASED UPON SELLING PRICE + +ENTER COST IN DOLLARS? 45 +ENTER MARKUP AS % ? 23 +SELLING PRICE IS $58.44 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 3 +GROSS MARKUP GIVEN COST & SELLING PRICE + +INPUT COST ? 87 +INPUT SELLING PRICE? 123 + +GROSS MARKUP BASED UPON COST IS 41.379% + +GROSS MARKUP BASED UPON SELLING PRICE IS 29.268% + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/MARKUP.dif b/BP100/MARKUP.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/MARKUP.run b/BP100/MARKUP.run new file mode 100644 index 0000000..c0c0f51 --- /dev/null +++ b/BP100/MARKUP.run @@ -0,0 +1,65 @@ + MARKUP ANALYSIS + +MARKUP IS THE GROSS PROFIT A BUSINESSMAN MAKES ON AN ITEM +EXPRESSED EITHER AS A PER CENT OF COST OR SELLING PRICE. +THE PRESENT PROGRAM DETERMINES THE SELLING PRICE GIVEN THE +PRICE AND MARKUP. ALSO, GIVEN COST AND SELLING PRICE THE +PROGRAM CAN COMPUTE MARKUP BASED ON SELLING PRICE AND COST. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 1 +GROSS MARKUP BASED UPON COST + +ENTER COST IN DOLLARS? 2345 +ENTER MARKUP AS % ? 67 +SELLING PRICE IS $3916.15 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 2 +GROSS MARKUP BASED UPON SELLING PRICE + +ENTER COST IN DOLLARS? 45 +ENTER MARKUP AS % ? 23 +SELLING PRICE IS $58.44 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 3 +GROSS MARKUP GIVEN COST & SELLING PRICE + +INPUT COST ? 87 +INPUT SELLING PRICE? 123 + +GROSS MARKUP BASED UPON COST IS 41.379% + +GROSS MARKUP BASED UPON SELLING PRICE IS 29.268% + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. COMPUTE GROSS MARKUP BASED ON COST +2. COMPUTE GROSS MARKUP BASED ON SELLING PRICE +3. COMPUTE GROSS MARKUP GIVEN COST AND SELLING PRICE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/MERGANAL.80 b/BP100/MERGANAL.80 new file mode 100644 index 0000000..290123f --- /dev/null +++ b/BP100/MERGANAL.80 @@ -0,0 +1,19 @@ + MERGER ANALYSIS + +ONE OF THE MAJOR TOPICS DISCUSSED IN MERGER AND ACQUISITION +ANALYSIS IS WHAT THE WORTH OF THE POTENTIAL ACQUISITION IS. +THIS PROGRAM DOES A VALUATION CALCULATION FOR A LEVERED FIRM. +THERE ARE SEVERAL INPUTS. OUTPUT IS THE VALUE OF THE FIRM. + +PRESS ENTER TO BEGIN? +PRESENT TOTAL VALUE OF FIRM'S STOCK? 23456 +EARNINGS BEFORE INTEREST AND TAXES ? 13 +INCOME TAX RATE(%) ? 38 +MARKET VALUE OF FIRM'S DEBT ? 11998 +HOW MUCH DEBT CAN FIRM HANDLE? 987654 +WHAT WILL FUTURE TAX RATE BE? 11 +ENTER FUTURE EARNINGS BEFORE INTEREST & TAXES? 765432 + +VALUE OF THE FIRM FOR ACQUISITION = 2611346330 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/MERGANAL.BAS b/BP100/MERGANAL.BAS new file mode 100644 index 0000000..6858d63 --- /dev/null +++ b/BP100/MERGANAL.BAS @@ -0,0 +1,25 @@ +1 REM MERGANAL +5 CLEAR 1000 +10 CLS +20 PRINT TAB(15); "MERGER ANALYSIS":PRINT +30 PRINT "ONE OF THE MAJOR TOPICS DISCUSSED IN MERGER AND ACQUISITION +35 PRINT "ANALYSIS IS WHAT THE WORTH OF THE POTENTIAL ACQUISITION IS. +40 PRINT "THIS PROGRAM DOES A VALUATION CALCULATION FOR A LEVERED FIRM. +45 PRINT "THERE ARE SEVERAL INPUTS. OUTPUT IS THE VALUE OF THE FIRM. +50 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT "PRESENT TOTAL VALUE OF FIRM'S STOCK";V +120 INPUT "EARNINGS BEFORE INTEREST AND TAXES ";EB +130 INPUT "INCOME TAX RATE(%) ";H:H=H/100 +140 INPUT "MARKET VALUE OF FIRM'S DEBT ";Z +145 V=V+Z +150 KH = EB*(1 - H)/(V-H*Z): REM AFTER TAX DISCOUNT RATE FOR UNLEVERED FIRM +155 INPUT "HOW MUCH DEBT CAN FIRM HANDLE";Z +160 INPUT "WHAT WILL FUTURE TAX RATE BE";H:H=H/100 +163 INPUT "ENTER FUTURE EARNINGS BEFORE INTEREST & TAXES";EB +165 V1 = EB*(1-H)/KH + H*Z +170 PRINT : PRINT USING "VALUE OF THE FIRM FOR ACQUISITION = $#########";V1 +180 PRINT :INPUT "PRESS ENTER FOR MORE COMPUTATION";Z9$ +185 IF Z9$ = "-1" THEN END +190 GOTO 100 + diff --git a/BP100/MERGANAL.INP b/BP100/MERGANAL.INP new file mode 100644 index 0000000..58c47e3 --- /dev/null +++ b/BP100/MERGANAL.INP @@ -0,0 +1,9 @@ + +23456 +13 +38 +11998 +987654 +11 +765432 +-1 diff --git a/BP100/MERGANAL.OUT b/BP100/MERGANAL.OUT new file mode 100644 index 0000000..f162298 --- /dev/null +++ b/BP100/MERGANAL.OUT @@ -0,0 +1,19 @@ + MERGER ANALYSIS + +ONE OF THE MAJOR TOPICS DISCUSSED IN MERGER AND ACQUISITION +ANALYSIS IS WHAT THE WORTH OF THE POTENTIAL ACQUISITION IS. +THIS PROGRAM DOES A VALUATION CALCULATION FOR A LEVERED FIRM. +THERE ARE SEVERAL INPUTS. OUTPUT IS THE VALUE OF THE FIRM. + +PRESS ENTER TO BEGIN? +PRESENT TOTAL VALUE OF FIRM'S STOCK? 23456 +EARNINGS BEFORE INTEREST AND TAXES ? 13 +INCOME TAX RATE(%) ? 38 +MARKET VALUE OF FIRM'S DEBT ? 11998 +HOW MUCH DEBT CAN FIRM HANDLE? 987654 +WHAT WILL FUTURE TAX RATE BE? 11 +ENTER FUTURE EARNINGS BEFORE INTEREST & TAXES? 765432 + +VALUE OF THE FIRM FOR ACQUISITION = 2611346330 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/MERGANAL.dif b/BP100/MERGANAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/MERGANAL.run b/BP100/MERGANAL.run new file mode 100644 index 0000000..290123f --- /dev/null +++ b/BP100/MERGANAL.run @@ -0,0 +1,19 @@ + MERGER ANALYSIS + +ONE OF THE MAJOR TOPICS DISCUSSED IN MERGER AND ACQUISITION +ANALYSIS IS WHAT THE WORTH OF THE POTENTIAL ACQUISITION IS. +THIS PROGRAM DOES A VALUATION CALCULATION FOR A LEVERED FIRM. +THERE ARE SEVERAL INPUTS. OUTPUT IS THE VALUE OF THE FIRM. + +PRESS ENTER TO BEGIN? +PRESENT TOTAL VALUE OF FIRM'S STOCK? 23456 +EARNINGS BEFORE INTEREST AND TAXES ? 13 +INCOME TAX RATE(%) ? 38 +MARKET VALUE OF FIRM'S DEBT ? 11998 +HOW MUCH DEBT CAN FIRM HANDLE? 987654 +WHAT WILL FUTURE TAX RATE BE? 11 +ENTER FUTURE EARNINGS BEFORE INTEREST & TAXES? 765432 + +VALUE OF THE FIRM FOR ACQUISITION = 2611346330 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/MONTH1 b/BP100/MONTH1 new file mode 100644 index 0000000..5a9b1c1 --- /dev/null +++ b/BP100/MONTH1 @@ -0,0 +1,46 @@ + 1 + 0, 0, 0 + 234.56, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 0, 0, 0 + 1 + 1, 234.56, 7 diff --git a/BP100/MORTGAGE.80 b/BP100/MORTGAGE.80 new file mode 100644 index 0000000..772bd29 --- /dev/null +++ b/BP100/MORTGAGE.80 @@ -0,0 +1,465 @@ + MORTGAGE AMORTIZATION + +THIS PROGRAM WILL PRINT A TABLE DESCRIBING MORTGAGE REPAYMENT. +INPUT IS THE MORTGAGE PRINCIPAL,MONTHLY PAYMENT,TERM IN YEARS, +AND ANNUAL INTEREST RATE. +OUTPUT INCLUDES,FOR EACH PAYMENT, AMOUNT AMORTIZED,AMOUNT OF +INTEREST, AND BALANCE LEFT ON MORTGAGE. + +IS DELAY AFTER EACH YEAR DESIRED(Y/N)? N +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER TO BEGIN? +MORTGAGE PRINCIPAL = ? 250000 +MONTHLY PAYMENT = ? 1234 +TERM OF MORTGAGE = ? 30 +ANNUAL INT. RATE(%)= ? 4.25 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 885.42 348.58 249651.42 + 2 884.18 349.82 249301.60 + 3 882.94 351.06 248950.54 + 4 881.70 352.30 248598.24 + 5 880.45 353.55 248244.69 + 6 879.20 354.80 247889.89 + 7 877.94 356.06 247533.84 + 8 876.68 357.32 247176.52 + 9 875.42 358.58 246817.94 + 10 874.15 359.85 246458.08 + 11 872.87 361.13 246096.96 + 12 871.59 362.41 245734.55 +YR.= 1 10542.55 4265.45 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 870.31 363.69 245370.86 + 2 869.02 364.98 245005.88 + 3 867.73 366.27 244639.61 + 4 866.43 367.57 244272.04 + 5 865.13 368.87 243903.17 + 6 863.82 370.18 243533.00 + 7 862.51 371.49 243161.51 + 8 861.20 372.80 242788.71 + 9 859.88 374.12 242414.58 + 10 858.55 375.45 242039.13 + 11 857.22 376.78 241662.36 + 12 855.89 378.11 241284.24 +YR.= 2 10357.69 4450.31 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 854.55 379.45 240904.79 + 2 853.20 380.80 240524.00 + 3 851.86 382.14 240141.85 + 4 850.50 383.50 239758.35 + 5 849.14 384.86 239373.50 + 6 847.78 386.22 238987.28 + 7 846.41 387.59 238599.69 + 8 845.04 388.96 238210.73 + 9 843.66 390.34 237820.40 + 10 842.28 391.72 237428.68 + 11 840.89 393.11 237035.57 + 12 839.50 394.50 236641.07 +YR.= 3 10164.83 4643.17 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 838.10 395.90 236245.17 + 2 836.70 397.30 235847.88 + 3 835.29 398.71 235449.17 + 4 833.88 400.12 235049.05 + 5 832.47 401.53 234647.52 + 6 831.04 402.96 234244.56 + 7 829.62 404.38 233840.18 + 8 828.18 405.82 233434.36 + 9 826.75 407.25 233027.11 + 10 825.30 408.70 232618.41 + 11 823.86 410.14 232208.27 + 12 822.40 411.60 231796.67 +YR.= 4 9963.60 4844.40 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 820.95 413.05 231383.62 + 2 819.48 414.52 230969.10 + 3 818.02 415.98 230553.12 + 4 816.54 417.46 230135.66 + 5 815.06 418.94 229716.73 + 6 813.58 420.42 229296.31 + 7 812.09 421.91 228874.40 + 8 810.60 423.40 228450.99 + 9 809.10 424.90 228026.09 + 10 807.59 426.41 227599.68 + 11 806.08 427.92 227171.77 + 12 804.57 429.43 226742.33 +YR.= 5 9753.66 5054.34 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 803.05 430.95 226311.38 + 2 801.52 432.48 225878.90 + 3 799.99 434.01 225444.89 + 4 798.45 435.55 225009.34 + 5 796.91 437.09 224572.24 + 6 795.36 438.64 224133.60 + 7 793.81 440.19 223693.41 + 8 792.25 441.75 223251.66 + 9 790.68 443.32 222808.34 + 10 789.11 444.89 222363.45 + 11 787.54 446.46 221916.99 + 12 785.96 448.04 221468.95 +YR.= 6 9534.61 5273.39 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 784.37 449.63 221019.32 + 2 782.78 451.22 220568.09 + 3 781.18 452.82 220115.27 + 4 779.57 454.43 219660.85 + 5 777.97 456.03 219204.81 + 6 776.35 457.65 218747.16 + 7 774.73 459.27 218287.89 + 8 773.10 460.90 217827.00 + 9 771.47 462.53 217364.47 + 10 769.83 464.17 216900.30 + 11 768.19 465.81 216434.49 + 12 766.54 467.46 215967.03 +YR.= 7 9306.08 5501.92 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 764.88 469.12 215497.91 + 2 763.22 470.78 215027.13 + 3 761.55 472.45 214554.69 + 4 759.88 474.12 214080.57 + 5 758.20 475.80 213604.77 + 6 756.52 477.48 213127.29 + 7 754.83 479.17 212648.11 + 8 753.13 480.87 212167.24 + 9 751.43 482.57 211684.67 + 10 749.72 484.28 211200.38 + 11 748.00 486.00 210714.38 + 12 746.28 487.72 210226.66 +YR.= 8 9067.64 5740.36 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 744.55 489.45 209737.22 + 2 742.82 491.18 209246.04 + 3 741.08 492.92 208753.12 + 4 739.33 494.67 208258.45 + 5 737.58 496.42 207762.03 + 6 735.82 498.18 207263.86 + 7 734.06 499.94 206763.92 + 8 732.29 501.71 206262.20 + 9 730.51 503.49 205758.72 + 10 728.73 505.27 205253.44 + 11 726.94 507.06 204746.38 + 12 725.14 508.86 204237.53 +YR.= 9 8818.86 5989.14 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 723.34 510.66 203726.87 + 2 721.53 512.47 203214.40 + 3 719.72 514.28 202700.12 + 4 717.90 516.10 202184.02 + 5 716.07 517.93 201666.08 + 6 714.23 519.77 201146.32 + 7 712.39 521.61 200624.71 + 8 710.55 523.45 200101.26 + 9 708.69 525.31 199575.95 + 10 706.83 527.17 199048.78 + 11 704.96 529.04 198519.74 + 12 703.09 530.91 197988.84 +YR.=10 8559.31 6248.69 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 701.21 532.79 197456.05 + 2 699.32 534.68 196921.37 + 3 697.43 536.57 196384.80 + 4 695.53 538.47 195846.33 + 5 693.62 540.38 195305.95 + 6 691.71 542.29 194763.66 + 7 689.79 544.21 194219.45 + 8 687.86 546.14 193673.31 + 9 685.93 548.07 193125.23 + 10 683.99 550.01 192575.22 + 11 682.04 551.96 192023.26 + 12 680.08 553.92 191469.34 +YR.=11 8288.50 6519.50 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 678.12 555.88 190913.46 + 2 676.15 557.85 190355.61 + 3 674.18 559.82 189795.79 + 4 672.19 561.81 189233.98 + 5 670.20 563.80 188670.18 + 6 668.21 565.79 188104.39 + 7 666.20 567.80 187536.59 + 8 664.19 569.81 186966.79 + 9 662.17 571.83 186394.96 + 10 660.15 573.85 185821.11 + 11 658.12 575.88 185245.23 + 12 656.08 577.92 184667.30 +YR.=12 8005.96 6802.04 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 654.03 579.97 184087.33 + 2 651.98 582.02 183505.31 + 3 649.91 584.09 182921.22 + 4 647.85 586.15 182335.07 + 5 645.77 588.23 181746.84 + 6 643.69 590.31 181156.53 + 7 641.60 592.40 180564.12 + 8 639.50 594.50 179969.62 + 9 637.39 596.61 179373.01 + 10 635.28 598.72 178774.29 + 11 633.16 600.84 178173.45 + 12 631.03 602.97 177570.48 +YR.=13 7711.18 7096.82 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 628.90 605.10 176965.38 + 2 626.75 607.25 176358.13 + 3 624.60 609.40 175748.73 + 4 622.44 611.56 175137.18 + 5 620.28 613.72 174523.45 + 6 618.10 615.90 173907.56 + 7 615.92 618.08 173289.48 + 8 613.73 620.27 172669.21 + 9 611.54 622.46 172046.75 + 10 609.33 624.67 171422.08 + 11 607.12 626.88 170795.20 + 12 604.90 629.10 170166.10 +YR.=14 7403.62 7404.38 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 602.67 631.33 169534.77 + 2 600.44 633.56 168901.21 + 3 598.19 635.81 168265.40 + 4 595.94 638.06 167627.34 + 5 593.68 640.32 166987.02 + 6 591.41 642.59 166344.43 + 7 589.14 644.86 165699.57 + 8 586.85 647.15 165052.42 + 9 584.56 649.44 164402.98 + 10 582.26 651.74 163751.24 + 11 579.95 654.05 163097.20 + 12 577.64 656.36 162440.83 +YR.=15 7082.73 7725.27 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 575.31 658.69 161782.14 + 2 572.98 661.02 161121.12 + 3 570.64 663.36 160457.76 + 4 568.29 665.71 159792.05 + 5 565.93 668.07 159123.98 + 6 563.56 670.44 158453.54 + 7 561.19 672.81 157780.73 + 8 558.81 675.19 157105.54 + 9 556.42 677.58 156427.95 + 10 554.02 679.98 155747.97 + 11 551.61 682.39 155065.58 + 12 549.19 684.81 154380.77 +YR.=16 6747.93 8060.07 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 546.77 687.23 153693.53 + 2 544.33 689.67 153003.86 + 3 541.89 692.11 152311.75 + 4 539.44 694.56 151617.19 + 5 536.98 697.02 150920.17 + 6 534.51 699.49 150220.68 + 7 532.03 701.97 149518.71 + 8 529.55 704.45 148814.25 + 9 527.05 706.95 148107.30 + 10 524.55 709.45 147397.85 + 11 522.03 711.97 146685.88 + 12 519.51 714.49 145971.40 +YR.=17 6398.63 8409.37 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 516.98 717.02 145254.38 + 2 514.44 719.56 144534.82 + 3 511.89 722.11 143812.71 + 4 509.34 724.66 143088.05 + 5 506.77 727.23 142360.82 + 6 504.19 729.81 141631.02 + 7 501.61 732.39 140898.63 + 8 499.02 734.98 140163.64 + 9 496.41 737.59 139426.05 + 10 493.80 740.20 138685.86 + 11 491.18 742.82 137943.03 + 12 488.55 745.45 137197.58 +YR.=18 6034.19 8773.81 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 485.91 748.09 136449.49 + 2 483.26 750.74 135698.75 + 3 480.60 753.40 134945.35 + 4 477.93 756.07 134189.28 + 5 475.25 758.75 133430.53 + 6 472.57 761.43 132669.10 + 7 469.87 764.13 131904.97 + 8 467.16 766.84 131138.13 + 9 464.45 769.55 130368.58 + 10 461.72 772.28 129596.30 + 11 458.99 775.01 128821.29 + 12 456.24 777.76 128043.53 +YR.=19 5653.95 9154.05 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 453.49 780.51 127263.02 + 2 450.72 783.28 126479.74 + 3 447.95 786.05 125693.69 + 4 445.17 788.83 124904.86 + 5 442.37 791.63 124113.23 + 6 439.57 794.43 123318.80 + 7 436.75 797.25 122521.55 + 8 433.93 800.07 121721.48 + 9 431.10 802.90 120918.58 + 10 428.25 805.75 120112.83 + 11 425.40 808.60 119304.23 + 12 422.54 811.46 118492.77 +YR.=20 5257.23 9550.77 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 419.66 814.34 117678.43 + 2 416.78 817.22 116861.21 + 3 413.88 820.12 116041.09 + 4 410.98 823.02 115218.07 + 5 408.06 825.94 114392.13 + 6 405.14 828.86 113563.27 + 7 402.20 831.80 112731.47 + 8 399.26 834.74 111896.73 + 9 396.30 837.70 111059.03 + 10 393.33 840.67 110218.37 + 11 390.36 843.64 109374.72 + 12 387.37 846.63 108528.09 +YR.=21 4843.33 9964.67 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 384.37 849.63 107678.46 + 2 381.36 852.64 106825.82 + 3 378.34 855.66 105970.17 + 4 375.31 858.69 105111.48 + 5 372.27 861.73 104249.75 + 6 369.22 864.78 103384.96 + 7 366.16 867.84 102517.12 + 8 363.08 870.92 101646.20 + 9 360.00 874.00 100772.20 + 10 356.90 877.10 99895.10 + 11 353.80 880.20 99014.89 + 12 350.68 883.32 98131.57 +YR.=22 4411.48 10396.52 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 347.55 886.45 97245.12 + 2 344.41 889.59 96355.53 + 3 341.26 892.74 95462.79 + 4 338.10 895.90 94566.89 + 5 334.92 899.08 93667.81 + 6 331.74 902.26 92765.55 + 7 328.54 905.46 91860.10 + 8 325.34 908.66 90951.43 + 9 322.12 911.88 90039.55 + 10 318.89 915.11 89124.44 + 11 315.65 918.35 88206.09 + 12 312.40 921.60 87284.49 +YR.=23 3960.92 10847.08 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 309.13 924.87 86359.62 + 2 305.86 928.14 85431.48 + 3 302.57 931.43 84500.05 + 4 299.27 934.73 83565.32 + 5 295.96 938.04 82627.28 + 6 292.64 941.36 81685.92 + 7 289.30 944.70 80741.22 + 8 285.96 948.04 79793.18 + 9 282.60 951.40 78841.78 + 10 279.23 954.77 77887.01 + 11 275.85 958.15 76928.86 + 12 272.46 961.54 75967.32 +YR.=24 3490.83 11317.17 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 269.05 964.95 75002.37 + 2 265.63 968.37 74034.01 + 3 262.20 971.80 73062.21 + 4 258.76 975.24 72086.97 + 5 255.31 978.69 71108.28 + 6 251.84 982.16 70126.12 + 7 248.36 985.64 69140.48 + 8 244.87 989.13 68151.36 + 9 241.37 992.63 67158.73 + 10 237.85 996.15 66162.58 + 11 234.33 999.67 65162.91 + 12 230.79 1003.21 64159.69 +YR.=25 3000.37 11807.63 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 227.23 1006.77 63152.92 + 2 223.67 1010.33 62142.59 + 3 220.09 1013.91 61128.68 + 4 216.50 1017.50 60111.18 + 5 212.89 1021.11 59090.07 + 6 209.28 1024.72 58065.35 + 7 205.65 1028.35 57036.99 + 8 202.01 1031.99 56005.00 + 9 198.35 1035.65 54969.35 + 10 194.68 1039.32 53930.03 + 11 191.00 1043.00 52887.04 + 12 187.31 1046.69 51840.35 +YR.=26 2488.65 12319.35 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 183.60 1050.40 50789.95 + 2 179.88 1054.12 49735.83 + 3 176.15 1057.85 48677.98 + 4 172.40 1061.60 47616.38 + 5 168.64 1065.36 46551.02 + 6 164.87 1069.13 45481.89 + 7 161.08 1072.92 44408.97 + 8 157.28 1076.72 43332.25 + 9 153.47 1080.53 42251.72 + 10 149.64 1084.36 41167.36 + 11 145.80 1088.20 40079.16 + 12 141.95 1092.05 38987.11 +YR.=27 1954.76 12853.24 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 138.08 1095.92 37891.19 + 2 134.20 1099.80 36791.38 + 3 130.30 1103.70 35687.69 + 4 126.39 1107.61 34580.08 + 5 122.47 1111.53 33468.55 + 6 118.53 1115.47 32353.09 + 7 114.58 1119.42 31233.67 + 8 110.62 1123.38 30110.29 + 9 106.64 1127.36 28982.93 + 10 102.65 1131.35 27851.58 + 11 98.64 1135.36 26716.22 + 12 94.62 1139.38 25576.84 +YR.=28 1397.73 13410.27 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 90.58 1143.42 24433.42 + 2 86.54 1147.46 23285.96 + 3 82.47 1151.53 22134.43 + 4 78.39 1155.61 20978.82 + 5 74.30 1159.70 19819.12 + 6 70.19 1163.81 18655.32 + 7 66.07 1167.93 17487.39 + 8 61.93 1172.07 16315.32 + 9 57.78 1176.22 15139.10 + 10 53.62 1180.38 13958.72 + 11 49.44 1184.56 12774.16 + 12 45.24 1188.76 11585.40 +YR.=29 816.56 13991.44 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 41.03 1192.97 10392.43 + 2 36.81 1197.19 9195.24 + 3 32.57 1201.43 7993.81 + 4 28.31 1205.69 6788.12 + 5 24.04 1209.96 5578.16 + 6 19.76 1214.24 4363.91 + 7 15.46 1218.54 3145.37 + 8 11.14 1222.86 1922.51 + 9 6.81 1227.19 695.32 + 10 2.46 1231.54 -536.22 + 11 -1.90 1235.90 -1772.12 + 12 -6.28 -3012.39 0.00 +FINAL PAYMENT = -$3018.67 diff --git a/BP100/MORTGAGE.BAS b/BP100/MORTGAGE.BAS new file mode 100644 index 0000000..487bdc0 --- /dev/null +++ b/BP100/MORTGAGE.BAS @@ -0,0 +1,77 @@ +5 CLS +10 PRINT " MORTGAGE AMORTIZATION" +20 PRINT +30 PRINT "THIS PROGRAM WILL PRINT A TABLE DESCRIBING MORTGAGE REPAYMENT. +40 PRINT "INPUT IS THE MORTGAGE PRINCIPAL,MONTHLY PAYMENT,TERM IN YEARS, +50 PRINT "AND ANNUAL INTEREST RATE. +60 PRINT "OUTPUT INCLUDES,FOR EACH PAYMENT, AMOUNT AMORTIZED,AMOUNT OF +70 PRINT "INTEREST, AND BALANCE LEFT ON MORTGAGE. +90 PRINT +91 INPUT "IS DELAY AFTER EACH YEAR DESIRED(Y/N)";Z3$ +92 IF Z3$<>"Y" AND Z3$<>"N" THEN GOTO 91 +93 INPUT "IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +94 IF Z2$<>"Y" AND Z2$<>"N" THEN GOTO 93 +95 INPUT "PRESS ENTER TO BEGIN";Z9 +100 CLS +102 GOTO 110 +104 REM DELETE LINE 102 FOR DOUBLE PRECISION BUT SLOW RESULTS +105 DEFDBL A-I,L-X +110 INPUT "MORTGAGE PRINCIPAL = ";P +115 B=P +120 INPUT "MONTHLY PAYMENT = ";M +130 INPUT "TERM OF MORTGAGE = ";Y +140 INPUT "ANNUAL INT. RATE(%)= ";I +150 MI=I/1200 :REM MONTHLY INTEREST RATE +200 NF = 12*Y +205 YR=0:ATX=0:IT=0 +210 IF NF>12 THEN GOTO 300 ' SEE IF MORE THAN 1 YR LEFT +220 AY=0:IY=0 +230 GOSUB 1000 +235 FOR K=1 TO NF-1 +240 GOSUB 1200 +250 NEXT K +260 NF=0 +270 GOSUB 1200 +275 F$(1)="FINAL PAYMENT = $$#####.##" +280 PRINT USING F$(1);A+IPX +285 IF Z2$="Y" THEN LPRINT USING F$(1);A+IPX +295 END +300 REM FIND RESULTS FOR 1 YEAR +305 GOSUB 1000 +307 AY=0:IY=0 +310 FOR K= 1 TO 12 +320 GOSUB 1200 +330 NEXT K +340 NF=NF-12 +345 YR=YR+1 +350 GOSUB 1300 +355 IF Z3$="N" THEN GOTO 210 +360 INPUT "PRESS ENTER FOR ANOTHER YEAR";Z9 +370 GOTO 210 +1000 REM PAGE HEADING SUBROUTINE +1001 V$="%" +1005 A1$="PRIN.=$$#####.## PAYMENT=$$###.## TERM= ##.## YRS RATE=##.# ! +1007 A2$=" NO. INTEREST AMORTIZED BALANCE " +1010 CLS +1020 PRINT USING A1$;P,M,Y,I,V$;:IF Z2$="Y" THEN LPRINT USING A1$;P,M,Y,I,V$ +1030 PRINT A2$:IF Z2$="Y" THEN LPRINT A2$:LPRINT " " +1050 RETURN +1100 REM PRINTING SUBROUTINE FOR MONTHLY PAYMENT +1105 A3$=" ## ###.## ####.## ######.## +1110 PRINT USING A3$;NY,IPX,A,B +1115 IF Z2$="Y" THEN LPRINT USING A3$;NY,IPX,A,B +1120 RETURN +1200 REM COMPUTATION SUBROUTINE +1218 NY=K +1220 IPX=B*MI:A=M-IPX:B=B-A:ATX=ATX+A:IT=IT+IPX:IY=IY+IPX +1225 AY=AY+A +1226 IF NF=0 THEN A=P-ATX-R +1227 IF NF=0 THEN B=0 +1230 GOSUB 1100 +1240 RETURN +1300 REM END OF YEAR SUBROUTINE +1310 A4$="YR.=## ####.## ####.##" +1320 PRINT USING A4$;YR,IY,AY +1325 IF Z2$="Y" THEN LPRINT USING A4$;YR,IY,AY:LPRINT " ":LPRINT " " +1330 RETURN + diff --git a/BP100/MORTGAGE.INP b/BP100/MORTGAGE.INP new file mode 100644 index 0000000..0e6d547 --- /dev/null +++ b/BP100/MORTGAGE.INP @@ -0,0 +1,7 @@ +N +Y + +250000 +1234 +30 +4.25 diff --git a/BP100/MORTGAGE.OUT b/BP100/MORTGAGE.OUT new file mode 100644 index 0000000..7c570f4 --- /dev/null +++ b/BP100/MORTGAGE.OUT @@ -0,0 +1,465 @@ + MORTGAGE AMORTIZATION + +THIS PROGRAM WILL PRINT A TABLE DESCRIBING MORTGAGE REPAYMENT. +INPUT IS THE MORTGAGE PRINCIPAL,MONTHLY PAYMENT,TERM IN YEARS, +AND ANNUAL INTEREST RATE. +OUTPUT INCLUDES,FOR EACH PAYMENT, AMOUNT AMORTIZED,AMOUNT OF +INTEREST, AND BALANCE LEFT ON MORTGAGE. + +IS DELAY AFTER EACH YEAR DESIRED(Y/N)? N +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER TO BEGIN? +MORTGAGE PRINCIPAL = ? 250000 +MONTHLY PAYMENT = ? 1234 +TERM OF MORTGAGE = ? 30 +ANNUAL INT. RATE(%)= ? 4.25 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 885.42 348.58 249651.42 + 2 884.18 349.82 249301.60 + 3 882.94 351.06 248950.54 + 4 881.70 352.30 248598.24 + 5 880.45 353.55 248244.69 + 6 879.20 354.80 247889.89 + 7 877.94 356.06 247533.84 + 8 876.68 357.32 247176.52 + 9 875.42 358.58 246817.94 + 10 874.15 359.85 246458.08 + 11 872.87 361.13 246096.96 + 12 871.59 362.41 245734.55 +YR.= 1 10542.55 4265.45 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 870.31 363.69 245370.86 + 2 869.02 364.98 245005.88 + 3 867.73 366.27 244639.61 + 4 866.43 367.57 244272.04 + 5 865.13 368.87 243903.17 + 6 863.82 370.18 243533.00 + 7 862.51 371.49 243161.51 + 8 861.20 372.80 242788.71 + 9 859.88 374.12 242414.58 + 10 858.55 375.45 242039.13 + 11 857.22 376.78 241662.36 + 12 855.89 378.11 241284.24 +YR.= 2 10357.69 4450.31 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 854.55 379.45 240904.79 + 2 853.20 380.80 240524.00 + 3 851.86 382.14 240141.85 + 4 850.50 383.50 239758.35 + 5 849.14 384.86 239373.50 + 6 847.78 386.22 238987.28 + 7 846.41 387.59 238599.69 + 8 845.04 388.96 238210.73 + 9 843.66 390.34 237820.40 + 10 842.28 391.72 237428.68 + 11 840.89 393.11 237035.57 + 12 839.50 394.50 236641.07 +YR.= 3 10164.83 4643.17 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 838.10 395.90 236245.17 + 2 836.70 397.30 235847.88 + 3 835.29 398.71 235449.17 + 4 833.88 400.12 235049.05 + 5 832.47 401.53 234647.52 + 6 831.04 402.96 234244.56 + 7 829.62 404.38 233840.18 + 8 828.18 405.82 233434.36 + 9 826.75 407.25 233027.11 + 10 825.30 408.70 232618.41 + 11 823.86 410.14 232208.27 + 12 822.40 411.60 231796.67 +YR.= 4 9963.60 4844.40 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 820.95 413.05 231383.62 + 2 819.48 414.52 230969.10 + 3 818.02 415.98 230553.12 + 4 816.54 417.46 230135.66 + 5 815.06 418.94 229716.73 + 6 813.58 420.42 229296.31 + 7 812.09 421.91 228874.40 + 8 810.60 423.40 228450.99 + 9 809.10 424.90 228026.09 + 10 807.59 426.41 227599.68 + 11 806.08 427.92 227171.77 + 12 804.57 429.43 226742.33 +YR.= 5 9753.66 5054.34 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 803.05 430.95 226311.38 + 2 801.52 432.48 225878.90 + 3 799.99 434.01 225444.89 + 4 798.45 435.55 225009.34 + 5 796.91 437.09 224572.24 + 6 795.36 438.64 224133.60 + 7 793.81 440.19 223693.41 + 8 792.25 441.75 223251.66 + 9 790.68 443.32 222808.34 + 10 789.11 444.89 222363.45 + 11 787.54 446.46 221916.99 + 12 785.96 448.04 221468.95 +YR.= 6 9534.61 5273.39 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 784.37 449.63 221019.32 + 2 782.78 451.22 220568.09 + 3 781.18 452.82 220115.27 + 4 779.57 454.43 219660.85 + 5 777.97 456.03 219204.81 + 6 776.35 457.65 218747.16 + 7 774.73 459.27 218287.89 + 8 773.10 460.90 217827.00 + 9 771.47 462.53 217364.47 + 10 769.83 464.17 216900.30 + 11 768.19 465.81 216434.49 + 12 766.54 467.46 215967.03 +YR.= 7 9306.08 5501.92 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 764.88 469.12 215497.91 + 2 763.22 470.78 215027.13 + 3 761.55 472.45 214554.69 + 4 759.88 474.12 214080.57 + 5 758.20 475.80 213604.77 + 6 756.52 477.48 213127.29 + 7 754.83 479.17 212648.11 + 8 753.13 480.87 212167.24 + 9 751.43 482.57 211684.67 + 10 749.72 484.28 211200.38 + 11 748.00 486.00 210714.38 + 12 746.28 487.72 210226.66 +YR.= 8 9067.64 5740.36 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 744.55 489.45 209737.22 + 2 742.82 491.18 209246.04 + 3 741.08 492.92 208753.12 + 4 739.33 494.67 208258.45 + 5 737.58 496.42 207762.03 + 6 735.82 498.18 207263.86 + 7 734.06 499.94 206763.92 + 8 732.29 501.71 206262.20 + 9 730.51 503.49 205758.72 + 10 728.73 505.27 205253.44 + 11 726.94 507.06 204746.38 + 12 725.14 508.86 204237.53 +YR.= 9 8818.86 5989.14 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 723.34 510.66 203726.87 + 2 721.53 512.47 203214.40 + 3 719.72 514.28 202700.12 + 4 717.90 516.10 202184.02 + 5 716.07 517.93 201666.08 + 6 714.23 519.77 201146.32 + 7 712.39 521.61 200624.71 + 8 710.55 523.45 200101.26 + 9 708.69 525.31 199575.95 + 10 706.83 527.17 199048.78 + 11 704.96 529.04 198519.74 + 12 703.09 530.91 197988.84 +YR.=10 8559.31 6248.69 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 701.21 532.79 197456.05 + 2 699.32 534.68 196921.37 + 3 697.43 536.57 196384.80 + 4 695.53 538.47 195846.33 + 5 693.62 540.38 195305.95 + 6 691.71 542.29 194763.66 + 7 689.79 544.21 194219.45 + 8 687.86 546.14 193673.31 + 9 685.93 548.07 193125.23 + 10 683.99 550.01 192575.22 + 11 682.04 551.96 192023.26 + 12 680.08 553.92 191469.34 +YR.=11 8288.50 6519.50 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 678.12 555.88 190913.46 + 2 676.15 557.85 190355.61 + 3 674.18 559.82 189795.79 + 4 672.19 561.81 189233.98 + 5 670.20 563.80 188670.18 + 6 668.21 565.79 188104.39 + 7 666.20 567.80 187536.59 + 8 664.19 569.81 186966.79 + 9 662.17 571.83 186394.96 + 10 660.15 573.85 185821.11 + 11 658.12 575.88 185245.23 + 12 656.08 577.92 184667.30 +YR.=12 8005.96 6802.04 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 654.03 579.97 184087.33 + 2 651.98 582.02 183505.31 + 3 649.91 584.09 182921.22 + 4 647.85 586.15 182335.07 + 5 645.77 588.23 181746.84 + 6 643.69 590.31 181156.53 + 7 641.60 592.40 180564.12 + 8 639.50 594.50 179969.62 + 9 637.39 596.61 179373.01 + 10 635.28 598.72 178774.29 + 11 633.16 600.84 178173.45 + 12 631.03 602.97 177570.48 +YR.=13 7711.18 7096.82 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 628.90 605.10 176965.38 + 2 626.75 607.25 176358.13 + 3 624.60 609.40 175748.73 + 4 622.44 611.56 175137.18 + 5 620.28 613.72 174523.45 + 6 618.10 615.90 173907.56 + 7 615.92 618.08 173289.48 + 8 613.73 620.27 172669.21 + 9 611.54 622.46 172046.75 + 10 609.33 624.67 171422.08 + 11 607.12 626.88 170795.20 + 12 604.90 629.10 170166.10 +YR.=14 7403.62 7404.38 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 602.67 631.33 169534.77 + 2 600.44 633.56 168901.21 + 3 598.19 635.81 168265.40 + 4 595.94 638.06 167627.34 + 5 593.68 640.32 166987.02 + 6 591.41 642.59 166344.43 + 7 589.14 644.86 165699.57 + 8 586.85 647.15 165052.42 + 9 584.56 649.44 164402.98 + 10 582.26 651.74 163751.24 + 11 579.95 654.05 163097.20 + 12 577.64 656.36 162440.83 +YR.=15 7082.73 7725.27 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 575.31 658.69 161782.14 + 2 572.98 661.02 161121.12 + 3 570.64 663.36 160457.76 + 4 568.29 665.71 159792.05 + 5 565.93 668.07 159123.98 + 6 563.56 670.44 158453.54 + 7 561.19 672.81 157780.73 + 8 558.81 675.19 157105.54 + 9 556.42 677.58 156427.95 + 10 554.02 679.98 155747.97 + 11 551.61 682.39 155065.58 + 12 549.19 684.81 154380.77 +YR.=16 6747.93 8060.07 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 546.77 687.23 153693.53 + 2 544.33 689.67 153003.86 + 3 541.89 692.11 152311.75 + 4 539.44 694.56 151617.19 + 5 536.98 697.02 150920.17 + 6 534.51 699.49 150220.68 + 7 532.03 701.97 149518.71 + 8 529.55 704.45 148814.25 + 9 527.05 706.95 148107.30 + 10 524.55 709.45 147397.85 + 11 522.03 711.97 146685.88 + 12 519.51 714.49 145971.40 +YR.=17 6398.63 8409.37 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 516.98 717.02 145254.38 + 2 514.44 719.56 144534.82 + 3 511.89 722.11 143812.71 + 4 509.34 724.66 143088.05 + 5 506.77 727.23 142360.82 + 6 504.19 729.81 141631.02 + 7 501.61 732.39 140898.63 + 8 499.02 734.98 140163.64 + 9 496.41 737.59 139426.05 + 10 493.80 740.20 138685.86 + 11 491.18 742.82 137943.03 + 12 488.55 745.45 137197.58 +YR.=18 6034.19 8773.81 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 485.91 748.09 136449.49 + 2 483.26 750.74 135698.75 + 3 480.60 753.40 134945.35 + 4 477.93 756.07 134189.28 + 5 475.25 758.75 133430.53 + 6 472.57 761.43 132669.10 + 7 469.87 764.13 131904.97 + 8 467.16 766.84 131138.13 + 9 464.45 769.55 130368.58 + 10 461.72 772.28 129596.30 + 11 458.99 775.01 128821.29 + 12 456.24 777.76 128043.53 +YR.=19 5653.95 9154.05 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 453.49 780.51 127263.02 + 2 450.72 783.28 126479.74 + 3 447.95 786.05 125693.69 + 4 445.17 788.83 124904.86 + 5 442.37 791.63 124113.23 + 6 439.57 794.43 123318.80 + 7 436.75 797.25 122521.55 + 8 433.93 800.07 121721.48 + 9 431.10 802.90 120918.58 + 10 428.25 805.75 120112.83 + 11 425.40 808.60 119304.23 + 12 422.54 811.46 118492.77 +YR.=20 5257.23 9550.77 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 419.66 814.34 117678.43 + 2 416.78 817.22 116861.21 + 3 413.88 820.12 116041.09 + 4 410.98 823.02 115218.07 + 5 408.06 825.94 114392.13 + 6 405.14 828.86 113563.27 + 7 402.20 831.80 112731.47 + 8 399.26 834.74 111896.73 + 9 396.30 837.70 111059.03 + 10 393.33 840.67 110218.37 + 11 390.36 843.64 109374.72 + 12 387.37 846.63 108528.09 +YR.=21 4843.33 9964.67 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 384.37 849.63 107678.46 + 2 381.36 852.64 106825.82 + 3 378.34 855.66 105970.17 + 4 375.31 858.69 105111.48 + 5 372.27 861.73 104249.75 + 6 369.22 864.78 103384.96 + 7 366.16 867.84 102517.12 + 8 363.08 870.92 101646.20 + 9 360.00 874.00 100772.20 + 10 356.90 877.10 99895.10 + 11 353.80 880.20 99014.89 + 12 350.68 883.32 98131.57 +YR.=22 4411.48 10396.52 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 347.55 886.45 97245.12 + 2 344.41 889.59 96355.53 + 3 341.26 892.74 95462.79 + 4 338.10 895.90 94566.89 + 5 334.92 899.08 93667.81 + 6 331.74 902.26 92765.55 + 7 328.54 905.46 91860.10 + 8 325.34 908.66 90951.43 + 9 322.12 911.88 90039.55 + 10 318.89 915.11 89124.44 + 11 315.65 918.35 88206.09 + 12 312.40 921.60 87284.49 +YR.=23 3960.92 10847.08 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 309.13 924.87 86359.62 + 2 305.86 928.14 85431.48 + 3 302.57 931.43 84500.05 + 4 299.27 934.73 83565.32 + 5 295.96 938.04 82627.28 + 6 292.64 941.36 81685.92 + 7 289.30 944.70 80741.22 + 8 285.96 948.04 79793.18 + 9 282.60 951.40 78841.78 + 10 279.23 954.77 77887.01 + 11 275.85 958.15 76928.86 + 12 272.46 961.54 75967.32 +YR.=24 3490.83 11317.17 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 269.05 964.95 75002.37 + 2 265.63 968.37 74034.01 + 3 262.20 971.80 73062.21 + 4 258.76 975.24 72086.97 + 5 255.31 978.69 71108.28 + 6 251.84 982.16 70126.12 + 7 248.36 985.64 69140.48 + 8 244.87 989.13 68151.36 + 9 241.37 992.63 67158.73 + 10 237.85 996.15 66162.58 + 11 234.33 999.67 65162.91 + 12 230.79 1003.21 64159.69 +YR.=25 3000.37 11807.63 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 227.23 1006.77 63152.92 + 2 223.67 1010.33 62142.59 + 3 220.09 1013.91 61128.68 + 4 216.50 1017.50 60111.18 + 5 212.89 1021.11 59090.07 + 6 209.28 1024.72 58065.35 + 7 205.65 1028.35 57036.99 + 8 202.01 1031.99 56005.00 + 9 198.35 1035.65 54969.35 + 10 194.68 1039.32 53930.03 + 11 191.00 1043.00 52887.04 + 12 187.31 1046.69 51840.35 +YR.=26 2488.65 12319.35 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 183.60 1050.40 50789.95 + 2 179.88 1054.12 49735.83 + 3 176.15 1057.85 48677.98 + 4 172.40 1061.60 47616.38 + 5 168.64 1065.36 46551.02 + 6 164.87 1069.13 45481.89 + 7 161.08 1072.92 44408.97 + 8 157.28 1076.72 43332.25 + 9 153.47 1080.53 42251.72 + 10 149.64 1084.36 41167.36 + 11 145.80 1088.20 40079.16 + 12 141.95 1092.05 38987.11 +YR.=27 1954.76 12853.24 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 138.08 1095.92 37891.19 + 2 134.20 1099.80 36791.38 + 3 130.30 1103.70 35687.69 + 4 126.39 1107.61 34580.08 + 5 122.47 1111.53 33468.55 + 6 118.53 1115.47 32353.09 + 7 114.58 1119.42 31233.67 + 8 110.62 1123.38 30110.29 + 9 106.64 1127.36 28982.93 + 10 102.65 1131.35 27851.58 + 11 98.64 1135.36 26716.22 + 12 94.62 1139.38 25576.84 +YR.=28 1397.73 13410.27 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 90.58 1143.42 24433.42 + 2 86.54 1147.46 23285.96 + 3 82.47 1151.53 22134.43 + 4 78.39 1155.61 20978.82 + 5 74.30 1159.70 19819.12 + 6 70.19 1163.81 18655.32 + 7 66.07 1167.93 17487.39 + 8 61.93 1172.07 16315.32 + 9 57.78 1176.22 15139.10 + 10 53.62 1180.38 13958.72 + 11 49.44 1184.56 12774.16 + 12 45.24 1188.76 11585.40 +YR.=29 816.56 13991.44 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 41.03 1192.97 10392.43 + 2 36.81 1197.19 9195.24 + 3 32.57 1201.43 7993.81 + 4 28.31 1205.69 6788.12 + 5 24.04 1209.96 5578.16 + 6 19.76 1214.24 4363.91 + 7 15.46 1218.54 3145.37 + 8 11.14 1222.86 1922.51 + 9 6.81 1227.19 695.32 + 10 2.46 1231.54 -536.22 + 11 -1.90 1235.90 -1772.12 + 12 -6.28 -3012.39 0.00 +FINAL PAYMENT = -$3018.67 diff --git a/BP100/MORTGAGE.dif b/BP100/MORTGAGE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/MORTGAGE.run b/BP100/MORTGAGE.run new file mode 100644 index 0000000..772bd29 --- /dev/null +++ b/BP100/MORTGAGE.run @@ -0,0 +1,465 @@ + MORTGAGE AMORTIZATION + +THIS PROGRAM WILL PRINT A TABLE DESCRIBING MORTGAGE REPAYMENT. +INPUT IS THE MORTGAGE PRINCIPAL,MONTHLY PAYMENT,TERM IN YEARS, +AND ANNUAL INTEREST RATE. +OUTPUT INCLUDES,FOR EACH PAYMENT, AMOUNT AMORTIZED,AMOUNT OF +INTEREST, AND BALANCE LEFT ON MORTGAGE. + +IS DELAY AFTER EACH YEAR DESIRED(Y/N)? N +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER TO BEGIN? +MORTGAGE PRINCIPAL = ? 250000 +MONTHLY PAYMENT = ? 1234 +TERM OF MORTGAGE = ? 30 +ANNUAL INT. RATE(%)= ? 4.25 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 885.42 348.58 249651.42 + 2 884.18 349.82 249301.60 + 3 882.94 351.06 248950.54 + 4 881.70 352.30 248598.24 + 5 880.45 353.55 248244.69 + 6 879.20 354.80 247889.89 + 7 877.94 356.06 247533.84 + 8 876.68 357.32 247176.52 + 9 875.42 358.58 246817.94 + 10 874.15 359.85 246458.08 + 11 872.87 361.13 246096.96 + 12 871.59 362.41 245734.55 +YR.= 1 10542.55 4265.45 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 870.31 363.69 245370.86 + 2 869.02 364.98 245005.88 + 3 867.73 366.27 244639.61 + 4 866.43 367.57 244272.04 + 5 865.13 368.87 243903.17 + 6 863.82 370.18 243533.00 + 7 862.51 371.49 243161.51 + 8 861.20 372.80 242788.71 + 9 859.88 374.12 242414.58 + 10 858.55 375.45 242039.13 + 11 857.22 376.78 241662.36 + 12 855.89 378.11 241284.24 +YR.= 2 10357.69 4450.31 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 854.55 379.45 240904.79 + 2 853.20 380.80 240524.00 + 3 851.86 382.14 240141.85 + 4 850.50 383.50 239758.35 + 5 849.14 384.86 239373.50 + 6 847.78 386.22 238987.28 + 7 846.41 387.59 238599.69 + 8 845.04 388.96 238210.73 + 9 843.66 390.34 237820.40 + 10 842.28 391.72 237428.68 + 11 840.89 393.11 237035.57 + 12 839.50 394.50 236641.07 +YR.= 3 10164.83 4643.17 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 838.10 395.90 236245.17 + 2 836.70 397.30 235847.88 + 3 835.29 398.71 235449.17 + 4 833.88 400.12 235049.05 + 5 832.47 401.53 234647.52 + 6 831.04 402.96 234244.56 + 7 829.62 404.38 233840.18 + 8 828.18 405.82 233434.36 + 9 826.75 407.25 233027.11 + 10 825.30 408.70 232618.41 + 11 823.86 410.14 232208.27 + 12 822.40 411.60 231796.67 +YR.= 4 9963.60 4844.40 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 820.95 413.05 231383.62 + 2 819.48 414.52 230969.10 + 3 818.02 415.98 230553.12 + 4 816.54 417.46 230135.66 + 5 815.06 418.94 229716.73 + 6 813.58 420.42 229296.31 + 7 812.09 421.91 228874.40 + 8 810.60 423.40 228450.99 + 9 809.10 424.90 228026.09 + 10 807.59 426.41 227599.68 + 11 806.08 427.92 227171.77 + 12 804.57 429.43 226742.33 +YR.= 5 9753.66 5054.34 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 803.05 430.95 226311.38 + 2 801.52 432.48 225878.90 + 3 799.99 434.01 225444.89 + 4 798.45 435.55 225009.34 + 5 796.91 437.09 224572.24 + 6 795.36 438.64 224133.60 + 7 793.81 440.19 223693.41 + 8 792.25 441.75 223251.66 + 9 790.68 443.32 222808.34 + 10 789.11 444.89 222363.45 + 11 787.54 446.46 221916.99 + 12 785.96 448.04 221468.95 +YR.= 6 9534.61 5273.39 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 784.37 449.63 221019.32 + 2 782.78 451.22 220568.09 + 3 781.18 452.82 220115.27 + 4 779.57 454.43 219660.85 + 5 777.97 456.03 219204.81 + 6 776.35 457.65 218747.16 + 7 774.73 459.27 218287.89 + 8 773.10 460.90 217827.00 + 9 771.47 462.53 217364.47 + 10 769.83 464.17 216900.30 + 11 768.19 465.81 216434.49 + 12 766.54 467.46 215967.03 +YR.= 7 9306.08 5501.92 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 764.88 469.12 215497.91 + 2 763.22 470.78 215027.13 + 3 761.55 472.45 214554.69 + 4 759.88 474.12 214080.57 + 5 758.20 475.80 213604.77 + 6 756.52 477.48 213127.29 + 7 754.83 479.17 212648.11 + 8 753.13 480.87 212167.24 + 9 751.43 482.57 211684.67 + 10 749.72 484.28 211200.38 + 11 748.00 486.00 210714.38 + 12 746.28 487.72 210226.66 +YR.= 8 9067.64 5740.36 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 744.55 489.45 209737.22 + 2 742.82 491.18 209246.04 + 3 741.08 492.92 208753.12 + 4 739.33 494.67 208258.45 + 5 737.58 496.42 207762.03 + 6 735.82 498.18 207263.86 + 7 734.06 499.94 206763.92 + 8 732.29 501.71 206262.20 + 9 730.51 503.49 205758.72 + 10 728.73 505.27 205253.44 + 11 726.94 507.06 204746.38 + 12 725.14 508.86 204237.53 +YR.= 9 8818.86 5989.14 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 723.34 510.66 203726.87 + 2 721.53 512.47 203214.40 + 3 719.72 514.28 202700.12 + 4 717.90 516.10 202184.02 + 5 716.07 517.93 201666.08 + 6 714.23 519.77 201146.32 + 7 712.39 521.61 200624.71 + 8 710.55 523.45 200101.26 + 9 708.69 525.31 199575.95 + 10 706.83 527.17 199048.78 + 11 704.96 529.04 198519.74 + 12 703.09 530.91 197988.84 +YR.=10 8559.31 6248.69 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 701.21 532.79 197456.05 + 2 699.32 534.68 196921.37 + 3 697.43 536.57 196384.80 + 4 695.53 538.47 195846.33 + 5 693.62 540.38 195305.95 + 6 691.71 542.29 194763.66 + 7 689.79 544.21 194219.45 + 8 687.86 546.14 193673.31 + 9 685.93 548.07 193125.23 + 10 683.99 550.01 192575.22 + 11 682.04 551.96 192023.26 + 12 680.08 553.92 191469.34 +YR.=11 8288.50 6519.50 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 678.12 555.88 190913.46 + 2 676.15 557.85 190355.61 + 3 674.18 559.82 189795.79 + 4 672.19 561.81 189233.98 + 5 670.20 563.80 188670.18 + 6 668.21 565.79 188104.39 + 7 666.20 567.80 187536.59 + 8 664.19 569.81 186966.79 + 9 662.17 571.83 186394.96 + 10 660.15 573.85 185821.11 + 11 658.12 575.88 185245.23 + 12 656.08 577.92 184667.30 +YR.=12 8005.96 6802.04 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 654.03 579.97 184087.33 + 2 651.98 582.02 183505.31 + 3 649.91 584.09 182921.22 + 4 647.85 586.15 182335.07 + 5 645.77 588.23 181746.84 + 6 643.69 590.31 181156.53 + 7 641.60 592.40 180564.12 + 8 639.50 594.50 179969.62 + 9 637.39 596.61 179373.01 + 10 635.28 598.72 178774.29 + 11 633.16 600.84 178173.45 + 12 631.03 602.97 177570.48 +YR.=13 7711.18 7096.82 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 628.90 605.10 176965.38 + 2 626.75 607.25 176358.13 + 3 624.60 609.40 175748.73 + 4 622.44 611.56 175137.18 + 5 620.28 613.72 174523.45 + 6 618.10 615.90 173907.56 + 7 615.92 618.08 173289.48 + 8 613.73 620.27 172669.21 + 9 611.54 622.46 172046.75 + 10 609.33 624.67 171422.08 + 11 607.12 626.88 170795.20 + 12 604.90 629.10 170166.10 +YR.=14 7403.62 7404.38 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 602.67 631.33 169534.77 + 2 600.44 633.56 168901.21 + 3 598.19 635.81 168265.40 + 4 595.94 638.06 167627.34 + 5 593.68 640.32 166987.02 + 6 591.41 642.59 166344.43 + 7 589.14 644.86 165699.57 + 8 586.85 647.15 165052.42 + 9 584.56 649.44 164402.98 + 10 582.26 651.74 163751.24 + 11 579.95 654.05 163097.20 + 12 577.64 656.36 162440.83 +YR.=15 7082.73 7725.27 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 575.31 658.69 161782.14 + 2 572.98 661.02 161121.12 + 3 570.64 663.36 160457.76 + 4 568.29 665.71 159792.05 + 5 565.93 668.07 159123.98 + 6 563.56 670.44 158453.54 + 7 561.19 672.81 157780.73 + 8 558.81 675.19 157105.54 + 9 556.42 677.58 156427.95 + 10 554.02 679.98 155747.97 + 11 551.61 682.39 155065.58 + 12 549.19 684.81 154380.77 +YR.=16 6747.93 8060.07 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 546.77 687.23 153693.53 + 2 544.33 689.67 153003.86 + 3 541.89 692.11 152311.75 + 4 539.44 694.56 151617.19 + 5 536.98 697.02 150920.17 + 6 534.51 699.49 150220.68 + 7 532.03 701.97 149518.71 + 8 529.55 704.45 148814.25 + 9 527.05 706.95 148107.30 + 10 524.55 709.45 147397.85 + 11 522.03 711.97 146685.88 + 12 519.51 714.49 145971.40 +YR.=17 6398.63 8409.37 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 516.98 717.02 145254.38 + 2 514.44 719.56 144534.82 + 3 511.89 722.11 143812.71 + 4 509.34 724.66 143088.05 + 5 506.77 727.23 142360.82 + 6 504.19 729.81 141631.02 + 7 501.61 732.39 140898.63 + 8 499.02 734.98 140163.64 + 9 496.41 737.59 139426.05 + 10 493.80 740.20 138685.86 + 11 491.18 742.82 137943.03 + 12 488.55 745.45 137197.58 +YR.=18 6034.19 8773.81 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 485.91 748.09 136449.49 + 2 483.26 750.74 135698.75 + 3 480.60 753.40 134945.35 + 4 477.93 756.07 134189.28 + 5 475.25 758.75 133430.53 + 6 472.57 761.43 132669.10 + 7 469.87 764.13 131904.97 + 8 467.16 766.84 131138.13 + 9 464.45 769.55 130368.58 + 10 461.72 772.28 129596.30 + 11 458.99 775.01 128821.29 + 12 456.24 777.76 128043.53 +YR.=19 5653.95 9154.05 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 453.49 780.51 127263.02 + 2 450.72 783.28 126479.74 + 3 447.95 786.05 125693.69 + 4 445.17 788.83 124904.86 + 5 442.37 791.63 124113.23 + 6 439.57 794.43 123318.80 + 7 436.75 797.25 122521.55 + 8 433.93 800.07 121721.48 + 9 431.10 802.90 120918.58 + 10 428.25 805.75 120112.83 + 11 425.40 808.60 119304.23 + 12 422.54 811.46 118492.77 +YR.=20 5257.23 9550.77 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 419.66 814.34 117678.43 + 2 416.78 817.22 116861.21 + 3 413.88 820.12 116041.09 + 4 410.98 823.02 115218.07 + 5 408.06 825.94 114392.13 + 6 405.14 828.86 113563.27 + 7 402.20 831.80 112731.47 + 8 399.26 834.74 111896.73 + 9 396.30 837.70 111059.03 + 10 393.33 840.67 110218.37 + 11 390.36 843.64 109374.72 + 12 387.37 846.63 108528.09 +YR.=21 4843.33 9964.67 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 384.37 849.63 107678.46 + 2 381.36 852.64 106825.82 + 3 378.34 855.66 105970.17 + 4 375.31 858.69 105111.48 + 5 372.27 861.73 104249.75 + 6 369.22 864.78 103384.96 + 7 366.16 867.84 102517.12 + 8 363.08 870.92 101646.20 + 9 360.00 874.00 100772.20 + 10 356.90 877.10 99895.10 + 11 353.80 880.20 99014.89 + 12 350.68 883.32 98131.57 +YR.=22 4411.48 10396.52 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 347.55 886.45 97245.12 + 2 344.41 889.59 96355.53 + 3 341.26 892.74 95462.79 + 4 338.10 895.90 94566.89 + 5 334.92 899.08 93667.81 + 6 331.74 902.26 92765.55 + 7 328.54 905.46 91860.10 + 8 325.34 908.66 90951.43 + 9 322.12 911.88 90039.55 + 10 318.89 915.11 89124.44 + 11 315.65 918.35 88206.09 + 12 312.40 921.60 87284.49 +YR.=23 3960.92 10847.08 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 309.13 924.87 86359.62 + 2 305.86 928.14 85431.48 + 3 302.57 931.43 84500.05 + 4 299.27 934.73 83565.32 + 5 295.96 938.04 82627.28 + 6 292.64 941.36 81685.92 + 7 289.30 944.70 80741.22 + 8 285.96 948.04 79793.18 + 9 282.60 951.40 78841.78 + 10 279.23 954.77 77887.01 + 11 275.85 958.15 76928.86 + 12 272.46 961.54 75967.32 +YR.=24 3490.83 11317.17 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 269.05 964.95 75002.37 + 2 265.63 968.37 74034.01 + 3 262.20 971.80 73062.21 + 4 258.76 975.24 72086.97 + 5 255.31 978.69 71108.28 + 6 251.84 982.16 70126.12 + 7 248.36 985.64 69140.48 + 8 244.87 989.13 68151.36 + 9 241.37 992.63 67158.73 + 10 237.85 996.15 66162.58 + 11 234.33 999.67 65162.91 + 12 230.79 1003.21 64159.69 +YR.=25 3000.37 11807.63 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 227.23 1006.77 63152.92 + 2 223.67 1010.33 62142.59 + 3 220.09 1013.91 61128.68 + 4 216.50 1017.50 60111.18 + 5 212.89 1021.11 59090.07 + 6 209.28 1024.72 58065.35 + 7 205.65 1028.35 57036.99 + 8 202.01 1031.99 56005.00 + 9 198.35 1035.65 54969.35 + 10 194.68 1039.32 53930.03 + 11 191.00 1043.00 52887.04 + 12 187.31 1046.69 51840.35 +YR.=26 2488.65 12319.35 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 183.60 1050.40 50789.95 + 2 179.88 1054.12 49735.83 + 3 176.15 1057.85 48677.98 + 4 172.40 1061.60 47616.38 + 5 168.64 1065.36 46551.02 + 6 164.87 1069.13 45481.89 + 7 161.08 1072.92 44408.97 + 8 157.28 1076.72 43332.25 + 9 153.47 1080.53 42251.72 + 10 149.64 1084.36 41167.36 + 11 145.80 1088.20 40079.16 + 12 141.95 1092.05 38987.11 +YR.=27 1954.76 12853.24 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 138.08 1095.92 37891.19 + 2 134.20 1099.80 36791.38 + 3 130.30 1103.70 35687.69 + 4 126.39 1107.61 34580.08 + 5 122.47 1111.53 33468.55 + 6 118.53 1115.47 32353.09 + 7 114.58 1119.42 31233.67 + 8 110.62 1123.38 30110.29 + 9 106.64 1127.36 28982.93 + 10 102.65 1131.35 27851.58 + 11 98.64 1135.36 26716.22 + 12 94.62 1139.38 25576.84 +YR.=28 1397.73 13410.27 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 90.58 1143.42 24433.42 + 2 86.54 1147.46 23285.96 + 3 82.47 1151.53 22134.43 + 4 78.39 1155.61 20978.82 + 5 74.30 1159.70 19819.12 + 6 70.19 1163.81 18655.32 + 7 66.07 1167.93 17487.39 + 8 61.93 1172.07 16315.32 + 9 57.78 1176.22 15139.10 + 10 53.62 1180.38 13958.72 + 11 49.44 1184.56 12774.16 + 12 45.24 1188.76 11585.40 +YR.=29 816.56 13991.44 +PRIN.=$250000.00 PAYMENT=$1234.00 TERM= 30.00 YRS RATE= 4.2 % + NO. INTEREST AMORTIZED BALANCE + 1 41.03 1192.97 10392.43 + 2 36.81 1197.19 9195.24 + 3 32.57 1201.43 7993.81 + 4 28.31 1205.69 6788.12 + 5 24.04 1209.96 5578.16 + 6 19.76 1214.24 4363.91 + 7 15.46 1218.54 3145.37 + 8 11.14 1222.86 1922.51 + 9 6.81 1227.19 695.32 + 10 2.46 1231.54 -536.22 + 11 -1.90 1235.90 -1772.12 + 12 -6.28 -3012.39 0.00 +FINAL PAYMENT = -$3018.67 diff --git a/BP100/MULTMON.80 b/BP100/MULTMON.80 new file mode 100644 index 0000000..02cba7b --- /dev/null +++ b/BP100/MULTMON.80 @@ -0,0 +1,75 @@ + MONEY MULTIPLIER + +THIS PROGRAM COMPUTES HOW LONG IT WILL TAKE AN INVESTOR +TO DOUBLE,TRIPLE, MULTIPLY BY 4, ETC. HIS/HER MONEY INVESTED +AT A KNOWN INTEREST RATE. + +COMPUTATIONS MAY BE DONE WHEN RATES ARE QUOTED ANNUALYY OR +PER PERIOD(TIME BETWEEN COMPOUNDINGS). IN THE ANNUAL CASE +IT IS NECESSARY TO GIVE THE NUMBER OF TIMES PER YEAR +INTEREST IS COMPOUNDED(NUMBER OF INTEREST PERIODS). + +PRESS ENTER TO BEGIN ? + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 1 +ENTER ANNUAL INTEREST RATE IN %, E.G. 5% ENTERED AS 5? 3.75 + +WE NOW WANT THE NUMBER OF COMPOUNDING PERIODS PER YEAR. +IF THIS IS DAILY THEN SOME BANKS USE 360 & SOME 365 +ENTER NUMBER? 12 + +ENTER THE FACTOR BY WHICH YOU DESIRE TO INCREASE YOUR FUNDS. +E.G. TO DOUBLE INPUT 2,TRIPLE 3, ETC. ? 10 + + + +INTEREST RATE & TIME MEASURED ANNUALLY + +ANNUAL INTEREST RATE EQUALS 3.75 PER CENT +INTEREST COMPOUNDED 12 TIMES PER YEAR + +TIME NECESSARY TO MULTIPLY ACCOUNT BY 10 EQUALS 61.4982 YEARS + +ACTUALLY THIS TAKES BETWEEN 737 AND 738 INTEREST PERIODS +OR BETWEEN 61.4167 AND 61.5 YEARS + THE EXACT AMOUNT OF TIME NEEDED DEPENDS UPON HOW INTEREST +IS CREDITED WITHIN AN INTEREST PERIOD. + +ENTER Y FOR MORE COMPUTATIONS, N TO END ? Y + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 2 +ENTER INTEREST RATE PER PERIOD IN % ,E.G. 5% ENTERED AS 5? 1.25 + +ENTER THE FACTOR BY WHICH YOU DESIRE TO INCREASE YOUR FUNDS. +E.G. TO DOUBLE INPUT 2,TRIPLE 3, ETC. ? 3 + + + +INTEREST RATE AND TIME MEASURED PER PERIOD + +PER PERIOD INTEREST RATE EQUALS 1.25 PER CENT + +TIME NEEDED TO MULTIPLY ACCOUNT BY 3 EQUALS 88.4372 INTEREST PERIODS + +ACTUALLY THIS TAKES BETWEEN 88 AND 89 INTEREST PERIODS + THE EXACT AMOUNT OF TIME NEEDED DEPENDS UPON HOW INTEREST +IS CREDITED WITHIN AN INTEREST PERIOD. + +ENTER Y FOR MORE COMPUTATIONS, N TO END ? Y + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 0 diff --git a/BP100/MULTMON.BAS b/BP100/MULTMON.BAS new file mode 100644 index 0000000..d80ee1f --- /dev/null +++ b/BP100/MULTMON.BAS @@ -0,0 +1,66 @@ +1 REM MULTMON +5 CLS +10 PRINT TAB(10); "MONEY MULTIPLIER":PRINT +20 PRINT "THIS PROGRAM COMPUTES HOW LONG IT WILL TAKE AN INVESTOR +30 PRINT "TO DOUBLE,TRIPLE, MULTIPLY BY 4, ETC. HIS/HER MONEY INVESTED +35 PRINT "AT A KNOWN INTEREST RATE. +37 PRINT +40 PRINT "COMPUTATIONS MAY BE DONE WHEN RATES ARE QUOTED ANNUALYY OR +50 PRINT "PER PERIOD(TIME BETWEEN COMPOUNDINGS). IN THE ANNUAL CASE +60 PRINT "IT IS NECESSARY TO GIVE THE NUMBER OF TIMES PER YEAR +70 PRINT "INTEREST IS COMPOUNDED(NUMBER OF INTEREST PERIODS). +80 PRINT +90 INPUT "PRESS ENTER TO BEGIN ";Z9$ +100 CLS:CLEAR 400 +110 PRINT " DOUBLE MONEY MENU":PRINT +115 PRINT "0. QUIT" +120 PRINT "1. INTEREST RATES & TIME MEASURED ANNUALLY" +130 PRINT "2. INTEREST RATES & TIME MEASURED BY PERIOD +140 PRINT :INPUT "ENTER YOUR CHOICE";Z9 +145 IF Z9 = 0 THEN END +150 IF Z9<>1 AND Z9<>2 THEN GOSUB 10000:GOTO 100 +160 ON Z9 GOTO 1000,1500 +1000 REM ANNUAL INTEREST RATE USED +1010 INPUT "ENTER ANNUAL INTEREST RATE IN %, E.G. 5% ENTERED AS 5";P:P=P/100 +1030 PRINT +1040 PRINT "WE NOW WANT THE NUMBER OF COMPOUNDING PERIODS PER YEAR. +1045 PRINT "IF THIS IS DAILY THEN SOME BANKS USE 360 & SOME 365" +1050 INPUT "ENTER NUMBER";NC +1052 PRINT :PRINT "ENTER THE FACTOR BY WHICH YOU DESIRE TO INCREASE YOUR FUNDS. +1053 PRINT "E.G. TO DOUBLE INPUT 2,TRIPLE 3, ETC. ";:INPUT NF +1060 NI=LOG(NF)/LOG(1+P/NC):NY=NI/NC +1080 CLS:PRINT :PRINT :PRINT +1090 PRINT "INTEREST RATE & TIME MEASURED ANNUALLY":PRINT +1100 PRINT "ANNUAL INTEREST RATE EQUALS ";100*P;"PER CENT" +1110 PRINT "INTEREST COMPOUNDED ";NC;"TIMES PER YEAR":PRINT +1120 PRINT "TIME NECESSARY TO MULTIPLY ACCOUNT BY";NF;"EQUALS ";NY; "YEARS" +1130 PRINT :PRINT "ACTUALLY THIS TAKES BETWEEN ";INT(NI);" AND"; INT(NI)+1;" INTEREST PERIODS +1140 PRINT "OR BETWEEN ";INT(NI)/NC;" AND";(INT(NI)+1)/NC;" YEARS +1150 PRINT " THE EXACT AMOUNT OF TIME NEEDED DEPENDS UPON HOW INTEREST +1160 PRINT "IS CREDITED WITHIN AN INTEREST PERIOD. +1170 PRINT +1190 GOTO 2000 +1200 RETURN +1500 REM INTEREST RATE PER PERIOD USED +1510 INPUT "ENTER INTEREST RATE PER PERIOD IN % ,E.G. 5% ENTERED AS 5";P: P=P/100 +1515 PRINT :PRINT "ENTER THE FACTOR BY WHICH YOU DESIRE TO INCREASE YOUR FUNDS. +1517 PRINT "E.G. TO DOUBLE INPUT 2,TRIPLE 3, ETC. ";:INPUT NF +1520 N= LOG(NF)/LOG(1+P) +1522 CLS:PRINT :PRINT :PRINT +1524 PRINT "INTEREST RATE AND TIME MEASURED PER PERIOD":PRINT +1526 PRINT "PER PERIOD INTEREST RATE EQUALS ";100*P;"PER CENT" +1528 PRINT +1530 PRINT "TIME NEEDED TO MULTIPLY ACCOUNT BY";NF;"EQUALS ";N;" INTEREST PERIODS":PRINT +1540 PRINT "ACTUALLY THIS TAKES BETWEEN ";INT(N);"AND";INT(N)+1;"INTEREST PERIODS +1550 PRINT " THE EXACT AMOUNT OF TIME NEEDED DEPENDS UPON HOW INTEREST +1560 PRINT "IS CREDITED WITHIN AN INTEREST PERIOD." +1590 PRINT :GOTO 2000 +1610 PRINT +2000 INPUT "ENTER Y FOR MORE COMPUTATIONS, N TO END ";Z9$ +2010 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 2000 +2020 IF Z9$="Y" THEN GOTO 100 +2030 END +10000 PRINT "INPUT ERROR! TRY AGAIN!" +10010 FOR JJ=1 TO 300: NEXT JJ +10020 RETURN + diff --git a/BP100/MULTMON.INP b/BP100/MULTMON.INP new file mode 100644 index 0000000..923c881 --- /dev/null +++ b/BP100/MULTMON.INP @@ -0,0 +1,11 @@ + +1 +3.75 +12 +10 +Y +2 +1.25 +3 +Y +0 diff --git a/BP100/MULTMON.OUT b/BP100/MULTMON.OUT new file mode 100644 index 0000000..9faa561 --- /dev/null +++ b/BP100/MULTMON.OUT @@ -0,0 +1,75 @@ + MONEY MULTIPLIER + +THIS PROGRAM COMPUTES HOW LONG IT WILL TAKE AN INVESTOR +TO DOUBLE,TRIPLE, MULTIPLY BY 4, ETC. HIS/HER MONEY INVESTED +AT A KNOWN INTEREST RATE. + +COMPUTATIONS MAY BE DONE WHEN RATES ARE QUOTED ANNUALYY OR +PER PERIOD(TIME BETWEEN COMPOUNDINGS). IN THE ANNUAL CASE +IT IS NECESSARY TO GIVE THE NUMBER OF TIMES PER YEAR +INTEREST IS COMPOUNDED(NUMBER OF INTEREST PERIODS). + +PRESS ENTER TO BEGIN ? + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 1 +ENTER ANNUAL INTEREST RATE IN %, E.G. 5% ENTERED AS 5? 3.75 + +WE NOW WANT THE NUMBER OF COMPOUNDING PERIODS PER YEAR. +IF THIS IS DAILY THEN SOME BANKS USE 360 & SOME 365 +ENTER NUMBER? 12 + +ENTER THE FACTOR BY WHICH YOU DESIRE TO INCREASE YOUR FUNDS. +E.G. TO DOUBLE INPUT 2,TRIPLE 3, ETC. ? 10 + + + +INTEREST RATE & TIME MEASURED ANNUALLY + +ANNUAL INTEREST RATE EQUALS 3.75 PER CENT +INTEREST COMPOUNDED 12 TIMES PER YEAR + +TIME NECESSARY TO MULTIPLY ACCOUNT BY 10 EQUALS 61.4982 YEARS + +ACTUALLY THIS TAKES BETWEEN 737 AND 738 INTEREST PERIODS +OR BETWEEN 61.4167 AND 61.5 YEARS + THE EXACT AMOUNT OF TIME NEEDED DEPENDS UPON HOW INTEREST +IS CREDITED WITHIN AN INTEREST PERIOD. + +ENTER Y FOR MORE COMPUTATIONS, N TO END ? Y + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 2 +ENTER INTEREST RATE PER PERIOD IN % ,E.G. 5% ENTERED AS 5? 1.25 + +ENTER THE FACTOR BY WHICH YOU DESIRE TO INCREASE YOUR FUNDS. +E.G. TO DOUBLE INPUT 2,TRIPLE 3, ETC. ? 3 + + + +INTEREST RATE AND TIME MEASURED PER PERIOD + +PER PERIOD INTEREST RATE EQUALS 1.25 PER CENT + +TIME NEEDED TO MULTIPLY ACCOUNT BY 3 EQUALS 88.4372 INTEREST PERIODS + +ACTUALLY THIS TAKES BETWEEN 88 AND 89 INTEREST PERIODS + THE EXACT AMOUNT OF TIME NEEDED DEPENDS UPON HOW INTEREST +IS CREDITED WITHIN AN INTEREST PERIOD. + +ENTER Y FOR MORE COMPUTATIONS, N TO END ? Y + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 0 diff --git a/BP100/MULTMON.dif b/BP100/MULTMON.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/MULTMON.run b/BP100/MULTMON.run new file mode 100644 index 0000000..02cba7b --- /dev/null +++ b/BP100/MULTMON.run @@ -0,0 +1,75 @@ + MONEY MULTIPLIER + +THIS PROGRAM COMPUTES HOW LONG IT WILL TAKE AN INVESTOR +TO DOUBLE,TRIPLE, MULTIPLY BY 4, ETC. HIS/HER MONEY INVESTED +AT A KNOWN INTEREST RATE. + +COMPUTATIONS MAY BE DONE WHEN RATES ARE QUOTED ANNUALYY OR +PER PERIOD(TIME BETWEEN COMPOUNDINGS). IN THE ANNUAL CASE +IT IS NECESSARY TO GIVE THE NUMBER OF TIMES PER YEAR +INTEREST IS COMPOUNDED(NUMBER OF INTEREST PERIODS). + +PRESS ENTER TO BEGIN ? + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 1 +ENTER ANNUAL INTEREST RATE IN %, E.G. 5% ENTERED AS 5? 3.75 + +WE NOW WANT THE NUMBER OF COMPOUNDING PERIODS PER YEAR. +IF THIS IS DAILY THEN SOME BANKS USE 360 & SOME 365 +ENTER NUMBER? 12 + +ENTER THE FACTOR BY WHICH YOU DESIRE TO INCREASE YOUR FUNDS. +E.G. TO DOUBLE INPUT 2,TRIPLE 3, ETC. ? 10 + + + +INTEREST RATE & TIME MEASURED ANNUALLY + +ANNUAL INTEREST RATE EQUALS 3.75 PER CENT +INTEREST COMPOUNDED 12 TIMES PER YEAR + +TIME NECESSARY TO MULTIPLY ACCOUNT BY 10 EQUALS 61.4982 YEARS + +ACTUALLY THIS TAKES BETWEEN 737 AND 738 INTEREST PERIODS +OR BETWEEN 61.4167 AND 61.5 YEARS + THE EXACT AMOUNT OF TIME NEEDED DEPENDS UPON HOW INTEREST +IS CREDITED WITHIN AN INTEREST PERIOD. + +ENTER Y FOR MORE COMPUTATIONS, N TO END ? Y + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 2 +ENTER INTEREST RATE PER PERIOD IN % ,E.G. 5% ENTERED AS 5? 1.25 + +ENTER THE FACTOR BY WHICH YOU DESIRE TO INCREASE YOUR FUNDS. +E.G. TO DOUBLE INPUT 2,TRIPLE 3, ETC. ? 3 + + + +INTEREST RATE AND TIME MEASURED PER PERIOD + +PER PERIOD INTEREST RATE EQUALS 1.25 PER CENT + +TIME NEEDED TO MULTIPLY ACCOUNT BY 3 EQUALS 88.4372 INTEREST PERIODS + +ACTUALLY THIS TAKES BETWEEN 88 AND 89 INTEREST PERIODS + THE EXACT AMOUNT OF TIME NEEDED DEPENDS UPON HOW INTEREST +IS CREDITED WITHIN AN INTEREST PERIOD. + +ENTER Y FOR MORE COMPUTATIONS, N TO END ? Y + DOUBLE MONEY MENU + +0. QUIT +1. INTEREST RATES & TIME MEASURED ANNUALLY +2. INTEREST RATES & TIME MEASURED BY PERIOD + +ENTER YOUR CHOICE? 0 diff --git a/BP100/NCFANAL.80 b/BP100/NCFANAL.80 new file mode 100644 index 0000000..d62bd24 --- /dev/null +++ b/BP100/NCFANAL.80 @@ -0,0 +1,73 @@ + NET CASH FLOW ANALYSIS + +WHEN INVESTING IN A NEW PROJECT A FIRM MUST TAKE INTO +ACCOUNT THE CASH FLOWS GENERATED BY THE PROJECT, BOTH POSITIVE +AND NEGATIVE. IN THIS PROGRAM WE ASSUME THAT AN ITEM IS +PURCHASED FOR A FIXED AMOUNT, TO BE DEPRECIATED OVER ITS +USEFUL LIFE VIA THE STRAIGHT-LINE METHOD. WE ESTIMATE CASH +INFLOWS AND OUTFLOWS OVER THE LIFE OF THE PROJECT. THE +PROGRAM WILL THEN PRINT A CASH FLOW TABLE +PRESS ENTER TO BEGIN? +INPUT CASH COST OF THE PROJECT ? 234567 +INPUT DEPRECIABLE COST OF THE PROJECT ? 7654 +INPUT USEFUL LIFE OF PROJECT IN YEARS ? 10 +SALVAGE VALUE AT END OF USEFUL LIFE ? 1964 +INPUT CORPORATE INCOME TAX RATE(%) ? 15 +CASH FLOWS FOR YEAR 1 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 1111 + CASH OUTFLOWS = ? 999 + +CASH FLOWS FOR YEAR 2 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 2222 + CASH OUTFLOWS = ? 888 + +CASH FLOWS FOR YEAR 3 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 3333 + CASH OUTFLOWS = ? 777 + +CASH FLOWS FOR YEAR 4 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 4444 + CASH OUTFLOWS = ? 666 + +CASH FLOWS FOR YEAR 5 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 5555 + CASH OUTFLOWS = ? 444 + +CASH FLOWS FOR YEAR 6 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 6666 + CASH OUTFLOWS = ? 333 + +CASH FLOWS FOR YEAR 7 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 7777 + CASH OUTFLOWS = ? 222 + +CASH FLOWS FOR YEAR 8 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 8888 + CASH OUTFLOWS = ? 111 + +CASH FLOWS FOR YEAR 9 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 9999 + CASH OUTFLOWS = ? 88 + +CASH FLOWS FOR YEAR 10 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 11111 + CASH OUTFLOWS = ? 77 + +DO YOU WANT LINE PRINTER OUTPUT(Y/N)? Y +YR CASH CASH DEPREC- NET TAXES NET CASH + INFLOW OUTFLOW IATION INCOME FLOW + 0 0 234567 0 0 0 -234567 + 1 1111 999 569 -457 -69 181 + 2 2222 888 569 765 115 1219 + 3 3333 777 569 1987 298 2258 + 4 4444 666 569 3209 481 3297 + 5 5555 444 569 4542 681 4430 + 6 6666 333 569 5764 865 5468 + 7 7777 222 569 6986 1048 6507 + 8 8888 111 569 8208 1231 7546 + 9 9999 88 569 9342 1401 8510 +10 11111 77 569 10465 1570 11428 + +YEAR 10 CASH FLOW INCLUDES SALVAGE VALUE SALE OF $ 1964 + +PRESS ENTER FOR MORE ? -1 diff --git a/BP100/NCFANAL.BAS b/BP100/NCFANAL.BAS new file mode 100644 index 0000000..8806030 --- /dev/null +++ b/BP100/NCFANAL.BAS @@ -0,0 +1,50 @@ +1 REM NCFANAL +5 CLEAR 1000 +10 CLS:PRINT TAB(5); "NET CASH FLOW ANALYSIS":PRINT +20 PRINT "WHEN INVESTING IN A NEW PROJECT A FIRM MUST TAKE INTO +25 PRINT "ACCOUNT THE CASH FLOWS GENERATED BY THE PROJECT, BOTH POSITIVE +30 PRINT "AND NEGATIVE. IN THIS PROGRAM WE ASSUME THAT AN ITEM IS +35 PRINT "PURCHASED FOR A FIXED AMOUNT, TO BE DEPRECIATED OVER ITS +40 PRINT "USEFUL LIFE VIA THE STRAIGHT-LINE METHOD. WE ESTIMATE CASH +45 PRINT "INFLOWS AND OUTFLOWS OVER THE LIFE OF THE PROJECT. THE +50 PRINT "PROGRAM WILL THEN PRINT A CASH FLOW TABLE" +90 INPUT "PRESS ENTER TO BEGIN";Z9$ +95 DIM CI(100),CO(100) +100 CLS +110 INPUT "INPUT CASH COST OF THE PROJECT ";CP +115 INPUT "INPUT DEPRECIABLE COST OF THE PROJECT ";CD +120 INPUT "INPUT USEFUL LIFE OF PROJECT IN YEARS ";UL +130 INPUT "SALVAGE VALUE AT END OF USEFUL LIFE ";SV +135 AD=(CD-SV)/UL:REM ANNUAL DEPRECIATION +140 INPUT "INPUT CORPORATE INCOME TAX RATE(%) ";TX:TX=TX/100 +200 CLS +210 FOR I=1 TO UL +220 PRINT "CASH FLOWS FOR YEAR ";I;" NOT INCLUDING INCOME TAXES" +230 INPUT " CASH INFLOWS = ";CI(I) +240 INPUT " CASH OUTFLOWS = ";CO(I) +250 PRINT +260 NEXT I +300 REM PRINTOUT AND COMPUTATUION +310 F$(1)="YR CASH CASH DEPREC- NET TAXES NET CASH" +320 F$(2)=" INFLOW OUTFLOW IATION INCOME FLOW " +330 F$(3)="## ####### ####### ####### ####### ######## #######" +350 INPUT "DO YOU WANT LINE PRINTER OUTPUT(Y/N)";Z2$ +360 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 350 +400 CLS +410 PRINT F$(1):PRINT F$(2):IF Z2$="Y" THEN LPRINT F$(1):LPRINT F$(2):LPRINT " " +420 PRINT USING F$(3);0,0,CP,0,0,0,-CP +425 IF Z2$="Y" THEN LPRINT USING F$(3);0,0,CP,0,0,0,-CP +430 FOR I=1 TO UL +435 NI=CI(I)-CO(I)-AD:NCF=NI+AD-NI*TX +437 IF I=UL THEN NCF=NCF+SV +440 PRINT USING F$(3);I,CI(I),CO(I),AD,NI,NI*TX,NCF +450 IF Z2$="Y" THEN LPRINT USING F$(3);I,CI(I),CO(I),AD,NI,NI*TX,NCF +460 IF I/12=INT(I/12) THEN PRINT :GOSUB 10100:CLS:PRINT F$(1):PRINT F$(2) +470 NEXT I +480 PRINT :PRINT "YEAR";UL;"CASH FLOW INCLUDES SALVAGE VALUE SALE OF $";SV +490 IF Z2$="Y" THEN LPRINT " ":LPRINT "YEAR";UL;"CASH FLOW INCLUDES SALVAGE VALUE SALE OF $";SV +500 PRINT :INPUT "PRESS ENTER FOR MORE ";Z9$ +505 IF Z9$ = "-1" THEN END +510 GOTO 100 +10000 PRINT "INPUT ERROR! TRY AGAIN!":FOR JJ=1 TO 300:NEXT :RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/NCFANAL.INP b/BP100/NCFANAL.INP new file mode 100644 index 0000000..713a952 --- /dev/null +++ b/BP100/NCFANAL.INP @@ -0,0 +1,28 @@ + +234567 +7654 +10 +1964 +15 +1111 +999 +2222 +888 +3333 +777 +4444 +666 +5555 +444 +6666 +333 +7777 +222 +8888 +111 +9999 +88 +11111 +77 +Y +-1 diff --git a/BP100/NCFANAL.OUT b/BP100/NCFANAL.OUT new file mode 100644 index 0000000..23b6c0e --- /dev/null +++ b/BP100/NCFANAL.OUT @@ -0,0 +1,73 @@ + NET CASH FLOW ANALYSIS + +WHEN INVESTING IN A NEW PROJECT A FIRM MUST TAKE INTO +ACCOUNT THE CASH FLOWS GENERATED BY THE PROJECT, BOTH POSITIVE +AND NEGATIVE. IN THIS PROGRAM WE ASSUME THAT AN ITEM IS +PURCHASED FOR A FIXED AMOUNT, TO BE DEPRECIATED OVER ITS +USEFUL LIFE VIA THE STRAIGHT-LINE METHOD. WE ESTIMATE CASH +INFLOWS AND OUTFLOWS OVER THE LIFE OF THE PROJECT. THE +PROGRAM WILL THEN PRINT A CASH FLOW TABLE +PRESS ENTER TO BEGIN? +INPUT CASH COST OF THE PROJECT ? 234567 +INPUT DEPRECIABLE COST OF THE PROJECT ? 7654 +INPUT USEFUL LIFE OF PROJECT IN YEARS ? 10 +SALVAGE VALUE AT END OF USEFUL LIFE ? 1964 +INPUT CORPORATE INCOME TAX RATE(%) ? 15 +CASH FLOWS FOR YEAR 1 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 1111 + CASH OUTFLOWS = ? 999 + +CASH FLOWS FOR YEAR 2 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 2222 + CASH OUTFLOWS = ? 888 + +CASH FLOWS FOR YEAR 3 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 3333 + CASH OUTFLOWS = ? 777 + +CASH FLOWS FOR YEAR 4 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 4444 + CASH OUTFLOWS = ? 666 + +CASH FLOWS FOR YEAR 5 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 5555 + CASH OUTFLOWS = ? 444 + +CASH FLOWS FOR YEAR 6 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 6666 + CASH OUTFLOWS = ? 333 + +CASH FLOWS FOR YEAR 7 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 7777 + CASH OUTFLOWS = ? 222 + +CASH FLOWS FOR YEAR 8 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 8888 + CASH OUTFLOWS = ? 111 + +CASH FLOWS FOR YEAR 9 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 9999 + CASH OUTFLOWS = ? 88 + +CASH FLOWS FOR YEAR 10 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 11111 + CASH OUTFLOWS = ? 77 + +DO YOU WANT LINE PRINTER OUTPUT(Y/N)? Y +YR CASH CASH DEPREC- NET TAXES NET CASH + INFLOW OUTFLOW IATION INCOME FLOW + 0 0 234567 0 0 0 -234567 + 1 1111 999 569 -457 -69 181 + 2 2222 888 569 765 115 1219 + 3 3333 777 569 1987 298 2258 + 4 4444 666 569 3209 481 3297 + 5 5555 444 569 4542 681 4430 + 6 6666 333 569 5764 865 5468 + 7 7777 222 569 6986 1048 6507 + 8 8888 111 569 8208 1231 7546 + 9 9999 88 569 9342 1401 8510 +10 11111 77 569 10465 1570 11428 + +YEAR 10 CASH FLOW INCLUDES SALVAGE VALUE SALE OF $ 1964 + +PRESS ENTER FOR MORE ? -1 diff --git a/BP100/NCFANAL.dif b/BP100/NCFANAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/NCFANAL.run b/BP100/NCFANAL.run new file mode 100644 index 0000000..d62bd24 --- /dev/null +++ b/BP100/NCFANAL.run @@ -0,0 +1,73 @@ + NET CASH FLOW ANALYSIS + +WHEN INVESTING IN A NEW PROJECT A FIRM MUST TAKE INTO +ACCOUNT THE CASH FLOWS GENERATED BY THE PROJECT, BOTH POSITIVE +AND NEGATIVE. IN THIS PROGRAM WE ASSUME THAT AN ITEM IS +PURCHASED FOR A FIXED AMOUNT, TO BE DEPRECIATED OVER ITS +USEFUL LIFE VIA THE STRAIGHT-LINE METHOD. WE ESTIMATE CASH +INFLOWS AND OUTFLOWS OVER THE LIFE OF THE PROJECT. THE +PROGRAM WILL THEN PRINT A CASH FLOW TABLE +PRESS ENTER TO BEGIN? +INPUT CASH COST OF THE PROJECT ? 234567 +INPUT DEPRECIABLE COST OF THE PROJECT ? 7654 +INPUT USEFUL LIFE OF PROJECT IN YEARS ? 10 +SALVAGE VALUE AT END OF USEFUL LIFE ? 1964 +INPUT CORPORATE INCOME TAX RATE(%) ? 15 +CASH FLOWS FOR YEAR 1 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 1111 + CASH OUTFLOWS = ? 999 + +CASH FLOWS FOR YEAR 2 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 2222 + CASH OUTFLOWS = ? 888 + +CASH FLOWS FOR YEAR 3 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 3333 + CASH OUTFLOWS = ? 777 + +CASH FLOWS FOR YEAR 4 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 4444 + CASH OUTFLOWS = ? 666 + +CASH FLOWS FOR YEAR 5 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 5555 + CASH OUTFLOWS = ? 444 + +CASH FLOWS FOR YEAR 6 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 6666 + CASH OUTFLOWS = ? 333 + +CASH FLOWS FOR YEAR 7 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 7777 + CASH OUTFLOWS = ? 222 + +CASH FLOWS FOR YEAR 8 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 8888 + CASH OUTFLOWS = ? 111 + +CASH FLOWS FOR YEAR 9 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 9999 + CASH OUTFLOWS = ? 88 + +CASH FLOWS FOR YEAR 10 NOT INCLUDING INCOME TAXES + CASH INFLOWS = ? 11111 + CASH OUTFLOWS = ? 77 + +DO YOU WANT LINE PRINTER OUTPUT(Y/N)? Y +YR CASH CASH DEPREC- NET TAXES NET CASH + INFLOW OUTFLOW IATION INCOME FLOW + 0 0 234567 0 0 0 -234567 + 1 1111 999 569 -457 -69 181 + 2 2222 888 569 765 115 1219 + 3 3333 777 569 1987 298 2258 + 4 4444 666 569 3209 481 3297 + 5 5555 444 569 4542 681 4430 + 6 6666 333 569 5764 865 5468 + 7 7777 222 569 6986 1048 6507 + 8 8888 111 569 8208 1231 7546 + 9 9999 88 569 9342 1401 8510 +10 11111 77 569 10465 1570 11428 + +YEAR 10 CASH FLOW INCLUDES SALVAGE VALUE SALE OF $ 1964 + +PRESS ENTER FOR MORE ? -1 diff --git a/BP100/NPV.80 b/BP100/NPV.80 new file mode 100644 index 0000000..0243cb4 --- /dev/null +++ b/BP100/NPV.80 @@ -0,0 +1,36 @@ + NET PRESENT VALUE OF PROJECT + +MOST INVESTMENT PROJECTS INVOLVE SOME INITIAL COST AND THEN +INFLOWS AND OUTFLOWS IN THE FUTURE UNTIL SOME TIME WHEN +WHEN THE INVESTMENT IS TERMINATED. BASED UPON THE RISK IN THE +ORIGINAL INVESTMENT THE INVESTOR SHOULD HAVE SOME REQUIRED +RATE OF RETURN HE/SHE DESIRES TO EARN FROM THE INVESTMENT. +IF THE PRESENT VALUE OF THE CASH FLOWS FROM THE PROJECT +ARE POSITIVE WHEN USING THE REQUIRED RATE AS THE DISCOUNT RATE +THEN THE PROJECT IS A REASONABLE ONE TO INVEST IN.THIS +PROGRAM COMPUTES THE PRESENT VALUE OF SUCH A PROJECT. IF THE +USER SETS THE INITIAL INVESTMENT EQUAL TO 0 THEN THE PRESENT +VALUE EQUALS THE MAXIMUM AMOUNT TO BE PAID INITIALLY FOR THE +PROJECT. + +PRESS ENTER TO BEGIN? +INPUT FOR NEW PROJECT + +INPUT REQUIRED RATE OF RETURN (%) ? 5 + +INITIAL CASH COST OF PROJECT ? 123000 +ENTER CASH FLOW FOR PERIOD 1 (-.01 TO END)? 11111 +ENTER CASH FLOW FOR PERIOD 2 (-.01 TO END)? 22222 +ENTER CASH FLOW FOR PERIOD 3 (-.01 TO END)? 33333 +ENTER CASH FLOW FOR PERIOD 4 (-.01 TO END)? 44444 +ENTER CASH FLOW FOR PERIOD 5 (-.01 TO END)? 55555 +ENTER CASH FLOW FOR PERIOD 6 (-.01 TO END)? -0.01 + +NET PRESENT VALUE AT 5 % INTEREST EQUALS $16625 +DO YOU WANT ANOTHER NPV FOR SAME CASH FLOWS BUT CHANGING INTEREST RATE (Y +/N) ? N + +INPUT FOR NEW PROJECT + +INPUT REQUIRED RATE OF RETURN (%) ? 0 + diff --git a/BP100/NPV.BAS b/BP100/NPV.BAS new file mode 100644 index 0000000..6d61ff3 --- /dev/null +++ b/BP100/NPV.BAS @@ -0,0 +1,42 @@ +1 REM NPV +5 CLEAR 1000 +10 CLS +20 PRINT TAB(10); "NET PRESENT VALUE OF PROJECT":PRINT +30 PRINT "MOST INVESTMENT PROJECTS INVOLVE SOME INITIAL COST AND THEN +35 PRINT "INFLOWS AND OUTFLOWS IN THE FUTURE UNTIL SOME TIME WHEN +40 PRINT "WHEN THE INVESTMENT IS TERMINATED. BASED UPON THE RISK IN THE +45 PRINT "ORIGINAL INVESTMENT THE INVESTOR SHOULD HAVE SOME REQUIRED +50 PRINT "RATE OF RETURN HE/SHE DESIRES TO EARN FROM THE INVESTMENT. +55 PRINT "IF THE PRESENT VALUE OF THE CASH FLOWS FROM THE PROJECT +60 PRINT "ARE POSITIVE WHEN USING THE REQUIRED RATE AS THE DISCOUNT RATE +65 PRINT "THEN THE PROJECT IS A REASONABLE ONE TO INVEST IN.THIS +70 PRINT "PROGRAM COMPUTES THE PRESENT VALUE OF SUCH A PROJECT. IF THE +75 PRINT "USER SETS THE INITIAL INVESTMENT EQUAL TO 0 THEN THE PRESENT +80 PRINT "VALUE EQUALS THE MAXIMUM AMOUNT TO BE PAID INITIALLY FOR THE +85 PRINT "PROJECT." +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 DIM A(200) +115 PRINT "INPUT FOR NEW PROJECT":PRINT +120 INPUT "INPUT REQUIRED RATE OF RETURN (%) ";R:R=R/100:PRINT +125 IF R = 0 THEN END +130 INPUT "INITIAL CASH COST OF PROJECT ";A(0):A(0)=-A(0) +140 I=1 +150 PRINT "ENTER CASH FLOW FOR PERIOD ";I;" (-.01 TO END)";:INPUT A(I) +160 IF A(I)=-.01 THEN I=I-1:GOTO 200 +170 I=I+1:GOTO 150 +200 REM COMPUTATION +205 PRINT +210 NPV=0 +220 FOR J=0 TO I +230 NPV=NPV + A(J)/(1+R)[J +240 NEXT +260 PRINT "NET PRESENT VALUE AT";100*R;"% INTEREST EQUALS ";:PRINT USING "$$########";NPV +270 INPUT "DO YOU WANT ANOTHER NPV FOR SAME CASH FLOWS BUT CHANGING INTEREST RATE (Y/N) ";Z9$ +280 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 270 +290 PRINT +300 IF Z9$="N" THEN CLS: GOTO 115 +310 INPUT "ENTER NEW REQUIRED RATE ";R:R=R/100 +320 GOTO 205 +10000 PRINT "INPUT ERROR! TRY AGAIN!":FOR K=1 TO 300:NEXT :RETURN + diff --git a/BP100/NPV.INP b/BP100/NPV.INP new file mode 100644 index 0000000..c12d682 --- /dev/null +++ b/BP100/NPV.INP @@ -0,0 +1,11 @@ + +5 +123000 +11111 +22222 +33333 +44444 +55555 +-0.01 +N +0 diff --git a/BP100/NPV.OUT b/BP100/NPV.OUT new file mode 100644 index 0000000..f6d8b73 --- /dev/null +++ b/BP100/NPV.OUT @@ -0,0 +1,36 @@ + NET PRESENT VALUE OF PROJECT + +MOST INVESTMENT PROJECTS INVOLVE SOME INITIAL COST AND THEN +INFLOWS AND OUTFLOWS IN THE FUTURE UNTIL SOME TIME WHEN +WHEN THE INVESTMENT IS TERMINATED. BASED UPON THE RISK IN THE +ORIGINAL INVESTMENT THE INVESTOR SHOULD HAVE SOME REQUIRED +RATE OF RETURN HE/SHE DESIRES TO EARN FROM THE INVESTMENT. +IF THE PRESENT VALUE OF THE CASH FLOWS FROM THE PROJECT +ARE POSITIVE WHEN USING THE REQUIRED RATE AS THE DISCOUNT RATE +THEN THE PROJECT IS A REASONABLE ONE TO INVEST IN.THIS +PROGRAM COMPUTES THE PRESENT VALUE OF SUCH A PROJECT. IF THE +USER SETS THE INITIAL INVESTMENT EQUAL TO 0 THEN THE PRESENT +VALUE EQUALS THE MAXIMUM AMOUNT TO BE PAID INITIALLY FOR THE +PROJECT. + +PRESS ENTER TO BEGIN? +INPUT FOR NEW PROJECT + +INPUT REQUIRED RATE OF RETURN (%) ? 5 + +INITIAL CASH COST OF PROJECT ? 123000 +ENTER CASH FLOW FOR PERIOD 1 (-.01 TO END)? 11111 +ENTER CASH FLOW FOR PERIOD 2 (-.01 TO END)? 22222 +ENTER CASH FLOW FOR PERIOD 3 (-.01 TO END)? 33333 +ENTER CASH FLOW FOR PERIOD 4 (-.01 TO END)? 44444 +ENTER CASH FLOW FOR PERIOD 5 (-.01 TO END)? 55555 +ENTER CASH FLOW FOR PERIOD 6 (-.01 TO END)? -0.01 + +NET PRESENT VALUE AT 5 % INTEREST EQUALS $16625 +DO YOU WANT ANOTHER NPV FOR SAME CASH FLOWS BUT CHANGING INTEREST RATE (Y +/N) ? N + +INPUT FOR NEW PROJECT + +INPUT REQUIRED RATE OF RETURN (%) ? 0 + diff --git a/BP100/NPV.dif b/BP100/NPV.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/NPV.run b/BP100/NPV.run new file mode 100644 index 0000000..0243cb4 --- /dev/null +++ b/BP100/NPV.run @@ -0,0 +1,36 @@ + NET PRESENT VALUE OF PROJECT + +MOST INVESTMENT PROJECTS INVOLVE SOME INITIAL COST AND THEN +INFLOWS AND OUTFLOWS IN THE FUTURE UNTIL SOME TIME WHEN +WHEN THE INVESTMENT IS TERMINATED. BASED UPON THE RISK IN THE +ORIGINAL INVESTMENT THE INVESTOR SHOULD HAVE SOME REQUIRED +RATE OF RETURN HE/SHE DESIRES TO EARN FROM THE INVESTMENT. +IF THE PRESENT VALUE OF THE CASH FLOWS FROM THE PROJECT +ARE POSITIVE WHEN USING THE REQUIRED RATE AS THE DISCOUNT RATE +THEN THE PROJECT IS A REASONABLE ONE TO INVEST IN.THIS +PROGRAM COMPUTES THE PRESENT VALUE OF SUCH A PROJECT. IF THE +USER SETS THE INITIAL INVESTMENT EQUAL TO 0 THEN THE PRESENT +VALUE EQUALS THE MAXIMUM AMOUNT TO BE PAID INITIALLY FOR THE +PROJECT. + +PRESS ENTER TO BEGIN? +INPUT FOR NEW PROJECT + +INPUT REQUIRED RATE OF RETURN (%) ? 5 + +INITIAL CASH COST OF PROJECT ? 123000 +ENTER CASH FLOW FOR PERIOD 1 (-.01 TO END)? 11111 +ENTER CASH FLOW FOR PERIOD 2 (-.01 TO END)? 22222 +ENTER CASH FLOW FOR PERIOD 3 (-.01 TO END)? 33333 +ENTER CASH FLOW FOR PERIOD 4 (-.01 TO END)? 44444 +ENTER CASH FLOW FOR PERIOD 5 (-.01 TO END)? 55555 +ENTER CASH FLOW FOR PERIOD 6 (-.01 TO END)? -0.01 + +NET PRESENT VALUE AT 5 % INTEREST EQUALS $16625 +DO YOU WANT ANOTHER NPV FOR SAME CASH FLOWS BUT CHANGING INTEREST RATE (Y +/N) ? N + +INPUT FOR NEW PROJECT + +INPUT REQUIRED RATE OF RETURN (%) ? 0 + diff --git a/BP100/OPTLOSS.80 b/BP100/OPTLOSS.80 new file mode 100644 index 0000000..0ff5cb2 --- /dev/null +++ b/BP100/OPTLOSS.80 @@ -0,0 +1,50 @@ + OPPORTUNITY LOSS TABLE +THIS PROGRAM ASSUMES THERE ARE FROM 1 TO 6 STATES OF NATURE. +THERE ARE ALSO FROM 1 TO 6 POSSIBLE ACTIONS WE CAN TAKE. IF THE +STATE OF NATURE(S OF N) IS KNOWN THEN EACH ACTION LEADS TO +A KNOWN MONETARY RESULT. THIS RESULT IS A CONDITIONAL PROFIT. +FOR EXAMPLE, IF ACTION 3 LEADS TO A $35 PAYOFF WHEN STATE OF +NATURE 4 IS TRUE THEN 35 IS THE CONDITIONAL PROFIT OF ACTION +3 GIVEN STATE OF NATURE 4. IF WE LOOK AT THE CONDITIONAL +PROFIT OF EACH ACTION WITH RESPECT TO A PARTICULAR S OF N +THEN THERE IS A LARGEST PROFIT. THE AMOUNT BY WHICH EACH OF +THE OTHER PROFITS DIFFER FROM THE MAXIMUM IS CALLED THE +OPPORTUNITY LOSS OF THE CORRESPONDING ACTION FOR THE +PARTICULAR STATE OF NATURE. IN THIS PROGRAM ALL OF THE +CONDITIONAL PROFITS ARE ENTERED AND AN OPPORTUNITY LOSS +TABLE IS CONSTRUCTED. EXPECTED OPORTUNITY LOSSES ARE ALSO COMP. +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 3 + +ENTER PROBABILITY OF S OF N 1 ? 22 +ENTER PROBABILITY OF S OF N 2 ? 33 +ENTER PROBABILITY OF S OF N 3 ? 44 + +PROBABILITIES DO NOT SUM TO 1. +ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER? 1 + +ENTER NUMBER OF POSSIBLE ACTIONS(<=5)? 2 +NO PAYOFF MORE THAN 9999.99 + + +ACTION 1 + PAYOFF WHEN S OF N IS 1 ? 101 + PAYOFF WHEN S OF N IS 2 ? 102 + PAYOFF WHEN S OF N IS 3 ? 103 + +ACTION 2 + PAYOFF WHEN S OF N IS 1 ? 201 + PAYOFF WHEN S OF N IS 2 ? 202 + PAYOFF WHEN S OF N IS 3 ? 203 +COMPUTING + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + OPPORTUNITY LOSSES OF ACTION GIVEN S OF N + +S N PR ACTION + ACTION 1 ACTION 2 + 1 0.22 100.00 0.00 + 2 0.33 100.00 0.00 + 3 0.44 100.00 0.00 + +EXP EOL. 100.00 0.00 diff --git a/BP100/OPTLOSS.BAS b/BP100/OPTLOSS.BAS new file mode 100644 index 0000000..b0dd65c --- /dev/null +++ b/BP100/OPTLOSS.BAS @@ -0,0 +1,84 @@ +1 REM OPTLOSS +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"OPPORTUNITY LOSS TABLE " +20 PRINT "THIS PROGRAM ASSUMES THERE ARE FROM 1 TO 6 STATES OF NATURE. +25 PRINT "THERE ARE ALSO FROM 1 TO 6 POSSIBLE ACTIONS WE CAN TAKE. IF THE +30 PRINT "STATE OF NATURE(S OF N) IS KNOWN THEN EACH ACTION LEADS TO +35 PRINT "A KNOWN MONETARY RESULT. THIS RESULT IS A CONDITIONAL PROFIT. +40 PRINT "FOR EXAMPLE, IF ACTION 3 LEADS TO A $35 PAYOFF WHEN STATE OF +45 PRINT "NATURE 4 IS TRUE THEN 35 IS THE CONDITIONAL PROFIT OF ACTION +50 PRINT "3 GIVEN STATE OF NATURE 4. IF WE LOOK AT THE CONDITIONAL +55 PRINT "PROFIT OF EACH ACTION WITH RESPECT TO A PARTICULAR S OF N +60 PRINT "THEN THERE IS A LARGEST PROFIT. THE AMOUNT BY WHICH EACH OF +65 PRINT "THE OTHER PROFITS DIFFER FROM THE MAXIMUM IS CALLED THE +70 PRINT "OPPORTUNITY LOSS OF THE CORRESPONDING ACTION FOR THE +75 PRINT "PARTICULAR STATE OF NATURE. IN THIS PROGRAM ALL OF THE +80 PRINT "CONDITIONAL PROFITS ARE ENTERED AND AN OPPORTUNITY LOSS +85 PRINT "TABLE IS CONSTRUCTED. EXPECTED OPORTUNITY LOSSES ARE ALSO COMP." +95 INPUT "PRESS ENTER TO BEGIN";Z9$ +100 D=6:REM MAXIMUM DIMENSION +102 DIM A(D+2,D+2),P(D),E(D) +105 P=0 +110 CLS +120 INPUT "ENTER NUMBER OF POSSIBLE STATES OF NATURE";N +125 IF N<2 OR N>D OR N<>INT(N) THEN GOSUB 10000:GOTO 120 +127 PRINT +130 FOR I=1 TO N +135 PRINT "ENTER PROBABILITY OF S OF N";I;:INPUT P(I) +140 P=P+P(I) +150 NEXT I +160 IF P=1 THEN PRINT :GOTO 200 +170 PRINT :PRINT "PROBABILITIES DO NOT SUM TO 1." +175 INPUT "ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER";Z9 +180 IF Z9<>0 AND Z9<>1 THEN GOSUB 10000:GOTO 170 +185 IF Z9=0 THEN GOTO 105 +190 FOR I=1 TO N:P(I)=P(I)/P:NEXT :P=1 +200 PRINT :INPUT "ENTER NUMBER OF POSSIBLE ACTIONS(<=5)";M +205 IF M<2 OR M>6 OR M<>INT(M) THEN GOSUB 10000:GOTO 200 +210 PRINT "NO PAYOFF MORE THAN 9999.99":PRINT +220 FOR J=1 TO M +225 PRINT +230 PRINT "ACTION";J +240 FOR I=1 TO N +250 PRINT TAB(5);"PAYOFF WHEN S OF N IS";I;:INPUT A(I,J) +260 NEXT I +270 NEXT J +300 REM COMPUTATION +310 CLS:PRINT @ 340,"COMPUTING" +320 FOR I=1 TO N +325 MM(I)=A(I,1) +330 FOR J=2 TO M +335 IF A(I,J)>MM(I) THEN MM(I)=A(I,J) +340 NEXT J +345 NEXT I +350 REM OPPORTUNITY LOSSES COMPUTED NEXT +355 FOR I=1 TO N:FOR J=1 TO M: A(I,J)=MM(I)-A(I,J):NEXT :NEXT +400 FOR J=1 TO M +410 FOR I=1 TO N:E(J)=E(J)+A(I,J)*P(I):NEXT I:REM EXP. VAL. +420 NEXT J +495 REM PRINT +500 CLS +510 F$(1)=" ACTION # " +515 F$(2)=" #####.## " +520 F$(3)=" OPPORTUNITY LOSSES OF ACTION GIVEN S OF N " +521 F$(4)="S N PR ACTION" +525 PRINT :INPUT "IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +527 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 525 +530 PRINT F$(3):PRINT :PRINT F$(4):IF Z2$="Y" THEN LPRINT F$(3):LPRINT " ":LPRINT F$(4) +535 PRINT TAB(9);"";:FOR I=1 TO M:PRINT USING F$(1);I;:NEXT :PRINT +537 IF Z2$="Y" THEN LPRINT TAB(9);"";:FOR I=1 TO M:LPRINT USING F$(1);I;:NEXT :LPRINT " " +540 FOR I=1 TO N +550 PRINT USING "## #.## ";I,P(I); +555 IF Z2$="Y" THEN LPRINT USING "## #.## ";I,P(I); +560 FOR J=1 TO M:PRINT USING F$(2);A(I,J);:NEXT :PRINT +562 IF Z2$="Y" THEN FOR J=1 TO M:LPRINT USING F$(2);A(I,J);:NEXT :LPRINT " " +563 NEXT +564 PRINT :IF Z2$="Y" THEN LPRINT " " +565 PRINT "EXP EOL.";TAB(9);"";: +570 IF Z2$="Y" THEN LPRINT "EXP VAL.";TAB(9);"";: +575 FOR I=1 TO M:PRINT USING F$(2);E(I);:NEXT +580 IF Z2$="Y" THEN FOR I=1 TO M:LPRINT USING F$(2);E(I);:NEXT +600 PRINT :END +10000 PRINT "INPUT ERROR!TRY AGAIN!":FOR JJ=1 TO 300:NEXT :RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/OPTLOSS.INP b/BP100/OPTLOSS.INP new file mode 100644 index 0000000..2424379 --- /dev/null +++ b/BP100/OPTLOSS.INP @@ -0,0 +1,14 @@ + +3 +22 +33 +44 +1 +2 +101 +102 +103 +201 +202 +203 +Y diff --git a/BP100/OPTLOSS.OUT b/BP100/OPTLOSS.OUT new file mode 100644 index 0000000..3c9eac6 --- /dev/null +++ b/BP100/OPTLOSS.OUT @@ -0,0 +1,50 @@ + OPPORTUNITY LOSS TABLE +THIS PROGRAM ASSUMES THERE ARE FROM 1 TO 6 STATES OF NATURE. +THERE ARE ALSO FROM 1 TO 6 POSSIBLE ACTIONS WE CAN TAKE. IF THE +STATE OF NATURE(S OF N) IS KNOWN THEN EACH ACTION LEADS TO +A KNOWN MONETARY RESULT. THIS RESULT IS A CONDITIONAL PROFIT. +FOR EXAMPLE, IF ACTION 3 LEADS TO A $35 PAYOFF WHEN STATE OF +NATURE 4 IS TRUE THEN 35 IS THE CONDITIONAL PROFIT OF ACTION +3 GIVEN STATE OF NATURE 4. IF WE LOOK AT THE CONDITIONAL +PROFIT OF EACH ACTION WITH RESPECT TO A PARTICULAR S OF N +THEN THERE IS A LARGEST PROFIT. THE AMOUNT BY WHICH EACH OF +THE OTHER PROFITS DIFFER FROM THE MAXIMUM IS CALLED THE +OPPORTUNITY LOSS OF THE CORRESPONDING ACTION FOR THE +PARTICULAR STATE OF NATURE. IN THIS PROGRAM ALL OF THE +CONDITIONAL PROFITS ARE ENTERED AND AN OPPORTUNITY LOSS +TABLE IS CONSTRUCTED. EXPECTED OPORTUNITY LOSSES ARE ALSO COMP. +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 3 + +ENTER PROBABILITY OF S OF N 1 ? 22 +ENTER PROBABILITY OF S OF N 2 ? 33 +ENTER PROBABILITY OF S OF N 3 ? 44 + +PROBABILITIES DO NOT SUM TO 1. +ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER? 1 + +ENTER NUMBER OF POSSIBLE ACTIONS(<=5)? 2 +NO PAYOFF MORE THAN 9999.99 + + +ACTION 1 + PAYOFF WHEN S OF N IS 1 ? 101 + PAYOFF WHEN S OF N IS 2 ? 102 + PAYOFF WHEN S OF N IS 3 ? 103 + +ACTION 2 + PAYOFF WHEN S OF N IS 1 ? 201 + PAYOFF WHEN S OF N IS 2 ? 202 + PAYOFF WHEN S OF N IS 3 ? 203 +COMPUTING + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + OPPORTUNITY LOSSES OF ACTION GIVEN S OF N + +S N PR ACTION + ACTION 1 ACTION 2 + 1 0.22 100.00 0.00 + 2 0.33 100.00 0.00 + 3 0.44 100.00 0.00 + +EXP EOL. 100.00 0.00 diff --git a/BP100/OPTLOSS.dif b/BP100/OPTLOSS.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/OPTLOSS.run b/BP100/OPTLOSS.run new file mode 100644 index 0000000..0ff5cb2 --- /dev/null +++ b/BP100/OPTLOSS.run @@ -0,0 +1,50 @@ + OPPORTUNITY LOSS TABLE +THIS PROGRAM ASSUMES THERE ARE FROM 1 TO 6 STATES OF NATURE. +THERE ARE ALSO FROM 1 TO 6 POSSIBLE ACTIONS WE CAN TAKE. IF THE +STATE OF NATURE(S OF N) IS KNOWN THEN EACH ACTION LEADS TO +A KNOWN MONETARY RESULT. THIS RESULT IS A CONDITIONAL PROFIT. +FOR EXAMPLE, IF ACTION 3 LEADS TO A $35 PAYOFF WHEN STATE OF +NATURE 4 IS TRUE THEN 35 IS THE CONDITIONAL PROFIT OF ACTION +3 GIVEN STATE OF NATURE 4. IF WE LOOK AT THE CONDITIONAL +PROFIT OF EACH ACTION WITH RESPECT TO A PARTICULAR S OF N +THEN THERE IS A LARGEST PROFIT. THE AMOUNT BY WHICH EACH OF +THE OTHER PROFITS DIFFER FROM THE MAXIMUM IS CALLED THE +OPPORTUNITY LOSS OF THE CORRESPONDING ACTION FOR THE +PARTICULAR STATE OF NATURE. IN THIS PROGRAM ALL OF THE +CONDITIONAL PROFITS ARE ENTERED AND AN OPPORTUNITY LOSS +TABLE IS CONSTRUCTED. EXPECTED OPORTUNITY LOSSES ARE ALSO COMP. +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 3 + +ENTER PROBABILITY OF S OF N 1 ? 22 +ENTER PROBABILITY OF S OF N 2 ? 33 +ENTER PROBABILITY OF S OF N 3 ? 44 + +PROBABILITIES DO NOT SUM TO 1. +ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER? 1 + +ENTER NUMBER OF POSSIBLE ACTIONS(<=5)? 2 +NO PAYOFF MORE THAN 9999.99 + + +ACTION 1 + PAYOFF WHEN S OF N IS 1 ? 101 + PAYOFF WHEN S OF N IS 2 ? 102 + PAYOFF WHEN S OF N IS 3 ? 103 + +ACTION 2 + PAYOFF WHEN S OF N IS 1 ? 201 + PAYOFF WHEN S OF N IS 2 ? 202 + PAYOFF WHEN S OF N IS 3 ? 203 +COMPUTING + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y + OPPORTUNITY LOSSES OF ACTION GIVEN S OF N + +S N PR ACTION + ACTION 1 ACTION 2 + 1 0.22 100.00 0.00 + 2 0.33 100.00 0.00 + 3 0.44 100.00 0.00 + +EXP EOL. 100.00 0.00 diff --git a/BP100/OPTWRITE.80 b/BP100/OPTWRITE.80 new file mode 100644 index 0000000..e8f52d1 --- /dev/null +++ b/BP100/OPTWRITE.80 @@ -0,0 +1,29 @@ + OPTION WRITING +tHIS PROGRAM COMPUTES SOME USEFUL TOTALS FOR POTENTIAL +OPTION WRITERS. tHE USER OF THIS PROGRAM WILL GENERALLY +BE A RATIO WRITER AND WILL SELL A FIXED NUMBER OF OPTIONS +AS WELL AS BUY OR SHORT A GIVEN NUMBER OF SHARES OF THE +UNDERLYING STOCK. uSING THIS PROGRAM HE WILL BE ABLE TO +COMPUTE THE MAXIMUM DOLLAR PROFIT HE MAY REALIZE, THE +DOLLAR INVESTMENT REQUIRED FOR THE DEAL, THE MAXIMUM +RETURN ON INVESTMENT, AND THE UPPER AND LOWER BREAK +EVEN POINTS OF STOCK PRICE FOR THE DEAL. + +PRESS ENTER TO BEGIN ? +INPUT C IF OPTION IS CALL, P IF PUT ? C +ENTER NUMBER OF OPTION CONTRACTS SOLD ? 246 +ENTER PRICE PER OPTION ? 57.31 +ENTER TOTAL COMMISSION PAID ON OPTIONS ? 937.43 +EXERCISE PRICE ? 789 +# OF SHARES BOUGHT OR SHORTED ? 42956 +PRICE PER SHARE OF STOCK ? 234 +AV. COMM. ON ST. SHARE AS % OF SHARE PRICE ? 12 +DIVIDENDS PER SHARE PAID BY STOCK ? 1.23 +MAINTENANCE REQUIREMENT ? 75 +MAXIMUM PROFIT = 20029025.89 +INITIAL INVESTMENT = 9849094.91 +MAXIMUM RETURN = 203.36 +UPPER BREAK EVEN POINT = -354.31 +LOWER BREAK EVEN POINT = 259.15 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/OPTWRITE.BAS b/BP100/OPTWRITE.BAS new file mode 100644 index 0000000..b9d7c8f --- /dev/null +++ b/BP100/OPTWRITE.BAS @@ -0,0 +1,51 @@ +5 CLS +90 PRINT " OPTION WRITING" +100 PRINT "tHIS PROGRAM COMPUTES SOME USEFUL TOTALS FOR POTENTIAL +110 PRINT "OPTION WRITERS. tHE USER OF THIS PROGRAM WILL GENERALLY +120 PRINT "BE A RATIO WRITER AND WILL SELL A FIXED NUMBER OF OPTIONS +130 PRINT "AS WELL AS BUY OR SHORT A GIVEN NUMBER OF SHARES OF THE +140 PRINT "UNDERLYING STOCK. uSING THIS PROGRAM HE WILL BE ABLE TO +150 PRINT "COMPUTE THE MAXIMUM DOLLAR PROFIT HE MAY REALIZE, THE +160 PRINT "DOLLAR INVESTMENT REQUIRED FOR THE DEAL, THE MAXIMUM +170 PRINT "RETURN ON INVESTMENT, AND THE UPPER AND LOWER BREAK +180 PRINT "EVEN POINTS OF STOCK PRICE FOR THE DEAL. +190 PRINT :INPUT "PRESS ENTER TO BEGIN ";Z9 +200 CLS +300 REM INPUT SECTION +310 INPUT "INPUT C IF OPTION IS CALL, P IF PUT ";TP$ +315 IF TP$<>"C" AND TP$<>"P" THEN PRINT "INPUT ERROR!":GOTO 310 +320 INPUT "ENTER NUMBER OF OPTION CONTRACTS SOLD ";N +330 INPUT "ENTER PRICE PER OPTION ";PO +340 INPUT "ENTER TOTAL COMMISSION PAID ON OPTIONS ";CO +350 INPUT "EXERCISE PRICE ";EX +360 INPUT "# OF SHARES BOUGHT OR SHORTED ";NS +365 INPUT "PRICE PER SHARE OF STOCK ";P +370 INPUT "AV. COMM. ON ST. SHARE AS % OF SHARE PRICE ";CA +380 INPUT "DIVIDENDS PER SHARE PAID BY STOCK ";D +390 INPUT "MAINTENANCE REQUIREMENT ";MN +400 IF TP$="P" THEN GOTO 500 +405 REM CALL OPTION CALCULATION +410 MAXP = N*100*PO-CO+NS*(EX*(1-CA/100)-P*(1+CA/100)+D) +420 INV = NS*P*(1+CA/100)-(N*100*PO-CO)+MN +425 RMAX = MAXP/INV*100 +430 U=(MAXP+(N*100-NS)*EX*(1-CA/100))/((100*N-NS)*(1+CA/100)) +440 L=(MAXP-NS*EX*(1-CA/100))/(-NS*(1-CA/100)) +450 GOTO 600 +500 REM PUT OPTION CALCULATION +510 MAXP = N*100*PO-CO+NS*(P*(1-CA/100)-EX*(1+CA/100)-D) +520 INV = NS*P/2+NS*P*CA/100-(N*100*PO-CO)+MN +525 RMAX=MAXP/INV*100 +530 U=(MAXP + NS*EX*(1+CA/100))/(NS*(1+CA/100)) +540 L=(MAXP-(N*100-NS)*EX*(1+CA/100))/(-(N*100-NS)*(1-CA/100)) +550 GOTO 600 +600 REM PRINTOUT +610 CLS +620 PRINT USING "MAXIMUM PROFIT = $$#####.##";MAXP +630 PRINT USING "INITIAL INVESTMENT = $$#####.##";INV +640 PRINT USING "MAXIMUM RETURN = #####.## PER CENT";RMAX +650 PRINT USING "UPPER BREAK EVEN POINT = ###.## PER SHARE";U +660 PRINT USING "LOWER BREAK EVEN POINT = ###.## PER SHRE";L +670 PRINT :INPUT "PRESS ENTER TO CONTINUE";Z9 +675 IF Z9 = -1 THEN END +680 CLS:GOTO 310 + diff --git a/BP100/OPTWRITE.INP b/BP100/OPTWRITE.INP new file mode 100644 index 0000000..69662e2 --- /dev/null +++ b/BP100/OPTWRITE.INP @@ -0,0 +1,12 @@ + +C +246 +57.31 +937.43 +789 +42956 +234 +12 +1.23 +75 +-1 diff --git a/BP100/OPTWRITE.OUT b/BP100/OPTWRITE.OUT new file mode 100644 index 0000000..daf416f --- /dev/null +++ b/BP100/OPTWRITE.OUT @@ -0,0 +1,29 @@ + OPTION WRITING +tHIS PROGRAM COMPUTES SOME USEFUL TOTALS FOR POTENTIAL +OPTION WRITERS. tHE USER OF THIS PROGRAM WILL GENERALLY +BE A RATIO WRITER AND WILL SELL A FIXED NUMBER OF OPTIONS +AS WELL AS BUY OR SHORT A GIVEN NUMBER OF SHARES OF THE +UNDERLYING STOCK. uSING THIS PROGRAM HE WILL BE ABLE TO +COMPUTE THE MAXIMUM DOLLAR PROFIT HE MAY REALIZE, THE +DOLLAR INVESTMENT REQUIRED FOR THE DEAL, THE MAXIMUM +RETURN ON INVESTMENT, AND THE UPPER AND LOWER BREAK +EVEN POINTS OF STOCK PRICE FOR THE DEAL. + +PRESS ENTER TO BEGIN ? +INPUT C IF OPTION IS CALL, P IF PUT ? C +ENTER NUMBER OF OPTION CONTRACTS SOLD ? 246 +ENTER PRICE PER OPTION ? 57.31 +ENTER TOTAL COMMISSION PAID ON OPTIONS ? 937.43 +EXERCISE PRICE ? 789 +# OF SHARES BOUGHT OR SHORTED ? 42956 +PRICE PER SHARE OF STOCK ? 234 +AV. COMM. ON ST. SHARE AS % OF SHARE PRICE ? 12 +DIVIDENDS PER SHARE PAID BY STOCK ? 1.23 +MAINTENANCE REQUIREMENT ? 75 +MAXIMUM PROFIT = 20029025.89 +INITIAL INVESTMENT = 9849094.91 +MAXIMUM RETURN = 203.36 +UPPER BREAK EVEN POINT = -354.31 +LOWER BREAK EVEN POINT = 259.15 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/OPTWRITE.dif b/BP100/OPTWRITE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/OPTWRITE.run b/BP100/OPTWRITE.run new file mode 100644 index 0000000..e8f52d1 --- /dev/null +++ b/BP100/OPTWRITE.run @@ -0,0 +1,29 @@ + OPTION WRITING +tHIS PROGRAM COMPUTES SOME USEFUL TOTALS FOR POTENTIAL +OPTION WRITERS. tHE USER OF THIS PROGRAM WILL GENERALLY +BE A RATIO WRITER AND WILL SELL A FIXED NUMBER OF OPTIONS +AS WELL AS BUY OR SHORT A GIVEN NUMBER OF SHARES OF THE +UNDERLYING STOCK. uSING THIS PROGRAM HE WILL BE ABLE TO +COMPUTE THE MAXIMUM DOLLAR PROFIT HE MAY REALIZE, THE +DOLLAR INVESTMENT REQUIRED FOR THE DEAL, THE MAXIMUM +RETURN ON INVESTMENT, AND THE UPPER AND LOWER BREAK +EVEN POINTS OF STOCK PRICE FOR THE DEAL. + +PRESS ENTER TO BEGIN ? +INPUT C IF OPTION IS CALL, P IF PUT ? C +ENTER NUMBER OF OPTION CONTRACTS SOLD ? 246 +ENTER PRICE PER OPTION ? 57.31 +ENTER TOTAL COMMISSION PAID ON OPTIONS ? 937.43 +EXERCISE PRICE ? 789 +# OF SHARES BOUGHT OR SHORTED ? 42956 +PRICE PER SHARE OF STOCK ? 234 +AV. COMM. ON ST. SHARE AS % OF SHARE PRICE ? 12 +DIVIDENDS PER SHARE PAID BY STOCK ? 1.23 +MAINTENANCE REQUIREMENT ? 75 +MAXIMUM PROFIT = 20029025.89 +INITIAL INVESTMENT = 9849094.91 +MAXIMUM RETURN = 203.36 +UPPER BREAK EVEN POINT = -354.31 +LOWER BREAK EVEN POINT = 259.15 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/PAD80.BAS b/BP100/PAD80.BAS new file mode 100644 index 0000000..f08eb98 --- /dev/null +++ b/BP100/PAD80.BAS @@ -0,0 +1,43 @@ +010 OPTION VERSION BYWATER +020 OPTION BUGS OFF +100 REM PAD80.BAS +101 REM Pad the test output to 80 characters. +102 REM bwbasic P001.BAS > P001.OUT +103 REM echo "500 DATA P001.OUT, P001.80" > PAD80.INP +104 REM bwbasic PAD80.BAS +105 REM diff P001.run P001.80 +109 REM ---------------------------------------------------------- +120 REM GET FILE NAME INTO A$ +125 DELETE 500 +126 MERGE "PAD80.INP" +127 RESTORE 500 +130 READ A$ +135 REM PRINT "SOURCE:"; A$ +140 READ B$ +145 REM PRINT "TARGET:"; B$ +300 REM ---------------------------------------------------------- +301 REM PROCESS FILENAME IN A$ +302 REM ---------------------------------------------------------- +310 OPEN A$ FOR INPUT AS #2 +315 OPEN B$ FOR OUTPUT AS #3 +320 REM PRINT "PROCESS TEXT LINE" +330 IF EOF( 2 ) THEN 390 +335 REM PRINT "NOT EOF" +340 LINE INPUT #2, C$ +345 REM PRINT "C$=";C$ +350 C$ = LEFT$( C$ + SPACE$( 80 ), 80 ) +355 REM PRINT "yyy" +360 REM WRITE OUTPUT LINE +370 PRINT #3, C$ +375 REM PRINT "zzz" +380 GOTO 320 +390 REM CLOSE FILES +400 CLOSE #3 +410 CLOSE #2 +499 REM ---------------------------------------------------------- +500 REM REPLACED BY CONTENTS OF "PAD80.INP" +501 REM ---------------------------------------------------------- +900 REM ---------------------------------------------------------- +910 REM THE END +920 REM ---------------------------------------------------------- +999 END diff --git a/BP100/PAD80.INP b/BP100/PAD80.INP new file mode 100644 index 0000000..4c76ef0 --- /dev/null +++ b/BP100/PAD80.INP @@ -0,0 +1 @@ +500 DATA WARVAL.OUT, WARVAL.80 diff --git a/BP100/PAYNET.80 b/BP100/PAYNET.80 new file mode 100644 index 0000000..c425559 --- /dev/null +++ b/BP100/PAYNET.80 @@ -0,0 +1,23 @@ + +GROSS PAY NEEDED FOR GIVEN NET + +THIS PROGRAM WILL COMPUTE THE AMOUNT OF GROSS PAY A WORKER +NEEDS IN ORDER TO EARN A GIVEN NET. + +NECESSARY INPUTS ARE NET DESIRED,FEDERAL INCOME TAX %, STATE TAX %, LOCAL TAX + % AND ANY FIXED DOLLAR AMOUNT DEDUCTIONS. +FICA % DEDUCTION IS ALSO NEEDED + +ALL TAXES ARE PERCENTAGES OF GROSS PAY + +PRESS ENTER TO BEGIN? +ENTER NET PAY AMOUNT DESIRED ? 123456 +ENTER FEDERAL WITHHOLDING TAX %? 38 +ENTER STATE WITHHOLDING TAX %? 13 +ENTER LOCAL WITHHOLDING TAX %? 8 +ENTER FICA WITHHOLDING % ? 5 +ENTER DOLLAR AMOUNT FOR ANY FIXED WITHHOLDING? 6789 + +GROSS PAY NEEDED IS $361791.67 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/PAYNET.BAS b/BP100/PAYNET.BAS new file mode 100644 index 0000000..8ac9f84 --- /dev/null +++ b/BP100/PAYNET.BAS @@ -0,0 +1,24 @@ +1 REM PAYNET +5 CLEAR 1000 +10 CLS +20 PRINT :PRINT "GROSS PAY NEEDED FOR GIVEN NET":PRINT +30 PRINT "THIS PROGRAM WILL COMPUTE THE AMOUNT OF GROSS PAY A WORKER +40 PRINT "NEEDS IN ORDER TO EARN A GIVEN NET." +45 PRINT "NECESSARY INPUTS ARE NET DESIRED,FEDERAL INCOME TAX %, STATE TAX %, LOCAL TAX % AND ANY FIXED DOLLAR AMOUNT DEDUCTIONS. +47 PRINT "FICA % DEDUCTION IS ALSO NEEDED" +50 PRINT :PRINT "ALL TAXES ARE PERCENTAGES OF GROSS PAY" +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +200 CLS +210 INPUT "ENTER NET PAY AMOUNT DESIRED ";NP +220 INPUT "ENTER FEDERAL WITHHOLDING TAX %";F:F=F/100 +230 INPUT "ENTER STATE WITHHOLDING TAX %";S:S=S/100 +240 INPUT "ENTER LOCAL WITHHOLDING TAX %";L:L=L/100 +250 INPUT "ENTER FICA WITHHOLDING % ";FICA:FICA=FICA/100 +260 INPUT "ENTER DOLLAR AMOUNT FOR ANY FIXED WITHHOLDING";EXTRA +270 P=F+S+L+FICA +280 GROSS = (NP+EXTRA)/(1-P) +290 PRINT +295 PRINT USING "GROSS PAY NEEDED IS $$#####.##";GROSS +300 PRINT :INPUT "PRESS ENTER TO CONTINUE";Z9$ +305 IF Z9$ = "-1" THEN END +310 GOTO 200 diff --git a/BP100/PAYNET.INP b/BP100/PAYNET.INP new file mode 100644 index 0000000..1a266ef --- /dev/null +++ b/BP100/PAYNET.INP @@ -0,0 +1,8 @@ + +123456 +38 +13 +8 +5 +6789 +-1 diff --git a/BP100/PAYNET.OUT b/BP100/PAYNET.OUT new file mode 100644 index 0000000..2fee859 --- /dev/null +++ b/BP100/PAYNET.OUT @@ -0,0 +1,23 @@ + +GROSS PAY NEEDED FOR GIVEN NET + +THIS PROGRAM WILL COMPUTE THE AMOUNT OF GROSS PAY A WORKER +NEEDS IN ORDER TO EARN A GIVEN NET. + +NECESSARY INPUTS ARE NET DESIRED,FEDERAL INCOME TAX %, STATE TAX %, LOCAL TAX + % AND ANY FIXED DOLLAR AMOUNT DEDUCTIONS. +FICA % DEDUCTION IS ALSO NEEDED + +ALL TAXES ARE PERCENTAGES OF GROSS PAY + +PRESS ENTER TO BEGIN? +ENTER NET PAY AMOUNT DESIRED ? 123456 +ENTER FEDERAL WITHHOLDING TAX %? 38 +ENTER STATE WITHHOLDING TAX %? 13 +ENTER LOCAL WITHHOLDING TAX %? 8 +ENTER FICA WITHHOLDING % ? 5 +ENTER DOLLAR AMOUNT FOR ANY FIXED WITHHOLDING? 6789 + +GROSS PAY NEEDED IS $361791.67 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/PAYNET.dif b/BP100/PAYNET.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/PAYNET.run b/BP100/PAYNET.run new file mode 100644 index 0000000..c425559 --- /dev/null +++ b/BP100/PAYNET.run @@ -0,0 +1,23 @@ + +GROSS PAY NEEDED FOR GIVEN NET + +THIS PROGRAM WILL COMPUTE THE AMOUNT OF GROSS PAY A WORKER +NEEDS IN ORDER TO EARN A GIVEN NET. + +NECESSARY INPUTS ARE NET DESIRED,FEDERAL INCOME TAX %, STATE TAX %, LOCAL TAX + % AND ANY FIXED DOLLAR AMOUNT DEDUCTIONS. +FICA % DEDUCTION IS ALSO NEEDED + +ALL TAXES ARE PERCENTAGES OF GROSS PAY + +PRESS ENTER TO BEGIN? +ENTER NET PAY AMOUNT DESIRED ? 123456 +ENTER FEDERAL WITHHOLDING TAX %? 38 +ENTER STATE WITHHOLDING TAX %? 13 +ENTER LOCAL WITHHOLDING TAX %? 8 +ENTER FICA WITHHOLDING % ? 5 +ENTER DOLLAR AMOUNT FOR ANY FIXED WITHHOLDING? 6789 + +GROSS PAY NEEDED IS $361791.67 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/PAYROLL2.80 b/BP100/PAYROLL2.80 new file mode 100644 index 0000000..1e3d5f5 --- /dev/null +++ b/BP100/PAYROLL2.80 @@ -0,0 +1,176 @@ + PAYROLL PROGRAM + +THIS PROGRAM IS A BRIEF IN-MEMORY PAYROLL SYSTEM. ESSENTIALLY +IT IS A PROGRAM WHICH COMPUTES FEDERAL AND FICA WITHHOLDING +AND STORES PAY RECORDS IN A FORM WHICH PERMITS EASY ACCESS +TO THOSE INTERESTED IN 941 OR W-2 FORMS. THERE IS,AT PRESENT, +NO PROVISION FOR STATE OR LOCAL WITHHOLDING BUT THIS CAN BE +HANDLED VIA THE 'OTHER DEDUCTIONS' CATEGORY. THE DIMENSIONING +LIMITS THE PAYROLL MASTER FILE TO 25 EMPLOYEES, THOUGH THIS +MAY BE INCREASED IF MUCH MAIN MEMORY IS AVAILABLE. +REMEMBER THAT THE MASTER MUST BE RECALLED FROM STORAGE BEFORE +OPERATIONS ARE PERFORMED AND RESTORED AFTER THE OPERATIONS. + +DELETE LINES 1-58 TO RUN ON 16K SYSTEM + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 1 +EMPLOYEE NUMBER TO EDIT MUST BE LESS THAN 26 + +EMPLOYEE NUMBER TO EDIT(0 TO END)? 1 +EMPLOYEE # 1 +NAME 9999 SS NO. 0.000000 + + LAST PAY 0.000000 EXEMPT 0 + + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 0.00 0.00 0.00 0.00 0.00 +MTD 1 0.00 0.00 0.00 0.00 0.00 +CURR 1 0.00 0.00 0.00 0.00 0.00 + + +EMPLOYEE # 1 +9999EMPL. NAME ? TOM CAT + SS# ? 123-45-6789 + ADDR LINE1 ? 777 FUNNY WAY + ADDR LINE2 ? CITY STATE ZIP + LASTPAYDAY ? 12/34/56 + 0.00PAY RATE ? 12.34 + 0.00# EXEMPTION ? 2 + 0.00MAR=2,SING=1 ? 1 + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 0.00 0.00 0.00 0.00 +YTD GROSS,FED WITH,FICA,SPECIAL? 23456,789,174,96 + ID GROSS FED WITH. FICA SPECIAL NET +MTD 1 0.00 0.00 0.00 0.00 +MTD GROSS,FED WITH,FICA,SPECIAL? 456,89,174,6 + ID GROSS FED WITH. FICA SPECIAL NET +CURR 1 0.00 0.00 0.00 0.00 +CURR GROSS,FED WITH,FICA,SPECIAL? 89.64,56,78,0.77 + +PRESS ENTER TO CONTINUE? +EMPLOYEE NUMBER TO EDIT MUST BE LESS THAN 26 + +EMPLOYEE NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? PAYROLL2.DAT + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? PAYROLL2.DAT + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 8 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 1 +ENTER DATE FOR THIS PAYROLL REGISTER ? 56/78/91 + PAYROLL REGISTER 56/78/91 + + ID GROSS FED WITH. FICA SPECIAL NET + +TOTALS 0.00 0.00 0.00 0.00 0.00 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 2 + EMPLOYEE LIST +EMPLOYEE # 1 +NAME TOM CAT SS NO. 123-45-6789 RATE 12.34 +ADDR 777 FUNNY WAY CITY STATE ZIP +LAST PAY 12/34/56 EXEMPT 2 MAR(2)-SING(1) 1 + + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 23456.00 789.00 174.00 96.00 22397.00 +MTD 1 456.00 89.00 174.00 6.00 187.00 +CURR 1 89.64 56.00 78.00 0.77 -45.13 + + +PRESS ENTER FOR COMPANY TOTALS? + COMPANY TOTALS + GROSS FED WITH. FICA SPECIAL NET + +YTD 23456.00 789.00 174.00 96.00 22397.00 +MTD 456.00 89.00 174.00 6.00 187.00 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 0 diff --git a/BP100/PAYROLL2.BAS b/BP100/PAYROLL2.BAS new file mode 100644 index 0000000..46da297 --- /dev/null +++ b/BP100/PAYROLL2.BAS @@ -0,0 +1,320 @@ +1 REM PAYROLL2 +10 CLS:PRINT TAB(15);"PAYROLL PROGRAM":PRINT +20 PRINT "THIS PROGRAM IS A BRIEF IN-MEMORY PAYROLL SYSTEM. ESSENTIALLY +25 PRINT "IT IS A PROGRAM WHICH COMPUTES FEDERAL AND FICA WITHHOLDING +30 PRINT "AND STORES PAY RECORDS IN A FORM WHICH PERMITS EASY ACCESS +35 PRINT "TO THOSE INTERESTED IN 941 OR W-2 FORMS. THERE IS,AT PRESENT, +40 PRINT "NO PROVISION FOR STATE OR LOCAL WITHHOLDING BUT THIS CAN BE +45 PRINT "HANDLED VIA THE 'OTHER DEDUCTIONS' CATEGORY. THE DIMENSIONING +47 PRINT "LIMITS THE PAYROLL MASTER FILE TO 25 EMPLOYEES, THOUGH THIS +49 PRINT "MAY BE INCREASED IF MUCH MAIN MEMORY IS AVAILABLE. +50 PRINT"REMEMBER THAT THE MASTER MUST BE RECALLED FROM STORAGE BEFORE +52 PRINT "OPERATIONS ARE PERFORMED AND RESTORED AFTER THE OPERATIONS. +53 PRINT :PRINT "DELETE LINES 1-58 TO RUN ON 16K SYSTEM" +56 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +58 CLEAR 2000 +59 NC=25:DIM A(NC,15),A$(NC,5) +65 DIM F$(20):REM FORMATTING +67 DIM P(2,9),B(2,9),V(11) +70 GOSUB 9000 +75 GOSUB 14000 +80 FOR I=1 TO NC:A$(I,1)="9999":NEXT +100 CLS:INPUT "ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +110 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 100 +500 CLS:PRINT " MAIN MENU":PRINT +505 PRINT " 0.QUIT +510 PRINT " 1.MASTER FILE MAINTENANCE +520 PRINT " 2.READ FILE IN FROM TAPE +530 PRINT " 3.WRITE FILE OUT ONTO TAPE +540 PRINT " 4.READ FILE IN FROM DISK +550 PRINT " 5.WRITE FILE OUT ONTO DISK +560 PRINT " 6.COMPUTE PAYROLL +570 PRINT " 7.POST PAYROLL TO YTD TOTALS +580 PRINT " 8.REPORT GENERATOR +590 PRINT " 9.END OF PERIOD FILE MAINTENANCE +595 ON ERROR GOTO 15000 +600 INPUT "ENTER YOUR CHOICE";Z9 +605 IF Z9 = 0 THEN END +610 ON Z9 GOSUB 3100,2000,2100,2200,2300,7800,7000,5000,7300 +620 GOTO 500 +1500 CLOSE:RESUME 500 +2000 REM READ IN FILE FROM TAPE +2010 CLS:PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2015 ' IF ZD$="Y" THEN CMD"T" +2020 INPUT #-1,NC +2035 FOR I=1 TO NC:GOSUB 2500:NEXT I +2040 RETURN +2100 REM WRITE OUT FILE ONTO TAPE +2105 CLS +2110 PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2115 ' IF ZD$="Y" THEN CMD"T" +2130 WRITE #-1,NC +2145 FOR I=1 TO NC:GOSUB 2600:NEXT I +2150 RETURN +2200 REM READ IN FILE FROM DISK +2210 CLS:PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2220 ON ERROR GOTO 2290 +2225 INPUT "ENTER NAME OF DATA FILE TO BE READ ";ZN$ +2230 OPEN "I",1,ZN$ +2240 INPUT # 1,NC +2255 FOR I=1 TO NC:GOSUB 2550:NEXT I +2260 CLOSE # 1 +2270 RETURN +2290 PRINT "FILE DOES NOT EXIST":GOSUB 10100:RESUME 2225 +2300 REM WRITE FILE OUT TO DISK +2305 CLS +2310 PRINT :PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2315 PRINT "PRESENT FILE NAME IS ";ZN$;:INPUT " NEW NAME";ZN$ +2320 OPEN "O",1,ZN$ +2330 WRITE # 1,NC +2345 FOR I=1 TO NC:GOSUB 2650:NEXT I +2370 CLOSE # 1 +2380 RETURN +2500 REM INPUT 1 EMPLOYEE FROM TAPE +2510 FOR JI=0 TO 15:INPUT #-1,A(I,JI):NEXT :FOR JI=1 TO 5:INPUT #-1,A$(I,JI):Z8$=A$(I,JI):GOSUB 11000:A$(I,JI)=Z8$:NEXT JI +2520 RETURN +2550 REM INPUT 1 EMPLOYEE FROM DISKETTE +2560 FOR JI=0 TO 15:INPUT # 1,A(I,JI):NEXT :FOR JI=1 TO 5:INPUT # 1,A$(I,JI):Z8$=A$(I,JI):GOSUB 11000:A$(I,JI)=Z8$:NEXT JI +2570 RETURN +2600 REM OUTPUT 1 EMPLOYEE TO TAPE +2610 FOR JI=0 TO 15:WRITE #-1,A(I,JI):NEXT :FOR JI=1 TO 5:WRITE #-1,A$(I,JI):NEXT JI +2620 RETURN +2650 REM OUTPUT 1 EMPLOYEE TO DISKETTE +2660 FOR JI=0 TO 15:WRITE # 1,A(I,JI):NEXT :FOR JI=1 TO 5:WRITE # 1,A$(I,JI):NEXT JI +2670 RETURN +3100 REM EDIT EMPLOYEE +3110 CLS +3120 PRINT "EMPLOYEE NUMBER TO EDIT MUST BE LESS THAN";NC+1 +3130 PRINT :INPUT "EMPLOYEE NUMBER TO EDIT(0 TO END)";I +3135 IF I=0 THEN RETURN +3137 CLS +3140 A(I,0)=I:GOSUB 6100:PRINT :PRINT +3150 GOSUB 6000 +3160 PRINT :GOSUB 10100:GOTO 3110 +4800 REM +5000 REM REPORT GENERATOR +5005 CLS:INPUT "IS A LINE PRINTER TO BE USED(Y/N)";Z2$:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 5005 +5007 CLS:PRINT TAB(10);"REPORT MENU":PRINT +5010 PRINT "1. PAYROLL REGISTER +5020 PRINT "2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +5030 PRINT "3. END REPORT GENERATOR +5060 PRINT :INPUT "ENTER APPROPRIATE CHOICE";Z9 +5065 IF Z9=3 THEN RETURN +5070 ON Z9 GOSUB 5100,5200,5300 +5080 GOTO 5007 +5100 REM PAYROLL REGISTER +5103 CLS:INPUT "ENTER DATE FOR THIS PAYROLL REGISTER ";D$ +5105 FOR I=0 TO 7:V(I)=0:NEXT +5106 CLS +5107 F$="PAYROLL REGISTER "+D$:PRINT TAB(15); F$:PRINT :IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " " +5110 PRINT F$(4):IF Z2$="Y" THEN LPRINT F$(4):LPRINT " " +5115 FOR I=1 TO NC +5117 IF A$(I,1)="9999" OR A$(I,5)<>D$ THEN GOTO 5133 +5120 PRINT USING F$(5);" ",I,A(I,12),A(I,13),A(I,14),A(I,15),A(I,12)-A(I,13)-A(I,14)-A(I,15) +5122 IF Z2$="Y" THEN LPRINT USING F$(5);" ",I,A(I,12),A(I,13),A(I,14),A(I,15),A(I,12)-A(I,13)-A(I,14)-A(I,15) +5125 FOR J=1 TO 4:V(J)=V(J)+A(I,J+11):NEXT +5130 IF I/12=INT(I/12) AND Z2$="N" THEN PRINT :GOSUB 10100 +5133 NEXT I +5135 PRINT :IF Z2$="Y" THEN LPRINT " " +5137 NET=V(1)-V(2)-V(3)-V(4) +5140 PRINT USING F$(8);"TOTALS",V(1),V(2),V(3),V(4),NET +5150 IF Z2$="Y" THEN LPRINT USING F$(8);"TOTALS",V(1),V(2),V(3),V(4),NET +5190 PRINT :GOSUB 10100 +5195 RETURN +5200 REM COMPLETE EMPLOYEE LIST +5203 FOR I=1 TO 11:V(I)=0:NEXT +5205 F$="EMPLOYEE LIST":PRINT TAB(20); F$:IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " " +5210 CLS +5215 FOR I=1 TO NC +5220 IF A$(I,1)="9999" THEN GOTO 5255 +5230 GOSUB 6100:IF Z2$="Y" THEN LPRINT " ":LPRINT " ":GOSUB 6200 +5240 FOR J=4 TO 11:V(J)=V(J)+A(I,J):NEXT +5250 IF Z2$<>"Y" THEN PRINT :GOSUB 10100:CLS:PRINT +5252 PRINT +5255 NEXT I +5257 IF Z2$="Y" THEN LPRINT " ":LPRINT " " +5260 PRINT :INPUT "PRESS ENTER FOR COMPANY TOTALS";Z9$ +5265 CLS:PRINT TAB(20); "COMPANY TOTALS":IF Z2$="Y" THEN LPRINT TAB(20);"COMPANY TOTALS":LPRINT " ":LPRINT " " +5270 PRINT F$(7):PRINT :IF Z2$="Y" THEN LPRINT F$(7):LPRINT " " +5275 V(1)=V(4)-V(5)-V(6)-V(7):V(2)=V(8)-V(9)-V(10)-V(11) +5280 PRINT USING F$(8);"YTD",V(4),V(5),V(6),V(7),V(1) +5282 PRINT USING F$(8);"MTD",V(8),V(9),V(10),V(11),V(2) +5284 IF Z2$<>"Y" THEN GOTO 5289 +5285 LPRINT USING F$(8);"YTD",V(4),V(5),V(6),V(7),V(1) +5286 LPRINT USING F$(8);"MTD",V(8),V(9),V(10),V(11),V(2) +5289 PRINT :GOSUB 10100 +5290 RETURN +5300 RETURN +5400 REM +6000 REM SBR FOR INPUTTING DATA ON 1 EMPLOYEE +6005 F$(9)="% % " +6006 F$(10)=" #####.## " +6010 A(I,0)=I +6013 PRINT "EMPLOYEE # ";I +6015 PRINT USING F$(9);A$(I,1),:INPUT "EMPL. NAME ";A$(I,1) +6018 PRINT USING F$(9);A$(I,2),:INPUT "SS# ";A$(I,2) +6020 PRINT USING F$(9);A$(I,3),:INPUT "ADDR LINE1 ";A$(I,3) +6022 PRINT USING F$(9);A$(I,4),:INPUT "ADDR LINE2 ";A$(I,4) +6024 PRINT USING F$(9);A$(I,5),:INPUT "LASTPAYDAY ";A$(I,5) +6026 PRINT USING F$(10);A(I,1),:INPUT "PAY RATE ";A(I,1) +6028 PRINT USING F$(10);A(I,2),:INPUT "# EXEMPTION ";A(I,2) +6030 PRINT USING F$(10);A(I,3),:INPUT "MAR=2,SING=1 ";A(I,3) +6035 IF A(I,3)<>1 AND A(I,3)<>2 THEN GOSUB 10000:GOTO 6030 +6040 PRINT F$(4):PRINT USING F$(5);"YTD",I,A(I,4),A(I,5),A(I,6),A(I,7) +6045 INPUT "YTD GROSS,FED WITH,FICA,SPECIAL";A(I,4),A(I,5),A(I,6),A(I,7) +6050 PRINT F$(4):PRINT USING F$(5);"MTD",I,A(I,8),A(I,9),A(I,10),A(I,11) +6055 INPUT "MTD GROSS,FED WITH,FICA,SPECIAL";A(I,8),A(I,9),A(I,10),A(I,11) +6062 PRINT F$(4):PRINT USING F$(5);"CURR",I,A(I,12),A(I,13),A(I,14),A(I,15) +6065 INPUT "CURR GROSS,FED WITH,FICA,SPECIAL";A(I,12),A(I,13),A(I,14),A(I,15) +6090 RETURN +6100 REM PRINT EMPLOYEE RECORD ON CRT +6105 PRINT "EMPLOYEE # ";I +6110 PRINT USING F$(1);A$(I,1),A$(I,2),A(I,1) +6120 PRINT USING F$(2);A$(I,3),A$(I,4) +6125 PRINT USING F$(3);A$(I,5),A(I,2),A(I,3) +6130 PRINT :PRINT F$(4) +6135 PRINT USING F$(5);"YTD",I,A(I,4),A(I,5),A(I,6),A(I,7),A(I,4)-A(I,5)-A(I,6)-A(I,7) +6140 PRINT USING F$(5);"MTD",I,A(I,8),A(I,9),A(I,10),A(I,11),A(I,8)-A(I,9)-A(I,10)-A(I,11) +6150 PRINT USING F$(5);"CURR",I,A(I,12),A(I,13),A(I,14),A(I,15),A(I,12)-A(I,13)-A(I,14)-A(I,15) +6170 RETURN +6200 REM PRINT 1 EMPLOYEE RECORD ON PRINTER +6210 LPRINT USING F$(1);A$(I,1),A$(I,2),A(I,1) +6220 LPRINT USING F$(2);A$(I,3),A$(I,4) +6225 LPRINT USING F$(3);A$(I,5),A(I,2),A(I,3) +6230 LPRINT " ":LPRINT F$(4) +6235 LPRINT USING F$(5);"YTD",I,A(I,4),A(I,5),A(I,6),A(I,7),A(I,4)-A(I,5)-A(I,6)-A(I,7) +6240 LPRINT USING F$(5);"MTD",I,A(I,8),A(I,9),A(I,10),A(I,11),A(I,8)-A(I,9)-A(I,10)-A(I,11) +6250 LPRINT USING F$(5);"CURR",I,A(I,12),A(I,13),A(I,14),A(I,15),A(I,12)-A(I,13)-A(I,14)-A(I,15) +6270 RETURN +6300 REM +7000 REM POST TO ACCTS. +7010 CLS +7020 INPUT "POSTING ACCTS-PRESS Y TO PROCEED,N TO RETURN";Z9$ +7030 IF Z9$="N" THEN RETURN +7040 IF Z9$<>"Y" THEN GOSUB 10000:PRINT :GOTO 7020 +7050 PRINT :INPUT "DATE OF PAYROLL ";D$ +7060 PRINT :GOSUB 10100 +7070 CLS:PRINT :PRINT :PRINT :PRINT TAB(20);"COMPUTING" +7080 FOR I=1 TO NC +7090 IF D$<>A$(I,5) THEN GOTO 7150 +7100 X=A(I,12):A(I,4)=A(I,4)+X:A(I,8)=A(I,8)+X +7105 X=A(I,13):A(I,5)=A(I,5)+X:A(I,9)=A(I,9)+X +7110 X=A(I,14):A(I,6)=A(I,6)+X:A(I,10)=A(I,10)+X +7115 X=A(I,15):A(I,7)=A(I,7)+X:A(I,11)=A(I,11)+X +7130 A$(I,5)=LEFT$(A$(I,5),5) +7150 NEXT I +7160 PRINT :PRINT "ALL DONE":GOSUB 10100:RETURN +7300 CLS:PRINT "END OF PERIOD FILE MAINTENANCE":PRINT +7310 INPUT "DO YOU WANT TO ZERO ALL MTD AMOUNTS(Y/N)";Z9$ +7320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 7310 +7330 IF Z9$="Y" THEN FOR I=1 TO NC:A(I,8)=0:A(I,9)=0:A(I,10)=0:A(I,11)=0:NEXT +7340 PRINT +7350 INPUT "DO YOU WANT TO ZERO ALL YTD AMOUNTS(Y/N)";Z9$ +7360 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 7350 +7370 IF Z9$=Y" THEN FOR I=1TONC:A(I,4)=0:A(I,5)=0:A(I,6)=0:A(I,7)=0:NEXT +7390 RETURN +7800 REM SUBROUTINE FOR INPUTTING DATA & COMPUTING PAYROLL +7801 CLS:GOSUB 8000:GOSUB 10100:CLS +7802 INPUT "ENTER PAY DATE(MM/DD/YY)";D$ +7803 IF LEN(D$)<>8 THEN PRINT "INPUT ERROR":PRINT :GOTO 7802 +7805 PRINT "ENTER ID#(0 TO END),REG HRS,PREM HRS":INPUT I,H1,H2 +7810 IF I=0 THEN RETURN +7813 IF I<0 OR I>NC OR I<>INT(I) OR A$(I,1)="9999" THEN GOTO 7840:GOTO 7805 +7815 M=A(I,3):N=A(I,2):R1=A(I,1) +7820 GOSUB 8200:GOSUB 8215:GOSUB 8300 +7822 T7=0:INPUT "ENTER SPECIAL WITHHOLDING(JUST ENTER IF NONE)";T7 +7825 GOSUB 8400:REM COMPUTE FICA:STORE DATA IN EMPLOYEE RECORD +7830 PRINT :GOSUB 6100:PRINT :GOSUB 10100 +7835 CLS:GOTO 7805 +7840 PRINT "INPUT ERROR. TRY AGAIN.":PRINT :GOTO 7805 +8000 REM SUBROUTINE GIVING INSTRUCTIONS +8010 PRINT "THE FOLLOWING COMPUTES FEDERAL AND FICA WITHHOLDING"; +8015 PRINT "AMOUNTS." +8020 PRINT "INPUT FOR EACH EMPLOYEE IS AN ID#(1-25)" +8030 PRINT "THEN NUMBER OF REGULAR HOURS (I.E. AT NORMAL RATE)" +8040 PRINT "THEN NUMBER OF PREMIUM HOURS (I.E. AT O.T. RATE)" +8050 PRINT "THEN PRESS ENTER KEY." +8060 PRINT "NEXT INPUT ANY SPECIAL WITHHOLDING AMT. & PRESS ENTER" +8080 PRINT "NOW REPEAT STARTING WITH ID# FOR NEXT EMPLOYEE,ETC" +8090 PRINT "BE SURE TO PUT A COMMA(,) BETWEEN EACH ENTRY FOR"; +8091 PRINT "EACH EMPLOYEE." +8095 PRINT "INPUT 0 FOR END OF DATA AND ENTER WHEN REQUESTED." +8096 PRINT "PRINT OUT OF ALL RESULTS WILL FOLLOW." +8100 INPUT "PRESS ANY DIGIT AND THEN PRESS ENTER TO BEGIN.";Z7 +8110 RETURN +8200 REM SUBROUTINE FOR COMPUTING GROSS PAY +8205 G=H1*R1 + 1.5*H2*R1 +8210 RETURN +8215 REM SUBROUTINE COMPUTES FEDERAL WAGES +8220 W = G - 14.40*N +8225 RETURN +8300 REM SUBROUTINE COMPUTING WITHHOLDING +8305 REM T1 IS WITHHOLDING. X IS BRACKET WE ARE IN. +8310 T1=0 : X=2 +8315 IF W<= 0 THEN GOTO 8345 +8320 IF W<= P(M,X) THEN GOTO 8340 +8325 T1=T1 + INT((P(M,X)-P(M,X-1))*B(M,X-1)*100+.5)/100 +8330 X=X+1 +8335 GOTO 8320 +8340 T1=T1 + INT((W - P(M,X-1))*B(M,X-1)*100+.5)/100 +8345 RETURN +8400 REM SETS UP PAY ARRAY +8410 A(I,12)=G:A(I,13)=T1:A(I,15)=T7:A(I,14)=FW*G +8420 FOR K=12 TO 15:X=A(I,K):GOSUB 11100:A(I,K)=X:NEXT +8430 A$(I,5)=D$ +8440 RETURN +9000 REM FORMATTING VARIABLES +9010 F$(1)="NAME % % SS NO. % % RATE ###.##" +9020 F$(2)="ADDR % % % %" +9030 F$(3)="LAST PAY % % EXEMPT ## MAR(2)-SING(1) #" +9040 F$(4)=" ID GROSS FED WITH. FICA SPECIAL NET" +9050 F$(5)="% % ## ######.## ######.## #####.## #####.## ######.##" +9060 F$(6)=" % % ######.## ######.## ######.## ######.##" +9070 F$(7)=" GROSS FED WITH. FICA SPECIAL NET" +9080 F$(8)="% % ######.## ######.## #####.## #####.## ######.##" +9099 RETURN +10000 REM INPUT ERROR SBR +10010 PRINT "INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9 +10020 RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9:RETURN +10200 REM Y,N,A SBR +10205 Z9$=" " +10210 INPUT "ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$ +10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205 +10230 RETURN +10300 REM Y,N SBR +10305 Z9$=" " +10310 INPUT "ENTER Y IF OK, N IF ERROR";Z9$ +10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305 +10330 RETURN +10400 REM MORE ENTRY? SBR +10405 Z9$=" " +10410 INPUT "DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$ +10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405 +10430 RETURN +10500 REM ONLY Y/N SBR +10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000 +10520 RETURN +11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$ +11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010 +11020 RETURN +11100 X=INT(100*X+.5)/100:RETURN +14000 REM P(1, ) GIVES WAGE BRACKET BDYS. FOR SINGLE EARNERS. +14010 REM P(2, ) GIVES WAGE BRACKET BDYS. FOR MARRIED EARNERS. +14020 REM B(1, ) GIVES WAGE WITHHOLDING % FOR SINGLE EARNERS. +14030 REM B(2, ) GIVES WAGE WITHHOLDING % FOR MARRIED EARNERS. +14035 FW=.0613:REM FICA WITHOLDING DECIMAL +14040 REM NEXT LINE GIVES P(1, ) +14050 DATA 0,27,63,131,196,273,331,433,100000 +14060 REM NEXT LINE GIVES P(2, ) +14070 DATA 0,46,127,210,288,369,454,556,100000 +14080 REM NEXT LINE GIVES B(1, ) +14090 DATA 0,.15,.18,.21,.26,.30,.34,.39 +14100 REM NEXT LINE GIVES B(2, ) +14110 DATA 0,.15,.18,.21,.24,.28,.32,.37 +14120 REM NOW LOAD P() AND B() ARRAYS +14130 FOR I=1 TO 2:FOR J=1 TO 9:READ P(I,J):NEXT J:NEXT I +14140 FOR I=1 TO 2:FOR J=1 TO 8:READ B(I,J):NEXT J:NEXT I +14150 RETURN +15000 RESUME 500 + diff --git a/BP100/PAYROLL2.DAT b/BP100/PAYROLL2.DAT new file mode 100644 index 0000000..3435728 --- /dev/null +++ b/BP100/PAYROLL2.DAT @@ -0,0 +1,526 @@ + 25 + 1 + 12.34 + 2 + 1 + 23456 + 789 + 174 + 96 + 456 + 89 + 174 + 6 + 89.64 + 56 + 78 + .77 +"TOM CAT" +"123-45-6789" +"777 FUNNY WAY" +"CITY STATE ZIP" +"12/34/56" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 +"9999" +"" +"" +"" +"" diff --git a/BP100/PAYROLL2.INP b/BP100/PAYROLL2.INP new file mode 100644 index 0000000..0c39992 --- /dev/null +++ b/BP100/PAYROLL2.INP @@ -0,0 +1,33 @@ + +Y +1 +1 +TOM CAT +123-45-6789 +777 FUNNY WAY +CITY STATE ZIP +12/34/56 +12.34 +2 +1 +23456,789,174,96 +456,89,174,6 +89.64,56,78,0.77 + +0 +5 + +PAYROLL2.DAT +4 + +PAYROLL2.DAT +8 +Y +1 +56/78/91 + +2 + + +3 +0 diff --git a/BP100/PAYROLL2.OUT b/BP100/PAYROLL2.OUT new file mode 100644 index 0000000..e29dccf --- /dev/null +++ b/BP100/PAYROLL2.OUT @@ -0,0 +1,176 @@ + PAYROLL PROGRAM + +THIS PROGRAM IS A BRIEF IN-MEMORY PAYROLL SYSTEM. ESSENTIALLY +IT IS A PROGRAM WHICH COMPUTES FEDERAL AND FICA WITHHOLDING +AND STORES PAY RECORDS IN A FORM WHICH PERMITS EASY ACCESS +TO THOSE INTERESTED IN 941 OR W-2 FORMS. THERE IS,AT PRESENT, +NO PROVISION FOR STATE OR LOCAL WITHHOLDING BUT THIS CAN BE +HANDLED VIA THE 'OTHER DEDUCTIONS' CATEGORY. THE DIMENSIONING +LIMITS THE PAYROLL MASTER FILE TO 25 EMPLOYEES, THOUGH THIS +MAY BE INCREASED IF MUCH MAIN MEMORY IS AVAILABLE. +REMEMBER THAT THE MASTER MUST BE RECALLED FROM STORAGE BEFORE +OPERATIONS ARE PERFORMED AND RESTORED AFTER THE OPERATIONS. + +DELETE LINES 1-58 TO RUN ON 16K SYSTEM + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 1 +EMPLOYEE NUMBER TO EDIT MUST BE LESS THAN 26 + +EMPLOYEE NUMBER TO EDIT(0 TO END)? 1 +EMPLOYEE # 1 +NAME 9999 SS NO. 0.000000 + + LAST PAY 0.000000 EXEMPT 0 + + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 0.00 0.00 0.00 0.00 0.00 +MTD 1 0.00 0.00 0.00 0.00 0.00 +CURR 1 0.00 0.00 0.00 0.00 0.00 + + +EMPLOYEE # 1 +9999EMPL. NAME ? TOM CAT + SS# ? 123-45-6789 + ADDR LINE1 ? 777 FUNNY WAY + ADDR LINE2 ? CITY STATE ZIP + LASTPAYDAY ? 12/34/56 + 0.00PAY RATE ? 12.34 + 0.00# EXEMPTION ? 2 + 0.00MAR=2,SING=1 ? 1 + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 0.00 0.00 0.00 0.00 +YTD GROSS,FED WITH,FICA,SPECIAL? 23456,789,174,96 + ID GROSS FED WITH. FICA SPECIAL NET +MTD 1 0.00 0.00 0.00 0.00 +MTD GROSS,FED WITH,FICA,SPECIAL? 456,89,174,6 + ID GROSS FED WITH. FICA SPECIAL NET +CURR 1 0.00 0.00 0.00 0.00 +CURR GROSS,FED WITH,FICA,SPECIAL? 89.64,56,78,0.77 + +PRESS ENTER TO CONTINUE? +EMPLOYEE NUMBER TO EDIT MUST BE LESS THAN 26 + +EMPLOYEE NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? PAYROLL2.DAT + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? PAYROLL2.DAT + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 8 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 1 +ENTER DATE FOR THIS PAYROLL REGISTER ? 56/78/91 + PAYROLL REGISTER 56/78/91 + + ID GROSS FED WITH. FICA SPECIAL NET + +TOTALS 0.00 0.00 0.00 0.00 0.00 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 2 + EMPLOYEE LIST +EMPLOYEE # 1 +NAME TOM CAT SS NO. 123-45-6789 RATE 12.34 +ADDR 777 FUNNY WAY CITY STATE ZIP +LAST PAY 12/34/56 EXEMPT 2 MAR(2)-SING(1) 1 + + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 23456.00 789.00 174.00 96.00 22397.00 +MTD 1 456.00 89.00 174.00 6.00 187.00 +CURR 1 89.64 56.00 78.00 0.77 -45.13 + + +PRESS ENTER FOR COMPANY TOTALS? + COMPANY TOTALS + GROSS FED WITH. FICA SPECIAL NET + +YTD 23456.00 789.00 174.00 96.00 22397.00 +MTD 456.00 89.00 174.00 6.00 187.00 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 0 diff --git a/BP100/PAYROLL2.dif b/BP100/PAYROLL2.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/PAYROLL2.run b/BP100/PAYROLL2.run new file mode 100644 index 0000000..1e3d5f5 --- /dev/null +++ b/BP100/PAYROLL2.run @@ -0,0 +1,176 @@ + PAYROLL PROGRAM + +THIS PROGRAM IS A BRIEF IN-MEMORY PAYROLL SYSTEM. ESSENTIALLY +IT IS A PROGRAM WHICH COMPUTES FEDERAL AND FICA WITHHOLDING +AND STORES PAY RECORDS IN A FORM WHICH PERMITS EASY ACCESS +TO THOSE INTERESTED IN 941 OR W-2 FORMS. THERE IS,AT PRESENT, +NO PROVISION FOR STATE OR LOCAL WITHHOLDING BUT THIS CAN BE +HANDLED VIA THE 'OTHER DEDUCTIONS' CATEGORY. THE DIMENSIONING +LIMITS THE PAYROLL MASTER FILE TO 25 EMPLOYEES, THOUGH THIS +MAY BE INCREASED IF MUCH MAIN MEMORY IS AVAILABLE. +REMEMBER THAT THE MASTER MUST BE RECALLED FROM STORAGE BEFORE +OPERATIONS ARE PERFORMED AND RESTORED AFTER THE OPERATIONS. + +DELETE LINES 1-58 TO RUN ON 16K SYSTEM + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 1 +EMPLOYEE NUMBER TO EDIT MUST BE LESS THAN 26 + +EMPLOYEE NUMBER TO EDIT(0 TO END)? 1 +EMPLOYEE # 1 +NAME 9999 SS NO. 0.000000 + + LAST PAY 0.000000 EXEMPT 0 + + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 0.00 0.00 0.00 0.00 0.00 +MTD 1 0.00 0.00 0.00 0.00 0.00 +CURR 1 0.00 0.00 0.00 0.00 0.00 + + +EMPLOYEE # 1 +9999EMPL. NAME ? TOM CAT + SS# ? 123-45-6789 + ADDR LINE1 ? 777 FUNNY WAY + ADDR LINE2 ? CITY STATE ZIP + LASTPAYDAY ? 12/34/56 + 0.00PAY RATE ? 12.34 + 0.00# EXEMPTION ? 2 + 0.00MAR=2,SING=1 ? 1 + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 0.00 0.00 0.00 0.00 +YTD GROSS,FED WITH,FICA,SPECIAL? 23456,789,174,96 + ID GROSS FED WITH. FICA SPECIAL NET +MTD 1 0.00 0.00 0.00 0.00 +MTD GROSS,FED WITH,FICA,SPECIAL? 456,89,174,6 + ID GROSS FED WITH. FICA SPECIAL NET +CURR 1 0.00 0.00 0.00 0.00 +CURR GROSS,FED WITH,FICA,SPECIAL? 89.64,56,78,0.77 + +PRESS ENTER TO CONTINUE? +EMPLOYEE NUMBER TO EDIT MUST BE LESS THAN 26 + +EMPLOYEE NUMBER TO EDIT(0 TO END)? 0 + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +PRESENT FILE NAME IS NEW NAME? PAYROLL2.DAT + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? +ENTER NAME OF DATA FILE TO BE READ ? PAYROLL2.DAT + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 8 +IS A LINE PRINTER TO BE USED(Y/N)? Y + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 1 +ENTER DATE FOR THIS PAYROLL REGISTER ? 56/78/91 + PAYROLL REGISTER 56/78/91 + + ID GROSS FED WITH. FICA SPECIAL NET + +TOTALS 0.00 0.00 0.00 0.00 0.00 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 2 + EMPLOYEE LIST +EMPLOYEE # 1 +NAME TOM CAT SS NO. 123-45-6789 RATE 12.34 +ADDR 777 FUNNY WAY CITY STATE ZIP +LAST PAY 12/34/56 EXEMPT 2 MAR(2)-SING(1) 1 + + ID GROSS FED WITH. FICA SPECIAL NET +YTD 1 23456.00 789.00 174.00 96.00 22397.00 +MTD 1 456.00 89.00 174.00 6.00 187.00 +CURR 1 89.64 56.00 78.00 0.77 -45.13 + + +PRESS ENTER FOR COMPANY TOTALS? + COMPANY TOTALS + GROSS FED WITH. FICA SPECIAL NET + +YTD 23456.00 789.00 174.00 96.00 22397.00 +MTD 456.00 89.00 174.00 6.00 187.00 + +PRESS ENTER TO CONTINUE? + REPORT MENU + +1. PAYROLL REGISTER +2. COMPLETE EMPLOYEE LIST WITH COMPANY YTD,MTD TOTALS +3. END REPORT GENERATOR + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.MASTER FILE MAINTENANCE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.COMPUTE PAYROLL + 7.POST PAYROLL TO YTD TOTALS + 8.REPORT GENERATOR + 9.END OF PERIOD FILE MAINTENANCE +ENTER YOUR CHOICE? 0 diff --git a/BP100/PORTFOLIO b/BP100/PORTFOLIO new file mode 100644 index 0000000..0cbacb5 --- /dev/null +++ b/BP100/PORTFOLIO @@ -0,0 +1,2 @@ + 1 +"ABC","A.B.C.","12/34/56", 789, 12.34, 56.78, 9.87 diff --git a/BP100/PORTVAL9.80 b/BP100/PORTVAL9.80 new file mode 100644 index 0000000..f23c54b --- /dev/null +++ b/BP100/PORTVAL9.80 @@ -0,0 +1,134 @@ +THIS PROGRAM IS A SIMPLE STOCK PORTFOLIO PROGRAM. IT WILL + PERMIT THE USER TO STORE DATA ABOUT HIS PORTFOLIO OF SECURIT- +IES AS WELL AS GIVE A PROFIT ANALYSIS OF THE PORTFOLIO. +FOR EACH SECURITY WE STORE STOCK TICKER CODE,COMPANY NAME +DATE OF PURCHASE, # UNITS PURCHASED, PURCHASE PR/UNIT, +PRESENT PR/UNIT, YEARLY DIVIDENDS/UNIT. + + THE ANALYSIS COMPUTES SUCH ELEMENTS AS PORTFOLIO AT COST. +PRESENT VALUE OF PORTFOLIO, PRESENT YIELD, ETC. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + STOCK TICKER CODE? ABC + COMPANY NAME ? A.B.C. + DATE OF PURCHASE ? 12/34/56 + 0.00# UNITS PURCHASED? 789 + 0.00PURCHASE PR/UNIT ? 12.34 + 0.00PRESENT PR/UNIT ? 56.78 + 0.00YEARLY DIV/UNIT ? 9.87 +TK CORP. NAME DATE PURCH. PRESENT YEARLY NO. +CODE PURCH PR/UNIT PR/UNIT DIV/UNIT UNITS +ABC A.B.C. 12/34/56 12.34 56.78 9.87 789 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TK CORP. NAME DATE PURCH. PRESENT YEARLY NO. +CODE PURCH PR/UNIT PR/UNIT DIV/UNIT UNITS +ABC A.B.C. 12/34/56 12.34 56.78 9.87 789 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 +******* COMPUTING ******* + TK DATE PURCH. PRES. YIELD PRESENT % PROFIT +CODE PURCH. PR/UNIT PR/UNIT % VALUE +ABC 12/34/56 12.34 56.78 17.38 44799.42 360.13 + +PRESS ENTER TO CONTINUE? + +PORTFOLIO VALUE AT COST : $9736.26 +PRESENT PORTFOLIO VALUE : $44799.42 +DOLLAR PAPER PROFIT : $35063.16 +TOTAL DIVIDENDS PER YEAR: $7787.43 +DIVIDEND YIELD : 0.17 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/PORTVAL9.BAS b/BP100/PORTVAL9.BAS new file mode 100644 index 0000000..def7936 --- /dev/null +++ b/BP100/PORTVAL9.BAS @@ -0,0 +1,214 @@ +1 CLS:PRINT "THIS PROGRAM IS A SIMPLE STOCK PORTFOLIO PROGRAM. IT WILL +2 PRINT " PERMIT THE USER TO STORE DATA ABOUT HIS PORTFOLIO OF SECURIT- +3 PRINT "IES AS WELL AS GIVE A PROFIT ANALYSIS OF THE PORTFOLIO. +4 PRINT "FOR EACH SECURITY WE STORE STOCK TICKER CODE,COMPANY NAME +5 PRINT "DATE OF PURCHASE, # UNITS PURCHASED, PURCHASE PR/UNIT, +6 PRINT "PRESENT PR/UNIT, YEARLY DIVIDENDS/UNIT. +7 PRINT :PRINT " THE ANALYSIS COMPUTES SUCH ELEMENTS AS PORTFOLIO AT COST. +8 PRINT "PRESENT VALUE OF PORTFOLIO, PRESENT YIELD, ETC. +9 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +19 CLEAR 1000 +20 DEFDBL B,V +30 DIM A$(70,4),B(70,8) +35 DIM AT$(70,4),BT(70,8) +40 GOSUB 9000 +100 CLS:INPUT "ARE DISK DRIVES ATTACHED(Y/N)";ZD$ +110 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 100 +500 CLS:PRINT " MAIN MENU":PRINT +505 PRINT " 0.QUIT +510 PRINT " 1.ADD TO FILE OR BEGIN NEW FILE +520 PRINT " 2.READ FILE IN FROM TAPE +530 PRINT " 3.WRITE FILE OUT ONTO TAPE +540 PRINT " 4.READ FILE IN FROM DISK +550 PRINT " 5.WRITE FILE OUT ONTO DISK +560 PRINT " 6.EDIT FILE +570 PRINT " 7.LIST FILE AND PROFIT ANALYSIS +580 PRINT " 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +600 INPUT "ENTER YOUR CHOICE";Z9 +605 IF Z9 = 0 THEN END +610 ON Z9 GOSUB 1000,2000,2100,2200,2300,3000,5000,7000 +620 GOTO 500 +1000 REM ADD TO OR START FILE ALREADY IN MEMORY +1010 CLS: IF NI=0 THEN PRINT "NEW FILE":GOSUB 10100 +1015 J=NI+1 +1020 GOSUB 6000:REM INPUT 1 RECORD +1030 CLS:PRINT F$(2):PRINT F$(3):GOSUB 6100:REM PRINT OUT 1 RECORD +1040 GOSUB 10200:IF Z9$="N" THEN GOTO 1020 +1050 IF Z9$="A" THEN RETURN +1060 NI=NI+1:REM NEW RECORD ON FILE +1070 GOSUB 10400:REM MORE? +1080 IF Z9$="Y" THEN GOTO 1000 +1090 RETURN +2000 REM READ IN FILE FROM TAPE +2010 CLS:PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2015 ' IF ZD$="Y" THEN CMD"T" +2020 INPUT #-1,NI +2030 FOR J=1 TO NI:INPUT #-1,A$(J,1),A$(J,2),A$(J,3),B(J,1),B(J,2),B(J,3),B(J,4):NEXT +2040 RETURN +2100 REM WRITE OUT FILE ONTO TAPE +2110 PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100 +2115 ' IF ZD$="Y" THEN CMD"T" +2130 WRITE #-1,NI +2140 FOR J=1 TO NI:WRITE #-1,A$(J,1),A$(J,2),A$(J,3),B(J,1),B(J,2),B(J,3),B(J,4):NEXT +2150 RETURN +2200 REM READ IN FILE FROM DISK +2210 CLS:PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2220 ON ERROR GOTO 2290 +2230 OPEN "I",1,"PORTFOLIO" +2240 INPUT # 1,NI +2250 FOR J=1 TO NI:INPUT # 1,A$(J,1),A$(J,2),A$(J,3),B(J,1),B(J,2),B(J,3),B(J,4):NEXT +2260 CLOSE # 1 +2270 RETURN +2290 PRINT "FILE DOES NOT EXIST":GOSUB 10100:RETURN +2300 REM WRITE FILE OUT TO DISK +2310 PRINT :PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100 +2320 OPEN "O",1,"PORTFOLIO" +2330 WRITE # 1,NI +2340 FOR J=1 TO NI +2350 WRITE # 1,A$(J,1),A$(J,2),A$(J,3),B(J,1),B(J,2),B(J,3),B(J,4) +2360 NEXT J +2370 CLOSE # 1 +2380 RETURN +3000 REM EDIT FILE +3010 CLS:PRINT " ";F$(2):PRINT " ";F$(3) +3020 FOR J=1 TO NI +3030 PRINT USING "## ";J; +3040 GOSUB 6100 +3050 IF J/12=INT(J/12) THEN GOSUB 4000 +3060 NEXT J +3062 J=J-1 +3065 IF J/12=INT(J/12) THEN GOTO 3080 +3070 GOSUB 4000 +3080 RETURN +4000 REM EDIT SUBROUTINE +4010 K=J +4020 PRINT +4025 J=0 +4028 PRINT "CHANGE STOCK TICKER CODE TO ZZZZ FOR DELETING" +4030 INPUT "ENTER # OF ITEM YOU WISH TO EDIT,0 IF NONE";J +4035 IF J=0 THEN J=K:RETURN +4040 CLS:PRINT " ";F$(2):PRINT " ";F$(3):PRINT +4050 PRINT " ";:GOSUB 6100 +4060 PRINT :GOSUB 6000 +4070 CLS:PRINT " ";F$(2):PRINT " ";F$(3) +4080 FOR J=INT(K/12)*12+1 TO K:PRINT USING "## ";J;:GOSUB 6100:NEXT +4090 GOTO 4020 +5000 REM LIST FILE WITH ANALYSIS +5005 INPUT "IS A LINE PRINTER TO BE USED(Y/N)";Z2$:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 5005 +5010 CLS:PRINT " LIST MENU":PRINT +5020 PRINT "1. COMPLETE LIST AS ON FILE +5030 PRINT "2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +5050 PRINT "3. END LIST PROGRAM +5060 PRINT :INPUT "ENTER APPROPRIATE CHOICE";Z9 +5065 IF Z9=3 THEN RETURN +5070 ON Z9 GOSUB 5200,5300 +5080 GOTO 5010 +5100 RETURN +5200 REM COMPLETE LIST +5205 CLS:IF Z2$="Y" THEN PRINT "PUT PAPER INTO PRINTER":GOSUB 10100 +5210 PRINT F$(2):PRINT F$(3):IF Z2$="Y" THEN LPRINT F$(2):LPRINT F$(3) +5220 FOR J = 1 TO NI +5230 GOSUB 6100:GOSUB 6300:REM 1 RECORD PRINTED +5240 IF J/12 = INT(J/12) THEN PRINT :GOSUB 10100:CLS:PRINT F$(2):PRINT F$(3) +5250 NEXT J +5260 PRINT :GOSUB 10100 +5270 RETURN +5300 REM PORTFOLIO ANALYSIS +5310 V(1)=0:V(2)=0:V(3)=0:V(4)=0 +5315 CLS:PRINT @ 398,"******* COMPUTING *******" +5320 FOR J=1 TO NI +5330 V(1)=V(1)+B(J,1)*B(J,2):REM PORTFOLIO AT COST +5340 V(2)=V(2)+B(J,1)*B(J,3):REM PORTFOLIO VALUE NOW +5350 V(3)=V(3)+B(J,1)*B(J,4):REM TOTAL DIVIDENDS +5360 B(J,5)=B(J,4)/B(J,3)*100:REM PRESENT YIELD +5370 B(J,6)=B(J,3)/B(J,2)*100-100:REM % PROFIT +5380 B(J,7)=B(J,1)*B(J,3):REM PRESENT VALUE +5390 NEXT J +5400 CLS:PRINT F$(5):PRINT F$(6):IF Z2$="Y" THEN LPRINT F$(5):LPRINT F$(6) +5410 FOR J=1 TO NI +5420 PRINT USING F$(7);A$(J,1),A$(J,3),B(J,2),B(J,3),B(J,5),B(J,7),B(J,6) +5430 IF Z2$="Y" THEN LPRINT USING F$(7);A$(J,1),A$(J,3),B(J,2),B(J,3),B(J,5),B(J,7),B(J,6) +5440 IF J/12=INT(J/12) THEN GOSUB 10100:CLS:PRINT F$(5):PRINT F$(6) +5450 NEXT J +5460 PRINT :GOSUB 10100 +5470 PRINT +5480 PRINT USING "PORTFOLIO VALUE AT COST : $$#####.##";V(1) +5485 PRINT USING "PRESENT PORTFOLIO VALUE : $$#####.##";V(2) +5487 PRINT USING "DOLLAR PAPER PROFIT : $$#####.##";V(2)-V(1) +5490 PRINT USING "TOTAL DIVIDENDS PER YEAR: $$#####.##";V(3) +5495 PRINT USING "DIVIDEND YIELD : ####.##";V(3)/V(2) +5500 IF Z2$<>"Y" THEN GOTO 5550 +5510 LPRINT USING "PORTFOLIO VALUE AT COST : $$#####.##";V(1) +5515 LPRINT USING "PRESENT PORTFOLIO VALUE : $$#####.##";V(2) +5517 LPRINT USING "DOLLAR PAPER PROFIT : $$#####.##";V(2)-V(1) +5520 LPRINT USING "TOTAL DIVIDENDS PER YEAR: $$#####.##";V(3) +5525 LPRINT USING "DIVIDEND YIELD : ###.##";V(3)/V(2) +5530 LPRINT :LPRINT +5550 PRINT :GOSUB 10100:RETURN +6000 REM SBR FOR INPUTTING DATA ON 1 PURCHASE +6005 F$(1)="% %" +6010 PRINT USING F$(1);A$(J,1),:INPUT "STOCK TICKER CODE";A$(J,1) +6020 PRINT USING F$(1);A$(J,2),:INPUT "COMPANY NAME ";A$(J,2) +6030 PRINT USING F$(1);A$(J,3),:INPUT "DATE OF PURCHASE ";A$(J,3) +6035 F$(1)=" ######.## " +6040 PRINT USING F$(1);B(J,1),:INPUT "# UNITS PURCHASED";B(J,1) +6050 PRINT USING F$(1);B(J,2),:INPUT "PURCHASE PR/UNIT ";B(J,2) +6060 PRINT USING F$(1);B(J,3),:INPUT "PRESENT PR/UNIT ";B(J,3) +6070 PRINT USING F$(1);B(J,4),:INPUT "YEARLY DIV/UNIT ";B(J,4) +6099 RETURN +6100 REM PRINT 1 LINE OF PORTFOLIO +6110 PRINT USING F$(4);A$(J,1),A$(J,2),A$(J,3),B(J,2),B(J,3),B(J,4),B(J,1) +6120 RETURN +6300 REM PRINT 1 LINE OF PORTFOLIO ON PRINTER +6310 IF Z2$<>"Y" THEN RETURN +6320 LPRINT USING F$(4);A$(J,1),A$(J,2),A$(J,3),B(J,2),B(J,3),B(J,4),B(J,1) +6330 RETURN +7000 REM DELETE SBR COMPUTATION +7005 K=1:REM K=NO. OF RECORDS NOT DELETED +7010 FOR J=1 TO NI +7020 IF A$(J,1)="ZZZZ" THEN GOTO 7090 +7030 REM DO NOT DELETE RECORD +7040 FOR J6=1 TO 4:AT$(K,J6)=A$(J,J6):NEXT +7050 FOR J6=1 TO 7:BT(K,J6)=B(J,J6):NEXT +7060 K=K+1:GOTO 7090 +7090 NEXT J +7100 K=K-1:NI=K +7110 FOR J=1 TO NI +7120 FOR J6=1 TO 4:A$(J,J6)=AT$(J,J6):NEXT +7130 FOR J6=1 TO 7:B(J,J6)=BT(J,J6):NEXT +7140 NEXT J +7150 RETURN +9000 REM FORMATTING VARIABLES +9020 F$(2)="TK CORP. NAME DATE PURCH. PRESENT YEARLY NO." +9025 F$(3)="CODE PURCH PR/UNIT PR/UNIT DIV/UNIT UNITS" +9030 F$(4)="% % % % % % ####.## ####.## ####.## #####" +9040 F$(5)=" TK DATE PURCH. PRES. YIELD PRESENT % PROFIT" +9050 F$(6)="CODE PURCH. PR/UNIT PR/UNIT % VALUE" +9060 F$(7)="% % % % ####.## ####.## ###.## ######.## ####.## " +9099 RETURN +10000 REM INPUT ERROR SBR +10010 PRINT "INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9 +10020 RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9:RETURN +10200 REM Y,N,A SBR +10205 Z9$=" " +10210 INPUT "ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$ +10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205 +10230 RETURN +10300 REM Y,N SBR +10305 Z9$=" " +10310 INPUT "ENTER Y IF OK, N IF ERROR";Z9$ +10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305 +10330 RETURN +10400 REM MORE ENTRY? SBR +10405 Z9$=" " +10410 INPUT "DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$ +10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405 +10430 RETURN +10500 REM ONLY Y/N SBR +10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000 +10520 RETURN +11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$ +11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010 +11020 RETURN + diff --git a/BP100/PORTVAL9.INP b/BP100/PORTVAL9.INP new file mode 100644 index 0000000..5fb905b --- /dev/null +++ b/BP100/PORTVAL9.INP @@ -0,0 +1,27 @@ + +Y +1 + +ABC +A.B.C. +12/34/56 +789 +12.34 +56.78 +9.87 +Y +N +5 + +4 + +7 +Y +1 + + +2 + + +3 +0 diff --git a/BP100/PORTVAL9.OUT b/BP100/PORTVAL9.OUT new file mode 100644 index 0000000..68bc886 --- /dev/null +++ b/BP100/PORTVAL9.OUT @@ -0,0 +1,134 @@ +THIS PROGRAM IS A SIMPLE STOCK PORTFOLIO PROGRAM. IT WILL + PERMIT THE USER TO STORE DATA ABOUT HIS PORTFOLIO OF SECURIT- +IES AS WELL AS GIVE A PROFIT ANALYSIS OF THE PORTFOLIO. +FOR EACH SECURITY WE STORE STOCK TICKER CODE,COMPANY NAME +DATE OF PURCHASE, # UNITS PURCHASED, PURCHASE PR/UNIT, +PRESENT PR/UNIT, YEARLY DIVIDENDS/UNIT. + + THE ANALYSIS COMPUTES SUCH ELEMENTS AS PORTFOLIO AT COST. +PRESENT VALUE OF PORTFOLIO, PRESENT YIELD, ETC. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + STOCK TICKER CODE? ABC + COMPANY NAME ? A.B.C. + DATE OF PURCHASE ? 12/34/56 + 0.00# UNITS PURCHASED? 789 + 0.00PURCHASE PR/UNIT ? 12.34 + 0.00PRESENT PR/UNIT ? 56.78 + 0.00YEARLY DIV/UNIT ? 9.87 +TK CORP. NAME DATE PURCH. PRESENT YEARLY NO. +CODE PURCH PR/UNIT PR/UNIT DIV/UNIT UNITS +ABC A.B.C. 12/34/56 12.34 56.78 9.87 789 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TK CORP. NAME DATE PURCH. PRESENT YEARLY NO. +CODE PURCH PR/UNIT PR/UNIT DIV/UNIT UNITS +ABC A.B.C. 12/34/56 12.34 56.78 9.87 789 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 +******* COMPUTING ******* + TK DATE PURCH. PRES. YIELD PRESENT % PROFIT +CODE PURCH. PR/UNIT PR/UNIT % VALUE +ABC 12/34/56 12.34 56.78 17.38 44799.42 360.13 + +PRESS ENTER TO CONTINUE? + +PORTFOLIO VALUE AT COST : $9736.26 +PRESENT PORTFOLIO VALUE : $44799.42 +DOLLAR PAPER PROFIT : $35063.16 +TOTAL DIVIDENDS PER YEAR: $7787.43 +DIVIDEND YIELD : 0.17 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/PORTVAL9.dif b/BP100/PORTVAL9.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/PORTVAL9.run b/BP100/PORTVAL9.run new file mode 100644 index 0000000..f23c54b --- /dev/null +++ b/BP100/PORTVAL9.run @@ -0,0 +1,134 @@ +THIS PROGRAM IS A SIMPLE STOCK PORTFOLIO PROGRAM. IT WILL + PERMIT THE USER TO STORE DATA ABOUT HIS PORTFOLIO OF SECURIT- +IES AS WELL AS GIVE A PROFIT ANALYSIS OF THE PORTFOLIO. +FOR EACH SECURITY WE STORE STOCK TICKER CODE,COMPANY NAME +DATE OF PURCHASE, # UNITS PURCHASED, PURCHASE PR/UNIT, +PRESENT PR/UNIT, YEARLY DIVIDENDS/UNIT. + + THE ANALYSIS COMPUTES SUCH ELEMENTS AS PORTFOLIO AT COST. +PRESENT VALUE OF PORTFOLIO, PRESENT YIELD, ETC. + +PRESS ENTER TO BEGIN? +ARE DISK DRIVES ATTACHED(Y/N)? Y + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 1 +NEW FILE +PRESS ENTER TO CONTINUE? + STOCK TICKER CODE? ABC + COMPANY NAME ? A.B.C. + DATE OF PURCHASE ? 12/34/56 + 0.00# UNITS PURCHASED? 789 + 0.00PURCHASE PR/UNIT ? 12.34 + 0.00PRESENT PR/UNIT ? 56.78 + 0.00YEARLY DIV/UNIT ? 9.87 +TK CORP. NAME DATE PURCH. PRESENT YEARLY NO. +CODE PURCH PR/UNIT PR/UNIT DIV/UNIT UNITS +ABC A.B.C. 12/34/56 12.34 56.78 9.87 789 +ENTER Y IF OK,N IF ERROR,A TO ABORT? Y +DO YOU DESIRE MORE ENTRIES(Y/N)? N + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 5 + +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 4 +PUT DATA DISK IN DISK DRIVE +PRESS ENTER TO CONTINUE? + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 7 +IS A LINE PRINTER TO BE USED(Y/N)? Y + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 1 +PUT PAPER INTO PRINTER +PRESS ENTER TO CONTINUE? +TK CORP. NAME DATE PURCH. PRESENT YEARLY NO. +CODE PURCH PR/UNIT PR/UNIT DIV/UNIT UNITS +ABC A.B.C. 12/34/56 12.34 56.78 9.87 789 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 2 +******* COMPUTING ******* + TK DATE PURCH. PRES. YIELD PRESENT % PROFIT +CODE PURCH. PR/UNIT PR/UNIT % VALUE +ABC 12/34/56 12.34 56.78 17.38 44799.42 360.13 + +PRESS ENTER TO CONTINUE? + +PORTFOLIO VALUE AT COST : $9736.26 +PRESENT PORTFOLIO VALUE : $44799.42 +DOLLAR PAPER PROFIT : $35063.16 +TOTAL DIVIDENDS PER YEAR: $7787.43 +DIVIDEND YIELD : 0.17 + +PRESS ENTER TO CONTINUE? + LIST MENU + +1. COMPLETE LIST AS ON FILE +2. LIST WITH PAPER PROFIT, YIELD & PORTFOLIO VALUE +3. END LIST PROGRAM + +ENTER APPROPRIATE CHOICE? 3 + MAIN MENU + + 0.QUIT + 1.ADD TO FILE OR BEGIN NEW FILE + 2.READ FILE IN FROM TAPE + 3.WRITE FILE OUT ONTO TAPE + 4.READ FILE IN FROM DISK + 5.WRITE FILE OUT ONTO DISK + 6.EDIT FILE + 7.LIST FILE AND PROFIT ANALYSIS + 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE +ENTER YOUR CHOICE? 0 diff --git a/BP100/PRINDLAS.80 b/BP100/PRINDLAS.80 new file mode 100644 index 0000000..6135cee --- /dev/null +++ b/BP100/PRINDLAS.80 @@ -0,0 +1,31 @@ + LASPEYRES PRICE INDEX + +COMPARING PRICES AT A FIXED TIME IN THE PAST, CALLED THE +BASE YEAR TO CURRENT PRICES IS NOT THAT SIMPLE. THIS IS +BECAUSE NEW ITEMS HIT THE MARKET AND USE OF OTHER ITEMS +CHANGE THROUGH THE YEARS. THE U.S. DEPARTMENT OF LABOR USES +A METHOD BY WHICH QUANTITIES FOR THE BASE YEAR ARE USED AND +ARE WEIGHTED ONCE WITH BASE YEAR PRICES AND ONCE WITH CURRENT +PRICES. THESE TWO WEIGHTINGS ARE DIVIDED AND THE QUOTIENT +IS MULTIPLIED BY 100 GIVING THE LASPEYRES PRICE INDEX. +IF THE INDEX IS GREATER THAN 100 THEN PRICES HAVE INCREASED. + +PRESS ENTER TO CONTINUE? +INPUT ITEMS IN INDEX 1 BY 1 AS REQUESTED. A NEGATIVE QUANTITY +MEANS THAT THE USER HAS FINISHED INPUTTING THE DATA. + +FOR ITEM # 1 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? 45 + BASE YEAR PRICE ? 67.89 + CURRENT YEAR PRICE ? 123.45 +FOR ITEM # 2 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? 67 + BASE YEAR PRICE ? 89.01 + CURRENT YEAR PRICE ? 234.56 +FOR ITEM # 3 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? -1 + + +THE LASPEYRES PRICE INDEX EQUALS 235.851 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/PRINDLAS.BAS b/BP100/PRINDLAS.BAS new file mode 100644 index 0000000..246604a --- /dev/null +++ b/BP100/PRINDLAS.BAS @@ -0,0 +1,34 @@ +1 REM PRINDLAS +5 CLEAR 1000 +10 CLS +20 PRINT TAB(10); "LASPEYRES PRICE INDEX":PRINT +30 PRINT"COMPARING PRICES AT A FIXED TIME IN THE PAST, CALLED THE +35 PRINT"BASE YEAR TO CURRENT PRICES IS NOT THAT SIMPLE. THIS IS +40 PRINT"BECAUSE NEW ITEMS HIT THE MARKET AND USE OF OTHER ITEMS +45 PRINT"CHANGE THROUGH THE YEARS. THE U.S. DEPARTMENT OF LABOR USES +50 PRINT"A METHOD BY WHICH QUANTITIES FOR THE BASE YEAR ARE USED AND +55 PRINT"ARE WEIGHTED ONCE WITH BASE YEAR PRICES AND ONCE WITH CURRENT +60 PRINT"PRICES. THESE TWO WEIGHTINGS ARE DIVIDED AND THE QUOTIENT +65 PRINT"IS MULTIPLIED BY 100 GIVING THE LASPEYRES PRICE INDEX. +70 PRINT"IF THE INDEX IS GREATER THAN 100 THEN PRICES HAVE INCREASED. +90 PRINT:INPUT"PRESS ENTER TO CONTINUE";Z9$ +95 DIM PB(100),PC(100),QB(100) +100 CLS +110 PRINT"INPUT ITEMS IN INDEX 1 BY 1 AS REQUESTED. A NEGATIVE QUANTITY +120 PRINT"MEANS THAT THE USER HAS FINISHED INPUTTING THE DATA. +130 PRINT +140 I=0 +150 PRINT"FOR ITEM #";I+1;" ENTER THE FOLLOWING:" +160 INPUT" BASE YEAR QUANTITY(NEGATIVE ENDS)";QB(I+1) +165 IF QB(I+1)<0 THEN GOTO 300 +170 INPUT" BASE YEAR PRICE ";PB(I+1) +180 INPUT" CURRENT YEAR PRICE ";PC(I+1) +190 I=I+1:GOTO 150 +300 N=0:D=0 +310 FOR J=1 TO I:N=N+PC(J)*QB(J):D=D+PB(J)*QB(J):NEXT +320 CLS +330 PRINT:PRINT +340 PRINT"THE LASPEYRES PRICE INDEX EQUALS ";N/D*100 +350 PRINT:INPUT"PRESS ENTER FOR MORE";Z9$ +355 IF Z9$ = "-1" THEN END +360 CLS:GOTO 140 diff --git a/BP100/PRINDLAS.INP b/BP100/PRINDLAS.INP new file mode 100644 index 0000000..1445809 --- /dev/null +++ b/BP100/PRINDLAS.INP @@ -0,0 +1,9 @@ + +45 +67.89 +123.45 +67 +89.01 +234.56 +-1 +-1 diff --git a/BP100/PRINDLAS.OUT b/BP100/PRINDLAS.OUT new file mode 100644 index 0000000..cc95bec --- /dev/null +++ b/BP100/PRINDLAS.OUT @@ -0,0 +1,31 @@ + LASPEYRES PRICE INDEX + +COMPARING PRICES AT A FIXED TIME IN THE PAST, CALLED THE +BASE YEAR TO CURRENT PRICES IS NOT THAT SIMPLE. THIS IS +BECAUSE NEW ITEMS HIT THE MARKET AND USE OF OTHER ITEMS +CHANGE THROUGH THE YEARS. THE U.S. DEPARTMENT OF LABOR USES +A METHOD BY WHICH QUANTITIES FOR THE BASE YEAR ARE USED AND +ARE WEIGHTED ONCE WITH BASE YEAR PRICES AND ONCE WITH CURRENT +PRICES. THESE TWO WEIGHTINGS ARE DIVIDED AND THE QUOTIENT +IS MULTIPLIED BY 100 GIVING THE LASPEYRES PRICE INDEX. +IF THE INDEX IS GREATER THAN 100 THEN PRICES HAVE INCREASED. + +PRESS ENTER TO CONTINUE? +INPUT ITEMS IN INDEX 1 BY 1 AS REQUESTED. A NEGATIVE QUANTITY +MEANS THAT THE USER HAS FINISHED INPUTTING THE DATA. + +FOR ITEM # 1 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? 45 + BASE YEAR PRICE ? 67.89 + CURRENT YEAR PRICE ? 123.45 +FOR ITEM # 2 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? 67 + BASE YEAR PRICE ? 89.01 + CURRENT YEAR PRICE ? 234.56 +FOR ITEM # 3 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? -1 + + +THE LASPEYRES PRICE INDEX EQUALS 235.851 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/PRINDLAS.dif b/BP100/PRINDLAS.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/PRINDLAS.run b/BP100/PRINDLAS.run new file mode 100644 index 0000000..6135cee --- /dev/null +++ b/BP100/PRINDLAS.run @@ -0,0 +1,31 @@ + LASPEYRES PRICE INDEX + +COMPARING PRICES AT A FIXED TIME IN THE PAST, CALLED THE +BASE YEAR TO CURRENT PRICES IS NOT THAT SIMPLE. THIS IS +BECAUSE NEW ITEMS HIT THE MARKET AND USE OF OTHER ITEMS +CHANGE THROUGH THE YEARS. THE U.S. DEPARTMENT OF LABOR USES +A METHOD BY WHICH QUANTITIES FOR THE BASE YEAR ARE USED AND +ARE WEIGHTED ONCE WITH BASE YEAR PRICES AND ONCE WITH CURRENT +PRICES. THESE TWO WEIGHTINGS ARE DIVIDED AND THE QUOTIENT +IS MULTIPLIED BY 100 GIVING THE LASPEYRES PRICE INDEX. +IF THE INDEX IS GREATER THAN 100 THEN PRICES HAVE INCREASED. + +PRESS ENTER TO CONTINUE? +INPUT ITEMS IN INDEX 1 BY 1 AS REQUESTED. A NEGATIVE QUANTITY +MEANS THAT THE USER HAS FINISHED INPUTTING THE DATA. + +FOR ITEM # 1 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? 45 + BASE YEAR PRICE ? 67.89 + CURRENT YEAR PRICE ? 123.45 +FOR ITEM # 2 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? 67 + BASE YEAR PRICE ? 89.01 + CURRENT YEAR PRICE ? 234.56 +FOR ITEM # 3 ENTER THE FOLLOWING: + BASE YEAR QUANTITY(NEGATIVE ENDS)? -1 + + +THE LASPEYRES PRICE INDEX EQUALS 235.851 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/PRINDPA.80 b/BP100/PRINDPA.80 new file mode 100644 index 0000000..0ea1727 --- /dev/null +++ b/BP100/PRINDPA.80 @@ -0,0 +1,31 @@ + PAASCHE PRICE INDEX + +COMPARING PRICES AT A FIXED TIME IN THE PAST, CALLED THE +BASE YEAR TO CURRENT PRICES IS NOT THAT SIMPLE. THIS IS +BECAUSE NEW ITEMS HIT THE MARKET AND USE OF OTHER ITEMS +CHANGE THROUGH THE YEARS. THE PAASCHE PRICE INDEX USES +A METHOD BY WHICH QUANTITIES FOR THE CURRENT YEAR ARE USED AND +ARE WEIGHTED ONCE WITH BASE YEAR PRICES AND ONCE WITH CURRENT +PRICES. THESE TWO WEIGHTINGS ARE DIVIDED AND THE QUOTIENT +IS MULTIPLIED BY 100 GIVING THE PAASCHE PRICE INDEX. +IF THE INDEX IS GREATER THAN 100 THEN PRICES HAVE INCREASED. + +PRESS ENTER TO CONTINUE? +INPUT ITEMS IN INDEX 1 BY 1 AS REQUESTED. A NEGATIVE QUANTITY +MEANS THAT THE USER HAS FINISHED INPUTTING THE DATA. + +FOR ITEM # 1 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? 56 + BASE YEAR PRICE ? 78.91 + CURRENT YEAR PRICE ? 234.56 +FOR ITEM # 2 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? 78 + BASE YEAR PRICE ? 90.12 + CURRENT YEAR PRICE ? 345.67 +FOR ITEM # 3 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? -1 + + +THE PAASCHE PRICE INDEX EQUALS 350.249 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/PRINDPA.BAS b/BP100/PRINDPA.BAS new file mode 100644 index 0000000..0793059 --- /dev/null +++ b/BP100/PRINDPA.BAS @@ -0,0 +1,34 @@ +1 REM PRINDLAS +5 CLEAR 1000 +10 CLS +20 PRINT TAB(15); "PAASCHE PRICE INDEX":PRINT +30 PRINT"COMPARING PRICES AT A FIXED TIME IN THE PAST, CALLED THE +35 PRINT"BASE YEAR TO CURRENT PRICES IS NOT THAT SIMPLE. THIS IS +40 PRINT"BECAUSE NEW ITEMS HIT THE MARKET AND USE OF OTHER ITEMS +45 PRINT"CHANGE THROUGH THE YEARS. THE PAASCHE PRICE INDEX USES +50 PRINT"A METHOD BY WHICH QUANTITIES FOR THE CURRENT YEAR ARE USED AND +55 PRINT"ARE WEIGHTED ONCE WITH BASE YEAR PRICES AND ONCE WITH CURRENT +60 PRINT"PRICES. THESE TWO WEIGHTINGS ARE DIVIDED AND THE QUOTIENT +65 PRINT"IS MULTIPLIED BY 100 GIVING THE PAASCHE PRICE INDEX. +70 PRINT"IF THE INDEX IS GREATER THAN 100 THEN PRICES HAVE INCREASED. +90 PRINT:INPUT"PRESS ENTER TO CONTINUE";Z9$ +95 DIM PB(100),PC(100),QC(100) +100 CLS +110 PRINT"INPUT ITEMS IN INDEX 1 BY 1 AS REQUESTED. A NEGATIVE QUANTITY +120 PRINT"MEANS THAT THE USER HAS FINISHED INPUTTING THE DATA. +130 PRINT +140 I=0 +150 PRINT"FOR ITEM #";I+1;" ENTER THE FOLLOWING:" +160 INPUT" CURRENT YEAR QUANTITY(NEGATIVE ENDS)";QC(I+1) +165 IF QC(I+1)<0 THEN GOTO 300 +170 INPUT" BASE YEAR PRICE ";PB(I+1) +180 INPUT" CURRENT YEAR PRICE ";PC(I+1) +190 I=I+1:GOTO 150 +300 N=0:D=0 +310 FOR J=1 TO I:N=N+PC(J)*QC(J):D=D+PB(J)*QC(J):NEXT +320 CLS +330 PRINT:PRINT +340 PRINT"THE PAASCHE PRICE INDEX EQUALS ";N/D*100 +350 PRINT:INPUT"PRESS ENTER FOR MORE";Z9$ +355 IF Z9$ = "-1" THEN END +360 CLS:GOTO 140 diff --git a/BP100/PRINDPA.INP b/BP100/PRINDPA.INP new file mode 100644 index 0000000..c9e741f --- /dev/null +++ b/BP100/PRINDPA.INP @@ -0,0 +1,9 @@ + +56 +78.91 +234.56 +78 +90.12 +345.67 +-1 +-1 diff --git a/BP100/PRINDPA.OUT b/BP100/PRINDPA.OUT new file mode 100644 index 0000000..3678b31 --- /dev/null +++ b/BP100/PRINDPA.OUT @@ -0,0 +1,31 @@ + PAASCHE PRICE INDEX + +COMPARING PRICES AT A FIXED TIME IN THE PAST, CALLED THE +BASE YEAR TO CURRENT PRICES IS NOT THAT SIMPLE. THIS IS +BECAUSE NEW ITEMS HIT THE MARKET AND USE OF OTHER ITEMS +CHANGE THROUGH THE YEARS. THE PAASCHE PRICE INDEX USES +A METHOD BY WHICH QUANTITIES FOR THE CURRENT YEAR ARE USED AND +ARE WEIGHTED ONCE WITH BASE YEAR PRICES AND ONCE WITH CURRENT +PRICES. THESE TWO WEIGHTINGS ARE DIVIDED AND THE QUOTIENT +IS MULTIPLIED BY 100 GIVING THE PAASCHE PRICE INDEX. +IF THE INDEX IS GREATER THAN 100 THEN PRICES HAVE INCREASED. + +PRESS ENTER TO CONTINUE? +INPUT ITEMS IN INDEX 1 BY 1 AS REQUESTED. A NEGATIVE QUANTITY +MEANS THAT THE USER HAS FINISHED INPUTTING THE DATA. + +FOR ITEM # 1 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? 56 + BASE YEAR PRICE ? 78.91 + CURRENT YEAR PRICE ? 234.56 +FOR ITEM # 2 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? 78 + BASE YEAR PRICE ? 90.12 + CURRENT YEAR PRICE ? 345.67 +FOR ITEM # 3 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? -1 + + +THE PAASCHE PRICE INDEX EQUALS 350.249 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/PRINDPA.dif b/BP100/PRINDPA.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/PRINDPA.run b/BP100/PRINDPA.run new file mode 100644 index 0000000..0ea1727 --- /dev/null +++ b/BP100/PRINDPA.run @@ -0,0 +1,31 @@ + PAASCHE PRICE INDEX + +COMPARING PRICES AT A FIXED TIME IN THE PAST, CALLED THE +BASE YEAR TO CURRENT PRICES IS NOT THAT SIMPLE. THIS IS +BECAUSE NEW ITEMS HIT THE MARKET AND USE OF OTHER ITEMS +CHANGE THROUGH THE YEARS. THE PAASCHE PRICE INDEX USES +A METHOD BY WHICH QUANTITIES FOR THE CURRENT YEAR ARE USED AND +ARE WEIGHTED ONCE WITH BASE YEAR PRICES AND ONCE WITH CURRENT +PRICES. THESE TWO WEIGHTINGS ARE DIVIDED AND THE QUOTIENT +IS MULTIPLIED BY 100 GIVING THE PAASCHE PRICE INDEX. +IF THE INDEX IS GREATER THAN 100 THEN PRICES HAVE INCREASED. + +PRESS ENTER TO CONTINUE? +INPUT ITEMS IN INDEX 1 BY 1 AS REQUESTED. A NEGATIVE QUANTITY +MEANS THAT THE USER HAS FINISHED INPUTTING THE DATA. + +FOR ITEM # 1 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? 56 + BASE YEAR PRICE ? 78.91 + CURRENT YEAR PRICE ? 234.56 +FOR ITEM # 2 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? 78 + BASE YEAR PRICE ? 90.12 + CURRENT YEAR PRICE ? 345.67 +FOR ITEM # 3 ENTER THE FOLLOWING: + CURRENT YEAR QUANTITY(NEGATIVE ENDS)? -1 + + +THE PAASCHE PRICE INDEX EQUALS 350.249 + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/PROFIND.80 b/BP100/PROFIND.80 new file mode 100644 index 0000000..fea5980 --- /dev/null +++ b/BP100/PROFIND.80 @@ -0,0 +1,29 @@ + PROFITABILITY INDEX OF A PROJECT + +THE PROFITABILITY INDEX OF A PROJECT IS SIMPLY THE PRESENT +VALUE OF THE FUTURE (EXPECTED) NET CASH FLOWS DIVIDED BY THE +INITIAL CASH OUTLAY. AS LONG AS THE PROFITABILITY INDEX IS +GREATER THAN 1 THE INVESTMENT IS ACCEPTABLE. + +IN THIS PROGRAM THE USER INPUTS THE CASH FLOWS OVER THE +LIFE OF A PROJECT(UP TO 100). EXCEPT FOR THE INITIAL COST +A NEGATIVE CASH FLOW MEANS CASH OUTFLOW. THE USER ALSO +ENTERS THE INTEREST RATE WHICH THE PROJECT IS CAPITALIZED +UNDER (I.E. RETURN DESIRED). THE PROGRAM OUTPUTS THE +PROFITABILITY INDEX. + +PRESS ENTER TO BEGIN? +ENTER RETURN DESIRED FOR THIS PROJECT(%) ? 12 +ENTER INITIAL CASH OUTLAY FOR THE PROJECT? 345678 +INPUT CASH FLOW FOR YEAR 1 (-9999 ENDS)? 9123 +INPUT CASH FLOW FOR YEAR 2 (-9999 ENDS)? 5678 +INPUT CASH FLOW FOR YEAR 3 (-9999 ENDS)? 7892 +INPUT CASH FLOW FOR YEAR 4 (-9999 ENDS)? 8912 +INPUT CASH FLOW FOR YEAR 5 (-9999 ENDS)? -9999 + +INITIAL CASH COST OF PROJECT = 345678 +PRESENT VALUE OF FUTURE CASH FLOWS = 23953.1 +PROFITABILITY INDEX EQUALS 6.92931E-2 + + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/PROFIND.BAS b/BP100/PROFIND.BAS new file mode 100644 index 0000000..2a57b4f --- /dev/null +++ b/BP100/PROFIND.BAS @@ -0,0 +1,38 @@ +1 REM PROFIND +5 CLEAR 1000 +10 CLS +15 DIM A(110) +20 PRINT TAB(12); "PROFITABILITY INDEX OF A PROJECT" +25 PRINT +30 PRINT"THE PROFITABILITY INDEX OF A PROJECT IS SIMPLY THE PRESENT +35 PRINT"VALUE OF THE FUTURE (EXPECTED) NET CASH FLOWS DIVIDED BY THE +40 PRINT"INITIAL CASH OUTLAY. AS LONG AS THE PROFITABILITY INDEX IS +45 PRINT"GREATER THAN 1 THE INVESTMENT IS ACCEPTABLE. +50 PRINT:PRINT"IN THIS PROGRAM THE USER INPUTS THE CASH FLOWS OVER THE +55 PRINT"LIFE OF A PROJECT(UP TO 100). EXCEPT FOR THE INITIAL COST +60 PRINT"A NEGATIVE CASH FLOW MEANS CASH OUTFLOW. THE USER ALSO +65 PRINT"ENTERS THE INTEREST RATE WHICH THE PROJECT IS CAPITALIZED +70 PRINT"UNDER (I.E. RETURN DESIRED). THE PROGRAM OUTPUTS THE +75 PRINT"PROFITABILITY INDEX. +95 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +200 CLS +210 INPUT"ENTER RETURN DESIRED FOR THIS PROJECT(%) ";K:K=K/100 +220 INPUT"ENTER INITIAL CASH OUTLAY FOR THE PROJECT";A(0) +230 I=0 +240 PRINT"INPUT CASH FLOW FOR YEAR ";I+1;"(-9999 ENDS)";:INPUT A(I+1) +250 IF A(I+1)<> -9999 THEN I=I+1 :ELSE GOTO 300 +260 GOTO 240 +300 REM ALL INPUTS ENTERED. NOW COMPUTE +305 PRINT +310 PV=0 +320 FOR J=1 TO I +330 PV=PV+A(J)/(1+K)[J +340 NEXT +350 ' PI=PV/A(0) +400 PRINT"INITIAL CASH COST OF PROJECT = ";A(0) +405 PRINT"PRESENT VALUE OF FUTURE CASH FLOWS = ";PV +410 PRINT"PROFITABILITY INDEX EQUALS ";PV/A(0) +420 PRINT:PRINT +430 INPUT"PRESS ENTER FOR MORE COMPUTATION";Z9$ +435 IF Z9$ = "-1" THEN END +440 GOTO 200 diff --git a/BP100/PROFIND.INP b/BP100/PROFIND.INP new file mode 100644 index 0000000..01261a7 --- /dev/null +++ b/BP100/PROFIND.INP @@ -0,0 +1,9 @@ + +12 +345678 +9123 +5678 +7892 +8912 +-9999 +-1 diff --git a/BP100/PROFIND.OUT b/BP100/PROFIND.OUT new file mode 100644 index 0000000..7706e46 --- /dev/null +++ b/BP100/PROFIND.OUT @@ -0,0 +1,29 @@ + PROFITABILITY INDEX OF A PROJECT + +THE PROFITABILITY INDEX OF A PROJECT IS SIMPLY THE PRESENT +VALUE OF THE FUTURE (EXPECTED) NET CASH FLOWS DIVIDED BY THE +INITIAL CASH OUTLAY. AS LONG AS THE PROFITABILITY INDEX IS +GREATER THAN 1 THE INVESTMENT IS ACCEPTABLE. + +IN THIS PROGRAM THE USER INPUTS THE CASH FLOWS OVER THE +LIFE OF A PROJECT(UP TO 100). EXCEPT FOR THE INITIAL COST +A NEGATIVE CASH FLOW MEANS CASH OUTFLOW. THE USER ALSO +ENTERS THE INTEREST RATE WHICH THE PROJECT IS CAPITALIZED +UNDER (I.E. RETURN DESIRED). THE PROGRAM OUTPUTS THE +PROFITABILITY INDEX. + +PRESS ENTER TO BEGIN? +ENTER RETURN DESIRED FOR THIS PROJECT(%) ? 12 +ENTER INITIAL CASH OUTLAY FOR THE PROJECT? 345678 +INPUT CASH FLOW FOR YEAR 1 (-9999 ENDS)? 9123 +INPUT CASH FLOW FOR YEAR 2 (-9999 ENDS)? 5678 +INPUT CASH FLOW FOR YEAR 3 (-9999 ENDS)? 7892 +INPUT CASH FLOW FOR YEAR 4 (-9999 ENDS)? 8912 +INPUT CASH FLOW FOR YEAR 5 (-9999 ENDS)? -9999 + +INITIAL CASH COST OF PROJECT = 345678 +PRESENT VALUE OF FUTURE CASH FLOWS = 23953.1 +PROFITABILITY INDEX EQUALS 6.92931E-2 + + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/PROFIND.dif b/BP100/PROFIND.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/PROFIND.run b/BP100/PROFIND.run new file mode 100644 index 0000000..fea5980 --- /dev/null +++ b/BP100/PROFIND.run @@ -0,0 +1,29 @@ + PROFITABILITY INDEX OF A PROJECT + +THE PROFITABILITY INDEX OF A PROJECT IS SIMPLY THE PRESENT +VALUE OF THE FUTURE (EXPECTED) NET CASH FLOWS DIVIDED BY THE +INITIAL CASH OUTLAY. AS LONG AS THE PROFITABILITY INDEX IS +GREATER THAN 1 THE INVESTMENT IS ACCEPTABLE. + +IN THIS PROGRAM THE USER INPUTS THE CASH FLOWS OVER THE +LIFE OF A PROJECT(UP TO 100). EXCEPT FOR THE INITIAL COST +A NEGATIVE CASH FLOW MEANS CASH OUTFLOW. THE USER ALSO +ENTERS THE INTEREST RATE WHICH THE PROJECT IS CAPITALIZED +UNDER (I.E. RETURN DESIRED). THE PROGRAM OUTPUTS THE +PROFITABILITY INDEX. + +PRESS ENTER TO BEGIN? +ENTER RETURN DESIRED FOR THIS PROJECT(%) ? 12 +ENTER INITIAL CASH OUTLAY FOR THE PROJECT? 345678 +INPUT CASH FLOW FOR YEAR 1 (-9999 ENDS)? 9123 +INPUT CASH FLOW FOR YEAR 2 (-9999 ENDS)? 5678 +INPUT CASH FLOW FOR YEAR 3 (-9999 ENDS)? 7892 +INPUT CASH FLOW FOR YEAR 4 (-9999 ENDS)? 8912 +INPUT CASH FLOW FOR YEAR 5 (-9999 ENDS)? -9999 + +INITIAL CASH COST OF PROJECT = 345678 +PRESENT VALUE OF FUTURE CASH FLOWS = 23953.1 +PROFITABILITY INDEX EQUALS 6.92931E-2 + + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/PVAL.80 b/BP100/PVAL.80 new file mode 100644 index 0000000..35db8d8 --- /dev/null +++ b/BP100/PVAL.80 @@ -0,0 +1,25 @@ + PRESENT VALUE + +THIS PROGRAM WILL COMPUTE THE PRESENT VALUE OF A SINGLE +AMOUNT , A ,TO BE OBTAINED AFTER N EQUAL TIME PERIODS, WITH +INTEREST COMPOUNDED AT A RATE OF I% pER PERIOD. +BE SURE TO INPUT INTEREST RATE AS A PER CENT. CONVERSION +TO DECIMAL FORM IS DONE IN THE PROGRAM. + + INTEREST RATES MAY BE QUOTED AS ANNUAL RATES IF THE +NUMBER OF COMPOUNDINGS PER YEAR ARE KNOWN. + +PRESS ENTER TO BEGIN ? +ARE INTEREST RATES QUOTED ANNUALLY(Y/N)? Y + +ANNUAL INTEREST RATE IN %? 8 +NUMBER OF COMPOUNDINGS ANNUALLY? 12 + +INTEREST RATE PER PERIOD = .666667 % +INTEREST RATE ,i,PER PERIOD= ? 7 +AMOUNT TO BE OBTAINED (A) = ? 123456 +NUMBER OF PERIODS = ? 40 + +PRESENT VALUE = 8244.44 + +FOR ADDITIONAL TRIALS PRESS 1,ELSE PRESS 0? 0 diff --git a/BP100/PVAL.BAS b/BP100/PVAL.BAS new file mode 100644 index 0000000..c4436fc --- /dev/null +++ b/BP100/PVAL.BAS @@ -0,0 +1,36 @@ +1 REM PVAL +5 CLS +10 PRINT" PRESENT VALUE" +20 PRINT +30 PRINT"THIS PROGRAM WILL COMPUTE THE PRESENT VALUE OF A SINGLE +40 PRINT"AMOUNT , A ,TO BE OBTAINED AFTER N EQUAL TIME PERIODS, WITH +50 PRINT"INTEREST COMPOUNDED AT A RATE OF I% pER PERIOD. +55 PRINT "BE SURE TO INPUT INTEREST RATE AS A PER CENT. CONVERSION +57 PRINT "TO DECIMAL FORM IS DONE IN THE PROGRAM. +60 PRINT:PRINT" INTEREST RATES MAY BE QUOTED AS ANNUAL RATES IF THE +70 PRINT"NUMBER OF COMPOUNDINGS PER YEAR ARE KNOWN.":PRINT +90 INPUT "PRESS ENTER TO BEGIN ";Z9 +99 REM +100 CLS:INPUT"ARE INTEREST RATES QUOTED ANNUALLY(Y/N)";Z9$ +103 IF Z9$<>"Y" AND Z9$<>"N" THEN GOTO 100 +105 IF Z9$="Y" THEN GOSUB 500 +110 INPUT "INTEREST RATE ,i,PER PERIOD= ";I +112 INPUT "AMOUNT TO BE OBTAINED (A) = ";A +115 I=I/100 +120 INPUT "NUMBER OF PERIODS = ";N +130 PV = A*(1+I)[(-N) +140 PRINT +150 PRINT "PRESENT VALUE =";PV +190 PRINT +200 INPUT "FOR ADDITIONAL TRIALS PRESS 1,ELSE PRESS 0";Z8 +210 IF Z8 = 1 GOTO 99 +220 IF Z8 = 0 THEN END +230 PRINT "INPUT ERROR. TRY AGAIN. " +240 FOR L= 1 TO 300:NEXT L +250 GOTO 200 +500 REM COMPUTATION FOR ANNUAL DATA +510 PRINT:INPUT"ANNUAL INTEREST RATE IN %";I1 +520 INPUT"NUMBER OF COMPOUNDINGS ANNUALLY";N1 +530 I=I1/N1 +540 PRINT:PRINT"INTEREST RATE PER PERIOD = ";I;"%" +550 FOR J=1 TO 1000:NEXT :CLS:RETURN diff --git a/BP100/PVAL.INP b/BP100/PVAL.INP new file mode 100644 index 0000000..4197f69 --- /dev/null +++ b/BP100/PVAL.INP @@ -0,0 +1,8 @@ + +Y +8 +12 +7 +123456 +40 +0 diff --git a/BP100/PVAL.OUT b/BP100/PVAL.OUT new file mode 100644 index 0000000..612e460 --- /dev/null +++ b/BP100/PVAL.OUT @@ -0,0 +1,25 @@ + PRESENT VALUE + +THIS PROGRAM WILL COMPUTE THE PRESENT VALUE OF A SINGLE +AMOUNT , A ,TO BE OBTAINED AFTER N EQUAL TIME PERIODS, WITH +INTEREST COMPOUNDED AT A RATE OF I% pER PERIOD. +BE SURE TO INPUT INTEREST RATE AS A PER CENT. CONVERSION +TO DECIMAL FORM IS DONE IN THE PROGRAM. + + INTEREST RATES MAY BE QUOTED AS ANNUAL RATES IF THE +NUMBER OF COMPOUNDINGS PER YEAR ARE KNOWN. + +PRESS ENTER TO BEGIN ? +ARE INTEREST RATES QUOTED ANNUALLY(Y/N)? Y + +ANNUAL INTEREST RATE IN %? 8 +NUMBER OF COMPOUNDINGS ANNUALLY? 12 + +INTEREST RATE PER PERIOD = .666667 % +INTEREST RATE ,i,PER PERIOD= ? 7 +AMOUNT TO BE OBTAINED (A) = ? 123456 +NUMBER OF PERIODS = ? 40 + +PRESENT VALUE = 8244.44 + +FOR ADDITIONAL TRIALS PRESS 1,ELSE PRESS 0? 0 diff --git a/BP100/PVAL.dif b/BP100/PVAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/PVAL.run b/BP100/PVAL.run new file mode 100644 index 0000000..35db8d8 --- /dev/null +++ b/BP100/PVAL.run @@ -0,0 +1,25 @@ + PRESENT VALUE + +THIS PROGRAM WILL COMPUTE THE PRESENT VALUE OF A SINGLE +AMOUNT , A ,TO BE OBTAINED AFTER N EQUAL TIME PERIODS, WITH +INTEREST COMPOUNDED AT A RATE OF I% pER PERIOD. +BE SURE TO INPUT INTEREST RATE AS A PER CENT. CONVERSION +TO DECIMAL FORM IS DONE IN THE PROGRAM. + + INTEREST RATES MAY BE QUOTED AS ANNUAL RATES IF THE +NUMBER OF COMPOUNDINGS PER YEAR ARE KNOWN. + +PRESS ENTER TO BEGIN ? +ARE INTEREST RATES QUOTED ANNUALLY(Y/N)? Y + +ANNUAL INTEREST RATE IN %? 8 +NUMBER OF COMPOUNDINGS ANNUALLY? 12 + +INTEREST RATE PER PERIOD = .666667 % +INTEREST RATE ,i,PER PERIOD= ? 7 +AMOUNT TO BE OBTAINED (A) = ? 123456 +NUMBER OF PERIODS = ? 40 + +PRESENT VALUE = 8244.44 + +FOR ADDITIONAL TRIALS PRESS 1,ELSE PRESS 0? 0 diff --git a/BP100/QUEUE1.80 b/BP100/QUEUE1.80 new file mode 100644 index 0000000..21a65cc --- /dev/null +++ b/BP100/QUEUE1.80 @@ -0,0 +1,39 @@ + WAITING LINE ANALYSIS + +WAITING LINES OCCUR IN ALMOST ANY SYSTEM FROM THE SUPERMARKET +CHECKOUT COUNTER TO THE RUNWAY AT AN AIRPORT. IN ANALYZING +A WAITING LINE SITUATION, ON THE ONE HAND LONG WAITING LINES +CAUSE LOSS OF BUSINESS EVEN IF ONLY DUE TO CUSTOMER DISSAT- +FACTION WHILE INCREASING SERVICE INCREASES COSTS. IN THIS +WE ASSUME THERE IS A SINGLE SERVER(E.G. CHECKOUT PERSON), +WHO CAN SERVE,ON AVERAGE, A GIVEN NUMBER OF CUSTOMERS PER +TIME. THE CUSTOMERS ARRIVE RANDOMLY AT SOME OTHER AVERAGE RATE. +THE WAITING LINE IS FIRST COME-FIRST SERVED. WE EXAMINE THE +PROBABILISTIC CHARACTERISTICS OF THE WAITING LINE OR QUEUE +AS IT IS GENERALLY CALLED. THE AVERAGE SERVICE RATE IS THE +MEAN SERVICE RATE WHILE THE AVERAGE ARRIVAL RATE IS THE MEAN +ARRIVAL RATE. +PRESS ENTER TO CONTINUE? +ONE REQUIREMENT IS THAT THE MEAN SERVICE RATE BE GREATER +THAN THE MEAN ARRIVAL RATE. OTHERWISE THE QUEUE WOULD GET +INFINITELY LONG. + +WHAT AVARAGE MEANS IS SOMETIMES LONGER,SOMETIMES SHORTER BUT +IF SOMEONE LOKKED AT THE WAITING LINE EVERY DAY FOR A MONTH +THEN THE AVERAGE(MEAN) QUEUE LENGTH FOR THE MONTH WOULD BE +CLOSE TO WHAT WAS COMPUTED HERE. +PRESS ENTER TO BEGIN? +THE FOLLOWING ARE IN NUMBER PER UNIT TIME + + ENTER MEAN ARRIVAL RATE OF UNITS? 34 + ENTER MEAN SERVICE RATE OF UNITS? 45 + +AVERAGE LENGTH OF THE QUEUE = 2.33535 +AVERAGE LENGTH OF THE SYSTEM = 3.09091 +AVERAGE WAITING TIME ON QUEUE = 6.86869E-2 +AVERAGE TIME WAITING IN SYSTEM = 9.09091E-2 +PROBABILITY SYSTEM IS BUSY = .755556 + +SYSTEM TIME IS WAITING TIME PLUS SERVICE TIME. + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/QUEUE1.BAS b/BP100/QUEUE1.BAS new file mode 100644 index 0000000..aa1e400 --- /dev/null +++ b/BP100/QUEUE1.BAS @@ -0,0 +1,44 @@ +1 REM QUEUE1 +5 CLEAR 1000 +10 CLS:PRINT TAB(10); "WAITING LINE ANALYSIS":PRINT +20 PRINT"WAITING LINES OCCUR IN ALMOST ANY SYSTEM FROM THE SUPERMARKET +25 PRINT"CHECKOUT COUNTER TO THE RUNWAY AT AN AIRPORT. IN ANALYZING +30 PRINT"A WAITING LINE SITUATION, ON THE ONE HAND LONG WAITING LINES +35 PRINT"CAUSE LOSS OF BUSINESS EVEN IF ONLY DUE TO CUSTOMER DISSAT- +40 PRINT"FACTION WHILE INCREASING SERVICE INCREASES COSTS. IN THIS +50 PRINT"WE ASSUME THERE IS A SINGLE SERVER(E.G. CHECKOUT PERSON), +55 PRINT"WHO CAN SERVE,ON AVERAGE, A GIVEN NUMBER OF CUSTOMERS PER +60 PRINT"TIME. THE CUSTOMERS ARRIVE RANDOMLY AT SOME OTHER AVERAGE RATE. +65 PRINT"THE WAITING LINE IS FIRST COME-FIRST SERVED. WE EXAMINE THE +70 PRINT"PROBABILISTIC CHARACTERISTICS OF THE WAITING LINE OR QUEUE +75 PRINT"AS IT IS GENERALLY CALLED. THE AVERAGE SERVICE RATE IS THE +80 PRINT"MEAN SERVICE RATE WHILE THE AVERAGE ARRIVAL RATE IS THE MEAN +85 PRINT"ARRIVAL RATE. +90 GOSUB 10100 +95 CLS:PRINT"ONE REQUIREMENT IS THAT THE MEAN SERVICE RATE BE GREATER +100 PRINT"THAN THE MEAN ARRIVAL RATE. OTHERWISE THE QUEUE WOULD GET +105 PRINT"INFINITELY LONG. +110 PRINT +115 PRINT"WHAT AVARAGE MEANS IS SOMETIMES LONGER,SOMETIMES SHORTER BUT +120 PRINT"IF SOMEONE LOKKED AT THE WAITING LINE EVERY DAY FOR A MONTH +125 PRINT"THEN THE AVERAGE(MEAN) QUEUE LENGTH FOR THE MONTH WOULD BE +130 PRINT"CLOSE TO WHAT WAS COMPUTED HERE." +190 INPUT"PRESS ENTER TO BEGIN";Z9$ +200 CLS +210 PRINT"THE FOLLOWING ARE IN NUMBER PER UNIT TIME":PRINT +220 INPUT" ENTER MEAN ARRIVAL RATE OF UNITS";A +230 INPUT" ENTER MEAN SERVICE RATE OF UNITS";S +240 IF A<=0 OR S<=0 THEN PRINT"NO NEGATIVES ALLOWED":GOTO 220 +250 IF S FOR THIS COMPUTATION, 1 +OTHERWISE? + +ANNUAL RATE OF RETURN IS 589.2 % + +PRESS FOR MORE COMPUTATIONS? -1 diff --git a/BP100/RRCONST.BAS b/BP100/RRCONST.BAS new file mode 100644 index 0000000..799f4c6 --- /dev/null +++ b/BP100/RRCONST.BAS @@ -0,0 +1,43 @@ +5 CLS +10 PRINT " RATE OF RETURN - CONSTANT INFLOW" +20 PRINT +30 PRINT "THIS PROGRAM WILL CALCULATE THE RATE OF RETURN OF AN +40 PRINT "INVESTMENT COSTING $A NOW AND RETURNING $B DURING EACH OF THE +50 PRINT "NEXT N EQUAL TIME PERIODS(YEARS E.G.) +70 PRINT "INPUT IS THE INITIAL INVESTMENT,PERIODIC DOLLAR RETURNS AND +75 PRINT "NUMBER OF PERIODS. +80 PRINT +90 INPUT "PRESS ENTER TO BEGIN.";Z9 +100 CLS +102 CLEAR 100 +105 I=0 +110 PRINT:PRINT +120 INPUT "INITIAL INVESTMENT ";A +125 A=-A +130 INPUT "PERIODIC RETURN = ";B +140 INPUT "NUMBER OF PERIODS = ";N +160 R=.01 +170 JUMP=.1 +174 JN=0:REM JN= NUMBER OF PASSES THROUGH LOOP +175 P=0 +180 P= A + B/R*(1-(1+R)[(-N)) +190 IF ABS(P) < .5 GOTO 400 +195 IF B*N>-A AND R<0 THEN GOTO 300 +200 IF P>0 GOTO 300 +210 R=R-JUMP +220 JUMP = JUMP/10 +230 GOTO 300 +300 R=R+JUMP +305 PRINT @ 35,"PASS # ";JN;" R =";100*R:JN=JN+1 +310 GOTO 175 +400 REM PRINTING SUBROUTINE +410 PRINT +420 PRINT "RATE OF RETURN IS ";100*R;" % PER PERIOD +422 PRINT +425 PRINT"IF THIS DATA IS MONTHLY WE MAY MULTIPLY BY 12 TO GET AN +430 PRINT"ANNUAL RATE . PRESS FOR THIS COMPUTATION, 1 +440 PRINT"OTHERWISE";:INPUT Z9$ +450 IF Z9$="" THEN PRINT:PRINT"ANNUAL RATE OF RETURN IS ";1200*R;"%" +470 PRINT:INPUT"PRESS FOR MORE COMPUTATIONS";Z9$ +475 IF Z9$ = "-1" THEN END +480 GOTO 100 diff --git a/BP100/RRCONST.INP b/BP100/RRCONST.INP new file mode 100644 index 0000000..45f0b12 --- /dev/null +++ b/BP100/RRCONST.INP @@ -0,0 +1,6 @@ + +1000 +500 +10 + +-1 diff --git a/BP100/RRCONST.OUT b/BP100/RRCONST.OUT new file mode 100644 index 0000000..3df0115 --- /dev/null +++ b/BP100/RRCONST.OUT @@ -0,0 +1,39 @@ + RATE OF RETURN - CONSTANT INFLOW + +THIS PROGRAM WILL CALCULATE THE RATE OF RETURN OF AN +INVESTMENT COSTING $A NOW AND RETURNING $B DURING EACH OF THE +NEXT N EQUAL TIME PERIODS(YEARS E.G.) +INPUT IS THE INITIAL INVESTMENT,PERIODIC DOLLAR RETURNS AND +NUMBER OF PERIODS. + +PRESS ENTER TO BEGIN.? + + +INITIAL INVESTMENT ? 1000 +PERIODIC RETURN = ? 500 +NUMBER OF PERIODS = ? 10 +PASS # 0 R = 11 +PASS # 1 R = 21. +PASS # 2 R = 31. +PASS # 3 R = 41 +PASS # 4 R = 51 +PASS # 5 R = 42. +PASS # 6 R = 43. +PASS # 7 R = 44. +PASS # 8 R = 45. +PASS # 9 R = 46. +PASS # 10 R = 47. +PASS # 11 R = 48. +PASS # 12 R = 49. +PASS # 13 R = 50. +PASS # 14 R = 49.1 + +RATE OF RETURN IS 49.1 % PER PERIOD + +IF THIS DATA IS MONTHLY WE MAY MULTIPLY BY 12 TO GET AN +ANNUAL RATE . PRESS FOR THIS COMPUTATION, 1 +OTHERWISE? + +ANNUAL RATE OF RETURN IS 589.2 % + +PRESS FOR MORE COMPUTATIONS? -1 diff --git a/BP100/RRCONST.dif b/BP100/RRCONST.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/RRCONST.run b/BP100/RRCONST.run new file mode 100644 index 0000000..b8acb60 --- /dev/null +++ b/BP100/RRCONST.run @@ -0,0 +1,39 @@ + RATE OF RETURN - CONSTANT INFLOW + +THIS PROGRAM WILL CALCULATE THE RATE OF RETURN OF AN +INVESTMENT COSTING $A NOW AND RETURNING $B DURING EACH OF THE +NEXT N EQUAL TIME PERIODS(YEARS E.G.) +INPUT IS THE INITIAL INVESTMENT,PERIODIC DOLLAR RETURNS AND +NUMBER OF PERIODS. + +PRESS ENTER TO BEGIN.? + + +INITIAL INVESTMENT ? 1000 +PERIODIC RETURN = ? 500 +NUMBER OF PERIODS = ? 10 +PASS # 0 R = 11 +PASS # 1 R = 21. +PASS # 2 R = 31. +PASS # 3 R = 41 +PASS # 4 R = 51 +PASS # 5 R = 42. +PASS # 6 R = 43. +PASS # 7 R = 44. +PASS # 8 R = 45. +PASS # 9 R = 46. +PASS # 10 R = 47. +PASS # 11 R = 48. +PASS # 12 R = 49. +PASS # 13 R = 50. +PASS # 14 R = 49.1 + +RATE OF RETURN IS 49.1 % PER PERIOD + +IF THIS DATA IS MONTHLY WE MAY MULTIPLY BY 12 TO GET AN +ANNUAL RATE . PRESS FOR THIS COMPUTATION, 1 +OTHERWISE? + +ANNUAL RATE OF RETURN IS 589.2 % + +PRESS FOR MORE COMPUTATIONS? -1 diff --git a/BP100/RRCONVBD.80 b/BP100/RRCONVBD.80 new file mode 100644 index 0000000..54d3f89 --- /dev/null +++ b/BP100/RRCONVBD.80 @@ -0,0 +1,27 @@ + CONVERTIBLE BOND-RATE OF RETURN + +THIS PROGRAM WILL COMPUTE AN INVESTOR'S ANNUAL RATE OF RETURN +ON A CONVERTIBLE BOND PURCHASE GIVEN THE FOLLOWING: + + PURCHASE PRICE OF BOND + BOND COUPON PAYMENT PER YEAR + PRESENT VALUE OF SHARE OF STOCK + EXPECTED ANNUAL % INCREASE IN VALUE OF SHARE OF STOCK + CONVERSION RATIO(# SHARES BOND CONVERTIBLE INTO) + DESIRED VALUE OF BOND WHEN SOLD +GIVEN THIS INFORMATION THE PROGRAM COMPUTES A RATE OR RETURN +AND THE NUMBER OF YEARS UNTIL THE EXPECTED SELLING VALUE IS +REACHED. + +PRESS ENTER TO BEGIN? +ENTER PURCHASE PRICE OF THE BOND ? 985 +ENTER PRESENT PRICE OF SHARE OF STOCK ? 47 +ENTER CONVERSION RATIO ? 0.4 +ENTER CONVERSION VALUE OF BOND WHEN SOLD? 1400 +ENTER PROJECTED % INCREASE IN STOCK VALUE YEARLY? 1 +COUPON PAYMENT PER YEAR ? 4 + + RATE OF RETURN EQUALS .438768 % + CONVERSION AFTER 433 YEARS + +PRESS ENTER FOR MORE ENTRIES ? -1 diff --git a/BP100/RRCONVBD.BAS b/BP100/RRCONVBD.BAS new file mode 100644 index 0000000..1f4455c --- /dev/null +++ b/BP100/RRCONVBD.BAS @@ -0,0 +1,46 @@ +1 REM RRCONVBD +2 CLS +10 PRINT " CONVERTIBLE BOND-RATE OF RETURN":PRINT +15 PRINT "THIS PROGRAM WILL COMPUTE AN INVESTOR'S ANNUAL RATE OF RETURN +20 PRINT "ON A CONVERTIBLE BOND PURCHASE GIVEN THE FOLLOWING: +25 PRINT +30 PRINT " PURCHASE PRICE OF BOND +32 PRINT " BOND COUPON PAYMENT PER YEAR +35 PRINT " PRESENT VALUE OF SHARE OF STOCK +40 PRINT " EXPECTED ANNUAL % INCREASE IN VALUE OF SHARE OF STOCK +45 PRINT " CONVERSION RATIO(# SHARES BOND CONVERTIBLE INTO) +50 PRINT " DESIRED VALUE OF BOND WHEN SOLD +55 PRINT "GIVEN THIS INFORMATION THE PROGRAM COMPUTES A RATE OR RETURN +60 PRINT "AND THE NUMBER OF YEARS UNTIL THE EXPECTED SELLING VALUE IS +65 PRINT "REACHED. +80 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +85 CLS +100 REM INPUT DATA +110 INPUT "ENTER PURCHASE PRICE OF THE BOND "; PB +120 INPUT "ENTER PRESENT PRICE OF SHARE OF STOCK ";P +130 INPUT "ENTER CONVERSION RATIO ";PR +140 INPUT "ENTER CONVERSION VALUE OF BOND WHEN SOLD";CV +150 INPUT "ENTER PROJECTED % INCREASE IN STOCK VALUE YEARLY";R +160 R=R/100 +170 INPUT "COUPON PAYMENT PER YEAR ";PMT +180 N = LOG(CV/(P*PR))/LOG(1+R):N=INT(N+.5) +200 GOSUB 4200 +210 PRINT +220 PRINT " RATE OF RETURN EQUALS ";100*I;"%" +230 PRINT " CONVERSION AFTER ";N;" YEARS" +250 PRINT :INPUT "PRESS ENTER FOR MORE ENTRIES ";Z9$ +252 IF Z9$ = "-1" THEN END +255 CLS +260 GOTO 100 +299 STOP +4200 REM I FOR PV/ORDINARY ANNUITY +4210 I=.01 +4220 PP=PMT/I*(1-(1+I)[(-N))+CV*(1+I)[(-N)-PB +4225 D=N*PMT/(I*(1+I)[(N+1))-PMT/(I[2)*(1-(1+I)[(-N))-N*CV/(1+I)[(N+1) +4230 GOSUB 4600 +4240 IF ABS(PP)<=.1 THEN RETURN +4250 GOTO 4220 +4600 REM COMPUTATION +4610 I=I-PP/D +4620 RETURN + diff --git a/BP100/RRCONVBD.INP b/BP100/RRCONVBD.INP new file mode 100644 index 0000000..817d976 --- /dev/null +++ b/BP100/RRCONVBD.INP @@ -0,0 +1,8 @@ + +985 +47 +0.4 +1400 +1 +4 +-1 diff --git a/BP100/RRCONVBD.OUT b/BP100/RRCONVBD.OUT new file mode 100644 index 0000000..4f00743 --- /dev/null +++ b/BP100/RRCONVBD.OUT @@ -0,0 +1,27 @@ + CONVERTIBLE BOND-RATE OF RETURN + +THIS PROGRAM WILL COMPUTE AN INVESTOR'S ANNUAL RATE OF RETURN +ON A CONVERTIBLE BOND PURCHASE GIVEN THE FOLLOWING: + + PURCHASE PRICE OF BOND + BOND COUPON PAYMENT PER YEAR + PRESENT VALUE OF SHARE OF STOCK + EXPECTED ANNUAL % INCREASE IN VALUE OF SHARE OF STOCK + CONVERSION RATIO(# SHARES BOND CONVERTIBLE INTO) + DESIRED VALUE OF BOND WHEN SOLD +GIVEN THIS INFORMATION THE PROGRAM COMPUTES A RATE OR RETURN +AND THE NUMBER OF YEARS UNTIL THE EXPECTED SELLING VALUE IS +REACHED. + +PRESS ENTER TO BEGIN? +ENTER PURCHASE PRICE OF THE BOND ? 985 +ENTER PRESENT PRICE OF SHARE OF STOCK ? 47 +ENTER CONVERSION RATIO ? 0.4 +ENTER CONVERSION VALUE OF BOND WHEN SOLD? 1400 +ENTER PROJECTED % INCREASE IN STOCK VALUE YEARLY? 1 +COUPON PAYMENT PER YEAR ? 4 + + RATE OF RETURN EQUALS .438768 % + CONVERSION AFTER 433 YEARS + +PRESS ENTER FOR MORE ENTRIES ? -1 diff --git a/BP100/RRCONVBD.dif b/BP100/RRCONVBD.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/RRCONVBD.run b/BP100/RRCONVBD.run new file mode 100644 index 0000000..54d3f89 --- /dev/null +++ b/BP100/RRCONVBD.run @@ -0,0 +1,27 @@ + CONVERTIBLE BOND-RATE OF RETURN + +THIS PROGRAM WILL COMPUTE AN INVESTOR'S ANNUAL RATE OF RETURN +ON A CONVERTIBLE BOND PURCHASE GIVEN THE FOLLOWING: + + PURCHASE PRICE OF BOND + BOND COUPON PAYMENT PER YEAR + PRESENT VALUE OF SHARE OF STOCK + EXPECTED ANNUAL % INCREASE IN VALUE OF SHARE OF STOCK + CONVERSION RATIO(# SHARES BOND CONVERTIBLE INTO) + DESIRED VALUE OF BOND WHEN SOLD +GIVEN THIS INFORMATION THE PROGRAM COMPUTES A RATE OR RETURN +AND THE NUMBER OF YEARS UNTIL THE EXPECTED SELLING VALUE IS +REACHED. + +PRESS ENTER TO BEGIN? +ENTER PURCHASE PRICE OF THE BOND ? 985 +ENTER PRESENT PRICE OF SHARE OF STOCK ? 47 +ENTER CONVERSION RATIO ? 0.4 +ENTER CONVERSION VALUE OF BOND WHEN SOLD? 1400 +ENTER PROJECTED % INCREASE IN STOCK VALUE YEARLY? 1 +COUPON PAYMENT PER YEAR ? 4 + + RATE OF RETURN EQUALS .438768 % + CONVERSION AFTER 433 YEARS + +PRESS ENTER FOR MORE ENTRIES ? -1 diff --git a/BP100/RRVARIN.80 b/BP100/RRVARIN.80 new file mode 100644 index 0000000..c5da877 --- /dev/null +++ b/BP100/RRVARIN.80 @@ -0,0 +1,42 @@ + RATE OF RETURN - VARIABLE INFLOW + +THIS PROGRAM WILL CALCULATE THE RATE OF RETURN OF AN +INVESTMENT COSTING A$ NOW AND RETURNING A(I)$ IN YEAR I +WITH THE A(I)'S NOT NECESSARILY EQUAL AND NOT NECESSARILY +POSITIVE. +INPUT IS THE INITIAL INVESTMENT AND THE YEARLY DOLLAR RETURNS. + +PRESS ENTER TO BEGIN.? + +INITIAL INVESTMENT ? 12345 +RETURN YEAR 1 (99999 TO END)? 2345 +RETURN YEAR 2 (99999 TO END)? 2345 +RETURN YEAR 3 (99999 TO END)? 2345 +RETURN YEAR 4 (99999 TO END)? 2345 +RETURN YEAR 5 (99999 TO END)? 2345 +RETURN YEAR 6 (99999 TO END)? 2345 +RETURN YEAR 7 (99999 TO END)? 2345 +RETURN YEAR 8 (99999 TO END)? 2345 +RETURN YEAR 9 (99999 TO END)? 99999 +PASS 0 R= 10 +PASS 2 R= 20 +PASS 4 R= 11 +PASS 6 R= 10.1 +PASS 8 R= 10.2 +PASS 10 R= 10.3 +PASS 12 R= 10.4 +PASS 14 R= 10.31 +PASS 16 R= 10.32 +PASS 18 R= 10.33 +PASS 20 R= 10.34 +PASS 22 R= 10.35 +PASS 24 R= 10.36 +PASS 26 R= 10.37 +PASS 28 R= 10.361 +PASS 30 R= 10.362 +PASS 32 R= 10.363 +PASS 34 R= 10.364 +PASS 36 R= 10.365 +PASS 38 R= 10.366 + +RATE OF RETURN IS 10.366 % diff --git a/BP100/RRVARIN.BAS b/BP100/RRVARIN.BAS new file mode 100644 index 0000000..5cfc2ea --- /dev/null +++ b/BP100/RRVARIN.BAS @@ -0,0 +1,38 @@ +5 CLS +10 PRINT " RATE OF RETURN - VARIABLE INFLOW" +20 PRINT +30 PRINT "THIS PROGRAM WILL CALCULATE THE RATE OF RETURN OF AN +40 PRINT "INVESTMENT COSTING A$ NOW AND RETURNING A(I)$ IN YEAR I +50 PRINT "WITH THE A(I)'S NOT NECESSARILY EQUAL AND NOT NECESSARILY +60 PRINT "POSITIVE. +70 PRINT "INPUT IS THE INITIAL INVESTMENT AND THE YEARLY DOLLAR RETURNS. +80 PRINT +90 INPUT "PRESS ENTER TO BEGIN.";Z9 +100 CLS +105 I=0 +110 DIM A(100) +115 PRINT +120 INPUT "INITIAL INVESTMENT ";A(0) +125 A(0)=-A(0) +130 PRINT "RETURN YEAR ";I + 1;" (99999 TO END)";:INPUT A(I+1) +140 IF A(I+1) = 99999 GOTO 160 +145 I=I+1 +150 GOTO 130 +160 R=0 +170 JUMP=.1 +174 JN=0: REM JN= NUMBER OF PASSES SO FAR +175 P=0 +180 FOR K=0 TO I:P=P+A(K)/(1+R)[K:NEXT K +190 IF ABS(P) < .5 GOTO 400 +200 IF P>0 GOTO 300 +210 R=R-JUMP +220 JUMP = JUMP/10 +230 GOTO 300 +300 R=R+JUMP +305 PRINT @ 40,"PASS ";JN;" R=";100*R:JN=JN+1:JN=JN+1 +310 GOTO 175 +400 REM PRINTING SUBROUTINE +410 PRINT +415 CLS +420 PRINT "RATE OF RETURN IS ";100*R;" %" +430 END diff --git a/BP100/RRVARIN.INP b/BP100/RRVARIN.INP new file mode 100644 index 0000000..6e1b7a8 --- /dev/null +++ b/BP100/RRVARIN.INP @@ -0,0 +1,11 @@ + +12345 +2345 +2345 +2345 +2345 +2345 +2345 +2345 +2345 +99999 diff --git a/BP100/RRVARIN.OUT b/BP100/RRVARIN.OUT new file mode 100644 index 0000000..118dd56 --- /dev/null +++ b/BP100/RRVARIN.OUT @@ -0,0 +1,42 @@ + RATE OF RETURN - VARIABLE INFLOW + +THIS PROGRAM WILL CALCULATE THE RATE OF RETURN OF AN +INVESTMENT COSTING A$ NOW AND RETURNING A(I)$ IN YEAR I +WITH THE A(I)'S NOT NECESSARILY EQUAL AND NOT NECESSARILY +POSITIVE. +INPUT IS THE INITIAL INVESTMENT AND THE YEARLY DOLLAR RETURNS. + +PRESS ENTER TO BEGIN.? + +INITIAL INVESTMENT ? 12345 +RETURN YEAR 1 (99999 TO END)? 2345 +RETURN YEAR 2 (99999 TO END)? 2345 +RETURN YEAR 3 (99999 TO END)? 2345 +RETURN YEAR 4 (99999 TO END)? 2345 +RETURN YEAR 5 (99999 TO END)? 2345 +RETURN YEAR 6 (99999 TO END)? 2345 +RETURN YEAR 7 (99999 TO END)? 2345 +RETURN YEAR 8 (99999 TO END)? 2345 +RETURN YEAR 9 (99999 TO END)? 99999 +PASS 0 R= 10 +PASS 2 R= 20 +PASS 4 R= 11 +PASS 6 R= 10.1 +PASS 8 R= 10.2 +PASS 10 R= 10.3 +PASS 12 R= 10.4 +PASS 14 R= 10.31 +PASS 16 R= 10.32 +PASS 18 R= 10.33 +PASS 20 R= 10.34 +PASS 22 R= 10.35 +PASS 24 R= 10.36 +PASS 26 R= 10.37 +PASS 28 R= 10.361 +PASS 30 R= 10.362 +PASS 32 R= 10.363 +PASS 34 R= 10.364 +PASS 36 R= 10.365 +PASS 38 R= 10.366 + +RATE OF RETURN IS 10.366 % diff --git a/BP100/RRVARIN.dif b/BP100/RRVARIN.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/RRVARIN.run b/BP100/RRVARIN.run new file mode 100644 index 0000000..c5da877 --- /dev/null +++ b/BP100/RRVARIN.run @@ -0,0 +1,42 @@ + RATE OF RETURN - VARIABLE INFLOW + +THIS PROGRAM WILL CALCULATE THE RATE OF RETURN OF AN +INVESTMENT COSTING A$ NOW AND RETURNING A(I)$ IN YEAR I +WITH THE A(I)'S NOT NECESSARILY EQUAL AND NOT NECESSARILY +POSITIVE. +INPUT IS THE INITIAL INVESTMENT AND THE YEARLY DOLLAR RETURNS. + +PRESS ENTER TO BEGIN.? + +INITIAL INVESTMENT ? 12345 +RETURN YEAR 1 (99999 TO END)? 2345 +RETURN YEAR 2 (99999 TO END)? 2345 +RETURN YEAR 3 (99999 TO END)? 2345 +RETURN YEAR 4 (99999 TO END)? 2345 +RETURN YEAR 5 (99999 TO END)? 2345 +RETURN YEAR 6 (99999 TO END)? 2345 +RETURN YEAR 7 (99999 TO END)? 2345 +RETURN YEAR 8 (99999 TO END)? 2345 +RETURN YEAR 9 (99999 TO END)? 99999 +PASS 0 R= 10 +PASS 2 R= 20 +PASS 4 R= 11 +PASS 6 R= 10.1 +PASS 8 R= 10.2 +PASS 10 R= 10.3 +PASS 12 R= 10.4 +PASS 14 R= 10.31 +PASS 16 R= 10.32 +PASS 18 R= 10.33 +PASS 20 R= 10.34 +PASS 22 R= 10.35 +PASS 24 R= 10.36 +PASS 26 R= 10.37 +PASS 28 R= 10.361 +PASS 30 R= 10.362 +PASS 32 R= 10.363 +PASS 34 R= 10.364 +PASS 36 R= 10.365 +PASS 38 R= 10.366 + +RATE OF RETURN IS 10.366 % diff --git a/BP100/RTVAL.80 b/BP100/RTVAL.80 new file mode 100644 index 0000000..e418fbb --- /dev/null +++ b/BP100/RTVAL.80 @@ -0,0 +1,34 @@ + VALUE OF A RIGHT + +THE PRIVILEGE OF A STOCKHOLDER TO SUBSCRIBE AT A STATED PRICE +TO NEW ISSUES OF COMMON STOCKS IN PROPORTION TO HIS PRESENT +HOLDINGS IS A RIGHT OR STOCK RIGHT. THIS PRIVILEGE IS +GENERALLY OFFERED FOR A VERY LIMITED PERIOD. DURING THIS +PERIOD MAY EXERCISE HIS OFFER OR HE MAY SELL THE RIGHT TO +ANOTHER INVESTOR. WHEN THE RIGHTS OFFERING IS ANNOUNCED THE +BOARD OF DIRECTORS ESTABLISHES A CUTOFF DATE. ANYONE WHO +PURCHASES THE STOCK BEFORE THAT DATE RECEIVES RIGHTS FOR THE +NEW ISSUE. THE STOCK IS THEN SAID TO SELL RIGHTS-ON. AFTER +THE CUTOFF DATE NEW PURCHASERS OF THE STOCK DO NOT GET THE +RIGHT AND THE STOCK IS TRADED EX-RIGHTS. + +PRESS ENTER TO CONTINUE? +GIVEN THE MARKET VALUE OF 1 SHARE OF STOCK SELLING RIGHTS-ON, +THE SUBSCRIPTION PRICE PER SHARE, AND THE NUMBER OF RIGHTS +REQUIRED TO PURCHASE ONE SHARE OF STOCK THIS PROGRAM WILL +COMPUTE THE MARKET VALUE OF 1 RIGHT WHEN THE STOCK IS SELLING +RIGHTS-ON, THE THEORETICAL VALUE OF ONE SHARE OF STOCK WHEN +IT GOES EX-RIGHTS, AND THE THEORETICAL VALUE OF 1 RIGHT +WITH THE STOCK SELLING EX-RIGHTS. + +PRESS ENTER TO BEGIN? +ENTER MARKET VALUE OF 1 SHARE RIGHTS-ON? 1223.45 +ENTER SUBSCRIPTION PRICE PER SHARE ? 22.44 +ENTER # RIGHTS NEEDED TO BUY 1 SHARE ? 55 + + +MARKET VALUE OF 1 RIGHT - RIGHTS-ON 21.4466 +THEORETICAL VALUE OF 1 SHARE EX-RIGHTS 1202. +THEORETICAL VALUE OF 1 RIGHT EX-RIGHTS 21.4466 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/RTVAL.BAS b/BP100/RTVAL.BAS new file mode 100644 index 0000000..1ad4830 --- /dev/null +++ b/BP100/RTVAL.BAS @@ -0,0 +1,41 @@ +1 REM RTVAL +5 CLEAR 1000 +10 CLS:PRINT TAB(10); "VALUE OF A RIGHT":PRINT +20 PRINT"THE PRIVILEGE OF A STOCKHOLDER TO SUBSCRIBE AT A STATED PRICE +25 PRINT"TO NEW ISSUES OF COMMON STOCKS IN PROPORTION TO HIS PRESENT +30 PRINT"HOLDINGS IS A RIGHT OR STOCK RIGHT. THIS PRIVILEGE IS +35 PRINT"GENERALLY OFFERED FOR A VERY LIMITED PERIOD. DURING THIS +40 PRINT"PERIOD MAY EXERCISE HIS OFFER OR HE MAY SELL THE RIGHT TO +45 PRINT"ANOTHER INVESTOR. WHEN THE RIGHTS OFFERING IS ANNOUNCED THE +50 PRINT"BOARD OF DIRECTORS ESTABLISHES A CUTOFF DATE. ANYONE WHO +55 PRINT"PURCHASES THE STOCK BEFORE THAT DATE RECEIVES RIGHTS FOR THE +60 PRINT"NEW ISSUE. THE STOCK IS THEN SAID TO SELL RIGHTS-ON. AFTER +65 PRINT"THE CUTOFF DATE NEW PURCHASERS OF THE STOCK DO NOT GET THE +70 PRINT"RIGHT AND THE STOCK IS TRADED EX-RIGHTS. +75 PRINT:GOSUB 10100: CLS +80 PRINT"GIVEN THE MARKET VALUE OF 1 SHARE OF STOCK SELLING RIGHTS-ON, +85 PRINT"THE SUBSCRIPTION PRICE PER SHARE, AND THE NUMBER OF RIGHTS +90 PRINT"REQUIRED TO PURCHASE ONE SHARE OF STOCK THIS PROGRAM WILL +95 PRINT"COMPUTE THE MARKET VALUE OF 1 RIGHT WHEN THE STOCK IS SELLING +100 PRINT"RIGHTS-ON, THE THEORETICAL VALUE OF ONE SHARE OF STOCK WHEN +105 PRINT"IT GOES EX-RIGHTS, AND THE THEORETICAL VALUE OF 1 RIGHT +110 PRINT"WITH THE STOCK SELLING EX-RIGHTS. +120 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +200 CLS +210 INPUT"ENTER MARKET VALUE OF 1 SHARE RIGHTS-ON";P0 +220 INPUT"ENTER SUBSCRIPTION PRICE PER SHARE ";S +230 INPUT"ENTER # RIGHTS NEEDED TO BUY 1 SHARE ";N +300 R0=(P0-S)/(N+1):REM MARKET VALUE OF 1 RIGHT - RIGHTS-ON +310 PX=(P0*N+S)/(N+1):REM VALUE 1 SHARE EX-RIGHTS +320 RX=(PX - S)/N:REM VALUE 1 RIGHT - EX RIGHTS +400 REM PRINT +410 PRINT:PRINT +420 PRINT"MARKET VALUE OF 1 RIGHT - RIGHTS-ON ";R0 +430 PRINT"THEORETICAL VALUE OF 1 SHARE EX-RIGHTS ";PX +440 PRINT"THEORETICAL VALUE OF 1 RIGHT EX-RIGHTS ";RX +450 PRINT +460 INPUT"PRESS ENTER FOR MORE COMPUTATION";Z9$ +465 IF Z9$ = "-1" THEN END +470 GOTO 200 +10000 PRINT"INPUT ERROR! TRY AGAIN!":FOR Z=1TO300:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/RTVAL.INP b/BP100/RTVAL.INP new file mode 100644 index 0000000..92b5e93 --- /dev/null +++ b/BP100/RTVAL.INP @@ -0,0 +1,6 @@ + + +1223.45 +22.44 +55 +-1 diff --git a/BP100/RTVAL.OUT b/BP100/RTVAL.OUT new file mode 100644 index 0000000..077fffe --- /dev/null +++ b/BP100/RTVAL.OUT @@ -0,0 +1,34 @@ + VALUE OF A RIGHT + +THE PRIVILEGE OF A STOCKHOLDER TO SUBSCRIBE AT A STATED PRICE +TO NEW ISSUES OF COMMON STOCKS IN PROPORTION TO HIS PRESENT +HOLDINGS IS A RIGHT OR STOCK RIGHT. THIS PRIVILEGE IS +GENERALLY OFFERED FOR A VERY LIMITED PERIOD. DURING THIS +PERIOD MAY EXERCISE HIS OFFER OR HE MAY SELL THE RIGHT TO +ANOTHER INVESTOR. WHEN THE RIGHTS OFFERING IS ANNOUNCED THE +BOARD OF DIRECTORS ESTABLISHES A CUTOFF DATE. ANYONE WHO +PURCHASES THE STOCK BEFORE THAT DATE RECEIVES RIGHTS FOR THE +NEW ISSUE. THE STOCK IS THEN SAID TO SELL RIGHTS-ON. AFTER +THE CUTOFF DATE NEW PURCHASERS OF THE STOCK DO NOT GET THE +RIGHT AND THE STOCK IS TRADED EX-RIGHTS. + +PRESS ENTER TO CONTINUE? +GIVEN THE MARKET VALUE OF 1 SHARE OF STOCK SELLING RIGHTS-ON, +THE SUBSCRIPTION PRICE PER SHARE, AND THE NUMBER OF RIGHTS +REQUIRED TO PURCHASE ONE SHARE OF STOCK THIS PROGRAM WILL +COMPUTE THE MARKET VALUE OF 1 RIGHT WHEN THE STOCK IS SELLING +RIGHTS-ON, THE THEORETICAL VALUE OF ONE SHARE OF STOCK WHEN +IT GOES EX-RIGHTS, AND THE THEORETICAL VALUE OF 1 RIGHT +WITH THE STOCK SELLING EX-RIGHTS. + +PRESS ENTER TO BEGIN? +ENTER MARKET VALUE OF 1 SHARE RIGHTS-ON? 1223.45 +ENTER SUBSCRIPTION PRICE PER SHARE ? 22.44 +ENTER # RIGHTS NEEDED TO BUY 1 SHARE ? 55 + + +MARKET VALUE OF 1 RIGHT - RIGHTS-ON 21.4466 +THEORETICAL VALUE OF 1 SHARE EX-RIGHTS 1202. +THEORETICAL VALUE OF 1 RIGHT EX-RIGHTS 21.4466 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/RTVAL.dif b/BP100/RTVAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/RTVAL.run b/BP100/RTVAL.run new file mode 100644 index 0000000..e418fbb --- /dev/null +++ b/BP100/RTVAL.run @@ -0,0 +1,34 @@ + VALUE OF A RIGHT + +THE PRIVILEGE OF A STOCKHOLDER TO SUBSCRIBE AT A STATED PRICE +TO NEW ISSUES OF COMMON STOCKS IN PROPORTION TO HIS PRESENT +HOLDINGS IS A RIGHT OR STOCK RIGHT. THIS PRIVILEGE IS +GENERALLY OFFERED FOR A VERY LIMITED PERIOD. DURING THIS +PERIOD MAY EXERCISE HIS OFFER OR HE MAY SELL THE RIGHT TO +ANOTHER INVESTOR. WHEN THE RIGHTS OFFERING IS ANNOUNCED THE +BOARD OF DIRECTORS ESTABLISHES A CUTOFF DATE. ANYONE WHO +PURCHASES THE STOCK BEFORE THAT DATE RECEIVES RIGHTS FOR THE +NEW ISSUE. THE STOCK IS THEN SAID TO SELL RIGHTS-ON. AFTER +THE CUTOFF DATE NEW PURCHASERS OF THE STOCK DO NOT GET THE +RIGHT AND THE STOCK IS TRADED EX-RIGHTS. + +PRESS ENTER TO CONTINUE? +GIVEN THE MARKET VALUE OF 1 SHARE OF STOCK SELLING RIGHTS-ON, +THE SUBSCRIPTION PRICE PER SHARE, AND THE NUMBER OF RIGHTS +REQUIRED TO PURCHASE ONE SHARE OF STOCK THIS PROGRAM WILL +COMPUTE THE MARKET VALUE OF 1 RIGHT WHEN THE STOCK IS SELLING +RIGHTS-ON, THE THEORETICAL VALUE OF ONE SHARE OF STOCK WHEN +IT GOES EX-RIGHTS, AND THE THEORETICAL VALUE OF 1 RIGHT +WITH THE STOCK SELLING EX-RIGHTS. + +PRESS ENTER TO BEGIN? +ENTER MARKET VALUE OF 1 SHARE RIGHTS-ON? 1223.45 +ENTER SUBSCRIPTION PRICE PER SHARE ? 22.44 +ENTER # RIGHTS NEEDED TO BUY 1 SHARE ? 55 + + +MARKET VALUE OF 1 RIGHT - RIGHTS-ON 21.4466 +THEORETICAL VALUE OF 1 SHARE EX-RIGHTS 1202. +THEORETICAL VALUE OF 1 RIGHT EX-RIGHTS 21.4466 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/RULE78.80 b/BP100/RULE78.80 new file mode 100644 index 0000000..6625b10 --- /dev/null +++ b/BP100/RULE78.80 @@ -0,0 +1,67 @@ + INTEREST VIS RULE OF 78'S + +THIS PROGRAM WILL COMPUTE INTEREST CHARGE ON LOANS WHEN +THIS INTEREST IS COMPUTED VIA THE RULE OF THE 78'S. +NECESSARY INFORMATION FOR USER INPUT INCLUDES LENGTH OF THE +LOAN, TOTAL INTEREST CONSUMER IS CHARGED ON LOAN OVER ITS +TERM AND THE PAYMENT NUMBERS OF THE PERIODS IN QUESTION. +OUTPUT SHOULD BE A SIMPLE TABLE SUMMARIZING INTEREST. +PRESS ENTER TO CONTINUE? +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +HOW MANY MONTHS(PAYMENTS) IS THE LOAN FOR ? 36 +WHAT IS TOTAL INTEREST FOR TERM OF LOAN ? 18 +WHICH IS 1ST MONTH FOR WHICH OUR INTEREST + COMPUTATION IS DESIRED ? 1 + WHICH IS THE LAST MONTH DESIRED ? 36 +TOTAL INTEREST TO BE PAID = $ 18 +PAYMENT # INTEREST INTEREST LEFT + 1 0.97 17.03 + 2 0.95 16.08 + 3 0.92 15.16 + 4 0.89 14.27 + 5 0.86 13.41 + 6 0.84 12.57 + 7 0.81 11.76 + 8 0.78 10.97 + 9 0.76 10.22 + 10 0.73 9.49 + 11 0.70 8.78 + 12 0.68 8.11 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + 13 0.65 7.46 + 14 0.62 6.84 + 15 0.59 6.24 + 16 0.57 5.68 + 17 0.54 5.14 + 18 0.51 4.62 + 19 0.49 4.14 + 20 0.46 3.68 + 21 0.43 3.24 + 22 0.41 2.84 + 23 0.38 2.46 + 24 0.35 2.11 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + 25 0.32 1.78 + 26 0.30 1.49 + 27 0.27 1.22 + 28 0.24 0.97 + 29 0.22 0.76 + 30 0.19 0.57 + 31 0.16 0.41 + 32 0.14 0.27 + 33 0.11 0.16 + 34 0.08 0.08 + 35 0.05 0.03 + 36 0.03 0.00 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/RULE78.BAS b/BP100/RULE78.BAS new file mode 100644 index 0000000..74c1a68 --- /dev/null +++ b/BP100/RULE78.BAS @@ -0,0 +1,42 @@ +1 REM RULE78 +5 CLS +10 CLEAR 1000 +15 GOSUB 9000 +20 PRINT TAB(15); "INTEREST VIS RULE OF 78'S":PRINT +25 PRINT "THIS PROGRAM WILL COMPUTE INTEREST CHARGE ON LOANS WHEN +30 PRINT "THIS INTEREST IS COMPUTED VIA THE RULE OF THE 78'S. +35 PRINT "NECESSARY INFORMATION FOR USER INPUT INCLUDES LENGTH OF THE +40 PRINT "LOAN, TOTAL INTEREST CONSUMER IS CHARGED ON LOAN OVER ITS +45 PRINT "TERM AND THE PAYMENT NUMBERS OF THE PERIODS IN QUESTION. +50 PRINT "OUTPUT SHOULD BE A SIMPLE TABLE SUMMARIZING INTEREST. +90 GOSUB 10100 +100 CLS +105 INPUT "IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +107 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 105 +110 INPUT "HOW MANY MONTHS(PAYMENTS) IS THE LOAN FOR ";M +120 INPUT "WHAT IS TOTAL INTEREST FOR TERM OF LOAN ";I +130 PRINT "WHICH IS 1ST MONTH FOR WHICH OUR INTEREST +140 INPUT " COMPUTATION IS DESIRED ";FM +150 INPUT " WHICH IS THE LAST MONTH DESIRED ";LM +200 PRINT "TOTAL INTEREST TO BE PAID = $";I +210 IF Z2$="Y" THEN LPRINT "TOTAL INTEREST TO BE PAID = $";I +215 PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1) +217 LL=0 +220 FOR J=FM TO LM +230 IPX=I*(M-J+1)/(M*(M+1)/2):IL = I*(1-J/2*(2*M-J+1)/(M*(M+1)/2)) +235 PRINT USING F$(2);J,IPX,IL +236 IF Z2$="Y" THEN LPRINT USING F$(2);J,IPX,IL +240 LL=LL+1:IF LL/12=INT(LL/12) THEN PRINT :GOSUB 10100:CLS:PRINT F$(1):PRINT +250 NEXT J +270 PRINT :INPUT "PRESS ENTER FOR MORE COMPUTATION";Z9$ +280 IF Z9$ = "-1" THEN END +290 GOTO 100 +9000 REM FORMATS +9010 F$(1)="PAYMENT # INTEREST INTEREST LEFT" +9020 F$(2)=" ### ######.## #######.##" +9099 RETURN +10000 PRINT "INPUT ERROR! TRY AGAIN! ":FOR JJ=1 TO 300:NEXT +10010 RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$ +10110 RETURN + diff --git a/BP100/RULE78.INP b/BP100/RULE78.INP new file mode 100644 index 0000000..8cd5753 --- /dev/null +++ b/BP100/RULE78.INP @@ -0,0 +1,10 @@ + +Y +36 +18 +1 +36 + + + +-1 diff --git a/BP100/RULE78.OUT b/BP100/RULE78.OUT new file mode 100644 index 0000000..b691c57 --- /dev/null +++ b/BP100/RULE78.OUT @@ -0,0 +1,67 @@ + INTEREST VIS RULE OF 78'S + +THIS PROGRAM WILL COMPUTE INTEREST CHARGE ON LOANS WHEN +THIS INTEREST IS COMPUTED VIA THE RULE OF THE 78'S. +NECESSARY INFORMATION FOR USER INPUT INCLUDES LENGTH OF THE +LOAN, TOTAL INTEREST CONSUMER IS CHARGED ON LOAN OVER ITS +TERM AND THE PAYMENT NUMBERS OF THE PERIODS IN QUESTION. +OUTPUT SHOULD BE A SIMPLE TABLE SUMMARIZING INTEREST. +PRESS ENTER TO CONTINUE? +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +HOW MANY MONTHS(PAYMENTS) IS THE LOAN FOR ? 36 +WHAT IS TOTAL INTEREST FOR TERM OF LOAN ? 18 +WHICH IS 1ST MONTH FOR WHICH OUR INTEREST + COMPUTATION IS DESIRED ? 1 + WHICH IS THE LAST MONTH DESIRED ? 36 +TOTAL INTEREST TO BE PAID = $ 18 +PAYMENT # INTEREST INTEREST LEFT + 1 0.97 17.03 + 2 0.95 16.08 + 3 0.92 15.16 + 4 0.89 14.27 + 5 0.86 13.41 + 6 0.84 12.57 + 7 0.81 11.76 + 8 0.78 10.97 + 9 0.76 10.22 + 10 0.73 9.49 + 11 0.70 8.78 + 12 0.68 8.11 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + 13 0.65 7.46 + 14 0.62 6.84 + 15 0.59 6.24 + 16 0.57 5.68 + 17 0.54 5.14 + 18 0.51 4.62 + 19 0.49 4.14 + 20 0.46 3.68 + 21 0.43 3.24 + 22 0.41 2.84 + 23 0.38 2.46 + 24 0.35 2.11 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + 25 0.32 1.78 + 26 0.30 1.49 + 27 0.27 1.22 + 28 0.24 0.97 + 29 0.22 0.76 + 30 0.19 0.57 + 31 0.16 0.41 + 32 0.14 0.27 + 33 0.11 0.16 + 34 0.08 0.08 + 35 0.05 0.03 + 36 0.03 0.00 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/RULE78.dif b/BP100/RULE78.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/RULE78.run b/BP100/RULE78.run new file mode 100644 index 0000000..6625b10 --- /dev/null +++ b/BP100/RULE78.run @@ -0,0 +1,67 @@ + INTEREST VIS RULE OF 78'S + +THIS PROGRAM WILL COMPUTE INTEREST CHARGE ON LOANS WHEN +THIS INTEREST IS COMPUTED VIA THE RULE OF THE 78'S. +NECESSARY INFORMATION FOR USER INPUT INCLUDES LENGTH OF THE +LOAN, TOTAL INTEREST CONSUMER IS CHARGED ON LOAN OVER ITS +TERM AND THE PAYMENT NUMBERS OF THE PERIODS IN QUESTION. +OUTPUT SHOULD BE A SIMPLE TABLE SUMMARIZING INTEREST. +PRESS ENTER TO CONTINUE? +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +HOW MANY MONTHS(PAYMENTS) IS THE LOAN FOR ? 36 +WHAT IS TOTAL INTEREST FOR TERM OF LOAN ? 18 +WHICH IS 1ST MONTH FOR WHICH OUR INTEREST + COMPUTATION IS DESIRED ? 1 + WHICH IS THE LAST MONTH DESIRED ? 36 +TOTAL INTEREST TO BE PAID = $ 18 +PAYMENT # INTEREST INTEREST LEFT + 1 0.97 17.03 + 2 0.95 16.08 + 3 0.92 15.16 + 4 0.89 14.27 + 5 0.86 13.41 + 6 0.84 12.57 + 7 0.81 11.76 + 8 0.78 10.97 + 9 0.76 10.22 + 10 0.73 9.49 + 11 0.70 8.78 + 12 0.68 8.11 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + 13 0.65 7.46 + 14 0.62 6.84 + 15 0.59 6.24 + 16 0.57 5.68 + 17 0.54 5.14 + 18 0.51 4.62 + 19 0.49 4.14 + 20 0.46 3.68 + 21 0.43 3.24 + 22 0.41 2.84 + 23 0.38 2.46 + 24 0.35 2.11 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + 25 0.32 1.78 + 26 0.30 1.49 + 27 0.27 1.22 + 28 0.24 0.97 + 29 0.22 0.76 + 30 0.19 0.57 + 31 0.16 0.41 + 32 0.14 0.27 + 33 0.11 0.16 + 34 0.08 0.08 + 35 0.05 0.03 + 36 0.03 0.00 + +PRESS ENTER TO CONTINUE? +PAYMENT # INTEREST INTEREST LEFT + + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/SALELEAS.80 b/BP100/SALELEAS.80 new file mode 100644 index 0000000..ce00c87 --- /dev/null +++ b/BP100/SALELEAS.80 @@ -0,0 +1,49 @@ + SALE-LEASEBACK ANALYSIS + +THE SITUATION FOR THIS PROGRAM IS THE FOLLOWING: AN OWNER OF A +PIECE OF PROPERTY NEEDS TO RAISE SOME MONEY AND NEEDS THE USE +OF THE PROPERTY. HE CAN SELL THE PROPERTY TO THE INVESTOR AND +THEN LEASE IT BACK(SALE-LEASEBACK) OR HE CAN JUST BORROW THE +MONEY AS A MORTGAGE ON THE PROPERTY. + +THERE ARE VARIOUS TAX AND OTHER RAMIFICATIONS OF THE TWO +SITUATIONS WHICH THIS PROGRAM HELPS ANALYZE. + +PRESS TO CONTINUE? +ENTER PRESENT VALUE OF PROPERTY(SALE OR MORTGAGE AMT)? 100000 +ENTER TERM OF THE LEASE OR MORTGAGE IN YEARS ? 30 +ENTER ANNUAL INTEREST RATE FOR LEASE IN % ? 10 +ENTER ANNUAL INTEREST RATE FOR MORTGAGE IN % ? 4 +ENTER CORPORATE TAX RATE IN % ? 15 +ENTER TOTAL DEPRECIATION OVER TERM OF LEASE/MORTGAGE ? 5000 + + + + COMPUTING +PRESENT VALUE OF PROPERTY 100000.00 +TERM OF LEASE OR MORTGAGE(YEARS) 30.00 +ANNUAL INTEREST RATE FOR LEASE (%) 10.00 +ANNUAL INTEREST RATE FOR MORTG (%) 4.00 +CORPORATE TAX RATE (%) 15.00 +TOTAL DEPRECIATION FOR TERM OF LOAN 5000.00 + +PRESS ENTER TO CONTINUE? + +ANNUAL LEASE RENTAL 10443.83 +TOTAL LEASE PAYMENTS TO TERM 313314.81 +TOTAL LEASE TAX DEDUCTIONS 46997.22 +TOTAL ACTUAL COST OF LEASE TO TERM 266317.59 + +PRESS ENTER TO CONTINUE? + +ANNUAL MORTGAGE PAYMENT 5728.98 +TOTAL MORTGAGE PAYMENTS TO TERM 171869.51 +TOTAL MORTGAGE INTEREST PAID 71869.51 +TOTAL MORTGAGE TAXABLE EXPENSES 76869.51 +TOTAL MORTGAGE TAX DEDUCTION 11530.43 +TOTAL MORTGAGE COSTS AFTER TAXES 160339.08 + + +LEASE COSTS MORE THAN MORTGAGE BY 105978.51 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/SALELEAS.BAS b/BP100/SALELEAS.BAS new file mode 100644 index 0000000..4d340e0 --- /dev/null +++ b/BP100/SALELEAS.BAS @@ -0,0 +1,64 @@ +1 REM SALELEAS +2 CLS +10 CLEAR 1000 +20 PRINT " SALE-LEASEBACK ANALYSIS":PRINT +30 PRINT "THE SITUATION FOR THIS PROGRAM IS THE FOLLOWING: AN OWNER OF A +40 PRINT "PIECE OF PROPERTY NEEDS TO RAISE SOME MONEY AND NEEDS THE USE +45 PRINT "OF THE PROPERTY. HE CAN SELL THE PROPERTY TO THE INVESTOR AND +50 PRINT "THEN LEASE IT BACK(SALE-LEASEBACK) OR HE CAN JUST BORROW THE +60 PRINT "MONEY AS A MORTGAGE ON THE PROPERTY. +65 PRINT :PRINT "THERE ARE VARIOUS TAX AND OTHER RAMIFICATIONS OF THE TWO +70 PRINT "SITUATIONS WHICH THIS PROGRAM HELPS ANALYZE." +99 PRINT :INPUT "PRESS TO CONTINUE";Z9$ +120 CLS +130 INPUT "ENTER PRESENT VALUE OF PROPERTY(SALE OR MORTGAGE AMT)";PV +140 INPUT "ENTER TERM OF THE LEASE OR MORTGAGE IN YEARS ";N +150 INPUT "ENTER ANNUAL INTEREST RATE FOR LEASE IN % ";IL:IL=IL/100 +160 INPUT "ENTER ANNUAL INTEREST RATE FOR MORTGAGE IN % ";IM:IM=IM/100 +170 INPUT "ENTER CORPORATE TAX RATE IN % ";CTAX:CTAX=CTAX/100 +180 INPUT "ENTER TOTAL DEPRECIATION OVER TERM OF LEASE/MORTGAGE ";DEPR +220 CLS:PRINT :PRINT :PRINT :PRINT " COMPUTING" +250 REM TOTAL COST OF SALE-LEASEBACK +260 BAL=0:I=IL/12:N=12*N:GOSUB 1525:PL=PMT*12:REM ANNUAL RENT PAYMENT=PL FOR LEASE +270 BAL=0:I=IM/12:GOSUB 1420:PM=PMT*12:N=N/12:REM PM=ANNUAL MORTGAGE PAYMENT +280 TL=PL*N:REM TOTAL LEASE PAYMENTS OVER LEASE TERM +290 TM=PM*N:REM TOTAL MORTGAGE PAYMENTS OVER MORTGAGE TERM +300 DL=TL*CTAX : REM TOTAL TAX DEDUCTION FOR LEASE +310 LL=TL - DL: REM TOTAL ACTUAL RENTAL COST OF LEASE +320 RM=TM - PV:REM TOTAL INTEREST PAYMENTS OVER TERM OF MORTGAGE +330 EM=RM+DEPR:REM TOTAL MORTGAGE TAXABLE EXPENSES +340 DM=EM*CTAX: REM TOTAL TAX DEDUCTION FOR MORTGAGE +350 MM=TM - DM:REM TOTAL MORTGAGE COST AFTER TAXES +400 F$(1)="#########.##" +410 F$(2)="% % #########.##" +500 REM ANALYSIS PRINTOUT +505 CLS +510 PRINT USING F$(2);"PRESENT VALUE OF PROPERTY",PV +515 PRINT USING F$(2);"TERM OF LEASE OR MORTGAGE(YEARS)",N +520 PRINT USING F$(2);"ANNUAL INTEREST RATE FOR LEASE (%)",100*IL +525 PRINT USING F$(2);"ANNUAL INTEREST RATE FOR MORTG (%)",100*IM +530 PRINT USING F$(2);"CORPORATE TAX RATE (%)",100*CTAX +535 PRINT USING F$(2);"TOTAL DEPRECIATION FOR TERM OF LOAN",DEPR +540 PRINT +550 GOSUB 1600:PRINT +560 PRINT USING F$(2);"ANNUAL LEASE RENTAL",PL +570 PRINT USING F$(2);"TOTAL LEASE PAYMENTS TO TERM",TL +580 PRINT USING F$(2);"TOTAL LEASE TAX DEDUCTIONS",DL +590 PRINT USING F$(2);"TOTAL ACTUAL COST OF LEASE TO TERM",LL +600 PRINT :GOSUB 1600:PRINT +610 PRINT USING F$(2);"ANNUAL MORTGAGE PAYMENT",PM +620 PRINT USING F$(2);"TOTAL MORTGAGE PAYMENTS TO TERM",TM +630 PRINT USING F$(2);"TOTAL MORTGAGE INTEREST PAID",RM +640 PRINT USING F$(2);"TOTAL MORTGAGE TAXABLE EXPENSES",EM +650 PRINT USING F$(2);"TOTAL MORTGAGE TAX DEDUCTION",DM +660 PRINT USING F$(2);"TOTAL MORTGAGE COSTS AFTER TAXES",MM +670 PRINT :PRINT +680 IF MM>LL THEN PRINT USING F$(2);"MORTGAGE COSTS MORE THAN LEASE BY ",MM-LL +690 IF LL>MM THEN PRINT USING F$(2);"LEASE COSTS MORE THAN MORTGAGE BY ",LL-MM +750 PRINT :GOSUB 1600 +755 IF Z9$ = "-1" THEN END +760 GOTO 120 +1420 PMT=(PV-BAL*(1+I)[(-N))*I/(1-(1+I)[(-N)):RETURN +1525 PMT=(PV-BAL*(1+I)[(-N))*I/(1+I)/(1-(1+I)[(-N)):RETURN +1600 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/SALELEAS.INP b/BP100/SALELEAS.INP new file mode 100644 index 0000000..221da73 --- /dev/null +++ b/BP100/SALELEAS.INP @@ -0,0 +1,10 @@ + +100000 +30 +10 +4 +15 +5000 + + +-1 diff --git a/BP100/SALELEAS.OUT b/BP100/SALELEAS.OUT new file mode 100644 index 0000000..b6e7dd7 --- /dev/null +++ b/BP100/SALELEAS.OUT @@ -0,0 +1,49 @@ + SALE-LEASEBACK ANALYSIS + +THE SITUATION FOR THIS PROGRAM IS THE FOLLOWING: AN OWNER OF A +PIECE OF PROPERTY NEEDS TO RAISE SOME MONEY AND NEEDS THE USE +OF THE PROPERTY. HE CAN SELL THE PROPERTY TO THE INVESTOR AND +THEN LEASE IT BACK(SALE-LEASEBACK) OR HE CAN JUST BORROW THE +MONEY AS A MORTGAGE ON THE PROPERTY. + +THERE ARE VARIOUS TAX AND OTHER RAMIFICATIONS OF THE TWO +SITUATIONS WHICH THIS PROGRAM HELPS ANALYZE. + +PRESS TO CONTINUE? +ENTER PRESENT VALUE OF PROPERTY(SALE OR MORTGAGE AMT)? 100000 +ENTER TERM OF THE LEASE OR MORTGAGE IN YEARS ? 30 +ENTER ANNUAL INTEREST RATE FOR LEASE IN % ? 10 +ENTER ANNUAL INTEREST RATE FOR MORTGAGE IN % ? 4 +ENTER CORPORATE TAX RATE IN % ? 15 +ENTER TOTAL DEPRECIATION OVER TERM OF LEASE/MORTGAGE ? 5000 + + + + COMPUTING +PRESENT VALUE OF PROPERTY 100000.00 +TERM OF LEASE OR MORTGAGE(YEARS) 30.00 +ANNUAL INTEREST RATE FOR LEASE (%) 10.00 +ANNUAL INTEREST RATE FOR MORTG (%) 4.00 +CORPORATE TAX RATE (%) 15.00 +TOTAL DEPRECIATION FOR TERM OF LOAN 5000.00 + +PRESS ENTER TO CONTINUE? + +ANNUAL LEASE RENTAL 10443.83 +TOTAL LEASE PAYMENTS TO TERM 313314.81 +TOTAL LEASE TAX DEDUCTIONS 46997.22 +TOTAL ACTUAL COST OF LEASE TO TERM 266317.59 + +PRESS ENTER TO CONTINUE? + +ANNUAL MORTGAGE PAYMENT 5728.98 +TOTAL MORTGAGE PAYMENTS TO TERM 171869.51 +TOTAL MORTGAGE INTEREST PAID 71869.51 +TOTAL MORTGAGE TAXABLE EXPENSES 76869.51 +TOTAL MORTGAGE TAX DEDUCTION 11530.43 +TOTAL MORTGAGE COSTS AFTER TAXES 160339.08 + + +LEASE COSTS MORE THAN MORTGAGE BY 105978.51 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/SALELEAS.dif b/BP100/SALELEAS.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SALELEAS.run b/BP100/SALELEAS.run new file mode 100644 index 0000000..ce00c87 --- /dev/null +++ b/BP100/SALELEAS.run @@ -0,0 +1,49 @@ + SALE-LEASEBACK ANALYSIS + +THE SITUATION FOR THIS PROGRAM IS THE FOLLOWING: AN OWNER OF A +PIECE OF PROPERTY NEEDS TO RAISE SOME MONEY AND NEEDS THE USE +OF THE PROPERTY. HE CAN SELL THE PROPERTY TO THE INVESTOR AND +THEN LEASE IT BACK(SALE-LEASEBACK) OR HE CAN JUST BORROW THE +MONEY AS A MORTGAGE ON THE PROPERTY. + +THERE ARE VARIOUS TAX AND OTHER RAMIFICATIONS OF THE TWO +SITUATIONS WHICH THIS PROGRAM HELPS ANALYZE. + +PRESS TO CONTINUE? +ENTER PRESENT VALUE OF PROPERTY(SALE OR MORTGAGE AMT)? 100000 +ENTER TERM OF THE LEASE OR MORTGAGE IN YEARS ? 30 +ENTER ANNUAL INTEREST RATE FOR LEASE IN % ? 10 +ENTER ANNUAL INTEREST RATE FOR MORTGAGE IN % ? 4 +ENTER CORPORATE TAX RATE IN % ? 15 +ENTER TOTAL DEPRECIATION OVER TERM OF LEASE/MORTGAGE ? 5000 + + + + COMPUTING +PRESENT VALUE OF PROPERTY 100000.00 +TERM OF LEASE OR MORTGAGE(YEARS) 30.00 +ANNUAL INTEREST RATE FOR LEASE (%) 10.00 +ANNUAL INTEREST RATE FOR MORTG (%) 4.00 +CORPORATE TAX RATE (%) 15.00 +TOTAL DEPRECIATION FOR TERM OF LOAN 5000.00 + +PRESS ENTER TO CONTINUE? + +ANNUAL LEASE RENTAL 10443.83 +TOTAL LEASE PAYMENTS TO TERM 313314.81 +TOTAL LEASE TAX DEDUCTIONS 46997.22 +TOTAL ACTUAL COST OF LEASE TO TERM 266317.59 + +PRESS ENTER TO CONTINUE? + +ANNUAL MORTGAGE PAYMENT 5728.98 +TOTAL MORTGAGE PAYMENTS TO TERM 171869.51 +TOTAL MORTGAGE INTEREST PAID 71869.51 +TOTAL MORTGAGE TAXABLE EXPENSES 76869.51 +TOTAL MORTGAGE TAX DEDUCTION 11530.43 +TOTAL MORTGAGE COSTS AFTER TAXES 160339.08 + + +LEASE COSTS MORE THAN MORTGAGE BY 105978.51 + +PRESS ENTER TO CONTINUE? -1 diff --git a/BP100/SALVAGE.80 b/BP100/SALVAGE.80 new file mode 100644 index 0000000..a6bd048 --- /dev/null +++ b/BP100/SALVAGE.80 @@ -0,0 +1,16 @@ + SALVAGE VALUE + +THIS PROGRAM COMPUTES THE SALVAGE (BOOK) VALUE OF +AN ITEM DEPRECIATED OVER N YEARS BY THE DECLINING +BALANCE METHOD.iNPUT NECESSARY IS THE INITIAL COST, +THE DECLINING BALANCE DEPRECIATION RATE(AS A % HERE), +AND THE NUMBER OF YEARS OF DEPRECIATION. +PRESS ENTER TO BEGIN? +INPUT INITIAL COST IN DOLLARS? 123456 +INPUT DEPRECIATION RATE(AS %)? 15 +INPUT NUMBER OF YEARS OF DEPRECIATION? 5 + + + SALVAGE VALUE EQUALS $54778.08 + +PRESS 1 FOR MORE,0 TO END? 0 diff --git a/BP100/SALVAGE.BAS b/BP100/SALVAGE.BAS new file mode 100644 index 0000000..a0feb30 --- /dev/null +++ b/BP100/SALVAGE.BAS @@ -0,0 +1,23 @@ +5 CLS +10 PRINT " SALVAGE VALUE" +20 PRINT +30 PRINT "THIS PROGRAM COMPUTES THE SALVAGE (BOOK) VALUE OF +40 PRINT "AN ITEM DEPRECIATED OVER N YEARS BY THE DECLINING +50 PRINT "BALANCE METHOD.iNPUT NECESSARY IS THE INITIAL COST, +60 PRINT "THE DECLINING BALANCE DEPRECIATION RATE(AS A % HERE), +70 PRINT "AND THE NUMBER OF YEARS OF DEPRECIATION. +90 INPUT "PRESS ENTER TO BEGIN";Z9 +100 CLS +110 INPUT "INPUT INITIAL COST IN DOLLARS";C +120 INPUT "INPUT DEPRECIATION RATE(AS %)";F +130 DB=F/100 +140 INPUT "INPUT NUMBER OF YEARS OF DEPRECIATION";N +150 BV=C*(1-DB)[N +160 PRINT :PRINT +170 B$=" SALVAGE VALUE EQUALS $$######.## " +180 PRINT USING B$;BV +190 PRINT +200 INPUT "PRESS 1 FOR MORE,0 TO END";Z9 +210 IF Z9=1 THEN GOTO 100 +220 IF Z9=0 THEN END +230 PRINT "INPUT ERROR.TRY AGAIN":PRINT :GOTO 200 diff --git a/BP100/SALVAGE.INP b/BP100/SALVAGE.INP new file mode 100644 index 0000000..de21ddd --- /dev/null +++ b/BP100/SALVAGE.INP @@ -0,0 +1,5 @@ + +123456 +15 +5 +0 diff --git a/BP100/SALVAGE.OUT b/BP100/SALVAGE.OUT new file mode 100644 index 0000000..ac83a8b --- /dev/null +++ b/BP100/SALVAGE.OUT @@ -0,0 +1,16 @@ + SALVAGE VALUE + +THIS PROGRAM COMPUTES THE SALVAGE (BOOK) VALUE OF +AN ITEM DEPRECIATED OVER N YEARS BY THE DECLINING +BALANCE METHOD.iNPUT NECESSARY IS THE INITIAL COST, +THE DECLINING BALANCE DEPRECIATION RATE(AS A % HERE), +AND THE NUMBER OF YEARS OF DEPRECIATION. +PRESS ENTER TO BEGIN? +INPUT INITIAL COST IN DOLLARS? 123456 +INPUT DEPRECIATION RATE(AS %)? 15 +INPUT NUMBER OF YEARS OF DEPRECIATION? 5 + + + SALVAGE VALUE EQUALS $54778.08 + +PRESS 1 FOR MORE,0 TO END? 0 diff --git a/BP100/SALVAGE.dif b/BP100/SALVAGE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SALVAGE.run b/BP100/SALVAGE.run new file mode 100644 index 0000000..a6bd048 --- /dev/null +++ b/BP100/SALVAGE.run @@ -0,0 +1,16 @@ + SALVAGE VALUE + +THIS PROGRAM COMPUTES THE SALVAGE (BOOK) VALUE OF +AN ITEM DEPRECIATED OVER N YEARS BY THE DECLINING +BALANCE METHOD.iNPUT NECESSARY IS THE INITIAL COST, +THE DECLINING BALANCE DEPRECIATION RATE(AS A % HERE), +AND THE NUMBER OF YEARS OF DEPRECIATION. +PRESS ENTER TO BEGIN? +INPUT INITIAL COST IN DOLLARS? 123456 +INPUT DEPRECIATION RATE(AS %)? 15 +INPUT NUMBER OF YEARS OF DEPRECIATION? 5 + + + SALVAGE VALUE EQUALS $54778.08 + +PRESS 1 FOR MORE,0 TO END? 0 diff --git a/BP100/SEASIND.80 b/BP100/SEASIND.80 new file mode 100644 index 0000000..684bf05 --- /dev/null +++ b/BP100/SEASIND.80 @@ -0,0 +1,38 @@ + SEASONAL INDEX FOR A TIME SERIES + +MOST BUSINESSES SHOW SEASONAL VARIATIONS OF SALES. THAT MEANS +THAT THE SALES AT ONE TIME OF THE YEAR ARE HIGHER THAN THOSE +AT OTHER TIMES YEAR AFTER YEAR. THE SEASONAL INDEX FOR A +SEASON(OR MONTH) IS THE PERCENTAGE THAT SEASON'S SALES ARE OF +THE SALES IN AN 'AVERAGE' SEASON. FOR EXAMPLE IF A STORE SELLS +$60,00 PER YEAR, OR $5,000 PER MONTH AND AVERAGES $8,000 +DURING JUNE THEN THE INDEX FOR JUNE IS 160. + +THIS PROGRAM WILL COMPUTE SEASONAL INDICES. WHAT IS +NECESARY IS THE INPUT OF SALES AMOUNTS FOR EACH SEASON FOR +AT LEAST SEVERAL YEARS. THE PROGRAM WILL ACCEPT FEWER YEARS +BUT THE RESULTS WOULD BE MEANINGLESS. + +PRESS ENTER TO BEGIN? +NUMBER OF SEASONS IN YEAR(<=12)? 4 +NUMBER OF YEARS OF DATA AVAILABLE(<=100)? 2 + +DATA FOR YEAR 1 + ENTER DATA FOR SEASON 1 ? 111 + ENTER DATA FOR SEASON 2 ? 155 + ENTER DATA FOR SEASON 3 ? 177 + ENTER DATA FOR SEASON 4 ? 199 +DATA FOR YEAR 2 + ENTER DATA FOR SEASON 1 ? 122 + ENTER DATA FOR SEASON 2 ? 144 + ENTER DATA FOR SEASON 3 ? 166 + ENTER DATA FOR SEASON 4 ? 188 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? +AVERAGE MONTHLY SALES = $ 157.75 + +SEASON AVERAGE SALES INDEX + 3 $171.50 1.09 + 3 $171.50 2.09 + 3 $171.50 3.09 + diff --git a/BP100/SEASIND.BAS b/BP100/SEASIND.BAS new file mode 100644 index 0000000..985b324 --- /dev/null +++ b/BP100/SEASIND.BAS @@ -0,0 +1,51 @@ +1 REM SEASIND +5 CLEAR 1000 +10 CLS +20 PRINT TAB(5); "SEASONAL INDEX FOR A TIME SERIES":PRINT +30 PRINT "MOST BUSINESSES SHOW SEASONAL VARIATIONS OF SALES. THAT MEANS +35 PRINT "THAT THE SALES AT ONE TIME OF THE YEAR ARE HIGHER THAN THOSE +40 PRINT "AT OTHER TIMES YEAR AFTER YEAR. THE SEASONAL INDEX FOR A +45 PRINT "SEASON(OR MONTH) IS THE PERCENTAGE THAT SEASON'S SALES ARE OF +50 PRINT "THE SALES IN AN 'AVERAGE' SEASON. FOR EXAMPLE IF A STORE SELLS +60 PRINT "$60,00 PER YEAR, OR $5,000 PER MONTH AND AVERAGES $8,000 +65 PRINT "DURING JUNE THEN THE INDEX FOR JUNE IS 160. +70 PRINT :PRINT "THIS PROGRAM WILL COMPUTE SEASONAL INDICES. WHAT IS +75 PRINT "NECESARY IS THE INPUT OF SALES AMOUNTS FOR EACH SEASON FOR +80 PRINT "AT LEAST SEVERAL YEARS. THE PROGRAM WILL ACCEPT FEWER YEARS +85 PRINT "BUT THE RESULTS WOULD BE MEANINGLESS. +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 DIM A(100,12),B(12),C(12),I(12) +110 CLS +120 INPUT "NUMBER OF SEASONS IN YEAR(<=12)";N +125 IF N>12 OR N<1 OR N<>INT(N) THEN GOSUB 10000:GOTO 120 +130 INPUT "NUMBER OF YEARS OF DATA AVAILABLE(<=100)";NY +135 IF NY>100 OR NY<0 OR NY<>INT(NY) THEN GOSUB 10000:GOTO 130 +140 PRINT +145 S=0:FOR J=1 TO 12:B(J)=0:NEXT +150 FOR I=1 TO NY +160 PRINT "DATA FOR YEAR ";I +170 FOR J=1 TO N +180 PRINT " ENTER DATA FOR SEASON";J;:INPUT A(I,J) +185 B(J)=B(J)+A(I,J):REM SEASONAL TOTALS +187 S=S+A(I,J) +190 NEXT J +200 NEXT I +210 AV= S/(NY*N):REM AVERAGE SEASONAL SALES +215 FOR J= 1 TO N:C(J)=B(J)/NY:NEXT:REM SEASON AVERAGE +220 FOR J=1 TO N:I(J)=B(J)/(NY*AV):NEXT:REM RATIOS NEEDED +300 F$(1)="SEASON AVERAGE SALES INDEX" +310 F$(2)=" ## $$#######.## #####.##" +330 CLS +340 INPUT "IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +350 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 340 +360 IF Z2$="Y" THEN INPUT "PRESS ENTER WHEN PRINTER READY";Z9$ +400 CLS:PRINT "AVERAGE MONTHLY SALES = $";INT(100*AV+.5)/100:PRINT +405 IF Z2$="Y" THEN LPRINT "AVERAGE MONTHLY SALES = $";INT(100*AV+.5)/100:LPRINT " " +410 PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1):LPRINT " " +420 FOR I=1 TO N +430 PRINT USING F$(2);I,C(I),I(I) +435 IF Z2$="Y" THEN LPRINT USING F$(2);I,C(I),I(I) +440 NEXT +450 PRINT :END +10000 PRINT "INPUT ERROR! TRY AGAIN!":FOR I=1 TO 300:NEXT :RETURN + diff --git a/BP100/SEASIND.INP b/BP100/SEASIND.INP new file mode 100644 index 0000000..8f7e0a1 --- /dev/null +++ b/BP100/SEASIND.INP @@ -0,0 +1,13 @@ + +4 +2 +111 +155 +177 +199 +122 +144 +166 +188 +Y + diff --git a/BP100/SEASIND.OUT b/BP100/SEASIND.OUT new file mode 100644 index 0000000..46c6865 --- /dev/null +++ b/BP100/SEASIND.OUT @@ -0,0 +1,38 @@ + SEASONAL INDEX FOR A TIME SERIES + +MOST BUSINESSES SHOW SEASONAL VARIATIONS OF SALES. THAT MEANS +THAT THE SALES AT ONE TIME OF THE YEAR ARE HIGHER THAN THOSE +AT OTHER TIMES YEAR AFTER YEAR. THE SEASONAL INDEX FOR A +SEASON(OR MONTH) IS THE PERCENTAGE THAT SEASON'S SALES ARE OF +THE SALES IN AN 'AVERAGE' SEASON. FOR EXAMPLE IF A STORE SELLS +$60,00 PER YEAR, OR $5,000 PER MONTH AND AVERAGES $8,000 +DURING JUNE THEN THE INDEX FOR JUNE IS 160. + +THIS PROGRAM WILL COMPUTE SEASONAL INDICES. WHAT IS +NECESARY IS THE INPUT OF SALES AMOUNTS FOR EACH SEASON FOR +AT LEAST SEVERAL YEARS. THE PROGRAM WILL ACCEPT FEWER YEARS +BUT THE RESULTS WOULD BE MEANINGLESS. + +PRESS ENTER TO BEGIN? +NUMBER OF SEASONS IN YEAR(<=12)? 4 +NUMBER OF YEARS OF DATA AVAILABLE(<=100)? 2 + +DATA FOR YEAR 1 + ENTER DATA FOR SEASON 1 ? 111 + ENTER DATA FOR SEASON 2 ? 155 + ENTER DATA FOR SEASON 3 ? 177 + ENTER DATA FOR SEASON 4 ? 199 +DATA FOR YEAR 2 + ENTER DATA FOR SEASON 1 ? 122 + ENTER DATA FOR SEASON 2 ? 144 + ENTER DATA FOR SEASON 3 ? 166 + ENTER DATA FOR SEASON 4 ? 188 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? +AVERAGE MONTHLY SALES = $ 157.75 + +SEASON AVERAGE SALES INDEX + 3 $171.50 1.09 + 3 $171.50 2.09 + 3 $171.50 3.09 + diff --git a/BP100/SEASIND.dif b/BP100/SEASIND.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SEASIND.run b/BP100/SEASIND.run new file mode 100644 index 0000000..684bf05 --- /dev/null +++ b/BP100/SEASIND.run @@ -0,0 +1,38 @@ + SEASONAL INDEX FOR A TIME SERIES + +MOST BUSINESSES SHOW SEASONAL VARIATIONS OF SALES. THAT MEANS +THAT THE SALES AT ONE TIME OF THE YEAR ARE HIGHER THAN THOSE +AT OTHER TIMES YEAR AFTER YEAR. THE SEASONAL INDEX FOR A +SEASON(OR MONTH) IS THE PERCENTAGE THAT SEASON'S SALES ARE OF +THE SALES IN AN 'AVERAGE' SEASON. FOR EXAMPLE IF A STORE SELLS +$60,00 PER YEAR, OR $5,000 PER MONTH AND AVERAGES $8,000 +DURING JUNE THEN THE INDEX FOR JUNE IS 160. + +THIS PROGRAM WILL COMPUTE SEASONAL INDICES. WHAT IS +NECESARY IS THE INPUT OF SALES AMOUNTS FOR EACH SEASON FOR +AT LEAST SEVERAL YEARS. THE PROGRAM WILL ACCEPT FEWER YEARS +BUT THE RESULTS WOULD BE MEANINGLESS. + +PRESS ENTER TO BEGIN? +NUMBER OF SEASONS IN YEAR(<=12)? 4 +NUMBER OF YEARS OF DATA AVAILABLE(<=100)? 2 + +DATA FOR YEAR 1 + ENTER DATA FOR SEASON 1 ? 111 + ENTER DATA FOR SEASON 2 ? 155 + ENTER DATA FOR SEASON 3 ? 177 + ENTER DATA FOR SEASON 4 ? 199 +DATA FOR YEAR 2 + ENTER DATA FOR SEASON 1 ? 122 + ENTER DATA FOR SEASON 2 ? 144 + ENTER DATA FOR SEASON 3 ? 166 + ENTER DATA FOR SEASON 4 ? 188 +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? +AVERAGE MONTHLY SALES = $ 157.75 + +SEASON AVERAGE SALES INDEX + 3 $171.50 1.09 + 3 $171.50 2.09 + 3 $171.50 3.09 + diff --git a/BP100/SELLPR.80 b/BP100/SELLPR.80 new file mode 100644 index 0000000..4bb50e7 --- /dev/null +++ b/BP100/SELLPR.80 @@ -0,0 +1,16 @@ + SELLING PRICE + +THIS PROGRAM COMPUTES THE PROPER SELLING PRICE FOR AN +ITEM IF THE TOTAL PRICE THE CUSTOMER SHOULD PAY INCLUDING +SALES TAX IS SOME GIVEN AMOUNT. THE NECESSARY INPUT IS +SALES TAX RATE AND THE DESIRED FINAL SELLING PRICE PLUS +SALES TAX AMOUNT. + +PRESS ENTER TO BEGIN? +ENTER SALES TAX RATE(%) ? 8.9 +ENTER FINAL SALE + TAX PRICE? 1234.56 +SELLING PRICE = $1133.66 +INPUT 1 FOR NEW TAX RATE,2 FOR NEW CALC.,SAME TAX RATE-1 + + + diff --git a/BP100/SELLPR.BAS b/BP100/SELLPR.BAS new file mode 100644 index 0000000..9c52790 --- /dev/null +++ b/BP100/SELLPR.BAS @@ -0,0 +1,21 @@ +1 REM SELLPR +5 CLEAR 2000 +10 CLS:PRINT TAB(14);"SELLING PRICE":PRINT +20 PRINT "THIS PROGRAM COMPUTES THE PROPER SELLING PRICE FOR AN +30 PRINT "ITEM IF THE TOTAL PRICE THE CUSTOMER SHOULD PAY INCLUDING +40 PRINT "SALES TAX IS SOME GIVEN AMOUNT. THE NECESSARY INPUT IS +50 PRINT "SALES TAX RATE AND THE DESIRED FINAL SELLING PRICE PLUS +60 PRINT "SALES TAX AMOUNT. +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 PRINT @ 192,"";:INPUT "ENTER SALES TAX RATE(%) ";ST:ST=ST/100 +120 PRINT @ 320,"";:INPUT "ENTER FINAL SALE + TAX PRICE";FF +130 SELL= FF/(1+ST) +150 PRINT @ 448,"";:PRINT USING "SELLING PRICE = $$#####.##";SELL +160 PRINT @ 640,"";:PRINT "INPUT 1 FOR NEW TAX RATE,2 FOR NEW CALC.,SAME TAX RATE"; +170 LINE INPUT X$ ' X$=INKEY$:IF X$="" THEN GOTO 170 +175 IF X$ = "-1" THEN END +180 Z$=STRING$(62," "):PRINT @ 640,Z$;:PRINT @ 448,Z$;:PRINT @ 320,Z$;:IF X$="1" THEN PRINT @ 192,Z$:GOTO 110 +190 IF X$="2" THEN GOTO 120 +200 END + diff --git a/BP100/SELLPR.INP b/BP100/SELLPR.INP new file mode 100644 index 0000000..6bc1e0d --- /dev/null +++ b/BP100/SELLPR.INP @@ -0,0 +1,4 @@ + +8.9 +1234.56 +-1 diff --git a/BP100/SELLPR.OUT b/BP100/SELLPR.OUT new file mode 100644 index 0000000..ea6330d --- /dev/null +++ b/BP100/SELLPR.OUT @@ -0,0 +1,16 @@ + SELLING PRICE + +THIS PROGRAM COMPUTES THE PROPER SELLING PRICE FOR AN +ITEM IF THE TOTAL PRICE THE CUSTOMER SHOULD PAY INCLUDING +SALES TAX IS SOME GIVEN AMOUNT. THE NECESSARY INPUT IS +SALES TAX RATE AND THE DESIRED FINAL SELLING PRICE PLUS +SALES TAX AMOUNT. + +PRESS ENTER TO BEGIN? +ENTER SALES TAX RATE(%) ? 8.9 +ENTER FINAL SALE + TAX PRICE? 1234.56 +SELLING PRICE = $1133.66 +INPUT 1 FOR NEW TAX RATE,2 FOR NEW CALC.,SAME TAX RATE-1 + + + \ No newline at end of file diff --git a/BP100/SELLPR.dif b/BP100/SELLPR.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SELLPR.run b/BP100/SELLPR.run new file mode 100644 index 0000000..4bb50e7 --- /dev/null +++ b/BP100/SELLPR.run @@ -0,0 +1,16 @@ + SELLING PRICE + +THIS PROGRAM COMPUTES THE PROPER SELLING PRICE FOR AN +ITEM IF THE TOTAL PRICE THE CUSTOMER SHOULD PAY INCLUDING +SALES TAX IS SOME GIVEN AMOUNT. THE NECESSARY INPUT IS +SALES TAX RATE AND THE DESIRED FINAL SELLING PRICE PLUS +SALES TAX AMOUNT. + +PRESS ENTER TO BEGIN? +ENTER SALES TAX RATE(%) ? 8.9 +ENTER FINAL SALE + TAX PRICE? 1234.56 +SELLING PRICE = $1133.66 +INPUT 1 FOR NEW TAX RATE,2 FOR NEW CALC.,SAME TAX RATE-1 + + + diff --git a/BP100/SHARPE1.80 b/BP100/SHARPE1.80 new file mode 100644 index 0000000..1ed1329 --- /dev/null +++ b/BP100/SHARPE1.80 @@ -0,0 +1,30 @@ + SHARPE'S METHOD OF PORTFOLIO SELECTION + +tHIS PROGRAM STARTS WITH DATA PERTAINING TO A MARKET INDEX +AND SEVERAL POSSIBLE STOCKS TO HOLD. fOR EACH STOCK THE +USER INPUTS THE ALPHA AND BETA PARAMETERS ALONG WITH THE +VARIANCE OF RETURN(OR STANDARD DEVIATION OF RETURN=VOLATILITY). +FOR THE INDEX THE EXPECTED VALUE AND VARIANCE OF RETURN +ARE ENTERED. tHE PROGRAM THEN CALCULATES THE PROPORTION +A RISK FACTOR MAY ALSO BE INCLUDED. THIS FACTOR TAKES ON VALUES +BETWEEN 0 AND 4 OR 5. THE HIGHER THE RISK FACTOR THE MORE +DARING THE INVESTOR SHOULD BE. 0 MEANS VERY CONSERVATIVE. + +PRESS ENTER TO BEGIN? +NUMBER OF STOCKS BEING CONSIDRED FOR PORFOLIO? 2 + +ENTER 1 IF STOCK VARIANCE OF RETURN IS BEING ENTERED. +ENTER 0 IF STOCK STANDARD DEVIATION OF RETURN IS ENTERED? 0 +ENTER STOCK 1 ALPHA,BETA,ST.DEV? 1,2,3 +ENTER STOCK 2 ALPHA,BETA,ST.DEV? 4,5,6 + +INDEX RETURN? 7 +INDEX VARIANCE OF RETURN? 8 + +ENTER RISK FACTOR ? 9 +SOLUTION FOLLOWS + +PROPORTION FOR STOCK 1 = .410256 +PROPORTION FOR STOCK 2 = .589744 + +PRESS ENTER FOR ANOTHER COMPUTATION? -1 diff --git a/BP100/SHARPE1.BAS b/BP100/SHARPE1.BAS new file mode 100644 index 0000000..b5ee151 --- /dev/null +++ b/BP100/SHARPE1.BAS @@ -0,0 +1,79 @@ +1000 CLS +1010 PRINT " SHARPE'S METHOD OF PORTFOLIO SELECTION":PRINT +1020 PRINT "tHIS PROGRAM STARTS WITH DATA PERTAINING TO A MARKET INDEX +1030 PRINT "AND SEVERAL POSSIBLE STOCKS TO HOLD. fOR EACH STOCK THE +1040 PRINT "USER INPUTS THE ALPHA AND BETA PARAMETERS ALONG WITH THE +1050 PRINT "VARIANCE OF RETURN(OR STANDARD DEVIATION OF RETURN=VOLATILITY). +1060 PRINT "FOR THE INDEX THE EXPECTED VALUE AND VARIANCE OF RETURN +1070 PRINT "ARE ENTERED. tHE PROGRAM THEN CALCULATES THE PROPORTION +1080 PRINT "A RISK FACTOR MAY ALSO BE INCLUDED. THIS FACTOR TAKES ON VALUES +1090 PRINT "BETWEEN 0 AND 4 OR 5. THE HIGHER THE RISK FACTOR THE MORE +1100 PRINT "DARING THE INVESTOR SHOULD BE. 0 MEANS VERY CONSERVATIVE. +1150 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9 +1200 REM DATA INPUT +1201 CLEAR +1205 CLS +1210 INPUT "NUMBER OF STOCKS BEING CONSIDRED FOR PORFOLIO";N +1215 PRINT +1220 PRINT "ENTER 1 IF STOCK VARIANCE OF RETURN IS BEING ENTERED. +1230 INPUT "ENTER 0 IF STOCK STANDARD DEVIATION OF RETURN IS ENTERED";Q +1240 IF Q<>0 AND Q<>1 THEN PRINT "INPUT ERROR!":GOTO 1215 +1250 RA=N+3:CA=N+3:REM # ROWS & COLUMNS ON MATRIX +1255 DIM A(N+3,N+3),T(N+3,1),AL(N),BE(N),V(N) +1257 CLS +1260 FOR I=1 TO N +1265 IF Q=1 THEN GOTO 1280 +1270 PRINT "ENTER STOCK";I;" ALPHA,BETA,ST.DEV";:INPUT AL(I),BE(I),V(I) +1273 V(I)=-2*V(I)[2 +1277 GOTO 1300:REM NEXT I +1280 PRINT "ENTER STOCK";I;" ALPHA,BETA,VARIANCE";:INPUT AL(I),BE(I),V(I) +1285 V(I)=-2*V(I) +1290 GOTO 1300 +1300 NEXT I +1302 PRINT +1303 INPUT "INDEX RETURN";RI +1305 INPUT "INDEX VARIANCE OF RETURN";RV +1310 PRINT +1320 INPUT "ENTER RISK FACTOR ";RF +1330 FOR I=1 TO N:A(I,I)=V(I):NEXT +1340 FOR I=1 TO N:A(N+2,I)=1:A(I,N+2)=1:NEXT +1350 A(N+1,N+1)=-2*RV:A(N+1,N+3)=-1:A(N+3,N+1)=-1 +1360 FOR I=1 TO N:A(N+3,I)=BE(I):A(I,N+3)=BE(I):NEXT +1370 FOR I=1 TO N:T(I,1)=-RF*AL(I):NEXT :T(N+1,1)=-RF*RI:T(N+2,1)=1 +2220 REM NOW INVERTING MATRIX A +2230 FOR J=1 TO CA +2240 FOR I=J TO RA +2250 I1=I +2260 IF A(I,J)<>0 THEN GOTO 2300 +2270 NEXT I +2280 PRINT "NO UNIQUE SOLUTION. MATRIX A IS SINGULAR." +2290 END +2300 FOR K= 1 TO RA +2310 AS = A(J,K):A(J,K)=A(I1,K):A(I1,K)=AS +2320 NEXT K +2330 AS=T(J,1):T(J,1)=T(I1,1):T(I1,1)=AS +2340 AP = 1/A(J,J) +2350 FOR K= 1 TO RA +2360 A(J,K)=AP*A(J,K) +2370 NEXT K +2380 T(J,1)=AP*T(J,1) +2390 FOR L=1 TO RA +2400 IF L=J THEN GOTO 2460 +2410 AP= -A(L,J) +2420 FOR K=1 TO RA +2430 A(L,K)=A(L,K)+AP*A(J,K) +2440 NEXT K +2450 T(L,1)=T(L,1)+AP*T(J,1) +2460 NEXT L +2470 NEXT J +2475 CLS +2480 PRINT "SOLUTION FOLLOWS " +2490 PRINT +2500 FOR I=1 TO N +2510 PRINT "PROPORTION FOR STOCK ";I;" = ";T(I,1) +2520 NEXT I +2540 PRINT +2550 INPUT "PRESS ENTER FOR ANOTHER COMPUTATION";Z9 +2555 IF Z9 = -1 THEN END +2560 GOTO 1200 + diff --git a/BP100/SHARPE1.INP b/BP100/SHARPE1.INP new file mode 100644 index 0000000..c6ca685 --- /dev/null +++ b/BP100/SHARPE1.INP @@ -0,0 +1,9 @@ + +2 +0 +1,2,3 +4,5,6 +7 +8 +9 +-1 diff --git a/BP100/SHARPE1.OUT b/BP100/SHARPE1.OUT new file mode 100644 index 0000000..bb49621 --- /dev/null +++ b/BP100/SHARPE1.OUT @@ -0,0 +1,30 @@ + SHARPE'S METHOD OF PORTFOLIO SELECTION + +tHIS PROGRAM STARTS WITH DATA PERTAINING TO A MARKET INDEX +AND SEVERAL POSSIBLE STOCKS TO HOLD. fOR EACH STOCK THE +USER INPUTS THE ALPHA AND BETA PARAMETERS ALONG WITH THE +VARIANCE OF RETURN(OR STANDARD DEVIATION OF RETURN=VOLATILITY). +FOR THE INDEX THE EXPECTED VALUE AND VARIANCE OF RETURN +ARE ENTERED. tHE PROGRAM THEN CALCULATES THE PROPORTION +A RISK FACTOR MAY ALSO BE INCLUDED. THIS FACTOR TAKES ON VALUES +BETWEEN 0 AND 4 OR 5. THE HIGHER THE RISK FACTOR THE MORE +DARING THE INVESTOR SHOULD BE. 0 MEANS VERY CONSERVATIVE. + +PRESS ENTER TO BEGIN? +NUMBER OF STOCKS BEING CONSIDRED FOR PORFOLIO? 2 + +ENTER 1 IF STOCK VARIANCE OF RETURN IS BEING ENTERED. +ENTER 0 IF STOCK STANDARD DEVIATION OF RETURN IS ENTERED? 0 +ENTER STOCK 1 ALPHA,BETA,ST.DEV? 1,2,3 +ENTER STOCK 2 ALPHA,BETA,ST.DEV? 4,5,6 + +INDEX RETURN? 7 +INDEX VARIANCE OF RETURN? 8 + +ENTER RISK FACTOR ? 9 +SOLUTION FOLLOWS + +PROPORTION FOR STOCK 1 = .410256 +PROPORTION FOR STOCK 2 = .589744 + +PRESS ENTER FOR ANOTHER COMPUTATION? -1 diff --git a/BP100/SHARPE1.dif b/BP100/SHARPE1.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SHARPE1.run b/BP100/SHARPE1.run new file mode 100644 index 0000000..1ed1329 --- /dev/null +++ b/BP100/SHARPE1.run @@ -0,0 +1,30 @@ + SHARPE'S METHOD OF PORTFOLIO SELECTION + +tHIS PROGRAM STARTS WITH DATA PERTAINING TO A MARKET INDEX +AND SEVERAL POSSIBLE STOCKS TO HOLD. fOR EACH STOCK THE +USER INPUTS THE ALPHA AND BETA PARAMETERS ALONG WITH THE +VARIANCE OF RETURN(OR STANDARD DEVIATION OF RETURN=VOLATILITY). +FOR THE INDEX THE EXPECTED VALUE AND VARIANCE OF RETURN +ARE ENTERED. tHE PROGRAM THEN CALCULATES THE PROPORTION +A RISK FACTOR MAY ALSO BE INCLUDED. THIS FACTOR TAKES ON VALUES +BETWEEN 0 AND 4 OR 5. THE HIGHER THE RISK FACTOR THE MORE +DARING THE INVESTOR SHOULD BE. 0 MEANS VERY CONSERVATIVE. + +PRESS ENTER TO BEGIN? +NUMBER OF STOCKS BEING CONSIDRED FOR PORFOLIO? 2 + +ENTER 1 IF STOCK VARIANCE OF RETURN IS BEING ENTERED. +ENTER 0 IF STOCK STANDARD DEVIATION OF RETURN IS ENTERED? 0 +ENTER STOCK 1 ALPHA,BETA,ST.DEV? 1,2,3 +ENTER STOCK 2 ALPHA,BETA,ST.DEV? 4,5,6 + +INDEX RETURN? 7 +INDEX VARIANCE OF RETURN? 8 + +ENTER RISK FACTOR ? 9 +SOLUTION FOLLOWS + +PROPORTION FOR STOCK 1 = .410256 +PROPORTION FOR STOCK 2 = .589744 + +PRESS ENTER FOR ANOTHER COMPUTATION? -1 diff --git a/BP100/SIMPDISK.80 b/BP100/SIMPDISK.80 new file mode 100644 index 0000000..3374d4b --- /dev/null +++ b/BP100/SIMPDISK.80 @@ -0,0 +1,69 @@ + DISCOUNT ANALYSIS + +DISCOUNTS ARE COMMON IN ALMOST ALL BUSINESSES AT ALMOST +ALL TIMES. THERE ARE THREE MAJOR TYPES OF QUESTIONS WHICH +ARE CONSIDERED IN THIS PROGRAM. THEY ARE: + 1. GIVEN A LIST PRICE AND A PER CENT DISCOUNT + DETERMINE THE SELLING PRICE + 2. GIVEN A DISCOUNTED PRICE AND A PER CENT DISCOUNT + DETERMINE THE ORIGINAL PRICE + 3. GIVEN AN ORIGINAL AND A DISCOUNTED PRICE DETERMINE + THE DISCOUNT %. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 1 +SELLING PRICE GIVEN ORIGINAL PRICE & % DISCOUNT + +ORIGINAL PRICE ? 2345 +% DISCOUNT ? 67 +DISCOUNT AMOUNT 1571.15 +SELLING PRICE 773.85 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 2 +ORIGINAL PRICE GIVEN SELLING PRICE & % DISCOUNT + +SELLING PRICE ? 3456 +% DISCOUNT ? 78 +ORIGINAL PRICE IS 15709.09 +DISCOUNT AMOUNT 12253.09 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 3 + +DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICES + +ENTER ORIGINAL PRICE ? 6789 +ENTER DISCOUNTED PRICE? 5678 +DISCOUNT PERCENTAGE 16.36 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/SIMPDISK.BAS b/BP100/SIMPDISK.BAS new file mode 100644 index 0000000..b567524 --- /dev/null +++ b/BP100/SIMPDISK.BAS @@ -0,0 +1,56 @@ +1 REM SIMPDISK +5 CLEAR 1000 +10 CLS +20 PRINT TAB(10); "DISCOUNT ANALYSIS":PRINT +25 PRINT "DISCOUNTS ARE COMMON IN ALMOST ALL BUSINESSES AT ALMOST +30 PRINT "ALL TIMES. THERE ARE THREE MAJOR TYPES OF QUESTIONS WHICH +35 PRINT "ARE CONSIDERED IN THIS PROGRAM. THEY ARE: +40 PRINT " 1. GIVEN A LIST PRICE AND A PER CENT DISCOUNT +45 PRINT " DETERMINE THE SELLING PRICE +50 PRINT " 2. GIVEN A DISCOUNTED PRICE AND A PER CENT DISCOUNT +55 PRINT " DETERMINE THE ORIGINAL PRICE +60 PRINT " 3. GIVEN AN ORIGINAL AND A DISCOUNTED PRICE DETERMINE +65 PRINT " THE DISCOUNT %. +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 GOSUB 9000 +200 CLS:PRINT TAB(10); "MENU":PRINT +205 PRINT "0. QUIT +210 PRINT "1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +220 PRINT "2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +230 PRINT "3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE +290 PRINT :INPUT "MAKE YOUR CHOICE";Z9 +295 IF Z9 = 0 THEN END +300 ON Z9 GOSUB 500,600,700 +310 GOTO 200 +500 REM FIND SELLING PR. GIVEN ORIG PR & % DISCOUNT +510 CLS:PRINT "SELLING PRICE GIVEN ORIGINAL PRICE & % DISCOUNT +515 PRINT +520 INPUT "ORIGINAL PRICE ";OP +530 INPUT "% DISCOUNT ";PD:PD=PD/100 +540 PRINT USING F$(1);"DISCOUNT AMOUNT",PD*OP +550 PRINT USING F$(1);"SELLING PRICE",OP*(1-PD) +560 PRINT :GOSUB 10100 +570 RETURN +600 REM FIND ORIGINAL PRICE GIVEN SELL. PR. AND % DISCOUNT +610 CLS:PRINT "ORIGINAL PRICE GIVEN SELLING PRICE & % DISCOUNT" +615 PRINT +620 INPUT "SELLING PRICE ";SP +630 INPUT "% DISCOUNT ";PD:PD=PD/100 +640 PRINT USING F$(1);"ORIGINAL PRICE IS ",SP/(1-PD) +650 PRINT USING F$(1);"DISCOUNT AMOUNT",SP/(1-PD)-SP +660 PRINT :GOSUB 10100 +670 RETURN +700 REM DISCOUNT GIVEN ORIGINAL & DISCOUNTED PRICE +705 CLS +710 PRINT :PRINT "DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICES":PRINT +720 INPUT "ENTER ORIGINAL PRICE ";OP +730 INPUT "ENTER DISCOUNTED PRICE";PD +740 D=(OP-PD)/OP:D=100*D +750 PRINT USING F$(1);"DISCOUNT PERCENTAGE",D +760 PRINT :GOSUB 10100 +770 RETURN +9000 REM PRINTING FORMATS +9010 F$(1)="% % ########.##" +9099 RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/SIMPDISK.INP b/BP100/SIMPDISK.INP new file mode 100644 index 0000000..22cb274 --- /dev/null +++ b/BP100/SIMPDISK.INP @@ -0,0 +1,14 @@ + +1 +2345 +67 + +2 +3456 +78 + +3 +6789 +5678 + +0 diff --git a/BP100/SIMPDISK.OUT b/BP100/SIMPDISK.OUT new file mode 100644 index 0000000..8319c14 --- /dev/null +++ b/BP100/SIMPDISK.OUT @@ -0,0 +1,69 @@ + DISCOUNT ANALYSIS + +DISCOUNTS ARE COMMON IN ALMOST ALL BUSINESSES AT ALMOST +ALL TIMES. THERE ARE THREE MAJOR TYPES OF QUESTIONS WHICH +ARE CONSIDERED IN THIS PROGRAM. THEY ARE: + 1. GIVEN A LIST PRICE AND A PER CENT DISCOUNT + DETERMINE THE SELLING PRICE + 2. GIVEN A DISCOUNTED PRICE AND A PER CENT DISCOUNT + DETERMINE THE ORIGINAL PRICE + 3. GIVEN AN ORIGINAL AND A DISCOUNTED PRICE DETERMINE + THE DISCOUNT %. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 1 +SELLING PRICE GIVEN ORIGINAL PRICE & % DISCOUNT + +ORIGINAL PRICE ? 2345 +% DISCOUNT ? 67 +DISCOUNT AMOUNT 1571.15 +SELLING PRICE 773.85 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 2 +ORIGINAL PRICE GIVEN SELLING PRICE & % DISCOUNT + +SELLING PRICE ? 3456 +% DISCOUNT ? 78 +ORIGINAL PRICE IS 15709.09 +DISCOUNT AMOUNT 12253.09 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 3 + +DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICES + +ENTER ORIGINAL PRICE ? 6789 +ENTER DISCOUNTED PRICE? 5678 +DISCOUNT PERCENTAGE 16.36 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/SIMPDISK.dif b/BP100/SIMPDISK.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SIMPDISK.run b/BP100/SIMPDISK.run new file mode 100644 index 0000000..3374d4b --- /dev/null +++ b/BP100/SIMPDISK.run @@ -0,0 +1,69 @@ + DISCOUNT ANALYSIS + +DISCOUNTS ARE COMMON IN ALMOST ALL BUSINESSES AT ALMOST +ALL TIMES. THERE ARE THREE MAJOR TYPES OF QUESTIONS WHICH +ARE CONSIDERED IN THIS PROGRAM. THEY ARE: + 1. GIVEN A LIST PRICE AND A PER CENT DISCOUNT + DETERMINE THE SELLING PRICE + 2. GIVEN A DISCOUNTED PRICE AND A PER CENT DISCOUNT + DETERMINE THE ORIGINAL PRICE + 3. GIVEN AN ORIGINAL AND A DISCOUNTED PRICE DETERMINE + THE DISCOUNT %. + +PRESS ENTER TO BEGIN? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 1 +SELLING PRICE GIVEN ORIGINAL PRICE & % DISCOUNT + +ORIGINAL PRICE ? 2345 +% DISCOUNT ? 67 +DISCOUNT AMOUNT 1571.15 +SELLING PRICE 773.85 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 2 +ORIGINAL PRICE GIVEN SELLING PRICE & % DISCOUNT + +SELLING PRICE ? 3456 +% DISCOUNT ? 78 +ORIGINAL PRICE IS 15709.09 +DISCOUNT AMOUNT 12253.09 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 3 + +DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICES + +ENTER ORIGINAL PRICE ? 6789 +ENTER DISCOUNTED PRICE? 5678 +DISCOUNT PERCENTAGE 16.36 + +PRESS ENTER TO CONTINUE? + MENU + +0. QUIT +1. DETERMINE SELLING PRICE GIVEN LIST PRICE & % DISCOUNT +2. DETERMINE ORIGINAL PRICE GIVEN DISCOUNTED PRICE AND % DISC. +3. DETERMINE % DISCOUNT GIVEN ORIGINAL AND DISCOUNTED PRICE + +MAKE YOUR CHOICE? 0 diff --git a/BP100/SIMPLEX.80 b/BP100/SIMPLEX.80 new file mode 100644 index 0000000..4f64649 --- /dev/null +++ b/BP100/SIMPLEX.80 @@ -0,0 +1,40 @@ + LINEAR PROGRAMMING + +LINEAR PROGRAMMING IS A MATHEMATICAL TOOL DESIGNED TO HELP +MANAGEMENT TO MAKE OPTIMUM USE OF COMPETING RESOURCES. +IT IS A VERY POPULAR TECHNIQUE AND INVOLVES LINEAR INEQUALITIES +CALLED CONSTRAINTS AND A LINEAR OBJECTIVE FUNCTION WHICH +WE TRY TO MAXIMIZE OR MINIMIZE. THE INTERESTED USER MAY +CONSULT ANY INTRODUCTORY TEXT IN FINITE MATHEMATICS FOR +ADDITIONAL INFORMATION. + +THE NUMBERS OF VARIABLES AND CONSTRAINTS ARE ONLY +LIMITED BY AVAILABLE MEMORY BUT MANY VARIABLE PROBLEMS +MAY TAKE A LONG TIME TO RUN. + +PRESS ENTER TO BEGIN? +NUMBER OF VARIABLES ? 2 +NUMBER OF CONSTRAINTS ? 1 +NAME OF VARIABLE 1 IS ? X +NAME OF VARIABLE 2 IS ? Y + +CONSTRAINT 1 + +COEFFICIENT FOR VARIABLE 1 X IS ? 1.234 +COEFFICIENT FOR VARIABLE 2 Y IS ? 5.6789 +ENTER 1 IF <= CONSTRAINT, -1 IF >= CONSTRAINT ? 1 +ENTER AMOUNT FOR CONSTRAINT ? 9.876 + + + + +PRESS Y IF A MINIMIZATION PROBLEM, OTHERWISE N? N + +ENTER COEFFICIENTS FOR OBJECTIVE FUNCTION + +COEFFICIENT FOR VARIABLE 1 X IS ? 1.111 +COEFFICIENT FOR VARIABLE 2 Y IS ? 2.222 +VALUE OF OBJECTIVE FUNCTION = 0 + +AMOUNT OF X I.E. X( 1 ) = 0 +AMOUNT OF Y I.E. X( 2 ) = 0 diff --git a/BP100/SIMPLEX.BAS b/BP100/SIMPLEX.BAS new file mode 100644 index 0000000..b4894e7 --- /dev/null +++ b/BP100/SIMPLEX.BAS @@ -0,0 +1,81 @@ +1 REM SIMPLEX +2 CLEAR 1000 +3 CLS +10 CLS:PRINT TAB(10);"LINEAR PROGRAMMING":PRINT +20 PRINT "LINEAR PROGRAMMING IS A MATHEMATICAL TOOL DESIGNED TO HELP +25 PRINT "MANAGEMENT TO MAKE OPTIMUM USE OF COMPETING RESOURCES. +30 PRINT "IT IS A VERY POPULAR TECHNIQUE AND INVOLVES LINEAR INEQUALITIES +35 PRINT "CALLED CONSTRAINTS AND A LINEAR OBJECTIVE FUNCTION WHICH +40 PRINT "WE TRY TO MAXIMIZE OR MINIMIZE. THE INTERESTED USER MAY +45 PRINT "CONSULT ANY INTRODUCTORY TEXT IN FINITE MATHEMATICS FOR +50 PRINT "ADDITIONAL INFORMATION. +55 PRINT :PRINT "THE NUMBERS OF VARIABLES AND CONSTRAINTS ARE ONLY +60 PRINT "LIMITED BY AVAILABLE MEMORY BUT MANY VARIABLE PROBLEMS +65 PRINT "MAY TAKE A LONG TIME TO RUN." +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 CLS +1000 DEFDBL A,X +1002 DEFINT I,J,N,T,S,M +1005 INPUT "NUMBER OF VARIABLES ";M +1010 INPUT "NUMBER OF CONSTRAINTS ";N +1011 DIM A(N+2,N+M+2),X(M+N+2),D$(M+1) +1012 FOR JJ=1 TO M +1013 PRINT "NAME OF VARIABLE ";JJ;" IS ";:INPUT D$(JJ) +1014 NEXT +1015 REM SETTING UP MATRIX TABLEAU +1020 FOR I=2 TO N+1 +1021 PRINT +1022 PRINT "CONSTRAINT ";I-1:PRINT +1023 FOR J=1 TO M:PRINT "COEFFICIENT FOR VARIABLE";J;" ";D$(J);" IS ";:INPUT A(I,J): NEXT J +1025 INPUT "ENTER 1 IF <= CONSTRAINT, -1 IF >= CONSTRAINT ";A(I,M+1) +1027 INPUT "ENTER AMOUNT FOR CONSTRAINT ";A(I,M+2) +1030 A(I,N+M+1)=A(I,M+2):A(I,M+2)=0 +1035 IF I>2 THEN A(I,M+I-1)=A(I,M+1):A(I,M+1)=0 +1037 PRINT :PRINT +1040 NEXT I +1042 PRINT :PRINT +1043 INPUT "PRESS Y IF A MINIMIZATION PROBLEM, OTHERWISE N";Z$:PRINT +1044 IF Z$<>"Y" AND Z$<>"N" THEN PRINT "INPUT ERROR":GOTO 1043 +1045 PRINT "ENTER COEFFICIENTS FOR OBJECTIVE FUNCTION":PRINT +1047 FOR J=1 TO M:PRINT "COEFFICIENT FOR VARIABLE";J;" ";D$(J);" IS ";:INPUT A(1,J): X(J)=1:NEXT J:R=1 +1050 IF Z$="N" THEN FOR J=1 TO M:A(1,J)=-A(1,J):NEXT +1065 FOR I=2 TO N+1 +1070 IF A(I,M+I-1)<>-1 THEN GOTO 1085 : ELSE X(M+I-1)=1 +1075 FOR J=1 TO N+M:A(N+2,J)=A(N+2,J)-A(I,J):NEXT J +1080 R=N+2 +1085 NEXT I +1090 S=1:T=1 +1095 FOR I=2 TO N+M:IF A(R,I)>= A(R,S) THEN S=I +1100 IF A(R,I) 1E-4 THEN GOTO 1280 : ELSE R=1: GOTO 1090 +1140 S=1 +1150 FOR I=2 TO N+1:IF A(I,T)<=0 THEN GOTO 1190 +1160 Y= A(I,N+M+1)/A(I,T): IF S=1 THEN GOTO 1180 +1170 IF Y>= A(S,N+M+1)/A(S,T) THEN GOTO 1190 +1180 S=I +1190 NEXT I +1200 IF S=1 THEN GOTO 1290 +1210 FOR I=1 TO N+M: IF A(S,I)=1 THEN GOTO 1230 +1220 NEXT I +1230 X(I)=1: X(T)=0: Y = A(S,T) +1240 FOR I = 1 TO N+M+1: A(S,I)=A(S,I)/Y:NEXT +1250 FOR I= 1 TO N+2: IF I=S THEN GOTO 1270 : ELSE Y=A(I,T) +1260 FOR J=1 TO N+M+1: A(I,J)=A(I,J)-Y*A(S,J):NEXT +1270 NEXT I: GOTO 1090 +1280 PRINT " NO SOLUTION ":STOP +1290 PRINT "UNBOUNDED SOLUTION ":STOP +1300 FOR J=1 TO M +1310 IF X(J) <> 0 THEN X(J)=0: GOTO 1340 +1320 FOR I=2 TO N+1: IF A(I,J)<>1 THEN NEXT I +1330 X(J)=A(I,N+M+1) +1340 NEXT J +1350 Y = A(1,N+M+1):IF Z$="Y" THEN Y=-Y +1360 REM PRINT OUT SOLUTION +1365 CLS:PRINT "VALUE OF OBJECTIVE FUNCTION = ";Y +1368 PRINT +1370 FOR I=1 TO M +1375 PRINT "AMOUNT OF ";D$(I);" I.E. X(";I;") = ";TAB(50); X(I) +1380 NEXT I + diff --git a/BP100/SIMPLEX.INP b/BP100/SIMPLEX.INP new file mode 100644 index 0000000..e74a3f4 --- /dev/null +++ b/BP100/SIMPLEX.INP @@ -0,0 +1,12 @@ + +2 +1 +X +Y +1.234 +5.6789 +1 +9.876 +N +1.111 +2.222 diff --git a/BP100/SIMPLEX.OUT b/BP100/SIMPLEX.OUT new file mode 100644 index 0000000..3bd8f1b --- /dev/null +++ b/BP100/SIMPLEX.OUT @@ -0,0 +1,40 @@ + LINEAR PROGRAMMING + +LINEAR PROGRAMMING IS A MATHEMATICAL TOOL DESIGNED TO HELP +MANAGEMENT TO MAKE OPTIMUM USE OF COMPETING RESOURCES. +IT IS A VERY POPULAR TECHNIQUE AND INVOLVES LINEAR INEQUALITIES +CALLED CONSTRAINTS AND A LINEAR OBJECTIVE FUNCTION WHICH +WE TRY TO MAXIMIZE OR MINIMIZE. THE INTERESTED USER MAY +CONSULT ANY INTRODUCTORY TEXT IN FINITE MATHEMATICS FOR +ADDITIONAL INFORMATION. + +THE NUMBERS OF VARIABLES AND CONSTRAINTS ARE ONLY +LIMITED BY AVAILABLE MEMORY BUT MANY VARIABLE PROBLEMS +MAY TAKE A LONG TIME TO RUN. + +PRESS ENTER TO BEGIN? +NUMBER OF VARIABLES ? 2 +NUMBER OF CONSTRAINTS ? 1 +NAME OF VARIABLE 1 IS ? X +NAME OF VARIABLE 2 IS ? Y + +CONSTRAINT 1 + +COEFFICIENT FOR VARIABLE 1 X IS ? 1.234 +COEFFICIENT FOR VARIABLE 2 Y IS ? 5.6789 +ENTER 1 IF <= CONSTRAINT, -1 IF >= CONSTRAINT ? 1 +ENTER AMOUNT FOR CONSTRAINT ? 9.876 + + + + +PRESS Y IF A MINIMIZATION PROBLEM, OTHERWISE N? N + +ENTER COEFFICIENTS FOR OBJECTIVE FUNCTION + +COEFFICIENT FOR VARIABLE 1 X IS ? 1.111 +COEFFICIENT FOR VARIABLE 2 Y IS ? 2.222 +VALUE OF OBJECTIVE FUNCTION = 0 + +AMOUNT OF X I.E. X( 1 ) = 0 +AMOUNT OF Y I.E. X( 2 ) = 0 diff --git a/BP100/SIMPLEX.dif b/BP100/SIMPLEX.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SIMPLEX.run b/BP100/SIMPLEX.run new file mode 100644 index 0000000..4f64649 --- /dev/null +++ b/BP100/SIMPLEX.run @@ -0,0 +1,40 @@ + LINEAR PROGRAMMING + +LINEAR PROGRAMMING IS A MATHEMATICAL TOOL DESIGNED TO HELP +MANAGEMENT TO MAKE OPTIMUM USE OF COMPETING RESOURCES. +IT IS A VERY POPULAR TECHNIQUE AND INVOLVES LINEAR INEQUALITIES +CALLED CONSTRAINTS AND A LINEAR OBJECTIVE FUNCTION WHICH +WE TRY TO MAXIMIZE OR MINIMIZE. THE INTERESTED USER MAY +CONSULT ANY INTRODUCTORY TEXT IN FINITE MATHEMATICS FOR +ADDITIONAL INFORMATION. + +THE NUMBERS OF VARIABLES AND CONSTRAINTS ARE ONLY +LIMITED BY AVAILABLE MEMORY BUT MANY VARIABLE PROBLEMS +MAY TAKE A LONG TIME TO RUN. + +PRESS ENTER TO BEGIN? +NUMBER OF VARIABLES ? 2 +NUMBER OF CONSTRAINTS ? 1 +NAME OF VARIABLE 1 IS ? X +NAME OF VARIABLE 2 IS ? Y + +CONSTRAINT 1 + +COEFFICIENT FOR VARIABLE 1 X IS ? 1.234 +COEFFICIENT FOR VARIABLE 2 Y IS ? 5.6789 +ENTER 1 IF <= CONSTRAINT, -1 IF >= CONSTRAINT ? 1 +ENTER AMOUNT FOR CONSTRAINT ? 9.876 + + + + +PRESS Y IF A MINIMIZATION PROBLEM, OTHERWISE N? N + +ENTER COEFFICIENTS FOR OBJECTIVE FUNCTION + +COEFFICIENT FOR VARIABLE 1 X IS ? 1.111 +COEFFICIENT FOR VARIABLE 2 Y IS ? 2.222 +VALUE OF OBJECTIVE FUNCTION = 0 + +AMOUNT OF X I.E. X( 1 ) = 0 +AMOUNT OF Y I.E. X( 2 ) = 0 diff --git a/BP100/SINKFUND.80 b/BP100/SINKFUND.80 new file mode 100644 index 0000000..14c350a --- /dev/null +++ b/BP100/SINKFUND.80 @@ -0,0 +1,95 @@ + SINKING FUNDS + +A SINKING FUND IS AN ANNUITY WHICH MUST ACCUMULATE TO SOME +FIXED AMOUNT BY A GIVEN TIME IN THE FUTURE. THIS MEANS THAT +A FIXED AMOUNT WILL BE PAID INTO A FUND EVERY PERIOD AND +EARN INTEREST. AT THE END OF THE LAST PERIOD THE SUM OF +THE PAYMENTS AND THE INTEREST WILL JUST EQUAL THE PREDE-FIXED +AMOUNT. IN THIS PROGRAM WE MUST INPUT THE FUTURE DESIRED +AMOUNT(FUTURE VALUE), THE INTEREST RATE AND THE NUMBER +PAYMENTS NEEDED. THE PROGRAM WILL COMPUTE THE PAYMENT AND +WILL PRINT UP A TABLE SHOWING HOW THE FUND GROWS. + +PRESS ENTER TO BEGIN? + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +ENTER EACH OF THE FOLLOWING. + +FUTURE VALUE ? 345678 +NUMBER OF PAYMENTS ? 48 +ANNUAL INTEREST RATE(%) ? 5.76 +SINKING FUND FOR 48 PAYMENTS AT INTEREST RATE OF .48 % PER PERIOD +NUMBER OF PAYMENTS = 48 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 5.76 +PAYMENT = 6421.02 + +PRESS ENTER FOR TO PRINT TABLE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 1 6421.02 0.00 6421.02 6421.02 + 2 6421.02 30.82 6451.84 12872.86 + 3 6421.02 61.79 6482.81 19355.67 + 4 6421.02 92.91 6513.93 25869.60 + 5 6421.02 124.17 6545.20 32414.80 + 6 6421.02 155.59 6576.61 38991.41 + 7 6421.02 187.16 6608.18 45599.59 + 8 6421.02 218.88 6639.90 52239.49 + 9 6421.02 250.75 6671.77 58911.26 + 10 6421.02 282.77 6703.80 65615.06 + 11 6421.02 314.95 6735.97 72351.03 + 12 6421.02 347.28 6768.31 79119.34 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 13 6421.02 379.77 6800.79 85920.13 + 14 6421.02 412.42 6833.44 92753.57 + 15 6421.02 445.22 6866.24 99619.81 + 16 6421.02 478.18 6899.20 106519.01 + 17 6421.02 511.29 6932.31 113451.32 + 18 6421.02 544.57 6965.59 120416.91 + 19 6421.02 578.00 6999.02 127415.93 + 20 6421.02 611.60 7032.62 134448.55 + 21 6421.02 645.35 7066.37 141514.92 + 22 6421.02 679.27 7100.29 148615.21 + 23 6421.02 713.35 7134.37 155749.59 + 24 6421.02 747.60 7168.62 162918.21 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 25 6421.02 782.01 7203.03 170121.24 + 26 6421.02 816.58 7237.60 177358.84 + 27 6421.02 851.32 7272.34 184631.18 + 28 6421.02 886.23 7307.25 191938.43 + 29 6421.02 921.30 7342.33 199280.76 + 30 6421.02 956.55 7377.57 206658.33 + 31 6421.02 991.96 7412.98 214071.31 + 32 6421.02 1027.54 7448.56 221519.87 + 33 6421.02 1063.30 7484.32 229004.19 + 34 6421.02 1099.22 7520.24 236524.43 + 35 6421.02 1135.32 7556.34 244080.77 + 36 6421.02 1171.59 7592.61 251673.38 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 37 6421.02 1208.03 7629.05 259302.43 + 38 6421.02 1244.65 7665.67 266968.11 + 39 6421.02 1281.45 7702.47 274670.58 + 40 6421.02 1318.42 7739.44 282410.02 + 41 6421.02 1355.57 7776.59 290186.61 + 42 6421.02 1392.90 7813.92 298000.52 + 43 6421.02 1430.40 7851.42 305851.95 + 44 6421.02 1468.09 7889.11 313741.06 + 45 6421.02 1505.96 7926.98 321668.04 + 46 6421.02 1544.01 7965.03 329633.06 + 47 6421.02 1582.24 8003.26 337636.32 + 48 6421.02 1620.65 8041.68 345678.00 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + TOTALS 308209.03 37468.97 345678.00 + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER FOR MORE? -1 diff --git a/BP100/SINKFUND.BAS b/BP100/SINKFUND.BAS new file mode 100644 index 0000000..3fe6b11 --- /dev/null +++ b/BP100/SINKFUND.BAS @@ -0,0 +1,89 @@ +1 REM SINKFUND +5 CLEAR 1000 +9 CLS +10 PRINT TAB(15); "SINKING FUNDS":PRINT +20 PRINT "A SINKING FUND IS AN ANNUITY WHICH MUST ACCUMULATE TO SOME +25 PRINT "FIXED AMOUNT BY A GIVEN TIME IN THE FUTURE. THIS MEANS THAT +30 PRINT "A FIXED AMOUNT WILL BE PAID INTO A FUND EVERY PERIOD AND +35 PRINT "EARN INTEREST. AT THE END OF THE LAST PERIOD THE SUM OF +40 PRINT "THE PAYMENTS AND THE INTEREST WILL JUST EQUAL THE PREDE-FIXED +45 PRINT "AMOUNT. IN THIS PROGRAM WE MUST INPUT THE FUTURE DESIRED +50 PRINT "AMOUNT(FUTURE VALUE), THE INTEREST RATE AND THE NUMBER +55 PRINT "PAYMENTS NEEDED. THE PROGRAM WILL COMPUTE THE PAYMENT AND +60 PRINT "WILL PRINT UP A TABLE SHOWING HOW THE FUND GROWS." +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +250 CLS +255 CLEAR 1000 +260 PRINT :INPUT "IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)";ZI$ +270 IF ZI$<>"P" AND ZI$<>"A" THEN PRINT "INPUT ERROR":GOTO 260 +280 IF ZI$="A" THEN PRINT :INPUT "NUMBER OF PAYMENTS PER YEAR";ZN +290 REM"ORDINARY ANNUITY-FUTURE VALUE TYPE PROBLEM +300 CLS +310 GOSUB 350 +320 I=I/100 +330 PMT=FV*I/((1+I)[N-1) +340 GOTO 420:REM PRINTOUT +350 REM INPUT SBR +360 CLS:PRINT "ENTER EACH OF THE FOLLOWING.":PRINT +370 INPUT "FUTURE VALUE ";FV +380 INPUT "NUMBER OF PAYMENTS ";N +390 IF ZI$="A" THEN INPUT "ANNUAL INTEREST RATE(%) ";I:I=I/ZN:GOTO 410 +400 INPUT "INTEREST RATE PER PERIOD(%)";I +410 RETURN +420 REM PRINT OUT +430 CLS +440 PRINT "SINKING FUND FOR";N;"PAYMENTS AT INTEREST RATE OF";100*I;"% PER PERIOD" +450 PRINT "NUMBER OF PAYMENTS =";N +460 IF ZI$="A" THEN PRINT " CONSISTING OF ";ZN;" PAYMENTS ANNUALLY." +470 IF ZI$="A" THEN PRINT "ANNUAL INTEREST RATE =";100*I*ZN:GOTO 490 +480 PRINT "INT. RATE PER PERIOD=";100*I +490 PRINT "PAYMENT =";PMT +500 PRINT :INPUT "PRESS ENTER FOR TO PRINT TABLE";Z9 +510 CLS +520 PP(1)=0:QQ(1)=0:D1F(1)=0:REM SUM OF PAYMENTS,INT,&INCR. IN FUND +530 F$(1)="END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND" +540 F$(2)=" ### #######.## ######.## #######.## #######.##" +550 F$(3)=" TOTALS #######.## ######.## #######.## #######.##" +560 PRINT F$(1):PRINT +565 A=0 +570 FOR J= 1 TO N +580 TT=A*I:A=A+TT+PMT:D1F=TT+PMT +590 REM A=AMT IN FUND:TT=INTEREST ON FUND:DIF=INCR IN FUND +600 PRINT USING F$(2);J,PMT,TT,D1F,A +610 IF J/12=INT(J/12) THEN GOSUB 670:CLS:PRINT F$(1):PRINT +620 PP(1)=PP(1)+PMT:QQ(1)=QQ(1)+TT:D1F(1)=D1F(1)+D1F +630 NEXT J +640 PRINT USING F$(3);PP(1),QQ(1),D1F(1) +650 PRINT :INPUT "IS LINE PRINTER OUTPUT DESIRED(Y/N)";Z2$ +652 IF Z2$="Y" THEN GOTO 700 +655 IF Z2$="N" THEN GOTO 250 +657 PRINT "INPUT ERROR":PRINT :GOTO 650 +660 GOTO 250 +670 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN +700 REM PRINT OUT +710 CLS +720 LPRINT "SINKING FUND FOR";N;"PAYMENTS AT INTEREST RATE OF";100*I;"% PER PERIOD" +730 LPRINT "NUMBER OF PAYMENTS =";N +740 IF ZI$="A" THEN LPRINT " CONSISTING OF ";ZN;" PAYMENTS ANNUALLY." +750 IF ZI$="A" THEN LPRINT "ANNUAL INTEREST RATE =";100*I*ZN:GOTO 770 +760 LPRINT "INT. RATE PER PERIOD=";100*I +770 LPRINT "PAYMENT =";PMT +780 LPRINT " ":LPRINT " ":LPRINT " " +800 PP(1)=0:QQ(1)=0:D1F(1)=0:REM SUM OF PAYMENTS,INT,&INCR. IN FUND +810 F$(1)="END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND" +820 F$(2)=" ### #######.## ######.## #######.## #######.##" +830 F$(3)=" TOTALS #######.## ######.## #######.## #######.##" +840 LPRINT F$(1):LPRINT " " +845 A=0 +850 FOR J= 1 TO N +860 TT=A*I:A=A+TT+PMT:D1F=TT+PMT +870 REM A=AMT IN FUND:TT=INTEREST ON FUND:DIF=INCR IN FUND +880 LPRINT USING F$(2);J,PMT,TT,D1F,A +900 PP(1)=PP(1)+PMT:QQ(1)=QQ(1)+TT:D1F(1)=D1F(1)+D1F +910 NEXT J +920 LPRINT USING F$(3);PP(1),QQ(1),D1F(1) +925 INPUT "PRESS ENTER FOR MORE";Z9$ +927 IF Z9$ = "-1" THEN END +928 GOTO 250 +930 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/SINKFUND.INP b/BP100/SINKFUND.INP new file mode 100644 index 0000000..529612a --- /dev/null +++ b/BP100/SINKFUND.INP @@ -0,0 +1,13 @@ + +A +12 +345678 +48 +5.76 + + + + + +Y +-1 diff --git a/BP100/SINKFUND.OUT b/BP100/SINKFUND.OUT new file mode 100644 index 0000000..0cb71ef --- /dev/null +++ b/BP100/SINKFUND.OUT @@ -0,0 +1,95 @@ + SINKING FUNDS + +A SINKING FUND IS AN ANNUITY WHICH MUST ACCUMULATE TO SOME +FIXED AMOUNT BY A GIVEN TIME IN THE FUTURE. THIS MEANS THAT +A FIXED AMOUNT WILL BE PAID INTO A FUND EVERY PERIOD AND +EARN INTEREST. AT THE END OF THE LAST PERIOD THE SUM OF +THE PAYMENTS AND THE INTEREST WILL JUST EQUAL THE PREDE-FIXED +AMOUNT. IN THIS PROGRAM WE MUST INPUT THE FUTURE DESIRED +AMOUNT(FUTURE VALUE), THE INTEREST RATE AND THE NUMBER +PAYMENTS NEEDED. THE PROGRAM WILL COMPUTE THE PAYMENT AND +WILL PRINT UP A TABLE SHOWING HOW THE FUND GROWS. + +PRESS ENTER TO BEGIN? + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +ENTER EACH OF THE FOLLOWING. + +FUTURE VALUE ? 345678 +NUMBER OF PAYMENTS ? 48 +ANNUAL INTEREST RATE(%) ? 5.76 +SINKING FUND FOR 48 PAYMENTS AT INTEREST RATE OF .48 % PER PERIOD +NUMBER OF PAYMENTS = 48 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 5.76 +PAYMENT = 6421.02 + +PRESS ENTER FOR TO PRINT TABLE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 1 6421.02 0.00 6421.02 6421.02 + 2 6421.02 30.82 6451.84 12872.86 + 3 6421.02 61.79 6482.81 19355.67 + 4 6421.02 92.91 6513.93 25869.60 + 5 6421.02 124.17 6545.20 32414.80 + 6 6421.02 155.59 6576.61 38991.41 + 7 6421.02 187.16 6608.18 45599.59 + 8 6421.02 218.88 6639.90 52239.49 + 9 6421.02 250.75 6671.77 58911.26 + 10 6421.02 282.77 6703.80 65615.06 + 11 6421.02 314.95 6735.97 72351.03 + 12 6421.02 347.28 6768.31 79119.34 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 13 6421.02 379.77 6800.79 85920.13 + 14 6421.02 412.42 6833.44 92753.57 + 15 6421.02 445.22 6866.24 99619.81 + 16 6421.02 478.18 6899.20 106519.01 + 17 6421.02 511.29 6932.31 113451.32 + 18 6421.02 544.57 6965.59 120416.91 + 19 6421.02 578.00 6999.02 127415.93 + 20 6421.02 611.60 7032.62 134448.55 + 21 6421.02 645.35 7066.37 141514.92 + 22 6421.02 679.27 7100.29 148615.21 + 23 6421.02 713.35 7134.37 155749.59 + 24 6421.02 747.60 7168.62 162918.21 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 25 6421.02 782.01 7203.03 170121.24 + 26 6421.02 816.58 7237.60 177358.84 + 27 6421.02 851.32 7272.34 184631.18 + 28 6421.02 886.23 7307.25 191938.43 + 29 6421.02 921.30 7342.33 199280.76 + 30 6421.02 956.55 7377.57 206658.33 + 31 6421.02 991.96 7412.98 214071.31 + 32 6421.02 1027.54 7448.56 221519.87 + 33 6421.02 1063.30 7484.32 229004.19 + 34 6421.02 1099.22 7520.24 236524.43 + 35 6421.02 1135.32 7556.34 244080.77 + 36 6421.02 1171.59 7592.61 251673.38 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 37 6421.02 1208.03 7629.05 259302.43 + 38 6421.02 1244.65 7665.67 266968.11 + 39 6421.02 1281.45 7702.47 274670.58 + 40 6421.02 1318.42 7739.44 282410.02 + 41 6421.02 1355.57 7776.59 290186.61 + 42 6421.02 1392.90 7813.92 298000.52 + 43 6421.02 1430.40 7851.42 305851.95 + 44 6421.02 1468.09 7889.11 313741.06 + 45 6421.02 1505.96 7926.98 321668.04 + 46 6421.02 1544.01 7965.03 329633.06 + 47 6421.02 1582.24 8003.26 337636.32 + 48 6421.02 1620.65 8041.68 345678.00 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + TOTALS 308209.03 37468.97 345678.00 + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER FOR MORE? -1 diff --git a/BP100/SINKFUND.dif b/BP100/SINKFUND.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SINKFUND.run b/BP100/SINKFUND.run new file mode 100644 index 0000000..14c350a --- /dev/null +++ b/BP100/SINKFUND.run @@ -0,0 +1,95 @@ + SINKING FUNDS + +A SINKING FUND IS AN ANNUITY WHICH MUST ACCUMULATE TO SOME +FIXED AMOUNT BY A GIVEN TIME IN THE FUTURE. THIS MEANS THAT +A FIXED AMOUNT WILL BE PAID INTO A FUND EVERY PERIOD AND +EARN INTEREST. AT THE END OF THE LAST PERIOD THE SUM OF +THE PAYMENTS AND THE INTEREST WILL JUST EQUAL THE PREDE-FIXED +AMOUNT. IN THIS PROGRAM WE MUST INPUT THE FUTURE DESIRED +AMOUNT(FUTURE VALUE), THE INTEREST RATE AND THE NUMBER +PAYMENTS NEEDED. THE PROGRAM WILL COMPUTE THE PAYMENT AND +WILL PRINT UP A TABLE SHOWING HOW THE FUND GROWS. + +PRESS ENTER TO BEGIN? + +IS INTEREST RATE QUOTED PER PERIOD(P) OR ANNUALLY(A)? A + +NUMBER OF PAYMENTS PER YEAR? 12 +ENTER EACH OF THE FOLLOWING. + +FUTURE VALUE ? 345678 +NUMBER OF PAYMENTS ? 48 +ANNUAL INTEREST RATE(%) ? 5.76 +SINKING FUND FOR 48 PAYMENTS AT INTEREST RATE OF .48 % PER PERIOD +NUMBER OF PAYMENTS = 48 + CONSISTING OF 12 PAYMENTS ANNUALLY. +ANNUAL INTEREST RATE = 5.76 +PAYMENT = 6421.02 + +PRESS ENTER FOR TO PRINT TABLE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 1 6421.02 0.00 6421.02 6421.02 + 2 6421.02 30.82 6451.84 12872.86 + 3 6421.02 61.79 6482.81 19355.67 + 4 6421.02 92.91 6513.93 25869.60 + 5 6421.02 124.17 6545.20 32414.80 + 6 6421.02 155.59 6576.61 38991.41 + 7 6421.02 187.16 6608.18 45599.59 + 8 6421.02 218.88 6639.90 52239.49 + 9 6421.02 250.75 6671.77 58911.26 + 10 6421.02 282.77 6703.80 65615.06 + 11 6421.02 314.95 6735.97 72351.03 + 12 6421.02 347.28 6768.31 79119.34 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 13 6421.02 379.77 6800.79 85920.13 + 14 6421.02 412.42 6833.44 92753.57 + 15 6421.02 445.22 6866.24 99619.81 + 16 6421.02 478.18 6899.20 106519.01 + 17 6421.02 511.29 6932.31 113451.32 + 18 6421.02 544.57 6965.59 120416.91 + 19 6421.02 578.00 6999.02 127415.93 + 20 6421.02 611.60 7032.62 134448.55 + 21 6421.02 645.35 7066.37 141514.92 + 22 6421.02 679.27 7100.29 148615.21 + 23 6421.02 713.35 7134.37 155749.59 + 24 6421.02 747.60 7168.62 162918.21 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 25 6421.02 782.01 7203.03 170121.24 + 26 6421.02 816.58 7237.60 177358.84 + 27 6421.02 851.32 7272.34 184631.18 + 28 6421.02 886.23 7307.25 191938.43 + 29 6421.02 921.30 7342.33 199280.76 + 30 6421.02 956.55 7377.57 206658.33 + 31 6421.02 991.96 7412.98 214071.31 + 32 6421.02 1027.54 7448.56 221519.87 + 33 6421.02 1063.30 7484.32 229004.19 + 34 6421.02 1099.22 7520.24 236524.43 + 35 6421.02 1135.32 7556.34 244080.77 + 36 6421.02 1171.59 7592.61 251673.38 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + 37 6421.02 1208.03 7629.05 259302.43 + 38 6421.02 1244.65 7665.67 266968.11 + 39 6421.02 1281.45 7702.47 274670.58 + 40 6421.02 1318.42 7739.44 282410.02 + 41 6421.02 1355.57 7776.59 290186.61 + 42 6421.02 1392.90 7813.92 298000.52 + 43 6421.02 1430.40 7851.42 305851.95 + 44 6421.02 1468.09 7889.11 313741.06 + 45 6421.02 1505.96 7926.98 321668.04 + 46 6421.02 1544.01 7965.03 329633.06 + 47 6421.02 1582.24 8003.26 337636.32 + 48 6421.02 1620.65 8041.68 345678.00 +PRESS ENTER TO CONTINUE? +END PERIOD DEPOSIT INT ON FUND INCR. IN FUND AMT IN FUND + + TOTALS 308209.03 37468.97 345678.00 + +IS LINE PRINTER OUTPUT DESIRED(Y/N)? Y +PRESS ENTER FOR MORE? -1 diff --git a/BP100/SORT3.80 b/BP100/SORT3.80 new file mode 100644 index 0000000..1bacbca --- /dev/null +++ b/BP100/SORT3.80 @@ -0,0 +1,35 @@ + SHELL SORT ROUTINE + +THE INPUT OF THIS PROGRAM IS A LIST OF WORDS.(OR POS NOS.). +THE OUTPUT IS THE LIST IN ALPHABETICAL (OR NUMERICAL)ORDER. +WHEN INPUTTING THE DATA DO NOT IMBED COMMAS WITHIN INPUT +WORDS OR NUMBERS OR USE NEGATIVE NUMBERS. +THE SHELL SORT IS GENERALLY MORE EFFICIENT THAN THE EASIER TO +UNDERSTAND BUBBLE SORT. + THERE IS AN OPTION TO PRINT OUT BOTH THE ORIGINAL AND THE +SORTED LISTS ON THE LINE PRINTER. + +PRESS ENTER TO BEGIN? +WHAT IS THE MAXIMUM NUMBER OF ITEMS YOU WISH TO SORT? 9 + +DO YOU WANT OUTPUT TO GO TO THE LINE PRINTER(Y/N)? Y +PRESS 1 FOR ALPHABETIC DATA, 2 FOR NUMERIC DATA? 1 +INPUT ITEM 1 (99999 TO END)? XXX +INPUT ITEM 2 (99999 TO END)? NNN +INPUT ITEM 3 (99999 TO END)? BBB +INPUT ITEM 4 (99999 TO END)? 99999 +TO PRINT ORIGINAL LIST PRESS ENTER? +PRESS ENTER WHEN PRINTER READY? + ITEM NUMBER ITEM VAL. + 1 XXX + 2 NNN + 3 BBB +PRESS ENTER TO CONTINUE? +SORTING - SORTING - SORTING +TO PRINT SORTED LIST PRESS ENTER? +PRESS ENTER WHEN PRINTER READY? + ITEM NUMBER ITEM VAL. + 1 BBB + 2 NNN + 3 XXX +PRESS ENTER TO CONTINUE? diff --git a/BP100/SORT3.BAS b/BP100/SORT3.BAS new file mode 100644 index 0000000..1224af2 --- /dev/null +++ b/BP100/SORT3.BAS @@ -0,0 +1,90 @@ +1 REM SORT3 +5 CLS +10000 PRINT " SHELL SORT ROUTINE" +10020 PRINT +10030 PRINT "THE INPUT OF THIS PROGRAM IS A LIST OF WORDS.(OR POS NOS.). +10040 PRINT "THE OUTPUT IS THE LIST IN ALPHABETICAL (OR NUMERICAL)ORDER. +10050 PRINT "WHEN INPUTTING THE DATA DO NOT IMBED COMMAS WITHIN INPUT +10060 PRINT "WORDS OR NUMBERS OR USE NEGATIVE NUMBERS." +10070 PRINT "THE SHELL SORT IS GENERALLY MORE EFFICIENT THAN THE EASIER TO +10080 PRINT "UNDERSTAND BUBBLE SORT. +10082 PRINT " THERE IS AN OPTION TO PRINT OUT BOTH THE ORIGINAL AND THE +10084 PRINT "SORTED LISTS ON THE LINE PRINTER." +10085 PRINT +10090 INPUT "PRESS ENTER TO BEGIN";Z9 +10100 CLS +10105 CLEAR 2000 +10110 INPUT "WHAT IS THE MAXIMUM NUMBER OF ITEMS YOU WISH TO SORT";NM +10130 DIM A$(NM) +10140 PRINT :INPUT "DO YOU WANT OUTPUT TO GO TO THE LINE PRINTER(Y/N)";Z2$ +10145 IF Z2$<>"Y" AND Z2$<>"N" THEN PRINT "INPUT ERROR":GOTO 10140 +10150 INPUT "PRESS 1 FOR ALPHABETIC DATA, 2 FOR NUMERIC DATA";AN +10160 IF AN=1 OR AN = 2 THEN GOTO 10200 +10170 PRINT "INPUT ERROR. TRY AGAIN." +10180 FOR I= 1 TO 300:NEXT I +10190 GOTO 10150 +10200 GOSUB 10500 :REM INPUT SUBROUTINE +10210 GOSUB 10600 :REM PRINT ORIGINAL LIST +10220 GOSUB 10700 :REM SORTING SUBROUTINE +10230 GOSUB 10800 :REM PRINT SORTED LIST +10250 END +10500 REM INPUT SUBROUTINE +10510 I=0 +10520 PRINT "INPUT ITEM";I+1;" (99999 TO END)";:INPUT A$(I+1) +10530 IF A$(I+1)="99999" THEN GOTO 10590 +10540 I=I+1 +10550 GOTO 10520 +10590 RETURN +10600 REM PRINT ORIGINAL LIST 14 AT A TIME +10605 INPUT "TO PRINT ORIGINAL LIST PRESS ENTER";Z9 +10607 IF Z2$="Y" THEN INPUT "PRESS ENTER WHEN PRINTER READY";Z9$: LPRINT TAB(15); "ORIGINAL LIST": LPRINT " " +10610 GOSUB 10900:REM PRINT HEADING +10620 FOR L=1 TO I +10630 PRINT USING Z8$;L,A$(L) +10635 IF Z2$="Y" THEN LPRINT USING Z8$;L,A$(L): GOTO 10670 +10640 IF L/14 <>INT(L/14) THEN GOTO 10670 +10650 INPUT "PRESS ENTER FOR MORE OF LISTING";Z9 +10660 GOSUB 10900 +10670 NEXT L +10680 INPUT "PRESS ENTER TO CONTINUE";Z9 +10690 RETURN +10700 REM SORTING SUBROUTINE +10702 AD$="00000000000000000000" +10705 CLS:PRINT @ 320,"SORTING - SORTING - SORTING " +10706 IF AN=1 THEN GOTO 10710 +10707 FOR K=1 TO I:A$(K)=AD$+A$(K):A$(K)=RIGHT$(A$(K),20):NEXT K +10710 S=I +10715 S=INT(S/2) +10720 IF S>=1 THEN GOTO 10730 +10725 GOTO 10790 +10730 FOR K= 1 TO S +10735 FOR L=K TO I-S STEP S +10740 J=L +10745 T$=A$(L+S) +10755 IF T$>=A$(J) THEN GOTO 10775 +10760 A$(J+S)=A$(J) +10765 J=J-S +10770 IF J >= 1 THEN GOTO 10755 +10775 A$(J+S)=T$ +10780 NEXT L +10785 NEXT K +10788 GOTO 10715 +10790 IF AN=1 THEN GOTO 10799 +10792 FOR K= 1 TO I +10794 A=VAL(A$(K)) +10795 A$(K)=STR$(A) +10797 NEXT K +10799 RETURN +10800 REM PRINT SORTED LIST 14 AT A TIME +10805 INPUT "TO PRINT SORTED LIST PRESS ENTER";Z9 +10807 IF Z2$="Y" THEN INPUT "PRESS ENTER WHEN PRINTER READY";Z9$: LPRINT TAB(15); "SORTED LIST": LPRINT " " +10810 GOSUB 10610 +10890 RETURN +10900 REM PRINT HEADING SUBROUTINE +10905 CLS +10910 Z9$ = " ITEM NUMBER ITEM VAL. " +10920 Z8$ = " #### % % +10930 PRINT Z9$ +10940 IF Z2$="Y" THEN LPRINT Z9$:LPRINT " " +10950 RETURN + diff --git a/BP100/SORT3.INP b/BP100/SORT3.INP new file mode 100644 index 0000000..f0c1116 --- /dev/null +++ b/BP100/SORT3.INP @@ -0,0 +1,14 @@ + +9 +Y +1 +XXX +NNN +BBB +99999 + + + + + + diff --git a/BP100/SORT3.OUT b/BP100/SORT3.OUT new file mode 100644 index 0000000..8e6e0d4 --- /dev/null +++ b/BP100/SORT3.OUT @@ -0,0 +1,35 @@ + SHELL SORT ROUTINE + +THE INPUT OF THIS PROGRAM IS A LIST OF WORDS.(OR POS NOS.). +THE OUTPUT IS THE LIST IN ALPHABETICAL (OR NUMERICAL)ORDER. +WHEN INPUTTING THE DATA DO NOT IMBED COMMAS WITHIN INPUT +WORDS OR NUMBERS OR USE NEGATIVE NUMBERS. +THE SHELL SORT IS GENERALLY MORE EFFICIENT THAN THE EASIER TO +UNDERSTAND BUBBLE SORT. + THERE IS AN OPTION TO PRINT OUT BOTH THE ORIGINAL AND THE +SORTED LISTS ON THE LINE PRINTER. + +PRESS ENTER TO BEGIN? +WHAT IS THE MAXIMUM NUMBER OF ITEMS YOU WISH TO SORT? 9 + +DO YOU WANT OUTPUT TO GO TO THE LINE PRINTER(Y/N)? Y +PRESS 1 FOR ALPHABETIC DATA, 2 FOR NUMERIC DATA? 1 +INPUT ITEM 1 (99999 TO END)? XXX +INPUT ITEM 2 (99999 TO END)? NNN +INPUT ITEM 3 (99999 TO END)? BBB +INPUT ITEM 4 (99999 TO END)? 99999 +TO PRINT ORIGINAL LIST PRESS ENTER? +PRESS ENTER WHEN PRINTER READY? + ITEM NUMBER ITEM VAL. + 1 XXX + 2 NNN + 3 BBB +PRESS ENTER TO CONTINUE? +SORTING - SORTING - SORTING +TO PRINT SORTED LIST PRESS ENTER? +PRESS ENTER WHEN PRINTER READY? + ITEM NUMBER ITEM VAL. + 1 BBB + 2 NNN + 3 XXX +PRESS ENTER TO CONTINUE? diff --git a/BP100/SORT3.dif b/BP100/SORT3.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/SORT3.run b/BP100/SORT3.run new file mode 100644 index 0000000..1bacbca --- /dev/null +++ b/BP100/SORT3.run @@ -0,0 +1,35 @@ + SHELL SORT ROUTINE + +THE INPUT OF THIS PROGRAM IS A LIST OF WORDS.(OR POS NOS.). +THE OUTPUT IS THE LIST IN ALPHABETICAL (OR NUMERICAL)ORDER. +WHEN INPUTTING THE DATA DO NOT IMBED COMMAS WITHIN INPUT +WORDS OR NUMBERS OR USE NEGATIVE NUMBERS. +THE SHELL SORT IS GENERALLY MORE EFFICIENT THAN THE EASIER TO +UNDERSTAND BUBBLE SORT. + THERE IS AN OPTION TO PRINT OUT BOTH THE ORIGINAL AND THE +SORTED LISTS ON THE LINE PRINTER. + +PRESS ENTER TO BEGIN? +WHAT IS THE MAXIMUM NUMBER OF ITEMS YOU WISH TO SORT? 9 + +DO YOU WANT OUTPUT TO GO TO THE LINE PRINTER(Y/N)? Y +PRESS 1 FOR ALPHABETIC DATA, 2 FOR NUMERIC DATA? 1 +INPUT ITEM 1 (99999 TO END)? XXX +INPUT ITEM 2 (99999 TO END)? NNN +INPUT ITEM 3 (99999 TO END)? BBB +INPUT ITEM 4 (99999 TO END)? 99999 +TO PRINT ORIGINAL LIST PRESS ENTER? +PRESS ENTER WHEN PRINTER READY? + ITEM NUMBER ITEM VAL. + 1 XXX + 2 NNN + 3 BBB +PRESS ENTER TO CONTINUE? +SORTING - SORTING - SORTING +TO PRINT SORTED LIST PRESS ENTER? +PRESS ENTER WHEN PRINTER READY? + ITEM NUMBER ITEM VAL. + 1 BBB + 2 NNN + 3 XXX +PRESS ENTER TO CONTINUE? diff --git a/BP100/STOCVAL1.80 b/BP100/STOCVAL1.80 new file mode 100644 index 0000000..6a20b66 --- /dev/null +++ b/BP100/STOCVAL1.80 @@ -0,0 +1,21 @@ + VALUE OF A SHARE OF STOCK + +wHEN AN INVESTOR BUYS A STOCK HE HOPES FOR SOME FUTURE +RETURN, EITHER THROUGH DIVIDENDS OR CAPITAL GAINS. +HOWEVER STOCKHOLDERS IN GENERAL,OVER THE LONG HAUL, +ONLY GET CASH DIVIDENDS OUT OF THE STOCK. MANY WHO SUBSCRIBE +TO THE PRECEDIMG BELIEVE THAT ANY STOCK VALUATION MODEL +SHOULD CONSIDER ONLY DIVIDENDS.SUCH IS THE MODEL OF THIS +PROGRAM. WE SHALL ASSUME THAT WE KNOW THE PRICE OF A SHARE +OF A CERTAIN STOCK,THE PRESENT ANNUAL CASH DIVIDEND, AND +AN EXPECTED GROWTH RATE FOR DIVIDENDS WHICH WE ASSUME WILL +LAST INDEFINITELY. FROM THIS DATA WE GET OUR EXPECTED +RATE OF RETURN ON INVESTMENT FOR THE STOCK. +PRESS ENTER TO BEGIN? +THE PRESENT PRICE OF 1 SHARE OF THE STOCK = ? 12.34 +THE PRESENT ANNUAL CASH DIVIDEND = ? 2.98 +EXPECTED RATE OF DIVIDEND GROWTH(IN %) = ? 3.45 + +EXPECTED LONG RUN RATE OF RETURN = 28.4323 % + +PRESS ENTER FOR MORE STOCKS? -1 diff --git a/BP100/STOCVAL1.BAS b/BP100/STOCVAL1.BAS new file mode 100644 index 0000000..82a0e80 --- /dev/null +++ b/BP100/STOCVAL1.BAS @@ -0,0 +1,27 @@ +5 CLS +10 PRINT" VALUE OF A SHARE OF STOCK" +20 PRINT +30 PRINT"wHEN AN INVESTOR BUYS A STOCK HE HOPES FOR SOME FUTURE +40 PRINT"RETURN, EITHER THROUGH DIVIDENDS OR CAPITAL GAINS. +50 PRINT"HOWEVER STOCKHOLDERS IN GENERAL,OVER THE LONG HAUL, +60 PRINT"ONLY GET CASH DIVIDENDS OUT OF THE STOCK. MANY WHO SUBSCRIBE +65 PRINT"TO THE PRECEDIMG BELIEVE THAT ANY STOCK VALUATION MODEL +70 PRINT"SHOULD CONSIDER ONLY DIVIDENDS.SUCH IS THE MODEL OF THIS +80 PRINT"PROGRAM. WE SHALL ASSUME THAT WE KNOW THE PRICE OF A SHARE +85 PRINT"OF A CERTAIN STOCK,THE PRESENT ANNUAL CASH DIVIDEND, AND +90 PRINT"AN EXPECTED GROWTH RATE FOR DIVIDENDS WHICH WE ASSUME WILL +93 PRINT"LAST INDEFINITELY. FROM THIS DATA WE GET OUR EXPECTED +95 PRINT"RATE OF RETURN ON INVESTMENT FOR THE STOCK. +98 INPUT "PRESS ENTER TO BEGIN";Z9 +100 CLS +110 INPUT"THE PRESENT PRICE OF 1 SHARE OF THE STOCK = ";P +120 INPUT"THE PRESENT ANNUAL CASH DIVIDEND = ";D0 +130 INPUT"EXPECTED RATE OF DIVIDEND GROWTH(IN %) = ";G +140 G=G/100 +150 R= D0*(1+G)/P+G +160 PRINT +170 PRINT "EXPECTED LONG RUN RATE OF RETURN = ";100*R;"%" +180 PRINT +190 INPUT "PRESS ENTER FOR MORE STOCKS";Z9 +192 IF Z9 = -1 THEN END +195 GOTO 100 diff --git a/BP100/STOCVAL1.INP b/BP100/STOCVAL1.INP new file mode 100644 index 0000000..a224686 --- /dev/null +++ b/BP100/STOCVAL1.INP @@ -0,0 +1,5 @@ + +12.34 +2.98 +3.45 +-1 diff --git a/BP100/STOCVAL1.OUT b/BP100/STOCVAL1.OUT new file mode 100644 index 0000000..e549c33 --- /dev/null +++ b/BP100/STOCVAL1.OUT @@ -0,0 +1,21 @@ + VALUE OF A SHARE OF STOCK + +wHEN AN INVESTOR BUYS A STOCK HE HOPES FOR SOME FUTURE +RETURN, EITHER THROUGH DIVIDENDS OR CAPITAL GAINS. +HOWEVER STOCKHOLDERS IN GENERAL,OVER THE LONG HAUL, +ONLY GET CASH DIVIDENDS OUT OF THE STOCK. MANY WHO SUBSCRIBE +TO THE PRECEDIMG BELIEVE THAT ANY STOCK VALUATION MODEL +SHOULD CONSIDER ONLY DIVIDENDS.SUCH IS THE MODEL OF THIS +PROGRAM. WE SHALL ASSUME THAT WE KNOW THE PRICE OF A SHARE +OF A CERTAIN STOCK,THE PRESENT ANNUAL CASH DIVIDEND, AND +AN EXPECTED GROWTH RATE FOR DIVIDENDS WHICH WE ASSUME WILL +LAST INDEFINITELY. FROM THIS DATA WE GET OUR EXPECTED +RATE OF RETURN ON INVESTMENT FOR THE STOCK. +PRESS ENTER TO BEGIN? +THE PRESENT PRICE OF 1 SHARE OF THE STOCK = ? 12.34 +THE PRESENT ANNUAL CASH DIVIDEND = ? 2.98 +EXPECTED RATE OF DIVIDEND GROWTH(IN %) = ? 3.45 + +EXPECTED LONG RUN RATE OF RETURN = 28.4323 % + +PRESS ENTER FOR MORE STOCKS? -1 diff --git a/BP100/STOCVAL1.dif b/BP100/STOCVAL1.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/STOCVAL1.run b/BP100/STOCVAL1.run new file mode 100644 index 0000000..6a20b66 --- /dev/null +++ b/BP100/STOCVAL1.run @@ -0,0 +1,21 @@ + VALUE OF A SHARE OF STOCK + +wHEN AN INVESTOR BUYS A STOCK HE HOPES FOR SOME FUTURE +RETURN, EITHER THROUGH DIVIDENDS OR CAPITAL GAINS. +HOWEVER STOCKHOLDERS IN GENERAL,OVER THE LONG HAUL, +ONLY GET CASH DIVIDENDS OUT OF THE STOCK. MANY WHO SUBSCRIBE +TO THE PRECEDIMG BELIEVE THAT ANY STOCK VALUATION MODEL +SHOULD CONSIDER ONLY DIVIDENDS.SUCH IS THE MODEL OF THIS +PROGRAM. WE SHALL ASSUME THAT WE KNOW THE PRICE OF A SHARE +OF A CERTAIN STOCK,THE PRESENT ANNUAL CASH DIVIDEND, AND +AN EXPECTED GROWTH RATE FOR DIVIDENDS WHICH WE ASSUME WILL +LAST INDEFINITELY. FROM THIS DATA WE GET OUR EXPECTED +RATE OF RETURN ON INVESTMENT FOR THE STOCK. +PRESS ENTER TO BEGIN? +THE PRESENT PRICE OF 1 SHARE OF THE STOCK = ? 12.34 +THE PRESENT ANNUAL CASH DIVIDEND = ? 2.98 +EXPECTED RATE OF DIVIDEND GROWTH(IN %) = ? 3.45 + +EXPECTED LONG RUN RATE OF RETURN = 28.4323 % + +PRESS ENTER FOR MORE STOCKS? -1 diff --git a/BP100/TAXDEP.80 b/BP100/TAXDEP.80 new file mode 100644 index 0000000..e9f4b14 --- /dev/null +++ b/BP100/TAXDEP.80 @@ -0,0 +1,28 @@ + DEPRECIATION AND INCOME TAX + +AS A BUSINESS EXPENSE HIGH DEPRECIATION LOWERS PROFITS. +HOWEVER, LOWER TAXES ARE A RESULT OF THIS. THUS, HIGHER +DEPRECIATION MEANS HIGHER NET CASH FLOW WHICH WE DEFINE AS +PROFITS BEFORE DEPRECIATION-INCOME TAXES. +IN THIS PROGRAM THE USER INPUTS PROFITS BEFORE DEPRECIATION. +THEN HE INPUTS VARIOUS POSSIBLE DEPRECIATIONS. NET CASH FLOW +FOR EACH IS THEN COMPUTED. TAX SCHEDULES USED ARE: + 17% OF FIRST $25000 + 20% OF NEXT $25000 + 30% OF NEXT $25000 + 40% OF NEXT $25000 + 46% OF ANY AMOUNT OVER $100000 + +PRESS ENTER TO BEGIN? +INPUT PROFITS BEFORE DEPRECIATION? 123456 + +ENTER DEPRECIATION AMOUNT & BELOW + + DEPRECIATION TAXES NET CASH FLOW ! + ? 6543 + $6543.00 $34529.98 $88926.02 + ? 4321 + $4321.00 $35552.10 $87903.90 + ? 9876 + $9876.00 $32996.80 $90459.20 + ? -1 diff --git a/BP100/TAXDEP.BAS b/BP100/TAXDEP.BAS new file mode 100644 index 0000000..7360d7f --- /dev/null +++ b/BP100/TAXDEP.BAS @@ -0,0 +1,36 @@ +5 CLS +10 PRINT TAB(10);"DEPRECIATION AND INCOME TAX":PRINT +30 PRINT "AS A BUSINESS EXPENSE HIGH DEPRECIATION LOWERS PROFITS. +40 PRINT "HOWEVER, LOWER TAXES ARE A RESULT OF THIS. THUS, HIGHER +50 PRINT "DEPRECIATION MEANS HIGHER NET CASH FLOW WHICH WE DEFINE AS +60 PRINT "PROFITS BEFORE DEPRECIATION-INCOME TAXES. +70 PRINT "IN THIS PROGRAM THE USER INPUTS PROFITS BEFORE DEPRECIATION. +75 PRINT "THEN HE INPUTS VARIOUS POSSIBLE DEPRECIATIONS. NET CASH FLOW +77 PRINT "FOR EACH IS THEN COMPUTED. TAX SCHEDULES USED ARE: +80 PRINT " 17% OF FIRST $25000 +82 PRINT " 20% OF NEXT $25000 +84 PRINT " 30% OF NEXT $25000 +86 PRINT " 40% OF NEXT $25000 +88 PRINT " 46% OF ANY AMOUNT OVER $100000 +95 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9 +98 DEFDBL B,D,P,T +100 CLS +110 F$(1)=" DEPRECIATION TAXES NET CASH FLOW !" +120 F$(2)=" $$########.## $$########.## $$########.##" +130 PRINT "INPUT PROFITS BEFORE DEPRECIATION";:INPUT PB +132 PRINT :PRINT "ENTER DEPRECIATION AMOUNT & BELOW" +135 PRINT +140 PRINT F$(1) +145 INPUT " ";D +146 IF D = -1 THEN END +147 ' PRINT CHR$(27),CHR$(27) +150 P=PB-D +160 IF P<0 THEN T=0:GOTO 200 +170 IF P<25000 THEN T=.17*P:GOTO 200 +180 IF P<50000 THEN T=4250+.20*(P-25000):GOTO 200 +183 IF P<75000 THEN T=9250+.30*(P-50000):GOTO 200 +185 IF P<100000 THEN T=16750+.40*(P-75000):GOTO 200 +190 T=26750+.46*(P-100000) +200 PRINT USING F$(2);D,T,PB-T +210 GOTO 145 + diff --git a/BP100/TAXDEP.INP b/BP100/TAXDEP.INP new file mode 100644 index 0000000..80ebcf1 --- /dev/null +++ b/BP100/TAXDEP.INP @@ -0,0 +1,6 @@ + +123456 +6543 +4321 +9876 +-1 diff --git a/BP100/TAXDEP.OUT b/BP100/TAXDEP.OUT new file mode 100644 index 0000000..66e4a2d --- /dev/null +++ b/BP100/TAXDEP.OUT @@ -0,0 +1,28 @@ + DEPRECIATION AND INCOME TAX + +AS A BUSINESS EXPENSE HIGH DEPRECIATION LOWERS PROFITS. +HOWEVER, LOWER TAXES ARE A RESULT OF THIS. THUS, HIGHER +DEPRECIATION MEANS HIGHER NET CASH FLOW WHICH WE DEFINE AS +PROFITS BEFORE DEPRECIATION-INCOME TAXES. +IN THIS PROGRAM THE USER INPUTS PROFITS BEFORE DEPRECIATION. +THEN HE INPUTS VARIOUS POSSIBLE DEPRECIATIONS. NET CASH FLOW +FOR EACH IS THEN COMPUTED. TAX SCHEDULES USED ARE: + 17% OF FIRST $25000 + 20% OF NEXT $25000 + 30% OF NEXT $25000 + 40% OF NEXT $25000 + 46% OF ANY AMOUNT OVER $100000 + +PRESS ENTER TO BEGIN? +INPUT PROFITS BEFORE DEPRECIATION? 123456 + +ENTER DEPRECIATION AMOUNT & BELOW + + DEPRECIATION TAXES NET CASH FLOW ! + ? 6543 + $6543.00 $34529.98 $88926.02 + ? 4321 + $4321.00 $35552.10 $87903.90 + ? 9876 + $9876.00 $32996.80 $90459.20 + ? -1 diff --git a/BP100/TAXDEP.dif b/BP100/TAXDEP.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/TAXDEP.run b/BP100/TAXDEP.run new file mode 100644 index 0000000..e9f4b14 --- /dev/null +++ b/BP100/TAXDEP.run @@ -0,0 +1,28 @@ + DEPRECIATION AND INCOME TAX + +AS A BUSINESS EXPENSE HIGH DEPRECIATION LOWERS PROFITS. +HOWEVER, LOWER TAXES ARE A RESULT OF THIS. THUS, HIGHER +DEPRECIATION MEANS HIGHER NET CASH FLOW WHICH WE DEFINE AS +PROFITS BEFORE DEPRECIATION-INCOME TAXES. +IN THIS PROGRAM THE USER INPUTS PROFITS BEFORE DEPRECIATION. +THEN HE INPUTS VARIOUS POSSIBLE DEPRECIATIONS. NET CASH FLOW +FOR EACH IS THEN COMPUTED. TAX SCHEDULES USED ARE: + 17% OF FIRST $25000 + 20% OF NEXT $25000 + 30% OF NEXT $25000 + 40% OF NEXT $25000 + 46% OF ANY AMOUNT OVER $100000 + +PRESS ENTER TO BEGIN? +INPUT PROFITS BEFORE DEPRECIATION? 123456 + +ENTER DEPRECIATION AMOUNT & BELOW + + DEPRECIATION TAXES NET CASH FLOW ! + ? 6543 + $6543.00 $34529.98 $88926.02 + ? 4321 + $4321.00 $35552.10 $87903.90 + ? 9876 + $9876.00 $32996.80 $90459.20 + ? -1 diff --git a/BP100/TELDIR.80 b/BP100/TELDIR.80 new file mode 100644 index 0000000..97235f0 --- /dev/null +++ b/BP100/TELDIR.80 @@ -0,0 +1,132 @@ + TELEPHONE DIRECTORY + +THIS PROGRAM SETS UP AN INDEX OF TELEPHONE NUMBERS ALONG WITH +THEIR OWNERS. EACH ENTRY CONSISTS OF A PHONE NUMBER, A PERSON, +AND A COMMENT. THE PROGRAM MAKES PROVISIONS FOR RECALLING +PHONE NUMBER BY NAME. WITH A 16K MACHINE THIS PROGRAM +WILL HANDLE 200 NUMBERS. WITH MORE MEMORY MORE NAMES SHOULD +FIT, THOUGH THE DIM STATEMENT IN THE PROGRAM WOULD HAVE TO BE +CHANGED ACCORDINGLY. + +TO FACILITATE RECALL WE SUGGEST ENTERING NAMES AS +LASTNAME*FIRSTNAME E.G. SMITH*TOM. THE COMPUTER NEEDS A +PERFECT MATCH TO FIND THE NAME. THE NAME COULD ALSO BE +FOUND BY PRINTING A COMPLETE LIST. +PRESS ENTER TO CONTINUE? + NAME PHONE NUMBER COMMENT +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 1 +LAST NAME*FIRST*NAME ? MOUSE JERRY +A/C-PHONE # E.G.914-425-1535 ? 123-456-7890 +COMMENT ? CARTOON + +PRESS 1 FOR MORE,0 TO RETURN TO MENU? 1 +LAST NAME*FIRST*NAME ? CAT TOM +A/C-PHONE # E.G.914-425-1535 ? 987-654-3210 +COMMENT ? CARTOON + +PRESS 1 FOR MORE,0 TO RETURN TO MENU? 0 + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 6 +WRITE ONTO DISKETTE OPTION + +PRESENT DISK FILE IS +NEW DISK FILE( FOR NO CHANGE)? TELDIR.DAT +THERE ARE 2 RECORDS + +PRESS ENTER TO CONTINUE? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 5 +INPUT NAME OF DESIRED DISK FILE? TELDIR.DAT + + + 2 RECORDS READ. +PRESS ENTER TO CONTINUE? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 7 +IS PRINTED OUTPUT DESIRED(Y/N)? Y + NAME PHONE NUMBER COMMENT + MOUSE JERRY 123-456-7890 CARTOON + CAT TOM 987-654-3210 CARTOON + +PRESS ENTER TO RETURN TO MENU? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 9 +NAME OF PERSON YOU WISH TO CHANGE? CAT TOM + CAT TOM 987-654-3210 CARTOON +2 FOR WRONG NAME,0 TO RETURN TO MENU? 0 + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 0 diff --git a/BP100/TELDIR.BAS b/BP100/TELDIR.BAS new file mode 100644 index 0000000..ce9705d --- /dev/null +++ b/BP100/TELDIR.BAS @@ -0,0 +1,158 @@ +1 REM TELDIR +5 CLS +10 PRINT TAB(12); "TELEPHONE DIRECTORY":PRINT +20 PRINT "THIS PROGRAM SETS UP AN INDEX OF TELEPHONE NUMBERS ALONG WITH +30 PRINT "THEIR OWNERS. EACH ENTRY CONSISTS OF A PHONE NUMBER, A PERSON, +35 PRINT "AND A COMMENT. THE PROGRAM MAKES PROVISIONS FOR RECALLING +40 PRINT "PHONE NUMBER BY NAME. WITH A 16K MACHINE THIS PROGRAM +45 PRINT "WILL HANDLE 200 NUMBERS. WITH MORE MEMORY MORE NAMES SHOULD +50 PRINT "FIT, THOUGH THE DIM STATEMENT IN THE PROGRAM WOULD HAVE TO BE +55 PRINT "CHANGED ACCORDINGLY. +60 PRINT :PRINT "TO FACILITATE RECALL WE SUGGEST ENTERING NAMES AS +65 PRINT "LASTNAME*FIRSTNAME E.G. SMITH*TOM. THE COMPUTER NEEDS A +70 PRINT "PERFECT MATCH TO FIND THE NAME. THE NAME COULD ALSO BE +75 PRINT "FOUND BY PRINTING A COMPLETE LIST. +85 GOSUB 10100 +95 CLEAR 3500 +100 DIM A$(200,3) +105 GOSUB 1700 +110 CLS:INPUT "ARE DISK DRIVES ATTACHED(Y/N)";DZ$ +115 IF DZ$<>"Y" AND DZ$<>"N" THEN GOSUB 10000 +200 CLS +210 PRINT " MENU" +220 PRINT +225 PRINT "0.QUIT +230 PRINT "1.SET UP NEW PHONE DIRECTORY +240 PRINT "2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +250 PRINT "3.READ IN A DIRECTORY ON CASSETTE +260 PRINT "4.SAVE A DIRECTORY ON CASSETTE +263 PRINT "5.READ IN A DIRECTORY ON DISKETTE +265 PRINT "6.SAVE A DIRECTORY ON DISKETTE +270 PRINT "7.REVIEW A DIRECTORY +280 PRINT "8.MAKE CORRECTIONS +282 PRINT "9.FIND NAME & PHONE NUMBER +290 PRINT :INPUT "TYPE APPROPRIATE NUMBER AND ENTER";Z1 +295 IF Z1 = 0 THEN END +300 ON Z1 GOSUB 400,500,600,700,800,900,1000,1100,2500 +320 GOTO 200 +400 CLS:REM SET UP NEW FILE +410 N=1 +420 GOSUB 1300 +425 PRINT +430 INPUT "PRESS 1 FOR MORE,0 TO RETURN TO MENU";Z9 +440 IF Z9=1 THEN N=N+1:CLS:GOTO 420 +450 IF Z9=0 THEN RETURN +460 GOSUB 1600 :GOTO 425 +500 CLS:REM ADD TO FILE IN MEMORY +510 N=N+1:GOTO 420 +600 REM READ IN A FILE ON CASSETTE +610 CLS:INPUT "PRESS ENTER WHEN CASSETTE RECORDER IS READY";Z +615 ' IF DZ$="Y" THEN CMD"T" +620 INPUT #-1,N +630 GOSUB 1400 +635 ON ERROR GOTO 200 +640 RETURN +700 REM SAVE A FILE ON CASSETTE +710 CLS:INPUT "PRESS ENTER WHEN CASSETTE RECORDER IS READY";Z +712 ' IF DZ$="Y" THEN CMD"T" +715 WRITE #-1,N +720 GOSUB 1500 +730 RETURN +800 REM READ IN FILE ON DISKETTE +810 CLS:INPUT "INPUT NAME OF DESIRED DISK FILE";ZD$ +820 OPEN "I",1,ZD$ +825 INPUT # 1,N +830 GOSUB 1450 +835 CLOSE 1 +840 PRINT :PRINT :PRINT N;" RECORDS READ." +850 GOSUB 10100 +890 RETURN +900 REM WRITE OUT FILE ONTO DISKETTE +910 CLS:PRINT "WRITE ONTO DISKETTE OPTION":PRINT +920 PRINT "PRESENT DISK FILE IS ";ZD$ +925 INPUT "NEW DISK FILE( FOR NO CHANGE)";ZD$ +930 OPEN "O",1,ZD$ +940 PRINT "THERE ARE ";N;" RECORDS":PRINT :GOSUB 10100 +950 WRITE # 1,N +960 GOSUB 1550 +970 CLOSE 1 +990 RETURN +1000 REM REVIEW A FILE SUBROUTINE +1003 INPUT "IS PRINTED OUTPUT DESIRED(Y/N)";Z2$ +1004 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 1003 +1005 CLS:GOSUB 1700 +1007 IF Z2$="Y" THEN LPRINT F$(1) +1010 FOR J=1 TO N +1015 GOSUB 1800 +1020 IF J/10 <> INT(J/10) THEN GOTO 1040 +1025 PRINT :INPUT "PRESS ENTER TO SEE MORE";Z9 +1030 CLS +1035 GOSUB 1700 +1040 NEXT J +1045 PRINT :INPUT "PRESS ENTER TO RETURN TO MENU";Z9 +1050 RETURN +1100 REM CORRECTION ROUTINE +1105 Z2$="N" +1110 CLS +1120 INPUT "NAME OF PERSON YOU WISH TO CHANGE";B$ +1130 J=1 +1140 IF B$=A$(J,1) THEN GOTO 1180 +1150 J=J+1:IF J<=N THEN GOTO 1140 +1160 PRINT "NO SUCH FILE NAME IN LIST.PRESS ENTER TO RETURN TO MENU +1170 INPUT Z9:GOTO 200 +1180 CLS:GOSUB 1800 +1185 IF Z1=9 THEN INPUT "2 FOR WRONG NAME,0 TO RETURN TO MENU";Z9:GOTO 1215 +1190 PRINT :PRINT "MAKE APPROPRIATE CHANGES.PRESS ENTER FOR NO CHANGE IN FIELD" +1200 PRINT :GOSUB 1900 +1210 INPUT "INPUT 2 FOR WRONG NAME,1 FOR MORE CHANGE,0 TO RETURN TO MENU";Z9 +1215 IF Z9=2 THEN GOTO 1150 +1220 IF Z9=1 THEN GOTO 1110 +1230 IF Z9=0 THEN RETURN +1240 GOSUB 1600:GOTO 1210 +1300 REM SUBROUTINE INPUTTING FILE DATA FROM KEYBOARD +1305 INPUT "LAST NAME*FIRST*NAME ";A$(N,1) +1310 INPUT "A/C-PHONE # E.G.914-425-1535 ";A$(N,2) +1315 INPUT "COMMENT ";A$(N,3) +1320 RETURN +1400 REM INPUT OF FILE FROM CASSETTE +1405 FOR L=1 TO N +1410 INPUT #-1,A$(L,1),A$(L,2),A$(L,3) +1415 NEXT L +1420 RETURN +1450 REM INPUT OF FILE FROM DISKETTE +1460 FOR L=1 TO N +1470 INPUT # 1,A$(L,1),A$(L,2),A$(L,3) +1480 NEXT L +1490 RETURN +1500 REM OUTPUT OF FILE ONTO CASSETTE +1505 FOR L=1 TO N +1510 WRITE #-1,A$(L,1),A$(L,2),A$(L,3) +1515 NEXT L +1520 RETURN +1550 REM OUTPUT OF FILE ONTO DISKETTE +1560 FOR L=1 TO N +1570 WRITE # 1,A$(L,1),A$(L,2),A$(L,3) +1580 NEXT L +1590 RETURN +1600 REM INPUT ERROR SUBROUTINE +1610 PRINT "INPUT ERROR TRY AGAIN" +1620 FOR L=1 TO 300:NEXT L +1630 RETURN +1700 REM HEADING SUBROUTINE +1710 F$(1)=" NAME PHONE NUMBER COMMENT " +1720 F$(2)=" % % % % % % +1730 PRINT F$(1) +1740 RETURN +1800 REM PRINT 1 FILE DATA +1810 PRINT USING F$(2);A$(J,1),A$(J,2),A$(J,3) +1815 IF Z2$="Y" THEN LPRINT USING F$(2);A$(J,1),A$(J,2),A$(J,3) +1820 RETURN +1900 REM SUBROUTINE FOR INNPUTTING DATA FILE FROM KEYBOARD +1910 INPUT "LAST NAME*FIRST*NAME ";A$(J,1) +1920 INPUT "A/C-PHONE # E.G.914-425-1535 ";A$(J,2) +1930 INPUT "COMMENT ";A$(J,3) +1940 RETURN +2500 GOSUB 1100:Z1=0:RETURN +10000 PRINT "INPUT ERROR! TRY AGAIN":FOR JZ=1 TO 500:NEXT :RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/TELDIR.DAT b/BP100/TELDIR.DAT new file mode 100644 index 0000000..6cfe325 --- /dev/null +++ b/BP100/TELDIR.DAT @@ -0,0 +1,3 @@ + 2 +"MOUSE JERRY","123-456-7890","CARTOON" +"CAT TOM","987-654-3210","CARTOON" diff --git a/BP100/TELDIR.INP b/BP100/TELDIR.INP new file mode 100644 index 0000000..83d88f7 --- /dev/null +++ b/BP100/TELDIR.INP @@ -0,0 +1,24 @@ + +Y +1 +MOUSE JERRY +123-456-7890 +CARTOON +1 +CAT TOM +987-654-3210 +CARTOON +0 +6 +TELDIR.DAT + +5 +TELDIR.DAT + +7 +Y + +9 +CAT TOM +0 +0 diff --git a/BP100/TELDIR.OUT b/BP100/TELDIR.OUT new file mode 100644 index 0000000..4c3953f --- /dev/null +++ b/BP100/TELDIR.OUT @@ -0,0 +1,132 @@ + TELEPHONE DIRECTORY + +THIS PROGRAM SETS UP AN INDEX OF TELEPHONE NUMBERS ALONG WITH +THEIR OWNERS. EACH ENTRY CONSISTS OF A PHONE NUMBER, A PERSON, +AND A COMMENT. THE PROGRAM MAKES PROVISIONS FOR RECALLING +PHONE NUMBER BY NAME. WITH A 16K MACHINE THIS PROGRAM +WILL HANDLE 200 NUMBERS. WITH MORE MEMORY MORE NAMES SHOULD +FIT, THOUGH THE DIM STATEMENT IN THE PROGRAM WOULD HAVE TO BE +CHANGED ACCORDINGLY. + +TO FACILITATE RECALL WE SUGGEST ENTERING NAMES AS +LASTNAME*FIRSTNAME E.G. SMITH*TOM. THE COMPUTER NEEDS A +PERFECT MATCH TO FIND THE NAME. THE NAME COULD ALSO BE +FOUND BY PRINTING A COMPLETE LIST. +PRESS ENTER TO CONTINUE? + NAME PHONE NUMBER COMMENT +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 1 +LAST NAME*FIRST*NAME ? MOUSE JERRY +A/C-PHONE # E.G.914-425-1535 ? 123-456-7890 +COMMENT ? CARTOON + +PRESS 1 FOR MORE,0 TO RETURN TO MENU? 1 +LAST NAME*FIRST*NAME ? CAT TOM +A/C-PHONE # E.G.914-425-1535 ? 987-654-3210 +COMMENT ? CARTOON + +PRESS 1 FOR MORE,0 TO RETURN TO MENU? 0 + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 6 +WRITE ONTO DISKETTE OPTION + +PRESENT DISK FILE IS +NEW DISK FILE( FOR NO CHANGE)? TELDIR.DAT +THERE ARE 2 RECORDS + +PRESS ENTER TO CONTINUE? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 5 +INPUT NAME OF DESIRED DISK FILE? TELDIR.DAT + + + 2 RECORDS READ. +PRESS ENTER TO CONTINUE? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 7 +IS PRINTED OUTPUT DESIRED(Y/N)? Y + NAME PHONE NUMBER COMMENT + MOUSE JERRY 123-456-7890 CARTOON + CAT TOM 987-654-3210 CARTOON + +PRESS ENTER TO RETURN TO MENU? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 9 +NAME OF PERSON YOU WISH TO CHANGE? CAT TOM + CAT TOM 987-654-3210 CARTOON +2 FOR WRONG NAME,0 TO RETURN TO MENU? 0 + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 0 diff --git a/BP100/TELDIR.dif b/BP100/TELDIR.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/TELDIR.run b/BP100/TELDIR.run new file mode 100644 index 0000000..97235f0 --- /dev/null +++ b/BP100/TELDIR.run @@ -0,0 +1,132 @@ + TELEPHONE DIRECTORY + +THIS PROGRAM SETS UP AN INDEX OF TELEPHONE NUMBERS ALONG WITH +THEIR OWNERS. EACH ENTRY CONSISTS OF A PHONE NUMBER, A PERSON, +AND A COMMENT. THE PROGRAM MAKES PROVISIONS FOR RECALLING +PHONE NUMBER BY NAME. WITH A 16K MACHINE THIS PROGRAM +WILL HANDLE 200 NUMBERS. WITH MORE MEMORY MORE NAMES SHOULD +FIT, THOUGH THE DIM STATEMENT IN THE PROGRAM WOULD HAVE TO BE +CHANGED ACCORDINGLY. + +TO FACILITATE RECALL WE SUGGEST ENTERING NAMES AS +LASTNAME*FIRSTNAME E.G. SMITH*TOM. THE COMPUTER NEEDS A +PERFECT MATCH TO FIND THE NAME. THE NAME COULD ALSO BE +FOUND BY PRINTING A COMPLETE LIST. +PRESS ENTER TO CONTINUE? + NAME PHONE NUMBER COMMENT +ARE DISK DRIVES ATTACHED(Y/N)? Y + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 1 +LAST NAME*FIRST*NAME ? MOUSE JERRY +A/C-PHONE # E.G.914-425-1535 ? 123-456-7890 +COMMENT ? CARTOON + +PRESS 1 FOR MORE,0 TO RETURN TO MENU? 1 +LAST NAME*FIRST*NAME ? CAT TOM +A/C-PHONE # E.G.914-425-1535 ? 987-654-3210 +COMMENT ? CARTOON + +PRESS 1 FOR MORE,0 TO RETURN TO MENU? 0 + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 6 +WRITE ONTO DISKETTE OPTION + +PRESENT DISK FILE IS +NEW DISK FILE( FOR NO CHANGE)? TELDIR.DAT +THERE ARE 2 RECORDS + +PRESS ENTER TO CONTINUE? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 5 +INPUT NAME OF DESIRED DISK FILE? TELDIR.DAT + + + 2 RECORDS READ. +PRESS ENTER TO CONTINUE? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 7 +IS PRINTED OUTPUT DESIRED(Y/N)? Y + NAME PHONE NUMBER COMMENT + MOUSE JERRY 123-456-7890 CARTOON + CAT TOM 987-654-3210 CARTOON + +PRESS ENTER TO RETURN TO MENU? + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 9 +NAME OF PERSON YOU WISH TO CHANGE? CAT TOM + CAT TOM 987-654-3210 CARTOON +2 FOR WRONG NAME,0 TO RETURN TO MENU? 0 + MENU + +0.QUIT +1.SET UP NEW PHONE DIRECTORY +2.ADD TO EXISTING DIRECTORY ALREADY IN MEMORY +3.READ IN A DIRECTORY ON CASSETTE +4.SAVE A DIRECTORY ON CASSETTE +5.READ IN A DIRECTORY ON DISKETTE +6.SAVE A DIRECTORY ON DISKETTE +7.REVIEW A DIRECTORY +8.MAKE CORRECTIONS +9.FIND NAME & PHONE NUMBER + +TYPE APPROPRIATE NUMBER AND ENTER? 0 diff --git a/BP100/TERMSPAY.80 b/BP100/TERMSPAY.80 new file mode 100644 index 0000000..2a3cc28 --- /dev/null +++ b/BP100/TERMSPAY.80 @@ -0,0 +1,29 @@ + COMPARISON OF METHODS FOR PAYING FOR PURCHASES +WHEN AN ITEM IS PURCHASED SOMETIMES THE USER HAS SEVERAL +CHOICES AS TO HOW PAYMENT SHOULD BE MADE. FIRST OF ALL THERE +MAY BE A PREPAYMENT. SUCH PREPAYMENT IS GENERALLY ACCOMPANIED +BY A DISCOUNT. THERE ITEM MAY ALSO COME COD AND THERE MAY BE +A DISCOUNT FOR PAYING ON DELIVERY. LASTLY THE ITEM MAY COME +WITH TERMS. GENERALLY THIS MEANS THAT THERE IS A DEADLINE +SUCH THAT IF PAYMENT IS MADE BEFORE THAT TIME THERE IS NO +PENALTY. + +THE USER CAN COMPARE THE 3 METHODS OF PAYMENT VIA A PRESENT +VALUE ANALYSIS IF HE CAN ESTIMATE HIS INTEREST RATE FOR +MONEY. + +PRESS ENTER TO BEGIN? +ENTER YOUR INTEREST RATE(%)? 3.25 +ENTER LIST PRICE OF PURCHASE ? 100000 +ENTER NUMBER OF MONTHS IN ADVANCE FOR EARLY PAYMENT? 15 +ENTER DISCOUNT AMOUNT FOR MAKING EARLY PAYMENT? 7 +ENTER DISCOUNT AMOUNT FOR COD ? 15 +ENTER # OF MONTHS(OR PART) AFTER DELIVERY FOR NET PAYMENT? 1 + +PRESENT VALUES ARE COMPUTED WITH RESPECT TO DAY OF DELIVERY + +PRESENT VALUE OF EARLY PAYMENT = 99993 +PRESENT VALUE OF PAYING COD = 99985 +PRESENT VALUE OF NET TERMS = 99729.9 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/TERMSPAY.BAS b/BP100/TERMSPAY.BAS new file mode 100644 index 0000000..5ac2f1c --- /dev/null +++ b/BP100/TERMSPAY.BAS @@ -0,0 +1,35 @@ +1 REM TERMSPAY +5 CLEAR 1000 +10 CLS:PRINT TAB(5);"COMPARISON OF METHODS FOR PAYING FOR PURCHASES" +20 PRINT"WHEN AN ITEM IS PURCHASED SOMETIMES THE USER HAS SEVERAL +25 PRINT"CHOICES AS TO HOW PAYMENT SHOULD BE MADE. FIRST OF ALL THERE +30 PRINT"MAY BE A PREPAYMENT. SUCH PREPAYMENT IS GENERALLY ACCOMPANIED +35 PRINT"BY A DISCOUNT. THERE ITEM MAY ALSO COME COD AND THERE MAY BE +40 PRINT"A DISCOUNT FOR PAYING ON DELIVERY. LASTLY THE ITEM MAY COME +45 PRINT"WITH TERMS. GENERALLY THIS MEANS THAT THERE IS A DEADLINE +50 PRINT"SUCH THAT IF PAYMENT IS MADE BEFORE THAT TIME THERE IS NO +55 PRINT"PENALTY. +60 PRINT:PRINT"THE USER CAN COMPARE THE 3 METHODS OF PAYMENT VIA A PRESENT +65 PRINT"VALUE ANALYSIS IF HE CAN ESTIMATE HIS INTEREST RATE FOR +70 PRINT"MONEY." +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT"ENTER YOUR INTEREST RATE(%)";P:P=P/100:P=P/12 +115 INPUT"ENTER LIST PRICE OF PURCHASE ";C +120 INPUT"ENTER NUMBER OF MONTHS IN ADVANCE FOR EARLY PAYMENT";MA +130 INPUT"ENTER DISCOUNT AMOUNT FOR MAKING EARLY PAYMENT";D +140 INPUT"ENTER DISCOUNT AMOUNT FOR COD ";DC +150 INPUT"ENTER # OF MONTHS(OR PART) AFTER DELIVERY FOR NET PAYMENT";MA +200 REM COMPUTE PRESENT VALUE AT TIME OF DELIVERY +210 P2=C-DC:REM COD PRESENT VALUE +220 P1=(C-D)*(1+P)[M:REM EARLY PAYMENT PRESENT VALUE +230 P3= C/(1+P)[MA:REM TERMS NET MA MONTHS PRESENT VALUE +300 PRINT +310 PRINT"PRESENT VALUES ARE COMPUTED WITH RESPECT TO DAY OF DELIVERY":PRINT +320 PRINT"PRESENT VALUE OF EARLY PAYMENT =";P1 +330 PRINT"PRESENT VALUE OF PAYING COD =";P2 +340 PRINT"PRESENT VALUE OF NET TERMS =";P3 +350 PRINT +360 INPUT"PRESS ENTER FOR MORE COMPUTATION";Z9$ +365 IF Z9$ = "-1" THEN END +370 GOTO 100 diff --git a/BP100/TERMSPAY.INP b/BP100/TERMSPAY.INP new file mode 100644 index 0000000..a51549c --- /dev/null +++ b/BP100/TERMSPAY.INP @@ -0,0 +1,8 @@ + +3.25 +100000 +15 +7 +15 +1 +-1 diff --git a/BP100/TERMSPAY.OUT b/BP100/TERMSPAY.OUT new file mode 100644 index 0000000..a8aa1b5 --- /dev/null +++ b/BP100/TERMSPAY.OUT @@ -0,0 +1,29 @@ + COMPARISON OF METHODS FOR PAYING FOR PURCHASES +WHEN AN ITEM IS PURCHASED SOMETIMES THE USER HAS SEVERAL +CHOICES AS TO HOW PAYMENT SHOULD BE MADE. FIRST OF ALL THERE +MAY BE A PREPAYMENT. SUCH PREPAYMENT IS GENERALLY ACCOMPANIED +BY A DISCOUNT. THERE ITEM MAY ALSO COME COD AND THERE MAY BE +A DISCOUNT FOR PAYING ON DELIVERY. LASTLY THE ITEM MAY COME +WITH TERMS. GENERALLY THIS MEANS THAT THERE IS A DEADLINE +SUCH THAT IF PAYMENT IS MADE BEFORE THAT TIME THERE IS NO +PENALTY. + +THE USER CAN COMPARE THE 3 METHODS OF PAYMENT VIA A PRESENT +VALUE ANALYSIS IF HE CAN ESTIMATE HIS INTEREST RATE FOR +MONEY. + +PRESS ENTER TO BEGIN? +ENTER YOUR INTEREST RATE(%)? 3.25 +ENTER LIST PRICE OF PURCHASE ? 100000 +ENTER NUMBER OF MONTHS IN ADVANCE FOR EARLY PAYMENT? 15 +ENTER DISCOUNT AMOUNT FOR MAKING EARLY PAYMENT? 7 +ENTER DISCOUNT AMOUNT FOR COD ? 15 +ENTER # OF MONTHS(OR PART) AFTER DELIVERY FOR NET PAYMENT? 1 + +PRESENT VALUES ARE COMPUTED WITH RESPECT TO DAY OF DELIVERY + +PRESENT VALUE OF EARLY PAYMENT = 99993 +PRESENT VALUE OF PAYING COD = 99985 +PRESENT VALUE OF NET TERMS = 99729.9 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/TERMSPAY.dif b/BP100/TERMSPAY.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/TERMSPAY.run b/BP100/TERMSPAY.run new file mode 100644 index 0000000..2a3cc28 --- /dev/null +++ b/BP100/TERMSPAY.run @@ -0,0 +1,29 @@ + COMPARISON OF METHODS FOR PAYING FOR PURCHASES +WHEN AN ITEM IS PURCHASED SOMETIMES THE USER HAS SEVERAL +CHOICES AS TO HOW PAYMENT SHOULD BE MADE. FIRST OF ALL THERE +MAY BE A PREPAYMENT. SUCH PREPAYMENT IS GENERALLY ACCOMPANIED +BY A DISCOUNT. THERE ITEM MAY ALSO COME COD AND THERE MAY BE +A DISCOUNT FOR PAYING ON DELIVERY. LASTLY THE ITEM MAY COME +WITH TERMS. GENERALLY THIS MEANS THAT THERE IS A DEADLINE +SUCH THAT IF PAYMENT IS MADE BEFORE THAT TIME THERE IS NO +PENALTY. + +THE USER CAN COMPARE THE 3 METHODS OF PAYMENT VIA A PRESENT +VALUE ANALYSIS IF HE CAN ESTIMATE HIS INTEREST RATE FOR +MONEY. + +PRESS ENTER TO BEGIN? +ENTER YOUR INTEREST RATE(%)? 3.25 +ENTER LIST PRICE OF PURCHASE ? 100000 +ENTER NUMBER OF MONTHS IN ADVANCE FOR EARLY PAYMENT? 15 +ENTER DISCOUNT AMOUNT FOR MAKING EARLY PAYMENT? 7 +ENTER DISCOUNT AMOUNT FOR COD ? 15 +ENTER # OF MONTHS(OR PART) AFTER DELIVERY FOR NET PAYMENT? 1 + +PRESENT VALUES ARE COMPUTED WITH RESPECT TO DAY OF DELIVERY + +PRESENT VALUE OF EARLY PAYMENT = 99993 +PRESENT VALUE OF PAYING COD = 99985 +PRESENT VALUE OF NET TERMS = 99729.9 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/TIMECLCK.80 b/BP100/TIMECLCK.80 new file mode 100644 index 0000000..cc658f7 --- /dev/null +++ b/BP100/TIMECLCK.80 @@ -0,0 +1,32 @@ + TIME CLOCK + +THIS PROGRAM USES AS INPUT THE USUAL INFORMATION ON THE +COMINGS AND GOINGS OF EMPLOYES STAMPED BY A TIME CLOCK ON +THE EMPLOYEE TIME CARD. aS OUTPUT THE COMPUTER GIVES A +SUMMARY OF THE NUMBER OF HOURS THE EMPLOYEE HAS WORKED +EACH DAY ALONG WITH THE TOTAL OF HOURS FOR THE WEEK. THE +WEEKLY HOURS ARE DIVIDED INTO REGULAR AND OVERTIME HOURS +WITH OVERTIME HOURS CONSIDERED TO BE THOSE HOURS GREATER +THAN 40. THERE IS THE OPTION TO MANUALLY OVERRIDE THE DIVISION +OF REGULAR VERSUS OVERTIME HOURS. +PRESS ENTER TO CONTINUE? +INPUT Y IF PRINTER DESIRED,N IF NOT? Y +EMPLOYEE NUMBER ? 1 +ENTER TIME FOR DAY OF WEEK GIVEN. FORM SHOULD BE: +A OR P,HR IN.MIN IN,A OR P,HR OUT. MIN OUT +TO END DAY ENTER D,0,0,0.TO END WEEK ENTER W,0,0,0 +MONDAY +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? W,0,0,0 +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +MONDAY TOTAL = 16 HRS. + GRAND TOTAL = 16 +REGULAR HOURS = 16 OVERTIME HOURS = 0 +REGULAR HOURS,OVERTIME HOURS ? 40,20 +EMPLOYEE NUMBER ? -1 diff --git a/BP100/TIMECLCK.BAS b/BP100/TIMECLCK.BAS new file mode 100644 index 0000000..e4bf546 --- /dev/null +++ b/BP100/TIMECLCK.BAS @@ -0,0 +1,88 @@ +1 REM TIME CLOCK PROGRAM +2 REM BY DR. PETER SHENKIN +5 CLS +10 PRINT " TIME CLOCK" +20 PRINT +30 PRINT "THIS PROGRAM USES AS INPUT THE USUAL INFORMATION ON THE +40 PRINT "COMINGS AND GOINGS OF EMPLOYES STAMPED BY A TIME CLOCK ON +50 PRINT "THE EMPLOYEE TIME CARD. aS OUTPUT THE COMPUTER GIVES A +60 PRINT "SUMMARY OF THE NUMBER OF HOURS THE EMPLOYEE HAS WORKED +70 PRINT "EACH DAY ALONG WITH THE TOTAL OF HOURS FOR THE WEEK. THE +80 PRINT "WEEKLY HOURS ARE DIVIDED INTO REGULAR AND OVERTIME HOURS +90 PRINT "WITH OVERTIME HOURS CONSIDERED TO BE THOSE HOURS GREATER +100 PRINT "THAN 40. THERE IS THE OPTION TO MANUALLY OVERRIDE THE DIVISION +110 PRINT "OF REGULAR VERSUS OVERTIME HOURS."; +120 PRINT :INPUT "PRESS ENTER TO CONTINUE";Z9$ +1000 GOTO 40000 +10000 REM INPUT ERROR SUBROUTINE +10010 PRINT "INPUT ERROR! TRY AGAIN!" +10030 RETURN +40000 REM TIME CLOCK +40001 DEFINT X,J +40002 DIM AI$(30),AI(30),AO$(30),AO(30),TP(30) +40005 CLS +40006 INPUT "INPUT Y IF PRINTER DESIRED,N IF NOT";Z2$ +40007 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 40006 +40010 DATA MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY +40020 FOR J8=1 TO 7:READ X$(J8):NEXT +40025 CLS:REM BEGIN FOR AN EMPLOYEE +40027 INPUT"EMPLOYEE NUMBER ";CN:REM LINK TO COMPUTE +40028 IF CN = -1 THEN END +40030 J1=1:REM DAY OF WEEK WE ARE ON +40035 X=1:XD=1:REM X= ENTRY: XD= DAY +40040 PRINT "ENTER TIME FOR DAY OF WEEK GIVEN. FORM SHOULD BE: +40045 PRINT "A OR P,HR IN.MIN IN,A OR P,HR OUT. MIN OUT +40050 PRINT "TO END DAY ENTER D,0,0,0.TO END WEEK ENTER W,0,0,0 +40055 PRINT X$(XD) +40060 INPUT "A OR P,TIME IN,A OR P,TIME OUT"; AI$(X),AI(X),AO$(X),AO(X) +40063 IF AI$(X)<>"A" AND AI$(X)<>"P" AND AI$(X)<>"D" AND AI$(X)<>"W" THEN GOSUB 10000:GOTO 40060 +40066 IF AO$(X)<>"A" AND AO$(X)<>"P" AND AO$(X)<>"0" AND AO$(X)<>"" THEN GOSUB 10000:GOTO 40060 +40070 IF AI$(X) <> "D" AND AI$(X) <> "W" THEN X=X+1: GOTO 40060 +40080 IF AI$(X)="D" THEN XD=XD+1:X=X+1:GOTO 40055 +40090 IF AI$(X)="W" THEN GOTO 40100 +40100 REM WEEK FINISHED. START COMPUTING +40105 FOR J8=1 TO 7:TQ(J8)=0:NEXT +40110 REM Tq(I) = TOTAL DAY I +40115 FOR X1=1 TO X:TP(X1)=0:NEXT X1 +40120 REM TP(I) = TOTAL FOR ENTRY I +40130 D8=1:REM D8= DAY +40140 FOR X1=1 TO X +40145 IF AI$(X1)="D" THEN D8=D8+1:GOTO 40200 +40150 SI=60*INT(AI(X1))+100*(AI(X1)-INT(AI(X1))) +40160 SO=60*INT(AO(X1))+100*(AO(X1)-INT(AO(X1))) +40170 IF AI$(X1)="A" AND AO$(X1)="P" AND AO(X1)<12 THEN SO=SO + 720 +40175 IF AI(X1)>=12 AND AO(X1)<12 THEN SO=SO+720:GOTO 40185 +40180 IF AI$(X1)="P" AND AO$(X1)="A" THEN SO=SO+720 +40185 TP(X1)=(SO-SI)/60:TQ(D8)=TQ(D8)+(SO-SI)/60:REM COMPUTE TIME TP & SUM TIME FOR DAY +40200 NEXT X1 +40205 REM TT= TOTAL TIME FOR WEEK +40210 TT=0:TR=0:T0=0:FOR J8=1 TO D8:TT=TT+TQ(J8):NEXT +40220 REM OVERTIME +40230 IF TT>40 THEN TR=40:T0=TT-40:GOTO 40250 +40240 TR=TT +40250 TT=INT(100*TT+.5)/100:TR=INT(100*TR+.5)/100:T0=INT(100*T0+.5)/100 +40300 REM PRINTOUT FOR EMPLOYEE +40302 CLS +40305 XD=1 +40310 FOR X1=1 TO X +40320 IF AI$(X1)="D" OR AI$(X1)="W" THEN PRINT X$(XD);TAB(15);"TOTAL = ";TAB(30); TQ(XD);TAB(40);"HRS.":XD=XD+1:GOTO 40350 +40330 PRINT AI$(X1);" ";AI(X1);TAB(20); AO$(X1);TAB(27);AO(X1);TAB(40); "TOTAL = ";TP(X1);TAB(60); "HRS" +40350 NEXT X1 +40360 PRINT TAB(30); "GRAND TOTAL = ";INT(100*TT+.5)/100 +40370 PRINT "REGULAR HOURS = ";TR,"OVERTIME HOURS = ";T0 +40380 Z4=TR:Z5=T0 +40390 INPUT "REGULAR HOURS,OVERTIME HOURS ";TR,T0 +40395 TT=TR+T0 +40400 IF Z2$="N" THEN GOTO 40025 +40402 REM PRINT TIME ON PRINTER +40405 XD=1 +40407 LPRINT "EMPLOYEE NUMBER ";CN:LPRINT +40410 FOR X1=1 TO X +40420 IF AI$(X1)="D" OR AI$(X1)="W" THEN LPRINT X$(XD);TAB(15);"TOTAL = ";TAB(30); TQ(XD);TAB(40);"HRS":XD=XD+1:GOTO 40450 +40430 LPRINT AI$(X1);" ";AI(X1);TAB(20); AO$(X1);TAB(27);AO(X1);TAB(40); "TOTAL = ";TP(X1);TAB(60); "HRS" +40450 NEXT X1 +40460 LPRINT TAB(30); "GRAND TOTAL = ";INT(100*TT+.5)/100 +40470 LPRINT "REGULAR HOURS = ";TR,"OVERTIME HOURS = ";T0 +40480 FOR X1=1 TO 10:LPRINT " ":NEXT +40500 GOTO 40025 + diff --git a/BP100/TIMECLCK.INP b/BP100/TIMECLCK.INP new file mode 100644 index 0000000..8f592f0 --- /dev/null +++ b/BP100/TIMECLCK.INP @@ -0,0 +1,10 @@ + +Y +1 +A,10,P,2 +A,10,P,2 +A,10,P,2 +A,10,P,2 +W,0,0,0 +40,20 +-1 diff --git a/BP100/TIMECLCK.OUT b/BP100/TIMECLCK.OUT new file mode 100644 index 0000000..70dfd38 --- /dev/null +++ b/BP100/TIMECLCK.OUT @@ -0,0 +1,32 @@ + TIME CLOCK + +THIS PROGRAM USES AS INPUT THE USUAL INFORMATION ON THE +COMINGS AND GOINGS OF EMPLOYES STAMPED BY A TIME CLOCK ON +THE EMPLOYEE TIME CARD. aS OUTPUT THE COMPUTER GIVES A +SUMMARY OF THE NUMBER OF HOURS THE EMPLOYEE HAS WORKED +EACH DAY ALONG WITH THE TOTAL OF HOURS FOR THE WEEK. THE +WEEKLY HOURS ARE DIVIDED INTO REGULAR AND OVERTIME HOURS +WITH OVERTIME HOURS CONSIDERED TO BE THOSE HOURS GREATER +THAN 40. THERE IS THE OPTION TO MANUALLY OVERRIDE THE DIVISION +OF REGULAR VERSUS OVERTIME HOURS. +PRESS ENTER TO CONTINUE? +INPUT Y IF PRINTER DESIRED,N IF NOT? Y +EMPLOYEE NUMBER ? 1 +ENTER TIME FOR DAY OF WEEK GIVEN. FORM SHOULD BE: +A OR P,HR IN.MIN IN,A OR P,HR OUT. MIN OUT +TO END DAY ENTER D,0,0,0.TO END WEEK ENTER W,0,0,0 +MONDAY +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? W,0,0,0 +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +MONDAY TOTAL = 16 HRS. + GRAND TOTAL = 16 +REGULAR HOURS = 16 OVERTIME HOURS = 0 +REGULAR HOURS,OVERTIME HOURS ? 40,20 +EMPLOYEE NUMBER ? -1 diff --git a/BP100/TIMECLCK.dif b/BP100/TIMECLCK.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/TIMECLCK.run b/BP100/TIMECLCK.run new file mode 100644 index 0000000..cc658f7 --- /dev/null +++ b/BP100/TIMECLCK.run @@ -0,0 +1,32 @@ + TIME CLOCK + +THIS PROGRAM USES AS INPUT THE USUAL INFORMATION ON THE +COMINGS AND GOINGS OF EMPLOYES STAMPED BY A TIME CLOCK ON +THE EMPLOYEE TIME CARD. aS OUTPUT THE COMPUTER GIVES A +SUMMARY OF THE NUMBER OF HOURS THE EMPLOYEE HAS WORKED +EACH DAY ALONG WITH THE TOTAL OF HOURS FOR THE WEEK. THE +WEEKLY HOURS ARE DIVIDED INTO REGULAR AND OVERTIME HOURS +WITH OVERTIME HOURS CONSIDERED TO BE THOSE HOURS GREATER +THAN 40. THERE IS THE OPTION TO MANUALLY OVERRIDE THE DIVISION +OF REGULAR VERSUS OVERTIME HOURS. +PRESS ENTER TO CONTINUE? +INPUT Y IF PRINTER DESIRED,N IF NOT? Y +EMPLOYEE NUMBER ? 1 +ENTER TIME FOR DAY OF WEEK GIVEN. FORM SHOULD BE: +A OR P,HR IN.MIN IN,A OR P,HR OUT. MIN OUT +TO END DAY ENTER D,0,0,0.TO END WEEK ENTER W,0,0,0 +MONDAY +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? A,10,P,2 +A OR P,TIME IN,A OR P,TIME OUT? W,0,0,0 +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +A 10 P 2 TOTAL = 4 HRS +MONDAY TOTAL = 16 HRS. + GRAND TOTAL = 16 +REGULAR HOURS = 16 OVERTIME HOURS = 0 +REGULAR HOURS,OVERTIME HOURS ? 40,20 +EMPLOYEE NUMBER ? -1 diff --git a/BP100/TIMEMOV.80 b/BP100/TIMEMOV.80 new file mode 100644 index 0000000..59da8f9 --- /dev/null +++ b/BP100/TIMEMOV.80 @@ -0,0 +1,25 @@ +SIMPLE MOVING AVERAGE SMOOTHING PROGRAM + +THIS PROGRAM COMPUTES AN M-PERIOD MOVING AVERAGE FOR A SET OF +VALUES. M SHOULD BE AN ODD INTEGER,E.G 3,5,7,ETC. THERE SHOULD +BE MORE THAN M OBSERVATIONS TO GET MEANINGFUL RESULTS. + +PRESS ENTER TO BEGIN.? + +THIS IS AN M-PERIOD MOVING AVERAGE.WHAT DOES M EQUAL? 3 + +GIVE AN UPPER BOUND ON THE NUMBER OF OBSERVATIONS YOU INTEND TO +USE.THIS WILL BE THE GREATEST NUMBER OF OBSERVATIONS POSSIBLE. +NUMBER = ? 10 +INPUT OBSERVATIONS 1 BY 1, PRESSING ENTER AFTER EACH. +INPUT 99999 AND ENTER WHEN DONE. + +PRESS ENTER TO BEGIN? +OBSERVATION 1 (99999 TO END)? 1223 +OBSERVATION 2 (99999 TO END)? 882 +OBSERVATION 3 (99999 TO END)? 987 +OBSERVATION 4 (99999 TO END)? 99999 +OBSERVATION # OBSERVATION VALUE SMOOTHED VALUE + 1 1223.00 + 2 882.00 + 3 987.00 diff --git a/BP100/TIMEMOV.BAS b/BP100/TIMEMOV.BAS new file mode 100644 index 0000000..95bcfd6 --- /dev/null +++ b/BP100/TIMEMOV.BAS @@ -0,0 +1,68 @@ +1 REM TIMEMOV +5 CLS +10 PRINT "SIMPLE MOVING AVERAGE SMOOTHING PROGRAM +20 PRINT +30 PRINT "THIS PROGRAM COMPUTES AN M-PERIOD MOVING AVERAGE FOR A SET OF +40 PRINT "VALUES. M SHOULD BE AN ODD INTEGER,E.G 3,5,7,ETC. THERE SHOULD +50 PRINT "BE MORE THAN M OBSERVATIONS TO GET MEANINGFUL RESULTS. +60 PRINT :INPUT "PRESS ENTER TO BEGIN.";Z9 +90 Z1$=" ### #####.## " +95 Z2$=" ### #####.## #####.####" +100 CLS +120 PRINT @ 320," " +130 PRINT "THIS IS AN M-PERIOD MOVING AVERAGE.WHAT DOES M EQUAL"; +140 INPUT M +150 IF M = INT(M) AND M>0 AND M/2<>INT(M/2) THEN GOTO 180 +160 GOSUB 2000 :REM INPUT ERROR SUBROUTINE +170 GOTO 100 +180 PRINT +190 PRINT "GIVE AN UPPER BOUND ON THE NUMBER OF OBSERVATIONS YOU INTEND TO +200 PRINT "USE.THIS WILL BE THE GREATEST NUMBER OF OBSERVATIONS POSSIBLE. +210 INPUT "NUMBER = ";N +220 DIM A(N),S(N) +225 CLS +230 PRINT "INPUT OBSERVATIONS 1 BY 1, PRESSING ENTER AFTER EACH. +240 PRINT "INPUT 99999 AND ENTER WHEN DONE." +250 PRINT +260 PRINT "PRESS ENTER TO BEGIN";:INPUT Z9 +300 CLS +310 I=0:S=0 +320 PRINT "OBSERVATION ";I+1;" (99999 TO END)";:INPUT A(I+1) +330 IF A(I+1)=99999 THEN GOTO 350 +340 I=I+1:GOTO 320 +350 T=(M-1)/2+1 +360 FOR K=1 TO M +370 S=S+A(K) +380 NEXT K +390 S(T)=S/M +400 FOR L=1 TO I-M +410 S(T+L)=S(T+L-1)+(A(T+L+(M-1)/2) - A(T+L-(M-1)/2-1))/M +420 NEXT L +430 GOSUB 2500 +440 FOR L= 1 TO (M-1)/2 +450 PRINT USING Z1$;L,A(L) +460 IF L/14 = INT(L/14) THEN GOSUB 3000 +470 NEXT L +475 FOR L=(M-1)/2 +1 TO I-(M-1)/2-1 +480 PRINT USING Z2$;L,A(L),S(L) +490 IF L/14 = INT(L/14) THEN GOSUB 3000 +500 NEXT L +510 FOR L=I-(M-1)/2 TO I +520 PRINT USING Z1$;L,A(L) +530 IF L/14=INT(L/14) THEN GOSUB 3000 +540 NEXT L +550 END +2000 REM INPUT ERROR SUBROUTINE +2010 PRINT :PRINT "INPUT ERROR. TRY AGAIN." +2020 FOR I= 1 TO 300:NEXT I +2030 RETURN +2500 REM HEADING SUBROUTINE +2510 CLS +2520 PRINT "OBSERVATION # OBSERVATION VALUE SMOOTHED VALUE +2530 RETURN +3000 REM FULL SCREEN SUBROUTINE +3010 INPUT "TO CONTINUE PRESS ENTER";Z9 +3020 CLS +3030 GOSUB 2500 +3040 RETURN + diff --git a/BP100/TIMEMOV.INP b/BP100/TIMEMOV.INP new file mode 100644 index 0000000..6057d03 --- /dev/null +++ b/BP100/TIMEMOV.INP @@ -0,0 +1,8 @@ + +3 +10 + +1223 +882 +987 +99999 diff --git a/BP100/TIMEMOV.OUT b/BP100/TIMEMOV.OUT new file mode 100644 index 0000000..d11c0ed --- /dev/null +++ b/BP100/TIMEMOV.OUT @@ -0,0 +1,25 @@ +SIMPLE MOVING AVERAGE SMOOTHING PROGRAM + +THIS PROGRAM COMPUTES AN M-PERIOD MOVING AVERAGE FOR A SET OF +VALUES. M SHOULD BE AN ODD INTEGER,E.G 3,5,7,ETC. THERE SHOULD +BE MORE THAN M OBSERVATIONS TO GET MEANINGFUL RESULTS. + +PRESS ENTER TO BEGIN.? + +THIS IS AN M-PERIOD MOVING AVERAGE.WHAT DOES M EQUAL? 3 + +GIVE AN UPPER BOUND ON THE NUMBER OF OBSERVATIONS YOU INTEND TO +USE.THIS WILL BE THE GREATEST NUMBER OF OBSERVATIONS POSSIBLE. +NUMBER = ? 10 +INPUT OBSERVATIONS 1 BY 1, PRESSING ENTER AFTER EACH. +INPUT 99999 AND ENTER WHEN DONE. + +PRESS ENTER TO BEGIN? +OBSERVATION 1 (99999 TO END)? 1223 +OBSERVATION 2 (99999 TO END)? 882 +OBSERVATION 3 (99999 TO END)? 987 +OBSERVATION 4 (99999 TO END)? 99999 +OBSERVATION # OBSERVATION VALUE SMOOTHED VALUE + 1 1223.00 + 2 882.00 + 3 987.00 diff --git a/BP100/TIMEMOV.dif b/BP100/TIMEMOV.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/TIMEMOV.run b/BP100/TIMEMOV.run new file mode 100644 index 0000000..59da8f9 --- /dev/null +++ b/BP100/TIMEMOV.run @@ -0,0 +1,25 @@ +SIMPLE MOVING AVERAGE SMOOTHING PROGRAM + +THIS PROGRAM COMPUTES AN M-PERIOD MOVING AVERAGE FOR A SET OF +VALUES. M SHOULD BE AN ODD INTEGER,E.G 3,5,7,ETC. THERE SHOULD +BE MORE THAN M OBSERVATIONS TO GET MEANINGFUL RESULTS. + +PRESS ENTER TO BEGIN.? + +THIS IS AN M-PERIOD MOVING AVERAGE.WHAT DOES M EQUAL? 3 + +GIVE AN UPPER BOUND ON THE NUMBER OF OBSERVATIONS YOU INTEND TO +USE.THIS WILL BE THE GREATEST NUMBER OF OBSERVATIONS POSSIBLE. +NUMBER = ? 10 +INPUT OBSERVATIONS 1 BY 1, PRESSING ENTER AFTER EACH. +INPUT 99999 AND ENTER WHEN DONE. + +PRESS ENTER TO BEGIN? +OBSERVATION 1 (99999 TO END)? 1223 +OBSERVATION 2 (99999 TO END)? 882 +OBSERVATION 3 (99999 TO END)? 987 +OBSERVATION 4 (99999 TO END)? 99999 +OBSERVATION # OBSERVATION VALUE SMOOTHED VALUE + 1 1223.00 + 2 882.00 + 3 987.00 diff --git a/BP100/TIMETR.80 b/BP100/TIMETR.80 new file mode 100644 index 0000000..c77b3ba --- /dev/null +++ b/BP100/TIMETR.80 @@ -0,0 +1,33 @@ + TIME SERIES-LINEAR TREND + +THIS PROGRAM COMPUTES A LINEAR TREND FOR A TIME SERIES. +THE DETRENDED VALUES FROM THE SERIES ARE ALSO PRINTED. + +PRESS ENTER TO BEGIN.? + + +GIVE AN UPPER BOUND ON THE NUMBER OF OBSERVATIONS YOU INTEND TO +USE.THIS WILL BE THE GREATEST NUMBER OF OBSERVATIONS POSSIBLE. +NUMBER = ? 10 +INPUT OBSERVATIONS 1 BY 1, PRESSING ENTER AFTER EACH. +INPUT 99999 AND ENTER WHEN DONE. + +PRESS ENTER TO BEGIN? 12345 +OBSERVATION 1 (99999 TO END)? 12 +OBSERVATION 2 (99999 TO END)? 9 +OBSERVATION 3 (99999 TO END)? 12 +OBSERVATION 4 (99999 TO END)? 9 +OBSERVATION 5 (99999 TO END)? 12 +OBSERVATION 6 (99999 TO END)? 9 +OBSERVATION 7 (99999 TO END)? 12 +OBSERVATION 8 (99999 TO END)? 99999 +TREND EQUATION IS T = 10.7143 + 0 Y WHERE T IS THE TREND +VALUE AND Y IS NO. OF YEARS FROM ORIGIN. +OBSERVATION # OBSERVATION VALUE SMOOTHED VALUE DETRENDED + 1 12.00 10.7143 1.12 + 2 9.00 10.7143 0.84 + 3 12.00 10.7143 1.12 + 4 9.00 10.7143 0.84 + 5 12.00 10.7143 1.12 + 6 9.00 10.7143 0.84 + 7 12.00 10.7143 1.12 diff --git a/BP100/TIMETR.BAS b/BP100/TIMETR.BAS new file mode 100644 index 0000000..0afac0d --- /dev/null +++ b/BP100/TIMETR.BAS @@ -0,0 +1,57 @@ +1 REM TIMETR +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"TIME SERIES-LINEAR TREND":PRINT +20 PRINT "THIS PROGRAM COMPUTES A LINEAR TREND FOR A TIME SERIES. +30 PRINT "THE DETRENDED VALUES FROM THE SERIES ARE ALSO PRINTED. +60 PRINT :INPUT "PRESS ENTER TO BEGIN.";Z9 +90 Z1$=" ### #####.## " +95 Z2$=" ### #####.## #####.#### ###.##" +100 CLS +120 PRINT @ 320," " +180 PRINT +190 PRINT "GIVE AN UPPER BOUND ON THE NUMBER OF OBSERVATIONS YOU INTEND TO +200 PRINT "USE.THIS WILL BE THE GREATEST NUMBER OF OBSERVATIONS POSSIBLE. +210 INPUT "NUMBER = ";N +220 DIM A(N),S(N) +225 CLS +230 PRINT "INPUT OBSERVATIONS 1 BY 1, PRESSING ENTER AFTER EACH. +240 PRINT "INPUT 99999 AND ENTER WHEN DONE." +250 PRINT +260 PRINT "PRESS ENTER TO BEGIN";:INPUT Z9 +300 CLS +310 I=0:S=0 +320 PRINT "OBSERVATION ";I+1;" (99999 TO END)";:INPUT A(I+1) +330 IF A(I+1)=99999 THEN GOTO 350 +340 I=I+1:GOTO 320 +350 REM COMPUTATION +355 S1=0:S2=0:S3=0:S4=0:S5=0 +360 FOR K=1 TO I +370 S1=S1+K:S2=S2+K[2:S3=S3+A(K):S4=S4+A(K)[2:S5=S5+K*A(K) +380 NEXT K +390 D=I*S2 - S1[2:A=(S3*S2-S1*S5)/D:B=(I*S5-S1*S3)/D +395 REM REGRESSION COEFFICIENTS ABOVE +400 FOR L=1 TO I +410 S(L)=A+B*L +420 NEXT L +430 GOSUB 2500 +440 FOR L=1 TO I +480 PRINT USING Z2$;L,A(L),S(L),A(L)/S(L) +490 IF L/14 = INT(L/14) THEN GOSUB 3000 +500 NEXT L +550 END +2000 REM INPUT ERROR SUBROUTINE +2010 PRINT :PRINT "INPUT ERROR. TRY AGAIN." +2020 FOR I= 1 TO 300:NEXT I +2030 RETURN +2500 REM HEADING SUBROUTINE +2510 CLS +2515 PRINT "TREND EQUATION IS T =";A;"+";B;"Y WHERE T IS THE TREND +2516 PRINT "VALUE AND Y IS NO. OF YEARS FROM ORIGIN. +2520 PRINT "OBSERVATION # OBSERVATION VALUE SMOOTHED VALUE DETRENDED" +2530 RETURN +3000 REM FULL SCREEN SUBROUTINE +3010 INPUT "TO CONTINUE PRESS ENTER";Z9 +3020 CLS +3030 GOSUB 2500 +3040 RETURN + diff --git a/BP100/TIMETR.INP b/BP100/TIMETR.INP new file mode 100644 index 0000000..90e7bc6 --- /dev/null +++ b/BP100/TIMETR.INP @@ -0,0 +1,11 @@ + +10 +12345 +12 +9 +12 +9 +12 +9 +12 +99999 diff --git a/BP100/TIMETR.OUT b/BP100/TIMETR.OUT new file mode 100644 index 0000000..bc4de6a --- /dev/null +++ b/BP100/TIMETR.OUT @@ -0,0 +1,33 @@ + TIME SERIES-LINEAR TREND + +THIS PROGRAM COMPUTES A LINEAR TREND FOR A TIME SERIES. +THE DETRENDED VALUES FROM THE SERIES ARE ALSO PRINTED. + +PRESS ENTER TO BEGIN.? + + +GIVE AN UPPER BOUND ON THE NUMBER OF OBSERVATIONS YOU INTEND TO +USE.THIS WILL BE THE GREATEST NUMBER OF OBSERVATIONS POSSIBLE. +NUMBER = ? 10 +INPUT OBSERVATIONS 1 BY 1, PRESSING ENTER AFTER EACH. +INPUT 99999 AND ENTER WHEN DONE. + +PRESS ENTER TO BEGIN? 12345 +OBSERVATION 1 (99999 TO END)? 12 +OBSERVATION 2 (99999 TO END)? 9 +OBSERVATION 3 (99999 TO END)? 12 +OBSERVATION 4 (99999 TO END)? 9 +OBSERVATION 5 (99999 TO END)? 12 +OBSERVATION 6 (99999 TO END)? 9 +OBSERVATION 7 (99999 TO END)? 12 +OBSERVATION 8 (99999 TO END)? 99999 +TREND EQUATION IS T = 10.7143 + 0 Y WHERE T IS THE TREND +VALUE AND Y IS NO. OF YEARS FROM ORIGIN. +OBSERVATION # OBSERVATION VALUE SMOOTHED VALUE DETRENDED + 1 12.00 10.7143 1.12 + 2 9.00 10.7143 0.84 + 3 12.00 10.7143 1.12 + 4 9.00 10.7143 0.84 + 5 12.00 10.7143 1.12 + 6 9.00 10.7143 0.84 + 7 12.00 10.7143 1.12 diff --git a/BP100/TIMETR.dif b/BP100/TIMETR.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/TIMETR.run b/BP100/TIMETR.run new file mode 100644 index 0000000..c77b3ba --- /dev/null +++ b/BP100/TIMETR.run @@ -0,0 +1,33 @@ + TIME SERIES-LINEAR TREND + +THIS PROGRAM COMPUTES A LINEAR TREND FOR A TIME SERIES. +THE DETRENDED VALUES FROM THE SERIES ARE ALSO PRINTED. + +PRESS ENTER TO BEGIN.? + + +GIVE AN UPPER BOUND ON THE NUMBER OF OBSERVATIONS YOU INTEND TO +USE.THIS WILL BE THE GREATEST NUMBER OF OBSERVATIONS POSSIBLE. +NUMBER = ? 10 +INPUT OBSERVATIONS 1 BY 1, PRESSING ENTER AFTER EACH. +INPUT 99999 AND ENTER WHEN DONE. + +PRESS ENTER TO BEGIN? 12345 +OBSERVATION 1 (99999 TO END)? 12 +OBSERVATION 2 (99999 TO END)? 9 +OBSERVATION 3 (99999 TO END)? 12 +OBSERVATION 4 (99999 TO END)? 9 +OBSERVATION 5 (99999 TO END)? 12 +OBSERVATION 6 (99999 TO END)? 9 +OBSERVATION 7 (99999 TO END)? 12 +OBSERVATION 8 (99999 TO END)? 99999 +TREND EQUATION IS T = 10.7143 + 0 Y WHERE T IS THE TREND +VALUE AND Y IS NO. OF YEARS FROM ORIGIN. +OBSERVATION # OBSERVATION VALUE SMOOTHED VALUE DETRENDED + 1 12.00 10.7143 1.12 + 2 9.00 10.7143 0.84 + 3 12.00 10.7143 1.12 + 4 9.00 10.7143 0.84 + 5 12.00 10.7143 1.12 + 6 9.00 10.7143 0.84 + 7 12.00 10.7143 1.12 diff --git a/BP100/TIMUSAN.80 b/BP100/TIMUSAN.80 new file mode 100644 index 0000000..295cf01 --- /dev/null +++ b/BP100/TIMUSAN.80 @@ -0,0 +1,50 @@ + TIME USE ANALYSIS + +TO USE THIS PROGRAM THE SUBJECT MUST KEEP A CAREFUL +LOG OF HOW HE SPENDS HIS TIME FOR A WEEK, OR POSSIBLY +SOME OTHER PERIOD. EACH CATEGORY OF ACTIVITY IS GIVEN A +CODE, E.G. LUNCH MIGHT BE A 1. THE CODES ARE SUCCESSIVE +INTEGERS BEGINNING WITH 1. + +WHEN THE DESIRED AMOUNT OF DATA IS AVAILABLE THEN +FOR EACH ACTIVITY AND TIME PERIOD THE USER ENTERS THE CODE +AND NUMBER OF MINUTES PERFORMING THE ACTIVITY. + +THE FINAL PRINTOUT IS A SUMMARY OF THE PROPORTION OF +TIME SPENT ON EACH ACTIVITY + +PRESS ENTER TO BEGIN? +ENTER THE NUMBER OF DIFFERENT ACTIVITY CATEGORIES? 3 + +CATEGORY 1 DESCRIPTION(<=10 CHARACTERS)? ABC +CATEGORY 2 DESCRIPTION(<=10 CHARACTERS)? MNO +CATEGORY 3 DESCRIPTION(<=10 CHARACTERS)? XYZ + + 1 ABC 2 MNO 3 XYZ +IS CATEGORY PRINTOUT ON LINE PRINTER DESIRED(Y/N)? Y +PRESS ENTER WHEN LINE PRINTER READY? +TIME USE INPUT NEXT. FOR EACH ITEM ENTER CODE AND +NUMBER OF MINUTES PERFORMING THE ACTIVITY AT THIS +TIME. ENTER 0,0 TO END AND -1,0 TO DISPLAY CATEGORIES +300 ENTRIES MAY BE MADE +THERE ARE 3 CATEGORIES. + +ENTRY 1 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? ABC,12 +*** Type Mismatch *** +*** Retry INPUT *** +ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 1,12 +ENTRY 2 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 1,17 +ENTRY 3 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 2,22 +ENTRY 4 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 2,33 +ENTRY 5 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 3,31 +ENTRY 6 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 3,39 +ENTRY 7 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? -1,0 + 1 ABC 2 MNO 3 XYZ +ENTRY 7 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 0,0 +IS LINE PRINTER OUTPUT AVAILABLE(Y/N)? Y +PRESS ENTER WHEN LINE PRINTER READY? +CAT # DESCRIPTION TIME(MIN) # OCCUR AVG.TIME % TOTAL + 1 ABC 29.0 2 14.5 18.83 + 2 MNO 55.0 2 27.5 35.71 + 3 XYZ 70.0 2 35.0 45.45 + diff --git a/BP100/TIMUSAN.BAS b/BP100/TIMUSAN.BAS new file mode 100644 index 0000000..7c292a9 --- /dev/null +++ b/BP100/TIMUSAN.BAS @@ -0,0 +1,69 @@ +1 REM TIMUSAN +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"TIME USE ANALYSIS":PRINT +20 PRINT "TO USE THIS PROGRAM THE SUBJECT MUST KEEP A CAREFUL +30 PRINT "LOG OF HOW HE SPENDS HIS TIME FOR A WEEK, OR POSSIBLY +35 PRINT "SOME OTHER PERIOD. EACH CATEGORY OF ACTIVITY IS GIVEN A +40 PRINT "CODE, E.G. LUNCH MIGHT BE A 1. THE CODES ARE SUCCESSIVE +45 PRINT "INTEGERS BEGINNING WITH 1. +50 PRINT :PRINT "WHEN THE DESIRED AMOUNT OF DATA IS AVAILABLE THEN +55 PRINT "FOR EACH ACTIVITY AND TIME PERIOD THE USER ENTERS THE CODE +60 PRINT "AND NUMBER OF MINUTES PERFORMING THE ACTIVITY. +70 PRINT :PRINT "THE FINAL PRINTOUT IS A SUMMARY OF THE PROPORTION OF +75 PRINT "TIME SPENT ON EACH ACTIVITY" +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT "ENTER THE NUMBER OF DIFFERENT ACTIVITY CATEGORIES";N +115 R=300:DIM A$(N+1),C(R),T(R),CT(N+1),NT(N+1) +120 PRINT +130 FOR I = 1 TO N +140 PRINT "CATEGORY";I;"DESCRIPTION(<=10 CHARACTERS)";:INPUT A$(I) +150 NEXT I +155 PRINT +160 GOSUB 1000 +165 PRINT +170 INPUT "IS CATEGORY PRINTOUT ON LINE PRINTER DESIRED(Y/N)";Z2$ +180 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 170 +190 IF Z2$="Y" THEN INPUT "PRESS ENTER WHEN LINE PRINTER READY";Z9$ +200 IF Z2$="Y" THEN FOR I=1 TO N:LPRINT I;"---";A$(I),:NEXT +202 IF Z2$="Y" THEN LPRINT " " +250 CLS +260 PRINT "TIME USE INPUT NEXT. FOR EACH ITEM ENTER CODE AND +265 PRINT "NUMBER OF MINUTES PERFORMING THE ACTIVITY AT THIS +270 PRINT "TIME. ENTER 0,0 TO END AND -1,0 TO DISPLAY CATEGORIES +271 PRINT "300 ENTRIES MAY BE MADE" +272 PRINT "THERE ARE ";N;" CATEGORIES." +275 J=0:REM NUMBER OF TIME USE ITEMS +280 PRINT +290 PRINT "ENTRY";J+1;:INPUT "ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY";C(J+1),T(J+1) +295 IF C(J+1)=0 AND T(J+1)=0 THEN GOTO 400 ' FINISH ENTRY +297 IF C(J+1)=-1 AND T(J+1)=0 THEN GOSUB 1000:GOTO 280 +300 IF C(J+1)<>INT(C(J+1)) OR C(J+1)<1 OR C(J+1)>N THEN GOSUB 10000:GOTO 280 +310 J=J+1 +320 T=T+T(J):REM TOTAL TIME +330 CT(C(J))=CT(C(J))+T(J):REM TOTAL TIME IN CATEGORY +335 NT(C(J))=NT(C(J))+1:REM NO. TIMES IN CATEGORY +340 GOTO 290 +400 REM ANALYSIS AND PRINTOUT +410 F$(1)="CAT # DESCRIPTION TIME(MIN) # OCCUR AVG.TIME % TOTAL" +420 F$(2)=" ### % % #####.# ### ####.# ###.##" +430 CLS +440 INPUT "IS LINE PRINTER OUTPUT AVAILABLE(Y/N)";Z2$ +450 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 440 +460 IF Z2$="Y" THEN INPUT "PRESS ENTER WHEN LINE PRINTER READY";Z9$ +470 IF Z2$="Y" THEN LPRINT TAB(20); "TIME USE ANALYSIS":LPRINT " " +480 CLS:PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1):LPRINT " " +490 FOR I= 1 TO N +500 IF NT(I)>0 THEN PRINT USING F$(2);I,A$(I),CT(I),NT(I),CT(I)/NT(I),CT(I)/T*100 +510 IF NT(I)=0 THEN PRINT USING F$(2);I,A$(I),CT(I),NT(I),0,CT(I)/T*100 +520 IF Z2$<>"Y" THEN GOTO 550 +530 IF NT(I)>0 THEN LPRINT USING F$(2);I,A$(I),CT(I),NT(I),CT(I)/NT(I),CT(I)/T*100 +540 IF NT(I)=0 THEN LPRINT USING F$(2);I,A$(I),CT(I),NT(I),0,CT(I)/T*100 +550 IF I/12=INT(I/12) THEN GOSUB 10100:CLS:PRINT F$(1) +560 NEXT I +570 PRINT :END +1000 REM LIST CATEGORIES ON SCREEN +1010 CLS:FOR I=1 TO N:PRINT I;" ";A$(I),:NEXT :RETURN +10000 PRINT "INPUT ERROR! TRY AGAIN!":FOR JE=1 TO 300:NEXT :RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/TIMUSAN.INP b/BP100/TIMUSAN.INP new file mode 100644 index 0000000..c11f0f1 --- /dev/null +++ b/BP100/TIMUSAN.INP @@ -0,0 +1,18 @@ + +3 +ABC +MNO +XYZ +Y + +ABC,12 +1,12 +1,17 +2,22 +2,33 +3,31 +3,39 +-1,0 +0,0 +Y + diff --git a/BP100/TIMUSAN.OUT b/BP100/TIMUSAN.OUT new file mode 100644 index 0000000..e21f516 --- /dev/null +++ b/BP100/TIMUSAN.OUT @@ -0,0 +1,50 @@ + TIME USE ANALYSIS + +TO USE THIS PROGRAM THE SUBJECT MUST KEEP A CAREFUL +LOG OF HOW HE SPENDS HIS TIME FOR A WEEK, OR POSSIBLY +SOME OTHER PERIOD. EACH CATEGORY OF ACTIVITY IS GIVEN A +CODE, E.G. LUNCH MIGHT BE A 1. THE CODES ARE SUCCESSIVE +INTEGERS BEGINNING WITH 1. + +WHEN THE DESIRED AMOUNT OF DATA IS AVAILABLE THEN +FOR EACH ACTIVITY AND TIME PERIOD THE USER ENTERS THE CODE +AND NUMBER OF MINUTES PERFORMING THE ACTIVITY. + +THE FINAL PRINTOUT IS A SUMMARY OF THE PROPORTION OF +TIME SPENT ON EACH ACTIVITY + +PRESS ENTER TO BEGIN? +ENTER THE NUMBER OF DIFFERENT ACTIVITY CATEGORIES? 3 + +CATEGORY 1 DESCRIPTION(<=10 CHARACTERS)? ABC +CATEGORY 2 DESCRIPTION(<=10 CHARACTERS)? MNO +CATEGORY 3 DESCRIPTION(<=10 CHARACTERS)? XYZ + + 1 ABC 2 MNO 3 XYZ +IS CATEGORY PRINTOUT ON LINE PRINTER DESIRED(Y/N)? Y +PRESS ENTER WHEN LINE PRINTER READY? +TIME USE INPUT NEXT. FOR EACH ITEM ENTER CODE AND +NUMBER OF MINUTES PERFORMING THE ACTIVITY AT THIS +TIME. ENTER 0,0 TO END AND -1,0 TO DISPLAY CATEGORIES +300 ENTRIES MAY BE MADE +THERE ARE 3 CATEGORIES. + +ENTRY 1 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? ABC,12 +*** Type Mismatch *** +*** Retry INPUT *** +ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 1,12 +ENTRY 2 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 1,17 +ENTRY 3 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 2,22 +ENTRY 4 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 2,33 +ENTRY 5 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 3,31 +ENTRY 6 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 3,39 +ENTRY 7 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? -1,0 + 1 ABC 2 MNO 3 XYZ +ENTRY 7 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 0,0 +IS LINE PRINTER OUTPUT AVAILABLE(Y/N)? Y +PRESS ENTER WHEN LINE PRINTER READY? +CAT # DESCRIPTION TIME(MIN) # OCCUR AVG.TIME % TOTAL + 1 ABC 29.0 2 14.5 18.83 + 2 MNO 55.0 2 27.5 35.71 + 3 XYZ 70.0 2 35.0 45.45 + diff --git a/BP100/TIMUSAN.dif b/BP100/TIMUSAN.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/TIMUSAN.run b/BP100/TIMUSAN.run new file mode 100644 index 0000000..295cf01 --- /dev/null +++ b/BP100/TIMUSAN.run @@ -0,0 +1,50 @@ + TIME USE ANALYSIS + +TO USE THIS PROGRAM THE SUBJECT MUST KEEP A CAREFUL +LOG OF HOW HE SPENDS HIS TIME FOR A WEEK, OR POSSIBLY +SOME OTHER PERIOD. EACH CATEGORY OF ACTIVITY IS GIVEN A +CODE, E.G. LUNCH MIGHT BE A 1. THE CODES ARE SUCCESSIVE +INTEGERS BEGINNING WITH 1. + +WHEN THE DESIRED AMOUNT OF DATA IS AVAILABLE THEN +FOR EACH ACTIVITY AND TIME PERIOD THE USER ENTERS THE CODE +AND NUMBER OF MINUTES PERFORMING THE ACTIVITY. + +THE FINAL PRINTOUT IS A SUMMARY OF THE PROPORTION OF +TIME SPENT ON EACH ACTIVITY + +PRESS ENTER TO BEGIN? +ENTER THE NUMBER OF DIFFERENT ACTIVITY CATEGORIES? 3 + +CATEGORY 1 DESCRIPTION(<=10 CHARACTERS)? ABC +CATEGORY 2 DESCRIPTION(<=10 CHARACTERS)? MNO +CATEGORY 3 DESCRIPTION(<=10 CHARACTERS)? XYZ + + 1 ABC 2 MNO 3 XYZ +IS CATEGORY PRINTOUT ON LINE PRINTER DESIRED(Y/N)? Y +PRESS ENTER WHEN LINE PRINTER READY? +TIME USE INPUT NEXT. FOR EACH ITEM ENTER CODE AND +NUMBER OF MINUTES PERFORMING THE ACTIVITY AT THIS +TIME. ENTER 0,0 TO END AND -1,0 TO DISPLAY CATEGORIES +300 ENTRIES MAY BE MADE +THERE ARE 3 CATEGORIES. + +ENTRY 1 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? ABC,12 +*** Type Mismatch *** +*** Retry INPUT *** +ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 1,12 +ENTRY 2 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 1,17 +ENTRY 3 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 2,22 +ENTRY 4 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 2,33 +ENTRY 5 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 3,31 +ENTRY 6 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 3,39 +ENTRY 7 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? -1,0 + 1 ABC 2 MNO 3 XYZ +ENTRY 7 ENTER CATEGORY #,TIME(0,0 END -1,0 DISPLAY? 0,0 +IS LINE PRINTER OUTPUT AVAILABLE(Y/N)? Y +PRESS ENTER WHEN LINE PRINTER READY? +CAT # DESCRIPTION TIME(MIN) # OCCUR AVG.TIME % TOTAL + 1 ABC 29.0 2 14.5 18.83 + 2 MNO 55.0 2 27.5 35.71 + 3 XYZ 70.0 2 35.0 45.45 + diff --git a/BP100/TRANS.80 b/BP100/TRANS.80 new file mode 100644 index 0000000..2fa9529 --- /dev/null +++ b/BP100/TRANS.80 @@ -0,0 +1,48 @@ + TRANSPORTATION PROBLEM + +THE TRANSPORTATION PROBLEM EXAMINED HERE IS THE FOLLOWING: + THERE ARE N SOURCES OF SUPPLY AND M DESTINATIONS FOR A +GOOD. EACH OF THE SUPPLY SOURCES CAN SUPPLY A GIVEN AMOUNT OF +THE GOOD AND EACH DESTINATION HAS A CERTAIN REQUIREMENT. WE +REQUIRE THAT THE TOTAL OF POSSIBLE SUPPLY EQUALS THE TOTAL +REQUIRED.TO DELIVER A UNIT OF THE ITEM FROM A GIVEN SOURCE TO +A GIVEN DESTINATION HAS A KNOWN COST,DEPENDING UPON THE SOURCE- +DESTINATION COMBINATION. THE PROBLEM ATTEMPTS TO DETERMINE +WHICH SHIPPING ASSIGNMENT MINIMIZES SHIPPING COST. + +PRESS ENTER TO CONTINUE? +ENTER NUMBER OF SOURCES ? 3 +ENTER NUMBER OF DESTINATIONS? 2 + +SOURCE 1 + UNIT COST TO DESTINATION 1 ? 1 + UNIT COST TO DESTINATION 2 ? 2 +CAPACITY OF SOURCE 1 ? 3 +SOURCE 2 + UNIT COST TO DESTINATION 1 ? 2 + UNIT COST TO DESTINATION 2 ? 1 +CAPACITY OF SOURCE 2 ? 5 +SOURCE 3 + UNIT COST TO DESTINATION 1 ? 1 + UNIT COST TO DESTINATION 2 ? 1 +CAPACITY OF SOURCE 3 ? 2 + +REQUIREMENTS OF DESTINATION 1 ? 4 +REQUIREMENTS OF DESTINATION 2 ? 6 +IS PRINTER COPY OF INPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? + + + + COMPUTING +IS PRINTER OUTPUT DESIRED(Y/N)? Y +SHIPPING ASSIGNMENTS + FROM SOURCE 1 TO DESTINATION 1 : 3.0 COST= 3.00 + FROM SOURCE 2 TO DESTINATION 2 : 5.0 COST= 5.00 + FROM SOURCE 3 TO DESTINATION 1 : 1.0 COST= 1.00 + FROM SOURCE 3 TO DESTINATION 2 : 1.0 COST= 1.00 + TOTAL COST = 10 + +PRESS ENTER WHEN PRINTER READY? + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/TRANS.BAS b/BP100/TRANS.BAS new file mode 100644 index 0000000..21126b9 --- /dev/null +++ b/BP100/TRANS.BAS @@ -0,0 +1,239 @@ +1 REM TRANS +5 CLEAR 1000 +10 CLS:PRINT TAB(20);"TRANSPORTATION PROBLEM":PRINT +20 PRINT "THE TRANSPORTATION PROBLEM EXAMINED HERE IS THE FOLLOWING: +25 PRINT " THERE ARE N SOURCES OF SUPPLY AND M DESTINATIONS FOR A +30 PRINT "GOOD. EACH OF THE SUPPLY SOURCES CAN SUPPLY A GIVEN AMOUNT OF +35 PRINT"THE GOOD AND EACH DESTINATION HAS A CERTAIN REQUIREMENT. WE +40 PRINT "REQUIRE THAT THE TOTAL OF POSSIBLE SUPPLY EQUALS THE TOTAL +45 PRINT "REQUIRED.TO DELIVER A UNIT OF THE ITEM FROM A GIVEN SOURCE TO +50 PRINT "A GIVEN DESTINATION HAS A KNOWN COST,DEPENDING UPON THE SOURCE- +55 PRINT "DESTINATION COMBINATION. THE PROBLEM ATTEMPTS TO DETERMINE +60 PRINT "WHICH SHIPPING ASSIGNMENT MINIMIZES SHIPPING COST. +90 PRINT :INPUT "PRESS ENTER TO CONTINUE";Z9$ +95 CLEAR 1000 +100 I=10:J=10:REM I=MXX SOURCES,J=MXXIMUM DESTINATIONS +105 MXX=I:IF J>MXX THEN J=MXX +110 DIM A(MXX),B(MXX),CC(MXX,MXX),X(MXX,MXX),N(MXX),U(MXX) +115 DIM HS(MXX,MXX) +120 DIM G(MXX),V(MXX),T(MXX),R(MXX),S(50),L(200) +125 FOR I=1 TO MXX:V(I)=1:NEXT +130 CLS +140 INPUT "ENTER NUMBER OF SOURCES ";M +150 INPUT "ENTER NUMBER OF DESTINATIONS";N +160 PRINT +170 FOR I=1 TO M +180 PRINT "SOURCE";I +190 FOR J=1 TO N +200 PRINT " UNIT COST TO DESTINATION ";J;:INPUT CC(I,J) +205 HS(I,J)=CC(I,J):REM HOLD UNTIL END +210 NEXT J +220 PRINT "CAPACITY OF SOURCE";I;:INPUT A(I) +225 A8=A8+A(I) +230 NEXT I +240 PRINT +250 FOR I=1 TO N +260 PRINT "REQUIREMENTS OF DESTINATION";I;:INPUT B(I) +265 B8=B8+B(I) +270 NEXT +280 IF A8<>B8 THEN PRINT "TOTAL SUPPLY MUST EQUAL TOTAL DEMAND IN THIS PROGRAM":GOSUB 10100:GOTO 95 +300 CLS:INPUT "IS PRINTER COPY OF INPUT DESIRED(Y/N)";Z2$ +310 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 300 +320 IF Z2$="N" THEN GOTO 700 +330 REM PRINTER INPUT ROUTINE +340 INPUT "PRESS ENTER WHEN PRINTER READY";Z9$ +350 LPRINT "NUMBER OF SOURCES = ";M +360 LPRINT "NUMBER OF DESTINATIONS =";N +370 LPRINT " " +380 FOR I=1 TO M +390 LPRINT "SOURCE";I +400 FOR J=1 TO N +410 LPRINT " UNIT COST TO DESTINATION ";J;"EQUALS ";CC(I,J) +420 NEXT J +430 LPRINT "CAPACITY OF SOURCE";I;"EQUALS ";A(I) +440 NEXT I +450 LPRINT " " +460 FOR I=1 TO N +470 LPRINT "REQUIREMENTS OF DESTINATION";I;"EQUALS ";B(I) +480 NEXT +700 CLS:PRINT :PRINT :PRINT :PRINT TAB(20);"COMPUTING" +1000 FOR I=1 TO M:N(I)=(I-1)*N:NEXT +1005 C=0:G=0 +1010 FOR I=1 TO M +1015 H=99999 +1020 FOR J=1 TO N +1025 IF CC(I,J)>=H THEN GOTO 1035 +1030 H=CC(I,J) +1035 NEXT J +1040 FOR J=1 TO N +1045 CC(I,J)=CC(I,J)-H:C1=CC(I,J) +1050 IF C1<>0 THEN GOTO 1070 +1055 V(J)=0 +1060 N(I)=N(I)+1:N1=N(I) +1065 L(N1)=J +1070 NEXT J +1075 C=H*A(I)+C +1080 NEXT I +1085 FOR J=1 TO N +1090 IF V(J)=0 THEN GOTO 1155 +1095 H=99999 +1100 FOR I=1 TO M +1105 IF CC(I,J)>=H THEN GOTO 1115 +1110 H=CC(I,J) +1115 NEXT I +1120 FOR I=1 TO M +1125 CC(I,J)=CC(I,J)-H:C1=CC(I,J) +1130 IF C1<>0 THEN GOTO 1145 +1135 N(I)=N(I)+1:N1=N(I) +1140 L(N1)=J +1145 NEXT I +1150 C=H*B(J)+C +1155 NEXT J +1160 FOR I=1 TO M +1165 A1=A(I):N1=N(I) +1170 FOR U= (I-1)*N+1 TO N1 +1175 IF A1=0 THEN GOTO 1220 +1180 J=L(U):B1=B(J) +1185 IF B1=0 THEN GOTO 1215 +1190 H=A1 +1195 IF A10 THEN GOTO 1320 +1310 R(J)=I:L=L+1:V(L)=J +1315 IF B(J)>0 THEN GOTO 1390 +1320 NEXT S +1325 NEXT U +1330 IF L=0 THEN GOTO 1490 +1335 K=0 +1340 FOR V=1 TO L +1345 J=V(V):L1=T(J) +1350 FOR S=T(J-1)+1 TO L1 +1355 I=S(S) +1360 IF G(I)<>0 THEN GOTO 1370 +1365 G(I)=J:K=K+1:U(K)=I +1370 NEXT S +1375 NEXT V +1380 IF K=0 THEN GOTO 1490 +1385 GOTO 1280 +1390 H=B(J):P=J +1395 I=R(J):J=G(I) +1400 IF J<>99999 THEN GOTO 1420 +1405 IF A(I)>=H THEN 1435 +1410 H=A(I) +1415 GOTO 1435 +1420 IF X(I,J)>=H THEN GOTO 1395 +1425 H=X(I,J) +1430 GOTO 1395 +1435 J=P:B(J)=B(J)-H:A(I)=A(I)-H:G=G-H +1440 REM +1445 I=R(J):X1=X(I,J):X(I,J)=X1+H +1450 IF X1<>0 THEN GOTO 1460 +1455 GOSUB 1705 +1460 J=G(I) +1465 IF J=99999 THEN GOTO 1230 +1470 X(I,J) =X(I,J)-H:X1=X(I,J) +1475 IF X1<>0 THEN GOTO 1440 +1480 GOSUB 1735 +1485 GOTO 1440 +1490 K=0:L=N+1 +1495 FOR J=1 TO N +1500 IF R(J)<>0 THEN GOTO 1515 +1505 K=K+1:V(K)=J +1510 GOTO 1520 +1515 L=L-1:V(L)=J +1520 NEXT J +1525 H=99999 +1530 FOR I=1 TO M +1535 IF G(I)=0 THEN GOTO 1565 +1540 FOR S=1 TO K +1545 J=V(S) +1550 IF CC(I,J)>=H THEN GOTO 1560 +1555 H=CC(I,J) +1560 NEXT S +1565 NEXT I +1570 FOR I=1 TO M +1575 F=0 +1580 IF G(I)=0 THEN GOTO 1590 +1585 F=1 +1590 N1=(I-1)*N +1595 FOR S=L TO N +1600 J=V(S) +1605 IF F=0 THEN GOTO 1620 +1610 C1=CC(I,J) +1615 GOTO 1625 +1620 CC(I,J)=CC(I,J)+H:C1=CC(I,J) +1625 IF C1<>0 THEN GOTO 1635 +1630 N1=N1+1:L(N1)=J +1635 NEXT S +1640 FOR S=1 TO K +1645 J=V(S) +1650 IF F=0 THEN GOTO 1665 +1655 CC(I,J)=CC(I,J)-H:C1=CC(I,J) +1660 GOTO 1670 +1665 C1=CC(I,J) +1670 IF C1<>0 THEN GOTO 1680 +1675 N1=N1+1:L(N1)=J +1680 NEXT S +1685 N(I)=N1 +1690 NEXT I +1695 C=H*G+C +1700 GOTO 1235 +1705 REM +1710 L1=T(J) +1715 FOR T=T(N) TO L1 STEP -1:S(T+1)=S(T):NEXT +1720 FOR T=J TO N:T(T)=T(T)+1:NEXT +1725 S(L1+1)=I +1730 RETURN +1735 REM +1740 L1=T(J) +1745 FOR T=T(J-1)+1 TO L1 +1750 IF S(T)<>I THEN GOTO 1765 +1755 S=T +1760 GOTO 1770 +1765 NEXT T +1770 FOR T=J TO N:T(T)=T(T)-1:NEXT +1775 L1=T(N) +1780 FOR T=S TO L1:S(T)=S(T+1):NEXT +1785 RETURN +3000 CLS:INPUT "IS PRINTER OUTPUT DESIRED(Y/N)";Z2$ +3005 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 3000 +3010 CLS:PRINT "SHIPPING ASSIGNMENTS" +3015 F$(1)=" FROM SOURCE ## TO DESTINATION ## : #####.# COST= ######.##" +3020 FOR I=1 TO M:FOR J=1 TO N +3025 IF X(I,J)<>0 THEN PRINT USING F$(1);I,J,X(I,J),X(I,J)*HS(I,J) +3030 NEXT J:NEXT I +3035 PRINT " TOTAL COST = ";C +3040 IF Z2$="N" THEN GOTO 3080 +3045 PRINT :INPUT "PRESS ENTER WHEN PRINTER READY";Z9$ +3050 LPRINT "SHIPPING ASSIGNMENTS" +3055 FOR I=1 TO M:FOR J=1 TO N +3060 IF X(I,J)<>0 THEN LPRINT USING F$(1);I,J,X(I,J),X(I,J)*HS(I,J) +3065 NEXT J:NEXT I +3070 LPRINT " " +3075 LPRINT " TOTAL COST = ";C +3080 PRINT :INPUT "PRESS ENTER FOR MORE COMPUTATION";Z9$ +3082 IF Z9$ = "-1" THEN END +3085 GOTO 95 +10000 PRINT "INPUT ERROR! TRY AGAIN!":FOR JJ=1 TO 300:NEXT :RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/TRANS.INP b/BP100/TRANS.INP new file mode 100644 index 0000000..0ab5087 --- /dev/null +++ b/BP100/TRANS.INP @@ -0,0 +1,19 @@ + +3 +2 +1 +2 +3 +2 +1 +5 +1 +1 +2 +4 +6 +Y + +Y + +-1 diff --git a/BP100/TRANS.OUT b/BP100/TRANS.OUT new file mode 100644 index 0000000..5b7cfe6 --- /dev/null +++ b/BP100/TRANS.OUT @@ -0,0 +1,48 @@ + TRANSPORTATION PROBLEM + +THE TRANSPORTATION PROBLEM EXAMINED HERE IS THE FOLLOWING: + THERE ARE N SOURCES OF SUPPLY AND M DESTINATIONS FOR A +GOOD. EACH OF THE SUPPLY SOURCES CAN SUPPLY A GIVEN AMOUNT OF +THE GOOD AND EACH DESTINATION HAS A CERTAIN REQUIREMENT. WE +REQUIRE THAT THE TOTAL OF POSSIBLE SUPPLY EQUALS THE TOTAL +REQUIRED.TO DELIVER A UNIT OF THE ITEM FROM A GIVEN SOURCE TO +A GIVEN DESTINATION HAS A KNOWN COST,DEPENDING UPON THE SOURCE- +DESTINATION COMBINATION. THE PROBLEM ATTEMPTS TO DETERMINE +WHICH SHIPPING ASSIGNMENT MINIMIZES SHIPPING COST. + +PRESS ENTER TO CONTINUE? +ENTER NUMBER OF SOURCES ? 3 +ENTER NUMBER OF DESTINATIONS? 2 + +SOURCE 1 + UNIT COST TO DESTINATION 1 ? 1 + UNIT COST TO DESTINATION 2 ? 2 +CAPACITY OF SOURCE 1 ? 3 +SOURCE 2 + UNIT COST TO DESTINATION 1 ? 2 + UNIT COST TO DESTINATION 2 ? 1 +CAPACITY OF SOURCE 2 ? 5 +SOURCE 3 + UNIT COST TO DESTINATION 1 ? 1 + UNIT COST TO DESTINATION 2 ? 1 +CAPACITY OF SOURCE 3 ? 2 + +REQUIREMENTS OF DESTINATION 1 ? 4 +REQUIREMENTS OF DESTINATION 2 ? 6 +IS PRINTER COPY OF INPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? + + + + COMPUTING +IS PRINTER OUTPUT DESIRED(Y/N)? Y +SHIPPING ASSIGNMENTS + FROM SOURCE 1 TO DESTINATION 1 : 3.0 COST= 3.00 + FROM SOURCE 2 TO DESTINATION 2 : 5.0 COST= 5.00 + FROM SOURCE 3 TO DESTINATION 1 : 1.0 COST= 1.00 + FROM SOURCE 3 TO DESTINATION 2 : 1.0 COST= 1.00 + TOTAL COST = 10 + +PRESS ENTER WHEN PRINTER READY? + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/TRANS.dif b/BP100/TRANS.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/TRANS.run b/BP100/TRANS.run new file mode 100644 index 0000000..2fa9529 --- /dev/null +++ b/BP100/TRANS.run @@ -0,0 +1,48 @@ + TRANSPORTATION PROBLEM + +THE TRANSPORTATION PROBLEM EXAMINED HERE IS THE FOLLOWING: + THERE ARE N SOURCES OF SUPPLY AND M DESTINATIONS FOR A +GOOD. EACH OF THE SUPPLY SOURCES CAN SUPPLY A GIVEN AMOUNT OF +THE GOOD AND EACH DESTINATION HAS A CERTAIN REQUIREMENT. WE +REQUIRE THAT THE TOTAL OF POSSIBLE SUPPLY EQUALS THE TOTAL +REQUIRED.TO DELIVER A UNIT OF THE ITEM FROM A GIVEN SOURCE TO +A GIVEN DESTINATION HAS A KNOWN COST,DEPENDING UPON THE SOURCE- +DESTINATION COMBINATION. THE PROBLEM ATTEMPTS TO DETERMINE +WHICH SHIPPING ASSIGNMENT MINIMIZES SHIPPING COST. + +PRESS ENTER TO CONTINUE? +ENTER NUMBER OF SOURCES ? 3 +ENTER NUMBER OF DESTINATIONS? 2 + +SOURCE 1 + UNIT COST TO DESTINATION 1 ? 1 + UNIT COST TO DESTINATION 2 ? 2 +CAPACITY OF SOURCE 1 ? 3 +SOURCE 2 + UNIT COST TO DESTINATION 1 ? 2 + UNIT COST TO DESTINATION 2 ? 1 +CAPACITY OF SOURCE 2 ? 5 +SOURCE 3 + UNIT COST TO DESTINATION 1 ? 1 + UNIT COST TO DESTINATION 2 ? 1 +CAPACITY OF SOURCE 3 ? 2 + +REQUIREMENTS OF DESTINATION 1 ? 4 +REQUIREMENTS OF DESTINATION 2 ? 6 +IS PRINTER COPY OF INPUT DESIRED(Y/N)? Y +PRESS ENTER WHEN PRINTER READY? + + + + COMPUTING +IS PRINTER OUTPUT DESIRED(Y/N)? Y +SHIPPING ASSIGNMENTS + FROM SOURCE 1 TO DESTINATION 1 : 3.0 COST= 3.00 + FROM SOURCE 2 TO DESTINATION 2 : 5.0 COST= 5.00 + FROM SOURCE 3 TO DESTINATION 1 : 1.0 COST= 1.00 + FROM SOURCE 3 TO DESTINATION 2 : 1.0 COST= 1.00 + TOTAL COST = 10 + +PRESS ENTER WHEN PRINTER READY? + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/UPSZONE.80 b/BP100/UPSZONE.80 new file mode 100644 index 0000000..e97ff69 --- /dev/null +++ b/BP100/UPSZONE.80 @@ -0,0 +1,34 @@ + UNITED PARCEL SERVICE ZONE CHART + +THIS PROGRAM WILL PRINT OUT THE UPS ZONE GIVEN THE ZIPCODE +OF THE DESTINATION. AQCTUALLY THIS IS THE ZONE CHART FOR +SHIPPERS WITHIN THE 10901 - 10999 ZIP CODE AREA. THOSE USERS +WHO DESIRE ANOTHER AREA NEED ONLY CHANGE THE DATA STATEMANTS. +THE PROGRAM COULD ALSO BE USED AS A SUBROUTINE IN AN INVOICING +SYSTEM WHERE ZONES ARE NEEDED TO COMPUTE RATES. +THE DATA ENTRIES ARE IN THE FORM LOW ZIP,HIGH ZIP, AND UPS +ZONE FOR EACH REGION. ONLY THE 1ST 3 DIGITS OF THE ZIP ARE +USED. + +PRESS ENTER TO BEGIN? + + + + LOADING DATA +INPUT DESIRED ZIP CODE? 12345 +THE UPS ZONE FOR ZIP CODE 12345 IS ZONE 2 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 23456 +THE UPS ZONE FOR ZIP CODE 23456 IS ZONE 4 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 34567 +NO ZONE FOR ZIP 34567 AVAILABLE +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 45678 +THE UPS ZONE FOR ZIP CODE 45678 IS ZONE 4 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? -1 diff --git a/BP100/UPSZONE.BAS b/BP100/UPSZONE.BAS new file mode 100644 index 0000000..f14cc28 --- /dev/null +++ b/BP100/UPSZONE.BAS @@ -0,0 +1,57 @@ +1 REM UPSZONE +5 CLEAR 1000 +10 CLS:PRINT TAB(10); "UNITED PARCEL SERVICE ZONE CHART":PRINT +20 PRINT"THIS PROGRAM WILL PRINT OUT THE UPS ZONE GIVEN THE ZIPCODE +25 PRINT"OF THE DESTINATION. AQCTUALLY THIS IS THE ZONE CHART FOR +30 PRINT"SHIPPERS WITHIN THE 10901 - 10999 ZIP CODE AREA. THOSE USERS +35 PRINT"WHO DESIRE ANOTHER AREA NEED ONLY CHANGE THE DATA STATEMANTS. +40 PRINT"THE PROGRAM COULD ALSO BE USED AS A SUBROUTINE IN AN INVOICING +45 PRINT"SYSTEM WHERE ZONES ARE NEEDED TO COMPUTE RATES. +50 PRINT"THE DATA ENTRIES ARE IN THE FORM LOW ZIP,HIGH ZIP, AND UPS +55 PRINT"ZONE FOR EACH REGION. ONLY THE 1ST 3 DIGITS OF THE ZIP ARE +60 PRINT"USED. +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 DEFINT X +110 DIM XL(200),XH(200),XZ(200) +120 REM XL LOW ZIP, XH HIGH ZIP, XZ ZONE +130 CLS:PRINT:PRINT:PRINT:PRINT TAB(20); "LOADING DATA" +150 ON ERROR GOTO 9000 +160 N=1 +170 READ XL(N),XH(N),XZ(N) +180 N=N+1:GOTO 170 +200 CLS +210 INPUT"INPUT DESIRED ZIP CODE";ZIP +215 IF ZIP = -1 THEN END +220 IF INT(ZIP/100)<=XL(INT(N/2)) THEN I=1 :ELSE I=INT(N/2) +230 ZZIP=INT(ZIP/100) +240 IF XL(I)<=ZZIP AND ZZIP<=XH(I) THEN GOTO 300 +250 IF I=N THEN PRINT"NO ZONE FOR ZIP";ZIP;" AVAILABLE":GOSUB 10100:PRINT:GOTO 210 +260 I=I+1:GOTO 240 +300 PRINT"THE UPS ZONE FOR ZIP CODE ";ZIP;"IS ZONE";XZ(I) +310 GOSUB 10100:PRINT:GOTO 210 +1000 DATA 010,016,2,017,026,3,027,029,2,030,033,3,034,034,2 +1002 DATA 035,043,3,044,044,4,045,045,3,046,049,4,050,051,3 +1004 DATA 052,053,2,054,059,3,060,089,2,100,128,2,129,132,3 +1006 DATA 133,135,2,136,136,3,137,139,2,140,147,3,148,149,2 +1008 DATA 150,152,3,153,153,4,154,163,3,164,165,4,166,168,3 +1010 DATA 169,171,2,172,172,3,173,199,2,200,218,3,219,219,2 +1012 DATA 220,232,3,233,237,4,238,238,3,239,253,4,254,254,3 +1014 DATA 255,264,4,265,265,3,266,266,4,267,268,3,270,288,4 +1016 DATA 289,289,5,290,293,4,294,294,5,295,297,4,298,299,5 +1018 DATA 300,324,5,325,325,6,326,329,5,330,337,6,338,338,5 +1020 DATA 339,339,6,350,364,5,365,366,6,367,374,5,376,376,4 +1022 DATA 377,386,5,387,387,6,388,389,5,390,392,6,393,393,5 +1024 DATA 394,396,6,397,397,5,400,402,5,403,418,4,420,427,5 +1026 DATA 430,458,4,460,466,5,467,468,4,469,469,5,470,470,4 +1028 DATA 471,472,5,473,473,4,474,479,5,480,495,4,496,496,5 +1030 DATA 497,497,4,498,499,5,500,504,5,505,505,6,506,507,5 +1032 DATA 508,516,6,520,560,5,561,576,6,577,577,7,580,585,6 +1034 DATA 586,586,7,587,587,6,588,593,7,594,594,8,595,595,7 +1036 DATA 596,599,8,600,639,5,640,648,6,650,655,5,656,676,6 +1038 DATA 677,677,7,678,678,6,679,679,7,680,692,6,693,693,7 +1040 DATA 700,722,6,723,725,5,726,738,6,739,739,7,740,763,6 +1042 DATA 764,769,7,770,778,6,779,797,7,798,799,8,800,831,7 +1044 DATA 832,865,8,870,871,7,873,874,8,875,877,7,878,880,8 +1046 DATA 881,884,7,890,898,8,900,961,8,970,986,8,988,994,8 +9000 RESUME 200 +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/UPSZONE.INP b/BP100/UPSZONE.INP new file mode 100644 index 0000000..a0ee205 --- /dev/null +++ b/BP100/UPSZONE.INP @@ -0,0 +1,10 @@ + +12345 + +23456 + +34567 + +45678 + +-1 diff --git a/BP100/UPSZONE.OUT b/BP100/UPSZONE.OUT new file mode 100644 index 0000000..3699cb6 --- /dev/null +++ b/BP100/UPSZONE.OUT @@ -0,0 +1,34 @@ + UNITED PARCEL SERVICE ZONE CHART + +THIS PROGRAM WILL PRINT OUT THE UPS ZONE GIVEN THE ZIPCODE +OF THE DESTINATION. AQCTUALLY THIS IS THE ZONE CHART FOR +SHIPPERS WITHIN THE 10901 - 10999 ZIP CODE AREA. THOSE USERS +WHO DESIRE ANOTHER AREA NEED ONLY CHANGE THE DATA STATEMANTS. +THE PROGRAM COULD ALSO BE USED AS A SUBROUTINE IN AN INVOICING +SYSTEM WHERE ZONES ARE NEEDED TO COMPUTE RATES. +THE DATA ENTRIES ARE IN THE FORM LOW ZIP,HIGH ZIP, AND UPS +ZONE FOR EACH REGION. ONLY THE 1ST 3 DIGITS OF THE ZIP ARE +USED. + +PRESS ENTER TO BEGIN? + + + + LOADING DATA +INPUT DESIRED ZIP CODE? 12345 +THE UPS ZONE FOR ZIP CODE 12345 IS ZONE 2 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 23456 +THE UPS ZONE FOR ZIP CODE 23456 IS ZONE 4 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 34567 +NO ZONE FOR ZIP 34567 AVAILABLE +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 45678 +THE UPS ZONE FOR ZIP CODE 45678 IS ZONE 4 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? -1 diff --git a/BP100/UPSZONE.dif b/BP100/UPSZONE.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/UPSZONE.run b/BP100/UPSZONE.run new file mode 100644 index 0000000..e97ff69 --- /dev/null +++ b/BP100/UPSZONE.run @@ -0,0 +1,34 @@ + UNITED PARCEL SERVICE ZONE CHART + +THIS PROGRAM WILL PRINT OUT THE UPS ZONE GIVEN THE ZIPCODE +OF THE DESTINATION. AQCTUALLY THIS IS THE ZONE CHART FOR +SHIPPERS WITHIN THE 10901 - 10999 ZIP CODE AREA. THOSE USERS +WHO DESIRE ANOTHER AREA NEED ONLY CHANGE THE DATA STATEMANTS. +THE PROGRAM COULD ALSO BE USED AS A SUBROUTINE IN AN INVOICING +SYSTEM WHERE ZONES ARE NEEDED TO COMPUTE RATES. +THE DATA ENTRIES ARE IN THE FORM LOW ZIP,HIGH ZIP, AND UPS +ZONE FOR EACH REGION. ONLY THE 1ST 3 DIGITS OF THE ZIP ARE +USED. + +PRESS ENTER TO BEGIN? + + + + LOADING DATA +INPUT DESIRED ZIP CODE? 12345 +THE UPS ZONE FOR ZIP CODE 12345 IS ZONE 2 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 23456 +THE UPS ZONE FOR ZIP CODE 23456 IS ZONE 4 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 34567 +NO ZONE FOR ZIP 34567 AVAILABLE +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? 45678 +THE UPS ZONE FOR ZIP CODE 45678 IS ZONE 4 +PRESS ENTER TO CONTINUE? + +INPUT DESIRED ZIP CODE? -1 diff --git a/BP100/UTILITY.80 b/BP100/UTILITY.80 new file mode 100644 index 0000000..4d5b2ba --- /dev/null +++ b/BP100/UTILITY.80 @@ -0,0 +1,148 @@ + PERSONAL UTILITY FUNCTION + +UTILITY THEORY HAS TO DO WITH ONE'S PREFERENCE FOR VARIOUS +DECISION ALTERNATIVES. SUPPOSE EVERY DECISION ONE CAN MAKE +LEADS TO A KNOWN MONETARY PAYOFF. THEN THAT PERSON WILL +CHOOSE THE DECISION WITH THE HIGHEST PAYOFF. HOWEVER, IF THERE +IS SOME UNCERTAINTY IN THE RESULT OF A DECISION THE CORRECT +DECISION IS NOT SO OBVIOUS. UTILITY THEORY PERMITS US TO +ASSIGN A NUMBER TO EACH PAYOFF, ITS 'UTILITY'. HIGHER PAYOFFS +LEAD TO HIGHER UTILITIES BUT A UTILITY OF 2 FOR $5000 DOES +DOES NOT NECESSARILY MEAN A UTILITY OF 4 FOR $10000. ONCE +UTILITIES ARE DETERMINED DECISIONS ARE MADE BASED UPON HIGHEST +EXPECTED UTILITY. + +PRESS ENTER TO CONTINUE? +UTILITIES ARE DETERMINED IN THE FOLLOWING WAY: THE POSSIBLE +PAYOFFS ARE RANKED FROM HIGHEST TO LOWEST. THE HIGHEST PAYOFF +IS ASSIGNED SOME ARBITRARY UTILITY, SAY 1. THE LOWEST PAYOFF +IS ASSIGNED SOME LOWER ARBITRARY UTILITY, SAY 0. WE DETERMINE +THE UTILITIES OF THE OTHER PAYOFFS BY SETTING UP A GAMBLE +WE ARE GIVEN THE CHOICE OF HAVING THIS PAYOFF FOR SURE OR OF +GETTING THE HIGHEST PAYOFF WITH PROBABILITY P AND THE LOWEST +WITH PROBABILITY 1-P. WITH P BEING DETERMINED THE UTILITY OF +THIS MIDDLE PAYOFF IS COMPUTED. AS THE PAYOFFS GO UP SO MUST P. +WE LOOK FOR THE P SO THAT WE ARE INDIFFERENT BETWEEN THE SURE +THING AND THE GAMBLE. UTILITY THEORY SAYS THERE IS SUCH A P. + +PRESS ENTER TO CONTINUE? +FOR EXAMPLE IF THE LOWEST PAYOFF WAS $0 AND THE HIGHEST WAS +$100000 THEN FOR AN INTERMEDIATE PAYOFF OF $50000 WE WOULD ASK +WOULD WE PREFER $50000 FOR SURE OR $100000 WITH PROBABILITY P +AND $0 WITH PROBABILITY 1-P. KEEP ADJUSTING P UNTIL WE ARE +INDIFFERENT TO THE SURE THING AND THE BET. THIS IS P. + +DIFFERENT PEOPLE HAVE DIFFERENT UTILITY FUNCTIONS. THUS UNDER +IDENTICAL CIRCUMSTANCES DIFFERENT PEOPLE MAY MAKE DIFFERENT +DECISIONS AND BOTH STILL MAXIMIZE EXPECTED UTILITY. THE +PROGRAM WILL ASSIGN UTILITIES TO DOLLAR AMOUNTS BETWEEN +$0 AND $100000 WITH THE UTILITY OF $0 BEING SET TO 0 AND THAT +OF $100000 BEING SET TO 10. + +PRESS ENTER TO BEGIN? + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 100 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 0 + +ENTER THE PROBABILITY? 0.1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 1000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .1 + +ENTER THE PROBABILITY? 0.2 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 3000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .2 + +ENTER THE PROBABILITY? 0.3 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 5000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .3 + +ENTER THE PROBABILITY? 0.4 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 10000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .4 + +ENTER THE PROBABILITY? 0.5 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 20000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .5 + +ENTER THE PROBABILITY? 0.6 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 30000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .6 + +ENTER THE PROBABILITY? 0.7 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 40000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .7 + +ENTER THE PROBABILITY? 0.8 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 50000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .8 + +ENTER THE PROBABILITY? 0.9 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 60000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .9 + +ENTER THE PROBABILITY? 1.0 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 70000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? + +PROBABILITY MUST BE BETWEEN 60000 AND 100000 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 70000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 80000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 90000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 +IS PRINTED OUTPUT DESIRED(Y/N)? Y + PAYOFF UTILITY + 0 0.00 + 100 1.00 + 1000 2.00 + 3000 3.00 + 5000 4.00 + 10000 5.00 + 20000 6.00 + 30000 7.00 + 40000 8.00 + 50000 9.00 + +PRESS ENTER TO CONTINUE? + PAYOFF UTILITY + 60000 10.00 + 70000 10.00 + 80000 10.00 + 90000 10.00 + 100000 10.00 diff --git a/BP100/UTILITY.BAS b/BP100/UTILITY.BAS new file mode 100644 index 0000000..3a308d9 --- /dev/null +++ b/BP100/UTILITY.BAS @@ -0,0 +1,71 @@ +1 REM UTILITY +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"PERSONAL UTILITY FUNCTION":PRINT +20 PRINT "UTILITY THEORY HAS TO DO WITH ONE'S PREFERENCE FOR VARIOUS +25 PRINT "DECISION ALTERNATIVES. SUPPOSE EVERY DECISION ONE CAN MAKE +30 PRINT "LEADS TO A KNOWN MONETARY PAYOFF. THEN THAT PERSON WILL +35 PRINT "CHOOSE THE DECISION WITH THE HIGHEST PAYOFF. HOWEVER, IF THERE +40 PRINT "IS SOME UNCERTAINTY IN THE RESULT OF A DECISION THE CORRECT +45 PRINT "DECISION IS NOT SO OBVIOUS. UTILITY THEORY PERMITS US TO +50 PRINT "ASSIGN A NUMBER TO EACH PAYOFF, ITS 'UTILITY'. HIGHER PAYOFFS +55 PRINT "LEAD TO HIGHER UTILITIES BUT A UTILITY OF 2 FOR $5000 DOES +60 PRINT "DOES NOT NECESSARILY MEAN A UTILITY OF 4 FOR $10000. ONCE +65 PRINT "UTILITIES ARE DETERMINED DECISIONS ARE MADE BASED UPON HIGHEST +70 PRINT "EXPECTED UTILITY. +75 PRINT :GOSUB 10100 +80 CLS +90 PRINT "UTILITIES ARE DETERMINED IN THE FOLLOWING WAY: THE POSSIBLE +95 PRINT "PAYOFFS ARE RANKED FROM HIGHEST TO LOWEST. THE HIGHEST PAYOFF +100 PRINT "IS ASSIGNED SOME ARBITRARY UTILITY, SAY 1. THE LOWEST PAYOFF +105 PRINT "IS ASSIGNED SOME LOWER ARBITRARY UTILITY, SAY 0. WE DETERMINE +110 PRINT "THE UTILITIES OF THE OTHER PAYOFFS BY SETTING UP A GAMBLE +115 PRINT "WE ARE GIVEN THE CHOICE OF HAVING THIS PAYOFF FOR SURE OR OF +120 PRINT "GETTING THE HIGHEST PAYOFF WITH PROBABILITY P AND THE LOWEST +125 PRINT "WITH PROBABILITY 1-P. WITH P BEING DETERMINED THE UTILITY OF +130 PRINT "THIS MIDDLE PAYOFF IS COMPUTED. AS THE PAYOFFS GO UP SO MUST P. +132 PRINT "WE LOOK FOR THE P SO THAT WE ARE INDIFFERENT BETWEEN THE SURE +134 PRINT "THING AND THE GAMBLE. UTILITY THEORY SAYS THERE IS SUCH A P. +135 PRINT :GOSUB 10100:CLS +138 PRINT "FOR EXAMPLE IF THE LOWEST PAYOFF WAS $0 AND THE HIGHEST WAS +140 PRINT "$100000 THEN FOR AN INTERMEDIATE PAYOFF OF $50000 WE WOULD ASK +145 PRINT "WOULD WE PREFER $50000 FOR SURE OR $100000 WITH PROBABILITY P +150 PRINT "AND $0 WITH PROBABILITY 1-P. KEEP ADJUSTING P UNTIL WE ARE +155 PRINT "INDIFFERENT TO THE SURE THING AND THE BET. THIS IS P. +160 PRINT +165 PRINT "DIFFERENT PEOPLE HAVE DIFFERENT UTILITY FUNCTIONS. THUS UNDER +170 PRINT "IDENTICAL CIRCUMSTANCES DIFFERENT PEOPLE MAY MAKE DIFFERENT +175 PRINT "DECISIONS AND BOTH STILL MAXIMIZE EXPECTED UTILITY. THE +180 PRINT "PROGRAM WILL ASSIGN UTILITIES TO DOLLAR AMOUNTS BETWEEN +185 PRINT "$0 AND $100000 WITH THE UTILITY OF $0 BEING SET TO 0 AND THAT +190 PRINT "OF $100000 BEING SET TO 10. +200 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +300 DIM A(20),P(20),U(20) +310 DATA 0,100,1000,3000,5000,10000,20000,30000,40000,50000,60000,70000,80000,90000,100000 +320 FOR I=1 TO 15:READ A(I):NEXT : REM AMOUNTS FOR COMPUTATION +330 P(1)=0:P(15)=1 +335 U(1)=0:U(15)=10 +340 CLS +350 FOR I=2 TO 14 +355 PRINT +360 PRINT "WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $";A(I);"FOR +370 PRINT "SURE OR $";A(15);"WITH PROBABILITY P AND"; A(1);"WITH PROBABILITY +380 PRINT "1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO";P(I-1) +390 PRINT :INPUT "ENTER THE PROBABILITY";P(I) +400 IF P(I)1 THEN PRINT :PRINT "PROBABILITY MUST BE BETWEEN";A(I-1);"AND";A(15):PRINT :GOTO 360 +410 NEXT I +430 REM COMPUTE UTILITIES +440 FOR I=2 TO 15:U(I)=P(I)*U(15)+(1-P(I))*U(1):NEXT +500 CLS:INPUT "IS PRINTED OUTPUT DESIRED(Y/N)";Z2$ +510 IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 500 +520 F$(1)=" PAYOFF UTILITY " +530 F$(2)=" ###### ##.## " +540 CLS:PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1):LPRINT " " +550 FOR I=1 TO 15 +560 PRINT USING F$(2);A(I),U(I) +570 IF Z2$="Y" THEN LPRINT USING F$(2);A(I),U(I) +575 IF I=10 THEN PRINT :GOSUB 10100:PRINT F$(1) +580 NEXT I +590 END +10000 PRINT "INPUT ERROR!TRY AGAIN!":FOR JJ=1 TO 300:NEXT :RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/UTILITY.INP b/BP100/UTILITY.INP new file mode 100644 index 0000000..d06ff9d --- /dev/null +++ b/BP100/UTILITY.INP @@ -0,0 +1,19 @@ + + + +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.8 +0.9 +1.0 + +1 +1 +1 +Y + diff --git a/BP100/UTILITY.OUT b/BP100/UTILITY.OUT new file mode 100644 index 0000000..978569d --- /dev/null +++ b/BP100/UTILITY.OUT @@ -0,0 +1,148 @@ + PERSONAL UTILITY FUNCTION + +UTILITY THEORY HAS TO DO WITH ONE'S PREFERENCE FOR VARIOUS +DECISION ALTERNATIVES. SUPPOSE EVERY DECISION ONE CAN MAKE +LEADS TO A KNOWN MONETARY PAYOFF. THEN THAT PERSON WILL +CHOOSE THE DECISION WITH THE HIGHEST PAYOFF. HOWEVER, IF THERE +IS SOME UNCERTAINTY IN THE RESULT OF A DECISION THE CORRECT +DECISION IS NOT SO OBVIOUS. UTILITY THEORY PERMITS US TO +ASSIGN A NUMBER TO EACH PAYOFF, ITS 'UTILITY'. HIGHER PAYOFFS +LEAD TO HIGHER UTILITIES BUT A UTILITY OF 2 FOR $5000 DOES +DOES NOT NECESSARILY MEAN A UTILITY OF 4 FOR $10000. ONCE +UTILITIES ARE DETERMINED DECISIONS ARE MADE BASED UPON HIGHEST +EXPECTED UTILITY. + +PRESS ENTER TO CONTINUE? +UTILITIES ARE DETERMINED IN THE FOLLOWING WAY: THE POSSIBLE +PAYOFFS ARE RANKED FROM HIGHEST TO LOWEST. THE HIGHEST PAYOFF +IS ASSIGNED SOME ARBITRARY UTILITY, SAY 1. THE LOWEST PAYOFF +IS ASSIGNED SOME LOWER ARBITRARY UTILITY, SAY 0. WE DETERMINE +THE UTILITIES OF THE OTHER PAYOFFS BY SETTING UP A GAMBLE +WE ARE GIVEN THE CHOICE OF HAVING THIS PAYOFF FOR SURE OR OF +GETTING THE HIGHEST PAYOFF WITH PROBABILITY P AND THE LOWEST +WITH PROBABILITY 1-P. WITH P BEING DETERMINED THE UTILITY OF +THIS MIDDLE PAYOFF IS COMPUTED. AS THE PAYOFFS GO UP SO MUST P. +WE LOOK FOR THE P SO THAT WE ARE INDIFFERENT BETWEEN THE SURE +THING AND THE GAMBLE. UTILITY THEORY SAYS THERE IS SUCH A P. + +PRESS ENTER TO CONTINUE? +FOR EXAMPLE IF THE LOWEST PAYOFF WAS $0 AND THE HIGHEST WAS +$100000 THEN FOR AN INTERMEDIATE PAYOFF OF $50000 WE WOULD ASK +WOULD WE PREFER $50000 FOR SURE OR $100000 WITH PROBABILITY P +AND $0 WITH PROBABILITY 1-P. KEEP ADJUSTING P UNTIL WE ARE +INDIFFERENT TO THE SURE THING AND THE BET. THIS IS P. + +DIFFERENT PEOPLE HAVE DIFFERENT UTILITY FUNCTIONS. THUS UNDER +IDENTICAL CIRCUMSTANCES DIFFERENT PEOPLE MAY MAKE DIFFERENT +DECISIONS AND BOTH STILL MAXIMIZE EXPECTED UTILITY. THE +PROGRAM WILL ASSIGN UTILITIES TO DOLLAR AMOUNTS BETWEEN +$0 AND $100000 WITH THE UTILITY OF $0 BEING SET TO 0 AND THAT +OF $100000 BEING SET TO 10. + +PRESS ENTER TO BEGIN? + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 100 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 0 + +ENTER THE PROBABILITY? 0.1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 1000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .1 + +ENTER THE PROBABILITY? 0.2 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 3000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .2 + +ENTER THE PROBABILITY? 0.3 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 5000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .3 + +ENTER THE PROBABILITY? 0.4 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 10000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .4 + +ENTER THE PROBABILITY? 0.5 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 20000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .5 + +ENTER THE PROBABILITY? 0.6 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 30000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .6 + +ENTER THE PROBABILITY? 0.7 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 40000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .7 + +ENTER THE PROBABILITY? 0.8 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 50000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .8 + +ENTER THE PROBABILITY? 0.9 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 60000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .9 + +ENTER THE PROBABILITY? 1.0 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 70000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? + +PROBABILITY MUST BE BETWEEN 60000 AND 100000 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 70000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 80000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 90000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 +IS PRINTED OUTPUT DESIRED(Y/N)? Y + PAYOFF UTILITY + 0 0.00 + 100 1.00 + 1000 2.00 + 3000 3.00 + 5000 4.00 + 10000 5.00 + 20000 6.00 + 30000 7.00 + 40000 8.00 + 50000 9.00 + +PRESS ENTER TO CONTINUE? + PAYOFF UTILITY + 60000 10.00 + 70000 10.00 + 80000 10.00 + 90000 10.00 + 100000 10.00 diff --git a/BP100/UTILITY.dif b/BP100/UTILITY.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/UTILITY.run b/BP100/UTILITY.run new file mode 100644 index 0000000..4d5b2ba --- /dev/null +++ b/BP100/UTILITY.run @@ -0,0 +1,148 @@ + PERSONAL UTILITY FUNCTION + +UTILITY THEORY HAS TO DO WITH ONE'S PREFERENCE FOR VARIOUS +DECISION ALTERNATIVES. SUPPOSE EVERY DECISION ONE CAN MAKE +LEADS TO A KNOWN MONETARY PAYOFF. THEN THAT PERSON WILL +CHOOSE THE DECISION WITH THE HIGHEST PAYOFF. HOWEVER, IF THERE +IS SOME UNCERTAINTY IN THE RESULT OF A DECISION THE CORRECT +DECISION IS NOT SO OBVIOUS. UTILITY THEORY PERMITS US TO +ASSIGN A NUMBER TO EACH PAYOFF, ITS 'UTILITY'. HIGHER PAYOFFS +LEAD TO HIGHER UTILITIES BUT A UTILITY OF 2 FOR $5000 DOES +DOES NOT NECESSARILY MEAN A UTILITY OF 4 FOR $10000. ONCE +UTILITIES ARE DETERMINED DECISIONS ARE MADE BASED UPON HIGHEST +EXPECTED UTILITY. + +PRESS ENTER TO CONTINUE? +UTILITIES ARE DETERMINED IN THE FOLLOWING WAY: THE POSSIBLE +PAYOFFS ARE RANKED FROM HIGHEST TO LOWEST. THE HIGHEST PAYOFF +IS ASSIGNED SOME ARBITRARY UTILITY, SAY 1. THE LOWEST PAYOFF +IS ASSIGNED SOME LOWER ARBITRARY UTILITY, SAY 0. WE DETERMINE +THE UTILITIES OF THE OTHER PAYOFFS BY SETTING UP A GAMBLE +WE ARE GIVEN THE CHOICE OF HAVING THIS PAYOFF FOR SURE OR OF +GETTING THE HIGHEST PAYOFF WITH PROBABILITY P AND THE LOWEST +WITH PROBABILITY 1-P. WITH P BEING DETERMINED THE UTILITY OF +THIS MIDDLE PAYOFF IS COMPUTED. AS THE PAYOFFS GO UP SO MUST P. +WE LOOK FOR THE P SO THAT WE ARE INDIFFERENT BETWEEN THE SURE +THING AND THE GAMBLE. UTILITY THEORY SAYS THERE IS SUCH A P. + +PRESS ENTER TO CONTINUE? +FOR EXAMPLE IF THE LOWEST PAYOFF WAS $0 AND THE HIGHEST WAS +$100000 THEN FOR AN INTERMEDIATE PAYOFF OF $50000 WE WOULD ASK +WOULD WE PREFER $50000 FOR SURE OR $100000 WITH PROBABILITY P +AND $0 WITH PROBABILITY 1-P. KEEP ADJUSTING P UNTIL WE ARE +INDIFFERENT TO THE SURE THING AND THE BET. THIS IS P. + +DIFFERENT PEOPLE HAVE DIFFERENT UTILITY FUNCTIONS. THUS UNDER +IDENTICAL CIRCUMSTANCES DIFFERENT PEOPLE MAY MAKE DIFFERENT +DECISIONS AND BOTH STILL MAXIMIZE EXPECTED UTILITY. THE +PROGRAM WILL ASSIGN UTILITIES TO DOLLAR AMOUNTS BETWEEN +$0 AND $100000 WITH THE UTILITY OF $0 BEING SET TO 0 AND THAT +OF $100000 BEING SET TO 10. + +PRESS ENTER TO BEGIN? + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 100 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 0 + +ENTER THE PROBABILITY? 0.1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 1000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .1 + +ENTER THE PROBABILITY? 0.2 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 3000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .2 + +ENTER THE PROBABILITY? 0.3 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 5000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .3 + +ENTER THE PROBABILITY? 0.4 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 10000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .4 + +ENTER THE PROBABILITY? 0.5 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 20000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .5 + +ENTER THE PROBABILITY? 0.6 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 30000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .6 + +ENTER THE PROBABILITY? 0.7 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 40000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .7 + +ENTER THE PROBABILITY? 0.8 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 50000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .8 + +ENTER THE PROBABILITY? 0.9 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 60000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO .9 + +ENTER THE PROBABILITY? 1.0 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 70000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? + +PROBABILITY MUST BE BETWEEN 60000 AND 100000 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 70000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 80000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 + +WITH WHAT PROBAILITY(P) WOULD YOU BE INDIFFERENT TO $ 90000 FOR +SURE OR $ 100000 WITH PROBABILITY P AND 0 WITH PROBABILITY +1 - P. THIS PROBABILITY MUST BE AT LEAST EQUAL TO 1 + +ENTER THE PROBABILITY? 1 +IS PRINTED OUTPUT DESIRED(Y/N)? Y + PAYOFF UTILITY + 0 0.00 + 100 1.00 + 1000 2.00 + 3000 3.00 + 5000 4.00 + 10000 5.00 + 20000 6.00 + 30000 7.00 + 40000 8.00 + 50000 9.00 + +PRESS ENTER TO CONTINUE? + PAYOFF UTILITY + 60000 10.00 + 70000 10.00 + 80000 10.00 + 90000 10.00 + 100000 10.00 diff --git a/BP100/VALADINF.80 b/BP100/VALADINF.80 new file mode 100644 index 0000000..27b2cb4 --- /dev/null +++ b/BP100/VALADINF.80 @@ -0,0 +1,31 @@ + VALUE OF ADDITIONAL SAMPLE INFORMATIOM + +IN SITUATIONS WHERE SAMPLING IS DONE IT IS GENERALLY ASSUMED +THAT LARGER SAMPLES PROVIDE MORE INFORMATION ABOUT THE TRUE +SITUATION THAN DO SMALLER SAMPLES. THE ADDITIONAL INFORMATION +WHICH THE LARGER SAMPLE SIZE BRINGS COULD BE COMPUTED IF +WE COULD SOMEHOW MEASURE THE UNCERTAINTY IN THE INFORMATION +BOTH BEFORE AND AFTER TAKING THE SAMPLE. SUCH A MEASURE +OF UNCERTAINTY EXISTS AND IS SOMETIMES CALLED SHANNON +INFORMATION. THIS PROGRAM GIVES BOUNDS ON THE UNCERTAINTY +WHEN THE SAMPLING IS COMING FROM A NORMAL DISTRIBUTION WITH +BOUNDED VARIANCE. + +PRESS ENTER TO CONTINUE? +NECESSARY INPUT INCLUDES AN UPPER BOUND ON THE VARIANCE +OF THE DISTRIBUTION, THE NUMBER OF OBSERVATIONS IN THE +INITIAL SAMPLE AND THE ADDITIONAL NUMBER OF OBSERVATIONS IN +THE FINAL SAMPLE. + +PRESS ENTER TO BEGIN? +DO YOU HAVE BOUND FOR VARIANCE(V) OR STANDARD DEVIATION(S)? S +ENTER STANDARD DEVIATION UPPER BOUND? 1.23 + +INITIAL SAMPLE SIZE ? 3 +ADDITIONAL SAMPLE SIZE? 2 +INITIAL UNCERTAINTY WAS 2.59771 +FINAL UNCERTAINTY WAS 2.3423 +THIS REPRESENTS A CHANGE OF .255413 UNCERTAINTY UNITS +AND IS A CHANGE OF ABOUT 9.83224 % + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/VALADINF.BAS b/BP100/VALADINF.BAS new file mode 100644 index 0000000..1903590 --- /dev/null +++ b/BP100/VALADINF.BAS @@ -0,0 +1,37 @@ +1 REM VALADINF +5 CLEAR 1000 +10 CLS:PRINT TAB(10);"VALUE OF ADDITIONAL SAMPLE INFORMATIOM":PRINT +20 PRINT"IN SITUATIONS WHERE SAMPLING IS DONE IT IS GENERALLY ASSUMED +25 PRINT"THAT LARGER SAMPLES PROVIDE MORE INFORMATION ABOUT THE TRUE +30 PRINT"SITUATION THAN DO SMALLER SAMPLES. THE ADDITIONAL INFORMATION +35 PRINT"WHICH THE LARGER SAMPLE SIZE BRINGS COULD BE COMPUTED IF +40 PRINT"WE COULD SOMEHOW MEASURE THE UNCERTAINTY IN THE INFORMATION +45 PRINT"BOTH BEFORE AND AFTER TAKING THE SAMPLE. SUCH A MEASURE +50 PRINT"OF UNCERTAINTY EXISTS AND IS SOMETIMES CALLED SHANNON +55 PRINT"INFORMATION. THIS PROGRAM GIVES BOUNDS ON THE UNCERTAINTY +60 PRINT"WHEN THE SAMPLING IS COMING FROM A NORMAL DISTRIBUTION WITH +65 PRINT"BOUNDED VARIANCE. +67 PRINT:GOSUB 10100:CLS +70 PRINT"NECESSARY INPUT INCLUDES AN UPPER BOUND ON THE VARIANCE +75 PRINT"OF THE DISTRIBUTION, THE NUMBER OF OBSERVATIONS IN THE +80 PRINT"INITIAL SAMPLE AND THE ADDITIONAL NUMBER OF OBSERVATIONS IN +85 PRINT"THE FINAL SAMPLE. +90 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT"DO YOU HAVE BOUND FOR VARIANCE(V) OR STANDARD DEVIATION(S)";Z1$ +120 IF Z1$<>"S" AND Z1$<>"V" THEN GOSUB 10000:PRINT:GOTO 110 +130 IF Z1$="S" THEN INPUT"ENTER STANDARD DEVIATION UPPER BOUND";S:V=S[2 +140 IF Z1$="V" THEN INPUT"ENTER VARIANCE UPPER BOUND ";V:S=SQR(V) +150 PRINT +155 INPUT"INITIAL SAMPLE SIZE ";NI +160 INPUT"ADDITIONAL SAMPLE SIZE";NA +170 H(1)=LOG(S/SQR(NI))+2.94:H(2)=LOG(S/SQR(NA+NI))+2.94 +200 PRINT"INITIAL UNCERTAINTY WAS ";H(1) +210 PRINT"FINAL UNCERTAINTY WAS ";H(2) +220 PRINT"THIS REPRESENTS A CHANGE OF";H(1)-H(2);"UNCERTAINTY UNITS +230 PRINT"AND IS A CHANGE OF ABOUT"; (H(1)-H(2))/H(1)*100;"%" +240 PRINT:INPUT"PRESS ENTER FOR MORE";Z9$ +245 IF Z9$ = "-1" THEN END +250 GOTO 100 +10000 PRINT"INPUT ERROR! TRY AGAIN!":FOR JJ=1TO300:NEXT:RETURN +10100 INPUT"PRESS ENTER TO CONTINUE";Z9$:RETURN diff --git a/BP100/VALADINF.INP b/BP100/VALADINF.INP new file mode 100644 index 0000000..fbc48ab --- /dev/null +++ b/BP100/VALADINF.INP @@ -0,0 +1,7 @@ + + +S +1.23 +3 +2 +-1 diff --git a/BP100/VALADINF.OUT b/BP100/VALADINF.OUT new file mode 100644 index 0000000..d153e67 --- /dev/null +++ b/BP100/VALADINF.OUT @@ -0,0 +1,31 @@ + VALUE OF ADDITIONAL SAMPLE INFORMATIOM + +IN SITUATIONS WHERE SAMPLING IS DONE IT IS GENERALLY ASSUMED +THAT LARGER SAMPLES PROVIDE MORE INFORMATION ABOUT THE TRUE +SITUATION THAN DO SMALLER SAMPLES. THE ADDITIONAL INFORMATION +WHICH THE LARGER SAMPLE SIZE BRINGS COULD BE COMPUTED IF +WE COULD SOMEHOW MEASURE THE UNCERTAINTY IN THE INFORMATION +BOTH BEFORE AND AFTER TAKING THE SAMPLE. SUCH A MEASURE +OF UNCERTAINTY EXISTS AND IS SOMETIMES CALLED SHANNON +INFORMATION. THIS PROGRAM GIVES BOUNDS ON THE UNCERTAINTY +WHEN THE SAMPLING IS COMING FROM A NORMAL DISTRIBUTION WITH +BOUNDED VARIANCE. + +PRESS ENTER TO CONTINUE? +NECESSARY INPUT INCLUDES AN UPPER BOUND ON THE VARIANCE +OF THE DISTRIBUTION, THE NUMBER OF OBSERVATIONS IN THE +INITIAL SAMPLE AND THE ADDITIONAL NUMBER OF OBSERVATIONS IN +THE FINAL SAMPLE. + +PRESS ENTER TO BEGIN? +DO YOU HAVE BOUND FOR VARIANCE(V) OR STANDARD DEVIATION(S)? S +ENTER STANDARD DEVIATION UPPER BOUND? 1.23 + +INITIAL SAMPLE SIZE ? 3 +ADDITIONAL SAMPLE SIZE? 2 +INITIAL UNCERTAINTY WAS 2.59771 +FINAL UNCERTAINTY WAS 2.3423 +THIS REPRESENTS A CHANGE OF .255413 UNCERTAINTY UNITS +AND IS A CHANGE OF ABOUT 9.83224 % + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/VALADINF.dif b/BP100/VALADINF.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/VALADINF.run b/BP100/VALADINF.run new file mode 100644 index 0000000..27b2cb4 --- /dev/null +++ b/BP100/VALADINF.run @@ -0,0 +1,31 @@ + VALUE OF ADDITIONAL SAMPLE INFORMATIOM + +IN SITUATIONS WHERE SAMPLING IS DONE IT IS GENERALLY ASSUMED +THAT LARGER SAMPLES PROVIDE MORE INFORMATION ABOUT THE TRUE +SITUATION THAN DO SMALLER SAMPLES. THE ADDITIONAL INFORMATION +WHICH THE LARGER SAMPLE SIZE BRINGS COULD BE COMPUTED IF +WE COULD SOMEHOW MEASURE THE UNCERTAINTY IN THE INFORMATION +BOTH BEFORE AND AFTER TAKING THE SAMPLE. SUCH A MEASURE +OF UNCERTAINTY EXISTS AND IS SOMETIMES CALLED SHANNON +INFORMATION. THIS PROGRAM GIVES BOUNDS ON THE UNCERTAINTY +WHEN THE SAMPLING IS COMING FROM A NORMAL DISTRIBUTION WITH +BOUNDED VARIANCE. + +PRESS ENTER TO CONTINUE? +NECESSARY INPUT INCLUDES AN UPPER BOUND ON THE VARIANCE +OF THE DISTRIBUTION, THE NUMBER OF OBSERVATIONS IN THE +INITIAL SAMPLE AND THE ADDITIONAL NUMBER OF OBSERVATIONS IN +THE FINAL SAMPLE. + +PRESS ENTER TO BEGIN? +DO YOU HAVE BOUND FOR VARIANCE(V) OR STANDARD DEVIATION(S)? S +ENTER STANDARD DEVIATION UPPER BOUND? 1.23 + +INITIAL SAMPLE SIZE ? 3 +ADDITIONAL SAMPLE SIZE? 2 +INITIAL UNCERTAINTY WAS 2.59771 +FINAL UNCERTAINTY WAS 2.3423 +THIS REPRESENTS A CHANGE OF .255413 UNCERTAINTY UNITS +AND IS A CHANGE OF ABOUT 9.83224 % + +PRESS ENTER FOR MORE? -1 diff --git a/BP100/VALPRINF.80 b/BP100/VALPRINF.80 new file mode 100644 index 0000000..351ac3f --- /dev/null +++ b/BP100/VALPRINF.80 @@ -0,0 +1,49 @@ + VALUE OF PERFECT INFORMATION + +IN THE SCENARIO TO THIS PROGRAM THERE ARE SEVERAL +POSSIBLE STATES OF NATURE, ONE OF WHICH IS THE TRUE STATE. +WE DO NOT KNOW WHAT THE TRUE STATE OF NATURE(S OF N) IS BUT +WE KNOW THE PROBABILITY OF OCCURRENCE OF EACH S OF N. +IN ADDITION THERE ARE SEVERAL ALTERNATIVE ACTIONS WE MAY TAKE +EACH OF WHICH HAS A CERTAIN EXPECTED VALUE(OR AVERAGE RETURN). +EXPECTATION THEORY SAYS TO CHOOSE THE ACTION WITH THE HIGHEST +EXPECTED VALUE. IF WE KNEW WHAT THE TRUE STATE OF NATURE WAS +THEN WE WOULD KNOW WHAT ACTION TO TAKE. THE EXPECTED VALUE OF +PERFECT INFORMATION IS THE EXPECTED VALUE OF DECISIONS WITH +KNOWLEDGE OF THE S OF N MINUS THE MAXIMUM EXPECTED VALUE OF +ACTIONS WITHOUT THIS KNOWLEDGE. + +PRESS ENTER TO CONTINUE? +IN THIS PROGRAM THERE ARE UP TO 25 S OF N'S AND 8 POSSIBLE +ACTIONS. THE MAXIMUM EXPECTED VALUE OF THESE ACTIONS IS +COMPUTED. THEN THE EXPECTED VALUE WITH PERFECT INFORMATION +ABOUT THE S OF N IS COMPUTED. THEIR DIFFERENCE IS THE EVPI. + +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 2 + +ENTER PROBABILITY OF S OF N 1 ? 111 +ENTER PROBABILITY OF S OF N 2 ? 222 + +PROBABILITIES DO NOT SUM TO 1. +ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER? 1 + +ENTER NUMBER OF POSSIBLE DECISIONS(<=8)? 2 + +DECISION 1 + PAYOFF WHEN S OF N IS 1 ? 123 + PAYOFF WHEN S OF N IS 2 ? 456 + +DECISION 2 + PAYOFF WHEN S OF N IS 1 ? 789 + PAYOFF WHEN S OF N IS 2 ? 395 +COMPUTING + DECISION EXPECTED VALUE + 1 345.00 + 2 526.33 + +MAXIMUM EXPECTED VALUE = 526.333 + +EVWPI = 567 +EXPECTED VALUE OF PERFECT INFORMATION = 40.6667 + diff --git a/BP100/VALPRINF.BAS b/BP100/VALPRINF.BAS new file mode 100644 index 0000000..17f0484 --- /dev/null +++ b/BP100/VALPRINF.BAS @@ -0,0 +1,73 @@ +1 REM VALPRINF +5 CLEAR 1000 +10 CLS:PRINT TAB(5); "VALUE OF PERFECT INFORMATION":PRINT +20 PRINT "IN THE SCENARIO TO THIS PROGRAM THERE ARE SEVERAL +25 PRINT "POSSIBLE STATES OF NATURE, ONE OF WHICH IS THE TRUE STATE. +30 PRINT "WE DO NOT KNOW WHAT THE TRUE STATE OF NATURE(S OF N) IS BUT +35 PRINT "WE KNOW THE PROBABILITY OF OCCURRENCE OF EACH S OF N. +40 PRINT "IN ADDITION THERE ARE SEVERAL ALTERNATIVE ACTIONS WE MAY TAKE +45 PRINT "EACH OF WHICH HAS A CERTAIN EXPECTED VALUE(OR AVERAGE RETURN)." +50 PRINT "EXPECTATION THEORY SAYS TO CHOOSE THE ACTION WITH THE HIGHEST +55 PRINT "EXPECTED VALUE. IF WE KNEW WHAT THE TRUE STATE OF NATURE WAS +60 PRINT "THEN WE WOULD KNOW WHAT ACTION TO TAKE. THE EXPECTED VALUE OF +65 PRINT "PERFECT INFORMATION IS THE EXPECTED VALUE OF DECISIONS WITH +70 PRINT "KNOWLEDGE OF THE S OF N MINUS THE MAXIMUM EXPECTED VALUE OF +75 PRINT "ACTIONS WITHOUT THIS KNOWLEDGE." +77 PRINT :GOSUB 10100 +80 CLS:PRINT "IN THIS PROGRAM THERE ARE UP TO 25 S OF N'S AND 8 POSSIBLE +82 PRINT "ACTIONS. THE MAXIMUM EXPECTED VALUE OF THESE ACTIONS IS +84 PRINT "COMPUTED. THEN THE EXPECTED VALUE WITH PERFECT INFORMATION +86 PRINT "ABOUT THE S OF N IS COMPUTED. THEIR DIFFERENCE IS THE EVPI. +95 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 DIM A(25,8),P(25),M(25),E(8) +105 P=0 +110 CLS +120 INPUT "ENTER NUMBER OF POSSIBLE STATES OF NATURE";N +125 IF N<2 OR N>25 OR N<>INT(N) THEN GOSUB 10000:GOTO 120 +127 PRINT +130 FOR I=1 TO N +135 PRINT "ENTER PROBABILITY OF S OF N";I;:INPUT P(I) +140 P=P+P(I) +150 NEXT I +160 IF P=1 THEN PRINT :GOTO 200 +170 PRINT :PRINT "PROBABILITIES DO NOT SUM TO 1." +175 INPUT "ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER";Z9 +180 IF Z9<>0 AND Z9<>1 THEN GOSUB 10000:GOTO 170 +185 IF Z9=0 THEN GOTO 105 +190 FOR I=1 TO N:P(I)=P(I)/P:NEXT :P=1 +200 PRINT :INPUT "ENTER NUMBER OF POSSIBLE DECISIONS(<=8)";M +205 IF M<2 OR M>8 OR M<>INT(M) THEN GOSUB 10000:GOTO 200 +220 FOR J=1 TO M +225 PRINT +230 PRINT "DECISION ";J +240 FOR I=1 TO N +250 PRINT TAB(5);"PAYOFF WHEN S OF N IS";I;:INPUT A(I,J) +260 NEXT I +270 NEXT J +300 REM COMPUTATION +310 CLS:PRINT @ 340,"COMPUTING" +320 FOR I=1 TO N +330 M(I)=A(I,1) +340 FOR J=2 TO M +350 IF A(I,J)>M(I) THEN M(I)=A(I,J) +360 NEXT J +370 NEXT I +400 FOR J=1 TO M +405 EM=-10E6 +410 FOR I=1 TO N:E(J)=E(J)+A(I,J)*P(I):NEXT I:REM EXP. VAL. +415 IF E(J)>EM THEN EM=E(J) +420 NEXT J +430 FOR I=1 TO N:E=E+M(I)*P(I):NEXT I:REM EVWPI +495 REM PRINT +500 CLS +510 F$(1)=" DECISION EXPECTED VALUE" +520 F$(2)=" ## #########.## +525 PRINT F$(1) +530 FOR J=1 TO M:PRINT USING F$(2);J,E(J):NEXT +570 PRINT :PRINT "MAXIMUM EXPECTED VALUE = ";EM +580 PRINT :PRINT "EVWPI = ";E +590 PRINT "EXPECTED VALUE OF PERFECT INFORMATION = ";E - EM +600 PRINT :END +10000 PRINT "INPUT ERROR!TRY AGAIN!":FOR JJ=1 TO 300:NEXT :RETURN +10100 INPUT "PRESS ENTER TO CONTINUE";Z9$:RETURN + diff --git a/BP100/VALPRINF.INP b/BP100/VALPRINF.INP new file mode 100644 index 0000000..1b24c1c --- /dev/null +++ b/BP100/VALPRINF.INP @@ -0,0 +1,11 @@ + + +2 +111 +222 +1 +2 +123 +456 +789 +395 diff --git a/BP100/VALPRINF.OUT b/BP100/VALPRINF.OUT new file mode 100644 index 0000000..07d5094 --- /dev/null +++ b/BP100/VALPRINF.OUT @@ -0,0 +1,49 @@ + VALUE OF PERFECT INFORMATION + +IN THE SCENARIO TO THIS PROGRAM THERE ARE SEVERAL +POSSIBLE STATES OF NATURE, ONE OF WHICH IS THE TRUE STATE. +WE DO NOT KNOW WHAT THE TRUE STATE OF NATURE(S OF N) IS BUT +WE KNOW THE PROBABILITY OF OCCURRENCE OF EACH S OF N. +IN ADDITION THERE ARE SEVERAL ALTERNATIVE ACTIONS WE MAY TAKE +EACH OF WHICH HAS A CERTAIN EXPECTED VALUE(OR AVERAGE RETURN). +EXPECTATION THEORY SAYS TO CHOOSE THE ACTION WITH THE HIGHEST +EXPECTED VALUE. IF WE KNEW WHAT THE TRUE STATE OF NATURE WAS +THEN WE WOULD KNOW WHAT ACTION TO TAKE. THE EXPECTED VALUE OF +PERFECT INFORMATION IS THE EXPECTED VALUE OF DECISIONS WITH +KNOWLEDGE OF THE S OF N MINUS THE MAXIMUM EXPECTED VALUE OF +ACTIONS WITHOUT THIS KNOWLEDGE. + +PRESS ENTER TO CONTINUE? +IN THIS PROGRAM THERE ARE UP TO 25 S OF N'S AND 8 POSSIBLE +ACTIONS. THE MAXIMUM EXPECTED VALUE OF THESE ACTIONS IS +COMPUTED. THEN THE EXPECTED VALUE WITH PERFECT INFORMATION +ABOUT THE S OF N IS COMPUTED. THEIR DIFFERENCE IS THE EVPI. + +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 2 + +ENTER PROBABILITY OF S OF N 1 ? 111 +ENTER PROBABILITY OF S OF N 2 ? 222 + +PROBABILITIES DO NOT SUM TO 1. +ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER? 1 + +ENTER NUMBER OF POSSIBLE DECISIONS(<=8)? 2 + +DECISION 1 + PAYOFF WHEN S OF N IS 1 ? 123 + PAYOFF WHEN S OF N IS 2 ? 456 + +DECISION 2 + PAYOFF WHEN S OF N IS 1 ? 789 + PAYOFF WHEN S OF N IS 2 ? 395 +COMPUTING + DECISION EXPECTED VALUE + 1 345.00 + 2 526.33 + +MAXIMUM EXPECTED VALUE = 526.333 + +EVWPI = 567 +EXPECTED VALUE OF PERFECT INFORMATION = 40.6667 + diff --git a/BP100/VALPRINF.dif b/BP100/VALPRINF.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/VALPRINF.run b/BP100/VALPRINF.run new file mode 100644 index 0000000..351ac3f --- /dev/null +++ b/BP100/VALPRINF.run @@ -0,0 +1,49 @@ + VALUE OF PERFECT INFORMATION + +IN THE SCENARIO TO THIS PROGRAM THERE ARE SEVERAL +POSSIBLE STATES OF NATURE, ONE OF WHICH IS THE TRUE STATE. +WE DO NOT KNOW WHAT THE TRUE STATE OF NATURE(S OF N) IS BUT +WE KNOW THE PROBABILITY OF OCCURRENCE OF EACH S OF N. +IN ADDITION THERE ARE SEVERAL ALTERNATIVE ACTIONS WE MAY TAKE +EACH OF WHICH HAS A CERTAIN EXPECTED VALUE(OR AVERAGE RETURN). +EXPECTATION THEORY SAYS TO CHOOSE THE ACTION WITH THE HIGHEST +EXPECTED VALUE. IF WE KNEW WHAT THE TRUE STATE OF NATURE WAS +THEN WE WOULD KNOW WHAT ACTION TO TAKE. THE EXPECTED VALUE OF +PERFECT INFORMATION IS THE EXPECTED VALUE OF DECISIONS WITH +KNOWLEDGE OF THE S OF N MINUS THE MAXIMUM EXPECTED VALUE OF +ACTIONS WITHOUT THIS KNOWLEDGE. + +PRESS ENTER TO CONTINUE? +IN THIS PROGRAM THERE ARE UP TO 25 S OF N'S AND 8 POSSIBLE +ACTIONS. THE MAXIMUM EXPECTED VALUE OF THESE ACTIONS IS +COMPUTED. THEN THE EXPECTED VALUE WITH PERFECT INFORMATION +ABOUT THE S OF N IS COMPUTED. THEIR DIFFERENCE IS THE EVPI. + +PRESS ENTER TO BEGIN? +ENTER NUMBER OF POSSIBLE STATES OF NATURE? 2 + +ENTER PROBABILITY OF S OF N 1 ? 111 +ENTER PROBABILITY OF S OF N 2 ? 222 + +PROBABILITIES DO NOT SUM TO 1. +ENTER 1 TO STANDARDIZE,0 TO BEGIN OVER? 1 + +ENTER NUMBER OF POSSIBLE DECISIONS(<=8)? 2 + +DECISION 1 + PAYOFF WHEN S OF N IS 1 ? 123 + PAYOFF WHEN S OF N IS 2 ? 456 + +DECISION 2 + PAYOFF WHEN S OF N IS 1 ? 789 + PAYOFF WHEN S OF N IS 2 ? 395 +COMPUTING + DECISION EXPECTED VALUE + 1 345.00 + 2 526.33 + +MAXIMUM EXPECTED VALUE = 526.333 + +EVWPI = 567 +EXPECTED VALUE OF PERFECT INFORMATION = 40.6667 + diff --git a/BP100/WACC.80 b/BP100/WACC.80 new file mode 100644 index 0000000..73fd236 --- /dev/null +++ b/BP100/WACC.80 @@ -0,0 +1,31 @@ + WACC + +A FIRM MAY BE FINANCED IN SEVERAL DIFFERENT WAYS. AMONG THESE +ARE COMMON STOCKS, PREFERRED STOCKS, DEBT, AND RETAINED +EARNINGS. GIVEN THE AMOUNT OF EACH OF THE ABOVE AND ITS +COST IN PER CENT THIS PROGRAM WILL FIND OUT WHAT PRICE THE +FIRM IS PAYING FOR ITS MONEY ON AVERAGE. THIS AVERAGE IS +CALLED THE WEIGHTED AVERAGE COST OF CAPITAL (WACC). + +PRESS ENTER TO BEGIN? +INPUT CURRENT AMOUNT OF DEBT ? 123456 +INPUT CAPITAL DEVOTED TO PREFERRED STOCK? 987654 +INPUT COMMON STOCK CAPITAL ? 583234 +INPUT RETAINED EARNINGS ? 9283432 + +THE FOLLOWING INPUTS ARE AFTER TAX COST + +INPUT COST OF DEBT (%) ? 5 +INPUT COST OF PREFERRED STOCK (%) ? 7 +INPUT COST OF COMMON STOCK (%) ? 1 +INPUT COST OF RETAINED EARNINGS (%) ? 2 +METHOD OF FINANCING PROPORTION COST WEIGHTED COST + (%) (%) (%) + +DEBT 0.0 5.0 0.00 +PREFERRED STOCK 62.9 7.0 4.40 +COMMON STOCK 37.1 1.0 0.37 +RETAINED EARNINGS 0.0 2.0 0.00 +WEIGHTED AVERAGE COST OF CAPITAL 4.77 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/WACC.BAS b/BP100/WACC.BAS new file mode 100644 index 0000000..4cc2400 --- /dev/null +++ b/BP100/WACC.BAS @@ -0,0 +1,43 @@ +1 REM WACC +5 CLEAR 1000 +10 CLS +20 PRINT TAB(29); "WACC":PRINT +30 PRINT "A FIRM MAY BE FINANCED IN SEVERAL DIFFERENT WAYS. AMONG THESE +35 PRINT "ARE COMMON STOCKS, PREFERRED STOCKS, DEBT, AND RETAINED +40 PRINT "EARNINGS. GIVEN THE AMOUNT OF EACH OF THE ABOVE AND ITS +45 PRINT "COST IN PER CENT THIS PROGRAM WILL FIND OUT WHAT PRICE THE +50 PRINT "FIRM IS PAYING FOR ITS MONEY ON AVERAGE. THIS AVERAGE IS +55 PRINT "CALLED THE WEIGHTED AVERAGE COST OF CAPITAL (WACC). +90 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$ +100 CLS +110 INPUT "INPUT CURRENT AMOUNT OF DEBT ";DEBT +120 INPUT "INPUT CAPITAL DEVOTED TO PREFERRED STOCK";PX +130 INPUT "INPUT COMMON STOCK CAPITAL ";C0 +140 INPUT "INPUT RETAINED EARNINGS ";RETAINED +150 PRINT +160 PRINT "THE FOLLOWING INPUTS ARE AFTER TAX COST":PRINT +170 INPUT "INPUT COST OF DEBT (%) ";DC:DC=DC/100 +180 INPUT "INPUT COST OF PREFERRED STOCK (%) ";PC:PC=PC/100 +190 INPUT "INPUT COST OF COMMON STOCK (%) ";CC:CC=CC/100 +200 INPUT "INPUT COST OF RETAINED EARNINGS (%) ";CR:CR=CR/100 +220 T0=DE+PX+C0+RE +225 REM PERCENTAGES OF TOTAL FOR DIFFERENT SOURCES +230 A(1)=100*DE/T0:A(2)=100*PX/T0 +240 A(3)=100*C0/T0:A(4)=100*RE/T0 +245 REM WEIGHTED COSTS BELOW +250 B(1)=A(1)*DC:B(2)=A(2)*PC:B(3)=A(3)*CC:B(4)=A(4)*CR +300 F$(1)="METHOD OF FINANCING PROPORTION COST WEIGHTED COST" +305 F$(4)=" (%) (%) (%)" +310 F$(2)="% % ###.# ###.# ###.##" +315 F$(3)="WEIGHTED AVERAGE COST OF CAPITAL ###.##" +400 CLS:PRINT F$(1):PRINT F$(4):PRINT +410 PRINT USING F$(2);"DEBT",A(1),100*DC,A(1)*DC +420 PRINT USING F$(2);"PREFERRED STOCK",A(2),100*PC,A(2)*PC +430 PRINT USING F$(2);"COMMON STOCK",A(3),100*CC,A(3)*CC +440 PRINT USING F$(2);"RETAINED EARNINGS",A(4),100*CR,A(4)*CR +450 WACC= A(1)*DC+A(2)*PC+A(3)*CC+A(4)*CR +460 PRINT USING F$(3);WACC +500 PRINT :INPUT "PRESS ENTER FOR MORE COMPUTATION";Z9$ +505 IF Z9$ = "-1" THEN END +510 GOTO 100 + diff --git a/BP100/WACC.INP b/BP100/WACC.INP new file mode 100644 index 0000000..a427383 --- /dev/null +++ b/BP100/WACC.INP @@ -0,0 +1,10 @@ + +123456 +987654 +583234 +9283432 +5 +7 +1 +2 +-1 diff --git a/BP100/WACC.OUT b/BP100/WACC.OUT new file mode 100644 index 0000000..aeae497 --- /dev/null +++ b/BP100/WACC.OUT @@ -0,0 +1,31 @@ + WACC + +A FIRM MAY BE FINANCED IN SEVERAL DIFFERENT WAYS. AMONG THESE +ARE COMMON STOCKS, PREFERRED STOCKS, DEBT, AND RETAINED +EARNINGS. GIVEN THE AMOUNT OF EACH OF THE ABOVE AND ITS +COST IN PER CENT THIS PROGRAM WILL FIND OUT WHAT PRICE THE +FIRM IS PAYING FOR ITS MONEY ON AVERAGE. THIS AVERAGE IS +CALLED THE WEIGHTED AVERAGE COST OF CAPITAL (WACC). + +PRESS ENTER TO BEGIN? +INPUT CURRENT AMOUNT OF DEBT ? 123456 +INPUT CAPITAL DEVOTED TO PREFERRED STOCK? 987654 +INPUT COMMON STOCK CAPITAL ? 583234 +INPUT RETAINED EARNINGS ? 9283432 + +THE FOLLOWING INPUTS ARE AFTER TAX COST + +INPUT COST OF DEBT (%) ? 5 +INPUT COST OF PREFERRED STOCK (%) ? 7 +INPUT COST OF COMMON STOCK (%) ? 1 +INPUT COST OF RETAINED EARNINGS (%) ? 2 +METHOD OF FINANCING PROPORTION COST WEIGHTED COST + (%) (%) (%) + +DEBT 0.0 5.0 0.00 +PREFERRED STOCK 62.9 7.0 4.40 +COMMON STOCK 37.1 1.0 0.37 +RETAINED EARNINGS 0.0 2.0 0.00 +WEIGHTED AVERAGE COST OF CAPITAL 4.77 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/WACC.dif b/BP100/WACC.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/WACC.run b/BP100/WACC.run new file mode 100644 index 0000000..73fd236 --- /dev/null +++ b/BP100/WACC.run @@ -0,0 +1,31 @@ + WACC + +A FIRM MAY BE FINANCED IN SEVERAL DIFFERENT WAYS. AMONG THESE +ARE COMMON STOCKS, PREFERRED STOCKS, DEBT, AND RETAINED +EARNINGS. GIVEN THE AMOUNT OF EACH OF THE ABOVE AND ITS +COST IN PER CENT THIS PROGRAM WILL FIND OUT WHAT PRICE THE +FIRM IS PAYING FOR ITS MONEY ON AVERAGE. THIS AVERAGE IS +CALLED THE WEIGHTED AVERAGE COST OF CAPITAL (WACC). + +PRESS ENTER TO BEGIN? +INPUT CURRENT AMOUNT OF DEBT ? 123456 +INPUT CAPITAL DEVOTED TO PREFERRED STOCK? 987654 +INPUT COMMON STOCK CAPITAL ? 583234 +INPUT RETAINED EARNINGS ? 9283432 + +THE FOLLOWING INPUTS ARE AFTER TAX COST + +INPUT COST OF DEBT (%) ? 5 +INPUT COST OF PREFERRED STOCK (%) ? 7 +INPUT COST OF COMMON STOCK (%) ? 1 +INPUT COST OF RETAINED EARNINGS (%) ? 2 +METHOD OF FINANCING PROPORTION COST WEIGHTED COST + (%) (%) (%) + +DEBT 0.0 5.0 0.00 +PREFERRED STOCK 62.9 7.0 4.40 +COMMON STOCK 37.1 1.0 0.37 +RETAINED EARNINGS 0.0 2.0 0.00 +WEIGHTED AVERAGE COST OF CAPITAL 4.77 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/WARVAL.80 b/BP100/WARVAL.80 new file mode 100644 index 0000000..be2d046 --- /dev/null +++ b/BP100/WARVAL.80 @@ -0,0 +1,16 @@ + VALUE OF A WARRENT + +THIS PROGRAM WILL ALLOW THE USER TO COMPUTE THE THEORETICAL +VALUE OF A WARRANT AND THE VALUES OF BOTH SHORT TERM AND +LONG TERM WARRANTS. + +PRESS ENTER TO BEGIN? +HOW MANY SHARES MAY BE PURCHASED WITH ONE WARRANT? 12 +WHAT IS THE EXERCISE PRICE PER SHARE OF STOCK ? 334 +WHAT IS THE MARKET PRICE OF ONE SHARE OF STOCK ? 4456 + +IS WARRANT LIFE AT LEAST 5 YEARS(Y/N)? Y +THE VALUE OF THE WARRANT EQUALS 49614. +THE THEORETICAL VALUE OF THE WARRANT = 49464 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/WARVAL.BAS b/BP100/WARVAL.BAS new file mode 100644 index 0000000..d3dc240 --- /dev/null +++ b/BP100/WARVAL.BAS @@ -0,0 +1,36 @@ +10 CLS +20 PRINT" VALUE OF A WARRENT" +30 PRINT +40 PRINT"THIS PROGRAM WILL ALLOW THE USER TO COMPUTE THE THEORETICAL +50 PRINT"VALUE OF A WARRANT AND THE VALUES OF BOTH SHORT TERM AND +60 PRINT"LONG TERM WARRANTS. +70 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9 +100 CLS +110 INPUT"HOW MANY SHARES MAY BE PURCHASED WITH ONE WARRANT";N +120 INPUT"WHAT IS THE EXERCISE PRICE PER SHARE OF STOCK ";EX +130 INPUT"WHAT IS THE MARKET PRICE OF ONE SHARE OF STOCK ";PS +140 PRINT +210 INPUT"IS WARRANT LIFE AT LEAST 5 YEARS(Y/N)";Z9$ +220 IF Z9$="N" GOTO 300 +230 IF Z9$="Y" GOTO 400 +240 PRINT"INPUT ERROR! TRY AGAIN!":PRINT:GOTO 210 +300 REM SHORT TERM WARRANT VALUATION +305 PRINT +310 INPUT"NUMBER OF YEARS TO EXPIRATION";NY +315 INPUT"EXPECTED ANNUAL GROWTH RATE OF STOCK PRICE IN %";AG +320 INPUT"VOLATILITY OR ANNUAL STANDARD DEVIATION OF STOCK PR. IN %";SD +325 AGR=(1+AG/100)[NY:ASD=SD*SQR(NY)/100 +330 C=1.65*(PS/EX)*AGR*(1+ASD) +340 IF C < PS/EX THEN V=EX*(PS/EX - 1):HR=1 GOTO 360 +350 V=EX*(C-1)*(PS/(EX*C))[(C/(C-1)):HR=(PS/(EX*C))[(1/(C-1)) +360 GOTO 420 +400 REM LONG TERM WARRANT VALUATION +405 HR=0 +410 V=(SQR(EX[2 + PS[2)-EX)*N +420 CLS +430 PRINT"THE VALUE OF THE WARRANT EQUALS ";V +435 IF HR<>0 THEN PRINT"THE HEDGE RATIO EQUALS ";HR +440 PRINT"THE THEORETICAL VALUE OF THE WARRANT = ";N*(PS-EX) +450 PRINT:INPUT"PRESS ENTER FOR MORE COMPUTATION";Z9 +455 IF Z9 = -1 THEN END +460 GOTO 100 diff --git a/BP100/WARVAL.INP b/BP100/WARVAL.INP new file mode 100644 index 0000000..0adb7b2 --- /dev/null +++ b/BP100/WARVAL.INP @@ -0,0 +1,6 @@ + +12 +334 +4456 +Y +-1 diff --git a/BP100/WARVAL.OUT b/BP100/WARVAL.OUT new file mode 100644 index 0000000..8360a26 --- /dev/null +++ b/BP100/WARVAL.OUT @@ -0,0 +1,16 @@ + VALUE OF A WARRENT + +THIS PROGRAM WILL ALLOW THE USER TO COMPUTE THE THEORETICAL +VALUE OF A WARRANT AND THE VALUES OF BOTH SHORT TERM AND +LONG TERM WARRANTS. + +PRESS ENTER TO BEGIN? +HOW MANY SHARES MAY BE PURCHASED WITH ONE WARRANT? 12 +WHAT IS THE EXERCISE PRICE PER SHARE OF STOCK ? 334 +WHAT IS THE MARKET PRICE OF ONE SHARE OF STOCK ? 4456 + +IS WARRANT LIFE AT LEAST 5 YEARS(Y/N)? Y +THE VALUE OF THE WARRANT EQUALS 49614. +THE THEORETICAL VALUE OF THE WARRANT = 49464 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/WARVAL.dif b/BP100/WARVAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/BP100/WARVAL.run b/BP100/WARVAL.run new file mode 100644 index 0000000..be2d046 --- /dev/null +++ b/BP100/WARVAL.run @@ -0,0 +1,16 @@ + VALUE OF A WARRENT + +THIS PROGRAM WILL ALLOW THE USER TO COMPUTE THE THEORETICAL +VALUE OF A WARRANT AND THE VALUES OF BOTH SHORT TERM AND +LONG TERM WARRANTS. + +PRESS ENTER TO BEGIN? +HOW MANY SHARES MAY BE PURCHASED WITH ONE WARRANT? 12 +WHAT IS THE EXERCISE PRICE PER SHARE OF STOCK ? 334 +WHAT IS THE MARKET PRICE OF ONE SHARE OF STOCK ? 4456 + +IS WARRANT LIFE AT LEAST 5 YEARS(Y/N)? Y +THE VALUE OF THE WARRANT EQUALS 49614. +THE THEORETICAL VALUE OF THE WARRANT = 49464 + +PRESS ENTER FOR MORE COMPUTATION? -1 diff --git a/BP100/dif.OUT b/BP100/dif.OUT new file mode 100644 index 0000000..e69de29 diff --git a/BP100/mod4basc.bas b/BP100/mod4basc.bas new file mode 100644 index 0000000..63271f0 --- /dev/null +++ b/BP100/mod4basc.bas @@ -0,0 +1,102 @@ +2 ' Model 4 BASIC syntax converter +3 ' This program will convert other BASIC +4 ' programs to be syntactically correct +5 ' for the Model 4 BASIC. +6 ' +7 ' Written by: Lee Becker +8 ' Phone no. : 517-349-7604 +9 ' +10 CLS:CLEAR 20000:DIM A$(1000) ' ON ERROR GOTO 900 +20 PRINT @ 500,"What is the file's name to convert?" +21 PRINT @ 590,; +22 LINE INPUT C$ +30 OPEN "I",1,C$ +40 KOUNT=1 +50 IF EOF(1) THEN 80 +60 LINE INPUT #1,L$:A$(KOUNT)=L$ +70 KOUNT=KOUNT+1:GOTO 50 +80 CLOSE 1 +90 ' +100 ' +110 CLS +120 PRINT @ 420,"There are";KOUNT;"total lines in the file.":PRINT TAB(20);"It will take approximately";:PRINT USING "##.#";KOUNT*3.1/60;:PRINT" minutes.":PRINT @ 670,"STARTING NOW" +130 FOR CNT=1 TO KOUNT:Y=1:Z=1:W=1 +135 V=INSTR(1,A$(CNT),"DATA"):IF V>0 AND V<8 THEN A$(CNT)=MID$(A$(CNT),1,V+3)+" "+MID$(A$(CNT),V+4):GOTO 300 +140 Z=INSTR(Z,A$(CNT),"'"):IF Z>0 AND Z<8 THEN 300 +150 IF Z=0 THEN Z=500 ELSE T=INSTR(Z,A$(CNT),CHR$(34)):IF T<>0 THEN Z=T:GOTO 140 +160 W=INSTR(W,A$(CNT),"REM"):IF W>0 AND W<8 THEN 300 +170 IF W=0 THEN W=500 ELSE T=INSTR(W,A$(CNT),CHR$(34)):IF T<>0 THEN W=T:GOTO 160 +180 FOR COT=1 TO 47:Q=1:READ B$ +190 IF Q<>0 THEN Q=INSTR(Q,A$(CNT),CHR$(34)) +200 X=INSTR(Y,A$(CNT),B$) +210 IF X>Z OR Z>W THEN 290 +220 IF Q<>0 AND X>Q THEN 540 +230 IF X<>0 THEN IF B$<>"THEN" AND B$<>"ELSE" AND B$<>"TO" AND B$<>"OR" AND B$<>"AND" AND B$<>"STEP" THEN 250 +240 IF X<>0 THEN E$=MID$(A$(CNT),X-2,2):F$=MID$(A$(CNT),X-3,3):IF E$<>":F" AND E$<>" F" AND E$<>" R" AND E$<>":R" AND E$<>"GO" AND F$<>"RES" AND F$<>"ERR" AND MID$(A$(CNT),X-4,4)<>"REST" THEN GOSUB 640:GOTO 190 +250 IF X=0 THEN 290 +255 IF B$="AND" OR B$="OR" OR B$="TO" OR B$="STEP" THEN Y=X+LEN(B$):GOTO 200 +260 IF MID$(A$(CNT),X-1,1)=" " OR MID$(A$(CNT),X-1,1)=":" THEN GOSUB 610:GOTO 190 +270 IF MID$(A$(CNT),X-1,1)="L" AND B$="PRINT" THEN Y=X+LEN(B$):GOTO 200 +280 GOSUB 640:GOTO 190 +290 Y=1:NEXT COT +300 PRINT @ 827,"Line";CNT;"is now done.":RESTORE:NEXT CNT +310 ' +320 ' +330 CLS:PRINT @ 418,"I am now changing all IF THEN statements":PRINT @ 670,"STARTING NOW" +340 FOR CNT=1 TO KOUNT:X=1:F=1 +350 X=INSTR(X,A$(CNT),"IF"):IF X=0 THEN 430 +355 IF F<>0 THEN 670 +360 Y=INSTR(X,A$(CNT),"THEN"):IF Y=0 THEN 390 +370 Z=INSTR(X+2,A$(CNT),"IF"):IF YX THEN W=V +410 NEXT S:IF W=999 THEN 430 +420 A$(CNT)=MID$(A$(CNT),1,W-1)+"THEN "+MID$(A$(CNT),W):X=X+2:GOTO 350 +430 PRINT @ 824,"Line";CNT;"is finished now.":NEXT CNT +440 CLS:E=1:FOR X=1 TO KOUNT STEP 10:CLS:FOR W=1 TO 10:PRINT A$(E):E=E+1:NEXT W:PRINT:INPUT"Hit ENTER for rest of list";U:PRINT:NEXT X +450 ' +460 ' +470 CLS:PRINT @ 320, "Old filename=";C$:PRINT @ 410,"Input file's name and drive to save converted file under":PRINT @ 507,;:LINE INPUT C$ +480 OPEN "O",1,C$ +490 FOR X=1 TO KOUNT:PRINT# 1,A$(X):NEXT X +500 CLOSE 1 +510 END +520 ' +530 ' +540 Q=INSTR(Q+1,A$(CNT),CHR$(34)):IF Q=0 THEN GOTO 290 +550 IF XQ THEN 540 +580 GOTO 230 +590 ' +600 ' +610 A$(CNT)=MID$(A$(CNT),1,X-1+LEN(B$))+" "+MID$(A$(CNT),X+LEN(B$)):Y=X+LEN(B$):RETURN +620 ' +630 ' +640 A$(CNT)=MID$(A$(CNT),1,X-1)+" "+MID$(A$(CNT),X,LEN(B$))+" "+MID$(A$(CNT),X+LEN(B$)):Y=X+LEN(B$)+1:RETURN +650 ' +660 ' +670 F=INSTR(F,A$(CNT),CHR$(34)):IF F>X OR F=0 THEN 360 +680 G=INSTR(F+1,A$(CNT),CHR$(34)):IF G=0 OR G=LEN(A$(CNT)) THEN 430 +690 IF G + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page l-2 + + +More than one BASIC statement may be placed on a line, but +each must be separated from the last by a colon. + +A Microsoft BASIC program line always begins with a line +number and ends with a carriage return. A line may contain +a maximum of 255 characters. + +It is possible to extend a logical line over more than one +physical line by using the key. +lets you continue typing a logical line on the next physical +line without entering a . + + + +1.3.1 Line Numbers + +Every Microsoft BASIC program line begins with a line +number. Line numbers indicate the order in which the +program lines are stored in memory. Line numbers are also +used as references in branching and editing. Line numbers +must be in the range 0 to 65529. + +A period (.) may be used in EDIT, LIST, AUTO, and DELETE +commands to refer to the current line. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-3 + + +1.4 CHARACTER SET + +The Microsoft BASIC character set consists of alphabetic +characters, numeric characters, and special characters. + +The alphabetic characters in Microsoft BASIC are the upper +case and lower case letters of the alphabet. + +The Microsoft BASIC numeric characters are the digits 0 +through 9. + +In addition, the following special characters and terminal +keys are recognized by Microsoft BASIC: + +Character Action + + Blank + = Equals sign or assignment symbol + + Plus sign + - Minus sign + * Asterisk or multiplication symbol + / Slash or division symbol + ^ Up arrow or exponentiation symbol + ( Left parenthesis + ) Right parenthesis + % Percent + # Number (or pound) sign + $ Dollar sign + ! Exclamation point + [ Left bracket + ] Right bracket + , Comma + . Period or decimal point + ' Single quotation mark (apostrophe) + ; Semicolon + : Colon + & Ampersand + ? Question mark + < Less than + > Greater than + \ Backslash or integer division symbol + @ At sign + _ Underscore + Deletes last character typed. + Escapes edit mode subcommands. + See Section 2.16. + Moves print position to next tab stop. + Tab stops are set every eight columns. + Moves to next physical line. + Terminates input of a line. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-4 + + +1.4.1 Control Characters + +Microsoft BASIC supports the following control characters: + +Control Character Action + + Control-A Enters edit mode on the line being typed. + + Control-C Interrupts program execution and returns + to BASIC command level. + + Control-G Rings the bell at the terminal. + + Control-H Backspaces. Deletes the last character + typed. + + Control-I Tabs to the next tab stop. Tab stops are + set every eight columns. + + Control-0 Halts program output while execution + continues. A second Control-0 resumes + output. + + Control-R Lists the line that is currently being + typed. + + Control-S Suspends program execution. + + Control-Q Resumes program execution after a + Control-S. + + Control-U Deletes the line that is currently being + typed. + + + +1.5 CONSTANTS + +Constants are the values Microsoft BASIC uses during +execution. There are two types of constants: string and +numeric. + +A string constant is a sequence of up to 255 alphanumeric +characters enclosed in double quotation marks. + +Examples: + + "HELLO' + "$25,000.00" + "Number of Employees" + +Numeric constants are positive or negative numbers. +Microsoft BASIC numeric constants cannot contain commas. +There are five types of numeric constants: + + GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-5 + + + 1.. Integer constants Whole numbers between -32768 and + 32767. Integer constants do not + contain decimal points. + + 2. Fixed-point Positive or negative real numbers, + constants i.e., numbers that contain decimal + points. + 3. Floating-point Positive or negative numbers repre- + constants sented in exponential form (similar + to scientific notation). A + floating-point constant consists of + an optionally signed integer or + fixed-point number (the mantissa) + followed by the letter E and an + optionally signed integer (the + exponent). The allowable range for + floating-point constants is 10-38 + to 10+38. + + Examples: + + 235.988E-7 = .0000235988 + 2359E6 = 2359000000 + + (Double precision floating-point + constants are denoted by the letter + D instead of E. See Section + 1.5.1.) + 4. Hex constants Hexadecimal numbers, denoted by the + prefix &H. + + Examples: + + &H76 + &H32F + + 5. Octal constants Octal numbers, denoted by the + prefix &O or &. + + Examples: + + &O347 + &1234 + +Note The 8K version of Microsoft BASIC does not support +hexadecimal or octal constants. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-6 + + +1.5.1 Single And Double Precision Form For Numeric Constants + +Numeric constants may be either single precision or double +precision numbers. Single precision numeric constants are +stored with 7 digits of precision, and printed with up to 6 +digits of precision. Double precision numeric constants are +stored with 16 digits of precision and printed with up to 16 +digits. + +A single precision constant is any numeric constant that has +one of the following characteristics: + + 1, Seven or fewer digits. + + 2. Exponential form using E. + + 3. A trailing exclamation point (!). + + +Examples: + + 46.8 + -1.09E-06 + 3489.0 + 22.5! + +A double precision constant is any numeric constant that has +one of these characteristics: + + 1. Eight or more digits. + + 2. Exponential form using D. + + 3. A trailing number sign (#). + +Examples: + + 345692811 + -1,09432D-06 + 3489.0* + 7654321.1234 + + + +1.6 VARIABLES + +Variables are names used to represent values used in a BASIC +program. The value of a variable may be assigned explicitly +by the programmer, or it may be assigned as the result of +calculations in the program. Before a variable is assigned +a value, its value is assumed to be zero. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-7 + + +1.6.1 Variable Names And Declaration Characters + +Microsoft BASIC variable names may be any length. Up to 40 +characters are significant. Variable names can contain +letters, numbers, and the decimal point. However, the first +character must be a letter. Special type declaration +characters are also allowed--see below. + +A variable name may not be a reserved word, but embedded +reserved words are allowed. Reserved words include all +Microsoft BASIC commands, statements, function names, and +operator names. If a variable begins with FN, it is assumed +to be a call to a user-defined function. + +Variables may represent either a numeric value or a string. +String variable names are written with a dollar sign ($) as +the last character. For example: A$ = "SALES REPORT". The +dollar sign is a variable type declaration character; that +is, it "declares" that the variable will represent a string. + +Numeric variable names may declare integer, single +precision, or double precision values. The type declaration +characters for these variable names are as follows: + + % Integer variable + + ! Single precision variable + + # Double precision variable + +The default type for a numeric variable name is single +precision. + +Examples of Microsoft BASIC variable names: + +PI# Declares a double precision value. +MINIMUM! Declares a single precision value. +LIMIT% Declares an integer value. +N$ Declares a string value. +ABC Represents a single precision value. + +There is a second method by which variable types may be +declared. The Microsoft BASIC statements DEFINT, DEFSTR, +DEFSNG, and DEFDBL may be included in a program to declare +the types for certain variable names. These statements are +described in detail in Section 2.12. + + + +1.6.2 Array Variables + +An array is a group or table of values referenced by the +same variable name. Each element in an array is referenced +by an array variable that is subscripted with an integer or +an integer expression. An array variable name has as many + +GENERAL rNFORmATION ABOUT MICROSOFT BASIC Page 1-8 + + +subscripts as there are dimensions in the array. For +example V(10) would reference a value in a one-dimension +array, T(1,4) would reference a value in a two-dimension +array, and so on. The maximum number of dimensions for an +array is 255. The maximum number of elements per dimension +is 32,767. + + + +1.6.3 Space Requirements + + +The following table lists only the number of bytes occupied +by the values represented by the variable names. Additional +requirements may vary according to implementation. + +Variables Type Bytes + + Integer 2 + Single Precision 4 + Double Precision 8 + +Arrays Type Bytes + + Integer 2 per element + Single Precision 4 per element + Double Precision 8 per element + +Strings + +3 bytes overhead plus the present contents of the string. + + + +1.7 TYPE CONVERSION + +When necessary, Microsoft BASIC will convert a numeric +constant from one type to another. The following rules and +examples should be kept in mind. + + 1. If a numeric constant of one type is set equal to a + numeric variable of a different type, the number + will be stored as the type declared in the variable + name. (If a string variable is set equal to a + numeric value or vice versa, a "Type mismatch" + error occurs.) + + Example: + + 10 A%=23.42 + 20 PRINT A% + RUN + 23 + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-9 + + + 2. During expression evaluation, all of the operands + in an arithmetic or relational operation are + converted to the same degree of precision, i.e., + that of the most precise operand. Also, the result + of an arithmetic a operation is returned to this + degree of precision. + + Examples: + + 10 D#7=6*/7 The arithmetic was performed + 20 PRINT D# in double precision and the + RUN result was returned in D# + .8571428571428571 as a double precision + value. + + 10 D=6#/7 The arithmetic was performed + 20 PRINT D in double precision and the + RUN result was returned to D (single + .857143 precision variable), rounded, and + printed as a single precision + value. + + + 3. Logical operators (see Section 1.8.3) convert their + operands to integers and return an integer result. + Operands must be in the range -32768 to 32767 or an + "Overflow" error occurs. + + + 4. when a floating-point value is converted to an + integer, the fractional portion is rounded. + + Example: + + 10 C%=55.88 + 20 PRINT C% + RUN + 56 + + + 5. If a double precision variable is assigned a single + precision value, only the first seven digits + (rounded) of the converted number will be valid. + This is because only seven digits of accuracy were + supplied with the single precision value. The + absolute value of the difference between the + printed double precision number and the original + single precision value will be less than 6.3E-8 + times the original single precision value. + + Example: + + 10 A=2.04 + 20 B#=A + 30 PRINT A; B# + RUN + 2.04 2.039999961853027 + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-10 + + +1.8 EXPRESSIONS AND OPERATORS + +An expression may be a string or numeric constant, a +variable, or a combination of constants and variables with +operators which produces a single value. + +Operators perform mathematical or logical operations on +values. The Microsoft BASIC operators may be divided into +four categories: + + 1. Arithmetic + + 2. Relational + + 3. Logical + + 4. Functional + + +Each category is described in the following sections. + + + + +1.8.1 Arithmetic Operators + +The arithmetic operators, in order of precedence, are: + +Operator Operation Sample Expression + + ^ Exponentiation X"Y + + - Negation -X + + *,/ Multiplication, Floating- X*Y + point Division X/Y + + +,- Addition, Subtraction X+Y + +To change the order in which the operations are performed, +use parentheses. Operations within parentheses are +performed first. Inside parentheses, the usual order of +operations is maintained. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-11 + + +Here are some sample algebraic expressions and their +Microsoft BASIC counterparts. + +Algebraic Expression BASIC Expression + X+2Y X+Y*2 + + X- X-Y/Z + + X*Y/Z + + (X+Y)/Z + + (X (X^2)^Y + + X X^(Y^Z) + + X(-Y) X*(-Y) Two consecutive + operators must + be separated by + parentheses. + + + +1.8.1.1 Integer Division And Modulus Arithmetic - + +Two additional operators are available in Microsoft BASIC: +integer division and modulus arithmetic. + +Integer division is denoted by the backslash (\). The +operands are rounded to integers (must be in the range +-32768 to 32767) before the division is performed, and the +quotient is truncated to an integer. + +Example: + 10\4=2 + 25.68\6.99=3 +Integer division follows multiplication and floating-point +division in order of Precedence. + +Modulus arithmetic is denoted by the operator MOD. Modulus +arithmetic yields the integer value that is the remainder of +an integer division. + +Example: + + 10.4 MOD 4=2 (10/4=2 with a remainder 2) + 25.68 MOD 6.99=5 (26/7=3 with a remainder 5) + +Modulus arithmetic follows integer division in order of +precedence. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-12 + + +1.8.1.2 Overflow And Division By Zero - + +If, during the evaluation of an expression, division by zero +is encountered, the "Division by zero" error message is +displayed, machine infinity with the sign of the numerator +is supplied as the result of the division, and execution +continues. If the evaluation of an exponentiation operator +results in zero being raised to a negative power, the +"Division by zero" error message is displayed, positive +machine infinity is supplied as the result of the +exponentiation, and execution continues. + +If overflow occurs, the "Overflow" error message is +displayed, machine infinity with the algebraically correct +sign is supplied as the result, and execution continues. + + + +1.8.2 Relational Operators + +Relational operators are used to compare two values. The +result of the comparison is either "true" (-1) or "false" +(0). This result may then be used to make a decision +regarding program flow. (See "IF" statements, Section +2.26.) + +The relational operators are + +Operator Relation Tested Example + + = Equality X=Y + + <> Inequality X<>Y + + < Less than X Greater than X>Y + + <= Less than or equal to X<=Y + + >= Greater than or equal to X>=Y + +(The equal sign is also used to assign a value to a +variable. See "LET," Section 2.30.) + +When arithmetic and relational operators are combined in one +expression, the arithmetic is always performed first. For +example, the expression + X+Y<(T-1)/Z + +is true if the value of X plus Y is less than the value of +T-1 divided by Z. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-13 + + +More examples: + + IF SIN(X)<0 GOTO 1000 + IF I MOD J<>0 THEN K=K+1 + + + +1.8.3 Logical Operators +Logical operators perform tests on multiple relations, bit +manipulation, or Boolean operations. The logical operator +returns a bitwise result which is either "true" (not zero) +or "false" (zero). In an expression, logical operations are +performed after arithmetic and relational operations. The +outcome of a logical operation is determined as shown in +Table 1. The operators are listed in order of precedence. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-14 + + +Table 1. Microsoft BASIC Relational Operators Truth Table + + NOT + X NOT X + 1 0 + 0 1 + + AND + X Y X AND Y + 1 1 1 + 1 0 0 + 0 1 0 + 0 0 0 + + OR + X Y X OR Y + 1 1 1 + 1 0 1 + 0 1 1 + 0 0 0 + + XOR + X Y X XOR Y + 1 1 0 + 1 0 1 + 0 1 1 + 0 0 0 + + EQV + X Y X EQV Y + 1 1 1 + 1 0 0 + o 1 0 + o 0 1 + + IMP + X I X IMP Y + 1 1 1 + 1 0 0 + o 1 1 + o 0 1 + +Just as the relational operators can be used to make +decisions regarding program flow, logical operators can +connect two or more relations and return a true or false +value to be used in a decision (see "IF" statements, Section +2.26). +Example: + + IF D<200 AND F<4 THEN 80 + IF I>10 OR K<0 THEN 50 + IF NOT P THEN 100 + +Logical operators work by converting their operands to + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-15 + + +16-bit, signed, two's complement integers in the range +-32768 to 32767. (If the operands are not in this range, an +error results.) If both operands are supplied as 0 or -1, +logical operators return 0 or -1. The given operation is +performed on these integers in bitwise fashion, i.e., each +bit of the result is determined by the corresnonding bits in +the two operands. + +Thus, it is possible to use logical operators to test bytes +for a particular bit pattern. For instance, the AND +operator may be used to "mask" all but one of the bits of a +status byte at a machine I/O port. The OR operator may be +used to "merge" two bytes to create a particular binary +value. The following examples will help demonstrate how the +logical operators work. + +63 AND 16=16 63=binary 111111 and 16=binary + 10000, so 63 AND 16=16. + +15 AND 14=14 15=binary 1111 and 14=binary 1110, + so 15 AND 14=14 (binary 1110). + +-1 AND 8=8 -1=binary 1111111111111111 and + 8=binary 1000, so -1 AND 8=8. + +4 OR 2=6 4=binary 100 and 2=binary 10, + so 4 OR 2=6 (binary 110). + +10 OR 10=10 10=binary 1010, so 1010 OR 1010= + 1010 (decimal 10). + +-1 OR -2=-1 -1=binary 1111111111111111 and + -2=binary 1111111111111110, + so -1 OR -2=-1. The bit + complement of sixteen zeros is + sixteen ones, which is the + two's complement representation of -1. + +NOT X=-(X+1) The two's complement of any integer + is the bit complement plus one. + + + +1.8.4 Functional Onerators + +A function is used in an expression to call a predetermined +operation that is to be performed on an operand. Microsoft +BASIC has "intrinsic" functions that reside in the system, +such as SQR (square root) or SIN (sine). All Microsoft +BASIC intrinsic functions are described in Chapter 3. + +Microsoft BASIC also allows "user-defined" functions that +are written by the programmer. See "DEF FN," Section 2.11. + +GENERAL INFORMATION ABOUT MICROSOFT BASIC Page 1-16 + + +1.8.5 String Operations + +Strings may be concatenated by using +. + +Example: + + 10 A$="FILE" : 8$="NAME" + 20 PRINT A$+B$ + 30 PRINT "NEW "+A$+B$ + RUN + FILENAME + NEW FILENAME + +Strings may be compared using the same relational operators +that are used with numbers: + + = <> < > <= >= + +String comparisons are made by taking one character at a +time from each string and comparing the ASCII codes. If all +the ASCII codes are the same, the strings are equal. If the +ASCII codes differ, the lower code number precedes the +higher. If during string comparison the end of one string +is reached, the shorter string is said to be smaller. +Leading and trailing blanks are significant. + +Examples: + + "AA"<"AB" + "FILENAME"="FILENAME" + "X&">"X#" + "CL ">"CL" + "kg" >"KG" + "SMYTH"<"SMYTHE" + B$<"9/12/78" where B$="8/12/78" + +Thus, string comparisons can be used to test string values +or to alphabetize strings. All string constants used in +comparison expressions must be enclosed in quotation marks. + + + +1.9 INPUT EDITING + +If an incorrect character is entered as a line is being +typed, it can be deleted with the key or with +Control-H. Rubout surrounds the deleted character(s) with +backslashes. Control-H has the effect of backspacing over a +character and erasing it. Once a character(s) has been +deleted, simply continue typing the line as desired. + +To delete a line that is in the process of being typed, type +Control-U. A carriage return is executed automatically +after the line is deleted. + +GENERAL ENFORMATION ABOUT MICROSOFT BASIC Page 1-17 + + +To correct program lines for a program that is currently in +memory, simply retype the line using the same line number. +Microsoft BASIC will automatically replace the old line with +the new line. +More sophisticated editing capabilities are provided. See +"EDIT," Section 2.16. + +To delete the entire program currently residing in memory, +enter the NEW command. (See Section 2.41.) NEW is usually +used to clear memory prior to entering a new program. + + + +1.10 ERROR MESSAGES + +If an error causes program execution to terminate, an error +message is printed. For a complete list of Microsoft BASIC +error codes and error messages, see Appendix A. + +<<< blank page >>> + +Chapter 2 Microsoft BASIC Commands and Statements + +Introduction +2.1 AUTO +2.2 CALL +2.3 CHAIN +2.4 CLEAR +2.5 CLOAD +2.6 CLOSE +2.7 COMMON +2.8 CONT +2.9 CSAVE +2.10 DATA +2.11 DEF FN +2.12 DEFINT/SNG/DBL/STR +2.13 DEF USR +2.14 DELETE +2.15 DIM +2.16 EDIT +2.17 END +2.18 ERASE +2.19 ERR and ERL Variables +2.20 ERROR +2.21 FIELD +2.22 FOR...NEXT +2.23 GET +2.24 GOSUB...RETURN +2.25 GOTO +2.26 IF-THEN[...ELSE] and IF...GOTO +2.27 INPUT +2.28 INPUT# +2.29 KILL +2.30 LET +2.31 LINE INPUT +2.32 LINE INPUT# +2.33 LIST +2.34 LLIST +2.35 LOAD +2.36 LPRINT and LPRINT USING +2.37 LSET and RSET +2.38 MERGE +2.39 MID$ +2.40 NAME +2.41 NEW +2.42 NULL +2.43 ON ERROR GOTO +2.44 ON...GOSUB and ON...GOTO +2.45 OPEN +2.46 OPTION BASE +2.47 OUT +2.48 POKE +2.49 PRINT +2.50 PRINT USING +2.51 PRINT# and PRINT# USING +2.52 PUT + + GENERAL INFORMATION ABOUT MICROSOFT BASIC + + + 2.53 RANDOMIZE + 2.54 READ + 2.55 REM + 2.56 RENUM + 2.57 RESTORE + 2.58 RESUME + 2.59 RUN + 2.60 SAVE + 2.61 STOP + 2.62 SWAP + 2.63 TRON/TROFF + 2.64 WAIT + 2.65 WHILE...WEND + 2.66 WIDTH + 2.67 WRITE + 2.68 WRITE# + + CHAPTER 2 + + MICROSOFT BASIC COMMANDS AND STATEMENTS + + +Microsoft BASIC commands and statements are described in +this chapter. Each description is formatted as follows: + +Format Shows the correct format for the instruction. + See the "Introduction" to this manual for syntax + notation. + +Purpose Tells what the instruction is used for. + +Remarks Describes in detail how the instruction + is used. + +Example Shows sample programs or program segments + that demonstrate the use of the instruction. + +Note Describes special cases or provides additional + pertinent information. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-2 + + +2.1 AUTO + + +Format AUTO [dine number>[,]] + +Purpose To generate a line number automatically after + every carriage return. + +Remarks AUTO begins numbering at and + increments each subsequent line number by + . The default for both values is 10. + If is followed by a comma but + is not specified, the last increment + specified in an AUTO command is assumed. + + If AUTO generates a line number that is already + being used, an asterisk is printed after the + number to warn the user that any input will + replace the existing line. However, typing a + carriage return immediately after the asterisk + will save the line and generate the next line + number. + AUTO is terminated by typing Control-C. The + line in which Control-C is typed is not saved. + After Control-C is typed, Microsoft BASIC + returns to command level. + +Example AUTO 100,50 Generates line numbers 100, + 150, 200 .. + + AUTO Generates line numbers 10, + 20, 30, 40 ... + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-3 + + +2.2 CALL + + +Format CALL [()] + +Purpose To call an assembly language subroutine. + +Remarks: The CALL statement is one way to transfer + program flow to an external subroutine. (See + also the USR function, Section 3.41) + + contains an address that is the + starting point in memory of the subroutine. + may not be an array variable + name. contains the arguments + that are passed to the external subroutine. + may contain only variables. + + The CALL statement generates the same calling + sequence used by Microsoft(TM) FORTRAN, + Microsoft(TM) COBOL, and Microsoft(TM) BASIC + Compilers. + +Example 110 MYROUT=&HD000 + 120 CALL MYROUT(I,J,K) + . + . + . + +Note In a Microsoft BASIC Compiler program, line 110 + is not required because the address of MYROUT + will be assigned by the linking loader at load + time. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-4 + + +2.3 CHAIN + + +Format CHAIN [MERGE ][,[] + [,ALL][,DELETE ]] + +Purpose To call a program and pass variables to it from + the current program. + +Remarks is the name of the program that is + called. + + The COMMON statement may be used to pass + variables (see Section 2.7). + +Example 1 + 10 REM THIS PROGRAM DEMONSTRATES CHAINING USING + COMMON TO PASS VARIABLES. + 20 REM SAVE THIS MODULE ON DISK AS "PROG1" + USING THE A OPTION. + 30 DIM A$(2),B$(2) + 40 COMMON A$(),B$() + 50 A$(1)="VARIABLES IN COMMON MUST BE ASSIGNED" + 60 A$(2)="VALUES BEFORE CHAINING." + 70 B$(1)="": B$(2) ="" + 80 CHAIN "PROG2" + 90 PRINT: PRINT B$(1): PRINT: PRINT B$(2): + PRINT + 100 END + + is a line number or an + expression that evaluates to a line number in + the called program. It is the starting point + for execution of the called program. If it is + omitted, execution begins at the first line. + +Example 2 + 10 REM THE STATEMENT "DIM A$(2),B$(2)" + MAY ONLY BE EXECUTED ONCE. + 20 REM HENCE, IT DOES NOT APPEAR IN THIS + MODULE. + 30 REM SAVE THIS MODULE ON THE DISK AS "PROG2" + USING THE A OPTION, + 40 COMMON A$(),B$() + 50 PRINT: PRINT A$(1);A$(2) + 60 B$(1)="NOTE HOW THE OPTION OF SPECIFYING + A STARTING LINE NUMBER" + 70 B$(2)="WHEN CHAINING AVOIDS THE DIMENSION + STATEMENT IN 'PROG1'." + 80 CHAIN "PROG1",90 + 90 END + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-S + + + is not affected by a RENUM + command. + + With the ALL option, every variable in the + current program is passed to the called program. + If the ALL option is omitted, the current + program must contain a COMMON statement to list + the variables that are passed. See Section 2.7. + + The MERGE option allows a subroutine to be + brought into the BASIC program as an overlay. + That is, a MERGE operation is performed with the + current program and the called program. The + called program must be an ASCII file if it is to + be MERGEd. + + After an overlay is brought in, it is usually + desirable to delete it so that a new overlay may + be brought in. To do this, use the DELETE + option. + +Example 3 + 10 REM THIS PROGRAM DEMONSTRATES CHAINING USING + THE MERGE AND ALL OPTIONS. + 20 REM SAVE THIS MODULE ON THE DISK AS + "MAINPRG". + 30 A$="MAINPRG" + 40 CHAIN MERGE "OVRLAY1",1010,ALL + 50 END + + + 1000 REM SAVE THIS MODULE ON THE DISK AS + "OVRLAY1" USING THE A OPTION. + 1010 PRINT A$; " HAS CHAINED TO OVRLAY1." + 1020 A$="OVRLAY1" + 1030 B$="OVRLAY2" + 1040 CHAIN MERGE "OVRLAY2",1010,ALL, + DELETE 1000-1050 + 1050 END + + + 1000 REM SAVE THIS MODULE ON THE DISK AS + "ORLAY2" USING THE A OPTION. + 1010 PRINT A$; " HAS CHAINED TO ";B$;"." + 1020 END + + + The line numbers in are affected by the + RENUM command. + +Note The CHAIN statement with MERGE option leaves the + files open and preserves the current OPTION BASE + setting. + + If the MERGE option is omitted, CHAIN does not + preserve variable types or user-defined + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-6 + + + functions for use by the chained program. That + is, any DEFINT, DEFSNG, DEFDBL, DEFSTR, or DEFFN + statements containing shared variables must be + restated in the chained program. + + The Microsoft BASIC Compiler does not support + the ALL, MERGE, DELETE, and + options to CHAIN. Thus, the statement format is + CHAIN . If you wish to maintain + compatibility with Microsoft BASIC Compiler, it + is recommended that COMMON be used to pass + variables and that overlays not be used. The + CHAIN statement leaves the files open during + CHAINing. + + When using the MERGE option, user-defined + functions should be placed before any CHAIN + MERGE statements in the program. Otherwise, the + user-defined functions will be undefined after + the merge is complete. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-7 + + +2.4 CLEAR + + +Format CLEAR [,[][,]] + +Purpose To set all numeric variables to zero, all string + variables to null, and to close all open files; + and, optionally, to set the end of memory and + the amount of stack space. + +Remarks is a memory location which, if + specified, sets the highest location available + for use by Microsoft BASIC. + + sets aside stack space for + Microsoft BASIC. The default is 512 bytes or + one-eighth of the available memory, whichever is + smaller. + +Note Microsoft BASIC allocates string space + dynamically. An "Out of string space" error + occurs only if there is no free memory left for + Microsoft BASIC to use. + + Microsoft BASIC Compiler supports the CLEAR + statement with the restriction that + and must be integer + expressions. If a value of 0 is given for + either expression, the appropriate default is + used. The default stack size is 512 bytes, and + the default top of memory is the current top of + memory. The CLEAR statement performs the + following actions: + + Closes all files. + Clears all COMMON and user variables. + Resets the stack and string space. + Releases all disk buffers. + + +Examples CLEAR + + CLEAR ,32768 + + CLEAR ,2000 + + CLEAR ,32768,2000 + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-8 + + +2.5 CLOAD + + +Formats CLOAD + + CLOAD? + + CLOAD* + +Purpose To load a program or an array from cassette tape + into memory. + +Remarks CLOAD executes a NEW command before it loads the + program from cassette tape. is the + string expression or the first character of the + string expression that was specified when the + program was CSAVEd. + + CLOAD? verifies tapes by comparing the program + currently in memory with the file on tape that + has the same filename. If they are the same, + Microsoft BASIC prints "Ok". If not, Microsoft + BASIC prints "NO GOOD". + + CLOAD* loads a numeric array that has been saved + on tape. The data on tape is loaded into the + array called specified when the + array was CSAVE*ed. + + CLOAD and CLOAD? are always entered at command + level as direct mode commands. CLOAD* may be + entered at command level or used as a program + statement. Make sure the array has been + DIMensioned before it is loaded. Microsoft + BASIC always returns to command level after a + CLOAD, CLOAD?, or CLOAD* is executed. Before a + CLOAD is executed, make sure the cassette + recorder is properly connected and in the play + mode, and the tape is positioned correctly. + + See also "CSAVE," Section 2.9. + +Note CLOAD and CSAVE are not included in all + implementations of Microsoft BASIC. + +Example CLOAD "MAX2" + + Loads file "MAX2" into memory. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-9 + + + +2.6 CLOSE + + + +Format CLOSE [[#][,[#]]] + + +Purpose To conclude I/O to a disk file. + + +Remarks is the number under which the file + was OPENed. A CLOSE with no arguments closes + all open files. + + + The association between a particular file and + file number terminates upon execution of a CLOSE + statement. The file may then be reOPENed using + the same or a different file number; likewise, + that file number may now be reused to OPEN any + file. + + + A CLOSE for a sequential output file writes the + final buffer of output. + + + The END statement and the NEW command always + CLOSE all disk files automatically. (STOP does + not close disk files.) + + +Example See "Microsoft BASIC Disk I/O," in the Microsoft + BASIC User's Guide. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-10 + + +2.7 COMMON + + +Format COMMON + +Purpose To pass variables to a CHAINed program. + +Remarks The COMMON statement is used in conjunction with + the CHAIN statement. COMMON statements may + appear anywhere in a program, though it is + recommended that they appear at the beginning. + The same variable cannot appear in more than one + COMMON statement. Array variables are specified + by appending '()" to the variable name. If all + variables are to be passed, use CHAIN with the + ALL option and omit the COMMON statement. + +Example 100 COMMON A,B,C,D(),G$ + 110 CHAIN "PROG3",10 + + + + +Note Microsoft BASIC Compiler supports a modified + version of the COMMON statement. The COMMON + statement must appear in a program before any + executable statements. The current + nonexecutable statements are: + + COMMON + DEFDBL, DEFINT, DEFSNG, DEFSTR + DIM + OPTION BASE + REM + $INCLUDE + + Array variables used in a COMMON statement must + be declared in a preceding DIM statement. + + The standard form of the COMMON statement is + referred to as blank COMMON. Microsoft FORTRAN + Compiler-style named COMMON areas are also + supported; however, the variables are not + preserved across CHAINs. The syntax for named + COMMON is: + + COMMON // + + where consists of 1 to 6 alphanumeric + characters starting with a letter. This is + useful for communicating with Microsoft FORTRAN + Compiler and assembly language routines without + having to explicitly pass parameters in the CALL + statement. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-11 + + + The blank COMMON size and order of variables + must be the same in the CHAINing and CHAINed + programs. With Microsoft BASIC Compiler, the + best way to insure this is to place all blank + COMMON declarations in a single include file and + use the $INCLUDE statement in each program. + + For example: + + MENU .BAS + 10 $INCLUDE COMDEF + . + . + . 1000 CHAIN "PROG1" + + + PROG1.BAS + 10 $INCLUDE COMDEF + . + . + . 2000 CHAIN "MENU" + + + COMDEF.BAS + 100 DIM A(100),B$(200) + 110 COMMON I,J,K,A() + 120 COMMON A$,B$(),X,Y,Z + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-12 + + +2.8 CONT + + +Format CONT + +Purpose To continue program execution after a Control-C + has been typed or a STOP or END statement has + been executed. +Remarks Execution resumes at the point where the break + occurred. If the break occurred after a prompt + from an INPUT statement, execution continues + with the reprinting of the prompt ("?" or prompt + string). + + CONT is usually used in conjunction with STOP + for debugging. When execution is stopped, + intermediate values may be examined and changed + using direct mode statements. Execution may be + resumed with CONT or a direct mode GOTO, which + resumes execution at a specified line number. + CONT may be used to continue execution after an + error has occurred. + CONT is invalid if the program has been edited + during the break. + +Example See "STOP," Section 2.61. + +MICROSOFT BASIC CONIMANDS AND STATEMENTS Page 2-13 + + +2.9 CSAVE + + +Formats CSAVE + + CSAVE* + +Purpose To save the program or an array currently in + memory on cassette tape. + +Remarks Each program or array saved on tape is + identified by a filename. When the command + CSAVE is executed, Microsoft + BASIC saves the program currently in memory on + tape and uses the first character in as the filename. may be more than one character, but + only the first character is used for the + filename. + + When the command CSAVE* is + executed, Microsoft BASIC saves the specified + array on tape. The array must be a numeric + array. The elements of a multidimensional array + are saved with the leftmost subscript changing + fastest. For example, when the 2-dimensional + array specified by DIM A(2,2) is saved (see + "DIM," Section 2.15), the array elements are + saved in the following order: + + 0,0 + 1,0 + 2,0 + 0,1 + 1,1 + 2,1 + 0,2 + 1,2 + 2,2 + + + CSAVE may be used as a program statement or as a + direct mode command. + + Before a CSAVE or CSAVE* is executed, make sure + the cassette recorder is properly connected and + in the record mode. + + See also "CLOAD," Section 2.5. + +Note CSAVE and CLOAD are not included in all + implementations of Microsoft BASIC. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-14 + +Example CSAVE "TIMER" + Saves the program currently in memory + on cassette under filename "TIMER". + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-15 + + +2.10 DATA + + +Format DATA + +Purpose To store the numeric and string constants that + are accessed by the program's READ statement(s). + (See "READ," Section 2.54.) + +Remarks DATA statements are nonexecutable and may be + placed anywhere in the program. A DATA + statement may contain as many constants as will + fit on a line (separated by commas). Any number + of DATA statements may be used in a program. + READ statements access DATA statements in order + (by line number). The data contained therein + may be thought of as one continuous list of + items, regardless of how many items are on a + line or where the lines are placed in the + program. + + may contain numeric + constants in any format; i.e., fixed-point, + floating-point, or integer. (No numeric + expressions are allowed in the list.) String + constants in DATA statements must be surrounded + by double quotation marks only if they contain + commas, colons, or significant leading or + trailing spaces. Otherwise, quotation marks are + not needed. + + The variable type (numeric or string) given in + the READ statement must agree with the + corresponding constant in the DATA statement. + + DATA statements may be reread from the beginning + by use of the RESTORE statement (Section 2.57). + +Example See "READ," Section 2.54. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-16 + + +2.11 DEF FN + + +Format DEF FN[)]= + +Purpose To define and name a function that is written by + the user. + +Remarks must be a legal variable name. This + name, preceded by FN, becomes the name of the + function. + + consists of those variable + names in the function definition that are to be + replaced when the function is called. The items + in the list are separated by commas. + + is an expression that + performs the operation of the function. It is + limited to one line. Variable names that appear + in this expression serve only to define the + function; they do not affect program variables + that have the same name. A variable name used + in a function definition may or may not appear + in the parameter list. If it does, the value of + the parameter is supplied when the function is + called. Otherwise, the current value of the + variable is used. + + The variables in the parameter list represent, + on a one-to-one basis, the argument variables or + values that will be given in the function call. + + This statement may define either numeric or + string functions. If a type is specified in the + function name, the value of the expression is + forced to that type before it is returned to the + calling statement. If a type is specified in + the function name and the argument type does not + match, a 'Tyne mismatch' error occurs. + + A DEF FN statement must be executed before the + function it defines may be called. If a + function is called before it has been defined, + an "Undefined user function" error occurs. DEF + FN is illegal in the direct mode. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-17 + + +Example . + . + 410 DEF FNAB(X,Y)=X^3/Y^2 + 420 T=FNAB(I,J) + . + . + Line 410 defines the function FNAB. The + function is called in line 420. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-18 + + +2.12 DEFINT/SNG/DBL/STR + + +Format DEF + + where is INT, SNG, DBL, or STR + +Purpose To declare variable types as integer, single + precision, double precision, or string. + +Remarks: Any variable names beginning with the letter(s) + specified in will be + considered the type of variable specified in the + portion of the statement. However, a + type declaration character always takes + precedence over a DEFtype statement. (See + "Variable Names and Declaration Characters," + Section 1.6.1.) + If no type declaration statements are + encountered, Microsoft BASIC assumes all + variables without declaration characters are + single precision variables. + +Examples 10 DEFDBL L-P All variables beginning with + the letters L, M, N, O, and P + will be double precision + variables. + + 10 DEFSTR A All variables beginning with + the letter A will be string + variables. + + 10 DEFINT I-N,W-Z + All variable beginning with + the letters I, J, K, L, M, + N, W, X, Y, Z will be integer + variables. + +MICROSOFT BASIC COKMANDS AND STATEMENTS Page 2-19 + + +2.13 DEF USR + + +Format DEF USR[]= + +Purpose To specify the starting address of an assembly + language subroutine. +Remarks may be any digit from 0 to 9. The digit + corresponds to the number of the USR routine + whose address is being specified. If is + omitted, DEF USR0 is assumed. The value of + is the starting address of + the USR routine. See "Assembly Language + Subroutines," in the Microsoft BASIC User's + Guide. + + Any number of DEF USR statements may appear in a + program to redefine subroutine starting + addresses, thus allowing access to as many + subroutines as necessary. + +Example + + + 200 DEF USR0=24000 + 210 X=USR0(Y^2/2.89) + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-20 + + +2.14 DELETE + + +Format DELETE [][-] + +Purpose To delete program lines. + +Remarks Microsoft BASIC always returns to command level + after a DELETE is executed. If + does not exist, an "Illegal function call" error + occurs. + +Examples DELETE 40 Deletes line 40. + + DELETE 40-100 Deletes lines 40 through + 100, inclusive. + + DELETE -40 Deletes all lines up to + and including line 40. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-21 + + +2.15 DIM + + +Format DIM + +Purpose To specify the maximum values for array variable + subscripts and allocate storage accordingly. + +Remarks If an array variable name is used without a DIM + statement, the maximum value of the array's + subscript(s) is assumed to be 10. If a + subscript is used that is greater than the + maximum specified, a "Subscript out of range" + error occurs. The minimum value for a subscript + is always 0, unless otherwise specified with the + OPTION BASE statement (see Section 2.46). + + The DIM statement sets all the elements of the + specified arrays to an initial value of zero. + + Theoretically, the maximum number of dimensions + allowed in a DIM statement is 255. In reality, + however, that number would be impossible, since + the name and punctuation are also counted as + spaces on the line, and the line itself has a + limit of 255 characters. The number of + dimensions is further limited by the amount of + available memory. + +Example 10 DIM A(20) + 20 FOR I=0 TO 20 + 30 READ A(I) + 40 NEXT I + . + . + . + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-22 + + +2.16 EDIT + + +Format EDIT + +Purpose To enter edit mode at the specified line. + +Remarks In edit mode, it is possible to edit portions of + a line without retyping the entire line. Upon + entering edit mode, BASIC types the line number + of the line to be edited, then it types a space + and waits for an edit mode subcommand. + +Edit Mode Subcommands + +Edit mode subcommands are used to move the cursor or to +insert, delete, replace, or search for text within a line. +The subcommands are not echoed. However, most of the edit +mode subcommands may be preceded by an integer which causes +the command to be executed that number of times. When an +integer is not specified, it is assumed to be 1. + +Edit mode subcommands may be categorized according to the +following functions: + 1. Moving the cursor. + + 2. Inserting text. + + 3. Deleting text. + + 4. Finding text. + + 5. Replacing text. + + 6. Ending and restarting edit mode. + + 7. Entering edit mode from a syntax error. + + +Note In the descriptions that follow, represents + any character, represents a string of + characters of arbitrary length, [i] represents + an optional integer (the default is 1), and $ + represents the Escape (or Altmode) key. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-23 + + +1. Moving the Cursor + + Space bar + + Use the space bar to move the cursor to the + right. [i]Space bar moves the cursor i spaces + to the right. Characters are printed as you + space over them. + + Rubout In edit mode, fi]Rubout moves the cursor i + spaces to the left (backspaces) . Characters are + printed as you backspace over them. + +2. Inserting Text + + I I$ inserts at the current cursor + position. The inserted characters are printed + on the terminal. To terminate insertion, press + Escape. If a is typed during + an Insert command, the effect is the same as + pressing Escape and then . + During an Insert command, the Rubout, Delete, or + Underscore key on the terminal may be used to + delete characters to the left of the cursor. + Rubout will print out the characters as you + backspace over them. Delete and underscore will + print an Underscore for each character that you + backspace over. If an attempt is made to insert + a character that will make the line longer than + 255 characters, a bell (Control-G) sounds and + the character is not printed. + + X The X subcommand extends the line. X moves the + cursor to the end of the line, enters insert + mode, and allows insertion of text as if an + Insert command had been given. When you are + finished extending the line, press Escape or + carriage return. + +3. Deleting Text + + D [i]D deletes i characters to the right of the + cursor. The deleted characters are echoed + between backslashes, and the cursor is + positioned to the right of the last character + deleted. If there are fewer than i characters + to the right of the cursor, iD deletes the + remainder of the line. + + H H deletes all characters to the right of the + cursor and then automatically enters insert + mode. H is useful for extending a line or + replacing statements at the end of a line. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-24 + + +4. Finding Text + + S The subcommand [i]S searches for the ith + occurrence of and positions the cursor + before it. The character at the current cursor + position is not included in the search. If + is not found, the cursor stops at the end of the + line. All characters passed over during the + search are printed. + + K The subcommand [i]K is similar to [i]S, + except all the characters passed over in the + search are deleted. The cursor is positioned + before , and the deleted characters are + enclosed in backslashes. + +5. Replacing Text + + C The subcommand C changes the next character + to . If you wish to change the next i + characters, use the subcommand iC, followed by + as many characters as are specified by i. After + the ith new character is typed, change mode is + exited and you will return to edit mode. + +6. Ending and Restarting Edit Mode + + Typing a prints the remainder + of the line, saves the changes you made, and + exits edit mode. + + E The E subcommand has the same effect as + , except the remainder of the + line is not printed. + + Q The Q subcommand returns to Microsoft BASIC + command level, without saving any of the changes + that were made to the line in edit mode. + + L The L subcommand lists the remainder of the line + (saving any changes made so far) and repositions + the cursor at the beginning of the line, still + in edit mode. L is usually used to list the + line when you first enter edit mode. + + A The A subcommand lets you begin editing a line + over again. It restores the original line and + repositions the cursor at the beginning. + + Control-A + + To enter edit mode on the line you are currently + typing, type Control-A. Microsoft BASIC + responds with a , an + exclamation point (!), and a space. The cursor + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-25 + + + will be positioned at the first character in the + line. Proceed by typing an edit mode + subcommand. + + Remember, if you have just entered a line and + wish to go back and edit it, the command "EDIT." + will enter edit mode at the current line. (The + line number symbol "." always refers to the + current line.) + + If an unrecognizable command or illegal + character is input to Microsoft BASIC while in + edit mode, BASIC sends a Control-G (bell) to the + terminal, and the command or character is + ignored. + +7. Entering Edit Mode from a Syntax Error + + When a syntax error is encountered during + execution of a program, Microsoft BASIC + automatically enters edit mode at the line that + caused the error. For example: + + 10 K=2(4) + RUN + ?Syntax error in 10 + 10 + + When you finish editing the line and press + (or the E subcommand), + Microsoft BASIC reinserts the line. This causes + all variable values to be lost. To preserve the + variable values for examination, first exit edit + mode with the Q subcommand. Microsoft BASIC + will return to command level, and all variable + values will be preserved. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-26 + + +2.17 END + + +Format END + +Purpose To terminate program execution, close all files, + and return to command level. + +Remarks END statements may be placed anywhere in the + program to terminate execution. Unlike the STOP + statement, END does not cause a "Break in line + nnnnn" message to be printed. An END statement + at the end of a program is optional. Microsoft + BASIC always returns to command level after an + END is executed. + +Example 520 IF K>1000 THEN END ELSE GOTO 20 + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-27 + + +2.18 ERASE + + +Format ERASE + +Purpose To eliminate arrays from a program. + +Remarks Arrays may be redimensioned after they are + ERASEd, or the previously allocated array space + in memory may be used for other purposes. If an + attempt is made to redimension an array without + first ERASEing it, a "Redimensioned array" error + occurs. + + Microsoft BASIC Compiler does not support ERASE. + +Example + . + . + . + 450 ERASE A,B + 460 DIM B(99) + . + . + . + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-28 + + +2.19 ERR AND ERL VARIABLES + + + When an error handling routine is entered, the + variable ERR contains the error code for the + error and the variable ERL contains the line + number of the line in which the error was + detected. The ERR and ERL variables are usually + used in IF...THEN statements to direct program + flow in the error handling routine. + + If the statement that caused the error was a + direct mode statement, ERL will contain 65535. + To test whether an error occurred in a direct + statement, use IF 65535=ERL THEN + Otherwise, use + + IF ERR=error code THEN ... + + IF ERL=line number THEN ... + + If the line number is not on the right side of + the relational operator, it cannot be renumbered + with RENUM. Because ERL and ERR are reserved + variables, neither may appear to the left of the + equal sign in a LET (assignment) statement. + Microsoft BASIC error codes are listed in + Appendix A. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-29 + + +2.20 ERROR + + +Format ERROR + +Purpose To simulate the occurrence of a BASIC error, or + to allow error codes to be defined by the user. + +Remarks The value of must be + greater than 0 and less than 255. If the value + of equals an error code + already in use by BASIC (see Appendix A), the + ERROR statement will simulate the occurrence of + that error and the corresoonding error message + will be printed. (See Example 1.) + + To define your own error code, use a value that + is greater than any used by Microsoft BASIC + error codes. (It is preferable to use the + highest available values, so compatibility may + be maintained when more error codes are added to + Microsoft BASIC.) This user-defined error code + may then be conveniently handled in an error + handling routine. (See Example 2.) + + If an ERROR statement specifies a code for which + no error message has been defined, Microsoft + BASIC responds with the "Unprintable error" + error message. Execution of an ERROR statement + for which there is no error handling routine + causes an error message to be printed and + execution to halt. + +Example 1 LIST + 10 S=10 + 20 T=5 + 30 ERROR S+T + 40 END + Ok + RUN + String too long in line 30 + + Or, in direct mode: + + Ok + ERROR 15 (You type this line.) + String too long (BASIC types this line.) + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-30 + + +Example 2 . + . + . + 110 ON ERROR GOTO 400 + 120 INPUT "WHAT IS YOUR BET";B + 130 IF B>5000 THEN ERROR 210 + . + . + . + 400 IF ERR=210 THEN PRINT "HOUSE LIMIT IS $5000" + 410 IF ERL=130 THEN RESUME 120 + . + . + . + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-31 + + +2.21 FIELD + + +Format FIELD [#], AS . + +Purpose To allocate space for variables in a random file + buffer. + +Remarks Before a GET statement or PUT statement can be + executed, a FIELD statement must be executed to + format the random file buffer. + + is the number under which the file + was OPENed. is the number of + characters to be allocated to . + For example, + + FIELD 1,20 AS N$,10 AS ID$,40 AS ADD$ + + allocates the first 20 positions (bytes) in the + random file buffer to the string variable N$, + the next 10 positions to ID$, and the next 40 + positions to ADD$. FIELD does NOT place any + data in the random file buffer. (See + "LSET/RSET," Section 2.37, and "GET," Section + 2.23.) + + The total number of bytes allocated in a FIELD + statement must not exceed the record length that + was specified when the file was OPENed. + Otherwise, a "Field overflow" error occurs. + (The default record length is 128 bytes.) + + Any number of FIELD statements may be executed + for the same file. All FIELD statements that + have been executed will remain in effect at the + same time. + +Note Do not use a FIELDed variable name in an INPUT + or LET statement. Once a variable name is + FIELDed, it points to the correct place in the + random file buffer. If a subsequent INPUT or + LET statement with that variable name is + executed, the variable's pointer is moved to + string space. + +Example 1 FIELD 1,20 AS N$,10 AS ID$,40 AS ADD$ + + Allocates the first 20 positions (bytes) in the + random file buffer to the string variable N$, + the next 10 positions to ID$, and the next 40 + positions to ADD$. FIELD does NOT place any + data in the random file buffer. (See also + "GET," Section 2.23, and "LSET/RSET," Section + 2.37.) + +MICROSOFT BASICCOMMANDS AND STATEMENTS Page 2-32 + + +Example 2 10 OPEN "R,"#1,"A:PHONELST",35 + 15 FIELD #1,2 AS RECNBR$,33 AS DUMMY$ + 20 FIELD #1,25 AS NAMES,10 AS PHONENBR$ + 25 GET #1 + 30 TOTAL=CVI(RECNBR)$ + 35 FOR 1=2 TO TOTAL + 40 GET #1, I + 45 PRINT NAMES, PHONENBR$ + 50 NEXT I + + Illustrates a multiple defined FIELD statement. + In statement 15, the 35 byte field is defined + for the first record to keep track of the number + of records in the file. In the next loop of + statements (35-50), statement 20 defines the + field for individual names and phone numbers. + +Example 3 10 FOR LOOP%=0 TO 7 + 20 FIELD #1,(LOOP%*16) AS OFFSETS,16 AS + A$(LOOP%) + 30 NEXT LOOP% + + Shows the construction of a FIELD statement + using an array of elements of equal size. The + result is equivalent to the single declaration: + + FIELD #1,16 AS A$(0),16 AS A$(1),...,16 AS + A$(6),16 AS A$(7) + +Example 4 10 DIM SIZE% (NUMB%): REM ARRAY OF FIELD SIZES + 20 FOR LOOP%=0 TO NUMB%:READ SIZE% + (LOOP%): NEXT LOOP% + 30 DATA 9,10,12,21,41 + . + . + . + 120 DIM A$(NUMB%): REM ARRAY OF FIELDED + VARIABLES + 130 OFFSET%=0 + 140 FOR LOOP%=0 TO NUMB% + 150 FIELD #1,OFFSET% AS OFFSET$,SIZE%(LOOP%) + AS A$(LOOP%) + 160 OFFSET%=OFFSET%+SIZE%(LOOP%) + 170 NEXT LOOP% + + Creates a field in the same manner as Example 3. + However, the element size varies with each + element. The equivalent declaration is + + FIELD 41,SIZE%(0) AS A$(0),SIZE%(1) AS A$(1),... + SIZE%(NUMB%) AS A$(NUMB%) + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-33 + + +2.22 FOR...NEXT + + +Format FOR =x TO y [STEP z] + + + + NEXT [][,...] + + where x, y, and z are numeric expressions. + +Purpose To allow a series of instructions to be + performed in a loop a given number of times. + +Remarks is used as a counter. The first + numeric expression (x) is the initial value of + the counter. The second numeric expression (y) + is the final value of the counter. The program + lines following the FOR statement are executed + until the NEXT statement is encountered. Then + the counter is adjusted by the amount specified + by STEP. A check is performed to see if the + value of the counter is now greater than the + final value (y) . If it is not greater, + Microsoft BASIC branches back to the statement + after the FOR statement and the process is + repeated. If it is greater, execution continues + with the statement following the NEXT statement. + This is a FOR...NEXT loop. + + If STEP is not specified, the increment is + assumed to be one. If STEP is negative, the + final value of the counter is set to be less + than the initial value. The counter is + decreased each time through the loop. The loop + is executed until the counter is less than the + final value. + + The counter must be an integer or single + precision numeric constant. If a double + precision numeric constant is used, a "Type + mismatch" error will result. + + The body of the loop is skipped if the initial + value of the loop times the sign of the STEP + exceeds the final value times the sign of the + STEP. + + Nested Loons + + FOR...NEXT loops may be nested; that is, a + FOR...NEXT loop may be placed within the context + of another FOR...NEXT loop. When loops are + nested, each loop must have a unique variable + name as its counter. The NEXT statement for the + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-34 + + + inside loop must appear before that for the + outside loop. If nested loops have the same end + point, a single NEXT statement may be used for + all of them. + + The variable(s) in the NEXT statement may be + omitted, in which case the NEXT statement will + match the most recent FOR statement. If a NEXT + statement is encountered before its + corresponding FOR statement, a "NEXT without + FOR" error message is issued and execution is + terminated. + +Example 1 + 10 K=10 + 20 FOR I=1 TO K STEP 2 + 30 PRINT I; + 40 K=K+10 + 50 PRINT K + 60 NEXT + RUN + 1 20 + 3 30 + 5 40 + 7 50 + 9 60 + Ok + +Example 2 + 10 J=0 + 20 FOR I=1 TO J + 30 PRINT I + 40 NEXT I + + In this example, the loop does not execute + because the initial value of the loop exceeds + the final value. + + +Example 3 + 10 I=5 + 20 FOR I=1 TO I+5 + 30 PRINT I; + 40 NEXT + RUN + 1 2 3 4 5 6 7 8 9 10 + Ok + + In this example, the loop executes ten times. + The final value for the loop variable is always + set before the initial value is set. + +Note Previous versions of Microsoft BASIC set the + initial value of the loop variable before + setting the final value; i.e., the above loop + would have executed six times. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-35 + + +2.23 GET + + +Format GET [#][,] + +Purpose To read a record from a random disk file into a + random buffer. + +Remarks is the number under which the file + was OPENed. If is omitted, the + next record (after the last GET) is read into + the buffer. The largest possible record number + is 32767. + +Example See "Microsoft BASIC Disk I/O," in the Microsoft + BASIC User's Guide. + +Note After a GET statement has been executed, INPUT# + and LINE ENPUT# may be executed to read + characters from the random file buffer. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-36 + + +2.24 GOSUB...RETURN + + +Format GOSUB + . + . + . + RETURN + +Purpose To branch to and return from a subroutine. + +Remarks is the first line of the + subroutine. + + A subroutine may be called any number of times + in a program. A subroutine also may be called + from within another subroutine. Such nesting of + subroutines is limited only by available memory. + + The RETURN statement(s) in a subroutine cause + Microsoft BASIC to branch back to the statement + following the most recent GOSUB statement. A + subroutine may contain more than one RETURN + statement, should logic dictate a return at + different points in the subroutine. Subroutines + may appear anywhere in the program, but it is + recommended that the subroutine be readily + distinguishable from the main program. To + prevent inadvertent entry into the subroutine, + precede it with a STOP, END, or GOTO statement + that directs program control around the + subroutine. + +Example 10 GOSUB 40 + 20 PRINT "BACK FROM SUBROUTINE" + 30 END + 40 PRINT "SUBROUTINE"; + 50 PRINT " IN"; + 60 PRINT " PROGRESS" + 70 RETURN + RUN + SUBROUTINE IN PROGRESS + BACK FROM SUBROUTINE + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-37 + + +2.25 GOTO + + +Format GOTO + +Purpose To branch unconditionally out of the normal + program sequence to a specified line number. + +Remarks If is an executable statement, + that statement and those following are executed. + If it is a nonexecutable statement, execution + proceeds at the first executable statement + encountered after . + +Example LIST + 10 READ R + 20 PRINT "R =";R, + 30 A=3.14*R^2 + 40 PRINT"AREA =";A + 50 GOTO 10 + 60 DATA 5,7,12 + Ok + RUN + R = 5 AREA =78.5 + R = 7 AREA =153.86 + R = 12 AREA =452.16 + ?Out ofdata in 10 + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-38 + + +2.26 IF...THEN [...ELSE] AND IF...GOTO + +Format IF THEN {|} + + [ELSE {|}] + +Format IF GOTO + + [ELSE {statement(s)>|}] + +Purpose To make a decision regarding program flow based + on the result returned by an expression. + +Remarks If the result of is not zero, the + THEN or GOTO clause is executed. THEN may be + followed by either a line number for branching + or one or more statements to be executed. GOTO + is always followed by a line number. If the + result of is zero, the THEN or GOTO + clause is ignored and the ELSE clause, if + present, is executed. Execution continues with + the next executable statement. A comma is + allowed before THEN. + + Nesting of IF Statements + + IF...THEN...ELSE statements may be nested. + Nesting is limited only by the length of the + line. For example, + IF X>Y THEN PRINT "GREATER" ELSE IF Y>X + THEN PRINT "LESS THAN" ELSE PRINT "EQUAL" + is a legal statement. If the statement does not + contain the same number of ELSE and THEN + clauses, each ELSE is matched with the closest + unmatched THEN. For example + + IF A=B THEN IF B=C THEN PRINT "A=C" + ELSE PRINT "A<>C" + + will not print "A<>C" when A<>B. + + If an IF...THEN statement is followed by a line + number in direct mode, an "Undefined line" error + results, unless a statement with the specified + line number had previously been entered in + indirect mode. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-39 + + +Note When using IF to test equality for a value that + is the result of a floating-point computation, + remember that the internal representation of the + value may not be exact. Therefore, the test + should be against the range over which the + accuracy of the value may vary. For example, to + test a computed variable A against the value + 1.0, use: + IF ABS (A-1.0)<1.0E-6 THEN ... + + This test returns true if the value of A is 1.0 + with a relative error of less than 1.0E-6. + +Example 1 200 IF I THEN GET#1,I + + This statement GETS record number I if I is not + zero. + +Example 2 100 IF(I<20)*(I>10) THEN DB=1979-1:GOTO 300 + 110 PRINT "OUT OF RANGE" + . + . + . + + In this example, a test determines if I is + greater than 10 and less than 20. If I is in + this range, DB is calculated and execution + branches to line 300. If I is not in this + range, execution continues with line 110. + +Example 3 210 IF IOFLAG THEN PRINT A$ ELSE LPRINT A$ + + This statement causes printed output to go + either to the terminal or the line printer, + depending on the value of the variable IOFLAG. + If IOFLAG is zero, output goes to the line + printer; otherwise, output goes to the + terminal. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-40 + + +2.27 INPUT + + +Format INPUT[;] [<"prompt string">;] + +Purpose To allow input from the terminal during program + execution. + +Remarks When an INPUT statement is encountered, program + execution pauses and a question mark is printed + to indicate the program is waiting for data. If + <"prompt string"> is included, the string is + printed before the question mark. The required + data is then entered at the terminal. + + A comma may be used instead of a semicolon after + the prompt string to suppress the question mark. + For example, the statement INPUT "ENTER + BIRTHDATE",B$ will print the prompt with no + question mark. + + If INPUT is immediately followed by a semicolon, + then the carriage return typed by the user to + input data does not echo a carriage return/line + feed sequence. + + The data that is entered is assigned to the + variable(s) given in . The + number of data items supplied must be the same + as the number of variables in the list. Data + items are separated by commas. + The variable names in the list may be numeric or + string variable names (including subscripted + variables). The type of each data item that is + input must agree with the type specified by the + variable name. (Strings input to an INPUT + statement need not be surrounded by quotation + marks.) + + Responding to INPUT with too many or too few + items or with the wrong type of value (numeric + instead of string, etc.) causes the messsage + "?Redo from start" to be printed. No assignment + of input values is made until an acceptable + response is given. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-41 + + +Examples 10 INPUT X + 20 PRINT X "SQUARED IS" X^2 + 30 END + RUN + ? 5 (The 5 was typed in by the user + in response to the question mark.) + 5 SQUARED IS 25 + Ok + + + LIST + 10 PI=3.14 + 20 INPUT "WHAT IS THE RADIUS";R + 30 A=PI*R^a2 + 40 PRINT "THE AREA OF THE CIRCLE IS" ;A + 50 PRINT + 60 GOTO 20 + Ok + RUN + WHAT IS THE RADIUS? 7.4 (User types 7.4) + THE AREA OF THE CIRCLE IS 171.946 + + WHAT IS THE RADIUS? + etc. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-42 + + +2.28 INPUT# + + +Format INPUT#, + +Purpose To read data items from a sequential disk file + and assign them to program variables. + +Remarks is the number used when the file + was OPENed for input. contains + the variable names that will be assigned to the + items in the file. (The variable type must + match the type specified by the variable name.) + With INPUT#, no question mark is printed, as + with INPUT. + + The data items in the file should appear just as + they would if data were being typed in response + to an INPUT statement. With numeric values, + leading spaces, carriage returns, and line feeds + are ignored. The first character encountered + that is not a space, carriage return, or line + feed is assumed to be the start of a number. + The number terminates on a space, carriage + return, line feed, or comma. + + If Microsoft BASIC is scanning the sequential + data file for a string item, leading spaces, + carriage returns, and line feeds are also + ignored. The first character encountered that + is not a space, carriage return, or line feed is + assumed to be the start of a string item. If + this first character is a quotation mark ("), + the string item will consist of all characters + read between the first quotation mark and the + second. Thus, a quoted string may not contain a + quotation mark as a character. If the first + character of the string is not a quotation mark, + the string is an unquoted string, and will + terminate on a comma, carriage return, or line + feed (or after 255 characters have been read). + If end-of-file is reached when a numeric or + string item is being INPUT, the item is + terminated. + +Example See "Microsoft BASIC Disk I/0," in the Microsoft + BASIC User's Guide. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-43 + +2.29 KILL + +Format KILL + +Purpose To delete a file from disk. + +Remarks If a KILL statement is given for a file that is + currently OPEN, a "File already open" error + occurs. + + KILL is used for all types of disk files; + program files, random data files, and sequential + data files. + +Example 200 KILL "DATAl.DAT" + + See also "Microsoft BASIC Disk I/O," in the + Microsoft BASIC User's Guide. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-44 + + +2.30 LET + + +Format [LET ]= + +Purpose To assign the value of an expression to a + variable. + +Remarks Notice the word LET is optional; i.e., the + equal sign is sufficient for assigning an + expression to a variable name. + +Example 110 LET D=12 + 120 LET E=12^2 + 130 LET F=12^4 + 140 LET SUM=D+E+F + . + . + . + + or + + 110 D=12 + 120 E=12^2 + 130 F=12^4 + 140 SUM=D+E+F + . + . + . + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-45 + + +2.31 LINE INPUT + + +Format LINE INPUT[;] [<"prompt string">;] + +Purpose To input an entire line (up to 254 characters) + to a string variable, without the use of + delimiters. + +Remarks <"prompt string"> is a string literal that is + printed at the terminal before input is + accepted. A question mark is not printed unless + it is part of <"prompt string">. All input from + the end of <"prompt string"> to the carriage + return is assigned to . + However, if a line feed/carriage return sequence + (this order only) is encountered, both + characters are echoed; but the carriage return + is ignored, the line feed is put into , and data input continues. + + If LINE INPUT is immediately followed by a + semicolon, then the carriage return typed by the + user to end the input line does not echo a + carriage return/line feed sequence at the + terminal. + + A LINE INPUT statement may be aborted by typing + Control-C. Microsoft BASIC will return to + command level and type "Ok". Typing CONT + resumes execution at the LINE INPUT. + +Example See "LINE INPUT#," Section 2.32. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-46 + + +2.32 LINE INPUT# + + +Format LINE INPUT#, + +Purpose To read an entire line (up to 254 characters), + without delimiters, from a sequential disk data + file to a string variable. + +Remarks is the number under which the file + was OPENed. is the variable + name to which the line will be assigned. LINE + INPUT# reads all characters in the sequential + file up to a carriage return. It then skips + over the carriage return/line feed sequence. + The next LINE INPUT# reads all characters up to + the next carriage return. (If a line + feed/carriage return sequence is encountered, it + is preserved.) + + LINE INPUT# is especially useful if each line of + a data file has been broken into fields, or if a + Microsoft BASIC program saved in ASCII format is + being read as data by another program. (See + "SAVE," Section 2.60.) + +Example 10 OPEN "0",1,"LIST" + 20 LINE INPUT "CUSTOMER INFORMATION? ";C$ + 30 PRINT #1, C$ + 40 CLOSE 1 + 50 OPEN "I",1,"LIST" + 60 LINE INPUT #1, C$ + 70 PRINT C$ + 80 CLOSE 1 + RUN + CUSTOMER INFORMATION? LINDA JONES 234,4 MEMPHIS + LINDA JONES 234,4 MEMPHIS + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-47 + + +2.33 LIST + + +Format 1 LIST[ ] + +Format 2 LIST [] [-[]] + +Purpose To list all or part of the program currently in + memory at the terminal. + +Remarks Microsoft BASIC always returns to command level + after a LIST is executed. + + Format 1 + + If is omitted, the program is + listed beginning at the lowest line number. + (Listing is terminated either when the end of + the program is reached or by typing Control-C.) + If is included, only the specified + line will be listed. + + Format 2 + + This format allows the following options: + + 1. If only the first is + specified, that line and all higher-numbered + lines are listed. + + 2. If only the second (i.e., + [-[]]) is specified, all lines + from the beginning of the program through + that line are listed. + + 3. If both are specified, the + entire range is listed. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-48 + + +Examples Format 1 + + LIST Lists the program currently + in memory. + + LIST 500 Lists line 500. + + + Format 2 + + LIST 150- Lists all lines from 150 + to the end. + + LIST -1000 Lists all lines from the + lowest number through 1000. + + LIST 150-1000 Lists lines 150 through + 1000, inclusive. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-49 + +2.34 LLIST + + +Format LLIST [[-[]]] + +Purpose To list all or part of the program currently in + memory at the line printer. + +Remarks LLIST assumes a 132-character-wide printer. + + Microsoft BASIC always returns to command level + after an LLIST is executed. The options for + LLIST are the same as for LIST, Format 2. + +Note LLIST and LPRINT are not included in all + implementations of Microsoft BASIC. + +Example See the examples for "LIST," Format 2. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-50 + + +2.35 LOAD + + +Format LOAD [,R] + +Purpose To load a file from disk into memory. + +Remarks is the name that was used when the + file was SAVEd. (Your operating system may + append a default filename extension if one was + not supplied in the SAVE command. Refer to + "Microsoft BASIC Disk I/O," in the Microsoft + BASIC User's Guide, for information about + possible filename extensions your operating + system.) + + The R option automatically runs the program + after it has been loaded. + + LOAD closes all open files and deletes all + variables and program lines currently residing + in memory before it loads the designated + program. However, if the R option is used with + LOAD, the program is RUN after it is LOADed, and + all open data files are kept open. Thus, LOAD + with the R option may be used to chain several + programs (or segments of the same program). + Information may be passed between the programs + using their disk data files. + +Example LOAD "STRTRK",R + + LOAD "B:MYPROG" + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-51 + +2.36 LPRINT AND LPRINT USING + +Format LPRINT [] + + LPRINT USING ; + +Purpose To print data at the line printer. + +Remarks Same as PRINT and PRINT USING, except output + goes to the line printer. See Section 2.49 and + Section 2.50. + + LPRINT assumes a 132-character-wide printer. + +Note LPRINT and LLIST are not included in all + implementations of Microsoft BASIC. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-52 + + +2.37 LSET AND RSET + + +Format LSET = + RSET = + +Purpose To move data from memory to a random file buffer + (in preparation for a PUT statement). + +Remarks If requires fewer bytes than + were FIELDed to , LSET + left-justifies the string in the field, and RSET + right-justifies the string. (Spaces are used to + pad the extra positions.) If the string is too + long for the field, characters are dropped from + the right. Numeric values must be converted to + strings before they are LSET or RSET. See + "MKI$, MKS$, MKDS," Section 3.26. + +Examples 150 LSET A$=MKS$(AMT) + 160 LSET D$=DESC($) + + See also "Microsoft BASIC Disk I/0," + in the Microsoft BASIC User's Guide. + +Note LSET or RSET may also be used with a nonfielded + string variable to left-justify or right-justify + a string in a given field. For example, the + program lines + + 110 A$=SPACE$(20) + 120 RSET A$=N$ + + right-justify the string N$ in a 20-character + field. This can be very handy for formatting + printed output. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-53 + + +2.38 MERGE + + +Format MERGE + +Purpose To merge a specified disk file into the program + currently in memory. + +Remarks is the name used when the file was + SAVEd. (Your operating system may append a + default filename extension if one was not + supplied in the SAVE command. Refer to + "Microsoft BASIC Disk I/O," in the Microsoft + BASIC User's Guide, for information about + possible filename extensions under your + operating system.) The file must have been SAVEd + in ASCII format. (If not, a "Bad file mode" + error occurs.) + + If any lines in the disk file have the same line + numbers as lines in the program in memory, the + lines from the file on disk will replace the + corresponding lines in memory. (MERGEing may be + thought of as "inserting" the program lines on + disk into the program in memory.) + + Microsoft BASIC always returns to command level + after executing a MERGE command. + +Example MERGE "NUMBRS" + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-54 + + +2.39 MID$ + + +Format MID$(,n[,m])= + + where n and m are integer expressions and + and are string + expressions. + +Purpose To replace a portion of one string with another + string. + +Remarks The characters in , beginning at + position n, are replaced by the characters in + . The optional "m" refers to the + number of characters from that + will be used in the replacement. If "m" is + omitted, all of is used. However, + regardless of whether "m" is omitted or + included, the replacement of characters never + goes beyond the original length of . + +Example 10 A$="KANSAS CITY, MO" + 20 MID$(A$,14)="KS" + 30 PRINT A$ + RUN + KANSAS CITY, KS + + MID$ is also a function that returns a substring + of a given string. See Section 3.25. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-55 + + +2.40 NAME + + +Format NAME AS + +Purpose To change the name of a disk file. + +Remarks must exist and + must not exist; otherwise, an error will + result. After a NAME command, the file exists + on the same disk, in the same area of disk + space, with the new name. + +Example Ok + NAME "ACCTS" AS "LEDGER" + Ok + + In this example, the file that was + formerly named ACCTS will now be named LEDGER. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-56 + + +2.41 NEW + + +Format NEW + +Purpose To delete the program currently in memory and + clear all variables. + +Remarks NEW is entered at command level to clear memory + before entering a new program. Microsoft BASIC + always returns to command level after a NEW is + executed. + +Example NEW + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-57 + + +2.42 NULL + + +Format NULL + +Purpose To set the number of nulls to be printed at the + end of each line. + +Remarks For 10 character-per-second tape punches, + should be >=3. When tapes + are not being punched, + should be 0 or I for Teletype(R) and + Teletype-compatible terminal screens. should be 2 or 3 for 30 CPS hard + copy printers. The default value is 0. + +Example Ok + NULL 2 + Ok + 100 INPUT X + 200 IF X<50 GOTO 800 + . + . + . + + Two null characters will be printed after each + line. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-58 + + +2.43 ON ERROR GOTO + + +Format ON ERROR GOTO + +Purpose To enable error handling and specify the first + line of the error handling routine. + +Remarks Once error handling has been enabled, all errors + detected, including direct mode errors (e.g., + syntax errors), will cause a jump to the + specified error handling routine. If does not exist, an "Undefined line" + error results. + + To disable error handling, execute an ON ERROR + GOTO 0. Subsequent errors will print an error + message and halt execution. An ON ERROR GOTO 0 + statement that appears in an error handling + routine causes Microsoft BASIC to stop and print + the error message for the error that caused the + trap. It is recommended that all error handling + routines execute an ON ERROR GOTO 0 if an error + is encountered for which there is no recovery + action. + +Note If an error occurs during execution of an error + handling routine, that error message is printed + and execution terminates. Error trapping does + not occur within the error handling routine. + +Example 10 ON ERROR GOTO 1000 + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-59 + + +2.44 ON...GOSUB AND ON...GOTO + + +Format ON GOTO + + ON GOSUB + +Purpose To branch to one of several specified line + numbers, depending on the value returned when an + expression is evaluated. + +Remarks The value of determines which line + number in the list will be used for branching. + For example, if the value is three, the third + line number in the list will be the destination + of the branch. (If the value is a noninteger, + the fractional portion is rounded.) + + In the ON...GOSUB statement, each line number in + the list must be the first line number of a + subroutine. + + If the value of is zero or greater + than the number of items in the list (but less + than or equal to 255), Microsoft BASIC continues + with the next executable statement. If the + value of is negative or greater + than 255, an "Illegal function call" error + occurs. + +Example 100 ON L-1 GOTO 150,300,320,390 + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-60 + + +2.45 OPEN + + +Format OPEN ,[#],[,] + +Purpose To allow I/O to a disk file. + +Remarks A disk file must be OPENed before any disk I/O + operation can be performed on that file. OPEN + allocates a buffer for I/O to the file and + determines the mode of access that will be used + with the buffer. + + is a strinc expression whose first + character is one of the following: + + 0 Specifies sequential output mode. + + I Specifies sequential input mode. + + R Specifies random input/output mode. + + is an integer expression whose + value is between 1 and 15. The number is then + associated with the file for as long as it is + OPEN and is used to refer other disk I/O + statements to the file. + + is a string expression containing a + name that conforms to your operating system's + rules for disk filenames. + + is an integer expression which, if + included, sets the record length for random + files. The default record length is 128 bytes. + +Note A file can be OPENed for sequential input or + random access on more than one file number at a + time. A file may be OPENed for output, however, + on only one file number at a time. + +Example 10 OPEN "I",2,"INVEN" + + See also "Microsoft BASIC Disk I/O," in the + Microsoft BASIC User's Guide. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-61 + +2.46 OPTION BASE + +Format OPTION BASE n + where n is 1 or 0 + +Purpose To declare the minimum value for array + subscripts. + +Remarks The default base is 0. If the statement + OPTION BASE 1 + is executed, the lowest value an array subscript + may have is 1. + +Example OPTION BASE 1 + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-62 + + +2.47 OUT + + +Format OUT I,J + + where I and J. are integer expressions in the + range 0 to 255. + +Purpose To send a byte to a machine output port. + +Remarks The integer expression I is the port number. + The integer expression J is the data to be + transmitted. + +Example 100 OUT 32,100 + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-63 + + +2.48 POKE + + +Format POKE I,J + + where I and J are integer expressions. + +Purpose To write a byte into a memory location. + +Remarks I and J are integer expressions. The expression + I represents the address of the memory location + and J is the data byte. I must be in the range + -32768 to 65535. (For interpretation of + negative values of I, see "VARPTR," Section + 3.43.) + + The complementary function to POKE is PEEK. The + argument to PEEK is an address from which a byte + is to be read. See Section 3.28. + + POKE and PEEK are useful for storing data + efficiently, loading assembly language + subroutines, and passing arguments and results + to and from assembly language subroutines. + +Example 10 POKE &H5A00,&HFF + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-64 + + +2.49 PRINT + + +Format PRINT [] + +Purpose To output data at the terminal. + +Remarks If is omitted, a blank + line is printed. If is + included, the values of the expressions are + printed at the terminal. The expressions in the + list may be numeric and/or string expressions. + (Strings must be enclosed in quotation marks.) + + Print Positions + + The position of each printed item is determined + by the punctuation used to separate the items in + the list. Microsoft BASIC divides the line into + print zones of 14 spaces each. In the list of + expressions, a comma causes the next value to be + printed at the beginning of the next zone. A + semicolon causes the next value to be printed + immediately after the last value. Typing one or + more spaces between expressions has the same + effect as typing a semicolon. + + If a comma or a semicolon terminates the list of + expressions, the next PRINT statement begins + printing on the same line, spacing accordingly. + If the list of expressions terminates without a + comma or a semicolon, a carriage return is + printed at the end of the line. If the printed + line is longer than the terminal width, + Microsoft BASIC goes to the next physical line + and continues printing. + + Printed numbers are always followed by a space. + Positive numbers are preceded by a space. + Negative numbers are preceded by a minus sign. + Single precision numbers that can be represented + with 6 or fewer digits in the unscaled format no + less accurately than they can be represented in + the scaled format, are output using the unscaled + format. For example, 1E-7 is output as .0000001 + and 1E-8(-7) is output as 1E-08. Double + precision numbers that can be represented with + 16 or fewer digits in the unscaled format no + less accurately than they can be represented in + the scaled format, are output using the unscaled + format. For example, 1D-15 is output as + .0000000000000001 and 1D-16 is output as ID-16. + + A question mark may be used in place of the word + PRINT in a PRINT statement. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-65 + + +Example 1 10 X=5 + 20 PRINT X+5,X-5,X*(-5),X^5 + 30 END + RUN + 10 0 -25 3125 + Ok + + In this example, the commas in the PRINT + statement cause each value to be printed at the + beginning of the next print zone. + + +Example 2 LIST + 10 INPUT X + 20 PRINT X "SQUARED IS" X^2 "AND"; + 30 PRINT X "CUBED IS" X^3 + 40 PRINT + 50 GOTO 10 + Ok + RUN + ? 9 + 9 SQUARED IS 81 AND 9 CUBED IS 729 + + ? 21 + 21 SQUARED IS 441 AND 21 CUBED IS 9261 + + + + In this example, the semicolon at the end of + line 20 causes both PRINT statements to be + printed on the same line. Line 40 causes a + blank line to be printed before the next prompt. + + +Example 3 10 FOR X=1 TO 5 + 20 J=J+5 + 30 K=K+10 + 40 ?J;K; + 50 NEXT X + Ok + RUN + 5 10 10 20 15 30 20 40 25 50 + Ok + + In this example, the semicolons in the PRINT + statement cause each value to be printed + immediately after the preceding value. (Don't + forget, a number is always followed by a space, + and positive numbers are preceded by a space.) + In line 40, a question mark is used instead of + the word PRINT. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-66 + + +2.50 PRINT USING + + +Format PRINT USING ; + +Purpose To print strings or numbers using a specified + format. + +Remarks is comprised of the string +and expressions or numeric expressions that are to +Examples be printed, separated by semicolons. is a string literal (or variable) composed + of special formatting characters. These + formatting characters (see below) determine the + field and the format of the printed strings or + numbers. + + String Fields + + When PRINT USING is used to print strings, one + of three formatting characters may be used to + format the string field: + + "!" + + Specifies that only the first character in the + given string is to be printed. + +"\n spaces\" + + Specifies that 2+n characters from the string + are to be printed. If the backslashes are typed + with no spaces, two characters will be printed; + with one space, three characters will be + printed, and so on. If the string is longer + than the field, the extra characters are + ignored. If the field is longer than the + string, the string will be left-justified. in the + field and padded with spaces on the right. + + Example: + + 10 A$="LOOK":B$="OUT" + 30 PRINT USING "!";A$;B$ + 40 PRINT USING "\ \";A$;B$ + 50 PRINT USING "\ \";A$;B$;"!!" + RUN + LO + LOOKOUT + LOOK OUT !! + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-67 + + "&" Specifies a variable length string field. When + the field is specified with "&", the string is + output without modification. + + Example: + + 10 A$="LOOK":B$="OUT" + 20 PRINT USING "!";A$; + 30 PRINT USING "&";8$ + RUN + LOUT + + + Numeric Fields + + When PRINT USING is used to print numbers, the + following special characters may be used to + format the numeric field: + + # A number sign is used to represent each digit + position. Digit positions are always filled. + If the number to be printed has fewer digits + than positions specified, the number will be + right-justified (preceded by spaces) in the + field. + + . A decimal point may be inserted at any position + in the field. If the format string specifies + that a digit is to precede the decimal point, + the digit will always be printed (as 0, if + necessary). Numbers are rounded as necessary. + + PRINT USING "##.##";.78 + 0.78 + + PRINT USING "###.##";987.654 + 987.65 + + PRINT USING "##.## ;l0.2,5.3,66.789,.234 + 10.20 5.30 66.79 0.23 + + In the last example, three spaces were inserted + at the end of the format string to separate the + printed values on the line. + + + A plus sign at the beginning or end of the + format string will cause the sign of the number + (plus or minus) to be printed before or after + the number. + +MICROSOFT BASIC COMmANDS AND STATEMENTS Page 2-68 + + + - A minus sign at the end of the format field will + cause negative numbers to be printed with a + trailing minus sign. + + PRINT USING "+##.## ";-68.95,2.4,55.6,-.9 + -68.95 +2.40 +55.60 -0.90 + + PRINT USING "##.##- ";-66.95,22.449,-7.01 + 68.95- 22.45 7.01- + + ** A double asterisk at the beginning of the format + string causes leading spaces in the numeric + field to be filled with asterisks. The ** also + specifies positions for two more digits. + + PRINT USING "**#.# ";12.39,-0.9,765.1 + *12.4 *-0.9 765.1 + + $$ A double dollar sign causes a dollar sign to be + printed to the immediate left of the formatted + number. The $$ specifies two more digit + positions, one of which is the dollar sign. The + exponential format cannot be used with $$. + Negative numbers cannot be used unless the minus + sign trails to the right. + + PRINT USING "$$###.##";456.76 + $456.78 + + **$ The **$ at the beginning of a format string + combines the effects of the above two symbols. + Leading spaces will be asterisk-filled and a + dollar sign will be printed before the number. + **$ specifies three more digit positions, one of + which is the dollar sign. + + PRINT USING "**$##.##";2.34 + ***$2.34 + + , A comma that is to the left of the decimal point + in a formatting string causes a comma to be + printed to the left of every third digit to the + left of the decimal point. A comma that is at + the end of the format string is printed as part + of the string. A comma specifies another digit + position. The comma has no effect if used with + the exponential ( ) format. + + PRINT USING "####,.##";1234.5 + 1,234.50 + + PRINT USING "####.##,";1234.5 + 1234.50, + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-69 + + + ^^^^ Four carets (or up-arrows) may be placed after + the digit position characters to specify + exponential format. The four carets allow space + for E+xx to be printed. Any decimal point + position may be specified. The significant + digits are left-justified, and the exponent is + adjusted. Unless a leading + or trailing + or - + is specified, one digit position will be used to + the left of the decimal point to print a space + or a minus sign. + + PRINT USING "##.##^^^^" ;234.56 + 2.35E+02 + + PRINT USING ".####^^^^-";888888 + .8889E+06 + + PRINT USING "+.##^^^^";123 + +.12E+03 + + _ An underscore in the format string causes the + next character to be output as a literal + character. + + PRINT USING "_!##.## !";12.34 + !12.34! + + The literal character itself may be an + underscore by placing "__" in the format string. + + % If the number to be Printed is larger than the + specified numeric field, a percent sign is + printed in front of the number. If rounding + causes the number to exceed the field, a percent + sign will be printed in front of the rounded + number. + + PRINT USING "##.##";111.22 + %111.22 + + PRINT USING ".##";.999 + %l.00 + + If the number of digits specified exceeds 24, an + "Illegal function call" error will result. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-70 + + +2.51 PRINT# AND PRINT# USING + + +Format PRINT#,[USING ;] + +Purpose To write data to a sequential disk file. + +Remarks is the number used when the file + was OPENed for output. consists of + formatting characters as described in Section + 2.50, "PRINT USING." The expressions in are the numeric and/or string + expressions that will be written to the file. + + PRINT# does not compress data on the disk. An + image of the data is written to the disk, just + as it would be displayed on the terminal screen + with a PRINT statement. For this reason, care + should be taken to delimit the data on the disk, + so that it will be input correctly from the + disk. + + In the list of expressions, numeric expressions + should be delimited by semicolons. For example: + + PRINT#1,A;B;C;X;Y:Z + + (If commas are used as delimiters, the extra + blanks that are inserted between print fields + will also be written to the disk.) + + String expressions must be separated by + semicolons in the list. To format the string + expressions correctly on the disk, use explicit + delimiters in the list of expressions. + + For example, let A$="CAMERA" and B$="93604-l". + The statement + + PRINT#1,A$;13$ + + would write CAMERA93604-1 to the disk. Because + there are no delimiters, this could not be input + as two separate strings. To correct the + problem, insert explicit delimiters into the + PRINT# statement as follows: + + PRINT#1,A$;",";BS + + The image written to disk is + CAMERA,93604-1 + which can be read back into two string + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-71 + + + variables. + + If the strings themselves contain commas, + semicolons, significant leading blanks, carriage + returns, or line feeds, write them to disk + surrounded by explicit quotation marks, + CHR$(34). + + For example, let A$="CAMERA, AUTOMATIC" and + B$=" 93604-1". The statement + + PRINT#1,A$;B$ + + would write the following image to disk: + + CAMERA, AUTOMATIC 93604-1 + + And the statement + + INPUT#1,A$,B$ + + would input "CAMERA" to A$ and + "AUTOMATIC 93604-1" to B$. To separate these + strings properly on the disk, write double + quotation marks to the disk image using + CHR$(34). The statement + + PRINT#1,CHR$(34);A$;CHR$(34);CHR$(34);B$;CHR$(34) + + writes the following image to disk: + + "CAMERA, AUTOMATIC"" 93604-1" + + And the statement + + INPUT#1,A$,B$ + + would input "CAMERA, AUTOMATIC" to A$ and + " 93604-1" to B$. + + The PRINT; statement may also be used with the + USING option to control the format of the disk + file. For example: + + PRINT#1,USING"$$###.##,";J;K;L + + For more examples using PRINT#, see "Microsoft + BASIC Disk I/O," in the Microsoft BASIC User's + Guide. + + See also "WRITE#," Section 2.68. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-72 + + +2.52 PUT + + +Format PUT [#][,] + +Purpose To write a record from a random buffer to a + random disk file. + +Remarks is the number under which the file + was OPENed. If is omitted, the + record will assume the next available record + number (after the last PUT). The largest + possible record number is 32,767. The smallest + record number is 1. + +Example See "Microsoft BASIC Disk I/0," in the Microsoft + BASIC User's Guide. + +Note PRINT#, PRINT# USING, and WRITE# may be used to + put characters in the random file buffer before + executing a PUT statement. + + In the case of WRITE#, Microsoft BASIC pads the + buffer with spaces up to the carriage return. + Any attempt to read or write past the end of the + buffer causes a "Field overflow" error. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-73 + + +2.53 RANDOMIZE + + +Format RANDOMIZE [ ] + +Purpose To reseed the random number generator. + +Remarks If is omitted, Microsoft BASIC + suspends program execution and asks for a value + by printing + + Random Number Seed (-32768 to 32767)? + + before executing RANDOMIZE. + + If the random number generator is not reseeded, + the RND function returns the same sequence of + random numbers each time the program is RUN. To + change the sequence of random numbers every time + the program is RUN, place a RANDOMIZE statement + at the beginning of the program and change the + argument with each RUN. + +Example 10 RANDOMIZE + 20 FOR I=1 TO 5 + 30 PRINT RND; + 40 NEXT I + RUN + Random Number Seed (-32768 to 32767)? 3 + (user types 3) + .88598 .484668 .586328 .119426 .709225 + Ok + RUN + Random Number Seed (-32768 to 32767)? 4 + (user types 4 for new sequence) + .803506 .162462 .929364 .292443 .322921 + Ok + RUN + Random Number Seed (-32768 to 32767)? 3 + (same sequence as first RUN) + .88598 .484668 .586328 .119426 .709225 + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-74 + + +2.54 READ + + +Format READ + +Purpose To read values from a DATA statement and assign + them to variables. (See "DATA," Section 2.10.) + +Remarks A READ statement must always be used in + conjunction with a DATA statement. READ + statements assign variables to DATA statement + values on a one-to-one basis. READ statement + variables may be numeric or string, and the + values read must agree with the variable types + specified. If they do not agree, a "Syntax + error" will result. + + A single READ statement may access one or more + DATA statements (they will be accessed in + order) , or several READ statements may access + the same DATA statement. If the number of + variables in exceeds the + number of elements in the DATA statement(s), an + "Out of data" error message is printed. If the + number of variables specified is fewer than the + number of elements in the DATA statement(s), + subsequent READ statements will begin reading + data at the first unread element. If there are + no subsequent READ statements, the extra data is + ignored. + + To reread DATA statements from the start, use + the RESTORE statement (see "RESTORE," Section + 2.57) + +Example 1 + . + . + . + 80 FOR 1=1 TO 10 + 90 READ A(I) + 100 NEXT + 110 DATA 3.08,5.19,3.12,3.98,4.24 + 120 DATA 5.08,5.55,4.00,3.16,3.37 + . + . + . + + This program segment READs the values from the + DATA statements into the array A. After + execution, the value of A(1) will be 3.08, and + so on. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-75 + + +Example 2 LIST + 10 PRINT "CITY", "STATE", " ZIP" + 20 READ C$,S$,Z + 30 DATA "DENVER,", COLORADO, 80211 + 40 PRINT C$,S$,Z + Ok + RUN + CITY STATE ZIP + DENVER, COLORADO 80211 + Ok + + This program READS string and numeric data from + the DATA statement in line 30. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-76 + + +2.55 REM + + +Format REM + +Purpose To allow explanatory remarks to be inserted in a + program. + +Remarks REM statements are not executed but are output + exactly as entered when the program is listed. + + REM statements may be branched into from a GOTO + or GOSUB statement. Execution will continue + with the first executable statement after the + REM statement. + + Remarks may be added to the end of a line by + preceding the remark with a single quotation + mark instead of :REM. + +ImportantDo not use this in a data statement, because it + would be considered legal data. + +Example + . + . + . + 120 REM CALCULATE AVERAGE VELOCITY + 130 FOR 1=1 TO 20 + 140 SUM=SUM + V(I) + . + . + . + + or + . + . + . + 120 FOR I=1 TO 20 'CALCULATE AVERAGE VELOCITY + 130 SUM=SUM+V(I) + 140 NEXT I + . + . + . + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-77 + + +2.56 RENUM + + +Format RENUM [[][,[][,]]] + +Purpose To renumber program lines. + +Remarks is the first line number to be used + in the new sequence. The default is 10. is the line in the current program where + renumbering is to begin. The default is the + first line of the program. is the + increment to be used in the new sequence. The + default is 10. + + RENUM also changes all line number references + following GOTO, GOSUB, THEN, ON...GOTO, + ON...GOSUB, and ERL statements to reflect the + new line numbers. If a nonexistent line number + appears after one of these statements, the error + message "Undefined line number in xxxxx" is + printed. The incorrect line number reference is + not changed by RENUM, but line number yyyyy may + be changed. + +No te RENUM cannot be used to change the order of + program lines (for example, RENUM 15,30 when the + program has three lines numbered 10, 20 and 30) + or to create line numbers greater than 65529. + An "Illegal function call" error will result. + +Examples RENUM Renumbers the entire program. + The first new line number + will be 10. Lines will be + numbered in increments of 10. + + RENUM 300,50 Renumbers the entire pro- + gram. The first new line + number will be 300. Lines + will be numbered in + increments of 50. + + RENUM 1000,900,20 Renumbers the lines from + 900 up so they start with + line number 1000 and are + numbered in increments of 20. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-78 + + +2.57 RESTORE + + +Format RESTORE [ ] + +Purpose To allow DATA statements to be reread from a + specified line. + +Remarks After a RESTORE statement is executed, the next + READ statement accesses the first item in the + first DATA statement in the program. If is specified, the next READ statement + accesses the first item in the specified DATA + statement. + +Example 10 READ A,B,C + 20 RESTORE + 30 READ D,E,F + 40 DATA 57, 68, 79 + . + . + . + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-79 + + +2.58 RESUME + + +Formats RESUME + + RESUME 0 + + RESUME NEXT + + RESUME + +Purpose To continue program execution after an error + recovery procedure has been performed. + +Remarks Any one of the four formats shown above may be + used, depending upon where execution is to + resume: + + + RESUME Execution resumes at the + or statement which caused the + RESUME 0 error. + + RESUME NEXT Execution resumes at the + statement immediately fol- + lowing the one which + caused the error. + + RESUME Execution resumes at + . + + A RESUME statement that is not in an error + handling routine causes a "RESUME without error" + message to be printed. + +Example 10 ON ERROR GOTO 900 + . + . + . + 900 IF (ERR=230)AND(ERL=90) THEN PRINT "TRY + AGAIN" :RESUME 80 + . + . + . + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-80 + + +2.59 RUN + + +Format 1 RUN [ ] + +Purpose To execute the program currently in memory. + +Remarks If is specified, execution begins + on that line. Otherwise, execution begins at + the lowest line number. Microsoft BASIC always + returns to command level after a RUN is + executed. + +Example RUN + + +Format 2 RUN [,R] + +Purpose To load a file from disk into memory and run it. + +Remarks is the name used when the file was + SAVEd. (Your operating system may append a + default filename extension if one was not + supplied in the SAVE command. Refer to + "Microsoft BASIC Disk I/0," in the Microsoft + BASIC User's Guide for information about + possible filename extensions under your + operating system.) + + RUN closes all open files and deletes the + current contents of memory before loading the + designated program. However, with the "R" + option, all data files remain OPEN. + +Example RUN "NEWFIL",R + + See also "Microsoft BASIC Disk I/O," in the + Microsoft BASIC User's Guide. + +Note Microsoft BASIC Compiler supports the RUN and + RUN forms of the RUN statement. + Microsoft BASIC Compiler does not support the + "R" option with RUN. If you want this feature, + the CHAIN statement should be used. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-81 + + +2.60 SAVE + + +Format SAVE [{,A|,P}] + +Purpose To save a program file on disk. + +Remarks is a quoted string that conforms to + your operating system's requirements for + filenames. (Your operating system may append a + default filename extension if one was not + supplied in the SAVE command. Refer to + "Microsoft BASIC Disk I/O,' in the Microsoft + BASIC User's Guide for information about + possible filename extensions under your + operating system.) If already exists, + the file will be written over. + + Use the A option to save the file in ASCII + format. Otherwise, Microsoft BASIC saves the + file in a comoressed binary format. ASCII + format takes more space on the disk, but some + disk access requires that files be in ASCII + format. For instance, the MERGE command + requires an ASCII format file, and some + operating system commands such as LIST may + require an ASCII format file. + + Use the P option to protect the file by saving + it in an encoded binary format. When a + protected file is later RUN (or LOADed), any + attempt to list or edit it will fail. + +Examples SAVE "COM2",A + SAVE "PROG",P + + See also "Microsoft BASIC Disk I/O," + in the Microsoft BASIC User's Guide. + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-82 + + +2.61 STOP + + +Format STOP + +Purpose To terminate program execution and return to + command level. + +Remarks STOP statements may be used anywhere in a + program to terminate execution. When a STOP is + encountered, the following message is printed: + + Break in line nnnnn + + Unlike the END statement, the STOP statement + does not close files. + + Microsoft BASIC always returns to command level + after a STOP is executed. Execution is resumed + by issuing a CONT command (see Section 2.8). + +Example 10 INPUT A,B,C + 20 K=A^2*5.3:L=B^3/.26 + 30 STOP + 40 M=C*K+100:PRINT M + RUN + ? 1,2,3 + BREAK IN 30 + Ok + PRINT L + 30.7692 + Ok + CONT + 115.9 + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-83 + + +2.62 SWAP + + +Format SWAP , + +Purpose To exchange the values of two variables. + +Remarks Any type variable may be SWAPped (integer, + single precision, double precision, string) , but + the two variables must be of the same type or a + "Type mismatch" error results. + +Example LIST + 10 A$=" ONE " : B$=" ALL " : C$1="FOR" + 20 PRINT A$ C$ B$ + 30 SWAP A$, B$ + 40 PRINT A$ C$ B$ + RUN + Ok + ONE FOR ALL + ALL FOR ONE + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-84 + + +2.63 TRON/TROFF + + +Format TRON + + TROFF + +Purpose To trace the execution of program statements. + +Remarks As an aid in debugging, the TRON statement + (executed in either direct or indirect mode) + enables a trace flag that prints each line + number of the orogram as it is executed. The + numbers appear enclosed in square brackets. The + trace flag is disabled with the TROFF statement + (or when a NEW command is executed). + +Example TRON + Ok + LIST + 10 K=10 + 20 FOR J=1 TO 2 + 30 L=K + 10 + 40 PRINT J;K;L + 50 K=K+10 + 60 NEXT + 70 END + Ok + RUN + [10] [20] [30] [40] 1 10 20 + [50] [60] [30] [40] 2 20 30 + [50] [60] [70] + Ok + TROFF + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-85 + + +2.64 WAIT + + +Format WAIT ,I[,J] + + where I and J are integer expressions. + +Purpose To suspend program execution while monitoring + the status of a machine input port. + +Remarks The WAIT statement causes execution to be + suspended until a specified machine input port + develops a specified bit pattern. The data read + at the port is exclusive OR'ed with the integer + expression J, and then AND'ed with I. If the + result is zero, Microsoft BASIC l000s back and + reads the data at the port again. If the result + is nonzero, execution continues with the next + statement. If J is omitted, it is assumed to be + zero + +Important It is possible to enter an infinite loop with + the WAIT statement, in which case it will be + necessary to manually restart the machine. To + avoid this, WAIT must have the specified value + at during some paint in the + program execution. + +Example 100 WAIT 32,2 + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-86 + + +2.65 WHILE...WEND + + +Format WHILE + + + [] + + + WEND + +Purpose To execute a series of statements in a loop as + long as a given condition is true. + +Remarks If is not zero (i.e., true), are executed until the WEND + statement is encountered. Microsoft BASIC then + returns to the WHILE statement and checks + . If it is still true, the process + is repeated. If it is not true, execution + resumes with the statement following the WEND + statement. + + WHILE/WEND loops may be nested to any level. + Each WEND will match the most recent WHILE. An + unmatched WHILE statement causes a "WHILE + without WEND" error, and an unmatched WEND + statement causes a "WEND without WHILE" error. + +Example 90 'BUBBLE SORT ARRAY A$ + 100 FLIPS=1 'FORCE ONE PASS THRU LOOP + 110 WHILE FLIPS + 115 FLIPS=0 + 120 FOR I=1 TO J-1 + 130 IF A$(I)>A$(I+1.1) THEN + SWAP A$(I),A$(I+1):FLIPS=1 + 140 NEXT I + 150 WEND + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-87 + + +2.66 WIDTH + + +Format WIDTH [LPRINT ] + +Purpose To set the printed line width in number of + characters for the terminal or line printer. + +Remarks If the LPRINT option is omitted, the line width + is set at the terminal. If LPRINT is included, + the line width is set at the line printer. + + must have a value in the + range 15 to 255. The default width is 72 + characters. + + If is 255, the line width + is "infinite"; that is, Microsoft BASIC never + inserts a carriage return. However, the + position of the cursor or the print head, as + given by the POS or LPOS function, returns to + zero after position 255. + +Example 10 PRINT "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + RUN + ABCDEFGHIJKLMNOPQRSTUVWXYZ + Ok + WIDTH 18 + Ok + RUN + ABCDEFGHIJKLMNOPQR + STUVWXYZ + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-88 + + +2.67 WRITE + + +Format WRITE [] + +Purpose To output data at the terminal. + +Remarks If is omitted, a blank + line is output. If is + included, the values of the expressions are + output at the terminal. The expressions in the + list may be numeric and/or string expressions. + They must be separated by commas. + + When the printed items are output, each item is + separated frua the last by a comma. Printed + strings are delimited by auotation marks. After + the last item in the list is printed, Microsoft + BASIC inserts a carriage return/line feed. + + WRITE outputs numeric values using the same + format as the PRINT statement. (See Section + 2.49.) + +Example 10 A=80:B=90:C$="THAT'S ALL" + 20 WRITE A,B,C$ + RUN + 80, 90,"THAT'S ALL" + Ok + +MICROSOFT BASIC COMMANDS AND STATEMENTS Page 2-89 + + +2.68 WRITE# + + +Format WRITE#, + +Purpose To write data to a sequential file. + +Remarks is the number under which the file + was OPENed in "0" mode (see "OPEN," Section + 2.45). The expressions in the list are string + or numeric expressions. They must be separated + by commas. + + The difference between WRITE# and PRINT# is that + wRITE# inserts commas between the items as they + are written to disk and delimits strings with + quotation marks. Therefore, it is not necessary + for the user to put explicit delimiters in the + list. A carriage return/line feed sequence is + inserted after the last item in the list is + written to disk. + +Example Let A$="CAMERA" and B$="93604-1" + + The statement: + + WRITE#1,A$,B$ + + writes the following image to disk: + + "CAMERA","93604-1" + + A subsequent INPUT# statement, such as + + INPUT#1,A$,B$ + + would input "CAMERA" to A$ and "93604-1" to B$. + + + +Chapter 3 Microsoft BASIC Functions + +Introduction +3.1 ABS +3.2 ASC +3.3 ATN +3.4 CDBL +3.5 CHR$ +3.6 CINT +3.7 COS +3.8 CSNG +3.9 CVI, CVS, CVD +3.10 EOF +3.11 EXP +3.12 FIX +3.13 FRE +3.14 HEX$ +3.15 INKEY$ +3.16 INP +3.17 INPUT$ +3.18 INSTR +3.19 INT +3.20 LEFT$ +3.21 LEN +3.22 LOC +3.23 LOG +3.24 LPOS +3.25 MIDS +3.26 MIK$, MKS$, MIMS +3.27 OCT$ +3.28 PEEK +3.29 POS +3.30 RIGHT$ +3.31 RND +3.32 SGN +3.33 SIN +3.34 SPACE$ +3.35 SPC +3.36 SQR +3.37 STR$ +3.38 STRING$ +3.39 TAB +3.40 TAN +3.41 USR +3.42 VAL +3.43 VARPTR + + + + CHAPTER 3 + + MICROSOFT BASIC FUNCTIONS + + + +Microsoft BASIC intrinsic functions are described in this +chapter. The functions may be called from any program +without further definition. + +Arguments to functions are always enclosed in parentheses. +In the formats given for the functions in this chapter, the +arguments have been abbreviated as follows: + + X and Y Represent any numeric expressions. + + I and J Represent integer expressions. + X$ and Y$ Represent strina expressions. + +If a floating-point value is supplied where an integer is +required, Microsoft BASIC will round the fractional portion +and use the resulting integer. + +Note With Microsoft BASIC Interpreter, only integer and +single precision results are returned by functions. Double +precision functions are supported only by the Microsoft +BASIC Compiler. + +MICROSOFT BASIC FUNCTIONS Page 3-2 + + +3.1 ABS + +Format ABS(X) + +Action Returns the -absolute value of the expression X. + +Example PRINT ABS(7*(-5)) + 35 + Ok + + + +3.2 ASC + + +Format ASC (X$) + +Action Returns a numerical value that is the ASCII code + for the first character of the string X$. (See + Appendix C for ASCII codes.) If X$ is null, an + "Illegal function call" error is returned. +Example 10 X$="TEST" + 20 PRINT ASC(X$) + RUN + 84 + Ok + See the CHR$ function, Section 3.5, for details + on ASCII-to--string conversion. + +MICROSOFT BASIC FUNCTIONS Page 3-3 + + +3.3 ATN + + +Format ATN(X) + +Action Returns the arctangent of X in radians. Result + is in the range -pi/2 to pi/2. The express ion X + may be any numeric type, but the evaluation of + ATN is always performed in single precision. + +Example 10 INPUT X + 20 PRINT ATN(X) + RUN + ? 3 + 1.24905 + Ok + + + +3.4 CDBL + + +Format CDBL(X) + +Action Converts X to a double precision number. + +Example 10 A=454.67 + 20 PRINT A;CDBL(A) + RUN + 454.67 454.6700134277344 + Ok + +MICROSOFT BASIC FUNCTIONS Page 3-4 + + +3.5 CHRS + + +Format CHRS(I) + +Action Returns a string whose one character is ASCII + character I. (ASCII codes are listed in + Appendix C.) CHR$ is commonly used to send a + special character to the terminal. For + instance, the BET character (CHR$(7)) could be + sent as a preface to an error message, or a form + feed (CHR$(12)) could be sent to clear a + terminal screen and return the cursor to the + home position. + +Example PRINT CHR$(66) + B + Ok + + See the ASC function, Section 3.2, for details + on ASCII-to-numeric conversion. + + + + +3.6 CINT + + +Format CINT(X) + +Action Converts X to an integer by rounding the + fractional portion. If X is not in the range + -32768 to 32767, an "Overflow" error occurs. + +Example PRINT CINT(45.67) + 46 + Ok + + See the CDBL and CSNG functions for details on + converting numbers to the double precision and + single precision data type, respectively. See + also the FIX and INT functions, both of which + return integers. + +MICROSOFT BASIC FUNCTIONS Page 3-5 + + +3.7 COS + + +Format COS(X) + +Action Returns the cosine of X in radians. The + calculation of COS(X) is performed in single + precision. + +Example 10 X2*COS(.4) + 20 PRINT X + RUN + 1.84212 + Ok + + + +3.8 CSNG + + +Format CSNG(X) + +Action Converts X to a single precision number. + +Example 10 A4 = 975.34214 + 20 PRINT /4; CSNG(A#) + RUN + 975.3421 975.342 + Ok + + See the CINT and CDBIJ functions for converting + numbers to the integer and double precision data + types, respectively. + +MICROSOFT BASIC FUNCTIONS Page 3-6 + + +3.9 CVI, CVS, CVD + + +Format CVI (<2-byte string>) + CVS(<4-byte string>) + CVD(<8-byte string>) + +Action Convert string values to numeric values. + Numeric values that are read in from a random + disk file must be converted frcm strings back + into numbers. CVI converts a 2-byte string to + an integer. CVS converts a 4-byte string to a + single precision number. CVD converts an 8-byte + string to a double precision number. + +Example + + + 70 FIELD #1,4 AS N$, 12 AS B$, + 80 GET #1 + 90 Y=CVS(N$) + + + + + See also "MKI$, MKSS, MKD$," Section 3.26 and + "Microsoft BASIC Disk I/O," in the Microsoft + BASIC User's Guide. + + + +3.10 EOF + + +Format EOF() + +Action Returns -1 (true) if the end of a sequential + file has been reached. Use EOF to test for + end-of-file while INPUTting, to avoid "Input + past end" errors. + +Example 10 OPEN "I",1,"DATA" + 20 C=0 + 30 IF EOF(1) THEN 100 + 40 INPUT 41,M(C) + 50 C=C+1:GOTO 30 + +MICROSOFT BASIC FUNCTIONS Page 3-7 + + +3.11 EXP + + +Format EXP(X) + +Action Returns e (base of natural logarithms) to the + power of X. X must be <=87.3365. If EXP + overflows, the "Overflow" error message is + displayed, machine infinity with the appropriate + sign is supplied as the result, and execution + continues. + +Example 10 X=5 + 20 PRINT EXP(X-1) + RUN + 54.5982 + Ok + + + +3.12 FIX + + +Format FIX(X) + +Action Returns the truncated integer part of X. FIX(X) + is equivalent to SGN(X)*INT(ABS(X)). The major + difference between FIX and INT is that FIX does + not return the next lower number for negative X. + +Examples PRINT FIX(58.75) + 58 + Ok + + PRINT FIX(-58.75) + -58 + Ok + +MICROSOFT BASIC FUNCTIONS Page 3-8 + + +3.13 FRE + + +Format FRE(0) + FRE("") + +Action Arguments to FRE are dummy arguments. FRE + returns the number of bytes in memory not being + used by Microsoft BASIC. + + FRE("") forces a garbage collection before + returning the number of free bytes. Be + patient: garbage collection may take 1 to 1-1/2 + minutes. + Microsoft BASIC will not initiate garbage + collection until all free memory has been used + up. Therefore, using FRE("") periodically will + result in shorter delays for each garbage + collection. + +Example PRINT FRE(0) + 14542 + Ok + + + +3.14 HEX$ + + +Format HEX$(X) + +Action Returns a string which represents the + hexadecimal value of the decimal argument. X is + rounded to an integer before HEX$ (X) is + evaluated. + +Example 10 INPUT X + 20 A$=HEX$(X) + 30 PRINT X "DECIMAL IS " A$ " HEXADECIMAL" + RUN + ? 32 + 32 DECIMAL IS 20 HEXADECIMAL + Ok + + See the OCT$ function, Section 3.27, for details + on octal conversion. + +MICROSOFT BASIC FUNCTIONS Page 3-9 + + +3.15 INKEY$ + + +Format INKEY$ + +Action Returns either a one-character string containing + a character read from the terminal or a null + string if no character is pending at the + terminal. No characters will be echoed. All + characters are passed through to the program + except for Control-C, which terminates the + program. (With Microsoft BASIC Compiler, + Control-C is also passed through to the + program.) + +Example 1000 'TIMED INPUT SUBROUTINE + 1010 RESPONSE$="" + 1020 FOR I%=1 TO TIMELIMIT% + 1030 A$=INKEY$ : IF LEN(AS)=0 THEN 1060 + 1040 IF ASC(A$)=13 THEN TIMEOUT%=0 : RETURN + 1050 RESPONSE$=RESPONSE$+A$ + 1060 NEXT I% + 1070 TIMEOUT%=1 : RETURN + + + +3.16 INP + + +Format INP(I) + +Action Returns the byte read from port I. I must be in + the range 0 to 255. INP is the complementary + function to the OUT statement, Section 2.47. + +Example 100 A=INP(255) + +MICROSOFT BASIC FUNCTIONS Page 3-10 + + +3.17 INPUT$ + + +Format INPUT$(X[,[#]Y]) + +Action Returns a string of X characters, read from the + terminal or from file number Y. If the terminal + is used for input, no characters will be echoed. + All control characters are passed through except + Control-C, which is used to interrupt the + execution of the INPUT$ function. + +Example 1 5 'LIST THE CONTENTS OF A SEQUENTIAL FILE IN + HEXADECIMAL + 10 OPEN"I",1,"DATA" + 20 IF EOF(1) THEN 50 + 30 PRINT HEX$(ASC(INPUT$(1,#1))); + 40 GOTO 20 + 50 PRINT + 60 END + +Example 2 + + + 100 PRINT "TYPE P TO PROCEED OR S TO STOP" + 110 X$=INPUT$(1) + 120 IF X$="P" THEN 500 + 130 IF X$="S" THEN 700 ELSE 100 + +MICROSOFT BASIC FUNCTIONS Page 3-11 + + +3.18 INSTR + + +Format TNSTR([I,]X$,Y$) + +Action Searches for the first occurrence of string Y$ + in X$, and returns the position at which the + match is found. Optional offset I sets the + position for starting the search. I must be in + the range 1 to 255. If I is greater than the + number of characters in X$ (LEN(X$)), or if X$ + is null or Y$ cannot be found, INSTR returns 0. + If Y$ is null, INSTR returns I or 1. X$ and Y$ + may be string variables, string expressions, or + string literals. + +Example 10 X$="ABCDEB" + 20 Y$="B" + 30 PRINT INSTR(X$,Y$);INSTR(4,X$,Y$) + RUN + 2 6 + Ok + +Note If I=0 is specified, the "Illegal function call" + error message will be returned. + +MICROSOFT BASIC FUNCTIONS Page 3-12 + + +3.19 INT + + +Format INT(x) + +Action Returns the largest integer <=X. + +Examples PRINT INT(99.89) + 99 + Ok + + PRINT INT{-12.11) + -13 + Ok + See the CINT and FIX functions, Sections 3.6 and + 3.12, respectively, which also return integer + values. + + +3.20 LEFT$ + + +Format LEFT$(X$,I) + +Action Returns a string comprising the leftmost I + characters of X$. I must be in the range 0 to + 255. If I is greater than the number of + characters in X$ (LEN(X$)), the entire string + (X$) will be returned. If I=0, the null string + (length zero) is returned. + +Example 10 A$="BASIC" + 20 B$=LEFT$(A$,5) + 30 PRINT B$ + BASIC + Ok + + Also see the MID$ and RIGHT$ functions, Sections + 3.25 and 3.30, respectively. + +MICROSOFT BASIC FUNCTIONS Page 3-13 + + +3.21 LEN + + +Format LEN(X$) + +Action Returns the number of characters in X. + Nonprinting characters and blanks are counted. + +Example 10 X$="PORTLAND, OREGON" + 20 PRINT LEN (X$) + 16 + Ok + + + +3.22 LOC + + +Format LOC() + + where is the number under which + the file was OPENed. + + +Action With random disk files, LOC returns the record + number just read or written from a GET or PUT + statement. If the file was opened but no disk + I/O has been performed yet, LOC returns a 0. + With sequential files, LOC returns the number of + sectors (128-byte blocks) read from or written + to the file since it was OPENed. + +Example 200 IF LOC(1)>50 THEN STOP + +MICROSOFT BASIC FUNCTIONS Page 3-14 + + +3.23 LOG + + +Format LOG(X) + +Action Returns the natural logarithm of X. X must be + greater than zero. + +Example PRINT LOG(45/7) + 1.86075 + Ok + + + +3.24 LPOS + + +Format LPOS(X) + +Action Returns the current position of the line printer + print head within the line printer's buffer. + Does not necessarily give the physical position + of the print head. X is a dummy argument. + +Example 100 IF LPOS(X)>60 THEN LPRINT CHR$(13) + +MICROSOFT BASIC FUNCTIONS Page 3-15 + + +3.25 MID$ + + +Format MID$(XS,I[,J]) + +Action Returns a string of length J characters from X$, + beginning with the Ith character. I and J must + be in the range 1 to 255. If J is omitted or if + there are fewer than J characters to the right + of the Ith character, all rightmost characters + beginning with the Ith character are returned. + If I is greater than the number of characters in + X$ (LEN(X$)), MID$ returns a null string. + +Example LIST + 10 AS="GOOD " + 20 B$="MORNING EVENING AFTERNOON" + 30 PRINT AS;MID$(B$,9,7) + Ok + RUN + GOOD EVENING + Ok + + Also see the LEFT$ and RIGHT$ functions, + Sections 3.20 and 3.30, respectively. + + If 1=0 is specified, the "Illegal function call" + error message will be returned. + +MICROSOFT BASIC FUNCTIONS Page 3-16 + + +3.26 MKI$, MKS$, MKD$ + + +Format MKI$() + MKS$() + MKD$() + +Action Convert numeric values to string values. Any + numeric value that is placed in a randcm file + buffer with an LSET or RSET statement must be + converted to a string. MKI$ converts an integer + to a 2-byte string. MKS$ converts a single + precision number to a 4-byte string. MKD$ + converts a double precision number to an 8-byte + string. + +Example 90 AMT=(K+T) + 100 FIELD #1,8 AS D$,20 AS N$ + 110 LSET D$=MKS$(AMT) + 120 LSET N$=A$ + 130 PUT #1 + + + See also "CVI, CVS, CVD," Section 3.9 and + "Microsoft BASIC Disk I/O," in the Microsoft + BASIC User's Guide. + +MICROSOFT BASIC FUNCTIONS Page 3-17 + + +3.27 OCT$ + +Format OCT$(X) + +Action Returns a string which represents the octal + value of the decimal argument. X is rounded to + an integer before OCT$(X) is evaluated. + +Example PRINT OCT$(24) + 30 + Ok + See the HEX$ function, Section 3.14, for details + on hexadecimal conversion. + + +3.28 PEEK + +Format PEEK(I) + +Action Returns the byte read from the indicated memory + location (I). + +Remarks The returned value is an integer in the range 0 + to 255. I must be in the range -32768 to 65535. + (For the interpretation of a negative value of + I, see "VARPTR," Section 3.43.) + + PEEK is the complementary function of the POKE + statement. + +Example A=PEEK(&H5A00) + +MICROSOFT BASIC FUNCTIONS Page 3-18 + + +3.29 POS + + +Format POS(I) + +Action Returns the current cursor position. The + leftmost position is 1. X is a dummy argument. + +Example IF P0S(X)>60 THEN PRINT CHR$(13) + + Also see the LPOS function, Section 3.24. + + + +3.30 RIGHT$ + + +Format RIGHT$(X$,I) + +Action Returns the rightmost I characters of string X$. + If I is equal to the number of characters in X$ + (LEN(X$)), returns X$. If I=0, the null string + (length zero) is returned. + +Example 10 A$="DISK BASIC" + 20 PRINT RIGHT$(A$,5) + RUN + BASIC + Ok + Also see the LEFT$ and MID$ functions, Sections + 3.20 and 3.23, respectively. + +MICROSOFT BASIC FUNCTIONS Page 3-19 + + +3.31 RND + + +Format RND[(X)] + +Action Returns a random number between 0 and 1. The + same sequence of random numbers is generated + each time the program is RUN unless the random + number generator is reseeded (see "RANDOMIZE," + Section 2.53). However, X<0 always restarts the + same sequence for any given X. + + X>0 or X omitted generates the next random + number in the sequence. X=0 repeats the last + number generated. + +Example 10 FOR 1=1 TO 5 + 20 PRINT INT(RND*100); + 30 NEXT + RUN + 24 30 31 51 5 + Ok + +Note The values produced by the RND function + may vary with different implementations of + Microsoft BASIC. + + + + +3.32 SGN + + +Format SGN(X) + +Action If X>0, SGN(X) returns 1. + If X=0, SGN(X) returns 0. + If X<0, SGN(X) returns -1. + +Example ON SGN(X)+2 GOTO 100,200,300 + + branches to 100 if X is negative, 200 if X is 0, + and 300 if X is positive. + +MICROSOFT BASIC FUNCTIONS Page 3-20 + + +3.33 SIN + + +Format SIN(X) + +Action Returns the sine of X in radians. SIN(X) is + calculated in single precision. + COS(X)=SIN(X+3.14159/2). + +Example PRINT SIN(1.5) + .997495 + Ok + + See also the COS(X) function, Section 3.7. + + + + +3.34 SPACE$ + + +Format SPACE$(X) + +Action Returns a string of spaces of length X. The + expression X is rounded to an integer and must + be in the range 0 to 255. + +Example 10 FOR 1=1 TO 5 + 20 X$=SPACE$(1) + 30 PRINT XS;I + 40 NEXT I + RUN + 1 + 2 + 3 + 4 + 5 + Ok + + Also see the SPC function, Section 3.35. + +MICROSOFT BASIC FUNCTIONS Page 3-21 + + +3.35 SPC + + +Format SPC(I) + +Action Prints I blanks on the terminal. SPC may only + be used with PRINT and LPRINT statements. I + must be in the range 0 to 255. A';' is assumed + to follow the SPC (I) command. + +Example PRINT "OVER" SPC(15) "THERE" + OVER THERE + Ok + + Also see the SPACE$ function, Section 3.34. + + + +3.36 SQR + + +Format SQR(X) + +Action Returns the square root of X. X must be >=0. + +Example 10 FOR X=10 TO 25 STEP 5 + 20 PRINT X, SQR(X) + 30 NEXT + RUN + 10 3.16228 + 15 3.87298 + 20 4.47214 + 25 5 + Ok + +MICROSOFT BASIC FUNCTIONS Page 3-22 + + +3.37 STR$ + + +Format STR$(X) + +Action Returns a string representation of the value of + X. + +Example 5 REM ARITHMETIC FOR KIDS + 10 INPUT "TYPE A NUMBER";N + 20 ON LEN(STR$(N)) GOSUB 30,100,200,300,400,500 + + Also see the VAL function, Section 3.42. + + + +3.38 STRING$ + + +Formats STRING$(I,J) + STRING$(I,X$) + +Action Returns a string of length I whose characters + all have ASCII code J or the first character of + X$. + +Example 10 X$=STRING$(10,45) + 20 PRINT XS "MONTHLY REPORT" X$ + RUN MONTHLY REPORT + Ok + +MICROSOFT BASIC FUNCTIONS Page 3-23 + + +3.39 TAB + + +Format TAB(I) + +Action Spaces to position I on the terminal. If the + current print position is already beyond space + I, TAB goes to that position on the next line. + Space 1 is the leftmost position, and the + rightmost position is the width minus one. + must he in the range 1 to 255. TAB may only be + used in PRINT and LPRINT statements. + +Example 10 PRINT "NAME" TAB (25) "AMOUNT" ; PRINT + 20 READ A$ ,Bu + 30 PRINT A TAB(25) BS + 40 DATA "G. T. JONES", "$25.00" + RUN + NAME AMOUNT + + G. T. JONES $25.00 + Ok + + + +3.40 TAN + + +Format TAN(X) + +Action Returns the tangent of X in radians. TAIL (X! is + calculated in single precision. If TAN + overflows, the "Overflow" error message is + displayed, machine infinity with the appropriate + sign is supplied as the result, and execution + continues. + +Example 10 Y=Q*TAN(X)/2 + +MICROSOFT BASIC FUNCTIONS Page 3-24 + + +3,41 USR + + +Format USR[](X) + +Action Calls the user's assembly language subroutine + with the argument X. is in the range 0 + to 9 and corresponds to the digit supplied with + the DEF USR statement for that routine. If + is omitted, USRO is assumed. See + "Assembly Language Subroutines," in the + Microsoft BASIC User's Guide. + +Example 40 B=T*SIN(Y) + 50 C=USR(B/2) + 60 D=USR(B/3) + + + + + + +3.42 VAL + + +Format VAL(X$) + +Action Returns the numerical value of string X$. The + VAL function also strips leading blanks, tabs, + and linefeeds from the argument string. For + example, + + VAL(" -3") + + returns -3. + +Example 10 READ NAME$,CITY$,STATE$,ZIP$ + 20 IF VAL(ZIP$)<90000 OR VAL(Z1P$)>96699 + TEEN PRINT NAME$ TAB(25) "CUT OF STATE" + 30 IF VAL(ZIP$)>=90601 AND VAL(ZIP$)<=90815 + THEN PRINT NAMES TAB(25) "LONG BEACH" + + + + + See the STR$ function, Section 3.37, for details + on numeric-to-string conversion. + +MICROSOFT BASIC FUNCTIONS Page 3-25 + + +3.43 VARPTR + + +Format 1 VARPTR() + +Format 2 VARPTR(#) + +Action Format 1 + + Returns the address of the first byte of data + identified with . A value must + be assigned to . For random files, returns the address + of the FIELD buffer assigned to . + +Example 100 X=USR(VARPTR(Y)) + + + +MICROSOFT BASIC FUNCTIONS + + + Appendices + + A Error Codes and Error Messages + B Mathematical Functions + C ASCII Character Codes + D Microsoft BASIC Reserved Words + + + + APPENDIX A + + Error Codes and Error Messages + + + +Code Number Message + +NF 1 NEXT without FOR + + A variable in a NEXT statement does not + correspond to any previously executed, + unmatched FOR statement variable. + +SN 2 Syntax error + + A line is encountered that contains some + incorrect sequence of characters (such as + unmatched parenthesis, misspelled command or + statement, incorrect punctuation, etc.). + Microsoft BASIC automatically enters edit + mode at the line that caused the error. + +RG 3 Return without GOSUB + + A RETURN statement is encountered for which + there is no previous, unmatched GOSUB + statement. + +OD 4 Out of data + + A READ statement is executed when there are + no DATA statements with unread data remaining + in the program. + +FC 5 Illege function call + + A parameter that is out of range is passed to + a math or string function. An FC error may + also occur as the result of: + + 1. A negative or unreasonably large + subscript. + + Page A-2 + + + 2. A negative or zero argument with LOG, + + 3. A negative argument to SQR, + + 4. A negative mantissa with a noninteger + exponent. + + 5. A call to a USR function for which the + starting address has not yet been given. + + 6. An improper argument to MID$, LEFT$, + RIGHT$, INP, OUT, WAIT, PEEK, POKE, TAB, + SPC, STRING$, SPACES, INSTR, or + ON...COTO. + +OV 6 Overflow + + The result of a calculation is too large to + be represented in Microsoft BASIC number + format. If underflow occurs, the result is + zero and execution continues without an + error. + +OM 7 Out of memory + + A program is too large, or has too many FOR + loops or GOSUBs, too many variables, or + expressions that are too complicated. + +UL 8 Undefined line + + A nonexistent line is referenced in a GOTO, + GOSUB, IF...THEN...ELSE, or DELETE statement. + +BS 9 Subscript out of range + + An array element is referenced either with a + subscript that is outside the dimensions of + the array or with the wrong number of + subscripts. + +DD 10 Redimensioned array + + Two DIM statements are given for the same + array; or, a DIM statement is given for an + array after the default dimension of 10 has + been established for that array. + +/0 11 Division by zero + + A division by zero is encountered in an + expression; or, the ooeration of involution + results in zero being raised to a negative + power. Machine infinity with the sign of the + numerator is supplied as the result of the + + Page A-3 + + + division, or positive machine infinity is + supplied as the result of the involution, and + execution continues. + +ID 12 Illegal direct + + A statement that is illegal in direct mode is + entered as a direct mode command. + +TM 13 Type mismatch + + A string variable name is assigned a numeric + value or vice versa; a function that exoects + a numeric argument is given a string argument + or vice versa. + +OS 14 Out of string space + + String variables have caused BASIC to exceed + the amount of free memory remaining. + Microsoft BASIC will allocate string space + dynamically, until it runs out of memory. + +LS 15 String too long + + An attempt is made to create a string more + than 255 characters long. + +ST i6 String formula too complex + + A string expression is too long or too + complex. The expression should be broken + into smaller expressions. + +CN 17 Can't continue + + An attempt is made to continue a program + that + + 1. Has halted due to an error. + + 2. Has been modified during a break in + execution. + + 3. Does not exist. + +OF 18 Undefined user function + + A USR function is called before the function + definition (DEF statement) is given. + + 19 No RESUME + + An error handling routine is entered but + contains no RESUME statement. + + Page A-4 + + +20 RESUME without error + + A RESUME statement is encountered before an + error handling routine is entered. + +21 Unprintable error + + An error message is not available for the + error condition which exists. + +22 Missing operand + + An expression contains an operator with no + operand following it. + +23 Line buffer overflow + + An attempt has been made to input a line that + has too many characters. + +26 FOR without NEXT + + A FOR statement was encountered without a + matching NEXT. + +29 WHILE without WEND + + A WHILE statement does not have a matching + WEND. + +30 WEND without WHILE + + A WEND statement was encountered without a + matching WHILE. + + + Disk Errors + +50 Field overflow + + A FIELD statement is attempting to allocate + more bytes than were specified for the record + length of a random file. + +51 Internal error + + An internal malfunction has occurred in + Microsoft BASIC. Report to Microsoft the + conditions under which the message appeared. + +52 Bad file number + + A statement or command references a file with + a file number that is not OPEN or is out of + the range of file numbers specified at + + Page A-5 + + + initialization. + +53 File not found + + A LOAD, KILL, or OPEN statement references a + file that does not exist on the current disk. + +54 Bad file mode + + An attempt is made to use PUT, GET, or LOF + with a sequential file, to LOAD a random + file, or to execute an OPEN statement with a + file mode other than I, 0, or R. + +55 File already open + + A sequential output mode OPEN statement is + issued for a file that is alreac::, open; or a + FILL statement is given for a file that is + onen. + +57 Disk I/O error + + An I/O error occurred on a disk I/O + operation. It is a fatal error; i.e., the + operating system cannot recover from the + error. + + Page A-6 + + +58 File already exists + + The filename specified in a NAME statement is + identical to a filename already in use on the + disk. + +61 Disk full + + All disk storage space is in use. + +62 Input past end + + An INPUT statement is executed after all the + data in the file has been INPUT, or for a + null (empty) file. To avoid this error, use + the EOF function to detect the end-of-file. + +63 Bad record number + + In a PUT or GET statement, the record number + is either greater than the maximum allowed + (32,767) or equal to zero. + +64 Bad file name + + An illegal form is used for the filename with + a LOAD, SAVE, KILL, or OPEN statement (e.g., + a filename with too many characters). + +66 Direct statement in file + + A direct statement is encountered while + LOADing an ASCII-format file. The LOAD is + terminated. + +67 Too many files + + An attempt is made to create a new file + (using SAVE or OPEN) when all 255 directory + entries are full. + + APPENDIX B + + Mathematical Functions + + + +Derived Functions + +Functions that are not intrinsic to Microsoft BASIC may be +calculated as follows. + +Function Microsoft BASIC Equivalent + +SECANT SEC(X)=1/COS(X) +COSECANT CSC (X) =1/SIN (X) +COTANGENT COT(X)=1/TAN(X) +INVERSE SINE ARCSIN(X)=ATN(X/SQR(-X*X+1)) +INVERSE COSINE ARCCOS(X)=-ATN(X/SQR(-X*X+1))+1.5708 +INVERSE SECANT ARCSEC(X)=ATN(X/SQR(X`X-1)) + 4-SGN(SGN(X)-1)*1.5708 +INVERSE COSECANT ARCCSC(X)=ATN(X/SOR(X *X-1)) + 1-(SGN(X)-1)*1.5708 +INVERSE COTANGENT ARCCOT(X)=ATN(X)+1.5706 +HYPERBOLIC SINE SINH(X)=(EXP.00-EXP(-X))/2 +HYPERBOLIC COSINE COSH(X)=.(EXP(X)+EXP(-X))/2 +HYPERBOLIC TANGENT + TANH(X)=(EXP(X)-EXP(-X))/ + (EXP(X)+EXP(-X)) +HYPERBOLIC SECANT SECH(X),=2/(EXP(X)+EXP(-X)) +HYPERBOLIC COSECANT CSCH(X)2/(EXP(X)-EXP(-X)) +HYPERBOLIC COTANGENT + COTH(X)=(EXP(X)+EXP(-X))/ + (EXPOO-EXP(-X)) +INVERSE HYPERBOLIC +SINE ARCSINH(X)=LOG(X+SOR(X*X+1)) +rNVERSE HYPERBOLIC +COSINE ARCCOSH(X)=LOG(X+SOR(X*X-1)) +INVERSE HYPERBOLIC +TANGENT ARCTANH(X)=LOG((1+X)/(1-X))/2 +INVERSE HYPERBOLIC +SECANT ARCSECH(X)=LOGHSIOR(-X*K+1)+1)/X) +INVERSE HYPERBOLIC +COSECANT ARCCSCH(X).-LOGHSGN(X)*SOR(X*X+1)+1)/X) +INVERSE HYPERBOLIC +COTANGENT ARCCOTH(X)=LOGNX+1)/(X-1))/2 + + + + APPENDIX C + + ASCII Character Codes + + +Dec Hex CHR Dec Hex CHR Dec Hex + CHR + +000 00H NUL 043 2BH 086 56H + V +001 err' 01H SOH 044 2CF: r 087 57H +002 02H STX 045 2DH - 088 58H + X +003 03H ETX 046 2EH . 089 59H + I +004 Z 04H EOT 047 2FH / 090 5AH +005 05H ENO 048 30H 0 091 5BH +006 I 06H ACK 049 31H 1 092 5CH + +007 07H BEL 050 32H 2 093 5DH + 1 +003 08H BS 051 331.-1 3 094 5EH + +009 09H HT 052 34H 4 095 5FH + +010-I OAH LF 053 3511 5 096 60H +011 OBE VT 054 36H 6 097 61H + a +012 OCH FF 055 37H 7 098 62E + b +013 ODE CR 056 38E 8 099 63E + c +01,', OEH SO 057 3911 9 100 64H + d +OIL'n OFH SI 053 3A} 101 65H +016 10H DLE 059 3311 102 66H + +017 11H DC1 060 3CH < 103 67H + a +013 12H DC2 061 3DH = 104 68H + h + +019 13H DC3 062 3EH > 105 69H +020 i 14H DC4 063 3FH ? 106 6AH +021 j 15H NAK 064 40H 107 6BH +022 k 16H SYN 065 41H A ,,, 108 6CH +023 1 17H ETB 066 42H B 109 6DH +024 m 18H CAN 067 43H C 110 6EH +025 n 19H EM 068 44H D 111 6FH +026 o lAH SUB 069 45H E 112 70H + 027 P 1BH ESCAPE 070 46H F 113 71H + 028 q 1CH FS 071 47H G 114 72H + 029 r 1DH GS 072 48H H 115 73H + 030 s lEH RS 073 49H I 116 74H + 031 1FH US 074 4AH J 117 75H + 032 u 20H SPACE 075 4BH K 118 76H + 033 v 21H ! 076 4CH L 119 77H + 034 w 22H n 077 4DH M 120 78H + 035 x 23H 0 078 4EH N 121 79H + 036 v 24H $ 079 4FH 0 122 7AH + 03.8 z 26H & 0.81 51H Q 124 7CH + 039 i 27H i 082 52H R 125 7DH + 040 1 28H ( 083 53H S 126 7EH + 041 29H ) 084 54H T 127 7FH + 042 DEL 2AH * 085 55H U + + Dec=decimal, Hex=hexadecimal (H), CHR=character, + LF=Line Feed, FF=Form Feed, CR=Carriage Return, DEL=Rubout + + APPENDIX D + + MICROSOFT BASIC RESERVED WORDS + + + +The following is a list ofreserved words used in Microsoft +BASIC. + + +ABS ERASE LOF RIGHTS +AND ERL LOG RID +ASC ERR LPOS RSET +ATN ERROR LPRINT RUN +AUTO END LSET SAVE +CALL EP MERGE SBN +CDBL FIELD MID$ SIN +CHAIN FILES $MI + + INDEX + + + + + +ABS .. . 3-2 +Addition 1-10 +ALL . . . 2-4,2-10 +Arctangent 3-3 +Array variables . 1-7,2-10, 2-21 +Arrays 1-7,2-8, 2-13, 2-27 +ASC 3-2 +ASCII codes 3-2,3-4 +ASCII format 2-5,2-53, 2-81 +Assembly language subroutines2-3,2-19, 2-63,3-24 to 3-25 +ATN 3-3 +AUTO 1-2,2-2 +Boolean operators 1-13 +CALL 2-3 +Carriage return 1-3,2-40, 2-45 to 2-46, + 2-87to 2-89 +Cassette tape 2-8,2-13 +CDBL 3-3 +CHAIN . 2-4,2-10 +Character set 1-3 +CMS 3-4 +CINT 3-4 +CLEAR 2-7 +CLOAD 2-8 +CLOAD* 2-8 +CLOAD? 2-8 +CLOSE 2-9 +Command level 1-1 +COMMON 2-4,2-10 +Concatenation 1-16 +Constants 1-4 +CONT 2-12,2-45 +Control characters 1-4 +Control-A 2-24 +COS 3-5 +C SAVE 2-13 +CSAVE* 2-13 +CSNG 3-5 +CVD . . 3-6 +CI 3-6 +CVS 3-6 +DA TP 2-15,2-78 +DEF FN 2-16 +DEF USR 2-19,3-24 +DEFDBL 1-7,2-18 +DEFINT 1-7,2-18 +DEFSNG 1-7,2-18 + +DEFSTR 1-7, 2-18 +DELETE 1-2, 2-4, 2-20 +DIM 2-21 +Direct mode 1-1, 2-38, 2-58 +Division 1-10 +Double precision . 1-6, 2-18, 2-64, 3-3 +EDIT . . . 1-2, 2-22 +Edit mode 1-4, 2-22 +END 2-9, 2-12, 2-26, 2-36 +EOF . 3-6 +ERASE 2-27 +ERL 2-28 +ERR 2-28 +ERROR 2-29 +Error codes 1-17, 2-28 to 2-29, A-1 +Error handling 2-28, 2-58 +Error messages 1-17, A-1 +Error trapping 2-29, 2-79 +Escape 1-3, 2-22 +EXP . . . 3-7 +Exponentiation 1-10, 1-12 +Expressions 1-10 +FIELD 2-31 +FIX 3-7 +FOR...NEXT 2-33 +FRE 3-8 +Functions 1-15, 2-16, 3-1, 3-1 +GET 2-31, 2-35 +GOSUB 2-36 +GOTO 2-36 to 2-37 +HEX$ 3-8 +Hexadecimal 1-5, 3-8 +IF...GOTO 2-38 +IF...THEN 2-28, 2-38 +Ir...THEN...ELSe 2-38 +IN 3-12 +Indirect mode 1-1 +INKEY$ 3-9 +INP 3-9 +INPUT . 2-12, 2-31, 2-40 +INPUT# . . 2-42 +INPUTS . . 3-10 +INSTR . . 3-11 +INT .. . 3-7 +Integer 3-4, 3-7, 3-12 +Integer division 1-11 +ISIS-II . 2-80 +KILL 2-43 + +LEFT$ 3-12 +LEN . ....... 3-13 +LET 2-31, 2-44 +Line feed 1-2, 2-40, 2-45 to 2-46, + 2-88 to 2-89 +LINE INPUT 2-43 +LINE INPUT? 2-46 +Line numbers 1-1 to 1-2, 2-2, 2-77 +Line printer 2-49, 2-51, 2-87, 3-14 +Lines 1-1 +LIST . 1-2, 2-47 +LLIST 2-49 +LOAD 9-50, 2-81 +LOC 3-13 +LOG 3-14 +Logical operators 1-13 +Loops 2-33, 2-86 +LIDOS 2-87, 3-14 +LPRINT 2-51, 2-87 +LPRINT USING . 2-51 +LSET 2-52 +MERGE 2-4, 2-53 +MID$ 2-54, 3-15 +MED'S ....... 3-16 +MKIS 3-16 +MXS$ 3-16 +MOD OPERATOR 1-11 +Modulus arithmetic 1-11 +Multiplication . . 1-10 +NAME ....... 4 2-55 +Negation 1-10 +NEW 2-9, 2-56 +NULL 2-57 +Numeric constants 1-4 +Numeric variables 1-7 +OCT$ 3-17 +Octal 1-5, 3-17 +ON ERROR GOTO 2-58 +ON...GOSUB 2-59 +ON...GOTO 2-59 +ODEN 2-9, 2-31, 2-6C +OPerators . . 1-10, 1-12 to 1-13, 1-15 to +OPTION BASE 2-61 +OUT 2-62 +Overflow 1-12, 3-7, 3-23 +Overlay 2-4 +Paper tape +PEEK 2-63, 3-17 +POKE a 4, . 2-63, 3-17 +POS 2-87, 3-18 +PRINT 2-64 +PRINT USING 2-66 +PRINT? 2-70 +PRINT USING 2-70 + +Protected files . 2-81 +PUT 2-31, 2-72 +Random files 2-31, 2-35, 2-43,.2-52, + 2-60, 2-72, 3-13, 3-16 +Random numbers . . 2-73, 3-19 +RANDOMIZE .. 2-73, 3-19 +READ 2-74, 2-78 +REM 2-76 +RUM 2-5, 2-28, 2-77 +Relational operators . ? 1-12 +Reserved words D-1 +RESTORE 2-78 +RESUME 2-79 +RETURN 2-36 +RIGHT$ 3-18 +RIND 2-73, 3-19 +RSET 2-52 +Rubout 1-3, 1-16, 2-23 +RUN 2-80 to 2-81 +SAVE 2-50, 2-80 to 2-81 +Sequential files 2-42 to 2-43, 2-46, 2-60, + 2-70, 2-89, 3-6, 3-13 +SGN 3-19 +SIN 3-20 +Single Precision 1-6, 2-18, 2-64, 3-5 +Space requirements for variables 1-8 +SPACES 3-20 +SPC 3-21 +SQR 3-21 +STOP 2-12, 2-26, 2-36, 2-82 +STR$ 3-22 +String constants 1-4 +String functions 3-6, 3-11 to 3-13, 3-15, + 3-18, 3-22, 3-24 +String operators 1-16 +String space 2-7, 3-8 +String variables 1-7, 2-18, 2-45 to 2-46 +STRING$ . 3-22 +Subroutines 2-3, 2-36, 2-59 +Subscripts . ? ? 1-8, 2-21, 2-51 +Subtraction 1-10 +SWAP .. . 2-83 +TAB 3-23 +Tab 1-3 to 1-4 +TAN 3-23 +TROFF 2-84 +TRON 2-84 +USR . 2-19, 3-24 +VAL 3-24 +Variables 1-6 + +VARPTR 3-25 +WAIT . . 2-85 +WEND 2-8 6 +WHILE 2-85 +WIDTH 2-87 +WIDTH LPRINT 2-87 +WRITE 2-88 +WRITE4 2-89 + diff --git a/GAMES/00readme.txt b/GAMES/00readme.txt new file mode 100644 index 0000000..a3382ec --- /dev/null +++ b/GAMES/00readme.txt @@ -0,0 +1,17 @@ +These programs are provided solely for amusement. +They are NOT part of regression testing and there is NO support. + +Changes made: +a) add missing semicolon/comma in PRINT statements +b) change array names so they were not identical to scalar variable names +c) add spaces around reserved words +d) CASSETTE is not supported, use DISKETTE instead +e) add missing THEN after IF +f) change PRINT #1,X,Y to WRITE #1,X,Y +g) add exit for autmated testing + + +The original programs came from here: +http://www.moorecad.com/classicbasic/ + +EOF diff --git a/GAMES/23-match.INP b/GAMES/23-match.INP new file mode 100644 index 0000000..b784a8c --- /dev/null +++ b/GAMES/23-match.INP @@ -0,0 +1,7 @@ +7 +3 +3 +3 +3 +1 +2 diff --git a/GAMES/23-match.bas b/GAMES/23-match.bas new file mode 100644 index 0000000..4acbed1 --- /dev/null +++ b/GAMES/23-match.bas @@ -0,0 +1,64 @@ +20 PRINT TAB(31);"23 MATCHES" +30 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +40 PRINT:PRINT:PRINT +80 PRINT " THIS IS A GAME CALLED '23 MATCHES'." +90 PRINT +100 PRINT "WHEN IT IS YOUR TURN, YOU MAY TAKE ONE, TWO, OR THREE" +110 PRINT "MATCHES. THE OBJECT OF THE GAME IS NOT TO HAVE TO TAKE" +120 PRINT "THE LAST MATCH." +130 PRINT +140 PRINT "LET'S FLIP A COIN TO SEE WHO GOES FIRST." +150 PRINT "IF IT COMES UP HEADS, I WILL WIN THE TOSS." +155 PRINT +160 REM +165 N = 23 +170 Q = INT(2*RND(5)) +180 IF Q = 1 THEN 210 +190 PRINT "TAILS! YOU GO FIRST. " +195 PRINT +200 GOTO 300 +210 PRINT "HEADS! I WIN! HA! HA!" +220 PRINT "PREPARE TO LOSE, MEATBALL-NOSE!!" +230 PRINT +250 PRINT "I TAKE 2 MATCHES" +260 N = N -2 +270 PRINT "THE NUMBER OF MATCHES IS NOW"; N +280 PRINT +290 PRINT "YOUR TURN -- YOU MAY TAKE 1, 2 OR 3 MATCHES." +300 PRINT "HOW MANY DO YOU WISH TO REMOVE", +310 INPUT K +320 IF K > 3 THEN 430 +330 IF K <= 0 THEN 430 +340 N = N - K +350 PRINT "THERE ARE NOW";N;"MATCHES REMAINING." +351 IF N = 4 THEN 381 +352 IF N = 3 THEN 383 +353 IF N = 2 THEN 385 +360 IF N <= 1 THEN 530 +370 Z = 4 - K +372 GOTO 390 +380 PRINT +381 Z = 3 +382 GOTO 390 +383 Z = 2 +384 GOTO 390 +385 Z = 1 +390 PRINT "MY TURN ! I REMOVE"; Z; "MATCHES" +400 N = N - Z +410 IF N <= 1 THEN 470 +420 GOTO 270 +430 PRINT "VERY FUNNY! DUMMY!" +440 PRINT "DO YOU WANT TO PLAY OR GOOF AROUND?" +450 PRINT "NOW, HOW MANY MATCHES DO YOU WANT", +460 GOTO 310 +470 PRINT +480 PRINT"YOU POOR BOOB! YOU TOOK THE LAST MATCH! I GOTCHA!!" +490 PRINT "HA ! HA ! I BEAT YOU !!!" +500 PRINT +510 PRINT "GOOD BYE LOSER!" +520 GOTO 560 +530 PRINT "YOU WON, FLOPPY EARS !" +540 PRINT "THINK YOU'RE PRETTY SMART !" +550 PRINT "LETS PLAY AGAIN AND I'LL BLOW YOUR SHOES OFF !!" +560 STOP +570 END diff --git a/GAMES/3dplot.INP b/GAMES/3dplot.INP new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/GAMES/3dplot.INP @@ -0,0 +1 @@ + diff --git a/GAMES/3dplot.bas b/GAMES/3dplot.bas new file mode 100644 index 0000000..064b73c --- /dev/null +++ b/GAMES/3dplot.bas @@ -0,0 +1,17 @@ +1 PRINT TAB(30);"SLOTS" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT: PRINT: PRINT +5 DEF FNA(Z)=30*EXP(-Z*Z/100) +100 PRINT +110 FOR X=-30 TO 30 STEP 1.5 +120 L=0 +130 Y1=5*INT(SQR(900-X*X)/5) +140 FOR Y=Y1 TO -Y1 STEP -5 +150 Z=INT(25+FNA(SQR(X*X+Y*Y))-.7*Y) +160 IF Z<=L THEN 190 +170 L=Z +180 PRINT TAB(Z);"*"; +190 NEXT Y +200 PRINT +210 NEXT X +300 END \ No newline at end of file diff --git a/GAMES/aceyducy.INP b/GAMES/aceyducy.INP new file mode 100644 index 0000000..f300a45 --- /dev/null +++ b/GAMES/aceyducy.INP @@ -0,0 +1,17 @@ +0 +0 +0 +1000 +100 +0 +200 +0 +400 +0 +0 +0 +0 +0 +800 +1600 +N diff --git a/GAMES/aceyducy.bas b/GAMES/aceyducy.bas new file mode 100644 index 0000000..2c8b1c3 --- /dev/null +++ b/GAMES/aceyducy.bas @@ -0,0 +1,100 @@ +10 PRINT TAB(26);"ACEY DUCEY CARD GAME" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +21 PRINT +22 PRINT +30 PRINT"ACEY-DUCEY IS PLAYED IN THE FOLLOWING MANNER " +40 PRINT"THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP" +50 PRINT"YOU HAVE AN OPTION TO BET OR NOT BET DEPENDING" +60 PRINT"ON WHETHER OR NOT YOU FEEL THE CARD WILL HAVE" +70 PRINT"A VALUE BETWEEN THE FIRST TWO." +80 PRINT"IF YOU DO NOT WANT TO BET, INPUT A 0" +100 N=100 +110 Q=100 +120 PRINT "YOU NOW HAVE";Q;"DOLLARS." +130 PRINT +140 GOTO 260 +210 Q=Q+M +220 GOTO 120 +240 Q=Q-M +250 GOTO 120 +260 PRINT"HERE ARE YOUR NEXT TWO CARDS: " +270 A=INT(14*RND(1))+2 +280 IF A<2 THEN 270 +290 IF A>14 THEN 270 +300 B=INT(14*RND(1))+2 +310 IF B<2 THEN 300 +320 IF B>14 THEN 300 +330 IF A>=B THEN 270 +350 IF A<11 THEN 400 +360 IF A=11 THEN 420 +370 IF A=12 THEN 440 +380 IF A=13 THEN 460 +390 IF A=14 THEN 480 +400 PRINT A +410 GOTO 500 +420 PRINT"JACK" +430 GOTO 500 +440 PRINT"QUEEN" +450 GOTO 500 +460 PRINT"KING" +470 GOTO 500 +480 PRINT"ACE" +500 IF B<11 THEN 550 +510 IF B=11 THEN 570 +520 IF B=12 THEN 590 +530 IF B=13 THEN 610 +540 IF B=14 THEN 630 +550 PRINT B +560 GOTO 650 +570 PRINT"JACK" +580 GOTO 650 +590 PRINT"QUEEN" +600 GOTO 650 +610 PRINT"KING" +620 GOTO 650 +630 PRINT"ACE" +640 PRINT +650 PRINT +660 INPUT"WHAT IS YOUR BET";M +670 IF M<>0 THEN 680 +675 PRINT"CHICKEN!!" +676 PRINT +677 GOTO 260 +680 IF M<=Q THEN 730 +690 PRINT"SORRY, MY FRIEND, BUT YOU BET TOO MUCH." +700 PRINT"YOU HAVE ONLY ";Q;" DOLLARS TO BET." +710 GOTO 650 +730 C=INT(14*RND(1))+2 +740 IF C<2 THEN 730 +750 IF C>14 THEN 730 +760 IF C<11 THEN 810 +770 IF C=11 THEN 830 +780 IF C=12 THEN 850 +790 IF C=13 THEN 870 +800 IF C=14 THEN 890 +810 PRINT C +820 GOTO 910 +830 PRINT"JACK" +840 GOTO 910 +850 PRINT"QUEEN" +860 GOTO 910 +870 PRINT"KING" +880 GOTO 910 +890 PRINT "ACE" +900 PRINT +910 IF C>A THEN 930 +920 GOTO 970 +930 IF C>=B THEN 970 +950 PRINT"YOU WIN!!!" +960 GOTO 210 +970 PRINT"SORRY, YOU LOSE" +980 IF M1 AND V<>1 THEN 110 +104 PRINT "MEANINGLESS DIMENSIONS. TRY AGAIN.":GOTO 100 +110 DIM WW(H,V),VV(H,V) +120 PRINT +130 PRINT +140 PRINT +150 PRINT +160 Q=0:Z=0:X=INT(RND(1)*H+1) +165 FOR I=1 TO H +170 IF I=X THEN 173 +171 PRINT ".--";:GOTO 180 +173 PRINT ". "; +180 NEXT I +190 PRINT "." +195 C=1:WW(X,1)=C:C=C+1 +200 R=X:S=1:GOTO 260 +210 IF R<>H THEN 240 +215 IF S<>V THEN 230 +220 R=1:S=1:GOTO 250 +230 R=1:S=S+1:GOTO 250 +240 R=R+1 +250 IF WW(R,S)=0 THEN 210 +260 IF R-1=0 THEN 530 +265 IF WW(R-1,S)<>0 THEN 530 +270 IF S-1=0 THEN 390 +280 IF WW(R,S-1)<>0 THEN 390 +290 IF R=H THEN 330 +300 IF WW(R+1,S)<>0 THEN 330 +310 X=INT(RND(1)*3+1) +320 ON X GOTO 790,820,860 +330 IF S<>V THEN 340 +334 IF Z=1 THEN 370 +338 Q=1:GOTO 350 +340 IF WW(R,S+1)<>0 THEN 370 +350 X=INT(RND(1)*3+1) +360 ON X GOTO 790,820,910 +370 X=INT(RND(1)*2+1) +380 ON X GOTO 790,820 +390 IF R=H THEN 470 +400 IF WW(R+1,S)<>0 THEN 470 +405 IF S<>V THEN 420 +410 IF Z=1 THEN 450 +415 Q=1:GOTO 430 +420 IF WW(R,S+1)<>0 THEN 450 +430 X=INT(RND(1)*3+1) +440 ON X GOTO 790,860,910 +450 X=INT(RND(1)*2+1) +460 ON X GOTO 790,860 +470 IF S<>V THEN 490 +480 IF Z=1 THEN 520 +485 Q=1:GOTO 500 +490 IF WW(R,S+1)<>0 THEN 520 +500 X=INT(RND(1)*2+1) +510 ON X GOTO 790,910 +520 GOTO 790 +530 IF S-1=0 THEN 670 +540 IF WW(R,S-1)<>0 THEN 670 +545 IF R=H THEN 610 +547 IF WW(R+1,S)<>0 THEN 610 +550 IF S<>V THEN 560 +552 IF Z=1 THEN 590 +554 Q=1:GOTO 570 +560 IF WW(R,S+1)<>0 THEN 590 +570 X=INT(RND(1)*3+1) +580 ON X GOTO 820,860,910 +590 X=INT(RND(1)*2+1) +600 ON X GOTO 820,860 +610 IF S<>V THEN 630 +620 IF Z=1 THEN 660 +625 Q=1:GOTO 640 +630 IF WW(R,S+1)<>0 THEN 660 +640 X=INT(RND(1)*2+1) +650 ON X GOTO 820,910 +660 GOTO 820 +670 IF R=H THEN 740 +680 IF WW(R+1,S)<>0 THEN 740 +685 IF S<>V THEN 700 +690 IF Z=1 THEN 730 +695 Q=1:GOTO 830 +700 IF WW(R,S+1)<>0 THEN 730 +710 X=INT(RND(1)*2+1) +720 ON X GOTO 860,910 +730 GOTO 860 +740 IF S<>V THEN 760 +750 IF Z=1 THEN 780 +755 Q=1:GOTO 770 +760 IF WW(R,S+1)<>0 THEN 780 +770 GOTO 910 +780 GOTO 1000 +790 WW(R-1,S)=C +800 C=C+1:VV(R-1,S)=2:R=R-1 +810 IF C=H*V+1 THEN 1010 +815 Q=0:GOTO 260 +820 WW(R,S-1)=C +830 C=C+1 +840 VV(R,S-1)=1:S=S-1:IF C=H*V+1 THEN 1010 +850 Q=0:GOTO 260 +860 WW(R+1,S)=C +870 C=C+1:IF VV(R,S)=0 THEN 880 +875 VV(R,S)=3:GOTO 890 +880 VV(R,S)=2 +890 R=R+1 +900 IF C=H*V+1 THEN 1010 +905 GOTO 530 +910 IF Q=1 THEN 960 +920 WW(R,S+1)=C:C=C+1:IF VV(R,S)=0 THEN 940 +930 VV(R,S)=3:GOTO 950 +940 VV(R,S)=1 +950 S=S+1:IF C=H*V+1 THEN 1010 +955 GOTO 260 +960 Z=1 +970 IF VV(R,S)=0 THEN 980 +975 VV(R,S)=3:Q=0:GOTO 1000 +980 VV(R,S)=1:Q=0:R=1:S=1:GOTO 250 +1000 GOTO 210 +1010 FOR J=1 TO V +1011 PRINT "I"; +1012 FOR I=1 TO H +1013 IF VV(I,J)<2 THEN 1030 +1020 PRINT " "; +1021 GOTO 1040 +1030 PRINT " I"; +1040 NEXT I +1041 PRINT +1043 FOR I=1 TO H +1045 IF VV(I,J)=0 THEN 1060 +1050 IF VV(I,J)=2 THEN 1060 +1051 PRINT ": "; +1052 GOTO 1070 +1060 PRINT ":--"; +1070 NEXT I +1071 PRINT "." +1072 NEXT J +1073 END diff --git a/GAMES/animal.INP b/GAMES/animal.INP new file mode 100644 index 0000000..1d0edbb --- /dev/null +++ b/GAMES/animal.INP @@ -0,0 +1,7 @@ +YES +YES +YES +YES +NO +YES +QUIT diff --git a/GAMES/animal.bas b/GAMES/animal.bas new file mode 100644 index 0000000..eebc721 --- /dev/null +++ b/GAMES/animal.bas @@ -0,0 +1,74 @@ +10 PRINT TAB(32);"ANIMAL" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +40 PRINT "PLAY 'GUESS THE ANIMAL'" +45 PRINT +50 PRINT "THINK OF AN ANIMAL AND THE COMPUTER WILL TRY TO GUESS IT." +60 PRINT +70 DIM A$(200) +80 FOR I=0 TO 3 +90 READ A$(I) +100 NEXT I +110 N=VAL(A$(0)) +120 REM MAIN CONTROL SECTION +130 INPUT "ARE YOU THINKING OF AN ANIMAL";A$ +135 IF A$ = "QUIT" THEN END +140 IF A$="LIST" THEN 600 +150 IF LEFT$(A$,1)<>"Y" THEN 120 +160 K=1 +170 GOSUB 390 +180 IF LEN(A$(K))=0 THEN 999 +190 IF LEFT$(A$(K),2)="\Q" THEN 170 +200 PRINT "IS IT A ";RIGHT$(A$(K),LEN(A$(K))-2); +210 INPUT A$ +220 A$=LEFT$(A$,1) +230 IF LEFT$(A$,1)="Y" THEN PRINT "WHY NOT TRY ANOTHER ANIMAL?": GOTO 120 +240 INPUT "THE ANIMAL YOU WERE THINKING OF WAS A ";V$ +250 PRINT "PLEASE TYPE IN A QUESTION THAT WOULD DISTINGUISH A" +260 PRINT V$;" FROM A ";RIGHT$(A$(K),LEN(A$(K))-2) +270 INPUT X$ +280 PRINT "FOR A ";V$;" THE ANSWER WOULD BE "; +290 INPUT A$ +300 A$=LEFT$(A$,1): IF A$<>"Y" AND A$<>"N" THEN 280 +310 IF A$="Y" THEN B$="N" +320 IF A$="N" THEN B$="Y" +330 Z1=VAL(A$(0)) +340 A$(0)=STR$(Z1+2) +350 A$(Z1)=A$(K) +360 A$(Z1+1)="\A"+V$ +370 A$(K)="\Q"+X$+"\"+A$+STR$(Z1+1)+"\"+B$+STR$(Z1)+"\" +380 GOTO 120 +390 REM SUBROUTINE TO PRINT QUESTIONS +400 Q$=A$(K) +410 FOR Z=3 TO LEN(Q$) +415 IF MID$(Q$,Z,1)<>"\" THEN PRINT MID$(Q$,Z,1); +417 NEXT Z +420 INPUT C$ +430 C$=LEFT$(C$,1) +440 IF C$<>"Y" AND C$<>"N" THEN 410 +450 T$="\"+C$ +455 FOR X=3 TO LEN(Q$)-1 +460 IF MID$(Q$,X,2)=T$ THEN 480 +470 NEXT X +475 STOP +480 FOR Y=X+1 TO LEN(Q$) +490 IF MID$(Q$,Y,1)="\" THEN 510 +500 NEXT Y +505 STOP +510 K=VAL(MID$(Q$,X+2,Y-X-2)) +520 RETURN +530 DATA "4","\QDOES IT SWIM\Y2\N3\","\AFISH","\ABIRD" +600 PRINT:PRINT "ANIMALS I ALREADY KNOW ARE:" +605 X=0 +610 FOR I=1 TO 200 +620 IF LEFT$(A$(I),2)<>"\A" THEN 650 +624 PRINT TAB(15*X); +630 FOR Z=3 TO LEN(A$(I)) +640 IF MID$(A$(I),Z,1)<>"\" THEN PRINT MID$(A$(I),Z,1); +642 NEXT Z +645 X=X+1: IF X=4 THEN X=0: PRINT +650 NEXT I +660 PRINT +670 PRINT +680 GOTO 120 +999 END diff --git a/GAMES/awari.INP b/GAMES/awari.INP new file mode 100644 index 0000000..a464f8d --- /dev/null +++ b/GAMES/awari.INP @@ -0,0 +1,24 @@ +7 +6 +5 +4 +3 +2 +1 +7 +6 +5 +4 +3 +2 +1 +7 +6 +5 +4 +3 +2 +1 +7 +6 +-99 diff --git a/GAMES/awari.bas b/GAMES/awari.bas new file mode 100644 index 0000000..d21d179 --- /dev/null +++ b/GAMES/awari.bas @@ -0,0 +1,71 @@ +5 PRINT TAB(34);"AWARI" +7 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +10 DATA 0 +15 DIM B(13),G(13),F(50):READ N +20 PRINT:PRINT:E=0 +25 FOR I=0 TO 12:B(I)=3:NEXT I +30 C=0:F(N)=0:B(13)=0:B(6)=0 +35 GOSUB 500 +40 PRINT "YOUR MOVE";:GOSUB 110 +45 IF E=0 THEN 80 +50 IF M=H THEN GOSUB 100 +55 IF E=0 THEN 80 +60 PRINT "MY MOVE IS ";:GOSUB 800 +65 IF E=0 THEN 80 +70 IF M=H THEN PRINT ",";:GOSUB 800 +75 IF E>0 THEN 35 +80 PRINT:PRINT"GAME OVER" +85 D=B(6)-B(13):IF D<0 THEN PRINT "I WIN BY";-D;"POINTS":GOTO 20 +90 N=N+1:IF D=0 THEN PRINT "DRAWN GAME":GOTO 20 +95 PRINT "YOU WIN BY";D;"POINTS":GOTO 20 +100 PRINT "AGAIN"; +110 INPUT M:IF M<7 THEN IF M>0 THEN M=M-1:GOTO 130 +115 IF M = -99 THEN END +120 PRINT "ILLEGAL MOVE":GOTO 100 +130 IF B(M)=0 THEN 120 +140 H=6:GOSUB 200 +150 GOTO 500 +200 K=M:GOSUB 600 +205 E=0:IF K>6 THEN K=K-7 +210 C=C+1:IF C<9 THEN F(N)=F(N)*6+K +215 FOR I=0 TO 5:IF B(I)<>0 THEN 230 +220 NEXT I +225 RETURN +230 FOR I=7 TO 12:IF B(I)<>0 THEN E=1:RETURN +235 NEXT I +500 PRINT:PRINT" "; +505 FOR I=12 TO 7 STEP -1:GOSUB 580 +510 NEXT I +515 PRINT:I=13:GOSUB 580 +520 PRINT " ";:PRINT B(6):PRINT " "; +525 FOR I=0 TO 5:GOSUB 580 +530 NEXT I +535 PRINT:PRINT:RETURN +580 IF B(I)<10 THEN PRINT " "; +585 PRINT B(I);:RETURN +600 P=B(M):B(M)=0 +605 FOR P=P TO 1 STEP -1:M=M+1:IF M>13 THEN M=M-14 +610 B(M)=B(M)+1:NEXT P +615 IF B(M)=1 THEN IF M<>6 THEN IF M<>13 THEN IF B(12-M)<>0 THEN 625 +620 RETURN +625 B(H)=B(H)+B(12-M)+1:B(M)=0:B(12-M)=0:RETURN +800 D=-99:H=13 +805 FOR I=0 TO 13:G(I)=B(I):NEXT I +810 FOR J=7 TO 12:IF B(J)=0 THEN 885 +815 G=0:M=J:GOSUB 600 +820 FOR I=0 TO 5:IF B(I)=0 THEN 845 +825 L=B(I)+I:R=0 +830 IF L>13 THEN L=L-14:R=1:GOTO 830 +835 IF B(L)=0 THEN IF L<>6 THEN IF L<>13 THEN R=B(12-L)+R +840 IF R>Q THEN Q=R +845 NEXT I +850 Q=B(13)-B(6)-Q:IF C>8 THEN 875 +855 K=J:IF K>6 THEN K=K-7 +860 FOR I=0 TO N-1:IF F(N)*6+K=INT(F(I)/6^(7-C)+.1) THEN Q=Q-2 +870 NEXT I +875 FOR I=0 TO 13:B(I)=G(I):NEXT I +880 IF Q>=D THEN A=J:D=Q +885 NEXT J +890 M=A:PRINT CHR$(42+M);:GOTO 200 +900 FOR I=0 TO N-1:PRINT B(I):NEXT I +999 END diff --git a/GAMES/bagels.INP b/GAMES/bagels.INP new file mode 100644 index 0000000..f5eff64 --- /dev/null +++ b/GAMES/bagels.INP @@ -0,0 +1,11 @@ +YES +123 +321 +312 +345 +354 +356 +364 +374 +384 +NO diff --git a/GAMES/bagels.bas b/GAMES/bagels.bas new file mode 100644 index 0000000..3136955 --- /dev/null +++ b/GAMES/bagels.bas @@ -0,0 +1,81 @@ +5 PRINT TAB(33);"BAGELS" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY":PRINT:PRINT +15 REM *** BAGLES NUMBER GUESSING GAME +20 REM *** ORIGINAL SOURCE UNKNOWN BUT SUSPECTED TO BE +25 REM *** LAWRENCE HALL OF SCIENCE, U.C. BERKELY +30 DIM A1(6),A(3),B(3) +40 Y=0:T=255 +50 PRINT:PRINT:PRINT +70 INPUT "WOULD YOU LIKE THE RULES (YES OR NO)";A$ +90 IF LEFT$(A$,1)="N" THEN 150 +100 PRINT:PRINT "I AM THINKING OF A THREE-DIGIT NUMBER. TRY TO GUESS" +110 PRINT "MY NUMBER AND I WILL GIVE YOU CLUES AS FOLLOWS:" +120 PRINT " PICO - ONE DIGIT CORRECT BUT IN THE WRONG POSITION" +130 PRINT " FERMI - ONE DIGIT CORRECT AND IN THE RIGHT POSITION" +140 PRINT " BAGELS - NO DIGITS CORRECT" +150 FOR I=1 TO 3 +160 A(I)=INT(10*RND(1)) +165 IF I-1=0 THEN 200 +170 FOR J=1 TO I-1 +180 IF A(I)=A(J) THEN 160 +190 NEXT J +200 NEXT I +210 PRINT:PRINT "O.K. I HAVE A NUMBER IN MIND." +220 FOR I=1 TO 20 +230 PRINT "GUESS #";I, +240 INPUT A$ +245 IF LEN(A$)<>3 THEN 630 +250 FOR Z=1 TO 3:A1(Z)=ASC(MID$(A$,Z,1)):NEXT Z +260 FOR J=1 TO 3 +270 IF A1(J)<48 THEN 300 +280 IF A1(J)>57 THEN 300 +285 B(J)=A1(J)-48 +290 NEXT J +295 GOTO 320 +300 PRINT "WHAT?" +310 GOTO 230 +320 IF B(1)=B(2) THEN 650 +330 IF B(2)=B(3) THEN 650 +340 IF B(3)=B(1) THEN 650 +350 C=0:D=0 +360 FOR J=1 TO 2 +370 IF A(J)<>B(J+1) THEN 390 +380 C=C+1 +390 IF A(J+1)<>B(J) THEN 410 +400 C=C+1 +410 NEXT J +420 IF A(1)<>B(3) THEN 440 +430 C=C+1 +440 IF A(3)<>B(1) THEN 460 +450 C=C+1 +460 FOR J=1 TO 3 +470 IF A(J)<>B(J) THEN 490 +480 D=D+1 +490 NEXT J +500 IF D=3 THEN 680 +505 IF C=0 THEN 545 +520 FOR J=1 TO C +530 PRINT "PICO "; +540 NEXT J +545 IF D=0 THEN 580 +550 FOR J=1 TO D +560 PRINT "FERMI "; +570 NEXT J +580 IF C+D<>0 THEN 600 +590 PRINT "BAGELS"; +600 PRINT +605 NEXT I +610 PRINT "OH WELL." +615 PRINT "THAT'S TWNETY GUESSES. MY NUMBER WAS";100*A(1)+10*A(2)+A(3) +620 GOTO 700 +630 PRINT "TRY GUESSING A THREE-DIGIT NUMBER.":GOTO 230 +650 PRINT "OH, I FORGOT TO TELL YOU THAT THE NUMBER I HAVE IN MIND" +660 PRINT "HAS NO TWO DIGITS THE SAME.":GOTO 230 +680 PRINT "YOU GOT IT!!!":PRINT +690 Y=Y+1 +700 INPUT "PLAY AGAIN (YES OR NO)";A$ +720 IF LEFT$(A$,1)="YES" THEN 150 +730 IF Y=0 THEN 750 +740 PRINT:PRINT "A";Y;"POINT BAGELS BUFF!!" +750 PRINT "HOPE YOU HAD FUN. BYE." +999 END diff --git a/GAMES/banner.INP b/GAMES/banner.INP new file mode 100644 index 0000000..1a5ac24 --- /dev/null +++ b/GAMES/banner.INP @@ -0,0 +1,6 @@ +2 +2 +NO +# +AF5NE +NO diff --git a/GAMES/banner.bas b/GAMES/banner.bas new file mode 100644 index 0000000..d27927e --- /dev/null +++ b/GAMES/banner.bas @@ -0,0 +1,95 @@ +1 DIM S(7),J(9) +10 INPUT "HORIZONTAL";X +20 INPUT "VERTICAL";Y +21 INPUT "CENTERED";L$ +22 G1=0:IF L$>"P" THEN G1=1 +23 INPUT "CHARACTER (TYPE 'ALL' IF YOU WANT CHARACTER BEING PRINTED)";M$ +29 PRINT "STATEMENT"; +30 INPUT A$ +35 INPUT "SET PAGE";O$ +40 A=ASC(LEFT$(A$,1)) +50 REM +60 REM +70 FOR T=1 TO LEN(A$) +80 P$=MID$(A$,T,1) +90 FOR O=1 TO 50 +95 READ S$,S(1),S(2),S(3),S(4),S(5),S(6),S(7) +96 IF P$=" " THEN 812 +100 IF P$=S$ THEN 200 +120 NEXT O +200 RESTORE +201 X$=M$ +202 IF M$="ALL" THEN X$=S$ +205 FOR U=1 TO 7 +210 FOR K=8 TO 0 STEP -1 +230 IF 2^K 3/5 THEN 420 +400 PRINT O$;" CONTROLS THE TAP." +410 GOTO 3000 +420 PRINT "DARTMOUTH CONTROLS THE TAP." +425 PRINT +430 INPUT "YOUR SHOT";Z +440 P=0 +445 IF Z<>INT(Z) THEN 455 +446 IF Z<0 OR Z>4 THEN 455 +447 GOTO 460 +455 PRINT "INCORRECT ANSWER. RETYPE IT. ";:GOTO 430 +460 IF RND(1)<.5 THEN 1000 +480 IF T<100 THEN 1000 +490 PRINT +491 IF S(1)<>S(0) THEN 510 +492 PRINT:PRINT " ***** END OF SECOND HALF *****":PRINT +493 PRINT "SCORE AT END OF REGULATION TIME:" +494 PRINT " DARTMOUTH:";S(1);" ";O$;":";S(0) +495 PRINT +496 PRINT "BEGIN TWO MINUTE OVERTIME PERIOD" +499 T=93 +500 GOTO 370 +510 PRINT " ***** END OF GAME *****" +515 PRINT "FINAL SCORE: DARTMOUTH:";S(1);" ";O$;":";S(0) +520 STOP +600 PRINT +610 PRINT " *** TWO MINUTES LEFT IN THE GAME ***" +620 PRINT +630 RETURN +1000 ON Z GOTO 1040,1040 +1030 GOTO 1300 +1040 T=T+1 +1041 IF T=50 THEN 8000 +1042 IF T=92 THEN 1046 +1043 GOTO 1050 +1046 GOSUB 600 +1050 PRINT "JUMP SHOT" +1060 IF RND(1)>.341*D/8 THEN 1090 +1070 PRINT "SHOT IS GOOD." +1075 GOSUB 7000 +1085 GOTO 3000 +1090 IF RND(1)>.682*D/8 THEN 1200 +1100 PRINT "SHOT IS OFF TARGET." +1105 IF D/6*RND(1)>.45 THEN 1130 +1110 PRINT "DARTMOUTH CONTROLS THE REBOUND." +1120 GOTO 1145 +1130 PRINT "REBOUND TO ";O$ +1140 GOTO 3000 +1145 IF RND(1)>.4 THEN 1158 +1150 GOTO 1300 +1158 IF D=6 THEN 5100 +1160 PRINT "BALL PASSED BACK TO YOU. "; +1170 GOTO 430 +1180 IF RND(1)>.9 THEN 1190 +1185 PRINT "PLAYER FOULED, TWO SHOTS." +1187 GOSUB 4000 +1188 GOTO 3000 +1190 PRINT "BALL STOLEN. ";O$;"'S BALL." +1195 GOTO 3000 +1200 IF RND(1)>.782*D/8 THEN 1250 +1210 PRINT "SHOT IS BLOCKED. BALL CONTROLLED BY "; +1230 IF RND(1)>.5 THEN 1242 +1235 PRINT "DARTMOUTH." +1240 GOTO 430 +1242 PRINT O$;"." +1245 GOTO 3000 +1250 IF RND(1)>.843*D/8 THEN 1270 +1255 PRINT "SHOOTER IS FOULED. TWO SHOTS." +1260 GOSUB 4000 +1265 GOTO 3000 +1270 PRINT "CHARGING FOUL. DARTMOUTH LOSES BALL." +1280 GOTO 3000 +1300 T=T+1 +1301 IF T=50 THEN 8000 +1302 IF T=92 THEN 1304 +1303 GOTO 1305 +1304 GOSUB 600 +1305 IF Z=0 THEN 2010 +1310 IF Z>3 THEN 1700 +1320 PRINT "LAY UP." +1330 IF 7/D*RND(1)>.4 THEN 1360 +1340 PRINT "SHOT IS GOOD. TWO POINTS." +1345 GOSUB 7000 +1355 GOTO 3000 +1360 IF 7/D*RND(1)>.7 THEN 1500 +1370 PRINT "SHOT IS OFF THE RIM." +1380 IF RND(1)>2/3 THEN 1415 +1390 PRINT O$;" CONTROLS THE REBOUND." +1400 GOTO 3000 +1415 PRINT "DARTMOUTH CONTROLS THE REBOUND." +1420 IF RND(1)>.4 THEN 1440 +1430 GOTO 1300 +1440 PRINT "BALL PASSED BACK TO YOU."; +1450 GOTO 430 +1500 IF 7/D*RND(1)>.875 THEN 1600 +1510 PRINT "SHOOTER FOULED. TWO SHOTS." +1520 GOSUB 4000 +1530 GOTO 3000 +1600 IF 7/D*RND(1)>.925 THEN 1630 +1610 PRINT "SHOT BLOCKED. ";O$;"'S BALL." +1620 GOTO 3000 +1630 PRINT "CHARGING FOUL. DARTMOUTH LOSES THE BALL." +1640 GOTO 3000 +1700 PRINT "SET SHOT." +1710 GOTO 1330 +2010 INPUT "YOUR NEW DEFENSIVE ALLIGNMENT IS";D +2030 IF D<6 THEN 2010 +2040 GOTO 425 +3000 P=1 +3005 T=T+1 +3008 IF T=50 THEN 8000 +3012 GOTO 3018 +3015 GOSUB 600 +3018 PRINT +3020 Z1=10/4*RND(1)+1 +3030 IF Z1>2 THEN 3500 +3040 PRINT "JUMP SHOT." +3050 IF 8/D*RND(1)>.35 THEN 3100 +3060 PRINT "SHOT IS GOOD." +3080 GOSUB 6000 +3090 GOTO 425 +3100 IF 8/D*RND(1)>.75 THEN 3200 +3105 PRINT "SHOT IS OFF RIM." +3110 IF D/6*RND(1)>.5 THEN 3150 +3120 PRINT "DARTMOUTH CONTROLS THE REBOUND." +3130 GOTO 425 +3150 PRINT O$;" CONTROLS THE REBOUND." +3160 IF D=6 THEN 5000 +3165 IF RND(1)>.5 THEN 3175 +3168 PRINT "PASS BACK TO ";O$;" GUARD." +3170 GOTO 3000 +3175 GOTO 3500 +3200 IF 8/D*RND(1)>.9 THEN 3310 +3210 PRINT "PLAYER FOULED. TWO SHOTS." +3220 GOSUB 4000 +3230 GOTO 425 +3310 PRINT "OFFENSIVE FOUL. DARTMOUTH'S BALL." +3320 GOTO 425 +3500 IF Z1>3 THEN 3800 +3510 PRINT "LAY UP." +3520 IF 7/D*RND(1)>.413 THEN 3600 +3530 PRINT "SHOT IS GOOD." +3540 GOSUB 6000 +3550 GOTO 425 +3600 PRINT "SHOT IS MISSED." +3610 GOTO 3110 +3800 PRINT "SET SHOT." +3810 GOTO 3520 +4000 REM FOUL SHOOTING +4010 IF RND(1)>.49 THEN 4050 +4020 PRINT "SHOOTER MAKES BOTH SHOTS." +4030 S(1-P)=S(1-P)+2 +4040 GOSUB 6010 +4041 RETURN +4050 IF RND(1)>.75 THEN 4100 +4060 PRINT "SHOOTER MAKES ONE SHOT AND MISSES ONE." +4070 S(1-P)=S(1-P)+1 +4080 GOTO 4040 +4100 PRINT "BOTH SHOTS MISSED." +4110 GOTO 4040 +5000 IF RND(1)>.75 THEN 5010 +5005 GOTO 3165 +5010 PRINT "BALL STOLEN. EASY LAY UP FOR DARTMOUTH." +5015 GOSUB 7000 +5030 GOTO 3000 +5100 IF RND(1)>.6 THEN 5120 +5110 GOTO 1160 +5120 PRINT "PASS STOLEN BY ";O$;" EASY LAYUP." +5130 GOSUB 6000 +5140 GOTO 425 +6000 S(0)=S(0)+2 +6010 PRINT "SCORE: ";S(1);"TO";S(0) +6020 RETURN +7000 S(1)=S(1)+2 +7010 GOSUB 6010 +7020 RETURN +8000 PRINT:PRINT " ***** END OF FIRST HALF *****":PRINT +8010 PRINT "SCORE: DARTMOUTH:";S(1);" ";O$;":";S(0) +8015 PRINT +8016 PRINT +8020 GOTO 370 +9999 END diff --git a/GAMES/batnum.INP b/GAMES/batnum.INP new file mode 100644 index 0000000..488964c --- /dev/null +++ b/GAMES/batnum.INP @@ -0,0 +1,8 @@ +13 +2 +1,3 +1 +3 +3 +3 +-1 diff --git a/GAMES/batnum.bas b/GAMES/batnum.bas new file mode 100644 index 0000000..6f39f85 --- /dev/null +++ b/GAMES/batnum.bas @@ -0,0 +1,91 @@ +10 PRINT TAB(33);"BATNUM" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +110 PRINT "THIS PROGRAM IS A 'BATTLE OF NUMBERS' GAME, WHERE THE" +120 PRINT "COMPUTER IS YOUR OPPONENT." +130 PRINT +140 PRINT "THE GAME STARTS WITH AN ASSUMED PILE OF OBJECTS. YOU" +150 PRINT "AND YOUR OPPONENT ALTERNATELY REMOVE OBJECTS FROM THE PILE." +160 PRINT "WINNING IS DEFINED IN ADVANCE AS TAKING THE LAST OBJECT OR" +170 PRINT "NOT. YOU CAN ALSO SPECIFY SOME OTHER BEGINNING CONDITIONS." +180 PRINT "DON'T USE ZERO, HOWEVER, IN PLAYING THE GAME." +190 PRINT "ENTER A NEGATIVE NUMBER FOR NEW PILE SIZE TO STOP PLAYING." +200 PRINT +210 GOTO 330 +220 FOR I=1 TO 10 +230 PRINT +240 NEXT I +330 INPUT "ENTER PILE SIZE";N +335 IF N = -1 THEN END +350 IF N>=1 THEN 370 +360 GOTO 330 +370 IF N<>INT(N) THEN 220 +380 IF N<1 THEN 220 +390 INPUT "ENTER WIN OPTION - 1 TO TAKE LAST, 2 TO AVOID LAST: ";M +410 IF M=1 THEN 430 +420 IF M<>2 THEN 390 +430 INPUT "ENTER MIN AND MAX ";A,B +450 IF A>B THEN 430 +460 IF A<1 THEN 430 +470 IF A<>INT(A) THEN 430 +480 IF B<>INT(B) THEN 430 +490 INPUT "ENTER START OPTION - 1 COMPUTER FIRST, 2 YOU FIRST ";S +500 PRINT:PRINT +510 IF S=1 THEN 530 +520 IF S<>2 THEN 490 +530 C=A+B +540 IF S=2 THEN 570 +550 GOSUB 600 +560 IF W=1 THEN 220 +570 GOSUB 810 +580 IF W=1 THEN 220 +590 GOTO 550 +600 Q=N +610 IF M=1 THEN 630 +620 Q=Q-1 +630 IF M=1 THEN 680 +640 IF N>A THEN 720 +650 W=1 +660 PRINT "COMPUTER TAKES";N;"AND LOSES." +670 RETURN +680 IF N>B THEN 720 +690 W=1 +700 PRINT "COMPUTER TAKES";N;"AND WINS." +710 RETURN +720 P=Q-C*INT(Q/C) +730 IF P>=A THEN 750 +740 P=A +750 IF P<=B THEN 770 +760 P=B +770 N=N-P +780 PRINT "COMPUTER TAKES";P;"AND LEAVES";N +790 W=0 +800 RETURN +810 PRINT:PRINT "YOUR MOVE "; +820 INPUT P +830 IF P<>0 THEN 870 +840 PRINT "I TOLD YOU NOT TO USE ZERO! COMPUTER WINS BY FORFEIT." +850 W=1 +860 RETURN +870 IF P<>INT(P) THEN 920 +880 IF P>=A THEN 910 +890 IF P=N THEN 960 +900 GOTO 920 +910 IF P<=B THEN 940 +920 PRINT "ILLEGAL MOVE, REENTER IT "; +930 GOTO 820 +940 N=N-P +950 IF N<>0 THEN 1030 +960 IF M=1 THEN 1000 +970 PRINT "TOUGH LUCK, YOU LOSE." +980 W=1 +990 RETURN +1000 PRINT "CONGRATULATIONS, YOU WIN." +1010 W=1 +1020 RETURN +1030 IF N>=0 THEN 1060 +1040 N=N+P +1050 GOTO 920 +1060 W=0 +1070 RETURN +1080 END diff --git a/GAMES/battle.INP b/GAMES/battle.INP new file mode 100644 index 0000000..890e77e --- /dev/null +++ b/GAMES/battle.INP @@ -0,0 +1,37 @@ +1,1 +1,2 +1,3 +1,4 +1,5 +1,6 +2,1 +2,2 +2,3 +2,4 +2,5 +2,6 +3,1 +3,2 +3,3 +3,4 +3,5 +3,6 +4,1 +4,2 +4,3 +4,4 +4,5 +4,6 +5,1 +5,2 +5,3 +5,4 +5,5 +5,6 +6,1 +6,2 +6,3 +6,4 +6,5 +6,6 +-1,-1 diff --git a/GAMES/battle.bas b/GAMES/battle.bas new file mode 100644 index 0000000..262dfbb --- /dev/null +++ b/GAMES/battle.bas @@ -0,0 +1,197 @@ +5 PRINT TAB(33);"BATTLE" +7 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +10 REM -- BATTLE WRITTEN BY RAY WESTERGARD 10/70 +20 REM COPYRIGHT 1971 BY THE REGENTS OF THE UNIV. OF CALIF. +30 REM PRODUCED AT THE LAWRENCE HALL OF SCIENCE, BERKELEY +40 DIM FF(6,6),HH(6,6),AA(4),BB(4),CC(6),LL(4) +50 FOR X=1 TO 6 +51 FOR Y=1 TO 6 +52 FF(X,Y)=0 +53 NEXT Y +54 NEXT X +60 FOR I=1 TO 3 +70 N=4-I +80 FOR J=1 TO 2 +90 A=INT(6*RND(1)+1) +100 B=INT(6*RND(1)+1) +110 D=INT(4*RND(1)+1) +120 IF FF(A,B)>0 THEN 90 +130 M=0 +140 ON D GOTO 150,340,550,740 +150 BB(1)=B +160 BB(2)=7:BB(3)=7 +170 FOR K=1 TO N +180 IF M>1 THEN 240 +190 IF BB(K)=6 THEN 230 +200 IF FF(A,BB(K)+1)>0 THEN 230 +210 BB(K+1)=BB(K)+1 +220 GOTO 280 +230 M=2 +240 IF BB(1)0 THEN 90 +270 BB(K+1)=Z-1 +280 NEXT K +290 FF(A,B)=9-2*I-J +300 FOR K=1 TO N +310 FF(A,BB(K+1))=FF(A,B) +320 NEXT K +330 GOTO 990 +340 AA(1)=A +350 BB(1)=B +360 AA(2)=0:AA(3)=0:BB(2)=0:BB(3)=0 +370 FOR K=1 TO N +380 IF M>1 THEN 460 +390 IF AA(K)=1 OR BB(K)=1 THEN 450 +400 IF FF(AA(K)-1,BB(K)-1)>0 THEN 450 +410 IF FF(AA(K)-1,BB(K))>0 AND FF(AA(K)-1,BB(K))=FF(AA(K),BB(K)-1) THEN 450 +420 AA(K+1)=AA(K)-1 +430 BB(K+1)=BB(K)-1 +440 GOTO 530 +450 M=2 +460 IF AA(1)>AA(2) AND AA(1)>AA(3) THEN Z1=AA(1) +462 IF AA(2)>AA(1) AND AA(2)>AA(3) THEN Z1=AA(2) +464 IF AA(3)>AA(1) AND AA(3)>AA(2) THEN Z1=AA(3) +470 IF BB(1)>BB(2) AND BB(1)>BB(3) THEN Z2=BB(1) +474 IF BB(2)>BB(1) AND BB(2)>BB(3) THEN Z2=BB(2) +476 IF BB(3)>BB(1) AND BB(3)>BB(2) THEN Z2=BB(3) +480 IF Z1=6 OR Z2=6 THEN 90 +490 IF FF(Z1+1,Z2+1)>0 THEN 90 +500 IF FF(Z1,Z2+1)>0 AND FF(Z1,Z2+1)=FF(Z1+1,Z2) THEN 90 +510 AA(K+1)=Z1+1 +520 BB(K+1)=Z2+1 +530 NEXT K +540 GOTO 950 +550 AA(1)=A +560 AA(2)=7:AA(3)=7 +570 FOR K=1 TO N +580 IF M>1 THEN 640 +590 IF AA(K)=6 THEN 630 +600 IF FF(AA(K)+1,B)>0 THEN 630 +610 AA(K+1)=AA(K)+1 +620 GOTO 680 +630 M=2 +640 IF AA(1)0 THEN 90 +670 AA(K+1)=Z-1 +680 NEXT K +690 FF(A,B)=9-2*I-J +700 FOR K=1 TO N +710 FF(AA(K+1),B)=FF(A,B) +720 NEXT K +730 GOTO 990 +740 AA(1)=A +750 BB(1)=B +760 AA(2)=7:AA(3)=7 +770 BB(2)=0:BB(3)=0 +780 FOR K=1 TO N +790 IF M>1 THEN 870 +800 IF AA(K)=6 OR BB(K)=1 THEN 860 +810 IF FF(AA(K)+1,BB(K)-1)>0 THEN 860 +820 IF FF(AA(K)+1,BB(K))>0 AND FF(AA(K)+1,BB(K))=FF(AA(K),BB(K)-1) THEN 860 +830 AA(K+1)=AA(K)+1 +840 BB(K+1)=BB(K)-1 +850 GOTO 940 +860 M=2 +870 IF AA(1)BB(2) AND BB(1)>BB(3) THEN Z2=BB(1) +882 IF BB(2)>BB(1) AND BB(2)>BB(3) THEN Z2=BB(2) +884 IF BB(3)>BB(1) AND BB(3)>BB(2) THEN Z2=BB(3) +890 IF Z1=1 OR Z2=6 THEN 90 +900 IF FF(Z1-1,Z2+1)>0 THEN 90 +910 IF FF(Z1,Z2+1)>0 AND FF(Z1,Z2+1)=FF(Z1-1,Z2) THEN 90 +920 AA(K+1)=Z1-1 +930 BB(K+1)=Z2+1 +940 NEXT K +950 FF(A,B)=9-2*I-J +960 FOR K=1 TO N +970 FF(AA(K+1),BB(K+1))=FF(A,B) +980 NEXT K +990 NEXT J +1000 NEXT I +1010 PRINT +1020 PRINT "THE FOLLOWING CODE OF THE BAD GUYS' FLEET DISPOSITION" +1030 PRINT "HAS BEEN CAPTURED BUT NOT DECODED:" +1040 PRINT +1050 FOR I=1 TO 6 +1051 FOR J=1 TO 6 +1052 HH(I,J)=FF(J,I) +1053 NEXT J +1054 NEXT I +1060 FOR I=1 TO 6 +1061 FOR J=1 TO 6 +1062 PRINT HH(I,J); +1063 NEXT J +1064 PRINT +1065 NEXT I +1070 PRINT +1080 PRINT "DE-CODE IT AND USE IT IF YOU CAN" +1090 PRINT "BUT KEEP THE DE-CODING METHOD A SECRET." +1100 PRINT +1110 FOR I=1 TO 6 +1111 FOR J=1 TO 6 +1112 HH(I,J)=0 +1113 NEXT J +1114 NEXT I +1120 FOR I=1 TO 3 +1121 LL(I)=0 +1122 NEXT I +1130 CC(1)=2:CC(2)=2 +1140 CC(3)=1:CC(4)=1 +1150 CC(5)=0:CC(6)=0 +1160 S=0:H=0 +1170 PRINT "START GAME" +1180 INPUT X,Y +1185 IF X < 0 AND Y < 0 THEN END +1190 IF X<1 OR X>6 OR INT(X)<>ABS(X) THEN 1210 +1200 IF Y>0 AND Y<7 AND INT(Y)=ABS(Y) THEN 1230 +1210 PRINT "INVALID INPUT. TRY AGAIN." +1220 GOTO 1180 +1230 R=7-Y +1240 C=X +1250 IF FF(R,C)>0 THEN 1290 +1260 S=S+1 +1270 PRINT "SPLASH! TRY AGAIN." +1280 GOTO 1180 +1290 IF CC(FF(R,C))<4 THEN 1340 +1300 PRINT "THERE USED TO BE A SHIP AT THAT POINT, BUT YOU SUNK IT." +1310 PRINT "SPLASH! TRY AGAIN." +1320 S=S+1 +1330 GOTO 1180 +1340 IF HH(R,C)>0 THEN 1420 +1350 H=H+1 +1360 HH(R,C)=FF(R,C) +1370 PRINT "A DIRECT HIT ON SHIP NUMBER";FF(R,C) +1380 CC(FF(R,C))=CC(FF(R,C))+1 +1390 IF CC(FF(R,C))>=4 THEN 1470 +1400 PRINT "TRY AGAIN." +1410 GOTO 1180 +1420 PRINT "YOU ALREADY PUT A HOLE IN SHIP NUMBER";FF(R,C); +1430 PRINT "AT THAT POINT." +1440 PRINT "SPLASH! TRY AGAIN." +1450 S=S+1 +1460 GOTO 1180 +1470 LL((INT(FF(R,C)-1)/2)+1)=LL((INT(FF(R,C)-1)/2)+1)+1 +1480 PRINT "AND YOU SUNK IT. HURRAH FOR THE GOOD GUYS." +1490 PRINT "SO FAR, THE BAD GUYS HAVE LOST" +1500 PRINT LL(1);"DESTROYER(S),";LL(2);"CRUISER(S), AND"; +1510 PRINT LL(3);"AIRCRAFT CARRIER(S)." +1520 PRINT "YOUR CURRENT SPLASH/HIT RATIO IS";S/H +1530 IF (LL(1)+LL(2)+LL(3))<6 THEN 1180 +1540 PRINT +1550 PRINT "YOU HAVE TOTALLY WIPED OUT THE BAD GUYS' FLEET" +1560 PRINT "WITH A FINAL SPLASH/HIT RATIO OF";S/H +1570 IF S/H>0 THEN 1590 +1580 PRINT "CONGRATULATIONS -- A DIRECT HIT EVERY TIME." +1590 PRINT +1600 PRINT "****************************" +1610 PRINT +1620 GOTO 50 +1630 END diff --git a/GAMES/blackjck.INP b/GAMES/blackjck.INP new file mode 100644 index 0000000..c4dcfac --- /dev/null +++ b/GAMES/blackjck.INP @@ -0,0 +1,7 @@ +Y +1 +10 +H +S +-1 + diff --git a/GAMES/blackjck.bas b/GAMES/blackjck.bas new file mode 100644 index 0000000..ad6187b --- /dev/null +++ b/GAMES/blackjck.bas @@ -0,0 +1,322 @@ +2 PRINT TAB(31);"BLACK JACK" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 DEF FNA(Q)=Q+11*(Q>=22) +20 DIM PP(15,12),QQ(15),CC(52),DD(52),TT(8),SS(7),BB(15) +30 DIM RR(15) +40 REM--PP(I,J) IS THE JTH CARD IN HAND I, QQ(I) IS TOTAL OF HAND I +50 REM--C IS THE DECK BEING DEALT FROM, D IS THE DISCARD PILE, +60 REM--TT(I) IS THE TOTAL FOR PLAYER I, SS(I) IS THE TOTAL THIS HAND FOR +70 REM--PLAYER I, BB(I) IS TH BET FOR HAND I +80 REM--RR(I) IS THE LENGTH OF PP(I,*) +90 GOTO 1500 +100 REM--SUBROUTINE TO GET A CARD. RESULT IS PUT IN X. +110 IF C<51 THEN 230 +120 PRINT "RESHUFFLING" +130 FOR D=D TO 1 STEP -1 +140 C=C-1 +150 CC(C)=DD(D) +160 NEXT D +170 FOR C1=52 TO C STEP -1 +180 C2=INT(RND(1)*(C1-C+1))+C +190 C3=CC(C2) +200 CC(C2)=CC(C1) +210 CC(C1)=C3 +220 NEXT C1 +230 X=CC(C) +240 C=C+1 +250 RETURN +300 REM--SUBROUTINE TO EVALUATE HAND I. TOTAL IS PUT INTO +310 REM--QQ(I). TOTALS HAVE THE FOLLOWING MEANING: +320 REM-- 2-10...HARD 2-10 +330 REM-- 11-21...SOFT 11-21 +340 REM-- 22-32...HARD 11-21 +350 REM-- 33+....BUSTED +360 Q=0 +370 FOR Q2=1 TO RR(I) +380 X=PP(I,Q2) +390 GOSUB 500 +400 NEXT Q2 +410 QQ(I)=Q +420 RETURN +500 REM--SUBROUTINE TO ADD CARD X TO TOTAL Q. +510 X1=X: IF X1>10 THEN X1=10: REM SAME AS X1=10 MIN X +520 Q1=Q+X1 +530 IF Q>=11 THEN 590 +540 IF X>1 THEN 570 +550 Q=Q+11 +560 RETURN +570 Q=Q1-11*(Q1>=11) +580 RETURN +590 Q=Q1-(Q<=21 AND Q1>21) +600 IF Q<33 THEN 620 +610 Q=-1 +620 RETURN +700 REM--CARD PRINTING SUBROUTINE +710 REM D$ DEFINED ELSEWHERE +720 PRINT MID$(D$,3*X-2,3); +730 PRINT " "; +740 RETURN +750 REM--ALTERNATIVE PRINTING ROUTINE +760 PRINT " ";MID$(D$,3*X-1,2); +770 PRINT " "; +780 RETURN +800 REM--SUBROUTINE TO PLAY OUT A HAND. +810 REM--NO SPLITTING OR BLACKJACKS ALLOWED +820 H1=5 +830 GOSUB 1410 +840 H1=3 +850 ON H GOTO 950,930 +860 GOSUB 100 +870 BB(I)=BB(I)*2 +880 PRINT "RECEIVED A"; +890 GOSUB 700 +900 GOSUB 1100 +910 IF Q>0 THEN GOSUB 1300 +920 RETURN +930 GOSUB 1320 +940 RETURN +950 GOSUB 100 +960 PRINT "RECEIVED A"; +970 GOSUB 700 +980 GOSUB 1100 +990 IF Q<0 THEN 940 +1000 PRINT "HIT"; +1010 GOTO 830 +1100 REM--SUBROUTINE TO ADD A CARD TO ROW I +1110 RR(I)=RR(I)+1 +1120 PP(I,RR(I))=X +1130 Q=QQ(I) +1140 GOSUB 500 +1150 QQ(I)=Q +1160 IF Q>=0 THEN 1190 +1170 PRINT "...BUSTED" +1180 GOSUB 1200 +1190 RETURN +1200 REM--SUBROUTINE TO DISCARD ROW I +1210 IF RR(I)<>0 THEN 1230 +1220 RETURN +1230 D=D+1 +1240 DD(D)=PP(I,RR(I)) +1250 RR(I)=RR(I)-1 +1260 GOTO 1210 +1300 REM--PRINTS TOTAL OF HAND I +1310 PRINT +1320 AA=QQ(I): GOSUB 3400 +1325 PRINT "TOTAL IS";AA +1330 RETURN +1400 REM--SUBROUTINE TO READ REPLY +1410 REM I$ DEFINED ELSEWHERE +1420 INPUT H$: H$=LEFT$(H$,1) +1430 FOR H=1 TO H1 STEP 2 +1440 IF H$=MID$(I$,H,1) THEN 1480 +1450 NEXT H +1460 PRINT "TYPE ";MID$(I$,1,H1-1);" OR ";MID$(I$,H1,2);" PLEASE"; +1470 GOTO 1420 +1480 H=(H+1)/2 +1490 RETURN +1500 REM--PROGRAM STARTS HERE +1510 REM--INITIALIZE +1520 D$="N A 2 3 4 5 6 7N 8 9 10 J Q K" +1530 I$="H,S,D,/," +1540 FOR I=1 TO 13 +1550 FOR J=4*I-3 TO 4*I +1560 DD(J)=I +1570 NEXT J +1580 NEXT I +1590 D=52 +1600 C=53 +1610 PRINT "DO YOU WANT INSTRUCTIONS"; +1620 INPUT H$ +1630 IF LEFT$(H$,1)="N" OR LEFT$(H$,1)="n" THEN 1760 +1640 PRINT "THIS IS THE GAME OF 21. AS MANY AS 7 PLAYERS MAY PLAY THE" +1650 PRINT "GAME. ON EACH DEAL, BETS WILL BE ASKED FOR, AND THE" +1660 PRINT "PLAYERS' BETS SHOULD BE TYPED IN. THE CARDS WILL THEN BE" +1670 PRINT "DEALT, AND EACH PLAYER IN TURN PLAYS HIS HAND. THE" +1680 PRINT "FIRST RESPONSE SHOULD BE EITHER 'D', INDICATING THAT THE" +1690 PRINT "PLAYER IS DOUBLING DOWN, 'S', INDICATING THAT HE IS" +1700 PRINT "STANDING, 'H', INDICATING HE WANTS ANOTHER CARD, OR '/'," +1710 PRINT "INDICATING THAT HE WANTS TO SPLIT HIS CARDS. AFTER THE" +1720 PRINT "INITIAL RESPONSE, ALL FURTHER RESPONSES SHOULD BE 'S' OR" +1730 PRINT "'H', UNLESS THE CARDS WERE SPLIT, IN WHICH CASE DOUBLING" +1740 PRINT "DOWN IS AGAIN PERMITTED. IN ORDER TO COLLECT FOR" +1750 PRINT "BLACKJACK, THE INITIAL RESPONSE SHOULD BE 'S'." +1760 PRINT "NUMBER OF PLAYERS"; +1770 INPUT N +1775 PRINT +1780 IF N<1 OR N>7 OR N>INT(N) THEN 1760 +1790 FOR I=1 TO 8: TT(I)=0: NEXT I +1800 D1=N+1 +1810 IF 2*D1+C>=52 THEN GOSUB 120 +1820 IF C=2 THEN C=C-1 +1830 FOR I=1 TO N: Z(I)=0: NEXT I +1840 FOR I=1 TO 15: BB(I)=0: NEXT I +1850 FOR I=1 TO 15: QQ(I)=0: NEXT I +1860 FOR I=1 TO 7: SS(I)=0: NEXT I +1870 FOR I=1 TO 15: RR(I)=0: NEXT I +1880 PRINT "BETS:" +1890 FOR I=1 TO N: PRINT "#";I;: INPUT Z(I): NEXT I +1900 FOR I=1 TO N +1905 IF Z(I) = -1 THEN END +1910 IF Z(I)<=0 OR Z(I)>500 THEN 1880 +1920 BB(I)=Z(I) +1930 NEXT I +1940 PRINT "PLAYER"; +1950 FOR I=1 TO N +1960 PRINT I;" "; +1970 NEXT I +1980 PRINT "DEALER" +1990 FOR J=1 TO 2 +2000 PRINT TAB(5); +2010 FOR I=1 TO D1 +2020 GOSUB 100 +2030 PP(I,J)=X +2040 IF J=1 OR I<=N THEN GOSUB 750 +2050 NEXT I +2060 PRINT +2070 NEXT J +2080 FOR I=1 TO D1 +2090 RR(I)=2 +2100 NEXT I +2110 REM--TEST FOR INSURANCE +2120 IF PP(D1,1)>1 THEN 2240 +2130 PRINT "ANY INSURANCE"; +2140 INPUT H$ +2150 IF LEFT$(H$,1)<>"Y" THEN 2240 +2160 PRINT "INSURANCE BETS" +2170 FOR I=1 TO N: PRINT "#";I;: INPUT Z(I): NEXT I +2180 FOR I=1 TO N +2190 IF Z(I)<0 OR Z(I)>BB(I)/2 THEN 2160 +2200 NEXT I +2210 FOR I=1 TO N +2220 SS(I)=Z(I)*(3*(-(PP(D1,2)>=10))-1) +2230 NEXT I +2240 REM--TEST FOR DEALER BLACKJACK +2250 L1=1: L2=1 +2252 IF PP(D1,1)=1 AND PP(D1,2)>9 THEN L1=0: L2=0 +2253 IF PP(D1,2)=1 AND PP(D1,1)>9 THEN L1=0: L2=0 +2254 IF L1<>0 OR L2<>0 THEN 2320 +2260 PRINT:PRINT "DEALER HAS A";MID$(D$,3*PP(D1,2)-2,3);" IN THE HOLE "; +2270 PRINT "FOR BLACKJACK" +2280 FOR I=1 TO D1 +2290 GOSUB 300 +2300 NEXT I +2310 GOTO 3140 +2320 REM--NO DEALER BLACKJACK +2330 IF PP(D1,1)>1 AND PP(D1,1)<10 THEN 2350 +2340 PRINT:PRINT "NO DEALER BLACKJACK." +2350 REM--NOW PLAY THE HANDS +2360 FOR I=1 TO N +2370 PRINT "PLAYER";I; +2380 H1=7 +2390 GOSUB 1410 +2400 ON H GOTO 2550,2410,2510,2600 +2410 REM--PLAYER WANTS TO STAND +2420 GOSUB 300 +2430 IF QQ(I)<>21 THEN 2490 +2440 PRINT "BLACKJACK" +2450 SS(I)=SS(I)+1.5*BB(I) +2460 BB(I)=0 +2470 GOSUB 1200 +2480 GOTO 2900 +2490 GOSUB 1320 +2500 GOTO 2900 +2510 REM--PLAYER WANTS TO DOUBLE DOWN +2520 GOSUB 300 +2530 GOSUB 860 +2540 GOTO 2900 +2550 REM--PLAYER WANTS TO BE HIT +2560 GOSUB 300 +2570 H1=3 +2580 GOSUB 950 +2590 GOTO 2900 +2600 REM--PLAYER WANTS TO SPLIT +2610 L1=PP(I,1): IF PP(I,1)>10 THEN L1=10 +2612 L2=PP(I,2): IF PP(I,2)>10 THEN L2=10 +2614 IF L1=L2 THEN 2640 +2620 PRINT "SPLITTING NOT ALLOWED." +2630 GOTO 2370 +2640 REM--PLAY OUT SPLIT +2650 I1=I+D1 +2660 RR(I1)=2 +2670 PP(I1,1)=PP(I,2) +2680 BB(I+D1)=BB(I) +2690 GOSUB 100 +2700 PRINT "FIRST HAND RECEIVES A"; +2710 GOSUB 700 +2720 PP(I,2)=X +2730 GOSUB 300 +2740 PRINT +2750 GOSUB 100 +2760 PRINT "SECOND HAND RECEIVES A"; +2770 I=I1 +2780 GOSUB 700 +2790 PP(I,2)=X +2800 GOSUB 300 +2810 PRINT +2820 I=I1-D1 +2830 IF PP(I,1)=1 THEN 2900 +2840 REM--NOW PLAY THE TWO HANDS +2850 PRINT "HAND";1-(I>D1); +2860 GOSUB 800 +2870 I=I+D1 +2880 IF I=I1 THEN 2850 +2890 I=I1-D1 +2900 NEXT I +2910 GOSUB 300 +2920 REM--TEST FOR PLAYING DEALER'S HAND +2930 FOR I=1 TO N +2940 IF RR(I)>0 OR RR(I+D1)>0 THEN 3010 +2950 NEXT I +2960 PRINT "DEALER HAD A"; +2970 X=PP(D1,2) +2980 GOSUB 700 +2990 PRINT " CONCEALED." +3000 GOTO 3140 +3010 PRINT "DEALER HAS A";MID$(D$,3*PP(D1,2)-2,3);" CONCEALED "; +3020 I=D1 +3030 AA=QQ(I): GOSUB 3400 +3035 PRINT "FOR A TOTAL OF";AA +3040 IF AA>16 THEN 3130 +3050 PRINT "DRAWS"; +3060 GOSUB 100 +3070 GOSUB 750 +3080 GOSUB 1100 +3090 AA=Q: GOSUB 3400 +3095 IF Q>0 AND AA<17 THEN 3060 +3100 QQ(I)=Q-(Q<0)/2 +3110 IF Q<0 THEN 3140 +3120 AA=Q: GOSUB 3400 +3125 PRINT "---TOTAL IS";AA +3130 PRINT +3140 REM--TALLY THE RESULT +3150 REM +3160 Z$="LOSES PUSHES WINS " +3165 PRINT +3170 FOR I=1 TO N +3180 AA=QQ(I): GOSUB 3400 +3182 AB=QQ(I+D1): GOSUB 3410 +3184 AC=QQ(D1): GOSUB 3420 +3186 SS(I)=SS(I)+BB(I)*SGN(AA-AC)+BB(I+D1)*SGN(AB-AC) +3188 BB(I+D1)=0 +3200 PRINT "PLAYER";I; +3210 PRINT MID$(Z$,SGN(SS(I))*6+7,6);" "; +3220 IF SS(I)<>0 THEN 3250 +3230 PRINT " "; +3240 GOTO 3260 +3250 PRINT ABS(SS(I)); +3260 TT(I)=TT(I)+SS(I) +3270 PRINT "TOTAL=";TT(I) +3280 GOSUB 1200 +3290 TT(D1)=TT(D1)-SS(I) +3300 I=I+D1 +3310 GOSUB 1200 +3320 I=I-D1 +3330 NEXT I +3340 PRINT "DEALER'S TOTAL=";TT(D1) +3345 PRINT +3350 GOSUB 1200 +3360 GOTO 1810 +3400 AA=AA+11*(AA>=22): RETURN +3410 AB=AB+11*(AB>=22): RETURN +3420 AC=AC+11*(AC>=22): RETURN diff --git a/GAMES/bombard.bas b/GAMES/bombard.bas new file mode 100644 index 0000000..3d2004e --- /dev/null +++ b/GAMES/bombard.bas @@ -0,0 +1,93 @@ +10 PRINT TAB(33);"BOMBARDMENT" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "YOU ARE ON A BATTLEFIELD WITH 4 PLATOONS AND YOU" +110 PRINT "HAVE 25 OUTPOSTS AVAILABLE WHERE THEY MAY BE PLACED." +120 PRINT "YOU CAN ONLY PLACE ONE PLATOON AT ANY ONE OUTPOST." +130 PRINT "THE COMPUTER DOES THE SAME WITH ITS FOUR PLATOONS." +135 PRINT +140 PRINT "THE OBJECT OF THE GAME IS TO FIRE MISSLES AT THE" +150 PRINT "OUTPOSTS OF THE COMPUTER. IT WILL DO THE SAME TO YOU." +160 PRINT "THE ONE WHO DESTROYS ALL FOUR OF THE ENEMY'S PLATOONS" +170 PRINT "FIRST IS THE WINNER." +180 PRINT +190 PRINT "GOOD LUCK... AND TELL US WHERE YOU WANT THE BODIES SENT!" +200 PRINT +210 PRINT "TEAR OFF MATRIX AND USE IT TO CHECK OFF THE NUMBERS." +220 FOR R=1 TO 5: PRINT: NEXT R +260 DIM M(100) +270 FOR R=1 TO 5 +280 I=(R-1)*5+1 +290 PRINT I,I+1,I+2,I+3,I+4 +300 NEXT R +350 FOR R=1 TO 10: PRINT: NEXT R +380 C=INT(RND(1)*25)+1 +390 D=INT(RND(1)*25)+1 +400 E=INT(RND(1)*25)+1 +410 F=INT(RND(1)*25)+1 +420 IF C=D THEN 390 +430 IF C=E THEN 400 +440 IF C=F THEN 410 +450 IF D=E THEN 400 +460 IF D=F THEN 410 +470 IF E=F THEN 410 +480 PRINT "WHAT ARE YOUR FOUR POSITIONS"; +490 INPUT G,H,K,L +495 PRINT +500 PRINT "WHERE DO YOU WISH TO FIRE YOUR MISSLE"; +510 INPUT Y +520 IF Y=C THEN 710 +530 IF Y=D THEN 710 +540 IF Y=E THEN 710 +550 IF Y=F THEN 710 +560 GOTO 630 +570 M=INT(RND(1)*25)+1 +575 GOTO 1160 +580 IF X=G THEN 920 +590 IF X=H THEN 920 +600 IF X=L THEN 920 +610 IF X=K THEN 920 +620 GOTO 670 +630 PRINT "HA, HA YOU MISSED. MY TURN NOW:" +640 PRINT: PRINT: GOTO 570 +670 PRINT "I MISSED YOU, YOU DIRTY RAT. I PICKED"; M; ". YOUR TURN:" +680 PRINT: PRINT: GOTO 500 +710 Q=Q+1 +720 IF Q=4 THEN 890 +730 PRINT "YOU GOT ONE OF MY OUTPOSTS!" +740 IF Q=1 THEN 770 +750 IF Q=2 THEN 810 +760 IF Q=3 THEN 850 +770 PRINT "ONE DOWN, THREE TO GO." +780 PRINT: PRINT: GOTO 570 +810 PRINT "TWO DOWN, TWO TO GO." +820 PRINT: PRINT: GOTO 570 +850 PRINT "THREE DOWN, ONE TO GO." +860 PRINT: PRINT: GOTO 570 +890 PRINT "YOU GOT ME, I'M GOING FAST. BUT I'LL GET YOU WHEN" +900 PRINT "MY TRANSISTO&S RECUP%RA*E!" +910 GOTO 1235 +920 Z=Z+1 +930 IF Z=4 THEN 1110 +940 PRINT "I GOT YOU. IT WON'T BE LONG NOW. POST";X;"WAS HIT." +950 IF Z=1 THEN 990 +960 IF Z=2 THEN 1030 +970 IF Z=3 THEN 1070 +990 PRINT "YOU HAVE ONLY THREE OUTPOSTS LEFT." +1000 PRINT: PRINT: GOTO 500 +1030 PRINT "YOU HAVE ONLY TWO OUTPOSTS LEFT." +1040 PRINT: PRINT: GOTO 500 +1070 PRINT "YOU HAVE ONLY ONE OUTPOST LEFT." +1080 PRINT: PRINT: GOTO 500 +1110 PRINT "YOU'RE DEAD. YOUR LAST OUTPOST WAS AT";X;". HA, HA, HA." +1120 PRINT "BETTER LUCK NEXT TIME." +1150 GOTO 1235 +1160 P=P+1 +1170 N=P-1 +1180 FOR T=1 TO N +1190 IF M=M(T) THEN 570 +1200 NEXT T +1210 X=M +1220 M(P)=M +1230 GOTO 580 +1235 END diff --git a/GAMES/bombsawy.bas b/GAMES/bombsawy.bas new file mode 100644 index 0000000..7459580 --- /dev/null +++ b/GAMES/bombsawy.bas @@ -0,0 +1,65 @@ +8 PRINT "YOU ARE A PILOT IN A WORLD WAR II BOMBER." +10 INPUT "WHAT SIDE -- ITALY(1), ALLIES(2), JAPAN(3), GERMANY(4)";A +20 IF A>0 AND A<5 THEN 25 +22 PRINT "TRY AGAIN..." : GOTO 10 +25 ON A GOTO 30, 110, 200, 220 +30 INPUT "YOUR TARGET -- ALBANIA(1), GREECE(2), NORTH AFRICA(3)";B +40 IF B>0 AND B<4 THEN 45 +42 PRINT "TRY AGAIN..." : GOTO 30 +45 PRINT : ON B GOTO 50, 80,90 +50 PRINT "SHOULD BE EASY -- YOU'RE FLYING A NAZI-MADE PLANE." +60 GOTO 280 +80 PRINT "BE CAREFUL!!!" : GOTO 280 +90 PRINT "YOU'RE GOING FOR THE OIL, EH?" : GOTO 280 +110 INPUT "AIRCRAFT -- LIBERATOR(1), B-29(2), B-17(3), LANCASTER(4)";G +120 IF G>0 AND G<5 THEN 125 +122 PRINT "TRY AGAIN..." : GOTO 110 +125 PRINT : ON G GOTO 130, 150, 170, 190 +130 PRINT "YOU'VE GOT 2 TONS OF BOMBS FLYING FOR PLOESTI." : GOTO 280 +150 PRINT "YOU'RE DUMPING THE A-BOMB ON HIROSHIMA." : GOTO 280 +170 PRINT "YOU'RE CHASING THE BISMARK IN THE NORTH SEA." : GOTO 280 +190 PRINT "YOU'RE BUSTING A GERMAN HEAVY WATER PLANT IN THE RUHR." +195 GOTO 280 +200 PRINT "YOU'RE FLYING A KAMIKAZE MISSION OVER THE USS LEXINGTON." +205 INPUT "YOUR FIRST KAMIKAZE MISSION(Y OR N)";F$ +207 IF F$="N" THEN S=0 : GOTO 358 +210 PRINT : IF RND(1)>.65 THEN 325 +215 GOTO 380 +220 PRINT "A NAZI, EH? OH WELL. ARE YOU GOING FOR RUSSIA(1)," +230 INPUT "ENGLAND(2), OR FRANCE(3)";M : IF M>0 AND M<4 THEN 235 +232 PRINT "TRY AGAIN..." : GOTO 220 +235 PRINT : ON M GOTO 250, 260, 270 +250 PRINT "YOU'RE NEARING STALINGRAD." : GOTO 280 +260 PRINT "NEARING LONDON. BE CAREFUL, THEY'VE GOT RADAR." : GOTO 280 +270 PRINT "NEARING VERSAILLES. DUCK SOUP. THEY'RE NEARLY DEFENSELESS." +280 PRINT +285 INPUT "HOW MANY MISSIONS HAVE YOU FLOWN";D +290 IF D<160 THEN 300 +292 PRINT "MISSIONS, NOT MILES..." +295 PRINT "150 MISSIONS IS HIGH EVEN FOR OLD-TIMERS." +297 PRINT "NOW THEN, "; : GOTO 285 +300 PRINT:IF D<100 THEN 310 +305 PRINT "THAT'S PUSHING THE ODDS!" : GOTO 320 +310 IF D<25 THEN PRINT "FRESH OUT OF TRAINING, EH?" +320 PRINT : IF D<160*RND(1) THEN 330 +325 PRINT "DIRECT HIT!!!! "; INT(100*RND(1)); "KILLED." +327 PRINT "MISSION SUCCESSFUL." : GOTO 390 +330 PRINT "MISSED TARGET BY"; INT(2+30*RND(1)); "MILES!" +335 PRINT "NOW YOU'RE REALLY IN FOR IT !!" : PRINT +340 INPUT "DOES THE ENEMY HAVE GUNS(1), MISSILES(2), OR BOTH(3)";R +345 IF R>0 AND R<4 THEN 350 +347 PRINT "TRY AGAIN..." : GOTO 340 +350 PRINT : T=0 : IF R=2 THEN 360 +355 INPUT "WHAT'S THE PERCENT HIT RATE OF ENEMY GUNNERS (10 TO 50)";S +357 IF S<10 THEN PRINT "YOU LIE, BUT YOU'LL PAY...": GOTO 380 +358 PRINT +360 PRINT : IF R>1 THEN T=35 +365 IF S+T>100*RND(1) THEN 380 +370 PRINT "YOU MADE IT THROUGH TREMENDOUS FLAK!!" : GOTO 390 +380 PRINT "* * * * BOOM * * * *" +384 PRINT "YOU HAVE BEEN SHOT DOWN....." +386 PRINT "DEARLY BELOVED, WE ARE GATHERED HERE TODAY TO PAY OUR" +387 PRINT "LAST TRIBUTE..." +390 PRINT:PRINT:PRINT:INPUT "ANOTHER MISSION (Y OR N)";U$ +395 IF U$="Y" THEN 8 +400 PRINT "CHICKEN !!!" : PRINT : END diff --git a/GAMES/bounce.bas b/GAMES/bounce.bas new file mode 100644 index 0000000..7dd0450 --- /dev/null +++ b/GAMES/bounce.bas @@ -0,0 +1,53 @@ +10 PRINT TAB(33);"BOUNCE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +90 DIM T(20) +100 PRINT "THIS SIMULATION LETS YOU SPECIFY THE INITIAL VELOCITY" +110 PRINT "OF A BALL THROWN STRAIGHT UP, AND THE COEFFICIENT OF" +120 PRINT "ELASTICITY OF THE BALL. PLEASE USE A DECIMAL FRACTION" +130 PRINT "COEFFICIENCY (LESS THAN 1)." +131 PRINT +132 PRINT "YOU ALSO SPECIFY THE TIME INCREMENT TO BE USED IN" +133 PRINT "'STROBING' THE BALL'S FLIGHT (TRY .1 INITIALLY)." +134 PRINT +135 INPUT "TIME INCREMENT (SEC)";S2 +140 PRINT +150 INPUT "VELOCITY (FPS)";V +160 PRINT +170 INPUT "COEFFICIENT";C +180 PRINT +182 PRINT "FEET" +184 PRINT +186 S1=INT(70/(V/(16*S2))) +190 FOR I=1 TO S1 +200 T(I)=V*C^(I-1)/16 +210 NEXT I +220 FOR H=INT(-16*(V/32)^2+V^2/32+.5) TO 0 STEP -.5 +221 IF INT(H)<>H THEN 225 +222 PRINT H; +225 L=0 +230 FOR I=1 TO S1 +240 FOR T=0 TO T(I) STEP S2 +245 L=L+S2 +250 IF ABS(H-(.5*(-32)*T^2+V*C^(I-1)*T))>.25 THEN 270 +260 PRINT TAB(L/S2);"0"; +270 NEXT T +275 T=T(I+1)/2 +276 IF -16*T^2+V*C^(I-1)*T 0 THEN 5220 +5130 PRINT "GUTTER!!" +5220 IF B<>1 OR D<>10 THEN 5490 +5310 PRINT "STRIKE!!!!!" +5400 Q=3 +5490 IF B<>2 OR D<>10 THEN 5760 +5580 PRINT "SPARE!!!!" +5670 Q=2 +5760 IF B<>2 OR D>=10 THEN 6030 +5850 PRINT "ERROR!!!" +5940 Q=1 +6030 IF B<>1 OR D>=10 THEN 6210 +6120 PRINT "ROLL YOUR 2ND BALL" +6210 REM ARK STORAGE OF THE SCORES +6300 PRINT +6390 A(F*P,B)=D +6480 IF B=2 THEN 7020 +6570 B=2 +6660 M=D +6750 IF Q=3 THEN 6210 +6840 A(F*P,B)=D-M +6930 IF Q=0 THEN 2520 +7020 A(F*P,3)=Q +7110 NEXT P +7200 F=F+1 +7290 IF F<11 THEN 2070 +7295 PRINT "FRAMES" +7380 FOR I=1 TO 10 +7470 PRINT I; +7560 NEXT I +7650 PRINT +7740 FOR P=1 TO R +7830 FOR I=1 TO 3 +7920 FOR J=1 TO 10 +8010 PRINT A(J*P,I); +8100 NEXT J +8105 PRINT +8190 NEXT I +8280 PRINT +8370 NEXT P +8460 PRINT "DO YOU WANT ANOTHER GAME" +8550 INPUT A$ +8640 IF LEFT$(A$,1)="Y" THEN 2610 +8730 END diff --git a/GAMES/boxing.bas b/GAMES/boxing.bas new file mode 100644 index 0000000..fc833df --- /dev/null +++ b/GAMES/boxing.bas @@ -0,0 +1,142 @@ +1 PRINT TAB(33);"BOXING" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 PRINT "BOXING OLYMPIC STYLE (3 ROUNDS -- 2 OUT OF 3 WINS)" +5 J=0 +6 L=0 +8 PRINT +10 PRINT "WHAT IS YOUR OPPONENT'S NAME"; +20 INPUT J$ +30 PRINT "INPUT YOUR MAN'S NAME"; +40 INPUT L$ +50 PRINT "DIFFERENT PUNCHES ARE: (1) FULL SWING; (2) HOOK; (3) UPPERCUT; (4) JAB." +60 PRINT "WHAT IS YOUR MANS BEST"; +64 INPUT B +70 PRINT "WHAT IS HIS VULNERABILITY"; +80 INPUT D +90 B1=INT(4*RND(1)+1) +100 D1=INT(4*RND(1)+1) +110 IF B1=D1 THEN 90 +120 PRINT J$;"'S ADVANTAGE IS";B1;"AND VULNERABILITY IS SECRET.":PRINT +130 FOR R=1 TO 3 +140 IF J>= 2 THEN 1040 +150 IF L>=2 THEN 1060 +160 X=0 +170 Y=0 +180 PRINT "ROUND";R;"BEGINS..." +185 FOR R1= 1 TO 7 +190 I=INT(10*RND(1)+1) +200 IF I>5 THEN 600 +210 PRINT L$;"'S PUNCH"; +220 INPUT P +221 IF P=B THEN 225 +222 GOTO 230 +225 X=X+2 +230 IF P=1 THEN 340 +240 IF P=2 THEN 450 +250 IF P=3 THEN 520 +270 PRINT L$; " JABS AT ";J$; "'S HEAD "; +271 IF D1=4 THEN 290 +275 C=INT(8*RND(1)+1) +280 IF C<4 THEN 310 +290 X=X+3 +300 GOTO 950 +310 PRINT "IT'S BLOCKED." +330 GOTO 950 +340 PRINT L$; " SWINGS AND "; +341 IF D1=4 THEN 410 +345 X3=INT(30*RND(1)+1) +350 IF X3<10 THEN 410 +360 PRINT "HE MISSES "; +370 PRINT +375 IF X=1 THEN 950 +380 PRINT +390 PRINT +400 GOTO 300 +410 PRINT "HE CONNECTS!" +420 IF X>35 THEN 980 +425 X=X+15 +440 GOTO 300 +450 PRINT L$;" GIVES THE HOOK... "; +455 IF D1=2 THEN 480 +460 H1=INT(2*RND(1)+1) +470 IF H1=1 THEN 500 +475 PRINT "CONNECTS..." +480 X=X+7 +490 GOTO 300 +500 PRINT "BUT IT'S BLOCKED!!!!!!!!!!!!!" +510 GOTO 300 +520 PRINT L$; " TRIES AN UPPERCUT "; +530 IF D1=3 THEN 570 +540 D5=INT(100*RND(1)+1) +550 IF D5<51 THEN 570 +560 PRINT "AND IT'S BLOCKED (LUCKY BLOCK!)" +565 GOTO 300 +570 PRINT "AND HE CONNECTS!" +580 X=X+4 +590 GOTO 300 +600 J7=INT(4*RND(1)+1) +601 IF J7 =B1 THEN 605 +602 GOTO 610 +605 Y=Y+2 +610 IF J7=1 THEN 720 +620 IF J7=2 THEN 810 +630 IF J7 =3 THEN 860 +640 PRINT J$;" JABS AND "; +645 IF D=4 THEN 700 +650 Z4=INT(7*RND(1)+1) +655 IF Z4>4 THEN 690 +660 PRINT "IT'S BLOCKED!" +670 GOTO 300 +690 PRINT " BLOOD SPILLS !!!" +700 Y=Y+5 +710 GOTO 300 +720 PRINT J$; " TAKES A FULL SWING AND"; +730 IF D=1 THEN 770 +740 R6=INT(60*RND(1)+1) +745 IF R6 <30 THEN 770 +750 PRINT " IT'S BLOCKED!" +760 GOTO 300 +770 PRINT " POW!!!!! HE HITS HIM RIGHT IN THE FACE!" +780 IF Y>35 THEN 1010 +790 Y=Y+15 +800 GOTO 300 +810 PRINT J$;" GETS ";L$;" IN THE JAW (OUCH!)" +820 Y=Y+7 +830 PRINT "....AND AGAIN!" +835 Y=Y+5 +840 IF Y>35 THEN 1010 +850 PRINT +860 PRINT L$;" IS ATTACKED BY AN UPPERCUT (OH,OH)..." +865 IF D=3 THEN 890 +870 Q4=INT(200*RND(1)+1) +880 IF Q4>75 THEN 920 +890 PRINT "AND ";J$;" CONNECTS..." +900 Y=Y+8 +910 GOTO 300 +920 PRINT " BLOCKS AND HITS ";J$;" WITH A HOOK." +930 X=X+5 +940 GOTO 300 +950 NEXT R1 +951 IF X>Y THEN 955 +952 PRINT:PRINT J$; " WINS ROUND"; R +953 J=J+1 +954 GOTO 960 +955 PRINT:PRINT L$; " WINS ROUND"; R +956 L=L+1 +960 NEXT R +961 IF J>= 2 THEN 1040 +962 IF L>=2 THEN 1060 +980 PRINT J$; " IS KNOCKED COLD AND "; L$; " IS THE WINNER AND CHAMP!"; +1000 GOTO 1080 +1010 PRINT L$; " IS KNOCKED COLD AND "; J$; " IS THE WINNER AND CHAMP!"; +1030 GOTO 1000 +1040 PRINT J$; " WINS (NICE GOING,"; J$; ")." +1050 GOTO 1000 +1060 PRINT L$; " AMAZINGLY WINS!!" +1070 GOTO 1000 +1080 PRINT +1085 PRINT +1090 PRINT "AND NOW GOODBYE FROM THE OLYMPIC ARENA." +1100 PRINT +1110 END diff --git a/GAMES/bug.bas b/GAMES/bug.bas new file mode 100644 index 0000000..ec12999 --- /dev/null +++ b/GAMES/bug.bas @@ -0,0 +1,256 @@ +10 PRINT TAB(34);"BUG" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 REM +50 A=0: B=0: H=0: L=0: N=0: P=0: Q=0: R=0: S=0: T=0: U=0: V=0: Y=0 +60 PRINT "THE GAME BUG" +70 PRINT "I HOPE YOU ENJOY THIS GAME." +80 PRINT +90 PRINT "DO YOU WANT INSTRUCTIONS"; +100 INPUT Z$ +110 IF Z$="NO" THEN 300 +120 PRINT "THE OBJECT OF BUG IS TO FINISH YOUR BUG BEFORE I FINISH" +130 PRINT "MINE. EACH NUMBER STANDS FOR A PART OF THE BUG BODY." +140 PRINT "I WILL ROLL THE DIE FOR YOU, TELL YOU WHAT I ROLLED FOR YOU" +150 PRINT "WHAT THE NUMBER STANDS FOR, AND IF YOU CAN GET THE PART." +160 PRINT "IF YOU CAN GET THE PART I WILL GIVE IT TO YOU." +170 PRINT "THE SAME WILL HAPPEN ON MY TURN." +180 PRINT "IF THERE IS A CHANGE IN EITHER BUG I WILL GIVE YOU THE" +190 PRINT "OPTION OF SEEING THE PICTURES OF THE BUGS." +200 PRINT "THE NUMBERS STAND FOR PARTS AS FOLLOWS:" +210 PRINT "NUMBER","PART","NUMBER OF PART NEEDED" +220 PRINT "1","BODY","1" +230 PRINT "2","NECK","1" +240 PRINT "3","HEAD","1" +250 PRINT "4","FEELERS","2" +260 PRINT "5","TAIL","1" +270 PRINT "6","LEGS","6" +280 PRINT +290 PRINT +300 IF Y>0 THEN 2480 +310 Z=INT(6*RND(1)+1) +320 C=1 +330 PRINT "YOU ROLLED A";Z +340 ON Z GOTO 350,430,540,650,760,870 +350 PRINT "1=BODY" +360 IF B=1 THEN 410 +370 PRINT "YOU NOW HAVE A BODY." +380 B=1 +390 C=0 +400 GOTO 970 +410 PRINT "YOU DO NOT NEED A BODY." +420 GOTO 970 +430 PRINT "2=NECK" +440 IF N=1 THEN 500 +450 IF B=0 THEN 520 +460 PRINT "YOU NOW HAVE A NECK." +470 N=1 +480 C=0 +490 GOTO 970 +500 PRINT "YOU DO NOT NEED A NECK." +510 GOTO 970 +520 PRINT "YOU DO NOT HAVE A BODY." +530 GOTO 970 +540 PRINT "3=HEAD" +550 IF N=0 THEN 610 +560 IF H=1 THEN 630 +570 PRINT "YOU NEEDED A HEAD." +580 H=1 +590 C=0 +600 GOTO 970 +610 PRINT "YOU DO NOT HAVE A NECK." +620 GOTO 970 +630 PRINT "YOU HAVE A HEAD." +640 GOTO 970 +650 PRINT "4=FEELERS" +660 IF H=0 THEN 740 +670 IF A=2 THEN 720 +680 PRINT "I NOW GIVE YOU A FEELER." +690 A=A+1 +700 C=0 +710 GOTO 970 +720 PRINT "YOU HAVE TWO FEELERS ALREADY." +730 GOTO 970 +740 PRINT "YOU DO NOT HAVE A HEAD." +750 GOTO 970 +760 PRINT "5=TAIL" +770 IF B=0 THEN 830 +780 IF T=1 THEN 850 +790 PRINT "I NOW GIVE YOU A TAIL." +800 T=T+1 +810 C=0 +820 GOTO 970 +830 PRINT "YOU DO NOT HAVE A BODY." +840 GOTO 970 +850 PRINT "YOU ALREADY HAVE A TAIL." +860 GOTO 970 +870 PRINT "6=LEG" +880 IF L=6 THEN 940 +890 IF B=0 THEN 960 +900 L=L+1 +910 C=0 +920 PRINT "YOU NOW HAVE";L;"LEGS." +930 GOTO 970 +940 PRINT "YOU HAVE 6 FEET ALREADY." +950 GOTO 970 +960 PRINT "YOU DO NOT HAVE A BODY." +970 X=INT(6*RND(1)+1) +971 PRINT +975 FOR DELAY=1 TO 2000:NEXT DELAY +980 PRINT "I ROLLED A";X +990 ON X GOTO 1000,1080,1190,1300,1410,1520 +1000 PRINT "1=BODY" +1010 IF P=1 THEN 1060 +1020 PRINT "I NOW HAVE A BODY." +1030 C=0 +1040 P=1 +1050 GOTO 1630 +1060 PRINT "I DO NOT NEED A BODY." +1070 GOTO 1630 +1080 PRINT "2=NECK" +1090 IF Q=1 THEN 1150 +1100 IF P=0 THEN 1170 +1110 PRINT "I NOW HAVE A NECK." +1120 Q=1 +1130 C=0 +1140 GOTO 1630 +1150 PRINT "I DO NOT NEED A NECK." +1160 GOTO 1630 +1170 PRINT "I DO NOT HAVE A BODY." +1180 GOTO 1630 +1190 PRINT "3=HEAD" +1200 IF Q=0 THEN 1260 +1210 IF R=1 THEN 1280 +1220 PRINT "I NEEDED A HEAD." +1230 R=1 +1240 C=0 +1250 GOTO 1630 +1260 PRINT "I DO NOT HAVE A NECK." +1270 GOTO 1630 +1280 PRINT "I DO NOT NEED A HEAD." +1290 GOTO 1630 +1300 PRINT "4=FEELERS" +1310 IF R=0 THEN 1390 +1320 IF S=2 THEN 1370 +1330 PRINT "I GET A FEELER." +1340 S=S+1 +1350 C=0 +1360 GOTO 1630 +1370 PRINT "I HAVE 2 FEELERS ALREADY." +1380 GOTO 1630 +1390 PRINT "I DO NOT HAVE A HEAD." +1400 GOTO 1630 +1410 PRINT "5=TAIL" +1420 IF P=0 THEN 1480 +1430 IF U=1 THEN 1500 +1440 PRINT "I NOW HAVE A TAIL." +1450 U=1 +1460 C=0 +1470 GOTO 1630 +1480 PRINT "I DO NOT HAVE A BODY." +1490 GOTO 1630 +1500 PRINT "I DO NOT NEED A TAIL." +1510 GOTO 1630 +1520 PRINT "6=LEGS" +1530 IF V=6 THEN 1590 +1540 IF P=0 THEN 1610 +1550 V=V+1 +1560 C=0 +1570 PRINT "I NOW HAVE";V;"LEGS." +1580 GOTO 1630 +1590 PRINT,"I HAVE 6 FEET." +1600 GOTO 1630 +1610 PRINT "I DO NOT HAVE A BODY." +1620 GOTO 1630 +1630 IF A=2 AND T=1 AND L=6 THEN 1650 +1640 GOTO 1670 +1650 PRINT "YOUR BUG IS FINISHED." +1660 Y=Y+1 +1670 IF S=2 AND P=1 AND V=6 THEN 1690 +1680 GOTO 1710 +1690 PRINT "MY BUG IS FINISHED." +1700 Y=Y+2 +1710 IF C=1 THEN 300 +1720 PRINT "DO YOU WANT THE PICTURES"; +1730 INPUT Z$ +1740 IF Z$="NO" THEN 300 +1750 PRINT "*****YOUR BUG*****" +1760 PRINT +1770 PRINT +1780 IF A=0 THEN 1860 +1790 FOR Z=1 TO 4 +1800 FOR X=1 TO A +1810 PRINT TAB(10); +1820 PRINT "A "; +1830 NEXT X +1840 PRINT +1850 NEXT Z +1860 IF H=0 THEN 1880 +1870 GOSUB 2470 +1880 IF N=0 THEN 1920 +1890 FOR Z=1 TO 2 +1900 PRINT " N N" +1910 NEXT Z +1920 IF B=0 THEN 2000 +1930 PRINT " BBBBBBBBBBBB" +1940 FOR Z=1 TO 2 +1950 PRINT " B B" +1960 NEXT Z +1970 IF T<>1 THEN 1990 +1980 PRINT "TTTTTB B" +1990 PRINT " BBBBBBBBBBBB" +2000 IF L=0 THEN 2080 +2010 FOR Z=1 TO 2 +2020 PRINT TAB(5); +2030 FOR X=1 TO L +2040 PRINT " L"; +2050 NEXT X +2060 PRINT +2070 NEXT Z +2080 FOR Z=1 TO 4 +2090 PRINT +2100 NEXT Z +2110 PRINT "*****MY BUG*****" +2120 PRINT +2130 PRINT +2140 PRINT +2150 IF S=0 THEN 2230 +2160 FOR Z=1 TO 4 +2170 PRINT TAB(10); +2180 FOR X=1 TO S +2190 PRINT "F "; +2200 NEXT X +2210 PRINT +2220 NEXT Z +2230 IF R<>1 THEN 2250 +2240 GOSUB 2470 +2250 IF Q=0 THEN 2280 +2260 PRINT " N N" +2270 PRINT " N N" +2280 IF P=0 THEN 2360 +2290 PRINT " BBBBBBBBBBBB" +2300 FOR Z=1 TO 2 +2310 PRINT " B B" +2320 NEXT Z +2330 IF U<>1 THEN 2350 +2340 PRINT "TTTTTB B" +2350 PRINT " BBBBBBBBBBBB" +2360 IF V=0 THEN 2450 +2370 FOR Z=1 TO 2 +2380 PRINT TAB(5); +2390 FOR X=1 TO V +2400 PRINT " L"; +2410 NEXT X +2420 PRINT +2430 NEXT Z +2450 IF Y<>0 THEN 2540 +2460 GOTO 300 +2470 PRINT " HHHHHHH" +2480 PRINT " H H" +2490 PRINT " H O O H" +2500 PRINT " H H" +2510 PRINT " H V H" +2520 PRINT " HHHHHHH" +2530 RETURN +2540 PRINT "I HOPE YOU ENJOYED THE GAME, PLAY IT AGAIN SOON!!" +2550 END diff --git a/GAMES/bullfght.bas b/GAMES/bullfght.bas new file mode 100644 index 0000000..395ab76 --- /dev/null +++ b/GAMES/bullfght.bas @@ -0,0 +1,193 @@ +10 PRINT TAB(34);"BULL" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 DEF FNA(K)=INT(RND(1)*2+1) +200 PRINT:PRINT:PRINT +202 L=1 +205 PRINT "DO YOU WANT INSTRUCTIONS"; +206 INPUT Z$ +207 IF Z$="NO" THEN 400 +210 PRINT "HELLO, ALL YOU BLOODLOVERS AND AFICIONADOS." +220 PRINT "HERE IS YOUR BIG CHANCE TO KILL A BULL." +230 PRINT +240 PRINT "ON EACH PASS OF THE BULL, YOU MAY TRY" +250 PRINT "0 - VERONICA (DANGEROUS INSIDE MOVE OF THE CAPE)" +260 PRINT "1 - LESS DANGEROUS OUTSIDE MOVE OF THE CAPE" +270 PRINT "2 - ORDINARY SWIRL OF THE CAPE." +280 PRINT +290 PRINT "INSTEAD OF THE ABOVE, YOU MAY TRY TO KILL THE BULL" +300 PRINT "ON ANY TURN: 4 (OVER THE HORNS), 5 (IN THE CHEST)." +310 PRINT "BUT IF I WERE YOU," +320 PRINT "I WOULDN'T TRY IT BEFORE THE SEVENTH PASS." +330 PRINT +340 PRINT "THE CROWD WILL DETERMINE WHAT AWARD YOU DESERVE" +350 PRINT "(POSTHUMOUSLY IF NECESSARY)." +360 PRINT "THE BRAVER YOU ARE, THE BETTER THE AWARD YOU RECIEVE." +370 PRINT +380 PRINT "THE BETTER THE JOB THE PICADORES AND TOREADORES DO," +390 PRINT "THE BETTER YOUR CHANCES ARE." +400 PRINT +410 PRINT +420 D(5)=1 +430 D(4)=1 +450 DIM L$(5) +455 A=INT(RND(1)*5+1) +460 FOR I=1 TO 5 +463 READ L$(I) +467 NEXT I +470 DATA "SUPERB","GOOD","FAIR","POOR","AWFUL" +490 PRINT "YOU HAVE DRAWN A ";L$(A);" BULL." +500 IF A>4 THEN 530 +510 IF A<2 THEN 550 +520 GOTO 570 +530 PRINT "YOU'RE LUCKY." +540 GOTO 570 +550 PRINT "GOOD LUCK. YOU'LL NEED IT." +560 PRINT +570 PRINT +590 A$="PICADO" +595 B$="RES" +600 GOSUB 1610 +610 D(1)=C +630 A$="TOREAD" +635 B$="ORES" +640 GOSUB 1610 +650 D(2)=C +660 PRINT +670 PRINT +680 IF Z=1 THEN 1310 +690 D(3)=D(3)+1 +700 PRINT "PASS NUMBER";D(3) +710 IF D(3)<3 THEN 760 +720 PRINT "HERE COMES THE BULL. TRY FOR A KILL"; +730 GOSUB 1930 +735 IF Z1=1 THEN 1130 +740 PRINT "CAPE MOVE"; +750 GOTO 800 +760 PRINT "THE BULL IS CHARGING AT YOU! YOU ARE THE MATADOR--" +770 PRINT "DO YOU WANT TO KILL THE BULL"; +780 GOSUB 1930 +785 IF Z1=1 THEN 1130 +790 PRINT "WHAT MOVE DO YOU MAKE WITH THE CAPE"; +800 INPUT E +810 IF E<>INT(ABS(E)) THEN 830 +820 IF E<3 THEN 850 +830 PRINT "DON'T PANIC, YOU IDIOT! PUT DOWN A CORRECT NUMBER" +840 GOTO 800 +850 REM +860 IF E=0 THEN 920 +870 IF E=1 THEN 900 +880 M=.5 +890 GOTO 930 +900 M=2 +910 GOTO 930 +920 M=3 +930 L=L+M +940 F=(6-A+M/10)*RND(1)/((D(1)+D(2)+D(3)/10)*5) +950 IF F<.51 THEN 660 +960 PRINT "THE BULL HAS GORED YOU!" +970 ON FNA(0) GOTO 980,1010 +980 PRINT "YOU ARE DEAD." +990 D(4)=1.5 +1000 GOTO 1310 +1010 PRINT "YOU ARE STILL ALIVE.":PRINT +1020 PRINT "DO YOU RUN FROM THE RING"; +1030 GOSUB 1930 +1035 IF Z1=2 THEN 1070 +1040 PRINT "COWARD" +1050 D(4)=0 +1060 GOTO 1310 +1070 PRINT "YOU ARE BRAVE. STUPID, BUT BRAVE." +1080 ON FNA(0) GOTO 1090,1110 +1090 D(4)=2 +1100 GOTO 660 +1110 PRINT "YOU ARE GORED AGAIN!" +1120 GOTO 970 +1130 REM +1140 Z=1 +1150 PRINT:PRINT "IT IS THE MOMENT OF TRUTH.":PRINT +1155 PRINT "HOW DO YOU TRY TO KILL THE BULL"; +1160 INPUT H +1170 IF H=4 THEN 1230 +1180 IF H=5 THEN 1230 +1190 PRINT "YOU PANICKED. THE BULL GORED YOU." +1220 GOTO 970 +1230 K=(6-A)*10*RND(1)/((D(1)+D(2))*5*D(3)) +1240 IF J=4 THEN 1290 +1250 IF K>.2 THEN 960 +1260 PRINT "YOU KILLED THE BULL!" +1270 D(5)=2 +1280 GOTO 1320 +1290 IF K>.8 THEN 960 +1300 GOTO 1260 +1310 PRINT +1320 PRINT +1330 PRINT +1340 IF D(4)<>0 THEN 1390 +1350 PRINT "THE CROWD BOOS FOR TEN MINUTES. IF YOU EVER DARE TO SHOW" +1360 PRINT "YOUR FACE IN A RING AGAIN, THEY SWEAR THEY WILL KILL YOU--" +1370 PRINT "UNLES THE BULL DOES FIRST." +1380 GOTO 1580 +1390 DEF FND(Q)=(4.5+L/6-(D(1)+D(2))*2.5+4*D(4)+2*D(5)-D(3)^2/120-A) +1395 DEF FNC(Q)=FND(Q)*RND(1) +1400 IF D(4)<>2 THEN 1430 +1410 PRINT "THE CROWD CHEERS WILDLY!" +1420 GOTO 1450 +1430 IF D(5)<>2 THEN 1450 +1440 PRINT "THE CROWD CHEERS!":PRINT +1450 PRINT "THE CROWD AWARDS YOU" +1460 IF FNC(Q)<2.4 THEN 1570 +1470 IF FNC(Q)<4.9 THEN 1550 +1480 IF FNC(Q)<7.4 THEN 1520 +1500 PRINT "OLE! YOU ARE 'MUY HOMBRE'!! OLE! OLE!" +1510 GOTO 1580 +1520 PRINT "BOTH EARS OF THE BULL!" +1530 PRINT "OLE!" +1540 GOTO 1580 +1550 PRINT "ONE EAR OF THE BULL." +1560 GOTO 1580 +1570 PRINT "NOTHING AT ALL." +1580 PRINT +1590 PRINT "ADIOS":PRINT:PRINT:PRINT +1600 GOTO 2030 +1610 B=3/A*RND(1) +1620 IF B<.37 THEN 1740 +1630 IF B<.5 THEN 1720 +1640 IF B<.63 THEN 1700 +1650 IF B<.87 THEN 1680 +1660 C=.1 +1670 GOTO 1750 +1680 C=.2 +1690 GOTO 1750 +1700 C=.3 +1710 GOTO 1750 +1720 C=.4 +1730 GOTO 1750 +1740 C=.5 +1750 T=INT(10*C+.2) +1760 PRINT "THE ";A$;B$;" DID A ";L$(T);" JOB." +1770 IF 4>T THEN 1900 +1780 IF 5=T THEN 1870 +1790 ON FNA(K) GOTO 1830,1850 +1800 IF A$="TOREAD" THEN 1820 +1810 PRINT "ONE OF THE HORSES OF THE ";A$;B$;" WAS KILLED." +1820 ON FNA(K) GOTO 1830,1850 +1830 PRINT "ONE OF THE ";A$;B$;" WAS KILLED." +1840 GOTO 1900 +1850 PRINT "NO ";A$;B$;" WERE KILLED." +1860 GOTO 1900 +1870 IF A$="TOREAD" THEN 1890 +1880 PRINT FNA(K);"OF THE HORSES OF THE ";A$;B$;" KILLED." +1890 PRINT FNA(K);"OF THE ";A$;B$;" KILLED." +1900 PRINT +1910 RETURN +1920 REM +1930 INPUT A$ +1940 IF A$="YES" THEN 1990 +1950 IF A$="NO" THEN 2010 +1970 PRINT "INCORRECT ANSWER - - PLEASE TYPE 'YES' OR 'NO'." +1980 GOTO 1930 +1990 Z1=1 +2000 GOTO 2020 +2010 Z1=2 +2020 RETURN +2030 END diff --git a/GAMES/bullseye.bas b/GAMES/bullseye.bas new file mode 100644 index 0000000..0c28b68 --- /dev/null +++ b/GAMES/bullseye.bas @@ -0,0 +1,37 @@ +5 PRINT TAB(32);"BULLSEYE" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +20 PRINT:PRINT:PRINT +30 PRINT "IN THIS GAME, UP TO 20 PLAYERS THROW DARTS AT A TARGET" +40 PRINT "WITH 10, 20, 30, AND 40 POINT ZONES. THE OBJECTIVE IS" +50 PRINT "TO GET 200 POINTS.": PRINT +60 PRINT "THROW",TAB(20);"DESCRIPTION";TAB(45);"PROBABLE SCORE" +70 PRINT" 1";TAB(20);"FAST OVERARM";TAB(45);"BULLSEYE OR COMPLETE MISS" +80 PRINT" 2";TAB(20);"CONTROLLED OVERARM";TAB(45);"10, 20 OR 30 POINTS" +90 PRINT" 3";TAB(20);"UNDERARM";TAB(45);"ANYTHING":PRINT +100 DIM A$(20),S(20),W(10): M=0: R=0: FOR I=1 TO 20: S(I)=0: NEXT I +110 INPUT "HOW MANY PLAYERS";N: PRINT +120 FOR I=1 TO N +130 PRINT "NAME OF PLAYER #";I;:INPUT A$(I) +140 NEXT I +150 R=R+1: PRINT: PRINT "ROUND";R:PRINT "---------" +160 FOR I=1 TO N +170 PRINT: PRINT A$(I);"'S THROW";: INPUT T +180 IF T<0 OR T>3 THEN PRINT "INPUT 1, 2, OR 3!": GOTO 170 +190 ON T GOTO 200, 210, 200 +200 P1=.65: P2=.55: P3=.5: P4=.5: GOTO 230 +210 P1=.99: P2=.77: P3=.43: P4=.01: GOTO 230 +220 P1=.95: P2=.75: P3=.45: P4=.05 +230 U=RND(1) +240 IF U>=P1 THEN PRINT "BULLSEYE!! 40 POINTS!":B=40: GOTO 290 +250 IF U>=P2 THEN PRINT "30-POINT ZONE!":B=30: GOTO 290 +260 IF U>=P3 THEN PRINT "20-POINT ZONE":B=20: GOTO 290 +270 IF U>=P4 THEN PRINT "WHEW! 10 POINTS.":B=10: GOTO 290 +280 PRINT "MISSED THE TARGET! TOO BAD.": B=0 +290 S(I)=S(I)+B: PRINT "TOTAL SCORE =";S(I): NEXT I +300 FOR I=1 TO N +310 IF S(I)>=200 THEN M=M+1: W(M)=I +320 NEXT I +330 IF M=0 THEN 150 +340 PRINT: PRINT "WE HAVE A WINNER!!": PRINT +350 FOR I=1 TO M: PRINT A$(W(I));" SCORED";S(W(I));"POINTS.": NEXT I +360 PRINT: PRINT "THANKS FOR THE GAME.": END diff --git a/GAMES/bunny.bas b/GAMES/bunny.bas new file mode 100644 index 0000000..f089045 --- /dev/null +++ b/GAMES/bunny.bas @@ -0,0 +1,41 @@ +10 PRINT TAB(33);"BUNNY" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 REM "BUNNY" FROM AHL'S 'BASIC COMPUTER GAMES' +110 REM +120 FOR I=0 TO 4: READ B(I): NEXT I +130 GOSUB 260 +140 L=64: REM ASCII LETTER CODE... +150 REM +160 PRINT +170 READ X: IF X<0 THEN 160 +171 IF X < 1 THEN X = 1 +175 IF X>128 THEN 240 +180 PRINT TAB(X);: READ Y +190 FOR I=X TO Y: J=I-5*INT(I/5) +200 PRINT CHR$(L+B(J)); +210 NEXT I +220 GOTO 170 +230 REM +240 GOSUB 260: GOTO 450 +250 REM +260 FOR I=1 TO 6: PRINT CHR$(10);: NEXT I +270 RETURN +280 REM +290 DATA 2,21,14,14,25 +300 DATA 1,2,-1,0,2,45,50,-1,0,5,43,52,-1,0,7,41,52,-1 +310 DATA 1,9,37,50,-1,2,11,36,50,-1,3,13,34,49,-1,4,14,32,48,-1 +320 DATA 5,15,31,47,-1,6,16,30,45,-1,7,17,29,44,-1,8,19,28,43,-1 +330 DATA 9,20,27,41,-1,10,21,26,40,-1,11,22,25,38,-1,12,22,24,36,-1 +340 DATA 13,34,-1,14,33,-1,15,31,-1,17,29,-1,18,27,-1 +350 DATA 19,26,-1,16,28,-1,13,30,-1,11,31,-1,10,32,-1 +360 DATA 8,33,-1,7,34,-1,6,13,16,34,-1,5,12,16,35,-1 +370 DATA 4,12,16,35,-1,3,12,15,35,-1,2,35,-1,1,35,-1 +380 DATA 2,34,-1,3,34,-1,4,33,-1,6,33,-1,10,32,34,34,-1 +390 DATA 14,17,19,25,28,31,35,35,-1,15,19,23,30,36,36,-1 +400 DATA 14,18,21,21,24,30,37,37,-1,13,18,23,29,33,38,-1 +410 DATA 12,29,31,33,-1,11,13,17,17,19,19,22,22,24,31,-1 +420 DATA 10,11,17,18,22,22,24,24,29,29,-1 +430 DATA 22,23,26,29,-1,27,29,-1,28,29,-1,4096 +440 REM +450 END diff --git a/GAMES/buzzword.bas b/GAMES/buzzword.bas new file mode 100644 index 0000000..a787fcb --- /dev/null +++ b/GAMES/buzzword.bas @@ -0,0 +1,25 @@ +10 PRINT TAB(26);"BUZZWORD GENERATOR" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 PRINT "THIS PROGRAM PRINTS HIGHLY ACCEPTABLE PHRASES IN" +50 PRINT "'EDUCATOR-SPEAK'THAT YOU CAN WORK INTO REPORTS" +60 PRINT "AND SPEECHES. WHENEVER A QUESTION MARK IS PRINTED," +70 PRINT "TYPE A 'Y' FOR ANOTHER PHRASE OR 'N' TO QUIT." +80 PRINT:PRINT:PRINT "HERE'S THE FIRST PHRASE:" +90 DIM A$(40) +100 FOR I=1 TO 39 : READ A$(I) : NEXT I +110 PRINT A$(INT(13*RND(1)+1));" "; +120 PRINT A$(INT(13*RND(1)+14));" "; +130 PRINT A$(INT(13*RND(1)+27)) : PRINT +150 INPUT Y$ : IF Y$="Y" THEN 110 ELSE GOTO 999 +200 DATA "ABILITY","BASAL","BEHAVIORAL","CHILD-CENTERED" +210 DATA "DIFFERENTIATED","DISCOVERY","FLEXIBLE","HETEROGENEOUS" +220 DATA "HOMOGENEOUS","MANIPULATIVE","MODULAR","TAVISTOCK" +230 DATA "INDIVIDUALIZED","LEARNING","EVALUATIVE","OBJECTIVE" +240 DATA "COGNITIVE","ENRICHMENT","SCHEDULING","HUMANISTIC" +250 DATA "INTEGRATED","NON-GRADED","TRAINING","VERTICAL AGE" +260 DATA "MOTIVATIONAL","CREATIVE","GROUPING","MODIFICATION" +270 DATA "ACCOUNTABILITY","PROCESS","CORE CURRICULUM","ALGORITHM" +280 DATA "PERFORMANCE","REINFORCEMENT","OPEN CLASSROOM","RESOURCE" +290 DATA "STRUCTURE","FACILITY","ENVIRONMENT" +999 PRINT "COME BACK WHEN YOU NEED HELP WITH ANOTHER REPORT!":END diff --git a/GAMES/calendar.bas b/GAMES/calendar.bas new file mode 100644 index 0000000..674488e --- /dev/null +++ b/GAMES/calendar.bas @@ -0,0 +1,58 @@ +10 PRINT TAB(32);"CALENDAR" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 REM VALUES FOR 1979 - SEE NOTES +110 DIM M(12) +120 FOR I=1 TO 6: PRINT CHR$(10);: NEXT I +130 D=1: REM 1979 STARTS ON MONDAY (0=SUN, -1=MON, -2=TUES...) +140 S=0 +150 REM READ DAYS OF EACH MONTH +160 FOR N=0 TO 12: READ M(N): NEXT N +170 REM +180 FOR N=1 TO 12 +190 PRINT: PRINT: S=S+M(N-1) +200 PRINT "**";S;TAB(7); +210 FOR I=1 TO 18: PRINT "*";: NEXT I +220 ON N GOTO 230,240,250,260,270,280,290,300,310,320,330,340 +230 PRINT " JANUARY ";: GOTO 350 +240 PRINT " FEBRUARY";: GOTO 350 +250 PRINT " MARCH ";: GOTO 350 +260 PRINT " APRIL ";: GOTO 350 +270 PRINT " MAY ";: GOTO 350 +280 PRINT " JUNE ";: GOTO 350 +290 PRINT " JULY ";: GOTO 350 +300 PRINT " AUGUST ";: GOTO 350 +310 PRINT "SEPTEMBER";: GOTO 350 +320 PRINT " OCTOBER ";: GOTO 350 +330 PRINT " NOVEMBER";: GOTO 350 +340 PRINT " DECEMBER"; +350 FOR I=1 TO 18: PRINT "*";: NEXT I +360 PRINT 365-S;"**"; +370 REM 366-S; ON LEAP YEARS +380 PRINT CHR$(10): PRINT " S M T W"; +390 PRINT " T F S" +400 PRINT +410 FOR I=1 TO 59: PRINT "*";: NEXT I +420 REM +430 FOR W=1 TO 6 +440 PRINT CHR$(10) +450 PRINT TAB(4) +460 REM +470 FOR G=1 TO 7 +480 D=D+1 +490 D2=D-S +500 IF D2>M(N) THEN 580 +510 IF D2>0 THEN PRINT D2; +520 PRINT TAB(4+8*G); +530 NEXT G +540 REM +550 IF D2=M(N) THEN 590 +560 NEXT W +570 REM +580 D=D-G +590 NEXT N +600 REM +610 FOR I=1 TO 6: PRINT CHR$(10);: NEXT I +620 DATA 0,31,28,31,30,31,30,31,31,30,31,30,31 +630 REM 0,31,29, ..., ON LEAP YEARS +640 END diff --git a/GAMES/change.bas b/GAMES/change.bas new file mode 100644 index 0000000..ac84db0 --- /dev/null +++ b/GAMES/change.bas @@ -0,0 +1,51 @@ +2 PRINT TAB(33);"CHANGE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +5 PRINT:PRINT:PRINT +6 PRINT "I, YOUR FRIENDLY MICROCOMPUTER, WILL DETERMINE" +8 PRINT "THE CORRECT CHANGE FOR ITEMS COSTING UP TO $100." +9 PRINT:PRINT +10 PRINT "COST OF ITEM";:INPUT A:PRINT "AMOUNT OF PAYMENT";:INPUT P +20 C=P-A:M=C:IF C<>0 THEN 90 +25 PRINT "CORRECT AMOUNT, THANK YOU." +30 GOTO 400 +90 IF C>0 THEN 120 +95 PRINT "SORRY, YOU HAVE SHORT-CHANGED ME $";A-P +100 GOTO 10 +120 PRINT "YOUR CHANGE, $";C +130 D=INT(C/10) +140 IF D=0 THEN 155 +150 PRINT D;"TEN DOLLAR BILL(S)" +155 C=M-(D*10) +160 E=INT(C/5) +170 IF E=0 THEN 185 +180 PRINT E;"FIVE DOLLARS BILL(S)" +185 C=M-(D*10+E*5) +190 F=INT(C) +200 IF F=0 THEN 215 +210 PRINT F;"ONE DOLLAR BILL(S)" +215 C=M-(D*10+E*5+F) +220 C=C*100 +225 N=C +230 G=INT(C/50) +240 IF G=0 THEN 255 +250 PRINT G;"ONE HALF DOLLAR(S)" +255 C=N-(G*50) +260 H=INT(C/25) +270 IF H=0 THEN 285 +280 PRINT H;"QUARTER(S)" +285 C=N-(G*50+H*25) +290 I=INT(C/10) +300 IF I=0 THEN 315 +310 PRINT I;"DIME(S)" +315 C=N-(G*50+H*25+I*10) +320 J=INT(C/5) +330 IF J=0 THEN 345 +340 PRINT J;"NICKEL(S)" +345 C=N-(G*50+H*25+I*10+J*5) +350 K=INT(C+.5) +360 IF K=0 THEN 380 +370 PRINT K;"PENNY(S)" +380 PRINT "THANK YOU, COME AGAIN." +390 PRINT:PRINT +400 GOTO 10 +410 END diff --git a/GAMES/changes.txt b/GAMES/changes.txt new file mode 100644 index 0000000..d5592c9 --- /dev/null +++ b/GAMES/changes.txt @@ -0,0 +1,175 @@ + 11111111112222222222333333333344444444445555555555666666666677777777778 +12345678901234567890123456789012345678901234567890123456789012345678901234567890 + +There were a small number of changes made to the programs in order to make them +runnable. These are apparently due to differences between original Microsoft +Basic and later versions (GW-BASIC, QBASIC). + +In all cases, the problem was that the program was taking advantage of a quirk +of original Microsoft basic, which didn't work with later versions. So the +GW-Basic/QBasic Modified sources are simply cleaner version of the originals, +and should be usable for other Basic dialects as well. + +<------------------------- THINGS THAT WERE FIXED -----------------------------> + +1. In "Sinewave" the statement: + +40 REMARKABLE .... + +Uses a trick that worked with many Basic interpreters that recognize keywords +wherever they appear, even in the middle of other words. This does not work in +GWBasic/QBasic. + +MYSTRING$ + +Are allowed, you would go crazy trying to chase down imbedded keywords. It +worked in neither GW-BASIC nor QBASIC. + +2. (various files) Spacing. + +As in example (1), it is not possible to have the statement: + +10IFC$="BARK"THENGOTO20 + +The keywords must not be run together with other keywords and variable names +(which was sometimes done to save memory space on early machines): + +10 IF C$="BARK" THEN GOTO 20 + +3. (varius files) Special characters. + +Occasionally, a special character (control character) appears in the programs. +These were REMed out. Special characters in ASCII are characters less than 32 in +value (space). + +8. In the program "hexapawn", the function fns appears before its definition, +which causes a problem with Qbasic. The lines 20 and 25 were swapped. + +9. In the program "hexapawn", line 511 uses an unterminated REM statement. Space +added. + +10. "Hexapawn" has an interesting board output routine that executes tab(10) +(line 1030) multiple times. On the original MS Basic (and other basics) tabbing +to a position that is behind or at the current position is a no-op. GW-Basic and +Qbasic actually throw another line and tabs to the position. This was fixed by +replacing: + +1030 PRINT TAB(10);MID$(P$,S((I-1)*3+J)+2,1); + +With: + +1015 PRINT TAB(10); +1020 FOR J=1 TO 3 +1030 PRINT MID$(P$,S((I-1)*3+J)+2,1); + +I.e., move the tab to print position to the outter loop, since it only need be +executed once. + +11. "hilo" makes the unwarranted assumption in line 180 that 100*rnd(1) will be +a number from 1 to 100. Actually, the number will be between 0 and 99, since +exact 0 and exact 1 will never be the result of rnd, and the fraction is +removed. Fixed by changing line 180 to: + +180 Y=INT(100*RND(1)+1) + +12. In "horserace", there is a really bazzare bit of code in lines 570 to 780 +where the value of N is used after a for n=..next loop, and apparently it +expects the value to be 8. In both IP Basic and Qbasic it isn't, but is instead +9, and this results in access to the uninitialized variable d(i) and a zero divide. + +Fixed this by adding the line: + +721 n = 8 + +13. In "salvo", line 1270, DEF FNA is executed twice, because the code loops +back to that point. On several basics this is not a nice trick, although the +original Microsoft Basic probably tolerated it. The solution was to move the +defines upwards toward the top. + +15. "bowling" does not format correctly on GW-Basic and QBasic. This is because +of the tab issue (see "hexapawn" above). The answer is to replace three existing +lines with the following ones: + +3780 PRINT: PRINT TAB(I+1); +4140 PRINT "+ "; +4320 PRINT "O "; + +16. In "awari", GW-Basic and QBasic don't apprecate the odd order of the "for" +statement at 230. This occurs because the Basic implementation is doing more +complete analysis of the Basic source while reading it, and it will get confused +if there aren't matching "next" statements for each "for" statement in the +statements following. The fix was to change the statement at 235 to: + +235 NEXT I + +Because all the line did was branch to a "NEXT I" statement. + +17. "checkers" has the "for" issue problem at 1340. The code was changed by +moving the "NEXT A" to each of the for loops on previous lines, based on the +fact that S(X,Y) is invariant in the included code. + +1340 X=R(3):Y=R(4):IF S(X,Y)=-1 THEN B=-2:FOR A=-2 TO 2 STEP 4:GOSUB 1370: NEXT A +1350 IF S(X,Y)=-2 THEN FOR A=-2 TO 2 STEP 4:FOR B=-2 TO 2 STEP 4:GOSUB 1370:NEXT B: NEXT A +1360 IF R(0)<>-99 THEN PRINT"TO"R(3);R(4);:R(0)=-99:GOTO 1240 + +18. In "qubic" (3d tic tac toe), the line 1560 attempts to run non-existant +program "menu" (and crashes/hangs GW-Basic/QBasic). Change this line to: + +1560 STOP + +19. In "qubic", the "lprint" statement is used to print out the playing board. +This is not useful unless you have a printer connected for DOS use, which is not +common with Windows users. These statements were changed to "print". + +20. "life", the program spills out endless printout, since neither GW-Basic nor +QBASIC appear to respond to control-C unless the program performs input. To fix +this, the following statement was added: + +637 INPUT "PRESS RETURN TO CONTINUE";A12 + +21. In "banner", the banner text is printed to the screen, then 75 lines of +blanks are printed to the screen. Unless your screen is more than 75 lines tall, +the program will just result in a blank screen, without apparent action. + +Banner was designed for continous print forms, like teletypes or old form feed +printers. The best use of it now would be to save the output to a file, which I +have left up to the users. + +22. In "animal", there were two "for-next" issues, lines 415 and 640. The +solution was to move the next statement to the next line. + +23. "bullfght", the lines 1390 and 1395 were swapped to remove definition order +issue. + +24. "poetry" loops forever, which locks up GW-Basic/QBasic. I added the +following line: + +237 INPUT "PRESS RETURN TO CONTINUE"; A12 + +You are free to change this to output a whole page before stopping, etc. + +25. "splat" has and error in referencing a non-existant line 540. Its wrong in +the original listing from the book, take a look. It does not appear to affect +the program run, which is probally why it exists. QBasic does not appreciate +gotos that go nowhere, so the line was replaced by: + +610 STOP: REM GOTO 540 + +26. In "stock", QBasic didn't like the lack of ";" between print items. This was +added. + +658 PRINT "YOU HAVE USED $";-C5;" MORE THAN YOU HAVE." + +<------------------------ THINGS THAT WEREN'T FIXED ---------------------------> + +1. "checkers" was seen making impossible moves, jumping a opposing player, but +leaving the original position still there (duplicated piece). + +2. "diamond" does not work quite correctly, I suspect because of the tab issue. + +3. "life2" does not match the printout in the book, which frankly does not make +much sense. It looks like the original relied on overprinting on a teletype. + +4. Animal does not work, giving incorrect printout. + +5. "life" works under GW-Basic, but not QBasic. \ No newline at end of file diff --git a/GAMES/checkers.bas b/GAMES/checkers.bas new file mode 100644 index 0000000..c8450aa --- /dev/null +++ b/GAMES/checkers.bas @@ -0,0 +1,82 @@ +5 PRINT TAB(32);"CHECKERS" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +15 PRINT:PRINT:PRINT +20 PRINT "THIS IS THE GAME OF CHECKERS. THE COMPUTER IS X," +25 PRINT "AND YOU ARE O. THE COMPUTER WILL MOVE FIRST." +30 PRINT "SQUARES ARE REFERRED TO BY A COORDINATE SYSTEM." +35 PRINT "(0,0) IS THE LOWER LEFT CORNER" +40 PRINT "(0,7) IS THE UPPER LEFT CORNER" +45 PRINT "(7,0) IS THE LOWER RIGHT CORNER" +50 PRINT "(7,7) IS THE UPPER RIGHT CORNER" +55 PRINT "THE COMPUTER WILL TYPE '+TO' WHEN YOU HAVE ANOTHER" +60 PRINT "JUMP. TYPE TWO NEGATIVE NUMBERS IF YOU CANNOT JUMP." +65 PRINT:PRINT:PRINT +80 DIM R(4),S(7,7):G=-1:R(0)=-99 +90 DATA 1,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,-1,15 +120 FOR X=0 TO 7:FOR Y=0 TO 7:READ J:IF J=15 THEN 180 +160 S(X,Y)=J:GOTO 200 +180 RESTORE:READ S(X,Y) +200 NEXT Y:NEXT X +230 FOR X=0 TO 7:FOR Y=0 TO 7:IF S(X,Y)>-1 THEN 350 +310 IF S(X,Y)=-1 THEN FOR A=-1 TO 1 STEP 2:B=G:GOSUB 650:NEXT A +330 IF S(X,Y)=-2 THEN FOR A=-1 TO 1 STEP 2:FOR B=-1 TO 1 STEP 2:GOSUB 650:NEXT B:NEXT A +350 NEXT Y:NEXT X:GOTO 1140 +650 U=X+A:V=Y+B:IF U<0 OR U>7 OR V<0 OR V>7 THEN 870 +740 IF S(U,V)=0 THEN GOSUB 910:GOTO 870 +770 IF S(U,V)<0 THEN 870 +790 U=U+A:V=V+B:IF U<0 OR V<0 OR U>7 OR V>7 THEN 870 +850 IF S(U,V)=0 THEN GOSUB 910 +870 RETURN +910 IF V=0 AND S(X,Y)=-1 THEN Q=Q+2 +920 IF ABS(Y-V)=2 THEN Q=Q+5 +960 IF Y=7 THEN Q=Q-2 +980 IF U=0 OR U=7 THEN Q=Q+1 +1030 FOR C=-1 TO 1 STEP 2:IF U+C<0 OR U+C>7 OR V+G<0 THEN 1080 +1035 IF S(U+C,V+G)<0 THEN Q=Q+1:GOTO 1080 +1040 IF U-C<0 OR U-C>7 OR V-G>7 THEN 1080 +1045 IF S(U+C,V+G)>0 AND(S(U-C,V-G)=0 OR(U-C=X AND V-G=Y)) THEN Q=Q-2 +1080 NEXT C:IF Q>R(0) THEN R(0)=Q:R(1)=X:R(2)=Y:R(3)=U:R(4)=V +1100 Q=0:RETURN +1140 IF R(0)=-99 THEN 1880 +1230 PRINT CHR$(30);"FROM";R(1);R(2);"TO";R(3);R(4);:R(0)=-99 +1240 IF R(4)=0 THEN S(R(3),R(4))=-2:GOTO 1420 +1250 S(R(3),R(4))=S(R(1),R(2)) +1310 S(R(1),R(2))=0:IF ABS(R(1)-R(3))<>2 THEN 1420 +1330 S((R(1)+R(3))/2,(R(2)+R(4))/2)=0 +1340 X=R(3):Y=R(4):IF S(X,Y)=-1 THEN B=-2:FOR A=-2 TO 2 STEP 4:GOSUB 1370: NEXT A +1350 IF S(X,Y)=-2 THEN FOR A=-2 TO 2 STEP 4:FOR B=-2 TO 2 STEP 4:GOSUB 1370:NEXT B: NEXT A +1360 IF R(0)<>-99 THEN PRINT "TO";R(3);R(4);:R(0)=-99:GOTO 1240 +1365 GOTO 1420 +1370 U=X+A:V=Y+B:IF U<0 OR U>7 OR V<0 OR V>7 THEN 1400 +1380 IF S(U,V)=0 AND S(X+A/2,Y+B/2)>0 THEN GOSUB 910 +1400 RETURN +1420 PRINT:PRINT:PRINT:FOR Y=7 TO 0 STEP-1:FOR X=0 TO 7:I=5*X:PRINT TAB(I); +1430 IF S(X,Y)=0 THEN PRINT"."; +1470 IF S(X,Y)=1 THEN PRINT"O"; +1490 IF S(X,Y)=-1 THEN PRINT"X"; +1510 IF S(X,Y)=-2 THEN PRINT"X*"; +1530 IF S(X,Y)=2 THEN PRINT"O*"; +1550 NEXT X:PRINT" ":PRINT:NEXT Y:PRINT +1552 FOR L=0 TO 7 +1554 FOR M=0 TO 7 +1556 IF S(L,M)=1 OR S(L,M)=2 THEN Z=1 +1558 IF S(L,M)=-1 OR S(L,M)=-2 THEN T=1 +1560 NEXT M +1562 NEXT L +1564 IF Z<>1 THEN 1885 +1566 IF T<>1 THEN 1880 +1570 Z=0: T=0 +1590 INPUT "FROM";E,H:X=E:Y=H:IF S(X,Y)<=0 THEN 1590 +1670 INPUT "TO";A,B:X=A:Y=B +1680 IF S(X,Y)=0 AND ABS(A-E)<=2 AND ABS(A-E)=ABS(B-H) THEN 1700 +1690 PRINT CHR$(7);CHR$(11);:GOTO 1670 +1700 I=46 +1750 S(A,B)=S(E,H):S(E,H)=0:IF ABS(E-A)<>2 THEN 1810 +1800 S((E+A)/2,(H+B)/2)=0 +1802 INPUT "+TO";A1,B1:IF A1<0 THEN 1810 +1804 IF S(A1,B1)<>0 OR ABS(A1-A)<>2 OR ABS(B1-B)<>2 THEN 1802 +1806 E=A:H=B:A=A1:B=B1:I=I+15:GOTO 1750 +1810 IF B=7 THEN S(A,B)=2 +1830 GOTO 230 +1880 PRINT: PRINT "YOU WIN.": END +1885 PRINT: PRINT "I WIN.": END diff --git a/GAMES/chemist.bas b/GAMES/chemist.bas new file mode 100644 index 0000000..cbd8f1c --- /dev/null +++ b/GAMES/chemist.bas @@ -0,0 +1,27 @@ +3 PRINT TAB(33);"CHEMIST" +6 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +8 PRINT:PRINT:PRINT +10 PRINT "THE FICTITIOUS CHECMICAL KRYPTOCYANIC ACID CAN ONLY BE" +20 PRINT "DILUTED BY THE RATIO OF 7 PARTS WATER TO 3 PARTS ACID." +30 PRINT "IF ANY OTHER RATIO IS ATTEMPTED, THE ACID BECOMES UNSTABLE" +40 PRINT "AND SOON EXPLODES. GIVEN THE AMOUNT OF ACID, YOU MUST" +50 PRINT "DECIDE WHO MUCH WATER TO ADD FOR DILUTION. IF YOU MISS" +60 PRINT "YOU FACE THE CONSEQUENCES." +100 A=INT(RND(1)*50) +110 W=7*A/3 +120 PRINT A;"LITERS OF KRYPTOCYANIC ACID. HOW MUCH WATER"; +130 INPUT R +140 D=ABS(W-R) +150 IF D>W/20 THEN 200 +160 PRINT " GOOD JOB! YOU MAY BREATHE NOW, BUT DON'T INHALE THE FUMES!" +170 PRINT +180 GOTO 100 +200 PRINT " SIZZLE! YOU HAVE JUST BEEN DESALINATED INTO A BLOB" +210 PRINT " OF QUIVERING PROTOPLASM!" +220 T=T+1 +230 IF T=9 THEN 260 +240 PRINT " HOWEVER, YOU MAY TRY AGAIN WITH ANOTHER LIFE." +250 GOTO 100 +260 PRINT " YOUR 9 LIVES ARE USED, BUT YOU WILL BE LONG REMEMBERED FOR" +270 PRINT " YOUR CONTRIBUTIONS TO THE FIELD OF COMIC BOOK CHEMISTRY." +280 END diff --git a/GAMES/chief.bas b/GAMES/chief.bas new file mode 100644 index 0000000..19efe64 --- /dev/null +++ b/GAMES/chief.bas @@ -0,0 +1,51 @@ +2 PRINT TAB(30); "CHIEF" +4 PRINT TAB(15); "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 PRINT "I AM CHIEF NUMBERS FREEK, THE GREAT INDIAN MATH GOD." +20 PRINT "ARE YOU READY TO TAKE THE TEST YOU CALLED ME OUT FOR"; +30 INPUT A$ +40 IF A$="YES" THEN 60 +50 PRINT "SHUT UP, PALE FACE WITH WISE TONGUE." +60 PRINT " TAKE A NUMBER AND ADD 3. DIVIDE THIS NUMBER BY 5 AND" +70 PRINT "MULTIPLY BY 8. DIVIDE BY 5 AND ADD THE SAME. SUBTRACT 1." +80 PRINT " WHAT DO YOU HAVE"; +90 INPUT B +100 LET C = (B+1-5)*5/8*5-3 +110 PRINT "I BET YOUR NUMBER WAS"; C; ". AM I RIGHT"; +120 INPUT D$ +130 IF D$="YES" THEN 500 +140 PRINT "WHAT WAS YOUR ORIGINAL NUMBER"; +150 INPUT K +155 LET F=K+3 +160 LET G=F/5 +170 LET H=G*8 +180 LET I=H/5+5 +190 LET J=I-1 +200 PRINT "SO YOU THINK YOU'RE SO SMART, EH?" +210 PRINT "NOW WATCH." +230 PRINT K; "PLUS 3 EQUALS"; F; ". THIS DIVIDED BY 5 EQUALS"; G; ";" +240 PRINT "THIS TIMES 8 EQUALS"; H; ". IF WE DIVIDE BY 5 AND ADD 5," +250 PRINT "WE GET"; I; ", WHICH, MINUS 1, EQUALS"; J; "." +260 PRINT "NOW DO YOU BELIEVE ME"; +270 INPUT Z$ +290 IF Z$="YES" THEN 500 +295 PRINT "YOU HAVE MADE ME MAD!!!" +300 PRINT "THERE MUST BE A GREAT LIGHTNING BOLT!" +310 PRINT:PRINT +330 FOR X=30 TO 22 STEP -1 +340 PRINT TAB(X); "X X" +350 NEXT X +360 PRINT TAB(21); "X XXX" +370 PRINT TAB(20); "X X" +380 PRINT TAB(19); "XX X" +390 FOR Y=20 TO 13 STEP -1 +400 PRINT TAB(Y); "X X" +410 NEXT Y +420 PRINT TAB(12); "XX" +430 PRINT TAB(11); "X" +440 PRINT TAB(10); "*" +450 PRINT:PRINT"#########################":PRINT +470 PRINT "I HOPE YOU BELIEVE ME NOW, FOR YOUR SAKE!!" +480 GOTO 520 +510 PRINT "BYE!!!" +520 END diff --git a/GAMES/chomp.bas b/GAMES/chomp.bas new file mode 100644 index 0000000..26d0296 --- /dev/null +++ b/GAMES/chomp.bas @@ -0,0 +1,104 @@ +10 PRINT TAB(33);"CHOMP" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 DIM A(10,10) +100 REM *** THE GAME OF CHOMP *** COPYRIGHT PCC 1973 *** +110 PRINT +120 PRINT "THIS IS THE GAME OF CHOMP (SCIENTIFIC AMERICAN, JAN 1973)" +130 PRINT "DO YOU WANT THE RULES (1=YES, 0=NO!)"; +140 INPUT R +150 IF R=0 THEN 340 +160 F=1 +170 R=5 +180 C=7 +190 PRINT "CHOMP IS FOR 1 OR MORE PLAYERS (HUMANS ONLY)." +200 PRINT +210 PRINT "HERE'S HOW A BOARD LOOKS (THIS ONE IS 5 BY 7):" +220 GOSUB 540 +230 PRINT +240 PRINT "THE BOARD IS A BIG COOKIE - R ROWS HIGH AND C COLUMNS" +250 PRINT "WIDE. YOU INPUT R AND C AT THE START. IN THE UPPER LEFT" +260 PRINT "CORNER OF THE COOKIE IS A POISON SQUARE (P). THE ONE WHO" +270 PRINT "CHOMPS THE POISON SQUARE LOSES. TO TAKE A CHOMP, TYPE THE" +280 PRINT "ROW AND COLUMN OF ONE OF THE SQUARES ON THE COOKIE." +290 PRINT "ALL OF THE SQUARES BELOW AND TO THE RIGHT OF THAT SQUARE" +300 PRINT "(INCLUDING THAT SQUARE, TOO) DISAPPEAR -- CHOMP!!" +310 PRINT "NO FAIR CHOMPING SQUARES THAT HAVE ALREADY BEEN CHOMPED," +320 PRINT "OR THAT ARE OUTSIDE THE ORIGINAL DIMENSIONS OF THE COOKIE." +330 PRINT +340 PRINT "HERE WE GO..." +350 REM +360 F=0 +370 FOR I=1 TO 10 +372 FOR J=1 TO 10 +375 A(I,J)=0 +377 NEXT J +379 NEXT I +380 PRINT +390 PRINT "HOW MANY PLAYERS"; +400 INPUT P +410 I1=0 +420 PRINT "HOW MANY ROWS"; +430 INPUT R +440 IF R <= 9 THEN 470 +450 PRINT "TOO MANY ROWS (9 IS MAXIMUM). NOW, "; +460 GOTO 420 +470 PRINT "HOW MANY COLUMNS"; +480 INPUT C +490 IF C <= 9 THEN 530 +500 PRINT "TOO MANY COLUMNS (9 IS MAXIMUM). NOW, "; +510 GOTO 470 +530 PRINT +540 FOR I=1 TO R +550 FOR J=1 TO C +560 A(I,J)=1 +570 NEXT J +580 NEXT I +590 A(1,1)=-1 +600 REM PRINT THE BOARD +610 PRINT +620 PRINT TAB(7);"1 2 3 4 5 6 7 8 9" +630 FOR I=1 TO R +640 PRINT I;TAB(7); +650 FOR J=1 TO C +660 IF A(I,J)=-1 THEN 700 +670 IF A(I,J)=0 THEN 720 +680 PRINT "* "; +690 GOTO 710 +700 PRINT "P "; +710 NEXT J +720 PRINT +730 NEXT I +740 PRINT +750 IF F=0 THEN 770 +760 RETURN +770 REM GET CHOMPS FOR EACH PLAYER IN TURN +780 LET I1=I1+1 +790 LET P1=I1-INT(I1/P)*P +800 IF P1 <> 0 THEN 820 +810 P1=P +820 PRINT "PLAYER";P1 +830 PRINT "COORDINATES OF CHOMP (ROW,COLUMN)"; +840 INPUT R1,C1 +850 IF R1<1 THEN 920 +860 IF R1>R THEN 920 +870 IF C1<1 THEN 920 +880 IF C1>C THEN 920 +890 IF A(R1,C1)=0 THEN 920 +900 IF A(R1,C1)=-1 THEN 1010 +910 GOTO 940 +920 PRINT "NO FAIR. YOU'RE TRYING TO CHOMP ON EMPTY SPACE!" +930 GOTO 820 +940 FOR I=R1 TO R +950 FOR J=C1 TO C +960 A(I,J)=0 +970 NEXT J +980 NEXT I +990 GOTO 610 +1000 REM END OF GAME DETECTED IN LINE 900 +1010 PRINT "YOU LOSE, PLAYER";P1 +1020 PRINT +1030 PRINT "AGAIN (1=YES, 0=NO!)"; +1040 INPUT R$ +1050 IF R=1 THEN 340 +1060 END diff --git a/GAMES/combat.bas b/GAMES/combat.bas new file mode 100644 index 0000000..a429349 --- /dev/null +++ b/GAMES/combat.bas @@ -0,0 +1,124 @@ +1 PRINT TAB(33);"COMBAT" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT: PRINT: PRINT +4 PRINT "I AM AT WAR WITH YOU.": PRINT "WE HAVE 72000 SOLDIERS APIECE." +5 PRINT:PRINT "DISTRIBUTE YOUR FORCES." +6 PRINT ,"ME"," YOU" +7 PRINT "ARMY",30000, +8 INPUT A +9 PRINT "NAVY",20000, +10 INPUT B +11 PRINT "A. F.",22000, +12 INPUT C +13 IF A+B+C>72000 THEN 5 +14 D=30000 +15 E=20000 +16 F=22000 +17 PRINT "YOU ATTACK FIRST. TYPE (1) FOR ARMY; (2) FOR NAVY;" +18 PRINT "AND (3) FOR AIR FORCE." +19 INPUT Y +20 PRINT "HOW MANY MEN" +21 INPUT X +22 IF X<0 THEN 20 +23 ON Y GOTO 100,200,300 +100 IF X>A THEN 20 +105 IF XB THEN 20 +210 IF XC THEN 20 +310 IF XA THEN 1030 +1610 IF TB THEN 1030 +1710 IF TC THEN 1030 +1810 IF T>F/2 THEN 1830 +1820 GOTO 1850 +1830 PRINT "MY NAVY AND AIR FORCE IN A COMBINED ATTACK LEFT" +1831 PRINT "YOUR COUNTRY IN SHAMBLES." +1835 A=A/3 +1837 B=B/3 +1840 C=C/3 +1845 GOTO 2000 +1850 PRINT "ONE OF YOUR PLANES CRASHED INTO MY HOUSE. I AM DEAD." +1851 PRINT "MY COUNTRY FELL APART." +1860 GOTO 2010 +2000 PRINT +2001 PRINT "FROM THE RESULTS OF BOTH OF YOUR ATTACKS," +2002 IF A+B+C>3/2*(D+E+F) THEN 2010 +2005 IF A+B+C<2/3*(D+E+F) THEN 2015 +2006 PRINT "THE TREATY OF PARIS CONCLUDED THAT WE TAKE OUR" +2007 PRINT "RESPECTIVE COUNTRIES AND LIVE IN PEACE." +2008 GOTO 2020 +2010 PRINT "YOU WON, OH! SHUCKS!!!!" +2012 GOTO 2020 +2015 PRINT "YOU LOST-I CONQUERED YOUR COUNTRY. IT SERVES YOU" +2016 PRINT "RIGHT FOR PLAYING THIS STUPID GAME!!!" +2020 END diff --git a/GAMES/craps.bas b/GAMES/craps.bas new file mode 100644 index 0000000..741cf09 --- /dev/null +++ b/GAMES/craps.bas @@ -0,0 +1,82 @@ +5 PRINT TAB(33);"CRAPS" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +12 PRINT:PRINT:PRINT +15 LET R=0 +20 PRINT"2,3,12 ARE LOSERS; 4,5,6,8,9,10 ARE POINTS; 7,11 ARE NATURAL WINNERS." +21 LET T=1 +22 PRINT "PICK A NUMBER AND INPUT TO ROLL DICE"; +23 INPUT Z +24 LET X=(RND(0)) +25 LET T =T+1 +26 IF T<=Z GOTO 24 +27 PRINT"INPUT THE AMOUNT OF YOUR WAGER."; +28 INPUT F +30 PRINT "I WILL NOW THROW THE DICE" +40 LET E=INT(7*RND(1)) +41 LET S=INT(7*RND(1)) +42 LET X=E+S +50 IF X=7 GOTO 180 +55 IF X=11 GOTO 180 +60 IF X=1 GOTO 40 +62 IF X=2 GOTO 195 +65 IF X=0 GOTO 40 +70 IF X=2 GOTO 200 +80 IF X=3 GOTO 200 +90 IF X=12 GOTO 200 +125 IF X=5 GOTO 220 +130 IF X =6 GOTO 220 +140 IF X=8 GOTO 220 +150 IF X=9 GOTO 220 +160 IF X =10 GOTO 220 +170 IF X=4 GOTO 220 +180 PRINT X; "- NATURAL....A WINNER!!!!" +185 PRINT X; "PAYS EVEN MONEY, YOU WIN"; F; "DOLLARS" +190 GOTO 210 +195 PRINT X; "- SNAKE EYES....YOU LOSE." +196 PRINT "YOU LOSE"; F; "DOLLARS." +197 LET F=0-F +198 GOTO 210 +200 PRINT X; " - CRAPS...YOU LOSE." +205 PRINT "YOU LOSE"; F; "DOLLARS." +206 LET F=0-F +210 LET R= R+F +211 GOTO 320 +220 PRINT X; "IS THE POINT. I WILL ROLL AGAIN" +230 LET H=INT(7*RND(1)) +231 LET Q=INT(7*RND(1)) +232 LET O=H+Q +240 IF O=1 GOTO 230 +250 IF O=7 GOTO 290 +255 IF O=0 GOTO 230 +260 IF O=X GOTO 310 +270 PRINT O; " - NO POINT. I WILL ROLL AGAIN" +280 GOTO 230 +290 PRINT O; "- CRAPS. YOU LOSE." +291 PRINT "YOU LOSE $"; F +292 F=0-F +293 GOTO 210 +300 GOTO 320 +310 PRINT X; "- A WINNER.........CONGRATS!!!!!!!!" +311 PRINT X; "AT 2 TO 1 ODDS PAYS YOU...LET ME SEE..."; 2*F; "DOLLARS" +312 LET F=2*F +313 GOTO 210 +320 PRINT " IF YOU WANT TO PLAY AGAIN PRINT 5 IF NOT PRINT 2"; +330 INPUT M +331 IF R<0 GOTO 334 +332 IF R>0 GOTO 336 +333 IF R=0 GOTO 338 +334 PRINT "YOU ARE NOW UNDER $";-R +335 GOTO 340 +336 PRINT "YOU ARE NOW AHEAD $";R +337 GOTO 340 +338 PRINT "YOU ARE NOW EVEN AT 0" +340 IF M=5 GOTO 27 +341 IF R<0 GOTO 350 +342 IF R>0 GOTO 353 +343 IF R=0 GOTO 355 +350 PRINT"TOO BAD, YOU ARE IN THE HOLE. COME AGAIN." +351 GOTO 360 +353 PRINT"CONGRATULATIONS---YOU CAME OUT A WINNER. COME AGAIN!" +354 GOTO 360 +355 PRINT"CONGRATULATIONS---YOU CAME OUT EVEN, NOT BAD FOR AN AMATEUR" +360 END diff --git a/GAMES/cube.bas b/GAMES/cube.bas new file mode 100644 index 0000000..e661ab6 --- /dev/null +++ b/GAMES/cube.bas @@ -0,0 +1,161 @@ +10 PRINT TAB(34);"CUBE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT : PRINT : PRINT +100 PRINT "DO YOU WANT TO SEE THE INSTRUCTIONS? (YES--1,NO--0)" +110 INPUT B7 +120 IF B7=0 THEN 370 +130 PRINT"THIS IS A GAME IN WHICH YOU WILL BE PLAYING AGAINST THE" +140 PRINT"RANDOM DECISION OF THE COMPUTER. THE FIELD OF PLAY IS A" +150 PRINT"CUBE OF SIDE 3. ANY OF THE 27 LOCATIONS CAN BE DESIGNATED" +160 PRINT"BY INPUTING THREE NUMBERS SUCH AS 2,3,1. AT THE START," +170 PRINT"YOU ARE AUTOMATICALLY AT LOCATION 1,1,1. THE OBJECT OF" +180 PRINT"THE GAME IS TO GET TO LOCATION 3,3,3. ONE MINOR DETAIL:" +190 PRINT"THE COMPUTER WILL PICK, AT RANDOM, 5 LOCATIONS AT WHICH" +200 PRINT"IT WILL PLANT LAND MINES. IF YOU HIT ONE OF THESE LOCATIONS" +210 PRINT"YOU LOSE. ONE OTHER DETAIL: YOU MAY MOVE ONLY ONE SPACE " +220 PRINT"IN ONE DIRECTION EACH MOVE. FOR EXAMPLE: FROM 1,1,2 YOU" +230 PRINT"MAY MOVE TO 2,1,2 OR 1,1,3. YOU MAY NOT CHANGE" +240 PRINT"TWO OF THE NUMBERS ON THE SAME MOVE. IF YOU MAKE AN ILLEGAL" +250 PRINT"MOVE, YOU LOSE AND THE COMPUTER TAKES THE MONEY YOU MAY" +260 PRINT"HAVE BET ON THAT ROUND." +270 PRINT +280 PRINT +290 PRINT"ALL YES OR NO QUESTIONS WILL BE ANSWERED BY A 1 FOR YES" +300 PRINT"OR A 0 (ZERO) FOR NO." +310 PRINT +320 PRINT"WHEN STATING THE AMOUNT OF A WAGER, PRINT ONLY THE NUMBER" +330 PRINT"OF DOLLARS (EXAMPLE: 250) YOU ARE AUTOMATICALLY STARTED WITH" +340 PRINT"500 DOLLARS IN YOUR ACCOUNT." +350 PRINT +360 PRINT "GOOD LUCK!" +370 LET A1=500 +380 LET A=INT(3*(RND(X))) +390 IF A<>0 THEN 410 +400 LET A=3 +410 LET B=INT(3*(RND(X))) +420 IF B<>0 THEN 440 +430 LET B=2 +440 LET C=INT(3*(RND(X))) +450 IF C<>0 THEN 470 +460 LET C=3 +470 LET D=INT(3*(RND(X))) +480 IF D<>0 THEN 500 +490 LET D=1 +500 LET E=INT(3*(RND(X))) +510 IF E<>0 THEN 530 +520 LET E=3 +530 LET F=INT(3*(RND(X))) +540 IF F<>0 THEN 560 +550 LET F=3 +560 LET G=INT(3*(RND(X))) +570 IF G<>0 THEN 590 +580 LET G=3 +590 LET H=INT(3*(RND(X))) +600 IF H<>0 THEN 620 +610 LET H=3 +620 LET I=INT(3*(RND(X))) +630 IF I<>0 THEN 650 +640 LET I=2 +650 LET J=INT(3*(RND(X))) +660 IF J<>0 THEN 680 +670 LET J=3 +680 LET K=INT(3*(RND(X))) +690 IF K<>0 THEN 710 +700 LET K=2 +710 LET L=INT(3*(RND(X))) +720 IF L<>0 THEN 740 +730 LET L=3 +740 LET M=INT(3*(RND(X))) +750 IF M<>0 THEN 770 +760 LET M=3 +770 LET N=INT(3*(RND(X))) +780 IF N<>0 THEN 800 +790 LET N=1 +800 LET O=INT (3*(RND(X))) +810 IF O <>0 THEN 830 +820 LET O=3 +830 PRINT "WANT TO MAKE A WAGER?" +840 INPUT Z +850 IF Z=0 THEN 920 +860 PRINT "HOW MUCH "; +870 INPUT Z1 +876 IF A1W+1 THEN 1030 +950 IF P=W+1 THEN 1000 +960 IF Q>X+1 THEN 1030 +970 IF Q=(X+1) THEN 1010 +980 IF R >(Y+1) THEN 1030 +990 GOTO 1050 +1000 IF Q>= X+1 THEN 1030 +1010 IF R>=Y+1 THEN 1030 +1020 GOTO 1050 +1030 PRINT:PRINT "ILLEGAL MOVE. YOU LOSE." +1040 GOTO 1440 +1050 LET W=P +1060 LET X=Q +1070 LET Y=R +1080 IF P=3 THEN 1100 +1090 GOTO 1130 +1100 IF Q=3 THEN 1120 +1110 GOTO 1130 +1120 IF R=3 THEN 1530 +1130 IF P=A THEN 1150 +1140 GOTO 1180 +1150 IF Q=B THEN 1170 +1160 GOTO 1180 +1170 IF R=C THEN 1400 +1180 IF P=D THEN 1200 +1190 GOTO 1230 +1200 IF Q=E THEN 1220 +1210 GOTO 1230 +1220 IF R=F THEN 1400 +1230 IF P=G THEN 1250 +1240 GOTO 1280 +1250 IF Q=H THEN 1270 +1260 GOTO 1280 +1270 IF R=I THEN 1400 +1280 IF P=J THEN 1300 +1290 GOTO 1330 +1300 IF Q=K THEN 1320 +1310 GOTO 1330 +1320 IF R=L THEN 1440 +1330 IF P=M THEN 1350 +1340 GOTO 1380 +1350 IF Q=N THEN 1370 +1360 GOTO 1380 +1370 IF R=O THEN 1400 +1380 PRINT "NEXT MOVE: "; +1390 GOTO 930 +1400 PRINT"******BANG******" +1410 PRINT "YOU LOSE!" +1420 PRINT +1430 PRINT +1440 IF Z=0 THEN 1580 +1450 PRINT +1460 LET Z2=A1-Z1 +1470 IF Z2>0 THEN 1500 +1480 PRINT "YOU BUST." +1490 GOTO 1610 +1500 PRINT " YOU NOW HAVE"; Z2; "DOLLARS." +1510 LET A1=Z2 +1520 GOTO 1580 +1522 PRINT"TRIED TO FOOL ME; BET AGAIN"; +1525 GOTO 870 +1530 PRINT"CONGRATULATIONS!" +1540 IF Z=0 THEN 1580 +1550 LET Z2=A1+Z1 +1560 PRINT "YOU NOW HAVE"; Z2;"DOLLARS." +1570 LET A1=Z2 +1580 PRINT"DO YOU WANT TO TRY AGAIN "; +1590 INPUT S +1600 IF S=1 THEN 380 +1610 PRINT "TOUGH LUCK!" +1620 PRINT +1630 PRINT "GOODBYE." +1640 END diff --git a/GAMES/depthchg.bas b/GAMES/depthchg.bas new file mode 100644 index 0000000..0b58467 --- /dev/null +++ b/GAMES/depthchg.bas @@ -0,0 +1,33 @@ +2 PRINT TAB(30);"DEPTH CHARGE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +20 INPUT "DIMENSION OF SEARCH AREA";G: PRINT +30 N=INT(LOG(G)/LOG(2))+1 +40 PRINT "YOU ARE THE CAPTAIN OF THE DESTROYER USS COMPUTER" +50 PRINT "AN ENEMY SUB HAS BEEN CAUSING YOU TROUBLE. YOUR" +60 PRINT "MISSION IS TO DESTROY IT. YOU HAVE";N;"SHOTS." +70 PRINT "SPECIFY DEPTH CHARGE EXPLOSION POINT WITH A" +80 PRINT "TRIO OF NUMBERS -- THE FIRST TWO ARE THE" +90 PRINT "SURFACE COORDINATES; THE THIRD IS THE DEPTH." +100 PRINT : PRINT "GOOD LUCK !": PRINT +110 A=INT(G*RND(1)) : B=INT(G*RND(1)) : C=INT(G*RND(1)) +120 FOR D=1 TO N : PRINT : PRINT "TRIAL #";D; : INPUT X,Y,Z +130 IF ABS(X-A)+ABS(Y-B)+ABS(Z-C)=0 THEN 300 +140 GOSUB 500 : PRINT : NEXT D +200 PRINT : PRINT "YOU HAVE BEEN TORPEDOED! ABANDON SHIP!" +210 PRINT "THE SUBMARINE WAS AT";A;",";B;",";C : GOTO 400 +300 PRINT : PRINT "B O O M ! ! YOU FOUND IT IN";D;"TRIES!" +400 PRINT : PRINT: INPUT "ANOTHER GAME (Y OR N)";A$ +410 IF A$="Y" THEN 100 +420 PRINT "OK. HOPE YOU ENJOYED YOURSELF." : GOTO 600 +500 PRINT "SONAR REPORTS SHOT WAS "; +510 IF Y>B THEN PRINT "NORTH"; +520 IF YA THEN PRINT "EAST"; +540 IF XB OR X<>A THEN PRINT " AND"; +560 IF Z>C THEN PRINT " TOO LOW." +570 IF ZLEN(A$) THEN PRINT "!";:GOTO 50 +34 PRINT MID$(A$,C,1); +36 C=C+1 +50 NEXT A +53 IF M=Q THEN 60 +55 PRINT TAB(R*M+(R-N)/2); +56 NEXT M +60 PRINT +70 NEXT N +83 IF X<>1 THEN 95 +85 X=R-2:Y=1:Z=-2 +90 GOTO 20 +95 NEXT L +99 END diff --git a/GAMES/dice.bas b/GAMES/dice.bas new file mode 100644 index 0000000..b74bf72 --- /dev/null +++ b/GAMES/dice.bas @@ -0,0 +1,31 @@ +2 PRINT TAB(34);"DICE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 DIM F(12) +20 REM DANNY FREIDUS +30 PRINT "THIS PROGRAM SIMULATES THE ROLLING OF A" +40 PRINT "PAIR OF DICE." +50 PRINT "YOU ENTER THE NUMBER OF TIMES YOU WANT THE COMPUTER TO" +60 PRINT "'ROLL' THE DICE. WATCH OUT, VERY LARGE NUMBERS TAKE" +70 PRINT "A LONG TIME. IN PARTICULAR, NUMBERS OVER 5000." +80 FOR Q=1 TO 12 +90 F(Q)=0 +100 NEXT Q +110 PRINT:PRINT "HOW MANY ROLLS"; +120 INPUT X +130 FOR S=1 TO X +140 A=INT(6*RND(1)+1) +150 B=INT(6*RND(1)+1) +160 R=A+B +170 F(R)=F(R)+1 +180 NEXT S +185 PRINT +190 PRINT "TOTAL SPOTS","NUMBER OF TIMES" +200 FOR V=2 TO 12 +210 PRINT V,F(V) +220 NEXT V +221 PRINT +222 PRINT:PRINT "TRY AGAIN"; +223 INPUT Z$ +224 IF Z$="YES" THEN 80 +240 END diff --git a/GAMES/digits.bas b/GAMES/digits.bas new file mode 100644 index 0000000..76fbbaf --- /dev/null +++ b/GAMES/digits.bas @@ -0,0 +1,78 @@ +10 PRINT TAB(33);"DIGITS" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +210 PRINT "THIS IS A GAME OF GUESSING." +220 PRINT "FOR INSTRUCTIONS, TYPE '1', ELSE TYPE '0'"; +230 INPUT E +240 IF E=0 THEN 360 +250 PRINT +260 PRINT "PLEASE TAKE A PIECE OF PAPER AND WRITE DOWN" +270 PRINT "THE DIGITS '0', '1', OR '2' THIRTY TIMES AT RANDOM." +280 PRINT "ARRANGE THEM IN THREE LINES OF TEN DIGITS EACH." +290 PRINT "I WILL ASK FOR THEN TEN AT A TIME." +300 PRINT "I WILL ALWAYS GUESS THEM FIRST AND THEN LOOK AT YOUR" +310 PRINT "NEXT NUMBER TO SEE IF I WAS RIGHT. BY PURE LUCK," +320 PRINT "I OUGHT TO BE RIGHT TEN TIMES. BUT I HOPE TO DO BETTER" +330 PRINT "THAN THAT *****" +340 PRINT:PRINT +360 READ A,B,C +370 DATA 0,1,3 +380 DIM M(26,2),K(2,2),L(8,2) +400 FOR I=0 TO 26: FOR J=0 TO 2: M(I,J)=1: NEXT J: NEXT I +410 FOR I=0 TO 2: FOR J=0 TO 2: K(I,J)=9: NEXT J: NEXT I +420 FOR I=0 TO 8: FOR J=0 TO 2: L(I,J)=3: NEXT J: NEXT I +450 L(0,0)=2: L(4,1)=2: L(8,2)=2 +480 Z=26: Z1=8: Z2=2 +510 X=0 +520 FOR T=1 TO 3 +530 PRINT +540 PRINT "TEN NUMBERS, PLEASE"; +550 INPUT N(1),N(2),N(3),N(4),N(5),N(6),N(7),N(8),N(9),N(10) +560 FOR I=1 TO 10 +570 W=N(I)-1 +580 IF W=SGN(W) THEN 620 +590 PRINT "ONLY USE THE DIGITS '0', '1', OR '2'." +600 PRINT "LET'S TRY AGAIN.":GOTO 530 +620 NEXT I +630 PRINT: PRINT "MY GUESS","YOUR NO.","RESULT","NO. RIGHT":PRINT +660 FOR U=1 TO 10 +670 N=N(U): S=0 +690 FOR J=0 TO 2 +700 S1=A*K(Z2,J)+B*L(Z1,J)+C*M(Z,J) +710 IF S>S1 THEN 760 +720 IF S10 THEN 980 +940 IF X<10 THEN 1010 +950 PRINT "I GUESSED EXACTLY 1/3 OF YOUR NUMBERS." +960 PRINT "IT'S A TIE GAME." +970 GOTO 1030 +980 PRINT "I GUESSED MORE THAN 1/3 OF YOUR NUMBERS." +990 PRINT "I WIN.": FOR Q=1 TO 10: PRINT CHR$(7);: NEXT Q +1000 GOTO 1030 +1010 PRINT "I GUESSED LESS THAN 1/3 OF YOUR NUMBERS." +1020 PRINT "YOU BEAT ME. CONGRATULATIONS *****" +1030 PRINT +1040 PRINT "DO YOU WANT TO TRY AGAIN (1 FOR YES, 0 FOR NO)"; +1060 INPUT X +1070 IF X=1 THEN 400 +1080 PRINT:PRINT "THANKS FOR THE GAME." +1090 END diff --git a/GAMES/evenwin1.bas b/GAMES/evenwin1.bas new file mode 100644 index 0000000..b1d0365 --- /dev/null +++ b/GAMES/evenwin1.bas @@ -0,0 +1,128 @@ +1 PRINT TAB(31);"EVEN WINS" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT +4 Y1=0 +10 M1=0 +20 DIM M(20),Y(20) +30 PRINT " THIS IS A TWO PERSON GAME CALLED 'EVEN WINS.'" +40 PRINT "TO PLAY THE GAME, THE PLAYERS NEED 27 MARBLES OR" +50 PRINT "OTHER OBJECTS ON A TABLE." +60 PRINT +70 PRINT +80 PRINT " THE 2 PLAYERS ALTERNATE TURNS, WITH EACH PLAYER" +90 PRINT "REMOVING FROM 1 TO 4 MARBLES ON EACH MOVE. THE GAME" +100 PRINT "ENDS WHEN THERE ARE NO MARBLES LEFT, AND THE WINNER" +110 PRINT "IS THE ONE WITH AN EVEN NUMBER OF MARBLES." +120 PRINT +130 PRINT +140 PRINT " THE ONLY RULES ARE THAT (1) YOU MUST ALTERNATE TURNS," +150 PRINT "(2) YOU MUST TAKE BETWEEN 1 AND 4 MARBLES EACH TURN," +160 PRINT "AND (3) YOU CANNOT SKIP A TURN." +170 PRINT +180 PRINT +190 PRINT +200 PRINT " TYPE A '1' IF YOU WANT TO GO FIRST, AND TYPE" +210 PRINT "A '0' IF YOU WANT ME TO GO FIRST." +220 INPUT C +225 PRINT +230 IF C=0 THEN 250 +240 GOTO 1060 +250 T=27 +260 M=2 +270 PRINT:PRINT "TOTAL=";T:PRINT +280 M1=M1+M +290 T=T-M +300 PRINT "I PICK UP";M;"MARBLES." +310 IF T=0 THEN 880 +320 PRINT:PRINT "TOTAL=";T +330 PRINT +340 PRINT " AND WHAT IS YOUR NEXT MOVE, MY TOTAL IS";M1 +350 INPUT Y +360 PRINT +370 IF Y<1 THEN 1160 +380 IF Y>4 THEN 1160 +390 IF Y<=T THEN 430 +400 PRINT " YOU HAVE TRIED TO TAKE MORE MARBLES THAN THERE ARE" +410 PRINT "LEFT. TRY AGAIN." +420 GOTO 350 +430 Y1=Y1+Y +440 T=T-Y +450 IF T=0 THEN 880 +460 PRINT "TOTAL=";T +470 PRINT +480 PRINT "YOUR TOTAL IS";Y1 +490 IF T<.5 THEN 880 +500 R=T-6*INT(T/6) +510 IF INT(Y1/2)=Y1/2 THEN 700 +520 IF T<4.2 THEN 580 +530 IF R>3.4 THEN 620 +540 M=R+1 +550 M1=M1+M +560 T=T-M +570 GOTO 300 +580 M=T +590 T=T-M +600 GOTO 830 +610 REM 250 IS WHERE I WIN. +620 IF R<4.7 THEN 660 +630 IF R>3.5 THEN 660 +640 M=1 +650 GOTO 670 +660 M=4 +670 T=T-M +680 M1=M1+M +690 GOTO 300 +700 REM I AM READY TO ENCODE THE STRAT FOR WHEN OPP TOT IS EVEN +710 IF R<1.5 THEN 1020 +720 IF R>5.3 THEN 1020 +730 M=R-1 +740 M1=M1+M +750 T=T-M +760 IF T<.2 THEN 790 +770 REM IS # ZERO HERE +780 GOTO 300 +790 REM IS = ZERO HERE +800 PRINT "I PICK UP";M;"MARBLES." +810 PRINT +820 GOTO 880 +830 REM THIS IS WHERE I WIN +840 PRINT "I PICK UP";M;"MARBLES." +850 PRINT +860 PRINT "TOTAL = 0" +870 M1=M1+M +880 PRINT "THAT IS ALL OF THE MARBLES." +890 PRINT +900 PRINT " MY TOTAL IS";M1;", YOUR TOTAL IS";Y1 +910 PRINT +920 IF INT(M1/2)=M1/2 THEN 950 +930 PRINT " YOU WON. DO YOU WANT TO PLAY" +940 GOTO 960 +950 PRINT " I WON. DO YOU WANT TO PLAY" +960 PRINT "AGAIN? TYPE 1 FOR YES AND 0 FOR NO." +970 INPUT A1 +980 IF A1=0 THEN 1030 +990 M1=0 +1000 Y1=0 +1010 GOTO 200 +1020 GOTO 640 +1030 PRINT +1040 PRINT "OK. SEE YOU LATER." +1050 GOTO 1230 +1060 T=27 +1070 PRINT +1080 PRINT +1090 PRINT +1100 PRINT "TOTAL=";T +1110 PRINT +1120 PRINT +1130 PRINT "WHAT IS YOUR FIRST MOVE"; +1140 INPUT Y +1150 GOTO 360 +1160 PRINT +1170 PRINT "THE NUMBER OF MARBLES YOU TAKE MUST BE A POSITIVE" +1180 PRINT "INTEGER BETWEEN 1 AND 4." +1190 PRINT +1200 PRINT " WHAT IS YOUR NEXT MOVE?" +1210 PRINT +1220 GOTO 350 +1230 END diff --git a/GAMES/evenwin2.bas b/GAMES/evenwin2.bas new file mode 100644 index 0000000..673dcc9 --- /dev/null +++ b/GAMES/evenwin2.bas @@ -0,0 +1,70 @@ +1 PRINT TAB(28);"GAME OF EVEN WINS" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT +4 INPUT "DO YOU WANT INSTRUCTIONS (YES OR NO)";A$:PRINT +5 IF A$="NO" THEN 20 +6 PRINT "THE GAME IS PLAYED AS FOLLOWS:":PRINT +7 PRINT "AT THE BEGINNING OF THE GAME, A RANDOM NUMBER OF CHIPS ARE" +8 PRINT "PLACED ON THE BOARD. THE NUMBER OF CHIPS ALWAYS STARTS" +9 PRINT "AS AN ODD NUMBER. ON EACH TURN, A PLAYER MUST TAKE ONE," +10 PRINT "TWO, THREE, OR FOUR CHIPS. THE WINNER IS THE PLAYER WHO" +11 PRINT "FINISHES WITH A TOTAL NUMBER OF CHIPS THAT IS EVEN." +12 PRINT "THE COMPUTER STARTS OUT KNOWING ONLY THE RULES OF THE" +13 PRINT "GAME. IT GRADUALLY LEARNS TO PLAY WELL. IT SHOULD BE" +14 PRINT "DIFFICULT TO BEAT THE COMPUTER AFTER TWENTY GAMES IN A ROW." +15 PRINT "TRY IT!!!!": PRINT +16 PRINT "TO QUIT AT ANY TIME, TYPE A '0' AS YOUR MOVE.": PRINT +20 DIM R(1,5) +25 L=0: B=0 +30 FOR I=0 TO 5 +40 R(1,I)=4 +50 R(0,I)=4 +60 NEXT I +70 A=0: B=0 +90 P=INT((13*RND(1)+9)/2)*2+1 +100 IF P=1 THEN 530 +110 PRINT "THERE ARE";P;"CHIPS ON THE BOARD." +120 E1=E +130 L1=L +140 E=(A/2-INT(A/2))*2 +150 L=INT((P/6-INT(P/6))*6+.5) +160 IF R(E,L)>=P THEN 320 +170 M=R(E,L) +180 IF M<=0 THEN 370 +190 P=P-M +200 IF M=1 THEN 510 +210 PRINT "COMPUTER TAKES";M;"CHIPS LEAVING";P;"... YOUR MOVE"; +220 B=B+M +230 INPUT M +240 M=INT(M) +250 IF M<1 THEN 450 +260 IF M>4 THEN 460 +270 IF M>P THEN 460 +280 IF M=P THEN 360 +290 P=P-M +300 A=A+M +310 GOTO 100 +320 IF P=1 THEN 550 +330 PRINT "COMPUTER TAKES";P;"CHIPS." +340 R(E,L)=P +350 B=B+P +360 IF B/2=INT(B/2) THEN 420 +370 PRINT "GAME OVER ... YOU WIN!!!": PRINT +390 IF R(E,L)=1 THEN 480 +400 R(E,L)=R(E,L)-1 +410 GOTO 70 +420 PRINT "GAME OVER ... I WIN!!!": PRINT +430 GOTO 70 +450 IF M=0 THEN 570 +460 PRINT M;"IS AN ILLEGAL MOVE ... YOUR MOVE"; +470 GOTO 230 +480 IF R(E1,L1)=1 THEN 70 +490 R(E1,L1)=R(E1,L1)-1 +500 GOTO 70 +510 PRINT "COMPUTER TAKES 1 CHIP LEAVING";P;"... YOUR MOVE"; +520 GOTO 220 +530 PRINT "THERE IS 1 CHIP ON THE BOARD." +540 GOTO 120 +550 PRINT "COMPUTER TAKES 1 CHIP." +560 GOTO 340 +570 END diff --git a/GAMES/flipflop.bas b/GAMES/flipflop.bas new file mode 100644 index 0000000..38d5987 --- /dev/null +++ b/GAMES/flipflop.bas @@ -0,0 +1,79 @@ +2 PRINT TAB(32);"FLIPFLOP" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT +10 REM *** CREATED BY MICHAEL CASS +15 DIM A$(20) +20 PRINT "THE OBJECT OF THIS PUZZLE IS TO CHANGE THIS:" +30 PRINT +40 PRINT "X X X X X X X X X X" +50 PRINT +60 PRINT "TO THIS:" +70 PRINT +80 PRINT "O O O O O O O O O O" +90 PRINT +100 PRINT "BY TYPING THE NUMBER CORRESPONDING TO THE POSITION OF THE" +110 PRINT "LETTER ON SOME NUMBERS, ONE POSITION WILL CHANGE, ON" +120 PRINT "OTHERS, TWO WILL CHANGE. TO RESET LINE TO ALL X'S, TYPE 0" +130 PRINT "(ZERO) AND TO START OVER IN THE MIDDLE OF A GAME, TYPE " +140 PRINT "11 (ELEVEN)." +170 PRINT +180 REM +190 Q=RND(1) +200 PRINT "HERE IS THE STARTING LINE OF X'S." +210 PRINT +220 C=0 +230 PRINT "1 2 3 4 5 6 7 8 9 10" +240 PRINT "X X X X X X X X X X" +250 PRINT +260 REM +270 FOR X=1 TO 10 +280 A$(X)="X" +290 NEXT X +300 GOTO 320 +310 PRINT "ILLEGAL ENTRY--TRY AGAIN." +320 PRINT "INPUT THE NUMBER"; +330 INPUT N +340 IF N<>INT(N) THEN 310 +350 IF N=11 THEN 180 +360 IF N>11 THEN 310 +370 IF N=0 THEN 230 +380 IF M=N THEN 510 +390 M=N +400 IF A$(N)="O" THEN 480 +410 A$(N)="O" +420 R=TAN(Q+N/Q-N)-SIN(Q/N)+336*SIN(8*N) +430 N=R-INT(R) +440 N=INT(10*N) +450 IF A$(N)="O" THEN 480 +460 A$(N)="O" +470 GOTO 610 +480 A$(N)="X" +490 IF M=N THEN 420 +500 GOTO 610 +510 IF A$(N)="O" THEN 590 +520 A$(N)="O" +530 R=.592*(1/TAN(Q/N+Q))/SIN(N*2+Q)-COS(N) +540 N=R-INT(R) +550 N=INT(10*N) +560 IF A$(N)="O" THEN 590 +570 A$(N)="O" +580 GOTO 610 +590 A$(N)="X" +600 IF M=N THEN 530 +610 PRINT "1 2 3 4 5 6 7 8 9 10" +620 FOR Z=1 TO 10: PRINT A$(Z);" ";: NEXT Z +630 C=C+1 +640 PRINT +650 FOR Z=1 TO 10 +660 IF A$(Z)<>"O" THEN 320 +670 NEXT Z +680 IF C>12 THEN 710 +690 PRINT "VERY GOOD. YOU GUESSED IT IN ONLY";C;"GUESSES." +700 GOTO 720 +710 PRINT "TRY HARDER NEXT TIME. IT TOOK YOU";C;"GUESSES." +720 PRINT "DO YOU WANT TO TRY ANOTHER PUZZLE"; +730 INPUT X$ +740 IF LEFT$(X$,1)="N" THEN 780 +760 PRINT +770 GOTO 180 +780 END diff --git a/GAMES/footbal1.bas b/GAMES/footbal1.bas new file mode 100644 index 0000000..40a6aa8 --- /dev/null +++ b/GAMES/footbal1.bas @@ -0,0 +1,298 @@ +10 PRINT TAB(33);"FTBALL" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT +220 PRINT "THIS IS DARTMOUTH CHAMPIONSHIP FOOTBALL.":PRINT +230 PRINT "YOU WILL QUARTERBACK DARTMOUTH. CALL PLAYS AS FOLLOWS:" +240 PRINT "1= SIMPLE RUN; 2= TRICKY RUN; 3= SHORT PASS;" +250 PRINT "4= LONG PASS; 5= PUNT; 6= QUICK KICK; 7= PLACE KICK." +260 PRINT +270 PRINT "CHOOSE YOUR OPPONENT"; +280 INPUT O$(1) +290 O$(0)="DARTMOUTH" +300 PRINT +310 LET S(0)=0: LET S(1)=0 +320 REM +330 DIM L$(20) +340 FOR I=1 TO 20: READ L$(I): NEXT I +350 DATA "KICK","RECEIVE"," YARD ","RUN BACK FOR ","BALL ON " +360 DATA "YARD LINE"," SIMPLE RUN"," TRICKY RUN"," SHORT PASS" +370 DATA " LONG PASS","PUNT"," QUICK KICK "," PLACE KICK"," LOSS " +380 DATA " NO GAIN","GAIN "," TOUCHDOWN "," TOUCHBACK ","SAFETY***" +385 DATA "JUNK" +390 LET P=INT(RND(1)*2) +400 PRINT O$(P);" WON THE TOSS" +410 DEF FNF(X)=1-2*P +420 DEF FNG(Z)=P*(X1-X)+(1-P)*(X-X1) +430 IF P=0 THEN 470 +440 PRINT O$(1);" ELECTS TO RECEIVE." +450 PRINT +460 GOTO 580 +470 PRINT "DO YOU ELECT TO KICK OR RECEIVE"; +480 INPUT A$ +490 PRINT +500 FOR E=1 TO 2 +510 IF A$=L$(E) THEN 550 +520 NEXT E +530 PRINT "INCORRECT ANSWER. PLEASE TYPE 'KICK' OR 'RECIEVE'"; +540 GOTO 480 +550 IF E=2 THEN 580 +560 LET P=1 +580 LET X=40+(1-P)*20 +590 LET Y=INT(200*(RND(1)-.5)^3+55) +600 PRINT Y;L$(3);" KICKOFF" +610 LET X=X-FNF(1)*Y +620 IF ABS(X-50)>=50 THEN 700 +630 LET Y=INT(50*RND(1)^2)+(1-P)*INT(50*RND(1)^4) +640 LET X=X+FNF(1)*Y +650 IF ABS(X-50)>=50 THEN 655 +651 PRINT Y;L$(3);" RUNBACK" +652 GOTO 720 +655 PRINT L$(4); +660 GOTO 2600 +700 PRINT "TOUCHBACK FOR ";O$(P);"." +710 LET X=20+P*60 +720 REM FIRST DOWN +730 GOSUB 800 +740 LET X1=X +750 LET D=1 +760 PRINT:PRINT "FIRST DOWN ";O$(P);"***" +770 PRINT +780 PRINT +790 GOTO 860 +800 REM PRINT POSITION +810 IF X>50 THEN 840 +820 PRINT L$(5);O$(0);X;L$(6) +830 GOTO 850 +840 PRINT L$(5);O$(1);100-X;L$(6) +850 RETURN +860 REM NEW PLAY +870 LET T=T+1 +880 IF T=30 THEN 1060 +890 IF T<50 THEN 940 +900 IF RND(1)>.2 THEN 940 +910 PRINT "END OF GAME ***" +920 PRINT "FINAL SCORE: ";O$(0);": ";S(0);" ";O$(1);": ";S(1) +930 STOP +940 IF P=1 THEN 1870 +950 PRINT "NEXT PLAY"; +960 INPUT Z +970 IF Z<>INT(Z) THEN 990 +980 IF ABS(Z-4)<=3 THEN 1010 +990 PRINT "ILLEGAL PLAY NUMBER, RETYPE"; +1000 GOTO 960 +1010 LET F=0 +1020 PRINT L$(Z+6);". "; +1030 LET R=RND(1)*(.98+FNF(1)*.02) +1040 LET R1=RND(1) +1050 ON Z GOTO 1110,1150,1260,1480,1570,1570,1680 +1060 REM JEAN'S SPECIAL +1070 IF RND(1)> 1/3 THEN 940 +1080 PRINT "GAME DELAYED. DOG ON FIELD." +1090 PRINT +1100 GOTO 940 +1110 REM SIMPLE RUN +1120 LET Y=INT(24*(R-.5)^3+3) +1130 IF RND(1)<.05 THEN 1180 +1140 GOTO 2190 +1150 REM TRICKY RUN +1160 LET Y=INT(20*R-5) +1170 IF RND(1)>.1 THEN 2190 +1180 LET F=-1 +1190 LET X3=X +1200 LET X=X+FNF(1)*Y +1210 IF ABS(X-50)>=50 THEN 1240 +1220 PRINT "*** FUMBLE AFTER "; +1230 GOTO 2230 +1240 PRINT "*** FUMBLE." +1250 GOTO 2450 +1260 REM SHORT PASS +1270 LET Y=INT(60*(R1-.5)^3+10) +1280 IF R<.05 THEN 1330 +1290 IF R<.15 THEN 1390 +1300 IF R<.55 THEN 1420 +1310 PRINT "COMPLETE. "; +1320 GOTO 2190 +1330 IF D=4 THEN 1420 +1340 PRINT "INTERCEPTED." +1350 LET F=-1 +1360 LET X=X+FNF(1)*Y +1370 IF ABS(X-50)>=50 THEN 2450 +1380 GOTO 2300 +1390 PRINT "PASSER TACKLED. "; +1400 LET Y=-INT(10*R1) +1410 GOTO 2190 +1420 LET Y=0 +1430 IF RND(1)<.3 THEN 1460 +1440 PRINT "INCOMPLETE. "; +1450 GOTO 2190 +1460 PRINT "BATTED DOWN. "; +1470 GOTO 2190 +1480 REM LONG PASS +1490 LET Y=INT(160*(R1-.5)^3+30) +1500 IF R<.1 THEN 1330 +1510 IF R<.3 THEN 1540 +1520 IF R<.75 THEN 1420 +1530 GOTO 1310 +1540 PRINT "PASSER TACKLED. "; +1550 LET Y=-INT(15*R1+3) +1560 GOTO 2190 +1570 REM PUNT OR KICK +1580 LET Y=INT(100*(R-.5)^3+35) +1590 IF D=4 THEN 1610 +1600 LET Y=INT(Y*1.3) +1610 PRINT Y;L$(3);" PUNT" +1620 IF ABS(X+Y*FNF(1)-50)>=50 THEN 1670 +1630 IF D<4 THEN 1670 +1640 LET Y1=INT(R1^2*20) +1650 PRINT Y1;L$(3);" RUN BACK" +1660 LET Y=Y-Y1 +1670 GOTO 1350 +1680 REM PLACE KICK +1690 LET Y=INT(100*(R-.5)^3+35) +1700 IF R1>.15 THEN 1740 +1710 PRINT "KICK IS BLOCKED ***" +1720 LET X=X-5*FNF(1) +1730 LET P=1-P +1740 GOTO 720 +1750 LET X=X+FNF(1)*Y +1760 IF ABS(X-50)>=60 THEN 1810 +1770 PRINT "KICK IS SHORT." +1780 IF ABS(X-50)>=50 THEN 2710 +1790 P=1-P +1800 GOTO 630 +1810 IF R1>.5 THEN 1840 +1820 PRINT "KICK IS OFF TO THE SIDE." +1830 GOTO 2710 +1840 PRINT "FIELD GOAL ***" +1850 LET S(P)=S(P)+3 +1860 GOTO 2640 +1870 REM OPPONENT'S PLAY +1880 IF D>1 THEN 1940 +1890 IF RND(1)>1/3 THEN 1920 +1900 LET Z=3 +1910 GOTO 1010 +1920 LET Z=1 +1930 GOTO 1010 +1940 IF D=4 THEN 2090 +1950 IF 10+X-X1<5 THEN 1890 +1960 IF X<5 THEN 1890 +1970 IF X<=10 THEN 2160 +1980 IF X>X1 THEN 2020 +1990 LET A=INT(2*RND(1)) +2000 LET Z=2+A*2 +2010 GOTO 1010 +2020 IF D<3 THEN 1990 +2030 IF X<45 THEN 1990 +2040 IF RND(1)>1/4 THEN 2070 +2050 LET Z=6 +2060 GOTO 1010 +2070 LET Z=4 +2080 GOTO 1010 +2090 IF X>30 THEN 2140 +2100 IF 10+X-X1<3 THEN 1890 +2110 IF X<3 THEN 1890 +2120 LET Z=7 +2130 GOTO 1010 +2140 LET Z=5 +2150 GOTO 1010 +2160 LET A=INT(2*RND(1)) +2170 LET Z=2+A +2180 GOTO 1010 +2190 REM GAIN OR LOSS +2200 LET X3=X +2210 LET X=X+FNF(1)*Y +2220 IF ABS(X-50)>=50 THEN 2450 +2230 IF Y=0 THEN 2250 +2240 PRINT ABS(Y);L$(3); +2250 PRINT L$(15+SGN(Y)) +2280 IF ABS(X3-50)>40 THEN 2300 +2290 IF RND(1)<.1 THEN 2860 +2300 GOSUB 800 +2310 IF F=0 THEN 2340 +2320 LET P=1-P +2330 GOTO 740 +2340 IF FNG(1)>=10 THEN 740 +2350 IF D=4 THEN 2320 +2360 LET D=D+1 +2370 PRINT "DOWN: ";D;" "; +2380 IF (X1-50)*FNF(1)<40 THEN 2410 +2390 PRINT "GOAL TO GO" +2400 GOTO 2420 +2410 PRINT "YARDS TO GO: ";10-FNG(1) +2420 PRINT +2430 PRINT +2440 GOTO 860 +2450 REM BALL IN END-ZONE +2460 IF X>=100 THEN 2490 +2470 LET E=0 +2480 GOTO 2500 +2490 LET E=1 +2500 ON 1+E-F*2+P*4 GOTO 2510,2590,2760,2710,2590,2510,2710,2760 +2510 REM SAFETY +2520 LET S(1-P)=S(1-P)+2 +2530 PRINT L$(19) +2540 GOSUB 2800 +2550 PRINT O$(P);" KICKS OFF FROM ITS 20 YARD LINE." +2560 LET X=20+P*60 +2570 LET P=1-P +2580 GOTO 590 +2590 REM OFFENSIVE TD +2600 PRINT L$(17);"***" +2610 IF RND(1)>.8 THEN 2680 +2620 LET S(P)=S(P)+7 +2630 PRINT "KICK IS GOOD." +2640 GOSUB 2800 +2650 PRINT O$(P);" KICKS OFF" +2660 LET P=1-P +2670 GOTO 580 +2680 PRINT "KICK IS OFF TO THE SIDE" +2690 LET S(P)=S(P)+6 +2700 GOTO 2640 +2710 REM TOUCHBACK +2720 PRINT L$(18) +2730 LET P=1-P +2740 LET X=20+P*60 +2750 GOTO 720 +2760 REM DEFENSIVE TD +2770 PRINT L$(17);"FOR ";O$(1-P);"***" +2780 LET P=1-P +2790 GOTO 2600 +2800 REM SCORE +2810 PRINT +2820 PRINT "SCORE: ";S(0);" TO ";S(1) +2830 PRINT +2840 PRINT +2850 RETURN +2860 REM PENALTY +2870 LET P3=INT(2*RND(1)) +2880 PRINT O$(P3);" OFFSIDES -- PENALTY OF 5 YARDS." +2890 PRINT +2900 PRINT +2910 IF P3=0 THEN 2980 +2920 PRINT "DO YOU ACCEPT THE PENALTY"; +2930 INPUT A$ +2940 IF A$="NO" THEN 2300 +2950 IF A$="YES" THEN 3110 +2960 PRINT "TYPE 'YES' OR 'NO'"; +2970 GOTO 2930 +2980 REM OPPONENT'S STRATEGY ON PENALTY +2990 IF P=1 THEN 3040 +3000 IF Y<=0 THEN 3080 +3010 IF F<0 THEN 3080 +3020 IF FNG(1)<3*D-2 THEN 3080 +3030 GOTO 3100 +3040 IF Y<=5 THEN 3100 +3050 IF F<0 THEN 3100 +3060 IF D<4 THEN 3080 +3070 IF FNG(1)<10 THEN 3100 +3080 PRINT "PENALTY REFUSED." +3090 GOTO 2300 +3100 PRINT "PENALTY ACCEPTED." +3110 LET F=0 +3120 LET D=D-1 +3130 IF P<>P3 THEN 3160 +3140 LET X=X3-FNF(1)*5 +3150 GOTO 2300 +3160 LET X=X3+FNF(1)*5 +3170 GOTO 2300 +3180 END diff --git a/GAMES/footbal2.bas b/GAMES/footbal2.bas new file mode 100644 index 0000000..07e416a --- /dev/null +++ b/GAMES/footbal2.bas @@ -0,0 +1,181 @@ +1 PRINT TAB(32);"FOOTBALL" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +100 REM +120 DIM A(20),B(20),C(40),H(2),T(2),W(2),X(2),Y(2),Z(2) +130 DIM M$(2),D(2),P$(20) +140 PRINT "PRESENTING N.F.U. FOOTBALL (NO FORTRAN USED)" +145 PRINT:PRINT +150 INPUT "DO YOU WANT INSTRUCTIONS";A$ +160 IF A$="NO" THEN 290 +165 IF A$<>"YES" THEN 150 +170 PRINT "THIS IS A FOOTBALL GAME FOR TWO TEAMS IN WHICH PLAYERS MUST" +180 PRINT "PREPARE A TAPE WITH A DATA STATEMENT (1770 FOR TEAM 1," +190 PRINT "1780 FOR TEAM 2) IN WHICH EACH TEAM SCRAMBLES NOS. 1-20" +195 PRINT "THESE NUMBERS ARE THEN ASSIGNED TO TWENTY GIVEN PLAYS." +200 PRINT"A LIST OF NOS. AND THEIR PLAYS IS PROVIDED WITH" +210 PRINT "BOTH TEAMS HAVING THE SAME PLAYS. THE MORE SIMILAR THE" +220 PRINT "PLAYS THE LESS YARDAGE GAINED. SCORES ARE GIVEN" +223 PRINT "WHENEVER SCORES ARE MADE. SCORES MAY ALSO BE OBTAINED" +225 PRINT "BY INPUTTING 99,99 FOR PLAY NOS. TO PUNT OR ATTEMPT A" +227 PRINT "FIELD GOAL, INPUT 77,77 FOR PLAY NUMBERS. QUESTIONS WILL BE" +230 PRINT "ASKED THEN. ON 4TH DOWN, YOU WILL ALSO BE ASKED WHETHER" +240 PRINT "YOU WANT TO PUNT OR ATTEMPT A FIELD GOAL. IF THE ANSWER TO" +250 PRINT "BOTH QUESTIONS IS NO IT WILL BE ASSUMED YOU WANT TO" +260 PRINT "TRY AND GAIN YARDAGE. ANSWER ALL QUESTIONS YES OR NO." +270 PRINT "THE GAME IS PLAYED UNTIL PLAYERS TERMINATE (CONTROL-C)." +280 PRINT "PLEASE PREPARE A TAPE AND RUN.": STOP +290 PRINT:PRINT "PLEASE INPUT SCORE LIMIT ON GAME";:INPUT E +300 FOR I=1 TO 40: READ N: IF I>20 THEN 350 +330 A(N)=I: GOTO 360 +350 B(N)=I-20 +360 C(I)=N: NEXT I +370 FOR I=1 TO 20: READ P$(I): NEXT I +380 L=0: T=1 +410 PRINT "TEAM";T;"PLAY CHART" +420 PRINT "NO. PLAY" +430 FOR I=1 TO 20 +440 REM +450 PRINT C(I+L);TAB(6);P$(I) +460 NEXT I +630 L=L+20:T=2 +640 PRINT +650 PRINT "TEAR OFF HERE----------------------------------------------" +660 FOR X=1 TO 11: PRINT: NEXT X +670 FOR Z=1 TO 3000: NEXT Z +680 IF L=20 THEN 410 +690 D(1)=0: D(2)=3: M$(1)="--->": M$(2)="<---" +700 H(1)=0: H(2)=0: T(1)=2: T(2)=1 +710 W(1)=-1: W(2)=1: X(1)=100: X(2)=0 +720 Y(1)=1: Y(2)=-1: Z(1)=0: Z(2)=100 +725 GOSUB 1910 +730 PRINT "TEAM 1 DEFENDS 0 YD GOAL -- TEAM 2 DEFENDS 100 YD GOAL." +740 T=INT(2*RND(1)+1) +760 PRINT: PRINT "THE COIN IS FLIPPED" +765 P=X(T)-Y(T)*40 +770 GOSUB 1860: PRINT : PRINT "TEAM";T;"RECEIVES KICK-OFF" +780 K=INT(26*RND(1)+40) +790 P=P-Y(T)*K +794 IF W(T)*P"NO" THEN 830 +850 IF W(T)*P1 THEN 900 +895 IF Y(T)*(P+Y(T)*10)>=X(T) THEN 898 +897 C=4: GOTO 900 +898 C=8 +900 IF C=8 THEN 904 +901 PRINT TAB(27);10-(Y(T)*P-Y(T)*S);"YARDS TO 1ST DOWN" +902 GOTO 910 +904 PRINT TAB(27);X(T)-Y(T)*P;"YARDS" +910 GOSUB 1900: IF D=4 THEN 1180 +920 REM +930 U=INT(3*RND(0)-1): GOTO 940 +936 PRINT "ILLEGAL PLAY NUMBER, CHECK AND" +940 PRINT "INPUT OFFENSIVE PLAY, DEFENSIVE PLAY"; +950 IF T=2 THEN 970 +960 INPUT P1,P2: GOTO 975 +970 INPUT P2,P1 +975 IF P1=77 THEN 1180 +980 IF P1>20 THEN 1800 +985 IF P1<1 THEN 1800 +990 IF P2>20 THEN 1800 +992 IF P2<1 THEN 1800 +995 P1=INT(P1): P2=INT(P2) +1000 Y=INT(ABS(A(P1)-B(P2))/19*((X(T)-Y(T)*P+25)*RND(1)-15)) +1005 PRINT: IF T=2 THEN 1015 +1010 IF A(P1)<11 THEN 1048 +1012 GOTO 1020 +1015 IF B(P2)<11 THEN 1048 +1020 IF U<>0 THEN 1035 +1025 PRINT "PASS INCOMPLETE TEAM";T +1030 Y=0: GOTO 1050 +1035 G=RND(1): IF G>.025 THEN 1040 +1037 IF Y>2 THEN 1045 +1040 PRINT "QUARTERBACK SCRAMBLED": GOTO 1050 +1045 PRINT "PASS COMPLETED": GOTO 1050 +1048 PRINT "THE BALL WAS RUN" +1050 P=P-W(T)*Y +1060 PRINT: PRINT "NET YARDS GAINED ON DOWN";D;"ARE ";Y +1070 G=RND(1): IF G>.025 THEN 1110 +1080 PRINT: PRINT "** LOSS OF POSSESSION FROM TEAM";T;"TO TEAM";T(T) +1100 GOSUB 1850: PRINT: T=T(T): GOTO 830 +1110 IF Y(T)*P>=X(T) THEN 1320 +1120 IF W(T)*P>=Z(T) THEN 1230 +1130 IF Y(T)*P-Y(T)*S>=10 THEN 880 +1140 D=D+1: IF D<>5 THEN 885 +1160 PRINT: PRINT "CONVERSION UNSUCCESSFUL TEAM";T:T=T(T) +1170 GOSUB 1850: GOTO 880 +1180 PRINT "DOES TEAM";T;"WANT TO PUNT";: INPUT A$ +1185 IF A$="NO" THEN 1200 +1187 IF A$<>"YES" THEN 1180 +1190 PRINT:PRINT "TEAM";T;"WILL PUNT": G=RND(1): IF G<.025 THEN 1080 +1195 GOSUB 1850: K=INT(25*RND(1)+35): T=T(T): GOTO 790 +1200 PRINT "DOES TEAM";T;"WANT TO ATTEMPT A FIELD GOAL";: INPUT A$ +1210 IF A$="YES" THEN 1640 +1215 IF A$<>"NO" THEN 1200 +1217 GOTO 920 +1230 PRINT: PRINT "SAFETY AGAINST TEAM";T;"**********************OH-OH" +1240 H(T(T))=H(T(T))+2: GOSUB 1810 +1280 PRINT"TEAM";T;"DO YOU WANT TO PUNT INSTEAD OF A KICKOFF";:INPUT A$ +1290 P=Z(T)-W(T)*20: IF A$="YES" THEN 1190 +1320 PRINT: PRINT "TOUCHDOWN BY TEAM";T;"*********************YEA TEAM" +1340 Q=7: G=RND(1): IF G>.1 THEN 1380 +1360 Q=6: PRINT "EXTRA POINT NO GOOD": GOTO 1390 +1380 PRINT "EXTRA POINT GOOD" +1390 H(T)=H(T)+Q: GOSUB 1810 +1420 T=T(T): GOTO 765 +1430 K=INT(9*RND(0)+1) +1440 R=INT(((X(T)-Y(T)*P+25)*RND(1)-15)/K) +1460 P=P-W(T)*R +1480 PRINT:PRINT "RUNBACK TEAM";T;R;"YARDS" +1485 G=RND(1): IF G<.025 THEN 1080 +1490 IF Y(T)*P>=X(T) THEN 1320 +1500 IF W(T)*P>=Z(T) THEN 1230 +1510 GOTO 880 +1640 PRINT: PRINT "TEAM";T;"WILL ATTEMPT A FIELD GOAL" +1645 G=RND(1): IF G<.025 THEN 1080 +1650 F=INT(35*RND(1)+20) +1660 PRINT: PRINT "KICK IS";F;"YARDS LONG" +1680 P=P-W(T)*F: G=RND(1) +1690 IF G<.35 THEN 1735 +1700 IF Y(T)*P99 THEN 936 +1810 PRINT: PRINT "TEAM 1 SCORE IS";H(1) +1820 PRINT "TEAM 2 SCORE IS";H(2): PRINT +1825 IF H(T)190 THEN 500 +348 NEXT J +350 GOTO 1100 +500 PRINT +501 PRINT "YOU MAY NOT HAVE THAT MANY FURS." +502 PRINT "DO NOT TRY TO CHEAT. I CAN ADD." +503 PRINT "YOU MUST START AGAIN." +504 GOTO 15 +508 PRINT +511 PRINT "DO YOU WANT TO TRADE FURS NEXT YEAR?" +513 GOTO 18 +1091 PRINT "YOU ARE THE LEADER OF A FRENCH FUR TRADING EXPEDITION IN " +1092 PRINT "1776 LEAVING THE LAKE ONTARIO AREA TO SELL FURS AND GET" +1093 PRINT "SUPPLIES FOR THE NEXT YEAR. YOU HAVE A CHOICE OF THREE" +1094 PRINT "FORTS AT WHICH YOU MAY TRADE. THE COST OF SUPPLIES" +1095 PRINT "AND THE AMOUNT YOU RECEIVE FOR YOUR FURS WILL DEPEND" +1096 PRINT "ON THE FORT THAT YOU CHOOSE." +1099 RETURN +1100 PRINT "YOU MAY TRADE YOUR FURS AT FORT 1, FORT 2," +1102 PRINT "OR FORT 3. FORT 1 IS FORT HOCHELAGA (MONTREAL)" +1103 PRINT "AND IS UNDER THE PROTECTION OF THE FRENCH ARMY." +1104 PRINT "FORT 2 IS FORT STADACONA (QUEBEC) AND IS UNDER THE" +1105 PRINT "PROTECTION OF THE FRENCH ARMY. HOWEVER, YOU MUST" +1106 PRINT "MAKE A PORTAGE AND CROSS THE LACHINE RAPIDS." +1108 PRINT "FORT 3 IS FORT NEW YORK AND IS UNDER DUTCH CONTROL." +1109 PRINT "YOU MUST CROSS THROUGH IROQUOIS LAND." +1110 PRINT "ANSWER 1, 2, OR 3." +1111 INPUT B +1112 IF B=1 THEN 1120 +1113 IF B=2 THEN 1135 +1115 IF B=3 THEN 1147 +1116 GOTO 1110 +1120 PRINT "YOU HAVE CHOSEN THE EASIEST ROUTE. HOWEVER, THE FORT" +1121 PRINT "IS FAR FROM ANY SEAPORT. THE VALUE" +1122 PRINT "YOU RECEIVE FOR YOUR FURS WILL BE LOW AND THE COST" +1123 PRINT "OF SUPPLIES HIGHER THAN AT FORTS STADACONA OR NEW YORK." +1125 GOSUB 1400 +1129 IF B$="YES" THEN 1110 +1130 GOTO 1160 +1135 PRINT "YOU HAVE CHOSEN A HARD ROUTE. IT IS, IN COMPARSION," +1136 PRINT "HARDER THAN THE ROUTE TO HOCHELAGA BUT EASIER THAN" +1137 PRINT "THE ROUTE TO NEW YORK. YOU WILL RECEIVE AN AVERAGE VALUE" +1138 PRINT "FOR YOUR FURS AND THE COST OF YOUR SUPPLIES WILL BE AVERAGE." +1141 GOSUB 1400 +1144 IF B$="YES" THEN 1110 +1145 GOTO 1198 +1147 PRINT "YOU HAVE CHOSEN THE MOST DIFFICULT ROUTE. AT" +1148 PRINT "FORT NEW YORK YOU WILL RECEIVE THE HIGHEST VALUE" +1149 PRINT "FOR YOUR FURS. THE COST OF YOUR SUPPLIES" +1150 PRINT "WILL BE LOWER THAN AT ALL THE OTHER FORTS." +1152 GOSUB 1400 +1155 IF B$="YES" THEN 1110 +1156 GOTO 1250 +1160 LET I=I-160 +1169 PRINT +1174 LET M1=INT((.2*RND(1)+.7)*10^2+.5)/10^2 +1175 LET E1=INT((.2*RND(1)+.65)*10^2+.5)/10^2 +1176 LET B1=INT((.2*RND(1)+.75)*10^2+.5)/10^2 +1177 LET D1=INT((.2*RND(1)+.8)*10^2+.5)/10^2 +1180 PRINT "SUPPLIES AT FORT HOCHELAGA COST $150.00." +1181 PRINT "YOUR TRAVEL EXPENSES TO HOCHELAGA WERE $10.00." +1190 GOTO 1410 +1198 LET I=I-140 +1201 PRINT +1205 LET M1=INT((.3*RND(1)+.85)*10^2+.5)/10^2 +1206 LET E1=INT((.15*RND(1)+.8)*10^2+.5)/10^2 +1207 LET B1=INT((.2*RND(1)+.9)*10^2+.5)/10^2 +1209 LET P=INT(10*RND(1))+1 +1210 IF P<=2 THEN 1216 +1212 IF P<=6 THEN 1224 +1213 IF P<=8 THEN 1226 +1215 IF P<=10 THEN 1235 +1216 LET F(2)=0 +1218 PRINT "YOUR BEAVER WERE TOO HEAVY TO CARRY ACROSS" +1219 PRINT "THE PORTAGE. YOU HAD TO LEAVE THE PELTS, BUT FOUND" +1220 PRINT "THEM STOLEN WHEN YOU RETURNED." +1221 GOSUB 1244 +1222 GOTO 1414 +1224 PRINT "YOU ARRIVED SAFELY AT FORT STADACONA." +1225 GOTO 1239 +1226 GOSUB 1430 +1230 PRINT "YOUR CANOE UPSET IN THE LACHINE RAPIDS. YOU" +1231 PRINT "LOST ALL YOUR FURS." +1232 GOSUB 1244 +1233 GOTO 1418 +1235 LET F(4)=0 +1237 PRINT "YOUR FOX PELTS WERE NOT CURED PROPERLY." +1238 PRINT "NO ONE WILL BUY THEM." +1239 GOSUB 1244 +1240 GOTO 1410 +1244 PRINT "SUPPLIES AT FORT STADACONA COST $125.00." +1246 PRINT "YOUR TRAVEL EXPENSES TO STADACONA WERE $15.00." +1248 RETURN +1250 LET I=I-105 +1254 PRINT +1260 LET M1=INT((.15*RND(1)+1.05)*10^2+.5)/10^2 +1263 LET D1=INT((.25*RND(1)+1.1)*10^2+.5)/10^2 +1270 LET P=INT(10*RND(1))+1 +1271 IF P<=2 THEN 1281 +1272 IF P<=6 THEN 1291 +1273 IF P<=8 THEN 1295 +1274 IF P<=10 THEN 1306 +1281 PRINT "YOU WERE ATTACKED BY A PARTY OF IROQUOIS." +1282 PRINT "ALL PEOPLE IN YOUR TRADING GROUP WERE" +1283 PRINT "KILLED. THIS ENDS THE GAME." +1284 STOP +1291 PRINT "YOU WERE LUCKY. YOU ARRIVED SAFELY" +1292 PRINT "AT FORT NEW YORK." +1293 GOTO 1311 +1295 GOSUB 1430 +1300 PRINT "YOU NARROWLY ESCAPED AN IROQUOIS RAIDING PARTY." +1301 PRINT "HOWEVER, YOU HAD TO LEAVE ALL YOUR FURS BEHIND." +1303 GOSUB 1320 +1304 GOTO 1418 +1306 LET B1=B1/2 +1307 LET M1=M1/2 +1308 PRINT "YOUR MINK AND BEAVER WERE DAMAGED ON YOUR TRIP." +1309 PRINT "YOU RECEIVE ONLY HALF THE CURRENT PRICE FOR THESE FURS." +1311 GOSUB 1320 +1312 GOTO 1410 +1320 PRINT "SUPPLIES AT NEW YORK COST $80.00." +1321 PRINT "YOUR TRAVEL EXPENSES TO NEW YORK WERE $25.00." +1322 RETURN +1400 PRINT "DO YOU WANT TO TRADE AT ANOTHER FORT?" +1402 PRINT "ANSWER YES OR NO", +1403 INPUT B$ +1404 RETURN +1410 PRINT +1412 PRINT "YOUR BEAVER SOLD FOR $";B1*F(2); +1414 PRINT "YOUR FOX SOLD FOR $";D1*F(4) +1416 PRINT "YOUR ERMINE SOLD FOR $";E1*F(3); +1417 PRINT "YOUR MINK SOLD FOR $";M1*F(1) +1418 LET I=M1*F(1)+B1*F(2)+E1*F(3)+D1*F(4)+I +1420 PRINT +1422 PRINT "YOU NOW HAVE $";I;" INCLUDING YOUR PREVIOUS SAVINGS" +1425 GOTO 508 +1430 FOR J=1 TO 4 +1432 LET F(J)=0 +1434 NEXT J +1436 RETURN +2000 DATA "MINK","BEAVER","ERMINE","FOX" +2046 END diff --git a/GAMES/golf.bas b/GAMES/golf.bas new file mode 100644 index 0000000..ae13574 --- /dev/null +++ b/GAMES/golf.bas @@ -0,0 +1,244 @@ +1 PRINT TAB(34);"GOLF" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 PRINT "WELCOME TO THE CREATIVE COMPUTING COUNTRY CLUB," +5 PRINT "AN EIGHTEEN HOLE CHAMPIONSHIP LAYOUT LOCATED A SHORT" +6 PRINT "DISTANCE FROM SCENIC DOWNTOWN MORRISTOWN. THE" +7 PRINT "COMMENTATOR WILL EXPLAIN THE GAME AS YOU PLAY." +8 PRINT "ENJOY YOUR GAME; SEE YOU AT THE 19TH HOLE..." +9 PRINT:PRINT: DIM L(10) +10 G1=18 +20 G2=0 +30 G3=0 +40 A=0 +50 N=.8 +60 S2=0 +70 F=1 +80 PRINT "WHAT IS YOUR HANDICAP"; +90 INPUT H:PRINT +100 IF H>30 THEN 470 +110 IF H<0 THEN 470 +120 PRINT "DIFFICULTIES AT GOLF INCLUDE:" +130 PRINT "0=HOOK, 1=SLICE, 2=POOR DISTANCE, 4=TRAP SHOTS, 5=PUTTING" +140 PRINT "WHICH ONE (ONLY ONE) IS YOUR WORST"; +150 INPUT T:PRINT +160 IF T>5 THEN 120 +170 S1=0 +210 REM +230 L(0)=0 +240 J=0 +245 Q=0 +250 S2=S2+1 +260 K=0 +270 IF F=1 THEN 310 +290 PRINT "YOUR SCORE ON HOLE";F-1;"WAS";S1 +291 GOTO 1750 +292 IF S1>P+2 THEN 297 +293 IF S1=P THEN 299 +294 IF S1=P-1 THEN 301 +295 IF S1=P-2 THEN 303 +296 GOTO 310 +297 PRINT "KEEP YOUR HEAD DOWN." +298 GOTO 310 +299 PRINT "A PAR. NICE GOING." +300 GOTO 310 +301 PRINT "A BIRDIE." +302 GOTO 310 +303 IF P=3 THEN 306 +304 PRINT "A GREAT BIG EAGLE." +305 GOTO 310 +306 PRINT "A HOLE IN ONE." +310 IF F=19 THEN 1710 +315 S1=0 +316 PRINT +320 IF S1=0 THEN 1590 +330 IF L(0)<1 THEN 1150 +340 X=0 +350 IF L(0)>5 THEN 1190 +360 PRINT "SHOT WENT";D1;"YARDS. IT'S";D2;"YARDS FROM THE CUP." +362 PRINT "BALL IS";INT(O);"YARDS OFF LINE... IN "; +380 GOSUB 400 +390 GOTO 620 +400 IF L(X)=1 THEN 480 +410 IF L(X)=2 THEN 500 +420 IF L(X)=3 THEN 520 +430 IF L(X)=4 THEN 540 +440 IF L(X)=5 THEN 560 +450 IF L(X)=6 THEN 580 +460 PRINT "OUT OF BOUNDS." +465 GOTO 1690 +470 PRINT "PGA HANDICAPS RANGE FROM 0 TO 30." +472 GOTO 80 +480 PRINT "FAIRWAY." +490 GOTO 1690 +500 PRINT "ROUGH." +510 GOTO 1690 +520 PRINT "TREES." +530 GOTO 1690 +540 PRINT "ADJACENT FAIRWAY." +550 GOTO 1690 +560 PRINT "TRAP." +570 GOTO 1690 +580 PRINT "WATER." +590 GOTO 1690 +620 IF A=1 THEN 629 +621 PRINT "SELECTION OF CLUBS" +622 PRINT "YARDAGE DESIRED SUGGESTED CLUBS" +623 PRINT "200 TO 280 YARDS 1 TO 4" +624 PRINT "100 TO 200 YARDS 19 TO 13" +625 PRINT " 0 TO 100 YARDS 29 TO 23" +626 A=1 +629 PRINT "WHAT CLUB DO YOU CHOOSE"; +630 INPUT C +632 PRINT +635 IF C<1 THEN 690 +637 IF C>29 THEN 690 +640 IF C>4 THEN 710 +650 IF L(0)<=5 THEN 740 +660 IF C=14 THEN 740 +665 IF C=23 THEN 740 +670 GOTO 690 +680 S1=S1-1 +690 PRINT "THAT CLUB IS NOT IN THE BAG." +693 PRINT +700 GOTO 620 +710 IF C<12 THEN 690 +720 C=C-6 +730 GOTO 650 +740 S1=S1+1 +741 W=1 +742 IF C>13 THEN 960 +746 IF INT(F/3)=F/3 THEN 952 +752 IF C<4 THEN 756 +754 GOTO 760 +756 IF L(0)=2 THEN 862 +760 IF S1>7 THEN 867 +770 D1=INT(((30-H)*2.5+187-((30-H)*.25+15)*C/2)+25*RND(1)) +780 D1=INT(D1*W) +800 IF T=2 THEN 1170 +830 O=(RND(1)/.8)*(2*H+16)*ABS(TAN(D1*.0035)) +840 D2=INT(SQR(O^2+ABS(D-D1)^2)) +850 IF D-D1<0 THEN 870 +860 GOTO 890 +862 PRINT "YOU DUBBED IT." +864 D1=35 +866 GOTO 830 +867 IF D<200 THEN 1300 +868 GOTO 770 +870 IF D2<20 THEN 890 +880 PRINT "TOO MUCH CLUB. YOU'RE PAST THE HOLE." +890 B=D +900 D=D2 +910 IF D2>27 THEN 1020 +920 IF D2>20 THEN 1100 +930 IF D2>.5 THEN 1120 +940 L(0)=9 +950 GOTO 1470 +952 IF S2+Q+(10*(F-1)/18)<(F-1)*(72+((H+1)/.85))/18 THEN 956 +954 GOTO 752 +956 Q=Q+1 +957 IF S1/2<>INT(S1/2) THEN 1011 +958 GOTO 862 +960 PRINT "NOW GAUGE YOUR DISTANCE BY A PERCENTAGE (1 TO 100)" +961 PRINT "OF A FULL SWING"; +970 INPUT W: W=W/100 +972 PRINT +980 IF W>1 THEN 680 +985 IF L(0)=5 THEN 1280 +990 IF C=14 THEN 760 +1000 C=C-10 +1010 GOTO 760 +1011 IF D<95 THEN 862 +1012 PRINT "BALL HIT TREE - BOUNCED INTO ROUGH";D-75;"YARDS FROM HOLE." +1014 D=D-75 +1018 GOTO 620 +1020 IF O<30 THEN 1150 +1022 IF J>0 THEN 1150 +1030 IF T>0 THEN 1070 +1035 S9=(S2+1)/15 +1036 IF INT(S9)=S9 THEN 1075 +1040 PRINT "YOU HOOKED- "; +1050 L(0)=L(2) +1055 IF O>45 THEN 1092 +1060 GOTO 320 +1070 S9=(S2+1)/15 +1071 IF INT(S9)=S9 THEN 1040 +1075 PRINT "YOU SLICED- "; +1080 L(0)=L(1) +1090 GOTO 1055 +1092 PRINT "BADLY." +1094 GOTO 320 +1100 L(0)=5 +1110 GOTO 320 +1120 L(0)=8 +1130 D2=INT(D2*3) +1140 GOTO 1380 +1150 L(0)=1 +1160 GOTO 320 +1170 D1=INT(.85*D1) +1180 GOTO 830 +1190 IF L(0)>6 THEN 1260 +1200 PRINT "YOUR SHOT WENT INTO THE WATER." +1210 S1=S1+1 +1220 PRINT "PENALTY STROKE ASSESSED. HIT FROM PREVIOUS LOCATION." +1230 J=J+1 +1240 L(0)=1 +1242 D=B +1250 GOTO 620 +1260 PRINT "YOUR SHOT WENT OUT OF BOUNDS." +1270 GOTO 1210 +1280 IF T=3 THEN 1320 +1300 D2=1+(3*INT((80/(40-H))*RND(1))) +1310 GOTO 1380 +1320 IF RND(1)>N THEN 1360 +1330 N=N*.2 +1340 PRINT "SHOT DUBBED, STILL IN TRAP." +1350 GOTO 620 +1360 N=.8 +1370 GOTO 1300 +1380 PRINT "ON GREEN,";D2;"FEET FROM THE PIN." +1381 PRINT "CHOOSE YOUR PUTT POTENCY (1 TO 13):"; +1400 INPUT I +1410 S1=S1+1 +1420 IF S1+1-P>(H*.072)+2 THEN 1470 +1425 IF K>2 THEN 1470 +1428 K=K+1 +1430 IF T=4 THEN 1530 +1440 D2=D2-I*(4+2*RND(1))+1.5 +1450 IF D2<-2 THEN 1560 +1460 IF D2>2 THEN 1500 +1470 PRINT "YOU HOLED IT." +1472 PRINT +1480 F=F+1 +1490 GOTO 230 +1500 PRINT "PUTT SHORT." +1505 D2=INT(D2) +1510 GOTO 1380 +1530 D2=D2-I*(4+1*RND(1))+1 +1550 GOTO 1450 +1560 PRINT "PASSED BY CUP." +1570 D2=-D2 +1580 GOTO 1505 +1590 READ D,P,L(1),L(2) +1595 PRINT +1600 PRINT "YOU ARE AT THE TEE OFF HOLE";F;"DISTANCE";D;"YARDS, PAR";P +1605 G3=G3+P +1620 PRINT "ON YOUR RIGHT IS "; +1630 X=1 +1640 GOSUB 400 +1650 PRINT "ON YOUR LEFT IS "; +1660 X=2 +1670 GOSUB 400 +1680 GOTO 620 +1690 RETURN +1700 DATA 361,4,4,2,389,4,3,3,206,3,4,2,500,5,7,2 +1702 DATA 408,4,2,4,359,4,6,4,424,4,4,2,388,4,4,4 +1704 DATA 196,3,7,2,400,4,7,2,560,5,7,2,132,3,2,2 +1706 DATA 357,4,4,4,294,4,2,4,475,5,2,3,375,4,4,2 +1708 DATA 180,3,6,2,550,5,6,6 +1710 PRINT +1750 G2=G2+S1 +1760 PRINT "TOTAL PAR FOR";F-1;"HOLES IS";G3;" YOUR TOTAL IS";G2 +1761 IF G1=F-1 THEN 1770 +1765 GOTO 292 +1770 END diff --git a/GAMES/gomoko.bas b/GAMES/gomoko.bas new file mode 100644 index 0000000..662cca1 --- /dev/null +++ b/GAMES/gomoko.bas @@ -0,0 +1,54 @@ +2 PRINT TAB(33);"GOMOKO" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +8 DIM A(19,19) +10 PRINT "WELCOME TO THE ORIENTAL GAME OF GOMOKO." +20 PRINT: PRINT "THE GAME IS PLAYED ON AN N BY N GRID OF A SIZE" +30 PRINT "THAT YOU SPECIFY. DURING YOUR PLAY, YOU MAY COVER ONE GRID" +40 PRINT "INTERSECTION WITH A MARKER. THE OBJECT OF THE GAME IS TO GET" +50 PRINT "5 ADJACENT MARKERS IN A ROW -- HORIZONTALLY, VERTICALLY, OR" +60 PRINT "DIAGONALLY. ON THE BOARD DIAGRAM, YOUR MOVES ARE MARKED" +70 PRINT "WITH A '1' AND THE COMPUTER MOVES WITH A '2'." +80 PRINT: PRINT "THE COMPUTER DOES NOT KEEP TRACK OF WHO HAS WON." +90 PRINT "TO END THE GAME, TYPE -1,-1 FOR YOUR MOVE.": PRINT +110 PRINT "WHAT IS YOUR BOARD SIZE (MIN 7/ MAX 19)";: INPUT N +115 IF N>6 THEN 117 +116 GOTO 120 +117 IF N<20 THEN 210 +120 PRINT "I SAID, THE MINIMUM IS 7, THE MAXIMUM IS 19.": GOTO 110 +210 FOR I=1 TO N:FOR J=1 TO N: A(I,J)=0: NEXT J: NEXT I +300 PRINT: PRINT "WE ALTERNATE MOVES. YOU GO FIRST...": PRINT +310 PRINT "YOUR PLAY (I,J)";: INPUT I,J +315 PRINT +320 IF I=-1 THEN 980 +330 X=I: Y=J: GOSUB 910: IF L=1 THEN 410 +340 PRINT "ILLEGAL MOVE. TRY AGAIN...": GOTO 310 +410 IF A(I,J)=0 THEN 440 +420 PRINT "SQUARE OCCUPIED. TRY AGAIN...": GOTO 310 +440 A(I,J)=1 +500 REM *** COMPUTER TRIES AN INTELLIGENT MOVE *** +510 FOR E=-1 TO 1: FOR F=-1 TO 1: IF E+F-E*F=0 THEN 590 +540 X=I+F: Y=J+F: GOSUB 910 +570 IF L=0 THEN 590 +580 IF A(X,Y)=1 THEN 710 +590 NEXT F: NEXT E +600 REM *** COMPUTER TRIES A RANDOM MOVE *** +610 X=INT(N*RND(1)+1): Y=INT(N*RND(1)+1): GOSUB 910: IF L=0 THEN 610 +650 IF A(X,Y)<>0 THEN 610 +660 A(X,Y)=2: GOSUB 810: GOTO 310 +710 X=I-E: Y=J-F: GOSUB 910 +750 IF L=0 THEN 610 +760 GOTO 650 +800 REM *** PRINT THE BOARD *** +810 FOR I=1 TO N: FOR J=1 TO N: PRINT A(I,J); +840 NEXT J: PRINT: NEXT I: PRINT: RETURN +910 L=1: IF X<1 THEN 970 +920 IF X>N THEN 970 +930 IF Y<1 THEN 970 +940 IF Y>N THEN 970 +950 RETURN +970 L=0: RETURN +980 PRINT: PRINT "THANKS FOR THE GAME!!" +985 PRINT "PLAY AGAIN (1 FOR YES, 0 FOR NO)";: INPUT Q +990 IF Q=1 THEN 110 +999 END diff --git a/GAMES/guess.bas b/GAMES/guess.bas new file mode 100644 index 0000000..96c57af --- /dev/null +++ b/GAMES/guess.bas @@ -0,0 +1,40 @@ +1 PRINT TAB(33);"GUESS" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 PRINT "THIS IS A NUMBER GUESSING GAME. I'LL THINK" +5 PRINT "OF A NUMBER BETWEEN 1 AND ANY LIMIT YOU WANT." +6 PRINT "THEN YOU HAVE TO GUESS WHAT IT IS." +7 PRINT +8 PRINT "WHAT LIMIT DO YOU WANT"; +9 INPUT L +10 PRINT +11 L1=INT(LOG(L)/LOG(2))+1 +12 PRINT "I'M THINKING OF A NUMBER BETWEEN 1 AND";L +13 G=1 +14 PRINT "NOW YOU TRY TO GUESS WHAT IT IS." +15 M=INT(L*RND(1)+1) +20 INPUT N +21 IF N>0 THEN 25 +22 GOSUB 70 +23 GOTO 1 +25 IF N=M THEN 50 +30 G=G+1 +31 IF N>M THEN 40 +32 PRINT "TOO LOW. TRY A BIGGER ANSWER." +33 GOTO 20 +40 PRINT "TOO HIGH. TRY A SMALLER ANSWER." +42 GOTO 20 +50 PRINT "THAT'S IT! YOU GOT IT IN";G;"TRIES." +52 IF G89 THEN 250 +430 IF B<1 THEN 230 +440 S=S+1 +442 IF S<6 THEN 450 +444 PRINT:PRINT "BOOM !!!! YOU HAVE JUST BEEN DESTROYED "; +446 PRINT "BY THE ENEMY." : PRINT : PRINT : PRINT : GOTO 495 +450 B2=2*B/57.3 : I=R*SIN(B2) : X=T-I : E=INT(X) +460 IF ABS(E)<100 THEN 320 +470 IF E>100 THEN 290 +480 GOTO 270 +490 PRINT : PRINT : PRINT "TOTAL ROUNDS EXPENDED WERE:";S1 +492 IF S1>18 THEN 495 +493 PRINT "NICE SHOOTING !!" : GOTO 500 +495 PRINT "BETTER GO BACK TO FORT SILL FOR REFRESHER TRAINING!" +500 PRINT : INPUT "TRY AGAIN (Y OR N)";Z$ +510 IF Z$="Y" THEN 170 +520 PRINT:PRINT "OK. RETURN TO BASE CAMP." +999 END diff --git a/GAMES/hamurabi.bas b/GAMES/hamurabi.bas new file mode 100644 index 0000000..8f0998f --- /dev/null +++ b/GAMES/hamurabi.bas @@ -0,0 +1,119 @@ +10 PRINT TAB(32);"HAMURABI" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +80 PRINT "TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA" +90 PRINT "FOR A TEN-YEAR TERM OF OFFICE.":PRINT +95 D1=0: P1=0 +100 Z=0: P=95:S=2800: H=3000: E=H-S +110 Y=3: A=H/Y: I=5: Q=1 +210 D=0 +215 PRINT:PRINT:PRINT "HAMURABI: I BEG TO REPORT TO YOU,": Z=Z+1 +217 PRINT "IN YEAR";Z;",";D;"PEOPLE STARVED,";I;"CAME TO THE CITY," +218 P=P+I +227 IF Q>0 THEN 230 +228 P=INT(P/2) +229 PRINT "A HORRIBLE PLAGUE STRUCK! HALF THE PEOPLE DIED." +230 PRINT "POPULATION IS NOW";P +232 PRINT "THE CITY NOW OWNS ";A;"ACRES." +235 PRINT "YOU HARVESTED";Y;"BUSHELS PER ACRE." +250 PRINT "THE RATS ATE";E;"BUSHELS." +260 PRINT "YOU NOW HAVE ";S;"BUSHELS IN STORE.": PRINT +270 IF Z=11 THEN 860 +310 C=INT(10*RND(1)): Y=C+17 +312 PRINT "LAND IS TRADING AT";Y;"BUSHELS PER ACRE." +320 PRINT "HOW MANY ACRES DO YOU WISH TO BUY"; +321 INPUT Q: IF Q<0 THEN 850 +322 IF Y*Q<=S THEN 330 +323 GOSUB 710 +324 GOTO 320 +330 IF Q=0 THEN 340 +331 A=A+Q: S=S-Y*Q: C=0 +334 GOTO 400 +340 PRINT "HOW MANY ACRES DO YOU WISH TO SELL"; +341 INPUT Q: IF Q<0 THEN 850 +342 IF QC/2 THEN 530 +523 REM *** RATS ARE RUNNING WILD!! +525 E=INT(S/C) +530 S=S-E+H +531 GOSUB 800 +532 REM *** LET'S HAVE SOME BABIES +533 I=INT(C*(20*A+S)/P/100+1) +539 REM *** HOW MANY PEOPLE HAD FULL TUMMIES? +540 C=INT(Q/20) +541 REM *** HORROS, A 15% CHANCE OF PLAGUE +542 Q=INT(10*(2*RND(1)-.3)) +550 IF P.45*P THEN 560 +553 P1=((Z-1)*P1+D*100/P)/Z +555 P=C: D1=D1+D: GOTO 215 +560 PRINT: PRINT "YOU STARVED";D;"PEOPLE IN ONE YEAR!!!" +565 PRINT "DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY" +566 PRINT "BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU HAVE" +567 PRINT "ALSO BEEN DECLARED NATIONAL FINK!!!!": GOTO 990 +710 PRINT "HAMURABI: THINK AGAIN. YOU HAVE ONLY" +711 PRINT S;"BUSHELS OF GRAIN. NOW THEN," +712 RETURN +720 PRINT "HAMURABI: THINK AGAIN. YOU OWN ONLY";A;"ACRES. NOW THEN," +730 RETURN +800 C=INT(RND(1)*5)+1 +801 RETURN +850 PRINT: PRINT "HAMURABI: I CANNOT DO WHAT YOU WISH." +855 PRINT "GET YOURSELF ANOTHER STEWARD!!!!!" +857 GOTO 990 +860 PRINT "IN YOUR 10-YEAR TERM OF OFFICE,";P1;"PERCENT OF THE" +862 PRINT "POPULATION STARVED PER YEAR ON THE AVERAGE, I.E. A TOTAL OF" +865 PRINT D1;"PEOPLE DIED!!": L=A/P +870 PRINT "YOU STARTED WITH 10 ACRES PER PERSON AND ENDED WITH" +875 PRINT L;"ACRES PER PERSON.": PRINT +880 IF P1>33 THEN 565 +885 IF L<7 THEN 565 +890 IF P1>10 THEN 940 +892 IF L<9 THEN 940 +895 IF P1>3 THEN 960 +896 IF L<10 THEN 960 +900 PRINT "A FANTASTIC PERFORMANCE!!! CHARLEMANGE, DISRAELI, AND" +905 PRINT "JEFFERSON COMBINED COULD NOT HAVE DONE BETTER!":GOTO 990 +940 PRINT "YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV." +945 PRINT "THE PEOPLE (REMIANING) FIND YOU AN UNPLEASANT RULER, AND," +950 PRINT "FRANKLY, HATE YOUR GUTS!!":GOTO 990 +960 PRINT "YOUR PERFORMANCE COULD HAVE BEEN SOMEWHAT BETTER, BUT" +965 PRINT "REALLY WASN'T TOO BAD AT ALL. ";INT(P*.8*RND(1));"PEOPLE" +970 PRINT "WOULD DEARLY LIKE TO SEE YOU ASSASSINATED BUT WE ALL HAVE OUR" +975 PRINT "TRIVIAL PROBLEMS." +990 PRINT: FOR N=1 TO 10: PRINT CHR$(7);: NEXT N +995 PRINT "SO LONG FOR NOW.": PRINT +999 END diff --git a/GAMES/hangman.bas b/GAMES/hangman.bas new file mode 100644 index 0000000..cdd1b15 --- /dev/null +++ b/GAMES/hangman.bas @@ -0,0 +1,81 @@ +10 PRINT TAB(32);"HANGMAN" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +25 PRINT:PRINT:PRINT +30 DIM P$(12,12),L$(20),D$(20),N$(26),U(50) +40 C=1: N=50 +50 FOR I=1 TO 20: D$(I)="-": NEXT I: M=0 +60 FOR I=1 TO 26: N$(I)="": NEXT I +70 FOR I=1 TO 12: FOR J=1 TO 12: P$(I,J)=" ": NEXT J: NEXT I +80 FOR I=1 TO 12: P$(I,1)="X": NEXT I +90 FOR I=1 TO 7: P$(1,I)="X": NEXT: P$(2,7)="X" +95 IF C10 THEN 170 +600 PRINT "SORRY, YOU LOSE. THE WORD WAS ";A$ +610 PRINT "YOU MISSED THAT ONE. DO YOU ";: GOTO 370 +620 INPUT "TYPE YES OR NO";Y$: IF LEFT$(Y$,1)="Y" THEN 50 +700 DATA "GUM","SIN","FOR","CRY","LUG","BYE","FLY" +710 DATA "UGLY","EACH","FROM","WORK","TALK","WITH","SELF" +720 DATA "PIZZA","THING","FEIGN","FIEND","ELBOW","FAULT","DIRTY" +730 DATA "BUDGET","SPIRIT","QUAINT","MAIDEN","ESCORT","PICKAX" +740 DATA "EXAMPLE","TENSION","QUININE","KIDNEY","REPLICA","SLEEPER" +750 DATA "TRIANGLE","KANGAROO","MAHOGANY","SERGEANT","SEQUENCE" +760 DATA "MOUSTACHE","DANGEROUS","SCIENTIST","DIFFERENT","QUIESCENT" +770 DATA "MAGISTRATE","ERRONEOUSLY","LOUDSPEAKER","PHYTOTOXIC" +780 DATA "MATRIMONIAL","PARASYMPATHOMIMETIC","THIGMOTROPISM" +990 PRINT "BYE NOW" +999 END diff --git a/GAMES/hello.bas b/GAMES/hello.bas new file mode 100644 index 0000000..75f5d9b --- /dev/null +++ b/GAMES/hello.bas @@ -0,0 +1,83 @@ +2 PRINT TAB(33);"HELLO" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 PRINT "HELLO. MY NAME IS CREATIVE COMPUTER." +20 PRINT: PRINT: INPUT "WHAT'S YOUR NAME";N$: PRINT +30 PRINT "HI THERE, ";N$;", ARE YOU ENJOYING YOURSELF HERE"; +40 INPUT B$: PRINT +50 IF B$="YES" THEN 70 +55 IF B$="NO" THEN 80 +60 PRINT N$;", I DON'T UNDERSTAND YOUR ANSWER OF '";B$;"'." +65 PRINT "PLEASE ANSWER 'YES' OR 'NO'. DO YOU LIKE IT HERE";: GOTO 40 +70 PRINT "I'M GLAD TO HEAR THAT, ";N$;".": PRINT +75 GOTO 100 +80 PRINT "OH, I'M SORRY TO HEAR THAT, ";N$;". MAYBE WE CAN" +85 PRINT "BRIGHTEN UP YOUR VISIT A BIT." +100 PRINT +105 PRINT "SAY, ";N$;", I CAN SOLVE ALL KINDS OF PROBLEMS EXCEPT" +110 PRINT "THOSE DEALING WITH GREECE. WHAT KIND OF PROBLEMS DO" +120 PRINT "YOU HAVE (ANSWER SEX, HEALTH, MONEY, OR JOB)"; +125 INPUT C$ +126 PRINT +130 IF C$="SEX" THEN 200 +132 IF C$="HEALTH" THEN 180 +134 IF C$="MONEY" THEN 160 +136 IF C$="JOB" THEN 145 +138 PRINT "OH, ";N$;", YOUR ANSWER OF ";C$;" IS GREEK TO ME." +140 GOTO 250 +145 PRINT "I CAN SYMPATHIZE WITH YOU ";N$;". I HAVE TO WORK" +148 PRINT "VERY LONG HOURS FOR NO PAY -- AND SOME OF MY BOSSES" +150 PRINT "REALLY BEAT ON MY KEYBOARD. MY ADVICE TO YOU, ";N$;"," +153 PRINT "IS TO OPEN A RETAIL COMPUTER STORE. IT'S GREAT FUN." +155 GOTO 250 +160 PRINT "SORRY, ";N$;", I'M BROKE TOO. WHY DON'T YOU SELL" +162 PRINT "ENCYCLOPEADIAS OR MARRY SOMEONE RICH OR STOP EATING" +164 PRINT "SO YOU WON'T NEED SO MUCH MONEY?" +170 GOTO 250 +180 PRINT "MY ADVICE TO YOU ";N$;" IS:" +185 PRINT " 1. TAKE TWO ASPRIN" +188 PRINT " 2. DRINK PLENTY OF FLUIDS (ORANGE JUICE, NOT BEER!)" +190 PRINT " 3. GO TO BED (ALONE)" +195 GOTO 250 +200 INPUT "IS YOUR PROBLEM TOO MUCH OR TOO LITTLE";D$: PRINT +210 IF D$="TOO MUCH" THEN 220 +212 IF D$="TOO LITTLE" THEN 230 +215 PRINT "DON'T GET ALL SHOOK, ";N$;", JUST ANSWER THE QUESTION" +217 INPUT "WITH 'TOO MUCH' OR 'TOO LITTLE'. WHICH IS IT";D$:GOTO 210 +220 PRINT "YOU CALL THAT A PROBLEM?!! I SHOULD HAVE SUCH PROBLEMS!" +225 PRINT "IF IT BOTHERS YOU, ";N$;", TAKE A COLD SHOWER." +228 GOTO 250 +230 PRINT "WHY ARE YOU HERE IN SUFFERN, ";N$;"? YOU SHOULD BE" +235 PRINT "IN TOKYO OR NEW YORK OR AMSTERDAM OR SOMEPLACE WITH SOME" +240 PRINT "REAL ACTION." +250 PRINT +255 PRINT "ANY MORE PROBLEMS YOU WANT SOLVED, ";N$; +260 INPUT E$: PRINT +270 IF E$="YES" THEN 280 +273 IF E$="NO" THEN 300 +275 PRINT "JUST A SIMPLE 'YES' OR 'NO' PLEASE, ";N$;"." +277 GOTO 255 +280 PRINT "WHAT KIND (SEX, MONEY, HEALTH, JOB)"; +282 GOTO 125 +300 PRINT +302 PRINT "THAT WILL BE $5.00 FOR THE ADVICE, ";N$;"." +305 PRINT "PLEASE LEAVE THE MONEY ON THE TERMINAL." +307 FOR I=1 TO 2000: NEXT I +310 PRINT: PRINT: PRINT +315 PRINT "DID YOU LEAVE THE MONEY"; +320 INPUT G$: PRINT +325 IF G$="YES" THEN 350 +330 IF G$="NO" THEN 370 +335 PRINT "YOUR ANSWER OF '";G$;"' CONFUSES ME, ";N$;"." +340 PRINT "PLEASE RESPOND WITH 'YES' OR 'NO'.": GOTO 315 +350 PRINT "HEY, ";N$;"??? YOU LEFT NO MONEY AT ALL!" +355 PRINT "YOU ARE CHEATING ME OUT OF MY HARD-EARNED LIVING." +360 PRINT:PRINT "WHAT A RIP OFF, ";N$;"!!!":PRINT +365 GOTO 385 +370 PRINT "THAT'S HONEST, ";N$;", BUT HOW DO YOU EXPECT" +375 PRINT "ME TO GO ON WITH MY PSYCHOLOGY STUDIES IF MY PATIENTS" +380 PRINT "DON'T PAY THEIR BILLS?" +385 PRINT:PRINT "TAKE A WALK, ";N$;".":PRINT:PRINT:GOTO 999 +390 PRINT "NICE MEETING YOU, ";N$;", HAVE A NICE DAY." +400 REM +999 END diff --git a/GAMES/hexapawn.bas b/GAMES/hexapawn.bas new file mode 100644 index 0000000..31d2ffe --- /dev/null +++ b/GAMES/hexapawn.bas @@ -0,0 +1,175 @@ +1 PRINT TAB(32);"HEXAPAWN" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 REM HEXAPAWN: INTERPRETATION OF HEXAPAWN GAME AS PRESENTED IN +5 REM MARTIN GARDNER'S "THE UNEXPECTED HANGING AND OTHER MATHEMATIC- +6 REM AL DIVERSIONS", CHAPTER EIGHT: A MATCHBOX GAME-LEARNING MACHINE +7 REM ORIGINAL VERSION FOR H-P TIMESHARE SYSTEM BY R.A. KAAPKE 5/5/76 +8 REM INSTRUCTIONS BY JEFF DALTON +9 REM CONVERSION TO MITS BASIC BY STEVE NORTH +10 DIM B(19,9),M(19,4),S(9),P$(3) +15 W=0: L=0 +20 DEF FNS(X)=-X*(X=2 OR X=5 OR X=8) +25 DEF FNR(X)=-3*(X=1)-(X=3)-4*(X=6)-6*(X=4)-7*(X=9)-9*(X=7)+FNS(X) +30 DEF FNM(Y)=Y-INT(Y/10)*10 +35 P$="X.O" +40 FOR I=1 TO 19: FOR J=1 TO 9: READ B(I,J): NEXT J: NEXT I +45 FOR I=1 TO 19: FOR J=1 TO 4: READ M(I,J): NEXT J: NEXT I +50 PRINT "INSTRUCTIONS (Y-N)"; +60 INPUT A$ +70 A$=LEFT$(A$,1) +80 IF A$="Y" THEN 2000 +90 IF A$<>"N" THEN 50 +100 X=0: Y=0 +111 S(4)=0: S(5)=0: S(6)=0 +112 S(1)=-1: S(2)=-1: S(3)=-1 +113 S(7)=1: S(8)=1: S(9)=1 +115 GOSUB 1000 +120 PRINT "YOUR MOVE"; +121 INPUT M1,M2 +122 IF M1=INT(M1)AND M2=INT(M2)AND M1>0 AND M1<10 AND M2>0 AND M2<10 THEN 130 +123 PRINT "ILLEGAL CO-ORDINATES." +124 GOTO 120 +130 IF S(M1)=1 THEN 150 +140 PRINT "ILLEGAL MOVE.": GOTO 120 +150 IF S(M2)=1 THEN 140 +160 IF M2-M1<>-3 AND S(M2)<>-1 THEN 140 +170 IF M2>M1 THEN 140 +180 IF M2-M1=-3 AND (S(M2)<>0) THEN 140 +185 IF M2-M1<-4 THEN 140 +186 IF M1=7 AND M2=3 THEN 140 +190 S(M1)=0 +200 S(M2)=1 +205 GOSUB 1000 +210 IF S(1)=1 OR S(2)=1 OR S(3)=1 THEN 820 +220 FOR I=1 TO 9 +221 IF S(I)=-1 THEN 230 +222 NEXT I +223 GOTO 820 +230 FOR I=1 TO 9 +240 IF S(I)<>-1 THEN 330 +250 IF S(I+3)=0 THEN 350 +260 IF FNR(I)=I THEN 320 +270 IF I>3 THEN 300 +280 IF S(5)=1 THEN 350 +290 GOTO 330 +300 IF S(8)=1 THEN 350 +310 GOTO 330 +320 IF S(I+2)=1 OR S(I+4)=1 THEN 350 +330 NEXT I +340 GOTO 820 +350 FOR I=1 TO 19 +360 FOR J=1 TO 3 +370 FOR K=3 TO 1 STEP -1 +380 T((J-1)*3+K)=B(I,(J-1)*3+4-K) +390 NEXT K +400 NEXT J +410 FOR J=1 TO 9 +420 IF S(J)<>B(I,J) THEN 460 +430 NEXT J +440 R=0 +450 GOTO 540 +460 FOR J=1 TO 9 +470 IF S(J)<>T(J) THEN 510 +480 NEXT J +490 R=1 +500 GOTO 540 +510 NEXT I +511 REM EMBER THE TERMINATION OF THIS LOOP IS IMPOSSIBLE +512 PRINT "ILLEGAL BOARD PATTERN." +530 STOP +540 X=I +550 FOR I=1 TO 4 +560 IF M(X,I)<>0 THEN 600 +570 NEXT I +580 PRINT "I RESIGN." +590 GOTO 820 +600 Y=INT(RND(1)*4+1) +601 IF M(X,Y)=0 THEN 600 +610 IF R<>0 THEN 630 +620 PRINT "I MOVE FROM ";STR$(INT(M(X,Y)/10));" TO ";STR$(FNM(M(X,Y))) +622 S(INT(M(X,Y)/10))=0 +623 S(FNM(M(X,Y)))=-1 +624 GOTO 640 +630 PRINT "I MOVE FROM ";STR$(FNR(INT(M(X,Y)/10)));" TO "; +631 PRINT STR$(FNR(FNM(M(X,Y)))) +632 S(FNR(INT(M(X,Y)/10)))=0 +633 S(FNR(FNM(M(X,Y))))=-1 +640 GOSUB 1000 +641 IF S(7)=-1 OR S(8)=-1 OR S(9)=-1 THEN 870 +650 FOR I=1 TO 9 +660 IF S(I)=1 THEN 690 +670 NEXT I +680 GOTO 870 +690 FOR I=1 TO 9 +700 IF S(I)<>1 THEN 790 +710 IF S(I-3)=0 THEN 120 +720 IF FNR(I)=I THEN 780 +730 IF I<7 THEN 760 +740 IF S(5)=-1 THEN 120 +750 GOTO 790 +760 IF S(2)=-1 THEN 120 +770 GOTO 790 +780 IF S(I-2)=-1 OR S(I-4)=-1 THEN 120 +790 NEXT I +800 PRINT "YOU CAN'T MOVE, SO "; +810 GOTO 870 +820 PRINT "YOU WIN." +830 M(X,Y)=0 +840 L=L+1 +850 PRINT "I HAVE WON";W;"AND YOU";L;"OUT OF";L+W;"GAMES." +851 PRINT +860 GOTO 100 +870 PRINT "I WIN." +880 W=W+1 +890 GOTO 850 +900 DATA -1,-1,-1,1,0,0,0,1,1,-1,-1,-1,0,1,0,1,0,1 +905 DATA -1,0,-1,-1,1,0,0,0,1,0,-1,-1,1,-1,0,0,0,1 +910 DATA -1,0,-1,1,1,0,0,1,0,-1,-1,0,1,0,1,0,0,1 +915 DATA 0,-1,-1,0,-1,1,1,0,0,0,-1,-1,-1,1,1,1,0,0 +920 DATA -1,0,-1,-1,0,1,0,1,0,0,-1,-1,0,1,0,0,0,1 +925 DATA 0,-1,-1,0,1,0,1,0,0,-1,0,-1,1,0,0,0,0,1 +930 DATA 0,0,-1,-1,-1,1,0,0,0,-1,0,0,1,1,1,0,0,0 +935 DATA 0,-1,0,-1,1,1,0,0,0,-1,0,0,-1,-1,1,0,0,0 +940 DATA 0,0,-1,-1,1,0,0,0,0,0,-1,0,1,-1,0,0,0,0 +945 DATA -1,0,0,-1,1,0,0,0,0 +950 DATA 24,25,36,0,14,15,36,0,15,35,36,47,36,58,59,0 +955 DATA 15,35,36,0,24,25,26,0,26,57,58,0 +960 DATA 26,35,0,0,47,48,0,0,35,36,0,0,35,36,0,0 +965 DATA 36,0,0,0,47,58,0,0,15,0,0,0 +970 DATA 26,47,0,0,47,58,0,0,35,36,47,0,28,58,0,0,15,47,0,0 +1000 PRINT +1010 FOR I=1 TO 3 +1015 PRINT TAB(10); +1020 FOR J=1 TO 3 +1030 PRINT MID$(P$,S((I-1)*3+J)+2,1); +1040 NEXT J +1050 PRINT +1060 NEXT I +1070 PRINT +1080 RETURN +2000 PRINT: PRINT "THIS PROGRAM PLAYS THE GAME OF HEXAPAWN." +2010 PRINT "HEXAPAWN IS PLAYED WITH CHESS PAWNS ON A 3 BY 3 BOARD." +2020 PRINT "THE PAWNS ARE MOVED AS IN CHESS - ONE SPACE FORWARD TO" +2030 PRINT "AN EMPTY SPACE OR ONE SPACE FORWARD AND DIAGONALLY TO" +2040 PRINT "CAPTURE AN OPPOSING MAN. ON THE BOARD, YOUR PAWNS" +2050 PRINT "ARE 'O', THE COMPUTER'S PAWNS ARE 'X', AND EMPTY " +2060 PRINT "SQUARES ARE '.'. TO ENTER A MOVE, TYPE THE NUMBER OF" +2070 PRINT "THE SQUARE YOU ARE MOVING FROM, FOLLOWED BY THE NUMBER" +2080 PRINT "OF THE SQUARE YOU WILL MOVE TO. THE NUMBERS MUST BE" +2090 PRINT "SEPERATED BY A COMMA.": PRINT +2100 PRINT "THE COMPUTER STARTS A SERIES OF GAMES KNOWING ONLY WHEN" +2105 PRINT "THE GAME IS WON (A DRAW IS IMPOSSIBLE) AND HOW TO MOVE." +2110 PRINT "IT HAS NO STRATEGY AT FIRST AND JUST MOVES RANDOMLY." +2120 PRINT "HOWEVER, IT LEARNS FROM EACH GAME. THUS, WINNING BECOMES" +2130 PRINT "MORE AND MORE DIFFICULT. ALSO, TO HELP OFFSET YOUR" +2140 PRINT "INITIAL ADVANTAGE, YOU WILL NOT BE TOLD HOW TO WIN THE" +2150 PRINT "GAME BUT MUST LEARN THIS BY PLAYING." +2160 PRINT: PRINT "THE NUMBERING OF THE BOARD IS AS FOLLOWS:" +2170 PRINT TAB(10);"123": PRINT TAB(10);"456": PRINT TAB(10);"789" +2180 PRINT: PRINT "FOR EXAMPLE, TO MOVE YOUR RIGHTMOST PAWN FORWARD," +2190 PRINT "YOU WOULD TYPE 9,6 IN RESPONSE TO THE QUESTION" +2200 PRINT "'YOUR MOVE ?'. SINCE I'M A GOOD SPORT, YOU'LL ALWAYS" +2210 PRINT "GO FIRST.": PRINT +2220 GOTO 100 +9999 END diff --git a/GAMES/hi-q.bas b/GAMES/hi-q.bas new file mode 100644 index 0000000..0552dc7 --- /dev/null +++ b/GAMES/hi-q.bas @@ -0,0 +1,135 @@ +1 PRINT TAB(33);"H-I-Q" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 DIM B(70),T(9,9) +5 PRINT "HERE IS THE BOARD:": PRINT +6 PRINT " ! ! !" +7 PRINT " 13 14 15": PRINT +8 PRINT " ! ! !" +9 PRINT " 22 23 24": PRINT +10 PRINT "! ! ! ! ! ! !" +11 PRINT "29 30 31 32 33 34 35": PRINT +12 PRINT "! ! ! ! ! ! !" +13 PRINT "38 39 40 41 42 43 44": PRINT +14 PRINT "! ! ! ! ! ! !" +15 PRINT "47 48 49 50 51 52 53": PRINT +16 PRINT " ! ! !" +17 PRINT " 58 59 60": PRINT +18 PRINT " ! ! !" +19 PRINT " 67 68 69": PRINT +20 PRINT "TO SAVE TYPING TIME, A COMPRESSED VERSION OF THE GAME BOARD" +22 PRINT "WILL BE USED DURING PLAY. REFER TO THE ABOVE ONE FOR PEG" +24 PRINT "NUMBERS. OK, LET'S BEGIN." +28 REM *** SET UP BOARD +29 FOR R=1 TO 9 +30 FOR C=1 TO 9 +31 IF (R-4)*(R-5)*(R-6)=0 THEN 40 +32 IF (C-4)*(C-5)*(C-6)=0 THEN 40 +35 T(R,C)=-5 +36 GOTO 50 +40 IF (R-1)*(C-1)*(R-9)*(C-9)=0 THEN 35 +42 T(R,C)=5 +50 NEXT C +60 NEXT R +65 T(5,5)=0: GOSUB 500 +70 REM *** INPUT MOVE AND CHECK ON LEGALITY +75 FOR W=1 TO 33 +77 READ M +79 DATA 13,14,15,22,23,24,29,30,31,32,33,34,35,38,39,40,41 +81 DATA 42,43,44,47,48,49,50,51,52,53,58,59,60,67,68,69 +83 B(M)=-7: NEXT W +86 B(41)=-3 +100 INPUT "MOVE WHICH PIECE";Z +110 IF B(Z)=-7 THEN 140 +120 PRINT "ILLEGAL MOVE, TRY AGAIN...": GOTO 100 +140 INPUT "TO WHERE";P +150 IF B(P)=0 THEN 120 +153 IF B(P)=-7 THEN 120 +156 IF Z=P THEN 100 +160 IF ((Z+P)/2)=INT((Z+P)/2) THEN 180 +170 GOTO 120 +180 IF (ABS(Z-P)-2)*(ABS(Z-P)-18)<>0 THEN 120 +190 GOSUB 1000 +200 GOSUB 500 +210 GOSUB 1500 +220 GOTO 100 +500 REM *** PRINT BOARD +510 FOR X=1 TO 9 +520 FOR Y=1 TO 9 +525 IF (X-1)*(X-9)*(Y-1)*(Y-9)=0 THEN 550 +530 IF (X-4)*(X-5)*(X-6)=0 THEN 570 +540 IF (Y-4)*(Y-5)*(Y-6)=0 THEN 570 +550 REM +560 GOTO 610 +570 IF T(X,Y)<>5 THEN 600 +580 PRINT TAB(Y*2);"!"; +590 GOTO 610 +600 PRINT TAB(Y*2);"O"; +610 REM +615 NEXT Y +620 PRINT +630 NEXT X +640 RETURN +1000 REM *** UPDATE BOARD +1005 C=1: FOR X=1 TO 9 +1020 FOR Y=1 TO 9 +1030 IF C<>Z THEN 1220 +1040 IF C+2<>P THEN 1080 +1045 IF T(X,Y+1)=0 THEN 120 +1050 T(X,Y+2)=5 +1060 T(X,Y+1)=0: B(C+1)=-3 +1070 GOTO 1200 +1080 IF C+18<>P THEN 1130 +1085 IF T(X+1,Y)=0 THEN 120 +1090 T(X+2,Y)=5: T(X+1,Y)=0: B(C+9)=-3 +1120 GOTO 1200 +1130 IF C-2<>P THEN 1170 +1135 IF T(X,Y-1)=0 THEN 120 +1140 T(X,Y-2)=5: T(X,Y-1)=0: B(C-1)=-3 +1160 GOTO 1200 +1170 IF C-18<>P THEN 1220 +1175 IF T(X-1,Y)=0 THEN 120 +1180 T(X-2,Y)=5: T(X-1,Y)=0: B(C-9)=-3 +1200 B(Z)=-3: B(P)=-7 +1210 T(X,Y)=0: GOTO 1240 +1220 C=C+1 +1225 NEXT Y +1230 NEXT X +1240 RETURN +1500 REM*** CHECK IF GAME IS OVER +1505 F=0 +1510 FOR R=2 TO 8 +1520 FOR C=2 TO 8 +1530 IF T(R,C)<>5 THEN 1580 +1535 F=F+1 +1540 FOR A=R-1 TO R+1 +1545 T=0 +1550 FOR B=C-1 TO C+1 +1560 T=T+T(A,B) +1561 NEXT B +1564 IF T<>10 THEN 1567 +1565 IF T(A,C)<>0 THEN 1630 +1567 NEXT A +1568 FOR X=C-1 TO C+1 +1569 T=0 +1570 FOR Y=R-1 TO R+1 +1571 T=T+T(Y,X) +1572 NEXT Y +1573 IF T<>10 THEN 1575 +1574 IF T(R,X)<>0 THEN 1630 +1575 NEXT X +1580 NEXT C +1590 NEXT R +1600 REM *** GAME IS OVER +1605 PRINT "THE GAME IS OVER." +1610 PRINT "YOU HAD";F;"PIECES REMAINING." +1611 IF F<>1 THEN 1615 +1612 PRINT "BRAVO! YOU MADE A PERFECT SCORE!" +1613 PRINT "SAVE THIS PAPER AS A RECORD OF YOUR ACCOMPLISHMENT!" +1615 PRINT: INPUT "PLAY AGAIN (YES OR NO)";A$ +1617 IF A$="NO" THEN 2000 +1618 RESTORE: GOTO 28 +1620 STOP +1630 RETURN +2000 PRINT: PRINT "SO LONG FOR NOW.": PRINT +2010 END diff --git a/GAMES/hilo.bas b/GAMES/hilo.bas new file mode 100644 index 0000000..f7ee1a4 --- /dev/null +++ b/GAMES/hilo.bas @@ -0,0 +1,29 @@ +10 PRINT TAB(34);"HI LO" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "THIS IS THE GAME OF HI LO.":PRINT +110 PRINT "YOU WILL HAVE 6 TRIES TO GUESS THE AMOUNT OF MONEY IN THE" +120 PRINT "HI LO JACKPOT, WHICH IS BETWEEN 1 AND 100 DOLLARS. IF YOU" +130 PRINT "GUESS THE AMOUNT, YOU WIN ALL THE MONEY IN THE JACKPOT!" +140 PRINT "THEN YOU GET ANOTHER CHANCE TO WIN MORE MONEY. HOWEVER," +150 PRINT "IF YOU DO NOT GUESS THE AMOUNT, THE GAME ENDS.":PRINT +160 R=0 +170 B=0:PRINT +180 Y=INT(100*RND(1)+1) +200 PRINT "YOUR GUESS"; +210 INPUT A +220 B=B+1 +230 IF A=Y THEN 300 +240 IF A>Y THEN 270 +250 PRINT "YOUR GUESS IS TOO LOW.":GOTO 280 +270 PRINT "YOUR GUESS IS TOO HIGH." +280 PRINT:IF B<6 THEN 200 +290 PRINT "YOU BLEW IT...TOO BAD...THE NUMBER WAS";Y +295 R=0:GOTO 350 +300 PRINT "GOT IT!!!!!!!!!! YOU WIN";Y;"DOLLARS." +310 R=R+Y +320 PRINT "YOUR TOTAL WINNINGS ARE NOW";R;"DOLLARS." +350 PRINT:PRINT "PLAY AGAIN (YES OR NO)"; +360 INPUT A$:IF A$="YES" THEN 170 +380 PRINT:PRINT "SO LONG. HOPE YOU ENJOYED YOURSELF!!!" +390 END diff --git a/GAMES/hockey.bas b/GAMES/hockey.bas new file mode 100644 index 0000000..db794a0 --- /dev/null +++ b/GAMES/hockey.bas @@ -0,0 +1,210 @@ +2 PRINT TAB(33);"HOCKEY" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 REM ROBERT PUOPOLO ALG. 1 140 MCCOWAN 6/7/73 HOCKEY +30 LET X=1 +40 PRINT:PRINT:PRINT +50 PRINT "WOULD YOU LIKE THE INSTRUCTIONS";:INPUT C$ +55 PRINT +60 IF C$="NO" THEN 90 +65 IF C$="YES" THEN 80 +70 PRINT "ANSWER YES OR NO!!":GOTO 50 +80 GOTO 1720 +90 DIM A$(7),B$(7),H(20),T(5),T1(5),T2(5),T3(5) +100 PRINT "ENTER THE TWO TEAMS";:INPUT A$(7),B$(7) +105 PRINT +110 PRINT "ENTER THE NUMBER OF MINUTES IN A GAME";:INPUT T6 +115 PRINT +120 IF T6<1 THEN 110:PRINT +130 PRINT "WOULD THE "; A$(7); " COACH ENTER HIS TEAM" +135 PRINT +140 FOR I=1 TO 6:PRINT "PLAYER";I;:INPUT A$(I):NEXT I:PRINT +150 PRINT "WOULD THE "; B$(7); " COACH DO THE SAME" +155 PRINT +160 FOR T=1 TO 6:PRINT "PLAYER";T;:INPUT B$(T):NEXT T:PRINT +170 PRINT "INPUT THE REFEREE FOR THIS GAME";:INPUT R$ +180 PRINT:PRINT TAB(10);A$(7);" STARTING LINEUP" +190 FOR T=1 TO 6:PRINT A$(T):NEXT T +200 PRINT:PRINT TAB(10);B$(7);" STARTING LINEUP" +210 FOR T=1 TO 6:PRINT B$(T):NEXT T:PRINT +220 PRINT "WE'RE READY FOR TONIGHTS OPENING FACE-OFF." +230 PRINT R$;" WILL DROP THE PUCK BETWEEN ";A$(2);" AND ";B$(2) +240 FOR L=1 TO T6:IF L=1 THEN 260 +250 PRINT "AND WE'RE READY FOR THE FACE-OFF" +260 C=INT(2*RND(X))+1:ON C GOTO 270,280 +270 PRINT A$(7);" HAS CONTROL OF THE PUCK":GOTO 290 +280 PRINT B$(7);" HAS CONTROL." +290 PRINT "PASS";:INPUT P:FOR N=1 TO 3:H(N)=0:NEXT N +300 IF P<0 THEN 290 +305 IF P>3 THEN 290 +310 FOR J=1 TO (P+2) +320 H(J)=INT(5*RND(X))+1 +330 NEXT J:IF H(J-1)=H(J-2) THEN 310 +331 IF P+2<3 THEN 350 +335 IF H(J-1)=H(J-3) THEN 310 +340 IF H(J-2)=H(J-3) THEN 310 +350 IF P=0 THEN 360 +355 GOTO 490 +360 INPUT "SHOT";S:IF S<1 THEN 360 +365 IF S>4 THEN 360 +370 ON C GOTO 380,480 +380 PRINT A$(H(J-1));:G=H(J-1):G1=0:G2=0 +390 ON S GOTO 400,420,440,460 +400 PRINT " LET'S A BOOMER GO FROM THE RED LINE!!" +410 Z=10:GOTO 890 +420 PRINT " FLIPS A WRISTSHOT DOWN THE ICE" +440 PRINT " BACKHANDS ONE IN ON THE GOALTENDER" +450 Z=25:GOTO 890 +460 PRINT " SNAPS A LONG FLIP SHOT" +470 Z=17:GOTO 890 +480 PRINT B$(H(J-1));:G1=0:G2=0:G=H(J-1):GOTO 390 +490 ON C GOTO 500,640 +500 ON P GOTO 510,540,570 +510 PRINT A$(H(J-2));" LEADS ";A$(H(J-1));" WITH A PERFECT PASS." +520 PRINT A$(H(J-1));" CUTTING IN!!!" +530 G=H(J-1):G1=H(J-2):G2=0:Z1=3:GOTO 770 +540 PRINT A$(H(J-2));" GIVES TO A STREAKING ";A$(H(J-1)) +550 PRINT A$(H(J-3));" COMES DOWN ON ";B$(5);" AND ";B$(4) +560 G=H(J-3):G1=H(J-1):G2=H(J-2):Z1=2:GOTO 770 +570 PRINT "OH MY GOD!! A ' 4 ON 2 ' SITUATION" +580 PRINT A$(H(J-3));" LEADS ";A$(H(J-2)) +590 PRINT A$(H(J-2));" IS WHEEELING THROUGH CENTER." +600 PRINT A$(H(J-2));" GIVES AND GOES WITH ";A$(H(J-1)) +610 PRINT "PRETTY PASSING!" +620 PRINT A$(H(J-1));" DROPS IT TO ";A$(H(J-4)) +630 G=H(J-4):G1=J(J-1):G2=H(J-2):Z1=1:GOTO 770 +640 ON P GOTO 650,670,720 +650 PRINT B$(H(J-1));" HITS ";B$(H(J-2));" FLYING DOWN THE LEFT SIDE" +660 G=H(J-2):G1=H(J-1):G2=0:Z1=3:GOTO 770 +670 PRINT "IT'S A ' 3 ON 2 '!" +680 PRINT "ONLY ";A$(4);" AND ";A$(5);" ARE BACK." +690 PRINT B$(H(J-2));" GIVES OFF TO ";B$(H(J-1)) +700 PRINT B$(H(J-1));" DROPS TO ";B$(H(J-3)) +710 G=H(J-3):G1=H(J-1):G2=H(J-2):Z1=2:GOTO 770 +720 PRINT " A ' 3 ON 2 ' WITH A ' TRAILER '!" +730 PRINT B$(H(J-4));" GIVES TO ";B$(H(J-2));" WHO SHUFFLES IT OFF TO" +740 PRINT B$(H(J-1));" WHO FIRES A WING TO WING PASS TO " +750 PRINT B$(H(J-3));" AS HE CUTS IN ALONE!!" +760 G=H(J-3):G1=H(J-1):G2=H(J-2):Z1=1:GOTO 770 +770 PRINT "SHOT";:INPUT S:IF S>4 THEN 770:IF S<1 THEN 770 +780 ON C GOTO 790,880 +790 PRINT A$(G);:ON S GOTO 800,820,840,860 +800 PRINT " LET'S A BIG SLAP SHOT GO!!" +810 Z=4:Z=Z+Z1:GOTO 890 +820 PRINT " RIPS A WRIST SHOT OFF" +830 Z=2:Z=Z+Z1:GOTO 890 +840 PRINT " GETS A BACKHAND OFF" +850 Z=3:Z=Z+Z1:GOTO 890 +860 PRINT " SNAPS OFF A SNAP SHOT" +870 Z=2:Z=Z+Z1:GOTO 890 +880 PRINT B$(G);:ON S GOTO 800,820,840,860 +890 PRINT "AREA";:INPUT A:IF A<1 THEN 890 +895 IF A>4 THEN 890 +900 ON C GOTO 910,920 +910 S2=S2+1:GOTO 930 +920 S3=S3+1 +930 A1=INT(4*RND(X))+1:IF A<>A1 THEN 1200 +940 H(20)=INT(100*RND(X))+1 +950 IF INT(H(20)/Z)=H(20)/Z THEN 1160 +960 ON C GOTO 970,980 +970 PRINT "GOAL ";A$(7):H(9)=H(9)+1:GOTO 990 +980 PRINT "SCORE ";B$(7):H(8)=H(8)+1 +990 FOR B1=1 TO 25:PRINT CHR$(7);:NEXT B1:PRINT +1000 PRINT "SCORE: ";:IF H(8)>H(9) THEN 1020 +1010 PRINT A$(7);":";H(9),B$(7);":";H(8):GOTO 1030 +1020 PRINT B$(7);":";H(8),A$(7);":";H(9) +1030 ON C GOTO 1040,1100 +1040 PRINT "GOAL SCORED BY: ";A$(G):IF G1=0 THEN 1070 +1050 IF G2=0 THEN 1080 +1060 PRINT " ASSISTED BY: ";A$(G1);" AND ";A$(G2):GOTO 1090 +1070 PRINT " UNASSISTED.":GOTO 1090 +1080 PRINT " ASSISTED BY: ";A$(G1) +1090 T(G)=T(G)+1:T1(G1)=T1(G1)+1:T1(G2)=T1(G2)+1:GOTO 1540 +1100 PRINT "GOAL SCORED BY: ";B$(G); +1110 IF G1=0 THEN 1130 +1115 IF G2=0 THEN 1140 +1120 PRINT " ASSISTED BY: ";B$(G1);" AND ";B$(G2):GOTO 1150 +1130 PRINT " UNASSISTED":GOTO 1150 +1140 PRINT " ASSISTED BY: ";B$(G1):GOTO 1150 +1150 T2(G)=T2(G)+1:T3(G1)=T3(G1)+1:T3(G2)=T3(G2)+1:GOTO 1540 +1160 A2=INT(100*RND(X))+1:IF INT(A2/4)=A2/4 THEN 1170 +1165 GOTO 1200 +1170 ON C GOTO 1180,1190 +1180 PRINT "SAVE ";B$(6);" -- REBOUND":GOTO 940 +1190 PRINT "SAVE ";A$(6);" -- FOLLOW UP":GOTO 940 +1200 S1=INT(6*RND(X))+1 +1210 ON C GOTO 1220,1380 +1220 ON S1 GOTO 1230,1260,1290,1300,1330,1350 +1230 PRINT "KICK SAVE AND A BEAUTY BY ";B$(6) +1240 PRINT "CLEARED OUT BY ";B$(3) +1250 GOTO 260 +1260 PRINT "WHAT A SPECTACULAR GLOVE SAVE BY ";B$(6) +1270 PRINT "AND ";B$(6);" GOLFS IT INTO THE CROWD" +1280 GOTO 1540 +1290 PRINT "SKATE SAVE ON A LOW STEAMER BY ";B$(6):GOTO 260 +1300 PRINT "PAD SAVE BY ";B$(6);" OFF THE STICK" +1310 PRINT "OF ";A$(G);" AND ";B$(6);" COVERS UP" +1320 GOTO 1540 +1330 PRINT "WHISTLES ONE OVER THE HEAD OF ";B$(6) +1340 GOTO 260 +1350 PRINT B$(6);" MAKES A FACE SAVE!! AND HE IS HURT" +1360 PRINT "THE DEFENSEMAN ";B$(5);" COVERS UP FOR HIM" +1370 GOTO 1540 +1380 ON S1 GOTO 1390,1410,1440,1470,1490,1520 +1390 PRINT "STICK SAVE BY ";A$(6) +1400 PRINT "AND CLEARED OUT BY ";A$(4):GOTO 260 +1410 PRINT "OH MY GOD!! ";B$(G);" RATTLES ONE OFF THE POST" +1420 PRINT "TO THE RIGHT OF ";A$(6);" AND ";A$(6);" COVERS "; +1430 PRINT "ON THE LOOSE PUCK!":GOTO 1540 +1440 PRINT "SKATE SAVE BY ";A$(6) +1450 PRINT A$(6);" WHACKS THE LOOSE PUCK INTO THE STANDS" +1460 GOTO 1540 +1470 PRINT "STICK SAVE BY ";A$(6);" AND HE CLEARS IT OUT HIMSELF" +1480 GOTO 260 +1490 PRINT "KICKED OUT BY ";A$(6) +1500 PRINT "AND IT REBOUNDS ALL THE WAY TO CENTER ICE" +1510 GOTO 260 +1520 PRINT "GLOVE SAVE ";A$(6);" AND HE HANGS ON" +1530 GOTO 1540 +1540 NEXT L:FOR N=1 TO 30:PRINT CHR$(7);:NEXT N:PRINT "THAT'S THE SIREN" +1550 PRINT:PRINT TAB(15);"FINAL SCORE:" +1560 IF H(8)>H(9) THEN 1580 +1570 PRINT A$(7);":";H(9),B$(7);":";H(8):GOTO 1590 +1580 PRINT B$(7);":";H(8),A$(7);":";H(9) +1590 PRINT: PRINT TAB(10);"SCORING SUMMARY":PRINT +1600 PRINT TAB(25);A$(7) +1610 PRINT TAB(5);"NAME";TAB(20);"GOALS";TAB(35);"ASSISTS" +1620 PRINT TAB(5);"----";TAB(20);"-----";TAB(35);"-------" +1630 FOR I=1 TO 5:PRINT TAB(5);A$(I);TAB(21);T(I);TAB(36);T1(I) +1640 NEXT I:PRINT +1650 PRINT TAB(25);B$(7) +1660 PRINT TAB(5);"NAME";TAB(20);"GOALS";TAB(35);"ASSISTS" +1670 PRINT TAB(5);"----";TAB(20);"-----";TAB(35);"-------" +1680 FOR T=1 TO 5:PRINT TAB(5);B$(T);TAB(21);T2(T);TAB(36);T3(T) +1690 NEXT T:PRINT +1700 PRINT "SHOTS ON NET":PRINT A$(7);":";S2:PRINT B$(7);":";S3 +1710 END +1720 PRINT: PRINT "THIS IS A SIMULATED HOCKEY GAME." +1730 PRINT "QUESTION RESPONSE" +1740 PRINT "PASS TYPE IN THE NUMBER OF PASSES YOU WOULD" +1750 PRINT " LIKE TO MAKE, FROM 0 TO 3." +1760 PRINT "SHOT TYPE THE NUMBER CORRESPONDING TO THE SHOT" +1770 PRINT " YOU WANT TO MAKE. ENTER:" +1780 PRINT " 1 FOR A SLAPSHOT" +1790 PRINT " 2 FOR A WRISTSHOT" +1800 PRINT " 3 FOR A BACKHAND" +1810 PRINT " 4 FOR A SNAP SHOT" +1820 PRINT "AREA TYPE IN THE NUMBER CORRESPONDING TO" +1830 PRINT " THE AREA YOU ARE AIMING AT. ENTER:" +1840 PRINT " 1 FOR UPPER LEFT HAND CORNER" +1850 PRINT " 2 FOR UPPER RIGHT HAND CORNER" +1860 PRINT " 3 FOR LOWER LEFT HAND CORNER" +1870 PRINT " 4 FOR LOWER RIGHT HAND CORNER" +1880 PRINT +1890 PRINT "AT THE START OF THE GAME, YOU WILL BE ASKED FOR THE NAMES" +1900 PRINT "OF YOUR PLAYERS. THEY ARE ENTERED IN THE ORDER: " +1910 PRINT "LEFT WING, CENTER, RIGHT WING, LEFT DEFENSE," +1920 PRINT "RIGHT DEFENSE, GOALKEEPER. ANY OTHER INPUT REQUIRED WILL" +1930 PRINT "HAVE EXPLANATORY INSTRUCTIONS." +1940 GOTO 90 +1950 END diff --git a/GAMES/horsrace.bas b/GAMES/horsrace.bas new file mode 100644 index 0000000..c05230d --- /dev/null +++ b/GAMES/horsrace.bas @@ -0,0 +1,131 @@ +100 PRINT TAB(31);"HORSERACE" +110 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +120 PRINT:PRINT:PRINT +210 DIM S(10),M(10) +220 PRINT "WELCOME TO SOUTH PORTLAND HIGH RACETRACK" +230 PRINT " ...OWNED BY LAURIE CHEVALIER" +240 PRINT "DO YOU WANT DIRECTIONS"; +250 INPUT X$ +260 IF X$="NO" THEN 320 +270 PRINT"UP TO 10 MAY PLAY. A TABLE OF ODDS WILL BE PRINTED. YOU" +280 PRINT"MAY BET ANY + AMOUNT UNDER 100000 ON ONE HORSE." +290 PRINT "DURING THE RACE, A HORSE WILL BE SHOWN BY ITS" +300 PRINT"NUMBER. THE HORSES RACE DOWN THE PAPER!" +310 PRINT +320 PRINT "HOW MANY WANT TO BET"; +330 INPUT C +340 PRINT "WHEN ? APPEARS,TYPE NAME" +350 FOR A=1 TO C +360 INPUT W$(A) +370 NEXT A +380 PRINT +390 PRINT"HORSE",,"NUMBER","ODDS" +400 PRINT +410 FOR I=1 TO 8: S(I)=0: NEXT I +420 LET R=0 +430 FOR A=1 TO 8 +440 LET D(A)=INT(10*RND(1)+1) +450 NEXT A +460 FOR A=1 TO 8 +470 LET R=R+D(A) +480 NEXT A +490 LET V$(1)="JOE MAW" +500 LET V$(2)="L.B.J." +510 LET V$(3)="MR.WASHBURN" +520 LET V$(4)="MISS KAREN" +530 LET V$(5)="JOLLY" +540 LET V$(6)="HORSE" +550 LET V$(7)="JELLY DO NOT" +560 LET V$(8)="MIDNIGHT" +570 FOR N=1 TO 8 +580 PRINT V$(N),,N,R/D(N);":1" +590 NEXT N +600 PRINT"--------------------------------------------------" +610 PRINT "PLACE YOUR BETS...HORSE # THEN AMOUNT" +620 FOR J=1 TO C +630 PRINT W$(J); +640 INPUT Q(J),P(J) +650 IF P(J)<1 THEN 670 +660 IF P(J)<100000 THEN 690 +670 PRINT" YOU CAN'T DO THAT!" +680 GOTO 630 +690 NEXT J +700 PRINT +710 PRINT"1 2 3 4 5 6 7 8" +720 PRINT"XXXXSTARTXXXX" +721 N = 8 +730 FOR I=1 TO N +740 REM LET M=I +750 LET M(I)=I +760 LET Y(M(I))=INT(100*RND(1)+1) +770 IF Y(M(I))<10 THEN 860 +780 LET S=INT(R/D(I)+.5) +790 IF Y(M(I))27 THEN 1240 +1180 NEXT A +1190 PRINT M(I); +1200 NEXT I +1210 FOR A=1 TO 28-T +1220 PRINT +1230 NEXT A +1240 PRINT "XXXXFINISHXXXX"; +1242 PRINT +1243 PRINT +1244 PRINT "---------------------------------------------" +1245 PRINT +1250 IF T<28 THEN 720 +1270 PRINT "THE RACE RESULTS ARE:" +1272 LET Z9=1 +1280 FOR I=8 TO 1 STEP-1 +1290 LET F=M(I) +1300 PRINT +1310 PRINT Z9;"PLACE HORSE NO.";F,"AT ";R/D(F);":1" +1312 LET Z9=Z9+1 +1320 NEXT I +1330 FOR J=1 TO C +1340 IF Q(J)<>M(8) THEN 1370 +1350 LET N=Q(J) +1355 PRINT +1360 PRINT W$(J);" WINS $";(R/D(N))*P(J) +1370 NEXT J +1372 PRINT "DO YOU WANT TO BET ON THE NEXT RACE ?" +1374 INPUT "YES OR NO"; O$ +1376 IF O$="YES" THEN 380 +1380 END diff --git a/GAMES/hurkle.bas b/GAMES/hurkle.bas new file mode 100644 index 0000000..c758091 --- /dev/null +++ b/GAMES/hurkle.bas @@ -0,0 +1,51 @@ +10 PRINT TAB(33);"HURKLE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +110 N=5 +120 G=10 +210 PRINT +220 PRINT "A HURKLE IS HIDING ON A";G;"BY";G;"GRID. HOMEBASE" +230 PRINT "ON THE GRID IS POINT 0,0 IN THE SOUTHWEST CORNER," +235 PRINT "AND ANY POINT ON THE GRID IS DESIGNATED BY A" +240 PRINT "PAIR OF WHOLE NUMBERS SEPERATED BY A COMMA. THE FIRST" +245 PRINT "NUMBER IS THE HORIZONTAL POSITION AND THE SECOND NUMBER" +246 PRINT "IS THE VERTICAL POSITION. YOU MUST TRY TO" +250 PRINT "GUESS THE HURKLE'S GRIDPOINT. YOU GET";N;"TRIES." +260 PRINT "AFTER EACH TRY, I WILL TELL YOU THE APPROXIMATE" +270 PRINT "DIRECTION TO GO TO LOOK FOR THE HURKLE." +280 PRINT +285 A=INT(G*RND(1)) +286 B=INT(G*RND(1)) +310 FOR K=1 TO N +320 PRINT "GUESS #";K; +330 INPUT X,Y +340 IF ABS(X-A)+ABS(Y-B)=0 THEN 500 +350 REM PRINT INFO +360 GOSUB 610 +370 PRINT +380 NEXT K +410 PRINT +420 PRINT "SORRY, THAT'S";N;"GUESSES." +430 PRINT "THE HURKLE IS AT ";A;",";B +440 PRINT +450 PRINT "LET'S PLAY AGAIN, HURKLE IS HIDING." +460 PRINT +470 GOTO 285 +500 REM +510 PRINT +520 PRINT "YOU FOUND HIM IN";K;"GUESSES!" +540 GOTO 440 +610 PRINT "GO "; +620 IF Y=B THEN 670 +630 IF Y0 THEN 200 +250 PRINT:PRINT "(FOREIGN INDUSTRY WILL ONLY BUY FARM LAND BECAUSE" +260 PRINT "FOREST LAND IS UNECONOMICAL TO STRIP MINE DUE TO TREES," +270 PRINT "THICKER TOP SOIL, ETC.)" +280 X=1 +299 GOTO 200 +300 D=INT(D-H) +310 A=INT(A+(H*W)) +320 PRINT "HOW MANY RALLODS WILL YOU DISTRIBUTE AMONG YOUR COUNTRYMEN"; +340 INPUT I +342 IF I<0 THEN 320 +350 IF I0 THEN 1002 +602 IF I<>0 THEN 1002 +604 IF J<>0 THEN 1002 +606 IF K<>0 THEN 1002 +609 PRINT +612 PRINT "GOODBYE." +614 PRINT "(IF YOU WISH TO CONTINUE THIS GAME AT A LATER DATE, ANSWER" +616 PRINT "'AGAIN' WHEN ASKED IF YOU WANT INSTRUCTIONS AT THE START" +617 PRINT "OF THE GAME)." +618 STOP +1000 GOTO 600 +1002 PRINT +1003 PRINT +1010 A=INT(A-K) +1020 A4=A +1100 IF INT(I/100-B)>=0 THEN 1120 +1105 IF I/100<50 THEN 1700 +1110 PRINT INT(B-(I/100));"COUNTRYMEN DIED OF STARVATION" +1120 F1=INT(RND(1)*(2000-D)) +1122 IF K<25 THEN 1130 +1125 F1=INT(F1/(K/25)) +1130 IF F1<=0 THEN 1150 +1140 PRINT F1;"COUNTRYMEN DIED OF CARBON-MONOXIDE AND DUST INHALATION" +1150 IF INT((I/100)-B)<0 THEN 1170 +1160 IF F1>0 THEN 1180 +1165 GOTO 1200 +1170 PRINT " YOU WERE FORCED TO SPEND";INT((F1+(B-(I/100)))*9); +1172 PRINT "RALLODS ON FUNERAL EXPENSES" +1174 B5=INT(F1+(B-(I/100))) +1175 A=INT(A-((F1+(B-(I/100)))*9)) +1176 GOTO 1185 +1180 PRINT " YOU WERE FORCED TO SPEND ";INT(F1*9);"RALLODS ON "; +1181 PRINT "FUNERAL EXPENSES." +1182 B5=F1 +1183 A=INT(A-(F1*9)) +1185 IF A>=0 THEN 1194 +1187 PRINT " INSUFFICIENT RESERVES TO COVER COST - LAND WAS SOLD" +1189 D=INT(D+(A/W)) +1190 A=0 +1194 B=INT(B-B5) +1200 IF H=0 THEN 1250 +1220 C1=INT(H+(RND(1)*10)-(RND(1)*20)) +1224 IF C>0 THEN 1230 +1226 C1=C1+20 +1230 PRINT C1;"WORKERS CAME TO THE COUNTRY AND"; +1250 P1=INT(((I/100-B)/10)+(K/25)-((2000-D)/50)-(F1/2)) +1255 PRINT ABS(P1);"COUNTRYMEN "; +1260 IF P1<0 THEN 1275 +1265 PRINT "CAME TO"; +1270 GOTO 1280 +1275 PRINT "LEFT"; +1280 PRINT " THE ISLAND." +1290 B=INT(B+P1) +1292 C=INT(C+C1) +1305 U2=INT(((2000-D)*((RND(1)+1.5)/2))) +1310 IF C=0 THEN 1324 +1320 PRINT "OF ";INT(J);"SQ. MILES PLANTED,"; +1324 IF J>U2 THEN 1330 +1326 U2=J +1330 PRINT " YOU HARVESTED ";INT(J-U2);"SQ. MILES OF CROPS." +1340 IF U2=0 THEN 1370 +1344 IF T1>=2 THEN 1370 +1350 PRINT " (DUE TO "; +1355 IF T1=0 THEN 1365 +1360 PRINT "INCREASED "; +1365 PRINT "AIR AND WATER POLLUTION FROM FOREIGN INDUSTRY.)" +1370 Q=INT((J-U2)*(W/2)) +1380 PRINT "MAKING";INT(Q);"RALLODS." +1390 A=INT(A+Q) +1400 V1=INT(((B-P1)*22)+(RND(1)*500)) +1405 V2=INT((2000-D)*15) +1410 PRINT " YOU MADE";ABS(INT(V1-V2));"RALLODS FROM TOURIST TRADE." +1420 IF V2=0 THEN 1450 +1425 IF V1-V2>=V3 THEN 1450 +1430 PRINT " DECREASE BECAUSE "; +1435 G1=10*RND(1) +1440 IF G1<=2 THEN 1460 +1442 IF G1<=4 THEN 1465 +1444 IF G1<=6 THEN 1470 +1446 IF G1<=8 THEN 1475 +1448 IF G1<=10 THEN 1480 +1450 V3=INT(A+V3) +1451 A=INT(A+V3) +1452 GOTO 1500 +1460 PRINT "FISH POPULATION HAS DWINDLED DUE TO WATER POLLUTION." +1462 GOTO 1450 +1465 PRINT "AIR POLLUTION IS KILLING GAME BIRD POPULATION." +1467 GOTO 1450 +1470 PRINT "MINERAL BATHS ARE BEING RUINED BY WATER POLLUTION." +1472 GOTO 1450 +1475 PRINT "UNPLEASANT SMOG IS DISCOURAGING SUN BATHERS." +1477 GOTO 1450 +1480 PRINT "HOTELS ARE LOOKING SHABBY DUE TO SMOG GRIT." +1482 GOTO 1450 +1500 IF B5>200 THEN 1600 +1505 IF B<343 THEN 1700 +1510 IF (A4/100)>5 THEN 1800 +1515 IF C>B THEN 1550 +1520 IF N5-1=X5 THEN 1900 +1545 GOTO 2000 +1550 PRINT +1552 PRINT +1560 PRINT "THE NUMBER OF FOREIGN WORKERS HAS EXCEEDED THE NUMBER" +1562 PRINT "OF COUNTRYMEN. AS A MINORITY, THEY HAVE REVOLTED AND" +1564 PRINT "TAKEN OVER THE COUNTRY." +1570 IF RND(1)<=.5 THEN 1580 +1574 PRINT "YOU HAVE BEEN THROWN OUT OF OFFICE AND ARE NOW" +1576 PRINT "RESIDING IN PRISON." +1578 GOTO 1590 +1580 PRINT "YOU HAVE BEEN ASSASSINATED." +1590 PRINT +1592 PRINT +1596 STOP +1600 PRINT +1602 PRINT +1610 PRINT B5;"COUNTRYMEN DIED IN ONE YEAR!!!!!" +1615 PRINT "DUE TO THIS EXTREME MISMANAGEMENT, YOU HAVE NOT ONLY" +1620 PRINT "BEEN IMPEACHED AND THROWN OUT OF OFFICE, BUT YOU" +1622 M6=INT(RND(1)*10) +1625 IF M6<=3 THEN 1670 +1630 IF M6<=6 THEN 1680 +1635 IF M6<=10 THEN 1690 +1670 PRINT "ALSO HAD YOUR LEFT EYE GOUGED OUT!" +1672 GOTO 1590 +1680 PRINT "HAVE ALSO GAINED A VERY BAD REPUTATION." +1682 GOTO 1590 +1690 PRINT "HAVE ALSO BEEN DECLARED NATIONAL FINK." +1692 GOTO 1590 +1700 PRINT +1702 PRINT +1710 PRINT "OVER ONE THIRD OF THE POPULTATION HAS DIED SINCE YOU" +1715 PRINT "WERE ELECTED TO OFFICE. THE PEOPLE (REMAINING)" +1720 PRINT "HATE YOUR GUTS." +1730 GOTO 1570 +1800 IF B5-F1<2 THEN 1515 +1807 PRINT +1815 PRINT "MONEY WAS LEFT OVER IN THE TREASURY WHICH YOU DID" +1820 PRINT "NOT SPEND. AS A RESULT, SOME OF YOUR COUNTRYMEN DIED" +1825 PRINT "OF STARVATION. THE PUBLIC IS ENRAGED AND YOU HAVE" +1830 PRINT "BEEN FORCED TO EITHER RESIGN OR COMMIT SUICIDE." +1835 PRINT "THE CHOICE IS YOURS." +1840 PRINT "IF YOU CHOOSE THE LATTER, PLEASE TURN OFF YOUR COMPUTER" +1845 PRINT "BEFORE PROCEEDING." +1850 GOTO 1590 +1900 PRINT +1902 PRINT +1920 PRINT "CONGRATULATIONS!!!!!!!!!!!!!!!!!!" +1925 PRINT "YOU HAVE SUCCESFULLY COMPLETED YOUR";N5;"YEAR TERM" +1930 PRINT "OF OFFICE. YOU WERE, OF COURSE, EXTREMELY LUCKY, BUT" +1935 PRINT "NEVERTHELESS, IT'S QUITE AN ACHIEVEMENT. GOODBYE AND GOOD" +1940 PRINT "LUCK - YOU'LL PROBABLY NEED IT IF YOU'RE THE TYPE THAT" +1945 PRINT "PLAYS THIS GAME." +1950 GOTO 1590 +1960 PRINT "HOW MANY YEARS HAD YOU BEEN IN OFFICE WHEN INTERRUPTED"; +1961 INPUT X5 +1962 IF X5<0 THEN 1590 +1963 IF X5<8 THEN 1969 +1965 PRINT " COME ON, YOUR TERM IN OFFICE IS ONLY";N5;"YEARS." +1967 GOTO 1960 +1969 PRINT "HOW MUCH DID YOU HAVE IN THE TREASURY"; +1970 INPUT A +1971 IF A<0 THEN 1590 +1975 PRINT "HOW MANY COUNTRYMEN"; +1976 INPUT B +1977 IF B<0 THEN 1590 +1980 PRINT "HOW MANY WORKERS"; +1981 INPUT C +1982 IF C<0 THEN 1590 +1990 PRINT "HOW MANY SQUARE MILES OF LAND"; +1991 INPUT D +1992 IF D<0 THEN 1590 +1993 IF D>2000 THEN 1996 +1994 IF D>1000 THEN 100 +1996 PRINT " COME ON, YOU STARTED WITH 1000 SQ. MILES OF FARM LAND" +1997 PRINT " AND 10,000 SQ. MILES OF FOREST LAND." +1998 GOTO 1990 +2000 X5=X5+1 +2020 B5=0 +2040 GOTO 100 +2046 END diff --git a/GAMES/lem.bas b/GAMES/lem.bas new file mode 100644 index 0000000..aa46895 --- /dev/null +++ b/GAMES/lem.bas @@ -0,0 +1,246 @@ +2 PRINT TAB(34);"LEM" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +7 REM ROCKT2 IS AN INTERACTIVE GAME THAT SIMULATES A LUNAR +8 REM LANDING IS SIMILAR TO THAT OF THE APOLLO PROGRAM. +9 REM THERE IS ABSOLUTELY NO CHANCE INVOLVED +10 Z$="GO" +15 B1=1 +20 M=17.95 +25 F1=5.25 +30 N=7.5 +35 R0=926 +40 V0=1.29 +45 T=0 +50 H0=60 +55 R=R0+H0 +60 A=-3.425 +65 R1=0 +70 A1=8.84361E-04 +75 R3=0 +80 A3=0 +85 M1=7.45 +90 M0=M1 +95 B=750 +100 T1=0 +105 F=0 +110 P=0 +115 N=1 +120 M2=0 +125 S=0 +130 C=0 +135 IF Z$="YES" THEN 1150 +140 PRINT +145 PRINT "LUNAR LANDING SIMULATION" +150 PRINT +155 PRINT "HAVE YOU FLOWN AN APOLLO/LEM MISSION BEFORE"; +160 PRINT " (YES OR NO)"; +165 INPUT Q$ +170 IF Q$="YES" THEN 190 +175 IF Q$="NO" THEN 205 +180 PRINT "JUST ANSWER THE QUESTION, PLEASE, "; +185 GOTO 160 +190 PRINT +195 PRINT "INPUT MEASUREMENT OPTION NUMBER"; +200 GOTO 225 +205 PRINT +210 PRINT "WHICH SYSTEM OF MEASUREMENT DO YOU PREFER?" +215 PRINT " 1=METRIC 0=ENGLISH" +220 PRINT "ENTER THE APPROPRIATE NUMBER"; +225 INPUT K +230 PRINT +235 IF K=0 THEN 280 +240 IF K=1 THEN 250 +245 GOTO 220 +250 Z=1852.8 +255 M$="METERS" +260 G3=3.6 +265 N$=" KILOMETERS" +270 G5=1000 +275 GOTO 305 +280 Z=6080 +285 M$="FEET" +290 G3=.592 +295 N$="N.MILES" +300 G5=Z +305 IF B1=3 THEN 670 +310 IF Q$="YES" THEN 485 +315 PRINT +320 PRINT " YOU ARE ON A LUNAR LANDING MISSION. AS THE PILOT OF" +325 PRINT "THE LUNAR EXCURSION MODULE, YOU WILL BE EXPECTED TO" +330 PRINT "GIVE CERTAIN COMMANDS TO THE MODULE NAVIGATION SYSTEM." +335 PRINT "THE ON-BOARD COMPUTER WILL GIVE A RUNNING ACCOUNT" +340 PRINT "OF INFORMATION NEEDED TO NAVIGATE THE SHIP." +345 PRINT +350 PRINT +355 PRINT "THE ATTITUDE ANGLE CALLED FOR IS DESCRIBED AS FOLLOWS." +360 PRINT "+ OR -180 DEGREES IS DIRECTLY AWAY FROM THE MOON" +365 PRINT "-90 DEGREES IS ON A TANGENT IN THE DIRECTION OF ORBIT" +370 PRINT "+90 DEGREES IS ON A TANGENT FROM THE DIRECTION OF ORBIT" +375 PRINT "0 (ZERO) DEGREES IS DIRECTLY TOWARD THE MOON" +380 PRINT +385 PRINT TAB(30);"-180|+180" +390 PRINT TAB(34);"^" +395 PRINT TAB(27);"-90 < -+- > +90" +400 PRINT TAB(34);"!" +405 PRINT TAB(34);"0" +410 PRINT TAB(21);"<<<< DIRECTION OF ORBIT <<<<" +415 PRINT +420 PRINT TAB(20);"------ SURFACE OF MOON ------" +425 PRINT +430 PRINT +435 PRINT "ALL ANGLES BETWEEN -180 AND +180 DEGREES ARE ACCEPTED." +440 PRINT +445 PRINT "1 FUEL UNIT = 1 SEC. AT MAX THRUST" +450 PRINT "ANY DISCREPANCIES ARE ACCOUNTED FOR IN THE USE OF FUEL" +455 PRINT "FOR AN ATTITUDE CHANGE." +460 PRINT "AVAILABLE ENGINE POWER: 0 (ZERO) AND ANY VALUE BETWEEN" +465 PRINT "10 AND 100 PERCENT." +470 PRINT +475 PRINT"NEGATIVE THRUST OR TIME IS PROHIBITED." +480 PRINT +485 PRINT +490 PRINT "INPUT: TIME INTERVAL IN SECONDS ------ (T)" +495 PRINT " PERCENTAGE OF THRUST ---------- (P)" +500 PRINT " ATTITUDE ANGLE IN DEGREES ----- (A)" +505 PRINT +510 IF Q$="YES" THEN 535 +515 PRINT "FOR EXAMPLE:" +520 PRINT "T,P,A? 10,65,-60" +525 PRINT "TO ABORT THE MISSION AT ANY TIME, ENTER 0,0,0" +530 PRINT +535 PRINT "OUTPUT: TOTAL TIME IN ELAPSED SECONDS" +540 PRINT " HEIGHT IN ";M$ +545 PRINT " DISTANCE FROM LANDING SITE IN ";M$ +550 PRINT " VERTICAL VELOCITY IN ";M$;"/SECOND" +555 PRINT " HORIZONTAL VELOCITY IN ";M$;"/SECOND" +560 PRINT " FUEL UNITS REMAINING" +565 PRINT +570 GOTO 670 +575 PRINT +580 PRINT "T,P,A"; +585 INPUT T1,F,P +590 F=F/100 +595 IF T1<0 THEN 905 +600 IF T1=0 THEN 1090 +605 IF ABS(F-.05)>1 THEN 945 +610 IF ABS(F-.05)<.05 THEN 945 +615 IF ABS(P)>180 THEN 925 +620 N=20 +625 IF T1<400 THEN 635 +630 N=T1/20 +635 T1=T1/N +640 P=P*3.14159/180 +645 S=SIN(P) +650 C=COS(P) +655 M2=M0*T1*F/B +660 R3=-.5*R0*((V0/R)^2)+R*A1*A1 +665 A3=-2*R1*A1/R +670 FOR I=1 TO N +675 IF M1=0 THEN 715 +680 M1=M1-M2 +685 IF M1>0 THEN 725 +690 F=F*(1+M1/M2) +695 M2=M1+M2 +700 PRINT "YOU ARE OUT OF FUEL." +705 M1=0 +710 GOTO 725 +715 F=0 +720 M2=0 +725 M=M-.5*M2 +730 R4=R3 +735 R3=-.5*R0*((V0/R)^2)+R*A1*A1 +740 R2=(3*R3-R4)/2+.00526*F1*F*C/M +745 A4=A3 +750 A3=-2*R1*A1/R +755 A2=(3*A3-A4)/2+.0056*F1*F*S/(M*R) +760 X=R1*T1+.5*R2*T1*T1 +765 R=R+X +770 H0=H0+X +775 R1=R1+R2*T1 +780 A=A+A1*T1+.5*A2*T1*T1 +785 A1=A1+A2*T1 +790 M=M-.5*M2 +795 T=T+T1 +800 IF H0<3.287828E-04 THEN 810 +805 NEXT I +810 H=H0*Z +815 H1=R1*Z +820 D=R0*A*Z +825 D1=R*A1*Z +830 T2=M1*B/M0 +835 PRINT " ";T;TAB(10);H;TAB(23);D; +840 PRINT TAB(37);H1;TAB(49);D1;TAB(60);T2 +845 IF H0<3.287828E-04 THEN 880 +850 IF R0*A>164.474 THEN 1050 +855 IF M1>0 THEN 580 +860 T1=20 +865 F=0 +870 P=0 +875 GOTO 620 +880 IF R1<-8.21957E-04 THEN 1020 +885 IF ABS(R*A1)>4.93174E-04 THEN 1020 +890 IF H0<-3.287828E-04 THEN 1020 +895 IF ABS(D)>10*Z THEN 1065 +900 GOTO 995 +905 PRINT +910 PRINT "THIS SPACECRAFT IS NOT ABLE TO VIOLATE THE SPACE-"; +915 PRINT "TIME CONTINUUM." +920 GOTO 575 +925 PRINT +930 PRINT "IF YOU WANT TO SPIN AROUND, GO OUTSIDE THE MODULE" +935 PRINT "FOR AN E.V.A." +940 GOTO 575 +945 PRINT +950 PRINT "IMPOSSIBLE THRUST VALUE "; +955 IF F<0 THEN 985 +960 IF F-.05<.05 THEN 975 +965 PRINT "TOO LARGE" +970 GOTO 575 +975 PRINT "TOO SMALL" +980 GOTO 575 +985 PRINT "NEGATIVE" +990 GOTO 575 +995 PRINT +1000 PRINT "TRANQUILITY BASE HERE -- THE EAGLE HAS LANDED." +1005 PRINT "CONGRATULATIONS -- THERE WAS NO SPACECRAFT DAMAGE." +1010 PRINT "YOU MAY NOW PROCEED WITH SURFACE EXPLORATION." +1015 GOTO 1100 +1020 PRINT +1025 PRINT "CRASH !!!!!!!!!!!!!!!!" +1030 PRINT "YOUR IMPACT CREATED A CRATER";ABS(H);M$;" DEEP." +1035 X1=SQR(D1*D1+H1*H1)*G3 +1040 PRINT "AT CONTACT YOU WERE TRAVELING";X1;N$;"/HR" +1045 GOTO 1100 +1050 PRINT +1055 PRINT "YOU HAVE BEEN LOST IN SPACE WITH NO HOPE OF RECOVERY." +1060 GOTO 1100 +1065 PRINT "YOU ARE DOWN SAFELY - " +1075 PRINT +1080 PRINT "BUT MISSED THE LANDING SITE BY";ABS(D/G5);N$;"." +1085 GOTO 1100 +1090 PRINT +1095 PRINT "MISSION ABENDED" +1100 PRINT +1105 PRINT "DO YOU WANT TO TRY IT AGAIN (YES/NO)?" +1110 INPUT Z$ +1115 IF Z$="YES" THEN 20 +1120 IF Z$="NO" THEN 1130 +1125 GOTO 1105 +1130 PRINT +1135 PRINT "TOO BAD, THE SPACE PROGRAM HATES TO LOSE EXPERIENCED" +1140 PRINT "ASTRONAUTS." +1145 STOP +1150 PRINT +1155 PRINT "OK, DO YOU WANT THE COMPLETE INSTRUCTIONS OR THE INPUT -" +1160 PRINT "OUTPUT STATEMENTS?" +1165 PRINT "1=COMPLETE INSTRUCTIONS" +1170 PRINT "2=INPUT-OUTPUT STATEMENTS" +1175 PRINT "3=NEITHER" +1180 INPUT B1 +1185 Q$="NO" +1190 IF B1=1 THEN 205 +1195 Q$="YES" +1200 IF B1=2 THEN 190 +1205 IF B1=3 THEN 190 +1210 GOTO 1165 +1215 END diff --git a/GAMES/letter.bas b/GAMES/letter.bas new file mode 100644 index 0000000..3064dbb --- /dev/null +++ b/GAMES/letter.bas @@ -0,0 +1,26 @@ +10 PRINT TAB(33);"LETTER" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "LETTER GUESSING GAME": PRINT +210 PRINT "I'LL THINK OF A LETTER OF THE ALPHABET, A TO Z." +220 PRINT "TRY TO GUESS MY LETTER AND I'LL GIVE YOU CLUES" +230 PRINT "AS TO HOW CLOSE YOU'RE GETTING TO MY LETTER." +310 L=65+INT(RND(1)*26) +320 G=0 +340 PRINT: PRINT "O.K., I HAVE A LETTER. START GUESSING." +410 PRINT: PRINT "WHAT IS YOUR GUESS"; +420 G=G+1 +430 INPUT A$: A=ASC(A$): PRINT +440 IF A=L THEN 500 +450 IF A>L THEN 480 +460 PRINT "TOO LOW. TRY A HIGHER LETTER.": GOTO 410 +480 PRINT "TOO HIGH. TRY A LOWER LETTER.": GOTO 410 +500 PRINT: PRINT "YOU GOT IT IN";G;"GUESSES!!" +504 IF G<=5 THEN 508 +506 PRINT "BUT IT SHOULDN'T TAKE MORE THAN 5 GUESSES!": GOTO 515 +508 PRINT "GOOD JOB !!!!!" +510 FOR N=1 TO 15: PRINT CHR$(7);: NEXT N +515 PRINT +520 PRINT "LET'S PLAN AGAIN....." +530 GOTO 310 +999 END diff --git a/GAMES/life.bas b/GAMES/life.bas new file mode 100644 index 0000000..a7dd28f --- /dev/null +++ b/GAMES/life.bas @@ -0,0 +1,67 @@ +2 PRINT TAB(34);"LIFE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +8 PRINT "ENTER YOUR PATTERN:" +9 X1=1: Y1=1: X2=24: Y2=70 +10 DIM A(24,70),B$(24) +20 C=1 +30 INPUT B$(C) +40 IF B$(C)="DONE" THEN B$(C)="": GOTO 80 +50 IF LEFT$(B$(C),1)="." THEN B$(C)=" "+RIGHT$(B$(C),LEN(B$(C))-1) +60 C=C+1 +70 GOTO 30 +80 C=C-1: L=0 +90 FOR X=1 TO C-1 +100 IF LEN(B$(X))>L THEN L=LEN(B$(X)) +110 NEXT X +120 X1=11-C/2 +130 Y1=33-L/2 +140 FOR X=1 TO C +150 FOR Y=1 TO LEN(B$(X)) +160 IF MID$(B$(X),Y,1)<>" " THEN A(X1+X,Y1+Y)=1:P=P+1 +170 NEXT Y +180 NEXT X +200 PRINT:PRINT:PRINT +210 PRINT "GENERATION:";G,"POPULATION:";P;: IF I9 THEN PRINT "INVALID!"; +215 X3=24:Y3=70:X4=1: Y4=1: P=0 +220 G=G+1 +225 FOR X=1 TO X1-1: PRINT: NEXT X +230 FOR X=X1 TO X2 +240 PRINT +250 FOR Y=Y1 TO Y2 +253 IF A(X,Y)=2 THEN A(X,Y)=0:GOTO 270 +256 IF A(X,Y)=3 THEN A(X,Y)=1:GOTO 261 +260 IF A(X,Y)<>1 THEN 270 +261 PRINT TAB(Y);"*"; +262 IF XX4 THEN X4=X +266 IF YY4 THEN Y4=Y +270 NEXT Y +290 NEXT X +295 FOR X=X2+1 TO 24: PRINT: NEXT X +299 X1=X3: X2=X4: Y1=Y3: Y2=Y4 +301 IF X1<3 THEN X1=3:I9=-1 +303 IF X2>22 THEN X2=22:I9=-1 +305 IF Y1<3 THEN Y1=3:I9=-1 +307 IF Y2>68 THEN Y2=68:I9=-1 +309 P=0 +500 FOR X=X1-1 TO X2+1 +510 FOR Y=Y1-1 TO Y2+1 +520 C=0 +530 FOR I=X-1 TO X+1 +540 FOR J=Y-1 TO Y+1 +550 IF A(I,J)=1 OR A(I,J)=2 THEN C=C+1 +560 NEXT J +570 NEXT I +580 IF A(X,Y)=0 THEN 610 +590 IF C<3 OR C>4 THEN A(X,Y)=2: GOTO 600 +595 P=P+1 +600 GOTO 620 +610 IF C=3 THEN A(X,Y)=3:P=P+1 +620 NEXT Y +630 NEXT X +635 X1=X1-1:Y1=Y1-1:X2=X2+1:Y2=Y2+1 +637 INPUT "PRESS RETURN TO CONTINUE";A12 +640 GOTO 210 +650 END \ No newline at end of file diff --git a/GAMES/life2.bas b/GAMES/life2.bas new file mode 100644 index 0000000..8c08770 --- /dev/null +++ b/GAMES/life2.bas @@ -0,0 +1,83 @@ +2 PRINT TAB(33);"LIFE2" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +7 DIM N(6,6),K(18),A(16),X(2),Y(2) +8 DATA 3,102,103,120,130,121,112,111,12 +9 DATA 21,30,1020,1030,1011,1021,1003,1002,1012 +10 FOR M=1 TO 18: READ K(M): NEXT M +13 DATA -1,0,1,0,0,-1,0,1,-1,-1,1,-1,-1,1,1,1 +14 FOR O1= 1 TO 16: READ A(O1): NEXT O1 +20 GOTO 500 +50 FOR J=1 TO 5 +51 FOR K=1 TO 5 +55 IF N(J,K)>99 THEN GOSUB 200 +60 NEXT K +65 NEXT J +90 K=0: M2=0: M3=0 +99 FOR J=0 TO 6: PRINT +100 FOR K=0 TO 6 +101 IF J<>0 THEN IF J<>6 THEN 105 +102 IF K=6 THEN PRINT 0;: GOTO 125 +103 PRINT K;: GOTO 120 +105 IF K<>0 THEN IF K<>6 THEN 110 +106 IF J=6 THEN PRINT 0: GOTO 126 +107 PRINT J;: GOTO 120 +110 GOSUB 300 +120 NEXT K +125 NEXT J +126 RETURN +200 B=1: IF N(J,K)>999 THEN B=10 +220 FOR O1= 1 TO 15 STEP 2 +230 N(J+A(O1),K+A(O1+1))=N(J+A(O1),K+A(O1+1))+B +231 NEXT O1 +239 RETURN +300 IF N(J,K)<3 THEN 399 +305 FOR O1=1 TO 18 +310 IF N(J,K)=K(O1) THEN 350 +315 NEXT O1 +320 GOTO 399 +350 IF O1>9 THEN 360 +351 N(J,K)=100: M2=M2+1: PRINT " * "; +355 RETURN +360 N(J,K)=1000: M3=M3+1: PRINT " # "; +365 RETURN +399 N(J,K)=0: PRINT " ";: RETURN +500 PRINT TAB(10);"U.B. LIFE GAME" +505 M2=0: M3=0 +510 FOR J=1 TO 5 +511 FOR K=1 TO 5 +515 N(J,K)=0 +516 NEXT K +517 NEXT J +519 FOR B=1 TO 2: P1=3: IF B=2 THEN P1=30 +520 PRINT:PRINT "PLAYER";B;" - 3 LIVE PIECES." +535 FOR K1=1 TO 3: GOSUB 700 +540 N(X(B),Y(B))=P1: NEXT K1 +542 NEXT B +559 GOSUB 90 +560 PRINT: GOSUB 50 +570 IF M2=0 THEN IF M3=0 THEN 574 +571 IF M3=0 THEN B=1: GOTO 575 +572 IF M2=0 THEN B=2: GOTO 575 +573 GOTO 580 +574 PRINT: PRINT "A DRAW": STOP +575 PRINT: PRINT "PLAYER";B;"IS THE WINNER": STOP +580 FOR B=1 TO 2: PRINT: PRINT: PRINT "PLAYER";B;: GOSUB 700 +581 IF B=99 THEN 560 +582 NEXT B +586 N(X(1),Y(1))=100: N(X(2),Y(2))=1000 +596 GOTO 560 +700 PRINT "X,Y":PRINT"XXXXXX";CHR$(13);"$$$$$$";CHR$(13);"&&&&&&"; +701 PRINT CHR$(13);: INPUT Y(B),X(B) +705 IF X(B)<=5 THEN IF X(B)>0 THEN 708 +706 GOTO 750 +708 IF Y(B)<=5 THEN IF Y(B)>0 THEN 715 +710 GOTO 750 +715 IF N(X(B),Y(B))<>0 THEN 750 +720 IF B=1 THEN RETURN +725 IF X(1)=X(2) THEN IF Y(1)=Y(2) THEN 740 +730 RETURN +740 PRINT "SAME COORD. SET TO 0" +741 N(X(B)+1,Y(B)+1)=0: B=99: RETURN +750 PRINT "ILLEGAL COORDS. RETYPE": GOTO 700 +999 END diff --git a/GAMES/litquiz.bas b/GAMES/litquiz.bas new file mode 100644 index 0000000..fe731b2 --- /dev/null +++ b/GAMES/litquiz.bas @@ -0,0 +1,49 @@ +1 PRINT TAB(25);"LITERATURE QUIZ" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +5 R=0 +10 PRINT "TEST YOUR KNOWLEDGE OF CHILDREN'S LITERATURE." +12 PRINT: PRINT "THIS IS A MULTIPLE-CHOICE QUIZ." +13 PRINT "TYPE A 1, 2, 3, OR 4 AFTER THE QUESTION MARK." +15 PRINT: PRINT "GOOD LUCK!": PRINT: PRINT +40 PRINT "IN PINOCCHIO, WHAT WAS THE NAME OF THE CAT" +42 PRINT "1)TIGGER, 2)CICERO, 3)FIGARO, 4)GUIPETTO"; +43 INPUT A: IF A=3 THEN 46 +44 PRINT "SORRY...FIGARO WAS HIS NAME.": GOTO 50 +46 PRINT "VERY GOOD! HERE'S ANOTHER." +47 R=R+1 +50 PRINT: PRINT +51 PRINT "FROM WHOSE GARDEN DID BUGS BUNNY STEAL THE CARROTS?" +52 PRINT "1)MR. NIXON'S, 2)ELMER FUDD'S, 3)CLEM JUDD'S, 4)STROMBOLI'S"; +53 INPUT A: IF A=2 THEN 56 +54 PRINT "TOO BAD...IT WAS ELMER FUDD'S GARDEN.": GOTO 60 +56 PRINT "PRETTY GOOD!" +57 R=R+1 +60 PRINT: PRINT +61 PRINT "IN THE WIZARD OF OS, DOROTHY'S DOG WAS NAMED" +62 PRINT "1)CICERO, 2)TRIXIA, 3)KING, 4)TOTO"; +63 INPUT A: IF A=4 THEN 66 +64 PRINT "BACK TO THE BOOKS,...TOTO WAS HIS NAME.": GOTO 70 +66 PRINT "YEA! YOU'RE A REAL LITERATURE GIANT." +67 R=R+1 +70 PRINT:PRINT +71 PRINT "WHO WAS THE FAIR MAIDEN WHO ATE THE POISON APPLE" +72 PRINT "1)SLEEPING BEAUTY, 2)CINDERELLA, 3)SNOW WHITE, 4)WENDY"; +73 INPUT A: IF A=3 THEN 76 +74 PRINT "OH, COME ON NOW...IT WAS SNOW WHITE." +75 GOTO 80 +76 PRINT "GOOD MEMORY!" +77 R=R+1 +80 PRINT:PRINT +85 IF R=4 THEN 100 +90 IF R<2 THEN 200 +92 PRINT "NOT BAD, BUT YOU MIGHT SPEND A LITTLE MORE TIME" +94 PRINT "READING THE NURSERY GREATS." +96 STOP +100 PRINT "WOW! THAT'S SUPER! YOU REALLY KNOW YOUR NURSERY" +110 PRINT "YOUR NEXT QUIZ WILL BE ON 2ND CENTURY CHINESE" +120 PRINT "LITERATURE (HA, HA, HA)" +130 STOP +200 PRINT "UGH. THAT WAS DEFINITELY NOT TOO SWIFT. BACK TO" +205 PRINT "NURSERY SCHOOL FOR YOU, MY FRIEND." +999 END diff --git a/GAMES/love.bas b/GAMES/love.bas new file mode 100644 index 0000000..c53d2ae --- /dev/null +++ b/GAMES/love.bas @@ -0,0 +1,34 @@ +2 PRINT TAB(33);"LOVE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +20 PRINT "A TRIBUTE TO THE GREAT AMERICAN ARTIST, ROBERT INDIANA." +30 PRINT "HIS GREATEST WORK WILL BE REPRODUCED WITH A MESSAGE OF" +40 PRINT "YOUR CHOICE UP TO 60 CHARACTERS. IF YOU CAN'T THINK OF" +50 PRINT "A MESSAGE, SIMPLE TYPE THE WORD 'LOVE'": PRINT +60 INPUT "YOUR MESSAGE, PLEASE";A$: L=LEN(A$) +70 DIM T$(120): FOR I=1 TO 10: PRINT: NEXT I +100 FOR J=0 TO INT(60/L) +110 FOR I=1 TO L +120 T$(J*L+I)=MID$(A$,I,1) +130 NEXT I: NEXT J +140 C=0 +200 A1=1: P=1: C=C+1: IF C=37 THEN 999 +205 PRINT +210 READ A: A1=A1+A: IF P=1 THEN 300 +240 FOR I=1 TO A: PRINT " ";: NEXT I: P=1: GOTO 400 +300 FOR I=A1-A TO A1-1: PRINT T$(I);: NEXT I: P=0 +400 IF A1>60 THEN 200 +410 GOTO 210 +600 DATA 60,1,12,26,9,12,3,8,24,17,8,4,6,23,21,6,4,6,22,12,5,6,5 +610 DATA 4,6,21,11,8,6,4,4,6,21,10,10,5,4,4,6,21,9,11,5,4 +620 DATA 4,6,21,8,11,6,4,4,6,21,7,11,7,4,4,6,21,6,11,8,4 +630 DATA 4,6,19,1,1,5,11,9,4,4,6,19,1,1,5,10,10,4,4,6,18,2,1,6,8,11,4 +640 DATA 4,6,17,3,1,7,5,13,4,4,6,15,5,2,23,5,1,29,5,17,8 +650 DATA 1,29,9,9,12,1,13,5,40,1,1,13,5,40,1,4,6,13,3,10,6,12,5,1 +660 DATA 5,6,11,3,11,6,14,3,1,5,6,11,3,11,6,15,2,1 +670 DATA 6,6,9,3,12,6,16,1,1,6,6,9,3,12,6,7,1,10 +680 DATA 7,6,7,3,13,6,6,2,10,7,6,7,3,13,14,10,8,6,5,3,14,6,6,2,10 +690 DATA 8,6,5,3,14,6,7,1,10,9,6,3,3,15,6,16,1,1 +700 DATA 9,6,3,3,15,6,15,2,1,10,6,1,3,16,6,14,3,1,10,10,16,6,12,5,1 +710 DATA 11,8,13,27,1,11,8,13,27,1,60 +999 FOR I=1 TO 10: PRINT: NEXT I: END diff --git a/GAMES/lunar.bas b/GAMES/lunar.bas new file mode 100644 index 0000000..6a4757d --- /dev/null +++ b/GAMES/lunar.bas @@ -0,0 +1,48 @@ +10 PRINT TAB(33);"LUNAR" +20 PRINT TAB(l5);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +25 PRINT:PRINT:PRINT +30 PRINT "THIS IS A COMPUTER SIMULATION OF AN APOLLO LUNAR" +40 PRINT "LANDING CAPSULE.": PRINT: PRINT +50 PRINT "THE ON-BOARD COMPUTER HAS FAILED (IT WAS MADE BY" +60 PRINT "XEROX) SO YOU HAVE TO LAND THE CAPSULE MANUALLY." +70 PRINT: PRINT "SET BURN RATE OF RETRO ROCKETS TO ANY VALUE BETWEEN" +80 PRINT "0 (FREE FALL) AND 200 (MAXIMUM BURN) POUNDS PER SECOND." +90 PRINT "SET NEW BURN RATE EVERY 10 SECONDS.": PRINT +100 PRINT "CAPSULE WEIGHT 32,500 LBS; FUEL WEIGHT 16,500 LBS." +110 PRINT: PRINT: PRINT: PRINT "GOOD LUCK" +120 L=0 +130 PRINT: PRINT "SEC","MI + FT","MPH","LB FUEL","BURN RATE":PRINT +140 A=120:V=1:M=33000!:N=16500:G=1E-03:Z=1.8 +150 PRINT L,INT(A);INT(5280*(A-INT(A))),3600*V,M-N,:INPUT K:T=10 +160 IF M-N<1E-03 THEN 240 +170 IF T<1E-03 THEN 150 +180 S=T: IF M>=N+S*K THEN 200 +190 S=(M-N)/K +200 GOSUB 420: IF I<=O THEN 340 +210 IF V<=0 THEN 230 +220 IF J<0 THEN 370 +230 GOSUB 330: GOTO 160 +240 PRINT "FUEL OUT AT";L;"SECONDS":S=(-V+SQR(V*V+2*A*G))/G +250 V=V+G*S: L=L+S +260 W=3600*V: PRINT "ON MOON AT";L;"SECONDS - IMPACT VELOCITY";W;"MPH" +274 IF W<=1.2 THEN PRINT "PERFECT LANDING!": GOTO 440 +280 IF W<=10 THEN PRINT "GOOD LANDING (COULD RE BETTER)":GOTO 440 +282 IF W>60 THEN 300 +284 PRINT "CRAFT DAMAGE... YOU'RE STRANDED HERE UNTIL A RESCUE" +286 PRINT "PARTY ARRIVES. HOPE YOU HAVE ENOUGH OXYGEN!" +288 GOTO 440 +300 PRINT "SORRY THERE NERE NO SURVIVORS. YOU BLOW IT!" +310 PRINT "IN FACT, YOU BLASTED A NEW LUNAR CRATER";W*.227;"FEET DEEP!" +320 GOTO 440 +330 L=L+S: T=T-S: M=M-S*K: A=I: V=J: RETURN +340 IF S<5E-03 THEN 260 +350 D=V+SQR(V*V+2*A*(G-Z*K/M)):S=2*A/D +360 GOSUB 420: GOSUB 330: GOTO 340 +370 W=(1-M*G/(Z*K))/2: S=M*V/(Z*K*(W+SQR(W*W+V/Z)))+.05:GOSUB 420 +380 IF I<=0 THEN 340 +390 GOSUB 330: IF J>0 THEN 160 +400 IF V>0 THEN 370 +410 GOTO 160 +420 Q=S*K/M: J=V+G*S+Z*(-Q-Q*Q/2-Q^3/3-Q^4/4-Q^5/5) +430 I=A-G*S*S/2-V*S+Z*S*(Q/2+Q^2/6+Q^3/12+Q^4/20+Q^5/30):RETURN +440 PRINT:PRINT:PRINT:PRINT 'TRY AGAIN??": GOTO 70 diff --git a/GAMES/mastrmnd.bas b/GAMES/mastrmnd.bas new file mode 100644 index 0000000..3e731bc --- /dev/null +++ b/GAMES/mastrmnd.bas @@ -0,0 +1,232 @@ +2 PRINT TAB(30);"MASTERMIND" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 REM +20 REM MASTERMIND II +30 REM STEVE NORTH +40 REM CREATIVE COMPUTING +50 REM PO BOX 789-M MORRISTOWN NEW JERSEY 07960 +60 REM +70 REM +80 INPUT "NUMBER OF COLORS";C9 +90 IF C9>8 THEN PRINT "NO MORE THAN 8, PLEASE!":GOTO 80 +100 INPUT "NUMBER OF POSITIONS";P9 +110 INPUT "NUMBER OF ROUNDS";R9 +120 P=C9^P9 +130 PRINT "TOTAL POSSIBILITIES =";P +140 H=0:C=0 +150 DIM QQ(P9),SS(10,2),SX$(10),AX$(P9),GX$(P9),II(P),HX$(P9) +160 L$="BWRGOYPT" +170 PRINT +180 PRINT +190 PRINT "COLOR LETTER" +200 PRINT "===== ======" +210 FOR X=1 TO C9 +220 READ X$ +230 PRINT X$;TAB(13);MID$(L$,X,1) +240 NEXT X +250 PRINT +260 FOR R=1 TO R9 +270 PRINT +280 PRINT "ROUND NUMBER";R;"----" +290 PRINT +300 PRINT "GUESS MY COMBINATION.":PRINT +310 REM GET A COMBINATION +320 A=INT(P*RND(1)+1) +330 GOSUB 3000 +340 FOR X=1 TO A +350 GOSUB 3500 +360 NEXT X +370 FOR M=1 TO 10 +380 PRINT "MOVE # ";M;" GUESS ";:INPUT X$ +390 IF X$="BOARD" THEN 2000 +400 IF X$="QUIT" THEN 2500 +410 IF LEN(X$)<>P9 THEN PRINT "BAD NUMBER OF POSITIONS.":GOTO 380 +420 REM UNPACK X$ INTO GX$(1-P9) +430 FOR X=1 TO P9 +440 FOR Y=1 TO C9 +450 IF MID$(X$,X,1)=MID$(L$,Y,1) THEN 480 +460 NEXT Y +470 PRINT "'"; MID$(X$,X,1); "' IS UNRECOGNIZED.":GOTO 380 +480 GX$(X)=MID$(X$,X,1) +490 NEXT X +500 REM NOW WE CONVERT QQ(1-P9) INTO AX$(1-P9) [ACTUAL GUESS] +510 GOSUB 4000 +520 REM AND GET NUMBER OF BLACKS AND WHITES +530 GOSUB 4500 +540 IF B=P9 THEN 630 +550 REM TELL HUMAN RESULTS +560 PRINT "YOU HAVE ";B;" BLACKS AND ";W;" WHITES." +570 REM SAVE ALL THIS STUFF FOR BOARD PRINTOUT LATER +580 SX$(M)=X$ +590 SS(M,1)=B +600 SS(M,2)=W +610 NEXT M +620 PRINT "YOU RAN OUT OF MOVES! THAT'S ALL YOU GET!":GOTO 640 +622 GOSUB 4000 +623 PRINT "THE ACTUAL COMBINATION WAS: "; +624 FOR X=1 TO P9 +625 PRINT AX$(X); +626 NEXT X +627 PRINT +630 PRINT "YOU GUESSED IT IN ";M;" MOVES!" +640 H=H+M +650 GOSUB 5000 +660 REM +670 REM NOW COMPUTER GUESSES +680 REM +690 FOR X=1 TO P +700 II(X)=1 +710 NEXT X +720 PRINT "NOW I GUESS. THINK OF A COMBINATION." +730 INPUT "HIT RETURN WHEN READY:";X$ +740 FOR M=1 TO 10 +750 GOSUB 3000 +760 REM FIND A GUESS +770 G=INT(P*RND(1)+1) +780 IF II(G)=1 THEN 890 +790 FOR X=G TO P +800 IF II(X)=1 THEN 880 +810 NEXT X +820 FOR X=1 TO G +830 IF II(X)=1 THEN 880 +840 NEXT X +850 PRINT "YOU HAVE GIVEN ME INCONSISTENT INFORMATION." +860 PRINT "TRY AGAIN, AND THIS TIME PLEASE BE MORE CAREFUL." +870 GOTO 660 +880 G=X +890 REM NOW WE CONVERT GUESS #G INTO G$ +900 FOR X=1 TO G +910 GOSUB 3500 +920 NEXT X +930 GOSUB 6000 +940 PRINT "MY GUESS IS: "; +950 FOR X=1 TO P9 +960 PRINT HX$(X); +970 NEXT X +980 INPUT " BLACKS, WHITES ";B1,W1 +990 IF B1=P9 THEN 1120 +1000 GOSUB 3000 +1010 FOR X=1 TO P +1020 GOSUB 3500 +1030 IF II(X)=0 THEN 1070 +1035 GOSUB 6500 +1040 GOSUB 4000 +1050 GOSUB 4500 +1060 IF B1<>B OR W1<>W THEN II(X)=0 +1070 NEXT X +1080 NEXT M +1090 PRINT "I USED UP ALL MY MOVES!" +1100 PRINT "I GUESS MY CPU IS JUST HAVING AN OFF DAY." +1110 GOTO 1130 +1120 PRINT "I GOT IT IN ";M;" MOVES!" +1130 C=C+M +1140 GOSUB 5000 +1150 NEXT R +1160 PRINT "GAME OVER" +1170 PRINT "FINAL SCORE:" +1180 GOSUB 5040 +1190 STOP +2000 REM +2010 REM BOARD PRINTOUT ROUTINE +2020 REM +2025 PRINT +2030 PRINT "BOARD" +2040 PRINT "MOVE GUESS BLACK WHITE" +2050 FOR Z=1 TO M-1 +2060 PRINT Z;TAB(9);SX$(Z);TAB(25);SS(Z,1);TAB(35);SS(Z,2) +2070 NEXT Z +2075 PRINT +2080 GOTO 380 +2500 REM +2510 REM QUIT ROUTINE +2520 REM +2530 PRINT "QUITTER! MY COMBINATION WAS: "; +2535 GOSUB 4000 +2540 FOR X=1 TO P9 +2550 PRINT AX$(X); +2560 NEXT X +2565 PRINT +2570 PRINT "GOOD BYE" +2580 STOP +3000 REM +3010 REM INITIALIZE QQ(1-P9) TO ZEROS +3020 REM +3030 FOR S=1 TO P9 +3040 QQ(S)=0 +3050 NEXT S +3060 RETURN +3500 REM +3510 REM INCREMENT QQ(1-P9) +3520 REM +3522 IF QQ(1)>0 THEN 3530 +3524 REM IF ZERO, THIS IS OUR FIRST INCREMENT: MAKE ALL ONES +3526 FOR S=1 TO P9 +3527 QQ(S)=1 +3528 NEXT S +3529 RETURN +3530 Q=1 +3540 QQ(Q)=QQ(Q)+1 +3550 IF QQ(Q)<=C9 THEN RETURN +3560 QQ(Q)=1 +3570 Q=Q+1 +3580 GOTO 3540 +4000 REM +4010 REM CONVERT QQ(1-P9) TO AX$(1-P9) +4020 REM +4030 FOR S=1 TO P9 +4040 AX$(S)=MID$(L$,QQ(S),1) +4050 NEXT S +4060 RETURN +4500 REM +4510 REM GET NUMBER OF BLACKS (B) AND WHITES (W) +4520 REM MASHES G$ AND A$ IN THE PROCESS +4530 REM +4540 B=0:W=0:F=0 +4550 FOR S=1 TO P9 +4560 IF GX$(S)<>AX$(S) THEN 4620 +4570 B=B+1 +4580 GX$(S)=CHR$(F) +4590 AX$(S)=CHR$(F+1) +4600 F=F+2 +4610 GOTO 4660 +4620 FOR T=1 TO P9 +4630 IF GX$(S)<>AX$(T) THEN 4650 +4640 IF GX$(T)=AX$(T) THEN 4650 +4645 W=W+1:AX$(T)=CHR$(F):GX$(S)=CHR$(F+1):F=F+2:GOTO 4660 +4650 NEXT T +4660 NEXT S +4670 RETURN +5000 REM +5010 REM PRINT SCORE +5020 REM +5030 PRINT "SCORE:" +5040 PRINT " COMPUTER ";C +5050 PRINT " HUMAN ";H +5060 PRINT +5070 RETURN +5500 REM +5510 REM CONVERT QQ(1-P9) INTO GX$(1-P9) +5520 REM +5530 FOR S=1 TO P9 +5540 GX$(S)=MID$(L$,QQ(S),1) +5550 NEXT S +5560 RETURN +6000 REM +6010 REM CONVERT QQ(1-P9) TO HX$(1-P9) +6020 REM +6030 FOR S=1 TO P9 +6040 HX$(S)=MID$(L$,QQ(S),1) +6050 NEXT S +6060 RETURN +6500 REM +6510 REM COPY H$ INTO G$ +6520 REM +6530 FOR S=1 TO P9 +6540 GX$(S)=HX$(S) +6550 NEXT S +6560 RETURN +8000 REM PROGRAM DATA FOR COLOR NAMES +8010 DATA BLACK,WHITE,RED,GREEN,ORANGE,YELLOW,PURPLE,TAN +9998 REM ...WE'RE SORRY BUT IT'S TIME TO GO... +9999 END diff --git a/GAMES/mathdice.bas b/GAMES/mathdice.bas new file mode 100644 index 0000000..d61b060 --- /dev/null +++ b/GAMES/mathdice.bas @@ -0,0 +1,60 @@ +10 PRINT TAB(31);"MATH DICE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 PRINT "THIS PROGRAM GENERATES SUCCESIVE PICTURES OF TWO DICE." +50 PRINT "WHEN TWO DICE AND AN EQUAL SIGN FOLLOWED BY A QUESTION" +60 PRINT "MARK HAVE BEEN PRINTED, TYPE YOUR ANSWER AND THE RETURN KEY." +70 PRINT "TO CONCLUDE THE LESSON, TYPE CONTROL-C AS YOUR ANSWER." +80 PRINT +90 PRINT +100 N=N+1 +110 D=INT(6*RND(1)+1) +120 PRINT" ----- " +130 IF D=1 THEN 200 +140 IF D=2 THEN 180 +150 IF D=3 THEN 180 +160 PRINT "I * * I" +170 GOTO 210 +180 PRINT "I * I" +190 GOTO 210 +200 PRINT "I I" +210 IF D=2 THEN 260 +220 IF D=4 THEN 260 +230 IF D=6 THEN 270 +240 PRINT "I * I" +250 GOTO 280 +260 PRINT "I I" +265 GOTO 280 +270 PRINT "I * * I" +280 IF D=1 THEN 350 +290 IF D=2 THEN 330 +300 IF D=3 THEN 330 +310 PRINT "I * * I" +320 GOTO 360 +330 PRINT "I * I" +340 GOTO 360 +350 PRINT "I I" +360 PRINT " ----- " +370 PRINT +375 IF N=2 THEN 500 +380 PRINT " +" +381 PRINT +400 A=D +410 GOTO 100 +500 T=D+A +510 PRINT " ="; +520 INPUT T1 +530 IF T1=T THEN 590 +540 PRINT "NO, COUNT THE SPOTS AND GIVE ANOTHER ANSWER." +541 PRINT " ="; +550 INPUT T2 +560 IF T2=T THEN 590 +570 PRINT "NO, THE ANSWER IS";T +580 GOTO 600 +590 PRINT "RIGHT!" +600 PRINT +601 PRINT "THE DICE ROLL AGAIN..." +610 PRINT +615 N=0 +620 GOTO 100 +999 END diff --git a/GAMES/mugwump.bas b/GAMES/mugwump.bas new file mode 100644 index 0000000..e238486 --- /dev/null +++ b/GAMES/mugwump.bas @@ -0,0 +1,56 @@ +1 PRINT TAB(33);"MUGWUMP" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 REM COURTESY PEOPLE'S COMPUTER COMPANY +10 DIM P(4,2) +20 PRINT "THE OBJECT OF THIS GAME IS TO FIND FOUR MUGWUMPS" +30 PRINT "HIDDEN ON A 10 BY 10 GRID. HOMEBASE IS POSITION 0,0." +40 PRINT "ANY GUESS YOU MAKE MUST BE TWO NUMBERS WITH EACH" +50 PRINT "NUMBER BETWEEN 0 AND 9, INCLUSIVE. FIRST NUMBER" +60 PRINT "IS DISTANCE TO RIGHT OF HOMEBASE AND SECOND NUMBER" +70 PRINT "IS DISTANCE ABOVE HOMEBASE." +80 PRINT +90 PRINT "YOU GET 10 TRIES. AFTER EACH TRY, I WILL TELL" +100 PRINT "YOU HOW FAR YOU ARE FROM EACH MUGWUMP." +110 PRINT +240 GOSUB 1000 +250 T=0 +260 T=T+1 +270 PRINT +275 PRINT +290 PRINT "TURN NO.";T;"-- WHAT IS YOUR GUESS"; +300 INPUT M,N +310 FOR I=1 TO 4 +320 IF P(I,1)=-1 THEN 400 +330 IF P(I,1)<>M THEN 380 +340 IF P(I,2)<>N THEN 380 +350 P(I,1)=-1 +360 PRINT "YOU HAVE FOUND MUGWUMP";I +370 GOTO 400 +380 D=SQR((P(I,1)-M)^2+(P(I,2)-N)^2) +390 PRINT "YOU ARE";(INT(D*10))/10;"UNITS FROM MUGWUMP";I +400 NEXT I +410 FOR J=1 TO 4 +420 IF P(J,1)<>-1 THEN 470 +430 NEXT J +440 PRINT +450 PRINT "YOU GOT THEM ALL IN";T;"TURNS!" +460 GOTO 580 +470 IF T<10 THEN 260 +480 PRINT +490 PRINT "SORRY, THAT'S 10 TRIES. HERE IS WHERE THEY'RE HIDING:" +540 FOR I=1 TO 4 +550 IF P(I,1)=-1 THEN 570 +560 PRINT "MUGWUMP";I;"IS AT (";P(I,1);",";P(I,2);")" +570 NEXT I +580 PRINT +600 PRINT "THAT WAS FUN! LET'S PLAY AGAIN......." +610 PRINT "FOUR MORE MUGWUMPS ARE NOW IN HIDING." +630 GOTO 240 +1000 FOR J=1 TO 2 +1010 FOR I=1 TO 4 +1020 P(I,J)=INT(10*RND(1)) +1030 NEXT I +1040 NEXT J +1050 RETURN +1099 END diff --git a/GAMES/name.bas b/GAMES/name.bas new file mode 100644 index 0000000..6cdf3f9 --- /dev/null +++ b/GAMES/name.bas @@ -0,0 +1,25 @@ +1 PRINT TAB(34);"NAME" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT: PRINT: PRINT +5 DIM B$(40) +10 PRINT "HELLO.": PRINT "MY NAME IS CREATIVE COMPUTER." +20 PRINT "WHAT'S YOUR NAME (FIRST AND LAST";: INPUT A$: L=LEN(A$) +30 PRINT: PRINT "THANK YOU, "; +40 FOR I=1 TO L: B$(I)=MID$(A$,I,1): NEXT I +50 FOR I=L TO 1 STEP -1: PRINT B$(I);: NEXT I +60 PRINT ".": PRINT "OOPS! I GUESS I GOT IT BACKWARDS. A SMART" +70 PRINT "COMPUTER LIKE ME SHOULDN'T MAKE A MISTAKE LIKE THAT!": PRINT +80 PRINT "BUT I JUST NOTICED YOUR LETTERS ARE OUT OF ORDER." +90 PRINT "LET'S PUT THEM IN ORDER LIKE THIS: "; +100 FOR J=2 TO L: I=J-1: T$=B$(J) +110 IF T$>B$(I) THEN 130 +120 B$(I+1)=B$(I): I=I-1: IF I>0 THEN 110 +130 B$(I+1)=T$: NEXT J +140 FOR I=1 TO L: PRINT B$(I);: NEXT I: PRINT: PRINT +150 PRINT "DON'T YOU LIKE THAT BETTER";: INPUT D$ +160 IF D$="YES" THEN 180 +170 PRINT: PRINT "I'M SORRY YOU DON'T LIKE IT THAT WAY.": GOTO 200 +180 PRINT: PRINT "I KNEW YOU'D AGREE!!" +200 PRINT: PRINT "I REALLY ENJOYED MEETING YOU ";A$;"." +210 PRINT "HAVE A NICE DAY!" +999 END diff --git a/GAMES/nicoma.bas b/GAMES/nicoma.bas new file mode 100644 index 0000000..d478bc3 --- /dev/null +++ b/GAMES/nicoma.bas @@ -0,0 +1,34 @@ +2 PRINT TAB(33);"NICOMA" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 PRINT "BOOMERANG PUZZLE FROM ARITHMETICA OF NICOMACHUS -- A.D. 90!" +20 PRINT +30 PRINT "PLEASE THINK OF A NUMBER BETWEEN 1 AND 100." +40 PRINT "YOUR NUMBER DIVIDED BY 3 HAS A REMAINDER OF"; +45 INPUT A +50 PRINT "YOUR NUMBER DIVIDED BY 5 HAS A REMAINDER OF"; +55 INPUT B +60 PRINT "YOUR NUMBER DIVIDED BY 7 HAS A REMAINDER OF"; +65 INPUT C +70 PRINT +80 PRINT "LET ME THINK A MOMENT..." +85 PRINT +90 FOR I=1 TO 1500: NEXT I +100 D=70*A+21*B+15*C +110 IF D<=105 THEN 140 +120 D=D-105 +130 GOTO 110 +140 PRINT "YOUR NUMBER WAS";D;", RIGHT"; +160 INPUT A$ +165 PRINT +170 IF A$="YES" THEN 220 +180 IF A$="NO" THEN 240 +190 PRINT "EH? I DON'T UNDERSTAND '";A$;"' TRY 'YES' OR 'NO'." +200 GOTO 160 +220 PRINT "HOW ABOUT THAT!!" +230 GOTO 250 +240 PRINT "I FEEL YOUR ARITHMETIC IS IN ERROR." +250 PRINT +260 PRINT "LET'S TRY ANOTHER." +270 GOTO 20 +999 END diff --git a/GAMES/nim.bas b/GAMES/nim.bas new file mode 100644 index 0000000..097e236 --- /dev/null +++ b/GAMES/nim.bas @@ -0,0 +1,156 @@ +100 PRINT TAB(33);"NIM" +110 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +120 PRINT:PRINT:PRINT +210 DIM A(100),B(100,10),D(2) +220 PRINT "THIS IS THE GAME OF NIM." +230 PRINT "DO YOU WANT INSTRUCTIONS"; +240 INPUT Z$ +250 IF Z$="NO" THEN 440 +260 IF Z$="no" THEN 440 +270 IF Z$="YES" THEN 310 +280 IF Z$="yes" THEN 310 +290 PRINT "PLEASE ANSWER YES OR NO" +300 GOTO 240 +310 PRINT "THE GAME IS PLAYED WITH A NUMBER OF PILES OF OBJECTS." +320 PRINT "ANY NUMBER OF OBJECTS ARE REMOVED FROM ONE PILE BY YOU AND" +330 PRINT "THE MACHINE ALTERNATELY. ON YOUR TURN, YOU MAY TAKE" +340 PRINT "ALL THE OBJECTS THAT REMAIN IN ANY PILE, BUT YOU MUST" +350 PRINT "TAKE AT LEAST ONE OBJECT, AND YOU MAY TAKE OBJECTS FROM" +360 PRINT "ONLY ONE PILE ON A SINGLE TURN. YOU MUST SPECIFY WHETHER" +370 PRINT "WINNING IS DEFINED AS TAKING OR NOT TAKING THE LAST OBJECT," +380 PRINT "THE NUMBER OF PILES IN THE GAME, AND HOW MANY OBJECTS ARE" +390 PRINT "ORIGINALLY IN EACH PILE. EACH PILE MAY CONTAIN A" +400 PRINT "DIFFERENT NUMBER OF OBJECTS." +410 PRINT "THE MACHINE WILL SHOW ITS MOVE BY LISTING EACH PILE AND THE" +420 PRINT "NUMBER OF OBJECTS REMAINING IN THE PILES AFTER EACH OF ITS" +430 PRINT "MOVES." +440 PRINT +450 PRINT "ENTER WIN OPTION - 1 TO TAKE LAST, 2 TO AVOID LAST"; +460 INPUT W +470 IF W=1 THEN 490 +480 IF W<>2 THEN 450 +490 PRINT "ENTER NUMBER OF PILES"; +500 INPUT N +510 IF N>100 THEN 490 +520 IF N<1 THEN 490 +530 IF N<>INT(N) THEN 490 +540 PRINT "ENTER PILE SIZES" +550 FOR I=1 TO N +560 PRINT I; +570 INPUT A(I) +580 IF A(I)>2000 THEN 560 +590 IF A(I)<1 THEN 560 +600 IF A(I)<>INT(A(I)) THEN 560 +610 NEXT I +620 PRINT "DO YOU WANT TO MOVE FIRST"; +630 INPUT Q9$ +640 IF Q9$="YES" THEN 1450 +650 IF Q9$="yes" THEN 1450 +660 IF Q9$="NO" THEN 700 +670 IF Q9$="no" THEN 700 +680 PRINT "PLEASE ANSWER YES OR NO." +690 GOTO 630 +700 IF W=1 THEN 940 +710 LET C=0 +720 FOR I=1 TO N +730 IF A(I)=0 THEN 770 +740 LET C=C+1 +750 IF C=3 THEN 840 +760 LET D(C)=I +770 NEXT I +780 IF C=2 THEN 920 +790 IF A(D(1))>1 THEN 820 +800 PRINT "MACHINE LOSES" +810 GOTO 1640 +820 PRINT "MACHINE WINS" +830 GOTO 1640 +840 LET C=0 +850 FOR I=1 TO N +860 IF A(I)>1 THEN 940 +870 IF A(I)=0 THEN 890 +880 LET C=C+1 +890 NEXT I +900 IF C/2<>INT(C/2) THEN 800 +910 GOTO 940 +920 IF A(D(1))=1 THEN 820 +930 IF A(D(2))=1 THEN 820 +940 FOR I=1 TO N +950 LET E=A(I) +960 FOR J=0 TO 10 +970 LET F=E/2 +980 LET B(I,J)=2*(F-INT(F)) +990 LET E=INT(F) +1000 NEXT J +1010 NEXT I +1020 FOR J=10 TO 0 STEP -1 +1030 LET C=0 +1040 LET H=0 +1050 FOR I=1 TO N +1060 IF B(I,J)=0 THEN 1110 +1070 LET C=C+1 +1080 IF A(I)<=H THEN 1110 +1090 LET H=A(I) +1100 LET G=I +1110 NEXT I +1120 IF C/2<>INT(C/2) THEN 1190 +1130 NEXT J +1140 LET E=INT(N*RND(1)+1) +1150 IF A(E)=0 THEN 1140 +1160 LET F=INT(A(E)*RND(1)+1) +1170 LET A(E)=A(E)-F +1180 GOTO 1380 +1190 LET A(G)=0 +1200 FOR J=0 TO 10 +1210 LET B(G,J)=0 +1220 LET C=0 +1230 FOR I=1 TO N +1240 IF B(I,J)=0 THEN 1260 +1250 LET C=C+1 +1260 NEXT I +1270 LET A(G)=A(G)+2*(C/2-INT(C/2))*2^J +1280 NEXT J +1290 IF W=1 THEN 1380 +1300 LET C=0 +1310 FOR I=1 TO N +1320 IF A(I)>1 THEN 1380 +1330 IF A(I)=0 THEN 1350 +1340 LET C=C+1 +1350 NEXT I +1360 IF C/2<>INT(C/2) THEN 1380 +1370 LET A(G)=1-A(G) +1380 PRINT "PILE SIZE" +1390 FOR I=1 TO N +1400 PRINT I;A(I) +1410 NEXT I +1420 IF W=2 THEN 1450 +1430 GOSUB 1570 +1440 IF Z=1 THEN 820 +1450 PRINT "YOUR MOVE - PILE, NUMBER TO BE REMOVED"; +1460 INPUT X,Y +1470 IF X>N THEN 1450 +1480 IF X<1 THEN 1450 +1490 IF X<>INT(X) THEN 1450 +1500 IF Y>A(X) THEN 1450 +1510 IF Y<1 THEN 1450 +1520 IF Y<>INT(Y) THEN 1450 +1530 LET A(X)=A(X)-Y +1540 GOSUB 1570 +1550 IF Z=1 THEN 800 +1560 GOTO 700 +1570 LET Z=0 +1580 FOR I=1 TO N +1590 IF A(I)=0 THEN 1610 +1600 RETURN +1610 NEXT I +1620 LET Z=1 +1630 RETURN +1640 PRINT "do you want to play another game"; +1650 INPUT Q9$ +1660 IF Q9$="YES" GOTO 1720 +1670 IF Q9$="yes" GOTO 1720 +1680 IF Q9$="NO" GOTO 1730 +1690 IF Q9$="no" GOTO 1730 +1700 PRINT "PLEASE. YES OR NO." +1710 GOTO 1650 +1720 GOTO 440 +1730 END diff --git a/GAMES/number.bas b/GAMES/number.bas new file mode 100644 index 0000000..c5b9ff7 --- /dev/null +++ b/GAMES/number.bas @@ -0,0 +1,37 @@ +1 PRINT TAB(33);"NUMBER" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +4 PRINT "YOU HAVE 100 POINTS. BY GUESSING NUMBERS FROM 1 TO 5, YOU" +5 PRINT "CAN GAIN OR LOSE POINTS DEPENDING UPON HOW CLOSE YOU GET TO" +6 PRINT "A RANDOM NUMBER SELECTED BY THE COMPUTER.": PRINT +7 PRINT "YOU OCCASIONALLY WILL GET A JACKPOT WHICH WILL DOUBLE(!)" +8 PRINT "YOUR POINT COUNT. YOU WIN WHEN YOU GET 500 POINTS." +9 PRINT: P=100 +10 DEF FNR(X)=INT(5*RND(1)+1) +12 INPUT "GUESS A NUMBER FROM 1 TO 5";G +15 R=FNR(1) +16 S=FNR(1) +17 T=FNR(1) +18 U=FNR(1) +19 V=FNR(1) +20 IF G=R THEN 30 +21 IF G=S THEN 40 +22 IF G=T THEN 50 +23 IF G=U THEN 60 +24 IF G=V THEN 70 +25 IF G>5 THEN 12 +30 P=P-5 +35 GOTO 80 +40 P=P+5 +45 GOTO 80 +50 P=P+P +53 PRINT "YOU HIT THE JACKPOT!!!" +55 GOTO 80 +60 P=P+1 +65 GOTO 80 +70 P=P-(P*.5) +80 IF P>500 THEN 90 +82 PRINT "YOU HAVE";P;"POINTS.":PRINT +85 GOTO 12 +90 PRINT "!!!!YOU WIN!!!! WITH ";P;"POINTS." +99 END diff --git a/GAMES/onecheck.bas b/GAMES/onecheck.bas new file mode 100644 index 0000000..2161a74 --- /dev/null +++ b/GAMES/onecheck.bas @@ -0,0 +1,86 @@ +2 PRINT TAB(30);"ONE CHECK" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +8 DIM A(64) +10 PRINT "SOLITAIRE CHECKER PUZZLE BY DAVID AHL" +15 PRINT +20 PRINT "48 CHECKERS ARE PLACED ON THE 2 OUTSIDE SPACES OF A" +25 PRINT "STANDARD 64-SQUARE CHECKERBOARD. THE OBJECT IS TO" +30 PRINT "REMOVE AS MANY CHECKERS AS POSSIBLE BY DIAGONAL JUMPS" +35 PRINT "(AS IN STANDARD CHECKERS). USE THE NUMBERED BOARD TO" +40 PRINT "INDICATE THE SQUARE YOU WISH TO JUMP FROM AND TO. ON" +45 PRINT "THE BOARD PRINTED OUT ON EACH TURN '1' INDICATES A" +50 PRINT "CHECKER AND '0' AN EMPTY SQUARE. WHEN YOU HAVE NO" +55 PRINT "POSSIBLE JUMPS REMAINING, INPUT A '0' IN RESPONSE TO" +60 PRINT "QUESTION 'JUMP FROM ?'" +62 PRINT +63 PRINT "HERE IS THE NUMERICAL BOARD:" +66 PRINT +70 FOR J=1 TO 57 STEP 8 +74 PRINT J;TAB(4);J+1;TAB(8);J+2;TAB(12);J+3;TAB(16);J+4;TAB(20);J+5; +75 PRINT TAB(24);J+6;TAB(28);J+7 +76 NEXT J +77 PRINT +78 PRINT "AND HERE IS THE OPENING POSITION OF THE CHECKERS." +79 PRINT +80 FOR J=1 TO 64 +82 A(J)=1 +84 NEXT J +86 FOR J=19 TO 43 STEP 8 +88 FOR I=J TO J+3 +90 A(I)=0 +92 NEXT I +94 NEXT J +96 M=0 +98 GOTO 340 +100 INPUT "JUMP FROM";F +105 IF F=0 THEN 500 +110 INPUT "TO";T +112 PRINT +118 REM *** CHECK LEGALITY OF MOVE +120 F1=INT((F-1)/8) +130 F2=F-8*F1 +140 T1=INT((T-1)/8) +150 T2=T-8*T1 +160 IF F1>7 THEN 230 +170 IF T1>7 THEN 230 +180 IF F2>8 THEN 230 +190 IF T2>8 THEN 230 +200 IF ABS(F1-T1)<>2 THEN 230 +210 IF ABS(F2-T2)<>2 THEN 230 +212 IF A((T+F)/2)=0 THEN 230 +215 IF A(F)=0 THEN 230 +220 IF A(T)=1 THEN 230 +225 GOTO 250 +230 PRINT "ILLEGAL MOVE. TRY AGAIN..." +240 GOTO 100 +245 REM *** UPDATE BOARD +250 A(T)=1 +260 A(F)=0 +270 A((T+F)/2)=0 +290 M=M+1 +310 REM *** PRINT BOARD +340 FOR J=1 TO 57 STEP 8 +350 FOR I=J TO J+7 +360 PRINT A(I); +370 NEXT I +380 PRINT +390 NEXT J +400 PRINT +410 GOTO 100 +490 REM *** END GAME SUMMARY +500 S=0 +510 FOR I=1 TO 64 +520 S=S+A(I) +530 NEXT I +540 PRINT:PRINT "YOU MADE";M;"JUMPS AND HAD";S;"PIECES" +550 PRINT "REMAINING ON THE BOARD." +560 PRINT +562 INPUT "TRY AGAIN";A$ +570 IF A$="YES" THEN 70 +575 IF A$="NO" THEN 600 +580 PRINT "PLEASE ANSWER 'YES' OR 'NO'." +590 GOTO 562 +600 PRINT +610 PRINT "O.K. HOPE YOU HAD FUN!!" +999 END diff --git a/GAMES/orbit.bas b/GAMES/orbit.bas new file mode 100644 index 0000000..1230288 --- /dev/null +++ b/GAMES/orbit.bas @@ -0,0 +1,96 @@ +2 PRINT TAB(33);"ORBIT" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +10 PRINT "SOMEWHERE ABOVE YOUR PLANET IS A ROMULAN SHIP." +15 PRINT +20 PRINT "THE SHIP IS IN A CONSTANT POLAR ORBIT. ITS" +25 PRINT "DISTANCE FROM THE CENTER OF YOUR PLANET IS FROM" +30 PRINT "10,000 TO 30,000 MILES AND AT ITS PRESENT VELOCITY CAN" +31 PRINT "CIRCLE YOUR PLANET ONCE EVERY 12 TO 36 HOURS." +35 PRINT +40 PRINT "UNFORTUNATELY, THEY ARE USING A CLOAKING DEVICE SO" +45 PRINT "YOU ARE UNABLE TO SEE THEM, BUT WITH A SPECIAL" +50 PRINT "INSTRUMENT YOU CAN TELL HOW NEAR THEIR SHIP YOUR" +55 PRINT "PHOTON BOMB EXPLODED. YOU HAVE SEVEN HOURS UNTIL THEY" +60 PRINT "HAVE BUILT UP SUFFICIENT POWER IN ORDER TO ESCAPE" +65 PRINT "YOUR PLANET'S GRAVITY." +70 PRINT +75 PRINT "YOUR PLANET HAS ENOUGH POWER TO FIRE ONE BOMB AN HOUR." +80 PRINT +85 PRINT "AT THE BEGINNING OF EACH HOUR YOU WILL BE ASKED TO GIVE AN" +90 PRINT "ANGLE (BETWEEN 0 AND 360) AND A DISTANCE IN UNITS OF" +95 PRINT "100 MILES (BETWEEN 100 AND 300), AFTER WHICH YOUR BOMB'S" +100 PRINT "DISTANCE FROM THE ENEMY SHIP WILL BE GIVEN." +105 PRINT +110 PRINT "AN EXPLOSION WITHIN 5,000 MILES OF THE ROMULAN SHIP" +111 PRINT "WILL DESTROY IT." +114 PRINT +115 PRINT "BELOW IS A DIAGRAM TO HELP YOU VISUALIZE YOUR PLIGHT." +116 PRINT +117 PRINT +168 PRINT " 90" +170 PRINT " 0000000000000" +171 PRINT " 0000000000000000000" +172 PRINT " 000000 000000" +173 PRINT " 00000 00000" +174 PRINT " 00000 XXXXXXXXXXX 00000" +175 PRINT " 00000 XXXXXXXXXXXXX 00000" +176 PRINT " 0000 XXXXXXXXXXXXXXX 0000" +177 PRINT " 0000 XXXXXXXXXXXXXXXXX 0000" +178 PRINT " 0000 XXXXXXXXXXXXXXXXXXX 0000" +179 PRINT "180<== 00000 XXXXXXXXXXXXXXXXXXX 00000 ==>0" +180 PRINT " 0000 XXXXXXXXXXXXXXXXXXX 0000" +181 PRINT " 0000 XXXXXXXXXXXXXXXXX 0000" +182 PRINT " 0000 XXXXXXXXXXXXXXX 0000" +183 PRINT " 00000 XXXXXXXXXXXXX 00000" +184 PRINT " 00000 XXXXXXXXXXX 00000" +185 PRINT " 00000 00000" +186 PRINT " 000000 000000" +187 PRINT " 0000000000000000000" +188 PRINT " 0000000000000" +190 PRINT " 270" +192 PRINT +195 PRINT "X - YOUR PLANET" +196 PRINT "O - THE ORBIT OF THE ROMULAN SHIP" +197 PRINT +198 PRINT "ON THE ABOVE DIAGRAM, THE ROMULAN SHIP IS CIRCLING" +199 PRINT "COUNTERCLOCKWISE AROUND YOUR PLANET. DON'T FORGET THAT" +200 PRINT "WITHOUT SUFFICIENT POWER THE ROMULAN SHIP'S ALTITUDE" +210 PRINT "AND ORBITAL RATE WILL REMAIN CONSTANT." +220 PRINT +230 PRINT "GOOD LUCK. THE FEDERATION IS COUNTING ON YOU." +270 A=INT(360*RND(1)) +280 D=INT(200*RND(1)+200) +290 R=INT(20*RND(1)+10) +300 H=0 +310 IF H=7 THEN 490 +320 H=H+1 +325 PRINT +326 PRINT +330 PRINT "THIS IS HOUR";H;", AT WHAT ANGLE DO YOU WISH TO SEND" +335 PRINT "YOUR PHOTON BOMB"; +340 INPUT A1 +350 PRINT "HOW FAR OUT DO YOU WISH TO DETONATE IT"; +360 INPUT D1 +365 PRINT +366 PRINT +370 A=A+R +380 IF A<360 THEN 400 +390 A=A-360 +400 T=ABS(A-A1) +410 IF T<180 THEN 430 +420 T=360-T +430 C=SQR(D*D+D1*D1-2*D*D1*COS(T*3.14159/180)) +440 PRINT "YOUR PHOTON BOMB EXPLODED";C;"*10^2 MILES FROM THE" +445 PRINT "ROMULAN SHIP." +450 IF C<=50 THEN 470 +460 GOTO 310 +470 PRINT "YOU HAVE SUCCESFULLY COMPLETED YOUR MISSION." +480 GOTO 500 +490 PRINT "YOU HAVE ALLOWED THE ROMULANS TO ESCAPE." +500 PRINT "ANOTHER ROMULAN SHIP HAS GONE INTO ORBIT." +510 PRINT "DO YOU WISH TO TRY TO DESTROY IT"; +520 INPUT C$ +530 IF C$="YES" THEN 270 +540 PRINT "GOOD BYE." +999 END diff --git a/GAMES/pizza.bas b/GAMES/pizza.bas new file mode 100644 index 0000000..c2e9a49 --- /dev/null +++ b/GAMES/pizza.bas @@ -0,0 +1,68 @@ +5 PRINT TAB(33);"PIZZA" +10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +15 PRINT: PRINT: PRINT +20 DIM S$(16),M$(4) +30 PRINT "PIZZA DELIVERY GAME": PRINT +50 INPUT "WHAT IS YOUR FIRST NAME";N$: PRINT +80 PRINT "HI, ";N$;". IN THIS GAME YOU ARE TO TAKE ORDERS" +90 PRINT "FOR PIZZAS. THEN YOU ARE TO TELL A DELIVERY BOY" +100 PRINT "WHERE TO DELIVER THE ORDERED PIZZAS.": PRINT: PRINT +140 FOR I=1 TO 16 +150 READ S$(I) +160 NEXT I +170 FOR I=1 TO 4 +180 READ M$(I) +190 NEXT I +200 DATA "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O" +210 DATA "P","1","2","3","4" +230 PRINT "MAP OF THE CITY OF HYATTSVILLE": PRINT +250 PRINT " -----1-----2-----3-----4-----" +260 K=4 +270 FOR I=1 TO 4 +280 PRINT "-": PRINT "-": PRINT"-": PRINT "-" +320 PRINT M$(K); +330 S1=16-4*I+1 +340 PRINT " ";S$(S1);" ";S$(S1+1);" ";S$(S1+2);" "; +350 PRINT S$(S1+3);" ";M$(K) +380 K=K-1 +390 NEXT I +400 PRINT "-": PRINT "-": PRINT "-": PRINT "-" +440 PRINT " -----1-----2-----3-----4-----": PRINT +460 PRINT "THE OUTPUT IS A MAP OF THE HOMES WHERE" +470 PRINT "YOU ARE TO SEND PIZZAS.": PRINT +490 PRINT "YOUR JOB IS TO GIVE A TRUCK DRIVER" +500 PRINT "THE LOCATION OR COORDINATES OF THE" +510 PRINT "HOME ORDERING THE PIZZA.": PRINT +520 INPUT "DO YOU NEED MORE DIRECTIONS";A$ +530 IF A$="YES" THEN 590 +540 IF A$="NO" THEN 750 +550 PRINT "'YES' OR 'NO' PLEASE, NOW THEN,": GOTO 520 +590 PRINT: PRINT "SOMEBODY WILL ASK FOR A PIZZA TO BE" +600 PRINT "DELIVERED. THEN A DELIVERY BOY WILL" +610 PRINT "ASK YOU FOR THE LOCATION.":PRINT " EXAMPLE:" +620 PRINT "THIS IS J. PLEASE SEND A PIZZA." +640 PRINT "DRIVER TO ";N$;". WHERE DOES J LIVE?" +650 PRINT "YOUR ANSWER WOULD BE 2,3": PRINT +660 INPUT "UNDERSTAND";A$ +670 IF A$="YES" THEN 690 +680 PRINT "THIS JOB IS DEFINITELY TOO DIFFICULT FOR YOU. THANKS ANYWAY" +685 GOTO 999 +690 PRINT "GOOD. YOU ARE NOW READY TO START TAKING ORDERS.": PRINT +700 PRINT "GOOD LUCK!!": PRINT +750 FOR I=1 TO 5 +760 S=INT(RND(1)*16+1): PRINT +770 PRINT "HELLO ";N$;"'S PIZZA. THIS IS ";S$(S);"."; +775 PRINT " PLEASE SEND A PIZZA." +780 PRINT " DRIVER TO ";N$;": WHERE DOES ";S$(S);" LIVE"; +790 INPUT A(1),A(2) +870 T=A(1)+(A(2)-1)*4 +880 IF T=S THEN 920 +890 PRINT "THIS IS ";S$(T);". I DID NOT ORDER A PIZZA." +900 PRINT "I LIVE AT ";A(1);",";A(2) +910 GOTO 780 +920 PRINT "HELLO ";N$;". THIS IS ";S$(S);", THANKS FOR THE PIZZA." +930 NEXT I +940 PRINT: INPUT "DO YOU WANT TO DELIVER MORE PIZZAS";A$ +960 IF A$="YES" THEN 750 +970 PRINT: PRINT "O.K. ";N$;", SEE YOU LATER!":PRINT +999 END diff --git a/GAMES/poetry.bas b/GAMES/poetry.bas new file mode 100644 index 0000000..1b5314f --- /dev/null +++ b/GAMES/poetry.bas @@ -0,0 +1,43 @@ +10 PRINT TAB(30);"POETRY" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +90 ON I GOTO 100,101,102,103,104 +100 PRINT "MIDNIGHT DREARY";:GOTO 210 +101 PRINT "FIERY EYES";:GOTO 210 +102 PRINT "BIRD OR FIEND";:GOTO 210 +103 PRINT "THING OF EVIL";:GOTO 210 +104 PRINT "PROPHET";:GOTO 210 +110 ON I GOTO 111,112,113,114,115 +111 PRINT "BEGUILING ME";:U=2:GOTO 210 +112 PRINT "THRILLED ME";:GOTO 210 +113 PRINT "STILL SITTING....";:GOTO 212 +114 PRINT "NEVER FLITTING";:U=2:GOTO 210 +115 PRINT "BURNED";:GOTO 210 +120 ON I GOTO 121,122,123,124,125 +121 PRINT "AND MY SOUL";:GOTO 210 +122 PRINT "DARKNESS THERE";:GOTO 210 +123 PRINT "SHALL BE LIFTED";:GOTO 210 +124 PRINT "QUOTH THE RAVEN";:GOTO 210 +125 IF U=0 THEN 210 +126 PRINT "SIGN OF PARTING";:GOTO 210 +130 ON I GOTO 131,132,133,134,135 +131 PRINT "NOTHING MORE";:GOTO 210 +132 PRINT "YET AGAIN";:GOTO 210 +133 PRINT "SLOWLY CREEPING";:GOTO 210 +134 PRINT "...EVERMORE";:GOTO 210 +135 PRINT "NEVERMORE"; +210 IF U=0 OR RND(1)>.19 THEN 212 +211 PRINT ",";:U=2 +212 IF RND(1)>.65 THEN 214 +213 PRINT " ";:U=U+1:GOTO 215 +214 PRINT : U=0 +215 I=INT(INT(10*RND(1))/2)+1 +220 J=J+1 : K=K+1 +230 IF U>0 OR INT(J/2)<>J/2 THEN 240 +235 PRINT " "; +237 INPUT "PRESS RETURN TO CONTINUE"; A12 +240 ON J GOTO 90,110,120,130,250 +250 J=0 : PRINT : IF K>20 THEN 270 +260 GOTO 215 +270 PRINT : U=0 : K=0 : GOTO 110 +999 END diff --git a/GAMES/poker.bas b/GAMES/poker.bas new file mode 100644 index 0000000..c9204a6 --- /dev/null +++ b/GAMES/poker.bas @@ -0,0 +1,416 @@ +2 PRINT TAB(33);"POKER" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 DIM A(50),B(15) +20 DEF FNA(X)=INT(10*RND(1)) +30 DEF FNB(X)=X-100*INT(X/100) +40 PRINT "WELCOME TO THE CASINO. WE EACH HAVE $200." +50 PRINT "I WILL OPEN THE BETTING BEFORE THE DRAW; YOU OPEN AFTER." +60 PRINT "TO FOLD BET 0; TO CHECK BET .5." +70 PRINT "ENOUGH TALK -- LET'S GET DOWN TO BUSINESS." +80 PRINT +90 LET O=1 +100 LET C=200 +110 LET S=200 +120 LET P=0 +130 REM +140 PRINT +150 IF C<=5 THEN 3670 +160 PRINT "THE ANTE IS $5. I WILL DEAL:" +170 PRINT +180 IF S>5 THEN 200 +190 GOSUB 3830 +200 LET P=P+10 +210 LET S=S-5 +220 LET C=C-5 +230 FOR Z=1 TO 10 +240 GOSUB 1740 +250 NEXT Z +260 PRINT "YOUR HAND:" +270 N=1 +280 GOSUB 1850 +290 N=6 +300 I=2 +310 GOSUB 2170 +320 PRINT +330 IF I<>6 THEN 470 +340 IF FNA(0)<=7 THEN 370 +350 LET X=11100 +360 GOTO 420 +370 IF FNA(0)<=7 THEN 400 +380 LET X=11110 +390 GOTO 420 +400 IF FNA(0)>=1 THEN 450 +410 X=11111 +420 I=7 +430 Z=23 +440 GOTO 580 +450 Z=1 +460 GOTO 510 +470 IF U>=13 THEN 540 +480 IF FNA(0)>=2 THEN 500 +490 GOTO 420 +500 Z=0 +510 K=0 +520 PRINT "I CHECK." +530 GOTO 620 +540 IF U<=16 THEN 570 +550 Z=2 +560 IF FNA(0)>=1 THEN 580 +570 Z=35 +580 V=Z+FNA(0) +590 GOSUB 3480 +600 PRINT "I'LL OPEN WITH $";V +610 K=V +620 GOSUB 3050 +630 GOSUB 650 +640 GOTO 820 +650 IF I<>3 THEN 760 +660 PRINT +670 PRINT "I WIN." +680 C=C+P +690 PRINT "NOW I HAVE $";C;"AND YOU HAVE $";S +700 PRINT "DO YOU WISH TO CONTINUE"; +710 INPUT H$ +720 IF H$="YES" THEN 120 +730 IF H$="NO" THEN 4100 +740 PRINT "ANSWER YES OR NO, PLEASE." +750 GOTO 700 +760 IF I<>4 THEN 810 +770 PRINT +780 PRINT "YOU WIN." +790 S=S+P +800 GOTO 690 +810 RETURN +820 PRINT +830 PRINT "NOW WE DRAW -- HOW MANY CARDS DO YOU WANT"; +840 INPUT T +850 IF T=0 THEN 980 +860 Z=10 +870 IF T<4 THEN 900 +880 PRINT "YOU CAN'T DRAW MORE THAN THREE CARDS." +890 GOTO 840 +900 PRINT "WHAT ARE THEIR NUMBERS:" +910 FOR Q=1 TO T +920 INPUT U +930 GOSUB 1730 +940 NEXT Q +950 PRINT "YOUR NEW HAND:" +960 N=1 +970 GOSUB 1850 +980 Z=10+T +990 FOR U=6 TO 10 +1000 IF INT(X/10^(U-6))<>10*INT(X/10^(U-5)) THEN 1020 +1010 GOSUB 1730 +1020 NEXT U +1030 PRINT +1040 PRINT "I AM TAKING";Z-10-T;"CARD"; +1050 IF Z=11+T THEN 1090 +1060 PRINT "S" +1070 PRINT +1080 GOTO 1100 +1090 PRINT +1100 N=6 +1110 V=I +1120 I=1 +1130 GOSUB 2170 +1140 B=U +1150 M=D +1160 IF V<>7 THEN 1190 +1170 Z=28 +1180 GOTO 1330 +1190 IF I<>6 THEN 1220 +1200 Z=1 +1210 GOTO 1330 +1220 IF U>=13 THEN 1270 +1230 Z=2 +1240 IF FNA(0)<>6 THEN 1260 +1250 Z=19 +1260 GOTO 1330 +1270 IF U>=16 THEN 1320 +1280 Z=19 +1290 IF FNA(0)<>8 THEN 1310 +1300 Z=11 +1310 GOTO 1330 +1320 Z=2 +1330 K=0 +1340 GOSUB 3050 +1350 IF T<>.5 THEN 1450 +1360 IF V=7 THEN 1400 +1370 IF I<>6 THEN 1400 +1380 PRINT "I'LL CHECK" +1390 GOTO 1460 +1400 V=Z+FNA(0) +1410 GOSUB 3480 +1420 PRINT "I'LL BET $";V +1430 K=V +1440 GOSUB 3060 +1450 GOSUB 650 +1460 PRINT +1470 PRINT "NOW WE COMPARE HANDS:" +1480 J$=H$ +1490 K$=I$ +1500 PRINT "MY HAND:" +1510 N=6 +1520 GOSUB 1850 +1530 N=1 +1540 GOSUB 2170 +1550 PRINT +1560 PRINT "YOU HAVE "; +1570 K=D +1580 GOSUB 3690 +1590 H$=J$ +1600 I$=K$ +1610 K=M +1620 PRINT "AND I HAVE "; +1630 GOSUB 3690 +1640 IF B>U THEN 670 +1650 IF U>B THEN 780 +1660 IF H$="A FLUS" THEN 1700 +1662 IF FNB(M)FNB(D) THEN 670 +1670 PRINT "THE HAND IS DRAWN." +1680 PRINT "ALL $";P;"REMAINS IN THE POT." +1690 GOTO 140 +1700 IF FNB(M)>FNB(D) THEN 670 +1710 IF FNB(D)>FNB(M) THEN 780 +1720 GOTO 1670 +1730 Z=Z+1 +1740 A(Z)=100*INT(4*RND(1))+INT(100*RND(1)) +1750 IF INT(A(Z)/100)>3 THEN 1740 +1760 IF A(Z)-100*INT(A(Z)/100)>12 THEN 1740 +1765 IF Z=1 THEN 1840 +1770 FOR K=1 TO Z-1 +1780 IF A(Z)=A(K) THEN 1740 +1790 NEXT K +1800 IF Z<=10 THEN 1840 +1810 N=A(U) +1820 A(U)=A(Z) +1830 A(Z)=N +1840 RETURN +1850 FOR Z=N TO N+4 +1860 PRINT Z;"-- "; +1870 GOSUB 1950 +1880 PRINT " OF"; +1890 GOSUB 2070 +1900 IF Z/2<>INT(Z/2) THEN 1920 +1910 PRINT +1920 NEXT Z +1930 PRINT +1940 RETURN +1950 K=FNB(A(Z)) +1960 IF K<>9 THEN 1980 +1970 PRINT "JACK"; +1980 IF K<>10 THEN 2000 +1990 PRINT "QUEEN"; +2000 IF K<>11 THEN 2020 +2010 PRINT "KING"; +2020 IF K<>12 THEN 2040 +2030 PRINT "ACE"; +2040 IF K>=9 THEN 2060 +2050 PRINT K+2; +2060 RETURN +2070 K=INT(A(Z)/100) +2080 IF K<>0 THEN 2100 +2090 PRINT " CLUBS", +2100 IF K<>1 THEN 2120 +2110 PRINT " DIAMONDS", +2120 IF K<>2 THEN 2140 +2130 PRINT " HEARTS", +2140 IF K<>3 THEN 2160 +2150 PRINT " SPADES", +2160 RETURN +2170 U=0 +2180 FOR Z=N TO N+4 +2190 B(Z)=FNB(A(Z)) +2200 IF Z=N+4 THEN 2230 +2210 IF INT(A(Z)/100)<>INT(A(Z+1)/100) THEN 2230 +2220 U=U+1 +2230 NEXT Z +2240 IF U<>4 THEN 2310 +2250 X=11111 +2260 D=A(N) +2270 H$="A FLUS" +2280 I$="H IN" +2290 U=15 +2300 RETURN +2310 FOR Z=N TO N+3 +2320 FOR K=Z+1 TO N+4 +2330 IF B(Z)<=B(K) THEN 2390 +2340 X=A(Z) +2350 A(Z)=A(K) +2360 B(Z)=B(K) +2370 A(K)=X +2380 B(K)=A(K)-100*INT(A(K)/100) +2390 NEXT K +2400 NEXT Z +2410 X=0 +2420 FOR Z=N TO N+3 +2430 IF B(Z)<>B(Z+1) THEN 2470 +2440 X=X+11*10^(Z-N) +2450 D=A(Z) +2460 GOSUB 2760 +2470 NEXT Z +2480 IF X<>0 THEN 2620 +2490 IF B(N)+3<>B(N+3) THEN 2520 +2500 X=1111 +2510 U=10 +2520 IF B(N+1)+3<>B(N+4) THEN 2620 +2530 IF U<>10 THEN 2600 +2540 U=14 +2550 H$="STRAIG" +2560 I$="HT" +2570 X=11111 +2580 D=A(N+4) +2590 RETURN +2600 U=10 +2610 X=11110 +2620 IF U>=10 THEN 2690 +2630 D=A(N+4) +2640 H$="SCHMAL" +2650 I$="TZ, " +2660 U=9 +2670 X=11000 +2680 GOTO 2740 +2690 IF U<>10 THEN 2720 +2700 IF I=1 THEN 2740 +2710 GOTO 2750 +2720 IF U>12 THEN 2750 +2730 IF FNB(D)>6 THEN 2750 +2740 I=6 +2750 RETURN +2760 IF U>=11 THEN 2810 +2770 U=11 +2780 H$="A PAIR" +2790 I$=" OF " +2800 RETURN +2810 IF U<>11 THEN 2910 +2820 IF B(Z)<>B(Z-1) THEN 2870 +2830 H$="THREE" +2840 I$=" " +2850 U=13 +2860 RETURN +2870 H$="TWO P" +2880 I$="AIR, " +2890 U=12 +2900 RETURN +2910 IF U>12 THEN 2960 +2920 U=16 +2930 H$="FULL H" +2940 I$="OUSE, " +2950 RETURN +2960 IF B(Z)<>B(Z-1) THEN 3010 +2970 U=17 +2980 H$="FOUR" +2990 I$=" " +3000 RETURN +3010 U=16 +3020 H$="FULL H" +3030 I$="OUSE, " +3040 RETURN +3050 G=0 +3060 PRINT:PRINT "WHAT IS YOUR BET"; +3070 INPUT T +3080 IF T-INT(T)=0 THEN 3140 +3090 IF K<>0 THEN 3120 +3100 IF G<>0 THEN 3120 +3110 IF T=.5 THEN 3410 +3120 PRINT "NO SMALL CHANGE, PLEASE." +3130 GOTO 3060 +3140 IF S-G-T>=0 THEN 3170 +3150 GOSUB 3830 +3160 GOTO 3060 +3170 IF T<>0 THEN 3200 +3180 I=3 +3190 GOTO 3380 +3200 IF G+T>=K THEN 3230 +3210 PRINT "IF YOU CAN'T SEE MY BET, THEN FOLD." +3220 GOTO 3060 +3230 G=G+T +3240 IF G=K THEN 3380 +3250 IF Z<>1 THEN 3420 +3260 IF G>5 THEN 3300 +3270 IF Z>=2 THEN 3350 +3280 V=5 +3290 GOTO 3420 +3300 IF Z=1 THEN 3320 +3310 IF T<=25 THEN 3350 +3320 I=4 +3330 PRINT "I FOLD." +3340 RETURN +3350 IF Z=2 THEN 3430 +3360 PRINT "I'LL SEE YOU." +3370 K=G +3380 S=S-G +3390 C=C-K +3400 P=P+G+K +3410 RETURN +3420 IF G>3*Z THEN 3350 +3430 V=G-K+FNA(0) +3440 GOSUB 3480 +3450 PRINT "I'LL SEE YOU, AND RAISE YOU";V +3460 K=G+V +3470 GOTO 3060 +3480 IF C-G-V>=0 THEN 3660 +3490 IF G<>0 THEN 3520 +3500 V=C +3510 RETURN +3520 IF C-G>=0 THEN 3360 +3530 IF (O/2)<>INT(O/2) THEN 3600 +3540 PRINT "WOULD YOU LIKE TO BUY BACK YOUR WATCH FOR $50"; +3550 INPUT J$ +3560 IF LEFT$(J$,1)="N" THEN 3600 +3570 C=C+50 +3580 O=O/2 +3590 RETURN +3600 IF O/3<>INT(O/3) THEN 3670 +3610 PRINT "WOULD YOU LIKE TO BUY BACK YOUR TIE TACK FOR $50"; +3620 INPUT J$ +3630 IF LEFT$(J$,1)="N" THEN 3670 +3640 C=C+50 +3650 O=O/3 +3660 RETURN +3670 PRINT "I'M BUSTED. CONGRATULATIONS!" +3680 STOP +3690 PRINT H$;I$; +3700 IF H$<>"A FLUS" THEN 3750 +3710 K=INT(K/100) +3720 GOSUB 2080 +3730 PRINT +3740 RETURN +3750 K=FNB(K) +3760 GOSUB 1960 +3770 IF H$="SCHMAL" THEN 3790 +3780 IF H$<>"STRAIG" THEN 3810 +3790 PRINT " HIGH" +3800 RETURN +3810 PRINT "'S" +3820 RETURN +3830 PRINT +3840 PRINT "YOU CAN'T BET WITH WHAT YOU HAVEN'T GOT." +3850 IF O/2=INT(O/2) THEN 3970 +3860 PRINT "WOULD YOU LIKE TO SELL YOUR WATCH"; +3870 INPUT J$ +3880 IF LEFT$(J$,1)="N" THEN 3970 +3890 IF FNA(0)>=7 THEN 3930 +3900 PRINT "I'LL GIVE YOU $75 FOR IT." +3910 S=S+75 +3920 GOTO 3950 +3930 PRINT "THAT'S A PRETTY CRUMMY WATCH - I'LL GIVE YOU $25." +3940 S=S+25 +3950 O=O*2 +3960 RETURN +3970 IF O/3<>INT(O/3) THEN 4090 +3980 PRINT "WILL YOU PART WITH THAT DIAMOND TIE TACK": +3990 INPUT J$ +4000 IF LEFT$(J$,1)="N" THEN 4080 +4010 IF FNA(0)>=6 THEN 4050 +4020 PRINT "YOU ARE NOW $100 RICHER." +4030 S=S+100 +4040 GOTO 4070 +4050 PRINT "IT'S PASTE. $25." +4060 S=S+25 +4070 O=O*3 +4080 RETURN +4090 PRINT "YOUR WAD IS SHOT. SO LONG, SUCKER!" +4100 END diff --git a/GAMES/profile.bas b/GAMES/profile.bas new file mode 100644 index 0000000..c881139 --- /dev/null +++ b/GAMES/profile.bas @@ -0,0 +1,2 @@ +OPTION VERSION BYWATER +OPTION LABELS OFF diff --git a/GAMES/qubic.bas b/GAMES/qubic.bas new file mode 100644 index 0000000..a926bb4 --- /dev/null +++ b/GAMES/qubic.bas @@ -0,0 +1,281 @@ +50 PRINT CHR$(26):WIDTH 80 +100 PRINT TAB(33);"QUBIC":PRINT +110 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +120 PRINT:PRINT:PRINT +210 PRINT "DO YOU WANT INSTRUCTIONS"; +220 INPUT C$ +230 IF LEFT$(C$,1)="N" THEN 315 +240 IF LEFT$(C$,1)="Y" THEN 265 +250 PRINT "INCORRECT ANSWER. PLEASE TYPE 'YES' OR 'NO'"; +260 GOTO 220 +265 PRINT +270 PRINT "THE GAME IS TIC-TAC-TOE IN A 4 X 4 X 4 CUBE." +280 PRINT "EACH MOVE IS INDICATED BY A 3 DIGIT NUMBER, WITH EACH" +290 PRINT "DIGIT BETWEEN 1 AND 4 INCLUSIVE. THE DIGITS INDICATE THE" +300 PRINT "LEVEL, ROW, AND COLUMN, RESPECTIVELY, OF THE OCCUPIED" +305 PRINT "PLACE. " +306 PRINT +307 PRINT "TO PRINT THE PLAYING BOARD, TYPE 0 (ZERO) AS YOUR MOVE." +308 PRINT "THE PROGRAM WILL PRINT THE BOARD WITH YOUR MOVES INDI-" +309 PRINT "CATED WITH A (Y), THE MACHINE'S MOVES WITH AN (M), AND" +310 PRINT "UNUSED SQUARES WITH A ( ). OUTPUT IS ON PAPER." +311 PRINT +312 PRINT "TO STOP THE PROGRAM RUN, TYPE 1 AS YOUR MOVE." +313 PRINT:PRINT +315 DIM X(64),L(76),M(76,4),Y(16) +320 FOR I = 1 TO 16 +330 READ Y(I) +340 NEXT I +350 FOR I=1 TO 76 +360 FOR J = 1 TO 4 +370 READ M(I,J) +380 NEXT J +390 NEXT I +400 FOR I = 1 TO 64 +410 LET X (I) =0 +420 NEXT I +430 LET Z=1 +440 PRINT "DO YOU WANT TO MOVE FIRST"; +450 INPUT S$ +460 IF LEFT$(S$,1)="N" THEN 630 +470 IF LEFT$(S$,1)="Y" THEN 500 +480 PRINT "INCORRECT ANSWER. PLEASE TYPE 'YES' OR 'NO'."; +490 GOTO 450 +500 PRINT " " +510 PRINT "YOUR MOVE"; +520 INPUT J1 +521 IF J1=1 THEN 2770 +522 IF J1<>0 THEN 525 +523 GOSUB 2550 +524 GOTO 500 +525 IF J1<111 THEN 2750 +526 IF J1>444 THEN 2750 +530 GOSUB 2500 +540 LET K1=INT(J1/100) +550 LET J2=(J1-K1*100) +560 LET K2=INT(J2/10) +570 LET K3= J1 - K1*100 -K2*10 +580 LET M=16*K1+4*K2+K3-20 +590 IF X(M)=0 THEN 620 +600 PRINT "THAT SQUARE IS USED, TRY AGAIN." +610 GOTO 500 +620 LET X(M)=1 +630 GOSUB 1640 +640 J=1 +650 I=1 +660 IF J=1 THEN 720 +670 IF J=2 THEN 790 +680 IF J=3 THEN 930 +690 I=I+1: IF I<=76 THEN 660 +700 J=J+1: IF J<=3 THEN 650 +710 GOTO 1300 +720 IF L(I)<>4 THEN 690 +730 PRINT "YOU WIN AS FOLLOWS"; +740 FOR J=1 TO 4 +750 LET M=M(I,J) +760 GOSUB 1570 +770 NEXT J +780 GOTO 1490 +790 IF L(I)<>15 THEN 690 +800 FOR J=1 TO 4 +810 LET M=M(I,J) +820 IF X(M)<>0 THEN 860 +830 LET X(M)=5 +840 PRINT "MACHINE MOVES TO"; +850 GOSUB 1570 +860 NEXT J +870 PRINT ", AND WINS AS FOLLOWS" +880 FOR J=1 TO 4 +890 LET M=M(I,J) +900 GOSUB 1570 +910 NEXT J +920 GOTO 1490 +930 IF L(I)<>3 THEN 690 +940 PRINT "NICE TRY. MACHINE MOVES TO"; +950 FOR J=1 TO 4 +960 LET M=M(I,J) +970 IF X(M)<>0 THEN 1010 +980 LET X(M)=5 +990 GOSUB 1570 +1000 GOTO 500 +1010 NEXT J +1020 GOTO 1300 +1030 I=1 +1040 LET L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) +1050 LET L = L(I) +1060 IF L <2 THEN 1130 +1070 IF L>=3 THEN 1130 +1080 IF L>2 THEN 2230 +1090 FOR J = 1 TO 4 +1100 IF X(M(I,J))<>0 THEN 1120 +1110 LET X(M(I,J))=1/8 +1120 NEXT J +1130 I=I+1: IF I<=76 THEN 1040 +1140 GOSUB 1640 +1150 I=1 +1160 IF L(I)=1/2 THEN 2360 +1170 IF L(I)=1+3/8 THEN 2360 +1180 I=I+1: IF I<=76 THEN 1160 +1190 GOTO 1830 +1200 LET Z = 1 +1210 IF X(Y(Z))=0 THEN 1250 +1220 LET Z=Z+1 +1230 IF Z<>17 THEN 1210 +1240 GOTO 1720 +1250 LET M=Y(Z) +1260 LET X(M)=5 +1270 PRINT "MACHINE MOVES TO"; +1280 GOSUB 1570 +1290 GOTO 500 +1300 LET X=X +1310 I=1 +1320 LET L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) +1330 LET L=L(I) +1340 IF L<10 THEN 1410 +1350 IF L>=11 THEN 1410 +1360 IF L>10 THEN 2230 +1370 FOR J=1 TO 4 +1380 IF X(M(I,J))<>0 THEN 1400 +1390 LET X(M(I,J))=1/8 +1400 NEXT J +1410 I=I+1: IF I<=76 THEN 1320 +1420 GOSUB 1640 +1430 I=1 +1440 IF L(I)=.5 THEN 2360 +1450 IF L(I)=5+3/8 THEN 2360 +1460 I=I+1: IF I<=76 THEN 1440 +1470 GOSUB 2500 +1480 GOTO 1030 +1490 PRINT " " +1500 PRINT "DO YOU WANT TO TRY ANOTHER GAME"; +1510 INPUT X$ +1520 IF LEFT$(X$,1)="Y" THEN 400 +1530 IF LEFT$(X$,1)="N" THEN 1560 +1540 PRINT "INCORRECT ANSWER. PLEASE TYPE 'YES' OR 'NO'"; +1550 GOTO 1510 +1560 STOP +1570 LET K1=INT((M-1)/16)+1 +1580 LET J2=M-16*(K1-1) +1590 LET K2=INT((J2-1)/4)+1 +1600 LET K3=M-(K1-1)*16-(K2-1)*4 +1610 LET M=K1*100+K2*10+K3 +1620 PRINT M; +1630 RETURN +1640 FOR S=1 TO 76 +1650 LET J1 = M(S,1) +1660 LET J2=M(S,2) +1670 LET J3=M(S,3) +1680 LET J4=M(S,4) +1690 LET L(S)=X(J1)+X(J2)+X(J3)+X(J4) +1700 NEXT S +1710 RETURN +1720 FOR I=1 TO 64 +1730 IF X(I)<>0 THEN 1800 +1740 LET X(I)=5 +1750 LET M=I +1760 PRINT "MACHINE LIKES"; +1770 GOSUB 1570 +1780 PRINT " " +1790 GOTO 500 +1800 NEXT I +1810 PRINT "THE GAME IS A DRAW." +1820 GOTO 1490 +1830 FOR K=1 TO 18 +1840 LET P=0 +1850 FOR I=4*K-3 TO 4*K +1860 FOR J=1 TO 4 +1870 LET P=P+X(M(I,J)) +1880 NEXT J +1890 NEXT I +1900 IF P<4 THEN 1940 +1910 IF P<5 THEN 1970 +1920 IF P<9 THEN 1940 +1930 IF P<10 THEN 1970 +1940 NEXT K +1950 GOSUB 2500 +1960 GOTO 1200 +1970 LET S=1/8 +1980 FOR I=4*K-3 TO 4*K +1990 GOTO 2370 +2000 NEXT I +2010 LET S=0 +2020 GOTO 1980 +2030 DATA 1,49,52,4,13,61,64,16,22,39,23,38,26,42,27,43 +2040 DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 +2050 DATA 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38 +2060 DATA 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56 +2070 DATA 57,58,59,60,61,62,63,64 +2080 DATA 1,17,33,49,5,21,37,53,9,25,41,57,13,29,45,61 +2090 DATA 2,18,34,50,6,22,38,54,10,26,42,58,14,30,46,62 +2100 DATA 3,19,35,51,7,23,39,55,11,27,43,59,15,31,47,63 +2110 DATA 4,20,36,52,8,24,40,56,12,28,44,60,16,32,48,64 +2120 DATA 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 +2130 DATA 2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62 +2140 DATA 3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63 +2150 DATA 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64 +2160 DATA 1,6,11,16,17,22,27,32,33,38,43,48,49,54,59,64 +2170 DATA 13,10,7,4,29,26,23,20,45,42,39,36,61,58,55,52 +2180 DATA 1,21,41,61,2,22,42,62,3,23,43,63,4,24,44,64 +2190 DATA 49,37,25,13,50,38,26,14,51,39,27,15,52,40,28,16 +2200 DATA 1,18,35,52,5,22,39,56,9,26,43,60,13,30,47,64 +2210 DATA 49,34,19,4,53,38,23,8,57,42,27,12,61,46,31,16 +2220 DATA 1,22,43,64,16,27,38,49,4,23,42,61,13,26,39,52 +2230 FOR J=1 TO 4 +2240 IF X(M(I,J))<>1/8 THEN 2330 +2250 LET X(M(I,J))=5 +2260 IF L(I)<5 THEN 2290 +2270 PRINT "LET'S SEE YOU GET OUT OF THIS: MACHINE MOVES TO"; +2280 GOTO 2300 +2290 PRINT "YOU FOX. JUST IN THE NICK OF TIME, MACHINE MOVES TO"; +2300 LET M=M(I,J) +2310 GOSUB 1570 +2320 GOTO 500 +2330 NEXT J +2340 PRINT "MACHINE CONCEDES THIS GAME." +2350 GOTO 1490 +2360 LET S=1/8 +2370 IF I-INT(I/4)*4>1 THEN 2400 +2380 LET A=1 +2390 GOTO 2410 +2400 LET A=2 +2410 FOR J=A TO 5-A STEP 5-2*A +2420 IF X(M(I,J))=S THEN 2450 +2430 NEXT J +2440 GOTO 2000 +2450 LET X(M(I,J))=5 +2460 LET M=M(I,J) +2470 PRINT "MACHINE TAKES"; +2480 GOSUB 1570 +2490 GOTO 500 +2500 FOR I=1 TO 64 +2510 IF X(I)<>1/8 THEN 2530 +2520 LET X(I)=0 +2530 NEXT I +2540 RETURN +2550 FOR XX=1 TO 9:PRINT:NEXT:FOR I=1 TO 4 +2560 FOR J=1 TO 4 +2562 FOR I1=1 TO J +2564 PRINT" "; +2566 NEXT I1 +2570 FOR K=1 TO 4 +2600 LET Q=16*I+4*J+K-20 +2610 IF X(Q)<>O THEN 2630 +2620 PRINT"( ) "; +2630 IF X(Q)<>5 THEN 2650 +2640 PRINT"(M) "; +2650 IF X(Q)<>1 THEN 2660 +2655 PRINT"(Y) "; +2660 IF X(Q)<>1/8 THEN 2670 +2665 PRINT"( ) "; +2670 NEXT K +2680 PRINT +2690 PRINT +2700 NEXT J +2710 PRINT +2720 PRINT +2730 NEXT I +2735 REM PRINT CHR$(12) +2740 RETURN +2750 PRINT"INCORRECT MOVE, RETYPE IT--"; +2760 GOTO 520 +2770 END diff --git a/GAMES/queen.bas b/GAMES/queen.bas new file mode 100644 index 0000000..9672338 --- /dev/null +++ b/GAMES/queen.bas @@ -0,0 +1,168 @@ +1 PRINT TAB(33);"QUEEN" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +10 DIM S(64) +11 FOR I=1 TO 64 +12 READ S(I) +13 NEXT I +14 DATA 81, 71, 61, 51, 41, 31, 21, 11 +15 DATA 92, 82, 72, 62, 52, 42, 32, 22 +16 DATA 103, 93, 83, 73, 63, 53, 43, 33 +17 DATA 114, 104, 94, 84, 74, 64, 54, 44 +18 DATA 125, 115, 105, 95, 85, 75, 65, 55 +19 DATA 136, 126, 116, 106, 96, 86, 76, 66 +20 DATA 147, 137, 127, 117, 107, 97, 87, 77 +21 DATA 158, 148, 138, 128, 118, 108, 98, 88 +22 INPUT "DO YOU WANT INSTRUCTIONS";W$ +23 IF W$="NO" THEN 30 +24 IF W$="YES" THEN 28 +25 PRINT "PLEASE ANSWER 'YES' OR 'NO'." +26 GOTO 22 +28 GOSUB 5000 +29 GOTO 100 +30 GOSUB 5160 +90 REM ERROR CHECKS +100 PRINT "WHERE WOULD YOU LIKE TO START"; +110 INPUT M1 +115 IF M1=0 THEN 232 +120 T1=INT(M1/10) +130 U1=M1-10*T1 +140 IF U1=1 THEN 200 +150 IF U1=T1 THEN 200 +160 PRINT "PLEASE READ THE DIRECTIONS AGAIN." +170 PRINT "YOU HAVE BEGUN ILLEGALLY." +175 PRINT +180 GOTO 100 +200 GOSUB 2000 +210 PRINT "COMPUTER MOVES TO SQUARE";M +215 IF M=158 THEN 3400 +220 PRINT "WHAT IS YOUR MOVE"; +230 INPUT M1 +231 IF M1<>0 THEN 239 +232 PRINT +233 PRINT "IT LOOKS LIKE I HAVE WON BY FORFEIT." +234 PRINT +235 GOTO 4000 +239 IF M1<=M THEN 3200 +240 T1=INT(M1/10) +250 U1=M1-10*T1 +260 P=U1-U +270 IF P<>0 THEN 300 +280 L=T1-T +290 IF L<=0 THEN 3200 +295 GOTO 200 +300 IF T1-T <>P THEN 320 +310 GOTO 200 +320 IF T1-T <>2*P THEN 3200 +330 GOTO 200 +1990 REM LOCATE MOVE FOR COMPUTER +2000 IF M1=41 THEN 2180 +2010 IF M1=44 THEN 2180 +2020 IF M1=73 THEN 2180 +2030 IF M1=75 THEN 2180 +2040 IF M1=126 THEN 2180 +2050 IF M1=127 THEN 2180 +2060 IF M1=158 THEN 3300 +2065 C=0 +2070 FOR K=7 TO 1 STEP -1 +2080 U=U1 +2090 T=T1+K +2100 GOSUB 3500 +2105 IF C=1 THEN 2160 +2110 U=U+K +2120 GOSUB 3500 +2125 IF C=1 THEN 2160 +2130 T=T+K +2140 GOSUB 3500 +2145 IF C=1 THEN 2160 +2150 NEXT K +2155 GOTO 2180 +2160 C=0 +2170 RETURN +2180 GOSUB 3000 +2190 RETURN +2990 REM RANDOM MOVE +3000 Z=RND(1) +3010 IF Z>.6 THEN 3110 +3020 IF Z>.3 THEN 3070 +3030 U=U1 +3040 T=T1+1 +3050 M=10*T+U +3060 RETURN +3070 U=U1+1 +3080 T=T1+2 +3090 M=10*T+U +3100 RETURN +3110 U=U1+1 +3120 T=T1+1 +3130 M=10*T+U +3140 RETURN +3190 REM ILLEGAL MOVE MESSAGE +3200 PRINT +3210 PRINT "Y O U C H E A T . . . TRY AGAIN"; +3220 GOTO 230 +3290 REM PLAYER WINS +3300 PRINT +3310 PRINT "C O N G R A T U L A T I O N S . . ." +3320 PRINT +3330 PRINT "YOU HAVE WON--VERY WELL PLAYED." +3340 PRINT "IT LOOKS LIKE I HAVE MET MY MATCH." +3350 PRINT "THANKS FOR PLAYING---I CAN'T WIN ALL THE TIME." +3360 PRINT +3370 GOTO 4000 +3390 REM COMPUTER WINS +3400 PRINT +3410 PRINT "NICE TRY, BUT IT LOOKS LIKE I HAVE WON." +3420 PRINT "THANKS FOR PLAYING." +3430 PRINT +3440 GOTO 4000 +3490 REM TEST FOR COMPUTER MOVE +3500 M=10*T+U +3510 IF M=158 THEN 3570 +3520 IF M=127 THEN 3570 +3530 IF M=126 THEN 3570 +3540 IF M=75 THEN 3570 +3550 IF M=73 THEN 3570 +3560 RETURN +3570 C=1 +3580 GOTO 3560 +3990 REM ANOTHER GAME??? +4000 PRINT "ANYONE ELSE CARE TO TRY"; +4010 INPUT Q$ +4020 PRINT +4030 IF Q$="YES" THEN 30 +4040 IF Q$="NO" THEN 4050 +4042 PRINT "PLEASE ANSWER 'YES' OR 'NO'." +4045 GOTO 4000 +4050 PRINT:PRINT "OK --- THANKS AGAIN." +4060 STOP +4990 REM DIRECTIONS +5000 PRINT "WE ARE GOING TO PLAY A GAME BASED ON ONE OF THE CHESS" +5010 PRINT "MOVES. OUR QUEEN WILL BE ABLE TO MOVE ONLY TO THE LEFT," +5020 PRINT "DOWN, OR DIAGONALLY DOWN AND TO THE LEFT." +5030 PRINT +5040 PRINT "THE OBJECT OF THE GAME IS TO PLACE THE QUEEN IN THE LOWER" +5050 PRINT "LEFT HAND SQUARE BY ALTERNATING MOVES BETWEEN YOU AND THE" +5060 PRINT "COMPUTER. THE FIRST ONE TO PLACE THE QUEEN THERE WINS." +5070 PRINT +5080 PRINT "YOU GO FIRST AND PLACE THE QUEEN IN ANY ONE OF THE SQUARES" +5090 PRINT "ON THE TOP ROW OR RIGHT HAND COLUMN." +5100 PRINT "THAT WILL BE YOUR FIRST MOVE." +5110 PRINT "WE ALTERNATE MOVES." +5120 PRINT "YOU MAY FORFEIT BY TYPING '0' AS YOUR MOVE." +5130 PRINT "BE SURE TO PRESS THE RETURN KEY AFTER EACH RESPONSE." +5140 PRINT +5150 PRINT +5160 PRINT +5170 FOR A=0 TO 7 +5180 FOR B=1 TO 8 +5185 I=8*A+B +5190 PRINT S(I); +5200 NEXT B +5210 PRINT +5220 PRINT +5230 PRINT +5240 NEXT A +5250 PRINT +5260 RETURN +9999 END diff --git a/GAMES/reverse.bas b/GAMES/reverse.bas new file mode 100644 index 0000000..37d4867 --- /dev/null +++ b/GAMES/reverse.bas @@ -0,0 +1,62 @@ +10 PRINT TAB(32);"REVERSE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "REVERSE -- A GAME OF SKILL": PRINT +130 DIM A(20) +140 REM *** N=NUMBER OF NUMBERS +150 N=9 +160 PRINT "DO YOU WANT THE RULES"; +170 INPUT A$ +180 IF A$="NO" THEN 210 +190 GOSUB 710 +200 REM *** MAKE A RANDOM LIST A(1) TO A(N) +210 A(1)=INT((N-1)*RND(1)+2) +220 FOR K=2 TO N +230 A(K)=INT(N*RND(1)+1) +240 FOR J=1 TO K-1 +250 IF A(K)=A(J) THEN 230 +260 NEXT J:NEXT K +280 REM *** PRINT ORIGINAL LIST AND START GAME +290 PRINT: PRINT "HERE WE GO ... THE LIST IS:" +310 T=0 +320 GOSUB 610 +330 PRINT "HOW MANY SHALL I REVERSE"; +340 INPUT R +350 IF R=0 THEN 520 +360 IF R<=N THEN 390 +370 PRINT "OOPS! TOO MANY! I CAN REVERSE AT MOST";N:GOTO 330 +390 T=T+1 +400 REM *** REVERSE R NUMBERS AND PRINT NEW LIST +410 FOR K=1 TO INT(R/2) +420 Z=A(K) +430 A(K)=A(R-K+1) +440 A(R-K+1)=Z +450 NEXT K +460 GOSUB 610 +470 REM *** CHECK FOR A WIN +480 FOR K=1 TO N +490 IF A(K)<>K THEN 330 +500 NEXT K +510 PRINT "YOU WON IT IN";T;"MOVES!!!":PRINT +520 PRINT +530 PRINT "TRY AGAIN (YES OR NO)"; +540 INPUT A$ +550 IF A$="YES" THEN 210 +560 PRINT: PRINT "O.K. HOPE YOU HAD FUN!!":GOTO 999 +600 REM *** SUBROUTINE TO PRINT LIST +610 PRINT:FOR K=1 TO N:PRINT A(K);:NEXT K +650 PRINT:PRINT:RETURN +700 REM *** SUBROUTINE TO PRINT THE RULES +710 PRINT:PRINT "THIS IS THE GAME OF 'REVERSE'. TO WIN, ALL YOU HAVE" +720 PRINT "TO DO IS ARRANGE A LIST OF NUMBERS (1 THROUGH";N;")" +730 PRINT "IN NUMERICAL ORDER FROM LEFT TO RIGHT. TO MOVE, YOU" +740 PRINT "TELL ME HOW MANY NUMBERS (COUNTING FROM THE LEFT) TO" +750 PRINT "REVERSE. FOR EXAMPLE, IF THE CURRENT LIST IS:" +760 PRINT:PRINT "2 3 4 5 1 6 7 8 9" +770 PRINT:PRINT "AND YOU REVERSE 4, THE RESULT WILL BE:" +780 PRINT:PRINT "5 4 3 2 1 6 7 8 9" +790 PRINT:PRINT "NOW IF YOU REVERSE 5, YOU WIN!" +800 PRINT:PRINT "1 2 3 4 5 6 7 8 9":PRINT +810 PRINT "NO DOUBT YOU WILL LIKE THIS GAME, BUT" +820 PRINT "IF YOU WANT TO QUIT, REVERSE 0 (ZERO).":PRINT: RETURN +999 END diff --git a/GAMES/rocket.bas b/GAMES/rocket.bas new file mode 100644 index 0000000..efcd22f --- /dev/null +++ b/GAMES/rocket.bas @@ -0,0 +1,71 @@ +10 PRINT TAB(30); "ROCKET" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +70 PRINT "LUNAR LANDING SIMULATION" +80 PRINT "----- ------- ----------": PRINT +100 INPUT "DO YOU WANT INSTRUCTIONS (YES OR NO)";A$ +110 IF A$="NO" THEN 390 +160 PRINT +200 PRINT"YOU ARE LANDING ON THE MOON AND AND HAVE TAKEN OVER MANUAL" +210 PRINT"CONTROL 1000 FEET ABOVE A GOOD LANDING SPOT. YOU HAVE A DOWN-" +220 PRINT"WARD VELOCITY OF 50 FEET/SEC. 150 UNITS OF FUEL REMAIN." +225 PRINT +230 PRINT"HERE ARE THE RULES THAT GOVERN YOUR APOLLO SPACE-CRAFT:": PRINT +240 PRINT"(1) AFTER EACH SECOND THE HEIGHT, VELOCITY, AND REMAINING FUEL" +250 PRINT" WILL BE REPORTED VIA DIGBY YOUR ON-BOARD COMPUTER." +260 PRINT"(2) AFTER THE REPORT A '?' WILL APPEAR. ENTER THE NUMBER" +270 PRINT" OF UNITS OF FUEL YOU WISH TO BURN DURING THE NEXT" +280 PRINT" SECOND. EACH UNIT OF FUEL WILL SLOW YOUR DESCENT BY" +290 PRINT" 1 FOOT/SEC." +310 PRINT"(3) THE MAXIMUM THRUST OF YOUR ENGINE IS 30 FEET/SEC/SEC" +320 PRINT" OR 30 UNITS OF FUEL PER SECOND." +330 PRINT"(4) WHEN YOU CONTACT THE LUNAR SURFACE. YOUR DESCENT ENGINE" +340 PRINT" WILL AUTOMATICALLY SHUT DOWN AND YOU WILL BE GIVEN A" +350 PRINT" REPORT OF YOUR LANDING SPEED AND REMAINING FUEL." +360 PRINT"(5) IF YOU RUN OUT OF FUEL THE '?' WILL NO LONGER APPEAR" +370 PRINT" BUT YOUR SECOND BY SECOND REPORT WILL CONTINUE UNTIL" +380 PRINT" YOU CONTACT THE LUNAR SURFACE.":PRINT +390 PRINT"BEGINNING LANDING PROCEDURE..........":PRINT +400 PRINT"G O O D L U C K ! ! !" +420 PRINT:PRINT +430 PRINT"SEC FEET SPEED FUEL PLOT OF DISTANCE" +450 PRINT +455 T=0:H=1000:V=50:F=150 +490 PRINT T;TAB(6);H;TAB(16);V;TAB(26);F;TAB(35);"I";TAB(H/15);"*" +500 INPUT B +510 IF B<0 THEN 650 +520 IF B>30 THEN B=30 +530 IF B>F THEN B=F +540 V1=V-B+5 +560 F=F-B +570 H=H- .5*(V+V1) +580 IF H<=0 THEN 670 +590 T=T+1 +600 V=V1 +610 IF F>0 THEN 490 +615 IF B=0 THEN 640 +620 PRINT"**** OUT OF FUEL ****" +640 PRINT T;TAB(4);H;TAB(12);V;TAB(20);F;TAB(29);"I";TAB(H/12+29);"*" +650 B=0 +660 GOTO 540 +670 PRINT"***** CONTACT *****" +680 H=H+ .5*(V1+V) +690 IF B=5 THEN 720 +700 D=(-V+SQR(V*V+H*(10-2*B)))/(5-B) +710 GOTO 730 +720 D=H/V +730 V1=V+(5-B)*D +760 PRINT"TOUCHDOWN AT";T+D;"SECONDS." +770 PRINT"LANDING VELOCITY=";V1;"FEET/SEC." +780 PRINT F;"UNITS OF FUEL REMAINING." +790 IF V1<>0 THEN 810 +800 PRINT"CONGRATULATIONS! A PERFECT LANDING!!" +805 PRINT"YOUR LICENSE WILL BE RENEWED.......LATER." +810 IF ABS(V1)<2 THEN 840 +820 PRINT"***** SORRY, BUT YOU BLEW IT!!!!" +830 PRINT"APPROPRIATE CONDOLENCES WILL BE SENT TO YOUR NEXT OF KIN." +840 PRINT:PRINT:PRINT +850 INPUT "ANOTHER MISSION";A$ +860 IF A$="YES" THEN 390 +870 PRINT: PRINT "CONTROL OUT.": PRINT +999 END diff --git a/GAMES/rocksp.bas b/GAMES/rocksp.bas new file mode 100644 index 0000000..8c364b6 --- /dev/null +++ b/GAMES/rocksp.bas @@ -0,0 +1,33 @@ +10 PRINT TAB(21);"GAME OF ROCK, SCISSORS, PAPER" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +25 PRINT:PRINT:PRINT +30 INPUT "HOW MANY GAMES";Q +40 IF Q<11 THEN 60 +50 PRINT "SORRY, BUT WE AREN'T ALLOWED TO PLAY THAT MANY.": GOTO 30 +60 FOR G=1 TO Q +70 PRINT: PRINT "GAME NUMBER";G +80 X=INT(RND(1)*3+1) +90 PRINT "3=ROCK...2=SCISSORS...1=PAPER" +100 INPUT "1...2...3...WHAT'S YOUR CHOICE";K +110 IF (K-1)*(K-2)*(K-3)<>0 THEN PRINT "INVALID.": GOTO 90 +120 PRINT "THIS IS MY CHOICE..." +130 ON X GOTO 140,150,160 +140 PRINT "...PAPER": GOTO 170 +150 PRINT "...SCISSORS": GOTO 170 +160 PRINT "...ROCK" +170 IF X=K THEN 250 +180 IF X>K THEN 230 +190 IF X=1 THEN 210 +200 PRINT "YOU WIN!!!":H=H+1: GOTO 260 +210 IF K<>3 THEN 200 +220 PRINT "WOW! I WIN!!!":C=C+1:GOTO 260 +230 IF K<>1 OR X<>3 THEN 220 +240 GOTO 200 +250 PRINT "TIE GAME. NO WINNER." +260 NEXT G +270 PRINT: PRINT "HERE IS THE FINAL GAME SCORE:" +280 PRINT "I HAVE WON";C;"GAME(S)." +290 PRINT "YOU HAVE WON";H;"GAME(S)." +300 PRINT "AND";Q-(C+H);"GAME(S) ENDED IN A TIE." +310 PRINT: PRINT "THANKS FOR PLAYING!!" +320 END diff --git a/GAMES/roulette.bas b/GAMES/roulette.bas new file mode 100644 index 0000000..b94e895 --- /dev/null +++ b/GAMES/roulette.bas @@ -0,0 +1,239 @@ +10 PRINT TAB(32);"ROULETTE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +40 PRINT "ENTER THE CURRENT DATE (AS IN 'JANUARY 23, 1979') -"; +50 INPUT D$,E$ +1000 REM-ROULETTE +1010 REM-DAVID JOSLIN +1020 PRINT "WELCOME TO THE ROULETTE TABLE" +1030 PRINT +1040 PRINT "DO YOU WANT INSTRUCTIONS"; +1050 INPUT Y$ +1060 IF LEFT$(Y$,1)="N" THEN 1550 +1070 PRINT +1080 PRINT "THIS IS THE BETTING LAYOUT" +1090 PRINT " (*=RED)" +1100 PRINT +1110 PRINT " 1* 2 3*" +1120 PRINT " 4 5* 6 " +1130 PRINT " 7* 8 9*" +1140 PRINT "10 11 12*" +1150 PRINT "---------------" +1160 PRINT "13 14* 15 " +1170 PRINT "16* 17 18*" +1180 PRINT "19* 20 21*" +1190 PRINT "22 23* 24 " +1200 PRINT "---------------" +1210 PRINT "25* 26 27*" +1220 PRINT "28 29 30*" +1230 PRINT "31 32* 33 " +1240 PRINT "34* 35 36*" +1250 PRINT "---------------" +1260 PRINT " 00 0 " +1270 PRINT +1280 PRINT "TYPES OF BETS" +1290 PRINT +1300 PRINT "THE NUMBERS 1 TO 36 SIGNIFY A STRAIGHT BET" +1310 PRINT "ON THAT NUMBER." +1320 PRINT "THESE PAY OFF 35:1" +1330 PRINT +1340 PRINT "THE 2:1 BETS ARE:" +1350 PRINT " 37) 1-12 40) FIRST COLUMN" +1360 PRINT " 38) 13-24 41) SECOND COLUMN" +1370 PRINT " 39) 25-36 42) THIRD COLUMN" +1380 PRINT +1390 PRINT "THE EVEN MONEY BETS ARE:" +1400 PRINT " 43) 1-18 46) ODD" +1410 PRINT " 44) 19-36 47) RED" +1420 PRINT " 45) EVEN 48) BLACK" +1430 PRINT +1440 PRINT " 49)0 AND 50)00 PAY OFF 35:1" +1450 PRINT " NOTE: 0 AND 00 DO NOT COUNT UNDER ANY" +1460 PRINT " BETS EXCEPT THEIR OWN." +1470 PRINT +1480 PRINT "WHEN I ASK FOR EACH BET, TYPE THE NUMBER" +1490 PRINT "AND THE AMOUNT, SEPARATED BY A COMMA." +1500 PRINT "FOR EXAMPLE: TO BET $500 ON BLACK, TYPE 48,500" +1510 PRINT "WHEN I ASK FOR A BET." +1520 PRINT +1530 PRINT "THE MINIMUM BET IS $5, THE MAXIMUM IS $500." +1540 PRINT +1550 REM-PROGRAM BEGINS HERE +1560 REM-TYPE OF BET(NUMBER) ODDS +1570 REM DON'T NEED TO DIMENSION STRINGS +1580 DIM B(100),C(100),T(100),X(38) +1590 DIM A(50) +1600 FOR I=1 TO 38: X(I)=0: NEXT I: REM MAT X=ZER +1610 P=1000 +1620 D=100000. +1630 PRINT "HOW MANY BETS"; +1640 INPUT Y +1650 IF Y<1 OR Y<>INT(Y) THEN 1630 +1660 FOR I=1 TO 50: A(I)=0: NEXT I: REM MAT A=ZER +1670 FOR C=1 TO Y +1680 PRINT "NUMBER";C; +1690 INPUT X,Z +1700 B(C)=Z +1710 T(C)=X +1720 IF X<1 OR X>50 OR X<>INT(X) THEN 1680 +1730 IF Z<1 OR Z<>INT(Z) THEN 1680 +1740 IF Z<5 OR Z>500 THEN 1680 +1750 IF A(X)=0 THEN 1780 +1760 PRINT "YOU MADE THAT BET ONCE ALREADY,DUM-DUM" +1770 GOTO 1680 +1780 A(X)=1 +1790 NEXT C +1800 PRINT "SPINNING" +1810 PRINT +1820 PRINT +1830 S=INT(RND(1)*100) +1840 IF S=0 OR S>38 THEN 1830 +1850 X(S)=X(S)+1 +1860 IF S<37 THEN 1920 +1870 IF S=37 THEN 1900 +1880 PRINT "00" +1890 GOTO 2020 +1900 PRINT "0" +1910 GOTO 2020 +1920 RESTORE +1930 FOR I1=1 TO 18 +1940 READ R +1950 IF R=S THEN 2000 +1960 NEXT I1 +1970 A$="BLACK" +1980 PRINT S;A$ +1990 GOTO 2020 +2000 A$="RED" +2010 GOTO 1980 +2020 PRINT +2030 FOR C=1 TO Y +2040 IF T(C)<37 THEN 2710 +2050 ON T(C)-36 GOTO 2090,2190,2220,2250,2300,2350,2400,2470,2500 +2060 ON T(C)-45 GOTO 2530,2560,2630 +2070 GOTO 2710 +2080 STOP +2090 REM 1-12(37) 2:1 +2100 IF S <= 12 THEN 2150 +2110 PRINT "YOU LOSE";B(C);"DOLLARS ON BET";C +2120 D=D+B(C) +2130 P=P-B(C) +2140 GOTO 2180 +2150 PRINT "YOU WIN";B(C)*2;"DOLLARS ON BET"C +2160 D=D-B(C)*2 +2170 P=P+B(C)*2 +2180 GOTO 2810 +2190 REM 13-24(38) 2:1 +2200 IF S>12 AND S<25 THEN 2150 +2210 GOTO 2110 +2220 REM 25-36(39) 2:1 +2230 IF S>24 AND S<37 THEN 2150 +2240 GOTO 2110 +2250 REM FIRST COLUMN(40) 2:1 +2260 FOR I=1 TO 34 STEP 3 +2270 IF S=I THEN 2150 +2280 NEXT I +2290 GOTO 2110 +2300 REM SECOND COLUMN(41) 2:1 +2310 FOR I=2 TO 35 STEP 3 +2320 IF S=I THEN 2150 +2330 NEXT I +2340 GOTO 2110 +2350 REM THIRD COLUMN(42) 2:1 +2360 FOR I=3 TO 36 STEP 3 +2370 IF S=I THEN 2150 +2380 NEXT I +2390 GOTO 2110 +2400 REM 1-18(43) 1:1 +2410 IF S<19 THEN 2430 +2420 GOTO 2110 +2430 PRINT "YOU WIN";B(C);"DOLLARS ON BET";C +2440 D=D-B(C) +2450 P=P+B(C) +2460 GOTO 2810 +2470 REM 19-36(44) 1:1 +2480 IF S<37 AND S>18 THEN 2430 +2490 GOTO 2110 +2500 REM EVEN(45) 1:1 +2510 IF S/2=INT(S/2) AND S<37 THEN 2430 +2520 GOTO 2110 +2530 REM ODD(46) 1:1 +2540 IF S/2<>INT(S/2) AND S<37 THEN 2430 +2550 GOTO 2110 +2560 REM RED(47) 1:1 +2570 RESTORE +2580 FOR I=1 TO 18 +2590 READ R +2600 IF S=R THEN 2430 +2610 NEXT I +2620 GOTO 2110 +2630 REM BLACK(48) 1:1 +2640 RESTORE +2650 FOR I=1 TO 18 +2660 READ R +2670 IF S=R THEN 2110 +2680 NEXT I +2690 IF S>36 THEN 2110 +2700 GOTO 2430 +2710 REM--1TO36,0,00(1-36,49,50)35:1 +2720 IF T(C)<49 THEN 2760 +2730 IF T(C)=49 AND S=37 THEN 2780 +2740 IF T(C)=50 AND S=38 THEN 2780 +2750 GOTO 2110 +2760 IF T(C)=S THEN 2780 +2770 GOTO 2110 +2780 PRINT "YOU WIN";B(C)*35;"DOLLARS ON BET";C +2790 D=D-B(C)*35 +2800 P=P+B(C)*35 +2810 NEXT C +2820 PRINT +2830 PRINT "TOTALS:","ME","YOU" +2840 PRINT " ",D,P +2850 IF P>0 THEN 2880 +2860 PRINT "OOPS! YOU JUST SPENT YOUR LAST DOLLAR!" +2870 GOTO 3190 +2880 IF D>0 THEN 2920 +2890 PRINT "YOU BROKE THE HOUSE!" +2900 P=101000. +2910 GOTO 2960 +2920 PRINT "AGAIN"; +2930 INPUT Y$ +2940 IF LEFT$(Y$,1)="Y" THEN 1630 +2950 DATA 1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36 +2960 IF P<1 THEN 3190 +2970 PRINT "TO WHOM SHALL I MAKE THE CHECK"; +2980 INPUT B$ +2990 PRINT +3000 FOR I=1 TO 72: PRINT "-";: NEXT I: REM PRINT 72 DASHES +3010 PRINT TAB(50);"CHECK NO. ";INT(RND(1)*100) +3020 PRINT +3030 GOSUB 3230 +3040 PRINT TAB(40);M$ +3050 PRINT +3060 PRINT +3070 PRINT "PAY TO THE ORDER OF-----";B$;"-----$ "; +3080 PRINT P +3090 PRINT +3100 PRINT +3110 PRINT TAB(10),"THE MEMORY BANK OF NEW YORK" +3120 PRINT +3130 PRINT TAB(40),"THE COMPUTER" +3140 PRINT TAB(40),"----------X-----" +3150 PRINT +3160 FOR I=1 TO 62: PRINT "-";: NEXT I +3170 PRINT "COME BACK SOON!" +3180 GOTO 3210 +3190 PRINT "THANKS FOR YOUR MONEY." +3200 PRINT "I'LL USE IT TO BUY A SOLID GOLD ROULETTE WHEEL" +3210 PRINT +3220 GOTO 3420 +3230 REM +3240 REM THIS ROUTINE RETURNS THE CURRENT DATE IN M$ +3250 REM IF YOU HAVE SYSTEM FUNCTIONS TO HANDLE THIS +3260 REM THEY CAN BE USED HERE. HOWEVER IN THIS +3270 REM PROGRAM, WE JUST INPUT THE DATE AT THE START +3280 REM THE GAME +3290 REM +3300 REM THE DATE IS RETURNED IN VARIABLE M$ +3310 M$=D$+", "+E$ +3320 RETURN +3420 END diff --git a/GAMES/rusrou.bas b/GAMES/rusrou.bas new file mode 100644 index 0000000..437e53c --- /dev/null +++ b/GAMES/rusrou.bas @@ -0,0 +1,26 @@ +1 PRINT TAB(28);"RUSSIAN ROULETTE" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +5 PRINT "THIS IS A GAME OF >>>>>>>>>>RUSSIAN ROULETTE." +10 PRINT:PRINT "HERE IS A REVOLVER." +20 PRINT "TYPE '1' TO SPIN CHAMBER AND PULL TRIGGER." +22 PRINT "TYPE '2' TO GIVE UP." +23 PRINT "GO"; +25 N=0 +30 INPUT I +31 IF I<>2 THEN 35 +32 PRINT " CHICKEN!!!!!" +33 GOTO 72 +35 N=N+1 +40 IF RND(1)>.833333 THEN 70 +45 IF N>10 THEN 80 +50 PRINT "- CLICK -" +60 PRINT: GOTO 30 +70 PRINT " BANG!!!!! YOU'RE DEAD!" +71 PRINT "CONDOLENCES WILL BE SENT TO YOUR RELATIVES." +72 PRINT:PRINT:PRINT +75 PRINT "...NEXT VICTIM...":GOTO 20 +80 PRINT "YOU WIN!!!!!" +85 PRINT "LET SOMEONE ELSE BLOW HIS BRAINS OUT." +90 GOTO 10 +99 END diff --git a/GAMES/salvo.bas b/GAMES/salvo.bas new file mode 100644 index 0000000..0a00176 --- /dev/null +++ b/GAMES/salvo.bas @@ -0,0 +1,329 @@ +1000 PRINT TAB(33);"SALVO" +1010 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +1020 PRINT:PRINT:PRINT +1030 REM +1032 DEF FNA(K)=(5-K)*3-2*INT(K/4)+SGN(K-1)-1 +1033 DEF FNB(K)=K+INT(K/4)-SGN(K-1) +1040 DIM AA(10,10),BB(10,10),CC(7),DD(7),EE(12),FF(12),GG(12),HH(12),KK(10,10) +1050 Z8=0 +1060 FOR W=1 TO 12 +1070 EE(W)=-1 +1080 HH(W)=-1 +1090 NEXT W +1100 FOR X=1 TO 10 +1110 FOR Y=1 TO 10 +1120 BB(X,Y)=0 +1130 NEXT Y +1140 NEXT X +1150 FOR X=1 TO 12 +1160 FF(X)=0 +1170 GG(X)=0 +1180 NEXT X +1190 FOR X=1 TO 10 +1200 FOR Y=1 TO 10 +1210 AA(X,Y)=0 +1220 NEXT Y +1230 NEXT X +1240 FOR K=4 TO 1 STEP -1 +1250 U6=0 +1260 GOSUB 2910 +1290 IF V+V2+V*V2=0 THEN 1260 +1300 IF Y+V*FNB(K)>10 THEN 1260 +1310 IF Y+V*FNB(K)<1 THEN 1260 +1320 IF X+V2*FNB(K)>10 THEN 1260 +1330 IF X+V2*FNB(K)<1 THEN 1260 +1340 U6=U6+1 +1350 IF U6>25 THEN 1190 +1360 FOR Z=0 TO FNB(K) +1370 FF(Z+FNA(K))=X+V2*Z +1380 GG(Z+FNA(K))=Y+V*Z +1390 NEXT Z +1400 U8=FNA(K) +1405 IF U8>U8+FNB(K) THEN 1460 +1410 FOR Z2= U8 TO U8+FNB(K) +1415 IF U8<2 THEN 1450 +1420 FOR Z3=1 TO U8-1 +1430 IF SQR((FF(Z3)-FF(Z2))^2 + (GG(Z3)-GG(Z2))^2) < 3.59 THEN 1260 +1440 NEXT Z3 +1450 NEXT Z2 +1460 FOR Z=0 TO FNB(K) +1470 AA(FF(Z+U8),GG(Z+U8))=.5+SGN(K-1)*(K-1.5) +1480 NEXT Z +1490 NEXT K +1500 PRINT "ENTER COORDINATES FOR..." +1510 PRINT "BATTLESHIP" +1520 FOR X=1 TO 5 +1530 INPUT Y,Z +1540 BB(Y,Z)=3 +1550 NEXT X +1560 PRINT "CRUISER" +1570 FOR X=1 TO 3 +1580 INPUT Y,Z +1590 BB(Y,Z)=2 +1600 NEXT X +1610 PRINT "DESTROYER" +1620 FOR X=1 TO 2 +1630 INPUT Y,Z +1640 BB(Y,Z)=1 +1650 NEXT X +1660 PRINT "DESTROYER" +1670 FOR X=1 TO 2 +1680 INPUT Y,Z +1690 BB(Y,Z)=.5 +1700 NEXT X +1710 PRINT "DO YOU WANT TO START"; +1720 INPUT J$ +1730 IF J$<>"WHERE ARE YOUR SHIPS?" THEN 1890 +1740 PRINT "BATTLESHIP" +1750 FOR Z=1 TO 5 +1760 PRINT FF(Z);GG(Z) +1770 NEXT Z +1780 PRINT "CRUISER" +1790 PRINT FF(6);GG(6) +1800 PRINT FF(7);GG(7) +1810 PRINT FF(8);GG(8) +1820 PRINT "DESTROYER" +1830 PRINT FF(9);GG(9) +1840 PRINT FF(10);GG(10) +1850 PRINT "DESTROYER" +1860 PRINT FF(11);GG(11) +1870 PRINT FF(12);GG(12) +1880 GOTO 1710 +1890 C=0 +1900 PRINT "DO YOU WANT TO SEE MY SHOTS"; +1910 INPUT K$ +1920 PRINT +1930 IF J$<>"YES" THEN 2620 +1940 REM*******************START +1950 IF J$<>"YES" THEN 1990 +1960 C=C+1 +1970 PRINT +1980 PRINT "TURN";C +1990 A=0 +2000 FOR W=.5 TO 3 STEP .5 +2010 FOR X=1 TO 10 +2020 FOR Y=1 TO 10 +2030 IF BB(X,Y)=W THEN 2070 +2040 NEXT Y +2050 NEXT X +2060 GOTO 2080 +2070 A=A+INT(W+.5) +2080 NEXT W +2090 FOR W=1 TO 7 +2100 CC(W)=0 +2110 DD(W)=0 +2120 FF(W)=0 +2130 GG(W)=0 +2140 NEXT W +2150 P3=0 +2160 FOR X=1 TO 10 +2170 FOR Y=1 TO 10 +2180 IF AA(X,Y)>10 THEN 2200 +2190 P3=P3+1 +2200 NEXT Y +2210 NEXT X +2220 PRINT "YOU HAVE";A;"SHOTS." +2230 IF P3>=A THEN 2260 +2240 PRINT "YOU HAVE MORE SHOTS THAN THERE ARE BLANK SQUARES." +2250 GOTO 2890 +2260 IF A<>0 THEN 2290 +2270 PRINT "I HAVE WON." +2280 STOP +2290 FOR W=1 TO A +2300 INPUT X,Y +2310 IF X<>INT(X) THEN 2370 +2320 IF X>10 THEN 2370 +2330 IF X<1 THEN 2370 +2340 IF Y<>INT(Y) THEN 2370 +2350 IF Y>10 THEN 2370 +2360 IF Y>=1 THEN 2390 +2370 PRINT "ILLEGAL, ENTER AGAIN." +2380 GOTO 2300 +2390 IF AA(X,Y)>10 THEN 2440 +2400 CC(W)=X +2410 DD(W)=Y +2420 NEXT W +2430 GOTO 2460 +2440 PRINT "YOU SHOT THERE BEFORE ON TURN";AA(X,Y)-10 +2450 GOTO 2300 +2460 FOR W=1 TO A +2470 IF AA(CC(W),DD(W))=3 THEN 2540 +2480 IF AA(CC(W),DD(W))=2 THEN 2560 +2490 IF AA(CC(W),DD(W))=1 THEN 2580 +2500 IF AA(CC(W),DD(W))=.5 THEN 2600 +2510 AA(CC(W),DD(W))=10+C +2520 NEXT W +2530 GOTO 2620 +2540 PRINT "YOU HIT MY BATTLESHIP." +2550 GOTO 2510 +2560 PRINT "YOU HIT MY CRUISER." +2570 GOTO 2510 +2580 PRINT "YOU HIT MY DESTROYER." +2590 GOTO 2510 +2600 PRINT "YOU HIT MY DESTROYER." +2610 GOTO 2510 +2620 A=0 +2630 IF J$="YES" THEN 2670 +2640 C=C+1 +2650 PRINT +2660 PRINT "TURN";C +2670 A=0 +2680 FOR W=.5 TO 3 STEP .5 +2690 FOR X=1 TO 10 +2700 FOR Y=1 TO 10 +2710 IF AA(X,Y)=W THEN 2750 +2720 NEXT Y +2730 NEXT X +2740 GOTO 2760 +2750 A=A+INT(W+.5) +2760 NEXT W +2770 P3=0 +2780 FOR X=1 TO 10 +2790 FOR Y=1 TO 10 +2800 IF AA(X,Y)>10 THEN 2820 +2810 P3=P3+1 +2820 NEXT Y +2830 NEXT X +2840 PRINT "I HAVE";A;"SHOTS." +2850 IF P3>A THEN 2880 +2860 PRINT "I HAVE MORE SHOTS THAN BLANK SQUARES." +2870 GOTO 2270 +2880 IF A<>0 THEN 2960 +2890 PRINT "YOU HAVE WON." +2900 STOP +2910 X=INT(RND(1)*10+1) +2920 Y=INT(RND(1)*10+1) +2930 V=INT(3*RND(1)-1) +2940 V2=INT(3*RND(1)-1) +2950 RETURN +2960 FOR W=1 TO 12 +2970 IF HH(W)>0 THEN 3800 +2980 NEXT W +2990 REM*******************RANDOM +3000 W=0 +3010 R3=0 +3020 GOSUB 2910 +3030 RESTORE +3040 R2=0 +3050 R3=R3+1 +3060 IF R3>100 THEN 3010 +3070 IF X>10 THEN 3110 +3080 IF X>0 THEN 3120 +3090 X=1+INT(RND(1)*2.5) +3100 GOTO 3120 +3110 X=10-INT(RND(1)*2.5) +3120 IF Y>10 THEN 3160 +3130 IF Y>0 THEN 3270 +3140 Y=1+INT(RND(1)*2.5) +3150 GOTO 3270 +3160 Y=10-INT(RND(1)*2.5) +3170 GOTO 3270 +3180 FF(W)=X +3190 GG(W)=Y +3200 IF W=A THEN 3380 +3210 IF R2=6 THEN 3030 +3220 READ X1,Y1 +3230 R2=R2+1 +3240 DATA 1,1,-1,1,1,-3,1,1,0,2,-1,1 +3250 X=X+X1 +3260 Y=Y+Y1 +3270 IF X>10 THEN 3210 +3280 IF X<1 THEN 3210 +3290 IF Y>10 THEN 3210 +3300 IF Y<1 THEN 3210 +3310 IF BB(X,Y)>10 THEN 3210 +3320 FOR Q9=1 TO W +3330 IF FF(Q9)<>X THEN 3350 +3340 IF GG(Q9)=Y THEN 3210 +3350 NEXT Q9 +3360 W=W+1 +3370 GOTO 3180 +3380 IF K$<>"YES" THEN 3420 +3390 FOR Z5=1 TO A +3400 PRINT FF(Z5);GG(Z5) +3410 NEXT Z5 +3420 FOR W=1 TO A +3430 IF BB(FF(W),GG(W))=3 THEN 3500 +3440 IF BB(FF(W),GG(W))=2 THEN 3520 +3450 IF BB(FF(W),GG(W))=1 THEN 3560 +3460 IF BB(FF(W),GG(W))=.5 THEN 3540 +3470 BB(FF(W),GG(W))=10+C +3480 NEXT W +3490 GOTO 1950 +3500 PRINT "I HIT YOUR BATTLESHIP" +3510 GOTO 3570 +3520 PRINT "I HIT YOUR CRUISER" +3530 GOTO 3570 +3540 PRINT "I HIT YOUR DESTROYER" +3550 GOTO 3570 +3560 PRINT "I HIT YOUR DESTROYER" +3570 FOR Q=1 TO 12 +3580 IF EE(Q)<>-1 THEN 3730 +3590 EE(Q)=10+C +3600 HH(Q)=BB(FF(W),GG(W)) +3610 M3=0 +3620 FOR M2=1 TO 12 +3630 IF HH(M2)<>HH(Q) THEN 3650 +3640 M3=M3+1 +3650 NEXT M2 +3660 IF M3<>INT(HH(Q)+.5)+1+INT(INT(HH(Q)+.5)/3) THEN 3470 +3670 FOR M2=1 TO 12 +3680 IF HH(M2)<>HH(Q) THEN 3710 +3690 EE(M2)=-1 +3700 HH(M2)=-1 +3710 NEXT M2 +3720 GOTO 3470 +3730 NEXT Q +3740 PRINT "PROGRAM ABORT:" +3750 FOR Q=1 TO 12 +3760 PRINT "EE(";Q;") =";EE(Q) +3770 PRINT "HH(";Q;") =";HH(Q) +3780 NEXT Q +3790 STOP +3800 REM************************USINGEARRAY +3810 FOR R=1 TO 10 +3820 FOR S=1 TO 10 +3830 KK(R,S)=0 +3840 NEXT S +3850 NEXT R +3860 FOR U=1 TO 12 +3870 IF EE(U)<10 THEN 4020 +3880 FOR R=1 TO 10 +3890 FOR S=1 TO 10 +3900 IF BB(R,S)<10 THEN 3930 +3910 KK(R,S)=-10000000 +3920 GOTO 4000 +3930 FOR M=SGN(1-R) TO SGN(10-R) +3940 FOR N=SGN(1-S) TO SGN(10-S) +3950 IF N+M+N*M=0 THEN 3980 +3960 IF BB(R+M,S+N)<>EE(U) THEN 3980 +3970 KK(R,S)=KK(R,S)+EE(U)-S*INT(HH(U)+.5) +3980 NEXT N +3990 NEXT M +4000 NEXT S +4010 NEXT R +4020 NEXT U +4030 FOR R=1 TO A +4040 FF(R)=R +4050 GG(R)=R +4060 NEXT R +4070 FOR R=1 TO 10 +4080 FOR S=1 TO 10 +4090 Q9=1 +4100 FOR M=1 TO A +4110 IF KK(FF(M),GG(M))>=KK(FF(Q9),GG(Q9)) THEN 4130 +4120 Q9=M +4130 NEXT M +4131 IF R>A THEN 4140 +4132 IF R=S THEN 4210 +4140 IF KK(R,S)R THEN 4190 +4170 IF GG(M)=S THEN 4210 +4180 NEXT M +4190 FF(Q9)=R +4200 GG(Q9)=S +4210 NEXT S +4220 NEXT R +4230 GOTO 3380 +4240 END diff --git a/GAMES/sinewave.bas b/GAMES/sinewave.bas new file mode 100644 index 0000000..f3e2674 --- /dev/null +++ b/GAMES/sinewave.bas @@ -0,0 +1,17 @@ +10 PRINT TAB(30);"SINE WAVE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT: PRINT: PRINT +40 REM ARKABLE PROGRAM BY DAVID AHL +50 B=0 +100 REM START LONG LOOP +110 FOR T=0 TO 40 STEP .25 +120 A=INT(26+25*SIN(T)) +130 PRINT TAB(A); +140 IF B=1 THEN 180 +150 PRINT "CREATIVE" +160 B=1 +170 GOTO 200 +180 PRINT "COMPUTING" +190 B=0 +200 NEXT T +999 END diff --git a/GAMES/slalom.bas b/GAMES/slalom.bas new file mode 100644 index 0000000..70061a5 --- /dev/null +++ b/GAMES/slalom.bas @@ -0,0 +1,165 @@ +10 PRINT TAB(33);"SLALOM" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +310 PRINT "HOW MANY GATES DOES THIS COURSE HAVE (1 TO 25)"; +320 INPUT V +330 IF V>25 THEN 360 +340 IF V<1 THEN 390 +350 GOTO 1440 +360 PRINT "25 IS THE LIMIT." +370 LET V=25 +380 GOTO 1440 +390 PRINT "TRY AGAIN," +400 GOTO 310 +410 PRINT "RATE YOURSELF AS A SKIER, (1=WORST, 3=BEST)"; +420 INPUT A +430 IF A<1 THEN 460 +440 IF A>3 THEN 460 +450 GOTO 480 +460 PRINT "THE BOUNDS ARE 1-3" +470 GOTO 410 +480 PRINT"THE STARTER COUNTS DOWN...5...4...3...2...1...GO!"; +490 REM +500 LET T=0 +510 LET S=INT(RND(1)*(18-9)+9) +520 PRINT +525 PRINT "YOU'RE OFF!" +530 FOR O=1 TO V +540 READ Q +550 PRINT +555 PRINT "HERE COMES GATE #";STR$(O);":" +560 PRINT S;"M.P.H." +570 LET S1=S +580 PRINT "OPTION"; +590 INPUT O1 +600 IF O1=0 THEN 970 +610 IF O1>8 THEN 1420 +620 IF O1<1 THEN 1420 +630 GOSUB 990 +640 IF S<7 THEN 1390 +650 LET T=T+(Q-S+1) +660 IF S>Q THEN 1630 +670 NEXT O +680 PRINT:PRINT "YOU TOOK";(T+RND(1));"SECONDS." +690 LET M=T +700 LET M=M/V +710 IF M<1.5-(A*.1) THEN 1650 +720 IF M<2.9-(A*.1) THEN 1680 +730 IF M<4.4-(A*.01) THEN 1710 +740 PRINT:PRINT "DO YOU WANT TO RACE AGAIN"; +750 INPUT B$ +760 REM +770 IF B$="NO" THEN 1740 +780 IF B$="YES" THEN 480 +790 PRINT "PLEASE TYPE 'YES' OR 'NO'" +800 GOTO 740 +810 STOP +820 PRINT +825 PRINT "*** SLALOM: THIS IS THE 1976 WINTER OLYMPIC GIANT SLALOM. YOU ARE" +830 PRINT " THE AMERICAN TEAM'S ONLY HOPE OF A GOLD MEDAL." +840 PRINT +845 PRINT " 0 -- TYPE THIS IS YOU WANT TO SEE HOW LONG YOU'VE TAKEN." +850 PRINT " 1 -- TYPE THIS IF YOU WANT TO SPEED UP A LOT." +860 PRINT " 2 -- TYPE THIS IF YOU WANT TO SPEED UP A LITTLE." +870 PRINT " 3 -- TYPE THIS IF YOU WANT TO SPEED UP A TEENSY." +880 PRINT " 4 -- TYPE THIS IF YOU WANT TO KEEP GOING THE SAME SPEED." +890 PRINT " 5 -- TYPE THIS IF YOU WANT TO CHECK A TEENSY." +900 PRINT " 6 -- TYPE THIS IF YOU WANT TO CHECK A LITTLE." +910 PRINT " 7 -- TYPE THIS IF YOU WANT TO CHECK A LOT." +920 PRINT " 8 -- TYPE THIS IF YOU WANT TO CHEAT AND TRY TO SKIP A GATE." +930 PRINT +935 PRINT " THE PLACE TO USE THESE OPTIONS IS WHEN THE COMPUTER ASKS:" +940 PRINT +945 PRINT "OPTION?" +950 PRINT +955 PRINT " GOOD LUCK!" +957 PRINT +960 GOTO 1470 +970 PRINT "YOU'VE TAKEN";(T+RND(1));"SECONDS." +980 GOTO 580 +990 ON O1 GOTO 1130,1010,1170,1080,1190,1100,1150,1210 +1000 STOP +1010 LET S=S+INT(RND(1)*(5-3)+3) +1020 PRINT S;"M.P.H." +1030 IF S>Q THEN 1290 +1040 IF S>Q-1 THEN 1060 +1050 RETURN +1060 PRINT "CLOSE ONE!" +1070 RETURN +1080 PRINT S;"M.P.H." +1090 GOTO 1030 +1100 LET S=S-INT(RND(1)*(5-3)+3) +1110 PRINT S;"M.P.H." +1120 GOTO 1030 +1130 LET S=S+INT(RND(1)*(10-5)+5) +1140 GOTO 1080 +1150 LET S=S-INT(RND(1)*(10-5)+5) +1160 GOTO 1110 +1170 LET S=S+INT(RND(1)*(4-1)+1) +1180 GOTO 1110 +1190 LET S=S-INT(RND(1)*(4-1)+1) +1200 GOTO 1110 +1210 PRINT "***CHEAT" +1220 IF RND(1)<.7 THEN 1260 +1230 PRINT "YOU MADE IT!" +1240 LET T=T+1.5 +1250 RETURN +1260 PRINT "AN OFFICIAL CAUGHT YOU!" +1270 PRINT "YOU TOOK";(T+RND(1));"SECONDS." +1280 GOTO 740 +1290 IF RND(1)<((S-Q)*.1)+.2 THEN 1320 +1300 PRINT "YOU WENT OVER THE NAXIMUM SPEED AND MADE IT!" +1310 RETURN +1320 PRINT "YOU WENT OVER THE MAXIMUM SPEED AND "; +1330 IF RND(1)<.5 THEN 1370 +1340 PRINT "WIPED OUT!" +1350 PRINT "YOU TOOK";(T+RND(1));"SECONDS" +1360 GOTO 740 +1370 PRINT "SNAGGED A FLAG!" +1380 GOTO 1350 +1390 PRINT "LET'S BE REALISTIC, OK? LET'S GO BACK AND TRY AGAIN..." +1400 LET S=S1 +1410 GOTO 550 +1420 PRINT "WHAT?" +1430 GOTO 580 +1440 PRINT +1445 PRINT "TYPE ";CHR$(34);"INS";CHR$(34);" FOR INSTRUCTIONS" +1450 PRINT "TYPE ";CHR$(34);"MAX";CHR$(34);" FOR APPROXIMATE MAXIMUM SPEEDS" +1460 PRINT "TYPE ";CHR$(34);"RUN";CHR$(34);" FOR THE BEGINNING OF THE RACE" +1470 PRINT "COMMAND--"; +1480 INPUT A$ +1490 REM +1500 IF A$="INS" THEN 820 +1510 IF A$="MAX" THEN 1550 +1520 IF A$="RUN" THEN 410 +1530 PRINT CHR$(34);A$;CHR$(34);" IS AN ILLEGAL COMMAND--RETRY"; +1540 GOTO 1480 +1550 PRINT "GATE MAX" +1560 PRINT " # M.P.H." +1570 PRINT"----------" +1580 FOR B=1 TO V +1590 READ Q +1600 PRINT B;" ";Q +1610 NEXT B +1620 GOTO 1470 +1630 LET T=T+.5 +1640 GOTO 670 +1650 PRINT "YOU WON A GOLD MEDAL!" +1660 LET GG(1)=GG(1)+1 +1670 GOTO 1730 +1680 PRINT "YOU WON A SILVER MEDAL" +1690 LET SS(1)=SS(1)+1 +1700 GOTO 1730 +1710 PRINT "YOU WON A BRONZE MEDAL" +1720 LET BB(1)=BB(1)+1 +1730 GOTO 740 +1740 PRINT "THANKS FOR THE RACE" +1750 IF GG(1)<1 THEN 1770 +1760 PRINT "GOLD MEDALS:";GG(1) +1770 IF SS(1)<1 THEN 1790 +1780 PRINT "SILVER MEDALS:";SS(1) +1790 IF BB(1)<1 THEN 1830 +1800 PRINT "BRONZE MEDALS:";BB(1) +1810 DATA 14,18,26,29,18,25,28,32,29,20,29,29,25,21,26,29,20,21,20 +1820 DATA 18,26,25,33,31,22 +1830 END diff --git a/GAMES/slots.bas b/GAMES/slots.bas new file mode 100644 index 0000000..41d0545 --- /dev/null +++ b/GAMES/slots.bas @@ -0,0 +1,134 @@ +10 PRINT TAB(30);"SLOTS" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 REM PRODUCED BY FRED MIRABELLE AND BOB HARPER ON JAN 29, 1973 +110 REM IT SIMULATES THE SLOT MACHINE. +120 PRINT "YOU ARE IN THE H&M CASINO,IN FRONT OF ONE OF OUR" +130 PRINT "ONE-ARM BANDITS. BET FROM $1 TO $100." +140 PRINT "TO PULL THE ARM, PUNCH THE RETURN KEY AFTER MAKING YOUR BET." +150 LET P=0 +160 PRINT: PRINT"YOUR BET"; +170 INPUT M +180 IF M>100 THEN 860 +190 IF M<1 THEN 880 +200 M=INT(M) +210 GOSUB 1270 +220 PRINT +230 LET X=INT(6*RND(1)+1) +240 LET Y=INT(6*RND(1)+1) +250 LET Z=INT(6*RND(1)+1) +260 PRINT +270 IF X=1 THEN 910 +280 IF X=2 THEN 930 +290 IF X=3 THEN 950 +300 IF X=4 THEN 970 +310 IF X=5 THEN 990 +320 IF X=6 THEN 1010 +330 IF Y=1 THEN 1030 +340 IF Y=2 THEN 1050 +350 IF Y=3 THEN 1070 +360 IF Y=4 THEN 1090 +370 IF Y=5 THEN 1110 +380 IF Y=6 THEN 1130 +390 IF Z=1 THEN 1150 +400 IF Z=2 THEN 1170 +410 IF Z=3 THEN 1190 +420 IF Z=4 THEN 1210 +430 IF Z=5 THEN 1230 +440 IF Z=6 THEN 1250 +450 IF X=Y THEN 600 +460 IF X=Z THEN 630 +470 IF Y=Z THEN 650 +480 PRINT +490 PRINT "YOU LOST." +500 LET P=P-M +510 PRINT "YOUR STANDINGS ARE $";P +520 PRINT "AGAIN"; +530 INPUT A$ +540 IF A$="Y" THEN 160 +550 PRINT +560 IF P<0 THEN 670 +570 IF P=0 THEN 690 +580 IF P>0 THEN 710 +590 GOTO 1350 +600 IF Y=Z THEN 730 +610 IF Y=1 THEN 820 +620 GOTO 1341 +630 IF Z=1 THEN 820 +640 GOTO 470 +650 IF Z=1 THEN 820 +660 GOTO 1341 +670 PRINT "PAY UP! PLEASE LEAVE YOUR MONEY ON THE TERMINAL." +680 GOTO 1350 +690 PRINT"HEY, YOU BROKE EVEN." +700 GOTO 1350 +710 PRINT "COLLECT YOUR WINNINGS FROM THE H&M CASHIER." +720 GOTO 1350 +730 IF Z=1 THEN 780 +740 PRINT: PRINT"**TOP DOLLAR**" +750 PRINT "YOU WON!" +760 P=(((10*M)+M)+P) +770 GOTO 510 +780 PRINT:PRINT"***JACKPOT***" +790 PRINT "YOU WON!" +800 P=(((100*M)+M)+P) +810 GOTO 510 +820 PRINT:PRINT"*DOUBLE BAR*" +830 PRINT"YOU WON!" +840 P=(((5*M)+M)+P) +850 GOTO 510 +860 PRINT"HOUSE LIMITS ARE $100" +870 GOTO 160 +880 PRINT"MINIMUM BET IS $1" +890 GOTO 160 +900 GOTO 220 +910 PRINT"BAR";:GOSUB 1310 +920 GOTO 330 +930 PRINT"BELL";:GOSUB 1310 +940 GOTO 330 +950 PRINT"ORANGE";:GOSUB 1310 +960 GOTO 330 +970 PRINT"LEMON";:GOSUB 1310 +980 GOTO 330 +990 PRINT"PLUM";:GOSUB 1310 +1000 GOTO 330 +1010 PRINT"CHERRY";:GOSUB 1310 +1020 GOTO 330 +1030 PRINT" BAR";:GOSUB 1310 +1040 GOTO 390 +1050 PRINT" BELL";:GOSUB 1310 +1060 GOTO 390 +1070 PRINT" ORANGE";:GOSUB 1310 +1080 GOTO 390 +1090 PRINT" LEMON";:GOSUB 1310 +1100 GOTO 390 +1110 PRINT" PLUM";:GOSUB 1310 +1120 GOTO 390 +1130 PRINT" CHERRY";:GOSUB 1310 +1140 GOTO 390 +1150 PRINT" BAR" +1160 GOTO 450 +1170 PRINT" BELL" +1180 GOTO 450 +1190 PRINT" ORANGE" +1200 GOTO 450 +1210 PRINT" LEMON" +1220 GOTO 450 +1230 PRINT" PLUM" +1240 GOTO 450 +1250 PRINT" CHERRY" +1260 GOTO 450 +1270 FOR Q4=1 TO 10 +1280 PRINT CHR$(7); +1290 NEXT Q4 +1300 RETURN +1310 FOR T8=1 TO 5 +1320 PRINT CHR$(7); +1330 NEXT T8 +1340 RETURN +1341 PRINT: PRINT "DOUBLE!!" +1342 PRINT"YOU WON!" +1343 P=(((2*M)+M)+P) +1344 GOTO 510 +1350 STOP +9999 END diff --git a/GAMES/splat.bas b/GAMES/splat.bas new file mode 100644 index 0000000..82cab2d --- /dev/null +++ b/GAMES/splat.bas @@ -0,0 +1,128 @@ +10 PRINT TAB(33);"SPLAT" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +40 PRINT:PRINT:PRINT +50 DIM A(42) +95 PRINT "WELCOME TO 'SPLAT' -- THE GAME THAT SIMULATES A PARACHUTE" +96 PRINT "JUMP. TRY TO OPEN YOUR CHUTE AT THE LAST POSSIBLE" +97 PRINT "MOMENT WITHOUT GOING SPLAT." +118 PRINT:PRINT:D1=0:V=0:A=0:N=0:M=0:D1=INT(9001*RND(1)+1000) +119 PRINT "SELECT YOUR OWN TERMINAL VELOCITY (YES OR NO)";:INPUT A1$ +120 IF A1$="NO" GOTO 128 +121 IF A1$<>"YES" THEN PRINT "YES OR NO";:INPUT A1$:GOTO 120 +123 PRINT "WHAT TERMINAL VELOCITY (MI/HR)";:INPUT V1 +125 V1=V1*(5280/3600):V=V1+((V1*RND(1))/20)-((V1*RND(1))/20):GOTO 135 +128 V1=INT(1000*RND(1)) +130 PRINT "OK. TERMINAL VELOCITY =";V1;"MI/HR" +131 V1=V1*(5280/3600):V=V1+((V1*RND(1))/20)-((V1*RND(1))/20) +135 PRINT "WANT TO SELECT ACCELERATION DUE TO GRAVITY (YES OR NO)"; +136 INPUT B1$ +140 IF B1$="NO" GOTO 150 +141 IF B1$<>"YES" THEN PRINT "YES OR NO";:INPUT B1$:GOTO 140 +143 PRINT "WHAT ACCELERATION (FT/SEC/SEC)";:INPUT A2 +145 A=A2+((A2*RND(1))/20)-((A2*RND(1))/20):GOTO 205 +150 ON INT(1+(10*RND(1))) GOTO 151,152,153,154,155,156,157,158,159,160 +151 PRINT"FINE. YOU'RE ON MERCURY. ACCELERATION=12.2 FT/SEC/SEC.":GOTO 161 +152 PRINT"ALL RIGHT. YOU'RE ON VENUS. ACCELERATION=28.3 FT/SEC/SEC.":GOTO 162 +153 PRINT "THEN YOU'RE ON EARTH. ACCELERATION=32.16 FT/SEC/SEC.":GOTO 163 +154 PRINT"FINE. YOU'RE ON THE MOON. ACCELERATION=5.15 FT/SEC/SEC.":GOTO 164 +155 PRINT"ALL RIGHT. YOU'RE ON MARS. ACCELERATION=12.5 FT/SEC/SEC.":GOTO 165 +156 PRINT"THEN YOU'RE ON JUPITER. ACCELERATION=85.2 FT/SEC/SEC.":GOTO 166 +157 PRINT"FINE. YOU'RE ON SATURN. ACCELERATION=37.6 FT/SEC/SEC.":GOTO 167 +158 PRINT"ALL RIGHT. YOU'RE ON URANUS. ACCELERATION=33.8 FT/SEC/SEC.":GOTO 168 +159 PRINT"THEN YOU'RE ON NEPTUNE. ACCELERATION=39.6 FT/SEC/SEC.":GOTO 169 +160 PRINT"FINE. YOU'RE ON THE SUN. ACCELERATION=896 FT/SEC/SEC.":GOTO 170 +161 A2=12.2:GOTO 145 +162 A2=28.3:GOTO 145 +163 A2=32.16:GOTO 145 +164 A2=5.15:GOTO 145 +165 A2=12.5:GOTO 145 +166 A2=85.2:GOTO 145 +167 A2=37.6:GOTO 145 +168 A2=33.8 :GOTO 145 +169 A2=39.6:GOTO 145 +170 A2=896:GOTO 145 +205 PRINT +206 PRINT " ALTITUDE =";D1;"FT" +207 PRINT " TERM. VELOCITY =";V1;"FT/SEC +/-5%" +208 PRINT " ACCELERATION =";A2;"FT/SEC/SEC +/-5%" +210 PRINT "SET THE TIMER FOR YOUR FREEFALL." +211 PRINT "HOW MANY SECONDS";:INPUT T +215 PRINT "HERE WE GO." +217 PRINT +218 PRINT "TIME (SEC)","DIST TO FALL (FT)" +219 PRINT "==========","=================" +300 FOR I=0 TO T STEP (T/8) +310 IF I>V/A GOTO 400 +320 D=D1-((A/2)*I^2) +330 IF D<=0 GOTO 1000 +340 PRINT I,D +350 NEXT I +360 GOTO 500 +400 PRINT "TERMINAL VELOCITY REACHED AT T PLUS";V/A;"SECONDS." +405 FOR I=I TO T STEP (T/8) +410 D=D1-((V^2/(2*A))+(V*(I-(V/A)))) +420 IF D<=0 GOTO 1010 +430 PRINT I,D +440 NEXT I +500 PRINT "CHUTE OPEN" +510 K=0:K1=0 +550 FOR J=0 TO 42 +555 IF A(J)=0 GOTO 620 +560 K=K+1 +570 IF D>=A(J) GOTO 600 +580 K1=K1+1 +600 NEXT J +610 STOP: REM GOTO 540 +620 A(J)=D +630 IF J>2 THEN 650 +635 PRINT "AMAZING!!! NOT BAD FOR YOUR "; +636 IF J=0 THEN PRINT "1ST "; +637 IF J=1 THEN PRINT "2ND "; +638 IF J=2 THEN PRINT "3RD "; +639 PRINT "SUCCESSFUL JUMP!!!":GOTO 2000 +650 IF K-K1<=.1*K GOTO 700 +660 IF K-K1<=.25*K GOTO 710 +670 IF K-K1<=.5*K GOTO 720 +680 IF K-K1<=.75*K GOTO 730 +690 IF K-K1<=.9*K GOTO 740 +695 GOTO 750 +700 PRINT "WOW! THAT'S SOME JUMPING. OF THE";K;"SUCCESSFUL JUMPS" +701 PRINT "BEFORE YOURS, ONLY";K-K1;"OPENED THEIR CHUTES LOWER THAN" +702 PRINT "YOU DID." +703 GOTO 2000 +710 PRINT "PRETTY GOOD! ";K;"SUCCESSFUL JUMPS PRECEDED YOURS AND ONLY" +711 PRINT K-K1;" OF THEM GOT LOWER THAN YOU DID BEFORE THEIR CHUTES" +712 PRINT "OPENED." :GOTO 2000 +720 PRINT "NOT BAD. THERE HAVE BEEN";K;"SUCCESSFUL JUMPS BEFORE YOURS." +721 PRINT"YOU WERE BEATEN OUT BY";K-K1;"OF THEM.":GOTO 2000 +730 PRINT "CONSERVATIVE, AREN'T YOU? YOU RANKED ONLY";K-K1;"IN THE" +731 PRINT K;"SUCCESSFUL JUMPS BEFORE YOURS.":GOTO 2000 +740 PRINT "HUMPH! DON'T YOU HAVE ANY SPORTING BLOOD? THERE WERE" +741 PRINT K;"SUCCESSFUL JUMPS BEFORE YOURS AND YOU CAME IN";K1;"JUMPS" +742 PRINT "BETTER THAN THE WORST. SHAPE UP!!!":GOTO 2000 +750 PRINT "HEY! YOU PULLED THE RIP CORD MUCH TOO SOON. ";K;"SUCCESSFUL" +751 PRINT "JUMPS BEFORE YOURS AND YOU CAME IN NUMBER";K-K1;"! GET WITH IT!" +752 GOTO 2000 +800 PRINT "REQUIESCAT IN PACE.":GOTO 1950 +801 PRINT "MAY THE ANGEL OF HEAVEN LEAD YOU INTO PARADISE.":GOTO 1950 +802 PRINT "REST IN PEACE.":GOTO 1950 +803 PRINT "SON-OF-A-GUN.":GOTO 1950 +804 PRINT "#$%&&%!$":GOTO 1950 +805 PRINT "A KICK IN THE PANTS IS A BOOST IF YOU'RE HEADED RIGHT.":GOTO 1950 +806 PRINT "HMMM. SHOULD HAVE PICKED A SHORTER TIME.":GOTO 1950 +807 PRINT "MUTTER. MUTTER. MUTTER.":GOTO 1950 +808 PRINT "PUSHING UP DAISIES.":GOTO 1950 +809 PRINT "EASY COME, EASY GO.":GOTO 1950 +1000 PRINT SQR(2*D1/A),"SPLAT" +1005 ON INT(1+(10*RND(1))) GOTO 800,801,802,803,804,805,806,807,808,809 +1010 PRINT (V/A)+((D1-(V^2/(2*A)))/V),"SPLAT" +1020 GOTO 1005 +1950 PRINT "I'LL GIVE YOU ANOTHER CHANCE.":GOTO 2000 +2000 PRINT "DO YOU WANT TO PLAY AGAIN";:INPUT Z$ +2001 IF Z$="YES" GOTO 118 +2002 IF Z$="NO" GOTO 2005 +2003 PRINT "YES OR NO":GOTO 2000 +2005 PRINT "PLEASE";:INPUT Z$:IF Z$="YES" GOTO 118 +2006 IF Z$<>"NO" THEN PRINT "YES OR NO ";:GOTO 2005 +2007 PRINT "SSSSSSSSSS.":PRINT:GOTO 2046 +2046 END diff --git a/GAMES/stars.bas b/GAMES/stars.bas new file mode 100644 index 0000000..3290cbb --- /dev/null +++ b/GAMES/stars.bas @@ -0,0 +1,54 @@ +10 PRINT TAB(34);"STARS" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 REM *** STARS - PEOPLE'S COMPUTER CENTER, MENLO PARK, CA +140 REM *** A IS LIMIT ON NUMBER, M IS NUMBER OF GUESSES +150 A=100:M=7 +170 INPUT "DO YOU WANT INSTRUCTIONS";A$ +190 IF LEFT$(A$,1)="N" THEN 280 +200 REM *** INSTRUCTIONS ON HOW TO PLAY +210 PRINT "I AM THINKING OF A WHOLE NUMBER FROM 1 TO";A +220 PRINT "TRY TO GUESS MY NUMBER. AFTER YOU GUESS, I" +230 PRINT "WILL TYPE ONE OR MORE STARS (*). THE MORE" +240 PRINT "STARS I TYPE, THE CLOSER YOU ARE TO MY NUMBER." +250 PRINT "ONE STAR (*) MEANS FAR AWAY, SEVEN STARS (*******)" +260 PRINT "MEANS REALLY CLOSE! YOU GET";M;"GUESSES." +270 REM *** COMPUTER THINKS OF A NUMBER +280 PRINT +290 PRINT +300 X=INT(A*RND(1)+1) +310 PRINT "OK, I AM THINKING OF A NUMBER, START GUESSING." +320 REM *** GUESSING BEGINS, HUMAN GETS M GUESSES +330 FOR K=1 TO M +340 PRINT +350 PRINT "YOUR GUESS"; +360 INPUT G +370 IF G=X THEN 600 +380 D=ABS(G-X) +390 IF D>=64 THEN 510 +400 IF D>=32 THEN 500 +410 IF D>=16 THEN 490 +420 IF D>=8 THEN 480 +430 IF D>=4 THEN 470 +440 IF D>=2 THEN 460 +450 PRINT "*"; +460 PRINT "*"; +470 PRINT "*"; +480 PRINT "*"; +490 PRINT "*"; +500 PRINT "*"; +510 PRINT "*"; +520 PRINT +530 NEXT K +540 REM *** DID NOT GUESS IN M GUESSES +550 PRINT +560 PRINT "SORRY, THAT'S";M;"GUESSES. THE NUMBER WAS";X +580 GOTO 650 +590 REM *** WE HAVE A WINNER +600 PRINT:FOR N=1 TO 79 +610 PRINT "*"; +620 NEXT N +630 PRINT:PRINT +640 PRINT "YOU GOT IT IN";K;"GUESSES!!! LET'S PLAY AGAIN..." +650 GOTO 280 +660 END diff --git a/GAMES/stock.bas b/GAMES/stock.bas new file mode 100644 index 0000000..a85733f --- /dev/null +++ b/GAMES/stock.bas @@ -0,0 +1,232 @@ +10 PRINT TAB(30);"STOCK MARKET" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 REM STOCK MARKET SIMULATION -STOCK- +101 REM REVISED 8/18/70 (D. PESSEL, L. BRAUN, C. LOSIK) +102 REM IMP VRBLS: A-MRKT TRND SLP; B5-BRKRGE FEE; C-TTL CSH ASSTS; +103 REM C5-TTL CSH ASSTS (TEMP); C(I)-CHNG IN STK VAL; D-TTL ASSTS; +104 REM E1,E2-LRG CHNG MISC; I-STCK #; I1,I2-STCKS W LRG CHNG; +105 REM N1,N2-LRG CHNG DAY CNTS; P5-TTL DAYS PRCHSS; P(I)-PRTFL CNTNTS; +106 REM Q9-NEW CYCL?; S4-SGN OF A; S5-TTL DYS SLS; S(I)-VALUE/SHR; +107 REM T-TTL STCK ASSTS; T5-TTL VAL OF TRNSCTNS; +108 REM W3-LRG CHNG; X1-SMLL CHNG(<$1); Z4,Z5,Z6-NYSE AVE.; Z(I)-TRNSCT +110 DIM S(5),P(5),Z(5),C(5) +112 REM SLOPE OF MARKET TREND:A (SAME FOR ALL STOCKS) +113 LET X=1 +114 LET A=INT((RND(X)/10)*100+.5)/100 +115 LET T5=0 +116 LET X9=0 +117 LET N1=0 +118 LET N2=0 +119 LET E1=0 +120 LET E2=0 +121 REM INTRODUCTION +122 PRINT "DO YOU WANT THE INSTRUCTIONS (YES-TYPE 1, NO-TYPE 0)"; +123 INPUT Z9 +124 PRINT +125 PRINT +126 IF Z9<1 THEN 200 +130 PRINT "THIS PROGRAM PLAYS THE STOCK MARKET. YOU WILL BE GIVEN" +132 PRINT "$10,000 AND MAY BUY OR SELL STOCKS. THE STOCK PRICES WILL" +134 PRINT "BE GENERATED RANDOMLY AND THEREFORE THIS MODEL DOES NOT" +135 PRINT "REPRESENT EXACTLY WHAT HAPPENS ON THE EXCHANGE. A TABLE" +136 PRINT "OF AVAILABLE STOCKS, THEIR PRICES, AND THE NUMBER OF SHARES" +137 PRINT "IN YOUR PORTFOLIO WILL BE PRINTED. FOLLOWING THIS, THE" +138 PRINT "INITIALS OF EACH STOCK WILL BE PRINTED WITH A QUESTION" +139 PRINT "MARK. HERE YOU INDICATE A TRANSACTION. TO BUY A STOCK" +140 PRINT "TYPE +NNN, TO SELL A STOCK TYPE -NNN, WHERE NNN IS THE" +141 PRINT "NUMBER OF SHARES. A BROKERAGE FEE OF 1% WILL BE CHARGED" +142 PRINT "ON ALL TRANSACTIONS. NOTE THAT IF A STOCK'S VALUE DROPS" +143 PRINT "TO ZERO IT MAY REBOUND TO A POSITIVE VALUE AGAIN. YOU" +144 PRINT "HAVE $10,000 TO INVEST. USE INTEGERS FOR ALL YOUR INPUTS." +145 PRINT "(NOTE: TO GET A 'FEEL' FOR THE MARKET RUN FOR AT LEAST" +146 PRINT "10 DAYS)" +147 PRINT "-----GOOD LUCK!-----" +200 REM GENERATION OF STOCK TABLE; INPUT REQUESTS +210 REM INITIAL STOCK VALUES +220 LET S(1)=100 +230 LET S(2)=85 +240 LET S(3)=150 +250 LET S(4)=140 +260 LET S(5)=110 +265 REM INITIAL T8 - # DAYS FOR FIRST TREND SLOPE (A) +266 LET T8=INT(4.99*RND(X)+1) +267 REM RANDOMIZE SIGN OF FIRST TREND SLOPE (A) +268 IF RND(X)>.5 THEN 270 +269 LET A=-A +270 REM RANDOMIZE INITIAL VALUES +280 GOSUB 830 +285 REM INITIAL PORTFOLIO CONTENTS +290 FOR I=1 TO 5 +300 LET P(I)=0 +305 LET Z(I)=0 +310 NEXT I +320 PRINT +330 PRINT +333 REM INITIALIZE CASH ASSETS:C +335 LET C=10000 +338 REM PRINT INITIAL PORTFOLIO +340 PRINT "STOCK"," ","INITIALS","PRICE/SHARE" +350 PRINT "INT. BALLISTIC MISSILES"," IBM",S(1) +352 PRINT "RED CROSS OF AMERICA"," RCA",S(2) +354 PRINT "LICHTENSTEIN, BUMRAP & JOKE"," LBJ",S(3) +356 PRINT "AMERICAN BANKRUPT CO."," ABC",S(4) +358 PRINT "CENSURED BOOKS STORE"," CBS",S(5) +360 PRINT +361 REM NYSE AVERAGE:Z5; TEMP. VALUE:Z4; NET CHANGE:Z6 +363 LET Z4=Z5 +364 LET Z5=0 +365 LET T=0 +370 FOR I=1 TO 5 +375 LET Z5=Z5+S(I) +380 LET T=T+S(I)*P(I) +390 NEXT I +391 LET Z5=INT(100*(Z5/5)+.5)/100 +392 LET Z6=INT((Z5-Z4)*100+.5)/100 +393 REM TOTAL ASSETS:D +394 LET D=T+C +395 IF X9>0 THEN 398 +396 PRINT "NEW YORK STOCK EXCHANGE AVERAGE: ";Z5 +397 GOTO 399 +398 PRINT "NEW YORK STOCK EXCHANGE AVERAGE: ";Z5;"NET CHANGE";Z6 +399 PRINT +400 LET T=INT(100*T+.5)/100 +401 PRINT "TOTAL STOCK ASSETS ARE $";T +403 LET C=INT(100*C+.5)/100 +405 PRINT "TOTAL CASH ASSETS ARE $";C +407 LET D=INT(100*D+.5)/100 +408 PRINT "TOTAL ASSETS ARE $";D +410 PRINT +411 IF X9=0 THEN 416 +412 PRINT "DO YOU WISH TO CONTINUE (YES-TYPE 1, NO-TYPE 0)"; +413 INPUT Q9 +414 IF Q9<1 THEN 998 +416 REM INPUT TRANSACTIONS +420 PRINT "WHAT IS YOUR TRANSACTION IN" +430 PRINT "IBM"; +440 INPUT Z(1) +450 PRINT "RCA"; +460 INPUT Z(2) +470 PRINT "LBJ"; +480 INPUT Z(3) +490 PRINT "ABC"; +500 INPUT Z(4) +510 PRINT "CBS"; +520 INPUT Z(5) +525 PRINT +530 REM TOTAL DAY'S PURCHASES IN $:P5 +540 LET P5=0 +550 REM TOTAL DAY'S SALES IN $:S5 +560 LET S5=0 +570 FOR I=1 TO 5 +575 LET Z(I)=INT(Z(I)+.5) +580 IF Z(I)<=0 THEN 610 +590 LET P5=P5+Z(I)*S(I) +600 GOTO 620 +610 LET S5=S5-Z(I)*S(I) +612 IF -Z(I)<=P(I) THEN 620 +614 PRINT "YOU HAVE OVERSOLD A STOCK; TRY AGAIN." +616 GOTO 420 +620 NEXT I +622 REM TOTAL VALUE OF TRANSACTIONS:T5 +625 LET T5=P5+S5 +630 REM BROKERAGE FEE:B5 +640 LET B5=INT(.01*T5*100+.5)/100 +650 REM CASH ASSETS=OLD CASH ASSETS-TOTAL PURCHASES +652 REM -BROKERAGE FEES+TOTAL SALES:C5 +654 LET C5=C-P5-B5+S5 +656 IF C5>=0 THEN 674 +658 PRINT "YOU HAVE USED $";-C5;" MORE THAN YOU HAVE." +660 GOTO 420 +674 LET C=C5 +675 REM CALCULATE NEW PORTFOLIO +680 FOR I=1 TO 5 +690 LET P(I)=P(I)+Z(I) +700 NEXT I +710 REM CALCULATE NEW STOCK VALUES +720 GOSUB 830 +750 REM PRINT PORTFOLIO +751 REM BELL RINGING-DIFFERENT ON MANY COMPUTERS +755 PRINT +756 PRINT "********** END OF DAY'S TRADING **********" +757 PRINT +758 PRINT +759 IF X9<1 THEN 769 +769 PRINT "STOCK","PRICE/SHARE","HOLDINGS", "VALUE", "NET PRICE CHANGE" +770 PRINT "IBM", S(1), P(1), S(1)*P(1), C(1) +771 PRINT "RCA", S(2), P(2), S(2)*P(2), C(2) +772 PRINT "LBJ", S(3), P(3), S(3)*P(3), C(3) +773 PRINT "ABC", S(4), P(4), S(4)*P(4), C(4) +774 PRINT "CBS", S(5), P(5), S(5)*P(5), C(5) +775 LET X9=1 +780 PRINT +790 PRINT +810 GOTO 360 +829 REM NEW STOCK VALUES - SUBROUTINE +830 REM RANDOMLY PRODUCE NEW STOCK VALUES BASED ON PREVIOUS +831 REM DAY'S VALUES +832 REM N1,N2 ARE RANDOM NUMBERS OF DAYS WHICH RESPECTIVELY +833 REM DETERMINE WHEN STOCK I1 WILL INCREASE 10 PTS. AND STOCK +834 REM I2 WILL DECREASE 10 PTS. +840 REM IF N1 DAYS HAVE PASSED, PICK AN I1, SET E1, DETERMINE NEW N1 +841 IF N1>0 THEN 850 +845 LET I1=INT(4.99*RND(X)+1) +846 LET N1=INT(4.99*RND(X)+1) +847 LET E1=1 +850 REM IF N2 DAYS HAVE PASSED, PICK AN I2, SET E2, DETERMINE NEW N2 +851 IF N2>0 THEN 860 +855 LET I2=INT(4.99*RND(X)+1) +856 LET N2=INT(4.99*RND(X)+1) +857 LET E2=1 +860 REM DEDUCT ONE DAY FROM N1 AND N2 +861 LET N1=N1-1 +862 LET N2=N2-1 +890 REM LOOP THROUGH ALL STOCKS +900 FOR I=1 TO 5 +910 LET X1=RND(X) +915 IF X1>.25 THEN 920 +916 LET X1=.25 +917 GOTO 935 +920 IF X1>.5 THEN 925 +921 LET X1=.5 +922 GOTO 935 +925 IF X1>.75 THEN 930 +926 LET X1=.75 +927 GOTO 935 +930 LET X1=0.0 +931 REM BIG CHANGE CONSTANT:W3 (SET TO ZERO INITIALLY) +935 LET W3=0 +936 IF E1<1 THEN 945 +937 IF INT(I1+.5)<>INT(I+.5) THEN 945 +938 REM ADD 10 PTS. TO THIS STOCK; RESET E1 +939 LET W3=10 +943 LET E1=0 +945 IF E2<1 THEN 955 +947 IF INT(I2+.5)<>INT(I+.5) THEN 955 +948 REM SUBTRACT 10 PTS. FROM THIS STOCK; RESET E2 +949 LET W3=W3-10 +953 LET E2=0 +954 REM C(I) IS CHANGE IN STOCK VALUE +955 LET C(I)=INT(A*S(I))+X1+INT(3-6*RND(X)+.5)+W3 +956 LET C(I)=INT(100*C(I)+.5)/100 +957 LET S(I)=S(I)+C(I) +960 IF S(I)>0 THEN 967 +964 LET C(I)=0 +965 LET S(I)=0 +966 GOTO 970 +967 LET S(I)=INT(100*S(I)+.5)/100 +970 NEXT I +972 REM AFTER T8 DAYS RANDOMLY CHANGE TREND SIGN AND SLOPE +973 LET T8=T8-1 +974 IF T8<1 THEN 985 +980 RETURN +985 REM RANDOMLY CHANGE TREND SIGN AND SLOPE (A), AND DURATION +986 REM OF TREND (T8) +990 LET T8=INT(4.99*RND(X)+1) +992 LET A=INT((RND(X)/10)*100+.5)/100 +993 LET S4=RND(X) +994 IF S4<=.5 THEN 997 +995 LET A=-A +997 RETURN +998 PRINT "HOPE YOU HAD FUN!!" +999 END diff --git a/GAMES/synonym.bas b/GAMES/synonym.bas new file mode 100644 index 0000000..868657d --- /dev/null +++ b/GAMES/synonym.bas @@ -0,0 +1,53 @@ +2 PRINT TAB(33);"SYNONYM" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 DIM R$(5),W$(10),L(30),R(30) +20 R$(1)="RIGHT": R$(2)="CORRECT": R$(3)="FINE": R$(4)="GOOD!" +30 R$(5)="CHECK" +70 C=0 +90 PRINT "A SYNONYM OF A WORD MEANS ANOTHER WORD IN THE ENGLISH" +100 PRINT "LANGUAGE WHICH HAS THE SAME OR VERY NEARLY THE SAME"; +110 PRINT " MEANING." +130 PRINT "I CHOOSE A WORD -- YOU TYPE A SYNONYM." +140 PRINT "IF YOU CAN'T THINK OF A SYNONYM, TYPE THE WORD 'HELP'" +145 PRINT "AND I WILL TELL YOU A SYNONYM.": PRINT +150 RESTORE: C=C+1: READ N +160 IF C>N THEN 420 +170 N1=INT(RND(1)*N+1) +174 IF R(N1)=1 THEN 170 +176 R(N1)=1 +180 FOR I=1 TO N1 +190 READ N2 +200 FOR J=1 TO N2 +210 READ W$(J) +220 NEXT J +230 NEXT I +232 FOR J=1 TO N2: L(J)=J: NEXT J +235 L(0)=N2: G=1: PRINT +237 L(G)=L(L(0)): L(0)=N2-1: PRINT +240 PRINT " WHAT IS A SYNONYM OF ";W$(G);: INPUT A$ +250 IF A$="HELP" THEN 340 +260 FOR K=1 TO N2 +270 IF G=K THEN 290 +280 IF A$=W$(K) THEN 320 +290 NEXT K +300 PRINT " TRY AGAIN.": GOTO 240 +320 PRINT R$(INT(RND(1)*5+1)): GOTO 150 +340 G1=INT(RND(1)*L(0)+1) +360 PRINT "**** A SYNONYM OF ";W$(G);" IS ";W$(L(G1));".": PRINT +370 L(G1)=L(L(0)): L(0)=L(0)-1: GOTO 240 +420 PRINT: PRINT "SYNONYM DRILL COMPLETED.": GOTO 999 +500 DATA 10 +510 DATA 5,"FIRST","START","BEGINNING","ONSET","INITIAL" +520 DATA 5,"SIMILAR","ALIKE","SAME","LIKE","RESEMBLING" +530 DATA 5,"MODEL","PATTERN","PROTOTYPE","STANDARD","CRITERION" +540 DATA 5,"SMALL","INSIGNIFICANT","LITTLE","TINY","MINUTE" +550 DATA 6,"STOP","HALT","STAY","ARREST","CHECK","STANDSTILL" +560 DATA 6,"HOUSE","DWELLING","RESIDENCE","DOMICILE","LODGING" +565 DATA "HABITATION" +570 DATA 7,"PIT","HOLE","HOLLOW","WELL","GULF","CHASM","ABYSS" +580 DATA 7,"PUSH","SHOVE","THRUST","PROD","POKE","BUTT","PRESS" +590 DATA 6,"RED","ROUGE","SCARLET","CRIMSON","FLAME","RUBY" +600 DATA 7,"PAIN","SUFFERING","HURT","MISERY","DISTRESS","ACHE" +605 DATA "DISCOMFORT" +999 END diff --git a/GAMES/target.bas b/GAMES/target.bas new file mode 100644 index 0000000..7e99d3b --- /dev/null +++ b/GAMES/target.bas @@ -0,0 +1,51 @@ +10 PRINT TAB(33);"TARGET" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT: PRINT: PRINT +100 R=1: R1=57.296: P=3.14159 +110 PRINT "YOU ARE THE WEAPONS OFFICER ON THE STARSHIP ENTERPRISE" +120 PRINT "AND THIS IS A TEST TO SEE HOW ACCURATE A SHOT YOU" +130 PRINT "ARE IN A THREE-DIMENSIONAL RANGE. YOU WILL BE TOLD" +140 PRINT "THE RADIAN OFFSET FOR THE X AND Z AXES, THE LOCATION" +150 PRINT "OF THE TARGET IN THREE DIMENSIONAL RECTANGULAR COORDINATES," +160 PRINT "THE APPROXIMATE NUMBER OF DEGREES FROM THE X AND Z" +170 PRINT "AXES, AND THE APPROXIMATE DISTANCE TO THE TARGET." +180 PRINT "YOU WILL THEN PROCEEED TO SHOOT AT THE TARGET UNTIL IT IS" +190 PRINT "DESTROYED!": PRINT: PRINT "GOOD LUCK!!":PRINT: PRINT +220 A=RND(1)*2*P: B=RND(1)*2*P: Q=INT(A*R1): W=INT(B*R1) +260 PRINT "RADIANS FROM X AXIS =";A;" FROM Z AXIS =";B +280 P1=100000*RND(1)+RND(1): X=SIN(B)*COS(A)*P1: Y=SIN(B)*SIN(A)*P1 +290 Z=COS(B)*P1 +340 PRINT "TARGET SIGHTED: APPROXIMATE COORDINATES: X=";X;" Y=";Y;" Z=";Z +345 R=R+1: IF R>5 THEN 390 +350 ON R GOTO 355,360,365,370,375 +355 P3=INT(P1*.05)*20: GOTO 390 +360 P3=INT(P1*.1)*10: GOTO 390 +365 P3=INT(P1*.5)*2: GOTO 390 +370 P3=INT(P1): GOTO 390 +375 P3=P1 +390 PRINT " ESTIMATED DISTANCE:";P3 +400 PRINT:PRINT "INPUT ANGLE DEVIATION FROM X, DEVIATION FROM Z, DISTANCE"; +405 INPUT A1,B1,P2 +410 PRINT: IF P2<20 THEN PRINT "YOU BLEW YOURSELF UP!!": GOTO 580 +420 A1=A1/R1: B1=B1/R1: PRINT "RADIANS FROM X AXIS =";A1;" "; +425 PRINT "FROM Z AXIS =";B1 +480 X1=P2*SIN(B1)*COS(A1): Y1=P2*SIN(B1)*SIN(A1): Z1=P2*COS(B1) +510 D=((X1-X)^2+(Y1-Y)^2+(Z1-Z)^2)^(1/2) +520 IF D>20 THEN 670 +530 PRINT: PRINT " * * * HIT * * * TARGET IS NON-FUNCTIONAL": PRINT +550 PRINT "DISTANCE OF EXPLOSION FROM TARGET WAS";D;"KILOMETERS." +570 PRINT: PRINT "MISSION ACCOMPLISHED IN ";R;" SHOTS." +580 R=0: FOR I=1 TO 5: PRINT: NEXT I: PRINT "NEXT TARGET...": PRINT +590 GOTO 220 +670 X2=X1-X: Y2=Y1-Y: Z2=Z1-Z: IF X2<0 THEN 730 +710 PRINT "SHOT IN FRONT OF TARGET";X2;"KILOMETERS.": GOTO 740 +730 PRINT "SHOT BEHIND TARGET";-X2;"KILOMETERS." +740 IF Y2<0 THEN 770 +750 PRINT "SHOT TO LEFT OF TARGET";Y2;"KILOMETERS.": GOTO 780 +770 PRINT "SHOT TO RIGHT OF TARGET";-Y2;"KILOMETERS." +780 IF Z2<0 THEN 810 +790 PRINT "SHOT ABOVE TARGET";Z2;"KILOMETERS.": GOTO 820 +810 PRINT "SHOT BELOW TARGET";-Z2;"KILOMETERS." +820 PRINT "APPROX POSITION OF EXPLOSION: X=";X1;" Y=";Y1;" Z=";Z1 +830 PRINT " DISTANCE FROM TARGET =";D: PRINT: PRINT: PRINT: GOTO 345 +999 END diff --git a/GAMES/tictac1.bas b/GAMES/tictac1.bas new file mode 100644 index 0000000..57eace4 --- /dev/null +++ b/GAMES/tictac1.bas @@ -0,0 +1,69 @@ +10 PRINT TAB(30);"TIC TAC TOE" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +50 REM +100 REM THIS PROGRAM PLAYS TIC TAC TOE +110 REM THE MACHINE GOES FIRST +120 PRINT "THE GAME BOARD IS NUMBERED:": PRINT +130 PRINT "1 2 3": PRINT "8 9 4": PRINT "7 6 5" +140 PRINT +150 REM +160 REM +170 REM +180 DEF FNM(X)=X-8*INT((X-1)/8) +190 REM +200 REM MAIN PROGRAM +210 PRINT +220 PRINT +230 A=9 +240 M=A +250 GOSUB 650 +260 P=M +270 B=FNM(P+1) +280 M=B +290 GOSUB 650 +300 Q=M +310 IF Q=FNM(B+4) THEN 360 +320 C=FNM(B+4) +330 M=C +340 GOSUB 700 +350 GOTO 730 +360 C=FNM(B+2) +370 M=C +380 GOSUB 650 +390 R=M +400 IF R=FNM(C+4) THEN 450 +410 D=FNM(C+4) +420 M=D +430 GOSUB 700 +440 GOTO 730 +450 IF P/2<>INT(P/2) THEN 500 +460 D=FNM(C+7) +470 M=D +480 GOSUB 700 +490 GOTO 730 +500 D=FNM(C+3) +510 M=D +520 GOSUB 650 +530 S=M +540 IF S=FNM(D+4) THEN 590 +550 E=FNM(D+4) +560 M=E +570 GOSUB 700 +580 REM +590 E=FNM(D+6) +600 M=E +610 GOSUB 700 +620 PRINT "THE GAME IS A DRAW." +630 GOTO 210 +640 REM +650 GOSUB 700 +660 PRINT "YOUR MOVE"; +670 INPUT M +680 RETURN +700 PRINT "COMPUTER MOVES";M +710 RETURN +720 REM +730 PRINT "AND WINS ********" +740 GOTO 210 +750 END diff --git a/GAMES/tictac2.bas b/GAMES/tictac2.bas new file mode 100644 index 0000000..ece16cc --- /dev/null +++ b/GAMES/tictac2.bas @@ -0,0 +1,114 @@ +2 PRINT TAB(30);"TIC-TAC-TOE" +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT:PRINT:PRINT +8 PRINT "THE BOARD IS NUMBERED:" +10 PRINT " 1 2 3" +12 PRINT " 4 5 6" +14 PRINT " 7 8 9" +16 PRINT:PRINT:PRINT +20 DIM SS(9) +50 INPUT"DO YOU WANT 'X' OR 'O'";C$ +55 IF C$="X"THEN 475 +60 P$="O":Q$="X" +100 G=-1:H=1:IF SS(5)<>0 THEN 103 +102 SS(5)=-1:GOTO 195 +103 IF SS(5)<>1 THEN 106 +104 IF SS(1)<>0 THEN 110 +105 SS(1)=-1:GOTO 195 +106 IF SS(2)=1 AND SS(1)=0 THEN 181 +107 IF SS(4)=1 AND SS(1)=0 THEN 181 +108 IF SS(6)=1 AND SS(9)=0 THEN 189 +109 IF SS(8)=1 AND SS(9)=0 THEN 189 +110 IF G=1 THEN 112 +111 GOTO 118 +112 J=3*INT((M-1)/3)+1 +113 IF 3*INT((M-1)/3)+1=M THEN K=1 +114 IF 3*INT((M-1)/3)+2=M THEN K=2 +115 IF 3*INT((M-1)/3)+3=M THEN K=3 +116 GOTO 120 +118 FOR J=1 TO 7 STEP 3:FOR K=1 TO 3 +120 IF SS(J)<>G THEN 130 +122 IF SS(J+2)<>G THEN 135 +126 IF SS(J+1)<>0 THEN 150 +128 SS(J+1)=-1:GOTO 195 +130 IF SS(J)=H THEN 150 +131 IF SS(J+2)<>G THEN 150 +132 IF SS(J+1)<>G THEN 150 +133 SS(J)=-1:GOTO 195 +135 IF SS(J+2)<>0 THEN 150 +136 IF SS(J+1)<>G THEN 150 +138 SS(J+2)=-1:GOTO 195 +150 IF SS(K)<>G THEN 160 +152 IF SS(K+6)<>G THEN 165 +156 IF SS(K+3)<>0 THEN 170 +158 SS(K+3)=-1:GOTO 195 +160 IF SS(K)=H THEN 170 +161 IF SS(K+6)<>G THEN 170 +162 IF SS(K+3)<>G THEN 170 +163 SS(K)=-1:GOTO 195 +165 IF SS(K+6)<>0 THEN 170 +166 IF SS(K+3)<>G THEN 170 +168 SS(K+6)=-1:GOTO 195 +170 GOTO 450 +171 IF SS(3)=G AND SS(7)=0 THEN 187 +172 IF SS(9)=G AND SS(1)=0 THEN 181 +173 IF SS(7)=G AND SS(3)=0 THEN 183 +174 IF SS(9)=0 AND SS(1)=G THEN 189 +175 IF G=-1 THEN G=1:H=-1:GOTO 110 +176 IF SS(9)=1 AND SS(3)=0 THEN 182 +177 FOR I=2 TO 9:IF SS(I)<>0 THEN 179 +178 SS(I)=-1:GOTO 195 +179 NEXT I +181 SS(1)=-1:GOTO 195 +182 IF SS(1)=1 THEN 177 +183 SS(3)=-1:GOTO 195 +187 SS(7)=-1:GOTO 195 +189 SS(9)=-1 +195 PRINT:PRINT"THE COMPUTER MOVES TO..." +202 GOSUB 1000 +205 GOTO 500 +450 IF G=1 THEN 465 +455 IF J=7 AND K=3 THEN 465 +460 NEXT K:NEXT J +465 IF SS(5)=G THEN 171 +467 GOTO 175 +475 P$="X":Q$="O" +500 PRINT:INPUT"WHERE DO YOU MOVE";M +502 IF M=0 THEN PRINT"THANKS FOR THE GAME.":GOTO 2000 +503 IF M>9 THEN 506 +505 IF SS(M)=0 THEN 510 +506 PRINT"THAT SQUARE IS OCCUPIED.":PRINT:PRINT:GOTO 500 +510 G=1:SS(M)=1 +520 GOSUB 1000 +530 GOTO 100 +1000 PRINT:FOR I=1 TO 9:PRINT" ";:IF SS(I)<>-1 THEN 1014 +1012 PRINT Q$;" ";:GOTO 1020 +1014 IF SS(I)<>0 THEN 1018 +1016 PRINT" ";:GOTO 1020 +1018 PRINT P$;" "; +1020 IF I<>3 AND I<>6 THEN 1050 +1030 PRINT:PRINT"---+---+---" +1040 GOTO 1080 +1050 IF I=9 THEN 1080 +1060 PRINT"!"; +1080 NEXT I:PRINT:PRINT:PRINT +1095 FOR I=1 TO 7 STEP 3 +1100 IF SS(I)<>SS(I+1)THEN 1115 +1105 IF SS(I)<>SS(I+2)THEN 1115 +1110 IF SS(I)=-1 THEN 1350 +1112 IF SS(I)=1 THEN 1200 +1115 NEXT I:FOR I=1 TO 3:IF SS(I)<>SS(I+3)THEN 1150 +1130 IF SS(I)<>SS(I+6)THEN 1150 +1135 IF SS(I)=-1 THEN 1350 +1137 IF SS(I)=1 THEN 1200 +1150 NEXT I:FOR I=1 TO 9:IF SS(I)=0 THEN 1155 +1152 NEXT I:GOTO 1400 +1155 IF SS(5)<>G THEN 1170 +1160 IF SS(1)=G AND SS(9)=G THEN 1180 +1165 IF SS(3)=G AND SS(7)=G THEN 1180 +1170 RETURN +1180 IF G=-1 THEN 1350 +1200 PRINT"YOU BEAT ME!! GOOD GAME.":GOTO 2000 +1350 PRINT"I WIN, TURKEY!!!":GOTO 2000 +1400 PRINT"IT'S A DRAW. THANK YOU." +2000 END diff --git a/GAMES/towers.bas b/GAMES/towers.bas new file mode 100644 index 0000000..d2445af --- /dev/null +++ b/GAMES/towers.bas @@ -0,0 +1,128 @@ +10 PRINT TAB(33);"TOWERS" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +90 PRINT +100 REM*** INITIALIZE +110 DIM TT(7,3) +120 E=0 +130 FOR D=1 TO 7 +140 FOR N=1 TO 3 +150 TT(D,N)=0 +160 NEXT N +170 NEXT D +180 PRINT "TOWERS OF HANOI PUZZLE.": PRINT +200 PRINT "YOU MUST TRANSFER THE DISKS FROM THE LEFT TO THE RIGHT" +205 PRINT "TOWER, ONE AT A TIME, NEVER PUTTING A LARGER DISK ON A" +210 PRINT "SMALLER DISK.": PRINT +215 INPUT "HOW MANY DISKS DO YOU WANT TO MOVE (7 IS MAX)";S +220 PRINT +230 M=0 +240 FOR Q=1 TO 7 +250 IF Q=S THEN 350 +260 NEXT Q +270 E=E+1 +280 IF E>2 THEN 310 +290 PRINT "SORRY, BUT I CAN'T DO THAT JOB FOR YOU.": GOTO 215 +310 PRINT "ALL RIGHT, WISE GUY, IF YOU CAN'T PLAY THE GAME RIGHT, I'LL" +320 PRINT "JUST TAKE MY PUZZLE AND GO HOME. SO LONG.": STOP +340 REM *** STORE DISKS FROM SMALLEST TO LARGEST +350 PRINT "IN THIS PROGRAM, WE SHALL REFER TO DISKS BY NUMERICAL CODE." +355 PRINT "3 WILL REPRESENT THE SMALLEST DISK, 5 THE NEXT SIZE," +360 PRINT "7 THE NEXT, AND SO ON, UP TO 15. IF YOU DO THE PUZZLE WITH" +365 PRINT "2 DISKS, THEIR CODE NAMES WOULD BE 13 AND 15. WITH 3 DISKS" +370 PRINT "THE CODE NAMES WOULD BE 11, 13 AND 15, ETC. THE NEEDLES" +375 PRINT "ARE NUMBERED FROM LEFT TO RIGHT, 1 TO 3. WE WILL" +380 PRINT "START WITH THE DISKS ON NEEDLE 1, AND ATTEMPT TO MOVE THEM" +385 PRINT "TO NEEDLE 3." +390 PRINT: PRINT "GOOD LUCK!": PRINT +400 Y=7: D=15 +420 FOR X=S TO 1 STEP -1 +430 TT(Y,1)=D: D=D-2: Y=Y-1 +460 NEXT X +470 GOSUB 1230 +480 PRINT "WHICH DISK WOULD YOU LIKE TO MOVE";:E=0 +500 INPUT D +510 IF (D-3)*(D-5)*(D-7)*(D-9)*(D-11)*(D-13)*(D-15)=0 THEN 580 +520 PRINT "ILLEGAL ENTRY... YOU MAY ONLY TYPE 3,5,7,9,11,13, OR 15." +530 E=E+1: IF E>1 THEN 560 +550 GOTO 500 +560 PRINT "STOP WASTING MY TIME. GO BOTHER SOMEONE ELSE.": STOP +580 REM *** CHECK IF REQUESTED DISK IS BELOW ANOTHER +590 FOR R=1 TO 7 +600 FOR C=1 TO 3 +610 IF TT(R,C)=D THEN 640 +620 NEXT C: NEXT R +630 R=7:C=3 +640 FOR Q=R TO 1 STEP -1 +645 IF TT(Q,C)=0 THEN 660 +650 IF TT(Q,C)1 THEN 780 +750 PRINT "I'LL ASSUME YOU HIT THE WRONG KEY THIS TIME. BUT WATCH IT," +760 PRINT "I ONLY ALLOW ONE MISTAKE.": GOTO 705 +780 PRINT "I TRIED TO WARN YOU, BUT YOU WOULDN'T LISTEN." +790 PRINT "BYE BYE, BIG SHOT.":STOP +800 FOR R=1 TO 7 +810 IF TT(R,N)<>0 THEN 840 +820 NEXT R +830 GOTO 880 +835 REM *** CHECK IF DISK TO BE PLACED ON A LARGER ONE +840 IF D0 THEN 970 +950 NEXT U +960 U=7: GOTO 980 +965 REM *** MOVE DISK AND SET OLD LOCATION TO 0 +970 U=U-1 +980 TT(U,N)=TT(V,W): TT(V,W)=0 +995 REM *** PRINT OUT CURRENT STATUS +1000 GOSUB 1230 +1018 REM *** CHECK IF DONE +1020 M=M+1 +1030 FOR R=1 TO 7: FOR C=1 TO 2 +1050 IF TT(R,C)<>0 THEN 1090 +1060 NEXT C: NEXT R +1070 R=7:C=2 +1080 GOTO 1120 +1090 IF M<=128 THEN 480 +1100 PRINT "SORRY, BUT I HAVE ORDERS TO STOP IF YOU MAKE MORE THAN" +1110 PRINT "128 MOVES.": STOP +1120 IF M<>2^S-1 THEN 1140 +1130 PRINT:PRINT "CONGRATULATIONS!!":PRINT +1140 PRINT "YOU HAVE PERFORMED THE TASK IN";M;"MOVES." +1150 PRINT: PRINT "TRY AGAIN (YES OR NO)";: INPUT A$ +1160 IF A$="NO" THEN 1390 +1170 IF A$="YES" THEN 90 +1180 PRINT: PRINT "'YES' OR 'NO' PLEASE";: INPUT A$: GOTO 1160 +1230 REM *** PRINT SUBROUTINE +1240 FOR K=1 TO 7 +1250 Z=10 +1260 FOR J=1 TO 3 +1270 IF TT(K,J)=0 THEN 1330 +1280 PRINT TAB(Z-INTT(TT(K,J)/2)); +1290 FOR V=1 TO TT(K,J) +1300 PRINT "*"; +1310 NEXT V +1320 GOTO 1340 +1330 PRINT TAB(Z);"*"; +1340 Z=Z+21 +1350 NEXT J +1360 PRINT +1370 NEXT K +1380 RETURN +1390 PRINT: PRINT "THANKS FOR THE GAME!": PRINT: END diff --git a/GAMES/train.bas b/GAMES/train.bas new file mode 100644 index 0000000..b981761 --- /dev/null +++ b/GAMES/train.bas @@ -0,0 +1,24 @@ +1 PRINT TAB(33);"TRAIN" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT: PRINT: PRINT +4 PRINT "TIME - SPEED DISTANCE EXERCISE": PRINT +10 C=INT(25*RND(1))+40 +15 D=INT(15*RND(1))+5 +20 T=INT(19*RND(1))+20 +25 PRINT " A CAR TRAVELING";C;"MPH CAN MAKE A CERTAIN TRIP IN" +30 PRINT D;"HOURS LESS THAN A TRAIN TRAVELING AT";T;"MPH." +35 PRINT "HOW LONG DOES THE TRIP TAKE BY CAR"; +40 INPUT A +45 V=D*T/(C-T) +50 E=INT(ABS((V-A)*100/A)+.5) +55 IF E>5 THEN 70 +60 PRINT "GOOD! ANSWER WITHIN";E;"PERCENT." +65 GOTO 80 +70 PRINT "SORRY. YOU WERE OFF BY";E;"PERCENT." +80 PRINT "CORRECT ANSWER IS";V;"HOURS." +90 PRINT +95 PRINT "ANOTHER PROBLEM (YES OR NO)"; +100 INPUT A$ +105 PRINT +110 IF A$="YES" THEN 10 +999 END diff --git a/GAMES/trap.bas b/GAMES/trap.bas new file mode 100644 index 0000000..2d5624b --- /dev/null +++ b/GAMES/trap.bas @@ -0,0 +1,49 @@ +1 PRINT TAB(34);"TRAP" +2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +3 PRINT:PRINT:PRINT +10 G=6 +20 N=100 +30 REM-TRAP +40 REM-STEVE ULLMAN, 8-1-72 +50 PRINT "INSTRUCTIONS"; +60 INPUT Z$ +70 IF LEFT$(Z$,1)<>"Y" THEN 180 +80 PRINT "I AM THINKING OF A NUMBER BETWEEN 1 AND";N +90 PRINT "TRY TO GUESS MY NUMBER. ON EACH GUESS," +100 PRINT "YOU ARE TO ENTER 2 NUMBERS, TRYING TO TRAP" +110 PRINT "MY NUMBER BETWEEN THE TWO NUMBERS. I WILL" +120 PRINT "TELL YOU IF YOU HAVE TRAPPED MY NUMBER, IF MY" +130 PRINT "NUMBER IS LARGER THAN YOUR TWO NUMBERS, OR IF" +140 PRINT "MY NUMBER IS SMALLER THAN YOUR TWO NUMBERS." +150 PRINT "IF YOU WANT TO GUESS ONE SINGLE NUMBER, TYPE" +160 PRINT "YOUR GUESS FOR BOTH YOUR TRAP NUMBERS." +170 PRINT "YOU GET";G;"GUESSES TO GET MY NUMBER." +180 X=INT(N*RND(1))+1 +190 FOR Q=1 TO G +200 PRINT +210 PRINT "GUESS #";Q; +220 INPUT A,B +230 IF A=B AND X=A THEN 400 +240 IF A <= B THEN 260 +250 GOSUB 360 +260 IF A <= X AND X <= B THEN 320 +270 IF XL(J) THEN 340 +320 REM +330 GOTO 290 +340 NEXT K +350 NEXT J +360 P=P+1 +370 M1=L(P) +380 P=P+1 +390 M2=L(P) +400 PRINT +420 PRINT "YOU: ";A$(M1),"COMPUTER: ";A$(M2) +430 N1=INT((M1-.5)/4) +440 N2=INT((M2-.5)/4) +450 IF N1>=N2 THEN 490 +460 A1=A1+1 +470 PRINT "THE COMPUTER WINS!!! YOU HAVE";B1;"AND THE COMPUTER HAS";A1 +480 GOTO 540 +490 IF N1=N2 THEN 530 +500 B1=B1+1 +510 PRINT "YOU WIN. YOU HAVE";B1;"AND THE COMPUTER HAS";A1 +520 GOTO 540 +530 PRINT "TIE. NO SCORE CHANGE." +540 IF L(P+1)=0 THEN 610 +550 PRINT "DO YOU WANT TO CONTINUE"; +560 INPUT V$ +570 IF V$="YES" THEN 360 +580 IF V$="NO" THEN 650 +590 PRINT "YES OR NO, PLEASE. "; +600 GOTO 540 +610 PRINT +620 PRINT +630 PRINT "WE HAVE RUN OUT OF CARDS. FINAL SCORE: YOU: ";B1; +640 PRINT " THE COMPUTER: ";A1:PRINT +650 PRINT "THANKS FOR PLAYING. IT WAS FUN." +655 PRINT +660 DATA "S-2","H-2","C-2","D-2","S-3","H-3","C-3","D-3" +670 DATA "S-4","H-4","C-4","D-4","S-5","H-5","C-5","D-5" +680 DATA "S-6","H-6","C-6","D-6","S-7","H-7","C-7","D-7" +690 DATA "S-8","H-8","C-8","D-8","S-9","H-9","C-9","D-9" +700 DATA "S-10","H-10","C-10","D-10","S-J","H-J","C-J","D-J" +710 DATA "S-Q","H-Q","C-Q","D-Q","S-K","H-K","C-K","D-K" +720 DATA "S-A","H-A","C-A","D-A" +999 END diff --git a/GAMES/weekday.bas b/GAMES/weekday.bas new file mode 100644 index 0000000..77efcae --- /dev/null +++ b/GAMES/weekday.bas @@ -0,0 +1,150 @@ +10 PRINT TAB(32);"WEEKDAY" +20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +30 PRINT:PRINT:PRINT +100 PRINT "WEEKDAY IS A COMPUTER DEMONSTRATION THAT" +110 PRINT"GIVES FACTS ABOUT A DATE OF INTEREST TO YOU." +120 PRINT +130 PRINT "ENTER TODAY'S DATE IN THE FORM: 3,24,1979 "; +140 INPUT M1,D1,Y1 +150 REM THIS PROGRAM DETERMINES THE DAY OF THE WEEK +160 REM FOR A DATE AFTER 1582 +170 DEF FNA(A)=INT(A/4) +180 DIM T(12) +190 DEF FNB(A)=INT(A/7) +200 REM SPACE OUTPUT AND READ IN INITIAL VALUES FOR MONTHS. +210 FOR I= 1 TO 12 +220 READ T(I) +230 NEXT I +240 PRINT"ENTER DAY OF BIRTH (OR OTHER DAY OF INTEREST)"; +250 INPUT M,D,Y +260 PRINT +270 LET I1 = INT((Y-1500)/100) +280 REM TEST FOR DATE BEFORE CURRENT CALENDAR. +290 IF Y-1582 <0 THEN 1300 +300 LET A = I1*5+(I1+3)/4 +310 LET I2=INT(A-FNB(A)*7) +320 LET Y2=INT(Y/100) +330 LET Y3 =INT(Y-Y2*100) +340 LET A =Y3/4+Y3+D+T(M)+I2 +350 LET B=INT(A-FNB(A)*7)+1 +360 IF M > 2 THEN 470 +370 IF Y3 = 0 THEN 440 +380 LET T1=INT(Y-FNA(Y)*4) +390 IF T1 <> 0 THEN 470 +400 IF B<>0 THEN 420 +410 LET B=6 +420 LET B = B-1 +430 GOTO 470 +440 LET A = I1-1 +450 LET T1=INT(A-FNA(A)*4) +460 IF T1 = 0 THEN 400 +470 IF B <>0 THEN 490 +480 LET B = 7 +490 IF (Y1*12+M1)*31+D1<(Y*12+M)*31+D THEN 550 +500 IF (Y1*12+M1)*31+D1=(Y*12+M)*31+D THEN 530 +510 PRINT M;"/";D;"/";Y;" WAS A "; +520 GOTO 570 +530 PRINT M;"/";D;"/";Y;" IS A "; +540 GOTO 570 +550 PRINT M;"/";D;"/";Y;" WILL BE A "; +560 REM PRINT THE DAY OF THE WEEK THE DATE FALLS ON. +570 IF B <>1 THEN 590 +580 PRINT "SUNDAY." +590 IF B<>2 THEN 610 +600 PRINT "MONDAY." +610 IF B<>3 THEN 630 +620 PRINT "TUESDAY." +630 IF B<>4 THEN 650 +640 PRINT "WEDNESDAY." +650 IF B<>5 THEN 670 +660 PRINT "THURSDAY." +670 IF B<>6 THEN 690 +680 GOTO 1250 +690 IF B<>7 THEN 710 +700 PRINT "SATURDAY." +710 IF (Y1*12+M1)*31+D1=(Y*12+M)*31+D THEN 1120 +720 LET I5=Y1-Y +730 PRINT +740 LET I6=M1-M +750 LET I7=D1-D +760 IF I7>=0 THEN 790 +770 LET I6= I6-1 +780 LET I7=I7+30 +790 IF I6>=0 THEN 820 +800 LET I5=I5-1 +810 LET I6=I6+12 +820 IF I5<0 THEN 1310 +830 IF I7 <> 0 THEN 850 +835 IF I6 <> 0 THEN 850 +840 PRINT"***HAPPY BIRTHDAY***" +850 PRINT " "," ","YEARS","MONTHS","DAYS" +855 PRINT " "," ","-----","------","----" +860 PRINT "YOUR AGE (IF BIRTHDATE) ",I5,I6,I7 +870 LET A8 = (I5*365)+(I6*30)+I7+INT(I6/2) +880 LET K5 = I5 +890 LET K6 = I6 +900 LET K7 = I7 +910 REM CALCULATE RETIREMENT DATE. +920 LET E = Y+65 +930 REM CALCULATE TIME SPENT IN THE FOLLOWING FUNCTIONS. +940 LET F = .35 +950 PRINT "YOU HAVE SLEPT ", +960 GOSUB 1370 +970 LET F = .17 +980 PRINT "YOU HAVE EATEN ", +990 GOSUB 1370 +1000 LET F = .23 +1010 IF K5 > 3 THEN 1040 +1020 PRINT "YOU HAVE PLAYED", +1030 GOTO 1080 +1040 IF K5 > 9 THEN 1070 +1050 PRINT "YOU HAVE PLAYED/STUDIED", +1060 GOTO 1080 +1070 PRINT "YOU HAVE WORKED/PLAYED", +1080 GOSUB 1370 +1085 GOTO 1530 +1090 PRINT "YOU HAVE RELAXED ",K5,K6,K7 +1100 PRINT +1110 PRINT TAB(16);"*** YOU MAY RETIRE IN";E;" ***" +1120 PRINT +1140 PRINT +1200 PRINT +1210 PRINT +1220 PRINT +1230 PRINT +1240 END +1250 IF D=13 THEN 1280 +1260 PRINT "FRIDAY." +1270 GOTO 710 +1280 PRINT "FRIDAY THE THIRTEENTH---BEWARE!" +1290 GOTO 710 +1300 PRINT "NOT PREPARED TO GIVE DAY OF WEEK PRIOR TO MDLXXXII. " +1310 GOTO 1140 +1320 REM TABLE OF VALUES FOR THE MONTHS TO BE USED IN CALCULATIONS. +1330 DATA 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 +1340 REM THIS IS THE CURRENT DATE USED IN THE CALCULATIONS. +1350 REM THIS IS THE DATE TO BE CALCULATED ON. +1360 REM CALCULATE TIME IN YEARS, MONTHS, AND DAYS +1370 LET K1=INT(F*A8) +1380 LET I5 = INT(K1/365) +1390 LET K1 = K1- (I5*365) +1400 LET I6 = INT(K1/30) +1410 LET I7 = K1 -(I6*30) +1420 LET K5 = K5-I5 +1430 LET K6 =K6-I6 +1440 LET K7 = K7-I7 +1450 IF K7>=0 THEN 1480 +1460 LET K7=K7+30 +1470 LET K6=K6-1 +1480 IF K6>0 THEN 1510 +1490 LET K6=K6+12 +1500 LET K5=K5-1 +1510 PRINT I5,I6,I7 +1520 RETURN +1530 IF K6=12 THEN 1550 +1540 GOTO 1090 +1550 LET K5=K5+1 +1560 LET K6=0 +1570 GOTO 1090 +1580 REM +1590 END diff --git a/GAMES/word.bas b/GAMES/word.bas new file mode 100644 index 0000000..8435310 --- /dev/null +++ b/GAMES/word.bas @@ -0,0 +1,65 @@ +2 PRINT TAB(33);"WORD" +3 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +4 PRINT: PRINT: PRINT +5 DIM S(7),A(7),L(7),D(7),P(7) +10 PRINT "I AM THINKING OF A WORD -- YOU GUESS IT. I WILL GIVE YOU" +15 PRINT "CLUES TO HELP YOU GET IT. GOOD LUCK!!": PRINT: PRINT +20 REM +30 PRINT: PRINT: PRINT "YOU ARE STARTING A NEW GAME..." +35 RESTORE +40 READ N +50 C=INT(RND(1)*N+1) +60 FOR I=1 TO C +70 READ S$ +80 NEXT I +90 G=0 +95 S(0)=LEN(S$) +100 FOR I=1 TO LEN(S$): S(I)=ASC(MID$(S$,I,1)): NEXT I +110 FOR I=1 TO 5 +120 A(I)=45 +130 NEXT I +140 FOR J=1 TO 5 +144 P(J)=0 +146 NEXT J +150 PRINT "GUESS A FIVE LETTER WORD"; +160 INPUT L$ +170 G=G+1 +172 IF S$=G$ THEN 500 +173 FOR I=1 TO 7: P(I)=0: NEXT I +175 L(0)=LEN(L$) +180 FOR I=1 TO LEN(L$): L(I)=ASC(MID$(L$,I,1)): NEXT I +190 IF L(1)=63 THEN 300 +200 IF L(0)<>5 THEN 400 +205 M=0: Q=1 +210 FOR I=1 TO 5 +220 FOR J=1 TO 5 +230 IF S(I)<>L(J) THEN 260 +231 P(Q)=L(J) +232 Q=Q+1 +233 IF I<>J THEN 250 +240 A(J)=L(J) +250 M=M+1 +260 NEXT J +265 NEXT I +270 A(0)=5 +272 P(0)=M +275 A$="": FOR I=1 TO A(0): A$=A$+CHR$(A(I)): NEXT I +277 P$="": FOR I=1 TO P(0): P$=P$+CHR$(P(I)): NEXT I +280 PRINT "THERE WERE";M;"MATCHES AND THE COMMON LETTERS WERE...";P$ +285 PRINT "FROM THE EXACT LETTER MATCHES, YOU KNOW................";A$ +286 IF A$=S$ THEN 500 +287 IF M>1 THEN 289 +288 PRINT: PRINT "IF YOU GIVE UP, TYPE '?' FOR YOUR NEXT GUESS." +289 PRINT +290 GOTO 150 +300 S$="": FOR I=1 TO 7: S$=S$+CHR$(S(I)): NEXT I +310 PRINT "THE SECRET WORD IS ";S$: PRINT +320 GOTO 30 +400 PRINT "YOU MUST GUESS A 5 LETTER WORD. START AGAIN." +410 PRINT: G=G-1: GOTO 150 +500 PRINT "YOU HAVE GUESSED THE WORD. IT TOOK";G;"GUESSES!": PRINT +510 INPUT "WANT TO PLAY AGAIN";Q$ +520 IF Q$="YES" THEN 30 +530 DATA 12,"DINKY","SMOKE","WATER","GRASS","TRAIN","MIGHT","FIRST" +540 DATA "CANDY","CHAMP","WOULD","CLUMP","DOPEY" +999 END diff --git a/INSTALL b/INSTALL index 0fa3410..80fe6be 100644 --- a/INSTALL +++ b/INSTALL @@ -6,153 +6,70 @@ Some Notes on Installation of the Bywater BASIC Interpreter: To use the default configuration (which is reasonable for most situations): On Unix, type "configure; make". - On MS-DOS using QuickC, type "nmake -f makefile.qcl". + On Android using CCTools, type "ash ./xxc.sh". + If you are using GCC with the default libraries on a flavor of Unix, + then perhaps "gcc -DHAVE_ISNAN -o bwbasic -lm -ansi bw*.c" + On MSDOS, add all the bw*.c file to a new project. You can skip the rest of this file unless you want to customize the BASIC dialect that is supported, or something goes wrong in the above commands. + 1. Compiler Requirements - Although earlier versions of bwBASIC would compile only with - ANSI C compilers, versions 2.10 and higher can be compiled - with "stock" C compilers, i.e., compilers that comply with - the older Kernighan and Ritchie C standard. - - Section I-B of bwbasic.h allows you to specify some compiler - features. If you have an ANSI C compiler, you needn't worry - with this. For stock C compilers, the default configuration - presumes that your compiler supports signal() and raise() - with the signal.h header, supports setjmp() and longjmp() - with the setjmp.h header, and has a separate string.h - header. If your compiler does not have these features - and the related header files, you can indicate this in - section I-B by setting appropriate flags to FALSE. + ANSI C. + - 2. Configuration of header files You may need to examine file "bwbasic.h" to make important changes for specific hardware and compiler configurations. - You may also need to change "bwx_tty.h" if you are using the - TTY implementation or "bwx_iqc.h" if you are using the version - for PCs with Microsoft QuickC (see below on "implementations"). - If you want to redefine messages or even the BASIC command - names, you will need to edit "bwb_mes.h". 3. Makefiles - Several makefiles are provided: "makefile.qcl" will compile - the program utilizing the Microsoft QuickC (tm) line-oriented - compiler on DOS-based p.c.'s, and "makefile" will compile the - program on Unix-based computers utilizing either a stock C - compiler or Gnu C++. I have also compiled the program utilizing - Borland's Turbo C++ (tm) on DOS-based machines, although I have - not supplied a makefile for Turbo C++. + Several compiler-specific makefiles are provided AS-IS, + and have not been tested with version 3.00. + + "makefile" will compile the + program on Unix-based computers. + + "makefile.qcl" is for the Microsoft QuickC (tm). - If you try the "IQC" implementation, you will need to alter - makefile.qcl to include bwx_iqc.c (and bqx_iqc.obj) instead - of bwx_tty.*. + I have also compiled the program utilizing + Borland's Turbo C++ (tm) and Pacific C (tm) + on DOS-based machines. 4. Implementations - The present status of bwBASIC allows two major implementations - controlled by the IMP_TTY and IMP_IQC flags in bwbasic.h. - IMP_TTY is the base implementation and presumes a simple + TTY is the base implementation and presumes a simple TTY-style environment, with all keyboard and screen input - and output directed through stdin and stdout. If IMP_TTY is - defined as TRUE, then the file bwx_tty.h will be included, - and a makefile should include compilation of bwx_tty.c. - IMP_IQC is a somewhat more elaborate implementation for - the IBM PC and compatible microcomputers utilizing the - Microsoft QuickC compiler. This allows some more elaborate - commands (CLS and LOCATE) and the INKEY$ function, and - allows greater control over output. If IMP_IQC is defined - as TRUE in bwbasic.h, then bwx_iqc.h will be included and - bwx_iqc.c should be compiled in the makefile. - - Only one of the flags IMP_TTY or IMP_IQC should be set - to TRUE. - + and output directed through stdin and stdout. All commands, + functions and operators should be available in the TTY + implementation, even when they do nothing. For example, + CLS, COLOR and LOCATE do nothing when OPTION TERMINAL NONE + is specified. This allows exising classic BASIC applications + to execute. -5. Flags Controlling Groups of Commands and Functions - - There are a number of flags which control groups of commands - and functions to be implemented. - - (core) Commands and Functions in any implementation of - bwBASIC; these are the ANSI Minimal BASIC core - - INTERACTIVE Commands supporting the interactive programming - environment - - COMMON_CMDS Commands beyond ANSI Minimal BASIC which are common - to Full ANSI BASIC and Microsoft BASICs - - COMMON_FUNCS Functions beyond the ANSI Mimimal BASIC core, but - common to both ANSI Full BASIC and Microsoft-style - BASIC varieties - - UNIX_CMDS Commands which require Unix-style directory and - environment routines not specified in ANSI C - - STRUCT_CMDS Commands related to structured programming; all - of these are part of the Full ANSI BASIC standard - - ANSI_FUNCS Functions unique to ANSI Full BASIC - - MS_CMDS Commands unique to Microsoft BASICs - - MS_FUNCS Functions unique to Microsoft BASICs - - -6. Configurations - - The file bwbasic.h includes a number of configuration options - that will automatically select groups of commands and functions - according to predetermined patterns. These are: - - CFG_ANSIMINIMAL Conforms to ANSI Minimal BASIC standard X3.60-1978. - - CFG_COMMON Small implementation with commands and functions - common to GWBASIC (tm) and ANSI full BASIC. - - CFG_MSTYPE Configuration similar to Microsoft line-oriented - BASICs. - - CFG_ANSIFULL Conforms to ANSI Full BASIC standard X3.113-1987 - (subset at present). - - CFG_CUSTOM Custom Configuration specified by user. - - Only one of these flags should be set to TRUE. - - -7. Adding Commands and Functions - - In order to add a new command to bwBASIC, follow the following - procedure: + +5. Adding Commands and Functions - (a) Write the command body using function bwb_null() in bwb_cmd.c - as a template. The command-body function (in C) must receive a - pointer to a bwb_line structure, and must pass on a pointer to - a bwb_line structure. The preferred method for returning from - a command-body function is: return bwb_zline( l ); this will - discriminate between MULTISEG_LINES programs which advance to - the next segment and those which advance to the next line. + Follow the rules in "Implementation rules for functions and commands"; + the majority of BASIC commands are actually intrinsic functions. + Adding a new command is more work than adding a new function. - (b) Add prototypes for the command-body function in bwbasic.h; - you'll need one prototype with arguments in the ANSI_C section - and one prototype without arguments in the non-ANSI_C section. + In order to add a new command to bwBASIC: - (c) Add the command to the command table in bwb_tbl.c in the - group you have selected for it. + Search for C_WRITE and bwb_WRITE, + and add your command's eqivalent information in the same places. + The last command's unique number should equal NUM_COMMANDS. - (d) Increment the number of commands for the group in which - you have placed your command. + Adding a new function is easier: + + Search for F_ABS_X_N, + and add your function's equivalent information in the same places. + The last function's unique number should equal NUM_FUNCTIONS. + - The procedure for adding a new function is parallel to this, except that - you should use fnc_null() in bwb_fnc.c as the template, and the - function name must be added to the function table in bwb_tbl.c. diff --git a/M003.BAS b/M003.BAS new file mode 100644 index 0000000..6128e1f --- /dev/null +++ b/M003.BAS @@ -0,0 +1,78 @@ +100 REM PURPOSE: DISPLAY/VERIFY THE IMPLEMENTATION-DEFINED VALUES +110 REM AUTHOR: HOWARD WULF, AF5NE +120 REM DATE: 2015-01-25 +130 REM ------------------------------------------------------- +140 PRINT "THIS PROGRAM DISPLAYS THE IMPLEMENTATION-DEFINED" +150 PRINT "RANGES FOR ALL BASIC VARIABLE TYPES." +160 PRINT "THERE SHOULD BE NO ERROR MESSAGES." +170 PRINT "MAXLVL=";MAXLVL +200 PRINT "MAXNUM=";MAXNUM +210 PRINT "MAXDBL=";MAXDBL +220 PRINT "MAXSNG=";MAXSNG +230 PRINT "MAXCUR=";MAXCUR +240 PRINT "MAXLNG=";MAXLNG +250 PRINT "MAXINT=";MAXINT +260 PRINT "MAXBYT=";MAXBYT +270 PRINT "MAXDEV=";MAXDEV +280 PRINT "MAXLEN=";MAXLEN("") +300 PRINT "MINNUM=";MINNUM +310 PRINT "MINDBL=";MINDBL +320 PRINT "MINSNG=";MINSNG +330 PRINT "MINCUR=";MINCUR +340 PRINT "MINLNG=";MINLNG +350 PRINT "MININT=";MININT +360 PRINT "MINBYT=";MINBYT +370 PRINT "MINDEV=";MINDEV +380 PRINT "MINLEN=";0 +400 REM ------------------------------------------------ +410 REM VERIFY THE MAX... RANGES ARE VALID +420 IF MAXNUM < MAXDBL THEN +430 PRINT "*** ERROR MAXNUM < MAXDBL ***" +440 END IF +450 IF MAXDBL < MAXSNG THEN +460 PRINT "*** ERROR MAXDBL < MAXSNG ***" +470 END IF +480 IF MAXSNG < MAXCUR THEN +490 PRINT "*** ERROR MAXSNG < MAXCUR ***" +500 END IF +510 IF MAXCUR < MAXLNG THEN +520 PRINT "*** ERROR MAXCUR < MAXSNG ***" +530 END IF +540 IF MAXLNG < MAXINT THEN +550 PRINT "*** ERROR MAXLNG < MAXINT ***" +560 END IF +570 IF MAXINT < MAXBYT THEN +580 PRINT "*** ERROR MAXINT < MAXBYT ***" +590 END IF +600 IF MAXBYT < MAXDEV THEN +610 PRINT "*** ERROR MAXBYT < MAXDEV ***" +620 END IF +630 IF MAXINT < MAXLEN("") THEN +640 PRINT "*** ERROR MAXINT < MAXLEN ***" +650 END IF +700 REM -------------------------------------------- +710 REM VERIFY THE MIN... RANGES +720 IF MINDBL < MINNUM THEN +730 PRINT "*** ERROR MINDBL < MINNUM ***" +740 END IF +750 IF MINSNG < MINDBL THEN +760 PRINT "*** ERROR MINSNG < MINDBL ***" +770 END IF +780 IF MINCUR < MINSNG THEN +790 PRINT "*** ERROR MINCUR < MINSNG ***" +800 END IF +810 IF MINLNG < MINCUR THEN +820 PRINT "*** ERROR MINLNG < MINCUR ***" +840 END IF +850 IF MININT < MINLNG THEN +860 PRINT "*** ERROR MININT < MINLNG ***" +870 END IF +880 IF MINBYT < MININT THEN +890 PRINT "*** ERROR MINBYT < MININT ***" +900 END IF +910 IF MINDEV < MINBYT THEN +920 PRINT "*** ERROR MINDEV < MINBYT ***" +930 END IF +940 REM MINLEN("") IS 0 +950 PRINT "IF NO ERROR MESSAGES, THEN *** TEST PASSED ***" +999 END diff --git a/MOD4BASC.BAS b/MOD4BASC.BAS new file mode 100644 index 0000000..e99ed5b --- /dev/null +++ b/MOD4BASC.BAS @@ -0,0 +1,108 @@ +2 ' Model 4 BASIC syntax converter +3 ' This program will convert other BASIC +4 ' programs to be syntactically correct +5 ' for the Model 4 BASIC. +6 ' +7 ' Written by: Lee Becker +8 ' Phone no. : 517-349-7604 +9 ' +10 CLS:CLEAR 20000:DIM A$(1000) ' ON ERROR GOTO 900 +20 PRINT @ 500,"What is the file's name to convert?" +21 PRINT @ 590,; +22 LINE INPUT C$ +30 OPEN "I",1,C$ +40 KOUNT=1 +50 IF EOF(1) THEN 80 +60 LINE INPUT #1,L$:A$(KOUNT)=L$ +70 KOUNT=KOUNT+1:GOTO 50 +80 CLOSE 1 +90 ' +100 ' +110 CLS +120 PRINT @ 420,"There are";KOUNT;"total lines in the file.":PRINT TAB(20);"It will take approximately";:PRINT USING "##.#";KOUNT*3.1/60;:PRINT" minutes.":PRINT @ 670,"STARTING NOW" +130 FOR CNT=1 TO KOUNT:Y=1:Z=1:W=1 +135 V=INSTR(1,A$(CNT),"DATA"):IF V>0 AND V<8 THEN A$(CNT)=MID$(A$(CNT),1,V+3)+" "+MID$(A$(CNT),V+4):GOTO 300 +140 Z=INSTR(Z,A$(CNT),"'"):IF Z>0 AND Z<8 THEN 300 +150 IF Z=0 THEN Z=500 ELSE T=INSTR(Z,A$(CNT),CHR$(34)):IF T<>0 THEN Z=T:GOTO 140 +160 W=INSTR(W,A$(CNT),"REM"):IF W>0 AND W<8 THEN 300 +170 IF W=0 THEN W=500 ELSE T=INSTR(W,A$(CNT),CHR$(34)):IF T<>0 THEN W=T:GOTO 160 +180 FOR COT=1 TO 47:Q=1:READ B$ +190 IF Q<>0 THEN Q=INSTR(Q,A$(CNT),CHR$(34)) +200 X=INSTR(Y,A$(CNT),B$) +210 IF X>Z OR Z>W THEN 290 +220 IF Q<>0 AND X>Q THEN 540 +230 IF X<>0 THEN IF B$<>"THEN" AND B$<>"ELSE" AND B$<>"TO" AND B$<>"OR" AND B$<>"AND" AND B$<>"STEP" THEN 250 +240 IF X<>0 THEN E$=MID$(A$(CNT),X-2,2):F$=MID$(A$(CNT),X-3,3):IF E$<>":F" AND E$<>" F" AND E$<>" R" AND E$<>":R" AND E$<>"GO" AND F$<>"RES" AND F$<>"ERR" AND MID$(A$(CNT),X-4,4)<>"REST" THEN GOSUB 640:GOTO 190 +250 IF X=0 THEN 290 +255 IF B$="AND" OR B$="OR" OR B$="TO" OR B$="STEP" THEN Y=X+LEN(B$):GOTO 200 +257 PRINT "CNT=";CNT;"X=";X;"A$=";A$(CNT) +260 IF MID$(A$(CNT),X-1,1)=" " OR MID$(A$(CNT),X-1,1)=":" THEN GOSUB 610:GOTO 190 +270 IF MID$(A$(CNT),X-1,1)="L" AND B$="PRINT" THEN Y=X+LEN(B$):GOTO 200 +280 GOSUB 640:GOTO 190 +290 Y=1:NEXT COT +300 PRINT @ 827,"Line";CNT;"is now done.":RESTORE:NEXT CNT +310 ' +320 ' +330 CLS:PRINT @ 418,"I am now changing all IF THEN statements":PRINT @ 670,"STARTING NOW" +340 FOR CNT=1 TO KOUNT:X=1:F=1 +350 X=INSTR(X,A$(CNT),"IF"):IF X=0 THEN 430 +355 IF F<>0 THEN 670 +360 Y=INSTR(X,A$(CNT),"THEN"):IF Y=0 THEN 390 +370 Z=INSTR(X+2,A$(CNT),"IF"):IF YX THEN W=V +410 NEXT S:IF W=999 THEN 430 +420 A$(CNT)=MID$(A$(CNT),1,W-1)+"THEN "+MID$(A$(CNT),W):X=X+2:GOTO 350 +430 PRINT @ 824,"Line";CNT;"is finished now.":NEXT CNT +440 CLS:E=1:FOR X=1 TO KOUNT STEP 10:CLS:FOR W=1 TO 10:PRINT A$(E):E=E+1:NEXT W:PRINT:INPUT"Hit ENTER for rest of list";U:PRINT:NEXT X +450 ' +460 ' +470 CLS:PRINT @ 320, "Old filename=";C$:PRINT @ 410,"Input file's name and drive to save converted file under":PRINT @ 507,;:LINE INPUT C$ +480 OPEN "O",1,C$ +490 FOR X=1 TO KOUNT:PRINT# 1,A$(X):NEXT X +500 CLOSE 1 +510 END +520 ' +530 ' +540 Q=INSTR(Q+1,A$(CNT),CHR$(34)):IF Q=0 THEN GOTO 290 +550 IF XQ THEN 540 +580 GOTO 230 +590 ' +600 ' +610 A$(CNT)=MID$(A$(CNT),1,X-1+LEN(B$))+" "+MID$(A$(CNT),X+LEN(B$)):Y=X+LEN(B$):RETURN +620 ' +630 ' +640 A$(CNT)=MID$(A$(CNT),1,X-1)+" "+MID$(A$(CNT),X,LEN(B$))+" "+MID$(A$(CNT),X+LEN(B$)):Y=X+LEN(B$)+1:RETURN +650 ' +660 ' +670 F=INSTR(F,A$(CNT),CHR$(34)):IF F>X OR F=0 THEN 360 +680 G=INSTR(F+1,A$(CNT),CHR$(34)):IF G=0 OR G=LEN(A$(CNT)) THEN 430 +690 IF G profile.bas + ;; + E067) + echo "OPTION VERSION BYWATER" > profile.bas + echo "OPTION COMMENT !" >> profile.bas + ;; + E068) + echo "OPTION VERSION BYWATER" > profile.bas + echo "OPTION STATEMENT \\" >> profile.bas + ;; + F_VAL_A_N) + echo "OPTION VERSION BYWATER" > profile.bas + echo "OPTION BUGS OFF" >> profile.bas + ;; + *) + echo "OPTION VERSION BYWATER" > profile.bas + ;; + esac + ~/bwbasic ${TESTCASE} > ${TESTCASE}.OUT + echo "500 DATA ${TESTCASE}.OUT, ${TESTCASE}.80" > PAD80.INP + echo "OPTION VERSION BYWATER" > profile.bas + ~/bwbasic PAD80.BAS + diff ${TESTCASE}.run ${TESTCASE}.80 > ${TESTCASE}.dif + if test -s ${TESTCASE}.dif + then + echo less ${TESTCASE}.dif + fi +} +# ---------------------------------------------- +# +# ANSI/ECMA Minimal BASIC tests +# +# ---------------------------------------------- +testcase P001 +testcase P002 +testcase P003 +testcase P004 +testcase P005 +testcase P006 +testcase P007 +testcase P008 +testcase P009 +testcase P010 +testcase P011 +testcase P012 +testcase P013 +testcase P014 +testcase P015 +testcase P016 +testcase P017 +testcase P018 +testcase P019 +testcase P020 +testcase P021 +testcase P022 +testcase P023 +testcase P024 +testcase P025 +testcase P026 +testcase P027 +testcase P028 +testcase P029 +testcase P030 +testcase P031 +testcase P032 +testcase P033 +testcase P034 +testcase P035 +testcase P036 +testcase P037 +testcase P038 +testcase P039 +testcase P040 +testcase P041 +testcase P042 +testcase P043 +testcase P044 +testcase P045 +testcase P046 +testcase P047 +testcase P048 +testcase P049 +testcase P050 +testcase P051 +testcase P052 +testcase P053 +testcase P054 +testcase P055 +testcase P056 +testcase P057 +testcase P058 +testcase P059 +testcase P060 +testcase P061 +# ---------------------------------------------- +# +# P062 should ERROR on line 550 +# +# This is by design +# +# DIM is an executed command +# +# ---------------------------------------------- +echo "By design, P062 SHOULD ERROR on line 550: SUBSCRIPT OUT OF RANGE E(14)" +testcase P062 +testcase P063 +testcase P064 +testcase P065 +testcase P066 +testcase P067 +testcase P068 +testcase P069 +testcase P070 +testcase P071 +testcase P072 +testcase P073 +testcase P074 +testcase P075 +testcase P076 +testcase P077 +testcase P078 +testcase P079 +testcase P080 +testcase P081 +testcase P082 +testcase P083 +testcase P084 +testcase P085 +testcase P086 +testcase P087 +testcase P088 +testcase P089 +testcase P090 +testcase P091 +testcase P092 +testcase P093 +testcase P094 +testcase P095 +testcase P096 +testcase P097 +testcase P098 +testcase P099 +testcase P100 +testcase P101 +testcase P102 +testcase P103 +testcase P104 +testcase P105 +testcase P106 +testcase P107 +testcase P108 +testcase P109 +testcase P110 +testcase P111 +testcase P112 +testcase P113 +testcase P114 +testcase P115 +testcase P116 +testcase P117 +testcase P118 +testcase P119 +testcase P120 +testcase P121 +testcase P122 +testcase P123 +testcase P124 +testcase P125 +testcase P126 +testcase P127 +testcase P128 +testcase P129 +testcase P130 +# ---------------------------------------------- +# +# The results of P131 should chaange +# every time the program runs. +# +# ---------------------------------------------- +echo P131 - RANDOMMIZE - MANUAL REVIEW REQUIRED +# testcase P131 + ~/bwbasic P131 > P131.OUT +testcase P132 +testcase P133 +testcase P134 +testcase P135 +testcase P136 +testcase P137 +testcase P138 +testcase P139 +testcase P140 +testcase P141 +testcase P142 +testcase P143 +testcase P144 +testcase P145 +testcase P146 +testcase P147 +testcase P148 +testcase P149 +testcase P150 +testcase P151 +testcase P152 +testcase P153 +testcase P154 +testcase P155 +testcase P156 +testcase P157 +testcase P158 +testcase P159 +testcase P160 +testcase P161 +testcase P162 +testcase P163 +testcase P164 +testcase P165 +testcase P166 +testcase P167 +testcase P168 +testcase P169 +testcase P170 +testcase P171 +testcase P172 +testcase P173 +testcase P174 +testcase P175 +testcase P176 +testcase P177 +testcase P178 +testcase P179 +testcase P180 +testcase P181 +testcase P182 +testcase P183 +testcase P184 +testcase P185 +testcase P186 +testcase P187 +testcase P188 +testcase P189 +testcase P190 +testcase P191 +testcase P192 +testcase P193 +testcase P194 +testcase P195 +testcase P196 +testcase P197 +testcase P198 +testcase P199 +testcase P200 +testcase P201 +testcase P202 +testcase P203 +testcase P204 +testcase P205 +testcase P206 +testcase P207 +testcase P208 +# ---------------------------------------------- +# +# Extra tests of bwBASIC behavior +# +# ---------------------------------------------- +testcase E001 +testcase E002 +testcase E003 +testcase E004 +testcase E005 +testcase E006 +testcase E007 +testcase E008 +testcase E009 +testcase E010 +testcase E011 +testcase E012 +testcase E013 +testcase E014 +testcase E015 +testcase E016 +testcase E017 +testcase E018 +testcase E019 +testcase E020 +testcase E021 +testcase E022 +testcase E023 +testcase E024 +testcase E025 +testcase E026 +testcase E027 +testcase E028 +testcase E029 +testcase E030 +testcase E031 +testcase E032 +testcase E033 +testcase E034 +testcase E035 +testcase E036 +testcase E037 +testcase E038 +testcase E039 +testcase E040 +testcase E041 +testcase E042 +testcase E043 +testcase E044 +testcase E045 +testcase E046 +testcase E047 +testcase E048 +testcase E049 +testcase E050 +testcase E051 +testcase E052 +testcase E053 +testcase E054 +testcase E055 +testcase E056 +testcase E057 +testcase E058 +testcase E059 +testcase E060 +testcase E061 +testcase E062 +testcase E063 +testcase E064 +testcase E065 +testcase E066 +testcase E067 +testcase E068 +testcase E069 +testcase E070 +testcase E071 +# ---------------------------------------------- +# +# SYNTAX.BAS generates the following tests +# +# ---------------------------------------------- +testcase F_ABS_X_N +testcase F_ACOS_X_N +testcase F_ANGLE_X_Y_N +testcase F_ASC_A_N +testcase F_ASIN_X_N +testcase F_ATN_X_N +testcase F_CCUR_X_N +testcase F_CDBL_X_N +testcase F_CEIL_X_N +testcase F_CHR_X_S +testcase F_CINT_X_N +testcase F_CLNG_X_N +testcase F_COSH_X_N +testcase F_COS_X_N +testcase F_COT_X_N +testcase F_CSC_X_N +testcase F_CSNG_X_N +testcase F_CVC_A_N +testcase F_CVD_A_N +testcase F_CVI_A_N +testcase F_CVL_A_N +testcase F_CVS_A_N +testcase F_DEG_X_N +testcase F_EPS_X_N +testcase F_ERROR_X_A_N +testcase F_ERROR_X_N +testcase F_EXP_X_N +testcase F_FIX_X_N +testcase F_FP_X_N +testcase F_FRE_A_N +testcase F_FRE_X_N +testcase F_HEX_X_S +testcase F_INSTR_A_B_N +testcase F_INSTR_X_A_B_N +testcase F_INT_X_N +testcase F_IP_X_N +testcase F_LCASE_A_S +testcase F_LEFT_A_X_S +testcase F_LEN_A_N +testcase F_LOG10_X_N +testcase F_LOG2_X_N +testcase F_LOG_X_N +testcase F_LTRIM_A_S +testcase F_MAXLEN_A_N +testcase F_MAX_X_Y_N +testcase F_MID_A_X_S +testcase F_MID_A_X_Y_S +testcase F_MIN_X_Y_N +testcase F_NULL_X_N +testcase F_OCT_X_S +testcase F_ORD_A_N +testcase F_RAD_X_N +testcase F_REMAINDER_X_Y_N +testcase F_REPEAT_X_A_S +testcase F_REPEAT_X_Y_S +testcase F_RIGHT_A_X_S +testcase F_ROUND_X_Y_N +testcase F_RTRIM_A_S +testcase F_SEC_X_N +testcase F_SGN_X_N +testcase F_SINH_X_N +testcase F_SIN_X_N +testcase F_SPACE_X_S +testcase F_SQR_X_N +testcase F_STRING_X_A_S +testcase F_STRING_X_Y_S +testcase F_STR_X_S +testcase F_TANH_X_N +testcase F_TAN_X_N +testcase F_TRIM_A_S +testcase F_TRUNCATE_X_Y_N +testcase F_UCASE_A_S +testcase F_VAL_A_N +# ---------------------------------------------- +# EOF +# ---------------------------------------------- diff --git a/NBS2/01test.sh b/NBS2/01test.sh new file mode 100644 index 0000000..2a8bc40 --- /dev/null +++ b/NBS2/01test.sh @@ -0,0 +1,36 @@ +# Filename: zzz.sh +# Purpose: automted regression review +# Author: Howard Wulf, AF5NE +# Date: 2015-01-29 +# Uasage: implementation defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic-2.62/ +# ash ./zzz.sh +# +# + +# cd NBS2 + +echo "OPTION VERSION BYWATER" > profile.bas +echo "OPTION BUGS OFF" >> profile.bas + +~/bwbasic FNCS.BAS > FNCS.OUT + +~/bwbasic CMDS.BAS > CMDS.OUT + +~/bwbasic MAINTAINER.BAS > MAINTAINER.OUT +mv LPRINT.OUT MAINTAINER.OUT + +~/bwbasic MANUAL.BAS > MANUAL.OUT +mv LPRINT.OUT MANUAL.OUT + +# grep "SYNTAX:" LPRINT.OUT > SYNTAX.INP +# ~/bwbasic SYNTAX.BAS > SYNTAX.OUT + +cat *.dif > dif.OUT +if test -s dif.OUT +then + less dif.OUT +fi + +# EOF diff --git a/NBS2/A b/NBS2/A new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/CMDS.BAS b/NBS2/CMDS.BAS new file mode 100644 index 0000000..380051d --- /dev/null +++ b/NBS2/CMDS.BAS @@ -0,0 +1,3 @@ +OPTION VERSION BYWATER +OPTION BUGS OFF +CMDS diff --git a/NBS2/CMDS.OUT b/NBS2/CMDS.OUT new file mode 100644 index 0000000..afcdbfd --- /dev/null +++ b/NBS2/CMDS.OUT @@ -0,0 +1,40 @@ +BWBASIC COMMANDS AVAILABLE: +? CALL CASE CASE ELSE CASE IF +CASE IS CHAIN CHANGE CLEAR CLOAD +CLOAD* CMDS COMMON CONT CSAVE +CSAVE* DATA DEF DEF SUB DEFDBL +DEFINT DEFSNG DEFSTR DELETE DIM +DO DO UNTIL DO WHILE EDIT ELSE +ELSEIF END END FUNCTION END IF END SELECT +END SUB ERASE EXIT EXIT DO EXIT FOR +EXIT FUNCTION EXIT SUB EXIT UNTIL EXIT WHILE FIELD +FNCS FOR FUNCTION GO GOSUB +GOTO HELP IF IF THEN INPUT +LET LINE LIST LOAD LOOP +LOOP UNTIL LOOP WHILE LPRINT LSET MAINTAINER +MERGE MID$ NAME NEW NEXT +ON ON ERROR GOSUB ON ERROR GOTO ON ERROR RESUME NEXT +ON ERROR RETURN NEXT +ON TIMER OPEN OPTION OPTION ANGLE DEGREES +OPTION ANGLE RADIANS +OPTION ARITHMETIC DECIMAL OPTION ARITHMETIC FIXED +OPTION ARITHMETIC NATIVE OPTION BASE 0 OPTION BASE 1 +OPTION BUGS OFF OPTION BUGS ON OPTION COMMENT +OPTION COMPARE BINARY OPTION COMPARE DATABASE +OPTION COMPARE TEXT OPTION COVERAGE OFF OPTION COVERAGE ON +OPTION DATE OPTION DISABLE COMMAND +OPTION DISABLE FUNCTION OPTION DISABLE OPERATOR +OPTION ENABLE COMMAND OPTION ENABLE FUNCTION +OPTION ENABLE OPERATOR +OPTION ERROR GOSUB OPTION ERROR GOTO OPTION INDENT +OPTION LABELS OFF OPTION LABELS ON +OPTION STATEMENT OPTION STRICT OFF OPTION STRICT ON +OPTION TERMINAL ADM-3A OPTION TERMINAL ANSI +OPTION TERMINAL NONE OPTION TIME OPTION TRACE OFF +OPTION TRACE ON OPTION VERSION +PRINT QUIT READ REM RENUM +RESTORE RESUME RETURN RSET RUN +SAVE SELECT SELECT CASE STOP SUB +SWAP SYSTEM TIMER TIMER OFF TIMER ON +TIMER STOP UEND UNTIL USER LBL VARS +WEND WHILE WRITE diff --git a/NBS2/E001.80 b/NBS2/E001.80 new file mode 100644 index 0000000..66cbbd6 --- /dev/null +++ b/NBS2/E001.80 @@ -0,0 +1,5 @@ +The absolute value of -1.23457 is 1.23457 +*** TEST #1 PASSED *** +The absolute value of 1.23457 is 1.23457 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E001.BAS b/NBS2/E001.BAS new file mode 100644 index 0000000..7dbd78e --- /dev/null +++ b/NBS2/E001.BAS @@ -0,0 +1,26 @@ +1000 rem ------------------------------------------ +1010 rem Filename: abs1.bas +1020 rem Purpose: Verify ABS() +1100 rem ------------------------------------------ +1120 X = -1.23456789 +1130 RESULT = ABS( X ) +1140 print "The absolute value of "; X; " is"; RESULT +1150 if RESULT <> 1.23456789 then goto TestFailed +1160 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 1.23456789 +1230 RESULT = ABS( X ) +1240 print "The absolute value of "; X; " is"; RESULT +1250 if RESULT <> 1.23456789 then goto TestFailed +1260 print "*** TEST #2 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E001.OUT b/NBS2/E001.OUT new file mode 100644 index 0000000..ae944dc --- /dev/null +++ b/NBS2/E001.OUT @@ -0,0 +1,5 @@ +The absolute value of -1.23457 is 1.23457 +*** TEST #1 PASSED *** +The absolute value of 1.23457 is 1.23457 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E001.dif b/NBS2/E001.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E001.run b/NBS2/E001.run new file mode 100644 index 0000000..66cbbd6 --- /dev/null +++ b/NBS2/E001.run @@ -0,0 +1,5 @@ +The absolute value of -1.23457 is 1.23457 +*** TEST #1 PASSED *** +The absolute value of 1.23457 is 1.23457 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E002.80 b/NBS2/E002.80 new file mode 100644 index 0000000..77c966e --- /dev/null +++ b/NBS2/E002.80 @@ -0,0 +1,11 @@ +The arccosine value of 0 is 1.5708 +*** TEST #1 PASSED *** +The arccosine value of .5 is 1.0472 +*** TEST #2 PASSED *** +The arccosine value of -.5 is 2.0944 +*** TEST #3 PASSED *** +The arccosine value of 1 is 0 +*** TEST #4 PASSED *** +The arccosine value of -1 is 3.14159 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E002.BAS b/NBS2/E002.BAS new file mode 100644 index 0000000..4980a51 --- /dev/null +++ b/NBS2/E002.BAS @@ -0,0 +1,49 @@ +1000 rem ------------------------------------------ +1010 rem Filename: acos1.bas +1020 rem Purpose: Verify ACOS() +1100 rem ------------------------------------------ +1120 X = 0 +1130 RESULT = ACOS( X ) +1140 print "The arccosine value of "; X; " is"; RESULT +1150 if RESULT < 1.5707962 then goto TestFailed +1160 if RESULT > 1.5707964 then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 0.5 +1230 RESULT = ACOS( X ) +1240 print "The arccosine value of "; X; " is"; RESULT +1250 if RESULT < 1.0471975 then goto TestFailed +1260 if RESULT > 1.0471977 then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 X = -0.5 +1330 RESULT = ACOS( X ) +1340 print "The arccosine value of "; X; " is"; RESULT +1350 if RESULT < 2.0943950 then goto TestFailed +1360 if RESULT > 2.0943952 then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 X = 1 +1430 RESULT = ACOS( X ) +1440 print "The arccosine value of "; X; " is"; RESULT +1450 if RESULT < 0 then goto TestFailed +1460 if RESULT > 0 then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 X = -1 +1530 RESULT = ACOS( X ) +1540 print "The arccosine value of "; X; " is"; RESULT +1550 if RESULT < 3.1415926 then goto TestFailed +1560 if RESULT > 3.1415928 then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E002.OUT b/NBS2/E002.OUT new file mode 100644 index 0000000..62f0b95 --- /dev/null +++ b/NBS2/E002.OUT @@ -0,0 +1,11 @@ +The arccosine value of 0 is 1.5708 +*** TEST #1 PASSED *** +The arccosine value of .5 is 1.0472 +*** TEST #2 PASSED *** +The arccosine value of -.5 is 2.0944 +*** TEST #3 PASSED *** +The arccosine value of 1 is 0 +*** TEST #4 PASSED *** +The arccosine value of -1 is 3.14159 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E002.dif b/NBS2/E002.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E002.run b/NBS2/E002.run new file mode 100644 index 0000000..77c966e --- /dev/null +++ b/NBS2/E002.run @@ -0,0 +1,11 @@ +The arccosine value of 0 is 1.5708 +*** TEST #1 PASSED *** +The arccosine value of .5 is 1.0472 +*** TEST #2 PASSED *** +The arccosine value of -.5 is 2.0944 +*** TEST #3 PASSED *** +The arccosine value of 1 is 0 +*** TEST #4 PASSED *** +The arccosine value of -1 is 3.14159 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E003.80 b/NBS2/E003.80 new file mode 100644 index 0000000..c88d6f2 --- /dev/null +++ b/NBS2/E003.80 @@ -0,0 +1,7 @@ + .785398 +*** TEST #1 PASSED *** + 45 +*** TEST #2 PASSED *** + .785398 +*** TEST #3 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E003.BAS b/NBS2/E003.BAS new file mode 100644 index 0000000..0104fae --- /dev/null +++ b/NBS2/E003.BAS @@ -0,0 +1,50 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: angle1.bas +00120 REM PURPOSE: Verify ANGLE() +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 15th, 2014 +00150 REM ---------------------------------------------------- +01000 REM ---------------------------------------------------- +01010 REM TEST DEFAULT +01020 REM ---------------------------------------------------- +01100 REM option angle radians +01110 let x = 1 +01120 let y = 1 +01130 let a = angle( x, y ) +01140 print a +01150 let a$ = str$( a ) +01160 if left$( a$, 9 ) <> " .785398" then goto TestFailed +01170 print "*** TEST #1 PASSED ***" +02000 REM ---------------------------------------------------- +02010 REM TEST DEGREES +02020 REM ---------------------------------------------------- +02100 option angle degrees +02110 let x = 1 +02120 let y = 1 +02130 let a = angle( x, y ) +02140 print a +02150 let a$ = str$( a ) +02160 if left$( a$, 3 ) <> " 45" then goto TestFailed +02170 print "*** TEST #2 PASSED ***" +03000 REM ---------------------------------------------------- +03010 REM TEST RADIANS +03020 REM ---------------------------------------------------- +03100 option angle radians +03110 let x = 1 +03120 let y = 1 +03130 let a = angle( x, y ) +03140 print a +03150 let a$ = str$( a ) +03160 if left$( a$, 9 ) <> " .785398" then goto TestFailed +03170 print "*** TEST #3 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E003.OUT b/NBS2/E003.OUT new file mode 100644 index 0000000..44c4615 --- /dev/null +++ b/NBS2/E003.OUT @@ -0,0 +1,7 @@ + .785398 +*** TEST #1 PASSED *** + 45 +*** TEST #2 PASSED *** + .785398 +*** TEST #3 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E003.dif b/NBS2/E003.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E003.run b/NBS2/E003.run new file mode 100644 index 0000000..c88d6f2 --- /dev/null +++ b/NBS2/E003.run @@ -0,0 +1,7 @@ + .785398 +*** TEST #1 PASSED *** + 45 +*** TEST #2 PASSED *** + .785398 +*** TEST #3 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E004.80 b/NBS2/E004.80 new file mode 100644 index 0000000..1ca91d4 --- /dev/null +++ b/NBS2/E004.80 @@ -0,0 +1,5 @@ +The ASCII value of ABCDEF is 65 +*** TEST #1 PASSED *** +The ASCII value of abcdef is 97 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E004.BAS b/NBS2/E004.BAS new file mode 100644 index 0000000..8a55390 --- /dev/null +++ b/NBS2/E004.BAS @@ -0,0 +1,26 @@ +1000 rem ------------------------------------------ +1010 rem Filename: asc1.bas +1020 rem Purpose: Verify ASC() +1100 rem ------------------------------------------ +1120 X$ = "ABCDEF" +1130 RESULT = ASC( X$ ) +1140 print "The ASCII value of "; X$; " is"; RESULT +1150 if RESULT <> 65 then goto TestFailed +1160 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X$ = "abcdef" +1230 RESULT = ASC( X$ ) +1240 print "The ASCII value of "; X$; " is"; RESULT +1250 if RESULT <> 97 then goto TestFailed +1260 print "*** TEST #2 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E004.OUT b/NBS2/E004.OUT new file mode 100644 index 0000000..918d2f3 --- /dev/null +++ b/NBS2/E004.OUT @@ -0,0 +1,5 @@ +The ASCII value of ABCDEF is 65 +*** TEST #1 PASSED *** +The ASCII value of abcdef is 97 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E004.dif b/NBS2/E004.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E004.run b/NBS2/E004.run new file mode 100644 index 0000000..1ca91d4 --- /dev/null +++ b/NBS2/E004.run @@ -0,0 +1,5 @@ +The ASCII value of ABCDEF is 65 +*** TEST #1 PASSED *** +The ASCII value of abcdef is 97 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E005.80 b/NBS2/E005.80 new file mode 100644 index 0000000..102b7db --- /dev/null +++ b/NBS2/E005.80 @@ -0,0 +1,11 @@ +The arcsine value of 0 is 0 +*** TEST #1 PASSED *** +The arcsine value of .5 is .523599 +*** TEST #2 PASSED *** +The arcsine value of -.5 is-.523599 +*** TEST #3 PASSED *** +The arcsine value of 1 is 1.5708 +*** TEST #4 PASSED *** +The arcsine value of -1 is-1.5708 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E005.BAS b/NBS2/E005.BAS new file mode 100644 index 0000000..28a9ee1 --- /dev/null +++ b/NBS2/E005.BAS @@ -0,0 +1,49 @@ +1000 rem ------------------------------------------ +1010 rem Filename: asin1.bas +1020 rem Purpose: Verify ASIN() +1100 rem ------------------------------------------ +1120 X = 0 +1130 RESULT = ASIN( X ) +1140 print "The arcsine value of "; X; " is"; RESULT +1150 if RESULT < 0 then goto TestFailed +1160 if RESULT > 0 then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 0.5 +1230 RESULT = ASIN( X ) +1240 print "The arcsine value of "; X; " is"; RESULT +1250 if RESULT < 0.5235987 then goto TestFailed +1260 if RESULT > 0.5235989 then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 X = -0.5 +1330 RESULT = ASIN( X ) +1340 print "The arcsine value of "; X; " is"; RESULT +1350 if RESULT > -0.5235987 then goto TestFailed +1360 if RESULT < -0.5235989 then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 X = 1 +1430 RESULT = ASIN( X ) +1440 print "The arcsine value of "; X; " is"; RESULT +1450 if RESULT < 1.5707962 then goto TestFailed +1460 if RESULT > 1.5707964 then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 X = -1 +1530 RESULT = ASIN( X ) +1540 print "The arcsine value of "; X; " is"; RESULT +1550 if RESULT > -1.5707962 then goto TestFailed +1560 if RESULT < -1.5707964 then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E005.OUT b/NBS2/E005.OUT new file mode 100644 index 0000000..e369d69 --- /dev/null +++ b/NBS2/E005.OUT @@ -0,0 +1,11 @@ +The arcsine value of 0 is 0 +*** TEST #1 PASSED *** +The arcsine value of .5 is .523599 +*** TEST #2 PASSED *** +The arcsine value of -.5 is-.523599 +*** TEST #3 PASSED *** +The arcsine value of 1 is 1.5708 +*** TEST #4 PASSED *** +The arcsine value of -1 is-1.5708 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E005.dif b/NBS2/E005.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E005.run b/NBS2/E005.run new file mode 100644 index 0000000..102b7db --- /dev/null +++ b/NBS2/E005.run @@ -0,0 +1,11 @@ +The arcsine value of 0 is 0 +*** TEST #1 PASSED *** +The arcsine value of .5 is .523599 +*** TEST #2 PASSED *** +The arcsine value of -.5 is-.523599 +*** TEST #3 PASSED *** +The arcsine value of 1 is 1.5708 +*** TEST #4 PASSED *** +The arcsine value of -1 is-1.5708 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E006.80 b/NBS2/E006.80 new file mode 100644 index 0000000..441b4a4 --- /dev/null +++ b/NBS2/E006.80 @@ -0,0 +1,11 @@ +The arctangent value of 0 is 0 +*** TEST #1 PASSED *** +The arctangent value of .5 is .463648 +*** TEST #2 PASSED *** +The arctangent value of -.5 is-.463648 +*** TEST #3 PASSED *** +The arctangent value of 1 is .785398 +*** TEST #4 PASSED *** +The arctangent value of -1 is-.785398 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E006.BAS b/NBS2/E006.BAS new file mode 100644 index 0000000..6b6300b --- /dev/null +++ b/NBS2/E006.BAS @@ -0,0 +1,49 @@ +1000 rem ------------------------------------------ +1010 rem Filename: atn1.bas +1020 rem Purpose: Verify ATN() +1100 rem ------------------------------------------ +1120 X = 0 +1130 RESULT = ATN( X ) +1140 print "The arctangent value of "; X; " is"; RESULT +1150 if RESULT < 0 then goto TestFailed +1160 if RESULT > 0 then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 0.5 +1230 RESULT = ATN( X ) +1240 print "The arctangent value of "; X; " is"; RESULT +1250 if RESULT < 0.4636475 then goto TestFailed +1260 if RESULT > 0.4636477 then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 X = -0.5 +1330 RESULT = ATN( X ) +1340 print "The arctangent value of "; X; " is"; RESULT +1350 if RESULT > -0.4636475 then goto TestFailed +1360 if RESULT < -0.4636477 then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 X = 1 +1430 RESULT = ATN( X ) +1440 print "The arctangent value of "; X; " is"; RESULT +1450 if RESULT < 0.7853981 then goto TestFailed +1460 if RESULT > 0.7853983 then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 X = -1 +1530 RESULT = ATN( X ) +1540 print "The arctangent value of "; X; " is"; RESULT +1550 if RESULT > -0.7853981 then goto TestFailed +1560 if RESULT < -0.7853983 then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E006.OUT b/NBS2/E006.OUT new file mode 100644 index 0000000..3f0c6ab --- /dev/null +++ b/NBS2/E006.OUT @@ -0,0 +1,11 @@ +The arctangent value of 0 is 0 +*** TEST #1 PASSED *** +The arctangent value of .5 is .463648 +*** TEST #2 PASSED *** +The arctangent value of -.5 is-.463648 +*** TEST #3 PASSED *** +The arctangent value of 1 is .785398 +*** TEST #4 PASSED *** +The arctangent value of -1 is-.785398 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E006.dif b/NBS2/E006.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E006.run b/NBS2/E006.run new file mode 100644 index 0000000..441b4a4 --- /dev/null +++ b/NBS2/E006.run @@ -0,0 +1,11 @@ +The arctangent value of 0 is 0 +*** TEST #1 PASSED *** +The arctangent value of .5 is .463648 +*** TEST #2 PASSED *** +The arctangent value of -.5 is-.463648 +*** TEST #3 PASSED *** +The arctangent value of 1 is .785398 +*** TEST #4 PASSED *** +The arctangent value of -1 is-.785398 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E007.80 b/NBS2/E007.80 new file mode 100644 index 0000000..b4ab2a0 --- /dev/null +++ b/NBS2/E007.80 @@ -0,0 +1,2 @@ + 1 is positive +*** ALL TESTS PASSED *** diff --git a/NBS2/E007.BAS b/NBS2/E007.BAS new file mode 100644 index 0000000..6b02b34 --- /dev/null +++ b/NBS2/E007.BAS @@ -0,0 +1,27 @@ +0100 rem ------------------------------------------ +0110 rem Filename: case1.bas +0120 rem Purpose: Verify CASE IF +0130 rem ------------------------------------------ +1000 let correct = 0 +1100 let x = 1 +1110 select case x +1120 case if < 0 +1130 print x; "is negative" +1140 case if > 0 +1150 print x; "is positive" +let correct = 1 +1160 case else +1170 print x; "is zero" +1180 end select +1190 if correct <> 1 then goto TestFailed +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E007.OUT b/NBS2/E007.OUT new file mode 100644 index 0000000..3726c05 --- /dev/null +++ b/NBS2/E007.OUT @@ -0,0 +1,2 @@ + 1 is positive +*** ALL TESTS PASSED *** diff --git a/NBS2/E007.dif b/NBS2/E007.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E007.run b/NBS2/E007.run new file mode 100644 index 0000000..b4ab2a0 --- /dev/null +++ b/NBS2/E007.run @@ -0,0 +1,2 @@ + 1 is positive +*** ALL TESTS PASSED *** diff --git a/NBS2/E008.80 b/NBS2/E008.80 new file mode 100644 index 0000000..b4ab2a0 --- /dev/null +++ b/NBS2/E008.80 @@ -0,0 +1,2 @@ + 1 is positive +*** ALL TESTS PASSED *** diff --git a/NBS2/E008.BAS b/NBS2/E008.BAS new file mode 100644 index 0000000..d94fca4 --- /dev/null +++ b/NBS2/E008.BAS @@ -0,0 +1,27 @@ +0100 rem ------------------------------------------ +0110 rem Filename: case2.bas +0120 rem Purpose: Verify CASE IS +0130 rem ------------------------------------------ +1000 let correct = 0 +1100 let x = 1 +1110 select case x +1120 case is < 0 +1130 print x; "is negative" +1140 case is > 0 +1150 print x; "is positive" +let correct = 1 +1160 case else +1170 print x; "is zero" +1180 end select +1190 if correct <> 1 then goto TestFailed +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E008.OUT b/NBS2/E008.OUT new file mode 100644 index 0000000..3726c05 --- /dev/null +++ b/NBS2/E008.OUT @@ -0,0 +1,2 @@ + 1 is positive +*** ALL TESTS PASSED *** diff --git a/NBS2/E008.dif b/NBS2/E008.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E008.run b/NBS2/E008.run new file mode 100644 index 0000000..b4ab2a0 --- /dev/null +++ b/NBS2/E008.run @@ -0,0 +1,2 @@ + 1 is positive +*** ALL TESTS PASSED *** diff --git a/NBS2/E009.80 b/NBS2/E009.80 new file mode 100644 index 0000000..36df166 --- /dev/null +++ b/NBS2/E009.80 @@ -0,0 +1,72 @@ +SelCase.bas -- test SELECT CASE statement +d=-11 +In Case If < 0 +The number is less than 0 +d=-10 +In Case If < 0 +The number is less than 0 +d=-9 +In Case If < 0 +The number is less than 0 +d=-8 +In Case If < 0 +The number is less than 0 +d=-7 +In Case If < 0 +The number is less than 0 +d=-6 +In Case If < 0 +The number is less than 0 +d=-5 +In Case If < 0 +The number is less than 0 +d=-4 +In Case If < 0 +The number is less than 0 +d=-3 +In Case If < 0 +The number is less than 0 +d=-2 +In Case If < 0 +The number is less than 0 +d=-1 +In Case If < 0 +The number is less than 0 +d= 0 +In Case Else +The number is 0, 1, 2 or 10. +d= 1 +In Case Else +The number is 0, 1, 2 or 10. +d= 2 +In Case Else +The number is 0, 1, 2 or 10. +d= 3 +In Case 3 to 5 +The number is between 3 and 5. +d= 4 +In Case 3 to 5 +The number is between 3 and 5. +d= 5 +In Case 3 to 5 +The number is between 3 and 5. +d= 6 +In Case 6 +The number you entered is 6. +d= 7 +In Case 7 to 9 +The number is between 7 and 9. +d= 8 +In Case 7 to 9 +The number is between 7 and 9. +d= 9 +In Case 7 to 9 +The number is between 7 and 9. +d= 10 +In Case Else +The number is 0, 1, 2 or 10. +d= 11 +In Case If > 10 +The number is greater than 10 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E009.BAS b/NBS2/E009.BAS new file mode 100644 index 0000000..44b3c46 --- /dev/null +++ b/NBS2/E009.BAS @@ -0,0 +1,67 @@ +0100 rem ------------------------------------------ +0110 rem Filename: case3.bas +0120 rem Purpose: Verify CASE TO +0130 rem ------------------------------------------ + +Sub Main + Print "SelCase.bas -- test SELECT CASE statement" + rem Input "Enter a number"; d + for d = -11 to 11 step 1 + + print "d="; d + + Select Case d + + Case 3 to 5 + print "In Case 3 to 5" + if d < 3 then goto TestFailed + if d > 5 then goto TestFailed + Print "The number is between 3 and 5." + + Case 6 + print "In Case 6" + if d <> 6 then goto TestFailed + Print "The number you entered is 6." + + Case 7 to 9 + print "In Case 7 to 9" + if d < 7 then goto TestFailed + if d > 9 then goto TestFailed + Print "The number is between 7 and 9." + + Case If > 10 + print "In Case If > 10" + if d <= 10 then goto TestFailed + Print "The number is greater than 10" + + Case If < 0 + print "In Case If < 0" + if d >= 0 then goto TestFailed + Print "The number is less than 0" + + Case Else + print "In Case Else" + if d <> 0 and d <> 1 and d <> 2 and d <> 10 then goto TestFailed + Print "The number is 0, 1, 2 or 10." + + End Select + + next d + +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 quit + +End Sub +CALL MAIN +PRINT "*** SUB MAIN() was not executed ***" +STOP +END diff --git a/NBS2/E009.OUT b/NBS2/E009.OUT new file mode 100644 index 0000000..9576342 --- /dev/null +++ b/NBS2/E009.OUT @@ -0,0 +1,72 @@ +SelCase.bas -- test SELECT CASE statement +d=-11 +In Case If < 0 +The number is less than 0 +d=-10 +In Case If < 0 +The number is less than 0 +d=-9 +In Case If < 0 +The number is less than 0 +d=-8 +In Case If < 0 +The number is less than 0 +d=-7 +In Case If < 0 +The number is less than 0 +d=-6 +In Case If < 0 +The number is less than 0 +d=-5 +In Case If < 0 +The number is less than 0 +d=-4 +In Case If < 0 +The number is less than 0 +d=-3 +In Case If < 0 +The number is less than 0 +d=-2 +In Case If < 0 +The number is less than 0 +d=-1 +In Case If < 0 +The number is less than 0 +d= 0 +In Case Else +The number is 0, 1, 2 or 10. +d= 1 +In Case Else +The number is 0, 1, 2 or 10. +d= 2 +In Case Else +The number is 0, 1, 2 or 10. +d= 3 +In Case 3 to 5 +The number is between 3 and 5. +d= 4 +In Case 3 to 5 +The number is between 3 and 5. +d= 5 +In Case 3 to 5 +The number is between 3 and 5. +d= 6 +In Case 6 +The number you entered is 6. +d= 7 +In Case 7 to 9 +The number is between 7 and 9. +d= 8 +In Case 7 to 9 +The number is between 7 and 9. +d= 9 +In Case 7 to 9 +The number is between 7 and 9. +d= 10 +In Case Else +The number is 0, 1, 2 or 10. +d= 11 +In Case If > 10 +The number is greater than 10 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E009.dif b/NBS2/E009.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E009.run b/NBS2/E009.run new file mode 100644 index 0000000..36df166 --- /dev/null +++ b/NBS2/E009.run @@ -0,0 +1,72 @@ +SelCase.bas -- test SELECT CASE statement +d=-11 +In Case If < 0 +The number is less than 0 +d=-10 +In Case If < 0 +The number is less than 0 +d=-9 +In Case If < 0 +The number is less than 0 +d=-8 +In Case If < 0 +The number is less than 0 +d=-7 +In Case If < 0 +The number is less than 0 +d=-6 +In Case If < 0 +The number is less than 0 +d=-5 +In Case If < 0 +The number is less than 0 +d=-4 +In Case If < 0 +The number is less than 0 +d=-3 +In Case If < 0 +The number is less than 0 +d=-2 +In Case If < 0 +The number is less than 0 +d=-1 +In Case If < 0 +The number is less than 0 +d= 0 +In Case Else +The number is 0, 1, 2 or 10. +d= 1 +In Case Else +The number is 0, 1, 2 or 10. +d= 2 +In Case Else +The number is 0, 1, 2 or 10. +d= 3 +In Case 3 to 5 +The number is between 3 and 5. +d= 4 +In Case 3 to 5 +The number is between 3 and 5. +d= 5 +In Case 3 to 5 +The number is between 3 and 5. +d= 6 +In Case 6 +The number you entered is 6. +d= 7 +In Case 7 to 9 +The number is between 7 and 9. +d= 8 +In Case 7 to 9 +The number is between 7 and 9. +d= 9 +In Case 7 to 9 +The number is between 7 and 9. +d= 10 +In Case Else +The number is 0, 1, 2 or 10. +d= 11 +In Case If > 10 +The number is greater than 10 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E010.80 b/NBS2/E010.80 new file mode 100644 index 0000000..846e366 --- /dev/null +++ b/NBS2/E010.80 @@ -0,0 +1,329 @@ +The CDBL value of -100.74 is-100.74 +*** TEST # 1 PASSED *** +The CDBL value of -99.5055 is-99.5055 +*** TEST # 2 PASSED *** +The CDBL value of -98.271 is-98.271 +*** TEST # 3 PASSED *** +The CDBL value of -97.0365 is-97.0365 +*** TEST # 4 PASSED *** +The CDBL value of -95.802 is-95.802 +*** TEST # 5 PASSED *** +The CDBL value of -94.5675 is-94.5675 +*** TEST # 6 PASSED *** +The CDBL value of -93.333 is-93.333 +*** TEST # 7 PASSED *** +The CDBL value of -92.0985 is-92.0985 +*** TEST # 8 PASSED *** +The CDBL value of -90.864 is-90.864 +*** TEST # 9 PASSED *** +The CDBL value of -89.6295 is-89.6295 +*** TEST # 10 PASSED *** +The CDBL value of -88.395 is-88.395 +*** TEST # 11 PASSED *** +The CDBL value of -87.1605 is-87.1605 +*** TEST # 12 PASSED *** +The CDBL value of -85.926 is-85.926 +*** TEST # 13 PASSED *** +The CDBL value of -84.6915 is-84.6915 +*** TEST # 14 PASSED *** +The CDBL value of -83.457 is-83.457 +*** TEST # 15 PASSED *** +The CDBL value of -82.2225 is-82.2225 +*** TEST # 16 PASSED *** +The CDBL value of -80.988 is-80.988 +*** TEST # 17 PASSED *** +The CDBL value of -79.7535 is-79.7535 +*** TEST # 18 PASSED *** +The CDBL value of -78.519 is-78.519 +*** TEST # 19 PASSED *** +The CDBL value of -77.2845 is-77.2845 +*** TEST # 20 PASSED *** +The CDBL value of -76.05 is-76.05 +*** TEST # 21 PASSED *** +The CDBL value of -74.8155 is-74.8155 +*** TEST # 22 PASSED *** +The CDBL value of -73.581 is-73.581 +*** TEST # 23 PASSED *** +The CDBL value of -72.3465 is-72.3465 +*** TEST # 24 PASSED *** +The CDBL value of -71.112 is-71.112 +*** TEST # 25 PASSED *** +The CDBL value of -69.8775 is-69.8775 +*** TEST # 26 PASSED *** +The CDBL value of -68.643 is-68.643 +*** TEST # 27 PASSED *** +The CDBL value of -67.4085 is-67.4085 +*** TEST # 28 PASSED *** +The CDBL value of -66.174 is-66.174 +*** TEST # 29 PASSED *** +The CDBL value of -64.9395 is-64.9395 +*** TEST # 30 PASSED *** +The CDBL value of -63.705 is-63.705 +*** TEST # 31 PASSED *** +The CDBL value of -62.4705 is-62.4705 +*** TEST # 32 PASSED *** +The CDBL value of -61.236 is-61.236 +*** TEST # 33 PASSED *** +The CDBL value of -60.0015 is-60.0015 +*** TEST # 34 PASSED *** +The CDBL value of -58.767 is-58.767 +*** TEST # 35 PASSED *** +The CDBL value of -57.5325 is-57.5325 +*** TEST # 36 PASSED *** +The CDBL value of -56.298 is-56.298 +*** TEST # 37 PASSED *** +The CDBL value of -55.0635 is-55.0635 +*** TEST # 38 PASSED *** +The CDBL value of -53.829 is-53.829 +*** TEST # 39 PASSED *** +The CDBL value of -52.5945 is-52.5945 +*** TEST # 40 PASSED *** +The CDBL value of -51.36 is-51.36 +*** TEST # 41 PASSED *** +The CDBL value of -50.1255 is-50.1255 +*** TEST # 42 PASSED *** +The CDBL value of -48.891 is-48.891 +*** TEST # 43 PASSED *** +The CDBL value of -47.6565 is-47.6565 +*** TEST # 44 PASSED *** +The CDBL value of -46.422 is-46.422 +*** TEST # 45 PASSED *** +The CDBL value of -45.1875 is-45.1875 +*** TEST # 46 PASSED *** +The CDBL value of -43.953 is-43.953 +*** TEST # 47 PASSED *** +The CDBL value of -42.7185 is-42.7185 +*** TEST # 48 PASSED *** +The CDBL value of -41.484 is-41.484 +*** TEST # 49 PASSED *** +The CDBL value of -40.2495 is-40.2495 +*** TEST # 50 PASSED *** +The CDBL value of -39.015 is-39.015 +*** TEST # 51 PASSED *** +The CDBL value of -37.7805 is-37.7805 +*** TEST # 52 PASSED *** +The CDBL value of -36.546 is-36.546 +*** TEST # 53 PASSED *** +The CDBL value of -35.3115 is-35.3115 +*** TEST # 54 PASSED *** +The CDBL value of -34.077 is-34.077 +*** TEST # 55 PASSED *** +The CDBL value of -32.8425 is-32.8425 +*** TEST # 56 PASSED *** +The CDBL value of -31.608 is-31.608 +*** TEST # 57 PASSED *** +The CDBL value of -30.3735 is-30.3735 +*** TEST # 58 PASSED *** +The CDBL value of -29.139 is-29.139 +*** TEST # 59 PASSED *** +The CDBL value of -27.9045 is-27.9045 +*** TEST # 60 PASSED *** +The CDBL value of -26.67 is-26.67 +*** TEST # 61 PASSED *** +The CDBL value of -25.4355 is-25.4355 +*** TEST # 62 PASSED *** +The CDBL value of -24.201 is-24.201 +*** TEST # 63 PASSED *** +The CDBL value of -22.9665 is-22.9665 +*** TEST # 64 PASSED *** +The CDBL value of -21.732 is-21.732 +*** TEST # 65 PASSED *** +The CDBL value of -20.4975 is-20.4975 +*** TEST # 66 PASSED *** +The CDBL value of -19.263 is-19.263 +*** TEST # 67 PASSED *** +The CDBL value of -18.0285 is-18.0285 +*** TEST # 68 PASSED *** +The CDBL value of -16.794 is-16.794 +*** TEST # 69 PASSED *** +The CDBL value of -15.5595 is-15.5595 +*** TEST # 70 PASSED *** +The CDBL value of -14.325 is-14.325 +*** TEST # 71 PASSED *** +The CDBL value of -13.0905 is-13.0905 +*** TEST # 72 PASSED *** +The CDBL value of -11.856 is-11.856 +*** TEST # 73 PASSED *** +The CDBL value of -10.6215 is-10.6215 +*** TEST # 74 PASSED *** +The CDBL value of -9.387 is-9.387 +*** TEST # 75 PASSED *** +The CDBL value of -8.1525 is-8.1525 +*** TEST # 76 PASSED *** +The CDBL value of -6.918 is-6.918 +*** TEST # 77 PASSED *** +The CDBL value of -5.6835 is-5.6835 +*** TEST # 78 PASSED *** +The CDBL value of -4.449 is-4.449 +*** TEST # 79 PASSED *** +The CDBL value of -3.2145 is-3.2145 +*** TEST # 80 PASSED *** +The CDBL value of -1.98 is-1.98 +*** TEST # 81 PASSED *** +The CDBL value of -.7455 is-.7455 +*** TEST # 82 PASSED *** +The CDBL value of .489 is .489 +*** TEST # 83 PASSED *** +The CDBL value of 1.7235 is 1.7235 +*** TEST # 84 PASSED *** +The CDBL value of 2.958 is 2.958 +*** TEST # 85 PASSED *** +The CDBL value of 4.1925 is 4.1925 +*** TEST # 86 PASSED *** +The CDBL value of 5.427 is 5.427 +*** TEST # 87 PASSED *** +The CDBL value of 6.6615 is 6.6615 +*** TEST # 88 PASSED *** +The CDBL value of 7.896 is 7.896 +*** TEST # 89 PASSED *** +The CDBL value of 9.1305 is 9.1305 +*** TEST # 90 PASSED *** +The CDBL value of 10.365 is 10.365 +*** TEST # 91 PASSED *** +The CDBL value of 11.5995 is 11.5995 +*** TEST # 92 PASSED *** +The CDBL value of 12.834 is 12.834 +*** TEST # 93 PASSED *** +The CDBL value of 14.0685 is 14.0685 +*** TEST # 94 PASSED *** +The CDBL value of 15.303 is 15.303 +*** TEST # 95 PASSED *** +The CDBL value of 16.5375 is 16.5375 +*** TEST # 96 PASSED *** +The CDBL value of 17.772 is 17.772 +*** TEST # 97 PASSED *** +The CDBL value of 19.0065 is 19.0065 +*** TEST # 98 PASSED *** +The CDBL value of 20.241 is 20.241 +*** TEST # 99 PASSED *** +The CDBL value of 21.4755 is 21.4755 +*** TEST # 100 PASSED *** +The CDBL value of 22.71 is 22.71 +*** TEST # 101 PASSED *** +The CDBL value of 23.9445 is 23.9445 +*** TEST # 102 PASSED *** +The CDBL value of 25.179 is 25.179 +*** TEST # 103 PASSED *** +The CDBL value of 26.4135 is 26.4135 +*** TEST # 104 PASSED *** +The CDBL value of 27.648 is 27.648 +*** TEST # 105 PASSED *** +The CDBL value of 28.8825 is 28.8825 +*** TEST # 106 PASSED *** +The CDBL value of 30.117 is 30.117 +*** TEST # 107 PASSED *** +The CDBL value of 31.3515 is 31.3515 +*** TEST # 108 PASSED *** +The CDBL value of 32.586 is 32.586 +*** TEST # 109 PASSED *** +The CDBL value of 33.8205 is 33.8205 +*** TEST # 110 PASSED *** +The CDBL value of 35.055 is 35.055 +*** TEST # 111 PASSED *** +The CDBL value of 36.2895 is 36.2895 +*** TEST # 112 PASSED *** +The CDBL value of 37.524 is 37.524 +*** TEST # 113 PASSED *** +The CDBL value of 38.7585 is 38.7585 +*** TEST # 114 PASSED *** +The CDBL value of 39.993 is 39.993 +*** TEST # 115 PASSED *** +The CDBL value of 41.2275 is 41.2275 +*** TEST # 116 PASSED *** +The CDBL value of 42.462 is 42.462 +*** TEST # 117 PASSED *** +The CDBL value of 43.6965 is 43.6965 +*** TEST # 118 PASSED *** +The CDBL value of 44.931 is 44.931 +*** TEST # 119 PASSED *** +The CDBL value of 46.1655 is 46.1655 +*** TEST # 120 PASSED *** +The CDBL value of 47.4 is 47.4 +*** TEST # 121 PASSED *** +The CDBL value of 48.6345 is 48.6345 +*** TEST # 122 PASSED *** +The CDBL value of 49.869 is 49.869 +*** TEST # 123 PASSED *** +The CDBL value of 51.1035 is 51.1035 +*** TEST # 124 PASSED *** +The CDBL value of 52.338 is 52.338 +*** TEST # 125 PASSED *** +The CDBL value of 53.5725 is 53.5725 +*** TEST # 126 PASSED *** +The CDBL value of 54.807 is 54.807 +*** TEST # 127 PASSED *** +The CDBL value of 56.0415 is 56.0415 +*** TEST # 128 PASSED *** +The CDBL value of 57.276 is 57.276 +*** TEST # 129 PASSED *** +The CDBL value of 58.5105 is 58.5105 +*** TEST # 130 PASSED *** +The CDBL value of 59.745 is 59.745 +*** TEST # 131 PASSED *** +The CDBL value of 60.9795 is 60.9795 +*** TEST # 132 PASSED *** +The CDBL value of 62.214 is 62.214 +*** TEST # 133 PASSED *** +The CDBL value of 63.4485 is 63.4485 +*** TEST # 134 PASSED *** +The CDBL value of 64.683 is 64.683 +*** TEST # 135 PASSED *** +The CDBL value of 65.9175 is 65.9175 +*** TEST # 136 PASSED *** +The CDBL value of 67.152 is 67.152 +*** TEST # 137 PASSED *** +The CDBL value of 68.3865 is 68.3865 +*** TEST # 138 PASSED *** +The CDBL value of 69.621 is 69.621 +*** TEST # 139 PASSED *** +The CDBL value of 70.8555 is 70.8555 +*** TEST # 140 PASSED *** +The CDBL value of 72.09 is 72.09 +*** TEST # 141 PASSED *** +The CDBL value of 73.3245 is 73.3245 +*** TEST # 142 PASSED *** +The CDBL value of 74.559 is 74.559 +*** TEST # 143 PASSED *** +The CDBL value of 75.7935 is 75.7935 +*** TEST # 144 PASSED *** +The CDBL value of 77.028 is 77.028 +*** TEST # 145 PASSED *** +The CDBL value of 78.2625 is 78.2625 +*** TEST # 146 PASSED *** +The CDBL value of 79.497 is 79.497 +*** TEST # 147 PASSED *** +The CDBL value of 80.7315 is 80.7315 +*** TEST # 148 PASSED *** +The CDBL value of 81.966 is 81.966 +*** TEST # 149 PASSED *** +The CDBL value of 83.2005 is 83.2005 +*** TEST # 150 PASSED *** +The CDBL value of 84.435 is 84.435 +*** TEST # 151 PASSED *** +The CDBL value of 85.6695 is 85.6695 +*** TEST # 152 PASSED *** +The CDBL value of 86.904 is 86.904 +*** TEST # 153 PASSED *** +The CDBL value of 88.1385 is 88.1385 +*** TEST # 154 PASSED *** +The CDBL value of 89.373 is 89.373 +*** TEST # 155 PASSED *** +The CDBL value of 90.6075 is 90.6075 +*** TEST # 156 PASSED *** +The CDBL value of 91.842 is 91.842 +*** TEST # 157 PASSED *** +The CDBL value of 93.0765 is 93.0765 +*** TEST # 158 PASSED *** +The CDBL value of 94.311 is 94.311 +*** TEST # 159 PASSED *** +The CDBL value of 95.5455 is 95.5455 +*** TEST # 160 PASSED *** +The CDBL value of 96.78 is 96.78 +*** TEST # 161 PASSED *** +The CDBL value of 98.0145 is 98.0145 +*** TEST # 162 PASSED *** +The CDBL value of 99.249 is 99.249 +*** TEST # 163 PASSED *** +The CDBL value of 100.483 is 100.483 +*** TEST # 164 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E010.BAS b/NBS2/E010.BAS new file mode 100644 index 0000000..6e0b07e --- /dev/null +++ b/NBS2/E010.BAS @@ -0,0 +1,23 @@ +1000 rem ------------------------------------------ +1010 rem Filename: cdbl1.bas +1020 rem Purpose: Verify CDBL() +1100 rem ------------------------------------------ +1110 I = 0 +1120 for X = -100.74 to +100.92 step 1.2345 +1130 I = I + 1 +1140 RESULT = CDBL( X ) +1150 print "The CDBL value of "; X; " is"; RESULT +1160 if RESULT <> X then goto TestFailed +1170 print "*** TEST #"; I; " PASSED ***" +1180 next X +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E010.OUT b/NBS2/E010.OUT new file mode 100644 index 0000000..155417d --- /dev/null +++ b/NBS2/E010.OUT @@ -0,0 +1,329 @@ +The CDBL value of -100.74 is-100.74 +*** TEST # 1 PASSED *** +The CDBL value of -99.5055 is-99.5055 +*** TEST # 2 PASSED *** +The CDBL value of -98.271 is-98.271 +*** TEST # 3 PASSED *** +The CDBL value of -97.0365 is-97.0365 +*** TEST # 4 PASSED *** +The CDBL value of -95.802 is-95.802 +*** TEST # 5 PASSED *** +The CDBL value of -94.5675 is-94.5675 +*** TEST # 6 PASSED *** +The CDBL value of -93.333 is-93.333 +*** TEST # 7 PASSED *** +The CDBL value of -92.0985 is-92.0985 +*** TEST # 8 PASSED *** +The CDBL value of -90.864 is-90.864 +*** TEST # 9 PASSED *** +The CDBL value of -89.6295 is-89.6295 +*** TEST # 10 PASSED *** +The CDBL value of -88.395 is-88.395 +*** TEST # 11 PASSED *** +The CDBL value of -87.1605 is-87.1605 +*** TEST # 12 PASSED *** +The CDBL value of -85.926 is-85.926 +*** TEST # 13 PASSED *** +The CDBL value of -84.6915 is-84.6915 +*** TEST # 14 PASSED *** +The CDBL value of -83.457 is-83.457 +*** TEST # 15 PASSED *** +The CDBL value of -82.2225 is-82.2225 +*** TEST # 16 PASSED *** +The CDBL value of -80.988 is-80.988 +*** TEST # 17 PASSED *** +The CDBL value of -79.7535 is-79.7535 +*** TEST # 18 PASSED *** +The CDBL value of -78.519 is-78.519 +*** TEST # 19 PASSED *** +The CDBL value of -77.2845 is-77.2845 +*** TEST # 20 PASSED *** +The CDBL value of -76.05 is-76.05 +*** TEST # 21 PASSED *** +The CDBL value of -74.8155 is-74.8155 +*** TEST # 22 PASSED *** +The CDBL value of -73.581 is-73.581 +*** TEST # 23 PASSED *** +The CDBL value of -72.3465 is-72.3465 +*** TEST # 24 PASSED *** +The CDBL value of -71.112 is-71.112 +*** TEST # 25 PASSED *** +The CDBL value of -69.8775 is-69.8775 +*** TEST # 26 PASSED *** +The CDBL value of -68.643 is-68.643 +*** TEST # 27 PASSED *** +The CDBL value of -67.4085 is-67.4085 +*** TEST # 28 PASSED *** +The CDBL value of -66.174 is-66.174 +*** TEST # 29 PASSED *** +The CDBL value of -64.9395 is-64.9395 +*** TEST # 30 PASSED *** +The CDBL value of -63.705 is-63.705 +*** TEST # 31 PASSED *** +The CDBL value of -62.4705 is-62.4705 +*** TEST # 32 PASSED *** +The CDBL value of -61.236 is-61.236 +*** TEST # 33 PASSED *** +The CDBL value of -60.0015 is-60.0015 +*** TEST # 34 PASSED *** +The CDBL value of -58.767 is-58.767 +*** TEST # 35 PASSED *** +The CDBL value of -57.5325 is-57.5325 +*** TEST # 36 PASSED *** +The CDBL value of -56.298 is-56.298 +*** TEST # 37 PASSED *** +The CDBL value of -55.0635 is-55.0635 +*** TEST # 38 PASSED *** +The CDBL value of -53.829 is-53.829 +*** TEST # 39 PASSED *** +The CDBL value of -52.5945 is-52.5945 +*** TEST # 40 PASSED *** +The CDBL value of -51.36 is-51.36 +*** TEST # 41 PASSED *** +The CDBL value of -50.1255 is-50.1255 +*** TEST # 42 PASSED *** +The CDBL value of -48.891 is-48.891 +*** TEST # 43 PASSED *** +The CDBL value of -47.6565 is-47.6565 +*** TEST # 44 PASSED *** +The CDBL value of -46.422 is-46.422 +*** TEST # 45 PASSED *** +The CDBL value of -45.1875 is-45.1875 +*** TEST # 46 PASSED *** +The CDBL value of -43.953 is-43.953 +*** TEST # 47 PASSED *** +The CDBL value of -42.7185 is-42.7185 +*** TEST # 48 PASSED *** +The CDBL value of -41.484 is-41.484 +*** TEST # 49 PASSED *** +The CDBL value of -40.2495 is-40.2495 +*** TEST # 50 PASSED *** +The CDBL value of -39.015 is-39.015 +*** TEST # 51 PASSED *** +The CDBL value of -37.7805 is-37.7805 +*** TEST # 52 PASSED *** +The CDBL value of -36.546 is-36.546 +*** TEST # 53 PASSED *** +The CDBL value of -35.3115 is-35.3115 +*** TEST # 54 PASSED *** +The CDBL value of -34.077 is-34.077 +*** TEST # 55 PASSED *** +The CDBL value of -32.8425 is-32.8425 +*** TEST # 56 PASSED *** +The CDBL value of -31.608 is-31.608 +*** TEST # 57 PASSED *** +The CDBL value of -30.3735 is-30.3735 +*** TEST # 58 PASSED *** +The CDBL value of -29.139 is-29.139 +*** TEST # 59 PASSED *** +The CDBL value of -27.9045 is-27.9045 +*** TEST # 60 PASSED *** +The CDBL value of -26.67 is-26.67 +*** TEST # 61 PASSED *** +The CDBL value of -25.4355 is-25.4355 +*** TEST # 62 PASSED *** +The CDBL value of -24.201 is-24.201 +*** TEST # 63 PASSED *** +The CDBL value of -22.9665 is-22.9665 +*** TEST # 64 PASSED *** +The CDBL value of -21.732 is-21.732 +*** TEST # 65 PASSED *** +The CDBL value of -20.4975 is-20.4975 +*** TEST # 66 PASSED *** +The CDBL value of -19.263 is-19.263 +*** TEST # 67 PASSED *** +The CDBL value of -18.0285 is-18.0285 +*** TEST # 68 PASSED *** +The CDBL value of -16.794 is-16.794 +*** TEST # 69 PASSED *** +The CDBL value of -15.5595 is-15.5595 +*** TEST # 70 PASSED *** +The CDBL value of -14.325 is-14.325 +*** TEST # 71 PASSED *** +The CDBL value of -13.0905 is-13.0905 +*** TEST # 72 PASSED *** +The CDBL value of -11.856 is-11.856 +*** TEST # 73 PASSED *** +The CDBL value of -10.6215 is-10.6215 +*** TEST # 74 PASSED *** +The CDBL value of -9.387 is-9.387 +*** TEST # 75 PASSED *** +The CDBL value of -8.1525 is-8.1525 +*** TEST # 76 PASSED *** +The CDBL value of -6.918 is-6.918 +*** TEST # 77 PASSED *** +The CDBL value of -5.6835 is-5.6835 +*** TEST # 78 PASSED *** +The CDBL value of -4.449 is-4.449 +*** TEST # 79 PASSED *** +The CDBL value of -3.2145 is-3.2145 +*** TEST # 80 PASSED *** +The CDBL value of -1.98 is-1.98 +*** TEST # 81 PASSED *** +The CDBL value of -.7455 is-.7455 +*** TEST # 82 PASSED *** +The CDBL value of .489 is .489 +*** TEST # 83 PASSED *** +The CDBL value of 1.7235 is 1.7235 +*** TEST # 84 PASSED *** +The CDBL value of 2.958 is 2.958 +*** TEST # 85 PASSED *** +The CDBL value of 4.1925 is 4.1925 +*** TEST # 86 PASSED *** +The CDBL value of 5.427 is 5.427 +*** TEST # 87 PASSED *** +The CDBL value of 6.6615 is 6.6615 +*** TEST # 88 PASSED *** +The CDBL value of 7.896 is 7.896 +*** TEST # 89 PASSED *** +The CDBL value of 9.1305 is 9.1305 +*** TEST # 90 PASSED *** +The CDBL value of 10.365 is 10.365 +*** TEST # 91 PASSED *** +The CDBL value of 11.5995 is 11.5995 +*** TEST # 92 PASSED *** +The CDBL value of 12.834 is 12.834 +*** TEST # 93 PASSED *** +The CDBL value of 14.0685 is 14.0685 +*** TEST # 94 PASSED *** +The CDBL value of 15.303 is 15.303 +*** TEST # 95 PASSED *** +The CDBL value of 16.5375 is 16.5375 +*** TEST # 96 PASSED *** +The CDBL value of 17.772 is 17.772 +*** TEST # 97 PASSED *** +The CDBL value of 19.0065 is 19.0065 +*** TEST # 98 PASSED *** +The CDBL value of 20.241 is 20.241 +*** TEST # 99 PASSED *** +The CDBL value of 21.4755 is 21.4755 +*** TEST # 100 PASSED *** +The CDBL value of 22.71 is 22.71 +*** TEST # 101 PASSED *** +The CDBL value of 23.9445 is 23.9445 +*** TEST # 102 PASSED *** +The CDBL value of 25.179 is 25.179 +*** TEST # 103 PASSED *** +The CDBL value of 26.4135 is 26.4135 +*** TEST # 104 PASSED *** +The CDBL value of 27.648 is 27.648 +*** TEST # 105 PASSED *** +The CDBL value of 28.8825 is 28.8825 +*** TEST # 106 PASSED *** +The CDBL value of 30.117 is 30.117 +*** TEST # 107 PASSED *** +The CDBL value of 31.3515 is 31.3515 +*** TEST # 108 PASSED *** +The CDBL value of 32.586 is 32.586 +*** TEST # 109 PASSED *** +The CDBL value of 33.8205 is 33.8205 +*** TEST # 110 PASSED *** +The CDBL value of 35.055 is 35.055 +*** TEST # 111 PASSED *** +The CDBL value of 36.2895 is 36.2895 +*** TEST # 112 PASSED *** +The CDBL value of 37.524 is 37.524 +*** TEST # 113 PASSED *** +The CDBL value of 38.7585 is 38.7585 +*** TEST # 114 PASSED *** +The CDBL value of 39.993 is 39.993 +*** TEST # 115 PASSED *** +The CDBL value of 41.2275 is 41.2275 +*** TEST # 116 PASSED *** +The CDBL value of 42.462 is 42.462 +*** TEST # 117 PASSED *** +The CDBL value of 43.6965 is 43.6965 +*** TEST # 118 PASSED *** +The CDBL value of 44.931 is 44.931 +*** TEST # 119 PASSED *** +The CDBL value of 46.1655 is 46.1655 +*** TEST # 120 PASSED *** +The CDBL value of 47.4 is 47.4 +*** TEST # 121 PASSED *** +The CDBL value of 48.6345 is 48.6345 +*** TEST # 122 PASSED *** +The CDBL value of 49.869 is 49.869 +*** TEST # 123 PASSED *** +The CDBL value of 51.1035 is 51.1035 +*** TEST # 124 PASSED *** +The CDBL value of 52.338 is 52.338 +*** TEST # 125 PASSED *** +The CDBL value of 53.5725 is 53.5725 +*** TEST # 126 PASSED *** +The CDBL value of 54.807 is 54.807 +*** TEST # 127 PASSED *** +The CDBL value of 56.0415 is 56.0415 +*** TEST # 128 PASSED *** +The CDBL value of 57.276 is 57.276 +*** TEST # 129 PASSED *** +The CDBL value of 58.5105 is 58.5105 +*** TEST # 130 PASSED *** +The CDBL value of 59.745 is 59.745 +*** TEST # 131 PASSED *** +The CDBL value of 60.9795 is 60.9795 +*** TEST # 132 PASSED *** +The CDBL value of 62.214 is 62.214 +*** TEST # 133 PASSED *** +The CDBL value of 63.4485 is 63.4485 +*** TEST # 134 PASSED *** +The CDBL value of 64.683 is 64.683 +*** TEST # 135 PASSED *** +The CDBL value of 65.9175 is 65.9175 +*** TEST # 136 PASSED *** +The CDBL value of 67.152 is 67.152 +*** TEST # 137 PASSED *** +The CDBL value of 68.3865 is 68.3865 +*** TEST # 138 PASSED *** +The CDBL value of 69.621 is 69.621 +*** TEST # 139 PASSED *** +The CDBL value of 70.8555 is 70.8555 +*** TEST # 140 PASSED *** +The CDBL value of 72.09 is 72.09 +*** TEST # 141 PASSED *** +The CDBL value of 73.3245 is 73.3245 +*** TEST # 142 PASSED *** +The CDBL value of 74.559 is 74.559 +*** TEST # 143 PASSED *** +The CDBL value of 75.7935 is 75.7935 +*** TEST # 144 PASSED *** +The CDBL value of 77.028 is 77.028 +*** TEST # 145 PASSED *** +The CDBL value of 78.2625 is 78.2625 +*** TEST # 146 PASSED *** +The CDBL value of 79.497 is 79.497 +*** TEST # 147 PASSED *** +The CDBL value of 80.7315 is 80.7315 +*** TEST # 148 PASSED *** +The CDBL value of 81.966 is 81.966 +*** TEST # 149 PASSED *** +The CDBL value of 83.2005 is 83.2005 +*** TEST # 150 PASSED *** +The CDBL value of 84.435 is 84.435 +*** TEST # 151 PASSED *** +The CDBL value of 85.6695 is 85.6695 +*** TEST # 152 PASSED *** +The CDBL value of 86.904 is 86.904 +*** TEST # 153 PASSED *** +The CDBL value of 88.1385 is 88.1385 +*** TEST # 154 PASSED *** +The CDBL value of 89.373 is 89.373 +*** TEST # 155 PASSED *** +The CDBL value of 90.6075 is 90.6075 +*** TEST # 156 PASSED *** +The CDBL value of 91.842 is 91.842 +*** TEST # 157 PASSED *** +The CDBL value of 93.0765 is 93.0765 +*** TEST # 158 PASSED *** +The CDBL value of 94.311 is 94.311 +*** TEST # 159 PASSED *** +The CDBL value of 95.5455 is 95.5455 +*** TEST # 160 PASSED *** +The CDBL value of 96.78 is 96.78 +*** TEST # 161 PASSED *** +The CDBL value of 98.0145 is 98.0145 +*** TEST # 162 PASSED *** +The CDBL value of 99.249 is 99.249 +*** TEST # 163 PASSED *** +The CDBL value of 100.483 is 100.483 +*** TEST # 164 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E010.dif b/NBS2/E010.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E010.run b/NBS2/E010.run new file mode 100644 index 0000000..846e366 --- /dev/null +++ b/NBS2/E010.run @@ -0,0 +1,329 @@ +The CDBL value of -100.74 is-100.74 +*** TEST # 1 PASSED *** +The CDBL value of -99.5055 is-99.5055 +*** TEST # 2 PASSED *** +The CDBL value of -98.271 is-98.271 +*** TEST # 3 PASSED *** +The CDBL value of -97.0365 is-97.0365 +*** TEST # 4 PASSED *** +The CDBL value of -95.802 is-95.802 +*** TEST # 5 PASSED *** +The CDBL value of -94.5675 is-94.5675 +*** TEST # 6 PASSED *** +The CDBL value of -93.333 is-93.333 +*** TEST # 7 PASSED *** +The CDBL value of -92.0985 is-92.0985 +*** TEST # 8 PASSED *** +The CDBL value of -90.864 is-90.864 +*** TEST # 9 PASSED *** +The CDBL value of -89.6295 is-89.6295 +*** TEST # 10 PASSED *** +The CDBL value of -88.395 is-88.395 +*** TEST # 11 PASSED *** +The CDBL value of -87.1605 is-87.1605 +*** TEST # 12 PASSED *** +The CDBL value of -85.926 is-85.926 +*** TEST # 13 PASSED *** +The CDBL value of -84.6915 is-84.6915 +*** TEST # 14 PASSED *** +The CDBL value of -83.457 is-83.457 +*** TEST # 15 PASSED *** +The CDBL value of -82.2225 is-82.2225 +*** TEST # 16 PASSED *** +The CDBL value of -80.988 is-80.988 +*** TEST # 17 PASSED *** +The CDBL value of -79.7535 is-79.7535 +*** TEST # 18 PASSED *** +The CDBL value of -78.519 is-78.519 +*** TEST # 19 PASSED *** +The CDBL value of -77.2845 is-77.2845 +*** TEST # 20 PASSED *** +The CDBL value of -76.05 is-76.05 +*** TEST # 21 PASSED *** +The CDBL value of -74.8155 is-74.8155 +*** TEST # 22 PASSED *** +The CDBL value of -73.581 is-73.581 +*** TEST # 23 PASSED *** +The CDBL value of -72.3465 is-72.3465 +*** TEST # 24 PASSED *** +The CDBL value of -71.112 is-71.112 +*** TEST # 25 PASSED *** +The CDBL value of -69.8775 is-69.8775 +*** TEST # 26 PASSED *** +The CDBL value of -68.643 is-68.643 +*** TEST # 27 PASSED *** +The CDBL value of -67.4085 is-67.4085 +*** TEST # 28 PASSED *** +The CDBL value of -66.174 is-66.174 +*** TEST # 29 PASSED *** +The CDBL value of -64.9395 is-64.9395 +*** TEST # 30 PASSED *** +The CDBL value of -63.705 is-63.705 +*** TEST # 31 PASSED *** +The CDBL value of -62.4705 is-62.4705 +*** TEST # 32 PASSED *** +The CDBL value of -61.236 is-61.236 +*** TEST # 33 PASSED *** +The CDBL value of -60.0015 is-60.0015 +*** TEST # 34 PASSED *** +The CDBL value of -58.767 is-58.767 +*** TEST # 35 PASSED *** +The CDBL value of -57.5325 is-57.5325 +*** TEST # 36 PASSED *** +The CDBL value of -56.298 is-56.298 +*** TEST # 37 PASSED *** +The CDBL value of -55.0635 is-55.0635 +*** TEST # 38 PASSED *** +The CDBL value of -53.829 is-53.829 +*** TEST # 39 PASSED *** +The CDBL value of -52.5945 is-52.5945 +*** TEST # 40 PASSED *** +The CDBL value of -51.36 is-51.36 +*** TEST # 41 PASSED *** +The CDBL value of -50.1255 is-50.1255 +*** TEST # 42 PASSED *** +The CDBL value of -48.891 is-48.891 +*** TEST # 43 PASSED *** +The CDBL value of -47.6565 is-47.6565 +*** TEST # 44 PASSED *** +The CDBL value of -46.422 is-46.422 +*** TEST # 45 PASSED *** +The CDBL value of -45.1875 is-45.1875 +*** TEST # 46 PASSED *** +The CDBL value of -43.953 is-43.953 +*** TEST # 47 PASSED *** +The CDBL value of -42.7185 is-42.7185 +*** TEST # 48 PASSED *** +The CDBL value of -41.484 is-41.484 +*** TEST # 49 PASSED *** +The CDBL value of -40.2495 is-40.2495 +*** TEST # 50 PASSED *** +The CDBL value of -39.015 is-39.015 +*** TEST # 51 PASSED *** +The CDBL value of -37.7805 is-37.7805 +*** TEST # 52 PASSED *** +The CDBL value of -36.546 is-36.546 +*** TEST # 53 PASSED *** +The CDBL value of -35.3115 is-35.3115 +*** TEST # 54 PASSED *** +The CDBL value of -34.077 is-34.077 +*** TEST # 55 PASSED *** +The CDBL value of -32.8425 is-32.8425 +*** TEST # 56 PASSED *** +The CDBL value of -31.608 is-31.608 +*** TEST # 57 PASSED *** +The CDBL value of -30.3735 is-30.3735 +*** TEST # 58 PASSED *** +The CDBL value of -29.139 is-29.139 +*** TEST # 59 PASSED *** +The CDBL value of -27.9045 is-27.9045 +*** TEST # 60 PASSED *** +The CDBL value of -26.67 is-26.67 +*** TEST # 61 PASSED *** +The CDBL value of -25.4355 is-25.4355 +*** TEST # 62 PASSED *** +The CDBL value of -24.201 is-24.201 +*** TEST # 63 PASSED *** +The CDBL value of -22.9665 is-22.9665 +*** TEST # 64 PASSED *** +The CDBL value of -21.732 is-21.732 +*** TEST # 65 PASSED *** +The CDBL value of -20.4975 is-20.4975 +*** TEST # 66 PASSED *** +The CDBL value of -19.263 is-19.263 +*** TEST # 67 PASSED *** +The CDBL value of -18.0285 is-18.0285 +*** TEST # 68 PASSED *** +The CDBL value of -16.794 is-16.794 +*** TEST # 69 PASSED *** +The CDBL value of -15.5595 is-15.5595 +*** TEST # 70 PASSED *** +The CDBL value of -14.325 is-14.325 +*** TEST # 71 PASSED *** +The CDBL value of -13.0905 is-13.0905 +*** TEST # 72 PASSED *** +The CDBL value of -11.856 is-11.856 +*** TEST # 73 PASSED *** +The CDBL value of -10.6215 is-10.6215 +*** TEST # 74 PASSED *** +The CDBL value of -9.387 is-9.387 +*** TEST # 75 PASSED *** +The CDBL value of -8.1525 is-8.1525 +*** TEST # 76 PASSED *** +The CDBL value of -6.918 is-6.918 +*** TEST # 77 PASSED *** +The CDBL value of -5.6835 is-5.6835 +*** TEST # 78 PASSED *** +The CDBL value of -4.449 is-4.449 +*** TEST # 79 PASSED *** +The CDBL value of -3.2145 is-3.2145 +*** TEST # 80 PASSED *** +The CDBL value of -1.98 is-1.98 +*** TEST # 81 PASSED *** +The CDBL value of -.7455 is-.7455 +*** TEST # 82 PASSED *** +The CDBL value of .489 is .489 +*** TEST # 83 PASSED *** +The CDBL value of 1.7235 is 1.7235 +*** TEST # 84 PASSED *** +The CDBL value of 2.958 is 2.958 +*** TEST # 85 PASSED *** +The CDBL value of 4.1925 is 4.1925 +*** TEST # 86 PASSED *** +The CDBL value of 5.427 is 5.427 +*** TEST # 87 PASSED *** +The CDBL value of 6.6615 is 6.6615 +*** TEST # 88 PASSED *** +The CDBL value of 7.896 is 7.896 +*** TEST # 89 PASSED *** +The CDBL value of 9.1305 is 9.1305 +*** TEST # 90 PASSED *** +The CDBL value of 10.365 is 10.365 +*** TEST # 91 PASSED *** +The CDBL value of 11.5995 is 11.5995 +*** TEST # 92 PASSED *** +The CDBL value of 12.834 is 12.834 +*** TEST # 93 PASSED *** +The CDBL value of 14.0685 is 14.0685 +*** TEST # 94 PASSED *** +The CDBL value of 15.303 is 15.303 +*** TEST # 95 PASSED *** +The CDBL value of 16.5375 is 16.5375 +*** TEST # 96 PASSED *** +The CDBL value of 17.772 is 17.772 +*** TEST # 97 PASSED *** +The CDBL value of 19.0065 is 19.0065 +*** TEST # 98 PASSED *** +The CDBL value of 20.241 is 20.241 +*** TEST # 99 PASSED *** +The CDBL value of 21.4755 is 21.4755 +*** TEST # 100 PASSED *** +The CDBL value of 22.71 is 22.71 +*** TEST # 101 PASSED *** +The CDBL value of 23.9445 is 23.9445 +*** TEST # 102 PASSED *** +The CDBL value of 25.179 is 25.179 +*** TEST # 103 PASSED *** +The CDBL value of 26.4135 is 26.4135 +*** TEST # 104 PASSED *** +The CDBL value of 27.648 is 27.648 +*** TEST # 105 PASSED *** +The CDBL value of 28.8825 is 28.8825 +*** TEST # 106 PASSED *** +The CDBL value of 30.117 is 30.117 +*** TEST # 107 PASSED *** +The CDBL value of 31.3515 is 31.3515 +*** TEST # 108 PASSED *** +The CDBL value of 32.586 is 32.586 +*** TEST # 109 PASSED *** +The CDBL value of 33.8205 is 33.8205 +*** TEST # 110 PASSED *** +The CDBL value of 35.055 is 35.055 +*** TEST # 111 PASSED *** +The CDBL value of 36.2895 is 36.2895 +*** TEST # 112 PASSED *** +The CDBL value of 37.524 is 37.524 +*** TEST # 113 PASSED *** +The CDBL value of 38.7585 is 38.7585 +*** TEST # 114 PASSED *** +The CDBL value of 39.993 is 39.993 +*** TEST # 115 PASSED *** +The CDBL value of 41.2275 is 41.2275 +*** TEST # 116 PASSED *** +The CDBL value of 42.462 is 42.462 +*** TEST # 117 PASSED *** +The CDBL value of 43.6965 is 43.6965 +*** TEST # 118 PASSED *** +The CDBL value of 44.931 is 44.931 +*** TEST # 119 PASSED *** +The CDBL value of 46.1655 is 46.1655 +*** TEST # 120 PASSED *** +The CDBL value of 47.4 is 47.4 +*** TEST # 121 PASSED *** +The CDBL value of 48.6345 is 48.6345 +*** TEST # 122 PASSED *** +The CDBL value of 49.869 is 49.869 +*** TEST # 123 PASSED *** +The CDBL value of 51.1035 is 51.1035 +*** TEST # 124 PASSED *** +The CDBL value of 52.338 is 52.338 +*** TEST # 125 PASSED *** +The CDBL value of 53.5725 is 53.5725 +*** TEST # 126 PASSED *** +The CDBL value of 54.807 is 54.807 +*** TEST # 127 PASSED *** +The CDBL value of 56.0415 is 56.0415 +*** TEST # 128 PASSED *** +The CDBL value of 57.276 is 57.276 +*** TEST # 129 PASSED *** +The CDBL value of 58.5105 is 58.5105 +*** TEST # 130 PASSED *** +The CDBL value of 59.745 is 59.745 +*** TEST # 131 PASSED *** +The CDBL value of 60.9795 is 60.9795 +*** TEST # 132 PASSED *** +The CDBL value of 62.214 is 62.214 +*** TEST # 133 PASSED *** +The CDBL value of 63.4485 is 63.4485 +*** TEST # 134 PASSED *** +The CDBL value of 64.683 is 64.683 +*** TEST # 135 PASSED *** +The CDBL value of 65.9175 is 65.9175 +*** TEST # 136 PASSED *** +The CDBL value of 67.152 is 67.152 +*** TEST # 137 PASSED *** +The CDBL value of 68.3865 is 68.3865 +*** TEST # 138 PASSED *** +The CDBL value of 69.621 is 69.621 +*** TEST # 139 PASSED *** +The CDBL value of 70.8555 is 70.8555 +*** TEST # 140 PASSED *** +The CDBL value of 72.09 is 72.09 +*** TEST # 141 PASSED *** +The CDBL value of 73.3245 is 73.3245 +*** TEST # 142 PASSED *** +The CDBL value of 74.559 is 74.559 +*** TEST # 143 PASSED *** +The CDBL value of 75.7935 is 75.7935 +*** TEST # 144 PASSED *** +The CDBL value of 77.028 is 77.028 +*** TEST # 145 PASSED *** +The CDBL value of 78.2625 is 78.2625 +*** TEST # 146 PASSED *** +The CDBL value of 79.497 is 79.497 +*** TEST # 147 PASSED *** +The CDBL value of 80.7315 is 80.7315 +*** TEST # 148 PASSED *** +The CDBL value of 81.966 is 81.966 +*** TEST # 149 PASSED *** +The CDBL value of 83.2005 is 83.2005 +*** TEST # 150 PASSED *** +The CDBL value of 84.435 is 84.435 +*** TEST # 151 PASSED *** +The CDBL value of 85.6695 is 85.6695 +*** TEST # 152 PASSED *** +The CDBL value of 86.904 is 86.904 +*** TEST # 153 PASSED *** +The CDBL value of 88.1385 is 88.1385 +*** TEST # 154 PASSED *** +The CDBL value of 89.373 is 89.373 +*** TEST # 155 PASSED *** +The CDBL value of 90.6075 is 90.6075 +*** TEST # 156 PASSED *** +The CDBL value of 91.842 is 91.842 +*** TEST # 157 PASSED *** +The CDBL value of 93.0765 is 93.0765 +*** TEST # 158 PASSED *** +The CDBL value of 94.311 is 94.311 +*** TEST # 159 PASSED *** +The CDBL value of 95.5455 is 95.5455 +*** TEST # 160 PASSED *** +The CDBL value of 96.78 is 96.78 +*** TEST # 161 PASSED *** +The CDBL value of 98.0145 is 98.0145 +*** TEST # 162 PASSED *** +The CDBL value of 99.249 is 99.249 +*** TEST # 163 PASSED *** +The CDBL value of 100.483 is 100.483 +*** TEST # 164 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E011.80 b/NBS2/E011.80 new file mode 100644 index 0000000..13f2f4c --- /dev/null +++ b/NBS2/E011.80 @@ -0,0 +1,5 @@ + 3 +*** TEST #1 PASSED *** +-2 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E011.BAS b/NBS2/E011.BAS new file mode 100644 index 0000000..8935ab9 --- /dev/null +++ b/NBS2/E011.BAS @@ -0,0 +1,33 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: ceil1.bas +00120 REM PURPOSE: Verify CEIL() +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 15th, 2014 +00150 REM ---------------------------------------------------- +01000 REM ---------------------------------------------------- +01010 REM TEST POSITIVE VALUE +01020 REM ---------------------------------------------------- +01100 let a = 2.1 +01110 let c = ceil( a ) +01120 print c +01130 if c <> 3 then goto TestFailed +01140 print "*** TEST #1 PASSED ***" +02000 REM ---------------------------------------------------- +02010 REM TEST NEGATIVE VALUE +02020 REM ---------------------------------------------------- +02100 let a = -2.1 +02110 let c = ceil( a ) +02120 print c +02130 if c <> -2 then goto TestFailed +02140 print "*** TEST #2 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E011.OUT b/NBS2/E011.OUT new file mode 100644 index 0000000..4c37ae1 --- /dev/null +++ b/NBS2/E011.OUT @@ -0,0 +1,5 @@ + 3 +*** TEST #1 PASSED *** +-2 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E011.dif b/NBS2/E011.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E011.run b/NBS2/E011.run new file mode 100644 index 0000000..13f2f4c --- /dev/null +++ b/NBS2/E011.run @@ -0,0 +1,5 @@ + 3 +*** TEST #1 PASSED *** +-2 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E012.80 b/NBS2/E012.80 new file mode 100644 index 0000000..7677bcd --- /dev/null +++ b/NBS2/E012.80 @@ -0,0 +1,257 @@ +*** TEST # 0 PASSED *** +*** TEST # 1 PASSED *** +*** TEST # 2 PASSED *** +*** TEST # 3 PASSED *** +*** TEST # 4 PASSED *** +*** TEST # 5 PASSED *** +*** TEST # 6 PASSED *** +*** TEST # 7 PASSED *** +*** TEST # 8 PASSED *** +*** TEST # 9 PASSED *** +*** TEST # 10 PASSED *** +*** TEST # 11 PASSED *** +*** TEST # 12 PASSED *** +*** TEST # 13 PASSED *** +*** TEST # 14 PASSED *** +*** TEST # 15 PASSED *** +*** TEST # 16 PASSED *** +*** TEST # 17 PASSED *** +*** TEST # 18 PASSED *** +*** TEST # 19 PASSED *** +*** TEST # 20 PASSED *** +*** TEST # 21 PASSED *** +*** TEST # 22 PASSED *** +*** TEST # 23 PASSED *** +*** TEST # 24 PASSED *** +*** TEST # 25 PASSED *** +*** TEST # 26 PASSED *** +*** TEST # 27 PASSED *** +*** TEST # 28 PASSED *** +*** TEST # 29 PASSED *** +*** TEST # 30 PASSED *** +*** TEST # 31 PASSED *** +*** TEST # 32 PASSED *** +*** TEST # 33 PASSED *** +*** TEST # 34 PASSED *** +*** TEST # 35 PASSED *** +*** TEST # 36 PASSED *** +*** TEST # 37 PASSED *** +*** TEST # 38 PASSED *** +*** TEST # 39 PASSED *** +*** TEST # 40 PASSED *** +*** TEST # 41 PASSED *** +*** TEST # 42 PASSED *** +*** TEST # 43 PASSED *** +*** TEST # 44 PASSED *** +*** TEST # 45 PASSED *** +*** TEST # 46 PASSED *** +*** TEST # 47 PASSED *** +*** TEST # 48 PASSED *** +*** TEST # 49 PASSED *** +*** TEST # 50 PASSED *** +*** TEST # 51 PASSED *** +*** TEST # 52 PASSED *** +*** TEST # 53 PASSED *** +*** TEST # 54 PASSED *** +*** TEST # 55 PASSED *** +*** TEST # 56 PASSED *** +*** TEST # 57 PASSED *** +*** TEST # 58 PASSED *** +*** TEST # 59 PASSED *** +*** TEST # 60 PASSED *** +*** TEST # 61 PASSED *** +*** TEST # 62 PASSED *** +*** TEST # 63 PASSED *** +*** TEST # 64 PASSED *** +*** TEST # 65 PASSED *** +*** TEST # 66 PASSED *** +*** TEST # 67 PASSED *** +*** TEST # 68 PASSED *** +*** TEST # 69 PASSED *** +*** TEST # 70 PASSED *** +*** TEST # 71 PASSED *** +*** TEST # 72 PASSED *** +*** TEST # 73 PASSED *** +*** TEST # 74 PASSED *** +*** TEST # 75 PASSED *** +*** TEST # 76 PASSED *** +*** TEST # 77 PASSED *** +*** TEST # 78 PASSED *** +*** TEST # 79 PASSED *** +*** TEST # 80 PASSED *** +*** TEST # 81 PASSED *** +*** TEST # 82 PASSED *** +*** TEST # 83 PASSED *** +*** TEST # 84 PASSED *** +*** TEST # 85 PASSED *** +*** TEST # 86 PASSED *** +*** TEST # 87 PASSED *** +*** TEST # 88 PASSED *** +*** TEST # 89 PASSED *** +*** TEST # 90 PASSED *** +*** TEST # 91 PASSED *** +*** TEST # 92 PASSED *** +*** TEST # 93 PASSED *** +*** TEST # 94 PASSED *** +*** TEST # 95 PASSED *** +*** TEST # 96 PASSED *** +*** TEST # 97 PASSED *** +*** TEST # 98 PASSED *** +*** TEST # 99 PASSED *** +*** TEST # 100 PASSED *** +*** TEST # 101 PASSED *** +*** TEST # 102 PASSED *** +*** TEST # 103 PASSED *** +*** TEST # 104 PASSED *** +*** TEST # 105 PASSED *** +*** TEST # 106 PASSED *** +*** TEST # 107 PASSED *** +*** TEST # 108 PASSED *** +*** TEST # 109 PASSED *** +*** TEST # 110 PASSED *** +*** TEST # 111 PASSED *** +*** TEST # 112 PASSED *** +*** TEST # 113 PASSED *** +*** TEST # 114 PASSED *** +*** TEST # 115 PASSED *** +*** TEST # 116 PASSED *** +*** TEST # 117 PASSED *** +*** TEST # 118 PASSED *** +*** TEST # 119 PASSED *** +*** TEST # 120 PASSED *** +*** TEST # 121 PASSED *** +*** TEST # 122 PASSED *** +*** TEST # 123 PASSED *** +*** TEST # 124 PASSED *** +*** TEST # 125 PASSED *** +*** TEST # 126 PASSED *** +*** TEST # 127 PASSED *** +*** TEST # 128 PASSED *** +*** TEST # 129 PASSED *** +*** TEST # 130 PASSED *** +*** TEST # 131 PASSED *** +*** TEST # 132 PASSED *** +*** TEST # 133 PASSED *** +*** TEST # 134 PASSED *** +*** TEST # 135 PASSED *** +*** TEST # 136 PASSED *** +*** TEST # 137 PASSED *** +*** TEST # 138 PASSED *** +*** TEST # 139 PASSED *** +*** TEST # 140 PASSED *** +*** TEST # 141 PASSED *** +*** TEST # 142 PASSED *** +*** TEST # 143 PASSED *** +*** TEST # 144 PASSED *** +*** TEST # 145 PASSED *** +*** TEST # 146 PASSED *** +*** TEST # 147 PASSED *** +*** TEST # 148 PASSED *** +*** TEST # 149 PASSED *** +*** TEST # 150 PASSED *** +*** TEST # 151 PASSED *** +*** TEST # 152 PASSED *** +*** TEST # 153 PASSED *** +*** TEST # 154 PASSED *** +*** TEST # 155 PASSED *** +*** TEST # 156 PASSED *** +*** TEST # 157 PASSED *** +*** TEST # 158 PASSED *** +*** TEST # 159 PASSED *** +*** TEST # 160 PASSED *** +*** TEST # 161 PASSED *** +*** TEST # 162 PASSED *** +*** TEST # 163 PASSED *** +*** TEST # 164 PASSED *** +*** TEST # 165 PASSED *** +*** TEST # 166 PASSED *** +*** TEST # 167 PASSED *** +*** TEST # 168 PASSED *** +*** TEST # 169 PASSED *** +*** TEST # 170 PASSED *** +*** TEST # 171 PASSED *** +*** TEST # 172 PASSED *** +*** TEST # 173 PASSED *** +*** TEST # 174 PASSED *** +*** TEST # 175 PASSED *** +*** TEST # 176 PASSED *** +*** TEST # 177 PASSED *** +*** TEST # 178 PASSED *** +*** TEST # 179 PASSED *** +*** TEST # 180 PASSED *** +*** TEST # 181 PASSED *** +*** TEST # 182 PASSED *** +*** TEST # 183 PASSED *** +*** TEST # 184 PASSED *** +*** TEST # 185 PASSED *** +*** TEST # 186 PASSED *** +*** TEST # 187 PASSED *** +*** TEST # 188 PASSED *** +*** TEST # 189 PASSED *** +*** TEST # 190 PASSED *** +*** TEST # 191 PASSED *** +*** TEST # 192 PASSED *** +*** TEST # 193 PASSED *** +*** TEST # 194 PASSED *** +*** TEST # 195 PASSED *** +*** TEST # 196 PASSED *** +*** TEST # 197 PASSED *** +*** TEST # 198 PASSED *** +*** TEST # 199 PASSED *** +*** TEST # 200 PASSED *** +*** TEST # 201 PASSED *** +*** TEST # 202 PASSED *** +*** TEST # 203 PASSED *** +*** TEST # 204 PASSED *** +*** TEST # 205 PASSED *** +*** TEST # 206 PASSED *** +*** TEST # 207 PASSED *** +*** TEST # 208 PASSED *** +*** TEST # 209 PASSED *** +*** TEST # 210 PASSED *** +*** TEST # 211 PASSED *** +*** TEST # 212 PASSED *** +*** TEST # 213 PASSED *** +*** TEST # 214 PASSED *** +*** TEST # 215 PASSED *** +*** TEST # 216 PASSED *** +*** TEST # 217 PASSED *** +*** TEST # 218 PASSED *** +*** TEST # 219 PASSED *** +*** TEST # 220 PASSED *** +*** TEST # 221 PASSED *** +*** TEST # 222 PASSED *** +*** TEST # 223 PASSED *** +*** TEST # 224 PASSED *** +*** TEST # 225 PASSED *** +*** TEST # 226 PASSED *** +*** TEST # 227 PASSED *** +*** TEST # 228 PASSED *** +*** TEST # 229 PASSED *** +*** TEST # 230 PASSED *** +*** TEST # 231 PASSED *** +*** TEST # 232 PASSED *** +*** TEST # 233 PASSED *** +*** TEST # 234 PASSED *** +*** TEST # 235 PASSED *** +*** TEST # 236 PASSED *** +*** TEST # 237 PASSED *** +*** TEST # 238 PASSED *** +*** TEST # 239 PASSED *** +*** TEST # 240 PASSED *** +*** TEST # 241 PASSED *** +*** TEST # 242 PASSED *** +*** TEST # 243 PASSED *** +*** TEST # 244 PASSED *** +*** TEST # 245 PASSED *** +*** TEST # 246 PASSED *** +*** TEST # 247 PASSED *** +*** TEST # 248 PASSED *** +*** TEST # 249 PASSED *** +*** TEST # 250 PASSED *** +*** TEST # 251 PASSED *** +*** TEST # 252 PASSED *** +*** TEST # 253 PASSED *** +*** TEST # 254 PASSED *** +*** TEST # 255 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E012.BAS b/NBS2/E012.BAS new file mode 100644 index 0000000..65c74dc --- /dev/null +++ b/NBS2/E012.BAS @@ -0,0 +1,23 @@ +1000 rem ------------------------------------------ +1010 rem Filename: chr1.bas +1020 rem Purpose: Verify CHR() +1100 rem ------------------------------------------ +1110 let R$ = "" +1120 for I = 0 to 255 +1130 let A$ = CHR$( I ) +1140 let B = ASC( A$ ) +1150 if B <> I then goto TestFailed +1160 print "*** TEST #"; I ; " PASSED ***" +1180 next I +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end + diff --git a/NBS2/E012.OUT b/NBS2/E012.OUT new file mode 100644 index 0000000..91c43bf --- /dev/null +++ b/NBS2/E012.OUT @@ -0,0 +1,257 @@ +*** TEST # 0 PASSED *** +*** TEST # 1 PASSED *** +*** TEST # 2 PASSED *** +*** TEST # 3 PASSED *** +*** TEST # 4 PASSED *** +*** TEST # 5 PASSED *** +*** TEST # 6 PASSED *** +*** TEST # 7 PASSED *** +*** TEST # 8 PASSED *** +*** TEST # 9 PASSED *** +*** TEST # 10 PASSED *** +*** TEST # 11 PASSED *** +*** TEST # 12 PASSED *** +*** TEST # 13 PASSED *** +*** TEST # 14 PASSED *** +*** TEST # 15 PASSED *** +*** TEST # 16 PASSED *** +*** TEST # 17 PASSED *** +*** TEST # 18 PASSED *** +*** TEST # 19 PASSED *** +*** TEST # 20 PASSED *** +*** TEST # 21 PASSED *** +*** TEST # 22 PASSED *** +*** TEST # 23 PASSED *** +*** TEST # 24 PASSED *** +*** TEST # 25 PASSED *** +*** TEST # 26 PASSED *** +*** TEST # 27 PASSED *** +*** TEST # 28 PASSED *** +*** TEST # 29 PASSED *** +*** TEST # 30 PASSED *** +*** TEST # 31 PASSED *** +*** TEST # 32 PASSED *** +*** TEST # 33 PASSED *** +*** TEST # 34 PASSED *** +*** TEST # 35 PASSED *** +*** TEST # 36 PASSED *** +*** TEST # 37 PASSED *** +*** TEST # 38 PASSED *** +*** TEST # 39 PASSED *** +*** TEST # 40 PASSED *** +*** TEST # 41 PASSED *** +*** TEST # 42 PASSED *** +*** TEST # 43 PASSED *** +*** TEST # 44 PASSED *** +*** TEST # 45 PASSED *** +*** TEST # 46 PASSED *** +*** TEST # 47 PASSED *** +*** TEST # 48 PASSED *** +*** TEST # 49 PASSED *** +*** TEST # 50 PASSED *** +*** TEST # 51 PASSED *** +*** TEST # 52 PASSED *** +*** TEST # 53 PASSED *** +*** TEST # 54 PASSED *** +*** TEST # 55 PASSED *** +*** TEST # 56 PASSED *** +*** TEST # 57 PASSED *** +*** TEST # 58 PASSED *** +*** TEST # 59 PASSED *** +*** TEST # 60 PASSED *** +*** TEST # 61 PASSED *** +*** TEST # 62 PASSED *** +*** TEST # 63 PASSED *** +*** TEST # 64 PASSED *** +*** TEST # 65 PASSED *** +*** TEST # 66 PASSED *** +*** TEST # 67 PASSED *** +*** TEST # 68 PASSED *** +*** TEST # 69 PASSED *** +*** TEST # 70 PASSED *** +*** TEST # 71 PASSED *** +*** TEST # 72 PASSED *** +*** TEST # 73 PASSED *** +*** TEST # 74 PASSED *** +*** TEST # 75 PASSED *** +*** TEST # 76 PASSED *** +*** TEST # 77 PASSED *** +*** TEST # 78 PASSED *** +*** TEST # 79 PASSED *** +*** TEST # 80 PASSED *** +*** TEST # 81 PASSED *** +*** TEST # 82 PASSED *** +*** TEST # 83 PASSED *** +*** TEST # 84 PASSED *** +*** TEST # 85 PASSED *** +*** TEST # 86 PASSED *** +*** TEST # 87 PASSED *** +*** TEST # 88 PASSED *** +*** TEST # 89 PASSED *** +*** TEST # 90 PASSED *** +*** TEST # 91 PASSED *** +*** TEST # 92 PASSED *** +*** TEST # 93 PASSED *** +*** TEST # 94 PASSED *** +*** TEST # 95 PASSED *** +*** TEST # 96 PASSED *** +*** TEST # 97 PASSED *** +*** TEST # 98 PASSED *** +*** TEST # 99 PASSED *** +*** TEST # 100 PASSED *** +*** TEST # 101 PASSED *** +*** TEST # 102 PASSED *** +*** TEST # 103 PASSED *** +*** TEST # 104 PASSED *** +*** TEST # 105 PASSED *** +*** TEST # 106 PASSED *** +*** TEST # 107 PASSED *** +*** TEST # 108 PASSED *** +*** TEST # 109 PASSED *** +*** TEST # 110 PASSED *** +*** TEST # 111 PASSED *** +*** TEST # 112 PASSED *** +*** TEST # 113 PASSED *** +*** TEST # 114 PASSED *** +*** TEST # 115 PASSED *** +*** TEST # 116 PASSED *** +*** TEST # 117 PASSED *** +*** TEST # 118 PASSED *** +*** TEST # 119 PASSED *** +*** TEST # 120 PASSED *** +*** TEST # 121 PASSED *** +*** TEST # 122 PASSED *** +*** TEST # 123 PASSED *** +*** TEST # 124 PASSED *** +*** TEST # 125 PASSED *** +*** TEST # 126 PASSED *** +*** TEST # 127 PASSED *** +*** TEST # 128 PASSED *** +*** TEST # 129 PASSED *** +*** TEST # 130 PASSED *** +*** TEST # 131 PASSED *** +*** TEST # 132 PASSED *** +*** TEST # 133 PASSED *** +*** TEST # 134 PASSED *** +*** TEST # 135 PASSED *** +*** TEST # 136 PASSED *** +*** TEST # 137 PASSED *** +*** TEST # 138 PASSED *** +*** TEST # 139 PASSED *** +*** TEST # 140 PASSED *** +*** TEST # 141 PASSED *** +*** TEST # 142 PASSED *** +*** TEST # 143 PASSED *** +*** TEST # 144 PASSED *** +*** TEST # 145 PASSED *** +*** TEST # 146 PASSED *** +*** TEST # 147 PASSED *** +*** TEST # 148 PASSED *** +*** TEST # 149 PASSED *** +*** TEST # 150 PASSED *** +*** TEST # 151 PASSED *** +*** TEST # 152 PASSED *** +*** TEST # 153 PASSED *** +*** TEST # 154 PASSED *** +*** TEST # 155 PASSED *** +*** TEST # 156 PASSED *** +*** TEST # 157 PASSED *** +*** TEST # 158 PASSED *** +*** TEST # 159 PASSED *** +*** TEST # 160 PASSED *** +*** TEST # 161 PASSED *** +*** TEST # 162 PASSED *** +*** TEST # 163 PASSED *** +*** TEST # 164 PASSED *** +*** TEST # 165 PASSED *** +*** TEST # 166 PASSED *** +*** TEST # 167 PASSED *** +*** TEST # 168 PASSED *** +*** TEST # 169 PASSED *** +*** TEST # 170 PASSED *** +*** TEST # 171 PASSED *** +*** TEST # 172 PASSED *** +*** TEST # 173 PASSED *** +*** TEST # 174 PASSED *** +*** TEST # 175 PASSED *** +*** TEST # 176 PASSED *** +*** TEST # 177 PASSED *** +*** TEST # 178 PASSED *** +*** TEST # 179 PASSED *** +*** TEST # 180 PASSED *** +*** TEST # 181 PASSED *** +*** TEST # 182 PASSED *** +*** TEST # 183 PASSED *** +*** TEST # 184 PASSED *** +*** TEST # 185 PASSED *** +*** TEST # 186 PASSED *** +*** TEST # 187 PASSED *** +*** TEST # 188 PASSED *** +*** TEST # 189 PASSED *** +*** TEST # 190 PASSED *** +*** TEST # 191 PASSED *** +*** TEST # 192 PASSED *** +*** TEST # 193 PASSED *** +*** TEST # 194 PASSED *** +*** TEST # 195 PASSED *** +*** TEST # 196 PASSED *** +*** TEST # 197 PASSED *** +*** TEST # 198 PASSED *** +*** TEST # 199 PASSED *** +*** TEST # 200 PASSED *** +*** TEST # 201 PASSED *** +*** TEST # 202 PASSED *** +*** TEST # 203 PASSED *** +*** TEST # 204 PASSED *** +*** TEST # 205 PASSED *** +*** TEST # 206 PASSED *** +*** TEST # 207 PASSED *** +*** TEST # 208 PASSED *** +*** TEST # 209 PASSED *** +*** TEST # 210 PASSED *** +*** TEST # 211 PASSED *** +*** TEST # 212 PASSED *** +*** TEST # 213 PASSED *** +*** TEST # 214 PASSED *** +*** TEST # 215 PASSED *** +*** TEST # 216 PASSED *** +*** TEST # 217 PASSED *** +*** TEST # 218 PASSED *** +*** TEST # 219 PASSED *** +*** TEST # 220 PASSED *** +*** TEST # 221 PASSED *** +*** TEST # 222 PASSED *** +*** TEST # 223 PASSED *** +*** TEST # 224 PASSED *** +*** TEST # 225 PASSED *** +*** TEST # 226 PASSED *** +*** TEST # 227 PASSED *** +*** TEST # 228 PASSED *** +*** TEST # 229 PASSED *** +*** TEST # 230 PASSED *** +*** TEST # 231 PASSED *** +*** TEST # 232 PASSED *** +*** TEST # 233 PASSED *** +*** TEST # 234 PASSED *** +*** TEST # 235 PASSED *** +*** TEST # 236 PASSED *** +*** TEST # 237 PASSED *** +*** TEST # 238 PASSED *** +*** TEST # 239 PASSED *** +*** TEST # 240 PASSED *** +*** TEST # 241 PASSED *** +*** TEST # 242 PASSED *** +*** TEST # 243 PASSED *** +*** TEST # 244 PASSED *** +*** TEST # 245 PASSED *** +*** TEST # 246 PASSED *** +*** TEST # 247 PASSED *** +*** TEST # 248 PASSED *** +*** TEST # 249 PASSED *** +*** TEST # 250 PASSED *** +*** TEST # 251 PASSED *** +*** TEST # 252 PASSED *** +*** TEST # 253 PASSED *** +*** TEST # 254 PASSED *** +*** TEST # 255 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E012.dif b/NBS2/E012.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E012.run b/NBS2/E012.run new file mode 100644 index 0000000..7677bcd --- /dev/null +++ b/NBS2/E012.run @@ -0,0 +1,257 @@ +*** TEST # 0 PASSED *** +*** TEST # 1 PASSED *** +*** TEST # 2 PASSED *** +*** TEST # 3 PASSED *** +*** TEST # 4 PASSED *** +*** TEST # 5 PASSED *** +*** TEST # 6 PASSED *** +*** TEST # 7 PASSED *** +*** TEST # 8 PASSED *** +*** TEST # 9 PASSED *** +*** TEST # 10 PASSED *** +*** TEST # 11 PASSED *** +*** TEST # 12 PASSED *** +*** TEST # 13 PASSED *** +*** TEST # 14 PASSED *** +*** TEST # 15 PASSED *** +*** TEST # 16 PASSED *** +*** TEST # 17 PASSED *** +*** TEST # 18 PASSED *** +*** TEST # 19 PASSED *** +*** TEST # 20 PASSED *** +*** TEST # 21 PASSED *** +*** TEST # 22 PASSED *** +*** TEST # 23 PASSED *** +*** TEST # 24 PASSED *** +*** TEST # 25 PASSED *** +*** TEST # 26 PASSED *** +*** TEST # 27 PASSED *** +*** TEST # 28 PASSED *** +*** TEST # 29 PASSED *** +*** TEST # 30 PASSED *** +*** TEST # 31 PASSED *** +*** TEST # 32 PASSED *** +*** TEST # 33 PASSED *** +*** TEST # 34 PASSED *** +*** TEST # 35 PASSED *** +*** TEST # 36 PASSED *** +*** TEST # 37 PASSED *** +*** TEST # 38 PASSED *** +*** TEST # 39 PASSED *** +*** TEST # 40 PASSED *** +*** TEST # 41 PASSED *** +*** TEST # 42 PASSED *** +*** TEST # 43 PASSED *** +*** TEST # 44 PASSED *** +*** TEST # 45 PASSED *** +*** TEST # 46 PASSED *** +*** TEST # 47 PASSED *** +*** TEST # 48 PASSED *** +*** TEST # 49 PASSED *** +*** TEST # 50 PASSED *** +*** TEST # 51 PASSED *** +*** TEST # 52 PASSED *** +*** TEST # 53 PASSED *** +*** TEST # 54 PASSED *** +*** TEST # 55 PASSED *** +*** TEST # 56 PASSED *** +*** TEST # 57 PASSED *** +*** TEST # 58 PASSED *** +*** TEST # 59 PASSED *** +*** TEST # 60 PASSED *** +*** TEST # 61 PASSED *** +*** TEST # 62 PASSED *** +*** TEST # 63 PASSED *** +*** TEST # 64 PASSED *** +*** TEST # 65 PASSED *** +*** TEST # 66 PASSED *** +*** TEST # 67 PASSED *** +*** TEST # 68 PASSED *** +*** TEST # 69 PASSED *** +*** TEST # 70 PASSED *** +*** TEST # 71 PASSED *** +*** TEST # 72 PASSED *** +*** TEST # 73 PASSED *** +*** TEST # 74 PASSED *** +*** TEST # 75 PASSED *** +*** TEST # 76 PASSED *** +*** TEST # 77 PASSED *** +*** TEST # 78 PASSED *** +*** TEST # 79 PASSED *** +*** TEST # 80 PASSED *** +*** TEST # 81 PASSED *** +*** TEST # 82 PASSED *** +*** TEST # 83 PASSED *** +*** TEST # 84 PASSED *** +*** TEST # 85 PASSED *** +*** TEST # 86 PASSED *** +*** TEST # 87 PASSED *** +*** TEST # 88 PASSED *** +*** TEST # 89 PASSED *** +*** TEST # 90 PASSED *** +*** TEST # 91 PASSED *** +*** TEST # 92 PASSED *** +*** TEST # 93 PASSED *** +*** TEST # 94 PASSED *** +*** TEST # 95 PASSED *** +*** TEST # 96 PASSED *** +*** TEST # 97 PASSED *** +*** TEST # 98 PASSED *** +*** TEST # 99 PASSED *** +*** TEST # 100 PASSED *** +*** TEST # 101 PASSED *** +*** TEST # 102 PASSED *** +*** TEST # 103 PASSED *** +*** TEST # 104 PASSED *** +*** TEST # 105 PASSED *** +*** TEST # 106 PASSED *** +*** TEST # 107 PASSED *** +*** TEST # 108 PASSED *** +*** TEST # 109 PASSED *** +*** TEST # 110 PASSED *** +*** TEST # 111 PASSED *** +*** TEST # 112 PASSED *** +*** TEST # 113 PASSED *** +*** TEST # 114 PASSED *** +*** TEST # 115 PASSED *** +*** TEST # 116 PASSED *** +*** TEST # 117 PASSED *** +*** TEST # 118 PASSED *** +*** TEST # 119 PASSED *** +*** TEST # 120 PASSED *** +*** TEST # 121 PASSED *** +*** TEST # 122 PASSED *** +*** TEST # 123 PASSED *** +*** TEST # 124 PASSED *** +*** TEST # 125 PASSED *** +*** TEST # 126 PASSED *** +*** TEST # 127 PASSED *** +*** TEST # 128 PASSED *** +*** TEST # 129 PASSED *** +*** TEST # 130 PASSED *** +*** TEST # 131 PASSED *** +*** TEST # 132 PASSED *** +*** TEST # 133 PASSED *** +*** TEST # 134 PASSED *** +*** TEST # 135 PASSED *** +*** TEST # 136 PASSED *** +*** TEST # 137 PASSED *** +*** TEST # 138 PASSED *** +*** TEST # 139 PASSED *** +*** TEST # 140 PASSED *** +*** TEST # 141 PASSED *** +*** TEST # 142 PASSED *** +*** TEST # 143 PASSED *** +*** TEST # 144 PASSED *** +*** TEST # 145 PASSED *** +*** TEST # 146 PASSED *** +*** TEST # 147 PASSED *** +*** TEST # 148 PASSED *** +*** TEST # 149 PASSED *** +*** TEST # 150 PASSED *** +*** TEST # 151 PASSED *** +*** TEST # 152 PASSED *** +*** TEST # 153 PASSED *** +*** TEST # 154 PASSED *** +*** TEST # 155 PASSED *** +*** TEST # 156 PASSED *** +*** TEST # 157 PASSED *** +*** TEST # 158 PASSED *** +*** TEST # 159 PASSED *** +*** TEST # 160 PASSED *** +*** TEST # 161 PASSED *** +*** TEST # 162 PASSED *** +*** TEST # 163 PASSED *** +*** TEST # 164 PASSED *** +*** TEST # 165 PASSED *** +*** TEST # 166 PASSED *** +*** TEST # 167 PASSED *** +*** TEST # 168 PASSED *** +*** TEST # 169 PASSED *** +*** TEST # 170 PASSED *** +*** TEST # 171 PASSED *** +*** TEST # 172 PASSED *** +*** TEST # 173 PASSED *** +*** TEST # 174 PASSED *** +*** TEST # 175 PASSED *** +*** TEST # 176 PASSED *** +*** TEST # 177 PASSED *** +*** TEST # 178 PASSED *** +*** TEST # 179 PASSED *** +*** TEST # 180 PASSED *** +*** TEST # 181 PASSED *** +*** TEST # 182 PASSED *** +*** TEST # 183 PASSED *** +*** TEST # 184 PASSED *** +*** TEST # 185 PASSED *** +*** TEST # 186 PASSED *** +*** TEST # 187 PASSED *** +*** TEST # 188 PASSED *** +*** TEST # 189 PASSED *** +*** TEST # 190 PASSED *** +*** TEST # 191 PASSED *** +*** TEST # 192 PASSED *** +*** TEST # 193 PASSED *** +*** TEST # 194 PASSED *** +*** TEST # 195 PASSED *** +*** TEST # 196 PASSED *** +*** TEST # 197 PASSED *** +*** TEST # 198 PASSED *** +*** TEST # 199 PASSED *** +*** TEST # 200 PASSED *** +*** TEST # 201 PASSED *** +*** TEST # 202 PASSED *** +*** TEST # 203 PASSED *** +*** TEST # 204 PASSED *** +*** TEST # 205 PASSED *** +*** TEST # 206 PASSED *** +*** TEST # 207 PASSED *** +*** TEST # 208 PASSED *** +*** TEST # 209 PASSED *** +*** TEST # 210 PASSED *** +*** TEST # 211 PASSED *** +*** TEST # 212 PASSED *** +*** TEST # 213 PASSED *** +*** TEST # 214 PASSED *** +*** TEST # 215 PASSED *** +*** TEST # 216 PASSED *** +*** TEST # 217 PASSED *** +*** TEST # 218 PASSED *** +*** TEST # 219 PASSED *** +*** TEST # 220 PASSED *** +*** TEST # 221 PASSED *** +*** TEST # 222 PASSED *** +*** TEST # 223 PASSED *** +*** TEST # 224 PASSED *** +*** TEST # 225 PASSED *** +*** TEST # 226 PASSED *** +*** TEST # 227 PASSED *** +*** TEST # 228 PASSED *** +*** TEST # 229 PASSED *** +*** TEST # 230 PASSED *** +*** TEST # 231 PASSED *** +*** TEST # 232 PASSED *** +*** TEST # 233 PASSED *** +*** TEST # 234 PASSED *** +*** TEST # 235 PASSED *** +*** TEST # 236 PASSED *** +*** TEST # 237 PASSED *** +*** TEST # 238 PASSED *** +*** TEST # 239 PASSED *** +*** TEST # 240 PASSED *** +*** TEST # 241 PASSED *** +*** TEST # 242 PASSED *** +*** TEST # 243 PASSED *** +*** TEST # 244 PASSED *** +*** TEST # 245 PASSED *** +*** TEST # 246 PASSED *** +*** TEST # 247 PASSED *** +*** TEST # 248 PASSED *** +*** TEST # 249 PASSED *** +*** TEST # 250 PASSED *** +*** TEST # 251 PASSED *** +*** TEST # 252 PASSED *** +*** TEST # 253 PASSED *** +*** TEST # 254 PASSED *** +*** TEST # 255 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E013.80 b/NBS2/E013.80 new file mode 100644 index 0000000..599d6a4 --- /dev/null +++ b/NBS2/E013.80 @@ -0,0 +1,5 @@ +The integer value of -1.23457 is-1 +*** TEST #1 PASSED *** +The integer value of 1.23457 is 1 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E013.BAS b/NBS2/E013.BAS new file mode 100644 index 0000000..de5b8c9 --- /dev/null +++ b/NBS2/E013.BAS @@ -0,0 +1,26 @@ +1000 rem ------------------------------------------ +1010 rem Filename: cint1.bas +1020 rem Purpose: Verify CINT() +1100 rem ------------------------------------------ +1120 X = -1.23456789 +1130 RESULT = CINT( X ) +1140 print "The integer value of "; X; " is"; RESULT +1150 if RESULT <> -1 then goto TestFailed +1160 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 1.23456789 +1230 RESULT = CINT( X ) +1240 print "The integer value of "; X; " is"; RESULT +1250 if RESULT <> 1 then goto TestFailed +1260 print "*** TEST #2 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E013.OUT b/NBS2/E013.OUT new file mode 100644 index 0000000..634810a --- /dev/null +++ b/NBS2/E013.OUT @@ -0,0 +1,5 @@ +The integer value of -1.23457 is-1 +*** TEST #1 PASSED *** +The integer value of 1.23457 is 1 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E013.dif b/NBS2/E013.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E013.run b/NBS2/E013.run new file mode 100644 index 0000000..599d6a4 --- /dev/null +++ b/NBS2/E013.run @@ -0,0 +1,5 @@ +The integer value of -1.23457 is-1 +*** TEST #1 PASSED *** +The integer value of 1.23457 is 1 +*** TEST #2 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E014.80 b/NBS2/E014.80 new file mode 100644 index 0000000..396873a --- /dev/null +++ b/NBS2/E014.80 @@ -0,0 +1,5 @@ +The value of A is 0 +The value of B$ is +The value of Y is 0 +The value of Z$ is +*** ALL TESTS PASSED *** diff --git a/NBS2/E014.BAS b/NBS2/E014.BAS new file mode 100644 index 0000000..6610c4e --- /dev/null +++ b/NBS2/E014.BAS @@ -0,0 +1,44 @@ +1000 rem ------------------------------------------ +1010 rem Filename: clear1.bas +1020 rem Purpose: Verify CLEAR +1030 rem ------------------------------------------ +1100 rem Assign Values +1110 COMMON A, B$ +1120 A = 1.2345 +1130 B$ = "abcdef" +1140 Y = 6.789 +1150 Z$ = "wxyz" +1160 CLEAR +1200 rem Display values +1210 print "The value of A is";A +1220 print "The value of B$ is";B$ +1230 print "The value of Y is";Y +1250 print "The value of Z$ is";Z$ +1300 rem Verify values +1310 if A <> 0 then +1311 print "A is not zero" +1312 goto TestFailed +1313 end if +1320 if B$ <> "" then +1321 print "B$ is not empty" +1322 goto TestFailed +1323 end if +1330 if Y <> 0 then +1331 print "Y is not zero" +1332 goto TestFailed +1333 end if +1340 if Z$ <> "" then +1341 print "Z$ is not empty" +1342 goto TestFailed +1343 end if +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E014.OUT b/NBS2/E014.OUT new file mode 100644 index 0000000..316559d --- /dev/null +++ b/NBS2/E014.OUT @@ -0,0 +1,5 @@ +The value of A is 0 +The value of B$ is +The value of Y is 0 +The value of Z$ is +*** ALL TESTS PASSED *** diff --git a/NBS2/E014.dif b/NBS2/E014.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E014.run b/NBS2/E014.run new file mode 100644 index 0000000..396873a --- /dev/null +++ b/NBS2/E014.run @@ -0,0 +1,5 @@ +The value of A is 0 +The value of B$ is +The value of Y is 0 +The value of Z$ is +*** ALL TESTS PASSED *** diff --git a/NBS2/E015.80 b/NBS2/E015.80 new file mode 100644 index 0000000..465e32a --- /dev/null +++ b/NBS2/E015.80 @@ -0,0 +1,11 @@ +The cosine value of 0 is 1 +*** TEST #1 PASSED *** +The cosine value of .5 is .877583 +*** TEST #2 PASSED *** +The cosine value of -.5 is .877583 +*** TEST #3 PASSED *** +The cosine value of 1 is .540302 +*** TEST #4 PASSED *** +The cosine value of -1 is .540302 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E015.BAS b/NBS2/E015.BAS new file mode 100644 index 0000000..c844fc6 --- /dev/null +++ b/NBS2/E015.BAS @@ -0,0 +1,49 @@ +1000 rem ------------------------------------------ +1010 rem Filename: cos1.bas +1020 rem Purpose: Verify COS() +1100 rem ------------------------------------------ +1120 X = 0 +1130 RESULT = COS( X ) +1140 print "The cosine value of "; X; " is"; RESULT +1150 if RESULT < 1 then goto TestFailed +1160 if RESULT > 1 then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 0.5 +1230 RESULT = COS( X ) +1240 print "The cosine value of "; X; " is"; RESULT +1250 if RESULT < 0.8775825 then goto TestFailed +1260 if RESULT > 0.8775827 then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 X = -0.5 +1330 RESULT = COS( X ) +1340 print "The cosine value of "; X; " is"; RESULT +1350 if RESULT < 0.8775825 then goto TestFailed +1360 if RESULT > 0.8775827 then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 X = 1 +1430 RESULT = COS( X ) +1440 print "The cosine value of "; X; " is"; RESULT +1450 if RESULT < 0.5403022 then goto TestFailed +1460 if RESULT > 0.5403024 then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 X = -1 +1530 RESULT = COS( X ) +1540 print "The cosine value of "; X; " is"; RESULT +1550 if RESULT < 0.5403022 then goto TestFailed +1560 if RESULT > 0.5403024 then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E015.OUT b/NBS2/E015.OUT new file mode 100644 index 0000000..9a1a0d2 --- /dev/null +++ b/NBS2/E015.OUT @@ -0,0 +1,11 @@ +The cosine value of 0 is 1 +*** TEST #1 PASSED *** +The cosine value of .5 is .877583 +*** TEST #2 PASSED *** +The cosine value of -.5 is .877583 +*** TEST #3 PASSED *** +The cosine value of 1 is .540302 +*** TEST #4 PASSED *** +The cosine value of -1 is .540302 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E015.dif b/NBS2/E015.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E015.run b/NBS2/E015.run new file mode 100644 index 0000000..465e32a --- /dev/null +++ b/NBS2/E015.run @@ -0,0 +1,11 @@ +The cosine value of 0 is 1 +*** TEST #1 PASSED *** +The cosine value of .5 is .877583 +*** TEST #2 PASSED *** +The cosine value of -.5 is .877583 +*** TEST #3 PASSED *** +The cosine value of 1 is .540302 +*** TEST #4 PASSED *** +The cosine value of -1 is .540302 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E016.80 b/NBS2/E016.80 new file mode 100644 index 0000000..e9d0982 --- /dev/null +++ b/NBS2/E016.80 @@ -0,0 +1,11 @@ +The hyperbolic cosine value of 0 is 1 +*** TEST #1 PASSED *** +The hyperbolic cosine value of .5 is 1.12763 +*** TEST #2 PASSED *** +The hyperbolic cosine value of -.5 is 1.12763 +*** TEST #3 PASSED *** +The hyperbolic cosine value of 1 is 1.54308 +*** TEST #4 PASSED *** +The hyperbolic cosine value of -1 is 1.54308 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E016.BAS b/NBS2/E016.BAS new file mode 100644 index 0000000..c90a014 --- /dev/null +++ b/NBS2/E016.BAS @@ -0,0 +1,49 @@ +1000 rem ------------------------------------------ +1010 rem Filename: cosh1.bas +1020 rem Purpose: Verify COSH() +1100 rem ------------------------------------------ +1120 X = 0 +1130 RESULT = COSH( X ) +1140 print "The hyperbolic cosine value of "; X; " is"; RESULT +1150 if RESULT < 1 then goto TestFailed +1160 if RESULT > 1 then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 0.5 +1230 RESULT = COSH( X ) +1240 print "The hyperbolic cosine value of "; X; " is"; RESULT +1250 if RESULT < 1.1276259 then goto TestFailed +1260 if RESULT > 1.1276261 then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 X = -0.5 +1330 RESULT = COSH( X ) +1340 print "The hyperbolic cosine value of "; X; " is"; RESULT +1350 if RESULT < 1.1276259 then goto TestFailed +1360 if RESULT > 1.1276261 then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 X = 1 +1430 RESULT = COSH( X ) +1440 print "The hyperbolic cosine value of "; X; " is"; RESULT +1450 if RESULT < 1.5430805 then goto TestFailed +1460 if RESULT > 1.5430807 then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 X = -1 +1530 RESULT = COSH( X ) +1540 print "The hyperbolic cosine value of "; X; " is"; RESULT +1550 if RESULT < 1.5430805 then goto TestFailed +1560 if RESULT > 1.5430807 then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E016.OUT b/NBS2/E016.OUT new file mode 100644 index 0000000..13761e5 --- /dev/null +++ b/NBS2/E016.OUT @@ -0,0 +1,11 @@ +The hyperbolic cosine value of 0 is 1 +*** TEST #1 PASSED *** +The hyperbolic cosine value of .5 is 1.12763 +*** TEST #2 PASSED *** +The hyperbolic cosine value of -.5 is 1.12763 +*** TEST #3 PASSED *** +The hyperbolic cosine value of 1 is 1.54308 +*** TEST #4 PASSED *** +The hyperbolic cosine value of -1 is 1.54308 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E016.dif b/NBS2/E016.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E016.run b/NBS2/E016.run new file mode 100644 index 0000000..e9d0982 --- /dev/null +++ b/NBS2/E016.run @@ -0,0 +1,11 @@ +The hyperbolic cosine value of 0 is 1 +*** TEST #1 PASSED *** +The hyperbolic cosine value of .5 is 1.12763 +*** TEST #2 PASSED *** +The hyperbolic cosine value of -.5 is 1.12763 +*** TEST #3 PASSED *** +The hyperbolic cosine value of 1 is 1.54308 +*** TEST #4 PASSED *** +The hyperbolic cosine value of -1 is 1.54308 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E017.80 b/NBS2/E017.80 new file mode 100644 index 0000000..452f87d --- /dev/null +++ b/NBS2/E017.80 @@ -0,0 +1,11 @@ +The cotangent value of .0001 is 10000. +*** TEST #1 PASSED *** +The cotangent value of .5 is 1.83049 +*** TEST #2 PASSED *** +The cotangent value of -.5 is-1.83049 +*** TEST #3 PASSED *** +The cotangent value of 1 is .642093 +*** TEST #4 PASSED *** +The cotangent value of -1 is-.642093 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E017.BAS b/NBS2/E017.BAS new file mode 100644 index 0000000..aac5605 --- /dev/null +++ b/NBS2/E017.BAS @@ -0,0 +1,49 @@ +1000 rem ------------------------------------------ +1010 rem Filename: cot1.bas +1020 rem Purpose: Verify COT() +1100 rem ------------------------------------------ +1120 X = 0.0001 +1130 RESULT = COT( X ) +1140 print "The cotangent value of "; X; " is"; RESULT +1150 if RESULT < 9999.9999666 then goto TestFailed +1160 if RESULT > 9999.9999668 then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 0.5 +1230 RESULT = COT( X ) +1240 print "The cotangent value of "; X; " is"; RESULT +1250 if RESULT < 1.8304876 then goto TestFailed +1260 if RESULT > 1.8304878 then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 X = -0.5 +1330 RESULT = COT( X ) +1340 print "The cotangent value of "; X; " is"; RESULT +1350 if RESULT > -1.8304876 then goto TestFailed +1360 if RESULT < -1.8304878 then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 X = 1 +1430 RESULT = COT( X ) +1440 print "The cotangent value of "; X; " is"; RESULT +1450 if RESULT < 0.6420925 then goto TestFailed +1460 if RESULT > 0.6420927 then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 X = -1 +1530 RESULT = COT( X ) +1540 print "The cotangent value of "; X; " is"; RESULT +1550 if RESULT > -0.6420925 then goto TestFailed +1560 if RESULT < -0.6420927 then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E017.OUT b/NBS2/E017.OUT new file mode 100644 index 0000000..f84e01c --- /dev/null +++ b/NBS2/E017.OUT @@ -0,0 +1,11 @@ +The cotangent value of .0001 is 10000. +*** TEST #1 PASSED *** +The cotangent value of .5 is 1.83049 +*** TEST #2 PASSED *** +The cotangent value of -.5 is-1.83049 +*** TEST #3 PASSED *** +The cotangent value of 1 is .642093 +*** TEST #4 PASSED *** +The cotangent value of -1 is-.642093 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E017.dif b/NBS2/E017.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E017.run b/NBS2/E017.run new file mode 100644 index 0000000..452f87d --- /dev/null +++ b/NBS2/E017.run @@ -0,0 +1,11 @@ +The cotangent value of .0001 is 10000. +*** TEST #1 PASSED *** +The cotangent value of .5 is 1.83049 +*** TEST #2 PASSED *** +The cotangent value of -.5 is-1.83049 +*** TEST #3 PASSED *** +The cotangent value of 1 is .642093 +*** TEST #4 PASSED *** +The cotangent value of -1 is-.642093 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E018.80 b/NBS2/E018.80 new file mode 100644 index 0000000..190ee53 --- /dev/null +++ b/NBS2/E018.80 @@ -0,0 +1,11 @@ +The cosecant value of .0001 is 10000. +*** TEST #1 PASSED *** +The cosecant value of .5 is 2.08583 +*** TEST #2 PASSED *** +The cosecant value of -.5 is-2.08583 +*** TEST #3 PASSED *** +The cosecant value of 1 is 1.1884 +*** TEST #4 PASSED *** +The cosecant value of -1 is-1.1884 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E018.BAS b/NBS2/E018.BAS new file mode 100644 index 0000000..4ca46b0 --- /dev/null +++ b/NBS2/E018.BAS @@ -0,0 +1,49 @@ +1000 rem ------------------------------------------ +1010 rem Filename: csc1.bas +1020 rem Purpose: Verify CSC() +1100 rem ------------------------------------------ +1120 X = 0.0001 +1130 RESULT = CSC( X ) +1140 print "The cosecant value of "; X; " is"; RESULT +1150 if RESULT < 10000.0000166 then goto TestFailed +1160 if RESULT > 10000.0000168 then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 X = 0.5 +1230 RESULT = CSC( X ) +1240 print "The cosecant value of "; X; " is"; RESULT +1250 if RESULT < 2.0858295 then goto TestFailed +1260 if RESULT > 2.0858297 then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 X = -0.5 +1330 RESULT = CSC( X ) +1340 print "The cosecant value of "; X; " is"; RESULT +1350 if RESULT > -2.0858295 then goto TestFailed +1360 if RESULT < -2.0858297 then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 X = 1 +1430 RESULT = CSC( X ) +1440 print "The cosecant value of "; X; " is"; RESULT +1450 if RESULT < 1.1883950 then goto TestFailed +1460 if RESULT > 1.1883952 then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 X = -1 +1530 RESULT = CSC( X ) +1540 print "The cosecant value of "; X; " is"; RESULT +1550 if RESULT > -1.1883950 then goto TestFailed +1560 if RESULT < -1.1883952 then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E018.OUT b/NBS2/E018.OUT new file mode 100644 index 0000000..ce9c784 --- /dev/null +++ b/NBS2/E018.OUT @@ -0,0 +1,11 @@ +The cosecant value of .0001 is 10000. +*** TEST #1 PASSED *** +The cosecant value of .5 is 2.08583 +*** TEST #2 PASSED *** +The cosecant value of -.5 is-2.08583 +*** TEST #3 PASSED *** +The cosecant value of 1 is 1.1884 +*** TEST #4 PASSED *** +The cosecant value of -1 is-1.1884 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E018.dif b/NBS2/E018.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E018.run b/NBS2/E018.run new file mode 100644 index 0000000..190ee53 --- /dev/null +++ b/NBS2/E018.run @@ -0,0 +1,11 @@ +The cosecant value of .0001 is 10000. +*** TEST #1 PASSED *** +The cosecant value of .5 is 2.08583 +*** TEST #2 PASSED *** +The cosecant value of -.5 is-2.08583 +*** TEST #3 PASSED *** +The cosecant value of 1 is 1.1884 +*** TEST #4 PASSED *** +The cosecant value of -1 is-1.1884 +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E019.80 b/NBS2/E019.80 new file mode 100644 index 0000000..3ff141a --- /dev/null +++ b/NBS2/E019.80 @@ -0,0 +1,329 @@ +The CSNG value of -100.74 is-100.74 +*** TEST # 1 PASSED *** +The CSNG value of -99.5055 is-99.5055 +*** TEST # 2 PASSED *** +The CSNG value of -98.271 is-98.271 +*** TEST # 3 PASSED *** +The CSNG value of -97.0365 is-97.0365 +*** TEST # 4 PASSED *** +The CSNG value of -95.802 is-95.802 +*** TEST # 5 PASSED *** +The CSNG value of -94.5675 is-94.5675 +*** TEST # 6 PASSED *** +The CSNG value of -93.333 is-93.333 +*** TEST # 7 PASSED *** +The CSNG value of -92.0985 is-92.0985 +*** TEST # 8 PASSED *** +The CSNG value of -90.864 is-90.864 +*** TEST # 9 PASSED *** +The CSNG value of -89.6295 is-89.6295 +*** TEST # 10 PASSED *** +The CSNG value of -88.395 is-88.395 +*** TEST # 11 PASSED *** +The CSNG value of -87.1605 is-87.1605 +*** TEST # 12 PASSED *** +The CSNG value of -85.926 is-85.926 +*** TEST # 13 PASSED *** +The CSNG value of -84.6915 is-84.6915 +*** TEST # 14 PASSED *** +The CSNG value of -83.457 is-83.457 +*** TEST # 15 PASSED *** +The CSNG value of -82.2225 is-82.2225 +*** TEST # 16 PASSED *** +The CSNG value of -80.988 is-80.988 +*** TEST # 17 PASSED *** +The CSNG value of -79.7535 is-79.7535 +*** TEST # 18 PASSED *** +The CSNG value of -78.519 is-78.519 +*** TEST # 19 PASSED *** +The CSNG value of -77.2845 is-77.2845 +*** TEST # 20 PASSED *** +The CSNG value of -76.05 is-76.05 +*** TEST # 21 PASSED *** +The CSNG value of -74.8155 is-74.8155 +*** TEST # 22 PASSED *** +The CSNG value of -73.581 is-73.581 +*** TEST # 23 PASSED *** +The CSNG value of -72.3465 is-72.3465 +*** TEST # 24 PASSED *** +The CSNG value of -71.112 is-71.112 +*** TEST # 25 PASSED *** +The CSNG value of -69.8775 is-69.8775 +*** TEST # 26 PASSED *** +The CSNG value of -68.643 is-68.643 +*** TEST # 27 PASSED *** +The CSNG value of -67.4085 is-67.4085 +*** TEST # 28 PASSED *** +The CSNG value of -66.174 is-66.174 +*** TEST # 29 PASSED *** +The CSNG value of -64.9395 is-64.9395 +*** TEST # 30 PASSED *** +The CSNG value of -63.705 is-63.705 +*** TEST # 31 PASSED *** +The CSNG value of -62.4705 is-62.4705 +*** TEST # 32 PASSED *** +The CSNG value of -61.236 is-61.236 +*** TEST # 33 PASSED *** +The CSNG value of -60.0015 is-60.0015 +*** TEST # 34 PASSED *** +The CSNG value of -58.767 is-58.767 +*** TEST # 35 PASSED *** +The CSNG value of -57.5325 is-57.5325 +*** TEST # 36 PASSED *** +The CSNG value of -56.298 is-56.298 +*** TEST # 37 PASSED *** +The CSNG value of -55.0635 is-55.0635 +*** TEST # 38 PASSED *** +The CSNG value of -53.829 is-53.829 +*** TEST # 39 PASSED *** +The CSNG value of -52.5945 is-52.5945 +*** TEST # 40 PASSED *** +The CSNG value of -51.36 is-51.36 +*** TEST # 41 PASSED *** +The CSNG value of -50.1255 is-50.1255 +*** TEST # 42 PASSED *** +The CSNG value of -48.891 is-48.891 +*** TEST # 43 PASSED *** +The CSNG value of -47.6565 is-47.6565 +*** TEST # 44 PASSED *** +The CSNG value of -46.422 is-46.422 +*** TEST # 45 PASSED *** +The CSNG value of -45.1875 is-45.1875 +*** TEST # 46 PASSED *** +The CSNG value of -43.953 is-43.953 +*** TEST # 47 PASSED *** +The CSNG value of -42.7185 is-42.7185 +*** TEST # 48 PASSED *** +The CSNG value of -41.484 is-41.484 +*** TEST # 49 PASSED *** +The CSNG value of -40.2495 is-40.2495 +*** TEST # 50 PASSED *** +The CSNG value of -39.015 is-39.015 +*** TEST # 51 PASSED *** +The CSNG value of -37.7805 is-37.7805 +*** TEST # 52 PASSED *** +The CSNG value of -36.546 is-36.546 +*** TEST # 53 PASSED *** +The CSNG value of -35.3115 is-35.3115 +*** TEST # 54 PASSED *** +The CSNG value of -34.077 is-34.077 +*** TEST # 55 PASSED *** +The CSNG value of -32.8425 is-32.8425 +*** TEST # 56 PASSED *** +The CSNG value of -31.608 is-31.608 +*** TEST # 57 PASSED *** +The CSNG value of -30.3735 is-30.3735 +*** TEST # 58 PASSED *** +The CSNG value of -29.139 is-29.139 +*** TEST # 59 PASSED *** +The CSNG value of -27.9045 is-27.9045 +*** TEST # 60 PASSED *** +The CSNG value of -26.67 is-26.67 +*** TEST # 61 PASSED *** +The CSNG value of -25.4355 is-25.4355 +*** TEST # 62 PASSED *** +The CSNG value of -24.201 is-24.201 +*** TEST # 63 PASSED *** +The CSNG value of -22.9665 is-22.9665 +*** TEST # 64 PASSED *** +The CSNG value of -21.732 is-21.732 +*** TEST # 65 PASSED *** +The CSNG value of -20.4975 is-20.4975 +*** TEST # 66 PASSED *** +The CSNG value of -19.263 is-19.263 +*** TEST # 67 PASSED *** +The CSNG value of -18.0285 is-18.0285 +*** TEST # 68 PASSED *** +The CSNG value of -16.794 is-16.794 +*** TEST # 69 PASSED *** +The CSNG value of -15.5595 is-15.5595 +*** TEST # 70 PASSED *** +The CSNG value of -14.325 is-14.325 +*** TEST # 71 PASSED *** +The CSNG value of -13.0905 is-13.0905 +*** TEST # 72 PASSED *** +The CSNG value of -11.856 is-11.856 +*** TEST # 73 PASSED *** +The CSNG value of -10.6215 is-10.6215 +*** TEST # 74 PASSED *** +The CSNG value of -9.387 is-9.387 +*** TEST # 75 PASSED *** +The CSNG value of -8.1525 is-8.1525 +*** TEST # 76 PASSED *** +The CSNG value of -6.918 is-6.918 +*** TEST # 77 PASSED *** +The CSNG value of -5.6835 is-5.6835 +*** TEST # 78 PASSED *** +The CSNG value of -4.449 is-4.449 +*** TEST # 79 PASSED *** +The CSNG value of -3.2145 is-3.2145 +*** TEST # 80 PASSED *** +The CSNG value of -1.98 is-1.98 +*** TEST # 81 PASSED *** +The CSNG value of -.7455 is-.7455 +*** TEST # 82 PASSED *** +The CSNG value of .489 is .489 +*** TEST # 83 PASSED *** +The CSNG value of 1.7235 is 1.7235 +*** TEST # 84 PASSED *** +The CSNG value of 2.958 is 2.958 +*** TEST # 85 PASSED *** +The CSNG value of 4.1925 is 4.1925 +*** TEST # 86 PASSED *** +The CSNG value of 5.427 is 5.427 +*** TEST # 87 PASSED *** +The CSNG value of 6.6615 is 6.6615 +*** TEST # 88 PASSED *** +The CSNG value of 7.896 is 7.896 +*** TEST # 89 PASSED *** +The CSNG value of 9.1305 is 9.1305 +*** TEST # 90 PASSED *** +The CSNG value of 10.365 is 10.365 +*** TEST # 91 PASSED *** +The CSNG value of 11.5995 is 11.5995 +*** TEST # 92 PASSED *** +The CSNG value of 12.834 is 12.834 +*** TEST # 93 PASSED *** +The CSNG value of 14.0685 is 14.0685 +*** TEST # 94 PASSED *** +The CSNG value of 15.303 is 15.303 +*** TEST # 95 PASSED *** +The CSNG value of 16.5375 is 16.5375 +*** TEST # 96 PASSED *** +The CSNG value of 17.772 is 17.772 +*** TEST # 97 PASSED *** +The CSNG value of 19.0065 is 19.0065 +*** TEST # 98 PASSED *** +The CSNG value of 20.241 is 20.241 +*** TEST # 99 PASSED *** +The CSNG value of 21.4755 is 21.4755 +*** TEST # 100 PASSED *** +The CSNG value of 22.71 is 22.71 +*** TEST # 101 PASSED *** +The CSNG value of 23.9445 is 23.9445 +*** TEST # 102 PASSED *** +The CSNG value of 25.179 is 25.179 +*** TEST # 103 PASSED *** +The CSNG value of 26.4135 is 26.4135 +*** TEST # 104 PASSED *** +The CSNG value of 27.648 is 27.648 +*** TEST # 105 PASSED *** +The CSNG value of 28.8825 is 28.8825 +*** TEST # 106 PASSED *** +The CSNG value of 30.117 is 30.117 +*** TEST # 107 PASSED *** +The CSNG value of 31.3515 is 31.3515 +*** TEST # 108 PASSED *** +The CSNG value of 32.586 is 32.586 +*** TEST # 109 PASSED *** +The CSNG value of 33.8205 is 33.8205 +*** TEST # 110 PASSED *** +The CSNG value of 35.055 is 35.055 +*** TEST # 111 PASSED *** +The CSNG value of 36.2895 is 36.2895 +*** TEST # 112 PASSED *** +The CSNG value of 37.524 is 37.524 +*** TEST # 113 PASSED *** +The CSNG value of 38.7585 is 38.7585 +*** TEST # 114 PASSED *** +The CSNG value of 39.993 is 39.993 +*** TEST # 115 PASSED *** +The CSNG value of 41.2275 is 41.2275 +*** TEST # 116 PASSED *** +The CSNG value of 42.462 is 42.462 +*** TEST # 117 PASSED *** +The CSNG value of 43.6965 is 43.6965 +*** TEST # 118 PASSED *** +The CSNG value of 44.931 is 44.931 +*** TEST # 119 PASSED *** +The CSNG value of 46.1655 is 46.1655 +*** TEST # 120 PASSED *** +The CSNG value of 47.4 is 47.4 +*** TEST # 121 PASSED *** +The CSNG value of 48.6345 is 48.6345 +*** TEST # 122 PASSED *** +The CSNG value of 49.869 is 49.869 +*** TEST # 123 PASSED *** +The CSNG value of 51.1035 is 51.1035 +*** TEST # 124 PASSED *** +The CSNG value of 52.338 is 52.338 +*** TEST # 125 PASSED *** +The CSNG value of 53.5725 is 53.5725 +*** TEST # 126 PASSED *** +The CSNG value of 54.807 is 54.807 +*** TEST # 127 PASSED *** +The CSNG value of 56.0415 is 56.0415 +*** TEST # 128 PASSED *** +The CSNG value of 57.276 is 57.276 +*** TEST # 129 PASSED *** +The CSNG value of 58.5105 is 58.5105 +*** TEST # 130 PASSED *** +The CSNG value of 59.745 is 59.745 +*** TEST # 131 PASSED *** +The CSNG value of 60.9795 is 60.9795 +*** TEST # 132 PASSED *** +The CSNG value of 62.214 is 62.214 +*** TEST # 133 PASSED *** +The CSNG value of 63.4485 is 63.4485 +*** TEST # 134 PASSED *** +The CSNG value of 64.683 is 64.683 +*** TEST # 135 PASSED *** +The CSNG value of 65.9175 is 65.9175 +*** TEST # 136 PASSED *** +The CSNG value of 67.152 is 67.152 +*** TEST # 137 PASSED *** +The CSNG value of 68.3865 is 68.3865 +*** TEST # 138 PASSED *** +The CSNG value of 69.621 is 69.621 +*** TEST # 139 PASSED *** +The CSNG value of 70.8555 is 70.8555 +*** TEST # 140 PASSED *** +The CSNG value of 72.09 is 72.09 +*** TEST # 141 PASSED *** +The CSNG value of 73.3245 is 73.3245 +*** TEST # 142 PASSED *** +The CSNG value of 74.559 is 74.559 +*** TEST # 143 PASSED *** +The CSNG value of 75.7935 is 75.7935 +*** TEST # 144 PASSED *** +The CSNG value of 77.028 is 77.028 +*** TEST # 145 PASSED *** +The CSNG value of 78.2625 is 78.2625 +*** TEST # 146 PASSED *** +The CSNG value of 79.497 is 79.497 +*** TEST # 147 PASSED *** +The CSNG value of 80.7315 is 80.7315 +*** TEST # 148 PASSED *** +The CSNG value of 81.966 is 81.966 +*** TEST # 149 PASSED *** +The CSNG value of 83.2005 is 83.2005 +*** TEST # 150 PASSED *** +The CSNG value of 84.435 is 84.435 +*** TEST # 151 PASSED *** +The CSNG value of 85.6695 is 85.6695 +*** TEST # 152 PASSED *** +The CSNG value of 86.904 is 86.904 +*** TEST # 153 PASSED *** +The CSNG value of 88.1385 is 88.1385 +*** TEST # 154 PASSED *** +The CSNG value of 89.373 is 89.373 +*** TEST # 155 PASSED *** +The CSNG value of 90.6075 is 90.6075 +*** TEST # 156 PASSED *** +The CSNG value of 91.842 is 91.842 +*** TEST # 157 PASSED *** +The CSNG value of 93.0765 is 93.0765 +*** TEST # 158 PASSED *** +The CSNG value of 94.311 is 94.311 +*** TEST # 159 PASSED *** +The CSNG value of 95.5455 is 95.5455 +*** TEST # 160 PASSED *** +The CSNG value of 96.78 is 96.78 +*** TEST # 161 PASSED *** +The CSNG value of 98.0145 is 98.0145 +*** TEST # 162 PASSED *** +The CSNG value of 99.249 is 99.249 +*** TEST # 163 PASSED *** +The CSNG value of 100.483 is 100.483 +*** TEST # 164 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E019.BAS b/NBS2/E019.BAS new file mode 100644 index 0000000..d9dafd6 --- /dev/null +++ b/NBS2/E019.BAS @@ -0,0 +1,23 @@ +1000 rem ------------------------------------------ +1010 rem Filename: csng1.bas +1020 rem Purpose: Verify CSNG() +1100 rem ------------------------------------------ +1110 I = 0 +1120 for X = -100.74 to +100.92 step 1.2345 +1130 I = I + 1 +1140 RESULT = CSNG( X ) +1150 print "The CSNG value of "; X; " is"; RESULT +1160 if RESULT <> X then goto TestFailed +1170 print "*** TEST #"; I; " PASSED ***" +1180 next X +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E019.OUT b/NBS2/E019.OUT new file mode 100644 index 0000000..36e3d15 --- /dev/null +++ b/NBS2/E019.OUT @@ -0,0 +1,329 @@ +The CSNG value of -100.74 is-100.74 +*** TEST # 1 PASSED *** +The CSNG value of -99.5055 is-99.5055 +*** TEST # 2 PASSED *** +The CSNG value of -98.271 is-98.271 +*** TEST # 3 PASSED *** +The CSNG value of -97.0365 is-97.0365 +*** TEST # 4 PASSED *** +The CSNG value of -95.802 is-95.802 +*** TEST # 5 PASSED *** +The CSNG value of -94.5675 is-94.5675 +*** TEST # 6 PASSED *** +The CSNG value of -93.333 is-93.333 +*** TEST # 7 PASSED *** +The CSNG value of -92.0985 is-92.0985 +*** TEST # 8 PASSED *** +The CSNG value of -90.864 is-90.864 +*** TEST # 9 PASSED *** +The CSNG value of -89.6295 is-89.6295 +*** TEST # 10 PASSED *** +The CSNG value of -88.395 is-88.395 +*** TEST # 11 PASSED *** +The CSNG value of -87.1605 is-87.1605 +*** TEST # 12 PASSED *** +The CSNG value of -85.926 is-85.926 +*** TEST # 13 PASSED *** +The CSNG value of -84.6915 is-84.6915 +*** TEST # 14 PASSED *** +The CSNG value of -83.457 is-83.457 +*** TEST # 15 PASSED *** +The CSNG value of -82.2225 is-82.2225 +*** TEST # 16 PASSED *** +The CSNG value of -80.988 is-80.988 +*** TEST # 17 PASSED *** +The CSNG value of -79.7535 is-79.7535 +*** TEST # 18 PASSED *** +The CSNG value of -78.519 is-78.519 +*** TEST # 19 PASSED *** +The CSNG value of -77.2845 is-77.2845 +*** TEST # 20 PASSED *** +The CSNG value of -76.05 is-76.05 +*** TEST # 21 PASSED *** +The CSNG value of -74.8155 is-74.8155 +*** TEST # 22 PASSED *** +The CSNG value of -73.581 is-73.581 +*** TEST # 23 PASSED *** +The CSNG value of -72.3465 is-72.3465 +*** TEST # 24 PASSED *** +The CSNG value of -71.112 is-71.112 +*** TEST # 25 PASSED *** +The CSNG value of -69.8775 is-69.8775 +*** TEST # 26 PASSED *** +The CSNG value of -68.643 is-68.643 +*** TEST # 27 PASSED *** +The CSNG value of -67.4085 is-67.4085 +*** TEST # 28 PASSED *** +The CSNG value of -66.174 is-66.174 +*** TEST # 29 PASSED *** +The CSNG value of -64.9395 is-64.9395 +*** TEST # 30 PASSED *** +The CSNG value of -63.705 is-63.705 +*** TEST # 31 PASSED *** +The CSNG value of -62.4705 is-62.4705 +*** TEST # 32 PASSED *** +The CSNG value of -61.236 is-61.236 +*** TEST # 33 PASSED *** +The CSNG value of -60.0015 is-60.0015 +*** TEST # 34 PASSED *** +The CSNG value of -58.767 is-58.767 +*** TEST # 35 PASSED *** +The CSNG value of -57.5325 is-57.5325 +*** TEST # 36 PASSED *** +The CSNG value of -56.298 is-56.298 +*** TEST # 37 PASSED *** +The CSNG value of -55.0635 is-55.0635 +*** TEST # 38 PASSED *** +The CSNG value of -53.829 is-53.829 +*** TEST # 39 PASSED *** +The CSNG value of -52.5945 is-52.5945 +*** TEST # 40 PASSED *** +The CSNG value of -51.36 is-51.36 +*** TEST # 41 PASSED *** +The CSNG value of -50.1255 is-50.1255 +*** TEST # 42 PASSED *** +The CSNG value of -48.891 is-48.891 +*** TEST # 43 PASSED *** +The CSNG value of -47.6565 is-47.6565 +*** TEST # 44 PASSED *** +The CSNG value of -46.422 is-46.422 +*** TEST # 45 PASSED *** +The CSNG value of -45.1875 is-45.1875 +*** TEST # 46 PASSED *** +The CSNG value of -43.953 is-43.953 +*** TEST # 47 PASSED *** +The CSNG value of -42.7185 is-42.7185 +*** TEST # 48 PASSED *** +The CSNG value of -41.484 is-41.484 +*** TEST # 49 PASSED *** +The CSNG value of -40.2495 is-40.2495 +*** TEST # 50 PASSED *** +The CSNG value of -39.015 is-39.015 +*** TEST # 51 PASSED *** +The CSNG value of -37.7805 is-37.7805 +*** TEST # 52 PASSED *** +The CSNG value of -36.546 is-36.546 +*** TEST # 53 PASSED *** +The CSNG value of -35.3115 is-35.3115 +*** TEST # 54 PASSED *** +The CSNG value of -34.077 is-34.077 +*** TEST # 55 PASSED *** +The CSNG value of -32.8425 is-32.8425 +*** TEST # 56 PASSED *** +The CSNG value of -31.608 is-31.608 +*** TEST # 57 PASSED *** +The CSNG value of -30.3735 is-30.3735 +*** TEST # 58 PASSED *** +The CSNG value of -29.139 is-29.139 +*** TEST # 59 PASSED *** +The CSNG value of -27.9045 is-27.9045 +*** TEST # 60 PASSED *** +The CSNG value of -26.67 is-26.67 +*** TEST # 61 PASSED *** +The CSNG value of -25.4355 is-25.4355 +*** TEST # 62 PASSED *** +The CSNG value of -24.201 is-24.201 +*** TEST # 63 PASSED *** +The CSNG value of -22.9665 is-22.9665 +*** TEST # 64 PASSED *** +The CSNG value of -21.732 is-21.732 +*** TEST # 65 PASSED *** +The CSNG value of -20.4975 is-20.4975 +*** TEST # 66 PASSED *** +The CSNG value of -19.263 is-19.263 +*** TEST # 67 PASSED *** +The CSNG value of -18.0285 is-18.0285 +*** TEST # 68 PASSED *** +The CSNG value of -16.794 is-16.794 +*** TEST # 69 PASSED *** +The CSNG value of -15.5595 is-15.5595 +*** TEST # 70 PASSED *** +The CSNG value of -14.325 is-14.325 +*** TEST # 71 PASSED *** +The CSNG value of -13.0905 is-13.0905 +*** TEST # 72 PASSED *** +The CSNG value of -11.856 is-11.856 +*** TEST # 73 PASSED *** +The CSNG value of -10.6215 is-10.6215 +*** TEST # 74 PASSED *** +The CSNG value of -9.387 is-9.387 +*** TEST # 75 PASSED *** +The CSNG value of -8.1525 is-8.1525 +*** TEST # 76 PASSED *** +The CSNG value of -6.918 is-6.918 +*** TEST # 77 PASSED *** +The CSNG value of -5.6835 is-5.6835 +*** TEST # 78 PASSED *** +The CSNG value of -4.449 is-4.449 +*** TEST # 79 PASSED *** +The CSNG value of -3.2145 is-3.2145 +*** TEST # 80 PASSED *** +The CSNG value of -1.98 is-1.98 +*** TEST # 81 PASSED *** +The CSNG value of -.7455 is-.7455 +*** TEST # 82 PASSED *** +The CSNG value of .489 is .489 +*** TEST # 83 PASSED *** +The CSNG value of 1.7235 is 1.7235 +*** TEST # 84 PASSED *** +The CSNG value of 2.958 is 2.958 +*** TEST # 85 PASSED *** +The CSNG value of 4.1925 is 4.1925 +*** TEST # 86 PASSED *** +The CSNG value of 5.427 is 5.427 +*** TEST # 87 PASSED *** +The CSNG value of 6.6615 is 6.6615 +*** TEST # 88 PASSED *** +The CSNG value of 7.896 is 7.896 +*** TEST # 89 PASSED *** +The CSNG value of 9.1305 is 9.1305 +*** TEST # 90 PASSED *** +The CSNG value of 10.365 is 10.365 +*** TEST # 91 PASSED *** +The CSNG value of 11.5995 is 11.5995 +*** TEST # 92 PASSED *** +The CSNG value of 12.834 is 12.834 +*** TEST # 93 PASSED *** +The CSNG value of 14.0685 is 14.0685 +*** TEST # 94 PASSED *** +The CSNG value of 15.303 is 15.303 +*** TEST # 95 PASSED *** +The CSNG value of 16.5375 is 16.5375 +*** TEST # 96 PASSED *** +The CSNG value of 17.772 is 17.772 +*** TEST # 97 PASSED *** +The CSNG value of 19.0065 is 19.0065 +*** TEST # 98 PASSED *** +The CSNG value of 20.241 is 20.241 +*** TEST # 99 PASSED *** +The CSNG value of 21.4755 is 21.4755 +*** TEST # 100 PASSED *** +The CSNG value of 22.71 is 22.71 +*** TEST # 101 PASSED *** +The CSNG value of 23.9445 is 23.9445 +*** TEST # 102 PASSED *** +The CSNG value of 25.179 is 25.179 +*** TEST # 103 PASSED *** +The CSNG value of 26.4135 is 26.4135 +*** TEST # 104 PASSED *** +The CSNG value of 27.648 is 27.648 +*** TEST # 105 PASSED *** +The CSNG value of 28.8825 is 28.8825 +*** TEST # 106 PASSED *** +The CSNG value of 30.117 is 30.117 +*** TEST # 107 PASSED *** +The CSNG value of 31.3515 is 31.3515 +*** TEST # 108 PASSED *** +The CSNG value of 32.586 is 32.586 +*** TEST # 109 PASSED *** +The CSNG value of 33.8205 is 33.8205 +*** TEST # 110 PASSED *** +The CSNG value of 35.055 is 35.055 +*** TEST # 111 PASSED *** +The CSNG value of 36.2895 is 36.2895 +*** TEST # 112 PASSED *** +The CSNG value of 37.524 is 37.524 +*** TEST # 113 PASSED *** +The CSNG value of 38.7585 is 38.7585 +*** TEST # 114 PASSED *** +The CSNG value of 39.993 is 39.993 +*** TEST # 115 PASSED *** +The CSNG value of 41.2275 is 41.2275 +*** TEST # 116 PASSED *** +The CSNG value of 42.462 is 42.462 +*** TEST # 117 PASSED *** +The CSNG value of 43.6965 is 43.6965 +*** TEST # 118 PASSED *** +The CSNG value of 44.931 is 44.931 +*** TEST # 119 PASSED *** +The CSNG value of 46.1655 is 46.1655 +*** TEST # 120 PASSED *** +The CSNG value of 47.4 is 47.4 +*** TEST # 121 PASSED *** +The CSNG value of 48.6345 is 48.6345 +*** TEST # 122 PASSED *** +The CSNG value of 49.869 is 49.869 +*** TEST # 123 PASSED *** +The CSNG value of 51.1035 is 51.1035 +*** TEST # 124 PASSED *** +The CSNG value of 52.338 is 52.338 +*** TEST # 125 PASSED *** +The CSNG value of 53.5725 is 53.5725 +*** TEST # 126 PASSED *** +The CSNG value of 54.807 is 54.807 +*** TEST # 127 PASSED *** +The CSNG value of 56.0415 is 56.0415 +*** TEST # 128 PASSED *** +The CSNG value of 57.276 is 57.276 +*** TEST # 129 PASSED *** +The CSNG value of 58.5105 is 58.5105 +*** TEST # 130 PASSED *** +The CSNG value of 59.745 is 59.745 +*** TEST # 131 PASSED *** +The CSNG value of 60.9795 is 60.9795 +*** TEST # 132 PASSED *** +The CSNG value of 62.214 is 62.214 +*** TEST # 133 PASSED *** +The CSNG value of 63.4485 is 63.4485 +*** TEST # 134 PASSED *** +The CSNG value of 64.683 is 64.683 +*** TEST # 135 PASSED *** +The CSNG value of 65.9175 is 65.9175 +*** TEST # 136 PASSED *** +The CSNG value of 67.152 is 67.152 +*** TEST # 137 PASSED *** +The CSNG value of 68.3865 is 68.3865 +*** TEST # 138 PASSED *** +The CSNG value of 69.621 is 69.621 +*** TEST # 139 PASSED *** +The CSNG value of 70.8555 is 70.8555 +*** TEST # 140 PASSED *** +The CSNG value of 72.09 is 72.09 +*** TEST # 141 PASSED *** +The CSNG value of 73.3245 is 73.3245 +*** TEST # 142 PASSED *** +The CSNG value of 74.559 is 74.559 +*** TEST # 143 PASSED *** +The CSNG value of 75.7935 is 75.7935 +*** TEST # 144 PASSED *** +The CSNG value of 77.028 is 77.028 +*** TEST # 145 PASSED *** +The CSNG value of 78.2625 is 78.2625 +*** TEST # 146 PASSED *** +The CSNG value of 79.497 is 79.497 +*** TEST # 147 PASSED *** +The CSNG value of 80.7315 is 80.7315 +*** TEST # 148 PASSED *** +The CSNG value of 81.966 is 81.966 +*** TEST # 149 PASSED *** +The CSNG value of 83.2005 is 83.2005 +*** TEST # 150 PASSED *** +The CSNG value of 84.435 is 84.435 +*** TEST # 151 PASSED *** +The CSNG value of 85.6695 is 85.6695 +*** TEST # 152 PASSED *** +The CSNG value of 86.904 is 86.904 +*** TEST # 153 PASSED *** +The CSNG value of 88.1385 is 88.1385 +*** TEST # 154 PASSED *** +The CSNG value of 89.373 is 89.373 +*** TEST # 155 PASSED *** +The CSNG value of 90.6075 is 90.6075 +*** TEST # 156 PASSED *** +The CSNG value of 91.842 is 91.842 +*** TEST # 157 PASSED *** +The CSNG value of 93.0765 is 93.0765 +*** TEST # 158 PASSED *** +The CSNG value of 94.311 is 94.311 +*** TEST # 159 PASSED *** +The CSNG value of 95.5455 is 95.5455 +*** TEST # 160 PASSED *** +The CSNG value of 96.78 is 96.78 +*** TEST # 161 PASSED *** +The CSNG value of 98.0145 is 98.0145 +*** TEST # 162 PASSED *** +The CSNG value of 99.249 is 99.249 +*** TEST # 163 PASSED *** +The CSNG value of 100.483 is 100.483 +*** TEST # 164 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E019.dif b/NBS2/E019.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E019.run b/NBS2/E019.run new file mode 100644 index 0000000..3ff141a --- /dev/null +++ b/NBS2/E019.run @@ -0,0 +1,329 @@ +The CSNG value of -100.74 is-100.74 +*** TEST # 1 PASSED *** +The CSNG value of -99.5055 is-99.5055 +*** TEST # 2 PASSED *** +The CSNG value of -98.271 is-98.271 +*** TEST # 3 PASSED *** +The CSNG value of -97.0365 is-97.0365 +*** TEST # 4 PASSED *** +The CSNG value of -95.802 is-95.802 +*** TEST # 5 PASSED *** +The CSNG value of -94.5675 is-94.5675 +*** TEST # 6 PASSED *** +The CSNG value of -93.333 is-93.333 +*** TEST # 7 PASSED *** +The CSNG value of -92.0985 is-92.0985 +*** TEST # 8 PASSED *** +The CSNG value of -90.864 is-90.864 +*** TEST # 9 PASSED *** +The CSNG value of -89.6295 is-89.6295 +*** TEST # 10 PASSED *** +The CSNG value of -88.395 is-88.395 +*** TEST # 11 PASSED *** +The CSNG value of -87.1605 is-87.1605 +*** TEST # 12 PASSED *** +The CSNG value of -85.926 is-85.926 +*** TEST # 13 PASSED *** +The CSNG value of -84.6915 is-84.6915 +*** TEST # 14 PASSED *** +The CSNG value of -83.457 is-83.457 +*** TEST # 15 PASSED *** +The CSNG value of -82.2225 is-82.2225 +*** TEST # 16 PASSED *** +The CSNG value of -80.988 is-80.988 +*** TEST # 17 PASSED *** +The CSNG value of -79.7535 is-79.7535 +*** TEST # 18 PASSED *** +The CSNG value of -78.519 is-78.519 +*** TEST # 19 PASSED *** +The CSNG value of -77.2845 is-77.2845 +*** TEST # 20 PASSED *** +The CSNG value of -76.05 is-76.05 +*** TEST # 21 PASSED *** +The CSNG value of -74.8155 is-74.8155 +*** TEST # 22 PASSED *** +The CSNG value of -73.581 is-73.581 +*** TEST # 23 PASSED *** +The CSNG value of -72.3465 is-72.3465 +*** TEST # 24 PASSED *** +The CSNG value of -71.112 is-71.112 +*** TEST # 25 PASSED *** +The CSNG value of -69.8775 is-69.8775 +*** TEST # 26 PASSED *** +The CSNG value of -68.643 is-68.643 +*** TEST # 27 PASSED *** +The CSNG value of -67.4085 is-67.4085 +*** TEST # 28 PASSED *** +The CSNG value of -66.174 is-66.174 +*** TEST # 29 PASSED *** +The CSNG value of -64.9395 is-64.9395 +*** TEST # 30 PASSED *** +The CSNG value of -63.705 is-63.705 +*** TEST # 31 PASSED *** +The CSNG value of -62.4705 is-62.4705 +*** TEST # 32 PASSED *** +The CSNG value of -61.236 is-61.236 +*** TEST # 33 PASSED *** +The CSNG value of -60.0015 is-60.0015 +*** TEST # 34 PASSED *** +The CSNG value of -58.767 is-58.767 +*** TEST # 35 PASSED *** +The CSNG value of -57.5325 is-57.5325 +*** TEST # 36 PASSED *** +The CSNG value of -56.298 is-56.298 +*** TEST # 37 PASSED *** +The CSNG value of -55.0635 is-55.0635 +*** TEST # 38 PASSED *** +The CSNG value of -53.829 is-53.829 +*** TEST # 39 PASSED *** +The CSNG value of -52.5945 is-52.5945 +*** TEST # 40 PASSED *** +The CSNG value of -51.36 is-51.36 +*** TEST # 41 PASSED *** +The CSNG value of -50.1255 is-50.1255 +*** TEST # 42 PASSED *** +The CSNG value of -48.891 is-48.891 +*** TEST # 43 PASSED *** +The CSNG value of -47.6565 is-47.6565 +*** TEST # 44 PASSED *** +The CSNG value of -46.422 is-46.422 +*** TEST # 45 PASSED *** +The CSNG value of -45.1875 is-45.1875 +*** TEST # 46 PASSED *** +The CSNG value of -43.953 is-43.953 +*** TEST # 47 PASSED *** +The CSNG value of -42.7185 is-42.7185 +*** TEST # 48 PASSED *** +The CSNG value of -41.484 is-41.484 +*** TEST # 49 PASSED *** +The CSNG value of -40.2495 is-40.2495 +*** TEST # 50 PASSED *** +The CSNG value of -39.015 is-39.015 +*** TEST # 51 PASSED *** +The CSNG value of -37.7805 is-37.7805 +*** TEST # 52 PASSED *** +The CSNG value of -36.546 is-36.546 +*** TEST # 53 PASSED *** +The CSNG value of -35.3115 is-35.3115 +*** TEST # 54 PASSED *** +The CSNG value of -34.077 is-34.077 +*** TEST # 55 PASSED *** +The CSNG value of -32.8425 is-32.8425 +*** TEST # 56 PASSED *** +The CSNG value of -31.608 is-31.608 +*** TEST # 57 PASSED *** +The CSNG value of -30.3735 is-30.3735 +*** TEST # 58 PASSED *** +The CSNG value of -29.139 is-29.139 +*** TEST # 59 PASSED *** +The CSNG value of -27.9045 is-27.9045 +*** TEST # 60 PASSED *** +The CSNG value of -26.67 is-26.67 +*** TEST # 61 PASSED *** +The CSNG value of -25.4355 is-25.4355 +*** TEST # 62 PASSED *** +The CSNG value of -24.201 is-24.201 +*** TEST # 63 PASSED *** +The CSNG value of -22.9665 is-22.9665 +*** TEST # 64 PASSED *** +The CSNG value of -21.732 is-21.732 +*** TEST # 65 PASSED *** +The CSNG value of -20.4975 is-20.4975 +*** TEST # 66 PASSED *** +The CSNG value of -19.263 is-19.263 +*** TEST # 67 PASSED *** +The CSNG value of -18.0285 is-18.0285 +*** TEST # 68 PASSED *** +The CSNG value of -16.794 is-16.794 +*** TEST # 69 PASSED *** +The CSNG value of -15.5595 is-15.5595 +*** TEST # 70 PASSED *** +The CSNG value of -14.325 is-14.325 +*** TEST # 71 PASSED *** +The CSNG value of -13.0905 is-13.0905 +*** TEST # 72 PASSED *** +The CSNG value of -11.856 is-11.856 +*** TEST # 73 PASSED *** +The CSNG value of -10.6215 is-10.6215 +*** TEST # 74 PASSED *** +The CSNG value of -9.387 is-9.387 +*** TEST # 75 PASSED *** +The CSNG value of -8.1525 is-8.1525 +*** TEST # 76 PASSED *** +The CSNG value of -6.918 is-6.918 +*** TEST # 77 PASSED *** +The CSNG value of -5.6835 is-5.6835 +*** TEST # 78 PASSED *** +The CSNG value of -4.449 is-4.449 +*** TEST # 79 PASSED *** +The CSNG value of -3.2145 is-3.2145 +*** TEST # 80 PASSED *** +The CSNG value of -1.98 is-1.98 +*** TEST # 81 PASSED *** +The CSNG value of -.7455 is-.7455 +*** TEST # 82 PASSED *** +The CSNG value of .489 is .489 +*** TEST # 83 PASSED *** +The CSNG value of 1.7235 is 1.7235 +*** TEST # 84 PASSED *** +The CSNG value of 2.958 is 2.958 +*** TEST # 85 PASSED *** +The CSNG value of 4.1925 is 4.1925 +*** TEST # 86 PASSED *** +The CSNG value of 5.427 is 5.427 +*** TEST # 87 PASSED *** +The CSNG value of 6.6615 is 6.6615 +*** TEST # 88 PASSED *** +The CSNG value of 7.896 is 7.896 +*** TEST # 89 PASSED *** +The CSNG value of 9.1305 is 9.1305 +*** TEST # 90 PASSED *** +The CSNG value of 10.365 is 10.365 +*** TEST # 91 PASSED *** +The CSNG value of 11.5995 is 11.5995 +*** TEST # 92 PASSED *** +The CSNG value of 12.834 is 12.834 +*** TEST # 93 PASSED *** +The CSNG value of 14.0685 is 14.0685 +*** TEST # 94 PASSED *** +The CSNG value of 15.303 is 15.303 +*** TEST # 95 PASSED *** +The CSNG value of 16.5375 is 16.5375 +*** TEST # 96 PASSED *** +The CSNG value of 17.772 is 17.772 +*** TEST # 97 PASSED *** +The CSNG value of 19.0065 is 19.0065 +*** TEST # 98 PASSED *** +The CSNG value of 20.241 is 20.241 +*** TEST # 99 PASSED *** +The CSNG value of 21.4755 is 21.4755 +*** TEST # 100 PASSED *** +The CSNG value of 22.71 is 22.71 +*** TEST # 101 PASSED *** +The CSNG value of 23.9445 is 23.9445 +*** TEST # 102 PASSED *** +The CSNG value of 25.179 is 25.179 +*** TEST # 103 PASSED *** +The CSNG value of 26.4135 is 26.4135 +*** TEST # 104 PASSED *** +The CSNG value of 27.648 is 27.648 +*** TEST # 105 PASSED *** +The CSNG value of 28.8825 is 28.8825 +*** TEST # 106 PASSED *** +The CSNG value of 30.117 is 30.117 +*** TEST # 107 PASSED *** +The CSNG value of 31.3515 is 31.3515 +*** TEST # 108 PASSED *** +The CSNG value of 32.586 is 32.586 +*** TEST # 109 PASSED *** +The CSNG value of 33.8205 is 33.8205 +*** TEST # 110 PASSED *** +The CSNG value of 35.055 is 35.055 +*** TEST # 111 PASSED *** +The CSNG value of 36.2895 is 36.2895 +*** TEST # 112 PASSED *** +The CSNG value of 37.524 is 37.524 +*** TEST # 113 PASSED *** +The CSNG value of 38.7585 is 38.7585 +*** TEST # 114 PASSED *** +The CSNG value of 39.993 is 39.993 +*** TEST # 115 PASSED *** +The CSNG value of 41.2275 is 41.2275 +*** TEST # 116 PASSED *** +The CSNG value of 42.462 is 42.462 +*** TEST # 117 PASSED *** +The CSNG value of 43.6965 is 43.6965 +*** TEST # 118 PASSED *** +The CSNG value of 44.931 is 44.931 +*** TEST # 119 PASSED *** +The CSNG value of 46.1655 is 46.1655 +*** TEST # 120 PASSED *** +The CSNG value of 47.4 is 47.4 +*** TEST # 121 PASSED *** +The CSNG value of 48.6345 is 48.6345 +*** TEST # 122 PASSED *** +The CSNG value of 49.869 is 49.869 +*** TEST # 123 PASSED *** +The CSNG value of 51.1035 is 51.1035 +*** TEST # 124 PASSED *** +The CSNG value of 52.338 is 52.338 +*** TEST # 125 PASSED *** +The CSNG value of 53.5725 is 53.5725 +*** TEST # 126 PASSED *** +The CSNG value of 54.807 is 54.807 +*** TEST # 127 PASSED *** +The CSNG value of 56.0415 is 56.0415 +*** TEST # 128 PASSED *** +The CSNG value of 57.276 is 57.276 +*** TEST # 129 PASSED *** +The CSNG value of 58.5105 is 58.5105 +*** TEST # 130 PASSED *** +The CSNG value of 59.745 is 59.745 +*** TEST # 131 PASSED *** +The CSNG value of 60.9795 is 60.9795 +*** TEST # 132 PASSED *** +The CSNG value of 62.214 is 62.214 +*** TEST # 133 PASSED *** +The CSNG value of 63.4485 is 63.4485 +*** TEST # 134 PASSED *** +The CSNG value of 64.683 is 64.683 +*** TEST # 135 PASSED *** +The CSNG value of 65.9175 is 65.9175 +*** TEST # 136 PASSED *** +The CSNG value of 67.152 is 67.152 +*** TEST # 137 PASSED *** +The CSNG value of 68.3865 is 68.3865 +*** TEST # 138 PASSED *** +The CSNG value of 69.621 is 69.621 +*** TEST # 139 PASSED *** +The CSNG value of 70.8555 is 70.8555 +*** TEST # 140 PASSED *** +The CSNG value of 72.09 is 72.09 +*** TEST # 141 PASSED *** +The CSNG value of 73.3245 is 73.3245 +*** TEST # 142 PASSED *** +The CSNG value of 74.559 is 74.559 +*** TEST # 143 PASSED *** +The CSNG value of 75.7935 is 75.7935 +*** TEST # 144 PASSED *** +The CSNG value of 77.028 is 77.028 +*** TEST # 145 PASSED *** +The CSNG value of 78.2625 is 78.2625 +*** TEST # 146 PASSED *** +The CSNG value of 79.497 is 79.497 +*** TEST # 147 PASSED *** +The CSNG value of 80.7315 is 80.7315 +*** TEST # 148 PASSED *** +The CSNG value of 81.966 is 81.966 +*** TEST # 149 PASSED *** +The CSNG value of 83.2005 is 83.2005 +*** TEST # 150 PASSED *** +The CSNG value of 84.435 is 84.435 +*** TEST # 151 PASSED *** +The CSNG value of 85.6695 is 85.6695 +*** TEST # 152 PASSED *** +The CSNG value of 86.904 is 86.904 +*** TEST # 153 PASSED *** +The CSNG value of 88.1385 is 88.1385 +*** TEST # 154 PASSED *** +The CSNG value of 89.373 is 89.373 +*** TEST # 155 PASSED *** +The CSNG value of 90.6075 is 90.6075 +*** TEST # 156 PASSED *** +The CSNG value of 91.842 is 91.842 +*** TEST # 157 PASSED *** +The CSNG value of 93.0765 is 93.0765 +*** TEST # 158 PASSED *** +The CSNG value of 94.311 is 94.311 +*** TEST # 159 PASSED *** +The CSNG value of 95.5455 is 95.5455 +*** TEST # 160 PASSED *** +The CSNG value of 96.78 is 96.78 +*** TEST # 161 PASSED *** +The CSNG value of 98.0145 is 98.0145 +*** TEST # 162 PASSED *** +The CSNG value of 99.249 is 99.249 +*** TEST # 163 PASSED *** +The CSNG value of 100.483 is 100.483 +*** TEST # 164 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E020.80 b/NBS2/E020.80 new file mode 100644 index 0000000..87227e4 --- /dev/null +++ b/NBS2/E020.80 @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E020.BAS b/NBS2/E020.BAS new file mode 100644 index 0000000..c50872c --- /dev/null +++ b/NBS2/E020.BAS @@ -0,0 +1,44 @@ +1000 rem ------------------------------------------ +1010 rem Filename: cvd1.bas +1020 rem Purpose: Verify CVD() and MKD$() +1100 rem ------------------------------------------ +1120 A = 0.000000001 +1130 B$ = MKD$( A ) +1140 C = CVD( B$ ) +1150 if A <> C then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 A = -0.000000001 +1230 B$ = MKD$( A ) +1240 C = CVD( B$ ) +1250 if A <> C then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 A = 123456789 +1330 B$ = MKD$( A ) +1340 C = CVD( B$ ) +1350 if A <> C then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 A = -123456789 +1430 B$ = MKD$( A ) +1440 C = CVD( B$ ) +1450 if A <> C then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 A = 0 +1530 B$ = MKD$( A ) +1540 C = CVD( B$ ) +1550 if A <> C then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E020.OUT b/NBS2/E020.OUT new file mode 100644 index 0000000..3955063 --- /dev/null +++ b/NBS2/E020.OUT @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E020.dif b/NBS2/E020.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E020.run b/NBS2/E020.run new file mode 100644 index 0000000..87227e4 --- /dev/null +++ b/NBS2/E020.run @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E021.80 b/NBS2/E021.80 new file mode 100644 index 0000000..87227e4 --- /dev/null +++ b/NBS2/E021.80 @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E021.BAS b/NBS2/E021.BAS new file mode 100644 index 0000000..3d68840 --- /dev/null +++ b/NBS2/E021.BAS @@ -0,0 +1,47 @@ +1000 rem ------------------------------------------ +1010 rem Filename: cvi1.bas +1020 rem Purpose: Verify CVI() and MKI$() +1100 rem ------------------------------------------ +1120 A = 0.000000001 +1130 B$ = MKI$( A ) +1140 C = CVI( B$ ) +1145 A = 0 +1150 if A <> C then goto TestFailed +1170 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 A = -0.000000001 +1230 B$ = MKI$( A ) +1240 C = CVI( B$ ) +1245 A = 0 +1250 if A <> C then goto TestFailed +1270 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 A = 12345 +1330 B$ = MKI$( A ) +1340 C = CVI( B$ ) +1350 if A <> C then goto TestFailed +1370 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 A = -12345 +1430 B$ = MKI$( A ) +1440 C = CVI( B$ ) +1450 if A <> C then goto TestFailed +1470 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 A = 0 +1530 B$ = MKI$( A ) +1540 C = CVI( B$ ) +1550 if A <> C then goto TestFailed +1570 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end + diff --git a/NBS2/E021.OUT b/NBS2/E021.OUT new file mode 100644 index 0000000..3955063 --- /dev/null +++ b/NBS2/E021.OUT @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E021.dif b/NBS2/E021.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E021.run b/NBS2/E021.run new file mode 100644 index 0000000..87227e4 --- /dev/null +++ b/NBS2/E021.run @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E022.80 b/NBS2/E022.80 new file mode 100644 index 0000000..afd5a03 --- /dev/null +++ b/NBS2/E022.80 @@ -0,0 +1,5 @@ +DATA1.BAS -- Test DATA, READ, and RESTORE Statements +Data read: Ted 56.789 Dale 45.678 +After RESTORE: +Data read: Ted 56.789 Dale 45.678 +*** ALL TESTS PASSED *** diff --git a/NBS2/E022.BAS b/NBS2/E022.BAS new file mode 100644 index 0000000..2c2d2e6 --- /dev/null +++ b/NBS2/E022.BAS @@ -0,0 +1,34 @@ + +10 rem DATA1.BAS -- Test DATA, READ, and RESTORE Statements +20 print "DATA1.BAS -- Test DATA, READ, and RESTORE Statements" +30 DATA "Ted", 56.789 +40 REM just to see if it advances correctly +50 DATA "Dale", 45.678 + 60 READ N$, NUMBER, ANOTHER$ + 61 if N$ <> "Ted" then goto TestFailed + 62 if NUMBER <> 56.789 then goto TestFailed + 63 if ANOTHER$ <> "Dale" then goto TestFailed + 70 READ ANUMBER + 71 if ANUMBER <> 45.678 then goto TestFailed + 80 PRINT "Data read: ";N$;" ";NUMBER;" ";ANOTHER$;" ";ANUMBER +90 RESTORE 30 + 100 READ ANOTHER$ + 101 if ANOTHER$ <> "Ted" then goto TestFailed + 110 READ ANUMBER, N$,NUMBER + 111 if ANUMBER <> 56.789 then goto TestFailed + 112 if N$ <> "Dale" then goto TestFailed + 113 if NUMBER <> 45.678 then goto TestFailed + 120 PRINT "After RESTORE:" + 130 PRINT "Data read: ";ANOTHER$;" ";ANUMBER;" ";N$;" ";NUMBER +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end + diff --git a/NBS2/E022.OUT b/NBS2/E022.OUT new file mode 100644 index 0000000..8713d06 --- /dev/null +++ b/NBS2/E022.OUT @@ -0,0 +1,5 @@ +DATA1.BAS -- Test DATA, READ, and RESTORE Statements +Data read: Ted 56.789 Dale 45.678 +After RESTORE: +Data read: Ted 56.789 Dale 45.678 +*** ALL TESTS PASSED *** diff --git a/NBS2/E022.dif b/NBS2/E022.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E022.run b/NBS2/E022.run new file mode 100644 index 0000000..afd5a03 --- /dev/null +++ b/NBS2/E022.run @@ -0,0 +1,5 @@ +DATA1.BAS -- Test DATA, READ, and RESTORE Statements +Data read: Ted 56.789 Dale 45.678 +After RESTORE: +Data read: Ted 56.789 Dale 45.678 +*** ALL TESTS PASSED *** diff --git a/NBS2/E023.80 b/NBS2/E023.80 new file mode 100644 index 0000000..ba26c64 --- /dev/null +++ b/NBS2/E023.80 @@ -0,0 +1 @@ +*** ALL TESTS PASSED *** diff --git a/NBS2/E023.BAS b/NBS2/E023.BAS new file mode 100644 index 0000000..139f65f --- /dev/null +++ b/NBS2/E023.BAS @@ -0,0 +1,21 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: delete1.bas +00120 REM PURPOSE: Verify DELETE - +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 10th, 2014 +00150 REM ---------------------------------------------------- +01000 delete 3000-3999 +02000 REM ---------------------------------------------------- +03030 ERROR 1 +03040 ERROR 1 +03050 ERROR 1 +03060 ERROR 1 +03070 ERROR 1 +03080 ERROR 1 +03090 ERROR 1 +19900 REM ---------------------------------------------------- +19910 REM *** ALL TESTS PASSED *** +19920 REM ---------------------------------------------------- +19930 PRINT "*** ALL TESTS PASSED ***" +19999 END + diff --git a/NBS2/E023.OUT b/NBS2/E023.OUT new file mode 100644 index 0000000..ea8a103 --- /dev/null +++ b/NBS2/E023.OUT @@ -0,0 +1 @@ +*** ALL TESTS PASSED *** diff --git a/NBS2/E023.dif b/NBS2/E023.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E023.run b/NBS2/E023.run new file mode 100644 index 0000000..ba26c64 --- /dev/null +++ b/NBS2/E023.run @@ -0,0 +1 @@ +*** ALL TESTS PASSED *** diff --git a/NBS2/E024.80 b/NBS2/E024.80 new file mode 100644 index 0000000..a4ad0cc --- /dev/null +++ b/NBS2/E024.80 @@ -0,0 +1,66 @@ +TEST #1 +Loop # 1 +*** TEST #1 PASSED *** +TEST #2 +Loop # 1 +*** TEST #2 PASSED *** +TEST #3 +Loop # 1 +*** TEST #3 PASSED *** +TEST #4 +Loop # 1 +*** TEST #4 PASSED *** +TEST #5 +Loop # 1 +*** TEST #5 PASSED *** +TEST #6 +Loop # 1 +*** TEST #6 PASSED *** +TEST #7 +Loop # 1 +*** TEST #7 PASSED *** +TEST #8 +Loop # 1 +*** TEST #8 PASSED *** +TEST #9 +Loop # 1 +*** TEST #9 PASSED *** +TEST #10 +Loop # 1 +*** TEST #10 PASSED *** +TEST #11 +*** TEST #11 PASSED *** +TEST #12 +*** TEST #12 PASSED *** +TEST #13 +*** TEST #13 PASSED *** +TEST #14 +*** TEST #14 PASSED *** +TEST #15 +*** TEST #15 PASSED *** +TEST #16 +*** TEST #16 PASSED *** +TEST #17 +*** TEST #17 PASSED *** +TEST #18 +*** TEST #18 PASSED *** +TEST #19 +*** TEST #19 PASSED *** +TEST #20 +*** TEST #20 PASSED *** +TEST #21 +Loop # 1 +*** TEST #21 PASSED *** +TEST #22 +Loop # 1 +*** TEST #22 PASSED *** +TEST #23 +Loop # 1 +*** TEST #23 PASSED *** +TEST #24 +Loop # 1 +*** TEST #24 PASSED *** +TEST #25 +Loop # 1 +*** TEST #25 PASSED ** +*** ALL TESTS PASSED *** diff --git a/NBS2/E024.BAS b/NBS2/E024.BAS new file mode 100644 index 0000000..3f22f18 --- /dev/null +++ b/NBS2/E024.BAS @@ -0,0 +1,320 @@ +00100 REM -------------------------------------- +00110 REM FILENAME: do1.bas +00120 REM PURPOSE: Verify "DO-LOOP" with "EXIT DO" +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 17th, 2014 +00150 REM -------------------------------------- +01000 REM # do loop +01010 REM 1 ----------- ----------- +01020 REM 2 ----------- until FALSE +01030 REM 3 ----------- until TRUE +01040 REM 4 ----------- while FALSE +01050 REM 5 ----------- while TRUE +01060 REM 6 until FALSE ----------- +01070 REM 7 until FALSE until FALSE +01080 REM 8 until FALSE until TRUE +01090 REM 9 until FALSE while FALSE +01100 REM 10 until FALSE while TRUE +01110 REM 11 until TRUE ----------- +01120 REM 12 until TRUE until FALSE +01130 REM 13 until TRUE until TRUE +01140 REM 14 until TRUE while FALSE +01150 REM 15 until TRUE while TRUE +01160 REM 16 while FALSE ----------- +01170 REM 17 while FALSE until FALSE +01180 REM 18 while FALSE until TRUE +01190 REM 19 while FALSE while FALSE +01200 REM 20 while FALSE while TRUE +01210 REM 21 while TRUE ----------- +01220 REM 22 while TRUE until FALSE +01230 REM 23 while TRUE until TRUE +01240 REM 24 while TRUE while FALSE +01250 REM 25 while TRUE while TRUE +09000 let TRUE = 1 +09010 let FALSE = 0 +10100 REM -------------------------------------- +10105 PRINT "TEST #1" +10110 let n = 0 +10120 do +10125 let n = n + 1 +10130 print "Loop #"; n +10135 exit do +10140 goto TestFailed +10145 loop +10150 if n <> 1 then goto TestFailed +10155 print "*** TEST #1 PASSED ***" +10200 REM -------------------------------------- +10205 PRINT "TEST #2" +10210 let n = 0 +10220 do +10225 let n = n + 1 +10230 print "Loop #"; n +10235 exit do +10240 goto TestFailed +10245 loop until FALSE +10250 if n <> 1 then goto TestFailed +10255 print "*** TEST #2 PASSED ***" +10300 REM -------------------------------------- +10305 PRINT "TEST #3" +10310 let n = 0 +10320 do +10325 let n = n + 1 +10330 print "Loop #"; n +10335 exit do +10340 goto TestFailed +10345 loop until TRUE +10350 if n <> 1 then goto TestFailed +10355 print "*** TEST #3 PASSED ***" +10400 REM -------------------------------------- +10405 PRINT "TEST #4" +10410 let n = 0 +10420 do +10425 let n = n + 1 +10430 print "Loop #"; n +10435 exit do +10440 goto TestFailed +10445 loop while FALSE +10450 if n <> 1 then goto TestFailed +10455 print "*** TEST #4 PASSED ***" +10500 REM -------------------------------------- +10505 PRINT "TEST #5" +10510 let n = 0 +10520 do +10525 let n = n + 1 +10530 print "Loop #"; n +10535 exit do +10540 goto TestFailed +10545 loop while TRUE +10550 if n <> 1 then goto TestFailed +10555 print "*** TEST #5 PASSED ***" +10600 REM -------------------------------------- +10605 PRINT "TEST #6" +10610 let n = 0 +10620 do until FALSE +10625 let n = n + 1 +10630 print "Loop #"; n +10635 exit do +10640 goto TestFailed +10645 loop +10650 if n <> 1 then goto TestFailed +10655 print "*** TEST #6 PASSED ***" +10700 REM -------------------------------------- +10705 PRINT "TEST #7" +10710 let n = 0 +10720 do until FALSE +10725 let n = n + 1 +10730 print "Loop #"; n +10735 exit do +10740 goto TestFailed +10745 loop until FALSE +10750 if n <> 1 then goto TestFailed +10755 print "*** TEST #7 PASSED ***" +10800 REM -------------------------------------- +10805 PRINT "TEST #8" +10810 let n = 0 +10820 do until FALSE +10825 let n = n + 1 +10830 print "Loop #"; n +10835 exit do +10840 goto TestFailed +10845 loop until TRUE +10850 if n <> 1 then goto TestFailed +10855 print "*** TEST #8 PASSED ***" +10900 REM -------------------------------------- +10905 PRINT "TEST #9" +10910 let n = 0 +10920 do until FALSE +10925 let n = n + 1 +10930 print "Loop #"; n +10935 exit do +10940 goto TestFailed +10945 loop while FALSE +10950 if n <> 1 then goto TestFailed +10955 print "*** TEST #9 PASSED ***" +11000 REM -------------------------------------- +11005 PRINT "TEST #10" +11010 let n = 0 +11020 do until FALSE +11025 let n = n + 1 +11030 print "Loop #"; n +11035 exit do +11040 goto TestFailed +11045 loop while TRUE +11050 if n <> 1 then goto TestFailed +11055 print "*** TEST #10 PASSED ***" +11100 REM -------------------------------------- +11105 PRINT "TEST #11" +11110 let n = 0 +11120 do until TRUE +11125 let n = n + 1 +11130 print "Loop #"; n +11135 exit do +11140 goto TestFailed +11145 loop +11150 if n <> 0 then goto TestFailed +11155 print "*** TEST #11 PASSED ***" +11200 REM -------------------------------------- +11205 PRINT "TEST #12" +11210 let n = 0 +11220 do until TRUE +11225 let n = n + 1 +11230 print "Loop #"; n +11235 exit do +11240 goto TestFailed +11245 loop until FALSE +11250 if n <> 0 then goto TestFailed +11255 print "*** TEST #12 PASSED ***" +11300 REM -------------------------------------- +11305 PRINT "TEST #13" +11310 let n = 0 +11320 do until TRUE +11325 let n = n + 1 +11330 print "Loop #"; n +11335 exit do +11340 goto TestFailed +11345 loop until TRUE +11350 if n <> 0 then goto TestFailed +11355 print "*** TEST #13 PASSED ***" +11400 REM -------------------------------------- +11405 PRINT "TEST #14" +11410 let n = 0 +11420 do until TRUE +11425 let n = n + 1 +11430 print "Loop #"; n +11435 exit do +11440 goto TestFailed +11445 loop while FALSE +11450 if n <> 0 then goto TestFailed +11455 print "*** TEST #14 PASSED ***" +11500 REM -------------------------------------- +11505 PRINT "TEST #15" +11510 let n = 0 +11520 do until TRUE +11525 let n = n + 1 +11530 print "Loop #"; n +11535 exit do +11540 goto TestFailed +11545 loop while TRUE +11550 if n <> 0 then goto TestFailed +11555 print "*** TEST #15 PASSED ***" +11600 REM -------------------------------------- +11605 PRINT "TEST #16" +11610 let n = 0 +11620 do while FALSE +11625 let n = n + 1 +11630 print "Loop #"; n +11635 exit do +11640 goto TestFailed +11645 loop +11650 if n <> 0 then goto TestFailed +11655 print "*** TEST #16 PASSED ***" +11700 REM -------------------------------------- +11705 PRINT "TEST #17" +11710 let n = 0 +11720 do while FALSE +11725 let n = n + 1 +11730 print "Loop #"; n +11735 exit do +11740 goto TestFailed +11745 loop until FALSE +11750 if n <> 0 then goto TestFailed +11755 print "*** TEST #17 PASSED ***" +11800 REM -------------------------------------- +11805 PRINT "TEST #18" +11810 let n = 0 +11820 do while FALSE +11825 let n = n + 1 +11830 print "Loop #"; n +11835 exit do +11840 goto TestFailed +11845 loop until TRUE +11850 if n <> 0 then goto TestFailed +11855 print "*** TEST #18 PASSED ***" +11900 REM -------------------------------------- +11905 PRINT "TEST #19" +11910 let n = 0 +11920 do while FALSE +11925 let n = n + 1 +11930 print "Loop #"; n +11935 exit do +11940 goto TestFailed +11945 loop while FALSE +11950 if n <> 0 then goto TestFailed +11955 print "*** TEST #19 PASSED ***" +12000 REM -------------------------------------- +12005 PRINT "TEST #20" +12010 let n = 0 +12020 do while FALSE +12025 let n = n + 1 +12030 print "Loop #"; n +12035 exit do +12040 goto TestFailed +12045 loop while TRUE +12050 if n <> 0 then goto TestFailed +12055 print "*** TEST #20 PASSED ***" +12100 REM -------------------------------------- +12105 PRINT "TEST #21" +12110 let n = 0 +12120 do while TRUE +12125 let n = n + 1 +12130 print "Loop #"; n +12135 exit do +12140 goto TestFailed +12145 loop +12150 if n <> 1 then goto TestFailed +12155 print "*** TEST #21 PASSED ***" +12200 REM -------------------------------------- +12205 PRINT "TEST #22" +12210 let n = 0 +12220 do while TRUE +12225 let n = n + 1 +12230 print "Loop #"; n +12235 exit do +12240 goto TestFailed +12245 loop until FALSE +12250 if n <> 1 then goto TestFailed +12255 print "*** TEST #22 PASSED ***" +12300 REM -------------------------------------- +12305 PRINT "TEST #23" +12310 let n = 0 +12320 do while TRUE +12325 let n = n + 1 +12330 print "Loop #"; n +12335 exit do +12340 goto TestFailed +12345 loop until TRUE +12350 if n <> 1 then goto TestFailed +12355 print "*** TEST #23 PASSED ***" +12400 REM -------------------------------------- +12405 PRINT "TEST #24" +12410 let n = 0 +12420 do while TRUE +12425 let n = n + 1 +12430 print "Loop #"; n +12435 exit do +12440 goto TestFailed +12445 loop while FALSE +12450 if n <> 1 then goto TestFailed +12455 print "*** TEST #24 PASSED ***" +12500 REM -------------------------------------- +12505 PRINT "TEST #25" +12510 let n = 0 +12520 do while TRUE +12525 let n = n + 1 +12530 print "Loop #"; n +12535 exit do +12540 goto TestFailed +12545 loop while TRUE +12550 if n <> 1 then goto TestFailed +12555 print "*** TEST #25 PASSED ** +18000 rem ------------------------------------------ +18010 TestPassed: +18020 print "*** ALL TESTS PASSED ***" +18030 goto TheEnd +18500 rem ------------------------------------------ +18510 TestFailed: +18520 print "*** TEST FAILED ***" +18530 goto TheEnd +19000 rem ------------------------------------------ +19010 TheEnd: +19999 end diff --git a/NBS2/E024.OUT b/NBS2/E024.OUT new file mode 100644 index 0000000..079bd5f --- /dev/null +++ b/NBS2/E024.OUT @@ -0,0 +1,66 @@ +TEST #1 +Loop # 1 +*** TEST #1 PASSED *** +TEST #2 +Loop # 1 +*** TEST #2 PASSED *** +TEST #3 +Loop # 1 +*** TEST #3 PASSED *** +TEST #4 +Loop # 1 +*** TEST #4 PASSED *** +TEST #5 +Loop # 1 +*** TEST #5 PASSED *** +TEST #6 +Loop # 1 +*** TEST #6 PASSED *** +TEST #7 +Loop # 1 +*** TEST #7 PASSED *** +TEST #8 +Loop # 1 +*** TEST #8 PASSED *** +TEST #9 +Loop # 1 +*** TEST #9 PASSED *** +TEST #10 +Loop # 1 +*** TEST #10 PASSED *** +TEST #11 +*** TEST #11 PASSED *** +TEST #12 +*** TEST #12 PASSED *** +TEST #13 +*** TEST #13 PASSED *** +TEST #14 +*** TEST #14 PASSED *** +TEST #15 +*** TEST #15 PASSED *** +TEST #16 +*** TEST #16 PASSED *** +TEST #17 +*** TEST #17 PASSED *** +TEST #18 +*** TEST #18 PASSED *** +TEST #19 +*** TEST #19 PASSED *** +TEST #20 +*** TEST #20 PASSED *** +TEST #21 +Loop # 1 +*** TEST #21 PASSED *** +TEST #22 +Loop # 1 +*** TEST #22 PASSED *** +TEST #23 +Loop # 1 +*** TEST #23 PASSED *** +TEST #24 +Loop # 1 +*** TEST #24 PASSED *** +TEST #25 +Loop # 1 +*** TEST #25 PASSED ** +*** ALL TESTS PASSED *** diff --git a/NBS2/E024.dif b/NBS2/E024.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E024.run b/NBS2/E024.run new file mode 100644 index 0000000..a4ad0cc --- /dev/null +++ b/NBS2/E024.run @@ -0,0 +1,66 @@ +TEST #1 +Loop # 1 +*** TEST #1 PASSED *** +TEST #2 +Loop # 1 +*** TEST #2 PASSED *** +TEST #3 +Loop # 1 +*** TEST #3 PASSED *** +TEST #4 +Loop # 1 +*** TEST #4 PASSED *** +TEST #5 +Loop # 1 +*** TEST #5 PASSED *** +TEST #6 +Loop # 1 +*** TEST #6 PASSED *** +TEST #7 +Loop # 1 +*** TEST #7 PASSED *** +TEST #8 +Loop # 1 +*** TEST #8 PASSED *** +TEST #9 +Loop # 1 +*** TEST #9 PASSED *** +TEST #10 +Loop # 1 +*** TEST #10 PASSED *** +TEST #11 +*** TEST #11 PASSED *** +TEST #12 +*** TEST #12 PASSED *** +TEST #13 +*** TEST #13 PASSED *** +TEST #14 +*** TEST #14 PASSED *** +TEST #15 +*** TEST #15 PASSED *** +TEST #16 +*** TEST #16 PASSED *** +TEST #17 +*** TEST #17 PASSED *** +TEST #18 +*** TEST #18 PASSED *** +TEST #19 +*** TEST #19 PASSED *** +TEST #20 +*** TEST #20 PASSED *** +TEST #21 +Loop # 1 +*** TEST #21 PASSED *** +TEST #22 +Loop # 1 +*** TEST #22 PASSED *** +TEST #23 +Loop # 1 +*** TEST #23 PASSED *** +TEST #24 +Loop # 1 +*** TEST #24 PASSED *** +TEST #25 +Loop # 1 +*** TEST #25 PASSED ** +*** ALL TESTS PASSED *** diff --git a/NBS2/E025.80 b/NBS2/E025.80 new file mode 100644 index 0000000..d695c6d --- /dev/null +++ b/NBS2/E025.80 @@ -0,0 +1,102 @@ +TEST #1 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #1 PASSED *** +TEST #2 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #2 PASSED *** +TEST #3 +Loop # 1 +*** TEST #3 PASSED *** +TEST #4 +Loop # 1 +*** TEST #4 PASSED *** +TEST #5 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #5 PASSED *** +TEST #6 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #6 PASSED *** +TEST #7 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #7 PASSED *** +TEST #8 +Loop # 1 +*** TEST #8 PASSED *** +TEST #9 +Loop # 1 +*** TEST #9 PASSED *** +TEST #10 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #10 PASSED *** +TEST #11 +*** TEST #11 PASSED *** +TEST #12 +*** TEST #12 PASSED *** +TEST #13 +*** TEST #13 PASSED *** +TEST #14 +*** TEST #14 PASSED *** +TEST #15 +*** TEST #15 PASSED *** +TEST #16 +*** TEST #16 PASSED *** +TEST #17 +*** TEST #17 PASSED *** +TEST #18 +*** TEST #18 PASSED *** +TEST #19 +*** TEST #19 PASSED *** +TEST #20 +*** TEST #20 PASSED *** +TEST #21 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #21 PASSED *** +TEST #22 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #22 PASSED *** +TEST #23 +Loop # 1 +*** TEST #23 PASSED *** +TEST #24 +Loop # 1 +*** TEST #24 PASSED *** +TEST #25 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #25 PASSED ** +*** ALL TESTS PASSED *** diff --git a/NBS2/E025.BAS b/NBS2/E025.BAS new file mode 100644 index 0000000..3807b31 --- /dev/null +++ b/NBS2/E025.BAS @@ -0,0 +1,370 @@ +00100 REM -------------------------------------- +00110 REM FILENAME: do2.bas +00120 REM PURPOSE: Verify "DO-LOOP" with "if n > 4 then exit do" +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 17th, 2014 +00150 REM -------------------------------------- +01000 REM # do loop +01010 REM 1 ----------- ----------- +01020 REM 2 ----------- until FALSE +01030 REM 3 ----------- until TRUE +01040 REM 4 ----------- while FALSE +01050 REM 5 ----------- while TRUE +01060 REM 6 until FALSE ----------- +01070 REM 7 until FALSE until FALSE +01080 REM 8 until FALSE until TRUE +01090 REM 9 until FALSE while FALSE +01100 REM 10 until FALSE while TRUE +01110 REM 11 until TRUE ----------- +01120 REM 12 until TRUE until FALSE +01130 REM 13 until TRUE until TRUE +01140 REM 14 until TRUE while FALSE +01150 REM 15 until TRUE while TRUE +01160 REM 16 while FALSE ----------- +01170 REM 17 while FALSE until FALSE +01180 REM 18 while FALSE until TRUE +01190 REM 19 while FALSE while FALSE +01200 REM 20 while FALSE while TRUE +01210 REM 21 while TRUE ----------- +01220 REM 22 while TRUE until FALSE +01230 REM 23 while TRUE until TRUE +01240 REM 24 while TRUE while FALSE +01250 REM 25 while TRUE while TRUE +09000 let TRUE = 1 +09010 let FALSE = 0 +10100 REM -------------------------------------- +10105 PRINT "TEST #1" +10110 let n = 0 +10120 do +10125 let n = n + 1 +10130 print "Loop #"; n +10135 if n > 4 then +exit do +end if +10140 if n > 5 then goto TestFailed +10145 loop +10150 if n <> 5 then goto TestFailed +10155 print "*** TEST #1 PASSED ***" +10200 REM -------------------------------------- +10205 PRINT "TEST #2" +10210 let n = 0 +10220 do +10225 let n = n + 1 +10230 print "Loop #"; n +10235 if n > 4 then +exit do +end if +10240 if n > 5 then goto TestFailed +10245 loop until FALSE +10250 if n <> 5 then goto TestFailed +10255 print "*** TEST #2 PASSED ***" +10300 REM -------------------------------------- +10305 PRINT "TEST #3" +10310 let n = 0 +10320 do +10325 let n = n + 1 +10330 print "Loop #"; n +10335 if n > 4 then + exit do + end if +10340 if n > 5 then goto TestFailed +10345 loop until TRUE +10350 if n <> 1 then goto TestFailed +10355 print "*** TEST #3 PASSED ***" +10400 REM -------------------------------------- +10405 PRINT "TEST #4" +10410 let n = 0 +10420 do +10425 let n = n + 1 +10430 print "Loop #"; n +10435 if n > 4 then + exit do + end if +10440 if n > 5 then goto TestFailed +10445 loop while FALSE +10450 if n <> 1 then goto TestFailed +10455 print "*** TEST #4 PASSED ***" +10500 REM -------------------------------------- +10505 PRINT "TEST #5" +10510 let n = 0 +10520 do +10525 let n = n + 1 +10530 print "Loop #"; n +10535 if n > 4 then + exit do + end if +10540 if n > 5 then goto TestFailed +10545 loop while TRUE +10550 if n <> 5 then goto TestFailed +10555 print "*** TEST #5 PASSED ***" +10600 REM -------------------------------------- +10605 PRINT "TEST #6" +10610 let n = 0 +10620 do until FALSE +10625 let n = n + 1 +10630 print "Loop #"; n +10635 if n > 4 then +exit do +end if +10640 if n > 5 then goto TestFailed +10645 loop +10650 if n <> 5 then goto TestFailed +10655 print "*** TEST #6 PASSED ***" +10700 REM -------------------------------------- +10705 PRINT "TEST #7" +10710 let n = 0 +10720 do until FALSE +10725 let n = n + 1 +10730 print "Loop #"; n +10735 if n > 4 then + exit do + end if +10740 if n > 5 then goto TestFailed +10745 loop until FALSE +10750 if n <> 5 then goto TestFailed +10755 print "*** TEST #7 PASSED ***" +10800 REM -------------------------------------- +10805 PRINT "TEST #8" +10810 let n = 0 +10820 do until FALSE +10825 let n = n + 1 +10830 print "Loop #"; n +10835 if n > 4 then + exit do + end if +10840 if n > 5 then goto TestFailed +10845 loop until TRUE +10850 if n <> 1 then goto TestFailed +10855 print "*** TEST #8 PASSED ***" +10900 REM -------------------------------------- +10905 PRINT "TEST #9" +10910 let n = 0 +10920 do until FALSE +10925 let n = n + 1 +10930 print "Loop #"; n +10935 if n > 4 then +exit do +end if +10940 if n > 5 then goto TestFailed +10945 loop while FALSE +10950 if n <> 1 then goto TestFailed +10955 print "*** TEST #9 PASSED ***" +11000 REM -------------------------------------- +11005 PRINT "TEST #10" +11010 let n = 0 +11020 do until FALSE +11025 let n = n + 1 +11030 print "Loop #"; n +11035 if n > 4 then + exit do + end if +11040 if n > 5 then goto TestFailed +11045 loop while TRUE +11050 if n <> 5 then goto TestFailed +11055 print "*** TEST #10 PASSED ***" +11100 REM -------------------------------------- +11105 PRINT "TEST #11" +11110 let n = 0 +11120 do until TRUE +11125 let n = n + 1 +11130 print "Loop #"; n +11135 if n > 4 then +exit do +end if +11140 if n > 5 then goto TestFailed +11145 loop +11150 if n <> 0 then goto TestFailed +11155 print "*** TEST #11 PASSED ***" +11200 REM -------------------------------------- +11205 PRINT "TEST #12" +11210 let n = 0 +11220 do until TRUE +11225 let n = n + 1 +11230 print "Loop #"; n +11235 if n > 4 then + exit do + end if +11240 if n > 5 then goto TestFailed +11245 loop until FALSE +11250 if n <> 0 then goto TestFailed +11255 print "*** TEST #12 PASSED ***" +11300 REM -------------------------------------- +11305 PRINT "TEST #13" +11310 let n = 0 +11320 do until TRUE +11325 let n = n + 1 +11330 print "Loop #"; n +11335 if n > 4 then +exit do +end if +11340 if n > 5 then goto TestFailed +11345 loop until TRUE +11350 if n <> 0 then goto TestFailed +11355 print "*** TEST #13 PASSED ***" +11400 REM -------------------------------------- +11405 PRINT "TEST #14" +11410 let n = 0 +11420 do until TRUE +11425 let n = n + 1 +11430 print "Loop #"; n +11435 if n > 4 then +exit do +end if +11440 if n > 5 then goto TestFailed +11445 loop while FALSE +11450 if n <> 0 then goto TestFailed +11455 print "*** TEST #14 PASSED ***" +11500 REM -------------------------------------- +11505 PRINT "TEST #15" +11510 let n = 0 +11520 do until TRUE +11525 let n = n + 1 +11530 print "Loop #"; n +11535 if n > 4 then + exit do + end if +11540 if n > 5 then goto TestFailed +11545 loop while TRUE +11550 if n <> 0 then goto TestFailed +11555 print "*** TEST #15 PASSED ***" +11600 REM -------------------------------------- +11605 PRINT "TEST #16" +11610 let n = 0 +11620 do while FALSE +11625 let n = n + 1 +11630 print "Loop #"; n +11635 if n > 4 then + exit do + end if +11640 if n > 5 then goto TestFailed +11645 loop +11650 if n <> 0 then goto TestFailed +11655 print "*** TEST #16 PASSED ***" +11700 REM -------------------------------------- +11705 PRINT "TEST #17" +11710 let n = 0 +11720 do while FALSE +11725 let n = n + 1 +11730 print "Loop #"; n +11735 if n > 4 then + exit do +end if +11740 if n > 5 then goto TestFailed +11745 loop until FALSE +11750 if n <> 0 then goto TestFailed +11755 print "*** TEST #17 PASSED ***" +11800 REM -------------------------------------- +11805 PRINT "TEST #18" +11810 let n = 0 +11820 do while FALSE +11825 let n = n + 1 +11830 print "Loop #"; n +11835 if n > 4 then + exit do + end if +11840 if n > 5 then goto TestFailed +11845 loop until TRUE +11850 if n <> 0 then goto TestFailed +11855 print "*** TEST #18 PASSED ***" +11900 REM -------------------------------------- +11905 PRINT "TEST #19" +11910 let n = 0 +11920 do while FALSE +11925 let n = n + 1 +11930 print "Loop #"; n +11935 if n > 4 then + exit do + end if +11940 if n > 5 then goto TestFailed +11945 loop while FALSE +11950 if n <> 0 then goto TestFailed +11955 print "*** TEST #19 PASSED ***" +12000 REM -------------------------------------- +12005 PRINT "TEST #20" +12010 let n = 0 +12020 do while FALSE +12025 let n = n + 1 +12030 print "Loop #"; n +12035 if n > 4 then + exit do + end if +12040 if n > 5 then goto TestFailed +12045 loop while TRUE +12050 if n <> 0 then goto TestFailed +12055 print "*** TEST #20 PASSED ***" +12100 REM -------------------------------------- +12105 PRINT "TEST #21" +12110 let n = 0 +12120 do while TRUE +12125 let n = n + 1 +12130 print "Loop #"; n +12135 if n > 4 then + exit do + end if +12140 if n > 5 then goto TestFailed +12145 loop +12150 if n <> 5 then goto TestFailed +12155 print "*** TEST #21 PASSED ***" +12200 REM -------------------------------------- +12205 PRINT "TEST #22" +12210 let n = 0 +12220 do while TRUE +12225 let n = n + 1 +12230 print "Loop #"; n +12235 if n > 4 then + exit do + end if +12240 if n > 5 then goto TestFailed +12245 loop until FALSE +12250 if n <> 5 then goto TestFailed +12255 print "*** TEST #22 PASSED ***" +12300 REM -------------------------------------- +12305 PRINT "TEST #23" +12310 let n = 0 +12320 do while TRUE +12325 let n = n + 1 +12330 print "Loop #"; n +12335 if n > 4 then +exit do +end if +12340 if n > 5 then goto TestFailed +12345 loop until TRUE +12350 if n <> 1 then goto TestFailed +12355 print "*** TEST #23 PASSED ***" +12400 REM -------------------------------------- +12405 PRINT "TEST #24" +12410 let n = 0 +12420 do while TRUE +12425 let n = n + 1 +12430 print "Loop #"; n +12435 if n > 4 then +exit do +end if +12440 if n > 5 then goto TestFailed +12445 loop while FALSE +12450 if n <> 1 then goto TestFailed +12455 print "*** TEST #24 PASSED ***" +12500 REM -------------------------------------- +12505 PRINT "TEST #25" +12510 let n = 0 +12520 do while TRUE +12525 let n = n + 1 +12530 print "Loop #"; n +12535 if n > 4 then + exit do + end if +12540 if n > 5 then goto TestFailed +12545 loop while TRUE +12550 if n <> 5 then goto TestFailed +12555 print "*** TEST #25 PASSED ** +18000 rem ------------------------------------------ +18010 TestPassed: +18020 print "*** ALL TESTS PASSED ***" +18030 goto TheEnd +18500 rem ------------------------------------------ +18510 TestFailed: +18520 print "*** TEST FAILED ***" +18530 goto TheEnd +19000 rem ------------------------------------------ +19010 TheEnd: +19999 end diff --git a/NBS2/E025.OUT b/NBS2/E025.OUT new file mode 100644 index 0000000..abbdcf3 --- /dev/null +++ b/NBS2/E025.OUT @@ -0,0 +1,102 @@ +TEST #1 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #1 PASSED *** +TEST #2 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #2 PASSED *** +TEST #3 +Loop # 1 +*** TEST #3 PASSED *** +TEST #4 +Loop # 1 +*** TEST #4 PASSED *** +TEST #5 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #5 PASSED *** +TEST #6 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #6 PASSED *** +TEST #7 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #7 PASSED *** +TEST #8 +Loop # 1 +*** TEST #8 PASSED *** +TEST #9 +Loop # 1 +*** TEST #9 PASSED *** +TEST #10 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #10 PASSED *** +TEST #11 +*** TEST #11 PASSED *** +TEST #12 +*** TEST #12 PASSED *** +TEST #13 +*** TEST #13 PASSED *** +TEST #14 +*** TEST #14 PASSED *** +TEST #15 +*** TEST #15 PASSED *** +TEST #16 +*** TEST #16 PASSED *** +TEST #17 +*** TEST #17 PASSED *** +TEST #18 +*** TEST #18 PASSED *** +TEST #19 +*** TEST #19 PASSED *** +TEST #20 +*** TEST #20 PASSED *** +TEST #21 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #21 PASSED *** +TEST #22 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #22 PASSED *** +TEST #23 +Loop # 1 +*** TEST #23 PASSED *** +TEST #24 +Loop # 1 +*** TEST #24 PASSED *** +TEST #25 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #25 PASSED ** +*** ALL TESTS PASSED *** diff --git a/NBS2/E025.dif b/NBS2/E025.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E025.run b/NBS2/E025.run new file mode 100644 index 0000000..d695c6d --- /dev/null +++ b/NBS2/E025.run @@ -0,0 +1,102 @@ +TEST #1 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #1 PASSED *** +TEST #2 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #2 PASSED *** +TEST #3 +Loop # 1 +*** TEST #3 PASSED *** +TEST #4 +Loop # 1 +*** TEST #4 PASSED *** +TEST #5 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #5 PASSED *** +TEST #6 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #6 PASSED *** +TEST #7 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #7 PASSED *** +TEST #8 +Loop # 1 +*** TEST #8 PASSED *** +TEST #9 +Loop # 1 +*** TEST #9 PASSED *** +TEST #10 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #10 PASSED *** +TEST #11 +*** TEST #11 PASSED *** +TEST #12 +*** TEST #12 PASSED *** +TEST #13 +*** TEST #13 PASSED *** +TEST #14 +*** TEST #14 PASSED *** +TEST #15 +*** TEST #15 PASSED *** +TEST #16 +*** TEST #16 PASSED *** +TEST #17 +*** TEST #17 PASSED *** +TEST #18 +*** TEST #18 PASSED *** +TEST #19 +*** TEST #19 PASSED *** +TEST #20 +*** TEST #20 PASSED *** +TEST #21 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #21 PASSED *** +TEST #22 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #22 PASSED *** +TEST #23 +Loop # 1 +*** TEST #23 PASSED *** +TEST #24 +Loop # 1 +*** TEST #24 PASSED *** +TEST #25 +Loop # 1 +Loop # 2 +Loop # 3 +Loop # 4 +Loop # 5 +*** TEST #25 PASSED ** +*** ALL TESTS PASSED *** diff --git a/NBS2/E026.80 b/NBS2/E026.80 new file mode 100644 index 0000000..2fa921d --- /dev/null +++ b/NBS2/E026.80 @@ -0,0 +1,4 @@ +ERL= 110 +ERR= 6 +again +*** TEST PASSED *** diff --git a/NBS2/E026.BAS b/NBS2/E026.BAS new file mode 100644 index 0000000..5a13e3a --- /dev/null +++ b/NBS2/E026.BAS @@ -0,0 +1,16 @@ +010 let correct = 0 +100 on error goto 200 +110 print 1/0 +120 print "*** TEST FAILED #1 ***" +130 goto 299 +135 ErrorHandler: +140 print "again" +150 PRINT "*** TEST PASSED ***" +199 goto 299 +200 print "ERL="; ERL +210 print "ERR="; ERR +220 if ERL = 110 then +resume ErrorHandler +end if +230 PRINT "*** TEST FAILED #2 ***" +299 END diff --git a/NBS2/E026.OUT b/NBS2/E026.OUT new file mode 100644 index 0000000..71aedee --- /dev/null +++ b/NBS2/E026.OUT @@ -0,0 +1,4 @@ +ERL= 110 +ERR= 6 +again +*** TEST PASSED *** diff --git a/NBS2/E026.dif b/NBS2/E026.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E026.run b/NBS2/E026.run new file mode 100644 index 0000000..2fa921d --- /dev/null +++ b/NBS2/E026.run @@ -0,0 +1,4 @@ +ERL= 110 +ERR= 6 +again +*** TEST PASSED *** diff --git a/NBS2/E027.80 b/NBS2/E027.80 new file mode 100644 index 0000000..9c24808 --- /dev/null +++ b/NBS2/E027.80 @@ -0,0 +1,65 @@ +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E027.BAS b/NBS2/E027.BAS new file mode 100644 index 0000000..f5a6d9d --- /dev/null +++ b/NBS2/E027.BAS @@ -0,0 +1,232 @@ +00100 REM ----------------------------------------- +00110 REM FILENAME: exit1.bas +00120 REM PURPOSE: Verify EXIT DO/FOR/WHILE +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 9th, 2014 +01000 REM ----------------------------------------- +01010 REM DO +01020 REM ----------------------------------------- +01030 print "The following should only print 1,3" +01040 do +01050 print "1" +01060 exit do +01070 print "2" : ERROR 1 +01080 loop +01090 print "3" +02000 REM ----------------------------------------- +02010 REM DO,FOR +02020 REM ----------------------------------------- +02030 print "The following should only print 1,2,5" +02040 do +02050 print "1" +02060 for I = 1 to 100 +02070 print "2" +02080 exit do +02090 print "3" : ERROR 1 +02100 next I +02110 print "4" : ERROR 1 +02120 loop +02130 print "5" +03000 REM ----------------------------------------- +03010 REM DO,FOR,WHILE +03020 REM ----------------------------------------- +03030 print "The following should only print 1,2,3,7" +03040 do +03050 print "1" +03060 for I = 1 to 100 +03070 print "2" +03080 while 1 +03090 print "3" +03100 exit do +03110 print "4" : ERROR 1 +03120 wend +03130 print "5" : ERROR 1 +03140 next I +03150 print "6" : ERROR 1 +03160 loop +03170 print "7" +04000 REM ----------------------------------------- +04010 REM DO,WHILE +04020 REM ----------------------------------------- +04030 print "The following should only print 1,2,5" +04040 do +04050 print "1" +04060 while 1 +04070 print "2" +04080 exit do +04090 print "3" : ERROR 1 +04100 wend +04110 print "4" : ERROR 1 +04120 loop +04130 print "5" +05000 REM ----------------------------------------- +05010 REM DO,WHILE,FOR +05020 REM ----------------------------------------- +05030 print "The following should only print 1,2,3,7" +05040 do +05050 print "1" +05060 while 1 +05070 print "2" +05080 for I = 1 to 100 +05090 print "3" +05100 exit do +05110 print "4" : ERROR 1 +05120 next I +05130 print "5" : ERROR 1 +05140 wend +05150 print "6" : ERROR 1 +05160 loop +05170 print "7" +06000 REM ----------------------------------------- +06010 REM FOR +06020 REM ----------------------------------------- +06030 print "The following should only print 1,3" +06040 for I = 1 to 100 +06050 print "1" +06060 exit for +06070 print "2" : ERROR 1 +06080 next I +06090 print "3" +07000 REM ----------------------------------------- +07010 REM FOR,DO +07020 REM ----------------------------------------- +07030 print "The following should only print 1,2,5" +07040 for I = 1 to 100 +07050 print "1" +07060 do +07070 print "2" +07080 exit for +07090 print "3" : ERROR 1 +07100 loop +07110 print "4" : ERROR 1 +07120 next I +07130 print "5" +08000 REM ----------------------------------------- +08010 REM FOR,DO,WHILE +08020 REM ----------------------------------------- +08030 print "The following should only print 1,2,3,7" +08040 for I = 1 to 100 +08050 print "1" +08060 do +08070 print "2" +08080 while 1 +08090 print "3" +08100 exit for +08110 print "4" : ERROR 1 +08120 wend +08130 print "5" : ERROR 1 +08140 loop +08150 print "6" : ERROR 1 +08160 next I +08170 print "7" +09000 REM ----------------------------------------- +09010 REM FOR,WHILE +09020 REM ----------------------------------------- +09030 print "The following should only print 1,2,5" +09040 for I = 1 to 100 +09050 print "1" +09060 while 1 +09070 print "2" +09080 exit for +09090 print "3" : ERROR 1 +09100 wend +09110 print "4" : ERROR 1 +09120 next I +09130 print "5" +10000 REM ----------------------------------------- +10010 REM FOR,WHILE,DO +10020 REM ----------------------------------------- +10030 print "The following should only print 1,2,3,7" +10040 for I = 1 to 100 +10050 print "1" +10060 while 1 +10070 print "2" +10080 do +10090 print "3" +10100 exit for +10110 print "4" : ERROR 1 +10120 loop +10130 print "5" : ERROR 1 +10140 wend +10150 print "6" : ERROR 1 +10160 next I +10170 print "7" +11000 REM ----------------------------------------- +11010 REM WHILE +11020 REM ----------------------------------------- +11030 print "The following should only print 1,3" +11040 while 1 +11050 print "1" +11060 exit while +11070 print "2" : ERROR 1 +11080 wend +11090 print "3" +12000 REM ----------------------------------------- +12010 REM WHILE,DO +12020 REM ----------------------------------------- +12030 print "The following should only print 1,2,5" +12040 while 1 +12050 print "1" +12060 do +12070 print "2" +12080 exit while +12090 print "3" : ERROR 1 +12100 loop +12110 print "4" : ERROR 1 +12120 wend +12130 print "5" +13000 REM ----------------------------------------- +13010 REM WHILE,DO,FOR +13020 REM ----------------------------------------- +13030 print "The following should only print 1,2,3,7" +13040 while 1 +13050 print "1" +13060 do +13070 print "2" +13080 for I = 1 to 100 +13090 print "3" +13100 exit while +13110 print "4" : ERROR 1 +13120 next I +13130 print "5" : ERROR 1 +13140 loop +13150 print "6" : ERROR 1 +13160 wend +13170 print "7" +14000 REM ----------------------------------------- +14010 REM WHILE,FOR +14020 REM ----------------------------------------- +14030 print "The following should only print 1,2,5" +14040 while 1 +14050 print "1" +14060 for I = 1 to 100 +14070 print "2" +14080 exit while +14090 print "3" : ERROR 1 +14100 next I +14110 print "4" : ERROR 1 +14120 wend +14130 print "5" +15000 REM ----------------------------------------- +15010 REM WHILE,FOR,DO +15020 REM ----------------------------------------- +15030 print "The following should only print 1,2,3,7" +15040 while 1 +15050 print "1" +15060 for I = 1 to 100 +15070 print "2" +15080 do +15090 print "3" +15100 exit while +15110 print "4" : ERROR 1 +15120 loop +15130 print "5" : ERROR 1 +15140 next I +15150 print "6" : ERROR 1 +15160 wend +15170 print "7" +19900 REM ---------------------------------------------------- +19910 REM *** ALL TESTS PASSED *** +19920 REM ---------------------------------------------------- +19930 PRINT "*** ALL TESTS PASSED ***" +19999 QUIT diff --git a/NBS2/E027.OUT b/NBS2/E027.OUT new file mode 100644 index 0000000..a8260f2 --- /dev/null +++ b/NBS2/E027.OUT @@ -0,0 +1,65 @@ +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E027.dif b/NBS2/E027.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E027.run b/NBS2/E027.run new file mode 100644 index 0000000..9c24808 --- /dev/null +++ b/NBS2/E027.run @@ -0,0 +1,65 @@ +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,3 +1 +3 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +The following should only print 1,2,5 +1 +2 +5 +The following should only print 1,2,3,7 +1 +2 +3 +7 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E028.80 b/NBS2/E028.80 new file mode 100644 index 0000000..a2745b8 --- /dev/null +++ b/NBS2/E028.80 @@ -0,0 +1,6 @@ +TEST #1 passed +TEST #2 passed +TEST #3 passed +TEST #4 passed +TEST #5 passed +*** ALL TESTS PASSED *** diff --git a/NBS2/E028.BAS b/NBS2/E028.BAS new file mode 100644 index 0000000..4a61499 --- /dev/null +++ b/NBS2/E028.BAS @@ -0,0 +1,61 @@ +1000 rem ---------------------------------------------------------- +1010 rem File: exit2.bas +1020 rem Purpose: Verify EXIT DO|FOR|UNTIL|WHILE +2000 rem ---------------------------------------------------------- +2010 rem TEST #1: Verify "EXIT" is an ERROR +2020 ' on error goto 9000 +2025 ' let i = 0 +2030 ' do +2035 ' let i = i + 1 +2040 ' exit +2050 ' error 1 +2060 ' loop +2065 ' if i <> 1 then ERROR 1 +2070 print "TEST #1 passed" +2100 rem ---------------------------------------------------------- +2110 rem TEST #2: Verify "EXIT DO" exits DO-LOOP +2120 rem +2125 let i = 0 +2130 do +2135 let i = i + 1 +2140 exit do +2150 error 1 +2160 loop +2165 if i <> 1 then ERROR 1 +2170 print "TEST #2 passed" +2200 rem ---------------------------------------------------------- +2210 rem TEST #3: Verify "EXIT FOR" exits FOR-NEXT +2220 rem +2225 let i = 0 +2230 for j = 1 to 100 +2235 let i = i + 1 +2240 exit for +2250 error 1 +2260 next j +2265 if i <> 1 then ERROR 1 +2270 print "TEST #3 passed" +2300 rem ---------------------------------------------------------- +2310 rem TEST #4: Verify "EXIT UNTIL" exits UNTIL-UEND +2320 rem +2325 let i = 0 +2330 until 0 +2335 let i = i + 1 +2340 exit until +2350 error 1 +2360 uend +2365 if i <> 1 then ERROR 1 +2370 print "TEST #4 passed" +2400 rem ---------------------------------------------------------- +2410 rem TEST #5: Verify "EXIT WHILE" exits WHILE-WEND +2420 rem +2425 let i = 0 +2430 while 1 +2435 let i = i + 1 +2440 exit while +2450 error 1 +2460 wend +2465 if i <> 1 then ERROR 1 +2470 print "TEST #5 passed" +8000 rem ---------------------------------------------------------- +8010 rem ALL TESTS PASSED +8020 print "*** ALL TESTS PASSED ***" diff --git a/NBS2/E028.OUT b/NBS2/E028.OUT new file mode 100644 index 0000000..c68651b --- /dev/null +++ b/NBS2/E028.OUT @@ -0,0 +1,6 @@ +TEST #1 passed +TEST #2 passed +TEST #3 passed +TEST #4 passed +TEST #5 passed +*** ALL TESTS PASSED *** diff --git a/NBS2/E028.dif b/NBS2/E028.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E028.run b/NBS2/E028.run new file mode 100644 index 0000000..a2745b8 --- /dev/null +++ b/NBS2/E028.run @@ -0,0 +1,6 @@ +TEST #1 passed +TEST #2 passed +TEST #3 passed +TEST #4 passed +TEST #5 passed +*** ALL TESTS PASSED *** diff --git a/NBS2/E029.80 b/NBS2/E029.80 new file mode 100644 index 0000000..674aa7d --- /dev/null +++ b/NBS2/E029.80 @@ -0,0 +1,5 @@ +TEST #1 PASSED +TEST #2 PASSED +TEST #3 PASSED +TEST #4 PASSED +*** ALL TESTS PASSED *** diff --git a/NBS2/E029.BAS b/NBS2/E029.BAS new file mode 100644 index 0000000..1de8ccd --- /dev/null +++ b/NBS2/E029.BAS @@ -0,0 +1,45 @@ +100 rem ------------------------------ +110 rem File: if1.bas +120 rem Purpose: Verify IF/THEN/ELSE +130 rem ------------------------------ +200 let i = 1 +210 if i then 230 else 250 +220 error 1 +230 print "TEST #1 PASSED" +240 goto 300 +250 print "TEST #1 FAILED" +260 error 1 +300 let i = 0 +310 if i then 330 else 350 +320 error 1 +330 print "TEST #2 FAILED" +340 error 1 +350 print "TEST #2 PASSED" +360 goto 400 +400 let i = 1 +410 if i then + goto 430 + else + goto 450 + end if +420 error 1 +430 print "TEST #3 PASSED" +440 goto 500 +450 print "TEST #3 FAILED" +460 error 1 +500 let i = 0 +510 if i then + goto 530 + else + goto 550 + end if +520 error 1 +530 print "TEST #4 FAILED" +540 error 1 +550 print "TEST #4 PASSED" +560 goto 600 +600 rem +700 rem +800 rem +900 print "*** ALL TESTS PASSED ***" +999 END diff --git a/NBS2/E029.OUT b/NBS2/E029.OUT new file mode 100644 index 0000000..3bd03b2 --- /dev/null +++ b/NBS2/E029.OUT @@ -0,0 +1,5 @@ +TEST #1 PASSED +TEST #2 PASSED +TEST #3 PASSED +TEST #4 PASSED +*** ALL TESTS PASSED *** diff --git a/NBS2/E029.dif b/NBS2/E029.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E029.run b/NBS2/E029.run new file mode 100644 index 0000000..674aa7d --- /dev/null +++ b/NBS2/E029.run @@ -0,0 +1,5 @@ +TEST #1 PASSED +TEST #2 PASSED +TEST #3 PASSED +TEST #4 PASSED +*** ALL TESTS PASSED *** diff --git a/NBS2/E030.80 b/NBS2/E030.80 new file mode 100644 index 0000000..6189b88 --- /dev/null +++ b/NBS2/E030.80 @@ -0,0 +1,2 @@ +*** TEST PASSED *** + diff --git a/NBS2/E030.BAS b/NBS2/E030.BAS new file mode 100644 index 0000000..690b081 --- /dev/null +++ b/NBS2/E030.BAS @@ -0,0 +1,12 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: lcase1.bas +00120 REM PURPOSE: Verify LCASE$() +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 15th, 2014 +00150 REM ---------------------------------------------------- +01100 let z$ = "ZZZZZ" +01110 let l$ = lcase$(z$) +01120 if l$ <> "zzzzz" then print "LCASE$() FAILED": ERROR 1 +01130 print "*** TEST PASSED ***" +09999 QUIT + diff --git a/NBS2/E030.OUT b/NBS2/E030.OUT new file mode 100644 index 0000000..9b6356c --- /dev/null +++ b/NBS2/E030.OUT @@ -0,0 +1,2 @@ +*** TEST PASSED *** + diff --git a/NBS2/E030.dif b/NBS2/E030.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E030.run b/NBS2/E030.run new file mode 100644 index 0000000..6189b88 --- /dev/null +++ b/NBS2/E030.run @@ -0,0 +1,2 @@ +*** TEST PASSED *** + diff --git a/NBS2/E031.80 b/NBS2/E031.80 new file mode 100644 index 0000000..92166d0 --- /dev/null +++ b/NBS2/E031.80 @@ -0,0 +1,20 @@ + 23 +abc + 3 + 17 +abc + 3 + 0 + + 0 + 0 + + 0 + 26 +abc + 3 + 0 + + 0 +*** TEST PASSED *** + diff --git a/NBS2/E031.BAS b/NBS2/E031.BAS new file mode 100644 index 0000000..9a4b9c9 --- /dev/null +++ b/NBS2/E031.BAS @@ -0,0 +1,33 @@ +100 a$ = " abc" +105 print len( a$ ) +110 l$ = ltrim$( a$ ) +120 print l$ +130 print len( l$ ) +2100 a$ = "abc " +2105 print len( a$ ) +2110 r$ = rtrim$( a$ ) +2120 print r$ +2130 print len( r$ ) +2200 a$ = "" +2210 print len( a$ ) +2220 l$ = ltrim$( a$ ) +2230 print l$ +2240 print len( l$ ) +2400 a$ = "" +2410 print len( a$ ) +2420 r$ = rtrim$( a$ ) +2430 print r$ +2440 print len(r$) +2500 a$ = " abc " +2510 print len( a$ ) +2520 t$ = trim$( a$ ) +2530 print t$ +2540 print len( t$ ) +2600 a$ = "" +2610 print len( a$ ) +2620 t$ = trim$( a$ ) +2630 print t$ +2640 print len( t$ ) +9000 print "*** TEST PASSED ***" +9999 QUIT + diff --git a/NBS2/E031.OUT b/NBS2/E031.OUT new file mode 100644 index 0000000..e84af70 --- /dev/null +++ b/NBS2/E031.OUT @@ -0,0 +1,20 @@ + 23 +abc + 3 + 17 +abc + 3 + 0 + + 0 + 0 + + 0 + 26 +abc + 3 + 0 + + 0 +*** TEST PASSED *** + diff --git a/NBS2/E031.dif b/NBS2/E031.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E031.run b/NBS2/E031.run new file mode 100644 index 0000000..92166d0 --- /dev/null +++ b/NBS2/E031.run @@ -0,0 +1,20 @@ + 23 +abc + 3 + 17 +abc + 3 + 0 + + 0 + 0 + + 0 + 26 +abc + 3 + 0 + + 0 +*** TEST PASSED *** + diff --git a/NBS2/E032.80 b/NBS2/E032.80 new file mode 100644 index 0000000..f78bade --- /dev/null +++ b/NBS2/E032.80 @@ -0,0 +1,6 @@ +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** + diff --git a/NBS2/E032.BAS b/NBS2/E032.BAS new file mode 100644 index 0000000..577b8c3 --- /dev/null +++ b/NBS2/E032.BAS @@ -0,0 +1,50 @@ +100 REM File: on1.bas +110 REM Purpose: Verify ON ... GOTO|GOSUB ... +120 REM Note: for index values outside of ramge +130 REM ---------------------------------------------- +140 option version BASIC-80 +1000 let i = 0 +1010 on i goto 1100,1200,1300,1400,1500,1600,1700,1800,1900 +1020 print "*** TEST PASSED ***" +1030 on i gosub 1100,1200,1300,1400,1500,1600,1700,1800,1900 +1040 print "*** TEST PASSED ***" +1050 let i = 10 +1060 on i goto 1100,1200,1300,1400,1500,1600,1700,1800,1900 +1070 print "*** TEST PASSED ***" +1080 on i gosub 1100,1200,1300,1400,1500,1600,1700,1800,1900 +1090 print "*** TEST PASSED ***" +1099 goto 2000 +1100 ERROR 1 +1200 ERROR 1 +1300 ERROR 1 +1400 ERROR 1 +1500 ERROR 1 +1600 ERROR 1 +1700 ERROR 1 +1800 ERROR 1 +1900 ERROR 1 +2000 for i = 1 to 9 +2010 on i goto 2100,2200,2300,2400,2500,2600,2700,2800,2900 +2020 print "*** ERROR FOR INDEX="; i +2030 ERROR 1 +2040 next i +2050 print "*** TEST PASSED ***" +2099 QUIT +2100 if i = 1 then 2040 +2110 error 1 +2200 if i = 2 then 2040 +2210 error 1 +2300 if i = 3 then 2040 +2310 error 1 +2400 if i = 4 then 2040 +2410 error 1 +2500 if i = 5 then 2040 +2510 error 1 +2600 if i = 6 then 2040 +2610 error 1 +2700 if i = 7 then 2040 +2710 error 1 +2800 if i = 8 then 2040 +2810 error 1 +2900 if i = 9 then 2040 +2910 error 1 diff --git a/NBS2/E032.OUT b/NBS2/E032.OUT new file mode 100644 index 0000000..e7ede4f --- /dev/null +++ b/NBS2/E032.OUT @@ -0,0 +1,6 @@ +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** + diff --git a/NBS2/E032.dif b/NBS2/E032.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E032.run b/NBS2/E032.run new file mode 100644 index 0000000..f78bade --- /dev/null +++ b/NBS2/E032.run @@ -0,0 +1,6 @@ +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** +*** TEST PASSED *** + diff --git a/NBS2/E033.80 b/NBS2/E033.80 new file mode 100644 index 0000000..b5b988d --- /dev/null +++ b/NBS2/E033.80 @@ -0,0 +1,29 @@ +TESTING COS() +RADIAN COS()= .707107 +DEGREE COS()= .707107 +TESTING COS() +RADIAN SIN()= .707107 +DEGREE SIN()= .707107 +TESTING TAN() +RADIAN TAN()= 1. +DEGREE TAN()= 1. +TESTING SEC() +RADIAN SEC()= 1.41421 +DEGREE SEC()= 1.41421 +TESTING CSC() +RADIAN CSC()= 1.41421 +DEGREE CSC()= 1.41421 +TESTING COT() +RADIAN COT()= 1. +DEGREE COT()= 1. +TESTING COS() +RADIAN ACOS()= .785398 +DEGREE ACOS()= 45 +TESTING ASIN() +RADIAN ASIN()= .785398 +DEGREE ASIN()= 45 +TESTING ATN() +RADIAN ATN()= .785398 +DEGREE ATN()= 45 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E033.BAS b/NBS2/E033.BAS new file mode 100644 index 0000000..ca340e7 --- /dev/null +++ b/NBS2/E033.BAS @@ -0,0 +1,133 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: option1.bas +00120 REM PURPOSE: Verify OPTION ANGLE DEGREE/RADIANS +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 9th, 2014 +00150 REM NOTE: We convert the results to a string +00160 REM so we only compare significant digits. +00170 REM ---------------------------------------------------- +00180 REM let pi = 3.14159265 +01000 REM ---------------------------------------------------- +01010 REM Verify COS() +01020 REM ---------------------------------------------------- +01030 PRINT "TESTING COS()" +01040 option angle radians +01050 let r = COS( pi / 4 ) +01060 let r$ = str$( r ) +01070 print "RADIAN COS()="; r$ +01080 option angle degrees +01090 let d = COS( 45 ) +01110 let d$ = str$( d ) +01120 print "DEGREE COS()="; d$ +01130 if r$ <> d$ then ERROR 1 +02000 REM ---------------------------------------------------- +02010 REM Verify SIN() +02020 REM ---------------------------------------------------- +02030 PRINT "TESTING COS()" +02040 option angle radians +02050 let r = SIN( pi / 4 ) +02060 let r$ = str$( r ) +02070 print "RADIAN SIN()="; r$ +02080 option angle degrees +02090 let d = SIN( 45 ) +02110 let d$ = str$( d ) +02120 print "DEGREE SIN()="; d$ +02130 if r$ <> d$ then ERROR 1 +03000 REM ---------------------------------------------------- +03010 REM Verify TAN() +03020 REM ---------------------------------------------------- +03030 PRINT "TESTING TAN()" +03040 option angle radians +03050 let r = TAN( pi / 4 ) +03060 let r$ = str$( r ) +03070 print "RADIAN TAN()="; r$ +03080 option angle degrees +03090 let d = TAN( 45 ) +03110 let d$ = str$( d ) +03120 print "DEGREE TAN()="; d$ +03130 if r$ <> d$ then ERROR 1 +04000 REM ---------------------------------------------------- +04010 REM Verify SEC() = 1/COS() +04020 REM ---------------------------------------------------- +04030 PRINT "TESTING SEC()" +04040 option angle radians +04050 let r = SEC( pi / 4 ) +04060 let r$ = str$( r ) +04070 print "RADIAN SEC()="; r$ +04080 option angle degrees +04090 let d = SEC( 45 ) +04110 let d$ = str$( d ) +04120 print "DEGREE SEC()="; d$ +04130 if r$ <> d$ then ERROR 1 +05000 REM ---------------------------------------------------- +05010 REM Verify CSC() = 1/SIN() +05020 REM ---------------------------------------------------- +05030 PRINT "TESTING CSC()" +05040 option angle radians +05050 let r = CSC( pi / 4 ) +05060 let r$ = str$( r ) +05070 print "RADIAN CSC()="; r$ +05080 option angle degrees +05090 let d = CSC( 45 ) +05110 let d$ = str$( d ) +05120 print "DEGREE CSC()="; d$ +05130 if r$ <> d$ then ERROR 1 +06000 REM ---------------------------------------------------- +06010 REM Verify COT() = 1/TAN() +06020 REM ---------------------------------------------------- +06030 PRINT "TESTING COT()" +06040 option angle radians +06050 let r = COT( pi / 4 ) +06060 let r$ = str$( r ) +06070 print "RADIAN COT()="; r$ +06080 option angle degrees +06090 let d = COT( 45 ) +06110 let d$ = str$( d ) +06120 print "DEGREE COT()="; d$ +06130 if r$ <> d$ then ERROR 1 +07000 REM ---------------------------------------------------- +07010 REM Verify ACOS() +07020 REM ---------------------------------------------------- +07030 PRINT "TESTING COS()" +07040 option angle radians +07050 let r = ACOS( 0.7071068 ) +07060 let r$ = str$( r ) +07070 print "RADIAN ACOS()="; r$ +07080 option angle degrees +07090 let d = INT( ACOS( 0.7071068 ) + 0.5 ) +07110 let d$ = str$( d ) +07120 print "DEGREE ACOS()="; d$ +07130 if left$(r$,9) <> " .785398" or d$ <> " 45" then ERROR 1 +08000 REM ---------------------------------------------------- +08010 REM Verify ASIN() +08020 REM ---------------------------------------------------- +08030 PRINT "TESTING ASIN()" +08040 option angle radians +08050 let r = ASIN( 0.7071068 ) +08060 let r$ = str$( r ) +08070 print "RADIAN ASIN()="; r$ +08080 option angle degrees +08090 let d = INT( ASIN( 0.7071068 ) + 0.5 ) +08110 let d$ = str$( d ) +08120 print "DEGREE ASIN()="; d$ +08130 if left$(r$,9) <> " .785398" or d$ <> " 45" then ERROR 1 +09000 REM ---------------------------------------------------- +09010 REM Verify ATN() +09020 REM ---------------------------------------------------- +09030 PRINT "TESTING ATN()" +09040 option angle radians +09050 let r = ATN( 1.0 ) +09060 let r$ = str$( r ) +09070 print "RADIAN ATN()="; r$ +09080 option angle degrees +09090 let d = INT( ATN( 1.0 ) + 0.5 ) +09110 let d$ = str$( d ) +09120 print "DEGREE ATN()="; d$ +09130 if left$(r$,9) <> " .785398" or d$ <> " 45" then ERROR 1 +19900 REM ---------------------------------------------------- +19910 REM *** ALL TESTS PASSED *** +19920 REM ---------------------------------------------------- +19930 PRINT "*** ALL TESTS PASSED ***" +19999 QUIT + + diff --git a/NBS2/E033.OUT b/NBS2/E033.OUT new file mode 100644 index 0000000..bf97fb6 --- /dev/null +++ b/NBS2/E033.OUT @@ -0,0 +1,29 @@ +TESTING COS() +RADIAN COS()= .707107 +DEGREE COS()= .707107 +TESTING COS() +RADIAN SIN()= .707107 +DEGREE SIN()= .707107 +TESTING TAN() +RADIAN TAN()= 1. +DEGREE TAN()= 1. +TESTING SEC() +RADIAN SEC()= 1.41421 +DEGREE SEC()= 1.41421 +TESTING CSC() +RADIAN CSC()= 1.41421 +DEGREE CSC()= 1.41421 +TESTING COT() +RADIAN COT()= 1. +DEGREE COT()= 1. +TESTING COS() +RADIAN ACOS()= .785398 +DEGREE ACOS()= 45 +TESTING ASIN() +RADIAN ASIN()= .785398 +DEGREE ASIN()= 45 +TESTING ATN() +RADIAN ATN()= .785398 +DEGREE ATN()= 45 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E033.dif b/NBS2/E033.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E033.run b/NBS2/E033.run new file mode 100644 index 0000000..b5b988d --- /dev/null +++ b/NBS2/E033.run @@ -0,0 +1,29 @@ +TESTING COS() +RADIAN COS()= .707107 +DEGREE COS()= .707107 +TESTING COS() +RADIAN SIN()= .707107 +DEGREE SIN()= .707107 +TESTING TAN() +RADIAN TAN()= 1. +DEGREE TAN()= 1. +TESTING SEC() +RADIAN SEC()= 1.41421 +DEGREE SEC()= 1.41421 +TESTING CSC() +RADIAN CSC()= 1.41421 +DEGREE CSC()= 1.41421 +TESTING COT() +RADIAN COT()= 1. +DEGREE COT()= 1. +TESTING COS() +RADIAN ACOS()= .785398 +DEGREE ACOS()= 45 +TESTING ASIN() +RADIAN ASIN()= .785398 +DEGREE ASIN()= 45 +TESTING ATN() +RADIAN ATN()= .785398 +DEGREE ATN()= 45 +*** ALL TESTS PASSED *** + diff --git a/NBS2/E034.80 b/NBS2/E034.80 new file mode 100644 index 0000000..2e4c19f --- /dev/null +++ b/NBS2/E034.80 @@ -0,0 +1,2 @@ +*** ALL TESTS PASSED *** + diff --git a/NBS2/E034.BAS b/NBS2/E034.BAS new file mode 100644 index 0000000..03eabcf --- /dev/null +++ b/NBS2/E034.BAS @@ -0,0 +1,16 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: option2.bas +00120 REM PURPOSE: Verify OPTION ARITHMETIC DECIMAL/NATIVE/FIXED +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 9th, 2014 +00150 REM NOTE: These commands are parsed but have no effect +00160 REM ---------------------------------------------------- +01000 option arithmetic decimal +02000 option arithmetic native +03000 option arithmetic fixed +19900 REM ---------------------------------------------------- +19910 REM *** ALL TESTS PASSED *** +19920 REM ---------------------------------------------------- +19930 PRINT "*** ALL TESTS PASSED ***" +19999 QUIT + diff --git a/NBS2/E034.OUT b/NBS2/E034.OUT new file mode 100644 index 0000000..35da569 --- /dev/null +++ b/NBS2/E034.OUT @@ -0,0 +1,2 @@ +*** ALL TESTS PASSED *** + diff --git a/NBS2/E034.dif b/NBS2/E034.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E034.run b/NBS2/E034.run new file mode 100644 index 0000000..2e4c19f --- /dev/null +++ b/NBS2/E034.run @@ -0,0 +1,2 @@ +*** ALL TESTS PASSED *** + diff --git a/NBS2/E035.80 b/NBS2/E035.80 new file mode 100644 index 0000000..6189b88 --- /dev/null +++ b/NBS2/E035.80 @@ -0,0 +1,2 @@ +*** TEST PASSED *** + diff --git a/NBS2/E035.BAS b/NBS2/E035.BAS new file mode 100644 index 0000000..d427388 --- /dev/null +++ b/NBS2/E035.BAS @@ -0,0 +1,12 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: ucase1.bas +00120 REM PURPOSE: Verify UCASE$() +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 15th, 2014 +00150 REM ---------------------------------------------------- +01100 let a$ = "aaaaa" +01110 let u$ = ucase$(a$) +01120 if u$ <> "AAAAA" then print "UCASE$() FAILED": ERROR 1 +01130 print "*** TEST PASSED ***" +09999 QUIT + diff --git a/NBS2/E035.OUT b/NBS2/E035.OUT new file mode 100644 index 0000000..9b6356c --- /dev/null +++ b/NBS2/E035.OUT @@ -0,0 +1,2 @@ +*** TEST PASSED *** + diff --git a/NBS2/E035.dif b/NBS2/E035.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E035.run b/NBS2/E035.run new file mode 100644 index 0000000..6189b88 --- /dev/null +++ b/NBS2/E035.run @@ -0,0 +1,2 @@ +*** TEST PASSED *** + diff --git a/NBS2/E036.80 b/NBS2/E036.80 new file mode 100644 index 0000000..a1ec404 --- /dev/null +++ b/NBS2/E036.80 @@ -0,0 +1,8 @@ +i= 0 +i= 1 +i= 2 +i= 3 +i= 4 +i= 5 +*** TEST PASSED *** + diff --git a/NBS2/E036.BAS b/NBS2/E036.BAS new file mode 100644 index 0000000..a5e3bcd --- /dev/null +++ b/NBS2/E036.BAS @@ -0,0 +1,9 @@ +100 let i = 0 +110 until i > 4 +120 print "i="; i +130 let i = i + 1 +140 uend +150 print "i="; i +160 if i <> 5 then ERROR 1 +170 print "*** TEST PASSED ***" +999 QUIT diff --git a/NBS2/E036.OUT b/NBS2/E036.OUT new file mode 100644 index 0000000..67e5948 --- /dev/null +++ b/NBS2/E036.OUT @@ -0,0 +1,8 @@ +i= 0 +i= 1 +i= 2 +i= 3 +i= 4 +i= 5 +*** TEST PASSED *** + diff --git a/NBS2/E036.dif b/NBS2/E036.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E036.run b/NBS2/E036.run new file mode 100644 index 0000000..a1ec404 --- /dev/null +++ b/NBS2/E036.run @@ -0,0 +1,8 @@ +i= 0 +i= 1 +i= 2 +i= 3 +i= 4 +i= 5 +*** TEST PASSED *** + diff --git a/NBS2/E037.80 b/NBS2/E037.80 new file mode 100644 index 0000000..a1ec404 --- /dev/null +++ b/NBS2/E037.80 @@ -0,0 +1,8 @@ +i= 0 +i= 1 +i= 2 +i= 3 +i= 4 +i= 5 +*** TEST PASSED *** + diff --git a/NBS2/E037.BAS b/NBS2/E037.BAS new file mode 100644 index 0000000..4b4c831 --- /dev/null +++ b/NBS2/E037.BAS @@ -0,0 +1,9 @@ +100 let i = 0 +110 while i < 5 +120 print "i="; i +130 let i = i + 1 +140 wend +150 print "i="; i +160 if i <> 5 then ERROR 1 +170 print "*** TEST PASSED ***" +999 QUIT diff --git a/NBS2/E037.OUT b/NBS2/E037.OUT new file mode 100644 index 0000000..67e5948 --- /dev/null +++ b/NBS2/E037.OUT @@ -0,0 +1,8 @@ +i= 0 +i= 1 +i= 2 +i= 3 +i= 4 +i= 5 +*** TEST PASSED *** + diff --git a/NBS2/E037.dif b/NBS2/E037.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E037.run b/NBS2/E037.run new file mode 100644 index 0000000..a1ec404 --- /dev/null +++ b/NBS2/E037.run @@ -0,0 +1,8 @@ +i= 0 +i= 1 +i= 2 +i= 3 +i= 4 +i= 5 +*** TEST PASSED *** + diff --git a/NBS2/E038.80 b/NBS2/E038.80 new file mode 100644 index 0000000..0584742 --- /dev/null +++ b/NBS2/E038.80 @@ -0,0 +1,5 @@ +Inside E038.CHN +X$=abcdef +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E038.BAS b/NBS2/E038.BAS new file mode 100644 index 0000000..2832a73 --- /dev/null +++ b/NBS2/E038.BAS @@ -0,0 +1,15 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: chain1.bas +00120 REM PURPOSE: Verify CHAIN +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 10th, 2014 +00160 REM ---------------------------------------------------- +01000 COMMON X$ +01010 X$ = "abcdef" +01020 let A$ = "E038.CHN" +01030 chain "E038.CHN" +03000 REM ---------------------------------------------------- +03010 REM If we get to here, then the CHAIN failed +03020 REM ---------------------------------------------------- +03030 ERROR 1 +03040 STOP diff --git a/NBS2/E038.CHN b/NBS2/E038.CHN new file mode 100644 index 0000000..1c0dc43 --- /dev/null +++ b/NBS2/E038.CHN @@ -0,0 +1,25 @@ +02000 REM ---------------------------------------------------- +02010 REM FILENAME: chain1.txt +02020 REM PURPOSE: Verify CHAIN +02030 REM AUTHOR: Howard Wulf AF5NE +02040 REM DATE: October 10th, 2014 +02050 REM ---------------------------------------------------- +02060 REM This file is chained by "chain1.bas" +02070 REM +02080 PRINT "Inside E038.CHN" +02090 PRINT "X$="; X$ +02100 if X$ <> "abcdef" then goto TestFailed +02110 print "A$="; A$ +02120 if A$ <> "" then goto TestFailed +02130 print "*** TEST #1 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E038.OUT b/NBS2/E038.OUT new file mode 100644 index 0000000..8e78e2c --- /dev/null +++ b/NBS2/E038.OUT @@ -0,0 +1,5 @@ +Inside E038.CHN +X$=abcdef +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E038.dif b/NBS2/E038.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E038.run b/NBS2/E038.run new file mode 100644 index 0000000..0584742 --- /dev/null +++ b/NBS2/E038.run @@ -0,0 +1,5 @@ +Inside E038.CHN +X$=abcdef +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E039.80 b/NBS2/E039.80 new file mode 100644 index 0000000..678e498 --- /dev/null +++ b/NBS2/E039.80 @@ -0,0 +1,5 @@ +Inside E039.CHN +X$=abcdef +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E039.BAS b/NBS2/E039.BAS new file mode 100644 index 0000000..d16ad4c --- /dev/null +++ b/NBS2/E039.BAS @@ -0,0 +1,15 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: chain2.bas +00120 REM PURPOSE: Verify CHAIN +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 10th, 2014 +00160 REM ---------------------------------------------------- +01000 COMMON X$ +01010 X$ = "abcdef" +01020 let A$ = "E039.CHN" +01030 chain A$ +03000 REM ---------------------------------------------------- +03010 REM If we get to here, then the CHAIN failed +03020 REM ---------------------------------------------------- +03030 ERROR 1 +03040 STOP diff --git a/NBS2/E039.CHN b/NBS2/E039.CHN new file mode 100644 index 0000000..d0aef40 --- /dev/null +++ b/NBS2/E039.CHN @@ -0,0 +1,25 @@ +02000 REM ---------------------------------------------------- +02010 REM FILENAME: chain2.txt +02020 REM PURPOSE: Verify CHAIN +02030 REM AUTHOR: Howard Wulf AF5NE +02040 REM DATE: October 10th, 2014 +02050 REM ---------------------------------------------------- +02060 REM This file is chained by "chain2.bas" +02070 REM +02080 PRINT "Inside E039.CHN" +02090 PRINT "X$="; X$ +02100 if X$ <> "abcdef" then goto TestFailed +02110 print "A$="; A$ +02120 if A$ <> "" then goto TestFailed +02130 print "*** TEST #1 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E039.OUT b/NBS2/E039.OUT new file mode 100644 index 0000000..71f7760 --- /dev/null +++ b/NBS2/E039.OUT @@ -0,0 +1,5 @@ +Inside E039.CHN +X$=abcdef +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E039.dif b/NBS2/E039.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E039.run b/NBS2/E039.run new file mode 100644 index 0000000..678e498 --- /dev/null +++ b/NBS2/E039.run @@ -0,0 +1,5 @@ +Inside E039.CHN +X$=abcdef +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E040.80 b/NBS2/E040.80 new file mode 100644 index 0000000..cb9a272 --- /dev/null +++ b/NBS2/E040.80 @@ -0,0 +1,5 @@ +Inside E040.CHN +X$= +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E040.BAS b/NBS2/E040.BAS new file mode 100644 index 0000000..045e7ee --- /dev/null +++ b/NBS2/E040.BAS @@ -0,0 +1,12 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: chain3.bas +00120 REM PURPOSE: Verify CHAIN +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 10th, 2014 +00160 REM ---------------------------------------------------- +01030 chain "E040.CHN" +03000 REM ---------------------------------------------------- +03010 REM If we get to here, then the CHAIN failed +03020 REM ---------------------------------------------------- +03030 ERROR 1 +03040 STOP diff --git a/NBS2/E040.CHN b/NBS2/E040.CHN new file mode 100644 index 0000000..f000260 --- /dev/null +++ b/NBS2/E040.CHN @@ -0,0 +1,25 @@ +02000 REM ---------------------------------------------------- +02010 REM FILENAME: chain3.txt +02020 REM PURPOSE: Verify CHAIN +02030 REM AUTHOR: Howard Wulf AF5NE +02040 REM DATE: October 10th, 2014 +02050 REM ---------------------------------------------------- +02060 REM This file is chained by "chain3.bas" +02070 REM +02080 PRINT "Inside E040.CHN" +02090 PRINT "X$="; X$ +02100 if X$ <> "" then goto TestFailed +02110 print "A$="; A$ +02120 if A$ <> "" then goto TestFailed +02130 print "*** TEST #1 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E040.OUT b/NBS2/E040.OUT new file mode 100644 index 0000000..92ed7ab --- /dev/null +++ b/NBS2/E040.OUT @@ -0,0 +1,5 @@ +Inside E040.CHN +X$= +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E040.dif b/NBS2/E040.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E040.run b/NBS2/E040.run new file mode 100644 index 0000000..cb9a272 --- /dev/null +++ b/NBS2/E040.run @@ -0,0 +1,5 @@ +Inside E040.CHN +X$= +A$= +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E041.80 b/NBS2/E041.80 new file mode 100644 index 0000000..123f8ec --- /dev/null +++ b/NBS2/E041.80 @@ -0,0 +1,31 @@ +Guess a Number 1-100 + 40 +Trial 1 +? 30 +Wrong +TRY Bigger +Trial 2 +? 50 +Wrong +Try Smaller +Trial 3 +? 40 +Correct +You Won! +Do you want to play again? y +Guess a Number 1-100 + 40 +Trial 1 +? 30 +Wrong +TRY Bigger +Trial 2 +? 50 +Wrong +Try Smaller +Trial 3 +? 40 +Correct +You Won! +Do you want to play again? n +*** ALL TESTS PASSED *** diff --git a/NBS2/E041.BAS b/NBS2/E041.BAS new file mode 100644 index 0000000..cd6199d --- /dev/null +++ b/NBS2/E041.BAS @@ -0,0 +1,57 @@ +0010 REM ------------------------- +0020 REM Filename: bug3.bas +0030 REM Purpose: Verify bug #3 +0040 REM ------------------------- +0100 REM #3 Nested DO LOOP +0105 REM ERROR in line 1280: in bwb_loop(): exec stack code != EXEC_DO +0110 REM ------------------------- +0120 REM Status: open +0130 REM Owner: nobody +0140 REM Labels: None +0150 REM Priority: 5 +0160 REM Updated: 2009-12-28 +0170 REM Created: 2009-12-28 +0180 REM Creator:Ahmad Hawwash +0190 REM Private: No +0200 REM ------------------------- +1000 DO +1010 T = 1 +1020 PRINT "Guess a Number 1-100" +1030 N = INT(RND(1) * 100) + 1 +N = 40 +1040 PRINT N +1050 DO +1060 PRINT "Trial "; T +1070 INPUT G +1080 IF G = N THEN +1090 PRINT "Correct" +1100 PRINT "You Won!" +1110 EXIT DO +1120 ELSE +1130 PRINT "Wrong" +1140 IF T = 10 THEN +1150 PRINT "You Lose!" +1160 EXIT DO +1170 ELSE +1180 IF N < G THEN +1190 PRINT "Try Smaller" +1200 ELSE +1210 PRINT "TRY Bigger" +1220 END IF +1230 END IF +1240 END IF +1250 T = T + 1 +1260 LOOP +1270 INPUT "Do you want to play again";A$ +1280 LOOP UNTIL A$<>"Y" AND A$<>"y" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E041.INP b/NBS2/E041.INP new file mode 100644 index 0000000..df94cea --- /dev/null +++ b/NBS2/E041.INP @@ -0,0 +1,8 @@ +30 +50 +40 +y +30 +50 +40 +n diff --git a/NBS2/E041.OUT b/NBS2/E041.OUT new file mode 100644 index 0000000..155dd66 --- /dev/null +++ b/NBS2/E041.OUT @@ -0,0 +1,31 @@ +Guess a Number 1-100 + 40 +Trial 1 +? 30 +Wrong +TRY Bigger +Trial 2 +? 50 +Wrong +Try Smaller +Trial 3 +? 40 +Correct +You Won! +Do you want to play again? y +Guess a Number 1-100 + 40 +Trial 1 +? 30 +Wrong +TRY Bigger +Trial 2 +? 50 +Wrong +Try Smaller +Trial 3 +? 40 +Correct +You Won! +Do you want to play again? n +*** ALL TESTS PASSED *** diff --git a/NBS2/E041.dif b/NBS2/E041.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E041.run b/NBS2/E041.run new file mode 100644 index 0000000..123f8ec --- /dev/null +++ b/NBS2/E041.run @@ -0,0 +1,31 @@ +Guess a Number 1-100 + 40 +Trial 1 +? 30 +Wrong +TRY Bigger +Trial 2 +? 50 +Wrong +Try Smaller +Trial 3 +? 40 +Correct +You Won! +Do you want to play again? y +Guess a Number 1-100 + 40 +Trial 1 +? 30 +Wrong +TRY Bigger +Trial 2 +? 50 +Wrong +Try Smaller +Trial 3 +? 40 +Correct +You Won! +Do you want to play again? n +*** ALL TESTS PASSED *** diff --git a/NBS2/E042.80 b/NBS2/E042.80 new file mode 100644 index 0000000..0e53000 --- /dev/null +++ b/NBS2/E042.80 @@ -0,0 +1,5 @@ +Inside E042.CHN +X$=abcdef +Z= 1.2345 +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E042.BAS b/NBS2/E042.BAS new file mode 100644 index 0000000..9ceffac --- /dev/null +++ b/NBS2/E042.BAS @@ -0,0 +1,15 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: common1.bas +00120 REM PURPOSE: Verify COMMON +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 10th, 2014 +00160 REM ---------------------------------------------------- +01000 COMMON X$, Z +01010 X$ = "abcdef" +01020 Z = 1.2345 +01030 chain "E042.CHN" +03000 REM ---------------------------------------------------- +03010 REM If we get to here, then the CHAIN failed +03020 REM ---------------------------------------------------- +03030 ERROR 1 +03040 STOP diff --git a/NBS2/E042.CHN b/NBS2/E042.CHN new file mode 100644 index 0000000..46addd0 --- /dev/null +++ b/NBS2/E042.CHN @@ -0,0 +1,25 @@ +02000 REM ---------------------------------------------------- +02010 REM FILENAME: common1.txt +02020 REM PURPOSE: Verify CHAIN +02030 REM AUTHOR: Howard Wulf AF5NE +02040 REM DATE: October 10th, 2014 +02050 REM ---------------------------------------------------- +02060 REM This file is chained by "common1.bas" +02070 REM +02080 PRINT "Inside E042.CHN" +02090 PRINT "X$="; X$ +02100 if X$ <> "abcdef" then goto TestFailed +02110 PRINT "Z="; Z +02120 if Z <> 1.2345 then goto TestFailed +02130 print "*** TEST #1 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E042.OUT b/NBS2/E042.OUT new file mode 100644 index 0000000..899affb --- /dev/null +++ b/NBS2/E042.OUT @@ -0,0 +1,5 @@ +Inside E042.CHN +X$=abcdef +Z= 1.2345 +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E042.dif b/NBS2/E042.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E042.run b/NBS2/E042.run new file mode 100644 index 0000000..0e53000 --- /dev/null +++ b/NBS2/E042.run @@ -0,0 +1,5 @@ +Inside E042.CHN +X$=abcdef +Z= 1.2345 +*** TEST #1 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E043.80 b/NBS2/E043.80 new file mode 100644 index 0000000..6e280e5 --- /dev/null +++ b/NBS2/E043.80 @@ -0,0 +1,2 @@ +Inside E043.MRG +*** ALL TESTS PASSED *** diff --git a/NBS2/E043.BAS b/NBS2/E043.BAS new file mode 100644 index 0000000..9d09cdf --- /dev/null +++ b/NBS2/E043.BAS @@ -0,0 +1,30 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: merge1.bas +00120 REM PURPOSE: Verify MERGE +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 10th, 2014 +00160 REM ---------------------------------------------------- +01000 let f$ = "E043.MRG" +01010 delete 2000-2090 +01020 merge f$ +01030 REM ---------------------------------------------------- +01040 REM Lines 02000 thru 02090 are replaced by the merged file +01050 REM ---------------------------------------------------- +02000 ERROR 1 +02010 ERROR 1 +02020 ERROR 1 +02030 ERROR 1 +02040 ERROR 1 +02050 ERROR 1 +02060 ERROR 1 +02070 ERROR 1 +02080 ERROR 1 +02090 ERROR 1 +03000 REM ---------------------------------------------------- +03010 REM If we get to here, then the merge failed +03020 REM ---------------------------------------------------- +03030 ERROR 1 +03040 STOP +09900 REM ---------------------------------------------------- +09910 PRINT "*** ALL TESTS PASSED ***" +09920 END diff --git a/NBS2/E043.MRG b/NBS2/E043.MRG new file mode 100644 index 0000000..d6c07d8 --- /dev/null +++ b/NBS2/E043.MRG @@ -0,0 +1,10 @@ +02000 REM ---------------------------------------------------- +02010 REM FILENAME: merge1.txt +02020 REM PURPOSE: Verify MERGE +02030 REM AUTHOR: Howard Wulf AF5NE +02040 REM DATE: October 10th, 2014 +02050 REM ---------------------------------------------------- +02060 REM This file is merged by "merge1.bas" +02070 REM +02080 PRINT "Inside E043.MRG" +02090 GOTO 09900 diff --git a/NBS2/E043.OUT b/NBS2/E043.OUT new file mode 100644 index 0000000..e7376bf --- /dev/null +++ b/NBS2/E043.OUT @@ -0,0 +1,2 @@ +Inside E043.MRG +*** ALL TESTS PASSED *** diff --git a/NBS2/E043.dif b/NBS2/E043.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E043.run b/NBS2/E043.run new file mode 100644 index 0000000..6e280e5 --- /dev/null +++ b/NBS2/E043.run @@ -0,0 +1,2 @@ +Inside E043.MRG +*** ALL TESTS PASSED *** diff --git a/NBS2/E044.80 b/NBS2/E044.80 new file mode 100644 index 0000000..091cc03 --- /dev/null +++ b/NBS2/E044.80 @@ -0,0 +1,2 @@ +this is the first 17 +*** TEST PASSED *** diff --git a/NBS2/E044.BAS b/NBS2/E044.BAS new file mode 100644 index 0000000..5c05220 --- /dev/null +++ b/NBS2/E044.BAS @@ -0,0 +1,9 @@ +120 open "I", #7, "E044.DAT" +130 let b$ = input$( 17, #7 ) +140 print b$; len( b$ ) +145 if b$ <> "this is the first" then + ERROR 1 + end if +150 close #7 +160 print "*** TEST PASSED ***" +999 END diff --git a/NBS2/E044.DAT b/NBS2/E044.DAT new file mode 100644 index 0000000..01e1274 --- /dev/null +++ b/NBS2/E044.DAT @@ -0,0 +1,3 @@ +this is the first line +this is the second line +this is the third line diff --git a/NBS2/E044.OUT b/NBS2/E044.OUT new file mode 100644 index 0000000..05da1cc --- /dev/null +++ b/NBS2/E044.OUT @@ -0,0 +1,2 @@ +this is the first 17 +*** TEST PASSED *** diff --git a/NBS2/E044.dif b/NBS2/E044.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E044.run b/NBS2/E044.run new file mode 100644 index 0000000..091cc03 --- /dev/null +++ b/NBS2/E044.run @@ -0,0 +1,2 @@ +this is the first 17 +*** TEST PASSED *** diff --git a/NBS2/E045.80 b/NBS2/E045.80 new file mode 100644 index 0000000..d512590 --- /dev/null +++ b/NBS2/E045.80 @@ -0,0 +1,4 @@ +ERL= 130 +label1= 120 +label2= 140 +*** TEST PASSED *** diff --git a/NBS2/E045.BAS b/NBS2/E045.BAS new file mode 100644 index 0000000..c06db55 --- /dev/null +++ b/NBS2/E045.BAS @@ -0,0 +1,16 @@ +100 rem +110 on error goto 800 +120 label1: +130 error 1 +140 label2: +150 stop +800 rem +810 print "ERL=";ERL +820 print "label1=";label1 +830 print "label2=";label2 +840 if ERL > label1 AND ERL < label2 THEN +850 print "*** TEST PASSED ***" +860 goto 999 +870 end if +880 stop +999 end diff --git a/NBS2/E045.OUT b/NBS2/E045.OUT new file mode 100644 index 0000000..1865dfc --- /dev/null +++ b/NBS2/E045.OUT @@ -0,0 +1,4 @@ +ERL= 130 +label1= 120 +label2= 140 +*** TEST PASSED *** diff --git a/NBS2/E045.dif b/NBS2/E045.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E045.run b/NBS2/E045.run new file mode 100644 index 0000000..d512590 --- /dev/null +++ b/NBS2/E045.run @@ -0,0 +1,4 @@ +ERL= 130 +label1= 120 +label2= 140 +*** TEST PASSED *** diff --git a/NBS2/E046.80 b/NBS2/E046.80 new file mode 100644 index 0000000..87227e4 --- /dev/null +++ b/NBS2/E046.80 @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E046.BAS b/NBS2/E046.BAS new file mode 100644 index 0000000..57cf66a --- /dev/null +++ b/NBS2/E046.BAS @@ -0,0 +1,54 @@ +1000 rem ------------------------------------------ +1010 rem Filename: cvs1.bas +1020 rem Purpose: Verify CVS() and MKS$() +1100 rem ------------------------------------------ +1120 A = 0.0001 +1130 B$ = MKS$( A ) +1140 C = CVS( B$ ) +1150 R = A / C +1160 if R < 0.99 then goto TestFailed +1170 if R > 1.01 then goto TestFailed +1180 print "*** TEST #1 PASSED ***" +1200 rem ------------------------------------------ +1220 A = -0.0001 +1230 B$ = MKS$( A ) +1240 C = CVS( B$ ) +1250 R = A / C +1260 if R < 0.99 then goto TestFailed +1270 if R > 1.01 then goto TestFailed +1280 print "*** TEST #2 PASSED ***" +1300 rem ------------------------------------------ +1320 A = 123456789 +1330 B$ = MKS$( A ) +1340 C = CVS( B$ ) +1350 R = A / C +1360 if R < 0.99 then goto TestFailed +1370 if R > 1.01 then goto TestFailed +1380 print "*** TEST #3 PASSED ***" +1400 rem ------------------------------------------ +1420 A = -123456789 +1430 B$ = MKS$( A ) +1440 C = CVS( B$ ) +1450 R = A / C +1460 if R < 0.99 then goto TestFailed +1470 if R > 1.01 then goto TestFailed +1480 print "*** TEST #4 PASSED ***" +1500 rem ------------------------------------------ +1520 A = 0 +1530 B$ = MKS$( A ) +1540 C = CVS( B$ ) +1570 if C <> 0 then goto TestFailed +1580 print "*** TEST #5 PASSED ***" +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8522 print "A="; A +8524 print "C="; C +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/E046.OUT b/NBS2/E046.OUT new file mode 100644 index 0000000..3955063 --- /dev/null +++ b/NBS2/E046.OUT @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E046.dif b/NBS2/E046.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E046.run b/NBS2/E046.run new file mode 100644 index 0000000..87227e4 --- /dev/null +++ b/NBS2/E046.run @@ -0,0 +1,6 @@ +*** TEST #1 PASSED *** +*** TEST #2 PASSED *** +*** TEST #3 PASSED *** +*** TEST #4 PASSED *** +*** TEST #5 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E047.80 b/NBS2/E047.80 new file mode 100644 index 0000000..20839a7 --- /dev/null +++ b/NBS2/E047.80 @@ -0,0 +1,6 @@ +ERR= 1 +ERL= 110 +ERR= 2 +ERL= 120 +ERR= 3 +ERL= 130 diff --git a/NBS2/E047.BAS b/NBS2/E047.BAS new file mode 100644 index 0000000..c47b404 --- /dev/null +++ b/NBS2/E047.BAS @@ -0,0 +1,11 @@ +010 rem verify ERR and ERL +100 on error goto 900 +110 error 1 +120 error 2 +130 error 3 +140 end +900 rem Error Handler +910 print "ERR="; ERR +920 print "ERL="; ERL +930 resume next +940 end diff --git a/NBS2/E047.OUT b/NBS2/E047.OUT new file mode 100644 index 0000000..ef95a36 --- /dev/null +++ b/NBS2/E047.OUT @@ -0,0 +1,6 @@ +ERR= 1 +ERL= 110 +ERR= 2 +ERL= 120 +ERR= 3 +ERL= 130 diff --git a/NBS2/E047.dif b/NBS2/E047.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E047.run b/NBS2/E047.run new file mode 100644 index 0000000..20839a7 --- /dev/null +++ b/NBS2/E047.run @@ -0,0 +1,6 @@ +ERR= 1 +ERL= 110 +ERR= 2 +ERL= 120 +ERR= 3 +ERL= 130 diff --git a/NBS2/E048.80 b/NBS2/E048.80 new file mode 100644 index 0000000..05bf57f --- /dev/null +++ b/NBS2/E048.80 @@ -0,0 +1,6 @@ +LINE 02000 SHOULD CAUSE A FATAL ERROR + +ERROR in line 2000: Line number 3000 not found + +STACK TRACE: +2000:DELETE 3000 diff --git a/NBS2/E048.BAS b/NBS2/E048.BAS new file mode 100644 index 0000000..c105bb2 --- /dev/null +++ b/NBS2/E048.BAS @@ -0,0 +1,9 @@ +00100 REM ---------------------------------------------------- +00110 REM FILENAME: delete2.bas +00120 REM PURPOSE: Verify DELETE +00130 REM AUTHOR: Howard Wulf AF5NE +00140 REM DATE: October 14th, 2014 +00150 REM ---------------------------------------------------- +01000 PRINT "LINE 02000 SHOULD CAUSE A FATAL ERROR" +02000 DELETE 3000 +09999 END diff --git a/NBS2/E048.OUT b/NBS2/E048.OUT new file mode 100644 index 0000000..f04fb78 --- /dev/null +++ b/NBS2/E048.OUT @@ -0,0 +1,6 @@ +LINE 02000 SHOULD CAUSE A FATAL ERROR + +ERROR in line 2000: Line number 3000 not found + +STACK TRACE: +2000:DELETE 3000 diff --git a/NBS2/E048.dif b/NBS2/E048.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E048.run b/NBS2/E048.run new file mode 100644 index 0000000..05bf57f --- /dev/null +++ b/NBS2/E048.run @@ -0,0 +1,6 @@ +LINE 02000 SHOULD CAUSE A FATAL ERROR + +ERROR in line 2000: Line number 3000 not found + +STACK TRACE: +2000:DELETE 3000 diff --git a/NBS2/E049.80 b/NBS2/E049.80 new file mode 100644 index 0000000..ba4bb19 --- /dev/null +++ b/NBS2/E049.80 @@ -0,0 +1,2 @@ +12abcd789 +*** TEST PASSED *** diff --git a/NBS2/E049.BAS b/NBS2/E049.BAS new file mode 100644 index 0000000..5db7862 --- /dev/null +++ b/NBS2/E049.BAS @@ -0,0 +1,10 @@ +010 rem verify MID$ command +100 let a$ = "123456789" +110 mid$( a$, 3, 4 ) = "abcd" +120 print a$ +130 if a$ = "12abcd789" then +140 PRINT "*** TEST PASSED ***" +150 else +160 PRINT "*** TEST PASSED ***" +170 end if +999 END diff --git a/NBS2/E049.OUT b/NBS2/E049.OUT new file mode 100644 index 0000000..5c74f43 --- /dev/null +++ b/NBS2/E049.OUT @@ -0,0 +1,2 @@ +12abcd789 +*** TEST PASSED *** diff --git a/NBS2/E049.dif b/NBS2/E049.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E049.run b/NBS2/E049.run new file mode 100644 index 0000000..ba4bb19 --- /dev/null +++ b/NBS2/E049.run @@ -0,0 +1,2 @@ +12abcd789 +*** TEST PASSED *** diff --git a/NBS2/E050.80 b/NBS2/E050.80 new file mode 100644 index 0000000..9917223 --- /dev/null +++ b/NBS2/E050.80 @@ -0,0 +1,74 @@ +BEFORE FUNCTION DEFINITIONS +AFTER FUNCTION DEFINITIONS +ENTER TOM +X= 11 +EXIT TOM +X= 1 +ENTER TOM +X= 12 +EXIT TOM +ENTER JERRY +X= 13 +EXIT JERRY +X= 2 +ENTER JERRY +X= 14 +EXIT JERRY +ENTER TOM +X= 15 +EXIT TOM +ENTER JERRY +X= 16 +EXIT JERRY +X= 3 +ENTER JERRY +X= 17 +EXIT JERRY +ENTER TOM +X= 2 +EXIT TOM +ENTER TOM +X= 18 +EXIT TOM +ENTER JERRY +X= 1 +EXIT JERRY +ENTER JERRY +X= 19 +EXIT JERRY +ENTER TOM +X= 2 +EXIT TOM +X= 1 +ENTER TOM +X= 20 +EXIT TOM +ENTER JERRY +X= 1 +EXIT JERRY +X= 2 +ENTER TOM +X= 21 +EXIT TOM +ENTER TOM +X= 1 +EXIT TOM +ENTER JERRY +X= 22 +EXIT JERRY +ENTER JERRY +X= 2 +EXIT JERRY +ENTER TOM +X= 23 +EXIT TOM +ENTER TOM +X= 1 +EXIT TOM +ENTER JERRY +X= 24 +EXIT JERRY +ENTER JERRY +X= 2 +EXIT JERRY +*** TEST PASSED *** diff --git a/NBS2/E050.BAS b/NBS2/E050.BAS new file mode 100644 index 0000000..00b361d --- /dev/null +++ b/NBS2/E050.BAS @@ -0,0 +1,81 @@ +REM verify structured FUNCTION - END FUNCTION +REM HOWARD WULF, AF5NE +REM +PRINT "BEFORE FUNCTION DEFINITIONS" +FUNCTION TOM( X ) + PRINT "ENTER TOM" + PRINT "X=";X + REM verify the function name is a variable in the explicit LET command + LET TOM = 1 + PRINT "EXIT TOM" +END FUNCTION +FUNCTION JERRY( X ) + PRINT "ENTER JERRY" + PRINT "X=";X + REM verify the function name is a variable in the implied LET command + JERRY = 2 + PRINT "EXIT JERRY" +END FUNCTION +PRINT "AFTER FUNCTION DEFINITIONS" +REM verify use as a function +LET X = TOM( 11 ) +PRINT "X=";X +IF X <> 1 THEN + PRINT "*** TEST FAILED ***" + STOP +END IF +REM verify use as a subroutine +TOM 12 +REM verify use as a function +LET X = JERRY( 13 ) +PRINT "X=";X +IF X <> 2 THEN + PRINT "*** TEST FAILED ***" + STOP +END IF +REM verify use as a subroutine +JERRY 14 +REM verify use as a function +LET X = TOM( 15 ) + JERRY( 16 ) +PRINT "X=";X +IF X <> 3 THEN + PRINT "*** TEST FAILED ***" + STOP +END IF +REM verify use as a subroutine with function +TOM JERRY( 17 ) +REM verify use as a subroutine with function +JERRY TOM( 18 ) +REM verify use as a function +LET X = TOM( JERRY( 19 ) ) +PRINT "X=";X +IF X <> 1 THEN + PRINT "*** TEST FAILED ***" + STOP +END IF +REM verify use as a function +LET X = JERRY( TOM( 20 ) ) +PRINT "X=";X +IF X <> 2 THEN + PRINT "*** TEST FAILED ***" + STOP +END IF +REM verify use as a subroutine calling itself as a parameter +TOM TOM( 21 ) +REM verify use as a subroutine calling itself as a parameter +JERRY JERRY( 22 ) +REM verify use as a function calling itself as a parameter +LET X = TOM( TOM( 23 ) ) +IF X <> 1 THEN + PRINT "*** TEST FAILED ***" + STOP +END IF +REM verify use as a function calling itself as a parameter +LET X = JERRY( JERRY( 24 ) ) +IF X <> 2 THEN + PRINT "*** TEST FAILED ***" + STOP +END IF +REM +PRINT "*** TEST PASSED ***" +END diff --git a/NBS2/E050.OUT b/NBS2/E050.OUT new file mode 100644 index 0000000..6c6e9b0 --- /dev/null +++ b/NBS2/E050.OUT @@ -0,0 +1,74 @@ +BEFORE FUNCTION DEFINITIONS +AFTER FUNCTION DEFINITIONS +ENTER TOM +X= 11 +EXIT TOM +X= 1 +ENTER TOM +X= 12 +EXIT TOM +ENTER JERRY +X= 13 +EXIT JERRY +X= 2 +ENTER JERRY +X= 14 +EXIT JERRY +ENTER TOM +X= 15 +EXIT TOM +ENTER JERRY +X= 16 +EXIT JERRY +X= 3 +ENTER JERRY +X= 17 +EXIT JERRY +ENTER TOM +X= 2 +EXIT TOM +ENTER TOM +X= 18 +EXIT TOM +ENTER JERRY +X= 1 +EXIT JERRY +ENTER JERRY +X= 19 +EXIT JERRY +ENTER TOM +X= 2 +EXIT TOM +X= 1 +ENTER TOM +X= 20 +EXIT TOM +ENTER JERRY +X= 1 +EXIT JERRY +X= 2 +ENTER TOM +X= 21 +EXIT TOM +ENTER TOM +X= 1 +EXIT TOM +ENTER JERRY +X= 22 +EXIT JERRY +ENTER JERRY +X= 2 +EXIT JERRY +ENTER TOM +X= 23 +EXIT TOM +ENTER TOM +X= 1 +EXIT TOM +ENTER JERRY +X= 24 +EXIT JERRY +ENTER JERRY +X= 2 +EXIT JERRY +*** TEST PASSED *** diff --git a/NBS2/E050.dif b/NBS2/E050.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E050.run b/NBS2/E050.run new file mode 100644 index 0000000..9917223 --- /dev/null +++ b/NBS2/E050.run @@ -0,0 +1,74 @@ +BEFORE FUNCTION DEFINITIONS +AFTER FUNCTION DEFINITIONS +ENTER TOM +X= 11 +EXIT TOM +X= 1 +ENTER TOM +X= 12 +EXIT TOM +ENTER JERRY +X= 13 +EXIT JERRY +X= 2 +ENTER JERRY +X= 14 +EXIT JERRY +ENTER TOM +X= 15 +EXIT TOM +ENTER JERRY +X= 16 +EXIT JERRY +X= 3 +ENTER JERRY +X= 17 +EXIT JERRY +ENTER TOM +X= 2 +EXIT TOM +ENTER TOM +X= 18 +EXIT TOM +ENTER JERRY +X= 1 +EXIT JERRY +ENTER JERRY +X= 19 +EXIT JERRY +ENTER TOM +X= 2 +EXIT TOM +X= 1 +ENTER TOM +X= 20 +EXIT TOM +ENTER JERRY +X= 1 +EXIT JERRY +X= 2 +ENTER TOM +X= 21 +EXIT TOM +ENTER TOM +X= 1 +EXIT TOM +ENTER JERRY +X= 22 +EXIT JERRY +ENTER JERRY +X= 2 +EXIT JERRY +ENTER TOM +X= 23 +EXIT TOM +ENTER TOM +X= 1 +EXIT TOM +ENTER JERRY +X= 24 +EXIT JERRY +ENTER JERRY +X= 2 +EXIT JERRY +*** TEST PASSED *** diff --git a/NBS2/E051.80 b/NBS2/E051.80 new file mode 100644 index 0000000..6ec35ca --- /dev/null +++ b/NBS2/E051.80 @@ -0,0 +1,14 @@ +CallSub.BAS -- Test BASIC Call and Sub Statements +The next printed line should be from the Subroutine. + +This is written from the Subroutine. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 +Exiting Subroutine + +This is back at the main program. +The value of variable is now 0 +Did it work? +*** ALL TESTS PASSED *** diff --git a/NBS2/E051.BAS b/NBS2/E051.BAS new file mode 100644 index 0000000..cc0ddab --- /dev/null +++ b/NBS2/E051.BAS @@ -0,0 +1,109 @@ +rem ---------------------------------------------------- +rem Filename: call1.bas +rem Purpose: Verify CALL +rem ---------------------------------------------------- + +Print "CallSub.BAS -- Test BASIC Call and Sub Statements" +Print "The next printed line should be from the Subroutine." +Print +x = 5 +a$ = "Hello" +y = 17 +b$ = "There" +z = 77 +Call TestSub( x, a$, y) + +Print +Print "This is back at the main program. " +Print "The value of variable is now "; testvar + +Print "Did it work?" + +rem Verify SUB parameters are local to the subroutine +if x <> 5 then + print "Subroutine modified x" + goto TestFailed +end if + +if a$ <> "Hello" then + print "Subroutine modified a$" + goto TestFailed +end if + +if y <> 17 then + print "Subroutine modified y" + goto TestFailed +end if + +rem Verify GLOBAL variable parameters are updated + +if b$ <> "Fromsub" then + print "Subroutine did not modify b$" + goto TestFailed +end if + +if z <> 21 then + print "Subroutine did not modify z" + goto TestFailed +end if + + +goto TestPassed + +rem ---------------------------------------------------- +rem Subroutine TestSub +rem ---------------------------------------------------- + +Sub TestSub( xarg, yarg$, tvar ) + Print "This is written from the Subroutine." + Print "The value of variable is"; xarg + Print "The value of variable is "; yarg$ + Print "The value of variable is"; tvar + + rem Verify expected parameter values + if xarg <> 5 then + print "xarg is wrong"; xarg + goto TestFailed + end if + + if yarg$ <> "Hello" then + print "yarg$ is wrong [";yarg$;"]" + goto TestFailed + end if + + if tvar <> 17 then + print "tvar is wrong"; tvar, tvar - 17 + goto TestFailed + end if + + REM exit sub + + rem Assign values to subroutine parameters + xarg = -1 + yarg$ = "N/A" + tvar = 99 + + Print "The value of variable is reset to "; tvar + + rem Modify GLOBAL variables + b$ = "Fromsub" + z = 21 + + print "Exiting Subroutine" +End Sub + +print "*** END SUB FAILED ***" +goto TestFailed +STOP +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end + diff --git a/NBS2/E051.OUT b/NBS2/E051.OUT new file mode 100644 index 0000000..37d0f91 --- /dev/null +++ b/NBS2/E051.OUT @@ -0,0 +1,14 @@ +CallSub.BAS -- Test BASIC Call and Sub Statements +The next printed line should be from the Subroutine. + +This is written from the Subroutine. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 +Exiting Subroutine + +This is back at the main program. +The value of variable is now 0 +Did it work? +*** ALL TESTS PASSED *** diff --git a/NBS2/E051.dif b/NBS2/E051.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E051.run b/NBS2/E051.run new file mode 100644 index 0000000..6ec35ca --- /dev/null +++ b/NBS2/E051.run @@ -0,0 +1,14 @@ +CallSub.BAS -- Test BASIC Call and Sub Statements +The next printed line should be from the Subroutine. + +This is written from the Subroutine. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 +Exiting Subroutine + +This is back at the main program. +The value of variable is now 0 +Did it work? +*** ALL TESTS PASSED *** diff --git a/NBS2/E052.80 b/NBS2/E052.80 new file mode 100644 index 0000000..e37ceb1 --- /dev/null +++ b/NBS2/E052.80 @@ -0,0 +1,3 @@ +a= 1 +z= 26 +az= 27 diff --git a/NBS2/E052.BAS b/NBS2/E052.BAS new file mode 100644 index 0000000..161382d --- /dev/null +++ b/NBS2/E052.BAS @@ -0,0 +1,12 @@ +010 REM functionw with many parameters +020 REM Howard Wulf, AF5NE +030 REM +110 function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z ) +120 print "a=";a +130 print "z=";z +140 tom = a + z +150 end function +160 rem +170 az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 ) +180 print "az=";az +999 end diff --git a/NBS2/E052.OUT b/NBS2/E052.OUT new file mode 100644 index 0000000..5e2785d --- /dev/null +++ b/NBS2/E052.OUT @@ -0,0 +1,3 @@ +a= 1 +z= 26 +az= 27 diff --git a/NBS2/E052.dif b/NBS2/E052.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E052.run b/NBS2/E052.run new file mode 100644 index 0000000..e37ceb1 --- /dev/null +++ b/NBS2/E052.run @@ -0,0 +1,3 @@ +a= 1 +z= 26 +az= 27 diff --git a/NBS2/E053.80 b/NBS2/E053.80 new file mode 100644 index 0000000..6b88a44 --- /dev/null +++ b/NBS2/E053.80 @@ -0,0 +1,12 @@ +a= 1 +z= 26 +az= 27 +a= 1 +z$=X +az= 26 +a= 1 +a32= 32 +az= 33 +a= 1 +a32$=A +az= 32 diff --git a/NBS2/E053.BAS b/NBS2/E053.BAS new file mode 100644 index 0000000..86ca193 --- /dev/null +++ b/NBS2/E053.BAS @@ -0,0 +1,44 @@ +REM function overloading with mqany parameters +REM Howard Wulf, AF5NE +REM +function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z ) + print "a=";a + print "z=";z + tom = a + z +end function + +function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a27, a28, a29, a30, a31, a32 ) + print "a=";a + print "a32=";a32 + tom = a + a32 +end function + +function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z$ ) + print "a=";a + print "z$=";z$ + tom = a + y +end function + +function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a27, a28, a29, a30, a31, a32$ ) + print "a=";a + print "a32$=";a32$ + tom = a + a31 +end function + + +rem +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 ) +print "az=";az +rem +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,"X" ) +print "az=";az +rem +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 ) +print "az=";az +rem +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,"A" ) +print "az=";az + + + +end diff --git a/NBS2/E053.OUT b/NBS2/E053.OUT new file mode 100644 index 0000000..707b81d --- /dev/null +++ b/NBS2/E053.OUT @@ -0,0 +1,12 @@ +a= 1 +z= 26 +az= 27 +a= 1 +z$=X +az= 26 +a= 1 +a32= 32 +az= 33 +a= 1 +a32$=A +az= 32 diff --git a/NBS2/E053.dif b/NBS2/E053.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E053.run b/NBS2/E053.run new file mode 100644 index 0000000..6b88a44 --- /dev/null +++ b/NBS2/E053.run @@ -0,0 +1,12 @@ +a= 1 +z= 26 +az= 27 +a= 1 +z$=X +az= 26 +a= 1 +a32= 32 +az= 33 +a= 1 +a32$=A +az= 32 diff --git a/NBS2/E054.80 b/NBS2/E054.80 new file mode 100644 index 0000000..410546b --- /dev/null +++ b/NBS2/E054.80 @@ -0,0 +1,853 @@ +26 numeric +ARGC= 26 +a= 1 +z= 26 +az= 27 +26 mixed +ARGC= 26 +a= 1 +z$=X +az= 26 +32 numeric +ARGC= 32 +a= 1 +a32= 32 +az= 33 +VARIANT +ARGC= 129 +PARAMETER 1 TYPE $ IS A STRING WITH THE VALUE zaa +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 33 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 34 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 35 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 36 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 37 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 38 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 39 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 40 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 41 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 42 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 43 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 44 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 45 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 46 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 47 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 48 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 49 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 50 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 51 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 52 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 53 TYPE $ IS A STRING WITH THE VALUE xyz +PARAMETER 54 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 55 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 56 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 57 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 58 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 59 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 60 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 61 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 62 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 63 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 64 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 65 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 66 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 67 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 68 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 69 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 70 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 71 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 72 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 73 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 74 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 75 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 76 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 77 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 78 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 79 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 80 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 81 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 82 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 83 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 84 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 85 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 86 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 87 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 88 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 89 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 90 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 91 TYPE $ IS A STRING WITH THE VALUE anything +PARAMETER 92 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 93 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 94 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 95 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 96 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 97 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 98 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 99 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 100 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 101 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 102 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 103 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 104 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 105 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 106 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 107 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 108 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 109 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 110 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 111 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 112 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 113 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 114 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 115 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 116 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 117 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 118 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 119 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 120 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 121 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 122 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 123 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 124 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 125 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 126 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 127 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 128 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 129 TYPE $ IS A STRING WITH THE VALUE abcdefg +az= 99 +VARIANT +ARGC= 641 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE $ IS A STRING WITH THE VALUE abc +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 33 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 34 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 35 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 36 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 37 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 38 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 39 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 40 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 41 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 42 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 43 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 44 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 45 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 46 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 47 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 48 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 49 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 50 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 51 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 52 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 53 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 54 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 55 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 56 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 57 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 58 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 59 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 60 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 61 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 62 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 63 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 64 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 65 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 66 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 67 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 68 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 69 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 70 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 71 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 72 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 73 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 74 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 75 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 76 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 77 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 78 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 79 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 80 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 81 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 82 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 83 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 84 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 85 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 86 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 87 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 88 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 89 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 90 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 91 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 92 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 93 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 94 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 95 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 96 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 97 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 98 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 99 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 100 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 101 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 102 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 103 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 104 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 105 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 106 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 107 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 108 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 109 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 110 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 111 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 112 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 113 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 114 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 115 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 116 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 117 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 118 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 119 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 120 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 121 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 122 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 123 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 124 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 125 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 126 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 127 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 128 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 129 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 130 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 131 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 132 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 133 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 134 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 135 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 136 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 137 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 138 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 139 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 140 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 141 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 142 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 143 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 144 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 145 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 146 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 147 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 148 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 149 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 150 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 151 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 152 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 153 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 154 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 155 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 156 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 157 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 158 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 159 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 160 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 161 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 162 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 163 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 164 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 165 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 166 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 167 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 168 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 169 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 170 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 171 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 172 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 173 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 174 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 175 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 176 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 177 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 178 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 179 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 180 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 181 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 182 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 183 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 184 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 185 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 186 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 187 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 188 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 189 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 190 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 191 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 192 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 193 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 194 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 195 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 196 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 197 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 198 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 199 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 200 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 201 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 202 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 203 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 204 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 205 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 206 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 207 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 208 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 209 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 210 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 211 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 212 TYPE $ IS A STRING WITH THE VALUE jkl +PARAMETER 213 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 214 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 215 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 216 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 217 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 218 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 219 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 220 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 221 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 222 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 223 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 224 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 225 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 226 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 227 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 228 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 229 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 230 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 231 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 232 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 233 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 234 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 235 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 236 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 237 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 238 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 239 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 240 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 241 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 242 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 243 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 244 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 245 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 246 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 247 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 248 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 249 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 250 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 251 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 252 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 253 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 254 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 255 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 256 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 257 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 258 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 259 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 260 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 261 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 262 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 263 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 264 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 265 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 266 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 267 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 268 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 269 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 270 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 271 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 272 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 273 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 274 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 275 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 276 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 277 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 278 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 279 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 280 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 281 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 282 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 283 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 284 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 285 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 286 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 287 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 288 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 289 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 290 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 291 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 292 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 293 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 294 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 295 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 296 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 297 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 298 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 299 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 300 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 301 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 302 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 303 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 304 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 305 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 306 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 307 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 308 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 309 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 310 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 311 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 312 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 313 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 314 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 315 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 316 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 317 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 318 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 319 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 320 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 321 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 322 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 323 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 324 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 325 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 326 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 327 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 328 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 329 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 330 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 331 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 332 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 333 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 334 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 335 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 336 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 337 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 338 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 339 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 340 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 341 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 342 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 343 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 344 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 345 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 346 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 347 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 348 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 349 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 350 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 351 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 352 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 353 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 354 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 355 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 356 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 357 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 358 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 359 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 360 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 361 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 362 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 363 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 364 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 365 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 366 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 367 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 368 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 369 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 370 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 371 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 372 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 373 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 374 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 375 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 376 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 377 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 378 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 379 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 380 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 381 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 382 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 383 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 384 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 385 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 386 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 387 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 388 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 389 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 390 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 391 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 392 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 393 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 394 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 395 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 396 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 397 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 398 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 399 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 400 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 401 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 402 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 403 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 404 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 405 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 406 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 407 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 408 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 409 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 410 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 411 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 412 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 413 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 414 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 415 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 416 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 417 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 418 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 419 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 420 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 421 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 422 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 423 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 424 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 425 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 426 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 427 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 428 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 429 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 430 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 431 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 432 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 433 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 434 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 435 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 436 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 437 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 438 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 439 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 440 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 441 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 442 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 443 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 444 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 445 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 446 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 447 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 448 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 449 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 450 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 451 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 452 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 453 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 454 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 455 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 456 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 457 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 458 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 459 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 460 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 461 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 462 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 463 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 464 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 465 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 466 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 467 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 468 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 469 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 470 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 471 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 472 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 473 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 474 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 475 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 476 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 477 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 478 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 479 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 480 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 481 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 482 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 483 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 484 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 485 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 486 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 487 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 488 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 489 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 490 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 491 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 492 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 493 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 494 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 495 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 496 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 497 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 498 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 499 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 500 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 501 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 502 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 503 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 504 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 505 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 506 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 507 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 508 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 509 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 510 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 511 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 512 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 513 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 514 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 515 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 516 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 517 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 518 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 519 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 520 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 521 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 522 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 523 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 524 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 525 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 526 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 527 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 528 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 529 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 530 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 531 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 532 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 533 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 534 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 535 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 536 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 537 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 538 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 539 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 540 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 541 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 542 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 543 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 544 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 545 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 546 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 547 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 548 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 549 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 550 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 551 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 552 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 553 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 554 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 555 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 556 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 557 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 558 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 559 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 560 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 561 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 562 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 563 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 564 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 565 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 566 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 567 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 568 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 569 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 570 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 571 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 572 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 573 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 574 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 575 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 576 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 577 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 578 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 579 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 580 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 581 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 582 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 583 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 584 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 585 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 586 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 587 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 588 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 589 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 590 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 591 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 592 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 593 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 594 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 595 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 596 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 597 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 598 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 599 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 600 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 601 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 602 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 603 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 604 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 605 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 606 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 607 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 608 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 609 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 610 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 611 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 612 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 613 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 614 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 615 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 616 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 617 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 618 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 619 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 620 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 621 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 622 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 623 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 624 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 625 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 626 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 627 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 628 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 629 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 630 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 631 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 632 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 633 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 634 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 635 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 636 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 637 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 638 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 639 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 640 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 641 TYPE $ IS A STRING WITH THE VALUE abc +az= 99 +32 numeric +ARGC= 32 +a= 1 +a32$=A +az= 32 +VARIANT +ARGC= 4 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +az= 99 +VARIANT +ARGC= 4 +PARAMETER 1 TYPE $ IS A STRING WITH THE VALUE a +PARAMETER 2 TYPE $ IS A STRING WITH THE VALUE b +PARAMETER 3 TYPE $ IS A STRING WITH THE VALUE c +PARAMETER 4 TYPE $ IS A STRING WITH THE VALUE d +az= 99 +VARIANT +ARGC= 32 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE $ IS A STRING WITH THE VALUE a +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE $ IS A STRING WITH THE VALUE z +az= 99 +VARIANT +ARGC= 0 +az= 99 +VARIANT +ARGC= 0 +az= 99 +not in a FUNCTION or SUB, should be -1 +ARGC=-1 diff --git a/NBS2/E054.BAS b/NBS2/E054.BAS new file mode 100644 index 0000000..17e845d --- /dev/null +++ b/NBS2/E054.BAS @@ -0,0 +1,122 @@ +REM PURPOSE: Verify function overloading, variant functions, and related items. +REM AUTHOR: Howard Wulf, AF5NE +REM DATE: 2015-01-23 +REM +REM ---------------------------------------------------------------------------------------------- +REM +REM Verify function overloading with mqany parameters. +REM Functions are selected based upon the number of parameters and the type of each parameter. +REM Verify variant function can co-exist with normal functions. +REM Variant functions are declared using (...) instead of typical variable names. +REM Verify variant is only called when there is not a matching normal function. +REM Variant functions are NOT called is there is a matching normal function. +REM Verify ARGC, ARGT, ARGV, and ARGV$ functions. +REM These are used to extract the parameter information for variant functions. +REM +REM ---------------------------------------------------------------------------------------------- +REM +function tom( ... ) + REM This is a variant function. The BASIC program must determine: + REM the number of parameters (ARGC) + REM the type of each parameter (ARGT$) + REM the value of each parameter (using ARGV or ARGV$ depending upon ARGT) + REM + print "VARIANT" + let N = ARGC + print "ARGC=";N + FOR I = 1 TO N + LET T$ = ARGT$( I ) + PRINT "PARAMETER";I;"TYPE ";T$;" "; + if T$ = "$" THEN + let A$ = ARGV$( I ) + PRINT "IS A STRING WITH THE VALUE ";A$ + elseif T$ = "#" + let N = ARGV( I ) + PRINT "IS A NUMBER WITH THE VALUE ";N + else + print "*** ERROR - INVALID PARAMETER TYPE ***" + end if + NEXT I + tom = 99 +end function +REM +REM ---------------------------------------------------------------------------------------------- +REM +function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z ) + print "26 numeric" + print "ARGC=";ARGC + print "a=";a + print "z=";z + tom = a + z +end function +REM +REM ---------------------------------------------------------------------------------------------- +REM +function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a27, a28, a29, a30, a31, a32 ) + print "32 numeric" + print "ARGC=";ARGC + print "a=";a + print "a32=";a32 + tom = a + a32 +end function +REM +REM ---------------------------------------------------------------------------------------------- +REM +function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z$ ) + print "26 mixed" + print "ARGC=";ARGC + print "a=";a + print "z$=";z$ + tom = a + y +end function +REM +REM ---------------------------------------------------------------------------------------------- +REM +function tom( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, a27, a28, a29, a30, a31, a32$ ) + print "32 numeric" + print "ARGC=";ARGC + print "a=";a + print "a32$=";a32$ + tom = a + a31 +end function +REM +REM ---------------------------------------------------------------------------------------------- +REM +rem 26 number parameters +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 ) +print "az=";az +rem 26 mixed parameters +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,"X" ) +print "az=";az +rem 32 nuber parameters +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 ) +print "az=";az +rem 129 mixed parameters +az = tom( "zaa", 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,"xyz",22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,"anything",28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , "abcdefg" ) +print "az=";az +rem 641 mixed parameters +az = tom( 1, 2, 3, 4, 5, "abc", 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,"jkl",21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 ,"abc" ) +print "az=";az +rem 32 mixed parameters +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,"A" ) +print "az=";az +rem 4 number parameters +az = tom( 1,2,3,4 ) +print "az=";az +rem 4 string parameters +az = tom( "a","b","c","d" ) +print "az=";az +rem 32 mixed parameters +az = tom( 1, 2, 3, 4, 5, 6, 7, 8, 9, "a",11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,"z" ) +print "az=";az +rem 0 parameters +az = tom( ) +print "az=";az +rem 0 parameters +az = tom +print "az=";az +rem + print "not in a FUNCTION or SUB, should be -1" + print "ARGC=";ARGC +rem +end diff --git a/NBS2/E054.OUT b/NBS2/E054.OUT new file mode 100644 index 0000000..9b91ddd --- /dev/null +++ b/NBS2/E054.OUT @@ -0,0 +1,853 @@ +26 numeric +ARGC= 26 +a= 1 +z= 26 +az= 27 +26 mixed +ARGC= 26 +a= 1 +z$=X +az= 26 +32 numeric +ARGC= 32 +a= 1 +a32= 32 +az= 33 +VARIANT +ARGC= 129 +PARAMETER 1 TYPE $ IS A STRING WITH THE VALUE zaa +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 33 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 34 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 35 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 36 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 37 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 38 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 39 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 40 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 41 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 42 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 43 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 44 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 45 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 46 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 47 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 48 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 49 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 50 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 51 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 52 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 53 TYPE $ IS A STRING WITH THE VALUE xyz +PARAMETER 54 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 55 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 56 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 57 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 58 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 59 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 60 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 61 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 62 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 63 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 64 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 65 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 66 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 67 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 68 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 69 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 70 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 71 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 72 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 73 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 74 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 75 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 76 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 77 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 78 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 79 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 80 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 81 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 82 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 83 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 84 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 85 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 86 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 87 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 88 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 89 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 90 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 91 TYPE $ IS A STRING WITH THE VALUE anything +PARAMETER 92 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 93 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 94 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 95 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 96 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 97 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 98 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 99 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 100 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 101 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 102 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 103 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 104 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 105 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 106 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 107 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 108 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 109 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 110 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 111 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 112 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 113 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 114 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 115 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 116 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 117 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 118 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 119 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 120 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 121 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 122 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 123 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 124 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 125 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 126 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 127 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 128 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 129 TYPE $ IS A STRING WITH THE VALUE abcdefg +az= 99 +VARIANT +ARGC= 641 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE $ IS A STRING WITH THE VALUE abc +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 33 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 34 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 35 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 36 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 37 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 38 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 39 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 40 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 41 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 42 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 43 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 44 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 45 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 46 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 47 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 48 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 49 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 50 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 51 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 52 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 53 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 54 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 55 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 56 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 57 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 58 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 59 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 60 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 61 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 62 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 63 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 64 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 65 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 66 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 67 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 68 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 69 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 70 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 71 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 72 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 73 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 74 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 75 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 76 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 77 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 78 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 79 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 80 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 81 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 82 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 83 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 84 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 85 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 86 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 87 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 88 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 89 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 90 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 91 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 92 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 93 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 94 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 95 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 96 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 97 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 98 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 99 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 100 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 101 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 102 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 103 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 104 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 105 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 106 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 107 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 108 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 109 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 110 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 111 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 112 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 113 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 114 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 115 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 116 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 117 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 118 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 119 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 120 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 121 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 122 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 123 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 124 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 125 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 126 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 127 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 128 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 129 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 130 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 131 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 132 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 133 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 134 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 135 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 136 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 137 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 138 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 139 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 140 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 141 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 142 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 143 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 144 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 145 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 146 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 147 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 148 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 149 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 150 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 151 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 152 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 153 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 154 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 155 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 156 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 157 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 158 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 159 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 160 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 161 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 162 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 163 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 164 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 165 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 166 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 167 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 168 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 169 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 170 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 171 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 172 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 173 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 174 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 175 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 176 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 177 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 178 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 179 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 180 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 181 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 182 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 183 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 184 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 185 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 186 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 187 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 188 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 189 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 190 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 191 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 192 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 193 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 194 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 195 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 196 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 197 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 198 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 199 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 200 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 201 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 202 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 203 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 204 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 205 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 206 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 207 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 208 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 209 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 210 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 211 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 212 TYPE $ IS A STRING WITH THE VALUE jkl +PARAMETER 213 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 214 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 215 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 216 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 217 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 218 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 219 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 220 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 221 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 222 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 223 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 224 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 225 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 226 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 227 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 228 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 229 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 230 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 231 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 232 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 233 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 234 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 235 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 236 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 237 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 238 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 239 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 240 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 241 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 242 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 243 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 244 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 245 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 246 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 247 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 248 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 249 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 250 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 251 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 252 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 253 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 254 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 255 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 256 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 257 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 258 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 259 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 260 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 261 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 262 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 263 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 264 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 265 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 266 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 267 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 268 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 269 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 270 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 271 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 272 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 273 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 274 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 275 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 276 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 277 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 278 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 279 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 280 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 281 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 282 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 283 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 284 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 285 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 286 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 287 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 288 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 289 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 290 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 291 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 292 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 293 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 294 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 295 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 296 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 297 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 298 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 299 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 300 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 301 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 302 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 303 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 304 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 305 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 306 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 307 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 308 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 309 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 310 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 311 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 312 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 313 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 314 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 315 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 316 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 317 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 318 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 319 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 320 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 321 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 322 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 323 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 324 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 325 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 326 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 327 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 328 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 329 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 330 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 331 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 332 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 333 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 334 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 335 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 336 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 337 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 338 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 339 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 340 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 341 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 342 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 343 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 344 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 345 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 346 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 347 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 348 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 349 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 350 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 351 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 352 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 353 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 354 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 355 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 356 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 357 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 358 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 359 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 360 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 361 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 362 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 363 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 364 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 365 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 366 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 367 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 368 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 369 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 370 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 371 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 372 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 373 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 374 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 375 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 376 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 377 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 378 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 379 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 380 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 381 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 382 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 383 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 384 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 385 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 386 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 387 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 388 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 389 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 390 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 391 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 392 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 393 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 394 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 395 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 396 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 397 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 398 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 399 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 400 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 401 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 402 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 403 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 404 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 405 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 406 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 407 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 408 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 409 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 410 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 411 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 412 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 413 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 414 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 415 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 416 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 417 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 418 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 419 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 420 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 421 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 422 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 423 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 424 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 425 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 426 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 427 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 428 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 429 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 430 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 431 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 432 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 433 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 434 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 435 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 436 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 437 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 438 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 439 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 440 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 441 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 442 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 443 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 444 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 445 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 446 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 447 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 448 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 449 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 450 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 451 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 452 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 453 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 454 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 455 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 456 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 457 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 458 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 459 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 460 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 461 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 462 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 463 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 464 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 465 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 466 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 467 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 468 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 469 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 470 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 471 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 472 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 473 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 474 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 475 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 476 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 477 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 478 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 479 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 480 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 481 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 482 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 483 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 484 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 485 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 486 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 487 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 488 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 489 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 490 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 491 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 492 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 493 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 494 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 495 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 496 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 497 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 498 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 499 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 500 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 501 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 502 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 503 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 504 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 505 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 506 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 507 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 508 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 509 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 510 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 511 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 512 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 513 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 514 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 515 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 516 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 517 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 518 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 519 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 520 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 521 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 522 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 523 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 524 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 525 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 526 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 527 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 528 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 529 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 530 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 531 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 532 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 533 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 534 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 535 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 536 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 537 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 538 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 539 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 540 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 541 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 542 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 543 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 544 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 545 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 546 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 547 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 548 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 549 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 550 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 551 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 552 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 553 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 554 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 555 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 556 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 557 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 558 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 559 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 560 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 561 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 562 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 563 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 564 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 565 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 566 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 567 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 568 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 569 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 570 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 571 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 572 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 573 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 574 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 575 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 576 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 577 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 578 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 579 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 580 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 581 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 582 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 583 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 584 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 585 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 586 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 587 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 588 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 589 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 590 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 591 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 592 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 593 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 594 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 595 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 596 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 597 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 598 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 599 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 600 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 601 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 602 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 603 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 604 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 605 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 606 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 607 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 608 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 609 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 610 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 611 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 612 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 613 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 614 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 615 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 616 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 617 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 618 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 619 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 620 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 621 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 622 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 623 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 624 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 625 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 626 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 627 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 628 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 629 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 630 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 631 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 632 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 633 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 634 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 635 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 636 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 637 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 638 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 639 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 640 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 641 TYPE $ IS A STRING WITH THE VALUE abc +az= 99 +32 numeric +ARGC= 32 +a= 1 +a32$=A +az= 32 +VARIANT +ARGC= 4 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +az= 99 +VARIANT +ARGC= 4 +PARAMETER 1 TYPE $ IS A STRING WITH THE VALUE a +PARAMETER 2 TYPE $ IS A STRING WITH THE VALUE b +PARAMETER 3 TYPE $ IS A STRING WITH THE VALUE c +PARAMETER 4 TYPE $ IS A STRING WITH THE VALUE d +az= 99 +VARIANT +ARGC= 32 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE $ IS A STRING WITH THE VALUE a +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE $ IS A STRING WITH THE VALUE z +az= 99 +VARIANT +ARGC= 0 +az= 99 +VARIANT +ARGC= 0 +az= 99 +not in a FUNCTION or SUB, should be -1 +ARGC=-1 diff --git a/NBS2/E054.dif b/NBS2/E054.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E054.run b/NBS2/E054.run new file mode 100644 index 0000000..410546b --- /dev/null +++ b/NBS2/E054.run @@ -0,0 +1,853 @@ +26 numeric +ARGC= 26 +a= 1 +z= 26 +az= 27 +26 mixed +ARGC= 26 +a= 1 +z$=X +az= 26 +32 numeric +ARGC= 32 +a= 1 +a32= 32 +az= 33 +VARIANT +ARGC= 129 +PARAMETER 1 TYPE $ IS A STRING WITH THE VALUE zaa +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 33 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 34 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 35 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 36 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 37 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 38 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 39 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 40 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 41 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 42 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 43 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 44 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 45 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 46 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 47 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 48 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 49 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 50 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 51 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 52 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 53 TYPE $ IS A STRING WITH THE VALUE xyz +PARAMETER 54 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 55 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 56 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 57 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 58 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 59 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 60 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 61 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 62 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 63 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 64 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 65 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 66 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 67 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 68 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 69 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 70 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 71 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 72 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 73 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 74 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 75 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 76 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 77 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 78 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 79 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 80 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 81 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 82 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 83 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 84 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 85 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 86 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 87 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 88 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 89 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 90 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 91 TYPE $ IS A STRING WITH THE VALUE anything +PARAMETER 92 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 93 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 94 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 95 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 96 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 97 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 98 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 99 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 100 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 101 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 102 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 103 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 104 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 105 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 106 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 107 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 108 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 109 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 110 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 111 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 112 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 113 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 114 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 115 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 116 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 117 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 118 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 119 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 120 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 121 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 122 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 123 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 124 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 125 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 126 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 127 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 128 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 129 TYPE $ IS A STRING WITH THE VALUE abcdefg +az= 99 +VARIANT +ARGC= 641 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE $ IS A STRING WITH THE VALUE abc +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 33 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 34 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 35 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 36 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 37 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 38 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 39 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 40 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 41 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 42 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 43 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 44 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 45 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 46 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 47 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 48 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 49 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 50 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 51 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 52 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 53 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 54 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 55 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 56 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 57 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 58 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 59 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 60 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 61 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 62 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 63 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 64 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 65 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 66 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 67 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 68 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 69 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 70 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 71 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 72 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 73 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 74 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 75 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 76 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 77 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 78 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 79 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 80 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 81 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 82 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 83 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 84 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 85 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 86 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 87 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 88 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 89 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 90 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 91 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 92 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 93 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 94 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 95 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 96 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 97 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 98 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 99 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 100 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 101 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 102 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 103 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 104 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 105 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 106 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 107 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 108 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 109 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 110 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 111 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 112 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 113 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 114 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 115 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 116 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 117 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 118 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 119 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 120 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 121 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 122 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 123 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 124 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 125 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 126 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 127 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 128 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 129 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 130 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 131 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 132 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 133 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 134 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 135 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 136 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 137 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 138 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 139 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 140 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 141 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 142 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 143 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 144 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 145 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 146 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 147 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 148 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 149 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 150 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 151 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 152 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 153 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 154 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 155 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 156 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 157 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 158 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 159 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 160 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 161 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 162 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 163 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 164 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 165 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 166 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 167 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 168 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 169 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 170 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 171 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 172 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 173 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 174 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 175 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 176 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 177 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 178 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 179 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 180 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 181 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 182 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 183 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 184 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 185 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 186 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 187 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 188 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 189 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 190 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 191 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 192 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 193 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 194 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 195 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 196 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 197 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 198 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 199 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 200 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 201 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 202 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 203 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 204 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 205 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 206 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 207 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 208 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 209 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 210 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 211 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 212 TYPE $ IS A STRING WITH THE VALUE jkl +PARAMETER 213 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 214 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 215 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 216 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 217 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 218 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 219 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 220 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 221 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 222 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 223 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 224 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 225 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 226 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 227 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 228 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 229 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 230 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 231 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 232 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 233 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 234 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 235 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 236 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 237 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 238 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 239 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 240 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 241 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 242 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 243 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 244 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 245 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 246 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 247 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 248 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 249 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 250 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 251 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 252 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 253 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 254 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 255 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 256 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 257 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 258 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 259 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 260 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 261 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 262 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 263 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 264 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 265 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 266 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 267 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 268 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 269 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 270 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 271 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 272 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 273 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 274 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 275 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 276 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 277 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 278 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 279 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 280 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 281 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 282 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 283 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 284 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 285 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 286 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 287 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 288 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 289 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 290 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 291 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 292 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 293 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 294 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 295 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 296 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 297 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 298 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 299 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 300 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 301 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 302 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 303 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 304 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 305 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 306 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 307 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 308 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 309 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 310 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 311 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 312 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 313 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 314 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 315 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 316 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 317 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 318 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 319 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 320 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 321 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 322 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 323 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 324 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 325 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 326 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 327 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 328 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 329 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 330 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 331 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 332 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 333 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 334 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 335 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 336 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 337 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 338 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 339 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 340 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 341 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 342 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 343 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 344 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 345 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 346 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 347 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 348 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 349 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 350 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 351 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 352 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 353 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 354 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 355 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 356 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 357 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 358 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 359 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 360 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 361 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 362 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 363 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 364 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 365 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 366 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 367 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 368 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 369 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 370 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 371 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 372 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 373 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 374 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 375 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 376 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 377 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 378 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 379 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 380 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 381 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 382 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 383 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 384 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 385 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 386 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 387 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 388 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 389 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 390 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 391 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 392 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 393 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 394 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 395 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 396 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 397 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 398 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 399 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 400 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 401 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 402 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 403 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 404 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 405 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 406 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 407 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 408 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 409 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 410 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 411 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 412 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 413 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 414 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 415 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 416 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 417 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 418 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 419 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 420 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 421 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 422 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 423 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 424 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 425 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 426 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 427 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 428 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 429 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 430 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 431 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 432 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 433 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 434 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 435 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 436 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 437 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 438 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 439 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 440 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 441 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 442 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 443 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 444 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 445 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 446 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 447 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 448 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 449 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 450 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 451 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 452 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 453 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 454 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 455 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 456 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 457 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 458 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 459 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 460 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 461 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 462 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 463 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 464 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 465 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 466 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 467 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 468 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 469 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 470 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 471 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 472 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 473 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 474 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 475 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 476 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 477 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 478 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 479 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 480 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 481 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 482 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 483 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 484 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 485 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 486 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 487 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 488 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 489 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 490 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 491 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 492 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 493 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 494 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 495 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 496 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 497 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 498 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 499 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 500 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 501 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 502 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 503 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 504 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 505 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 506 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 507 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 508 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 509 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 510 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 511 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 512 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 513 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 514 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 515 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 516 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 517 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 518 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 519 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 520 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 521 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 522 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 523 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 524 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 525 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 526 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 527 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 528 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 529 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 530 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 531 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 532 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 533 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 534 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 535 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 536 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 537 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 538 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 539 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 540 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 541 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 542 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 543 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 544 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 545 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 546 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 547 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 548 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 549 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 550 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 551 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 552 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 553 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 554 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 555 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 556 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 557 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 558 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 559 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 560 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 561 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 562 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 563 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 564 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 565 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 566 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 567 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 568 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 569 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 570 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 571 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 572 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 573 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 574 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 575 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 576 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 577 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 578 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 579 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 580 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 581 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 582 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 583 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 584 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 585 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 586 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 587 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 588 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 589 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 590 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 591 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 592 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 593 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 594 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 595 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 596 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 597 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 598 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 599 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 600 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 601 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 602 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 603 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 604 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 605 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 606 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 607 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 608 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 609 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 610 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 611 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 612 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 613 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 614 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 615 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 616 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 617 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 618 TYPE # IS A NUMBER WITH THE VALUE 10 +PARAMETER 619 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 620 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 621 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 622 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 623 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 624 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 625 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 626 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 627 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 628 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 629 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 630 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 631 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 632 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 633 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 634 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 635 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 636 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 637 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 638 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 639 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 640 TYPE # IS A NUMBER WITH THE VALUE 32 +PARAMETER 641 TYPE $ IS A STRING WITH THE VALUE abc +az= 99 +32 numeric +ARGC= 32 +a= 1 +a32$=A +az= 32 +VARIANT +ARGC= 4 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +az= 99 +VARIANT +ARGC= 4 +PARAMETER 1 TYPE $ IS A STRING WITH THE VALUE a +PARAMETER 2 TYPE $ IS A STRING WITH THE VALUE b +PARAMETER 3 TYPE $ IS A STRING WITH THE VALUE c +PARAMETER 4 TYPE $ IS A STRING WITH THE VALUE d +az= 99 +VARIANT +ARGC= 32 +PARAMETER 1 TYPE # IS A NUMBER WITH THE VALUE 1 +PARAMETER 2 TYPE # IS A NUMBER WITH THE VALUE 2 +PARAMETER 3 TYPE # IS A NUMBER WITH THE VALUE 3 +PARAMETER 4 TYPE # IS A NUMBER WITH THE VALUE 4 +PARAMETER 5 TYPE # IS A NUMBER WITH THE VALUE 5 +PARAMETER 6 TYPE # IS A NUMBER WITH THE VALUE 6 +PARAMETER 7 TYPE # IS A NUMBER WITH THE VALUE 7 +PARAMETER 8 TYPE # IS A NUMBER WITH THE VALUE 8 +PARAMETER 9 TYPE # IS A NUMBER WITH THE VALUE 9 +PARAMETER 10 TYPE $ IS A STRING WITH THE VALUE a +PARAMETER 11 TYPE # IS A NUMBER WITH THE VALUE 11 +PARAMETER 12 TYPE # IS A NUMBER WITH THE VALUE 12 +PARAMETER 13 TYPE # IS A NUMBER WITH THE VALUE 13 +PARAMETER 14 TYPE # IS A NUMBER WITH THE VALUE 14 +PARAMETER 15 TYPE # IS A NUMBER WITH THE VALUE 15 +PARAMETER 16 TYPE # IS A NUMBER WITH THE VALUE 16 +PARAMETER 17 TYPE # IS A NUMBER WITH THE VALUE 17 +PARAMETER 18 TYPE # IS A NUMBER WITH THE VALUE 18 +PARAMETER 19 TYPE # IS A NUMBER WITH THE VALUE 19 +PARAMETER 20 TYPE # IS A NUMBER WITH THE VALUE 20 +PARAMETER 21 TYPE # IS A NUMBER WITH THE VALUE 21 +PARAMETER 22 TYPE # IS A NUMBER WITH THE VALUE 22 +PARAMETER 23 TYPE # IS A NUMBER WITH THE VALUE 23 +PARAMETER 24 TYPE # IS A NUMBER WITH THE VALUE 24 +PARAMETER 25 TYPE # IS A NUMBER WITH THE VALUE 25 +PARAMETER 26 TYPE # IS A NUMBER WITH THE VALUE 26 +PARAMETER 27 TYPE # IS A NUMBER WITH THE VALUE 27 +PARAMETER 28 TYPE # IS A NUMBER WITH THE VALUE 28 +PARAMETER 29 TYPE # IS A NUMBER WITH THE VALUE 29 +PARAMETER 30 TYPE # IS A NUMBER WITH THE VALUE 30 +PARAMETER 31 TYPE # IS A NUMBER WITH THE VALUE 31 +PARAMETER 32 TYPE $ IS A STRING WITH THE VALUE z +az= 99 +VARIANT +ARGC= 0 +az= 99 +VARIANT +ARGC= 0 +az= 99 +not in a FUNCTION or SUB, should be -1 +ARGC=-1 diff --git a/NBS2/E055,run b/NBS2/E055,run new file mode 100644 index 0000000..88d0a8b --- /dev/null +++ b/NBS2/E055,run @@ -0,0 +1,19 @@ +Fake INP +x= 1 +Fake OUT +X= 2 +Y= 3 +Fake PEEK +X= 4 +Fake POKE +X= 5 +Y= 6 +Fake WAIT +X= 7 +Y= 8 +Fake WAIT #2 +X= 9 +Y= 10 +Z= 11 +a= 77 +b= 88 diff --git a/NBS2/E055.80 b/NBS2/E055.80 new file mode 100644 index 0000000..88d0a8b --- /dev/null +++ b/NBS2/E055.80 @@ -0,0 +1,19 @@ +Fake INP +x= 1 +Fake OUT +X= 2 +Y= 3 +Fake PEEK +X= 4 +Fake POKE +X= 5 +Y= 6 +Fake WAIT +X= 7 +Y= 8 +Fake WAIT #2 +X= 9 +Y= 10 +Z= 11 +a= 77 +b= 88 diff --git a/NBS2/E055.BAS b/NBS2/E055.BAS new file mode 100644 index 0000000..b73f66c --- /dev/null +++ b/NBS2/E055.BAS @@ -0,0 +1,58 @@ +REM PURPOSE: verify user functions supercedes intrinsic function +REM NOTE: they must have the same parameter signature +REM AUTHOR: Howard Wulf, AF5NE +REM DATE: 2014-01-24 +REM +REM Here we replace the functions not implemented on this platform +REM INP(), OUT(), WAIT(), PEEK(), POKE() +REM +let a = INP( 1 ) +OUT 2, 3 +let b = PEEK( 4 ) +POKE 5, 6 +WAIT 7, 8 +WAIT 9, 10, 11 + +print "a=";a +print "b=";b + +goto 999 + +REM --------------------------------------------------------------- +REM Direct hardware access is only supported on CP/M-86 derivatives +REM --------------------------------------------------------------- + +function INP( x ) + print "Fake INP" + print "x=";x + INP = 77 +end function +sub OUT( X, Y ) + print "Fake OUT" + print "X=";X + print "Y=";Y +end sub +sub WAIT( X, Y ) + print "Fake WAIT" + print "X=";X + print "Y=";Y +end sub +sub WAIT( X, Y, Z ) + print "Fake WAIT #2" + print "X=";X + print "Y=";Y + print "Z=";Z +end sub +function PEEK( X ) + print "Fake PEEK" + print "X=";X + PEEK = 88 +end function +sub POKE( X, Y ) + print "Fake POKE" + print "X=";X + print "Y=";Y +end sub +stop + +999 end diff --git a/NBS2/E055.OUT b/NBS2/E055.OUT new file mode 100644 index 0000000..3aa3c9c --- /dev/null +++ b/NBS2/E055.OUT @@ -0,0 +1,19 @@ +Fake INP +x= 1 +Fake OUT +X= 2 +Y= 3 +Fake PEEK +X= 4 +Fake POKE +X= 5 +Y= 6 +Fake WAIT +X= 7 +Y= 8 +Fake WAIT #2 +X= 9 +Y= 10 +Z= 11 +a= 77 +b= 88 diff --git a/NBS2/E055.dif b/NBS2/E055.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E055.run b/NBS2/E055.run new file mode 100644 index 0000000..88d0a8b --- /dev/null +++ b/NBS2/E055.run @@ -0,0 +1,19 @@ +Fake INP +x= 1 +Fake OUT +X= 2 +Y= 3 +Fake PEEK +X= 4 +Fake POKE +X= 5 +Y= 6 +Fake WAIT +X= 7 +Y= 8 +Fake WAIT #2 +X= 9 +Y= 10 +Z= 11 +a= 77 +b= 88 diff --git a/NBS2/E056.80 b/NBS2/E056.80 new file mode 100644 index 0000000..be4264b --- /dev/null +++ b/NBS2/E056.80 @@ -0,0 +1,17 @@ +Fake INP +X= 1 +Fake OUT +X= 2 +Y= 3 +Fake PEEK +X= 4 +Fake POKE +X= 5 +Y= 6 +a= 77 +b= 88 +*** TEST 1 PASSED *** +*** TEST 2 PASSED *** +*** TEST 3 PASSED *** +*** TEST 4 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E056.BAS b/NBS2/E056.BAS new file mode 100644 index 0000000..3cf09e4 --- /dev/null +++ b/NBS2/E056.BAS @@ -0,0 +1,125 @@ +REM PURPOSE: verify user function parameters are range checked +REM AUTHOR: Howard Wulf, AF5NE +REM DATE: 2014-01-26 +REM +REM Here we replace the functions not implemented on this platform +REM INP(), OUT(), WAIT(), PEEK(), POKE() +REM +REM These should succeed without any errors +let a = INP( 1 ) +OUT 2, 3 +let b = PEEK( 4 ) +POKE 5, 6 + +print "a=";a +print "b=";b + +REM These should cause ERROR 5 ' Illegal Function Call +on error goto hell + +REM TEST 1 +let T = 1 +BeforeTest1: +let a = INP( 100000 ) +AfterTest1: + +REM TEST 2 +let T = 2 +BeforeTest2: +let a = INP( -100000 ) +AfterTest2: + +REM TEST 3 +let T = 3 +BeforeTest3: +let X3 = 100000 +OUT X3, 0 +AfterTest3: + +REM TEST 4 +let T = 4 +BeforeTest4: +let Y4 = 100000 +OUT 0, Y4 +AfterTest4: + +print "*** ALL TESTS PASSED ***" + +goto 999 + + +hell: +if ERR = 5 then + select case T + case 1 + if ERL > BeforeTest1 and ERL < AfterTest1 then + REM This is where we expect the ERROR to occur + print "*** TEST 1 PASSED ***" + else + print "*** TEST 1 FAILED ***" + stop + end if + case 2 + if ERL > BeforeTest2 and ERL < AfterTest2 then + REM This is where we expect the ERROR to occur + print "*** TEST 2 PASSED ***" + else + print "*** TEST 2 FAILED ***" + stop + end if + case 3 + if ERL > BeforeTest3 and ERL < AfterTest3 then + REM This is where we expect the ERROR to occur + print "*** TEST 3 PASSED ***" + else + print "*** TEST 3 FAILED ***" + stop + end if + case 4 + if ERL > BeforeTest4 and ERL < AfterTest4 then + REM This is where we expect the ERROR to occur + print "*** TEST 4 PASSED ***" + else + print "*** TEST 4 FAILED ***" + stop + end if + case else + print "Unexpected TEST code:"; T + print "*** TEST FAILED ***" + stop + end select + resume next +end if +print "Unexpected ERROR code:"; ERR +print "*** TEST FAILED ***" +stop + + + +REM --------------------------------------------------------------- +REM Direct hardware access is only supported on CP/M-86 derivatives +REM --------------------------------------------------------------- + +function INP( X% ) + print "Fake INP" + print "X=";X% + INP = 77 +end function +sub OUT( X%, Y% ) + print "Fake OUT" + print "X=";X% + print "Y=";Y% +end sub +function PEEK( X% ) + print "Fake PEEK" + print "X=";X% + PEEK = 88 +end function +sub POKE( X%, Y% ) + print "Fake POKE" + print "X=";X% + print "Y=";Y% +end sub +stop + +999 end diff --git a/NBS2/E056.OUT b/NBS2/E056.OUT new file mode 100644 index 0000000..8c31168 --- /dev/null +++ b/NBS2/E056.OUT @@ -0,0 +1,17 @@ +Fake INP +X= 1 +Fake OUT +X= 2 +Y= 3 +Fake PEEK +X= 4 +Fake POKE +X= 5 +Y= 6 +a= 77 +b= 88 +*** TEST 1 PASSED *** +*** TEST 2 PASSED *** +*** TEST 3 PASSED *** +*** TEST 4 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E056.dif b/NBS2/E056.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E056.run b/NBS2/E056.run new file mode 100644 index 0000000..be4264b --- /dev/null +++ b/NBS2/E056.run @@ -0,0 +1,17 @@ +Fake INP +X= 1 +Fake OUT +X= 2 +Y= 3 +Fake PEEK +X= 4 +Fake POKE +X= 5 +Y= 6 +a= 77 +b= 88 +*** TEST 1 PASSED *** +*** TEST 2 PASSED *** +*** TEST 3 PASSED *** +*** TEST 4 PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/E057.80 b/NBS2/E057.80 new file mode 100644 index 0000000..745bffb --- /dev/null +++ b/NBS2/E057.80 @@ -0,0 +1,2 @@ +*** TEST PASSED *** +*** TEST PASSED *** diff --git a/NBS2/E057.BAS b/NBS2/E057.BAS new file mode 100644 index 0000000..afb0d92 --- /dev/null +++ b/NBS2/E057.BAS @@ -0,0 +1,20 @@ +100 REM Purpose: Verify ON ERROR GOTO is local to FUNCTION/SUB +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2015-02-05 +130 REM +140 FUNCTION tom() +150 ON ERROR GOTO HELL +160 ERROR 1 +170 PRINT "*** TEST FAILED ***" +180 STOP +190 HELL: +200 PRINT "*** TEST PASSED ***" +210 END FUNCTION +220 ON ERROR GOTO MAINHELL +240 tom +250 GOTO 900 +260 MAINHELL: +270 PRINT "*** TEST FAILED ***" +280 STOP +900 PRINT "*** TEST PASSED ***" +999 END diff --git a/NBS2/E057.OUT b/NBS2/E057.OUT new file mode 100644 index 0000000..419af25 --- /dev/null +++ b/NBS2/E057.OUT @@ -0,0 +1,2 @@ +*** TEST PASSED *** +*** TEST PASSED *** diff --git a/NBS2/E057.dif b/NBS2/E057.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E057.run b/NBS2/E057.run new file mode 100644 index 0000000..745bffb --- /dev/null +++ b/NBS2/E057.run @@ -0,0 +1,2 @@ +*** TEST PASSED *** +*** TEST PASSED *** diff --git a/NBS2/E058.80 b/NBS2/E058.80 new file mode 100644 index 0000000..89af02d --- /dev/null +++ b/NBS2/E058.80 @@ -0,0 +1,6 @@ + 11 + 12 + 13 + 21 + 22 + 23 diff --git a/NBS2/E058.BAS b/NBS2/E058.BAS new file mode 100644 index 0000000..18797b1 --- /dev/null +++ b/NBS2/E058.BAS @@ -0,0 +1,14 @@ +100 REM Purpose: Verify CSAVE* +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2014-02-18 +130 REM +200 OPTION BASE 1 +210 DIM A(2,3) +220 FOR I = 1 TO 2 +230 FOR J = 1 TO 3 +240 A(I,J) = I * 10 + J +245 PRINT A(I,J) +250 NEXT J +260 NEXT I +270 CSAVE* A +280 END diff --git a/NBS2/E058.OUT b/NBS2/E058.OUT new file mode 100644 index 0000000..5314677 --- /dev/null +++ b/NBS2/E058.OUT @@ -0,0 +1,6 @@ + 11 + 12 + 13 + 21 + 22 + 23 diff --git a/NBS2/E058.dif b/NBS2/E058.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E058.run b/NBS2/E058.run new file mode 100644 index 0000000..89af02d --- /dev/null +++ b/NBS2/E058.run @@ -0,0 +1,6 @@ + 11 + 12 + 13 + 21 + 22 + 23 diff --git a/NBS2/E059.80 b/NBS2/E059.80 new file mode 100644 index 0000000..89af02d --- /dev/null +++ b/NBS2/E059.80 @@ -0,0 +1,6 @@ + 11 + 12 + 13 + 21 + 22 + 23 diff --git a/NBS2/E059.BAS b/NBS2/E059.BAS new file mode 100644 index 0000000..6a86f6b --- /dev/null +++ b/NBS2/E059.BAS @@ -0,0 +1,13 @@ +100 REM Purpose: Verify CLOAD* +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2014-02-18 +130 REM +200 OPTION BASE 1 +210 DIM A(2,3) +215 CLOAD* A +220 FOR I = 1 TO 2 +230 FOR J = 1 TO 3 +240 PRINT A(I,J) +250 NEXT J +260 NEXT I +280 END diff --git a/NBS2/E059.OUT b/NBS2/E059.OUT new file mode 100644 index 0000000..5314677 --- /dev/null +++ b/NBS2/E059.OUT @@ -0,0 +1,6 @@ + 11 + 12 + 13 + 21 + 22 + 23 diff --git a/NBS2/E059.dif b/NBS2/E059.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E059.run b/NBS2/E059.run new file mode 100644 index 0000000..89af02d --- /dev/null +++ b/NBS2/E059.run @@ -0,0 +1,6 @@ + 11 + 12 + 13 + 21 + 22 + 23 diff --git a/NBS2/E060.80 b/NBS2/E060.80 new file mode 100644 index 0000000..ee6dee3 --- /dev/null +++ b/NBS2/E060.80 @@ -0,0 +1,8 @@ + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 0 diff --git a/NBS2/E060.BAS b/NBS2/E060.BAS new file mode 100644 index 0000000..f5e326d --- /dev/null +++ b/NBS2/E060.BAS @@ -0,0 +1,11 @@ +100 REM Purpose: Verify FREEFILE +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2015-02-19 +130 REM +200 for i = 1 to maxdev +202 rem next value should be 1,2,3,... +205 print freefile +210 open "A" for output as #i +220 next i +225 REM next value should be zero +230 print freefile diff --git a/NBS2/E060.OUT b/NBS2/E060.OUT new file mode 100644 index 0000000..4488279 --- /dev/null +++ b/NBS2/E060.OUT @@ -0,0 +1,8 @@ + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 0 diff --git a/NBS2/E060.dif b/NBS2/E060.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E060.run b/NBS2/E060.run new file mode 100644 index 0000000..ee6dee3 --- /dev/null +++ b/NBS2/E060.run @@ -0,0 +1,8 @@ + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 0 diff --git a/NBS2/E061.80 b/NBS2/E061.80 new file mode 100644 index 0000000..9fd1554 --- /dev/null +++ b/NBS2/E061.80 @@ -0,0 +1,8 @@ + X X X X X X X X X X X + NOT NOT AND OR XOR EQV IMP < <= = >= > <> +X Y X Y Y Y Y Y Y Y Y Y Y Y Y += = = = = = = = = = = = = = = +T T F F T T F T T F T T T F F +T F F T F T T F F T T F F F T +F T T F F T T F T F F F T T T +F F T T F F F T T F T T T F F diff --git a/NBS2/E061.BAS b/NBS2/E061.BAS new file mode 100644 index 0000000..494992c --- /dev/null +++ b/NBS2/E061.BAS @@ -0,0 +1,38 @@ +REM Purpose: Verify boolean operators +REM Author: Howard Wulf, AF5NE +REM Date: 2015-02-20 +REM +FUNCTION TF$( N ) + IF N = 0 THEN + LET TF$ = "F " + ELSE + LET TF$ = "T " + END IF +END FUNCTION +REM +PRINT " X X X X X X X X X X X " +PRINT " NOT NOT AND OR XOR EQV IMP < <= = >= > <> " +PRINT "X Y X Y Y Y Y Y Y Y Y Y Y Y Y " +PRINT "= = = = = = = = = = = = = = = " +for X = -1 to 0 +for Y = -1 to 0 + PRINT TF$( X); + PRINT TF$( Y); + PRINT TF$( NOT X); + PRINT TF$( NOT Y); + PRINT TF$(X AND Y); + PRINT TF$(X OR Y); + PRINT TF$(X XOR Y); + PRINT TF$(X EQV Y); + PRINT TF$(X IMP Y); + PRINT TF$(X < Y); + PRINT TF$(X <= Y); + PRINT TF$(X = Y); + PRINT TF$(X >= Y); + PRINT TF$(X > Y); + PRINT TF$(X <> Y); + PRINT +next Y +next X + +END diff --git a/NBS2/E061.OUT b/NBS2/E061.OUT new file mode 100644 index 0000000..aeb977f --- /dev/null +++ b/NBS2/E061.OUT @@ -0,0 +1,8 @@ + X X X X X X X X X X X + NOT NOT AND OR XOR EQV IMP < <= = >= > <> +X Y X Y Y Y Y Y Y Y Y Y Y Y Y += = = = = = = = = = = = = = = +T T F F T T F T T F T T T F F +T F F T F T T F F T T F F F T +F T T F F T T F T F F F T T T +F F T T F F F T T F T T T F F diff --git a/NBS2/E061.dif b/NBS2/E061.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E061.run b/NBS2/E061.run new file mode 100644 index 0000000..9fd1554 --- /dev/null +++ b/NBS2/E061.run @@ -0,0 +1,8 @@ + X X X X X X X X X X X + NOT NOT AND OR XOR EQV IMP < <= = >= > <> +X Y X Y Y Y Y Y Y Y Y Y Y Y Y += = = = = = = = = = = = = = = +T T F F T T F T T F T T T F F +T F F T F T T F F T T F F F T +F T T F F T T F T F F F T T T +F F T T F F F T T F T T T F F diff --git a/NBS2/E062.80 b/NBS2/E062.80 new file mode 100644 index 0000000..bceb427 --- /dev/null +++ b/NBS2/E062.80 @@ -0,0 +1,38 @@ +FILEATTR FOR CLOSED FILES +FILEATTR(CLOSED,1)= 0 +FILEATTR(CLOSED,2)= 0 +FILEATTR FOR INPUT FILES +FILEATTR(INPUT ,1)= 1 +FILEATTR(INPUT ,2)= 0 +FILEATTR FOR OUTPUT FILES +FILEATTR(OUTPUT,1)= 2 +FILEATTR(INPUT ,2)= 0 +FILEATTR FOR RANDOM FILES +FILEATTR(RANDOM,1)= 4 +FILEATTR(RANDOM,2)= 0 +FILEATTR FOR APPEND FILES +FILEATTR(APPEND,1)= 8 +FILEATTR(APPEND,2)= 0 +FILEATTR FOR BINARY FILES +FILEATTR(BINARY,1)= 32 +FILEATTR(BINARY,2)= 0 +FILEATTR WITH INVALID X < DEVMIN +FILEATTR(#0,1)= +ERR = 5 +ERL = 100 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(X) +FILEATTR WITH INVALID X > DEVMAX +FILEATTR(#999,2)= +ERR = 5 +ERL = 200 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(X) +FILEATTR WITH INVALID Y < 1 +FILEATTR(...,0)= +ERR = 5 +ERL = 300 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(Y) +FILEATTR WITH INVALID Y > 2 +FILEATTR(...,3)= +ERR = 5 +ERL = 400 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(Y) diff --git a/NBS2/E062.BAS b/NBS2/E062.BAS new file mode 100644 index 0000000..07a09d2 --- /dev/null +++ b/NBS2/E062.BAS @@ -0,0 +1,94 @@ +REM Purpose: Verify FILEATTR +REM Author: Howard Wulf, AF5NE +REM Date: 2015-02-20 +REM + + +REM ----------------------------------------- +REM THE FOLLOWING SHOULD NOT ERROR +REM + +PRINT "FILEATTR FOR CLOSED FILES" +PRINT "FILEATTR(CLOSED,1)=";FILEATTR(#7,1) +PRINT "FILEATTR(CLOSED,2)=";FILEATTR(#7,2) + + +PRINT "FILEATTR FOR INPUT FILES" +OPEN "E062.DAT" FOR INPUT AS #4 +PRINT "FILEATTR(INPUT ,1)=";FILEATTR(#4,1) +PRINT "FILEATTR(INPUT ,2)=";FILEATTR(#4,2) +CLOSE #4 + +PRINT "FILEATTR FOR OUTPUT FILES" +OPEN "E062.DAT" FOR OUTPUT AS #1 +PRINT "FILEATTR(OUTPUT,1)=";FILEATTR(#1,1) +PRINT "FILEATTR(INPUT ,2)=";FILEATTR(#4,2) +CLOSE #1 + +PRINT "FILEATTR FOR RANDOM FILES" +OPEN "E062.DAT" FOR RANDOM AS #5 +PRINT "FILEATTR(RANDOM,1)=";FILEATTR(#5,1) +PRINT "FILEATTR(RANDOM,2)=";FILEATTR(#5,2) +CLOSE #5 + +PRINT "FILEATTR FOR APPEND FILES" +OPEN "E062.DAT" FOR APPEND AS #2 +PRINT "FILEATTR(APPEND,1)=";FILEATTR(#2,1) +PRINT "FILEATTR(APPEND,2)=";FILEATTR(#2,2) +CLOSE #2 + +PRINT "FILEATTR FOR BINARY FILES" +OPEN "E062.DAT" FOR BINARY AS #3 +PRINT "FILEATTR(BINARY,1)=";FILEATTR(#3,1) +PRINT "FILEATTR(BINARY,2)=";FILEATTR(#3,2) +CLOSE #3 + + +ON ERROR RESUME NEXT + + +REM ----------------------------------------- +REM THE FOLLOWING SHOULD CAUSE ERRORS +REM BECAUSE THE DEVICE NUMBER IS NOT ALLOWED +REM + +PRINT "FILEATTR WITH INVALID X < DEVMIN" +100 PRINT "FILEATTR(#0,1)=";FILEATTR(#0,1) +PRINT +PRINT "ERR =";ERR +PRINT "ERL =";ERL +PRINT "ERR$=";ERR$ +ERROR 0 + +PRINT "FILEATTR WITH INVALID X > DEVMAX" +200 PRINT "FILEATTR(#999,2)=";FILEATTR(#999,2) +PRINT +PRINT "ERR =";ERR +PRINT "ERL =";ERL +PRINT "ERR$=";ERR$ +ERROR 0 + +REM ----------------------------------------- +REM THE FOLLOWING SHOULD CAUSE ERRORS +REM BECAUSE THE ATTRIBUTE NUMBER IS NOT ALLOWED +REM +REM + +PRINT "FILEATTR WITH INVALID Y < 1" +300 PRINT "FILEATTR(...,0)=";FILEATTR(#7,0) +PRINT +PRINT "ERR =";ERR +PRINT "ERL =";ERL +PRINT "ERR$=";ERR$ +ERROR 0 + +PRINT "FILEATTR WITH INVALID Y > 2" +400 PRINT "FILEATTR(...,3)=";FILEATTR(#7,3) +PRINT +PRINT "ERR =";ERR +PRINT "ERL =";ERL +PRINT "ERR$=";ERR$ +ERROR 0 + + +END diff --git a/NBS2/E062.DAT b/NBS2/E062.DAT new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E062.OUT b/NBS2/E062.OUT new file mode 100644 index 0000000..58802ce --- /dev/null +++ b/NBS2/E062.OUT @@ -0,0 +1,38 @@ +FILEATTR FOR CLOSED FILES +FILEATTR(CLOSED,1)= 0 +FILEATTR(CLOSED,2)= 0 +FILEATTR FOR INPUT FILES +FILEATTR(INPUT ,1)= 1 +FILEATTR(INPUT ,2)= 0 +FILEATTR FOR OUTPUT FILES +FILEATTR(OUTPUT,1)= 2 +FILEATTR(INPUT ,2)= 0 +FILEATTR FOR RANDOM FILES +FILEATTR(RANDOM,1)= 4 +FILEATTR(RANDOM,2)= 0 +FILEATTR FOR APPEND FILES +FILEATTR(APPEND,1)= 8 +FILEATTR(APPEND,2)= 0 +FILEATTR FOR BINARY FILES +FILEATTR(BINARY,1)= 32 +FILEATTR(BINARY,2)= 0 +FILEATTR WITH INVALID X < DEVMIN +FILEATTR(#0,1)= +ERR = 5 +ERL = 100 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(X) +FILEATTR WITH INVALID X > DEVMAX +FILEATTR(#999,2)= +ERR = 5 +ERL = 200 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(X) +FILEATTR WITH INVALID Y < 1 +FILEATTR(...,0)= +ERR = 5 +ERL = 300 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(Y) +FILEATTR WITH INVALID Y > 2 +FILEATTR(...,3)= +ERR = 5 +ERL = 400 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(Y) diff --git a/NBS2/E062.dif b/NBS2/E062.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E062.run b/NBS2/E062.run new file mode 100644 index 0000000..bceb427 --- /dev/null +++ b/NBS2/E062.run @@ -0,0 +1,38 @@ +FILEATTR FOR CLOSED FILES +FILEATTR(CLOSED,1)= 0 +FILEATTR(CLOSED,2)= 0 +FILEATTR FOR INPUT FILES +FILEATTR(INPUT ,1)= 1 +FILEATTR(INPUT ,2)= 0 +FILEATTR FOR OUTPUT FILES +FILEATTR(OUTPUT,1)= 2 +FILEATTR(INPUT ,2)= 0 +FILEATTR FOR RANDOM FILES +FILEATTR(RANDOM,1)= 4 +FILEATTR(RANDOM,2)= 0 +FILEATTR FOR APPEND FILES +FILEATTR(APPEND,1)= 8 +FILEATTR(APPEND,2)= 0 +FILEATTR FOR BINARY FILES +FILEATTR(BINARY,1)= 32 +FILEATTR(BINARY,2)= 0 +FILEATTR WITH INVALID X < DEVMIN +FILEATTR(#0,1)= +ERR = 5 +ERL = 100 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(X) +FILEATTR WITH INVALID X > DEVMAX +FILEATTR(#999,2)= +ERR = 5 +ERL = 200 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(X) +FILEATTR WITH INVALID Y < 1 +FILEATTR(...,0)= +ERR = 5 +ERL = 300 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(Y) +FILEATTR WITH INVALID Y > 2 +FILEATTR(...,3)= +ERR = 5 +ERL = 400 +ERR$=ILLEGAL FUUNCTION CALL: FILEATTR(Y) diff --git a/NBS2/E063.80 b/NBS2/E063.80 new file mode 100644 index 0000000..6e78b8d --- /dev/null +++ b/NBS2/E063.80 @@ -0,0 +1,37 @@ +AT END OF NEW EMPTY FILE +LOC = 1 +LOF = 0 +SEEK= 1 + +AT END OF NON-EMPTY FILE < 128 +LOC = 1 +LOF = 8 +SEEK= 9 + +AT END OF NON-EMPTY FILE = 128 +LOC = 2 +LOF = 128 +SEEK= 129 + +AT START OF NON-EMPTY FILE = 128 +LOC = 1 +LOF = 128 +SEEK= 1 + +AT END OF NON-EMPTY FILE = 128 +LOC = 1 +LOF = 128 +SEEK= 128 + +REAAD CHAR AT START OF NON-EMPTY FILE = 128 + A$=[1] +LOC = 1 +LOF = 128 +SEEK= 2 + +READ CHAR AT END OF NON-EMPTY FILE = 128 + A$=[0] +LOC = 2 +LOF = 128 +SEEK= 129 + diff --git a/NBS2/E063.BAS b/NBS2/E063.BAS new file mode 100644 index 0000000..1ef530d --- /dev/null +++ b/NBS2/E063.BAS @@ -0,0 +1,68 @@ +REM Purpose: Verify SEEK, LOC, and LOF +REM Author: Howard Wulf, AF5NE +REM Date: 2015-02-21 +REM + +OPEN "E063.DAT" FOR OUTPUT AS #1 + +PRINT "AT END OF NEW EMPTY FILE" +PRINT "LOC =";LOC(#1) +PRINT "LOF =";LOF(#1) +PRINT "SEEK=";SEEK(#1) +PRINT + +PRINT "AT END OF NON-EMPTY FILE < 128" +PRINT #1, "12345678"; +PRINT "LOC =";LOC(#1) +PRINT "LOF =";LOF(#1) +PRINT "SEEK=";SEEK(#1) +PRINT + +PRINT "AT END OF NON-EMPTY FILE = 128" +FOR I = 1 TO 12 +PRINT #1, "1234567890"; +NEXT I +PRINT "LOC =";LOC(#1) +PRINT "LOF =";LOF(#1) +PRINT "SEEK=";SEEK(#1) +PRINT + + +PRINT "AT START OF NON-EMPTY FILE = 128" +SEEK #1, 1 +PRINT "LOC =";LOC(#1) +PRINT "LOF =";LOF(#1) +PRINT "SEEK=";SEEK(#1) +PRINT + +PRINT "AT END OF NON-EMPTY FILE = 128" +SEEK #1, LOF(#1) +PRINT "LOC =";LOC(#1) +PRINT "LOF =";LOF(#1) +PRINT "SEEK=";SEEK(#1) +PRINT +CLOSE #1 + + +OPEN "E063.DAT" FOR INPUT AS #1 + +PRINT "REAAD CHAR AT START OF NON-EMPTY FILE = 128" +LET A$ = INPUT$(1, #1) +PRINT " A$=";"[";A$;"]" +PRINT "LOC =";LOC(#1) +PRINT "LOF =";LOF(#1) +PRINT "SEEK=";SEEK(#1) +PRINT + +PRINT "READ CHAR AT END OF NON-EMPTY FILE = 128" +SEEK #1, LOF(#1) +LET A$ = INPUT$(1, #1) +PRINT " A$=";"[";A$;"]" +PRINT "LOC =";LOC(#1) +PRINT "LOF =";LOF(#1) +PRINT "SEEK=";SEEK(#1) +PRINT + +CLOSE #1 + +END diff --git a/NBS2/E063.DAT b/NBS2/E063.DAT new file mode 100644 index 0000000..d627b0d --- /dev/null +++ b/NBS2/E063.DAT @@ -0,0 +1 @@ +12345678123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 \ No newline at end of file diff --git a/NBS2/E063.OUT b/NBS2/E063.OUT new file mode 100644 index 0000000..caaef12 --- /dev/null +++ b/NBS2/E063.OUT @@ -0,0 +1,37 @@ +AT END OF NEW EMPTY FILE +LOC = 1 +LOF = 0 +SEEK= 1 + +AT END OF NON-EMPTY FILE < 128 +LOC = 1 +LOF = 8 +SEEK= 9 + +AT END OF NON-EMPTY FILE = 128 +LOC = 2 +LOF = 128 +SEEK= 129 + +AT START OF NON-EMPTY FILE = 128 +LOC = 1 +LOF = 128 +SEEK= 1 + +AT END OF NON-EMPTY FILE = 128 +LOC = 1 +LOF = 128 +SEEK= 128 + +REAAD CHAR AT START OF NON-EMPTY FILE = 128 + A$=[1] +LOC = 1 +LOF = 128 +SEEK= 2 + +READ CHAR AT END OF NON-EMPTY FILE = 128 + A$=[0] +LOC = 2 +LOF = 128 +SEEK= 129 + diff --git a/NBS2/E063.dif b/NBS2/E063.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E063.run b/NBS2/E063.run new file mode 100644 index 0000000..6e78b8d --- /dev/null +++ b/NBS2/E063.run @@ -0,0 +1,37 @@ +AT END OF NEW EMPTY FILE +LOC = 1 +LOF = 0 +SEEK= 1 + +AT END OF NON-EMPTY FILE < 128 +LOC = 1 +LOF = 8 +SEEK= 9 + +AT END OF NON-EMPTY FILE = 128 +LOC = 2 +LOF = 128 +SEEK= 129 + +AT START OF NON-EMPTY FILE = 128 +LOC = 1 +LOF = 128 +SEEK= 1 + +AT END OF NON-EMPTY FILE = 128 +LOC = 1 +LOF = 128 +SEEK= 128 + +REAAD CHAR AT START OF NON-EMPTY FILE = 128 + A$=[1] +LOC = 1 +LOF = 128 +SEEK= 2 + +READ CHAR AT END OF NON-EMPTY FILE = 128 + A$=[0] +LOC = 2 +LOF = 128 +SEEK= 129 + diff --git a/NBS2/E064.80 b/NBS2/E064.80 new file mode 100644 index 0000000..92d6168 --- /dev/null +++ b/NBS2/E064.80 @@ -0,0 +1,10 @@ + 1 1 1 1 + 2 1 2 2 + 3 1 3 3 + 9 3 3 3 + 1 1.5 0 0 + 1.5 1.5 1 1 + 1.5 1 2 2 + 10 3 3 3 + 1.4 1.3 1 1 + 1.3 1.4 1 1 diff --git a/NBS2/E064.BAS b/NBS2/E064.BAS new file mode 100644 index 0000000..cbc75c8 --- /dev/null +++ b/NBS2/E064.BAS @@ -0,0 +1,33 @@ +REM Purpose: Verify integer divide, X \ Y +REM Author: Howard Wulf, AF5NE +REM Date: 2015-02-21 +REM + + +READ X, Y, Z +DO + LET N = X \ Y + PRINT X,Y,Z,N + IF Z <> N THEN + PRINT "*** TEST FAILED ***" + STOP + END IF + READ X, Y, Z +LOOP UNTIL X = 999 +GOTO 999 + +REM TEST DATA +REM X,Y,Z +DATA 1,1,1 +DATA 2,1,2 +DATA 3,1,3 +DATA 9,3,3 +DATA 1.0,1.5,0 +DATA 1.5,1.5,1 +DATA 1.5,1.0,2 +DATA 10,3,3 +DATA 1.4,1.3,1 +DATA 1.3,1.4,1 +DATA 999,999,999 + +999 END diff --git a/NBS2/E064.OUT b/NBS2/E064.OUT new file mode 100644 index 0000000..716c1ba --- /dev/null +++ b/NBS2/E064.OUT @@ -0,0 +1,10 @@ + 1 1 1 1 + 2 1 2 2 + 3 1 3 3 + 9 3 3 3 + 1 1.5 0 0 + 1.5 1.5 1 1 + 1.5 1 2 2 + 10 3 3 3 + 1.4 1.3 1 1 + 1.3 1.4 1 1 diff --git a/NBS2/E064.dif b/NBS2/E064.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E064.run b/NBS2/E064.run new file mode 100644 index 0000000..92d6168 --- /dev/null +++ b/NBS2/E064.run @@ -0,0 +1,10 @@ + 1 1 1 1 + 2 1 2 2 + 3 1 3 3 + 9 3 3 3 + 1 1.5 0 0 + 1.5 1.5 1 1 + 1.5 1 2 2 + 10 3 3 3 + 1.4 1.3 1 1 + 1.3 1.4 1 1 diff --git a/NBS2/E065.80 b/NBS2/E065.80 new file mode 100644 index 0000000..3148da7 --- /dev/null +++ b/NBS2/E065.80 @@ -0,0 +1,32 @@ +MAXLEN= 4096 + 11 +TEST #1 OK + 4096 +TEST #2 OK + 4096 +TEST #3 OK + 4096 +TEST #4 OK + 4096 +TEST #5 OK + 4096 +TEST #6 OK + 4096 +TEST #7 OK + 4096 +TEST #8 OK + 4095 +TEST #9 OK + 4095 +TEST #10 OK + 4096 +TEST #11 OK + 4095 +TEST #12 OK + 4096 +TEST #13 OK + 1 2 3 4 +1234567890123456789012345678901234567890 +........................................ +TEST #14 OK +*** ALL TESTS PASSED **** diff --git a/NBS2/E065.BAS b/NBS2/E065.BAS new file mode 100644 index 0000000..76fcc2d --- /dev/null +++ b/NBS2/E065.BAS @@ -0,0 +1,102 @@ +100 REM Purpose: Verify NULL character and MAXLEN strings +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2015-03-02 +130 REM +140 M = MAXLEN("") +150 PRINT "MAXLEN=";M +160 ' maintainer debug on +200 REM Verify length is 11 +210 LET A$ = "12345" + CHR$(0) + "67890" +220 LET N = LEN(A$) +230 PRINT N +235 IF N <> 11 THEN 9999 +236 PRINT "TEST #1 OK" +300 REM Verify length is MAXLEN +310 LET A$ = STRING$( M, 0 ) +320 LET N = LEN(A$) +330 PRINT N +335 IF N <> M THEN 9999 +336 PRINT "TEST #2 OK" +400 REM Verify length is MAXLEN +410 A$ = A$ + "*" +420 LET N = LEN(A$) +430 PRINT N +435 IF N <> M THEN 9999 +436 PRINT "TEST #3 OK" +500 REM Verify length is MAXLEN +510 A$ = A$ + A$ +520 LET N = LEN(A$) +530 PRINT N +535 IF N <> M THEN 9999 +536 PRINT "TEST #4 OK" +600 REM Verify length is MAXLEN +610 A$ = A$ + "" +620 LET N = LEN(A$) +630 PRINT N +635 IF N <> M THEN 9999 +636 PRINT "TEST #5 OK" +700 REM Verify length is MAXLEN +710 A$ = "" + A$ +720 LET N = LEN(A$) +730 PRINT N +735 IF N <> M THEN 9999 +736 PRINT "TEST #6 OK" +800 REM Verify length is MAXLEN +810 A$ = A$ + CHR$(0) +820 LET N = LEN(A$) +830 PRINT N +835 IF N <> M THEN 9999 +836 PRINT "TEST #7 OK" +900 REM Verify length is MAXLEN +910 A$ = CHR$(0) + A$ +920 LET N = LEN(A$) +930 PRINT N +935 IF N <> M THEN 9999 +936 PRINT "TEST #8 OK" +1000 REM Verify length is MAXLEN - 1 +1010 A$ = LEFT$( STRING$(M,0), M - 1 ) +1020 LET N = LEN(A$) +1030 PRINT N +1035 IF N <> M - 1 THEN 9999 +1036 PRINT "TEST #9 OK" +1100 REM Verify length is MAXLEN - 1 +1110 A$ = RIGHT$( STRING$(M,0), M - 1 ) +1120 LET N = LEN(A$) +1130 PRINT N +1135 IF N <> M - 1 THEN 9999 +1136 PRINT "TEST #10 OK" +1200 REM Verify length is MAXLEN +1210 A$ = MID$( STRING$(M,0), 1, M ) +1220 LET N = LEN(A$) +1230 PRINT N +1235 IF N <> M THEN 9999 +1236 PRINT "TEST #11 OK" +1300 REM Verify length is MAXLEN - 1 +1310 A$ = MID$( STRING$(M,0), 2, M ) +1320 LET N = LEN(A$) +1330 PRINT N +1335 IF N <> M - 1 THEN 9999 +1336 PRINT "TEST #12 OK" +1400 REM Verify length is MAXLEN +1410 A$ = MID$( A$, 1, M ) + MID$( A$, 2, M ) +1420 LET N = LEN(A$) +1430 PRINT N +1435 IF N <> M THEN 9999 +1436 PRINT "TEST #13 OK" +2000 REM Verify EVERY char is NULL +2010 PRINT " 1 2 3 4" +2020 PRINT "1234567890123456789012345678901234567890" +2030 FOR I = 1 TO M +2040 IF I MOD 100 = 0 THEN +2050 PRINT "."; +2060 END IF +2070 IF ASC(MID$(A$,I,1)) <> 0 THEN +2080 PRINT "*** ERROR AT I=";I +2090 STOP +2100 END IF +2110 NEXT I +2120 PRINT +2130 REM +2136 PRINT "TEST #14 OK" +9000 PRINT "*** ALL TESTS PASSED ****" +9999 END diff --git a/NBS2/E065.OUT b/NBS2/E065.OUT new file mode 100644 index 0000000..bbe3b98 --- /dev/null +++ b/NBS2/E065.OUT @@ -0,0 +1,32 @@ +MAXLEN= 4096 + 11 +TEST #1 OK + 4096 +TEST #2 OK + 4096 +TEST #3 OK + 4096 +TEST #4 OK + 4096 +TEST #5 OK + 4096 +TEST #6 OK + 4096 +TEST #7 OK + 4096 +TEST #8 OK + 4095 +TEST #9 OK + 4095 +TEST #10 OK + 4096 +TEST #11 OK + 4095 +TEST #12 OK + 4096 +TEST #13 OK + 1 2 3 4 +1234567890123456789012345678901234567890 +........................................ +TEST #14 OK +*** ALL TESTS PASSED **** diff --git a/NBS2/E065.dif b/NBS2/E065.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E065.run b/NBS2/E065.run new file mode 100644 index 0000000..3148da7 --- /dev/null +++ b/NBS2/E065.run @@ -0,0 +1,32 @@ +MAXLEN= 4096 + 11 +TEST #1 OK + 4096 +TEST #2 OK + 4096 +TEST #3 OK + 4096 +TEST #4 OK + 4096 +TEST #5 OK + 4096 +TEST #6 OK + 4096 +TEST #7 OK + 4096 +TEST #8 OK + 4095 +TEST #9 OK + 4095 +TEST #10 OK + 4096 +TEST #11 OK + 4095 +TEST #12 OK + 4096 +TEST #13 OK + 1 2 3 4 +1234567890123456789012345678901234567890 +........................................ +TEST #14 OK +*** ALL TESTS PASSED **** diff --git a/NBS2/E066.80 b/NBS2/E066.80 new file mode 100644 index 0000000..66b6fb4 --- /dev/null +++ b/NBS2/E066.80 @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E066.BAS b/NBS2/E066.BAS new file mode 100644 index 0000000..9469d3c --- /dev/null +++ b/NBS2/E066.BAS @@ -0,0 +1,26 @@ +100 REM Purpose: Verify CHANGE A$ TO X +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2015-03-07 +130 REM +200 DIM X(6) +210 LET A$ = "SYSTEM" +220 CHANGE A$ TO X +230 LET N = X(0) +240 PRINT "N=";N +250 FOR I = 1 TO N +260 PRINT X(I); +270 NEXT I +280 PRINT +290 REM +300 DIM Y(6) +310 Y(0) = 6 +320 Y(1) = ASC("H") +330 Y(2) = ASC("E") +340 Y(3) = ASC("L") +350 Y(4) = ASC("L") +360 Y(5) = ASC("O") +370 Y(6) = ASC("!") +375 B$ = "WORLD." +380 CHANGE Y TO B$ +390 PRINT B$ +400 END diff --git a/NBS2/E066.OUT b/NBS2/E066.OUT new file mode 100644 index 0000000..b2d2bfc --- /dev/null +++ b/NBS2/E066.OUT @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E066.dif b/NBS2/E066.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E066.run b/NBS2/E066.run new file mode 100644 index 0000000..66b6fb4 --- /dev/null +++ b/NBS2/E066.run @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E067.80 b/NBS2/E067.80 new file mode 100644 index 0000000..66b6fb4 --- /dev/null +++ b/NBS2/E067.80 @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E067.BAS b/NBS2/E067.BAS new file mode 100644 index 0000000..587d8f4 --- /dev/null +++ b/NBS2/E067.BAS @@ -0,0 +1,28 @@ +100 REM Purpose: Verify OPTION COMMENT char +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2015-05-01 +130 REM Note: profile.bas must have OPTION COMMENT ! +140 REM Note: The output should be identical to E066.BAS +150 REM +200 DIM X(6) ! comment +210 LET A$ = "SYSTEM" ! comment +220 CHANGE A$ TO X ! comment +230 LET N = X(0) ! comment +240 PRINT "N=";N ! comment +250 FOR I = 1 TO N ! comment +260 PRINT X(I); ! comment +270 NEXT I ! comment +280 PRINT ! comment +290 REM ! comment +300 DIM Y(6) ! comment +310 Y(0) = 6 ! comment +320 Y(1) = ASC("H") ! comment +330 Y(2) = ASC("E") ! comment +340 Y(3) = ASC("L") ! comment +350 Y(4) = ASC("L") ! comment +360 Y(5) = ASC("O") ! comment +370 Y(6) = ASC("!") ! comment +375 B$ = "WORLD." ! comment +380 CHANGE Y TO B$ ! comment +390 PRINT B$ ! comment +400 END ! comment diff --git a/NBS2/E067.OUT b/NBS2/E067.OUT new file mode 100644 index 0000000..b2d2bfc --- /dev/null +++ b/NBS2/E067.OUT @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E067.dif b/NBS2/E067.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E067.run b/NBS2/E067.run new file mode 100644 index 0000000..66b6fb4 --- /dev/null +++ b/NBS2/E067.run @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E068.80 b/NBS2/E068.80 new file mode 100644 index 0000000..66b6fb4 --- /dev/null +++ b/NBS2/E068.80 @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E068.BAS b/NBS2/E068.BAS new file mode 100644 index 0000000..9be18b1 --- /dev/null +++ b/NBS2/E068.BAS @@ -0,0 +1,9 @@ +100 REM Purpose: Verify OPTION STATEMENT char +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2015-05-01 +130 REM Note: profile.bas must have OPTION STATEMENT \ +140 REM Note: The output should be identical to E066.BAS +150 REM +200 DIM X(6)\LET A$ = "SYSTEM"\CHANGE A$ TO X\LET N = X(0)\PRINT "N=";N\FOR I = 1 TO N\PRINT X(I);\NEXT I\PRINT +290 REM +300 DIM Y(6)\Y(0) = 6\Y(1) = ASC("H")\Y(2) = ASC("E")\Y(3) = ASC("L")\Y(4) = ASC("L")\Y(5) = ASC("O")\Y(6) = ASC("!")\B$ = "WORLD."\CHANGE Y TO B$\PRINT B$\END diff --git a/NBS2/E068.OUT b/NBS2/E068.OUT new file mode 100644 index 0000000..b2d2bfc --- /dev/null +++ b/NBS2/E068.OUT @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E068.dif b/NBS2/E068.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E068.run b/NBS2/E068.run new file mode 100644 index 0000000..66b6fb4 --- /dev/null +++ b/NBS2/E068.run @@ -0,0 +1,3 @@ +N= 6 + 83 89 83 84 69 77 +HELLO! diff --git a/NBS2/E069.80 b/NBS2/E069.80 new file mode 100644 index 0000000..c742dbb --- /dev/null +++ b/NBS2/E069.80 @@ -0,0 +1,53 @@ + 1 +a b c + 1 1 1 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +Correct +I= 1 +Good 1 +Good 1 +I= 2 +Good 2 +Good 2 +I= 3 +Good 3 +Good 3 +good 4 +[d ] +[ e] +[d e] +[1234567890] +Before SUB definition +After SUB definition +X1 <= Y1 1 <= 2 +X1 > Y1 2 > 1 +X2 < Y2 1 < 2 +X2 >= Y2 5 >= 1 +X2 >= Y2 10 >= 3 +Z= 7 +A$=1234567890 +B$=1234567890 +A$="1234567890 " +firing... +caught... +Throw +Caught +------------------------------------------------------------ + SYNTAX: HELP name +DESCRIPTION: Provides help on the specified 'name' which is a command name or fu +nction name. +FNA= 9 +X(22)= 2 +A$=abcd12ghijklmnop +A$=abcd123456789 +6033: +Ok diff --git a/NBS2/E069.OUT b/NBS2/E069.OUT new file mode 100644 index 0000000..f07b31b --- /dev/null +++ b/NBS2/E069.OUT @@ -0,0 +1,53 @@ + 1 +a b c + 1 1 1 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +Correct +I= 1 +Good 1 +Good 1 +I= 2 +Good 2 +Good 2 +I= 3 +Good 3 +Good 3 +good 4 +[d ] +[ e] +[d e] +[1234567890] +Before SUB definition +After SUB definition +X1 <= Y1 1 <= 2 +X1 > Y1 2 > 1 +X2 < Y2 1 < 2 +X2 >= Y2 5 >= 1 +X2 >= Y2 10 >= 3 +Z= 7 +A$=1234567890 +B$=1234567890 +A$="1234567890 " +firing... +caught... +Throw +Caught +------------------------------------------------------------ + SYNTAX: HELP name +DESCRIPTION: Provides help on the specified 'name' which is a command name or fu +nction name. +FNA= 9 +X(22)= 2 +A$=abcd12ghijklmnop +A$=abcd123456789 +6033: +Ok diff --git a/NBS2/E069.bas b/NBS2/E069.bas new file mode 100644 index 0000000..e24b9e1 --- /dev/null +++ b/NBS2/E069.bas @@ -0,0 +1,260 @@ +rem Purpose: verify comment character is honored for all commands +rem Author: Howard Wulf, AF5NE +rem Date: 2015-05-01 +rem Usage: implementation defined +rem Example: ~/bwbasic E069.bas +rem --------------------------------------------- +rem +rem cmds +clear ' comment +DEFDBL Z ' comment +DEFINT I ' comment +DEFSNG Y ' comment +DEFSTR A ' comment +COMMON z ' comment +LET TRUE = -1 ' comment +LET FALSE = 0 ' comment +DATA a , b , c ' comment +? 1 ' COMMENT +RESTORE ' comment +read a$,b$,c$ ' comment +print a$,b$,c$ ' comment +print len(a$), len(b$), len(c$) +call chr$(0) ' comment +SELECT CASE 5 ' comment +CASE IF = 1 ' comment +CASE IS = 2 ' comment +CASE 3 ' comment +CASE ELSE ' comment +END SELECT ' comment +dim x(10) ' comment +a$ = "1234567890" ' comment +change a$ to x ' comment +change x to a$ ' comment +' CMDS ' comment + +I = 0 ' comment +DO ' comment +I = I + 1 ' comment +IF I > 2 THEN ' comment +EXIT DO ' comment +ELSE ' comment +PRINT "I=";I ' comment +END IF ' comment +LOOP ' comment + +I = 0 ' comment +DO WHILE TRUE ' comment +I = I + 1 ' comment +IF I > 2 THEN ' comment +EXIT DO ' comment +ELSE ' comment +PRINT "I=";I ' comment +END IF ' comment +LOOP WHILE TRUE ' comment + +I = 0 ' comment +DO UNTIL FALSE ' comment +I = I + 1 ' comment +IF I > 2 THEN ' comment +EXIT DO ' comment +ELSE ' comment +PRINT "I=";I ' comment +END IF ' comment +LOOP UNTIL FALSE ' comment + +I = 0 ' comment +UNTIL FALSE ' comment +I = I + 1 ' comment +IF I > 2 THEN ' comment +EXIT UNTIL ' comment +ELSE ' comment +PRINT "I=";I ' comment +END IF ' comment +UEND ' comment + +I = 0 ' comment +WHILE TRUE ' comment +I = I + 1 ' comment +IF I > 2 THEN ' comment +EXIT WHILE ' comment +ELSE ' comment +PRINT "I=";I ' comment +END IF ' comment +WEND ' comment + +FOR I = 1 TO 3 ' comment +IF I > 2 THEN ' comment +EXIT FOR ' comment +END IF ' comment +NEXT I ' comment + +I = 3 + 4 ' comment +IF I = 2 THEN ' comment +PRINT "ERROR" ' comment +ELSEIF I = 7 ' comment +PRINT "Correct" ' comment +ELSE ' comment +PRINT "ERROR" ' comment +END IF ' comment + +I = 5 * 6 ' comment +IF I > 10 THEN 1000 ELSE 9000 ' comment +ERROR 1 ' comment +1000 IF I < 99 THEN 2000 ELSE 9000 ' comment +ERROR 1 ' comment +2000 ' comment +GOTO 3000 ' comment +2100 IF I = 1 THEN PRINT "Good 1":RETURN ELSE PRINT "ERROR ON 1" : GOTO 9000 ' comment +2200 IF I = 2 THEN PRINT "Good 2":RETURN ELSE PRINT "ERROR ON 2" : GOTO 9000 ' comment +2300 IF I = 3 THEN PRINT "Good 3":RETURN ELSE PRINT "ERROR ON 3" : GOTO 9000 ' comment +3000 ' fncs ' comment +3010 GOTO 3400 ' comment +3100 IF I <> 1 THEN PRINT "ERROR ON 1" : GOTO 9000 ELSE PRINT "Good 1":GOTO 3500 ' comment +3200 IF I <> 2 THEN PRINT "ERROR ON 2" : GOTO 9000 ELSE PRINT "Good 2":GOTO 3500 ' comment +3300 IF I <> 3 THEN PRINT "ERROR ON 3" : GOTO 9000 ELSE PRINT "Good 3":GOTO 3500 ' comment +3310 PRINT "ERROR 4": STOP ' comment +3350 print "good 4" +return ' comment +3400 FOR I = 1 TO 3 ' comment +PRINT "I=";I ' comment +ON I GOSUB 2100,2200,2300 ' comment +ON I GOTO 3100,3200,3300 ' comment +3500 REM ' comment +NEXT I ' comment +gosub 3350 ' comment +LPRINT A$; ' comment +LPRINT B$, ' comment +LPRINT C$ ' comment + +OPEN "test.dat" FOR RANDOM AS #1 LEN 12 ' comment +FIELD #1, 5 AS D$, 7 AS E$ ' comment +FIELD #1, 12 AS F$ + +LSET D$ = "d" ' comment +RSET E$ = "e" ' comment + +PRINT "[";D$;"]" ' comment +PRINT "[";E$;"]" ' comment + +PUT #1 ' comment +SEEK #1, 1 ' comment +GET #1 ' comment +PRINT "["; F$; "]" ' comment +CLOSE #1 + +OPEN "test.dat" for output as #1 +PRINT #1, A$ ' comment +CLOSE #1 ' comment +OPEN "test.dat" for INPUT as #1 ' comment +INPUT #1, B$ ' comment +CLOSE #1 ' comment +PRINT "["; B$; "]" ' comment + +PRINT "Before SUB definition" ' comment +' MAINTAINER STACK +4000 SUB TestSub( X1, Y1 ) ' comment +' MAINTAINER STACK +IF X1 > Y1 THEN ' comment +PRINT "X1 > Y1",X1;">";Y1 ' comment +' LET TestSub = X1 - Y1 +EXIT SUB ' comment +END IF ' comment +PRINT "X1 <= Y1",X1;"<=";Y1 ' comment +' LET TestSub = X1 + Y1 +END SUB ' comment +PRINT "After SUB definition" ' comment + +' MAINTAINER STACK + +TestSub 1, 2 ' comment +' MAINTAINER STACK +CALL TestSub(2,1) ' comment +CALL ABS(2) ' comment + + +5000 FUNCTION TestFun( X2, Y2 ) ' comment +5010 IF X2 < Y2 THEN ' comment +5020 LET TestFun = X2 + Y2 ' comment +5025 PRINT "X2 < Y2",X2;"<";Y2 ' comment +5030 EXIT FUNCTION ' comment +5040 END IF ' comment +5050 LET TestFun = X2 - Y2 ' comment +5055 PRINT "X2 >= Y2",X2;">=";Y2 ' comment +5060 END FUNCTION ' comment + +TestFun 1, 2 ' comment +CALL TestFun( 5, 1 ) ' comment +LET Z = TestFun( 10, 3 ) ' comment +PRINT "Z=";Z ' comment + +OPEN "test.dat" FOR INPUT AS #1 ' comment +LINE INPUT #1, A$ ' comment +CLOSE #1 ' comment +PRINT "A$=";A$ ' comment +SWAP A$,B$ ' comment +PRINT "B$=";B$ ' comment +REM vars ' comment +OPEN "test.dat" FOR OUTPUT AS #1 ' comment +WRITE #1, B$ ' comment +CLOSE #1 ' comment +OPEN "test.dat" FOR INPUT AS #1 ' comment +LINE INPUT #1, A$ ' comment +CLOSE #1 ' comment +PRINT "A$=";A$ ' comment +GOTO AnotherPlace ' comment +PRINT "ERROR 7" ' comment +STOP ' comment + +AnotherPlace: ' comment +5100 REM STOP ' comment +ON ERROR GOTO HELL ' comment +PRINT "firing..." ' comment +ERROR 51 ' comment +IF I = 17 THEN 6000 ' OK +STOP ' ERROR +Hell: ' comment +PRINT "caught..." +IF ERR <> 51 THEN STOP ' ERROR +LET I = 17:RESUME NEXT ' OK +STOP ' ERROR +6000 ' OK +ERROR 0 ' clear +PRINT "Throw" ' comment +ON ERROR RESUME NEXT ' comment +ERROR 77 ' comment +IF ERR = 77 THEN ' comment + PRINT "Caught" ' comment + ERROR 0 ' clear +ELSE ' comment + PRINT "Missed" ' comment + STOP ' comment +END IF ' comment + +REM HELP ' COMMENT +help help ' comment +erase x ' comment +dim x(23) ' comment +DEF FNA(X4)=X4+X(22) ' comment +LET X(22) = 2 ' comment +PRINT "FNA=";FNA(7) ' comment +CSAVE* X ' comment +erase x ' comment +dim X(23) ' comment +CLOAD* X ' comment +PRINT "X(22)=";X(22) ' comment + +A$ = "abcdefghijklmnop" ' comment +B$ = "123456789" ' comment +MID$( A$, 5, 2 ) = B$ ' comment +PRINT "A$=";A$ ' comment + +A$ = "abcdefghijklmnop" ' comment +B$ = "123456789" ' comment +MID$( A$, 5 ) = B$ ' comment +PRINT "A$=";A$ ' comment + +REM VARS ' COMMENT +MAINTAINER STACK ' comment +print "Ok" ' comment +9000 end ' comment diff --git a/NBS2/E069.dif b/NBS2/E069.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E069.run b/NBS2/E069.run new file mode 100644 index 0000000..c742dbb --- /dev/null +++ b/NBS2/E069.run @@ -0,0 +1,53 @@ + 1 +a b c + 1 1 1 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +I= 1 +I= 2 +Correct +I= 1 +Good 1 +Good 1 +I= 2 +Good 2 +Good 2 +I= 3 +Good 3 +Good 3 +good 4 +[d ] +[ e] +[d e] +[1234567890] +Before SUB definition +After SUB definition +X1 <= Y1 1 <= 2 +X1 > Y1 2 > 1 +X2 < Y2 1 < 2 +X2 >= Y2 5 >= 1 +X2 >= Y2 10 >= 3 +Z= 7 +A$=1234567890 +B$=1234567890 +A$="1234567890 " +firing... +caught... +Throw +Caught +------------------------------------------------------------ + SYNTAX: HELP name +DESCRIPTION: Provides help on the specified 'name' which is a command name or fu +nction name. +FNA= 9 +X(22)= 2 +A$=abcd12ghijklmnop +A$=abcd123456789 +6033: +Ok diff --git a/NBS2/E069.txt b/NBS2/E069.txt new file mode 100644 index 0000000..c42c617 --- /dev/null +++ b/NBS2/E069.txt @@ -0,0 +1,131 @@ +BWBASIC COMMANDS AVAILABLE: +-? +-CALL +-CASE +-CASE ELSE +-CASE IF +-CASE IS +CHAIN +-CHANGE +-CLEAR +CLOAD +-CLOAD* +-CMDS +-COMMON +CONT +CSAVE +-CSAVE* +-DATA +-DEF +-DEF SUB +-DEFDBL +-DEFINT +-DEFSNG +-DEFSTR +DELETE +-DIM +-DO +-DO UNTIL +-DO WHILE +EDIT +-ELSE +-ELSEIF +-END +-END FUNCTION +-END IF +-END SELECT +-END SUB +-ERASE +-EXIT +-EXIT DO +-EXIT FOR +-EXIT FUNCTION +-EXIT SUB +-EXIT UNTIL +-EXIT WHILE +-FIELD +-FNCS +-FOR +-FUNCTION +-GO +-GOSUB +-GOTO +-HELP +-IF +-IF THEN +-INPUT +-LET +-LINE +LIST +LOAD +-LOOP +-LOOP UNTIL +-LOOP WHILE +-LPRINT +-LSET +-MAINTAINER +MERGE +-MID$ +NAME +NEW +-NEXT +-ON +ON ERROR +ON TIMER +-OPEN +OPTION +OPTION ANGLE DEGREES +OPTION ANGLE RADIANS +OPTION ARITHMETIC DECIMAL +OPTION ARITHMETIC FIXED +OPTION ARITHMETIC NATIVE +OPTION BASE 0 +OPTION BASE 1 +OPTION BUGS OFF +OPTION BUGS ON +OPTION COMMENT +OPTION COMPARE BINARY +OPTION COMPARE TEXT +OPTION COVERAGE OFF +OPTION COVERAGE ON +OPTION DISABLE COMMAND +OPTION DISABLE FUNCTION +OPTION DISABLE OPERATOR +OPTION ENABLE COMMAND +OPTION ENABLE FUNCTION +OPTION ENABLE OPERATOR +OPTION INDENT +OPTION STATEMENT +OPTION STRICT OFF +OPTION STRICT ON +OPTION TERMINAL ADM-3A +OPTION TERMINAL ANSI +OPTION TERMINAL NONE +OPTION TRACE OFF +OPTION TRACE ON +OPTION VERSION +-PRINT +QUIT +-READ +-REM +RENUM +-RESTORE +RESUME +-RETURN +-RSET +RUN +SAVE +-SELECT +-SELECT CASE +-STOP +-SUB +-SWAP +SYSTEM +TIMER +-UEND +-UNTIL +-USER LBL +-VARS +-WEND +-WHILE +-WRITE diff --git a/NBS2/E070.80 b/NBS2/E070.80 new file mode 100644 index 0000000..089b453 --- /dev/null +++ b/NBS2/E070.80 @@ -0,0 +1,13 @@ +----------------------------------- +A +B +ERR= 1 +C +D +----------------------------------- +A +B +ERR= 2 +C +D +----------------------------------- diff --git a/NBS2/E070.OUT b/NBS2/E070.OUT new file mode 100644 index 0000000..03f82e1 --- /dev/null +++ b/NBS2/E070.OUT @@ -0,0 +1,13 @@ +----------------------------------- +A +B +ERR= 1 +C +D +----------------------------------- +A +B +ERR= 2 +C +D +----------------------------------- diff --git a/NBS2/E070.bas b/NBS2/E070.bas new file mode 100644 index 0000000..9d0a765 --- /dev/null +++ b/NBS2/E070.bas @@ -0,0 +1,50 @@ +100 REM Purpose: Verify ON ERROR GOTO & ON ERROR GOSUB +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2015-05-08 +130 REM +140 goto 200 +DIM a!(20),b@(20),c#(20),d$(20),e%(20),f&(20) +vars +print "-----------------------------------" +let a!(0) = 1 +let b@(0) = 1 +let c#(0) = 1 +let d$(0) = "1" +let e%(0) = 1 +let f&(0) = 1 +vars +print "-----------------------------------" +let a!(b@(c#(e%(f&(0))))) = 2 +vars +200 print "-----------------------------------" +REM test ON ERROR GOTO +OPTION ERROR GOTO +error 0 +on error goto Hell +print "A" +print "B":ERROR 1:print "C" +print "D" +goto NextItem +stop +Hell: +print "ERR=";ERR +resume next +STOP +NextItem: +300 print "-----------------------------------" +rem test on ERROR GOSUB +error 0 +OPTION ERROR GOSUB +on error gosub Handler +print "A" +print "B":ERROR 2:print "C" +print "D" +goto LastItem +stop +Handler: +print "ERR=";ERR +return +STOP +LastItem: +400 print "-----------------------------------" +rem EOF diff --git a/NBS2/E070.dif b/NBS2/E070.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E070.run b/NBS2/E070.run new file mode 100644 index 0000000..089b453 --- /dev/null +++ b/NBS2/E070.run @@ -0,0 +1,13 @@ +----------------------------------- +A +B +ERR= 1 +C +D +----------------------------------- +A +B +ERR= 2 +C +D +----------------------------------- diff --git a/NBS2/E071.80 b/NBS2/E071.80 new file mode 100644 index 0000000..602b4f3 --- /dev/null +++ b/NBS2/E071.80 @@ -0,0 +1,12 @@ +positive test of <= +passed +positive test of =< +passed +positive test of >= +passed +positive test of => +passed +positive test of <> +passed +positive test of >< +passed diff --git a/NBS2/E071.OUT b/NBS2/E071.OUT new file mode 100644 index 0000000..e275a1f --- /dev/null +++ b/NBS2/E071.OUT @@ -0,0 +1,12 @@ +positive test of <= +passed +positive test of =< +passed +positive test of >= +passed +positive test of => +passed +positive test of <> +passed +positive test of >< +passed diff --git a/NBS2/E071.bas b/NBS2/E071.bas new file mode 100644 index 0000000..31a0fa5 --- /dev/null +++ b/NBS2/E071.bas @@ -0,0 +1,56 @@ +100 REM Purpose: Verify =>, =<, and >< +110 REM Author: Howard Wulf, AF5NE +120 REM Date: 2015-05-09 +130 REM Note: These are non-standard comparison operators +140 REM +150 REM ---------------------------------------------------------- + +1100 print "positive test of <=" +1110 let A = 1 +1120 let B = 2 +1130 if A <= B then 1160 +1140 print "failed" +1150 stop +1160 print "passed" + +2100 print "positive test of =<" +2110 let A = 1 +2120 let B = 2 +2130 if A =< B then 2160 +2140 print "failed" +2150 stop +2160 print "passed" + +3100 print "positive test of >=" +3110 let A = 2 +3120 let B = 1 +3130 if A >= B then 3160 +3140 print "failed" +3150 stop +3160 print "passed" + +4100 print "positive test of =>" +4110 let A = 2 +4120 let B = 1 +4130 if A => B then 4160 +4140 print "failed" +4150 stop +4160 print "passed" + +5100 print "positive test of <>" +5110 let A = 2 +5120 let B = 1 +5130 if A <> B then 5160 +5140 print "failed" +5150 stop +5160 print "passed" + +6100 print "positive test of ><" +6110 let A = 2 +6120 let B = 1 +6130 if A >< B then 6160 +6140 print "failed" +6150 stop +6160 print "passed" + +9999 END diff --git a/NBS2/E071.dif b/NBS2/E071.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/E071.run b/NBS2/E071.run new file mode 100644 index 0000000..602b4f3 --- /dev/null +++ b/NBS2/E071.run @@ -0,0 +1,12 @@ +positive test of <= +passed +positive test of =< +passed +positive test of >= +passed +positive test of => +passed +positive test of <> +passed +positive test of >< +passed diff --git a/NBS2/ECMA-55.TXT b/NBS2/ECMA-55.TXT new file mode 100644 index 0000000..e193648 --- /dev/null +++ b/NBS2/ECMA-55.TXT @@ -0,0 +1,2213 @@ + + + + + + ECMA + + EUROPEAN COMPUTER MANUFACTURERS ASSOCIATION + ___________________________________________ + + + + + + + + STANDARD ECMA-55 + + + Minimal BASIC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + January 1978 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +--------------------------------------------------------+ + | | + | Free copies of this ECMA standard are available from | + | ECMA European Computer Manufacturers Association | + | 114 Rue du Rhône - 1204 Geneva (Switzerland) | + | | + +--------------------------------------------------------+ + + + + + + + + ECMA + + EUROPEAN COMPUTER MANUFACTURERS ASSOCIATION + ___________________________________________ + + + + + + + + STANDARD ECMA-55 + + + Minimal BASIC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + January 1978 + +BRIEF HISTORY +_____________ + +The first version of the language BASIC, acronym for _Beginner's +_All-purpose _Symbolic _Instruction _Code, was produced in 1964 at +the Dartmouth College in the USA. This version of the language +was oriented towards interactive use. Subsequently, a number of +implementations of the language were prepared, that differed in +part from the original one. + +In 1974, the ECMA General Assembly recognized the need for a +standardized version of the language, and in September 1974 the +first meeting of the ECMA Committee TC 21, BASIC, took place. +In January 1974, a corresponding committee, X3J2, had been found- +ed in the USA. + +Through a strict co-operation it was possible to maintain full +compatibility between the ANSI and ECMA draft standards. The ANSI +one was distributed for public comments in January 1976, and a +number of comments were presented by ECMA. + +A final version of the ECMA Standard was prepared at the meeting +of June 1977 and adopted by the General Assembly of ECMA on +Dec. 14, 1977 as Standard ECMA-55. + + _T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S + _P_a_g_e + +1. SCOPE 1 + +2. REFERENCES 1 + +3. DEFINITIONS 1 + + 3.1 BASIC 1 + 3.2 Batch Mode 1 + 3.3 End-of-Line 2 + 3.4 Error 2 + 3.5 Exception 2 + 3.6 Identifier 2 + 3.7 Interactive Mode 2 + 3.8 Keyword 2 + 3.9 Line 2 + 3.10 Nesting 2 + 3.11 Print Zone 3 + 3.12 Rounding 3 + 3.13 Significant Digits 3 + 3.14 Truncation 3 + +4. CHARACTERS AND STRINGS 3 + +5. PROGRAMS 5 + +6. CONSTANTS 6 + +7. VARIABLES 8 + +8. EXPRESSIONS 9 + +9. IMPLEMENTATION SUPPLIED FUNCTIONS 11 + +10. USER DEFINED FUNCTIONS 13 + +11. LET STATEMENT 14 + +12. CONTROL STATEMENTS 15 + +13. FOR AND NEXT STATEMENTS 17 + +14. PRINT STATEMENT 19 + +15. INPUT STATEMENT 21 + +16. READ AND RESTORE STATEMENTS 23 + +17. DATA STATEMENT 24 + +18. ARRAY DECLARATIONS 25 + +19. REMARK STATEMENT 26 + +20. RANDOMIZE STATEMENT 26 + +TABLE 1 - BASIC Character Set 28 + +TABLE 2 - BASIC Code 29 + +APPENDIX 1 - Organization of the Standard 30 + +APPENDIX 2 - Method of Syntax Specification 32 + +APPENDIX 3 - Conformance 34 + +APPENDIX 4 - Implementation-defined Features 35 + + - 1 - + +1. _S_C_O_P_E + This Standard ECMA-55 is designed to promote the interchangeabi- + lity of BASIC programs among a variety of automatic data process- + ing systems. Subsequent Standards for the same purpose will de- + scribe extensions and enhancements to this Standards. Programs + conforming to this Standard, as opposed to extensions or enhance- + ments of this Standard, will be said to be written in "Minimal + BASIC". + + This Standard establishes: + + - the syntax of a program written in Minimal BASIC. + + - The formats of data and the precision and range of numeric re- + presentations which are acceptable as input to an automatic + data processing system being controlled by a program written + in Minimal BASIC. + + - The semantic rules for interpreting the meaning of a program + written in Minimal BASIC. + + - The errors and exceptional circumstances which shall be detect- + ed and also the manner in which such errors and exceptional cir- + cumstance shall be handled. + + Although the BASIC language was originally designed primarily for + interactive use, this Standard describes a language that is not + so restricted. + + The organization of the Standard is outlined in Appendix 1. The + method of syntax specification used is explained in Appendix 2. + +2. _R_E_F_E_R_E_N_C_E_S + + ECMA-6 : 7-Bit Input/Output Coded Character Set, 4th Edition + + ECMA-53 : Representation of Source Programs + +3. _D_E_F_I_N_I_T_I_O_N_S + + For the purposes of this Standard, the following terms have the + meanings indicated. + + 3.1 _B_A_S_I_C + + A term applied as a name to members of a special class of lan- + guages which possess similar syntaxes and semantic meanings; + acronym for Beginner's All-purpose Symbolic Instruction Code. + + 3.2 _B_a_t_c_h_-_m_o_d_e + + The processing of programs in an environment where no provision + is made for user interaction. + + - 2 - + +3.3 _E_n_d_-_o_f_-_l_i_n_e + + The character(s) or indicator which identifies the termination + of a line. Lines of three kinds may be identified in Minimal + BASIC: program lines, print lines and input reply lines. + End-of-line may vary between the three cases and may also vary + depending upon context. Thus, for example, an end of input + line may vary on a given system depending on the terminal being + used in interactive or batch mode. + + Typical examples of end-of-line are carriage-return, carriage- + return line-feed, and end of record (such as end of card). + +3.4 _E_r_r_o_r + + A flaw in the syntax of a program which causes the program to + be incorrect. + +3.5 _E_x_c_e_p_t_i_o_n + + A circumstance arising in the course of executing a program + which results from faulty data or computations or from exceed- + ing some resource constraint. Where indicated certain excep- + tions (non-fatal exceptions) may be handled by the specified + procedures; if no procedure is given (fatal exceptions) or if + restrictions imposed by the hardware or operating environment + make it impossible to follow the given procedure, then the ex- + ception shall be handled by terminating the program. + +3.6 _I_d_e_n_t_i_f_i_e_r + + A character string used to name a variable or a function. + +3.7 _I_n_t_e_r_a_c_t_i_v_e_ _m_o_d_e + + The processing of programs in an environment which permits the + user to respond directly to the actions of individual programs + and to control the commencement and termination of those pro- + grams. + +3.8 _K_e_y_w_o_r_d + + A character string, usually with the spelling of a commonly + used or mnemonic word, which provides a distinctive identifi- + cation of a statement or a component of a statement of a pro- + gramming language. + + The keywords in Minimal BASIC are: BASE, DATA, DEF, DIM, END, + FOR, GO, GOSUB, GOTO, IF, INPUT, LET, NEXT, ON, OPTION, PRINT, + RANDOMIZE, READ, REM, RESTORE, RETURN, STEP, STOP, SUB, THEN + and TO. + +3.9 _L_i_n_e + + A single transmission of characters which terminates with an + end-of-line. + +3.10 _N_e_s_t_i_n_g + + A set of statements is nested within another set of statements + when: + + - 3 - + + - the nested set is physically contiguous, and + - the nesting set (divided by the nested set) is non-null. + + 3.11 _P_r_i_n_t_ _z_o_n_e + + A contiguous set of character positions in a printed output + line which may contain an evaluated print statement element. + + 3.12 _R_o_u_n_d_i_n_g + + The process by which the representation of a value with lower + precision is generated from a representation of higher preci- + sion taking into account the value of that portion of the ori- + ginal number which is to be omitted. + + 3.13 _S_i_g_n_i_f_i_c_a_n_t_ _d_i_g_it_s + + The contiguous sequence of digits between the high-order non- + zero digit and the low-order non-zero digit, without regard + for the location of the radix point. Commonly, in a normalized + floating point internal representation, only the significant + digits of a representation are maintained in the significance. + + NOTE: The Standard requires that the ability of a conforming + implementation to accept numeric representations be + measured in terms of significant digits rather than the + actual number of digits (that is including leading or + trailing zeroes) in the representation. + + 3.14 _T_r_u_n_c_a_t_i_o_n + + The process by which the representation of a value with lower + precision is generated from a representation of higher preci- + sion by merely deleting the unwanted low order digits of the + original representation. + +4. _C_H_A_R_A_C_T_E_R_S_ _A_N_D_ _S_T_R_I_N_G_S + + 4.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + The character set for BASIC is contained in the ECMA 7-bit + coded character set. Strings are sequences of characters and + are used in BASIC programs as comments (see 19), as string con- + stants (see 6), or as data (see 15). + + 4.2 _S_y_n_t_a_x + + 1. letter = A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/ + U/V/W/X/Y/Z + 2. digit = 0/1/2/3/4/5/6/7/8/9 + 3. string-character = quotation-mark / quoted-string-character + 4. quoted-string- = exclamation-mark / number-sign / dollar- + character sign / percent-sign / ampersand / + apostrophe / left-parenthesis / right- + parenthesis / asterisk / comma / solidus / + colon / semi-colon / less-than-sign / + equals-sign / greater-than-sign / + question-mark / circumflex-accent / + underline / unquoted-string-character + 5. unquoted-string- = space / plain-string-character + character + + - 4 - + + 6. plain-string- = plus-sign / minus-sign / full-stop / + character digit / letter + 7. remark-string = string-character* + 8. quoted-string = quotation-mark quoted-string-character* + quotation-mark + 9. unquoted-string = plain-string-character / + plain-string-character + unquoted-string-character* + plain-string-character + + 4.3 _E_x_a_m_p_l_e_s + + ANY CHARACTERS AT ALL (?!*!!) CAN BE USED IN A "REMARK". + "SPACES AND COMMAS CAN OCCUR IN QUOTED STRINGS." + COMMAS CANNOT OCCUR IN UNQUOTED STRINGS. + + 4.4 _S_e_m_a_n_t_i_c_s + + The letters shall be the set of upper-case Roman letters con- + tained in the ECMA 7-bit coded character set in positions 4/1 + to 5/10. + + The digits shall be the set of arabic digits contained in the + ECMA 7-bit coded character set in positions 3/0 to 3/9. + + The remaining string-characters shall correspond to the remain- + ing graphic characters in position 2/0 to 2/15, 3/10 to 3/15 + and in positions 5/14, 5/15 of the ECMA 7-bit coded character + set. + + The names of characters are specified in Table 1. + + The coding of characters is specified in Table 2; however, this + coding applies only when programs and/or input/output data are + exchanged by means of coded media. + + 4.5 _E_x_c_e_p_t_i_o_n_s + + None. + + 4.6 _R_e_m_a_r_k_s + + Other characters from the ECMA 7-bit coded character set (in- + cluding control characters) may be accepted by an implementation + and may have a meaning to some other processor (such as an editor) + but have no prescribed meaning within this Standard. Programs + containing characters other than the string-characters described + above are not standard-conforming programs. + + The several kinds of characters and strings described by the + syntax correspond to the various uses of strings in a BASIC + program. Remark-strings may be used in remark-statements (see + 19). Quoted-strings may be used as string-constants (see 6). + Unquoted-strings may be used in addition to quoted-strings as + data elements (see 17) without being enclosed in quotation marks; + unquoted-strings cannot contain leading or trailing spaces. + + - 5 - +5. _P_R_O_G_R_A_M_S + 5.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + BASIC is a line-oriented language. A BASIC program is a sequence + of lines, the last of which shall be an end-line and each of + which contains a keyword. Each line shall contain a unique line- + number which serves as a label for the statement contained in + that line. + + 5.2 _S_y_n_t_a_x + 1. program = block* end-line + 2. block = (line/for-block)* + 3. line = line-number statement end-of-line + 4. line-number = digit digit? digit? digit? + 5. end-of-line = [implementation defined] + 6. end-line = line-number end-statement end-of-line + 7. end-statement = END + 8. statement = data-statement / def-statement / + dimension -statement / gosub-statement / + goto-statement / if-then-statement / + input-statement / let-statement / + on-goto-statement / option-statement / + print-statement / randomize-statement / + read-statement / remark-statement / + restore-statement / return-statement / + stop statement + + 5.3 _E_x_a_m_p_l_e_s + + 999 END + + 5.4 _S_e_m_a_n_t_i_c_s + + A BASIC program shall be composed of a sequence of lines order- + ed by line-numbers, the last of which contains an end-statement. + Program lines shall be executed in sequential order, starting + with the first line, until + + - some other action is dictated by a control statement, or + - an exception condition occurs, which results in a termination + of the program, or + - a stop-statement or end-statement is executed. + + Special conventions shall be observed regarding spaces. With + the following exceptions, spaces may occur anywhere in a BASIC + program without affecting the execution of that program and + may be used to improve the appearance and readability of the + program. + + Spaces shall not appear: + + - at the beginning of a line + - within keywords + - within numeric constants + - within line numbers + - within function or variable names + - within two-character relation symbols + + - 6 - + + All keywords in a program shall be preceded by at least one + space and, if not at the end of a line, shall be followed by + at least one space. + + Each line shall begin with a line-number. The values of the + integers represented by the line-numbers shall be positive + nonzero; leading zeroes shall have no effect. Statements shall + occur in ascending line-number order. + + The manner in which the end of a statement line is detected is + determined by the implementation; e.g. the end-of-line may be + a carriage-return character, a carriage-return character follow- + ed by a line-feed character, or the end of a physical record. + + Lines in a standard-conforming program may contain up to 72 + characters; the end-of-line indicator is not included within + this 72 character limit. + + The end-statement serves both to mark the physical end of the + main body of a program and to terminate the execution of the + program when encountered. + + 5.5 _E_x_c_e_p_t_i_o_n_s + + None. + + 5.6 _R_e_m_a_r_k_s + + Local editing facilities may allow for the entry of statement + lines in any order and also allow for duplicate line-numbers + and lines containing only a line-number. Such editing facili- + ties usually sort the program into the proper order and in the + case of duplicate line-numbers, the last line entered with + that line-number is retained. In many implementations, a line + containing only a line-number (without trailing spaces) is + usually deleted from the program. + + 6. _C_O_N_S_T_A_N_T_S + + 6.1 _G_e_n_e_r_a_l_ _d_e_s_c_r_i_p_t_i_o_n + + Constants can denote both scalar numeric values and string + values. + + A numeric-constant is a decimal representation in positional + notation of a number. There are four general syntactic forms + of (optionally signed) numeric constants: + + - implicit point representation sd...d + - explicit point unscaled representation sd..drd..d + - explicit point scaled representation sd..drd..dEsd..d + - implicit point scaled representation sd..dEsd..d + + where: + + d is a decimal digit, + r is a full-stop + s is an optional sign, and + E is the explicit character E. + + - 7 - + A string-constant is a character string enclosed in quotation + marks (see 4). + + 6.2 _S_y_n_t_a_x + + 1. numeric-constant = sign? numeric-rep + 2. sign = plus-sign / minus-sign + 3. numeric-rep = significand exrad? + 4. significand = integer full-stop? / integer? fraction + 5. integer = digit digit* + 6. fraction = full-stop digit digit* + 7. exrad = E sign? integer + 8. string-constant = quoted-string + + 6.3 _E_x_a_m_p_l_e_s + + 1 500 -21. .255 1E10 + 5E-1 .4E+1 + "XYZ" "X - 3B2" "1E10" + + 6.4 _S_e_m_a_n_t_i_c_s + + The value of a numeric-constant is the number represented by + that constant. "E" stands for "times ten to the power"; if no + sign follows the symbol "E", then a plus sign is understood. + Spaces shall not occur in numeric-constants. + + A program may contain numeric representations which have an + arbitrary number of digits, though implementations may round + the values of such representations to an implementation-defined + precision of not less than six significant decimal digits. Numeric + constants can also have an arbitrary number of digits in the ex- + rad, though nonzero constants whose magnitude is outside an im- + plementation-defined range will be treated as exceptions. The + implementation-defined range shall be at least 1E-38 to 1E+38. + Constants whose magnitudes are less than machine infinitesimal + shall be replaced by zero, while constants whose magnitudes are + larger than machine infinity shall be diagnosed as causing an + overflow. + + A string-constant has as its value the string of all characters + between the quotation marks; spaces shall not be ignored. The + length of a string-constant, i.e. the number of characters con- + tained between the quotation-marks, is limited only by the length + of a line. + + 6.5 _E_x_c_e_p_t_i_o_n_s + + The evaluation of a numeric constant causes an overflow (non- + fatal, the recommended recovery procedure is to supply machine + infinity with the appropriate sign and continue). + + 6.6 _R_e_m_a_r_k_s + + Since this Standard does not require that strings with more + than 18 characters be assignable to string variables (see 7), + conforming programs can use string constants with more than + 18 characters only as elements in a print-list. + + - 8 - + It is recommended that implementations report constants whose + magnitudes are less than machine infinitesimal as underflows + and continue. + + 7. _V_A_R_I_A_B_L_E_S + + 7.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + Variables in BASIC are associated with either numeric or + string values and, in the case of numeric variables, may be + either simple variables or references to elements of one or + two dimensional arrays; such references are called subscript- + ed variables. + + Simple numeric variables shall be named by a letter followed + by an optional digit. + + Subscripted numeric variables shall be named by a letter fol- + lowed by one or two numeric expressions enclosed within pa- + rentheses. + + String variables shall be named by a letter followed by a + dollar sign. + + Explicit declarations of variable types are not required; a + dollar-sign serves to distinguish string from numeric variab- + les, and the presence of a subscript distinguishes a sub- + scripted variable from a simple one. + + 7.2 _S_y_n_t_a_x + + 1. variable = numeric-variable / string-variable + 2. numeric-variable = simple-numeric-variable / + numeric-array-element + 3. simple-numeric- = letter digit? + variable + 4. numeric-array-element = numeric-array-name subscript + 5. numeric-array-name = letter + 6. subscript = left-parenthesis numeric-expression + (comma numeric-expression)? right- + parenthesis + 7. string-variable = letter dollar-sign + + 7.3 _E_x_a_m_p_l_e_s + + X A5 V(3) W(X,X+Y/2) + S$ C$ + + 7.4 _S_e_m_a_n_t_i_c_s + + At any instant in the execution of a program, a numeric- + variable is associated with a single numeric value and a + string-variable is associated with a single string value. + The value associated with a variable may be changed by the + execution of statements in the program. + + - 9 - + + The length of the character string associated with a string- + variable can vary during the execution of a program from a + length of zero characters (signifying the null or empty string) + to 18 characters. + + Simple-numeric-variables and string-variables are declared im- + plicitly through their appearance in a program. + + A subscripted variable refers to the element in the one or two + dimensional array selected by the value(s) of the subscript(s). + The value of each subscript is rounded to the nearest integer. + Unless explicitly declared in a dimension statement, subscript- + ed variables are implicitly declared by their first appearance + in a program. In this case the range of each subscript is from + zero to ten inclusive, unless the presence of an option-state- + ment indicates that the range is from one to ten inclusive. Sub- + script expressions shall have values within the appropriate range + (see 18). + + The same letter shall not be the name of both a simple variable + and an array, nor the name of both a one-dimensional and a two- + dimensional array. + + There is no relationship between a numeric-variable and a string- + variable whose names agree except for the dollar-sign. + + At the initiation of execution the values associated with all + variables shall be implementation-defined. + + 7.5 _E_x_c_e_p_t_i_o_n_s + + A subscript is not in the range of the explicit or implicit + dimensioning bounds (fatal). + + 7.6 _R_e_m_a_r_k_s + + Since initialization of variables is not specified, and hence + may vary from implementation to implementation, programs that + are intended to be transportable should explicitly assign a + value to each variable before any expression involving that + variable is evaluated. + + There are many commonly used alternatives for associating im- + plementation-defined initial values with variables; it is re- + commended that all variables are recognizably undefined in the + sense that an exception will result from any attempt to access + the value of any variable before that variable is explicitly + assigned a value. + + 8. _E_X_P_R_E_S_S_I_O_N_S + + 8.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + Expressions shall be either numeric-expressions or string- + expressions. + + Numeric-expressions may be constructed from variables, constants, + and function references using the operations of addition, sub- + traction, multiplication, division and involution. + + - 10 - + + String-expressions are composed of either a string-variable or + a string-constant. + + 8.2 _S_y_n_t_a_x + + 1. expression = numeric-expression / string-expression + 2. numeric-expression = sign? term (sign term)* + 3. term = factor (multiplier factor)* + 4. factor = primary (circumflex-accent primary)* + 5. multiplier = asterisk / solidus + 6. primary = numeric-variable / numeric-rep / numeric- + function-ref / left-parenthesis numeric- + expression + right-parenthesis + 7. numeric-function- = numeric-function-name + ref argument-list? + 8. numeric-function- = numeric-defined-function / + name numeric-supplied-function + 9. argument-list = left-parenthesis argument + right-parenthesis + 10. argument = string-expression + 11. string-expression = string-variable / string-constant + + 8.3 _E_x_a_m_p_l_e_s + + 3*X - Y^2 A(1)+A(2)+A(3) 2^(-X) + -X/Y SQR(X^2+Y^2) + + 8.4 _S_e_m_a_n_t_i_c_s + + The formation and evaluation of numeric-expressions follows the + normal algebraic rules. The symbols circumflex-accent, asterisk, + solidus, plus-sign and minus-sign represent the operations of + involution, multiplication, division, addition and subtraction, + respectively. Unless parentheses dictate otherwise, involutions + are performed first, then multiplications and divisions, and + finally additions and subtractions. In the absence of parenthe- + ses, operations of the same precedence are associated to the + left. + + A-B-C is interpreted as (A-B)-C, A^B^C as (A^B)^C, A/B/C as + (A/B)/C and -A^B as -(A^B). + + If an underflow occurs in the evaluation of a numeric expression + then the value generated by the operation which resulted in the + underflow shall be replaced by zero. + + 0^0 is defined to be 1, as in ordinary mathematical usage. + + When the order of evaluation of an expression is not constrained + by the use of parentheses, and if the mathematical use of opera- + tors is associative, commutative, or both, then full use of these + properties may be made in order to revise the order of evalua- + tion of the expression. + + In a function reference, the number of arguments supplied shall + be equal to the number of parameters required by the definition + of the function. + + - 11 - + + A function reference is a notation for the invocation of a pre- + defined algorithm, into which the argument value, if any, is + substituted for the parameter (see 9 and 10) which is used in + the function definition. All functions referenced in an express- + ion shall either be implementation-supplied or be defined in a + def-statement. The result of the evaluation of the function, + achieved by the execution of the defining algorithm, is a scalar + numeric value which replaces the function reference in the ex- + pression. + + 8.5 _E_x_c_e_p_t_i_o_n_s + + - Evaluation of an expression results in division by zero + (nonfatal, the recommended recovery procedure is to supply + machine infinity with the sign of the numerator and continue) + + - Evaluation of an expression results in an overflow (nonfatal, + the recommended recovery procedure is to supply machine in- + finity with the algebraically correct sign and continue). + + - Evaluation of the operation of involution results in a nega- + tive number being raised to a non-integral power (fatal). + + - Evaluation of the operation of involution results in a zero be- + ing raised to a negative value (nonfatal, the recommended re- + covery procedure is to supply positive machine infinity and + continue). + + 8.6 _R_e_m_a_r_k_s + + The accuracy with which the evaluation of an expression takes + place will vary from implementation to implementation. While no + minimum accuracy is specified for the evaluation of numeric- + expressions, it is recommended that implementations maintain at + least six significant decimal digits of precision. + + The method of evaluation of the operation of involution may + depend upon whether or not the exponent is an integer. If it + is, then the indicated number of multiplications may be per- + formed; if it is not, then the expression may be evaluated + using the LOG and EXP functions (see 9). + + It is recommended that implementations report underflow as an + exception and continue. + + 9. _I_M_P_L_E_M_E_N_A_T_A_T_I_ON_ _S_U_P_P_L_I_E_D_ _F_U_N_C_T_I_O_N_S + + 9.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + Predefined algorithms are supplied by the implementation for + the evaluation of commonly used numeric functions. + + 9.2 _S_y_n_t_a_x + + 1. numeric-supplied-function = ABS / ATN / COS / EXP / INT / + LOG / RND / SGN / SIN / SQR / TAN + 9.3 _E_x_a_m_p_l_e_s + + None. + + - 12 - + 9.4 _S_e_m_a_n_t_i_c_s + + The values of the implementation-supplied functions, as well as + the number of arguments required for each function, are described + below. In all cases, X stands for a numeric expression. + + _F_u_n_c_t_i_o_n _F_u_n_c_t_i_o_n_ _v_a_l_u_e + + ABS(X) The absolute value of X. + + ATN(X) The arctangent of X in radians, i.e. the angle + whose tangent is X. The range of the function + is + -(pi/2) < ATN(X) < (pi/2) + where pi is the ratio of the circumference of + a circle to its diameter. + + COS(X) The cosine of X, where X is in radians. + + EXP(X) The exponential of X, i.e. the value of the + base of natural logarithms (e = 2,71828...) + raised to the power X; if EXP(X) is less than + machine infinitesimal, then its value shall + be replaced by zero. + + INT(X) The largest integer not greater than X; e.g. + INT(1.3) = 1 and INT(-1.3) = -2. + + LOG(X) The natural logarithm of X; X must be greater + than zero. + + RND The next pseudo-random number in an implemen- + tation-supplied sequence of pseudo-random num- + bers uniformly distributed in the range 0 <= + RND < 1 (see also 20). + + SGN(X) The sign of X: -1 if X < 0, 0 if X = 0 and + +1 if X > 0. + + SIN(X) The sine of X, where X is in radians. + + SQR(X) The nonnegative square root of X; X must be + nonnegative. + + TAN(X) The tangent of X, where X is in radians. + + 9.5 _E_x_c_e_p_t_i_o_n_s + + - The value of the argument of the LOG function is zero or ne- + gative (fatal). + + - The value of the argument of the SQR function is negative + (fatal). + + - The magnitude of the value of the exponential or tangent + function is larger than machine infinity (nonfatal, the re- + commended recovery procedure is to supply machine infinity + with the appropriate sign and continue). + + - 13 - + + 9.6 _R_e_m_a_r_k_s + + The RND function in the absence of a randomize-statement (see + 20) will generate the same sequence of pseudo-random numbers + each time a program is run. This convention is chosen so that + programs employing pseudo-random numbers can be executed se- + veral times with the same result. + + It is recommended that, if the value of the exponential function + is less than machine infinitesimal, implementations report this + as an underflow and continue. + + +10. _U_S_E_R_ _D_E_F_I_N_E_D_ _F_U_N_C_T_I_O_N_S + + 10.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + In addition to the implementation supplied functions provided + for the convenience of the programmer (see 9), BASIC allows + the programmer to define new functions within a program. + + The general form of statements for defining functions is + + DEF FNx = expression + or DEF FNx (parameter) = expression + + where x is a single letter and a parameter is a simple numeric- + variable. + + 10.2 _S_y_n_t_a_x + + 1. def-statement = DEF numeric-defined-function + parameter-list? equals-sign + numeric-expression + 2. numeric-defined- + function = FN letter + 3. parameter-list = left-parenthesis parameter + right-parenthesis + 4. parameter = simple-numeric-variable + + 10.3 _E_x_a_m_p_l_e_s + + DEF FNF(X) = X^4 - 1 DEF FNP = 3.14159 + DEF FNA(X) = A*X + B + + 10.4 _S_e_m_a_n_t_i_c_s + + A function definition specifies the means of evaluation the + function in terms of the value of an expression involving the + parameter appearing in the parameter-list and possibly other + variables or constants. When the function is referenced, i.e. + when an expression involving the function is evaluated, then + the expression in the argument list for the function reference, + if any, is evaluated and its value is assigned to the parameter + in the parameter-list for the function definition (the number + of arguments shall correspond exactly to the number of para- + meters). The expression in the function definition is then eva- + luated, and this value is assigned as the value of the function. + + - 14 - + + The parameter appearing in the parameter-list of a function + definition is local to that definition, i.e. it is distinct + from any variable with the same name outside of the function + definition. Variables which do not appear in the parameter- + list are the variables of the same name outside the function + definition. + + A function definition shall occur in a lower numbered line + than that of the first reference to the function. The expres- + sion in a def-statement is not evaluated unless the defined + function is referenced. + + If the execution of a program reaches a line containing a + def-statement, then it shall proceed to the next line with no + other effect. + + A function definition may refer to other defined functions, + but not to the function being defined. A function shall be de- + fined at most once in a program. + + 10.5 _E_x_c_e_p_t_i_o_n_s + + None. + +11. _L_E_T_ _S_T_A_T_E_M_E_N_T + + 11.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + A let-statement provides for the assignment of the value of + an expression to a variable. The general syntactic form of + the let-statement shall be + + LET variable = expression + + 11.2 _S_y_n_t_a_x + + 1. let-statement = numeric-let-statement / + string-let-statement + 2. numeric-let-statement = LET numeric-variable equals-sign + numeric-expression + 3. string-let-statement = LET string-variable equals-sign + string-expression + + 11.3 _E_x_a_m_p_l_e_s + + LET P = 3.14159 + LET A(X,3) = SIN(X)*Y + 1 + + LET A$ = "ABC" + LET A$ = B$ + + 11.4 _S_e_m_a_n_t_i_c_s + + The expression is evaluated (see 8) and its value is assigned + to the variable to the left of the equals sign. + + 11.5 _E_x_c_e_p_t_i_o_n_s + + A string datum contains too many characters (fatal). + + - 15 - + +12. _C_O_N_T_R_O_L_ _S_T_A_T_E_M_E_N_T_S + + 12.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + Control statements allow for the interruption of the normal + sequence of execution of statements by causing execution to + continue at a specified line, rather than at the one with the + next higher line number. + + The goto-statement + + GO TO line-number + + allows for an unconditional transfer. + + The if-then-statement + + IF exp1 rel exp2 THEN line-number + + where "exp1" and "exp2" are expressions and "rel" is a relation- + al operator, allows for a conditional transfer. + + The gosub and return statements + + GO SUB line-number + RETURN + + allow for subroutine calls. + + The on-goto-statement + + ON expression GO TO line-number, ..., line-number + + allows control to be transferred to a selected line. + + The stop-statement + + STOP + + allows for program termination. + + 12.2 _S_y_n_t_a_x + + 1. goto-statement = GO space* TO line-number + 2. if-then-statement = IF relational-expression THEN + line-number + 3. relational-expression = numeric-expression relation + numeric-expression / string- + expression equality-relation + string-expression + 4. relation = equality-relation / less-than- + sign / greater-than-sign / not- + less / not-greater + 5. equality-relation = equals-sign / not-equals + 6. not-less = greater-than-sign equals-sign + 7. not-greater = less-than-sign equals-sign + 8. not-equals = less-than-sign greater-than-sign + 9. gosub-statement = GO space* SUB line-number + 10. return-statement = RETURN + 11. on-goto-statement = ON numeric-expression GO space* + TO line-number (comma line-number)* + + - 16 - + + 12. stop-statement = STOP + + 12.3 _E_x_a_m_p_l_e_s + + GO TO 999 IF X > Y+83 then 200 + IF A$ <> B$ THEN 550 ON L+1 GO TO 300,400,500 + + 12.4 _S_e_m_a_n_t_i_c_s + + A goto-statement indicates that execution of the program is to + be continued at the specified line-number. + + If the value of the relational-expression in an if-then-state- + ment is true, then execution of the program shall continue from + the specified line-number; if the value of the relational-ex- + pression is false, then execution shall be continued in sequence, + i.e. with the statement on the line following that containing + the if-then-statement. + + The relation "less than or equal to" shall be denoted by <=. + Similarly, "greater than or equal to" shall be denoted by >=, + while "not equal to" shall be denoted by <>. + + The relation of equality holds between two strings if and only + if the two strings have the same length and contain identical + sequences of characters. + + The execution of the gosub-statement and the return-statement + can be described in terms of a stack of line-numbers (but may + be implemented in some other fashion). Prior to execution of + the first gosub-statement by the program, this stack is empty. + Each time a gosub-statement is executed, the line-number of + the gosub-statement is placed on top of the stack and execution + of the program is continued at the line specified in the gosub- + statement. Each time a return-statement is executed, the line- + number on top of the stack is removed from the stack and exe- + cution of the program is continued at the line following the + one with that line-number. + + It is not necessary that equal numbers of gosub-statements and + return-statements be executed before termination of the program. + + The expression in an on-goto-statement shall be evaluated and + rounded to obtain an integer, whose value is then used to select + a line-number from the list following the GOTO (the line-numbers + in the list are indexed from left to right, starting with 1). + Execution of the program shall continue at the statement with + the selected line-number. + + All line-numbers in control-statements shall refer to lines in + the program. + + The stop-statement causes termination of the program. + + 12.5 _E_x_c_e_p_t_i_o_n_s + + - An attempt is made to execute a return-statement without + having executed a corresponding gosub-statement (fatal). + + - 17 - + + - The integer obtained as the value of an expression in an + on-goto-statement is less than one or greater than the + number of line-numbers in the list (fatal). + +13. _F_O_R_ _A_N_D_ _N_E_X_T_ _S_T_A_T_E_M_E_N_T_S + + 13.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + The for-statement and next-statement provide for the contruct- + ion of loops. The general syntactic form of the for-statement + and next-statement is + + FOR v = initial-value TO limit STEP increment + NEXT v + + where "v" is a simple numeric variable and the "initial-value", + "limit" and "increment" are numeric expressions; the clause + "STEP increment" is optional. + + 13.2 _S_y_n_t_a_x + + 1. for-block = for-line for-body + 2. for-body = block next-line + 3. for-line = line-number for-statement end-of- + line + 4. next-line = line-number next-statement end- + of-line + 5. for-statement = FOR control-variable equals-sign + initial-value TO limit (STEP + increment)? + 6. control-variable = simple-numeric-variable + 7. initial-value = numeric-expression + 8. limit = numeric-expression + 9. increment = numeric-expression + 10. next-statement = NEXT control-variable + + 13.3 _E_x_a_m_p_l_e_s + + FOR I = 1 TO 10 FOR I = A TO B STEP -1 + NEXT I NEXT I + + 13.4 _S_e_m_a_n_t_i_c_s + + The for-statement and the next-statement are defined in con- + junction with each other. The physical sequence of statements + beginning with a for-statement and continuing up to and in- + cluding the first next-statement with the same control variable + is termed a "for-block". For-blocks can be physically nested, + i.e. one can contain another, but they shall not be interleaved, + i.e. a for-block which contains a for-statement or a next- + statement shall contain the entire for-block begun or ended by + that statement. + + Furthermore, physically nested for-blocks shall not use the + same control variable. + + - 18 - + + In the absence of a STEP clause in a for-statement, the incre- + ment is assumed to be +1. + + The action of the for-statement and the next-statement is de- + fined in terms of other statements, as follows: + + FOR v = initial-value TO limit STEP increment + (block) + NEXT v + + is equivalent to: + + LET own1 = limit + LET own2 = increment + LET v = initial-value + line1 IF (v-own1) * SGN (own2) > 0 THEN line2 + (block) + LET v = v + own2 + GOTO line1 + line2 REM continued in sequence + + Here v is any simple-numeric-variable, own1 and own2 are va- + riables associated with the particular for-block and not ac- + cessible to the programmer, and line1 and line2 are line-numbers + associated with the particular for-block and not accessible to + the programmer. The variables own1 and own2 are distinct from + similar variables associated with other for-blocks. A program + shall not transfer control into a for-body by any statement + other than a return statement (see 12). + + 13.5 _E_x_c_e_p_t_i_o_n_s + + None. + + 13.6 _R_e_m_a_r_k_s + + Where arithmetic is approximate (as with decimal fractions in a + binary machine), the loop will be executed within the limits of + machine arithmetic. No presumptions about approximate achieve- + ment of the end test are made. It is noted that in most ordinary + situations where machine arithmetic is truncated (rather than + rounded), such constructions as + + FOR X = 0 TO 1 STEP 0.1 + + will work as the user expects, even though 0.1 is not represent- + able exactly in a binary machine. If this is indeed the case, + then the construction + + FOR X = 1 TO 0 STEP -0.1 + + will probably not work as expected. + + As specified above, the value of the control-variable upon + exit from a for-block via its next-statement is the first va- + lue not used; if exit is via a control-statement, the control- + variable retains the value it has when the control-statement + is executed. + + The variables "own1" and "own2" associated with a for-block are + assigned values only upon entry to the for-block through its + for-statement. + + - 19 - + +14. _P_R_I_N_T_ _S_T_A_T_E_M_E_N_T + + 14.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + The print-statement is designed for generation of tabular out- + put in a consistent format. + + The general syntactic form of the print-statement is + + PRINT item p item p ... p item + + where each item is an expression, a tab-call, or null, and + each punctuation mark p is either a comma or a semi-colon. + + 14.2 _S_y_n_t_a_x + + 1. print-statement = PRINT print-list? + 2. print-list = (print-item? print-separator)* + print_item? + 3. print-item = expression / tab-call + 4. tab-call = TAB left-parenthesis numeric-expres- + sion right-parenthesis + 5. print-separator = comma / semicolon + + 14.3 _E_x_a_m_p_l_e_s + + PRINT X PRINT "X EQUALS", 10 + PRINT X; (X+Z)/2 PRINT X, Y + PRINT PRINT ,,,X + PRINT TAB(10); A$; "IS DONE." + + 14.4 _S_e_m_a_n_t_i_c_s + + The execution of a print-statement generates a string of char- + acters for transmission to an external device. This string of + characters is determined by the successive evaluation of each + print-item and print-separator in the print-list. + + Numeric-expressions shall be evaluated to produce a string of + characters consisting of a leading space if the number is po- + sitive or a leading minus-sign if the number is negative fol- + lowed by the decimal representation of the absolute value of + the number and a trailing space. The possible formats for the + decimal representation of a number are the same as those des- + cribed for numeric-constants in 6 and are used as follows. + + Each implementation shall define two quantities, a significance- + width d to control the number of significant decimal digits + printed in numeric representations, and an exrad-width e to con- + trol the number of digits printed in the exrad component of a + numeric representation. The value of d shall be at least six + and the value of e shall be at least two. + + Each number that can be represented exactly as an integer with + d or fewer decimal digits is output using the implicit point + unscaled representation. + + All other numbers shall be output using either explicit point + unscaled notation or explicit point scaled notation. Numbers + which can be represented with d or fewer digits in the unscaled + format no less accurately than they can be represented in the + scaled format shall be output using the unscaled format. For + example, if d = 6, then 10^(-6) is output as .000001 and + + - 20 - + + 10^(-7) is output as 1.E-7. + + Numbers represented in the explicit point unscaled notation shall + be output with up to d significant decimal digits and a full- + stop; trailing zeroes in the fractional part may be omitted. + A number with magnitude less than 1 shall be represented with + no digits to the left of the full-stop. This form requires up + to d+3 characters counting the sign, the full-stop and the + trailing space. + + Numbers represented in the explicit point scaled notation shall + be output in the format + + significand E sign integer + + where the value x of the significand is in the range 1 <= x < 10 + and is to be represented with exactly d digits of precision, and + where the exrad component has one to e digits. Trailing zeroes + may be omitted in the fractional part of the significand and + leading zeroes may be omitted from the exrad. This form re- + quires up to d+e+5 characters counting the two signs, the full- + stop, the "E" and a trailing space. + + String-expressions shall be evaluated to generate a string of + characters. + + The evaluation of the semicolon separator shall generate the + null string, i.e. a string of zero length. + + The evaluation of a tab-call or a comma separator depends upon + the string of characters already generated by the current or + previous print-statements. The "current line" is the (possibly + empty) string of characters generated since the last end-of- + line was generated. The "margin" is the number of characters, + excluding the end-of-line character, that can be output on one + line and is defined by the implementation. The "columnar posi- + tion" of the current line is the print position that will be + occupied by the next character output to that line; print posi- + tions are numbered consecutively from the left, starting with + position one. + + Each print-line is divided into a fixed number of print zones, + where the number of zones and the length of each zone is im- + plementation defined. All print zones, except possibly the last + one on a line, shall have the same length. This length shall + be at least d+e+6 characters in order to accommodate the print- + ing of numbers in explicit point scaled notation as des- + cribed above and to allow the comma separator to move the print- + ing mechanism to the next zone as described below. + + The purpose of the tab-call is to set the columnar position of + the current line to the specified value prior to printing the + next print-item. More precisely, the argument of the tab-call + is evaluated and rounded to the nearing integer n. IF n is less + than one, an exception occurs. If n is greater than the margin + m, then n is reduced by an integral multiple of m so that it + is in the range 1 <= n <= m; i.e. n is set equal to + + - 21 - + + n - m * INT ((n-1)/m). + + If the columnar position of the current line is less than or + equal to n, then spaces are generated, if necessary, to set the + columnar position to n; if the columnar position of the current + line is greater than n, then an end-of-line is generated follow- + ed by enough spaces to set the columnar position of the new cur- + rent line to n. + + The evaluation of the comma-separator generates one or more + spaces to set the columnar position to the beginning of the + next print zone, unless the current print zone is the last on + the line, in which case an end-of-line is generated. + + If the print list does not end in a print-separator, then an + end-of-line is generated and added to the characters generated + by the evaluation of the print-list. + + If the evaluation of any print-item in a print-list would cause + the length of a nonempty line to exceed the margin, then an + end-of-line is generated prior to the characters generated by + that print-item. Subsequently, if the evaluation of a print- + item generates a string whose length is greater than the mar- + gin, then end-of-lines are inserted after every m characters + in the string, where m is the margin value. + + 14.5 _E_x_c_e_p_t_i_o_n_s + + The evaluation of a tab-call argument generates a value less + then one (nonfatal; the recommended recovery procedure is to + supply one and continue). + + 14.6 _R_e_m_a_r_k_s + + The comma-separator allows the programmer to tabulate the print- + ing mechanism to fixed tab settings at the end of each print + zone. + + A completely empty print-list will generate an end-of-line, + thereby completing the current line of output. If this line + contained no characters, then a blank line results. + + A print line on a typical terminal might be divided into five + print zones of fifteen print positions each. + +15. _I_N_P_U_T_ _S_T_A_T_E_M_E_N_T + + 15.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + Input-statements provide for user interaction with a running + program by allowing variables to be assigned values that are + supplied by a user. The input-statement enables the entry of + mixed string and numeric data, with data items being separat- + ed by commas. The general syntactic form of the input-state- + ment is + + INPUT variable, ..., variable + + - 22 - + + 15.2 _S_y_n_t_a_x + + 1. input-statement = INPUT variable-list + 2. variable-list = variable (comma variable)* + 3. input-prompt = [implementation defined] + 4. input-reply = input-list end-of-line + 5. input-list = padded-datum (comma padded-datum)* + 6. padded-datum = space* datum space* + 7. datum = quoted-string / unquoted-string + + 15.3 _E_x_a_m_p_l_e_s + + INPUT X INPUT X, A$, Y(2) INPUT A, B, C + 3.14159 2,SMITH,-3 25,0,-15 + + 15.4 _S_e_m_a_n_t_i_c_s + + An input-statement causes the variables in the variable-list + to be assigned, in order, values from the input-reply. In the + interactive mode, the user of the program is informed of the + need to supply data by the output of an input-prompt. In batch + mode, the input-reply is requested from the external source + by an implementation-defined means. Execution of the program + is suspended until a valid input-reply has been supplied. + + The type of each datum in the input-reply shall correspond to + the type of the variable to which it is to be assigned; i.e., + numeric-constants shall be supplied as input for numeric- + variables, and either quoted-strings or unquoted-strings shall + be supplied as input for string-variables. If the response to + input for a string-variable is an unquoted-string, leading + and trailing spaces shall be ignored (see 4). + + If the evaluation of a numeric datum causes an underflow, then + its value shall be replaced by zero. + + Subscript expressions in the variable-list are evaluated after + value have been assigned to the variables preceding them + (i.e. to the left of them) in the variable-list. + + No assignment of values in the input-reply shall take place un- + til the input-reply has been validated with respect to the type + of each datum, the number of input items, and the allowable + range for each datum. + + 15.5 _E_x_c_e_p_t_i_o_n_s + + - The type of datum does not match the type of the variable to + which it is to be assigned (nonfatal, the recommended recov- + ery procedure is to request that the input-reply be re-sup- + plied). + + - There is insufficient data in the input-list (nonfatal, the + recommended recovery procedure is to request that the input- + reply be resupplied). + + - There is too much data in the input-list (nonfatal, the re- + commended recovery procedure is to request that the input- + reply be resupplied). + + - 23 - + + - The evaluation of a numeric datum causes an overflow (non- + fatal, the recommended recovery procedure is to request that + the input-reply be resupplied). + + - A string datum contains too many characters (nonfatal, the + recommended recovery procedure is to request that the input- + reply be resupplied). + + 15.6 _R_e_m_a_r_k_s + + This Standard does not require an implementation to perform + any editing of the input-reply, though such editing may be per- + formed by the operating environment. + + It is recommended that the input-prompt consists of a question- + mark followed by a single space. + + This Standard does not require an implementation to output the + input-reply. + + It is recommended that implementations report an underflow as + an exception and allow the input-reply to be resupplied. + +16. _R_E_A_D_ _A_N_D_ _R_E_S_T_O_R_E_ _S_T_A_T_E_M_E_N_T_S + + 16.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + The read-statement provides for the assignment of values to + variables from a sequence of data created from data-statements + (see 17). The restore-statement allows the data in the program + to be reread. The general syntactic forms of the read and re- + store statements are + + READ variable, ..., variable + RESTORE + + 16.2 _S_y_n_t_a_x + + 1. read-statement = READ variable-list + 2. restore-statement = RESTORE + + 16.3 _E_x_a_m_p_l_e_s + + READ X, Y, Z READ X(1), A$, C + + 16.4 _S_e_m_a_n_t_i_c_s + + The read-statement causes variables in the variable-list to be + assigned values, in order, from the sequence of data (see 17). + A conceptual pointer is associated with the data sequence. At + the initiation of execution of a program, this pointer points + to the first datum in the data sequence. Each time a read-state- + ment is executed, each variable in the variable-list in se- + quence is assigned the value of the datum indicated by the point- + er and the pointer is advanced to point beyond that datum. + + The restore-statement resets the pointer for the data sequence + to the beginning of the sequence, so that the next read-state- + ment executed will read data from the beginning of the sequence + once again. + + - 24 - + The type of a datum in the data sequence shall correspond to + the type of the variable to which it is to be assigned; i.e., + numeric-variables require unquoted-strings which are numeric- + constants as data and string-variables require quoted-strings + or unquoted-strings as data. An unquoted-string which is a + valid numeric representation may be assigned to either a string- + variable or a numeric-variable by a read-statement. + + If the evaluation of a numeric datum causes an underflow, then + its value shall be replaced by zero. + + Subscript expressions in the variable-list are evaluated after + values have been assigned to the variables preceding them (i.e. + to the left of them) in the list. + + 16.5 _E_x_c_e_p_t_i_o_n_s + + - The variable-list in a read-statement requires more data than + are present in the remainder of the data-sequence (fatal). + + - An attempt is made to assign a string datum to a numeric + variable (fatal). + + - The evaluation of a numeric datum causes an overflow (non- + fatal, the recommended recovery procedure is to supply ma- + chine infinity with the appropriate sign and continue). + + - A string datum contains too many characters (fatal). + + 16.6 _R_e_m_a_r_k_s + + It is recommended that implementations report an underflow as + exception and continue. + +17. _D_A_T_A_ _S_T_A_T_E_M_E_N_T + + 17.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + The data-statement provides for the creation of a sequence of + representations for data elements for use by the read-statement. + The general syntactic form of the data-statement is + + DATA datum, ..., datum + + where each datum is either a numeric constant, a string-constant + or an unquoted string. + + 17.2 _S_y_n_t_a_x + + 1. data-statement = DATA data-list + 2. data-list = datum (comma datum)* + + 17.3 _E_x_a_m_p_l_e_s + + DATA 3.14159, PI, 5E-10, "," + + 17.4 _S_e_m_a_n_t_i_c_s + + Data from the totality of data-statements in the program are + collected into a single data sequence. The order in which data + appear textually in the totality of all data-statements deter- + mines the order of the data in the data sequence. + + - 25 - + + If the execution of a program reaches a line containing a + data-statement, then it shall proceed to the next line with + no other effect. + + 17.5 _E_x_c_e_p_t_i_o_n_s + + None. + +18. _A_R_R_A_Y_ _D_E_C_L_A_R_A_T_I_O_N_S + + 18.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + The dimension-statement is used to reserve space for arrays. + Unless declared otherwise, all array subscripts shall have a + lower bound of zero and an upper bound of ten. Thus the default + space allocation reserves space for 11 elements in one-dimen- + sional arrays and 121 elements in two-dimensional arrays. By + use of a dimension-statement, the subscript(s) of an array may + be declared to have an upper bound other than ten. By use of + an option-statement, the subscripts of all arrays may be de- + clared to have a lower bound of one. + + The general syntactic form of the dimension-statement is + + DIM declaration, ..., declaration + + where each declaration has the form + + letter (integer) + or letter (integer , integer) + + The general syntactic form of the option-statement is + + OPTION BASE n + + where n is either 0 or 1. + + 18.2 _S_y_n_t_a_x + + 1. dimension-statement = DIM array declaration + (comma array-declaration)* + 2. array-declaration = numeric-array-name left-parenthesis + bounds right-parenthesis + 3. bounds = integer (comma integer)? + 4. option-statement = OPTION BASE (0/1) + + 18.3 _E_x_a_m_p_l_e_s + + DIM A (6), B(10,10) + + 18.4 _S_e_m_a_n_t_i_c_s + + Each array-declaration occurring in a dimension-statement de- + clares the array named to be either one or two dimensional ac- + cording to whether one or two bounds are listed for the array. + In addition, the bounds specify the maximum values that sub- + script expressions for the array can have. + + The declaration for an array, if present at all, shall occur in + a lower numbered line than any reference to an element of that + + - 26 - + array. Arrays that are not declared in any dimension-statement + are declared implicitly to be one or two dimensional according + to their use in the program, and to have subscripts with a + maximum value of ten (see 7). + + The option-statement declares the minimum value for all array + subscripts; if no option-statement occurs in a program, this + minimum is zero. An option-statement, if present at all, must + occur in a lower numbered line than any dimension-statement or + any reference to an element of an array. If an option-statement + specifies that the lower bound for array subscripts is one, then + no dimension-statement in the program may specify an upper bound + of zero. A program may contain at most one option-statement. + + If the execution of a program reaches a line containing a di- + mension-statement or an option-statement, then it shall pro- + ceed to the next line with no other effect. + + An array can be explicitly dimensioned only once. + + 18.5 _E_x_c_e_p_t_i_o_n_s + + None. + +19. _R_E_M_A_R_K_ _S_T_A_T_E_M_E_N_T + + 19.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + The remark-statement allows program annotation. + + 19.2 _S_y_n_t_a_x + + 1. remark-statement = rem remark-string + + 19.3 _E_x_a_m_p_l_e_s + + REM FINAL CHECK + + 19.4 _S_e_m_a_n_t_i_c_s + + If the execution of a program reaches a line containing a + remark-statement, then it shall proceed to the next line with + no other effect. + + 19.5 _E_x_c_e_p_t_i_o_n_s + + None. + +20. _R_A_N_D_O_M_I_Z_E_ _S_T_A_T_E_M_E_N_T + + 20.1 _G_e_n_e_r_a_l_ _D_e_s_c_r_i_p_t_i_o_n + + The randomize-statement overrides the implementation-predefined + sequence of pseudo-random numbers as values for the RND func- + tion, allowing different (and unpredictable) sequences each + time a given program is executed. + + 20.2 _S_y_n_t_a_x + + 1. randomize-statement = RANDOMIZE + + 20.3 _E_x_a_m_p_l_e_s + + RANDOMIZE + + - 27 - + 20.4 _S_e_m_a_n_t_i_c_s + + Execution of the randomize-statement shall generate a new un- + predictable starting point for the list of pseudo-random num- + bers used by the RND function (see 9). + + 20.5 _E_x_c_e_p_t_i_o_n_s + + None. + + 20.6 _R_e_m_a_r_k_s + + In the case of implementations which do not have access to a + randomizing device such as a real-time clock, the randomize- + statement may be implemented by means of an interaction with + the user. + + - 28 - + + +---------------------------------------+---------------+ + | NAME | GRAPHIC | + +---------------------------------------+---------------+ + | | | + | Space | | + | Exclamation-mark | ! | + | Quotation-mark | " | + | Number-sign | # | + | Dollar-sign | $ | + | Percent-sign | % | + | Ampersand | & | + | Apostrophe | ' | + | Left-parenthesis | ( | + | Right-parenthesis | ) | + | Asterisk | * | + | Plus-sign | + | + | Comma | , | + | Minus-sign | - | + | Full-stop | . | + | Solidus | / | + | Digits | 0 - 9 | + | Colon | : | + | Semi-colon | ; | + | Less-than-sign | < | + | Equals-sign | = | + | Greater-than-sign | > | + | Question-mark | ? | + | Letters | A - Z | + | Circumflex-accent | ^ | + | Underline | _ | + +---------------------------------------+---------------+ + + TABLE 1 + + - 29 - + + +---+---+---+---+---+---+---+---+ + b|0 |0 |0 |0 |1 |1 |1 |1 | + +---+---+---+---+---+---+---+---+ + b| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | + +---+---+---+---+---+---+---+---+ + b b b b b| 0| 1| 0| 1| 0| 1| 0| 1| + +-+-+-+-+ +---+---+---+---+---+---+---+---+ + |0|0|0|0| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | + +=+=+=+=+====+===+===+===+===+===+===+===+===+ + |0|0|0|0| 0 |NUL|DLE| SP| 0 | @ | P | ` | p | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |0|0|0|1| 1 |SOH|DC1| ! | 1 | A | Q | a | q | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |0|0|1|0| 2 |STX|DC2| " | 2 | B | R | b | r | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |0|0|1|1| 3 |ETX|DC3| # | 3 | C | S | c | s | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |0|1|0|0| 4 |EDT|DC4| $ | 4 | D | T | d | t | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |0|1|0|1| 5 |ENQ|NAK| % | 5 | E | U | e | u | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |0|1|1|0| 6 |ACK|SYN| & | 6 | F | V | f | v | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |0|1|1|1| 7 |BEL|ETB| ' | 7 | G | W | g | w | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |1|0|0|0| 8 | BS|CAN| ( | 8 | H | X | h | x | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |1|0|0|1| 9 | HT| EM| ) | 9 | I | Y | i | y | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |1|0|1|0| 10 | LF|SUB| * | : | J | Z | j | z | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |1|0|1|1| 11 | VT|ESC| + | ; | K | [ | k | { | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |1|1|0|0| 12 | FF| FS| , | < | L | \ | l | | | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |1|1|0|1| 13 | CR| GS| - | = | M | ] | m | } | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |1|1|1|0| 14 | SO| RS| . | > | N | ^ | n | ~ | + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + |1|1|1|1| 15 | SI| US| / | ? | O | _ | o |DEL| + +-+-+-+-+----+---+---+---+---+---+---+---+---+ + + TABLE 2 + +NOTE: In the 7-bit and in the 8-bit code tables two characters + are allocated to pos. 2/4, namely $ and box. In any version + of the codes a single character is to be allocated to this + position. The character of the 7-bit or of the 8-bit coded + character set, which corresponds to the character $ of the + Minimal BASIC character set is either $ or box (box in the + International Reference Version). + + The same applies to pos. 2/3 for the characters £ and #, + the latter being the character of the International Refer- + ence version. + + - 30 - + + _A_P_P_E_N_D_I_X_ _1 + + Organization of the Standard + ---------------------------- + +This Standard is organized into a number of sections, each of which +covers a particular feature of BASIC. Sections 4 to 20 are divided +into sub-sections, as follows. + +Sub-section 1. General Description + +This sub-section briefly describes the features of BASIC to be treat- +ed and indicates the general syntactic form of these features. + +Sub-section 2. Syntax + +The exact syntax of features of the language is described in a modi- +fied context-free grammar or Backus-Naur Form. The details of this +method of syntax specification are described in Appendix 2. + +In order to keep the syntax reasonably simple the syntax specifica- +tion will allow it to describe some constructions which, strictly +speaking, are not legal according to this Standard, e.g. it will +allow the generation of the statement + + 100 LET X = A(1) + A(1,2) + +in which the array A occurs with differing numbers of subscripts. +Rather than ruling such constructions out by a more complicated syn- +tax, this Standard shall instead rule them out in the semantics. + +Sub-section 3. Examples + +A short list of valid examples that can be generated by certain of +the syntax equations in sub-section 2 is given. + +Sub-section 4. Semantics + +The semantic rules in this Standard serve two purposes. First, they +rule out certain constructions which are permitted by the syntax, +but which have no valid meaning according to this Standard. Second, +they assign a meaning to the remaining constructions. + +Sub-section 5. Exceptions + +An exception occurs when an implementation recognizes that a program +may not perform or is not performing in accordance with this Standard. +All exceptions described in this section shall be reported unless +some mechanism is provided in an enhancement to this Standard that +has been invoked by the user to handle exceptions. + +Where indicated, certain exceptions may be handled by the specified +procedures; if no procedure is given, or if restrictions imposed by + + - 31 - + +the hardware or the operating environment make it impossible to +follow the given procedures, then the exception must be handled by +terminating the program. Enhancements to this Standard may describe +mechanisms for controlling the manner in which exceptions are re- +ported and handled, but no such mechanisms are specified in this +Standard. + +This Standard does not specify an order in which exceptions shall +be detected or processed. + +Sub-section 6. Remarks + +This sub-section contains remarks which point out certain features +of this Standard as well as remarks which make recommendations con- +cerning the implementation of a BASIC language processor in an oper- +ating environment. + + - 32 - + + _A_P_P_E_N_D_I_X_ _2 + + Method of Syntax Specification + ------------------------------ + +The syntax, through a series of rewriting rules known as "product- +ions", defines syntactic objects of various types, such as "program" +or "expression", and describes which strings of symbols are objects +of these types. + +In the syntax, upper-case letters, digits, and (possibly hyphenated) +lower-case words are used as "metanames", i.e. as names of syntactic +objects. Most of these metanames are defined by rewriting rules in +terms of other metanames. In order that this process terminate, cer- +tain metanames are designated as "terminal" metanames, and rewriting +rules for them are not included in the syntax. All terminal metanames +occur for the first time and are defined in Section 4. It should be +noted in particular that all upper-case letters are terminal meta- +names which denote themselves. + +We illustrate further details of the syntax by considering some ex- +amples. In Section 12 we find the production + + gosub-statement = GO space* SUB line-number + +which indicates that a "gosub-statement" consists of the letters G, +O, any number of spaces, S, U, and B followed by a line number. + +What is a "line-number"? In Section 5, the production + + line-number = digit digit? digit? digit? + +indicates that a "line-number" is a "digit" followed by up to three +other "digits" (the question mark is a syntactic operator indicating +that the object it follows may or may not be present). + +What is a "digit"? In Section 4, the production + + digit = 0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 + +indicates that a "digit" is either a "0", a "1", ... or a "9" (the +solidus is a syntactic operator meaning "or" and is used to indicate +that a metaname can be rewritten in one of several ways). Since the +digits are terminal metanames (i.e. they do not occur on the left- +hand side of any production), our decipherment of the syntax for the +"gosub-statement" comes to an end. The semantics in Section 4 iden- +tify the digits in terms of the characters they represent. + +An asterisk is a syntactic operator like the question-mark, and it +indicates that the object it follows may occur any number of times, +including zero times, in the production. + +For example + integer = digit digit* + +indicates than an "integer" is a "digit" followed by an arbitrary + + - 33 - + +number of other "digits". + +Parentheses may be used to group sequences of metanames together. +For example + variable-list = variable (comma variable)* + +defines a "variable-list" to consist of a "variable" followed by an +arbitrary number of other "variables" separated by "commas". + +When several syntactic operators occur in the same production, the +operators "?" and "*" take precedence over the operator "/". + +Spaces in the syntax are used to separate hyphenated lower-case words +from each other. Special conventions are observed regarding spaces +in BASIC programs (see Section 5). The syntax as described generates +programs which contain no spaces other than those occurring in re- +marks, in certain string constants, or where the presence of a space +is explicitly indicated by the metaname "space". + +Additional spaces may be inserted to improve readability provided +that the restrictions imposed in Section 5 are observed. + +- 34 - + + _A_P_P_E_N_D_I_X_ _3 + + _C_o_n_f_o_r_m_a_n_c_e + +There are two aspects of conformance to this language Standard : +conformance by a program written in the language, and conformance +by an implementation which processes such programs. + +A program is said to conform to this Standard only when + +- each statement contained therein is a syntactically valid instance + of a statement specified in this Standard, + +- each statement has an explicitly valid meaning specified herein, + + and + +- the totality of statements compose an instance of a valid program + which has an explicitly valid meaning specified herein. + +An implementation is said to conform to this Standard only when + +- it accepts and processes programs conforming to this Standard, + +- it reports reasons for rejecting any program which does not conform + to this Standard, + +- it interprets errors and exceptional circumstances according to the + specifications of this Standard, + +- its interpretation of the semantics of each statement of a stand- + ard-conforming program conforms to the specification in this + Standard. + +- its interpretation of the semantics of a standard-conforming pro- + gram as a whole conforms to the specifications in this Standard, + +- it accepts as input, manipulates, and can generate as output numbers + of at least the precision and range specified in this Standard, and + +- it is accompanied by a reference manual which clearly defines the + actions taken in regard to features which are called "undefined" + or "implementation-defined" in this Standard. + +This Standard does not include requirements for reporting specific +syntactic errors in the text of a program. Implementations conforming +to this Standard my accept programs written in an enhanced language +without having to report all constructs not conforming to this Stand- +ard. However, whenever a statement or other program element does not +conform to the syntactic rules given herein, either an error shall +be reported or the statement or other program element shall have an +implementation-defined meaning. + + - 35 - + + _A_P_P_E_N_D_I_X_ _4 + + + + Implementation-defined Features + ------------------------------- + +A number of the features defined in this Standard have been left +for definition by the implementor. However, this will not affect +portability, provided that the limits recommended in the various +sections are respected. The way these features are implemented +shall be defined in the user- or system-manual of the specific +implementation. + +The following is a list of implementation-defined features: + +- accuracy of evaluation of numeric expressions (see 8) + +- end-of-line (see 5, 14 and 15) + +- exrad-width for printing numeric representations (see 14) + +- initial value of variables (see 7) + +- input-prompt (see 15) + +- longest string that can be retained (see 11) + +- value of machine infinitesimal (see 6) + +- value of machine infinity (see 6) + +- margin for output lines (see 14) + +- precision for numeric values (see 6) + +- print-zone length (see 14) + +- pseudo-random number sequence (see 9 and 20) + +- significance width for printing numeric representations (see 15) + +- means of requesting the input-reply in batch mode (see 15) + diff --git a/NBS2/FNCS.BAS b/NBS2/FNCS.BAS new file mode 100644 index 0000000..ae0db02 --- /dev/null +++ b/NBS2/FNCS.BAS @@ -0,0 +1 @@ +100 FNCS diff --git a/NBS2/FNCS.OUT b/NBS2/FNCS.OUT new file mode 100644 index 0000000..6ca0742 --- /dev/null +++ b/NBS2/FNCS.OUT @@ -0,0 +1,34 @@ +BWBASIC FUNCTIONS AVAILABLE: +ABS ACOS ANGLE ARGC ARGT$ +ARGV ARGV$ ASC ASIN ATN +CCUR CDBL CEIL CHDIR CHR$ +CINT CLNG CLOSE CLS COLOR +COS COSH COT CSC CSNG +CVC CVD CVI CVL CVS +DATE DATE$ DEF FN DEG ENVIRON +ENVIRON$ EOF EPS ERL ERR +ERR$ ERROR ERROR EXP FILEATTR +FILES FILES FIX FP FRE +FRE FRE FREEFILE GET GET +HEX$ INKEY$ INP INPUT$ INPUT$ +INSTR INSTR INT IP KILL +LCASE$ LEFT$ LEN LOC LOCATE +LOF LOG LOG10 LOG2 LPOS +LTRIM$ LWIDTH MAX MAXBYT MAXCUR +MAXDBL MAXDEV MAXINT MAXLEN MAXLNG +MAXLVL MAXNUM MAXSNG MID$ MID$ +MIN MINBYT MINCUR MINDBL MINDEV +MININT MINLNG MINNUM MINSNG MKC$ +MKD$ MKDIR MKI$ MKL$ MKS$ +MOD NAME NULL OCT$ OPEN +OPEN ORD OUT PEEK PI +POKE POS POS POS POS +PUT PUT RAD RANDOMIZE RANDOMIZE +REMAINDER REPEAT$ REPEAT$ RESET RIGHT$ +RMDIR RND RND ROUND RTRIM$ +SEC SEEK SEEK SGN SHELL +SIN SINH SPACE$ SPC SQR +STR$ STRING$ STRING$ TAB TAN +TANH TIME TIME$ TIMER TRIM$ +TROFF TRON TRUNCATE UCASE$ VAL +WAIT WAIT WIDTH WIDTH diff --git a/NBS2/F_ABS_X_N.80 b/NBS2/F_ABS_X_N.80 new file mode 100644 index 0000000..2c10c0d --- /dev/null +++ b/NBS2/F_ABS_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 X=-1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .4 X=-.4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .6 X=-.6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .227229 X=-.227229 + F= 0 N= .227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .239157 X=-.239157 + F= 0 N= .239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .213586 X=-.213586 + F= 0 N= .213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .277537 X=-.277537 + F= 0 N= .277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .481303 X=-.481303 + F= 0 N= .481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .210971 X=-.210971 + F= 0 N= .210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .455216 X=-.455216 + F= 0 N= .455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 110.907 X=-110.907 + F= 0 N= 110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 114.341 X=-114.341 + F= 0 N= 114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 58.3548 X=-58.3548 + F= 0 N= 58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 108.36 X=-108.36 + F= 0 N= 108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 46.5199 X=-46.5199 + F= 0 N= 46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 56.1094 X=-56.1094 + F= 0 N= 56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 121.087 X=-121.087 + F= 0 N= 121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 123.517 X=-123.517 + F= 0 N= 123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 97.6301 X=-97.6301 + F= 0 N= 97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 64.0001 X=-64.0001 + F= 0 N= 64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 25.6888 X=-25.6888 + F= 0 N= 25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 61.0877 X=-61.0877 + F= 0 N= 61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 66.6381 X=-66.6381 + F= 0 N= 66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5476.5 X=-5476.5 + F= 0 N= 5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 21210.3 X=-21210.3 + F= 0 N= 21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 28757.2 X=-28757.2 + F= 0 N= 28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 28732.2 X=-28732.2 + F= 0 N= 28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1830.69 X=-1830.69 + F= 0 N= 1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 28930.6 X=-28930.6 + F= 0 N= 28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 6014.53 X=-6014.53 + F= 0 N= 6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 10538.3 X=-10538.3 + F= 0 N= 10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 17536.3 X=-17536.3 + F= 0 N= 17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 8856.62 X=-8856.62 + F= 0 N= 8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 5140.12 X=-5140.12 + F= 0 N= 5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8595.31 X=-8595.31 + F= 0 N= 8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 3382.87 X=-3382.87 + F= 0 N= 3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5002.07 X=-5002.07 + F= 0 N= 5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5800.72 X=-5800.72 + F= 0 N= 5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 4.2981E+9 X=-4.2981E+9 + F= 0 N= 4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 7.05453E+8 X=-7.05453E+8 + F= 0 N= 7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 3.10179E+9 X=-3.10179E+9 + F= 0 N= 3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.86159E+9 X=-4.86159E+9 + F= 0 N= 4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 8.62908E+8 X=-8.62908E+8 + F= 0 N= 8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 3.4101E+9 X=-3.4101E+9 + F= 0 N= 3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.26748E+9 X=-2.26748E+9 + F= 0 N= 2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.10587E+9 X=-2.10587E+9 + F= 0 N= 2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.66524E+9 X=-2.66524E+9 + F= 0 N= 2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 4.87912E+9 X=-4.87912E+9 + F= 0 N= 4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 3.39941E+9 X=-3.39941E+9 + F= 0 N= 3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 3.49119E+9 X=-3.49119E+9 + F= 0 N= 3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 2.86324E+9 X=-2.86324E+9 + F= 0 N= 2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 3.1518E+9 X=-3.1518E+9 + F= 0 N= 3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ABS_X_N.BAS b/NBS2/F_ABS_X_N.BAS new file mode 100644 index 0000000..c8cc353 --- /dev/null +++ b/NBS2/F_ABS_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:14 +REM FILENAME: F_ABS_X_N.BAS +REM SYNTAX: N = ABS( X ) +REM UNIQUEID: F_ABS_X_N +REM FUNCTION: ABS +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ABS( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , 1 , -1 +DATA 4 , 0 , .4 , .4 +DATA 5 , 0 , .4 , -.4 +DATA 6 , 0 , .6 , .6 +DATA 7 , 0 , .6 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , .227229 , -.227229 +DATA 13 , 0 , .239157 , -.239157 +DATA 14 , 0 , .213586 , -.213586 +DATA 15 , 0 , .274675 , .274675 +DATA 16 , 0 , .169766 , .169766 +DATA 17 , 0 , .318766 , .318766 +DATA 18 , 0 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , .188257 , .188257 +DATA 20 , 0 , .277537 , -.277537 +DATA 21 , 0 , .481303 , -.481303 +DATA 22 , 0 , .43556 , .43556 +DATA 23 , 0 , .210971 , -.210971 +DATA 24 , 0 , .455216 , -.455216 +DATA 25 , 0 , 110.907 , -110.907 +DATA 26 , 0 , 105.632 , 105.632 +DATA 27 , 0 , 114.341 , -114.341 +DATA 28 , 0 , 109.706 , 109.706 +DATA 29 , 0 , 109.198 , 109.198 +DATA 30 , 0 , 85.8773 , 85.8773 +DATA 31 , 0 , 58.3548 , -58.3548 +DATA 32 , 0 , 29.6397 , 29.6397 +DATA 33 , 0 , 108.36 , -108.36 +DATA 34 , 0 , 46.5199 , -46.5199 +DATA 35 , 0 , 112.521 , 112.521 +DATA 36 , 0 , 45.4151 , 45.4151 +DATA 37 , 0 , 101.129 , 101.129 +DATA 38 , 0 , 65.0473 , 65.0473 +DATA 39 , 0 , 48.4012 , 48.4012 +DATA 40 , 0 , 122.294 , 122.294 +DATA 41 , 0 , 56.1094 , -56.1094 +DATA 42 , 0 , 121.087 , -121.087 +DATA 43 , 0 , 123.517 , -123.517 +DATA 44 , 0 , 97.6301 , -97.6301 +DATA 45 , 0 , 64.0001 , -64.0001 +DATA 46 , 0 , 25.6888 , -25.6888 +DATA 47 , 0 , 14.8006 , 14.8006 +DATA 48 , 0 , 61.0877 , -61.0877 +DATA 49 , 0 , 66.6381 , -66.6381 +DATA 50 , 0 , 5476.5 , -5476.5 +DATA 51 , 0 , 21210.3 , -21210.3 +DATA 52 , 0 , 28757.2 , -28757.2 +DATA 53 , 0 , 28732.2 , -28732.2 +DATA 54 , 0 , 12730.3 , 12730.3 +DATA 55 , 0 , 1830.69 , -1830.69 +DATA 56 , 0 , 5486.39 , 5486.39 +DATA 57 , 0 , 22405.9 , 22405.9 +DATA 58 , 0 , 30809.8 , 30809.8 +DATA 59 , 0 , 28930.6 , -28930.6 +DATA 60 , 0 , 6014.53 , -6014.53 +DATA 61 , 0 , 17414.6 , 17414.6 +DATA 62 , 0 , 10538.3 , -10538.3 +DATA 63 , 0 , 17536.3 , -17536.3 +DATA 64 , 0 , 8856.62 , -8856.62 +DATA 65 , 0 , 5140.12 , -5140.12 +DATA 66 , 0 , 8595.31 , -8595.31 +DATA 67 , 0 , 3382.87 , -3382.87 +DATA 68 , 0 , 5002.07 , -5002.07 +DATA 69 , 0 , 5800.72 , -5800.72 +DATA 70 , 0 , 29686.4 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3790.9 , 3790.9 +DATA 75 , 0 , 4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , 7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , 3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , 4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , 8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , 3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , 2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , 2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , 2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , 4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , 3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , 3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , 2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , 3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ABS_X_N.OUT b/NBS2/F_ABS_X_N.OUT new file mode 100644 index 0000000..1803da5 --- /dev/null +++ b/NBS2/F_ABS_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 X=-1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .4 X=-.4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .6 X=-.6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .227229 X=-.227229 + F= 0 N= .227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .239157 X=-.239157 + F= 0 N= .239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .213586 X=-.213586 + F= 0 N= .213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .277537 X=-.277537 + F= 0 N= .277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .481303 X=-.481303 + F= 0 N= .481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .210971 X=-.210971 + F= 0 N= .210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .455216 X=-.455216 + F= 0 N= .455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 110.907 X=-110.907 + F= 0 N= 110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 114.341 X=-114.341 + F= 0 N= 114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 58.3548 X=-58.3548 + F= 0 N= 58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 108.36 X=-108.36 + F= 0 N= 108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 46.5199 X=-46.5199 + F= 0 N= 46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 56.1094 X=-56.1094 + F= 0 N= 56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 121.087 X=-121.087 + F= 0 N= 121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 123.517 X=-123.517 + F= 0 N= 123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 97.6301 X=-97.6301 + F= 0 N= 97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 64.0001 X=-64.0001 + F= 0 N= 64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 25.6888 X=-25.6888 + F= 0 N= 25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 61.0877 X=-61.0877 + F= 0 N= 61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 66.6381 X=-66.6381 + F= 0 N= 66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5476.5 X=-5476.5 + F= 0 N= 5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 21210.3 X=-21210.3 + F= 0 N= 21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 28757.2 X=-28757.2 + F= 0 N= 28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 28732.2 X=-28732.2 + F= 0 N= 28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1830.69 X=-1830.69 + F= 0 N= 1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 28930.6 X=-28930.6 + F= 0 N= 28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 6014.53 X=-6014.53 + F= 0 N= 6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 10538.3 X=-10538.3 + F= 0 N= 10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 17536.3 X=-17536.3 + F= 0 N= 17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 8856.62 X=-8856.62 + F= 0 N= 8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 5140.12 X=-5140.12 + F= 0 N= 5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8595.31 X=-8595.31 + F= 0 N= 8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 3382.87 X=-3382.87 + F= 0 N= 3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5002.07 X=-5002.07 + F= 0 N= 5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5800.72 X=-5800.72 + F= 0 N= 5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 4.2981E+9 X=-4.2981E+9 + F= 0 N= 4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 7.05453E+8 X=-7.05453E+8 + F= 0 N= 7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 3.10179E+9 X=-3.10179E+9 + F= 0 N= 3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.86159E+9 X=-4.86159E+9 + F= 0 N= 4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 8.62908E+8 X=-8.62908E+8 + F= 0 N= 8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 3.4101E+9 X=-3.4101E+9 + F= 0 N= 3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.26748E+9 X=-2.26748E+9 + F= 0 N= 2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.10587E+9 X=-2.10587E+9 + F= 0 N= 2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.66524E+9 X=-2.66524E+9 + F= 0 N= 2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 4.87912E+9 X=-4.87912E+9 + F= 0 N= 4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 3.39941E+9 X=-3.39941E+9 + F= 0 N= 3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 3.49119E+9 X=-3.49119E+9 + F= 0 N= 3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 2.86324E+9 X=-2.86324E+9 + F= 0 N= 2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 3.1518E+9 X=-3.1518E+9 + F= 0 N= 3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ABS_X_N.dif b/NBS2/F_ABS_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ABS_X_N.run b/NBS2/F_ABS_X_N.run new file mode 100644 index 0000000..2c10c0d --- /dev/null +++ b/NBS2/F_ABS_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 X=-1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .4 X=-.4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .6 X=-.6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .227229 X=-.227229 + F= 0 N= .227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .239157 X=-.239157 + F= 0 N= .239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .213586 X=-.213586 + F= 0 N= .213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .277537 X=-.277537 + F= 0 N= .277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .481303 X=-.481303 + F= 0 N= .481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .210971 X=-.210971 + F= 0 N= .210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .455216 X=-.455216 + F= 0 N= .455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 110.907 X=-110.907 + F= 0 N= 110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 114.341 X=-114.341 + F= 0 N= 114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 58.3548 X=-58.3548 + F= 0 N= 58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 108.36 X=-108.36 + F= 0 N= 108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 46.5199 X=-46.5199 + F= 0 N= 46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 56.1094 X=-56.1094 + F= 0 N= 56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 121.087 X=-121.087 + F= 0 N= 121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 123.517 X=-123.517 + F= 0 N= 123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 97.6301 X=-97.6301 + F= 0 N= 97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 64.0001 X=-64.0001 + F= 0 N= 64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 25.6888 X=-25.6888 + F= 0 N= 25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 61.0877 X=-61.0877 + F= 0 N= 61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 66.6381 X=-66.6381 + F= 0 N= 66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5476.5 X=-5476.5 + F= 0 N= 5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 21210.3 X=-21210.3 + F= 0 N= 21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 28757.2 X=-28757.2 + F= 0 N= 28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 28732.2 X=-28732.2 + F= 0 N= 28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1830.69 X=-1830.69 + F= 0 N= 1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 28930.6 X=-28930.6 + F= 0 N= 28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 6014.53 X=-6014.53 + F= 0 N= 6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 10538.3 X=-10538.3 + F= 0 N= 10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 17536.3 X=-17536.3 + F= 0 N= 17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 8856.62 X=-8856.62 + F= 0 N= 8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 5140.12 X=-5140.12 + F= 0 N= 5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8595.31 X=-8595.31 + F= 0 N= 8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 3382.87 X=-3382.87 + F= 0 N= 3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5002.07 X=-5002.07 + F= 0 N= 5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5800.72 X=-5800.72 + F= 0 N= 5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 4.2981E+9 X=-4.2981E+9 + F= 0 N= 4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 7.05453E+8 X=-7.05453E+8 + F= 0 N= 7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 3.10179E+9 X=-3.10179E+9 + F= 0 N= 3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.86159E+9 X=-4.86159E+9 + F= 0 N= 4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 8.62908E+8 X=-8.62908E+8 + F= 0 N= 8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 3.4101E+9 X=-3.4101E+9 + F= 0 N= 3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.26748E+9 X=-2.26748E+9 + F= 0 N= 2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.10587E+9 X=-2.10587E+9 + F= 0 N= 2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.66524E+9 X=-2.66524E+9 + F= 0 N= 2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 4.87912E+9 X=-4.87912E+9 + F= 0 N= 4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 3.39941E+9 X=-3.39941E+9 + F= 0 N= 3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 3.49119E+9 X=-3.49119E+9 + F= 0 N= 3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 2.86324E+9 X=-2.86324E+9 + F= 0 N= 2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 3.1518E+9 X=-3.1518E+9 + F= 0 N= 3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ACOS_X_N.80 b/NBS2/F_ACOS_X_N.80 new file mode 100644 index 0000000..7d5da60 --- /dev/null +++ b/NBS2/F_ACOS_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1.5708 X= 0 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 3.14159 X=-1 + F= 0 N= 3.14159 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.15928 X= .4 + F= 0 N= 1.15928 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.98231 X=-.4 + F= 0 N= 1.98231 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .927295 X= .6 + F= 0 N= .927295 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2.2143 X=-.6 + F= 0 N= 2.2143 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.80003 X=-.227229 + F= 0 N= 1.80003 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.81229 X=-.239157 + F= 0 N= 1.81229 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.78604 X=-.213586 + F= 0 N= 1.78604 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.29254 X= .274675 + F= 0 N= 1.29254 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.4002 X= .169766 + F= 0 N= 1.4002 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.24637 X= .318766 + F= 0 N= 1.24637 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.55013 X= 2.06658E-2 + F= 0 N= 1.55013 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.38141 X= .188257 + F= 0 N= 1.38141 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.85203 X=-.277537 + F= 0 N= 1.85203 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 2.07294 X=-.481303 + F= 0 N= 2.07294 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.12014 X= .43556 + F= 0 N= 1.12014 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.78336 X=-.210971 + F= 0 N= 1.78336 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 2.04341 X=-.455216 + F= 0 N= 2.04341 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ACOS_X_N.BAS b/NBS2/F_ACOS_X_N.BAS new file mode 100644 index 0000000..06b4aa9 --- /dev/null +++ b/NBS2/F_ACOS_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:14 +REM FILENAME: F_ACOS_X_N.BAS +REM SYNTAX: N = ACOS( X ) +REM UNIQUEID: F_ACOS_X_N +REM FUNCTION: ACOS +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ACOS( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 1.5708 , 0 +DATA 2 , 0 , 0 , 1 +DATA 3 , 0 , 3.14159 , -1 +DATA 4 , 0 , 1.15928 , .4 +DATA 5 , 0 , 1.98231 , -.4 +DATA 6 , 0 , .927295 , .6 +DATA 7 , 0 , 2.2143 , -.6 +DATA 8 , 1 , 0 , 254 +DATA 9 , 1 , 0 , 255 +DATA 10 , 1 , 0 , 256 +DATA 11 , 1 , 0 , 32000 +DATA 12 , 0 , 1.80003 , -.227229 +DATA 13 , 0 , 1.81229 , -.239157 +DATA 14 , 0 , 1.78604 , -.213586 +DATA 15 , 0 , 1.29254 , .274675 +DATA 16 , 0 , 1.4002 , .169766 +DATA 17 , 0 , 1.24637 , .318766 +DATA 18 , 0 , 1.55013 , 2.06658E-2 +DATA 19 , 0 , 1.38141 , .188257 +DATA 20 , 0 , 1.85203 , -.277537 +DATA 21 , 0 , 2.07294 , -.481303 +DATA 22 , 0 , 1.12014 , .43556 +DATA 23 , 0 , 1.78336 , -.210971 +DATA 24 , 0 , 2.04341 , -.455216 +DATA 25 , 1 , 0 , -110.907 +DATA 26 , 1 , 0 , 105.632 +DATA 27 , 1 , 0 , -114.341 +DATA 28 , 1 , 0 , 109.706 +DATA 29 , 1 , 0 , 109.198 +DATA 30 , 1 , 0 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 +DATA 32 , 1 , 0 , 29.6397 +DATA 33 , 1 , 0 , -108.36 +DATA 34 , 1 , 0 , -46.5199 +DATA 35 , 1 , 0 , 112.521 +DATA 36 , 1 , 0 , 45.4151 +DATA 37 , 1 , 0 , 101.129 +DATA 38 , 1 , 0 , 65.0473 +DATA 39 , 1 , 0 , 48.4012 +DATA 40 , 1 , 0 , 122.294 +DATA 41 , 1 , 0 , -56.1094 +DATA 42 , 1 , 0 , -121.087 +DATA 43 , 1 , 0 , -123.517 +DATA 44 , 1 , 0 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 +DATA 46 , 1 , 0 , -25.6888 +DATA 47 , 1 , 0 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 +DATA 54 , 1 , 0 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 +DATA 56 , 1 , 0 , 5486.39 +DATA 57 , 1 , 0 , 22405.9 +DATA 58 , 1 , 0 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 +DATA 61 , 1 , 0 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 +DATA 70 , 1 , 0 , 29686.4 +DATA 71 , 1 , 0 , 2571. +DATA 72 , 1 , 0 , 31091. +DATA 73 , 1 , 0 , 14819. +DATA 74 , 1 , 0 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 +DATA 84 , 1 , 0 , 1.94745E+8 +DATA 85 , 1 , 0 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 1 , 0 , 1.77556E+9 +DATA 93 , 1 , 0 , 2.87705E+8 +DATA 94 , 1 , 0 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ACOS_X_N.OUT b/NBS2/F_ACOS_X_N.OUT new file mode 100644 index 0000000..9bbac0e --- /dev/null +++ b/NBS2/F_ACOS_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1.5708 X= 0 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 3.14159 X=-1 + F= 0 N= 3.14159 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.15928 X= .4 + F= 0 N= 1.15928 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.98231 X=-.4 + F= 0 N= 1.98231 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .927295 X= .6 + F= 0 N= .927295 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2.2143 X=-.6 + F= 0 N= 2.2143 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.80003 X=-.227229 + F= 0 N= 1.80003 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.81229 X=-.239157 + F= 0 N= 1.81229 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.78604 X=-.213586 + F= 0 N= 1.78604 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.29254 X= .274675 + F= 0 N= 1.29254 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.4002 X= .169766 + F= 0 N= 1.4002 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.24637 X= .318766 + F= 0 N= 1.24637 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.55013 X= 2.06658E-2 + F= 0 N= 1.55013 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.38141 X= .188257 + F= 0 N= 1.38141 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.85203 X=-.277537 + F= 0 N= 1.85203 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 2.07294 X=-.481303 + F= 0 N= 2.07294 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.12014 X= .43556 + F= 0 N= 1.12014 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.78336 X=-.210971 + F= 0 N= 1.78336 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 2.04341 X=-.455216 + F= 0 N= 2.04341 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ACOS_X_N.dif b/NBS2/F_ACOS_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ACOS_X_N.run b/NBS2/F_ACOS_X_N.run new file mode 100644 index 0000000..7d5da60 --- /dev/null +++ b/NBS2/F_ACOS_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1.5708 X= 0 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 3.14159 X=-1 + F= 0 N= 3.14159 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.15928 X= .4 + F= 0 N= 1.15928 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.98231 X=-.4 + F= 0 N= 1.98231 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .927295 X= .6 + F= 0 N= .927295 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2.2143 X=-.6 + F= 0 N= 2.2143 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.80003 X=-.227229 + F= 0 N= 1.80003 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.81229 X=-.239157 + F= 0 N= 1.81229 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.78604 X=-.213586 + F= 0 N= 1.78604 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.29254 X= .274675 + F= 0 N= 1.29254 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.4002 X= .169766 + F= 0 N= 1.4002 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.24637 X= .318766 + F= 0 N= 1.24637 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.55013 X= 2.06658E-2 + F= 0 N= 1.55013 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.38141 X= .188257 + F= 0 N= 1.38141 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.85203 X=-.277537 + F= 0 N= 1.85203 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 2.07294 X=-.481303 + F= 0 N= 2.07294 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.12014 X= .43556 + F= 0 N= 1.12014 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.78336 X=-.210971 + F= 0 N= 1.78336 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 2.04341 X=-.455216 + F= 0 N= 2.04341 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ANGLE_X_Y_N.80 b/NBS2/F_ANGLE_X_Y_N.80 new file mode 100644 index 0000000..c0ecd41 --- /dev/null +++ b/NBS2/F_ANGLE_X_Y_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 Y= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .785398 X= 1 Y= 1 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-2.35619 X=-1 Y=-1 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .785398 X= .4 Y= .4 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.35619 X=-.4 Y=-.4 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .785398 X= .6 Y= .6 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-2.35619 X=-.6 Y=-.6 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= .785398 X= 254 Y= 254 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= .785398 X= 255 Y= 255 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= .785398 X= 256 Y= 256 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= .785398 X= 32000 Y= 32000 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-2.35619 X=-.227229 Y=-.227229 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-2.35619 X=-.239157 Y=-.239157 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-2.35619 X=-.213586 Y=-.213586 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .785398 X= .274675 Y= .274675 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .785398 X= .169766 Y= .169766 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .785398 X= .318766 Y= .318766 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .785398 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .785398 X= .188257 Y= .188257 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-2.35619 X=-.277537 Y=-.277537 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-2.35619 X=-.481303 Y=-.481303 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .785398 X= .43556 Y= .43556 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-2.35619 X=-.210971 Y=-.210971 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.35619 X=-.455216 Y=-.455216 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-2.35619 X=-110.907 Y=-110.907 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .785398 X= 105.632 Y= 105.632 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.35619 X=-114.341 Y=-114.341 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .785398 X= 109.706 Y= 109.706 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .785398 X= 109.198 Y= 109.198 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .785398 X= 85.8773 Y= 85.8773 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-2.35619 X=-58.3548 Y=-58.3548 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .785398 X= 29.6397 Y= 29.6397 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-2.35619 X=-108.36 Y=-108.36 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-2.35619 X=-46.5199 Y=-46.5199 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .785398 X= 112.521 Y= 112.521 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .785398 X= 45.4151 Y= 45.4151 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .785398 X= 101.129 Y= 101.129 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .785398 X= 65.0473 Y= 65.0473 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .785398 X= 48.4012 Y= 48.4012 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .785398 X= 122.294 Y= 122.294 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-2.35619 X=-56.1094 Y=-56.1094 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-2.35619 X=-121.087 Y=-121.087 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.35619 X=-123.517 Y=-123.517 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-2.35619 X=-97.6301 Y=-97.6301 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-2.35619 X=-64.0001 Y=-64.0001 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-2.35619 X=-25.6888 Y=-25.6888 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .785398 X= 14.8006 Y= 14.8006 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-2.35619 X=-61.0877 Y=-61.0877 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-2.35619 X=-66.6381 Y=-66.6381 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-2.35619 X=-5476.5 Y=-5476.5 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-2.35619 X=-21210.3 Y=-21210.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-2.35619 X=-28757.2 Y=-28757.2 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-2.35619 X=-28732.2 Y=-28732.2 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .785398 X= 12730.3 Y= 12730.3 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-2.35619 X=-1830.69 Y=-1830.69 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .785398 X= 5486.39 Y= 5486.39 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .785398 X= 22405.9 Y= 22405.9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .785398 X= 30809.8 Y= 30809.8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-2.35619 X=-28930.6 Y=-28930.6 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-2.35619 X=-6014.53 Y=-6014.53 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .785398 X= 17414.6 Y= 17414.6 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-2.35619 X=-10538.3 Y=-10538.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-2.35619 X=-17536.3 Y=-17536.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-2.35619 X=-8856.62 Y=-8856.62 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-2.35619 X=-5140.12 Y=-5140.12 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-2.35619 X=-8595.31 Y=-8595.31 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-2.35619 X=-3382.87 Y=-3382.87 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-2.35619 X=-5002.07 Y=-5002.07 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-2.35619 X=-5800.72 Y=-5800.72 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= .785398 X= 29686.4 Y= 29686.4 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .785398 X= 2571 Y= 2571 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= .785398 X= 31091 Y= 31091 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= .785398 X= 14819 Y= 14819 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .785398 X= 3790.9 Y= 3790.9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-2.35619 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.35619 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-2.35619 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-2.35619 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-2.35619 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-2.35619 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= .785398 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .785398 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= .785398 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= .785398 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .785398 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.35619 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.35619 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= .785398 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.35619 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= .785398 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-2.35619 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= .785398 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= .785398 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .785398 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-2.35619 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-2.35619 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.35619 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= .785398 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-2.35619 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .785398 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= .785398 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ANGLE_X_Y_N.BAS b/NBS2/F_ANGLE_X_Y_N.BAS new file mode 100644 index 0000000..cbed6f9 --- /dev/null +++ b/NBS2/F_ANGLE_X_Y_N.BAS @@ -0,0 +1,184 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:15 +REM FILENAME: F_ANGLE_X_Y_N.BAS +REM SYNTAX: N = ANGLE( X, Y ) +REM UNIQUEID: F_ANGLE_X_Y_N +REM FUNCTION: ANGLE +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ANGLE( X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , 0 , 0 +DATA 2 , 0 , .785398 , 1 , 1 +DATA 3 , 0 , -2.35619 , -1 , -1 +DATA 4 , 0 , .785398 , .4 , .4 +DATA 5 , 0 , -2.35619 , -.4 , -.4 +DATA 6 , 0 , .785398 , .6 , .6 +DATA 7 , 0 , -2.35619 , -.6 , -.6 +DATA 8 , 0 , .785398 , 254 , 254 +DATA 9 , 0 , .785398 , 255 , 255 +DATA 10 , 0 , .785398 , 256 , 256 +DATA 11 , 0 , .785398 , 32000 , 32000 +DATA 12 , 0 , -2.35619 , -.227229 , -.227229 +DATA 13 , 0 , -2.35619 , -.239157 , -.239157 +DATA 14 , 0 , -2.35619 , -.213586 , -.213586 +DATA 15 , 0 , .785398 , .274675 , .274675 +DATA 16 , 0 , .785398 , .169766 , .169766 +DATA 17 , 0 , .785398 , .318766 , .318766 +DATA 18 , 0 , .785398 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , .785398 , .188257 , .188257 +DATA 20 , 0 , -2.35619 , -.277537 , -.277537 +DATA 21 , 0 , -2.35619 , -.481303 , -.481303 +DATA 22 , 0 , .785398 , .43556 , .43556 +DATA 23 , 0 , -2.35619 , -.210971 , -.210971 +DATA 24 , 0 , -2.35619 , -.455216 , -.455216 +DATA 25 , 0 , -2.35619 , -110.907 , -110.907 +DATA 26 , 0 , .785398 , 105.632 , 105.632 +DATA 27 , 0 , -2.35619 , -114.341 , -114.341 +DATA 28 , 0 , .785398 , 109.706 , 109.706 +DATA 29 , 0 , .785398 , 109.198 , 109.198 +DATA 30 , 0 , .785398 , 85.8773 , 85.8773 +DATA 31 , 0 , -2.35619 , -58.3548 , -58.3548 +DATA 32 , 0 , .785398 , 29.6397 , 29.6397 +DATA 33 , 0 , -2.35619 , -108.36 , -108.36 +DATA 34 , 0 , -2.35619 , -46.5199 , -46.5199 +DATA 35 , 0 , .785398 , 112.521 , 112.521 +DATA 36 , 0 , .785398 , 45.4151 , 45.4151 +DATA 37 , 0 , .785398 , 101.129 , 101.129 +DATA 38 , 0 , .785398 , 65.0473 , 65.0473 +DATA 39 , 0 , .785398 , 48.4012 , 48.4012 +DATA 40 , 0 , .785398 , 122.294 , 122.294 +DATA 41 , 0 , -2.35619 , -56.1094 , -56.1094 +DATA 42 , 0 , -2.35619 , -121.087 , -121.087 +DATA 43 , 0 , -2.35619 , -123.517 , -123.517 +DATA 44 , 0 , -2.35619 , -97.6301 , -97.6301 +DATA 45 , 0 , -2.35619 , -64.0001 , -64.0001 +DATA 46 , 0 , -2.35619 , -25.6888 , -25.6888 +DATA 47 , 0 , .785398 , 14.8006 , 14.8006 +DATA 48 , 0 , -2.35619 , -61.0877 , -61.0877 +DATA 49 , 0 , -2.35619 , -66.6381 , -66.6381 +DATA 50 , 0 , -2.35619 , -5476.5 , -5476.5 +DATA 51 , 0 , -2.35619 , -21210.3 , -21210.3 +DATA 52 , 0 , -2.35619 , -28757.2 , -28757.2 +DATA 53 , 0 , -2.35619 , -28732.2 , -28732.2 +DATA 54 , 0 , .785398 , 12730.3 , 12730.3 +DATA 55 , 0 , -2.35619 , -1830.69 , -1830.69 +DATA 56 , 0 , .785398 , 5486.39 , 5486.39 +DATA 57 , 0 , .785398 , 22405.9 , 22405.9 +DATA 58 , 0 , .785398 , 30809.8 , 30809.8 +DATA 59 , 0 , -2.35619 , -28930.6 , -28930.6 +DATA 60 , 0 , -2.35619 , -6014.53 , -6014.53 +DATA 61 , 0 , .785398 , 17414.6 , 17414.6 +DATA 62 , 0 , -2.35619 , -10538.3 , -10538.3 +DATA 63 , 0 , -2.35619 , -17536.3 , -17536.3 +DATA 64 , 0 , -2.35619 , -8856.62 , -8856.62 +DATA 65 , 0 , -2.35619 , -5140.12 , -5140.12 +DATA 66 , 0 , -2.35619 , -8595.31 , -8595.31 +DATA 67 , 0 , -2.35619 , -3382.87 , -3382.87 +DATA 68 , 0 , -2.35619 , -5002.07 , -5002.07 +DATA 69 , 0 , -2.35619 , -5800.72 , -5800.72 +DATA 70 , 0 , .785398 , 29686.4 , 29686.4 +DATA 71 , 0 , .785398 , 2571. , 2571. +DATA 72 , 0 , .785398 , 31091. , 31091. +DATA 73 , 0 , .785398 , 14819. , 14819. +DATA 74 , 0 , .785398 , 3790.9 , 3790.9 +DATA 75 , 0 , -2.35619 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -2.35619 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -2.35619 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -2.35619 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -2.35619 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -2.35619 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , .785398 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , .785398 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , .785398 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , .785398 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , .785398 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.35619 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.35619 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , .785398 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.35619 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , .785398 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -2.35619 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , .785398 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , .785398 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , .785398 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -2.35619 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -2.35619 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.35619 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , .785398 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -2.35619 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , .785398 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ANGLE_X_Y_N.OUT b/NBS2/F_ANGLE_X_Y_N.OUT new file mode 100644 index 0000000..802751c --- /dev/null +++ b/NBS2/F_ANGLE_X_Y_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 Y= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .785398 X= 1 Y= 1 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-2.35619 X=-1 Y=-1 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .785398 X= .4 Y= .4 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.35619 X=-.4 Y=-.4 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .785398 X= .6 Y= .6 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-2.35619 X=-.6 Y=-.6 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= .785398 X= 254 Y= 254 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= .785398 X= 255 Y= 255 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= .785398 X= 256 Y= 256 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= .785398 X= 32000 Y= 32000 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-2.35619 X=-.227229 Y=-.227229 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-2.35619 X=-.239157 Y=-.239157 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-2.35619 X=-.213586 Y=-.213586 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .785398 X= .274675 Y= .274675 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .785398 X= .169766 Y= .169766 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .785398 X= .318766 Y= .318766 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .785398 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .785398 X= .188257 Y= .188257 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-2.35619 X=-.277537 Y=-.277537 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-2.35619 X=-.481303 Y=-.481303 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .785398 X= .43556 Y= .43556 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-2.35619 X=-.210971 Y=-.210971 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.35619 X=-.455216 Y=-.455216 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-2.35619 X=-110.907 Y=-110.907 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .785398 X= 105.632 Y= 105.632 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.35619 X=-114.341 Y=-114.341 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .785398 X= 109.706 Y= 109.706 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .785398 X= 109.198 Y= 109.198 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .785398 X= 85.8773 Y= 85.8773 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-2.35619 X=-58.3548 Y=-58.3548 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .785398 X= 29.6397 Y= 29.6397 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-2.35619 X=-108.36 Y=-108.36 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-2.35619 X=-46.5199 Y=-46.5199 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .785398 X= 112.521 Y= 112.521 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .785398 X= 45.4151 Y= 45.4151 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .785398 X= 101.129 Y= 101.129 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .785398 X= 65.0473 Y= 65.0473 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .785398 X= 48.4012 Y= 48.4012 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .785398 X= 122.294 Y= 122.294 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-2.35619 X=-56.1094 Y=-56.1094 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-2.35619 X=-121.087 Y=-121.087 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.35619 X=-123.517 Y=-123.517 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-2.35619 X=-97.6301 Y=-97.6301 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-2.35619 X=-64.0001 Y=-64.0001 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-2.35619 X=-25.6888 Y=-25.6888 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .785398 X= 14.8006 Y= 14.8006 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-2.35619 X=-61.0877 Y=-61.0877 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-2.35619 X=-66.6381 Y=-66.6381 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-2.35619 X=-5476.5 Y=-5476.5 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-2.35619 X=-21210.3 Y=-21210.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-2.35619 X=-28757.2 Y=-28757.2 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-2.35619 X=-28732.2 Y=-28732.2 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .785398 X= 12730.3 Y= 12730.3 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-2.35619 X=-1830.69 Y=-1830.69 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .785398 X= 5486.39 Y= 5486.39 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .785398 X= 22405.9 Y= 22405.9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .785398 X= 30809.8 Y= 30809.8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-2.35619 X=-28930.6 Y=-28930.6 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-2.35619 X=-6014.53 Y=-6014.53 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .785398 X= 17414.6 Y= 17414.6 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-2.35619 X=-10538.3 Y=-10538.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-2.35619 X=-17536.3 Y=-17536.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-2.35619 X=-8856.62 Y=-8856.62 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-2.35619 X=-5140.12 Y=-5140.12 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-2.35619 X=-8595.31 Y=-8595.31 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-2.35619 X=-3382.87 Y=-3382.87 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-2.35619 X=-5002.07 Y=-5002.07 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-2.35619 X=-5800.72 Y=-5800.72 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= .785398 X= 29686.4 Y= 29686.4 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .785398 X= 2571 Y= 2571 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= .785398 X= 31091 Y= 31091 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= .785398 X= 14819 Y= 14819 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .785398 X= 3790.9 Y= 3790.9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-2.35619 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.35619 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-2.35619 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-2.35619 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-2.35619 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-2.35619 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= .785398 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .785398 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= .785398 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= .785398 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .785398 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.35619 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.35619 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= .785398 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.35619 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= .785398 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-2.35619 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= .785398 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= .785398 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .785398 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-2.35619 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-2.35619 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.35619 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= .785398 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-2.35619 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .785398 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= .785398 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ANGLE_X_Y_N.dif b/NBS2/F_ANGLE_X_Y_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ANGLE_X_Y_N.run b/NBS2/F_ANGLE_X_Y_N.run new file mode 100644 index 0000000..c0ecd41 --- /dev/null +++ b/NBS2/F_ANGLE_X_Y_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 Y= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .785398 X= 1 Y= 1 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-2.35619 X=-1 Y=-1 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .785398 X= .4 Y= .4 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.35619 X=-.4 Y=-.4 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .785398 X= .6 Y= .6 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-2.35619 X=-.6 Y=-.6 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= .785398 X= 254 Y= 254 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= .785398 X= 255 Y= 255 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= .785398 X= 256 Y= 256 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= .785398 X= 32000 Y= 32000 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-2.35619 X=-.227229 Y=-.227229 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-2.35619 X=-.239157 Y=-.239157 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-2.35619 X=-.213586 Y=-.213586 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .785398 X= .274675 Y= .274675 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .785398 X= .169766 Y= .169766 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .785398 X= .318766 Y= .318766 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .785398 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .785398 X= .188257 Y= .188257 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-2.35619 X=-.277537 Y=-.277537 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-2.35619 X=-.481303 Y=-.481303 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .785398 X= .43556 Y= .43556 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-2.35619 X=-.210971 Y=-.210971 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.35619 X=-.455216 Y=-.455216 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-2.35619 X=-110.907 Y=-110.907 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .785398 X= 105.632 Y= 105.632 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.35619 X=-114.341 Y=-114.341 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .785398 X= 109.706 Y= 109.706 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .785398 X= 109.198 Y= 109.198 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .785398 X= 85.8773 Y= 85.8773 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-2.35619 X=-58.3548 Y=-58.3548 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .785398 X= 29.6397 Y= 29.6397 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-2.35619 X=-108.36 Y=-108.36 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-2.35619 X=-46.5199 Y=-46.5199 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .785398 X= 112.521 Y= 112.521 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .785398 X= 45.4151 Y= 45.4151 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .785398 X= 101.129 Y= 101.129 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .785398 X= 65.0473 Y= 65.0473 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .785398 X= 48.4012 Y= 48.4012 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .785398 X= 122.294 Y= 122.294 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-2.35619 X=-56.1094 Y=-56.1094 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-2.35619 X=-121.087 Y=-121.087 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.35619 X=-123.517 Y=-123.517 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-2.35619 X=-97.6301 Y=-97.6301 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-2.35619 X=-64.0001 Y=-64.0001 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-2.35619 X=-25.6888 Y=-25.6888 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .785398 X= 14.8006 Y= 14.8006 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-2.35619 X=-61.0877 Y=-61.0877 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-2.35619 X=-66.6381 Y=-66.6381 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-2.35619 X=-5476.5 Y=-5476.5 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-2.35619 X=-21210.3 Y=-21210.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-2.35619 X=-28757.2 Y=-28757.2 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-2.35619 X=-28732.2 Y=-28732.2 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .785398 X= 12730.3 Y= 12730.3 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-2.35619 X=-1830.69 Y=-1830.69 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .785398 X= 5486.39 Y= 5486.39 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .785398 X= 22405.9 Y= 22405.9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .785398 X= 30809.8 Y= 30809.8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-2.35619 X=-28930.6 Y=-28930.6 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-2.35619 X=-6014.53 Y=-6014.53 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .785398 X= 17414.6 Y= 17414.6 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-2.35619 X=-10538.3 Y=-10538.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-2.35619 X=-17536.3 Y=-17536.3 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-2.35619 X=-8856.62 Y=-8856.62 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-2.35619 X=-5140.12 Y=-5140.12 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-2.35619 X=-8595.31 Y=-8595.31 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-2.35619 X=-3382.87 Y=-3382.87 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-2.35619 X=-5002.07 Y=-5002.07 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-2.35619 X=-5800.72 Y=-5800.72 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= .785398 X= 29686.4 Y= 29686.4 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .785398 X= 2571 Y= 2571 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= .785398 X= 31091 Y= 31091 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= .785398 X= 14819 Y= 14819 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .785398 X= 3790.9 Y= 3790.9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-2.35619 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.35619 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-2.35619 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-2.35619 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-2.35619 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-2.35619 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= .785398 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .785398 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= .785398 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= .785398 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .785398 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.35619 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.35619 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= .785398 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.35619 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= .785398 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-2.35619 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= .785398 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= .785398 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .785398 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-2.35619 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-2.35619 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.35619 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= .785398 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-2.35619 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-2.35619 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .785398 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= .785398 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ASC_A_N.80 b/NBS2/F_ASC_A_N.80 new file mode 100644 index 0000000..e24b153 --- /dev/null +++ b/NBS2/F_ASC_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 51 A$=[3] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 122 A$=[z] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32 A$=[ 3] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32 A$=[ z] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 51 A$=[3 ] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 122 A$=[z ] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32 A$=[ 3 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32 A$=[ z ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32 A$=[ LLLL] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32 A$=[ '' ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32 A$=[ oo ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32 A$=[ 00 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32 A$=[ \\\\ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32 A$=[ lllll ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32 A$=[ uuuu ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32 A$=[ a ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32 A$=[ hh ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32 A$=[ h ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32 A$=[ )] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32 A$=[ 5 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32 A$=[ 2 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32 A$=[ - ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 100 A$=[dd ] + F= 0 N= 100 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32 A$=[ tttt ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32 A$=[ :::: ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32 A$=[ ___ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32 A$=[ _____ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32 A$=[ S ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32 A$=[ FFFF ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32 A$=[ kkk] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32 A$=[ NNNN ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32 A$=[ mmmm ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32 A$=[ ,,,,, ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 79 A$=[OO ] + F= 0 N= 79 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32 A$=[ HHHH ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32 A$=[ < ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32 A$=[ j ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32 A$=[ yyyy ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32 A$=[ +++ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 111 A$=[o ] + F= 0 N= 111 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32 A$=[ ((] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32 A$=[ uu ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32 A$=[ 00 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32 A$=[ HH ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32 A$=[ G ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32 A$=[ {{{{ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32 A$=[ ]]] ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 67 A$=[CCC] + F= 0 N= 67 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32 A$=[ 44 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 94 A$=[^^ ] + F= 0 N= 94 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32 A$=[ QQ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32 A$=[ FFFF ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32 A$=[ n ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32 A$=[ hh ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 53 A$=[555 ] + F= 0 N= 53 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32 A$=[ YYYY ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32 A$=[ w ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 77 A$=[MMMM ] + F= 0 N= 77 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32 A$=[ JJJJ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32 A$=[ %% ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32 A$=[ * ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32 A$=[ @@@ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 73 A$=[I ] + F= 0 N= 73 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32 A$=[ ss ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32 A$=[ f ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32 A$=[ D ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 35 A$=[### ] + F= 0 N= 35 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32 A$=[ ' ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32 A$=[ dd ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32 A$=[ TT ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32 A$=[ vvv ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32 A$=[ X ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32 A$=[ % ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32 A$=[ 5555 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 70 A$=[FFFF ] + F= 0 N= 70 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32 A$=[ %% ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32 A$=[ ~~~~ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32 A$=[ || ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32 A$=[ SSS ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32 A$=[ 6666 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32 A$=[ ww ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32 A$=[ 1111 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32 A$=[ K ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32 A$=[ ttttt ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32 A$=[ OOOOO ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32 A$=[ E ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32 A$=[ PPPPP ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32 A$=[ == ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32 A$=[ VVVV ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32 A$=[ c ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32 A$=[ yyyy ] + F= 0 N= 32 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ASC_A_N.BAS b/NBS2/F_ASC_A_N.BAS new file mode 100644 index 0000000..91a5ef8 --- /dev/null +++ b/NBS2/F_ASC_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:15 +REM FILENAME: F_ASC_A_N.BAS +REM SYNTAX: N = ASC( A$ ) +REM UNIQUEID: F_ASC_A_N +REM FUNCTION: ASC +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ASC( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , "" +DATA 2 , 0 , 32 , " " +DATA 3 , 0 , 51 , "3" +DATA 4 , 0 , 122 , "z" +DATA 5 , 0 , 32 , " " +DATA 6 , 0 , 32 , " 3" +DATA 7 , 0 , 32 , " z" +DATA 8 , 0 , 51 , "3 " +DATA 9 , 0 , 122 , "z " +DATA 10 , 0 , 32 , " 3 " +DATA 11 , 0 , 32 , " z " +DATA 12 , 0 , 32 , " LLLL" +DATA 13 , 0 , 32 , " '' " +DATA 14 , 0 , 32 , " oo " +DATA 15 , 0 , 32 , " 00 " +DATA 16 , 0 , 32 , " \\\\ " +DATA 17 , 0 , 32 , " lllll " +DATA 18 , 0 , 32 , " uuuu " +DATA 19 , 0 , 32 , " a " +DATA 20 , 0 , 32 , " " +DATA 21 , 0 , 32 , " hh " +DATA 22 , 0 , 32 , " h " +DATA 23 , 0 , 32 , " )" +DATA 24 , 0 , 32 , " 5 " +DATA 25 , 0 , 32 , " 2 " +DATA 26 , 0 , 32 , " - " +DATA 27 , 0 , 100 , "dd " +DATA 28 , 0 , 32 , " tttt " +DATA 29 , 0 , 32 , " :::: " +DATA 30 , 0 , 32 , " ___ " +DATA 31 , 0 , 32 , " " +DATA 32 , 0 , 32 , " " +DATA 33 , 0 , 32 , " _____ " +DATA 34 , 0 , 32 , " S " +DATA 35 , 0 , 32 , " FFFF " +DATA 36 , 0 , 32 , " kkk" +DATA 37 , 0 , 32 , " NNNN " +DATA 38 , 0 , 32 , " mmmm " +DATA 39 , 0 , 32 , " ,,,,, " +DATA 40 , 0 , 79 , "OO " +DATA 41 , 0 , 32 , " HHHH " +DATA 42 , 0 , 32 , " < " +DATA 43 , 0 , 32 , " j " +DATA 44 , 0 , 32 , " yyyy " +DATA 45 , 0 , 32 , " +++ " +DATA 46 , 0 , 111 , "o " +DATA 47 , 0 , 32 , " ((" +DATA 48 , 0 , 32 , " uu " +DATA 49 , 0 , 32 , " 00 " +DATA 50 , 0 , 32 , " HH " +DATA 51 , 0 , 32 , " " +DATA 52 , 0 , 32 , " G " +DATA 53 , 0 , 32 , " {{{{ " +DATA 54 , 0 , 32 , " ]]] " +DATA 55 , 0 , 67 , "CCC" +DATA 56 , 0 , 32 , " 44 " +DATA 57 , 0 , 94 , "^^ " +DATA 58 , 0 , 32 , " QQ " +DATA 59 , 0 , 32 , " FFFF " +DATA 60 , 0 , 32 , " n " +DATA 61 , 0 , 32 , " hh " +DATA 62 , 0 , 53 , "555 " +DATA 63 , 0 , 32 , " YYYY " +DATA 64 , 0 , 32 , " w " +DATA 65 , 0 , 77 , "MMMM " +DATA 66 , 0 , 32 , " JJJJ " +DATA 67 , 0 , 32 , " %% " +DATA 68 , 0 , 32 , " * " +DATA 69 , 0 , 32 , " @@@ " +DATA 70 , 0 , 73 , "I " +DATA 71 , 0 , 32 , " ss " +DATA 72 , 0 , 32 , " f " +DATA 73 , 0 , 32 , " D " +DATA 74 , 0 , 35 , "### " +DATA 75 , 0 , 32 , " ' " +DATA 76 , 0 , 32 , " dd " +DATA 77 , 0 , 32 , " TT " +DATA 78 , 0 , 32 , " vvv " +DATA 79 , 0 , 32 , " X " +DATA 80 , 0 , 32 , " % " +DATA 81 , 0 , 32 , " " +DATA 82 , 0 , 32 , " 5555 " +DATA 83 , 0 , 70 , "FFFF " +DATA 84 , 0 , 32 , " %% " +DATA 85 , 0 , 32 , " " +DATA 86 , 0 , 32 , " ~~~~ " +DATA 87 , 0 , 32 , " || " +DATA 88 , 0 , 32 , " SSS " +DATA 89 , 0 , 32 , " 6666 " +DATA 90 , 0 , 32 , " ww " +DATA 91 , 0 , 32 , " 1111 " +DATA 92 , 0 , 32 , " K " +DATA 93 , 0 , 32 , " ttttt " +DATA 94 , 0 , 32 , " OOOOO " +DATA 95 , 0 , 32 , " E " +DATA 96 , 0 , 32 , " PPPPP " +DATA 97 , 0 , 32 , " == " +DATA 98 , 0 , 32 , " VVVV " +DATA 99 , 0 , 32 , " c " +DATA 100 , 0 , 32 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ASC_A_N.OUT b/NBS2/F_ASC_A_N.OUT new file mode 100644 index 0000000..df01aff --- /dev/null +++ b/NBS2/F_ASC_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 51 A$=[3] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 122 A$=[z] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32 A$=[ 3] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32 A$=[ z] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 51 A$=[3 ] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 122 A$=[z ] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32 A$=[ 3 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32 A$=[ z ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32 A$=[ LLLL] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32 A$=[ '' ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32 A$=[ oo ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32 A$=[ 00 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32 A$=[ \\\\ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32 A$=[ lllll ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32 A$=[ uuuu ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32 A$=[ a ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32 A$=[ hh ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32 A$=[ h ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32 A$=[ )] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32 A$=[ 5 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32 A$=[ 2 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32 A$=[ - ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 100 A$=[dd ] + F= 0 N= 100 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32 A$=[ tttt ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32 A$=[ :::: ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32 A$=[ ___ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32 A$=[ _____ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32 A$=[ S ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32 A$=[ FFFF ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32 A$=[ kkk] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32 A$=[ NNNN ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32 A$=[ mmmm ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32 A$=[ ,,,,, ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 79 A$=[OO ] + F= 0 N= 79 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32 A$=[ HHHH ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32 A$=[ < ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32 A$=[ j ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32 A$=[ yyyy ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32 A$=[ +++ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 111 A$=[o ] + F= 0 N= 111 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32 A$=[ ((] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32 A$=[ uu ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32 A$=[ 00 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32 A$=[ HH ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32 A$=[ G ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32 A$=[ {{{{ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32 A$=[ ]]] ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 67 A$=[CCC] + F= 0 N= 67 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32 A$=[ 44 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 94 A$=[^^ ] + F= 0 N= 94 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32 A$=[ QQ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32 A$=[ FFFF ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32 A$=[ n ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32 A$=[ hh ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 53 A$=[555 ] + F= 0 N= 53 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32 A$=[ YYYY ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32 A$=[ w ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 77 A$=[MMMM ] + F= 0 N= 77 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32 A$=[ JJJJ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32 A$=[ %% ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32 A$=[ * ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32 A$=[ @@@ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 73 A$=[I ] + F= 0 N= 73 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32 A$=[ ss ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32 A$=[ f ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32 A$=[ D ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 35 A$=[### ] + F= 0 N= 35 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32 A$=[ ' ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32 A$=[ dd ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32 A$=[ TT ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32 A$=[ vvv ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32 A$=[ X ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32 A$=[ % ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32 A$=[ 5555 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 70 A$=[FFFF ] + F= 0 N= 70 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32 A$=[ %% ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32 A$=[ ~~~~ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32 A$=[ || ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32 A$=[ SSS ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32 A$=[ 6666 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32 A$=[ ww ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32 A$=[ 1111 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32 A$=[ K ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32 A$=[ ttttt ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32 A$=[ OOOOO ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32 A$=[ E ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32 A$=[ PPPPP ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32 A$=[ == ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32 A$=[ VVVV ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32 A$=[ c ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32 A$=[ yyyy ] + F= 0 N= 32 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ASC_A_N.dif b/NBS2/F_ASC_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ASC_A_N.run b/NBS2/F_ASC_A_N.run new file mode 100644 index 0000000..e24b153 --- /dev/null +++ b/NBS2/F_ASC_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 51 A$=[3] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 122 A$=[z] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32 A$=[ 3] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32 A$=[ z] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 51 A$=[3 ] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 122 A$=[z ] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32 A$=[ 3 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32 A$=[ z ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32 A$=[ LLLL] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32 A$=[ '' ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32 A$=[ oo ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32 A$=[ 00 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32 A$=[ \\\\ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32 A$=[ lllll ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32 A$=[ uuuu ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32 A$=[ a ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32 A$=[ hh ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32 A$=[ h ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32 A$=[ )] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32 A$=[ 5 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32 A$=[ 2 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32 A$=[ - ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 100 A$=[dd ] + F= 0 N= 100 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32 A$=[ tttt ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32 A$=[ :::: ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32 A$=[ ___ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32 A$=[ _____ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32 A$=[ S ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32 A$=[ FFFF ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32 A$=[ kkk] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32 A$=[ NNNN ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32 A$=[ mmmm ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32 A$=[ ,,,,, ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 79 A$=[OO ] + F= 0 N= 79 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32 A$=[ HHHH ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32 A$=[ < ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32 A$=[ j ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32 A$=[ yyyy ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32 A$=[ +++ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 111 A$=[o ] + F= 0 N= 111 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32 A$=[ ((] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32 A$=[ uu ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32 A$=[ 00 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32 A$=[ HH ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32 A$=[ G ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32 A$=[ {{{{ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32 A$=[ ]]] ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 67 A$=[CCC] + F= 0 N= 67 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32 A$=[ 44 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 94 A$=[^^ ] + F= 0 N= 94 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32 A$=[ QQ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32 A$=[ FFFF ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32 A$=[ n ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32 A$=[ hh ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 53 A$=[555 ] + F= 0 N= 53 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32 A$=[ YYYY ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32 A$=[ w ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 77 A$=[MMMM ] + F= 0 N= 77 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32 A$=[ JJJJ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32 A$=[ %% ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32 A$=[ * ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32 A$=[ @@@ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 73 A$=[I ] + F= 0 N= 73 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32 A$=[ ss ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32 A$=[ f ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32 A$=[ D ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 35 A$=[### ] + F= 0 N= 35 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32 A$=[ ' ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32 A$=[ dd ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32 A$=[ TT ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32 A$=[ vvv ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32 A$=[ X ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32 A$=[ % ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32 A$=[ 5555 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 70 A$=[FFFF ] + F= 0 N= 70 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32 A$=[ %% ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32 A$=[ ~~~~ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32 A$=[ || ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32 A$=[ SSS ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32 A$=[ 6666 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32 A$=[ ww ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32 A$=[ 1111 ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32 A$=[ K ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32 A$=[ ttttt ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32 A$=[ OOOOO ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32 A$=[ E ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32 A$=[ PPPPP ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32 A$=[ == ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32 A$=[ VVVV ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32 A$=[ c ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32 A$=[ yyyy ] + F= 0 N= 32 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ASIN_X_N.80 b/NBS2/F_ASIN_X_N.80 new file mode 100644 index 0000000..35fbf2b --- /dev/null +++ b/NBS2/F_ASIN_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.5708 X= 1 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.5708 X=-1 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .411517 X= .4 + F= 0 N= .411517 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.411517 X=-.4 + F= 0 N=-.411517 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .643501 X= .6 + F= 0 N= .643501 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.643501 X=-.6 + F= 0 N=-.643501 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.229231 X=-.227229 + F= 0 N=-.229231 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.241498 X=-.239157 + F= 0 N=-.241498 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.215244 X=-.213586 + F= 0 N=-.215244 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .278252 X= .274675 + F= 0 N= .278252 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .170592 X= .169766 + F= 0 N= .170592 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .324427 X= .318766 + F= 0 N= .324427 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06673E-2 X= 2.06658E-2 + F= 0 N= 2.06673E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .189387 X= .188257 + F= 0 N= .189387 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.281229 X=-.277537 + F= 0 N=-.281229 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.502141 X=-.481303 + F= 0 N=-.502141 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .45066 X= .43556 + F= 0 N= .45066 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.212568 X=-.210971 + F= 0 N=-.212568 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.472615 X=-.455216 + F= 0 N=-.472615 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ASIN_X_N.BAS b/NBS2/F_ASIN_X_N.BAS new file mode 100644 index 0000000..ac0271f --- /dev/null +++ b/NBS2/F_ASIN_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:15 +REM FILENAME: F_ASIN_X_N.BAS +REM SYNTAX: N = ASIN( X ) +REM UNIQUEID: F_ASIN_X_N +REM FUNCTION: ASIN +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ASIN( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1.5708 , 1 +DATA 3 , 0 , -1.5708 , -1 +DATA 4 , 0 , .411517 , .4 +DATA 5 , 0 , -.411517 , -.4 +DATA 6 , 0 , .643501 , .6 +DATA 7 , 0 , -.643501 , -.6 +DATA 8 , 1 , 0 , 254 +DATA 9 , 1 , 0 , 255 +DATA 10 , 1 , 0 , 256 +DATA 11 , 1 , 0 , 32000 +DATA 12 , 0 , -.229231 , -.227229 +DATA 13 , 0 , -.241498 , -.239157 +DATA 14 , 0 , -.215244 , -.213586 +DATA 15 , 0 , .278252 , .274675 +DATA 16 , 0 , .170592 , .169766 +DATA 17 , 0 , .324427 , .318766 +DATA 18 , 0 , 2.06673E-2 , 2.06658E-2 +DATA 19 , 0 , .189387 , .188257 +DATA 20 , 0 , -.281229 , -.277537 +DATA 21 , 0 , -.502141 , -.481303 +DATA 22 , 0 , .45066 , .43556 +DATA 23 , 0 , -.212568 , -.210971 +DATA 24 , 0 , -.472615 , -.455216 +DATA 25 , 1 , 0 , -110.907 +DATA 26 , 1 , 0 , 105.632 +DATA 27 , 1 , 0 , -114.341 +DATA 28 , 1 , 0 , 109.706 +DATA 29 , 1 , 0 , 109.198 +DATA 30 , 1 , 0 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 +DATA 32 , 1 , 0 , 29.6397 +DATA 33 , 1 , 0 , -108.36 +DATA 34 , 1 , 0 , -46.5199 +DATA 35 , 1 , 0 , 112.521 +DATA 36 , 1 , 0 , 45.4151 +DATA 37 , 1 , 0 , 101.129 +DATA 38 , 1 , 0 , 65.0473 +DATA 39 , 1 , 0 , 48.4012 +DATA 40 , 1 , 0 , 122.294 +DATA 41 , 1 , 0 , -56.1094 +DATA 42 , 1 , 0 , -121.087 +DATA 43 , 1 , 0 , -123.517 +DATA 44 , 1 , 0 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 +DATA 46 , 1 , 0 , -25.6888 +DATA 47 , 1 , 0 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 +DATA 54 , 1 , 0 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 +DATA 56 , 1 , 0 , 5486.39 +DATA 57 , 1 , 0 , 22405.9 +DATA 58 , 1 , 0 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 +DATA 61 , 1 , 0 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 +DATA 70 , 1 , 0 , 29686.4 +DATA 71 , 1 , 0 , 2571. +DATA 72 , 1 , 0 , 31091. +DATA 73 , 1 , 0 , 14819. +DATA 74 , 1 , 0 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 +DATA 84 , 1 , 0 , 1.94745E+8 +DATA 85 , 1 , 0 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 1 , 0 , 1.77556E+9 +DATA 93 , 1 , 0 , 2.87705E+8 +DATA 94 , 1 , 0 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ASIN_X_N.OUT b/NBS2/F_ASIN_X_N.OUT new file mode 100644 index 0000000..eaf8d00 --- /dev/null +++ b/NBS2/F_ASIN_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.5708 X= 1 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.5708 X=-1 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .411517 X= .4 + F= 0 N= .411517 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.411517 X=-.4 + F= 0 N=-.411517 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .643501 X= .6 + F= 0 N= .643501 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.643501 X=-.6 + F= 0 N=-.643501 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.229231 X=-.227229 + F= 0 N=-.229231 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.241498 X=-.239157 + F= 0 N=-.241498 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.215244 X=-.213586 + F= 0 N=-.215244 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .278252 X= .274675 + F= 0 N= .278252 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .170592 X= .169766 + F= 0 N= .170592 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .324427 X= .318766 + F= 0 N= .324427 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06673E-2 X= 2.06658E-2 + F= 0 N= 2.06673E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .189387 X= .188257 + F= 0 N= .189387 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.281229 X=-.277537 + F= 0 N=-.281229 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.502141 X=-.481303 + F= 0 N=-.502141 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .45066 X= .43556 + F= 0 N= .45066 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.212568 X=-.210971 + F= 0 N=-.212568 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.472615 X=-.455216 + F= 0 N=-.472615 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ASIN_X_N.dif b/NBS2/F_ASIN_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ASIN_X_N.run b/NBS2/F_ASIN_X_N.run new file mode 100644 index 0000000..35fbf2b --- /dev/null +++ b/NBS2/F_ASIN_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.5708 X= 1 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.5708 X=-1 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .411517 X= .4 + F= 0 N= .411517 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.411517 X=-.4 + F= 0 N=-.411517 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .643501 X= .6 + F= 0 N= .643501 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.643501 X=-.6 + F= 0 N=-.643501 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.229231 X=-.227229 + F= 0 N=-.229231 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.241498 X=-.239157 + F= 0 N=-.241498 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.215244 X=-.213586 + F= 0 N=-.215244 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .278252 X= .274675 + F= 0 N= .278252 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .170592 X= .169766 + F= 0 N= .170592 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .324427 X= .318766 + F= 0 N= .324427 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06673E-2 X= 2.06658E-2 + F= 0 N= 2.06673E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .189387 X= .188257 + F= 0 N= .189387 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.281229 X=-.277537 + F= 0 N=-.281229 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.502141 X=-.481303 + F= 0 N=-.502141 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .45066 X= .43556 + F= 0 N= .45066 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.212568 X=-.210971 + F= 0 N=-.212568 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.472615 X=-.455216 + F= 0 N=-.472615 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ATN_X_N.80 b/NBS2/F_ATN_X_N.80 new file mode 100644 index 0000000..d5e8a3b --- /dev/null +++ b/NBS2/F_ATN_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .785398 X= 1 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.785398 X=-1 + F= 0 N=-.785398 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .380506 X= .4 + F= 0 N= .380506 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.380506 X=-.4 + F= 0 N=-.380506 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .54042 X= .6 + F= 0 N= .54042 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.54042 X=-.6 + F= 0 N=-.54042 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.56686 X= 254 + F= 0 N= 1.56686 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1.56687 X= 255 + F= 0 N= 1.56687 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1.56689 X= 256 + F= 0 N= 1.56689 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.57077 X= 32000 + F= 0 N= 1.57077 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.223435 X=-.227229 + F= 0 N=-.223435 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.234748 X=-.239157 + F= 0 N=-.234748 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.210424 X=-.213586 + F= 0 N=-.210424 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .268064 X= .274675 + F= 0 N= .268064 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168163 X= .169766 + F= 0 N= .168163 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .308583 X= .318766 + F= 0 N= .308583 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06629E-2 X= 2.06658E-2 + F= 0 N= 2.06629E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .186079 X= .188257 + F= 0 N= .186079 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.270723 X=-.277537 + F= 0 N=-.270723 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.448578 X=-.481303 + F= 0 N=-.448578 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .410781 X= .43556 + F= 0 N= .410781 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.207922 X=-.210971 + F= 0 N=-.207922 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.427183 X=-.455216 + F= 0 N=-.427183 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.56178 X=-110.907 + F= 0 N=-1.56178 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.56133 X= 105.632 + F= 0 N= 1.56133 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.56205 X=-114.341 + F= 0 N=-1.56205 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.56168 X= 109.706 + F= 0 N= 1.56168 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.56164 X= 109.198 + F= 0 N= 1.56164 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.55915 X= 85.8773 + F= 0 N= 1.55915 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.55366 X=-58.3548 + F= 0 N=-1.55366 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.53707 X= 29.6397 + F= 0 N= 1.53707 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.56157 X=-108.36 + F= 0 N=-1.56157 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.5493 X=-46.5199 + F= 0 N=-1.5493 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.56191 X= 112.521 + F= 0 N= 1.56191 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.54878 X= 45.4151 + F= 0 N= 1.54878 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.56091 X= 101.129 + F= 0 N= 1.56091 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.55542 X= 65.0473 + F= 0 N= 1.55542 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.55014 X= 48.4012 + F= 0 N= 1.55014 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.56262 X= 122.294 + F= 0 N= 1.56262 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1.55298 X=-56.1094 + F= 0 N=-1.55298 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.56254 X=-121.087 + F= 0 N=-1.56254 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.5627 X=-123.517 + F= 0 N=-1.5627 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.56055 X=-97.6301 + F= 0 N=-1.56055 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.55517 X=-64.0001 + F= 0 N=-1.55517 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.53189 X=-25.6888 + F= 0 N=-1.53189 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.50333 X= 14.8006 + F= 0 N= 1.50333 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.55443 X=-61.0877 + F= 0 N=-1.55443 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.55579 X=-66.6381 + F= 0 N=-1.55579 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.57061 X=-5476.5 + F= 0 N=-1.57061 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1.57075 X=-21210.3 + F= 0 N=-1.57075 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1.57076 X=-28757.2 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1.57076 X=-28732.2 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.57072 X= 12730.3 + F= 0 N= 1.57072 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.57025 X=-1830.69 + F= 0 N=-1.57025 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.57061 X= 5486.39 + F= 0 N= 1.57061 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.57075 X= 22405.9 + F= 0 N= 1.57075 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.57076 X= 30809.8 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.57076 X=-28930.6 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1.57063 X=-6014.53 + F= 0 N=-1.57063 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.57074 X= 17414.6 + F= 0 N= 1.57074 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1.5707 X=-10538.3 + F= 0 N=-1.5707 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1.57074 X=-17536.3 + F= 0 N=-1.57074 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.57068 X=-8856.62 + F= 0 N=-1.57068 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1.5706 X=-5140.12 + F= 0 N=-1.5706 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1.57068 X=-8595.31 + F= 0 N=-1.57068 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.5705 X=-3382.87 + F= 0 N=-1.5705 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.5706 X=-5002.07 + F= 0 N=-1.5706 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1.57062 X=-5800.72 + F= 0 N=-1.57062 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1.57076 X= 29686.4 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.57041 X= 2571 + F= 0 N= 1.57041 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.57076 X= 31091 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.57073 X= 14819 + F= 0 N= 1.57073 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.57053 X= 3790.9 + F= 0 N= 1.57053 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1.5708 X=-4.2981E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1.5708 X=-7.05453E+8 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1.5708 X=-3.10179E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1.5708 X=-4.86159E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.5708 X=-8.62908E+8 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.5708 X=-3.4101E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.5708 X= 3.3889E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.5708 X= 2.49826E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.5708 X= 2.3491E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.5708 X= 1.94745E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.5708 X= 2.02475E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.5708 X=-2.26748E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1.5708 X=-2.10587E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1.5708 X= 4.23585E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.5708 X=-2.66524E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.5708 X= 4.01052E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1.5708 X=-4.87912E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.5708 X= 1.77556E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.5708 X= 2.87705E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.5708 X= 1.99977E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.5708 X=-3.39941E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1.5708 X=-3.49119E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.5708 X=-2.86324E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.5708 X= 4.20418E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.5708 X=-3.1518E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.5708 X= 4.60615E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ATN_X_N.BAS b/NBS2/F_ATN_X_N.BAS new file mode 100644 index 0000000..bef9032 --- /dev/null +++ b/NBS2/F_ATN_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:15 +REM FILENAME: F_ATN_X_N.BAS +REM SYNTAX: N = ATN( X ) +REM UNIQUEID: F_ATN_X_N +REM FUNCTION: ATN +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ATN( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , .785398 , 1 +DATA 3 , 0 , -.785398 , -1 +DATA 4 , 0 , .380506 , .4 +DATA 5 , 0 , -.380506 , -.4 +DATA 6 , 0 , .54042 , .6 +DATA 7 , 0 , -.54042 , -.6 +DATA 8 , 0 , 1.56686 , 254 +DATA 9 , 0 , 1.56687 , 255 +DATA 10 , 0 , 1.56689 , 256 +DATA 11 , 0 , 1.57077 , 32000 +DATA 12 , 0 , -.223435 , -.227229 +DATA 13 , 0 , -.234748 , -.239157 +DATA 14 , 0 , -.210424 , -.213586 +DATA 15 , 0 , .268064 , .274675 +DATA 16 , 0 , .168163 , .169766 +DATA 17 , 0 , .308583 , .318766 +DATA 18 , 0 , 2.06629E-2 , 2.06658E-2 +DATA 19 , 0 , .186079 , .188257 +DATA 20 , 0 , -.270723 , -.277537 +DATA 21 , 0 , -.448578 , -.481303 +DATA 22 , 0 , .410781 , .43556 +DATA 23 , 0 , -.207922 , -.210971 +DATA 24 , 0 , -.427183 , -.455216 +DATA 25 , 0 , -1.56178 , -110.907 +DATA 26 , 0 , 1.56133 , 105.632 +DATA 27 , 0 , -1.56205 , -114.341 +DATA 28 , 0 , 1.56168 , 109.706 +DATA 29 , 0 , 1.56164 , 109.198 +DATA 30 , 0 , 1.55915 , 85.8773 +DATA 31 , 0 , -1.55366 , -58.3548 +DATA 32 , 0 , 1.53707 , 29.6397 +DATA 33 , 0 , -1.56157 , -108.36 +DATA 34 , 0 , -1.5493 , -46.5199 +DATA 35 , 0 , 1.56191 , 112.521 +DATA 36 , 0 , 1.54878 , 45.4151 +DATA 37 , 0 , 1.56091 , 101.129 +DATA 38 , 0 , 1.55542 , 65.0473 +DATA 39 , 0 , 1.55014 , 48.4012 +DATA 40 , 0 , 1.56262 , 122.294 +DATA 41 , 0 , -1.55298 , -56.1094 +DATA 42 , 0 , -1.56254 , -121.087 +DATA 43 , 0 , -1.5627 , -123.517 +DATA 44 , 0 , -1.56055 , -97.6301 +DATA 45 , 0 , -1.55517 , -64.0001 +DATA 46 , 0 , -1.53189 , -25.6888 +DATA 47 , 0 , 1.50333 , 14.8006 +DATA 48 , 0 , -1.55443 , -61.0877 +DATA 49 , 0 , -1.55579 , -66.6381 +DATA 50 , 0 , -1.57061 , -5476.5 +DATA 51 , 0 , -1.57075 , -21210.3 +DATA 52 , 0 , -1.57076 , -28757.2 +DATA 53 , 0 , -1.57076 , -28732.2 +DATA 54 , 0 , 1.57072 , 12730.3 +DATA 55 , 0 , -1.57025 , -1830.69 +DATA 56 , 0 , 1.57061 , 5486.39 +DATA 57 , 0 , 1.57075 , 22405.9 +DATA 58 , 0 , 1.57076 , 30809.8 +DATA 59 , 0 , -1.57076 , -28930.6 +DATA 60 , 0 , -1.57063 , -6014.53 +DATA 61 , 0 , 1.57074 , 17414.6 +DATA 62 , 0 , -1.5707 , -10538.3 +DATA 63 , 0 , -1.57074 , -17536.3 +DATA 64 , 0 , -1.57068 , -8856.62 +DATA 65 , 0 , -1.5706 , -5140.12 +DATA 66 , 0 , -1.57068 , -8595.31 +DATA 67 , 0 , -1.5705 , -3382.87 +DATA 68 , 0 , -1.5706 , -5002.07 +DATA 69 , 0 , -1.57062 , -5800.72 +DATA 70 , 0 , 1.57076 , 29686.4 +DATA 71 , 0 , 1.57041 , 2571. +DATA 72 , 0 , 1.57076 , 31091. +DATA 73 , 0 , 1.57073 , 14819. +DATA 74 , 0 , 1.57053 , 3790.9 +DATA 75 , 0 , -1.5708 , -4.2981E+9 +DATA 76 , 0 , -1.5708 , -7.05453E+8 +DATA 77 , 0 , -1.5708 , -3.10179E+9 +DATA 78 , 0 , -1.5708 , -4.86159E+9 +DATA 79 , 0 , -1.5708 , -8.62908E+8 +DATA 80 , 0 , -1.5708 , -3.4101E+9 +DATA 81 , 0 , 1.5708 , 3.3889E+9 +DATA 82 , 0 , 1.5708 , 2.49826E+9 +DATA 83 , 0 , 1.5708 , 2.3491E+9 +DATA 84 , 0 , 1.5708 , 1.94745E+8 +DATA 85 , 0 , 1.5708 , 2.02475E+9 +DATA 86 , 0 , -1.5708 , -2.26748E+9 +DATA 87 , 0 , -1.5708 , -2.10587E+9 +DATA 88 , 0 , 1.5708 , 4.23585E+9 +DATA 89 , 0 , -1.5708 , -2.66524E+9 +DATA 90 , 0 , 1.5708 , 4.01052E+9 +DATA 91 , 0 , -1.5708 , -4.87912E+9 +DATA 92 , 0 , 1.5708 , 1.77556E+9 +DATA 93 , 0 , 1.5708 , 2.87705E+8 +DATA 94 , 0 , 1.5708 , 1.99977E+8 +DATA 95 , 0 , -1.5708 , -3.39941E+9 +DATA 96 , 0 , -1.5708 , -3.49119E+9 +DATA 97 , 0 , -1.5708 , -2.86324E+9 +DATA 98 , 0 , 1.5708 , 4.20418E+9 +DATA 99 , 0 , -1.5708 , -3.1518E+9 +DATA 100 , 0 , 1.5708 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ATN_X_N.OUT b/NBS2/F_ATN_X_N.OUT new file mode 100644 index 0000000..002a7d0 --- /dev/null +++ b/NBS2/F_ATN_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .785398 X= 1 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.785398 X=-1 + F= 0 N=-.785398 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .380506 X= .4 + F= 0 N= .380506 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.380506 X=-.4 + F= 0 N=-.380506 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .54042 X= .6 + F= 0 N= .54042 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.54042 X=-.6 + F= 0 N=-.54042 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.56686 X= 254 + F= 0 N= 1.56686 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1.56687 X= 255 + F= 0 N= 1.56687 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1.56689 X= 256 + F= 0 N= 1.56689 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.57077 X= 32000 + F= 0 N= 1.57077 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.223435 X=-.227229 + F= 0 N=-.223435 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.234748 X=-.239157 + F= 0 N=-.234748 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.210424 X=-.213586 + F= 0 N=-.210424 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .268064 X= .274675 + F= 0 N= .268064 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168163 X= .169766 + F= 0 N= .168163 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .308583 X= .318766 + F= 0 N= .308583 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06629E-2 X= 2.06658E-2 + F= 0 N= 2.06629E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .186079 X= .188257 + F= 0 N= .186079 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.270723 X=-.277537 + F= 0 N=-.270723 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.448578 X=-.481303 + F= 0 N=-.448578 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .410781 X= .43556 + F= 0 N= .410781 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.207922 X=-.210971 + F= 0 N=-.207922 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.427183 X=-.455216 + F= 0 N=-.427183 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.56178 X=-110.907 + F= 0 N=-1.56178 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.56133 X= 105.632 + F= 0 N= 1.56133 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.56205 X=-114.341 + F= 0 N=-1.56205 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.56168 X= 109.706 + F= 0 N= 1.56168 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.56164 X= 109.198 + F= 0 N= 1.56164 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.55915 X= 85.8773 + F= 0 N= 1.55915 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.55366 X=-58.3548 + F= 0 N=-1.55366 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.53707 X= 29.6397 + F= 0 N= 1.53707 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.56157 X=-108.36 + F= 0 N=-1.56157 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.5493 X=-46.5199 + F= 0 N=-1.5493 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.56191 X= 112.521 + F= 0 N= 1.56191 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.54878 X= 45.4151 + F= 0 N= 1.54878 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.56091 X= 101.129 + F= 0 N= 1.56091 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.55542 X= 65.0473 + F= 0 N= 1.55542 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.55014 X= 48.4012 + F= 0 N= 1.55014 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.56262 X= 122.294 + F= 0 N= 1.56262 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1.55298 X=-56.1094 + F= 0 N=-1.55298 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.56254 X=-121.087 + F= 0 N=-1.56254 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.5627 X=-123.517 + F= 0 N=-1.5627 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.56055 X=-97.6301 + F= 0 N=-1.56055 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.55517 X=-64.0001 + F= 0 N=-1.55517 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.53189 X=-25.6888 + F= 0 N=-1.53189 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.50333 X= 14.8006 + F= 0 N= 1.50333 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.55443 X=-61.0877 + F= 0 N=-1.55443 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.55579 X=-66.6381 + F= 0 N=-1.55579 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.57061 X=-5476.5 + F= 0 N=-1.57061 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1.57075 X=-21210.3 + F= 0 N=-1.57075 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1.57076 X=-28757.2 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1.57076 X=-28732.2 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.57072 X= 12730.3 + F= 0 N= 1.57072 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.57025 X=-1830.69 + F= 0 N=-1.57025 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.57061 X= 5486.39 + F= 0 N= 1.57061 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.57075 X= 22405.9 + F= 0 N= 1.57075 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.57076 X= 30809.8 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.57076 X=-28930.6 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1.57063 X=-6014.53 + F= 0 N=-1.57063 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.57074 X= 17414.6 + F= 0 N= 1.57074 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1.5707 X=-10538.3 + F= 0 N=-1.5707 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1.57074 X=-17536.3 + F= 0 N=-1.57074 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.57068 X=-8856.62 + F= 0 N=-1.57068 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1.5706 X=-5140.12 + F= 0 N=-1.5706 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1.57068 X=-8595.31 + F= 0 N=-1.57068 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.5705 X=-3382.87 + F= 0 N=-1.5705 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.5706 X=-5002.07 + F= 0 N=-1.5706 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1.57062 X=-5800.72 + F= 0 N=-1.57062 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1.57076 X= 29686.4 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.57041 X= 2571 + F= 0 N= 1.57041 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.57076 X= 31091 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.57073 X= 14819 + F= 0 N= 1.57073 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.57053 X= 3790.9 + F= 0 N= 1.57053 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1.5708 X=-4.2981E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1.5708 X=-7.05453E+8 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1.5708 X=-3.10179E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1.5708 X=-4.86159E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.5708 X=-8.62908E+8 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.5708 X=-3.4101E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.5708 X= 3.3889E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.5708 X= 2.49826E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.5708 X= 2.3491E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.5708 X= 1.94745E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.5708 X= 2.02475E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.5708 X=-2.26748E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1.5708 X=-2.10587E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1.5708 X= 4.23585E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.5708 X=-2.66524E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.5708 X= 4.01052E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1.5708 X=-4.87912E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.5708 X= 1.77556E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.5708 X= 2.87705E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.5708 X= 1.99977E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.5708 X=-3.39941E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1.5708 X=-3.49119E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.5708 X=-2.86324E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.5708 X= 4.20418E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.5708 X=-3.1518E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.5708 X= 4.60615E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ATN_X_N.dif b/NBS2/F_ATN_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ATN_X_N.run b/NBS2/F_ATN_X_N.run new file mode 100644 index 0000000..d5e8a3b --- /dev/null +++ b/NBS2/F_ATN_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .785398 X= 1 + F= 0 N= .785398 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.785398 X=-1 + F= 0 N=-.785398 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .380506 X= .4 + F= 0 N= .380506 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.380506 X=-.4 + F= 0 N=-.380506 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .54042 X= .6 + F= 0 N= .54042 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.54042 X=-.6 + F= 0 N=-.54042 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.56686 X= 254 + F= 0 N= 1.56686 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1.56687 X= 255 + F= 0 N= 1.56687 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1.56689 X= 256 + F= 0 N= 1.56689 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.57077 X= 32000 + F= 0 N= 1.57077 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.223435 X=-.227229 + F= 0 N=-.223435 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.234748 X=-.239157 + F= 0 N=-.234748 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.210424 X=-.213586 + F= 0 N=-.210424 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .268064 X= .274675 + F= 0 N= .268064 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168163 X= .169766 + F= 0 N= .168163 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .308583 X= .318766 + F= 0 N= .308583 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06629E-2 X= 2.06658E-2 + F= 0 N= 2.06629E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .186079 X= .188257 + F= 0 N= .186079 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.270723 X=-.277537 + F= 0 N=-.270723 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.448578 X=-.481303 + F= 0 N=-.448578 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .410781 X= .43556 + F= 0 N= .410781 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.207922 X=-.210971 + F= 0 N=-.207922 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.427183 X=-.455216 + F= 0 N=-.427183 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.56178 X=-110.907 + F= 0 N=-1.56178 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.56133 X= 105.632 + F= 0 N= 1.56133 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.56205 X=-114.341 + F= 0 N=-1.56205 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.56168 X= 109.706 + F= 0 N= 1.56168 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.56164 X= 109.198 + F= 0 N= 1.56164 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.55915 X= 85.8773 + F= 0 N= 1.55915 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.55366 X=-58.3548 + F= 0 N=-1.55366 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.53707 X= 29.6397 + F= 0 N= 1.53707 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.56157 X=-108.36 + F= 0 N=-1.56157 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.5493 X=-46.5199 + F= 0 N=-1.5493 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.56191 X= 112.521 + F= 0 N= 1.56191 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.54878 X= 45.4151 + F= 0 N= 1.54878 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.56091 X= 101.129 + F= 0 N= 1.56091 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.55542 X= 65.0473 + F= 0 N= 1.55542 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.55014 X= 48.4012 + F= 0 N= 1.55014 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.56262 X= 122.294 + F= 0 N= 1.56262 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1.55298 X=-56.1094 + F= 0 N=-1.55298 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.56254 X=-121.087 + F= 0 N=-1.56254 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.5627 X=-123.517 + F= 0 N=-1.5627 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.56055 X=-97.6301 + F= 0 N=-1.56055 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.55517 X=-64.0001 + F= 0 N=-1.55517 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.53189 X=-25.6888 + F= 0 N=-1.53189 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.50333 X= 14.8006 + F= 0 N= 1.50333 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.55443 X=-61.0877 + F= 0 N=-1.55443 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.55579 X=-66.6381 + F= 0 N=-1.55579 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.57061 X=-5476.5 + F= 0 N=-1.57061 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1.57075 X=-21210.3 + F= 0 N=-1.57075 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1.57076 X=-28757.2 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1.57076 X=-28732.2 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.57072 X= 12730.3 + F= 0 N= 1.57072 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.57025 X=-1830.69 + F= 0 N=-1.57025 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.57061 X= 5486.39 + F= 0 N= 1.57061 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.57075 X= 22405.9 + F= 0 N= 1.57075 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.57076 X= 30809.8 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.57076 X=-28930.6 + F= 0 N=-1.57076 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1.57063 X=-6014.53 + F= 0 N=-1.57063 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.57074 X= 17414.6 + F= 0 N= 1.57074 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1.5707 X=-10538.3 + F= 0 N=-1.5707 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1.57074 X=-17536.3 + F= 0 N=-1.57074 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.57068 X=-8856.62 + F= 0 N=-1.57068 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1.5706 X=-5140.12 + F= 0 N=-1.5706 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1.57068 X=-8595.31 + F= 0 N=-1.57068 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.5705 X=-3382.87 + F= 0 N=-1.5705 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.5706 X=-5002.07 + F= 0 N=-1.5706 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1.57062 X=-5800.72 + F= 0 N=-1.57062 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1.57076 X= 29686.4 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.57041 X= 2571 + F= 0 N= 1.57041 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.57076 X= 31091 + F= 0 N= 1.57076 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.57073 X= 14819 + F= 0 N= 1.57073 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.57053 X= 3790.9 + F= 0 N= 1.57053 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1.5708 X=-4.2981E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1.5708 X=-7.05453E+8 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1.5708 X=-3.10179E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1.5708 X=-4.86159E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.5708 X=-8.62908E+8 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.5708 X=-3.4101E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.5708 X= 3.3889E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.5708 X= 2.49826E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.5708 X= 2.3491E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.5708 X= 1.94745E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.5708 X= 2.02475E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.5708 X=-2.26748E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1.5708 X=-2.10587E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1.5708 X= 4.23585E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.5708 X=-2.66524E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.5708 X= 4.01052E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1.5708 X=-4.87912E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.5708 X= 1.77556E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.5708 X= 2.87705E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.5708 X= 1.99977E+8 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.5708 X=-3.39941E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1.5708 X=-3.49119E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.5708 X=-2.86324E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.5708 X= 4.20418E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.5708 X=-3.1518E+9 + F= 0 N=-1.5708 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.5708 X= 4.60615E+9 + F= 0 N= 1.5708 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CCUR_X_N.80 b/NBS2/F_CCUR_X_N.80 new file mode 100644 index 0000000..be3e7f7 --- /dev/null +++ b/NBS2/F_CCUR_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CCUR_X_N.BAS b/NBS2/F_CCUR_X_N.BAS new file mode 100644 index 0000000..2ad53a5 --- /dev/null +++ b/NBS2/F_CCUR_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:16 +REM FILENAME: F_CCUR_X_N.BAS +REM SYNTAX: N = CCUR( X ) +REM UNIQUEID: F_CCUR_X_N +REM FUNCTION: CCUR +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CCUR( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , 0 , .4 +DATA 5 , 0 , 0 , -.4 +DATA 6 , 0 , 1 , .6 +DATA 7 , 0 , -1 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , 0 , -.227229 +DATA 13 , 0 , 0 , -.239157 +DATA 14 , 0 , 0 , -.213586 +DATA 15 , 0 , 0 , .274675 +DATA 16 , 0 , 0 , .169766 +DATA 17 , 0 , 0 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 +DATA 20 , 0 , 0 , -.277537 +DATA 21 , 0 , 0 , -.481303 +DATA 22 , 0 , 0 , .43556 +DATA 23 , 0 , 0 , -.210971 +DATA 24 , 0 , 0 , -.455216 +DATA 25 , 0 , -111 , -110.907 +DATA 26 , 0 , 106 , 105.632 +DATA 27 , 0 , -114 , -114.341 +DATA 28 , 0 , 110 , 109.706 +DATA 29 , 0 , 109 , 109.198 +DATA 30 , 0 , 86 , 85.8773 +DATA 31 , 0 , -58 , -58.3548 +DATA 32 , 0 , 30 , 29.6397 +DATA 33 , 0 , -108 , -108.36 +DATA 34 , 0 , -47 , -46.5199 +DATA 35 , 0 , 113 , 112.521 +DATA 36 , 0 , 45 , 45.4151 +DATA 37 , 0 , 101 , 101.129 +DATA 38 , 0 , 65 , 65.0473 +DATA 39 , 0 , 48 , 48.4012 +DATA 40 , 0 , 122 , 122.294 +DATA 41 , 0 , -56 , -56.1094 +DATA 42 , 0 , -121 , -121.087 +DATA 43 , 0 , -124 , -123.517 +DATA 44 , 0 , -98 , -97.6301 +DATA 45 , 0 , -64 , -64.0001 +DATA 46 , 0 , -26 , -25.6888 +DATA 47 , 0 , 15 , 14.8006 +DATA 48 , 0 , -61 , -61.0877 +DATA 49 , 0 , -67 , -66.6381 +DATA 50 , 0 , -5476 , -5476.5 +DATA 51 , 0 , -21210 , -21210.3 +DATA 52 , 0 , -28757 , -28757.2 +DATA 53 , 0 , -28732 , -28732.2 +DATA 54 , 0 , 12730 , 12730.3 +DATA 55 , 0 , -1831 , -1830.69 +DATA 56 , 0 , 5486 , 5486.39 +DATA 57 , 0 , 22406 , 22405.9 +DATA 58 , 0 , 30810 , 30809.8 +DATA 59 , 0 , -28931 , -28930.6 +DATA 60 , 0 , -6015 , -6014.53 +DATA 61 , 0 , 17415 , 17414.6 +DATA 62 , 0 , -10538 , -10538.3 +DATA 63 , 0 , -17536 , -17536.3 +DATA 64 , 0 , -8857 , -8856.62 +DATA 65 , 0 , -5140 , -5140.12 +DATA 66 , 0 , -8595 , -8595.31 +DATA 67 , 0 , -3383 , -3382.87 +DATA 68 , 0 , -5002 , -5002.07 +DATA 69 , 0 , -5801 , -5800.72 +DATA 70 , 0 , 29686 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3791 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CCUR_X_N.OUT b/NBS2/F_CCUR_X_N.OUT new file mode 100644 index 0000000..9303d49 --- /dev/null +++ b/NBS2/F_CCUR_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CCUR_X_N.dif b/NBS2/F_CCUR_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CCUR_X_N.run b/NBS2/F_CCUR_X_N.run new file mode 100644 index 0000000..be3e7f7 --- /dev/null +++ b/NBS2/F_CCUR_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CDBL_X_N.80 b/NBS2/F_CDBL_X_N.80 new file mode 100644 index 0000000..2ef9542 --- /dev/null +++ b/NBS2/F_CDBL_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CDBL_X_N.BAS b/NBS2/F_CDBL_X_N.BAS new file mode 100644 index 0000000..7383f18 --- /dev/null +++ b/NBS2/F_CDBL_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:16 +REM FILENAME: F_CDBL_X_N.BAS +REM SYNTAX: N = CDBL( X ) +REM UNIQUEID: F_CDBL_X_N +REM FUNCTION: CDBL +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CDBL( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , .4 , .4 +DATA 5 , 0 , -.4 , -.4 +DATA 6 , 0 , .6 , .6 +DATA 7 , 0 , -.6 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , -.227229 , -.227229 +DATA 13 , 0 , -.239157 , -.239157 +DATA 14 , 0 , -.213586 , -.213586 +DATA 15 , 0 , .274675 , .274675 +DATA 16 , 0 , .169766 , .169766 +DATA 17 , 0 , .318766 , .318766 +DATA 18 , 0 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , .188257 , .188257 +DATA 20 , 0 , -.277537 , -.277537 +DATA 21 , 0 , -.481303 , -.481303 +DATA 22 , 0 , .43556 , .43556 +DATA 23 , 0 , -.210971 , -.210971 +DATA 24 , 0 , -.455216 , -.455216 +DATA 25 , 0 , -110.907 , -110.907 +DATA 26 , 0 , 105.632 , 105.632 +DATA 27 , 0 , -114.341 , -114.341 +DATA 28 , 0 , 109.706 , 109.706 +DATA 29 , 0 , 109.198 , 109.198 +DATA 30 , 0 , 85.8773 , 85.8773 +DATA 31 , 0 , -58.3548 , -58.3548 +DATA 32 , 0 , 29.6397 , 29.6397 +DATA 33 , 0 , -108.36 , -108.36 +DATA 34 , 0 , -46.5199 , -46.5199 +DATA 35 , 0 , 112.521 , 112.521 +DATA 36 , 0 , 45.4151 , 45.4151 +DATA 37 , 0 , 101.129 , 101.129 +DATA 38 , 0 , 65.0473 , 65.0473 +DATA 39 , 0 , 48.4012 , 48.4012 +DATA 40 , 0 , 122.294 , 122.294 +DATA 41 , 0 , -56.1094 , -56.1094 +DATA 42 , 0 , -121.087 , -121.087 +DATA 43 , 0 , -123.517 , -123.517 +DATA 44 , 0 , -97.6301 , -97.6301 +DATA 45 , 0 , -64.0001 , -64.0001 +DATA 46 , 0 , -25.6888 , -25.6888 +DATA 47 , 0 , 14.8006 , 14.8006 +DATA 48 , 0 , -61.0877 , -61.0877 +DATA 49 , 0 , -66.6381 , -66.6381 +DATA 50 , 0 , -5476.5 , -5476.5 +DATA 51 , 0 , -21210.3 , -21210.3 +DATA 52 , 0 , -28757.2 , -28757.2 +DATA 53 , 0 , -28732.2 , -28732.2 +DATA 54 , 0 , 12730.3 , 12730.3 +DATA 55 , 0 , -1830.69 , -1830.69 +DATA 56 , 0 , 5486.39 , 5486.39 +DATA 57 , 0 , 22405.9 , 22405.9 +DATA 58 , 0 , 30809.8 , 30809.8 +DATA 59 , 0 , -28930.6 , -28930.6 +DATA 60 , 0 , -6014.53 , -6014.53 +DATA 61 , 0 , 17414.6 , 17414.6 +DATA 62 , 0 , -10538.3 , -10538.3 +DATA 63 , 0 , -17536.3 , -17536.3 +DATA 64 , 0 , -8856.62 , -8856.62 +DATA 65 , 0 , -5140.12 , -5140.12 +DATA 66 , 0 , -8595.31 , -8595.31 +DATA 67 , 0 , -3382.87 , -3382.87 +DATA 68 , 0 , -5002.07 , -5002.07 +DATA 69 , 0 , -5800.72 , -5800.72 +DATA 70 , 0 , 29686.4 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3790.9 , 3790.9 +DATA 75 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CDBL_X_N.OUT b/NBS2/F_CDBL_X_N.OUT new file mode 100644 index 0000000..ff519a8 --- /dev/null +++ b/NBS2/F_CDBL_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CDBL_X_N.dif b/NBS2/F_CDBL_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CDBL_X_N.run b/NBS2/F_CDBL_X_N.run new file mode 100644 index 0000000..2ef9542 --- /dev/null +++ b/NBS2/F_CDBL_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CEIL_X_N.80 b/NBS2/F_CEIL_X_N.80 new file mode 100644 index 0000000..d5d4f5d --- /dev/null +++ b/NBS2/F_CEIL_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 X= .4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 X= .274675 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 X= .169766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 X= .318766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 X= 2.06658E-2 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 X= .188257 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 X= .43556 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110 X=-110.907 + F= 0 N=-110 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 110 X= 109.198 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46 X=-46.5199 + F= 0 N=-46 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 46 X= 45.4151 + F= 0 N= 46 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 102 X= 101.129 + F= 0 N= 102 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 66 X= 65.0473 + F= 0 N= 66 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 49 X= 48.4012 + F= 0 N= 49 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 123 X= 122.294 + F= 0 N= 123 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123 X=-123.517 + F= 0 N=-123 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97 X=-97.6301 + F= 0 N=-97 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25 X=-25.6888 + F= 0 N=-25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66 X=-66.6381 + F= 0 N=-66 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12731 X= 12730.3 + F= 0 N= 12731 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830 X=-1830.69 + F= 0 N=-1830 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5487 X= 5486.39 + F= 0 N= 5487 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930 X=-28930.6 + F= 0 N=-28930 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014 X=-6014.53 + F= 0 N=-6014 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856 X=-8856.62 + F= 0 N=-8856 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382 X=-3382.87 + F= 0 N=-3382 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800 X=-5800.72 + F= 0 N=-5800 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29687 X= 29686.4 + F= 0 N= 29687 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CEIL_X_N.BAS b/NBS2/F_CEIL_X_N.BAS new file mode 100644 index 0000000..f424ef7 --- /dev/null +++ b/NBS2/F_CEIL_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:16 +REM FILENAME: F_CEIL_X_N.BAS +REM SYNTAX: N = CEIL( X ) +REM UNIQUEID: F_CEIL_X_N +REM FUNCTION: CEIL +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CEIL( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , 1 , .4 +DATA 5 , 0 , 0 , -.4 +DATA 6 , 0 , 1 , .6 +DATA 7 , 0 , 0 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , 0 , -.227229 +DATA 13 , 0 , 0 , -.239157 +DATA 14 , 0 , 0 , -.213586 +DATA 15 , 0 , 1 , .274675 +DATA 16 , 0 , 1 , .169766 +DATA 17 , 0 , 1 , .318766 +DATA 18 , 0 , 1 , 2.06658E-2 +DATA 19 , 0 , 1 , .188257 +DATA 20 , 0 , 0 , -.277537 +DATA 21 , 0 , 0 , -.481303 +DATA 22 , 0 , 1 , .43556 +DATA 23 , 0 , 0 , -.210971 +DATA 24 , 0 , 0 , -.455216 +DATA 25 , 0 , -110 , -110.907 +DATA 26 , 0 , 106 , 105.632 +DATA 27 , 0 , -114 , -114.341 +DATA 28 , 0 , 110 , 109.706 +DATA 29 , 0 , 110 , 109.198 +DATA 30 , 0 , 86 , 85.8773 +DATA 31 , 0 , -58 , -58.3548 +DATA 32 , 0 , 30 , 29.6397 +DATA 33 , 0 , -108 , -108.36 +DATA 34 , 0 , -46 , -46.5199 +DATA 35 , 0 , 113 , 112.521 +DATA 36 , 0 , 46 , 45.4151 +DATA 37 , 0 , 102 , 101.129 +DATA 38 , 0 , 66 , 65.0473 +DATA 39 , 0 , 49 , 48.4012 +DATA 40 , 0 , 123 , 122.294 +DATA 41 , 0 , -56 , -56.1094 +DATA 42 , 0 , -121 , -121.087 +DATA 43 , 0 , -123 , -123.517 +DATA 44 , 0 , -97 , -97.6301 +DATA 45 , 0 , -64 , -64.0001 +DATA 46 , 0 , -25 , -25.6888 +DATA 47 , 0 , 15 , 14.8006 +DATA 48 , 0 , -61 , -61.0877 +DATA 49 , 0 , -66 , -66.6381 +DATA 50 , 0 , -5476 , -5476.5 +DATA 51 , 0 , -21210 , -21210.3 +DATA 52 , 0 , -28757 , -28757.2 +DATA 53 , 0 , -28732 , -28732.2 +DATA 54 , 0 , 12731 , 12730.3 +DATA 55 , 0 , -1830 , -1830.69 +DATA 56 , 0 , 5487 , 5486.39 +DATA 57 , 0 , 22406 , 22405.9 +DATA 58 , 0 , 30810 , 30809.8 +DATA 59 , 0 , -28930 , -28930.6 +DATA 60 , 0 , -6014 , -6014.53 +DATA 61 , 0 , 17415 , 17414.6 +DATA 62 , 0 , -10538 , -10538.3 +DATA 63 , 0 , -17536 , -17536.3 +DATA 64 , 0 , -8856 , -8856.62 +DATA 65 , 0 , -5140 , -5140.12 +DATA 66 , 0 , -8595 , -8595.31 +DATA 67 , 0 , -3382 , -3382.87 +DATA 68 , 0 , -5002 , -5002.07 +DATA 69 , 0 , -5800 , -5800.72 +DATA 70 , 0 , 29687 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3791 , 3790.9 +DATA 75 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CEIL_X_N.OUT b/NBS2/F_CEIL_X_N.OUT new file mode 100644 index 0000000..da29240 --- /dev/null +++ b/NBS2/F_CEIL_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 X= .4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 X= .274675 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 X= .169766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 X= .318766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 X= 2.06658E-2 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 X= .188257 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 X= .43556 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110 X=-110.907 + F= 0 N=-110 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 110 X= 109.198 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46 X=-46.5199 + F= 0 N=-46 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 46 X= 45.4151 + F= 0 N= 46 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 102 X= 101.129 + F= 0 N= 102 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 66 X= 65.0473 + F= 0 N= 66 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 49 X= 48.4012 + F= 0 N= 49 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 123 X= 122.294 + F= 0 N= 123 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123 X=-123.517 + F= 0 N=-123 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97 X=-97.6301 + F= 0 N=-97 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25 X=-25.6888 + F= 0 N=-25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66 X=-66.6381 + F= 0 N=-66 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12731 X= 12730.3 + F= 0 N= 12731 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830 X=-1830.69 + F= 0 N=-1830 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5487 X= 5486.39 + F= 0 N= 5487 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930 X=-28930.6 + F= 0 N=-28930 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014 X=-6014.53 + F= 0 N=-6014 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856 X=-8856.62 + F= 0 N=-8856 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382 X=-3382.87 + F= 0 N=-3382 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800 X=-5800.72 + F= 0 N=-5800 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29687 X= 29686.4 + F= 0 N= 29687 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CEIL_X_N.dif b/NBS2/F_CEIL_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CEIL_X_N.run b/NBS2/F_CEIL_X_N.run new file mode 100644 index 0000000..d5d4f5d --- /dev/null +++ b/NBS2/F_CEIL_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 X= .4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 X= .274675 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 X= .169766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 X= .318766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 X= 2.06658E-2 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 X= .188257 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 X= .43556 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110 X=-110.907 + F= 0 N=-110 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 110 X= 109.198 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46 X=-46.5199 + F= 0 N=-46 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 46 X= 45.4151 + F= 0 N= 46 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 102 X= 101.129 + F= 0 N= 102 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 66 X= 65.0473 + F= 0 N= 66 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 49 X= 48.4012 + F= 0 N= 49 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 123 X= 122.294 + F= 0 N= 123 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123 X=-123.517 + F= 0 N=-123 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97 X=-97.6301 + F= 0 N=-97 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25 X=-25.6888 + F= 0 N=-25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66 X=-66.6381 + F= 0 N=-66 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12731 X= 12730.3 + F= 0 N= 12731 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830 X=-1830.69 + F= 0 N=-1830 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5487 X= 5486.39 + F= 0 N= 5487 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930 X=-28930.6 + F= 0 N=-28930 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014 X=-6014.53 + F= 0 N=-6014 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856 X=-8856.62 + F= 0 N=-8856 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382 X=-3382.87 + F= 0 N=-3382 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800 X=-5800.72 + F= 0 N=-5800 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29687 X= 29686.4 + F= 0 N= 29687 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CHR_X_S.80 b/NBS2/F_CHR_X_S.80 new file mode 100644 index 0000000..b630fea --- /dev/null +++ b/NBS2/F_CHR_X_S.80 @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_CHR_X_S.BAS b/NBS2/F_CHR_X_S.BAS new file mode 100644 index 0000000..b9efe15 --- /dev/null +++ b/NBS2/F_CHR_X_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:16 +REM FILENAME: F_CHR_X_S.BAS +REM SYNTAX: S$ = CHR$( X ) +REM UNIQUEID: F_CHR_X_S +REM FUNCTION: CHR$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = CHR$( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", 0 +DATA 2 , 0 , "", 1 +DATA 3 , 1 , "", -1 +DATA 4 , 0 , "", .4 +DATA 5 , 0 , "", -.4 +DATA 6 , 0 , "", .6 +DATA 7 , 1 , "", -.6 +DATA 8 , 0 , "þ", 254 +DATA 9 , 0 , "ÿ", 255 +DATA 10 , 1 , "", 256 +DATA 11 , 1 , "", 32000 +DATA 12 , 0 , "", -.227229 +DATA 13 , 0 , "", -.239157 +DATA 14 , 0 , "", -.213586 +DATA 15 , 0 , "", .274675 +DATA 16 , 0 , "", .169766 +DATA 17 , 0 , "", .318766 +DATA 18 , 0 , "", 2.06658E-2 +DATA 19 , 0 , "", .188257 +DATA 20 , 0 , "", -.277537 +DATA 21 , 0 , "", -.481303 +DATA 22 , 0 , "", .43556 +DATA 23 , 0 , "", -.210971 +DATA 24 , 0 , "", -.455216 +DATA 25 , 1 , "", -110.907 +DATA 26 , 0 , "j", 105.632 +DATA 27 , 1 , "", -114.341 +DATA 28 , 0 , "n", 109.706 +DATA 29 , 0 , "m", 109.198 +DATA 30 , 0 , "V", 85.8773 +DATA 31 , 1 , "", -58.3548 +DATA 32 , 0 , "", 29.6397 +DATA 33 , 1 , "", -108.36 +DATA 34 , 1 , "", -46.5199 +DATA 35 , 0 , "q", 112.521 +DATA 36 , 0 , "-", 45.4151 +DATA 37 , 0 , "e", 101.129 +DATA 38 , 0 , "A", 65.0473 +DATA 39 , 0 , "0", 48.4012 +DATA 40 , 0 , "z", 122.294 +DATA 41 , 1 , "", -56.1094 +DATA 42 , 1 , "", -121.087 +DATA 43 , 1 , "", -123.517 +DATA 44 , 1 , "", -97.6301 +DATA 45 , 1 , "", -64.0001 +DATA 46 , 1 , "", -25.6888 +DATA 47 , 0 , "", 14.8006 +DATA 48 , 1 , "", -61.0877 +DATA 49 , 1 , "", -66.6381 +DATA 50 , 1 , "", -5476.5 +DATA 51 , 1 , "", -21210.3 +DATA 52 , 1 , "", -28757.2 +DATA 53 , 1 , "", -28732.2 +DATA 54 , 1 , "", 12730.3 +DATA 55 , 1 , "", -1830.69 +DATA 56 , 1 , "", 5486.39 +DATA 57 , 1 , "", 22405.9 +DATA 58 , 1 , "", 30809.8 +DATA 59 , 1 , "", -28930.6 +DATA 60 , 1 , "", -6014.53 +DATA 61 , 1 , "", 17414.6 +DATA 62 , 1 , "", -10538.3 +DATA 63 , 1 , "", -17536.3 +DATA 64 , 1 , "", -8856.62 +DATA 65 , 1 , "", -5140.12 +DATA 66 , 1 , "", -8595.31 +DATA 67 , 1 , "", -3382.87 +DATA 68 , 1 , "", -5002.07 +DATA 69 , 1 , "", -5800.72 +DATA 70 , 1 , "", 29686.4 +DATA 71 , 1 , "", 2571. +DATA 72 , 1 , "", 31091. +DATA 73 , 1 , "", 14819. +DATA 74 , 1 , "", 3790.9 +DATA 75 , 1 , "", -4.2981E+9 +DATA 76 , 1 , "", -7.05453E+8 +DATA 77 , 1 , "", -3.10179E+9 +DATA 78 , 1 , "", -4.86159E+9 +DATA 79 , 1 , "", -8.62908E+8 +DATA 80 , 1 , "", -3.4101E+9 +DATA 81 , 1 , "", 3.3889E+9 +DATA 82 , 1 , "", 2.49826E+9 +DATA 83 , 1 , "", 2.3491E+9 +DATA 84 , 1 , "", 1.94745E+8 +DATA 85 , 1 , "", 2.02475E+9 +DATA 86 , 1 , "", -2.26748E+9 +DATA 87 , 1 , "", -2.10587E+9 +DATA 88 , 1 , "", 4.23585E+9 +DATA 89 , 1 , "", -2.66524E+9 +DATA 90 , 1 , "", 4.01052E+9 +DATA 91 , 1 , "", -4.87912E+9 +DATA 92 , 1 , "", 1.77556E+9 +DATA 93 , 1 , "", 2.87705E+8 +DATA 94 , 1 , "", 1.99977E+8 +DATA 95 , 1 , "", -3.39941E+9 +DATA 96 , 1 , "", -3.49119E+9 +DATA 97 , 1 , "", -2.86324E+9 +DATA 98 , 1 , "", 4.20418E+9 +DATA 99 , 1 , "", -3.1518E+9 +DATA 100 , 1 , "", 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CHR_X_S.OUT b/NBS2/F_CHR_X_S.OUT new file mode 100644 index 0000000..50a3a97 --- /dev/null +++ b/NBS2/F_CHR_X_S.OUT @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_CHR_X_S.dif b/NBS2/F_CHR_X_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CHR_X_S.run b/NBS2/F_CHR_X_S.run new file mode 100644 index 0000000..b630fea --- /dev/null +++ b/NBS2/F_CHR_X_S.run @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_CINT_X_N.80 b/NBS2/F_CINT_X_N.80 new file mode 100644 index 0000000..0bb97a6 --- /dev/null +++ b/NBS2/F_CINT_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CINT_X_N.BAS b/NBS2/F_CINT_X_N.BAS new file mode 100644 index 0000000..d87bc3e --- /dev/null +++ b/NBS2/F_CINT_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:17 +REM FILENAME: F_CINT_X_N.BAS +REM SYNTAX: N = CINT( X ) +REM UNIQUEID: F_CINT_X_N +REM FUNCTION: CINT +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CINT( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , 0 , .4 +DATA 5 , 0 , 0 , -.4 +DATA 6 , 0 , 1 , .6 +DATA 7 , 0 , -1 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , 0 , -.227229 +DATA 13 , 0 , 0 , -.239157 +DATA 14 , 0 , 0 , -.213586 +DATA 15 , 0 , 0 , .274675 +DATA 16 , 0 , 0 , .169766 +DATA 17 , 0 , 0 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 +DATA 20 , 0 , 0 , -.277537 +DATA 21 , 0 , 0 , -.481303 +DATA 22 , 0 , 0 , .43556 +DATA 23 , 0 , 0 , -.210971 +DATA 24 , 0 , 0 , -.455216 +DATA 25 , 0 , -111 , -110.907 +DATA 26 , 0 , 106 , 105.632 +DATA 27 , 0 , -114 , -114.341 +DATA 28 , 0 , 110 , 109.706 +DATA 29 , 0 , 109 , 109.198 +DATA 30 , 0 , 86 , 85.8773 +DATA 31 , 0 , -58 , -58.3548 +DATA 32 , 0 , 30 , 29.6397 +DATA 33 , 0 , -108 , -108.36 +DATA 34 , 0 , -47 , -46.5199 +DATA 35 , 0 , 113 , 112.521 +DATA 36 , 0 , 45 , 45.4151 +DATA 37 , 0 , 101 , 101.129 +DATA 38 , 0 , 65 , 65.0473 +DATA 39 , 0 , 48 , 48.4012 +DATA 40 , 0 , 122 , 122.294 +DATA 41 , 0 , -56 , -56.1094 +DATA 42 , 0 , -121 , -121.087 +DATA 43 , 0 , -124 , -123.517 +DATA 44 , 0 , -98 , -97.6301 +DATA 45 , 0 , -64 , -64.0001 +DATA 46 , 0 , -26 , -25.6888 +DATA 47 , 0 , 15 , 14.8006 +DATA 48 , 0 , -61 , -61.0877 +DATA 49 , 0 , -67 , -66.6381 +DATA 50 , 0 , -5476 , -5476.5 +DATA 51 , 0 , -21210 , -21210.3 +DATA 52 , 0 , -28757 , -28757.2 +DATA 53 , 0 , -28732 , -28732.2 +DATA 54 , 0 , 12730 , 12730.3 +DATA 55 , 0 , -1831 , -1830.69 +DATA 56 , 0 , 5486 , 5486.39 +DATA 57 , 0 , 22406 , 22405.9 +DATA 58 , 0 , 30810 , 30809.8 +DATA 59 , 0 , -28931 , -28930.6 +DATA 60 , 0 , -6015 , -6014.53 +DATA 61 , 0 , 17415 , 17414.6 +DATA 62 , 0 , -10538 , -10538.3 +DATA 63 , 0 , -17536 , -17536.3 +DATA 64 , 0 , -8857 , -8856.62 +DATA 65 , 0 , -5140 , -5140.12 +DATA 66 , 0 , -8595 , -8595.31 +DATA 67 , 0 , -3383 , -3382.87 +DATA 68 , 0 , -5002 , -5002.07 +DATA 69 , 0 , -5801 , -5800.72 +DATA 70 , 0 , 29686 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3791 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 +DATA 84 , 1 , 0 , 1.94745E+8 +DATA 85 , 1 , 0 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 1 , 0 , 1.77556E+9 +DATA 93 , 1 , 0 , 2.87705E+8 +DATA 94 , 1 , 0 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CINT_X_N.OUT b/NBS2/F_CINT_X_N.OUT new file mode 100644 index 0000000..f4c3648 --- /dev/null +++ b/NBS2/F_CINT_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CINT_X_N.dif b/NBS2/F_CINT_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CINT_X_N.run b/NBS2/F_CINT_X_N.run new file mode 100644 index 0000000..0bb97a6 --- /dev/null +++ b/NBS2/F_CINT_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CLNG_X_N.80 b/NBS2/F_CLNG_X_N.80 new file mode 100644 index 0000000..be3e7f7 --- /dev/null +++ b/NBS2/F_CLNG_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CLNG_X_N.BAS b/NBS2/F_CLNG_X_N.BAS new file mode 100644 index 0000000..e3b1002 --- /dev/null +++ b/NBS2/F_CLNG_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:17 +REM FILENAME: F_CLNG_X_N.BAS +REM SYNTAX: N = CLNG( X ) +REM UNIQUEID: F_CLNG_X_N +REM FUNCTION: CLNG +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CLNG( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , 0 , .4 +DATA 5 , 0 , 0 , -.4 +DATA 6 , 0 , 1 , .6 +DATA 7 , 0 , -1 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , 0 , -.227229 +DATA 13 , 0 , 0 , -.239157 +DATA 14 , 0 , 0 , -.213586 +DATA 15 , 0 , 0 , .274675 +DATA 16 , 0 , 0 , .169766 +DATA 17 , 0 , 0 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 +DATA 20 , 0 , 0 , -.277537 +DATA 21 , 0 , 0 , -.481303 +DATA 22 , 0 , 0 , .43556 +DATA 23 , 0 , 0 , -.210971 +DATA 24 , 0 , 0 , -.455216 +DATA 25 , 0 , -111 , -110.907 +DATA 26 , 0 , 106 , 105.632 +DATA 27 , 0 , -114 , -114.341 +DATA 28 , 0 , 110 , 109.706 +DATA 29 , 0 , 109 , 109.198 +DATA 30 , 0 , 86 , 85.8773 +DATA 31 , 0 , -58 , -58.3548 +DATA 32 , 0 , 30 , 29.6397 +DATA 33 , 0 , -108 , -108.36 +DATA 34 , 0 , -47 , -46.5199 +DATA 35 , 0 , 113 , 112.521 +DATA 36 , 0 , 45 , 45.4151 +DATA 37 , 0 , 101 , 101.129 +DATA 38 , 0 , 65 , 65.0473 +DATA 39 , 0 , 48 , 48.4012 +DATA 40 , 0 , 122 , 122.294 +DATA 41 , 0 , -56 , -56.1094 +DATA 42 , 0 , -121 , -121.087 +DATA 43 , 0 , -124 , -123.517 +DATA 44 , 0 , -98 , -97.6301 +DATA 45 , 0 , -64 , -64.0001 +DATA 46 , 0 , -26 , -25.6888 +DATA 47 , 0 , 15 , 14.8006 +DATA 48 , 0 , -61 , -61.0877 +DATA 49 , 0 , -67 , -66.6381 +DATA 50 , 0 , -5476 , -5476.5 +DATA 51 , 0 , -21210 , -21210.3 +DATA 52 , 0 , -28757 , -28757.2 +DATA 53 , 0 , -28732 , -28732.2 +DATA 54 , 0 , 12730 , 12730.3 +DATA 55 , 0 , -1831 , -1830.69 +DATA 56 , 0 , 5486 , 5486.39 +DATA 57 , 0 , 22406 , 22405.9 +DATA 58 , 0 , 30810 , 30809.8 +DATA 59 , 0 , -28931 , -28930.6 +DATA 60 , 0 , -6015 , -6014.53 +DATA 61 , 0 , 17415 , 17414.6 +DATA 62 , 0 , -10538 , -10538.3 +DATA 63 , 0 , -17536 , -17536.3 +DATA 64 , 0 , -8857 , -8856.62 +DATA 65 , 0 , -5140 , -5140.12 +DATA 66 , 0 , -8595 , -8595.31 +DATA 67 , 0 , -3383 , -3382.87 +DATA 68 , 0 , -5002 , -5002.07 +DATA 69 , 0 , -5801 , -5800.72 +DATA 70 , 0 , 29686 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3791 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CLNG_X_N.OUT b/NBS2/F_CLNG_X_N.OUT new file mode 100644 index 0000000..9303d49 --- /dev/null +++ b/NBS2/F_CLNG_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CLNG_X_N.dif b/NBS2/F_CLNG_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CLNG_X_N.run b/NBS2/F_CLNG_X_N.run new file mode 100644 index 0000000..be3e7f7 --- /dev/null +++ b/NBS2/F_CLNG_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COSH_X_N.80 b/NBS2/F_COSH_X_N.80 new file mode 100644 index 0000000..b725847 --- /dev/null +++ b/NBS2/F_COSH_X_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.54308 X= 1 + F= 0 N= 1.54308 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1.54308 X=-1 + F= 0 N= 1.54308 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.08107 X= .4 + F= 0 N= 1.08107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.08107 X=-.4 + F= 0 N= 1.08107 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.18547 X= .6 + F= 0 N= 1.18547 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1.18547 X=-.6 + F= 0 N= 1.18547 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.02275E+110 X= 254 + F= 0 N= 1.02275E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.78012E+110 X= 255 + F= 0 N= 2.78012E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 7.55714E+110 X= 256 + F= 0 N= 7.55714E+110 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.02593 X=-.227229 + F= 0 N= 1.02593 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.02873 X=-.239157 + F= 0 N= 1.02873 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.0229 X=-.213586 + F= 0 N= 1.0229 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.03796 X= .274675 + F= 0 N= 1.03796 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.01444 X= .169766 + F= 0 N= 1.01444 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.05124 X= .318766 + F= 0 N= 1.05124 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.00021 X= 2.06658E-2 + F= 0 N= 1.00021 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.01777 X= .188257 + F= 0 N= 1.01777 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.03876 X=-.277537 + F= 0 N= 1.03876 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.11808 X=-.481303 + F= 0 N= 1.11808 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.09637 X= .43556 + F= 0 N= 1.09637 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.02234 X=-.210971 + F= 0 N= 1.02234 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.10541 X=-.455216 + F= 0 N= 1.10541 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 7.33277E+47 X=-110.907 + F= 0 N= 7.33277E+47 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 3.75288E+45 X= 105.632 + F= 0 N= 3.75288E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.27319E+49 X=-114.341 + F= 0 N= 2.27319E+49 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.20638E+47 X= 109.706 + F= 0 N= 2.20638E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.32757E+47 X= 109.198 + F= 0 N= 1.32757E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.8857E+36 X= 85.8773 + F= 0 N= 9.8857E+36 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1.10189E+25 X=-58.3548 + F= 0 N= 1.10189E+25 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.72673E+12 X= 29.6397 + F= 0 N= 3.72673E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 5.74275E+46 X=-108.36 + F= 0 N= 5.74275E+46 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 7.98557E+19 X=-46.5199 + F= 0 N= 7.98557E+19 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 3.68315E+48 X= 112.521 + F= 0 N= 3.68315E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.64544E+19 X= 45.4151 + F= 0 N= 2.64544E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.15658E+43 X= 101.129 + F= 0 N= 4.15658E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.88492E+27 X= 65.0473 + F= 0 N= 8.88492E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.24015E+20 X= 48.4012 + F= 0 N= 5.24015E+20 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.46516E+52 X= 122.294 + F= 0 N= 6.46516E+52 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.16674E+24 X=-56.1094 + F= 0 N= 1.16674E+24 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 1.93369E+52 X=-121.087 + F= 0 N= 1.93369E+52 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.19645E+53 X=-123.517 + F= 0 N= 2.19645E+53 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.25656E+42 X=-97.6301 + F= 0 N= 1.25656E+42 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 3.11789E+27 X=-64.0001 + F= 0 N= 3.11789E+27 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 7.16926E+10 X=-25.6888 + F= 0 N= 7.16926E+10 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.33903E+6 X= 14.8006 + F= 0 N= 1.33903E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.69442E+26 X=-61.0877 + F= 0 N= 1.69442E+26 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 4.36043E+28 X=-66.6381 + F= 0 N= 4.36043E+28 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 1.79769E+308 X=-5476.5 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 1.79769E+308 X=-21210.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 1.79769E+308 X=-28757.2 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 1.79769E+308 X=-28732.2 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 1.79769E+308 X=-1830.69 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 1.79769E+308 X=-28930.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 1.79769E+308 X=-6014.53 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 1.79769E+308 X=-10538.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 1.79769E+308 X=-17536.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 1.79769E+308 X=-8856.62 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 1.79769E+308 X=-5140.12 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 1.79769E+308 X=-8595.31 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 1.79769E+308 X=-3382.87 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 1.79769E+308 X=-5002.07 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 1.79769E+308 X=-5800.72 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 1.79769E+308 X=-4.2981E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 1.79769E+308 X=-7.05453E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 1.79769E+308 X=-3.10179E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 1.79769E+308 X=-4.86159E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 1.79769E+308 X=-8.62908E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 1.79769E+308 X=-3.4101E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 1.79769E+308 X=-2.26748E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 1.79769E+308 X=-2.10587E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 1.79769E+308 X=-2.66524E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 1.79769E+308 X=-4.87912E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 1.79769E+308 X=-3.39941E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 1.79769E+308 X=-3.49119E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 1.79769E+308 X=-2.86324E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 1.79769E+308 X=-3.1518E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COSH_X_N.BAS b/NBS2/F_COSH_X_N.BAS new file mode 100644 index 0000000..d888789 --- /dev/null +++ b/NBS2/F_COSH_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:18 +REM FILENAME: F_COSH_X_N.BAS +REM SYNTAX: N = COSH( X ) +REM UNIQUEID: F_COSH_X_N +REM FUNCTION: COSH +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = COSH( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 1 , 0 +DATA 2 , 0 , 1.54308 , 1 +DATA 3 , 0 , 1.54308 , -1 +DATA 4 , 0 , 1.08107 , .4 +DATA 5 , 0 , 1.08107 , -.4 +DATA 6 , 0 , 1.18547 , .6 +DATA 7 , 0 , 1.18547 , -.6 +DATA 8 , 0 , 1.02275E+110 , 254 +DATA 9 , 0 , 2.78012E+110 , 255 +DATA 10 , 0 , 7.55714E+110 , 256 +DATA 11 , 1 , 1.79769E+308 , 32000 +DATA 12 , 0 , 1.02593 , -.227229 +DATA 13 , 0 , 1.02873 , -.239157 +DATA 14 , 0 , 1.0229 , -.213586 +DATA 15 , 0 , 1.03796 , .274675 +DATA 16 , 0 , 1.01444 , .169766 +DATA 17 , 0 , 1.05124 , .318766 +DATA 18 , 0 , 1.00021 , 2.06658E-2 +DATA 19 , 0 , 1.01777 , .188257 +DATA 20 , 0 , 1.03876 , -.277537 +DATA 21 , 0 , 1.11808 , -.481303 +DATA 22 , 0 , 1.09637 , .43556 +DATA 23 , 0 , 1.02234 , -.210971 +DATA 24 , 0 , 1.10541 , -.455216 +DATA 25 , 0 , 7.33277E+47 , -110.907 +DATA 26 , 0 , 3.75288E+45 , 105.632 +DATA 27 , 0 , 2.27319E+49 , -114.341 +DATA 28 , 0 , 2.20638E+47 , 109.706 +DATA 29 , 0 , 1.32757E+47 , 109.198 +DATA 30 , 0 , 9.8857E+36 , 85.8773 +DATA 31 , 0 , 1.10189E+25 , -58.3548 +DATA 32 , 0 , 3.72673E+12 , 29.6397 +DATA 33 , 0 , 5.74275E+46 , -108.36 +DATA 34 , 0 , 7.98557E+19 , -46.5199 +DATA 35 , 0 , 3.68315E+48 , 112.521 +DATA 36 , 0 , 2.64544E+19 , 45.4151 +DATA 37 , 0 , 4.15658E+43 , 101.129 +DATA 38 , 0 , 8.88492E+27 , 65.0473 +DATA 39 , 0 , 5.24015E+20 , 48.4012 +DATA 40 , 0 , 6.46516E+52 , 122.294 +DATA 41 , 0 , 1.16674E+24 , -56.1094 +DATA 42 , 0 , 1.93369E+52 , -121.087 +DATA 43 , 0 , 2.19645E+53 , -123.517 +DATA 44 , 0 , 1.25656E+42 , -97.6301 +DATA 45 , 0 , 3.11789E+27 , -64.0001 +DATA 46 , 0 , 7.16926E+10 , -25.6888 +DATA 47 , 0 , 1.33903E+6 , 14.8006 +DATA 48 , 0 , 1.69442E+26 , -61.0877 +DATA 49 , 0 , 4.36043E+28 , -66.6381 +DATA 50 , 1 , 1.79769E+308 , -5476.5 +DATA 51 , 1 , 1.79769E+308 , -21210.3 +DATA 52 , 1 , 1.79769E+308 , -28757.2 +DATA 53 , 1 , 1.79769E+308 , -28732.2 +DATA 54 , 1 , 1.79769E+308 , 12730.3 +DATA 55 , 1 , 1.79769E+308 , -1830.69 +DATA 56 , 1 , 1.79769E+308 , 5486.39 +DATA 57 , 1 , 1.79769E+308 , 22405.9 +DATA 58 , 1 , 1.79769E+308 , 30809.8 +DATA 59 , 1 , 1.79769E+308 , -28930.6 +DATA 60 , 1 , 1.79769E+308 , -6014.53 +DATA 61 , 1 , 1.79769E+308 , 17414.6 +DATA 62 , 1 , 1.79769E+308 , -10538.3 +DATA 63 , 1 , 1.79769E+308 , -17536.3 +DATA 64 , 1 , 1.79769E+308 , -8856.62 +DATA 65 , 1 , 1.79769E+308 , -5140.12 +DATA 66 , 1 , 1.79769E+308 , -8595.31 +DATA 67 , 1 , 1.79769E+308 , -3382.87 +DATA 68 , 1 , 1.79769E+308 , -5002.07 +DATA 69 , 1 , 1.79769E+308 , -5800.72 +DATA 70 , 1 , 1.79769E+308 , 29686.4 +DATA 71 , 1 , 1.79769E+308 , 2571. +DATA 72 , 1 , 1.79769E+308 , 31091. +DATA 73 , 1 , 1.79769E+308 , 14819. +DATA 74 , 1 , 1.79769E+308 , 3790.9 +DATA 75 , 1 , 1.79769E+308 , -4.2981E+9 +DATA 76 , 1 , 1.79769E+308 , -7.05453E+8 +DATA 77 , 1 , 1.79769E+308 , -3.10179E+9 +DATA 78 , 1 , 1.79769E+308 , -4.86159E+9 +DATA 79 , 1 , 1.79769E+308 , -8.62908E+8 +DATA 80 , 1 , 1.79769E+308 , -3.4101E+9 +DATA 81 , 1 , 1.79769E+308 , 3.3889E+9 +DATA 82 , 1 , 1.79769E+308 , 2.49826E+9 +DATA 83 , 1 , 1.79769E+308 , 2.3491E+9 +DATA 84 , 1 , 1.79769E+308 , 1.94745E+8 +DATA 85 , 1 , 1.79769E+308 , 2.02475E+9 +DATA 86 , 1 , 1.79769E+308 , -2.26748E+9 +DATA 87 , 1 , 1.79769E+308 , -2.10587E+9 +DATA 88 , 1 , 1.79769E+308 , 4.23585E+9 +DATA 89 , 1 , 1.79769E+308 , -2.66524E+9 +DATA 90 , 1 , 1.79769E+308 , 4.01052E+9 +DATA 91 , 1 , 1.79769E+308 , -4.87912E+9 +DATA 92 , 1 , 1.79769E+308 , 1.77556E+9 +DATA 93 , 1 , 1.79769E+308 , 2.87705E+8 +DATA 94 , 1 , 1.79769E+308 , 1.99977E+8 +DATA 95 , 1 , 1.79769E+308 , -3.39941E+9 +DATA 96 , 1 , 1.79769E+308 , -3.49119E+9 +DATA 97 , 1 , 1.79769E+308 , -2.86324E+9 +DATA 98 , 1 , 1.79769E+308 , 4.20418E+9 +DATA 99 , 1 , 1.79769E+308 , -3.1518E+9 +DATA 100 , 1 , 1.79769E+308 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_COSH_X_N.OUT b/NBS2/F_COSH_X_N.OUT new file mode 100644 index 0000000..c970499 --- /dev/null +++ b/NBS2/F_COSH_X_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.54308 X= 1 + F= 0 N= 1.54308 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1.54308 X=-1 + F= 0 N= 1.54308 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.08107 X= .4 + F= 0 N= 1.08107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.08107 X=-.4 + F= 0 N= 1.08107 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.18547 X= .6 + F= 0 N= 1.18547 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1.18547 X=-.6 + F= 0 N= 1.18547 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.02275E+110 X= 254 + F= 0 N= 1.02275E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.78012E+110 X= 255 + F= 0 N= 2.78012E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 7.55714E+110 X= 256 + F= 0 N= 7.55714E+110 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.02593 X=-.227229 + F= 0 N= 1.02593 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.02873 X=-.239157 + F= 0 N= 1.02873 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.0229 X=-.213586 + F= 0 N= 1.0229 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.03796 X= .274675 + F= 0 N= 1.03796 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.01444 X= .169766 + F= 0 N= 1.01444 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.05124 X= .318766 + F= 0 N= 1.05124 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.00021 X= 2.06658E-2 + F= 0 N= 1.00021 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.01777 X= .188257 + F= 0 N= 1.01777 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.03876 X=-.277537 + F= 0 N= 1.03876 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.11808 X=-.481303 + F= 0 N= 1.11808 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.09637 X= .43556 + F= 0 N= 1.09637 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.02234 X=-.210971 + F= 0 N= 1.02234 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.10541 X=-.455216 + F= 0 N= 1.10541 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 7.33277E+47 X=-110.907 + F= 0 N= 7.33277E+47 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 3.75288E+45 X= 105.632 + F= 0 N= 3.75288E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.27319E+49 X=-114.341 + F= 0 N= 2.27319E+49 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.20638E+47 X= 109.706 + F= 0 N= 2.20638E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.32757E+47 X= 109.198 + F= 0 N= 1.32757E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.8857E+36 X= 85.8773 + F= 0 N= 9.8857E+36 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1.10189E+25 X=-58.3548 + F= 0 N= 1.10189E+25 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.72673E+12 X= 29.6397 + F= 0 N= 3.72673E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 5.74275E+46 X=-108.36 + F= 0 N= 5.74275E+46 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 7.98557E+19 X=-46.5199 + F= 0 N= 7.98557E+19 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 3.68315E+48 X= 112.521 + F= 0 N= 3.68315E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.64544E+19 X= 45.4151 + F= 0 N= 2.64544E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.15658E+43 X= 101.129 + F= 0 N= 4.15658E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.88492E+27 X= 65.0473 + F= 0 N= 8.88492E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.24015E+20 X= 48.4012 + F= 0 N= 5.24015E+20 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.46516E+52 X= 122.294 + F= 0 N= 6.46516E+52 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.16674E+24 X=-56.1094 + F= 0 N= 1.16674E+24 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 1.93369E+52 X=-121.087 + F= 0 N= 1.93369E+52 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.19645E+53 X=-123.517 + F= 0 N= 2.19645E+53 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.25656E+42 X=-97.6301 + F= 0 N= 1.25656E+42 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 3.11789E+27 X=-64.0001 + F= 0 N= 3.11789E+27 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 7.16926E+10 X=-25.6888 + F= 0 N= 7.16926E+10 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.33903E+6 X= 14.8006 + F= 0 N= 1.33903E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.69442E+26 X=-61.0877 + F= 0 N= 1.69442E+26 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 4.36043E+28 X=-66.6381 + F= 0 N= 4.36043E+28 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 1.79769E+308 X=-5476.5 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 1.79769E+308 X=-21210.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 1.79769E+308 X=-28757.2 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 1.79769E+308 X=-28732.2 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 1.79769E+308 X=-1830.69 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 1.79769E+308 X=-28930.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 1.79769E+308 X=-6014.53 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 1.79769E+308 X=-10538.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 1.79769E+308 X=-17536.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 1.79769E+308 X=-8856.62 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 1.79769E+308 X=-5140.12 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 1.79769E+308 X=-8595.31 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 1.79769E+308 X=-3382.87 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 1.79769E+308 X=-5002.07 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 1.79769E+308 X=-5800.72 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 1.79769E+308 X=-4.2981E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 1.79769E+308 X=-7.05453E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 1.79769E+308 X=-3.10179E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 1.79769E+308 X=-4.86159E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 1.79769E+308 X=-8.62908E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 1.79769E+308 X=-3.4101E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 1.79769E+308 X=-2.26748E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 1.79769E+308 X=-2.10587E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 1.79769E+308 X=-2.66524E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 1.79769E+308 X=-4.87912E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 1.79769E+308 X=-3.39941E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 1.79769E+308 X=-3.49119E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 1.79769E+308 X=-2.86324E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 1.79769E+308 X=-3.1518E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COSH_X_N.dif b/NBS2/F_COSH_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_COSH_X_N.run b/NBS2/F_COSH_X_N.run new file mode 100644 index 0000000..b725847 --- /dev/null +++ b/NBS2/F_COSH_X_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.54308 X= 1 + F= 0 N= 1.54308 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1.54308 X=-1 + F= 0 N= 1.54308 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.08107 X= .4 + F= 0 N= 1.08107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.08107 X=-.4 + F= 0 N= 1.08107 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.18547 X= .6 + F= 0 N= 1.18547 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1.18547 X=-.6 + F= 0 N= 1.18547 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.02275E+110 X= 254 + F= 0 N= 1.02275E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.78012E+110 X= 255 + F= 0 N= 2.78012E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 7.55714E+110 X= 256 + F= 0 N= 7.55714E+110 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.02593 X=-.227229 + F= 0 N= 1.02593 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.02873 X=-.239157 + F= 0 N= 1.02873 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.0229 X=-.213586 + F= 0 N= 1.0229 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.03796 X= .274675 + F= 0 N= 1.03796 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.01444 X= .169766 + F= 0 N= 1.01444 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.05124 X= .318766 + F= 0 N= 1.05124 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.00021 X= 2.06658E-2 + F= 0 N= 1.00021 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.01777 X= .188257 + F= 0 N= 1.01777 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.03876 X=-.277537 + F= 0 N= 1.03876 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.11808 X=-.481303 + F= 0 N= 1.11808 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.09637 X= .43556 + F= 0 N= 1.09637 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.02234 X=-.210971 + F= 0 N= 1.02234 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.10541 X=-.455216 + F= 0 N= 1.10541 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 7.33277E+47 X=-110.907 + F= 0 N= 7.33277E+47 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 3.75288E+45 X= 105.632 + F= 0 N= 3.75288E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.27319E+49 X=-114.341 + F= 0 N= 2.27319E+49 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.20638E+47 X= 109.706 + F= 0 N= 2.20638E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.32757E+47 X= 109.198 + F= 0 N= 1.32757E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.8857E+36 X= 85.8773 + F= 0 N= 9.8857E+36 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1.10189E+25 X=-58.3548 + F= 0 N= 1.10189E+25 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.72673E+12 X= 29.6397 + F= 0 N= 3.72673E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 5.74275E+46 X=-108.36 + F= 0 N= 5.74275E+46 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 7.98557E+19 X=-46.5199 + F= 0 N= 7.98557E+19 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 3.68315E+48 X= 112.521 + F= 0 N= 3.68315E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.64544E+19 X= 45.4151 + F= 0 N= 2.64544E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.15658E+43 X= 101.129 + F= 0 N= 4.15658E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.88492E+27 X= 65.0473 + F= 0 N= 8.88492E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.24015E+20 X= 48.4012 + F= 0 N= 5.24015E+20 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.46516E+52 X= 122.294 + F= 0 N= 6.46516E+52 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.16674E+24 X=-56.1094 + F= 0 N= 1.16674E+24 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 1.93369E+52 X=-121.087 + F= 0 N= 1.93369E+52 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.19645E+53 X=-123.517 + F= 0 N= 2.19645E+53 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.25656E+42 X=-97.6301 + F= 0 N= 1.25656E+42 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 3.11789E+27 X=-64.0001 + F= 0 N= 3.11789E+27 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 7.16926E+10 X=-25.6888 + F= 0 N= 7.16926E+10 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.33903E+6 X= 14.8006 + F= 0 N= 1.33903E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.69442E+26 X=-61.0877 + F= 0 N= 1.69442E+26 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 4.36043E+28 X=-66.6381 + F= 0 N= 4.36043E+28 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 1.79769E+308 X=-5476.5 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 1.79769E+308 X=-21210.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 1.79769E+308 X=-28757.2 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 1.79769E+308 X=-28732.2 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 1.79769E+308 X=-1830.69 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 1.79769E+308 X=-28930.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 1.79769E+308 X=-6014.53 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 1.79769E+308 X=-10538.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 1.79769E+308 X=-17536.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 1.79769E+308 X=-8856.62 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 1.79769E+308 X=-5140.12 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 1.79769E+308 X=-8595.31 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 1.79769E+308 X=-3382.87 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 1.79769E+308 X=-5002.07 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 1.79769E+308 X=-5800.72 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 1.79769E+308 X=-4.2981E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 1.79769E+308 X=-7.05453E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 1.79769E+308 X=-3.10179E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 1.79769E+308 X=-4.86159E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 1.79769E+308 X=-8.62908E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 1.79769E+308 X=-3.4101E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 1.79769E+308 X=-2.26748E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 1.79769E+308 X=-2.10587E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 1.79769E+308 X=-2.66524E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 1.79769E+308 X=-4.87912E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 1.79769E+308 X=-3.39941E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 1.79769E+308 X=-3.49119E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 1.79769E+308 X=-2.86324E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 1.79769E+308 X=-3.1518E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COS_X_N.80 b/NBS2/F_COS_X_N.80 new file mode 100644 index 0000000..6278e08 --- /dev/null +++ b/NBS2/F_COS_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .540302 X= 1 + F= 0 N= .540302 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= .540302 X=-1 + F= 0 N= .540302 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .921061 X= .4 + F= 0 N= .921061 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .921061 X=-.4 + F= 0 N= .921061 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .825336 X= .6 + F= 0 N= .825336 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .825336 X=-.6 + F= 0 N= .825336 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-.892018 X= 254 + F= 0 N=-.892018 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-.862304 X= 255 + F= 0 N=-.862304 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-3.97908E-2 X= 256 + F= 0 N=-3.97908E-2 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= .965674 X= 32000 + F= 0 N= .965674 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .974294 X=-.227229 + F= 0 N= .974294 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .971538 X=-.239157 + F= 0 N= .971538 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .977277 X=-.213586 + F= 0 N= .977277 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .962513 X= .274675 + F= 0 N= .962513 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .985624 X= .169766 + F= 0 N= .985624 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .949623 X= .318766 + F= 0 N= .949623 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .999786 X= 2.06658E-2 + F= 0 N= .999786 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .982332 X= .188257 + F= 0 N= .982332 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .961733 X=-.277537 + F= 0 N= .961733 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .886392 X=-.481303 + F= 0 N= .886392 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .906634 X= .43556 + F= 0 N= .906634 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .977828 X=-.210971 + F= 0 N= .977828 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .898166 X=-.455216 + F= 0 N= .898166 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.58066 X=-110.907 + F= 0 N=-.58066 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .378936 X= 105.632 + F= 0 N= .378936 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= .321328 X=-114.341 + F= 0 N= .321328 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-.968976 X= 109.706 + F= 0 N=-.968976 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-.726389 X= 109.198 + F= 0 N=-.726389 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-.493838 X= 85.8773 + F= 0 N=-.493838 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.23317 X=-58.3548 + F= 0 N=-.23317 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-.203988 X= 29.6397 + F= 0 N=-.203988 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= .024944 X=-108.36 + F= 0 N= .024944 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.823076 X=-46.5199 + F= 0 N=-.823076 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .838465 X= 112.521 + F= 0 N= .838465 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .137556 X= 45.4151 + F= 0 N= .137556 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .826443 X= 101.129 + F= 0 N= .826443 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-.600919 X= 65.0473 + F= 0 N=-.600919 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-.289291 X= 48.4012 + F= 0 N=-.289291 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-.974095 X= 122.294 + F= 0 N=-.974095 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .905063 X=-56.1094 + F= 0 N= .905063 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.135267 X=-121.087 + F= 0 N=-.135267 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.544598 X=-123.517 + F= 0 N=-.544598 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.971165 X=-97.6301 + F= 0 N=-.971165 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= .391765 X=-64.0001 + F= 0 N= .391765 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= .849342 X=-25.6888 + F= 0 N= .849342 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-.615825 X= 14.8006 + F= 0 N=-.615825 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.17249 X=-61.0877 + F= 0 N=-.17249 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.78713 X=-66.6381 + F= 0 N=-.78713 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.762256 X=-5476.5 + F= 0 N=-.762256 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.162083 X=-21210.3 + F= 0 N=-.162083 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .590473 X=-28757.2 + F= 0 N= .590473 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .692094 X=-28732.2 + F= 0 N= .692094 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .843748 X= 12730.3 + F= 0 N= .843748 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.653561 X=-1830.69 + F= 0 N=-.653561 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .390863 X= 5486.39 + F= 0 N= .390863 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .998128 X= 22405.9 + F= 0 N= .998128 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-.979898 X= 30809.8 + F= 0 N=-.979898 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.947091 X=-28930.6 + F= 0 N=-.947091 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 4.91155E-2 X=-6014.53 + F= 0 N= 4.91155E-2 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-.730378 X= 17414.6 + F= 0 N=-.730378 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= .171701 X=-10538.3 + F= 0 N= .171701 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= .997538 X=-17536.3 + F= 0 N= .997538 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.891428 X=-8856.62 + F= 0 N=-.891428 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= .889558 X=-5140.12 + F= 0 N= .889558 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= .996174 X=-8595.31 + F= 0 N= .996174 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.810795 X=-3382.87 + F= 0 N=-.810795 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= .793355 X=-5002.07 + F= 0 N= .793355 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= .22879 X=-5800.72 + F= 0 N= .22879 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-7.96955E-2 X= 29686.4 + F= 0 N=-7.96955E-2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .383504 X= 2571 + F= 0 N= .383504 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-.226326 X= 31091 + F= 0 N=-.226326 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-.994232 X= 14819 + F= 0 N=-.994232 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-.538338 X= 3790.9 + F= 0 N=-.538338 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .820941 X=-4.2981E+9 + F= 0 N= .820941 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= .907466 X=-7.05453E+8 + F= 0 N= .907466 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .912717 X=-3.10179E+9 + F= 0 N= .912717 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .225051 X=-4.86159E+9 + F= 0 N= .225051 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-.668159 X=-8.62908E+8 + F= 0 N=-.668159 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-.924293 X=-3.4101E+9 + F= 0 N=-.924293 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-.617246 X= 3.3889E+9 + F= 0 N=-.617246 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .690213 X= 2.49826E+9 + F= 0 N= .690213 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= .409631 X= 2.3491E+9 + F= 0 N= .409631 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-.78016 X= 1.94745E+8 + F= 0 N=-.78016 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .987377 X= 2.02475E+9 + F= 0 N= .987377 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-.647108 X=-2.26748E+9 + F= 0 N=-.647108 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= .998426 X=-2.10587E+9 + F= 0 N= .998426 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-.333976 X= 4.23585E+9 + F= 0 N=-.333976 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-.986436 X=-2.66524E+9 + F= 0 N=-.986436 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-.679529 X= 4.01052E+9 + F= 0 N=-.679529 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .926333 X=-4.87912E+9 + F= 0 N= .926333 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3.92327E-2 X= 1.77556E+9 + F= 0 N= 3.92327E-2 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= .817259 X= 2.87705E+8 + F= 0 N= .817259 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .941543 X= 1.99977E+8 + F= 0 N= .941543 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= .823462 X=-3.39941E+9 + F= 0 N= .823462 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .143974 X=-3.49119E+9 + F= 0 N= .143974 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-5.29952E-2 X=-2.86324E+9 + F= 0 N=-5.29952E-2 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-.597479 X= 4.20418E+9 + F= 0 N=-.597479 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-.651664 X=-3.1518E+9 + F= 0 N=-.651664 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .717104 X= 4.60615E+9 + F= 0 N= .717104 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COS_X_N.BAS b/NBS2/F_COS_X_N.BAS new file mode 100644 index 0000000..71de332 --- /dev/null +++ b/NBS2/F_COS_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:17 +REM FILENAME: F_COS_X_N.BAS +REM SYNTAX: N = COS( X ) +REM UNIQUEID: F_COS_X_N +REM FUNCTION: COS +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = COS( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 1 , 0 +DATA 2 , 0 , .540302 , 1 +DATA 3 , 0 , .540302 , -1 +DATA 4 , 0 , .921061 , .4 +DATA 5 , 0 , .921061 , -.4 +DATA 6 , 0 , .825336 , .6 +DATA 7 , 0 , .825336 , -.6 +DATA 8 , 0 , -.892018 , 254 +DATA 9 , 0 , -.862304 , 255 +DATA 10 , 0 , -3.97908E-2 , 256 +DATA 11 , 0 , .965674 , 32000 +DATA 12 , 0 , .974294 , -.227229 +DATA 13 , 0 , .971538 , -.239157 +DATA 14 , 0 , .977277 , -.213586 +DATA 15 , 0 , .962513 , .274675 +DATA 16 , 0 , .985624 , .169766 +DATA 17 , 0 , .949623 , .318766 +DATA 18 , 0 , .999786 , 2.06658E-2 +DATA 19 , 0 , .982332 , .188257 +DATA 20 , 0 , .961733 , -.277537 +DATA 21 , 0 , .886392 , -.481303 +DATA 22 , 0 , .906634 , .43556 +DATA 23 , 0 , .977828 , -.210971 +DATA 24 , 0 , .898166 , -.455216 +DATA 25 , 0 , -.58066 , -110.907 +DATA 26 , 0 , .378936 , 105.632 +DATA 27 , 0 , .321328 , -114.341 +DATA 28 , 0 , -.968976 , 109.706 +DATA 29 , 0 , -.726389 , 109.198 +DATA 30 , 0 , -.493838 , 85.8773 +DATA 31 , 0 , -.23317 , -58.3548 +DATA 32 , 0 , -.203988 , 29.6397 +DATA 33 , 0 , .024944 , -108.36 +DATA 34 , 0 , -.823076 , -46.5199 +DATA 35 , 0 , .838465 , 112.521 +DATA 36 , 0 , .137556 , 45.4151 +DATA 37 , 0 , .826443 , 101.129 +DATA 38 , 0 , -.600919 , 65.0473 +DATA 39 , 0 , -.289291 , 48.4012 +DATA 40 , 0 , -.974095 , 122.294 +DATA 41 , 0 , .905063 , -56.1094 +DATA 42 , 0 , -.135267 , -121.087 +DATA 43 , 0 , -.544598 , -123.517 +DATA 44 , 0 , -.971165 , -97.6301 +DATA 45 , 0 , .391765 , -64.0001 +DATA 46 , 0 , .849342 , -25.6888 +DATA 47 , 0 , -.615825 , 14.8006 +DATA 48 , 0 , -.17249 , -61.0877 +DATA 49 , 0 , -.78713 , -66.6381 +DATA 50 , 0 , -.762256 , -5476.5 +DATA 51 , 0 , -.162083 , -21210.3 +DATA 52 , 0 , .590473 , -28757.2 +DATA 53 , 0 , .692094 , -28732.2 +DATA 54 , 0 , .843748 , 12730.3 +DATA 55 , 0 , -.653561 , -1830.69 +DATA 56 , 0 , .390863 , 5486.39 +DATA 57 , 0 , .998128 , 22405.9 +DATA 58 , 0 , -.979898 , 30809.8 +DATA 59 , 0 , -.947091 , -28930.6 +DATA 60 , 0 , 4.91155E-2 , -6014.53 +DATA 61 , 0 , -.730378 , 17414.6 +DATA 62 , 0 , .171701 , -10538.3 +DATA 63 , 0 , .997538 , -17536.3 +DATA 64 , 0 , -.891428 , -8856.62 +DATA 65 , 0 , .889558 , -5140.12 +DATA 66 , 0 , .996174 , -8595.31 +DATA 67 , 0 , -.810795 , -3382.87 +DATA 68 , 0 , .793355 , -5002.07 +DATA 69 , 0 , .22879 , -5800.72 +DATA 70 , 0 , -7.96955E-2 , 29686.4 +DATA 71 , 0 , .383504 , 2571. +DATA 72 , 0 , -.226326 , 31091. +DATA 73 , 0 , -.994232 , 14819. +DATA 74 , 0 , -.538338 , 3790.9 +DATA 75 , 0 , .820941 , -4.2981E+9 +DATA 76 , 0 , .907466 , -7.05453E+8 +DATA 77 , 0 , .912717 , -3.10179E+9 +DATA 78 , 0 , .225051 , -4.86159E+9 +DATA 79 , 0 , -.668159 , -8.62908E+8 +DATA 80 , 0 , -.924293 , -3.4101E+9 +DATA 81 , 0 , -.617246 , 3.3889E+9 +DATA 82 , 0 , .690213 , 2.49826E+9 +DATA 83 , 0 , .409631 , 2.3491E+9 +DATA 84 , 0 , -.78016 , 1.94745E+8 +DATA 85 , 0 , .987377 , 2.02475E+9 +DATA 86 , 0 , -.647108 , -2.26748E+9 +DATA 87 , 0 , .998426 , -2.10587E+9 +DATA 88 , 0 , -.333976 , 4.23585E+9 +DATA 89 , 0 , -.986436 , -2.66524E+9 +DATA 90 , 0 , -.679529 , 4.01052E+9 +DATA 91 , 0 , .926333 , -4.87912E+9 +DATA 92 , 0 , 3.92327E-2 , 1.77556E+9 +DATA 93 , 0 , .817259 , 2.87705E+8 +DATA 94 , 0 , .941543 , 1.99977E+8 +DATA 95 , 0 , .823462 , -3.39941E+9 +DATA 96 , 0 , .143974 , -3.49119E+9 +DATA 97 , 0 , -5.29952E-2 , -2.86324E+9 +DATA 98 , 0 , -.597479 , 4.20418E+9 +DATA 99 , 0 , -.651664 , -3.1518E+9 +DATA 100 , 0 , .717104 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_COS_X_N.OUT b/NBS2/F_COS_X_N.OUT new file mode 100644 index 0000000..3c2d9aa --- /dev/null +++ b/NBS2/F_COS_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .540302 X= 1 + F= 0 N= .540302 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= .540302 X=-1 + F= 0 N= .540302 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .921061 X= .4 + F= 0 N= .921061 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .921061 X=-.4 + F= 0 N= .921061 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .825336 X= .6 + F= 0 N= .825336 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .825336 X=-.6 + F= 0 N= .825336 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-.892018 X= 254 + F= 0 N=-.892018 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-.862304 X= 255 + F= 0 N=-.862304 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-3.97908E-2 X= 256 + F= 0 N=-3.97908E-2 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= .965674 X= 32000 + F= 0 N= .965674 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .974294 X=-.227229 + F= 0 N= .974294 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .971538 X=-.239157 + F= 0 N= .971538 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .977277 X=-.213586 + F= 0 N= .977277 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .962513 X= .274675 + F= 0 N= .962513 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .985624 X= .169766 + F= 0 N= .985624 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .949623 X= .318766 + F= 0 N= .949623 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .999786 X= 2.06658E-2 + F= 0 N= .999786 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .982332 X= .188257 + F= 0 N= .982332 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .961733 X=-.277537 + F= 0 N= .961733 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .886392 X=-.481303 + F= 0 N= .886392 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .906634 X= .43556 + F= 0 N= .906634 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .977828 X=-.210971 + F= 0 N= .977828 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .898166 X=-.455216 + F= 0 N= .898166 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.58066 X=-110.907 + F= 0 N=-.58066 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .378936 X= 105.632 + F= 0 N= .378936 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= .321328 X=-114.341 + F= 0 N= .321328 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-.968976 X= 109.706 + F= 0 N=-.968976 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-.726389 X= 109.198 + F= 0 N=-.726389 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-.493838 X= 85.8773 + F= 0 N=-.493838 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.23317 X=-58.3548 + F= 0 N=-.23317 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-.203988 X= 29.6397 + F= 0 N=-.203988 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= .024944 X=-108.36 + F= 0 N= .024944 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.823076 X=-46.5199 + F= 0 N=-.823076 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .838465 X= 112.521 + F= 0 N= .838465 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .137556 X= 45.4151 + F= 0 N= .137556 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .826443 X= 101.129 + F= 0 N= .826443 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-.600919 X= 65.0473 + F= 0 N=-.600919 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-.289291 X= 48.4012 + F= 0 N=-.289291 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-.974095 X= 122.294 + F= 0 N=-.974095 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .905063 X=-56.1094 + F= 0 N= .905063 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.135267 X=-121.087 + F= 0 N=-.135267 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.544598 X=-123.517 + F= 0 N=-.544598 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.971165 X=-97.6301 + F= 0 N=-.971165 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= .391765 X=-64.0001 + F= 0 N= .391765 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= .849342 X=-25.6888 + F= 0 N= .849342 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-.615825 X= 14.8006 + F= 0 N=-.615825 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.17249 X=-61.0877 + F= 0 N=-.17249 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.78713 X=-66.6381 + F= 0 N=-.78713 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.762256 X=-5476.5 + F= 0 N=-.762256 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.162083 X=-21210.3 + F= 0 N=-.162083 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .590473 X=-28757.2 + F= 0 N= .590473 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .692094 X=-28732.2 + F= 0 N= .692094 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .843748 X= 12730.3 + F= 0 N= .843748 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.653561 X=-1830.69 + F= 0 N=-.653561 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .390863 X= 5486.39 + F= 0 N= .390863 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .998128 X= 22405.9 + F= 0 N= .998128 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-.979898 X= 30809.8 + F= 0 N=-.979898 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.947091 X=-28930.6 + F= 0 N=-.947091 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 4.91155E-2 X=-6014.53 + F= 0 N= 4.91155E-2 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-.730378 X= 17414.6 + F= 0 N=-.730378 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= .171701 X=-10538.3 + F= 0 N= .171701 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= .997538 X=-17536.3 + F= 0 N= .997538 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.891428 X=-8856.62 + F= 0 N=-.891428 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= .889558 X=-5140.12 + F= 0 N= .889558 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= .996174 X=-8595.31 + F= 0 N= .996174 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.810795 X=-3382.87 + F= 0 N=-.810795 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= .793355 X=-5002.07 + F= 0 N= .793355 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= .22879 X=-5800.72 + F= 0 N= .22879 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-7.96955E-2 X= 29686.4 + F= 0 N=-7.96955E-2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .383504 X= 2571 + F= 0 N= .383504 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-.226326 X= 31091 + F= 0 N=-.226326 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-.994232 X= 14819 + F= 0 N=-.994232 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-.538338 X= 3790.9 + F= 0 N=-.538338 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .820941 X=-4.2981E+9 + F= 0 N= .820941 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= .907466 X=-7.05453E+8 + F= 0 N= .907466 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .912717 X=-3.10179E+9 + F= 0 N= .912717 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .225051 X=-4.86159E+9 + F= 0 N= .225051 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-.668159 X=-8.62908E+8 + F= 0 N=-.668159 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-.924293 X=-3.4101E+9 + F= 0 N=-.924293 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-.617246 X= 3.3889E+9 + F= 0 N=-.617246 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .690213 X= 2.49826E+9 + F= 0 N= .690213 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= .409631 X= 2.3491E+9 + F= 0 N= .409631 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-.78016 X= 1.94745E+8 + F= 0 N=-.78016 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .987377 X= 2.02475E+9 + F= 0 N= .987377 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-.647108 X=-2.26748E+9 + F= 0 N=-.647108 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= .998426 X=-2.10587E+9 + F= 0 N= .998426 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-.333976 X= 4.23585E+9 + F= 0 N=-.333976 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-.986436 X=-2.66524E+9 + F= 0 N=-.986436 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-.679529 X= 4.01052E+9 + F= 0 N=-.679529 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .926333 X=-4.87912E+9 + F= 0 N= .926333 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3.92327E-2 X= 1.77556E+9 + F= 0 N= 3.92327E-2 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= .817259 X= 2.87705E+8 + F= 0 N= .817259 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .941543 X= 1.99977E+8 + F= 0 N= .941543 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= .823462 X=-3.39941E+9 + F= 0 N= .823462 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .143974 X=-3.49119E+9 + F= 0 N= .143974 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-5.29952E-2 X=-2.86324E+9 + F= 0 N=-5.29952E-2 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-.597479 X= 4.20418E+9 + F= 0 N=-.597479 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-.651664 X=-3.1518E+9 + F= 0 N=-.651664 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .717104 X= 4.60615E+9 + F= 0 N= .717104 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COS_X_N.dif b/NBS2/F_COS_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_COS_X_N.run b/NBS2/F_COS_X_N.run new file mode 100644 index 0000000..6278e08 --- /dev/null +++ b/NBS2/F_COS_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .540302 X= 1 + F= 0 N= .540302 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= .540302 X=-1 + F= 0 N= .540302 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .921061 X= .4 + F= 0 N= .921061 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .921061 X=-.4 + F= 0 N= .921061 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .825336 X= .6 + F= 0 N= .825336 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .825336 X=-.6 + F= 0 N= .825336 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-.892018 X= 254 + F= 0 N=-.892018 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-.862304 X= 255 + F= 0 N=-.862304 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-3.97908E-2 X= 256 + F= 0 N=-3.97908E-2 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= .965674 X= 32000 + F= 0 N= .965674 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .974294 X=-.227229 + F= 0 N= .974294 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .971538 X=-.239157 + F= 0 N= .971538 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .977277 X=-.213586 + F= 0 N= .977277 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .962513 X= .274675 + F= 0 N= .962513 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .985624 X= .169766 + F= 0 N= .985624 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .949623 X= .318766 + F= 0 N= .949623 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .999786 X= 2.06658E-2 + F= 0 N= .999786 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .982332 X= .188257 + F= 0 N= .982332 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .961733 X=-.277537 + F= 0 N= .961733 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .886392 X=-.481303 + F= 0 N= .886392 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .906634 X= .43556 + F= 0 N= .906634 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .977828 X=-.210971 + F= 0 N= .977828 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .898166 X=-.455216 + F= 0 N= .898166 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.58066 X=-110.907 + F= 0 N=-.58066 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .378936 X= 105.632 + F= 0 N= .378936 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= .321328 X=-114.341 + F= 0 N= .321328 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-.968976 X= 109.706 + F= 0 N=-.968976 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-.726389 X= 109.198 + F= 0 N=-.726389 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-.493838 X= 85.8773 + F= 0 N=-.493838 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.23317 X=-58.3548 + F= 0 N=-.23317 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-.203988 X= 29.6397 + F= 0 N=-.203988 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= .024944 X=-108.36 + F= 0 N= .024944 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.823076 X=-46.5199 + F= 0 N=-.823076 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .838465 X= 112.521 + F= 0 N= .838465 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .137556 X= 45.4151 + F= 0 N= .137556 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .826443 X= 101.129 + F= 0 N= .826443 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-.600919 X= 65.0473 + F= 0 N=-.600919 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-.289291 X= 48.4012 + F= 0 N=-.289291 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-.974095 X= 122.294 + F= 0 N=-.974095 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .905063 X=-56.1094 + F= 0 N= .905063 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.135267 X=-121.087 + F= 0 N=-.135267 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.544598 X=-123.517 + F= 0 N=-.544598 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.971165 X=-97.6301 + F= 0 N=-.971165 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= .391765 X=-64.0001 + F= 0 N= .391765 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= .849342 X=-25.6888 + F= 0 N= .849342 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-.615825 X= 14.8006 + F= 0 N=-.615825 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.17249 X=-61.0877 + F= 0 N=-.17249 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.78713 X=-66.6381 + F= 0 N=-.78713 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.762256 X=-5476.5 + F= 0 N=-.762256 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.162083 X=-21210.3 + F= 0 N=-.162083 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .590473 X=-28757.2 + F= 0 N= .590473 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .692094 X=-28732.2 + F= 0 N= .692094 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .843748 X= 12730.3 + F= 0 N= .843748 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.653561 X=-1830.69 + F= 0 N=-.653561 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .390863 X= 5486.39 + F= 0 N= .390863 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .998128 X= 22405.9 + F= 0 N= .998128 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-.979898 X= 30809.8 + F= 0 N=-.979898 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.947091 X=-28930.6 + F= 0 N=-.947091 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 4.91155E-2 X=-6014.53 + F= 0 N= 4.91155E-2 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-.730378 X= 17414.6 + F= 0 N=-.730378 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= .171701 X=-10538.3 + F= 0 N= .171701 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= .997538 X=-17536.3 + F= 0 N= .997538 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.891428 X=-8856.62 + F= 0 N=-.891428 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= .889558 X=-5140.12 + F= 0 N= .889558 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= .996174 X=-8595.31 + F= 0 N= .996174 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.810795 X=-3382.87 + F= 0 N=-.810795 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= .793355 X=-5002.07 + F= 0 N= .793355 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= .22879 X=-5800.72 + F= 0 N= .22879 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-7.96955E-2 X= 29686.4 + F= 0 N=-7.96955E-2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .383504 X= 2571 + F= 0 N= .383504 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-.226326 X= 31091 + F= 0 N=-.226326 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-.994232 X= 14819 + F= 0 N=-.994232 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-.538338 X= 3790.9 + F= 0 N=-.538338 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .820941 X=-4.2981E+9 + F= 0 N= .820941 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= .907466 X=-7.05453E+8 + F= 0 N= .907466 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .912717 X=-3.10179E+9 + F= 0 N= .912717 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .225051 X=-4.86159E+9 + F= 0 N= .225051 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-.668159 X=-8.62908E+8 + F= 0 N=-.668159 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-.924293 X=-3.4101E+9 + F= 0 N=-.924293 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-.617246 X= 3.3889E+9 + F= 0 N=-.617246 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .690213 X= 2.49826E+9 + F= 0 N= .690213 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= .409631 X= 2.3491E+9 + F= 0 N= .409631 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-.78016 X= 1.94745E+8 + F= 0 N=-.78016 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .987377 X= 2.02475E+9 + F= 0 N= .987377 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-.647108 X=-2.26748E+9 + F= 0 N=-.647108 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= .998426 X=-2.10587E+9 + F= 0 N= .998426 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-.333976 X= 4.23585E+9 + F= 0 N=-.333976 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-.986436 X=-2.66524E+9 + F= 0 N=-.986436 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-.679529 X= 4.01052E+9 + F= 0 N=-.679529 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .926333 X=-4.87912E+9 + F= 0 N= .926333 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3.92327E-2 X= 1.77556E+9 + F= 0 N= 3.92327E-2 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= .817259 X= 2.87705E+8 + F= 0 N= .817259 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .941543 X= 1.99977E+8 + F= 0 N= .941543 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= .823462 X=-3.39941E+9 + F= 0 N= .823462 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .143974 X=-3.49119E+9 + F= 0 N= .143974 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-5.29952E-2 X=-2.86324E+9 + F= 0 N=-5.29952E-2 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-.597479 X= 4.20418E+9 + F= 0 N=-.597479 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-.651664 X=-3.1518E+9 + F= 0 N=-.651664 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .717104 X= 4.60615E+9 + F= 0 N= .717104 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COT_X_N.80 b/NBS2/F_COT_X_N.80 new file mode 100644 index 0000000..097275c --- /dev/null +++ b/NBS2/F_COT_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .642093 X= 1 + F= 0 N= .642093 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.642093 X=-1 + F= 0 N=-.642093 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.36522 X= .4 + F= 0 N= 2.36522 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.36522 X=-.4 + F= 0 N=-2.36522 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.4617 X= .6 + F= 0 N= 1.4617 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1.4617 X=-.6 + F= 0 N=-1.4617 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-1.9735 X= 254 + F= 0 N=-1.9735 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1.70284 X= 255 + F= 0 N= 1.70284 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3.98223E-2 X= 256 + F= 0 N= 3.98223E-2 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-3.71762 X= 32000 + F= 0 N=-3.71762 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-4.32484 X=-.227229 + F= 0 N=-4.32484 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.10133 X=-.239157 + F= 0 N=-4.10133 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-4.61054 X=-.213586 + F= 0 N=-4.61054 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 3.54864 X= .274675 + F= 0 N= 3.54864 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 5.83376 X= .169766 + F= 0 N= 5.83376 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 3.03012 X= .318766 + F= 0 N= 3.03012 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 48.3822 X= 2.06658E-2 + F= 0 N= 48.3822 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.24899 X= .188257 + F= 0 N= 5.24899 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-3.51013 X=-.277537 + F= 0 N=-3.51013 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1.91473 X=-.481303 + F= 0 N=-1.91473 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.14884 X= .43556 + F= 0 N= 2.14884 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-4.66945 X=-.210971 + F= 0 N=-4.66945 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.04288 X=-.455216 + F= 0 N=-2.04288 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.713214 X=-110.907 + F= 0 N=-.713214 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-.409473 X= 105.632 + F= 0 N=-.409473 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.339323 X=-114.341 + F= 0 N=-.339323 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-3.92052 X= 109.706 + F= 0 N=-3.92052 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-1.0569 X= 109.198 + F= 0 N=-1.0569 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .567921 X= 85.8773 + F= 0 N= .567921 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= .239779 X=-58.3548 + F= 0 N= .239779 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .20837 X= 29.6397 + F= 0 N= .20837 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-2.49517E-2 X=-108.36 + F= 0 N=-2.49517E-2 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 1.44925 X=-46.5199 + F= 0 N= 1.44925 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-1.5386 X= 112.521 + F= 0 N=-1.5386 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .138876 X= 45.4151 + F= 0 N= .138876 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.46788 X= 101.129 + F= 0 N= 1.46788 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-.751798 X= 65.0473 + F= 0 N=-.751798 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .302213 X= 48.4012 + F= 0 N= .302213 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-4.30748 X= 122.294 + F= 0 N=-4.30748 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.12817 X=-56.1094 + F= 0 N= 2.12817 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= .136522 X=-121.087 + F= 0 N= .136522 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.649338 X=-123.517 + F= 0 N=-.649338 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-4.07352 X=-97.6301 + F= 0 N=-4.07352 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.425802 X=-64.0001 + F= 0 N=-.425802 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.60908 X=-25.6888 + F= 0 N=-1.60908 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-.781621 X= 14.8006 + F= 0 N=-.781621 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.175114 X=-61.0877 + F= 0 N=-.175114 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.27618 X=-66.6381 + F= 0 N=-1.27618 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.17764 X=-5476.5 + F= 0 N=-1.17764 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.164254 X=-21210.3 + F= 0 N=-.164254 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .731638 X=-28757.2 + F= 0 N= .731638 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .958836 X=-28732.2 + F= 0 N= .958836 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.57199 X= 12730.3 + F= 0 N= 1.57199 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= .8635 X=-1830.69 + F= 0 N= .8635 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .424644 X= 5486.39 + F= 0 N= .424644 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 16.3209 X= 22405.9 + F= 0 N= 16.3209 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4.9118 X= 30809.8 + F= 0 N= 4.9118 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 2.95077 X=-28930.6 + F= 0 N= 2.95077 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-4.91749E-2 X=-6014.53 + F= 0 N=-4.91749E-2 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.0693 X= 17414.6 + F= 0 N= 1.0693 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.17429 X=-10538.3 + F= 0 N=-.17429 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 14.2232 X=-17536.3 + F= 0 N= 14.2232 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.96713 X=-8856.62 + F= 0 N=-1.96713 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1.94728 X=-5140.12 + F= 0 N=-1.94728 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 11.3994 X=-8595.31 + F= 0 N= 11.3994 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1.38519 X=-3382.87 + F= 0 N= 1.38519 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.30323 X=-5002.07 + F= 0 N=-1.30323 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.235024 X=-5800.72 + F= 0 N=-.235024 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 7.99498E-2 X= 29686.4 + F= 0 N= 7.99498E-2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .415254 X= 2571 + F= 0 N= .415254 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-.232355 X= 31091 + F= 0 N=-.232355 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 9.27055 X= 14819 + F= 0 N= 9.27055 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-.638803 X= 3790.9 + F= 0 N=-.638803 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.43769 X=-4.2981E+9 + F= 0 N= 1.43769 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.15999 X=-7.05453E+8 + F= 0 N=-2.15999 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.23381 X=-3.10179E+9 + F= 0 N= 2.23381 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .230976 X=-4.86159E+9 + F= 0 N= .230976 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-.898042 X=-8.62908E+8 + F= 0 N=-.898042 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 2.42162 X=-3.4101E+9 + F= 0 N= 2.42162 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= .784532 X= 3.3889E+9 + F= 0 N= .784532 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .953851 X= 2.49826E+9 + F= 0 N= .953851 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-.449034 X= 2.3491E+9 + F= 0 N=-.449034 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-1.2471 X= 1.94745E+8 + F= 0 N=-1.2471 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 6.23385 X= 2.02475E+9 + F= 0 N= 6.23385 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= .848779 X=-2.26748E+9 + F= 0 N= .848779 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-17.8045 X=-2.10587E+9 + F= 0 N=-17.8045 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= .35432 X= 4.23585E+9 + F= 0 N= .35432 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-6.00957 X=-2.66524E+9 + F= 0 N=-6.00957 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-.926233 X= 4.01052E+9 + F= 0 N=-.926233 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.45903 X=-4.87912E+9 + F= 0 N= 2.45903 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-3.92629E-2 X= 1.77556E+9 + F= 0 N=-3.92629E-2 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-1.41819 X= 2.87705E+8 + F= 0 N=-1.41819 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.79479 X= 1.99977E+8 + F= 0 N= 2.79479 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.45136 X=-3.39941E+9 + F= 0 N=-1.45136 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .14549 X=-3.49119E+9 + F= 0 N= .14549 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.30698E-2 X=-2.86324E+9 + F= 0 N= 5.30698E-2 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= .745094 X= 4.20418E+9 + F= 0 N= .745094 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-.859138 X=-3.1518E+9 + F= 0 N=-.859138 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.02889 X= 4.60615E+9 + F= 0 N= 1.02889 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COT_X_N.BAS b/NBS2/F_COT_X_N.BAS new file mode 100644 index 0000000..117e190 --- /dev/null +++ b/NBS2/F_COT_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:18 +REM FILENAME: F_COT_X_N.BAS +REM SYNTAX: N = COT( X ) +REM UNIQUEID: F_COT_X_N +REM FUNCTION: COT +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = COT( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , 0 +DATA 2 , 0 , .642093 , 1 +DATA 3 , 0 , -.642093 , -1 +DATA 4 , 0 , 2.36522 , .4 +DATA 5 , 0 , -2.36522 , -.4 +DATA 6 , 0 , 1.4617 , .6 +DATA 7 , 0 , -1.4617 , -.6 +DATA 8 , 0 , -1.9735 , 254 +DATA 9 , 0 , 1.70284 , 255 +DATA 10 , 0 , 3.98223E-2 , 256 +DATA 11 , 0 , -3.71762 , 32000 +DATA 12 , 0 , -4.32484 , -.227229 +DATA 13 , 0 , -4.10133 , -.239157 +DATA 14 , 0 , -4.61054 , -.213586 +DATA 15 , 0 , 3.54864 , .274675 +DATA 16 , 0 , 5.83376 , .169766 +DATA 17 , 0 , 3.03012 , .318766 +DATA 18 , 0 , 48.3822 , 2.06658E-2 +DATA 19 , 0 , 5.24899 , .188257 +DATA 20 , 0 , -3.51013 , -.277537 +DATA 21 , 0 , -1.91473 , -.481303 +DATA 22 , 0 , 2.14884 , .43556 +DATA 23 , 0 , -4.66945 , -.210971 +DATA 24 , 0 , -2.04288 , -.455216 +DATA 25 , 0 , -.713214 , -110.907 +DATA 26 , 0 , -.409473 , 105.632 +DATA 27 , 0 , -.339323 , -114.341 +DATA 28 , 0 , -3.92052 , 109.706 +DATA 29 , 0 , -1.0569 , 109.198 +DATA 30 , 0 , .567921 , 85.8773 +DATA 31 , 0 , .239779 , -58.3548 +DATA 32 , 0 , .20837 , 29.6397 +DATA 33 , 0 , -2.49517E-2 , -108.36 +DATA 34 , 0 , 1.44925 , -46.5199 +DATA 35 , 0 , -1.5386 , 112.521 +DATA 36 , 0 , .138876 , 45.4151 +DATA 37 , 0 , 1.46788 , 101.129 +DATA 38 , 0 , -.751798 , 65.0473 +DATA 39 , 0 , .302213 , 48.4012 +DATA 40 , 0 , -4.30748 , 122.294 +DATA 41 , 0 , 2.12817 , -56.1094 +DATA 42 , 0 , .136522 , -121.087 +DATA 43 , 0 , -.649338 , -123.517 +DATA 44 , 0 , -4.07352 , -97.6301 +DATA 45 , 0 , -.425802 , -64.0001 +DATA 46 , 0 , -1.60908 , -25.6888 +DATA 47 , 0 , -.781621 , 14.8006 +DATA 48 , 0 , -.175114 , -61.0877 +DATA 49 , 0 , -1.27618 , -66.6381 +DATA 50 , 0 , -1.17764 , -5476.5 +DATA 51 , 0 , -.164254 , -21210.3 +DATA 52 , 0 , .731638 , -28757.2 +DATA 53 , 0 , .958836 , -28732.2 +DATA 54 , 0 , 1.57199 , 12730.3 +DATA 55 , 0 , .8635 , -1830.69 +DATA 56 , 0 , .424644 , 5486.39 +DATA 57 , 0 , 16.3209 , 22405.9 +DATA 58 , 0 , 4.9118 , 30809.8 +DATA 59 , 0 , 2.95077 , -28930.6 +DATA 60 , 0 , -4.91749E-2 , -6014.53 +DATA 61 , 0 , 1.0693 , 17414.6 +DATA 62 , 0 , -.17429 , -10538.3 +DATA 63 , 0 , 14.2232 , -17536.3 +DATA 64 , 0 , -1.96713 , -8856.62 +DATA 65 , 0 , -1.94728 , -5140.12 +DATA 66 , 0 , 11.3994 , -8595.31 +DATA 67 , 0 , 1.38519 , -3382.87 +DATA 68 , 0 , -1.30323 , -5002.07 +DATA 69 , 0 , -.235024 , -5800.72 +DATA 70 , 0 , 7.99498E-2 , 29686.4 +DATA 71 , 0 , .415254 , 2571. +DATA 72 , 0 , -.232355 , 31091. +DATA 73 , 0 , 9.27055 , 14819. +DATA 74 , 0 , -.638803 , 3790.9 +DATA 75 , 0 , 1.43769 , -4.2981E+9 +DATA 76 , 0 , -2.15999 , -7.05453E+8 +DATA 77 , 0 , 2.23381 , -3.10179E+9 +DATA 78 , 0 , .230976 , -4.86159E+9 +DATA 79 , 0 , -.898042 , -8.62908E+8 +DATA 80 , 0 , 2.42162 , -3.4101E+9 +DATA 81 , 0 , .784532 , 3.3889E+9 +DATA 82 , 0 , .953851 , 2.49826E+9 +DATA 83 , 0 , -.449034 , 2.3491E+9 +DATA 84 , 0 , -1.2471 , 1.94745E+8 +DATA 85 , 0 , 6.23385 , 2.02475E+9 +DATA 86 , 0 , .848779 , -2.26748E+9 +DATA 87 , 0 , -17.8045 , -2.10587E+9 +DATA 88 , 0 , .35432 , 4.23585E+9 +DATA 89 , 0 , -6.00957 , -2.66524E+9 +DATA 90 , 0 , -.926233 , 4.01052E+9 +DATA 91 , 0 , 2.45903 , -4.87912E+9 +DATA 92 , 0 , -3.92629E-2 , 1.77556E+9 +DATA 93 , 0 , -1.41819 , 2.87705E+8 +DATA 94 , 0 , 2.79479 , 1.99977E+8 +DATA 95 , 0 , -1.45136 , -3.39941E+9 +DATA 96 , 0 , .14549 , -3.49119E+9 +DATA 97 , 0 , 5.30698E-2 , -2.86324E+9 +DATA 98 , 0 , .745094 , 4.20418E+9 +DATA 99 , 0 , -.859138 , -3.1518E+9 +DATA 100 , 0 , 1.02889 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_COT_X_N.OUT b/NBS2/F_COT_X_N.OUT new file mode 100644 index 0000000..7920ec7 --- /dev/null +++ b/NBS2/F_COT_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .642093 X= 1 + F= 0 N= .642093 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.642093 X=-1 + F= 0 N=-.642093 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.36522 X= .4 + F= 0 N= 2.36522 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.36522 X=-.4 + F= 0 N=-2.36522 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.4617 X= .6 + F= 0 N= 1.4617 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1.4617 X=-.6 + F= 0 N=-1.4617 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-1.9735 X= 254 + F= 0 N=-1.9735 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1.70284 X= 255 + F= 0 N= 1.70284 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3.98223E-2 X= 256 + F= 0 N= 3.98223E-2 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-3.71762 X= 32000 + F= 0 N=-3.71762 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-4.32484 X=-.227229 + F= 0 N=-4.32484 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.10133 X=-.239157 + F= 0 N=-4.10133 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-4.61054 X=-.213586 + F= 0 N=-4.61054 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 3.54864 X= .274675 + F= 0 N= 3.54864 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 5.83376 X= .169766 + F= 0 N= 5.83376 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 3.03012 X= .318766 + F= 0 N= 3.03012 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 48.3822 X= 2.06658E-2 + F= 0 N= 48.3822 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.24899 X= .188257 + F= 0 N= 5.24899 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-3.51013 X=-.277537 + F= 0 N=-3.51013 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1.91473 X=-.481303 + F= 0 N=-1.91473 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.14884 X= .43556 + F= 0 N= 2.14884 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-4.66945 X=-.210971 + F= 0 N=-4.66945 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.04288 X=-.455216 + F= 0 N=-2.04288 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.713214 X=-110.907 + F= 0 N=-.713214 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-.409473 X= 105.632 + F= 0 N=-.409473 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.339323 X=-114.341 + F= 0 N=-.339323 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-3.92052 X= 109.706 + F= 0 N=-3.92052 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-1.0569 X= 109.198 + F= 0 N=-1.0569 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .567921 X= 85.8773 + F= 0 N= .567921 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= .239779 X=-58.3548 + F= 0 N= .239779 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .20837 X= 29.6397 + F= 0 N= .20837 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-2.49517E-2 X=-108.36 + F= 0 N=-2.49517E-2 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 1.44925 X=-46.5199 + F= 0 N= 1.44925 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-1.5386 X= 112.521 + F= 0 N=-1.5386 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .138876 X= 45.4151 + F= 0 N= .138876 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.46788 X= 101.129 + F= 0 N= 1.46788 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-.751798 X= 65.0473 + F= 0 N=-.751798 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .302213 X= 48.4012 + F= 0 N= .302213 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-4.30748 X= 122.294 + F= 0 N=-4.30748 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.12817 X=-56.1094 + F= 0 N= 2.12817 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= .136522 X=-121.087 + F= 0 N= .136522 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.649338 X=-123.517 + F= 0 N=-.649338 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-4.07352 X=-97.6301 + F= 0 N=-4.07352 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.425802 X=-64.0001 + F= 0 N=-.425802 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.60908 X=-25.6888 + F= 0 N=-1.60908 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-.781621 X= 14.8006 + F= 0 N=-.781621 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.175114 X=-61.0877 + F= 0 N=-.175114 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.27618 X=-66.6381 + F= 0 N=-1.27618 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.17764 X=-5476.5 + F= 0 N=-1.17764 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.164254 X=-21210.3 + F= 0 N=-.164254 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .731638 X=-28757.2 + F= 0 N= .731638 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .958836 X=-28732.2 + F= 0 N= .958836 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.57199 X= 12730.3 + F= 0 N= 1.57199 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= .8635 X=-1830.69 + F= 0 N= .8635 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .424644 X= 5486.39 + F= 0 N= .424644 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 16.3209 X= 22405.9 + F= 0 N= 16.3209 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4.9118 X= 30809.8 + F= 0 N= 4.9118 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 2.95077 X=-28930.6 + F= 0 N= 2.95077 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-4.91749E-2 X=-6014.53 + F= 0 N=-4.91749E-2 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.0693 X= 17414.6 + F= 0 N= 1.0693 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.17429 X=-10538.3 + F= 0 N=-.17429 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 14.2232 X=-17536.3 + F= 0 N= 14.2232 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.96713 X=-8856.62 + F= 0 N=-1.96713 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1.94728 X=-5140.12 + F= 0 N=-1.94728 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 11.3994 X=-8595.31 + F= 0 N= 11.3994 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1.38519 X=-3382.87 + F= 0 N= 1.38519 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.30323 X=-5002.07 + F= 0 N=-1.30323 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.235024 X=-5800.72 + F= 0 N=-.235024 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 7.99498E-2 X= 29686.4 + F= 0 N= 7.99498E-2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .415254 X= 2571 + F= 0 N= .415254 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-.232355 X= 31091 + F= 0 N=-.232355 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 9.27055 X= 14819 + F= 0 N= 9.27055 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-.638803 X= 3790.9 + F= 0 N=-.638803 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.43769 X=-4.2981E+9 + F= 0 N= 1.43769 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.15999 X=-7.05453E+8 + F= 0 N=-2.15999 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.23381 X=-3.10179E+9 + F= 0 N= 2.23381 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .230976 X=-4.86159E+9 + F= 0 N= .230976 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-.898042 X=-8.62908E+8 + F= 0 N=-.898042 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 2.42162 X=-3.4101E+9 + F= 0 N= 2.42162 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= .784532 X= 3.3889E+9 + F= 0 N= .784532 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .953851 X= 2.49826E+9 + F= 0 N= .953851 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-.449034 X= 2.3491E+9 + F= 0 N=-.449034 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-1.2471 X= 1.94745E+8 + F= 0 N=-1.2471 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 6.23385 X= 2.02475E+9 + F= 0 N= 6.23385 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= .848779 X=-2.26748E+9 + F= 0 N= .848779 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-17.8045 X=-2.10587E+9 + F= 0 N=-17.8045 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= .35432 X= 4.23585E+9 + F= 0 N= .35432 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-6.00957 X=-2.66524E+9 + F= 0 N=-6.00957 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-.926233 X= 4.01052E+9 + F= 0 N=-.926233 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.45903 X=-4.87912E+9 + F= 0 N= 2.45903 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-3.92629E-2 X= 1.77556E+9 + F= 0 N=-3.92629E-2 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-1.41819 X= 2.87705E+8 + F= 0 N=-1.41819 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.79479 X= 1.99977E+8 + F= 0 N= 2.79479 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.45136 X=-3.39941E+9 + F= 0 N=-1.45136 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .14549 X=-3.49119E+9 + F= 0 N= .14549 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.30698E-2 X=-2.86324E+9 + F= 0 N= 5.30698E-2 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= .745094 X= 4.20418E+9 + F= 0 N= .745094 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-.859138 X=-3.1518E+9 + F= 0 N=-.859138 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.02889 X= 4.60615E+9 + F= 0 N= 1.02889 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_COT_X_N.dif b/NBS2/F_COT_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_COT_X_N.run b/NBS2/F_COT_X_N.run new file mode 100644 index 0000000..097275c --- /dev/null +++ b/NBS2/F_COT_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .642093 X= 1 + F= 0 N= .642093 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.642093 X=-1 + F= 0 N=-.642093 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.36522 X= .4 + F= 0 N= 2.36522 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.36522 X=-.4 + F= 0 N=-2.36522 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.4617 X= .6 + F= 0 N= 1.4617 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1.4617 X=-.6 + F= 0 N=-1.4617 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-1.9735 X= 254 + F= 0 N=-1.9735 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1.70284 X= 255 + F= 0 N= 1.70284 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3.98223E-2 X= 256 + F= 0 N= 3.98223E-2 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-3.71762 X= 32000 + F= 0 N=-3.71762 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-4.32484 X=-.227229 + F= 0 N=-4.32484 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.10133 X=-.239157 + F= 0 N=-4.10133 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-4.61054 X=-.213586 + F= 0 N=-4.61054 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 3.54864 X= .274675 + F= 0 N= 3.54864 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 5.83376 X= .169766 + F= 0 N= 5.83376 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 3.03012 X= .318766 + F= 0 N= 3.03012 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 48.3822 X= 2.06658E-2 + F= 0 N= 48.3822 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.24899 X= .188257 + F= 0 N= 5.24899 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-3.51013 X=-.277537 + F= 0 N=-3.51013 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1.91473 X=-.481303 + F= 0 N=-1.91473 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.14884 X= .43556 + F= 0 N= 2.14884 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-4.66945 X=-.210971 + F= 0 N=-4.66945 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.04288 X=-.455216 + F= 0 N=-2.04288 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.713214 X=-110.907 + F= 0 N=-.713214 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-.409473 X= 105.632 + F= 0 N=-.409473 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.339323 X=-114.341 + F= 0 N=-.339323 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-3.92052 X= 109.706 + F= 0 N=-3.92052 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-1.0569 X= 109.198 + F= 0 N=-1.0569 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .567921 X= 85.8773 + F= 0 N= .567921 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= .239779 X=-58.3548 + F= 0 N= .239779 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .20837 X= 29.6397 + F= 0 N= .20837 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-2.49517E-2 X=-108.36 + F= 0 N=-2.49517E-2 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 1.44925 X=-46.5199 + F= 0 N= 1.44925 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-1.5386 X= 112.521 + F= 0 N=-1.5386 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .138876 X= 45.4151 + F= 0 N= .138876 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.46788 X= 101.129 + F= 0 N= 1.46788 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-.751798 X= 65.0473 + F= 0 N=-.751798 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .302213 X= 48.4012 + F= 0 N= .302213 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-4.30748 X= 122.294 + F= 0 N=-4.30748 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.12817 X=-56.1094 + F= 0 N= 2.12817 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= .136522 X=-121.087 + F= 0 N= .136522 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.649338 X=-123.517 + F= 0 N=-.649338 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-4.07352 X=-97.6301 + F= 0 N=-4.07352 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.425802 X=-64.0001 + F= 0 N=-.425802 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.60908 X=-25.6888 + F= 0 N=-1.60908 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-.781621 X= 14.8006 + F= 0 N=-.781621 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.175114 X=-61.0877 + F= 0 N=-.175114 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.27618 X=-66.6381 + F= 0 N=-1.27618 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.17764 X=-5476.5 + F= 0 N=-1.17764 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.164254 X=-21210.3 + F= 0 N=-.164254 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .731638 X=-28757.2 + F= 0 N= .731638 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .958836 X=-28732.2 + F= 0 N= .958836 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.57199 X= 12730.3 + F= 0 N= 1.57199 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= .8635 X=-1830.69 + F= 0 N= .8635 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .424644 X= 5486.39 + F= 0 N= .424644 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 16.3209 X= 22405.9 + F= 0 N= 16.3209 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4.9118 X= 30809.8 + F= 0 N= 4.9118 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 2.95077 X=-28930.6 + F= 0 N= 2.95077 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-4.91749E-2 X=-6014.53 + F= 0 N=-4.91749E-2 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.0693 X= 17414.6 + F= 0 N= 1.0693 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.17429 X=-10538.3 + F= 0 N=-.17429 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 14.2232 X=-17536.3 + F= 0 N= 14.2232 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.96713 X=-8856.62 + F= 0 N=-1.96713 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1.94728 X=-5140.12 + F= 0 N=-1.94728 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 11.3994 X=-8595.31 + F= 0 N= 11.3994 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1.38519 X=-3382.87 + F= 0 N= 1.38519 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.30323 X=-5002.07 + F= 0 N=-1.30323 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.235024 X=-5800.72 + F= 0 N=-.235024 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 7.99498E-2 X= 29686.4 + F= 0 N= 7.99498E-2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .415254 X= 2571 + F= 0 N= .415254 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-.232355 X= 31091 + F= 0 N=-.232355 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 9.27055 X= 14819 + F= 0 N= 9.27055 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-.638803 X= 3790.9 + F= 0 N=-.638803 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.43769 X=-4.2981E+9 + F= 0 N= 1.43769 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.15999 X=-7.05453E+8 + F= 0 N=-2.15999 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.23381 X=-3.10179E+9 + F= 0 N= 2.23381 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .230976 X=-4.86159E+9 + F= 0 N= .230976 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-.898042 X=-8.62908E+8 + F= 0 N=-.898042 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 2.42162 X=-3.4101E+9 + F= 0 N= 2.42162 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= .784532 X= 3.3889E+9 + F= 0 N= .784532 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .953851 X= 2.49826E+9 + F= 0 N= .953851 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-.449034 X= 2.3491E+9 + F= 0 N=-.449034 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-1.2471 X= 1.94745E+8 + F= 0 N=-1.2471 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 6.23385 X= 2.02475E+9 + F= 0 N= 6.23385 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= .848779 X=-2.26748E+9 + F= 0 N= .848779 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-17.8045 X=-2.10587E+9 + F= 0 N=-17.8045 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= .35432 X= 4.23585E+9 + F= 0 N= .35432 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-6.00957 X=-2.66524E+9 + F= 0 N=-6.00957 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-.926233 X= 4.01052E+9 + F= 0 N=-.926233 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.45903 X=-4.87912E+9 + F= 0 N= 2.45903 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-3.92629E-2 X= 1.77556E+9 + F= 0 N=-3.92629E-2 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-1.41819 X= 2.87705E+8 + F= 0 N=-1.41819 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.79479 X= 1.99977E+8 + F= 0 N= 2.79479 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.45136 X=-3.39941E+9 + F= 0 N=-1.45136 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .14549 X=-3.49119E+9 + F= 0 N= .14549 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.30698E-2 X=-2.86324E+9 + F= 0 N= 5.30698E-2 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= .745094 X= 4.20418E+9 + F= 0 N= .745094 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-.859138 X=-3.1518E+9 + F= 0 N=-.859138 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.02889 X= 4.60615E+9 + F= 0 N= 1.02889 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CSC_X_N.80 b/NBS2/F_CSC_X_N.80 new file mode 100644 index 0000000..ac923d5 --- /dev/null +++ b/NBS2/F_CSC_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.1884 X= 1 + F= 0 N= 1.1884 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.1884 X=-1 + F= 0 N=-1.1884 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.56793 X= .4 + F= 0 N= 2.56793 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.56793 X=-.4 + F= 0 N=-2.56793 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.77103 X= .6 + F= 0 N= 1.77103 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1.77103 X=-.6 + F= 0 N=-1.77103 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.21239 X= 254 + F= 0 N= 2.21239 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-1.97476 X= 255 + F= 0 N=-1.97476 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-1.00079 X= 256 + F= 0 N=-1.00079 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-3.84977 X= 32000 + F= 0 N=-3.84977 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-4.43895 X=-.227229 + F= 0 N=-4.43895 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.22148 X=-.239157 + F= 0 N=-4.22148 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-4.71774 X=-.213586 + F= 0 N=-4.71774 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 3.68685 X= .274675 + F= 0 N= 3.68685 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 5.91885 X= .169766 + F= 0 N= 5.91885 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 3.19086 X= .318766 + F= 0 N= 3.19086 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 48.3926 X= 2.06658E-2 + F= 0 N= 48.3926 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.34339 X= .188257 + F= 0 N= 5.34339 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-3.6498 X=-.277537 + F= 0 N=-3.6498 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-2.16013 X=-.481303 + F= 0 N=-2.16013 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.37013 X= .43556 + F= 0 N= 2.37013 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-4.77533 X=-.210971 + F= 0 N=-4.77533 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.2745 X=-.455216 + F= 0 N=-2.2745 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1.22828 X=-110.907 + F= 0 N= 1.22828 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-1.08059 X= 105.632 + F= 0 N=-1.08059 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.056 X=-114.341 + F= 0 N=-1.056 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.04605 X= 109.706 + F= 0 N= 4.04605 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.455 X= 109.198 + F= 0 N= 1.455 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-1.15001 X= 85.8773 + F= 0 N=-1.15001 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.02835 X=-58.3548 + F= 0 N=-1.02835 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-1.02148 X= 29.6397 + F= 0 N=-1.02148 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.00031 X=-108.36 + F= 0 N=-1.00031 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.76078 X=-46.5199 + F= 0 N=-1.76078 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-1.83501 X= 112.521 + F= 0 N=-1.83501 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.0096 X= 45.4151 + F= 0 N= 1.0096 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.77614 X= 101.129 + F= 0 N= 1.77614 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.25108 X= 65.0473 + F= 0 N= 1.25108 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-1.04467 X= 48.4012 + F= 0 N=-1.04467 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4.42203 X= 122.294 + F= 0 N= 4.42203 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.35141 X=-56.1094 + F= 0 N= 2.35141 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.00928 X=-121.087 + F= 0 N=-1.00928 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.19233 X=-123.517 + F= 0 N= 1.19233 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 4.19446 X=-97.6301 + F= 0 N= 4.19446 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.08688 X=-64.0001 + F= 0 N=-1.08688 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.8945 X=-25.6888 + F= 0 N=-1.8945 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.26922 X= 14.8006 + F= 0 N= 1.26922 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.01522 X=-61.0877 + F= 0 N= 1.01522 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.62131 X=-66.6381 + F= 0 N= 1.62131 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1.54494 X=-5476.5 + F= 0 N= 1.54494 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1.0134 X=-21210.3 + F= 0 N= 1.0134 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.23907 X=-28757.2 + F= 0 N= 1.23907 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.38541 X=-28732.2 + F= 0 N= 1.38541 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.8631 X= 12730.3 + F= 0 N= 1.8631 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.32122 X=-1830.69 + F= 0 N=-1.32122 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.08643 X= 5486.39 + F= 0 N= 1.08643 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 16.3515 X= 22405.9 + F= 0 N= 16.3515 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-5.01257 X= 30809.8 + F= 0 N=-5.01257 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-3.11562 X=-28930.6 + F= 0 N=-3.11562 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1.00121 X=-6014.53 + F= 0 N=-1.00121 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-1.46404 X= 17414.6 + F= 0 N=-1.46404 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1.01507 X=-10538.3 + F= 0 N=-1.01507 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 14.2583 X=-17536.3 + F= 0 N= 14.2583 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 2.20672 X=-8856.62 + F= 0 N= 2.20672 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-2.18904 X=-5140.12 + F= 0 N=-2.18904 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 11.4431 X=-8595.31 + F= 0 N= 11.4431 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.70844 X=-3382.87 + F= 0 N=-1.70844 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.64269 X=-5002.07 + F= 0 N=-1.64269 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1.02725 X=-5800.72 + F= 0 N=-1.02725 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-1.00319 X= 29686.4 + F= 0 N=-1.00319 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.08279 X= 2571 + F= 0 N= 1.08279 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.02664 X= 31091 + F= 0 N= 1.02664 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-9.32433 X= 14819 + F= 0 N=-9.32433 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.18662 X= 3790.9 + F= 0 N= 1.18662 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.75127 X=-4.2981E+9 + F= 0 N= 1.75127 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.38025 X=-7.05453E+8 + F= 0 N=-2.38025 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.44743 X=-3.10179E+9 + F= 0 N= 2.44743 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.02633 X=-4.86159E+9 + F= 0 N= 1.02633 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1.34405 X=-8.62908E+8 + F= 0 N= 1.34405 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-2.61997 X=-3.4101E+9 + F= 0 N=-2.61997 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-1.27102 X= 3.3889E+9 + F= 0 N=-1.27102 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.38197 X= 2.49826E+9 + F= 0 N= 1.38197 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-1.09619 X= 2.3491E+9 + F= 0 N=-1.09619 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.59852 X= 1.94745E+8 + F= 0 N= 1.59852 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 6.31355 X= 2.02475E+9 + F= 0 N= 6.31355 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.31165 X=-2.26748E+9 + F= 0 N=-1.31165 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-17.8326 X=-2.10587E+9 + F= 0 N=-17.8326 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-1.06092 X= 4.23585E+9 + F= 0 N=-1.06092 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 6.0922 X=-2.66524E+9 + F= 0 N= 6.0922 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.36305 X= 4.01052E+9 + F= 0 N= 1.36305 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.65459 X=-4.87912E+9 + F= 0 N= 2.65459 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-1.00077 X= 1.77556E+9 + F= 0 N=-1.00077 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-1.7353 X= 2.87705E+8 + F= 0 N=-1.7353 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.96831 X= 1.99977E+8 + F= 0 N= 2.96831 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.76251 X=-3.39941E+9 + F= 0 N=-1.76251 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.01053 X=-3.49119E+9 + F= 0 N= 1.01053 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.00141 X=-2.86324E+9 + F= 0 N=-1.00141 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-1.24706 X= 4.20418E+9 + F= 0 N=-1.24706 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1.31838 X=-3.1518E+9 + F= 0 N= 1.31838 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.43479 X= 4.60615E+9 + F= 0 N= 1.43479 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CSC_X_N.BAS b/NBS2/F_CSC_X_N.BAS new file mode 100644 index 0000000..042ed06 --- /dev/null +++ b/NBS2/F_CSC_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:18 +REM FILENAME: F_CSC_X_N.BAS +REM SYNTAX: N = CSC( X ) +REM UNIQUEID: F_CSC_X_N +REM FUNCTION: CSC +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CSC( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , 0 +DATA 2 , 0 , 1.1884 , 1 +DATA 3 , 0 , -1.1884 , -1 +DATA 4 , 0 , 2.56793 , .4 +DATA 5 , 0 , -2.56793 , -.4 +DATA 6 , 0 , 1.77103 , .6 +DATA 7 , 0 , -1.77103 , -.6 +DATA 8 , 0 , 2.21239 , 254 +DATA 9 , 0 , -1.97476 , 255 +DATA 10 , 0 , -1.00079 , 256 +DATA 11 , 0 , -3.84977 , 32000 +DATA 12 , 0 , -4.43895 , -.227229 +DATA 13 , 0 , -4.22148 , -.239157 +DATA 14 , 0 , -4.71774 , -.213586 +DATA 15 , 0 , 3.68685 , .274675 +DATA 16 , 0 , 5.91885 , .169766 +DATA 17 , 0 , 3.19086 , .318766 +DATA 18 , 0 , 48.3926 , 2.06658E-2 +DATA 19 , 0 , 5.34339 , .188257 +DATA 20 , 0 , -3.6498 , -.277537 +DATA 21 , 0 , -2.16013 , -.481303 +DATA 22 , 0 , 2.37013 , .43556 +DATA 23 , 0 , -4.77533 , -.210971 +DATA 24 , 0 , -2.2745 , -.455216 +DATA 25 , 0 , 1.22828 , -110.907 +DATA 26 , 0 , -1.08059 , 105.632 +DATA 27 , 0 , -1.056 , -114.341 +DATA 28 , 0 , 4.04605 , 109.706 +DATA 29 , 0 , 1.455 , 109.198 +DATA 30 , 0 , -1.15001 , 85.8773 +DATA 31 , 0 , -1.02835 , -58.3548 +DATA 32 , 0 , -1.02148 , 29.6397 +DATA 33 , 0 , -1.00031 , -108.36 +DATA 34 , 0 , -1.76078 , -46.5199 +DATA 35 , 0 , -1.83501 , 112.521 +DATA 36 , 0 , 1.0096 , 45.4151 +DATA 37 , 0 , 1.77614 , 101.129 +DATA 38 , 0 , 1.25108 , 65.0473 +DATA 39 , 0 , -1.04467 , 48.4012 +DATA 40 , 0 , 4.42203 , 122.294 +DATA 41 , 0 , 2.35141 , -56.1094 +DATA 42 , 0 , -1.00928 , -121.087 +DATA 43 , 0 , 1.19233 , -123.517 +DATA 44 , 0 , 4.19446 , -97.6301 +DATA 45 , 0 , -1.08688 , -64.0001 +DATA 46 , 0 , -1.8945 , -25.6888 +DATA 47 , 0 , 1.26922 , 14.8006 +DATA 48 , 0 , 1.01522 , -61.0877 +DATA 49 , 0 , 1.62131 , -66.6381 +DATA 50 , 0 , 1.54494 , -5476.5 +DATA 51 , 0 , 1.0134 , -21210.3 +DATA 52 , 0 , 1.23907 , -28757.2 +DATA 53 , 0 , 1.38541 , -28732.2 +DATA 54 , 0 , 1.8631 , 12730.3 +DATA 55 , 0 , -1.32122 , -1830.69 +DATA 56 , 0 , 1.08643 , 5486.39 +DATA 57 , 0 , 16.3515 , 22405.9 +DATA 58 , 0 , -5.01257 , 30809.8 +DATA 59 , 0 , -3.11562 , -28930.6 +DATA 60 , 0 , -1.00121 , -6014.53 +DATA 61 , 0 , -1.46404 , 17414.6 +DATA 62 , 0 , -1.01507 , -10538.3 +DATA 63 , 0 , 14.2583 , -17536.3 +DATA 64 , 0 , 2.20672 , -8856.62 +DATA 65 , 0 , -2.18904 , -5140.12 +DATA 66 , 0 , 11.4431 , -8595.31 +DATA 67 , 0 , -1.70844 , -3382.87 +DATA 68 , 0 , -1.64269 , -5002.07 +DATA 69 , 0 , -1.02725 , -5800.72 +DATA 70 , 0 , -1.00319 , 29686.4 +DATA 71 , 0 , 1.08279 , 2571. +DATA 72 , 0 , 1.02664 , 31091. +DATA 73 , 0 , -9.32433 , 14819. +DATA 74 , 0 , 1.18662 , 3790.9 +DATA 75 , 0 , 1.75127 , -4.2981E+9 +DATA 76 , 0 , -2.38025 , -7.05453E+8 +DATA 77 , 0 , 2.44743 , -3.10179E+9 +DATA 78 , 0 , 1.02633 , -4.86159E+9 +DATA 79 , 0 , 1.34405 , -8.62908E+8 +DATA 80 , 0 , -2.61997 , -3.4101E+9 +DATA 81 , 0 , -1.27102 , 3.3889E+9 +DATA 82 , 0 , 1.38197 , 2.49826E+9 +DATA 83 , 0 , -1.09619 , 2.3491E+9 +DATA 84 , 0 , 1.59852 , 1.94745E+8 +DATA 85 , 0 , 6.31355 , 2.02475E+9 +DATA 86 , 0 , -1.31165 , -2.26748E+9 +DATA 87 , 0 , -17.8326 , -2.10587E+9 +DATA 88 , 0 , -1.06092 , 4.23585E+9 +DATA 89 , 0 , 6.0922 , -2.66524E+9 +DATA 90 , 0 , 1.36305 , 4.01052E+9 +DATA 91 , 0 , 2.65459 , -4.87912E+9 +DATA 92 , 0 , -1.00077 , 1.77556E+9 +DATA 93 , 0 , -1.7353 , 2.87705E+8 +DATA 94 , 0 , 2.96831 , 1.99977E+8 +DATA 95 , 0 , -1.76251 , -3.39941E+9 +DATA 96 , 0 , 1.01053 , -3.49119E+9 +DATA 97 , 0 , -1.00141 , -2.86324E+9 +DATA 98 , 0 , -1.24706 , 4.20418E+9 +DATA 99 , 0 , 1.31838 , -3.1518E+9 +DATA 100 , 0 , 1.43479 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CSC_X_N.OUT b/NBS2/F_CSC_X_N.OUT new file mode 100644 index 0000000..a7423f6 --- /dev/null +++ b/NBS2/F_CSC_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.1884 X= 1 + F= 0 N= 1.1884 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.1884 X=-1 + F= 0 N=-1.1884 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.56793 X= .4 + F= 0 N= 2.56793 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.56793 X=-.4 + F= 0 N=-2.56793 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.77103 X= .6 + F= 0 N= 1.77103 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1.77103 X=-.6 + F= 0 N=-1.77103 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.21239 X= 254 + F= 0 N= 2.21239 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-1.97476 X= 255 + F= 0 N=-1.97476 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-1.00079 X= 256 + F= 0 N=-1.00079 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-3.84977 X= 32000 + F= 0 N=-3.84977 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-4.43895 X=-.227229 + F= 0 N=-4.43895 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.22148 X=-.239157 + F= 0 N=-4.22148 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-4.71774 X=-.213586 + F= 0 N=-4.71774 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 3.68685 X= .274675 + F= 0 N= 3.68685 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 5.91885 X= .169766 + F= 0 N= 5.91885 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 3.19086 X= .318766 + F= 0 N= 3.19086 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 48.3926 X= 2.06658E-2 + F= 0 N= 48.3926 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.34339 X= .188257 + F= 0 N= 5.34339 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-3.6498 X=-.277537 + F= 0 N=-3.6498 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-2.16013 X=-.481303 + F= 0 N=-2.16013 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.37013 X= .43556 + F= 0 N= 2.37013 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-4.77533 X=-.210971 + F= 0 N=-4.77533 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.2745 X=-.455216 + F= 0 N=-2.2745 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1.22828 X=-110.907 + F= 0 N= 1.22828 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-1.08059 X= 105.632 + F= 0 N=-1.08059 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.056 X=-114.341 + F= 0 N=-1.056 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.04605 X= 109.706 + F= 0 N= 4.04605 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.455 X= 109.198 + F= 0 N= 1.455 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-1.15001 X= 85.8773 + F= 0 N=-1.15001 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.02835 X=-58.3548 + F= 0 N=-1.02835 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-1.02148 X= 29.6397 + F= 0 N=-1.02148 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.00031 X=-108.36 + F= 0 N=-1.00031 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.76078 X=-46.5199 + F= 0 N=-1.76078 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-1.83501 X= 112.521 + F= 0 N=-1.83501 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.0096 X= 45.4151 + F= 0 N= 1.0096 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.77614 X= 101.129 + F= 0 N= 1.77614 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.25108 X= 65.0473 + F= 0 N= 1.25108 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-1.04467 X= 48.4012 + F= 0 N=-1.04467 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4.42203 X= 122.294 + F= 0 N= 4.42203 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.35141 X=-56.1094 + F= 0 N= 2.35141 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.00928 X=-121.087 + F= 0 N=-1.00928 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.19233 X=-123.517 + F= 0 N= 1.19233 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 4.19446 X=-97.6301 + F= 0 N= 4.19446 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.08688 X=-64.0001 + F= 0 N=-1.08688 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.8945 X=-25.6888 + F= 0 N=-1.8945 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.26922 X= 14.8006 + F= 0 N= 1.26922 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.01522 X=-61.0877 + F= 0 N= 1.01522 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.62131 X=-66.6381 + F= 0 N= 1.62131 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1.54494 X=-5476.5 + F= 0 N= 1.54494 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1.0134 X=-21210.3 + F= 0 N= 1.0134 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.23907 X=-28757.2 + F= 0 N= 1.23907 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.38541 X=-28732.2 + F= 0 N= 1.38541 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.8631 X= 12730.3 + F= 0 N= 1.8631 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.32122 X=-1830.69 + F= 0 N=-1.32122 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.08643 X= 5486.39 + F= 0 N= 1.08643 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 16.3515 X= 22405.9 + F= 0 N= 16.3515 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-5.01257 X= 30809.8 + F= 0 N=-5.01257 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-3.11562 X=-28930.6 + F= 0 N=-3.11562 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1.00121 X=-6014.53 + F= 0 N=-1.00121 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-1.46404 X= 17414.6 + F= 0 N=-1.46404 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1.01507 X=-10538.3 + F= 0 N=-1.01507 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 14.2583 X=-17536.3 + F= 0 N= 14.2583 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 2.20672 X=-8856.62 + F= 0 N= 2.20672 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-2.18904 X=-5140.12 + F= 0 N=-2.18904 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 11.4431 X=-8595.31 + F= 0 N= 11.4431 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.70844 X=-3382.87 + F= 0 N=-1.70844 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.64269 X=-5002.07 + F= 0 N=-1.64269 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1.02725 X=-5800.72 + F= 0 N=-1.02725 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-1.00319 X= 29686.4 + F= 0 N=-1.00319 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.08279 X= 2571 + F= 0 N= 1.08279 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.02664 X= 31091 + F= 0 N= 1.02664 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-9.32433 X= 14819 + F= 0 N=-9.32433 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.18662 X= 3790.9 + F= 0 N= 1.18662 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.75127 X=-4.2981E+9 + F= 0 N= 1.75127 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.38025 X=-7.05453E+8 + F= 0 N=-2.38025 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.44743 X=-3.10179E+9 + F= 0 N= 2.44743 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.02633 X=-4.86159E+9 + F= 0 N= 1.02633 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1.34405 X=-8.62908E+8 + F= 0 N= 1.34405 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-2.61997 X=-3.4101E+9 + F= 0 N=-2.61997 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-1.27102 X= 3.3889E+9 + F= 0 N=-1.27102 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.38197 X= 2.49826E+9 + F= 0 N= 1.38197 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-1.09619 X= 2.3491E+9 + F= 0 N=-1.09619 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.59852 X= 1.94745E+8 + F= 0 N= 1.59852 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 6.31355 X= 2.02475E+9 + F= 0 N= 6.31355 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.31165 X=-2.26748E+9 + F= 0 N=-1.31165 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-17.8326 X=-2.10587E+9 + F= 0 N=-17.8326 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-1.06092 X= 4.23585E+9 + F= 0 N=-1.06092 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 6.0922 X=-2.66524E+9 + F= 0 N= 6.0922 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.36305 X= 4.01052E+9 + F= 0 N= 1.36305 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.65459 X=-4.87912E+9 + F= 0 N= 2.65459 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-1.00077 X= 1.77556E+9 + F= 0 N=-1.00077 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-1.7353 X= 2.87705E+8 + F= 0 N=-1.7353 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.96831 X= 1.99977E+8 + F= 0 N= 2.96831 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.76251 X=-3.39941E+9 + F= 0 N=-1.76251 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.01053 X=-3.49119E+9 + F= 0 N= 1.01053 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.00141 X=-2.86324E+9 + F= 0 N=-1.00141 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-1.24706 X= 4.20418E+9 + F= 0 N=-1.24706 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1.31838 X=-3.1518E+9 + F= 0 N= 1.31838 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.43479 X= 4.60615E+9 + F= 0 N= 1.43479 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CSC_X_N.dif b/NBS2/F_CSC_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CSC_X_N.run b/NBS2/F_CSC_X_N.run new file mode 100644 index 0000000..ac923d5 --- /dev/null +++ b/NBS2/F_CSC_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.1884 X= 1 + F= 0 N= 1.1884 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.1884 X=-1 + F= 0 N=-1.1884 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.56793 X= .4 + F= 0 N= 2.56793 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.56793 X=-.4 + F= 0 N=-2.56793 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.77103 X= .6 + F= 0 N= 1.77103 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1.77103 X=-.6 + F= 0 N=-1.77103 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.21239 X= 254 + F= 0 N= 2.21239 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-1.97476 X= 255 + F= 0 N=-1.97476 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-1.00079 X= 256 + F= 0 N=-1.00079 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-3.84977 X= 32000 + F= 0 N=-3.84977 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-4.43895 X=-.227229 + F= 0 N=-4.43895 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.22148 X=-.239157 + F= 0 N=-4.22148 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-4.71774 X=-.213586 + F= 0 N=-4.71774 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 3.68685 X= .274675 + F= 0 N= 3.68685 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 5.91885 X= .169766 + F= 0 N= 5.91885 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 3.19086 X= .318766 + F= 0 N= 3.19086 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 48.3926 X= 2.06658E-2 + F= 0 N= 48.3926 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.34339 X= .188257 + F= 0 N= 5.34339 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-3.6498 X=-.277537 + F= 0 N=-3.6498 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-2.16013 X=-.481303 + F= 0 N=-2.16013 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.37013 X= .43556 + F= 0 N= 2.37013 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-4.77533 X=-.210971 + F= 0 N=-4.77533 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.2745 X=-.455216 + F= 0 N=-2.2745 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1.22828 X=-110.907 + F= 0 N= 1.22828 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-1.08059 X= 105.632 + F= 0 N=-1.08059 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.056 X=-114.341 + F= 0 N=-1.056 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.04605 X= 109.706 + F= 0 N= 4.04605 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.455 X= 109.198 + F= 0 N= 1.455 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-1.15001 X= 85.8773 + F= 0 N=-1.15001 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.02835 X=-58.3548 + F= 0 N=-1.02835 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-1.02148 X= 29.6397 + F= 0 N=-1.02148 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.00031 X=-108.36 + F= 0 N=-1.00031 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.76078 X=-46.5199 + F= 0 N=-1.76078 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-1.83501 X= 112.521 + F= 0 N=-1.83501 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.0096 X= 45.4151 + F= 0 N= 1.0096 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.77614 X= 101.129 + F= 0 N= 1.77614 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.25108 X= 65.0473 + F= 0 N= 1.25108 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-1.04467 X= 48.4012 + F= 0 N=-1.04467 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4.42203 X= 122.294 + F= 0 N= 4.42203 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.35141 X=-56.1094 + F= 0 N= 2.35141 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.00928 X=-121.087 + F= 0 N=-1.00928 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.19233 X=-123.517 + F= 0 N= 1.19233 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 4.19446 X=-97.6301 + F= 0 N= 4.19446 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.08688 X=-64.0001 + F= 0 N=-1.08688 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1.8945 X=-25.6888 + F= 0 N=-1.8945 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.26922 X= 14.8006 + F= 0 N= 1.26922 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.01522 X=-61.0877 + F= 0 N= 1.01522 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.62131 X=-66.6381 + F= 0 N= 1.62131 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1.54494 X=-5476.5 + F= 0 N= 1.54494 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1.0134 X=-21210.3 + F= 0 N= 1.0134 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.23907 X=-28757.2 + F= 0 N= 1.23907 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.38541 X=-28732.2 + F= 0 N= 1.38541 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.8631 X= 12730.3 + F= 0 N= 1.8631 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.32122 X=-1830.69 + F= 0 N=-1.32122 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.08643 X= 5486.39 + F= 0 N= 1.08643 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 16.3515 X= 22405.9 + F= 0 N= 16.3515 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-5.01257 X= 30809.8 + F= 0 N=-5.01257 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-3.11562 X=-28930.6 + F= 0 N=-3.11562 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1.00121 X=-6014.53 + F= 0 N=-1.00121 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-1.46404 X= 17414.6 + F= 0 N=-1.46404 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1.01507 X=-10538.3 + F= 0 N=-1.01507 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 14.2583 X=-17536.3 + F= 0 N= 14.2583 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 2.20672 X=-8856.62 + F= 0 N= 2.20672 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-2.18904 X=-5140.12 + F= 0 N=-2.18904 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 11.4431 X=-8595.31 + F= 0 N= 11.4431 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.70844 X=-3382.87 + F= 0 N=-1.70844 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1.64269 X=-5002.07 + F= 0 N=-1.64269 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1.02725 X=-5800.72 + F= 0 N=-1.02725 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-1.00319 X= 29686.4 + F= 0 N=-1.00319 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.08279 X= 2571 + F= 0 N= 1.08279 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.02664 X= 31091 + F= 0 N= 1.02664 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-9.32433 X= 14819 + F= 0 N=-9.32433 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.18662 X= 3790.9 + F= 0 N= 1.18662 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.75127 X=-4.2981E+9 + F= 0 N= 1.75127 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-2.38025 X=-7.05453E+8 + F= 0 N=-2.38025 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.44743 X=-3.10179E+9 + F= 0 N= 2.44743 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.02633 X=-4.86159E+9 + F= 0 N= 1.02633 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1.34405 X=-8.62908E+8 + F= 0 N= 1.34405 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-2.61997 X=-3.4101E+9 + F= 0 N=-2.61997 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-1.27102 X= 3.3889E+9 + F= 0 N=-1.27102 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.38197 X= 2.49826E+9 + F= 0 N= 1.38197 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-1.09619 X= 2.3491E+9 + F= 0 N=-1.09619 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.59852 X= 1.94745E+8 + F= 0 N= 1.59852 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 6.31355 X= 2.02475E+9 + F= 0 N= 6.31355 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.31165 X=-2.26748E+9 + F= 0 N=-1.31165 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-17.8326 X=-2.10587E+9 + F= 0 N=-17.8326 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-1.06092 X= 4.23585E+9 + F= 0 N=-1.06092 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 6.0922 X=-2.66524E+9 + F= 0 N= 6.0922 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.36305 X= 4.01052E+9 + F= 0 N= 1.36305 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.65459 X=-4.87912E+9 + F= 0 N= 2.65459 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-1.00077 X= 1.77556E+9 + F= 0 N=-1.00077 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-1.7353 X= 2.87705E+8 + F= 0 N=-1.7353 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.96831 X= 1.99977E+8 + F= 0 N= 2.96831 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.76251 X=-3.39941E+9 + F= 0 N=-1.76251 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.01053 X=-3.49119E+9 + F= 0 N= 1.01053 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.00141 X=-2.86324E+9 + F= 0 N=-1.00141 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-1.24706 X= 4.20418E+9 + F= 0 N=-1.24706 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1.31838 X=-3.1518E+9 + F= 0 N= 1.31838 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.43479 X= 4.60615E+9 + F= 0 N= 1.43479 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CSNG_X_N.80 b/NBS2/F_CSNG_X_N.80 new file mode 100644 index 0000000..2ef9542 --- /dev/null +++ b/NBS2/F_CSNG_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CSNG_X_N.BAS b/NBS2/F_CSNG_X_N.BAS new file mode 100644 index 0000000..84a0162 --- /dev/null +++ b/NBS2/F_CSNG_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:19 +REM FILENAME: F_CSNG_X_N.BAS +REM SYNTAX: N = CSNG( X ) +REM UNIQUEID: F_CSNG_X_N +REM FUNCTION: CSNG +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CSNG( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , .4 , .4 +DATA 5 , 0 , -.4 , -.4 +DATA 6 , 0 , .6 , .6 +DATA 7 , 0 , -.6 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , -.227229 , -.227229 +DATA 13 , 0 , -.239157 , -.239157 +DATA 14 , 0 , -.213586 , -.213586 +DATA 15 , 0 , .274675 , .274675 +DATA 16 , 0 , .169766 , .169766 +DATA 17 , 0 , .318766 , .318766 +DATA 18 , 0 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , .188257 , .188257 +DATA 20 , 0 , -.277537 , -.277537 +DATA 21 , 0 , -.481303 , -.481303 +DATA 22 , 0 , .43556 , .43556 +DATA 23 , 0 , -.210971 , -.210971 +DATA 24 , 0 , -.455216 , -.455216 +DATA 25 , 0 , -110.907 , -110.907 +DATA 26 , 0 , 105.632 , 105.632 +DATA 27 , 0 , -114.341 , -114.341 +DATA 28 , 0 , 109.706 , 109.706 +DATA 29 , 0 , 109.198 , 109.198 +DATA 30 , 0 , 85.8773 , 85.8773 +DATA 31 , 0 , -58.3548 , -58.3548 +DATA 32 , 0 , 29.6397 , 29.6397 +DATA 33 , 0 , -108.36 , -108.36 +DATA 34 , 0 , -46.5199 , -46.5199 +DATA 35 , 0 , 112.521 , 112.521 +DATA 36 , 0 , 45.4151 , 45.4151 +DATA 37 , 0 , 101.129 , 101.129 +DATA 38 , 0 , 65.0473 , 65.0473 +DATA 39 , 0 , 48.4012 , 48.4012 +DATA 40 , 0 , 122.294 , 122.294 +DATA 41 , 0 , -56.1094 , -56.1094 +DATA 42 , 0 , -121.087 , -121.087 +DATA 43 , 0 , -123.517 , -123.517 +DATA 44 , 0 , -97.6301 , -97.6301 +DATA 45 , 0 , -64.0001 , -64.0001 +DATA 46 , 0 , -25.6888 , -25.6888 +DATA 47 , 0 , 14.8006 , 14.8006 +DATA 48 , 0 , -61.0877 , -61.0877 +DATA 49 , 0 , -66.6381 , -66.6381 +DATA 50 , 0 , -5476.5 , -5476.5 +DATA 51 , 0 , -21210.3 , -21210.3 +DATA 52 , 0 , -28757.2 , -28757.2 +DATA 53 , 0 , -28732.2 , -28732.2 +DATA 54 , 0 , 12730.3 , 12730.3 +DATA 55 , 0 , -1830.69 , -1830.69 +DATA 56 , 0 , 5486.39 , 5486.39 +DATA 57 , 0 , 22405.9 , 22405.9 +DATA 58 , 0 , 30809.8 , 30809.8 +DATA 59 , 0 , -28930.6 , -28930.6 +DATA 60 , 0 , -6014.53 , -6014.53 +DATA 61 , 0 , 17414.6 , 17414.6 +DATA 62 , 0 , -10538.3 , -10538.3 +DATA 63 , 0 , -17536.3 , -17536.3 +DATA 64 , 0 , -8856.62 , -8856.62 +DATA 65 , 0 , -5140.12 , -5140.12 +DATA 66 , 0 , -8595.31 , -8595.31 +DATA 67 , 0 , -3382.87 , -3382.87 +DATA 68 , 0 , -5002.07 , -5002.07 +DATA 69 , 0 , -5800.72 , -5800.72 +DATA 70 , 0 , 29686.4 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3790.9 , 3790.9 +DATA 75 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CSNG_X_N.OUT b/NBS2/F_CSNG_X_N.OUT new file mode 100644 index 0000000..ff519a8 --- /dev/null +++ b/NBS2/F_CSNG_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CSNG_X_N.dif b/NBS2/F_CSNG_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CSNG_X_N.run b/NBS2/F_CSNG_X_N.run new file mode 100644 index 0000000..2ef9542 --- /dev/null +++ b/NBS2/F_CSNG_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVC_A_N.80 b/NBS2/F_CVC_A_N.80 new file mode 100644 index 0000000..8ce6db6 --- /dev/null +++ b/NBS2/F_CVC_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.28007E+9 A$=[ LLLL] + F= 0 N= 1.28007E+9 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 5.38976E+8 A$=[ '' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.86438E+9 A$=[ oo ] + F= 0 N= 1.86438E+9 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5.40029E+8 A$=[ 00 ] + F= 0 N= 5.40029E+8 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.54561E+9 A$=[ \\\\ ] + F= 0 N= 1.54561E+9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.81904E+9 A$=[ lllll ] + F= 0 N= 1.81904E+9 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 5.38976E+8 A$=[ uuuu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.43236E+8 A$=[ a ] + F= 0 N= 5.43236E+8 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 5.43713E+8 A$=[ hh ] + F= 0 N= 5.43713E+8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 5.43695E+8 A$=[ h ] + F= 0 N= 5.43695E+8 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5.38976E+8 A$=[ 5 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 5.40156E+8 A$=[ 2 ] + F= 0 N= 5.40156E+8 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5.3898E+8 A$=[ - ] + F= 0 N= 5.3898E+8 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.95377E+9 A$=[ tttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9.76888E+8 A$=[ :::: ] + F= 0 N= 9.76888E+8 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.59594E+9 A$=[ ___ ] + F= 0 N= 1.59594E+9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60009E+9 A$=[ _____ ] + F= 0 N= 1.60009E+9 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.179E+9 A$=[ FFFF ] + F= 0 N= 1.179E+9 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.38976E+8 A$=[ kkk] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5.38976E+8 A$=[ NNNN ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.83082E+9 A$=[ mmmm ] + F= 0 N= 1.83082E+9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.38976E+8 A$=[ ,,,,, ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5.38988E+8 A$=[OO ] + F= 0 N= 5.38988E+8 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.21006E+9 A$=[ HHHH ] + F= 0 N= 1.21006E+9 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.78049E+9 A$=[ j ] + F= 0 N= 1.78049E+9 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 7.24247E+8 A$=[ +++ ] + F= 0 N= 7.24247E+8 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 5.38976E+8 A$=[ ((] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 5.38976E+8 A$=[ uu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 5.38976E+8 A$=[ 00 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5.38976E+8 A$=[ HH ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 5.41532E+8 A$=[ G ] + F= 0 N= 5.41532E+8 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 5.38976E+8 A$=[ {{{{ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 5.38976E+8 A$=[ ]]] ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5.38976E+8 A$=[ 44 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 5.38992E+8 A$=[^^ ] + F= 0 N= 5.38992E+8 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 5.38976E+8 A$=[ QQ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 5.38976E+8 A$=[ FFFF ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5.38996E+8 A$=[ n ] + F= 0 N= 5.38996E+8 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 5.38976E+8 A$=[ hh ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.40358E+8 A$=[555 ] + F= 0 N= 5.40358E+8 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 5.38976E+8 A$=[ YYYY ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 5.38976E+8 A$=[ w ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.29691E+9 A$=[MMMM ] + F= 0 N= 1.29691E+9 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.24638E+9 A$=[ JJJJ ] + F= 0 N= 1.24638E+9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5.38976E+8 A$=[ * ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5.38976E+8 A$=[ @@@ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 5.38976E+8 A$=[ ss ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 5.43564E+8 A$=[ f ] + F= 0 N= 5.43564E+8 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.14296E+9 A$=[ D ] + F= 0 N= 1.14296E+9 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 5.39174E+8 A$=[### ] + F= 0 N= 5.39174E+8 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 5.38976E+8 A$=[ ' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68428E+9 A$=[ dd ] + F= 0 N= 1.68428E+9 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 5.42397E+8 A$=[ TT ] + F= 0 N= 5.42397E+8 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.98745E+9 A$=[ vvv ] + F= 0 N= 1.98745E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 5.38976E+8 A$=[ X ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 5.38976E+8 A$=[ % ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8.92679E+8 A$=[ 5555 ] + F= 0 N= 8.92679E+8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.17901E+9 A$=[FFFF ] + F= 0 N= 1.17901E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.12219E+9 A$=[ ~~~~ ] + F= 0 N= 2.12219E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.08248E+9 A$=[ || ] + F= 0 N= 2.08248E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 5.38976E+8 A$=[ SSS ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 9.08075E+8 A$=[ 6666 ] + F= 0 N= 9.08075E+8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 5.38976E+8 A$=[ ww ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8.25303E+8 A$=[ 1111 ] + F= 0 N= 8.25303E+8 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.95377E+9 A$=[ ttttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.3306E+9 A$=[ OOOOO ] + F= 0 N= 1.3306E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 5.38986E+8 A$=[ E ] + F= 0 N= 5.38986E+8 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.34744E+9 A$=[ PPPPP ] + F= 0 N= 1.34744E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.38976E+8 A$=[ == ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.4485E+9 A$=[ VVVV ] + F= 0 N= 1.4485E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5.38993E+8 A$=[ c ] + F= 0 N= 5.38993E+8 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVC_A_N.BAS b/NBS2/F_CVC_A_N.BAS new file mode 100644 index 0000000..7c4ec1c --- /dev/null +++ b/NBS2/F_CVC_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:19 +REM FILENAME: F_CVC_A_N.BAS +REM SYNTAX: N = CVC( A$ ) +REM UNIQUEID: F_CVC_A_N +REM FUNCTION: CVC +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CVC( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , "" +DATA 2 , 1 , 0 , " " +DATA 3 , 1 , 0 , "3" +DATA 4 , 1 , 0 , "z" +DATA 5 , 1 , 0 , " " +DATA 6 , 1 , 0 , " 3" +DATA 7 , 1 , 0 , " z" +DATA 8 , 1 , 0 , "3 " +DATA 9 , 1 , 0 , "z " +DATA 10 , 1 , 0 , " 3 " +DATA 11 , 1 , 0 , " z " +DATA 12 , 0 , 1.28007E+9 , " LLLL" +DATA 13 , 0 , 5.38976E+8 , " '' " +DATA 14 , 0 , 1.86438E+9 , " oo " +DATA 15 , 0 , 5.40029E+8 , " 00 " +DATA 16 , 0 , 1.54561E+9 , " \\\\ " +DATA 17 , 0 , 1.81904E+9 , " lllll " +DATA 18 , 0 , 5.38976E+8 , " uuuu " +DATA 19 , 0 , 5.43236E+8 , " a " +DATA 20 , 0 , 5.38976E+8 , " " +DATA 21 , 0 , 5.43713E+8 , " hh " +DATA 22 , 0 , 5.43695E+8 , " h " +DATA 23 , 1 , 0 , " )" +DATA 24 , 0 , 5.38976E+8 , " 5 " +DATA 25 , 0 , 5.40156E+8 , " 2 " +DATA 26 , 0 , 5.3898E+8 , " - " +DATA 27 , 1 , 0 , "dd " +DATA 28 , 0 , 1.95377E+9 , " tttt " +DATA 29 , 0 , 9.76888E+8 , " :::: " +DATA 30 , 0 , 1.59594E+9 , " ___ " +DATA 31 , 0 , 5.38976E+8 , " " +DATA 32 , 0 , 5.38976E+8 , " " +DATA 33 , 0 , 1.60009E+9 , " _____ " +DATA 34 , 1 , 0 , " S " +DATA 35 , 0 , 1.179E+9 , " FFFF " +DATA 36 , 0 , 5.38976E+8 , " kkk" +DATA 37 , 0 , 5.38976E+8 , " NNNN " +DATA 38 , 0 , 1.83082E+9 , " mmmm " +DATA 39 , 0 , 5.38976E+8 , " ,,,,, " +DATA 40 , 0 , 5.38988E+8 , "OO " +DATA 41 , 0 , 1.21006E+9 , " HHHH " +DATA 42 , 1 , 0 , " < " +DATA 43 , 0 , 1.78049E+9 , " j " +DATA 44 , 0 , 5.38976E+8 , " yyyy " +DATA 45 , 0 , 7.24247E+8 , " +++ " +DATA 46 , 1 , 0 , "o " +DATA 47 , 0 , 5.38976E+8 , " ((" +DATA 48 , 0 , 5.38976E+8 , " uu " +DATA 49 , 0 , 5.38976E+8 , " 00 " +DATA 50 , 0 , 5.38976E+8 , " HH " +DATA 51 , 0 , 5.38976E+8 , " " +DATA 52 , 0 , 5.41532E+8 , " G " +DATA 53 , 0 , 5.38976E+8 , " {{{{ " +DATA 54 , 0 , 5.38976E+8 , " ]]] " +DATA 55 , 1 , 0 , "CCC" +DATA 56 , 0 , 5.38976E+8 , " 44 " +DATA 57 , 0 , 5.38992E+8 , "^^ " +DATA 58 , 0 , 5.38976E+8 , " QQ " +DATA 59 , 0 , 5.38976E+8 , " FFFF " +DATA 60 , 0 , 5.38996E+8 , " n " +DATA 61 , 0 , 5.38976E+8 , " hh " +DATA 62 , 0 , 5.40358E+8 , "555 " +DATA 63 , 0 , 5.38976E+8 , " YYYY " +DATA 64 , 0 , 5.38976E+8 , " w " +DATA 65 , 0 , 1.29691E+9 , "MMMM " +DATA 66 , 0 , 1.24638E+9 , " JJJJ " +DATA 67 , 0 , 5.38976E+8 , " %% " +DATA 68 , 0 , 5.38976E+8 , " * " +DATA 69 , 0 , 5.38976E+8 , " @@@ " +DATA 70 , 1 , 0 , "I " +DATA 71 , 0 , 5.38976E+8 , " ss " +DATA 72 , 0 , 5.43564E+8 , " f " +DATA 73 , 0 , 1.14296E+9 , " D " +DATA 74 , 0 , 5.39174E+8 , "### " +DATA 75 , 0 , 5.38976E+8 , " ' " +DATA 76 , 0 , 1.68428E+9 , " dd " +DATA 77 , 0 , 5.42397E+8 , " TT " +DATA 78 , 0 , 1.98745E+9 , " vvv " +DATA 79 , 0 , 5.38976E+8 , " X " +DATA 80 , 0 , 5.38976E+8 , " % " +DATA 81 , 1 , 0 , " " +DATA 82 , 0 , 8.92679E+8 , " 5555 " +DATA 83 , 0 , 1.17901E+9 , "FFFF " +DATA 84 , 0 , 5.38976E+8 , " %% " +DATA 85 , 0 , 5.38976E+8 , " " +DATA 86 , 0 , 2.12219E+9 , " ~~~~ " +DATA 87 , 0 , 2.08248E+9 , " || " +DATA 88 , 0 , 5.38976E+8 , " SSS " +DATA 89 , 0 , 9.08075E+8 , " 6666 " +DATA 90 , 0 , 5.38976E+8 , " ww " +DATA 91 , 0 , 8.25303E+8 , " 1111 " +DATA 92 , 1 , 0 , " K " +DATA 93 , 0 , 1.95377E+9 , " ttttt " +DATA 94 , 0 , 1.3306E+9 , " OOOOO " +DATA 95 , 0 , 5.38986E+8 , " E " +DATA 96 , 0 , 1.34744E+9 , " PPPPP " +DATA 97 , 0 , 5.38976E+8 , " == " +DATA 98 , 0 , 1.4485E+9 , " VVVV " +DATA 99 , 0 , 5.38993E+8 , " c " +DATA 100 , 0 , 5.38976E+8 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CVC_A_N.OUT b/NBS2/F_CVC_A_N.OUT new file mode 100644 index 0000000..c772d22 --- /dev/null +++ b/NBS2/F_CVC_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.28007E+9 A$=[ LLLL] + F= 0 N= 1.28007E+9 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 5.38976E+8 A$=[ '' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.86438E+9 A$=[ oo ] + F= 0 N= 1.86438E+9 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5.40029E+8 A$=[ 00 ] + F= 0 N= 5.40029E+8 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.54561E+9 A$=[ \\\\ ] + F= 0 N= 1.54561E+9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.81904E+9 A$=[ lllll ] + F= 0 N= 1.81904E+9 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 5.38976E+8 A$=[ uuuu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.43236E+8 A$=[ a ] + F= 0 N= 5.43236E+8 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 5.43713E+8 A$=[ hh ] + F= 0 N= 5.43713E+8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 5.43695E+8 A$=[ h ] + F= 0 N= 5.43695E+8 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5.38976E+8 A$=[ 5 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 5.40156E+8 A$=[ 2 ] + F= 0 N= 5.40156E+8 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5.3898E+8 A$=[ - ] + F= 0 N= 5.3898E+8 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.95377E+9 A$=[ tttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9.76888E+8 A$=[ :::: ] + F= 0 N= 9.76888E+8 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.59594E+9 A$=[ ___ ] + F= 0 N= 1.59594E+9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60009E+9 A$=[ _____ ] + F= 0 N= 1.60009E+9 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.179E+9 A$=[ FFFF ] + F= 0 N= 1.179E+9 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.38976E+8 A$=[ kkk] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5.38976E+8 A$=[ NNNN ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.83082E+9 A$=[ mmmm ] + F= 0 N= 1.83082E+9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.38976E+8 A$=[ ,,,,, ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5.38988E+8 A$=[OO ] + F= 0 N= 5.38988E+8 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.21006E+9 A$=[ HHHH ] + F= 0 N= 1.21006E+9 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.78049E+9 A$=[ j ] + F= 0 N= 1.78049E+9 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 7.24247E+8 A$=[ +++ ] + F= 0 N= 7.24247E+8 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 5.38976E+8 A$=[ ((] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 5.38976E+8 A$=[ uu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 5.38976E+8 A$=[ 00 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5.38976E+8 A$=[ HH ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 5.41532E+8 A$=[ G ] + F= 0 N= 5.41532E+8 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 5.38976E+8 A$=[ {{{{ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 5.38976E+8 A$=[ ]]] ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5.38976E+8 A$=[ 44 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 5.38992E+8 A$=[^^ ] + F= 0 N= 5.38992E+8 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 5.38976E+8 A$=[ QQ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 5.38976E+8 A$=[ FFFF ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5.38996E+8 A$=[ n ] + F= 0 N= 5.38996E+8 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 5.38976E+8 A$=[ hh ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.40358E+8 A$=[555 ] + F= 0 N= 5.40358E+8 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 5.38976E+8 A$=[ YYYY ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 5.38976E+8 A$=[ w ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.29691E+9 A$=[MMMM ] + F= 0 N= 1.29691E+9 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.24638E+9 A$=[ JJJJ ] + F= 0 N= 1.24638E+9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5.38976E+8 A$=[ * ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5.38976E+8 A$=[ @@@ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 5.38976E+8 A$=[ ss ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 5.43564E+8 A$=[ f ] + F= 0 N= 5.43564E+8 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.14296E+9 A$=[ D ] + F= 0 N= 1.14296E+9 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 5.39174E+8 A$=[### ] + F= 0 N= 5.39174E+8 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 5.38976E+8 A$=[ ' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68428E+9 A$=[ dd ] + F= 0 N= 1.68428E+9 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 5.42397E+8 A$=[ TT ] + F= 0 N= 5.42397E+8 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.98745E+9 A$=[ vvv ] + F= 0 N= 1.98745E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 5.38976E+8 A$=[ X ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 5.38976E+8 A$=[ % ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8.92679E+8 A$=[ 5555 ] + F= 0 N= 8.92679E+8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.17901E+9 A$=[FFFF ] + F= 0 N= 1.17901E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.12219E+9 A$=[ ~~~~ ] + F= 0 N= 2.12219E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.08248E+9 A$=[ || ] + F= 0 N= 2.08248E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 5.38976E+8 A$=[ SSS ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 9.08075E+8 A$=[ 6666 ] + F= 0 N= 9.08075E+8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 5.38976E+8 A$=[ ww ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8.25303E+8 A$=[ 1111 ] + F= 0 N= 8.25303E+8 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.95377E+9 A$=[ ttttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.3306E+9 A$=[ OOOOO ] + F= 0 N= 1.3306E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 5.38986E+8 A$=[ E ] + F= 0 N= 5.38986E+8 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.34744E+9 A$=[ PPPPP ] + F= 0 N= 1.34744E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.38976E+8 A$=[ == ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.4485E+9 A$=[ VVVV ] + F= 0 N= 1.4485E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5.38993E+8 A$=[ c ] + F= 0 N= 5.38993E+8 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVC_A_N.dif b/NBS2/F_CVC_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CVC_A_N.run b/NBS2/F_CVC_A_N.run new file mode 100644 index 0000000..8ce6db6 --- /dev/null +++ b/NBS2/F_CVC_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.28007E+9 A$=[ LLLL] + F= 0 N= 1.28007E+9 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 5.38976E+8 A$=[ '' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.86438E+9 A$=[ oo ] + F= 0 N= 1.86438E+9 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5.40029E+8 A$=[ 00 ] + F= 0 N= 5.40029E+8 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.54561E+9 A$=[ \\\\ ] + F= 0 N= 1.54561E+9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.81904E+9 A$=[ lllll ] + F= 0 N= 1.81904E+9 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 5.38976E+8 A$=[ uuuu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.43236E+8 A$=[ a ] + F= 0 N= 5.43236E+8 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 5.43713E+8 A$=[ hh ] + F= 0 N= 5.43713E+8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 5.43695E+8 A$=[ h ] + F= 0 N= 5.43695E+8 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5.38976E+8 A$=[ 5 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 5.40156E+8 A$=[ 2 ] + F= 0 N= 5.40156E+8 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5.3898E+8 A$=[ - ] + F= 0 N= 5.3898E+8 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.95377E+9 A$=[ tttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9.76888E+8 A$=[ :::: ] + F= 0 N= 9.76888E+8 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.59594E+9 A$=[ ___ ] + F= 0 N= 1.59594E+9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60009E+9 A$=[ _____ ] + F= 0 N= 1.60009E+9 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.179E+9 A$=[ FFFF ] + F= 0 N= 1.179E+9 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.38976E+8 A$=[ kkk] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5.38976E+8 A$=[ NNNN ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.83082E+9 A$=[ mmmm ] + F= 0 N= 1.83082E+9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.38976E+8 A$=[ ,,,,, ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5.38988E+8 A$=[OO ] + F= 0 N= 5.38988E+8 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.21006E+9 A$=[ HHHH ] + F= 0 N= 1.21006E+9 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.78049E+9 A$=[ j ] + F= 0 N= 1.78049E+9 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 7.24247E+8 A$=[ +++ ] + F= 0 N= 7.24247E+8 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 5.38976E+8 A$=[ ((] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 5.38976E+8 A$=[ uu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 5.38976E+8 A$=[ 00 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5.38976E+8 A$=[ HH ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 5.41532E+8 A$=[ G ] + F= 0 N= 5.41532E+8 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 5.38976E+8 A$=[ {{{{ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 5.38976E+8 A$=[ ]]] ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5.38976E+8 A$=[ 44 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 5.38992E+8 A$=[^^ ] + F= 0 N= 5.38992E+8 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 5.38976E+8 A$=[ QQ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 5.38976E+8 A$=[ FFFF ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5.38996E+8 A$=[ n ] + F= 0 N= 5.38996E+8 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 5.38976E+8 A$=[ hh ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.40358E+8 A$=[555 ] + F= 0 N= 5.40358E+8 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 5.38976E+8 A$=[ YYYY ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 5.38976E+8 A$=[ w ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.29691E+9 A$=[MMMM ] + F= 0 N= 1.29691E+9 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.24638E+9 A$=[ JJJJ ] + F= 0 N= 1.24638E+9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5.38976E+8 A$=[ * ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5.38976E+8 A$=[ @@@ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 5.38976E+8 A$=[ ss ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 5.43564E+8 A$=[ f ] + F= 0 N= 5.43564E+8 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.14296E+9 A$=[ D ] + F= 0 N= 1.14296E+9 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 5.39174E+8 A$=[### ] + F= 0 N= 5.39174E+8 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 5.38976E+8 A$=[ ' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68428E+9 A$=[ dd ] + F= 0 N= 1.68428E+9 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 5.42397E+8 A$=[ TT ] + F= 0 N= 5.42397E+8 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.98745E+9 A$=[ vvv ] + F= 0 N= 1.98745E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 5.38976E+8 A$=[ X ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 5.38976E+8 A$=[ % ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8.92679E+8 A$=[ 5555 ] + F= 0 N= 8.92679E+8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.17901E+9 A$=[FFFF ] + F= 0 N= 1.17901E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.12219E+9 A$=[ ~~~~ ] + F= 0 N= 2.12219E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.08248E+9 A$=[ || ] + F= 0 N= 2.08248E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 5.38976E+8 A$=[ SSS ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 9.08075E+8 A$=[ 6666 ] + F= 0 N= 9.08075E+8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 5.38976E+8 A$=[ ww ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8.25303E+8 A$=[ 1111 ] + F= 0 N= 8.25303E+8 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.95377E+9 A$=[ ttttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.3306E+9 A$=[ OOOOO ] + F= 0 N= 1.3306E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 5.38986E+8 A$=[ E ] + F= 0 N= 5.38986E+8 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.34744E+9 A$=[ PPPPP ] + F= 0 N= 1.34744E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.38976E+8 A$=[ == ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.4485E+9 A$=[ VVVV ] + F= 0 N= 1.4485E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5.38993E+8 A$=[ c ] + F= 0 N= 5.38993E+8 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVD_A_N.80 b/NBS2/F_CVD_A_N.80 new file mode 100644 index 0000000..4223526 --- /dev/null +++ b/NBS2/F_CVD_A_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 6.02371E-154 A$=[ '' ] + F= 0 N= 6.02371E-154 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 6.01392E-154 A$=[ oo ] + F= 0 N= 6.01392E-154 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 8.46098E-153 A$=[ \\\\ ] + F= 0 N= 8.46098E-153 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 6.12461E-154 A$=[ lllll ] + F= 0 N= 6.12461E-154 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 6.4441E+257 A$=[ uuuu ] + F= 0 N= 6.4441E+257 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 6.01347E-154 A$=[ hh ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 6.01359E-154 A$=[ 5 ] + F= 0 N= 6.01359E-154 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6.13631E-154 A$=[ tttt ] + F= 0 N= 6.13631E-154 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6.05149E-154 A$=[ :::: ] + F= 0 N= 6.05149E-154 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 6.1056E-154 A$=[ ___ ] + F= 0 N= 6.1056E-154 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 6.1056E-154 A$=[ _____ ] + F= 0 N= 6.1056E-154 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.63409E+69 A$=[ NNNN ] + F= 0 N= 1.63409E+69 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.75584E-152 A$=[ mmmm ] + F= 0 N= 1.75584E-152 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 6.59474E-96 A$=[ ,,,,, ] + F= 0 N= 6.59474E-96 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 3.62212E-153 A$=[ HHHH ] + F= 0 N= 3.62212E-153 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 6.01347E-154 A$=[ j ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.41118E+277 A$=[ yyyy ] + F= 0 N= 1.41118E+277 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.5606E-152 A$=[ uu ] + F= 0 N= 2.5606E-152 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 6.03687E-154 A$=[ 00 ] + F= 0 N= 6.03687E-154 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 3.62203E-153 A$=[ HH ] + F= 0 N= 3.62203E-153 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 6.53867E+286 A$=[ {{{{ ] + F= 0 N= 6.53867E+286 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 8.76048E-153 A$=[ ]]] ] + F= 0 N= 8.76048E-153 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.50685E-153 A$=[ 44 ] + F= 0 N= 1.50685E-153 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 6.08513E-154 A$=[ QQ ] + F= 0 N= 6.08513E-154 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 3.52944E+30 A$=[ FFFF ] + F= 0 N= 3.52944E+30 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 6.11876E-154 A$=[ hh ] + F= 0 N= 6.11876E-154 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 2.6183E+122 A$=[ YYYY ] + F= 0 N= 2.6183E+122 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 6.01397E-154 A$=[ w ] + F= 0 N= 6.01397E-154 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 6.01371E-154 A$=[ JJJJ ] + F= 0 N= 6.01371E-154 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 6.02078E-154 A$=[ %% ] + F= 0 N= 6.02078E-154 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 6.02804E-154 A$=[ * ] + F= 0 N= 6.02804E-154 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 2.42411E-153 A$=[ @@@ ] + F= 0 N= 2.42411E-153 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 6.13485E-154 A$=[ ss ] + F= 0 N= 6.13485E-154 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 6.01351E-154 A$=[ ' ] + F= 0 N= 6.01351E-154 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 6.01347E-154 A$=[ dd ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 6.0135E-154 A$=[ % ] + F= 0 N= 6.0135E-154 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 6.01359E-154 A$=[ 5555 ] + F= 0 N= 6.01359E-154 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 7.88534E-154 A$=[ %% ] + F= 0 N= 7.88534E-154 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 6.15094E-154 A$=[ ~~~~ ] + F= 0 N= 6.15094E-154 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 6.014E-154 A$=[ || ] + F= 0 N= 6.014E-154 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.51937E+93 A$=[ SSS ] + F= 0 N= 2.51937E+93 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 1.65663E-153 A$=[ 6666 ] + F= 0 N= 1.65663E-153 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 6.1407E-154 A$=[ ww ] + F= 0 N= 6.1407E-154 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 6.03833E-154 A$=[ 1111 ] + F= 0 N= 6.03833E-154 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.44095E-152 A$=[ ttttt ] + F= 0 N= 2.44095E-152 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 6.0822E-154 A$=[ OOOOO ] + F= 0 N= 6.0822E-154 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.08367E-154 A$=[ PPPPP ] + F= 0 N= 6.08367E-154 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 6.01378E-154 A$=[ VVVV ] + F= 0 N= 6.01378E-154 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.41118E+277 A$=[ + yyyy ] + F= 0 N= 1.41118E+277 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVD_A_N.BAS b/NBS2/F_CVD_A_N.BAS new file mode 100644 index 0000000..021170a --- /dev/null +++ b/NBS2/F_CVD_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:19 +REM FILENAME: F_CVD_A_N.BAS +REM SYNTAX: N = CVD( A$ ) +REM UNIQUEID: F_CVD_A_N +REM FUNCTION: CVD +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CVD( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , "" +DATA 2 , 1 , 0 , " " +DATA 3 , 1 , 0 , "3" +DATA 4 , 1 , 0 , "z" +DATA 5 , 1 , 0 , " " +DATA 6 , 1 , 0 , " 3" +DATA 7 , 1 , 0 , " z" +DATA 8 , 1 , 0 , "3 " +DATA 9 , 1 , 0 , "z " +DATA 10 , 1 , 0 , " 3 " +DATA 11 , 1 , 0 , " z " +DATA 12 , 1 , 0 , " LLLL" +DATA 13 , 0 , 6.02371E-154 , " '' " +DATA 14 , 0 , 6.01392E-154 , " oo " +DATA 15 , 1 , 0 , " 00 " +DATA 16 , 0 , 8.46098E-153 , " \\\\ " +DATA 17 , 0 , 6.12461E-154 , " lllll " +DATA 18 , 0 , 6.4441E+257 , " uuuu " +DATA 19 , 1 , 0 , " a " +DATA 20 , 1 , 0 , " " +DATA 21 , 0 , 6.01347E-154 , " hh " +DATA 22 , 1 , 0 , " h " +DATA 23 , 1 , 0 , " )" +DATA 24 , 0 , 6.01359E-154 , " 5 " +DATA 25 , 1 , 0 , " 2 " +DATA 26 , 1 , 0 , " - " +DATA 27 , 1 , 0 , "dd " +DATA 28 , 0 , 6.13631E-154 , " tttt " +DATA 29 , 0 , 6.05149E-154 , " :::: " +DATA 30 , 0 , 6.1056E-154 , " ___ " +DATA 31 , 1 , 0 , " " +DATA 32 , 1 , 0 , " " +DATA 33 , 0 , 6.1056E-154 , " _____ " +DATA 34 , 1 , 0 , " S " +DATA 35 , 1 , 0 , " FFFF " +DATA 36 , 1 , 0 , " kkk" +DATA 37 , 0 , 1.63409E+69 , " NNNN " +DATA 38 , 0 , 1.75584E-152 , " mmmm " +DATA 39 , 0 , 6.59474E-96 , " ,,,,, " +DATA 40 , 1 , 0 , "OO " +DATA 41 , 0 , 3.62212E-153 , " HHHH " +DATA 42 , 1 , 0 , " < " +DATA 43 , 0 , 6.01347E-154 , " j " +DATA 44 , 0 , 1.41118E+277 , " yyyy " +DATA 45 , 1 , 0 , " +++ " +DATA 46 , 1 , 0 , "o " +DATA 47 , 1 , 0 , " ((" +DATA 48 , 0 , 2.5606E-152 , " uu " +DATA 49 , 0 , 6.03687E-154 , " 00 " +DATA 50 , 0 , 3.62203E-153 , " HH " +DATA 51 , 1 , 0 , " " +DATA 52 , 1 , 0 , " G " +DATA 53 , 0 , 6.53867E+286 , " {{{{ " +DATA 54 , 0 , 8.76048E-153 , " ]]] " +DATA 55 , 1 , 0 , "CCC" +DATA 56 , 0 , 1.50685E-153 , " 44 " +DATA 57 , 1 , 0 , "^^ " +DATA 58 , 0 , 6.08513E-154 , " QQ " +DATA 59 , 0 , 3.52944E+30 , " FFFF " +DATA 60 , 1 , 0 , " n " +DATA 61 , 0 , 6.11876E-154 , " hh " +DATA 62 , 1 , 0 , "555 " +DATA 63 , 0 , 2.6183E+122 , " YYYY " +DATA 64 , 0 , 6.01397E-154 , " w " +DATA 65 , 1 , 0 , "MMMM " +DATA 66 , 0 , 6.01371E-154 , " JJJJ " +DATA 67 , 0 , 6.02078E-154 , " %% " +DATA 68 , 0 , 6.02804E-154 , " * " +DATA 69 , 0 , 2.42411E-153 , " @@@ " +DATA 70 , 1 , 0 , "I " +DATA 71 , 0 , 6.13485E-154 , " ss " +DATA 72 , 1 , 0 , " f " +DATA 73 , 1 , 0 , " D " +DATA 74 , 1 , 0 , "### " +DATA 75 , 0 , 6.01351E-154 , " ' " +DATA 76 , 0 , 6.01347E-154 , " dd " +DATA 77 , 1 , 0 , " TT " +DATA 78 , 1 , 0 , " vvv " +DATA 79 , 1 , 0 , " X " +DATA 80 , 0 , 6.0135E-154 , " % " +DATA 81 , 1 , 0 , " " +DATA 82 , 0 , 6.01359E-154 , " 5555 " +DATA 83 , 1 , 0 , "FFFF " +DATA 84 , 0 , 7.88534E-154 , " %% " +DATA 85 , 1 , 0 , " " +DATA 86 , 0 , 6.15094E-154 , " ~~~~ " +DATA 87 , 0 , 6.014E-154 , " || " +DATA 88 , 0 , 2.51937E+93 , " SSS " +DATA 89 , 0 , 1.65663E-153 , " 6666 " +DATA 90 , 0 , 6.1407E-154 , " ww " +DATA 91 , 0 , 6.03833E-154 , " 1111 " +DATA 92 , 1 , 0 , " K " +DATA 93 , 0 , 2.44095E-152 , " ttttt " +DATA 94 , 0 , 6.0822E-154 , " OOOOO " +DATA 95 , 1 , 0 , " E " +DATA 96 , 0 , 6.08367E-154 , " PPPPP " +DATA 97 , 1 , 0 , " == " +DATA 98 , 0 , 6.01378E-154 , " VVVV " +DATA 99 , 1 , 0 , " c " +DATA 100 , 0 , 1.41118E+277 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CVD_A_N.OUT b/NBS2/F_CVD_A_N.OUT new file mode 100644 index 0000000..adbb3df --- /dev/null +++ b/NBS2/F_CVD_A_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 6.02371E-154 A$=[ '' ] + F= 0 N= 6.02371E-154 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 6.01392E-154 A$=[ oo ] + F= 0 N= 6.01392E-154 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 8.46098E-153 A$=[ \\\\ ] + F= 0 N= 8.46098E-153 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 6.12461E-154 A$=[ lllll ] + F= 0 N= 6.12461E-154 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 6.4441E+257 A$=[ uuuu ] + F= 0 N= 6.4441E+257 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 6.01347E-154 A$=[ hh ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 6.01359E-154 A$=[ 5 ] + F= 0 N= 6.01359E-154 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6.13631E-154 A$=[ tttt ] + F= 0 N= 6.13631E-154 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6.05149E-154 A$=[ :::: ] + F= 0 N= 6.05149E-154 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 6.1056E-154 A$=[ ___ ] + F= 0 N= 6.1056E-154 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 6.1056E-154 A$=[ _____ ] + F= 0 N= 6.1056E-154 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.63409E+69 A$=[ NNNN ] + F= 0 N= 1.63409E+69 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.75584E-152 A$=[ mmmm ] + F= 0 N= 1.75584E-152 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 6.59474E-96 A$=[ ,,,,, ] + F= 0 N= 6.59474E-96 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 3.62212E-153 A$=[ HHHH ] + F= 0 N= 3.62212E-153 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 6.01347E-154 A$=[ j ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.41118E+277 A$=[ yyyy ] + F= 0 N= 1.41118E+277 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.5606E-152 A$=[ uu ] + F= 0 N= 2.5606E-152 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 6.03687E-154 A$=[ 00 ] + F= 0 N= 6.03687E-154 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 3.62203E-153 A$=[ HH ] + F= 0 N= 3.62203E-153 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 6.53867E+286 A$=[ {{{{ ] + F= 0 N= 6.53867E+286 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 8.76048E-153 A$=[ ]]] ] + F= 0 N= 8.76048E-153 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.50685E-153 A$=[ 44 ] + F= 0 N= 1.50685E-153 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 6.08513E-154 A$=[ QQ ] + F= 0 N= 6.08513E-154 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 3.52944E+30 A$=[ FFFF ] + F= 0 N= 3.52944E+30 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 6.11876E-154 A$=[ hh ] + F= 0 N= 6.11876E-154 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 2.6183E+122 A$=[ YYYY ] + F= 0 N= 2.6183E+122 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 6.01397E-154 A$=[ w ] + F= 0 N= 6.01397E-154 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 6.01371E-154 A$=[ JJJJ ] + F= 0 N= 6.01371E-154 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 6.02078E-154 A$=[ %% ] + F= 0 N= 6.02078E-154 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 6.02804E-154 A$=[ * ] + F= 0 N= 6.02804E-154 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 2.42411E-153 A$=[ @@@ ] + F= 0 N= 2.42411E-153 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 6.13485E-154 A$=[ ss ] + F= 0 N= 6.13485E-154 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 6.01351E-154 A$=[ ' ] + F= 0 N= 6.01351E-154 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 6.01347E-154 A$=[ dd ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 6.0135E-154 A$=[ % ] + F= 0 N= 6.0135E-154 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 6.01359E-154 A$=[ 5555 ] + F= 0 N= 6.01359E-154 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 7.88534E-154 A$=[ %% ] + F= 0 N= 7.88534E-154 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 6.15094E-154 A$=[ ~~~~ ] + F= 0 N= 6.15094E-154 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 6.014E-154 A$=[ || ] + F= 0 N= 6.014E-154 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.51937E+93 A$=[ SSS ] + F= 0 N= 2.51937E+93 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 1.65663E-153 A$=[ 6666 ] + F= 0 N= 1.65663E-153 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 6.1407E-154 A$=[ ww ] + F= 0 N= 6.1407E-154 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 6.03833E-154 A$=[ 1111 ] + F= 0 N= 6.03833E-154 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.44095E-152 A$=[ ttttt ] + F= 0 N= 2.44095E-152 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 6.0822E-154 A$=[ OOOOO ] + F= 0 N= 6.0822E-154 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.08367E-154 A$=[ PPPPP ] + F= 0 N= 6.08367E-154 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 6.01378E-154 A$=[ VVVV ] + F= 0 N= 6.01378E-154 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.41118E+277 A$=[ + yyyy ] + F= 0 N= 1.41118E+277 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVD_A_N.dif b/NBS2/F_CVD_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CVD_A_N.run b/NBS2/F_CVD_A_N.run new file mode 100644 index 0000000..4223526 --- /dev/null +++ b/NBS2/F_CVD_A_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 6.02371E-154 A$=[ '' ] + F= 0 N= 6.02371E-154 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 6.01392E-154 A$=[ oo ] + F= 0 N= 6.01392E-154 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 8.46098E-153 A$=[ \\\\ ] + F= 0 N= 8.46098E-153 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 6.12461E-154 A$=[ lllll ] + F= 0 N= 6.12461E-154 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 6.4441E+257 A$=[ uuuu ] + F= 0 N= 6.4441E+257 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 6.01347E-154 A$=[ hh ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 6.01359E-154 A$=[ 5 ] + F= 0 N= 6.01359E-154 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6.13631E-154 A$=[ tttt ] + F= 0 N= 6.13631E-154 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6.05149E-154 A$=[ :::: ] + F= 0 N= 6.05149E-154 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 6.1056E-154 A$=[ ___ ] + F= 0 N= 6.1056E-154 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 6.1056E-154 A$=[ _____ ] + F= 0 N= 6.1056E-154 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.63409E+69 A$=[ NNNN ] + F= 0 N= 1.63409E+69 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.75584E-152 A$=[ mmmm ] + F= 0 N= 1.75584E-152 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 6.59474E-96 A$=[ ,,,,, ] + F= 0 N= 6.59474E-96 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 3.62212E-153 A$=[ HHHH ] + F= 0 N= 3.62212E-153 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 6.01347E-154 A$=[ j ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.41118E+277 A$=[ yyyy ] + F= 0 N= 1.41118E+277 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.5606E-152 A$=[ uu ] + F= 0 N= 2.5606E-152 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 6.03687E-154 A$=[ 00 ] + F= 0 N= 6.03687E-154 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 3.62203E-153 A$=[ HH ] + F= 0 N= 3.62203E-153 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 6.53867E+286 A$=[ {{{{ ] + F= 0 N= 6.53867E+286 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 8.76048E-153 A$=[ ]]] ] + F= 0 N= 8.76048E-153 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.50685E-153 A$=[ 44 ] + F= 0 N= 1.50685E-153 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 6.08513E-154 A$=[ QQ ] + F= 0 N= 6.08513E-154 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 3.52944E+30 A$=[ FFFF ] + F= 0 N= 3.52944E+30 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 6.11876E-154 A$=[ hh ] + F= 0 N= 6.11876E-154 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 2.6183E+122 A$=[ YYYY ] + F= 0 N= 2.6183E+122 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 6.01397E-154 A$=[ w ] + F= 0 N= 6.01397E-154 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 6.01371E-154 A$=[ JJJJ ] + F= 0 N= 6.01371E-154 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 6.02078E-154 A$=[ %% ] + F= 0 N= 6.02078E-154 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 6.02804E-154 A$=[ * ] + F= 0 N= 6.02804E-154 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 2.42411E-153 A$=[ @@@ ] + F= 0 N= 2.42411E-153 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 6.13485E-154 A$=[ ss ] + F= 0 N= 6.13485E-154 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 6.01351E-154 A$=[ ' ] + F= 0 N= 6.01351E-154 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 6.01347E-154 A$=[ dd ] + F= 0 N= 6.01347E-154 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 6.0135E-154 A$=[ % ] + F= 0 N= 6.0135E-154 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 6.01359E-154 A$=[ 5555 ] + F= 0 N= 6.01359E-154 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 7.88534E-154 A$=[ %% ] + F= 0 N= 7.88534E-154 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 6.15094E-154 A$=[ ~~~~ ] + F= 0 N= 6.15094E-154 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 6.014E-154 A$=[ || ] + F= 0 N= 6.014E-154 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.51937E+93 A$=[ SSS ] + F= 0 N= 2.51937E+93 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 1.65663E-153 A$=[ 6666 ] + F= 0 N= 1.65663E-153 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 6.1407E-154 A$=[ ww ] + F= 0 N= 6.1407E-154 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 6.03833E-154 A$=[ 1111 ] + F= 0 N= 6.03833E-154 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.44095E-152 A$=[ ttttt ] + F= 0 N= 2.44095E-152 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 6.0822E-154 A$=[ OOOOO ] + F= 0 N= 6.0822E-154 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.08367E-154 A$=[ PPPPP ] + F= 0 N= 6.08367E-154 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 6.01378E-154 A$=[ VVVV ] + F= 0 N= 6.01378E-154 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.41118E+277 A$=[ + yyyy ] + F= 0 N= 1.41118E+277 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVI_A_N.80 b/NBS2/F_CVI_A_N.80 new file mode 100644 index 0000000..9a737c7 --- /dev/null +++ b/NBS2/F_CVI_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 13088 A$=[ 3] + F= 0 N= 13088 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 31264 A$=[ z] + F= 0 N= 31264 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 8243 A$=[3 ] + F= 0 N= 8243 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 8314 A$=[z ] + F= 0 N= 8314 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 13088 A$=[ 3 ] + F= 0 N= 13088 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 31264 A$=[ z ] + F= 0 N= 31264 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 19488 A$=[ LLLL] + F= 0 N= 19488 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 8224 A$=[ '' ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 8224 A$=[ oo ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 12320 A$=[ 00 ] + F= 0 N= 12320 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 8224 A$=[ \\\\ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 27680 A$=[ lllll ] + F= 0 N= 27680 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 8224 A$=[ uuuu ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 8224 A$=[ a ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 26656 A$=[ hh ] + F= 0 N= 26656 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 8224 A$=[ h ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 10528 A$=[ )] + F= 0 N= 10528 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 8224 A$=[ 5 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 8224 A$=[ 2 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 11552 A$=[ - ] + F= 0 N= 11552 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 25700 A$=[dd ] + F= 0 N= 25700 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 8224 A$=[ tttt ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 8224 A$=[ :::: ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 8224 A$=[ ___ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 24352 A$=[ _____ ] + F= 0 N= 24352 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 21280 A$=[ S ] + F= 0 N= 21280 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 8224 A$=[ FFFF ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 8224 A$=[ kkk] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 8224 A$=[ NNNN ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8224 A$=[ mmmm ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 8224 A$=[ ,,,,, ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 20303 A$=[OO ] + F= 0 N= 20303 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 8224 A$=[ HHHH ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 15392 A$=[ < ] + F= 0 N= 15392 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 8224 A$=[ j ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 8224 A$=[ yyyy ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 8224 A$=[ +++ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 8303 A$=[o ] + F= 0 N= 8303 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 8224 A$=[ ((] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 8224 A$=[ uu ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 8224 A$=[ 00 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 8224 A$=[ HH ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 8224 A$=[ G ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 8224 A$=[ {{{{ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 8224 A$=[ ]]] ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 17219 A$=[CCC] + F= 0 N= 17219 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 8224 A$=[ 44 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 24158 A$=[^^ ] + F= 0 N= 24158 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 8224 A$=[ QQ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 8224 A$=[ FFFF ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 28192 A$=[ n ] + F= 0 N= 28192 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 8224 A$=[ hh ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 13621 A$=[555 ] + F= 0 N= 13621 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 8224 A$=[ YYYY ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 8224 A$=[ w ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 19789 A$=[MMMM ] + F= 0 N= 19789 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 18976 A$=[ JJJJ ] + F= 0 N= 18976 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 8224 A$=[ %% ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 8224 A$=[ * ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 8224 A$=[ @@@ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 8265 A$=[I ] + F= 0 N= 8265 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 8224 A$=[ ss ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 8224 A$=[ f ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 8224 A$=[ D ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 8995 A$=[### ] + F= 0 N= 8995 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 8224 A$=[ ' ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 8224 A$=[ dd ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 21536 A$=[ TT ] + F= 0 N= 21536 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 8224 A$=[ vvv ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 8224 A$=[ X ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 8224 A$=[ % ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 13600 A$=[ 5555 ] + F= 0 N= 13600 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 17990 A$=[FFFF ] + F= 0 N= 17990 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 8224 A$=[ %% ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 8224 A$=[ ~~~~ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 8224 A$=[ || ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 8224 A$=[ SSS ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 8224 A$=[ 6666 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 8224 A$=[ ww ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8224 A$=[ 1111 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 19232 A$=[ K ] + F= 0 N= 19232 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8224 A$=[ ttttt ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 20256 A$=[ OOOOO ] + F= 0 N= 20256 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 17696 A$=[ E ] + F= 0 N= 17696 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 20512 A$=[ PPPPP ] + F= 0 N= 20512 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 8224 A$=[ == ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 22048 A$=[ VVVV ] + F= 0 N= 22048 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 25376 A$=[ c ] + F= 0 N= 25376 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 8224 A$=[ yyyy ] + F= 0 N= 8224 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVI_A_N.BAS b/NBS2/F_CVI_A_N.BAS new file mode 100644 index 0000000..8ddefa7 --- /dev/null +++ b/NBS2/F_CVI_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:20 +REM FILENAME: F_CVI_A_N.BAS +REM SYNTAX: N = CVI( A$ ) +REM UNIQUEID: F_CVI_A_N +REM FUNCTION: CVI +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CVI( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , "" +DATA 2 , 1 , 0 , " " +DATA 3 , 1 , 0 , "3" +DATA 4 , 1 , 0 , "z" +DATA 5 , 0 , 8224 , " " +DATA 6 , 0 , 13088 , " 3" +DATA 7 , 0 , 31264 , " z" +DATA 8 , 0 , 8243 , "3 " +DATA 9 , 0 , 8314 , "z " +DATA 10 , 0 , 13088 , " 3 " +DATA 11 , 0 , 31264 , " z " +DATA 12 , 0 , 19488 , " LLLL" +DATA 13 , 0 , 8224 , " '' " +DATA 14 , 0 , 8224 , " oo " +DATA 15 , 0 , 12320 , " 00 " +DATA 16 , 0 , 8224 , " \\\\ " +DATA 17 , 0 , 27680 , " lllll " +DATA 18 , 0 , 8224 , " uuuu " +DATA 19 , 0 , 8224 , " a " +DATA 20 , 0 , 8224 , " " +DATA 21 , 0 , 26656 , " hh " +DATA 22 , 0 , 8224 , " h " +DATA 23 , 0 , 10528 , " )" +DATA 24 , 0 , 8224 , " 5 " +DATA 25 , 0 , 8224 , " 2 " +DATA 26 , 0 , 11552 , " - " +DATA 27 , 0 , 25700 , "dd " +DATA 28 , 0 , 8224 , " tttt " +DATA 29 , 0 , 8224 , " :::: " +DATA 30 , 0 , 8224 , " ___ " +DATA 31 , 0 , 8224 , " " +DATA 32 , 0 , 8224 , " " +DATA 33 , 0 , 24352 , " _____ " +DATA 34 , 0 , 21280 , " S " +DATA 35 , 0 , 8224 , " FFFF " +DATA 36 , 0 , 8224 , " kkk" +DATA 37 , 0 , 8224 , " NNNN " +DATA 38 , 0 , 8224 , " mmmm " +DATA 39 , 0 , 8224 , " ,,,,, " +DATA 40 , 0 , 20303 , "OO " +DATA 41 , 0 , 8224 , " HHHH " +DATA 42 , 0 , 15392 , " < " +DATA 43 , 0 , 8224 , " j " +DATA 44 , 0 , 8224 , " yyyy " +DATA 45 , 0 , 8224 , " +++ " +DATA 46 , 0 , 8303 , "o " +DATA 47 , 0 , 8224 , " ((" +DATA 48 , 0 , 8224 , " uu " +DATA 49 , 0 , 8224 , " 00 " +DATA 50 , 0 , 8224 , " HH " +DATA 51 , 0 , 8224 , " " +DATA 52 , 0 , 8224 , " G " +DATA 53 , 0 , 8224 , " {{{{ " +DATA 54 , 0 , 8224 , " ]]] " +DATA 55 , 0 , 17219 , "CCC" +DATA 56 , 0 , 8224 , " 44 " +DATA 57 , 0 , 24158 , "^^ " +DATA 58 , 0 , 8224 , " QQ " +DATA 59 , 0 , 8224 , " FFFF " +DATA 60 , 0 , 28192 , " n " +DATA 61 , 0 , 8224 , " hh " +DATA 62 , 0 , 13621 , "555 " +DATA 63 , 0 , 8224 , " YYYY " +DATA 64 , 0 , 8224 , " w " +DATA 65 , 0 , 19789 , "MMMM " +DATA 66 , 0 , 18976 , " JJJJ " +DATA 67 , 0 , 8224 , " %% " +DATA 68 , 0 , 8224 , " * " +DATA 69 , 0 , 8224 , " @@@ " +DATA 70 , 0 , 8265 , "I " +DATA 71 , 0 , 8224 , " ss " +DATA 72 , 0 , 8224 , " f " +DATA 73 , 0 , 8224 , " D " +DATA 74 , 0 , 8995 , "### " +DATA 75 , 0 , 8224 , " ' " +DATA 76 , 0 , 8224 , " dd " +DATA 77 , 0 , 21536 , " TT " +DATA 78 , 0 , 8224 , " vvv " +DATA 79 , 0 , 8224 , " X " +DATA 80 , 0 , 8224 , " % " +DATA 81 , 0 , 8224 , " " +DATA 82 , 0 , 13600 , " 5555 " +DATA 83 , 0 , 17990 , "FFFF " +DATA 84 , 0 , 8224 , " %% " +DATA 85 , 0 , 8224 , " " +DATA 86 , 0 , 8224 , " ~~~~ " +DATA 87 , 0 , 8224 , " || " +DATA 88 , 0 , 8224 , " SSS " +DATA 89 , 0 , 8224 , " 6666 " +DATA 90 , 0 , 8224 , " ww " +DATA 91 , 0 , 8224 , " 1111 " +DATA 92 , 0 , 19232 , " K " +DATA 93 , 0 , 8224 , " ttttt " +DATA 94 , 0 , 20256 , " OOOOO " +DATA 95 , 0 , 17696 , " E " +DATA 96 , 0 , 20512 , " PPPPP " +DATA 97 , 0 , 8224 , " == " +DATA 98 , 0 , 22048 , " VVVV " +DATA 99 , 0 , 25376 , " c " +DATA 100 , 0 , 8224 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CVI_A_N.OUT b/NBS2/F_CVI_A_N.OUT new file mode 100644 index 0000000..0e89811 --- /dev/null +++ b/NBS2/F_CVI_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 13088 A$=[ 3] + F= 0 N= 13088 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 31264 A$=[ z] + F= 0 N= 31264 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 8243 A$=[3 ] + F= 0 N= 8243 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 8314 A$=[z ] + F= 0 N= 8314 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 13088 A$=[ 3 ] + F= 0 N= 13088 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 31264 A$=[ z ] + F= 0 N= 31264 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 19488 A$=[ LLLL] + F= 0 N= 19488 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 8224 A$=[ '' ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 8224 A$=[ oo ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 12320 A$=[ 00 ] + F= 0 N= 12320 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 8224 A$=[ \\\\ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 27680 A$=[ lllll ] + F= 0 N= 27680 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 8224 A$=[ uuuu ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 8224 A$=[ a ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 26656 A$=[ hh ] + F= 0 N= 26656 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 8224 A$=[ h ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 10528 A$=[ )] + F= 0 N= 10528 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 8224 A$=[ 5 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 8224 A$=[ 2 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 11552 A$=[ - ] + F= 0 N= 11552 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 25700 A$=[dd ] + F= 0 N= 25700 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 8224 A$=[ tttt ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 8224 A$=[ :::: ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 8224 A$=[ ___ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 24352 A$=[ _____ ] + F= 0 N= 24352 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 21280 A$=[ S ] + F= 0 N= 21280 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 8224 A$=[ FFFF ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 8224 A$=[ kkk] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 8224 A$=[ NNNN ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8224 A$=[ mmmm ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 8224 A$=[ ,,,,, ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 20303 A$=[OO ] + F= 0 N= 20303 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 8224 A$=[ HHHH ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 15392 A$=[ < ] + F= 0 N= 15392 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 8224 A$=[ j ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 8224 A$=[ yyyy ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 8224 A$=[ +++ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 8303 A$=[o ] + F= 0 N= 8303 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 8224 A$=[ ((] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 8224 A$=[ uu ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 8224 A$=[ 00 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 8224 A$=[ HH ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 8224 A$=[ G ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 8224 A$=[ {{{{ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 8224 A$=[ ]]] ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 17219 A$=[CCC] + F= 0 N= 17219 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 8224 A$=[ 44 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 24158 A$=[^^ ] + F= 0 N= 24158 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 8224 A$=[ QQ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 8224 A$=[ FFFF ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 28192 A$=[ n ] + F= 0 N= 28192 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 8224 A$=[ hh ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 13621 A$=[555 ] + F= 0 N= 13621 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 8224 A$=[ YYYY ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 8224 A$=[ w ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 19789 A$=[MMMM ] + F= 0 N= 19789 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 18976 A$=[ JJJJ ] + F= 0 N= 18976 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 8224 A$=[ %% ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 8224 A$=[ * ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 8224 A$=[ @@@ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 8265 A$=[I ] + F= 0 N= 8265 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 8224 A$=[ ss ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 8224 A$=[ f ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 8224 A$=[ D ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 8995 A$=[### ] + F= 0 N= 8995 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 8224 A$=[ ' ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 8224 A$=[ dd ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 21536 A$=[ TT ] + F= 0 N= 21536 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 8224 A$=[ vvv ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 8224 A$=[ X ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 8224 A$=[ % ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 13600 A$=[ 5555 ] + F= 0 N= 13600 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 17990 A$=[FFFF ] + F= 0 N= 17990 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 8224 A$=[ %% ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 8224 A$=[ ~~~~ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 8224 A$=[ || ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 8224 A$=[ SSS ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 8224 A$=[ 6666 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 8224 A$=[ ww ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8224 A$=[ 1111 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 19232 A$=[ K ] + F= 0 N= 19232 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8224 A$=[ ttttt ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 20256 A$=[ OOOOO ] + F= 0 N= 20256 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 17696 A$=[ E ] + F= 0 N= 17696 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 20512 A$=[ PPPPP ] + F= 0 N= 20512 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 8224 A$=[ == ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 22048 A$=[ VVVV ] + F= 0 N= 22048 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 25376 A$=[ c ] + F= 0 N= 25376 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 8224 A$=[ yyyy ] + F= 0 N= 8224 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVI_A_N.dif b/NBS2/F_CVI_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CVI_A_N.run b/NBS2/F_CVI_A_N.run new file mode 100644 index 0000000..9a737c7 --- /dev/null +++ b/NBS2/F_CVI_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 13088 A$=[ 3] + F= 0 N= 13088 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 31264 A$=[ z] + F= 0 N= 31264 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 8243 A$=[3 ] + F= 0 N= 8243 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 8314 A$=[z ] + F= 0 N= 8314 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 13088 A$=[ 3 ] + F= 0 N= 13088 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 31264 A$=[ z ] + F= 0 N= 31264 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 19488 A$=[ LLLL] + F= 0 N= 19488 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 8224 A$=[ '' ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 8224 A$=[ oo ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 12320 A$=[ 00 ] + F= 0 N= 12320 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 8224 A$=[ \\\\ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 27680 A$=[ lllll ] + F= 0 N= 27680 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 8224 A$=[ uuuu ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 8224 A$=[ a ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 26656 A$=[ hh ] + F= 0 N= 26656 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 8224 A$=[ h ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 10528 A$=[ )] + F= 0 N= 10528 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 8224 A$=[ 5 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 8224 A$=[ 2 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 11552 A$=[ - ] + F= 0 N= 11552 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 25700 A$=[dd ] + F= 0 N= 25700 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 8224 A$=[ tttt ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 8224 A$=[ :::: ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 8224 A$=[ ___ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 24352 A$=[ _____ ] + F= 0 N= 24352 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 21280 A$=[ S ] + F= 0 N= 21280 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 8224 A$=[ FFFF ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 8224 A$=[ kkk] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 8224 A$=[ NNNN ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8224 A$=[ mmmm ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 8224 A$=[ ,,,,, ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 20303 A$=[OO ] + F= 0 N= 20303 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 8224 A$=[ HHHH ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 15392 A$=[ < ] + F= 0 N= 15392 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 8224 A$=[ j ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 8224 A$=[ yyyy ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 8224 A$=[ +++ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 8303 A$=[o ] + F= 0 N= 8303 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 8224 A$=[ ((] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 8224 A$=[ uu ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 8224 A$=[ 00 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 8224 A$=[ HH ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 8224 A$=[ G ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 8224 A$=[ {{{{ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 8224 A$=[ ]]] ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 17219 A$=[CCC] + F= 0 N= 17219 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 8224 A$=[ 44 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 24158 A$=[^^ ] + F= 0 N= 24158 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 8224 A$=[ QQ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 8224 A$=[ FFFF ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 28192 A$=[ n ] + F= 0 N= 28192 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 8224 A$=[ hh ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 13621 A$=[555 ] + F= 0 N= 13621 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 8224 A$=[ YYYY ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 8224 A$=[ w ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 19789 A$=[MMMM ] + F= 0 N= 19789 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 18976 A$=[ JJJJ ] + F= 0 N= 18976 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 8224 A$=[ %% ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 8224 A$=[ * ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 8224 A$=[ @@@ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 8265 A$=[I ] + F= 0 N= 8265 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 8224 A$=[ ss ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 8224 A$=[ f ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 8224 A$=[ D ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 8995 A$=[### ] + F= 0 N= 8995 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 8224 A$=[ ' ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 8224 A$=[ dd ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 21536 A$=[ TT ] + F= 0 N= 21536 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 8224 A$=[ vvv ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 8224 A$=[ X ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 8224 A$=[ % ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 13600 A$=[ 5555 ] + F= 0 N= 13600 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 17990 A$=[FFFF ] + F= 0 N= 17990 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 8224 A$=[ %% ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 8224 A$=[ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 8224 A$=[ ~~~~ ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 8224 A$=[ || ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 8224 A$=[ SSS ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 8224 A$=[ 6666 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 8224 A$=[ ww ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8224 A$=[ 1111 ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 19232 A$=[ K ] + F= 0 N= 19232 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8224 A$=[ ttttt ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 20256 A$=[ OOOOO ] + F= 0 N= 20256 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 17696 A$=[ E ] + F= 0 N= 17696 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 20512 A$=[ PPPPP ] + F= 0 N= 20512 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 8224 A$=[ == ] + F= 0 N= 8224 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 22048 A$=[ VVVV ] + F= 0 N= 22048 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 25376 A$=[ c ] + F= 0 N= 25376 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 8224 A$=[ yyyy ] + F= 0 N= 8224 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVL_A_N.80 b/NBS2/F_CVL_A_N.80 new file mode 100644 index 0000000..8ce6db6 --- /dev/null +++ b/NBS2/F_CVL_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.28007E+9 A$=[ LLLL] + F= 0 N= 1.28007E+9 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 5.38976E+8 A$=[ '' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.86438E+9 A$=[ oo ] + F= 0 N= 1.86438E+9 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5.40029E+8 A$=[ 00 ] + F= 0 N= 5.40029E+8 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.54561E+9 A$=[ \\\\ ] + F= 0 N= 1.54561E+9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.81904E+9 A$=[ lllll ] + F= 0 N= 1.81904E+9 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 5.38976E+8 A$=[ uuuu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.43236E+8 A$=[ a ] + F= 0 N= 5.43236E+8 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 5.43713E+8 A$=[ hh ] + F= 0 N= 5.43713E+8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 5.43695E+8 A$=[ h ] + F= 0 N= 5.43695E+8 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5.38976E+8 A$=[ 5 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 5.40156E+8 A$=[ 2 ] + F= 0 N= 5.40156E+8 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5.3898E+8 A$=[ - ] + F= 0 N= 5.3898E+8 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.95377E+9 A$=[ tttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9.76888E+8 A$=[ :::: ] + F= 0 N= 9.76888E+8 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.59594E+9 A$=[ ___ ] + F= 0 N= 1.59594E+9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60009E+9 A$=[ _____ ] + F= 0 N= 1.60009E+9 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.179E+9 A$=[ FFFF ] + F= 0 N= 1.179E+9 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.38976E+8 A$=[ kkk] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5.38976E+8 A$=[ NNNN ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.83082E+9 A$=[ mmmm ] + F= 0 N= 1.83082E+9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.38976E+8 A$=[ ,,,,, ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5.38988E+8 A$=[OO ] + F= 0 N= 5.38988E+8 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.21006E+9 A$=[ HHHH ] + F= 0 N= 1.21006E+9 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.78049E+9 A$=[ j ] + F= 0 N= 1.78049E+9 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 7.24247E+8 A$=[ +++ ] + F= 0 N= 7.24247E+8 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 5.38976E+8 A$=[ ((] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 5.38976E+8 A$=[ uu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 5.38976E+8 A$=[ 00 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5.38976E+8 A$=[ HH ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 5.41532E+8 A$=[ G ] + F= 0 N= 5.41532E+8 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 5.38976E+8 A$=[ {{{{ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 5.38976E+8 A$=[ ]]] ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5.38976E+8 A$=[ 44 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 5.38992E+8 A$=[^^ ] + F= 0 N= 5.38992E+8 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 5.38976E+8 A$=[ QQ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 5.38976E+8 A$=[ FFFF ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5.38996E+8 A$=[ n ] + F= 0 N= 5.38996E+8 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 5.38976E+8 A$=[ hh ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.40358E+8 A$=[555 ] + F= 0 N= 5.40358E+8 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 5.38976E+8 A$=[ YYYY ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 5.38976E+8 A$=[ w ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.29691E+9 A$=[MMMM ] + F= 0 N= 1.29691E+9 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.24638E+9 A$=[ JJJJ ] + F= 0 N= 1.24638E+9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5.38976E+8 A$=[ * ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5.38976E+8 A$=[ @@@ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 5.38976E+8 A$=[ ss ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 5.43564E+8 A$=[ f ] + F= 0 N= 5.43564E+8 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.14296E+9 A$=[ D ] + F= 0 N= 1.14296E+9 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 5.39174E+8 A$=[### ] + F= 0 N= 5.39174E+8 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 5.38976E+8 A$=[ ' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68428E+9 A$=[ dd ] + F= 0 N= 1.68428E+9 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 5.42397E+8 A$=[ TT ] + F= 0 N= 5.42397E+8 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.98745E+9 A$=[ vvv ] + F= 0 N= 1.98745E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 5.38976E+8 A$=[ X ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 5.38976E+8 A$=[ % ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8.92679E+8 A$=[ 5555 ] + F= 0 N= 8.92679E+8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.17901E+9 A$=[FFFF ] + F= 0 N= 1.17901E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.12219E+9 A$=[ ~~~~ ] + F= 0 N= 2.12219E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.08248E+9 A$=[ || ] + F= 0 N= 2.08248E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 5.38976E+8 A$=[ SSS ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 9.08075E+8 A$=[ 6666 ] + F= 0 N= 9.08075E+8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 5.38976E+8 A$=[ ww ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8.25303E+8 A$=[ 1111 ] + F= 0 N= 8.25303E+8 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.95377E+9 A$=[ ttttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.3306E+9 A$=[ OOOOO ] + F= 0 N= 1.3306E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 5.38986E+8 A$=[ E ] + F= 0 N= 5.38986E+8 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.34744E+9 A$=[ PPPPP ] + F= 0 N= 1.34744E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.38976E+8 A$=[ == ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.4485E+9 A$=[ VVVV ] + F= 0 N= 1.4485E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5.38993E+8 A$=[ c ] + F= 0 N= 5.38993E+8 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVL_A_N.BAS b/NBS2/F_CVL_A_N.BAS new file mode 100644 index 0000000..b0bed95 --- /dev/null +++ b/NBS2/F_CVL_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:20 +REM FILENAME: F_CVL_A_N.BAS +REM SYNTAX: N = CVL( A$ ) +REM UNIQUEID: F_CVL_A_N +REM FUNCTION: CVL +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CVL( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , "" +DATA 2 , 1 , 0 , " " +DATA 3 , 1 , 0 , "3" +DATA 4 , 1 , 0 , "z" +DATA 5 , 1 , 0 , " " +DATA 6 , 1 , 0 , " 3" +DATA 7 , 1 , 0 , " z" +DATA 8 , 1 , 0 , "3 " +DATA 9 , 1 , 0 , "z " +DATA 10 , 1 , 0 , " 3 " +DATA 11 , 1 , 0 , " z " +DATA 12 , 0 , 1.28007E+9 , " LLLL" +DATA 13 , 0 , 5.38976E+8 , " '' " +DATA 14 , 0 , 1.86438E+9 , " oo " +DATA 15 , 0 , 5.40029E+8 , " 00 " +DATA 16 , 0 , 1.54561E+9 , " \\\\ " +DATA 17 , 0 , 1.81904E+9 , " lllll " +DATA 18 , 0 , 5.38976E+8 , " uuuu " +DATA 19 , 0 , 5.43236E+8 , " a " +DATA 20 , 0 , 5.38976E+8 , " " +DATA 21 , 0 , 5.43713E+8 , " hh " +DATA 22 , 0 , 5.43695E+8 , " h " +DATA 23 , 1 , 0 , " )" +DATA 24 , 0 , 5.38976E+8 , " 5 " +DATA 25 , 0 , 5.40156E+8 , " 2 " +DATA 26 , 0 , 5.3898E+8 , " - " +DATA 27 , 1 , 0 , "dd " +DATA 28 , 0 , 1.95377E+9 , " tttt " +DATA 29 , 0 , 9.76888E+8 , " :::: " +DATA 30 , 0 , 1.59594E+9 , " ___ " +DATA 31 , 0 , 5.38976E+8 , " " +DATA 32 , 0 , 5.38976E+8 , " " +DATA 33 , 0 , 1.60009E+9 , " _____ " +DATA 34 , 1 , 0 , " S " +DATA 35 , 0 , 1.179E+9 , " FFFF " +DATA 36 , 0 , 5.38976E+8 , " kkk" +DATA 37 , 0 , 5.38976E+8 , " NNNN " +DATA 38 , 0 , 1.83082E+9 , " mmmm " +DATA 39 , 0 , 5.38976E+8 , " ,,,,, " +DATA 40 , 0 , 5.38988E+8 , "OO " +DATA 41 , 0 , 1.21006E+9 , " HHHH " +DATA 42 , 1 , 0 , " < " +DATA 43 , 0 , 1.78049E+9 , " j " +DATA 44 , 0 , 5.38976E+8 , " yyyy " +DATA 45 , 0 , 7.24247E+8 , " +++ " +DATA 46 , 1 , 0 , "o " +DATA 47 , 0 , 5.38976E+8 , " ((" +DATA 48 , 0 , 5.38976E+8 , " uu " +DATA 49 , 0 , 5.38976E+8 , " 00 " +DATA 50 , 0 , 5.38976E+8 , " HH " +DATA 51 , 0 , 5.38976E+8 , " " +DATA 52 , 0 , 5.41532E+8 , " G " +DATA 53 , 0 , 5.38976E+8 , " {{{{ " +DATA 54 , 0 , 5.38976E+8 , " ]]] " +DATA 55 , 1 , 0 , "CCC" +DATA 56 , 0 , 5.38976E+8 , " 44 " +DATA 57 , 0 , 5.38992E+8 , "^^ " +DATA 58 , 0 , 5.38976E+8 , " QQ " +DATA 59 , 0 , 5.38976E+8 , " FFFF " +DATA 60 , 0 , 5.38996E+8 , " n " +DATA 61 , 0 , 5.38976E+8 , " hh " +DATA 62 , 0 , 5.40358E+8 , "555 " +DATA 63 , 0 , 5.38976E+8 , " YYYY " +DATA 64 , 0 , 5.38976E+8 , " w " +DATA 65 , 0 , 1.29691E+9 , "MMMM " +DATA 66 , 0 , 1.24638E+9 , " JJJJ " +DATA 67 , 0 , 5.38976E+8 , " %% " +DATA 68 , 0 , 5.38976E+8 , " * " +DATA 69 , 0 , 5.38976E+8 , " @@@ " +DATA 70 , 1 , 0 , "I " +DATA 71 , 0 , 5.38976E+8 , " ss " +DATA 72 , 0 , 5.43564E+8 , " f " +DATA 73 , 0 , 1.14296E+9 , " D " +DATA 74 , 0 , 5.39174E+8 , "### " +DATA 75 , 0 , 5.38976E+8 , " ' " +DATA 76 , 0 , 1.68428E+9 , " dd " +DATA 77 , 0 , 5.42397E+8 , " TT " +DATA 78 , 0 , 1.98745E+9 , " vvv " +DATA 79 , 0 , 5.38976E+8 , " X " +DATA 80 , 0 , 5.38976E+8 , " % " +DATA 81 , 1 , 0 , " " +DATA 82 , 0 , 8.92679E+8 , " 5555 " +DATA 83 , 0 , 1.17901E+9 , "FFFF " +DATA 84 , 0 , 5.38976E+8 , " %% " +DATA 85 , 0 , 5.38976E+8 , " " +DATA 86 , 0 , 2.12219E+9 , " ~~~~ " +DATA 87 , 0 , 2.08248E+9 , " || " +DATA 88 , 0 , 5.38976E+8 , " SSS " +DATA 89 , 0 , 9.08075E+8 , " 6666 " +DATA 90 , 0 , 5.38976E+8 , " ww " +DATA 91 , 0 , 8.25303E+8 , " 1111 " +DATA 92 , 1 , 0 , " K " +DATA 93 , 0 , 1.95377E+9 , " ttttt " +DATA 94 , 0 , 1.3306E+9 , " OOOOO " +DATA 95 , 0 , 5.38986E+8 , " E " +DATA 96 , 0 , 1.34744E+9 , " PPPPP " +DATA 97 , 0 , 5.38976E+8 , " == " +DATA 98 , 0 , 1.4485E+9 , " VVVV " +DATA 99 , 0 , 5.38993E+8 , " c " +DATA 100 , 0 , 5.38976E+8 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CVL_A_N.OUT b/NBS2/F_CVL_A_N.OUT new file mode 100644 index 0000000..c772d22 --- /dev/null +++ b/NBS2/F_CVL_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.28007E+9 A$=[ LLLL] + F= 0 N= 1.28007E+9 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 5.38976E+8 A$=[ '' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.86438E+9 A$=[ oo ] + F= 0 N= 1.86438E+9 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5.40029E+8 A$=[ 00 ] + F= 0 N= 5.40029E+8 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.54561E+9 A$=[ \\\\ ] + F= 0 N= 1.54561E+9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.81904E+9 A$=[ lllll ] + F= 0 N= 1.81904E+9 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 5.38976E+8 A$=[ uuuu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.43236E+8 A$=[ a ] + F= 0 N= 5.43236E+8 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 5.43713E+8 A$=[ hh ] + F= 0 N= 5.43713E+8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 5.43695E+8 A$=[ h ] + F= 0 N= 5.43695E+8 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5.38976E+8 A$=[ 5 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 5.40156E+8 A$=[ 2 ] + F= 0 N= 5.40156E+8 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5.3898E+8 A$=[ - ] + F= 0 N= 5.3898E+8 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.95377E+9 A$=[ tttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9.76888E+8 A$=[ :::: ] + F= 0 N= 9.76888E+8 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.59594E+9 A$=[ ___ ] + F= 0 N= 1.59594E+9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60009E+9 A$=[ _____ ] + F= 0 N= 1.60009E+9 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.179E+9 A$=[ FFFF ] + F= 0 N= 1.179E+9 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.38976E+8 A$=[ kkk] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5.38976E+8 A$=[ NNNN ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.83082E+9 A$=[ mmmm ] + F= 0 N= 1.83082E+9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.38976E+8 A$=[ ,,,,, ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5.38988E+8 A$=[OO ] + F= 0 N= 5.38988E+8 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.21006E+9 A$=[ HHHH ] + F= 0 N= 1.21006E+9 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.78049E+9 A$=[ j ] + F= 0 N= 1.78049E+9 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 7.24247E+8 A$=[ +++ ] + F= 0 N= 7.24247E+8 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 5.38976E+8 A$=[ ((] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 5.38976E+8 A$=[ uu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 5.38976E+8 A$=[ 00 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5.38976E+8 A$=[ HH ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 5.41532E+8 A$=[ G ] + F= 0 N= 5.41532E+8 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 5.38976E+8 A$=[ {{{{ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 5.38976E+8 A$=[ ]]] ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5.38976E+8 A$=[ 44 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 5.38992E+8 A$=[^^ ] + F= 0 N= 5.38992E+8 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 5.38976E+8 A$=[ QQ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 5.38976E+8 A$=[ FFFF ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5.38996E+8 A$=[ n ] + F= 0 N= 5.38996E+8 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 5.38976E+8 A$=[ hh ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.40358E+8 A$=[555 ] + F= 0 N= 5.40358E+8 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 5.38976E+8 A$=[ YYYY ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 5.38976E+8 A$=[ w ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.29691E+9 A$=[MMMM ] + F= 0 N= 1.29691E+9 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.24638E+9 A$=[ JJJJ ] + F= 0 N= 1.24638E+9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5.38976E+8 A$=[ * ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5.38976E+8 A$=[ @@@ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 5.38976E+8 A$=[ ss ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 5.43564E+8 A$=[ f ] + F= 0 N= 5.43564E+8 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.14296E+9 A$=[ D ] + F= 0 N= 1.14296E+9 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 5.39174E+8 A$=[### ] + F= 0 N= 5.39174E+8 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 5.38976E+8 A$=[ ' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68428E+9 A$=[ dd ] + F= 0 N= 1.68428E+9 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 5.42397E+8 A$=[ TT ] + F= 0 N= 5.42397E+8 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.98745E+9 A$=[ vvv ] + F= 0 N= 1.98745E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 5.38976E+8 A$=[ X ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 5.38976E+8 A$=[ % ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8.92679E+8 A$=[ 5555 ] + F= 0 N= 8.92679E+8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.17901E+9 A$=[FFFF ] + F= 0 N= 1.17901E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.12219E+9 A$=[ ~~~~ ] + F= 0 N= 2.12219E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.08248E+9 A$=[ || ] + F= 0 N= 2.08248E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 5.38976E+8 A$=[ SSS ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 9.08075E+8 A$=[ 6666 ] + F= 0 N= 9.08075E+8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 5.38976E+8 A$=[ ww ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8.25303E+8 A$=[ 1111 ] + F= 0 N= 8.25303E+8 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.95377E+9 A$=[ ttttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.3306E+9 A$=[ OOOOO ] + F= 0 N= 1.3306E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 5.38986E+8 A$=[ E ] + F= 0 N= 5.38986E+8 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.34744E+9 A$=[ PPPPP ] + F= 0 N= 1.34744E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.38976E+8 A$=[ == ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.4485E+9 A$=[ VVVV ] + F= 0 N= 1.4485E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5.38993E+8 A$=[ c ] + F= 0 N= 5.38993E+8 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVL_A_N.dif b/NBS2/F_CVL_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CVL_A_N.run b/NBS2/F_CVL_A_N.run new file mode 100644 index 0000000..8ce6db6 --- /dev/null +++ b/NBS2/F_CVL_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.28007E+9 A$=[ LLLL] + F= 0 N= 1.28007E+9 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 5.38976E+8 A$=[ '' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.86438E+9 A$=[ oo ] + F= 0 N= 1.86438E+9 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5.40029E+8 A$=[ 00 ] + F= 0 N= 5.40029E+8 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.54561E+9 A$=[ \\\\ ] + F= 0 N= 1.54561E+9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.81904E+9 A$=[ lllll ] + F= 0 N= 1.81904E+9 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 5.38976E+8 A$=[ uuuu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5.43236E+8 A$=[ a ] + F= 0 N= 5.43236E+8 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 5.43713E+8 A$=[ hh ] + F= 0 N= 5.43713E+8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 5.43695E+8 A$=[ h ] + F= 0 N= 5.43695E+8 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5.38976E+8 A$=[ 5 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 5.40156E+8 A$=[ 2 ] + F= 0 N= 5.40156E+8 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5.3898E+8 A$=[ - ] + F= 0 N= 5.3898E+8 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.95377E+9 A$=[ tttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9.76888E+8 A$=[ :::: ] + F= 0 N= 9.76888E+8 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.59594E+9 A$=[ ___ ] + F= 0 N= 1.59594E+9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60009E+9 A$=[ _____ ] + F= 0 N= 1.60009E+9 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.179E+9 A$=[ FFFF ] + F= 0 N= 1.179E+9 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.38976E+8 A$=[ kkk] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5.38976E+8 A$=[ NNNN ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.83082E+9 A$=[ mmmm ] + F= 0 N= 1.83082E+9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.38976E+8 A$=[ ,,,,, ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5.38988E+8 A$=[OO ] + F= 0 N= 5.38988E+8 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.21006E+9 A$=[ HHHH ] + F= 0 N= 1.21006E+9 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1.78049E+9 A$=[ j ] + F= 0 N= 1.78049E+9 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 7.24247E+8 A$=[ +++ ] + F= 0 N= 7.24247E+8 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 5.38976E+8 A$=[ ((] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 5.38976E+8 A$=[ uu ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 5.38976E+8 A$=[ 00 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 5.38976E+8 A$=[ HH ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 5.41532E+8 A$=[ G ] + F= 0 N= 5.41532E+8 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 5.38976E+8 A$=[ {{{{ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 5.38976E+8 A$=[ ]]] ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5.38976E+8 A$=[ 44 ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 5.38992E+8 A$=[^^ ] + F= 0 N= 5.38992E+8 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 5.38976E+8 A$=[ QQ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 5.38976E+8 A$=[ FFFF ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5.38996E+8 A$=[ n ] + F= 0 N= 5.38996E+8 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 5.38976E+8 A$=[ hh ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.40358E+8 A$=[555 ] + F= 0 N= 5.40358E+8 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 5.38976E+8 A$=[ YYYY ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 5.38976E+8 A$=[ w ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.29691E+9 A$=[MMMM ] + F= 0 N= 1.29691E+9 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.24638E+9 A$=[ JJJJ ] + F= 0 N= 1.24638E+9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 5.38976E+8 A$=[ * ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 5.38976E+8 A$=[ @@@ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 5.38976E+8 A$=[ ss ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 5.43564E+8 A$=[ f ] + F= 0 N= 5.43564E+8 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1.14296E+9 A$=[ D ] + F= 0 N= 1.14296E+9 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 5.39174E+8 A$=[### ] + F= 0 N= 5.39174E+8 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 5.38976E+8 A$=[ ' ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68428E+9 A$=[ dd ] + F= 0 N= 1.68428E+9 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 5.42397E+8 A$=[ TT ] + F= 0 N= 5.42397E+8 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.98745E+9 A$=[ vvv ] + F= 0 N= 1.98745E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 5.38976E+8 A$=[ X ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 5.38976E+8 A$=[ % ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8.92679E+8 A$=[ 5555 ] + F= 0 N= 8.92679E+8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.17901E+9 A$=[FFFF ] + F= 0 N= 1.17901E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 5.38976E+8 A$=[ %% ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5.38976E+8 A$=[ ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.12219E+9 A$=[ ~~~~ ] + F= 0 N= 2.12219E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.08248E+9 A$=[ || ] + F= 0 N= 2.08248E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 5.38976E+8 A$=[ SSS ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 9.08075E+8 A$=[ 6666 ] + F= 0 N= 9.08075E+8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 5.38976E+8 A$=[ ww ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 8.25303E+8 A$=[ 1111 ] + F= 0 N= 8.25303E+8 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.95377E+9 A$=[ ttttt ] + F= 0 N= 1.95377E+9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.3306E+9 A$=[ OOOOO ] + F= 0 N= 1.3306E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 5.38986E+8 A$=[ E ] + F= 0 N= 5.38986E+8 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.34744E+9 A$=[ PPPPP ] + F= 0 N= 1.34744E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 5.38976E+8 A$=[ == ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.4485E+9 A$=[ VVVV ] + F= 0 N= 1.4485E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5.38993E+8 A$=[ c ] + F= 0 N= 5.38993E+8 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 5.38976E+8 A$=[ yyyy ] + F= 0 N= 5.38976E+8 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVS_A_N.80 b/NBS2/F_CVS_A_N.80 new file mode 100644 index 0000000..c05bbf1 --- /dev/null +++ b/NBS2/F_CVS_A_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 5.35553E+7 A$=[ LLLL] + F= 0 N= 5.35553E+7 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.35632E-19 A$=[ '' ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 4.95564E+28 A$=[ oo ] + F= 0 N= 4.95564E+28 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.49237E-19 A$=[ 00 ] + F= 0 N= 1.49237E-19 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.80285E+17 A$=[ \\\\ ] + F= 0 N= 1.80285E+17 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.14327E+27 A$=[ lllll ] + F= 0 N= 1.14327E+27 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.35632E-19 A$=[ uuuu ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.90689E-19 A$=[ a ] + F= 0 N= 1.90689E-19 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.96856E-19 A$=[ hh ] + F= 0 N= 1.96856E-19 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.96618E-19 A$=[ h ] + F= 0 N= 1.96618E-19 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.35632E-19 A$=[ 5 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1.50878E-19 A$=[ 2 ] + F= 0 N= 1.50878E-19 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.35675E-19 A$=[ - ] + F= 0 N= 1.35675E-19 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 7.73665E+31 A$=[ tttt ] + F= 0 N= 7.73665E+31 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 7.10012E-4 A$=[ :::: ] + F= 0 N= 7.10012E-4 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.15383E+19 A$=[ ___ ] + F= 0 N= 1.15383E+19 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60956E+19 A$=[ _____ ] + F= 0 N= 1.60956E+19 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 12680 A$=[ FFFF ] + F= 0 N= 12680. +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.35632E-19 A$=[ kkk] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.35632E-19 A$=[ NNNN ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 3.09728E+27 A$=[ mmmm ] + F= 0 N= 3.09728E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.35632E-19 A$=[ ,,,,, ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.35788E-19 A$=[OO ] + F= 0 N= 1.35788E-19 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 163968 A$=[ HHHH ] + F= 0 N= 163968. +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 4.8395E+25 A$=[ j ] + F= 0 N= 4.8395E+25 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.35632E-19 A$=[ yyyy ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 6.0796E-13 A$=[ +++ ] + F= 0 N= 6.0796E-13 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.35632E-19 A$=[ ((] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.35632E-19 A$=[ uu ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.35632E-19 A$=[ 00 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1.35632E-19 A$=[ HH ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.68666E-19 A$=[ G ] + F= 0 N= 1.68666E-19 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.35632E-19 A$=[ {{{{ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.35632E-19 A$=[ ]]] ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.35632E-19 A$=[ 44 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.35838E-19 A$=[^^ ] + F= 0 N= 1.35838E-19 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.35632E-19 A$=[ QQ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 1.35632E-19 A$=[ FFFF ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 1.3589E-19 A$=[ n ] + F= 0 N= 1.3589E-19 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.35632E-19 A$=[ hh ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 1.53489E-19 A$=[555 ] + F= 0 N= 1.53489E-19 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1.35632E-19 A$=[ YYYY ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 1.35632E-19 A$=[ w ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 2.15275E+8 A$=[MMMM ] + F= 0 N= 2.15275E+8 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 3.31431E+6 A$=[ JJJJ ] + F= 0 N= 3.31431E+6 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1.35632E-19 A$=[ %% ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1.35632E-19 A$=[ * ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 1.35632E-19 A$=[ @@@ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.35632E-19 A$=[ ss ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.94924E-19 A$=[ f ] + F= 0 N= 1.94924E-19 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 640.502 A$=[ D ] + F= 0 N= 640.502 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.38183E-19 A$=[### ] + F= 0 N= 1.38183E-19 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.35632E-19 A$=[ ' ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68327E+22 A$=[ dd ] + F= 0 N= 1.68327E+22 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1.79849E-19 A$=[ TT ] + F= 0 N= 1.79849E-19 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.248E+33 A$=[ vvv ] + F= 0 N= 1.248E+33 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1.35632E-19 A$=[ X ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 1.35632E-19 A$=[ % ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 6.75051E-7 A$=[ 5555 ] + F= 0 N= 6.75051E-7 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 12689.6 A$=[FFFF ] + F= 0 N= 12689.6 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.35632E-19 A$=[ %% ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 8.44477E+37 A$=[ ~~~~ ] + F= 0 N= 8.44477E+37 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 3.32568E+36 A$=[ || ] + F= 0 N= 3.32568E+36 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1.35632E-19 A$=[ SSS ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.38606E-6 A$=[ 6666 ] + F= 0 N= 2.38606E-6 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.35632E-19 A$=[ ww ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.57752E-9 A$=[ 1111 ] + F= 0 N= 2.57752E-9 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 7.73665E+31 A$=[ ttttt ] + F= 0 N= 7.73665E+31 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 3.47807E+9 A$=[ OOOOO ] + F= 0 N= 3.47807E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1.35754E-19 A$=[ E ] + F= 0 N= 1.35754E-19 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.39796E+10 A$=[ PPPPP ] + F= 0 N= 1.39796E+10 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 1.35632E-19 A$=[ == ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 5.89163E+13 A$=[ VVVV ] + F= 0 N= 5.89163E+13 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1.35853E-19 A$=[ c ] + F= 0 N= 1.35853E-19 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.35632E-19 A$=[ + yyyy ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVS_A_N.BAS b/NBS2/F_CVS_A_N.BAS new file mode 100644 index 0000000..fb2561e --- /dev/null +++ b/NBS2/F_CVS_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:20 +REM FILENAME: F_CVS_A_N.BAS +REM SYNTAX: N = CVS( A$ ) +REM UNIQUEID: F_CVS_A_N +REM FUNCTION: CVS +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = CVS( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , "" +DATA 2 , 1 , 0 , " " +DATA 3 , 1 , 0 , "3" +DATA 4 , 1 , 0 , "z" +DATA 5 , 1 , 0 , " " +DATA 6 , 1 , 0 , " 3" +DATA 7 , 1 , 0 , " z" +DATA 8 , 1 , 0 , "3 " +DATA 9 , 1 , 0 , "z " +DATA 10 , 1 , 0 , " 3 " +DATA 11 , 1 , 0 , " z " +DATA 12 , 0 , 5.35553E+7 , " LLLL" +DATA 13 , 0 , 1.35632E-19 , " '' " +DATA 14 , 0 , 4.95564E+28 , " oo " +DATA 15 , 0 , 1.49237E-19 , " 00 " +DATA 16 , 0 , 1.80285E+17 , " \\\\ " +DATA 17 , 0 , 1.14327E+27 , " lllll " +DATA 18 , 0 , 1.35632E-19 , " uuuu " +DATA 19 , 0 , 1.90689E-19 , " a " +DATA 20 , 0 , 1.35632E-19 , " " +DATA 21 , 0 , 1.96856E-19 , " hh " +DATA 22 , 0 , 1.96618E-19 , " h " +DATA 23 , 1 , 0 , " )" +DATA 24 , 0 , 1.35632E-19 , " 5 " +DATA 25 , 0 , 1.50878E-19 , " 2 " +DATA 26 , 0 , 1.35675E-19 , " - " +DATA 27 , 1 , 0 , "dd " +DATA 28 , 0 , 7.73665E+31 , " tttt " +DATA 29 , 0 , 7.10012E-4 , " :::: " +DATA 30 , 0 , 1.15383E+19 , " ___ " +DATA 31 , 0 , 1.35632E-19 , " " +DATA 32 , 0 , 1.35632E-19 , " " +DATA 33 , 0 , 1.60956E+19 , " _____ " +DATA 34 , 1 , 0 , " S " +DATA 35 , 0 , 12680. , " FFFF " +DATA 36 , 0 , 1.35632E-19 , " kkk" +DATA 37 , 0 , 1.35632E-19 , " NNNN " +DATA 38 , 0 , 3.09728E+27 , " mmmm " +DATA 39 , 0 , 1.35632E-19 , " ,,,,, " +DATA 40 , 0 , 1.35788E-19 , "OO " +DATA 41 , 0 , 163968. , " HHHH " +DATA 42 , 1 , 0 , " < " +DATA 43 , 0 , 4.8395E+25 , " j " +DATA 44 , 0 , 1.35632E-19 , " yyyy " +DATA 45 , 0 , 6.0796E-13 , " +++ " +DATA 46 , 1 , 0 , "o " +DATA 47 , 0 , 1.35632E-19 , " ((" +DATA 48 , 0 , 1.35632E-19 , " uu " +DATA 49 , 0 , 1.35632E-19 , " 00 " +DATA 50 , 0 , 1.35632E-19 , " HH " +DATA 51 , 0 , 1.35632E-19 , " " +DATA 52 , 0 , 1.68666E-19 , " G " +DATA 53 , 0 , 1.35632E-19 , " {{{{ " +DATA 54 , 0 , 1.35632E-19 , " ]]] " +DATA 55 , 1 , 0 , "CCC" +DATA 56 , 0 , 1.35632E-19 , " 44 " +DATA 57 , 0 , 1.35838E-19 , "^^ " +DATA 58 , 0 , 1.35632E-19 , " QQ " +DATA 59 , 0 , 1.35632E-19 , " FFFF " +DATA 60 , 0 , 1.3589E-19 , " n " +DATA 61 , 0 , 1.35632E-19 , " hh " +DATA 62 , 0 , 1.53489E-19 , "555 " +DATA 63 , 0 , 1.35632E-19 , " YYYY " +DATA 64 , 0 , 1.35632E-19 , " w " +DATA 65 , 0 , 2.15275E+8 , "MMMM " +DATA 66 , 0 , 3.31431E+6 , " JJJJ " +DATA 67 , 0 , 1.35632E-19 , " %% " +DATA 68 , 0 , 1.35632E-19 , " * " +DATA 69 , 0 , 1.35632E-19 , " @@@ " +DATA 70 , 1 , 0 , "I " +DATA 71 , 0 , 1.35632E-19 , " ss " +DATA 72 , 0 , 1.94924E-19 , " f " +DATA 73 , 0 , 640.502 , " D " +DATA 74 , 0 , 1.38183E-19 , "### " +DATA 75 , 0 , 1.35632E-19 , " ' " +DATA 76 , 0 , 1.68327E+22 , " dd " +DATA 77 , 0 , 1.79849E-19 , " TT " +DATA 78 , 0 , 1.248E+33 , " vvv " +DATA 79 , 0 , 1.35632E-19 , " X " +DATA 80 , 0 , 1.35632E-19 , " % " +DATA 81 , 1 , 0 , " " +DATA 82 , 0 , 6.75051E-7 , " 5555 " +DATA 83 , 0 , 12689.6 , "FFFF " +DATA 84 , 0 , 1.35632E-19 , " %% " +DATA 85 , 0 , 1.35632E-19 , " " +DATA 86 , 0 , 8.44477E+37 , " ~~~~ " +DATA 87 , 0 , 3.32568E+36 , " || " +DATA 88 , 0 , 1.35632E-19 , " SSS " +DATA 89 , 0 , 2.38606E-6 , " 6666 " +DATA 90 , 0 , 1.35632E-19 , " ww " +DATA 91 , 0 , 2.57752E-9 , " 1111 " +DATA 92 , 1 , 0 , " K " +DATA 93 , 0 , 7.73665E+31 , " ttttt " +DATA 94 , 0 , 3.47807E+9 , " OOOOO " +DATA 95 , 0 , 1.35754E-19 , " E " +DATA 96 , 0 , 1.39796E+10 , " PPPPP " +DATA 97 , 0 , 1.35632E-19 , " == " +DATA 98 , 0 , 5.89163E+13 , " VVVV " +DATA 99 , 0 , 1.35853E-19 , " c " +DATA 100 , 0 , 1.35632E-19 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_CVS_A_N.OUT b/NBS2/F_CVS_A_N.OUT new file mode 100644 index 0000000..2ca35ee --- /dev/null +++ b/NBS2/F_CVS_A_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 5.35553E+7 A$=[ LLLL] + F= 0 N= 5.35553E+7 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.35632E-19 A$=[ '' ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 4.95564E+28 A$=[ oo ] + F= 0 N= 4.95564E+28 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.49237E-19 A$=[ 00 ] + F= 0 N= 1.49237E-19 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.80285E+17 A$=[ \\\\ ] + F= 0 N= 1.80285E+17 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.14327E+27 A$=[ lllll ] + F= 0 N= 1.14327E+27 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.35632E-19 A$=[ uuuu ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.90689E-19 A$=[ a ] + F= 0 N= 1.90689E-19 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.96856E-19 A$=[ hh ] + F= 0 N= 1.96856E-19 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.96618E-19 A$=[ h ] + F= 0 N= 1.96618E-19 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.35632E-19 A$=[ 5 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1.50878E-19 A$=[ 2 ] + F= 0 N= 1.50878E-19 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.35675E-19 A$=[ - ] + F= 0 N= 1.35675E-19 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 7.73665E+31 A$=[ tttt ] + F= 0 N= 7.73665E+31 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 7.10012E-4 A$=[ :::: ] + F= 0 N= 7.10012E-4 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.15383E+19 A$=[ ___ ] + F= 0 N= 1.15383E+19 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60956E+19 A$=[ _____ ] + F= 0 N= 1.60956E+19 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 12680 A$=[ FFFF ] + F= 0 N= 12680. +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.35632E-19 A$=[ kkk] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.35632E-19 A$=[ NNNN ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 3.09728E+27 A$=[ mmmm ] + F= 0 N= 3.09728E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.35632E-19 A$=[ ,,,,, ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.35788E-19 A$=[OO ] + F= 0 N= 1.35788E-19 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 163968 A$=[ HHHH ] + F= 0 N= 163968. +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 4.8395E+25 A$=[ j ] + F= 0 N= 4.8395E+25 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.35632E-19 A$=[ yyyy ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 6.0796E-13 A$=[ +++ ] + F= 0 N= 6.0796E-13 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.35632E-19 A$=[ ((] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.35632E-19 A$=[ uu ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.35632E-19 A$=[ 00 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1.35632E-19 A$=[ HH ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.68666E-19 A$=[ G ] + F= 0 N= 1.68666E-19 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.35632E-19 A$=[ {{{{ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.35632E-19 A$=[ ]]] ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.35632E-19 A$=[ 44 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.35838E-19 A$=[^^ ] + F= 0 N= 1.35838E-19 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.35632E-19 A$=[ QQ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 1.35632E-19 A$=[ FFFF ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 1.3589E-19 A$=[ n ] + F= 0 N= 1.3589E-19 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.35632E-19 A$=[ hh ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 1.53489E-19 A$=[555 ] + F= 0 N= 1.53489E-19 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1.35632E-19 A$=[ YYYY ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 1.35632E-19 A$=[ w ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 2.15275E+8 A$=[MMMM ] + F= 0 N= 2.15275E+8 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 3.31431E+6 A$=[ JJJJ ] + F= 0 N= 3.31431E+6 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1.35632E-19 A$=[ %% ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1.35632E-19 A$=[ * ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 1.35632E-19 A$=[ @@@ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.35632E-19 A$=[ ss ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.94924E-19 A$=[ f ] + F= 0 N= 1.94924E-19 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 640.502 A$=[ D ] + F= 0 N= 640.502 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.38183E-19 A$=[### ] + F= 0 N= 1.38183E-19 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.35632E-19 A$=[ ' ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68327E+22 A$=[ dd ] + F= 0 N= 1.68327E+22 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1.79849E-19 A$=[ TT ] + F= 0 N= 1.79849E-19 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.248E+33 A$=[ vvv ] + F= 0 N= 1.248E+33 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1.35632E-19 A$=[ X ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 1.35632E-19 A$=[ % ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 6.75051E-7 A$=[ 5555 ] + F= 0 N= 6.75051E-7 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 12689.6 A$=[FFFF ] + F= 0 N= 12689.6 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.35632E-19 A$=[ %% ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 8.44477E+37 A$=[ ~~~~ ] + F= 0 N= 8.44477E+37 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 3.32568E+36 A$=[ || ] + F= 0 N= 3.32568E+36 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1.35632E-19 A$=[ SSS ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.38606E-6 A$=[ 6666 ] + F= 0 N= 2.38606E-6 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.35632E-19 A$=[ ww ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.57752E-9 A$=[ 1111 ] + F= 0 N= 2.57752E-9 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 7.73665E+31 A$=[ ttttt ] + F= 0 N= 7.73665E+31 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 3.47807E+9 A$=[ OOOOO ] + F= 0 N= 3.47807E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1.35754E-19 A$=[ E ] + F= 0 N= 1.35754E-19 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.39796E+10 A$=[ PPPPP ] + F= 0 N= 1.39796E+10 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 1.35632E-19 A$=[ == ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 5.89163E+13 A$=[ VVVV ] + F= 0 N= 5.89163E+13 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1.35853E-19 A$=[ c ] + F= 0 N= 1.35853E-19 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.35632E-19 A$=[ + yyyy ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_CVS_A_N.dif b/NBS2/F_CVS_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_CVS_A_N.run b/NBS2/F_CVS_A_N.run new file mode 100644 index 0000000..c05bbf1 --- /dev/null +++ b/NBS2/F_CVS_A_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 5.35553E+7 A$=[ LLLL] + F= 0 N= 5.35553E+7 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.35632E-19 A$=[ '' ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 4.95564E+28 A$=[ oo ] + F= 0 N= 4.95564E+28 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.49237E-19 A$=[ 00 ] + F= 0 N= 1.49237E-19 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.80285E+17 A$=[ \\\\ ] + F= 0 N= 1.80285E+17 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.14327E+27 A$=[ lllll ] + F= 0 N= 1.14327E+27 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.35632E-19 A$=[ uuuu ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.90689E-19 A$=[ a ] + F= 0 N= 1.90689E-19 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.96856E-19 A$=[ hh ] + F= 0 N= 1.96856E-19 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.96618E-19 A$=[ h ] + F= 0 N= 1.96618E-19 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.35632E-19 A$=[ 5 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1.50878E-19 A$=[ 2 ] + F= 0 N= 1.50878E-19 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.35675E-19 A$=[ - ] + F= 0 N= 1.35675E-19 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 7.73665E+31 A$=[ tttt ] + F= 0 N= 7.73665E+31 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 7.10012E-4 A$=[ :::: ] + F= 0 N= 7.10012E-4 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.15383E+19 A$=[ ___ ] + F= 0 N= 1.15383E+19 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1.60956E+19 A$=[ _____ ] + F= 0 N= 1.60956E+19 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 12680 A$=[ FFFF ] + F= 0 N= 12680. +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.35632E-19 A$=[ kkk] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.35632E-19 A$=[ NNNN ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 3.09728E+27 A$=[ mmmm ] + F= 0 N= 3.09728E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.35632E-19 A$=[ ,,,,, ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.35788E-19 A$=[OO ] + F= 0 N= 1.35788E-19 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 163968 A$=[ HHHH ] + F= 0 N= 163968. +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 4.8395E+25 A$=[ j ] + F= 0 N= 4.8395E+25 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1.35632E-19 A$=[ yyyy ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 6.0796E-13 A$=[ +++ ] + F= 0 N= 6.0796E-13 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.35632E-19 A$=[ ((] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1.35632E-19 A$=[ uu ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.35632E-19 A$=[ 00 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1.35632E-19 A$=[ HH ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.68666E-19 A$=[ G ] + F= 0 N= 1.68666E-19 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.35632E-19 A$=[ {{{{ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.35632E-19 A$=[ ]]] ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1.35632E-19 A$=[ 44 ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.35838E-19 A$=[^^ ] + F= 0 N= 1.35838E-19 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.35632E-19 A$=[ QQ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 1.35632E-19 A$=[ FFFF ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 1.3589E-19 A$=[ n ] + F= 0 N= 1.3589E-19 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1.35632E-19 A$=[ hh ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 1.53489E-19 A$=[555 ] + F= 0 N= 1.53489E-19 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1.35632E-19 A$=[ YYYY ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 1.35632E-19 A$=[ w ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 2.15275E+8 A$=[MMMM ] + F= 0 N= 2.15275E+8 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 3.31431E+6 A$=[ JJJJ ] + F= 0 N= 3.31431E+6 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1.35632E-19 A$=[ %% ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1.35632E-19 A$=[ * ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 1.35632E-19 A$=[ @@@ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1.35632E-19 A$=[ ss ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.94924E-19 A$=[ f ] + F= 0 N= 1.94924E-19 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 640.502 A$=[ D ] + F= 0 N= 640.502 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1.38183E-19 A$=[### ] + F= 0 N= 1.38183E-19 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.35632E-19 A$=[ ' ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.68327E+22 A$=[ dd ] + F= 0 N= 1.68327E+22 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1.79849E-19 A$=[ TT ] + F= 0 N= 1.79849E-19 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1.248E+33 A$=[ vvv ] + F= 0 N= 1.248E+33 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1.35632E-19 A$=[ X ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 1.35632E-19 A$=[ % ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 6.75051E-7 A$=[ 5555 ] + F= 0 N= 6.75051E-7 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 12689.6 A$=[FFFF ] + F= 0 N= 12689.6 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.35632E-19 A$=[ %% ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.35632E-19 A$=[ ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 8.44477E+37 A$=[ ~~~~ ] + F= 0 N= 8.44477E+37 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 3.32568E+36 A$=[ || ] + F= 0 N= 3.32568E+36 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1.35632E-19 A$=[ SSS ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.38606E-6 A$=[ 6666 ] + F= 0 N= 2.38606E-6 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1.35632E-19 A$=[ ww ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.57752E-9 A$=[ 1111 ] + F= 0 N= 2.57752E-9 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 7.73665E+31 A$=[ ttttt ] + F= 0 N= 7.73665E+31 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 3.47807E+9 A$=[ OOOOO ] + F= 0 N= 3.47807E+9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1.35754E-19 A$=[ E ] + F= 0 N= 1.35754E-19 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1.39796E+10 A$=[ PPPPP ] + F= 0 N= 1.39796E+10 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 1.35632E-19 A$=[ == ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 5.89163E+13 A$=[ VVVV ] + F= 0 N= 5.89163E+13 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1.35853E-19 A$=[ c ] + F= 0 N= 1.35853E-19 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.35632E-19 A$=[ + yyyy ] + F= 0 N= 1.35632E-19 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_DEG_X_N.80 b/NBS2/F_DEG_X_N.80 new file mode 100644 index 0000000..f6e85c6 --- /dev/null +++ b/NBS2/F_DEG_X_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 57.2958 X= 1 + F= 0 N= 57.2958 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-57.2958 X=-1 + F= 0 N=-57.2958 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 22.9183 X= .4 + F= 0 N= 22.9183 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-22.9183 X=-.4 + F= 0 N=-22.9183 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 34.3775 X= .6 + F= 0 N= 34.3775 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-34.3775 X=-.6 + F= 0 N=-34.3775 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 14553.1 X= 254 + F= 0 N= 14553.1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 14610.4 X= 255 + F= 0 N= 14610.4 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 14667.7 X= 256 + F= 0 N= 14667.7 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.83346E+6 X= 32000 + F= 0 N= 1.83346E+6 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-13.0193 X=-.227229 + F= 0 N=-13.0193 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-13.7027 X=-.239157 + F= 0 N=-13.7027 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-12.2376 X=-.213586 + F= 0 N=-12.2376 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 15.7377 X= .274675 + F= 0 N= 15.7377 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 9.72688 X= .169766 + F= 0 N= 9.72688 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 18.2639 X= .318766 + F= 0 N= 18.2639 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.18406 X= 2.06658E-2 + F= 0 N= 1.18406 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 10.7863 X= .188257 + F= 0 N= 10.7863 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-15.9017 X=-.277537 + F= 0 N=-15.9017 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-27.5766 X=-.481303 + F= 0 N=-27.5766 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 24.9557 X= .43556 + F= 0 N= 24.9557 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-12.0877 X=-.210971 + F= 0 N=-12.0877 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-26.082 X=-.455216 + F= 0 N=-26.082 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-6354.5 X=-110.907 + F= 0 N=-6354.5 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 6052.27 X= 105.632 + F= 0 N= 6052.27 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-6551.26 X=-114.341 + F= 0 N=-6551.26 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6285.69 X= 109.706 + F= 0 N= 6285.69 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6256.58 X= 109.198 + F= 0 N= 6256.58 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4920.41 X= 85.8773 + F= 0 N= 4920.41 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-3343.48 X=-58.3548 + F= 0 N=-3343.48 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1698.23 X= 29.6397 + F= 0 N= 1698.23 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-6208.57 X=-108.36 + F= 0 N=-6208.57 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-2665.39 X=-46.5199 + F= 0 N=-2665.39 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 6446.98 X= 112.521 + F= 0 N= 6446.98 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2602.09 X= 45.4151 + F= 0 N= 2602.09 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5794.26 X= 101.129 + F= 0 N= 5794.26 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 3726.94 X= 65.0473 + F= 0 N= 3726.94 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 2773.18 X= 48.4012 + F= 0 N= 2773.18 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 7006.93 X= 122.294 + F= 0 N= 7006.93 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-3214.83 X=-56.1094 + F= 0 N=-3214.83 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-6937.77 X=-121.087 + F= 0 N=-6937.77 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-7077 X=-123.517 + F= 0 N=-7077. +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-5593.79 X=-97.6301 + F= 0 N=-5593.79 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-3666.94 X=-64.0001 + F= 0 N=-3666.94 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1471.86 X=-25.6888 + F= 0 N=-1471.86 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 848.012 X= 14.8006 + F= 0 N= 848.012 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-3500.07 X=-61.0877 + F= 0 N=-3500.07 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-3818.08 X=-66.6381 + F= 0 N=-3818.08 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-313780 X=-5476.5 + F= 0 N=-313780. +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1.21526E+6 X=-21210.3 + F= 0 N=-1.21526E+6 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1.64767E+6 X=-28757.2 + F= 0 N=-1.64767E+6 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1.64623E+6 X=-28732.2 + F= 0 N=-1.64623E+6 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 729392 X= 12730.3 + F= 0 N= 729392. +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-104891 X=-1830.69 + F= 0 N=-104891. +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 314347 X= 5486.39 + F= 0 N= 314347. +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.28376E+6 X= 22405.9 + F= 0 N= 1.28376E+6 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.76527E+6 X= 30809.8 + F= 0 N= 1.76527E+6 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.6576E+6 X=-28930.6 + F= 0 N=-1.6576E+6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-344607 X=-6014.53 + F= 0 N=-344607. +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 997783 X= 17414.6 + F= 0 N= 997783. +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-603800 X=-10538.3 + F= 0 N=-603800. +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1.00476E+6 X=-17536.3 + F= 0 N=-1.00476E+6 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-507447 X=-8856.62 + F= 0 N=-507447. +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-294507 X=-5140.12 + F= 0 N=-294507. +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-492475 X=-8595.31 + F= 0 N=-492475. +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-193824 X=-3382.87 + F= 0 N=-193824. +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-286597 X=-5002.07 + F= 0 N=-286597. +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-332357 X=-5800.72 + F= 0 N=-332357. +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1.70091E+6 X= 29686.4 + F= 0 N= 1.70091E+6 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 147307 X= 2571 + F= 0 N= 147307. +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.78138E+6 X= 31091 + F= 0 N= 1.78138E+6 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 849066 X= 14819 + F= 0 N= 849066. +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 217203 X= 3790.9 + F= 0 N= 217203. +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-2.46263E+11 X=-4.2981E+9 + F= 0 N=-2.46263E+11 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-4.04195E+10 X=-7.05453E+8 + F= 0 N=-4.04195E+10 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1.77719E+11 X=-3.10179E+9 + F= 0 N=-1.77719E+11 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-2.78549E+11 X=-4.86159E+9 + F= 0 N=-2.78549E+11 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-4.9441E+10 X=-8.62908E+8 + F= 0 N=-4.9441E+10 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.95384E+11 X=-3.4101E+9 + F= 0 N=-1.95384E+11 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.9417E+11 X= 3.3889E+9 + F= 0 N= 1.9417E+11 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.4314E+11 X= 2.49826E+9 + F= 0 N= 1.4314E+11 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.34594E+11 X= 2.3491E+9 + F= 0 N= 1.34594E+11 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.11581E+10 X= 1.94745E+8 + F= 0 N= 1.11581E+10 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.1601E+11 X= 2.02475E+9 + F= 0 N= 1.1601E+11 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.29917E+11 X=-2.26748E+9 + F= 0 N=-1.29917E+11 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1.20657E+11 X=-2.10587E+9 + F= 0 N=-1.20657E+11 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.42696E+11 X= 4.23585E+9 + F= 0 N= 2.42696E+11 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.52707E+11 X=-2.66524E+9 + F= 0 N=-1.52707E+11 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 2.29786E+11 X= 4.01052E+9 + F= 0 N= 2.29786E+11 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-2.79553E+11 X=-4.87912E+9 + F= 0 N=-2.79553E+11 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.01732E+11 X= 1.77556E+9 + F= 0 N= 1.01732E+11 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.64843E+10 X= 2.87705E+8 + F= 0 N= 1.64843E+10 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.14578E+10 X= 1.99977E+8 + F= 0 N= 1.14578E+10 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.94772E+11 X=-3.39941E+9 + F= 0 N=-1.94772E+11 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-2.0003E+11 X=-3.49119E+9 + F= 0 N=-2.0003E+11 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.64052E+11 X=-2.86324E+9 + F= 0 N=-1.64052E+11 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 2.40882E+11 X= 4.20418E+9 + F= 0 N= 2.40882E+11 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.80585E+11 X=-3.1518E+9 + F= 0 N=-1.80585E+11 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 2.63913E+11 X= + 4.60615E+9 + F= 0 N= 2.63913E+11 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_DEG_X_N.BAS b/NBS2/F_DEG_X_N.BAS new file mode 100644 index 0000000..4b62ab6 --- /dev/null +++ b/NBS2/F_DEG_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:20 +REM FILENAME: F_DEG_X_N.BAS +REM SYNTAX: N = DEG( X ) +REM UNIQUEID: F_DEG_X_N +REM FUNCTION: DEG +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = DEG( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 57.2958 , 1 +DATA 3 , 0 , -57.2958 , -1 +DATA 4 , 0 , 22.9183 , .4 +DATA 5 , 0 , -22.9183 , -.4 +DATA 6 , 0 , 34.3775 , .6 +DATA 7 , 0 , -34.3775 , -.6 +DATA 8 , 0 , 14553.1 , 254 +DATA 9 , 0 , 14610.4 , 255 +DATA 10 , 0 , 14667.7 , 256 +DATA 11 , 0 , 1.83346E+6 , 32000 +DATA 12 , 0 , -13.0193 , -.227229 +DATA 13 , 0 , -13.7027 , -.239157 +DATA 14 , 0 , -12.2376 , -.213586 +DATA 15 , 0 , 15.7377 , .274675 +DATA 16 , 0 , 9.72688 , .169766 +DATA 17 , 0 , 18.2639 , .318766 +DATA 18 , 0 , 1.18406 , 2.06658E-2 +DATA 19 , 0 , 10.7863 , .188257 +DATA 20 , 0 , -15.9017 , -.277537 +DATA 21 , 0 , -27.5766 , -.481303 +DATA 22 , 0 , 24.9557 , .43556 +DATA 23 , 0 , -12.0877 , -.210971 +DATA 24 , 0 , -26.082 , -.455216 +DATA 25 , 0 , -6354.5 , -110.907 +DATA 26 , 0 , 6052.27 , 105.632 +DATA 27 , 0 , -6551.26 , -114.341 +DATA 28 , 0 , 6285.69 , 109.706 +DATA 29 , 0 , 6256.58 , 109.198 +DATA 30 , 0 , 4920.41 , 85.8773 +DATA 31 , 0 , -3343.48 , -58.3548 +DATA 32 , 0 , 1698.23 , 29.6397 +DATA 33 , 0 , -6208.57 , -108.36 +DATA 34 , 0 , -2665.39 , -46.5199 +DATA 35 , 0 , 6446.98 , 112.521 +DATA 36 , 0 , 2602.09 , 45.4151 +DATA 37 , 0 , 5794.26 , 101.129 +DATA 38 , 0 , 3726.94 , 65.0473 +DATA 39 , 0 , 2773.18 , 48.4012 +DATA 40 , 0 , 7006.93 , 122.294 +DATA 41 , 0 , -3214.83 , -56.1094 +DATA 42 , 0 , -6937.77 , -121.087 +DATA 43 , 0 , -7077. , -123.517 +DATA 44 , 0 , -5593.79 , -97.6301 +DATA 45 , 0 , -3666.94 , -64.0001 +DATA 46 , 0 , -1471.86 , -25.6888 +DATA 47 , 0 , 848.012 , 14.8006 +DATA 48 , 0 , -3500.07 , -61.0877 +DATA 49 , 0 , -3818.08 , -66.6381 +DATA 50 , 0 , -313780. , -5476.5 +DATA 51 , 0 , -1.21526E+6 , -21210.3 +DATA 52 , 0 , -1.64767E+6 , -28757.2 +DATA 53 , 0 , -1.64623E+6 , -28732.2 +DATA 54 , 0 , 729392. , 12730.3 +DATA 55 , 0 , -104891. , -1830.69 +DATA 56 , 0 , 314347. , 5486.39 +DATA 57 , 0 , 1.28376E+6 , 22405.9 +DATA 58 , 0 , 1.76527E+6 , 30809.8 +DATA 59 , 0 , -1.6576E+6 , -28930.6 +DATA 60 , 0 , -344607. , -6014.53 +DATA 61 , 0 , 997783. , 17414.6 +DATA 62 , 0 , -603800. , -10538.3 +DATA 63 , 0 , -1.00476E+6 , -17536.3 +DATA 64 , 0 , -507447. , -8856.62 +DATA 65 , 0 , -294507. , -5140.12 +DATA 66 , 0 , -492475. , -8595.31 +DATA 67 , 0 , -193824. , -3382.87 +DATA 68 , 0 , -286597. , -5002.07 +DATA 69 , 0 , -332357. , -5800.72 +DATA 70 , 0 , 1.70091E+6 , 29686.4 +DATA 71 , 0 , 147307. , 2571. +DATA 72 , 0 , 1.78138E+6 , 31091. +DATA 73 , 0 , 849066. , 14819. +DATA 74 , 0 , 217203. , 3790.9 +DATA 75 , 0 , -2.46263E+11 , -4.2981E+9 +DATA 76 , 0 , -4.04195E+10 , -7.05453E+8 +DATA 77 , 0 , -1.77719E+11 , -3.10179E+9 +DATA 78 , 0 , -2.78549E+11 , -4.86159E+9 +DATA 79 , 0 , -4.9441E+10 , -8.62908E+8 +DATA 80 , 0 , -1.95384E+11 , -3.4101E+9 +DATA 81 , 0 , 1.9417E+11 , 3.3889E+9 +DATA 82 , 0 , 1.4314E+11 , 2.49826E+9 +DATA 83 , 0 , 1.34594E+11 , 2.3491E+9 +DATA 84 , 0 , 1.11581E+10 , 1.94745E+8 +DATA 85 , 0 , 1.1601E+11 , 2.02475E+9 +DATA 86 , 0 , -1.29917E+11 , -2.26748E+9 +DATA 87 , 0 , -1.20657E+11 , -2.10587E+9 +DATA 88 , 0 , 2.42696E+11 , 4.23585E+9 +DATA 89 , 0 , -1.52707E+11 , -2.66524E+9 +DATA 90 , 0 , 2.29786E+11 , 4.01052E+9 +DATA 91 , 0 , -2.79553E+11 , -4.87912E+9 +DATA 92 , 0 , 1.01732E+11 , 1.77556E+9 +DATA 93 , 0 , 1.64843E+10 , 2.87705E+8 +DATA 94 , 0 , 1.14578E+10 , 1.99977E+8 +DATA 95 , 0 , -1.94772E+11 , -3.39941E+9 +DATA 96 , 0 , -2.0003E+11 , -3.49119E+9 +DATA 97 , 0 , -1.64052E+11 , -2.86324E+9 +DATA 98 , 0 , 2.40882E+11 , 4.20418E+9 +DATA 99 , 0 , -1.80585E+11 , -3.1518E+9 +DATA 100 , 0 , 2.63913E+11 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_DEG_X_N.OUT b/NBS2/F_DEG_X_N.OUT new file mode 100644 index 0000000..4aa40be --- /dev/null +++ b/NBS2/F_DEG_X_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 57.2958 X= 1 + F= 0 N= 57.2958 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-57.2958 X=-1 + F= 0 N=-57.2958 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 22.9183 X= .4 + F= 0 N= 22.9183 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-22.9183 X=-.4 + F= 0 N=-22.9183 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 34.3775 X= .6 + F= 0 N= 34.3775 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-34.3775 X=-.6 + F= 0 N=-34.3775 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 14553.1 X= 254 + F= 0 N= 14553.1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 14610.4 X= 255 + F= 0 N= 14610.4 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 14667.7 X= 256 + F= 0 N= 14667.7 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.83346E+6 X= 32000 + F= 0 N= 1.83346E+6 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-13.0193 X=-.227229 + F= 0 N=-13.0193 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-13.7027 X=-.239157 + F= 0 N=-13.7027 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-12.2376 X=-.213586 + F= 0 N=-12.2376 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 15.7377 X= .274675 + F= 0 N= 15.7377 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 9.72688 X= .169766 + F= 0 N= 9.72688 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 18.2639 X= .318766 + F= 0 N= 18.2639 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.18406 X= 2.06658E-2 + F= 0 N= 1.18406 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 10.7863 X= .188257 + F= 0 N= 10.7863 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-15.9017 X=-.277537 + F= 0 N=-15.9017 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-27.5766 X=-.481303 + F= 0 N=-27.5766 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 24.9557 X= .43556 + F= 0 N= 24.9557 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-12.0877 X=-.210971 + F= 0 N=-12.0877 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-26.082 X=-.455216 + F= 0 N=-26.082 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-6354.5 X=-110.907 + F= 0 N=-6354.5 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 6052.27 X= 105.632 + F= 0 N= 6052.27 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-6551.26 X=-114.341 + F= 0 N=-6551.26 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6285.69 X= 109.706 + F= 0 N= 6285.69 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6256.58 X= 109.198 + F= 0 N= 6256.58 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4920.41 X= 85.8773 + F= 0 N= 4920.41 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-3343.48 X=-58.3548 + F= 0 N=-3343.48 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1698.23 X= 29.6397 + F= 0 N= 1698.23 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-6208.57 X=-108.36 + F= 0 N=-6208.57 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-2665.39 X=-46.5199 + F= 0 N=-2665.39 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 6446.98 X= 112.521 + F= 0 N= 6446.98 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2602.09 X= 45.4151 + F= 0 N= 2602.09 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5794.26 X= 101.129 + F= 0 N= 5794.26 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 3726.94 X= 65.0473 + F= 0 N= 3726.94 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 2773.18 X= 48.4012 + F= 0 N= 2773.18 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 7006.93 X= 122.294 + F= 0 N= 7006.93 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-3214.83 X=-56.1094 + F= 0 N=-3214.83 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-6937.77 X=-121.087 + F= 0 N=-6937.77 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-7077 X=-123.517 + F= 0 N=-7077. +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-5593.79 X=-97.6301 + F= 0 N=-5593.79 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-3666.94 X=-64.0001 + F= 0 N=-3666.94 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1471.86 X=-25.6888 + F= 0 N=-1471.86 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 848.012 X= 14.8006 + F= 0 N= 848.012 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-3500.07 X=-61.0877 + F= 0 N=-3500.07 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-3818.08 X=-66.6381 + F= 0 N=-3818.08 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-313780 X=-5476.5 + F= 0 N=-313780. +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1.21526E+6 X=-21210.3 + F= 0 N=-1.21526E+6 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1.64767E+6 X=-28757.2 + F= 0 N=-1.64767E+6 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1.64623E+6 X=-28732.2 + F= 0 N=-1.64623E+6 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 729392 X= 12730.3 + F= 0 N= 729392. +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-104891 X=-1830.69 + F= 0 N=-104891. +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 314347 X= 5486.39 + F= 0 N= 314347. +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.28376E+6 X= 22405.9 + F= 0 N= 1.28376E+6 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.76527E+6 X= 30809.8 + F= 0 N= 1.76527E+6 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.6576E+6 X=-28930.6 + F= 0 N=-1.6576E+6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-344607 X=-6014.53 + F= 0 N=-344607. +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 997783 X= 17414.6 + F= 0 N= 997783. +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-603800 X=-10538.3 + F= 0 N=-603800. +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1.00476E+6 X=-17536.3 + F= 0 N=-1.00476E+6 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-507447 X=-8856.62 + F= 0 N=-507447. +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-294507 X=-5140.12 + F= 0 N=-294507. +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-492475 X=-8595.31 + F= 0 N=-492475. +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-193824 X=-3382.87 + F= 0 N=-193824. +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-286597 X=-5002.07 + F= 0 N=-286597. +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-332357 X=-5800.72 + F= 0 N=-332357. +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1.70091E+6 X= 29686.4 + F= 0 N= 1.70091E+6 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 147307 X= 2571 + F= 0 N= 147307. +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.78138E+6 X= 31091 + F= 0 N= 1.78138E+6 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 849066 X= 14819 + F= 0 N= 849066. +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 217203 X= 3790.9 + F= 0 N= 217203. +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-2.46263E+11 X=-4.2981E+9 + F= 0 N=-2.46263E+11 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-4.04195E+10 X=-7.05453E+8 + F= 0 N=-4.04195E+10 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1.77719E+11 X=-3.10179E+9 + F= 0 N=-1.77719E+11 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-2.78549E+11 X=-4.86159E+9 + F= 0 N=-2.78549E+11 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-4.9441E+10 X=-8.62908E+8 + F= 0 N=-4.9441E+10 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.95384E+11 X=-3.4101E+9 + F= 0 N=-1.95384E+11 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.9417E+11 X= 3.3889E+9 + F= 0 N= 1.9417E+11 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.4314E+11 X= 2.49826E+9 + F= 0 N= 1.4314E+11 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.34594E+11 X= 2.3491E+9 + F= 0 N= 1.34594E+11 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.11581E+10 X= 1.94745E+8 + F= 0 N= 1.11581E+10 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.1601E+11 X= 2.02475E+9 + F= 0 N= 1.1601E+11 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.29917E+11 X=-2.26748E+9 + F= 0 N=-1.29917E+11 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1.20657E+11 X=-2.10587E+9 + F= 0 N=-1.20657E+11 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.42696E+11 X= 4.23585E+9 + F= 0 N= 2.42696E+11 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.52707E+11 X=-2.66524E+9 + F= 0 N=-1.52707E+11 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 2.29786E+11 X= 4.01052E+9 + F= 0 N= 2.29786E+11 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-2.79553E+11 X=-4.87912E+9 + F= 0 N=-2.79553E+11 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.01732E+11 X= 1.77556E+9 + F= 0 N= 1.01732E+11 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.64843E+10 X= 2.87705E+8 + F= 0 N= 1.64843E+10 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.14578E+10 X= 1.99977E+8 + F= 0 N= 1.14578E+10 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.94772E+11 X=-3.39941E+9 + F= 0 N=-1.94772E+11 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-2.0003E+11 X=-3.49119E+9 + F= 0 N=-2.0003E+11 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.64052E+11 X=-2.86324E+9 + F= 0 N=-1.64052E+11 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 2.40882E+11 X= 4.20418E+9 + F= 0 N= 2.40882E+11 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.80585E+11 X=-3.1518E+9 + F= 0 N=-1.80585E+11 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 2.63913E+11 X= + 4.60615E+9 + F= 0 N= 2.63913E+11 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_DEG_X_N.dif b/NBS2/F_DEG_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_DEG_X_N.run b/NBS2/F_DEG_X_N.run new file mode 100644 index 0000000..f6e85c6 --- /dev/null +++ b/NBS2/F_DEG_X_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 57.2958 X= 1 + F= 0 N= 57.2958 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-57.2958 X=-1 + F= 0 N=-57.2958 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 22.9183 X= .4 + F= 0 N= 22.9183 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-22.9183 X=-.4 + F= 0 N=-22.9183 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 34.3775 X= .6 + F= 0 N= 34.3775 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-34.3775 X=-.6 + F= 0 N=-34.3775 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 14553.1 X= 254 + F= 0 N= 14553.1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 14610.4 X= 255 + F= 0 N= 14610.4 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 14667.7 X= 256 + F= 0 N= 14667.7 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.83346E+6 X= 32000 + F= 0 N= 1.83346E+6 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-13.0193 X=-.227229 + F= 0 N=-13.0193 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-13.7027 X=-.239157 + F= 0 N=-13.7027 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-12.2376 X=-.213586 + F= 0 N=-12.2376 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 15.7377 X= .274675 + F= 0 N= 15.7377 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 9.72688 X= .169766 + F= 0 N= 9.72688 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 18.2639 X= .318766 + F= 0 N= 18.2639 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.18406 X= 2.06658E-2 + F= 0 N= 1.18406 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 10.7863 X= .188257 + F= 0 N= 10.7863 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-15.9017 X=-.277537 + F= 0 N=-15.9017 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-27.5766 X=-.481303 + F= 0 N=-27.5766 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 24.9557 X= .43556 + F= 0 N= 24.9557 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-12.0877 X=-.210971 + F= 0 N=-12.0877 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-26.082 X=-.455216 + F= 0 N=-26.082 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-6354.5 X=-110.907 + F= 0 N=-6354.5 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 6052.27 X= 105.632 + F= 0 N= 6052.27 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-6551.26 X=-114.341 + F= 0 N=-6551.26 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6285.69 X= 109.706 + F= 0 N= 6285.69 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6256.58 X= 109.198 + F= 0 N= 6256.58 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4920.41 X= 85.8773 + F= 0 N= 4920.41 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-3343.48 X=-58.3548 + F= 0 N=-3343.48 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1698.23 X= 29.6397 + F= 0 N= 1698.23 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-6208.57 X=-108.36 + F= 0 N=-6208.57 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-2665.39 X=-46.5199 + F= 0 N=-2665.39 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 6446.98 X= 112.521 + F= 0 N= 6446.98 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2602.09 X= 45.4151 + F= 0 N= 2602.09 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 5794.26 X= 101.129 + F= 0 N= 5794.26 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 3726.94 X= 65.0473 + F= 0 N= 3726.94 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 2773.18 X= 48.4012 + F= 0 N= 2773.18 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 7006.93 X= 122.294 + F= 0 N= 7006.93 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-3214.83 X=-56.1094 + F= 0 N=-3214.83 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-6937.77 X=-121.087 + F= 0 N=-6937.77 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-7077 X=-123.517 + F= 0 N=-7077. +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-5593.79 X=-97.6301 + F= 0 N=-5593.79 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-3666.94 X=-64.0001 + F= 0 N=-3666.94 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1471.86 X=-25.6888 + F= 0 N=-1471.86 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 848.012 X= 14.8006 + F= 0 N= 848.012 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-3500.07 X=-61.0877 + F= 0 N=-3500.07 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-3818.08 X=-66.6381 + F= 0 N=-3818.08 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-313780 X=-5476.5 + F= 0 N=-313780. +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1.21526E+6 X=-21210.3 + F= 0 N=-1.21526E+6 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1.64767E+6 X=-28757.2 + F= 0 N=-1.64767E+6 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1.64623E+6 X=-28732.2 + F= 0 N=-1.64623E+6 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 729392 X= 12730.3 + F= 0 N= 729392. +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-104891 X=-1830.69 + F= 0 N=-104891. +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 314347 X= 5486.39 + F= 0 N= 314347. +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.28376E+6 X= 22405.9 + F= 0 N= 1.28376E+6 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1.76527E+6 X= 30809.8 + F= 0 N= 1.76527E+6 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.6576E+6 X=-28930.6 + F= 0 N=-1.6576E+6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-344607 X=-6014.53 + F= 0 N=-344607. +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 997783 X= 17414.6 + F= 0 N= 997783. +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-603800 X=-10538.3 + F= 0 N=-603800. +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1.00476E+6 X=-17536.3 + F= 0 N=-1.00476E+6 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-507447 X=-8856.62 + F= 0 N=-507447. +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-294507 X=-5140.12 + F= 0 N=-294507. +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-492475 X=-8595.31 + F= 0 N=-492475. +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-193824 X=-3382.87 + F= 0 N=-193824. +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-286597 X=-5002.07 + F= 0 N=-286597. +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-332357 X=-5800.72 + F= 0 N=-332357. +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1.70091E+6 X= 29686.4 + F= 0 N= 1.70091E+6 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 147307 X= 2571 + F= 0 N= 147307. +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1.78138E+6 X= 31091 + F= 0 N= 1.78138E+6 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 849066 X= 14819 + F= 0 N= 849066. +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 217203 X= 3790.9 + F= 0 N= 217203. +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-2.46263E+11 X=-4.2981E+9 + F= 0 N=-2.46263E+11 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-4.04195E+10 X=-7.05453E+8 + F= 0 N=-4.04195E+10 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1.77719E+11 X=-3.10179E+9 + F= 0 N=-1.77719E+11 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-2.78549E+11 X=-4.86159E+9 + F= 0 N=-2.78549E+11 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-4.9441E+10 X=-8.62908E+8 + F= 0 N=-4.9441E+10 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.95384E+11 X=-3.4101E+9 + F= 0 N=-1.95384E+11 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.9417E+11 X= 3.3889E+9 + F= 0 N= 1.9417E+11 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.4314E+11 X= 2.49826E+9 + F= 0 N= 1.4314E+11 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1.34594E+11 X= 2.3491E+9 + F= 0 N= 1.34594E+11 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.11581E+10 X= 1.94745E+8 + F= 0 N= 1.11581E+10 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.1601E+11 X= 2.02475E+9 + F= 0 N= 1.1601E+11 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.29917E+11 X=-2.26748E+9 + F= 0 N=-1.29917E+11 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1.20657E+11 X=-2.10587E+9 + F= 0 N=-1.20657E+11 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.42696E+11 X= 4.23585E+9 + F= 0 N= 2.42696E+11 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.52707E+11 X=-2.66524E+9 + F= 0 N=-1.52707E+11 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 2.29786E+11 X= 4.01052E+9 + F= 0 N= 2.29786E+11 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-2.79553E+11 X=-4.87912E+9 + F= 0 N=-2.79553E+11 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.01732E+11 X= 1.77556E+9 + F= 0 N= 1.01732E+11 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.64843E+10 X= 2.87705E+8 + F= 0 N= 1.64843E+10 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.14578E+10 X= 1.99977E+8 + F= 0 N= 1.14578E+10 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1.94772E+11 X=-3.39941E+9 + F= 0 N=-1.94772E+11 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-2.0003E+11 X=-3.49119E+9 + F= 0 N=-2.0003E+11 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1.64052E+11 X=-2.86324E+9 + F= 0 N=-1.64052E+11 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 2.40882E+11 X= 4.20418E+9 + F= 0 N= 2.40882E+11 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.80585E+11 X=-3.1518E+9 + F= 0 N=-1.80585E+11 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 2.63913E+11 X= + 4.60615E+9 + F= 0 N= 2.63913E+11 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_EOF_X_N.run b/NBS2/F_EOF_X_N.run new file mode 100644 index 0000000..c692128 --- /dev/null +++ b/NBS2/F_EOF_X_N.run @@ -0,0 +1,8 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 1 N= 0 +*** TEST FAILED, EXCEPTION MISMATCH *** + +Program interrupted at line 1006 diff --git a/NBS2/F_EPS_X_N.80 b/NBS2/F_EPS_X_N.80 new file mode 100644 index 0000000..72a1454 --- /dev/null +++ b/NBS2/F_EPS_X_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 2.22507E-308 X= 0 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 2.22507E-308 X= 1 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 2.22507E-308 X=-1 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.22507E-308 X= .4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 2.22507E-308 X=-.4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 2.22507E-308 X= .6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2.22507E-308 X=-.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.22507E-308 X= 254 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.22507E-308 X= 255 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 2.22507E-308 X= 256 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 2.22507E-308 X= 32000 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 2.22507E-308 X=-.227229 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 2.22507E-308 X=-.239157 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 2.22507E-308 X=-.213586 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 2.22507E-308 X= .274675 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 2.22507E-308 X= .169766 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 2.22507E-308 X= .318766 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.22507E-308 X= 2.06658E-2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 2.22507E-308 X= .188257 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 2.22507E-308 X=-.277537 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 2.22507E-308 X=-.481303 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.22507E-308 X= .43556 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 2.22507E-308 X=-.210971 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 2.22507E-308 X=-.455216 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 2.22507E-308 X=-110.907 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.22507E-308 X= 105.632 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.22507E-308 X=-114.341 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.22507E-308 X= 109.706 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.22507E-308 X= 109.198 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 2.22507E-308 X= 85.8773 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 2.22507E-308 X=-58.3548 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 2.22507E-308 X= 29.6397 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 2.22507E-308 X=-108.36 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 2.22507E-308 X=-46.5199 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 2.22507E-308 X= 112.521 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.22507E-308 X= 45.4151 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 2.22507E-308 X= 101.129 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 2.22507E-308 X= 65.0473 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 2.22507E-308 X= 48.4012 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.22507E-308 X= 122.294 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.22507E-308 X=-56.1094 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 2.22507E-308 X=-121.087 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.22507E-308 X=-123.517 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 2.22507E-308 X=-97.6301 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 2.22507E-308 X=-64.0001 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 2.22507E-308 X=-25.6888 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.22507E-308 X= 14.8006 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.22507E-308 X=-61.0877 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 2.22507E-308 X=-66.6381 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 2.22507E-308 X=-5476.5 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 2.22507E-308 X=-21210.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 2.22507E-308 X=-28757.2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 2.22507E-308 X=-28732.2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 2.22507E-308 X= 12730.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 2.22507E-308 X=-1830.69 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.22507E-308 X= 5486.39 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 2.22507E-308 X= 22405.9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 2.22507E-308 X= 30809.8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 2.22507E-308 X=-28930.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 2.22507E-308 X=-6014.53 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 2.22507E-308 X= 17414.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 2.22507E-308 X=-10538.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 2.22507E-308 X=-17536.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 2.22507E-308 X=-8856.62 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 2.22507E-308 X=-5140.12 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 2.22507E-308 X=-8595.31 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 2.22507E-308 X=-3382.87 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 2.22507E-308 X=-5002.07 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 2.22507E-308 X=-5800.72 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 2.22507E-308 X= 29686.4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.22507E-308 X= 2571 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 2.22507E-308 X= 31091 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 2.22507E-308 X= 14819 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 2.22507E-308 X= 3790.9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 2.22507E-308 X=-4.2981E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 2.22507E-308 X=-7.05453E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.22507E-308 X=-3.10179E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 2.22507E-308 X=-4.86159E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 2.22507E-308 X=-8.62908E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 2.22507E-308 X=-3.4101E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 2.22507E-308 X= 3.3889E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.22507E-308 X= 2.49826E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.22507E-308 X= 2.3491E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 2.22507E-308 X= 1.94745E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.22507E-308 X= 2.02475E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.22507E-308 X=-2.26748E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.22507E-308 X=-2.10587E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.22507E-308 X= 4.23585E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.22507E-308 X=-2.66524E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 2.22507E-308 X= 4.01052E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.22507E-308 X=-4.87912E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 2.22507E-308 X= 1.77556E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.22507E-308 X= 2.87705E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.22507E-308 X= 1.99977E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 2.22507E-308 X=-3.39941E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 2.22507E-308 X=-3.49119E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 2.22507E-308 X=-2.86324E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 2.22507E-308 X= 4.20418E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 2.22507E-308 X=-3.1518E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 2.22507E-308 X= + 4.60615E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_EPS_X_N.BAS b/NBS2/F_EPS_X_N.BAS new file mode 100644 index 0000000..3dfa885 --- /dev/null +++ b/NBS2/F_EPS_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:21 +REM FILENAME: F_EPS_X_N.BAS +REM SYNTAX: N = EPS( X ) +REM UNIQUEID: F_EPS_X_N +REM FUNCTION: EPS +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = EPS( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 2.22507E-308 , 0 +DATA 2 , 0 , 2.22507E-308 , 1 +DATA 3 , 0 , 2.22507E-308 , -1 +DATA 4 , 0 , 2.22507E-308 , .4 +DATA 5 , 0 , 2.22507E-308 , -.4 +DATA 6 , 0 , 2.22507E-308 , .6 +DATA 7 , 0 , 2.22507E-308 , -.6 +DATA 8 , 0 , 2.22507E-308 , 254 +DATA 9 , 0 , 2.22507E-308 , 255 +DATA 10 , 0 , 2.22507E-308 , 256 +DATA 11 , 0 , 2.22507E-308 , 32000 +DATA 12 , 0 , 2.22507E-308 , -.227229 +DATA 13 , 0 , 2.22507E-308 , -.239157 +DATA 14 , 0 , 2.22507E-308 , -.213586 +DATA 15 , 0 , 2.22507E-308 , .274675 +DATA 16 , 0 , 2.22507E-308 , .169766 +DATA 17 , 0 , 2.22507E-308 , .318766 +DATA 18 , 0 , 2.22507E-308 , 2.06658E-2 +DATA 19 , 0 , 2.22507E-308 , .188257 +DATA 20 , 0 , 2.22507E-308 , -.277537 +DATA 21 , 0 , 2.22507E-308 , -.481303 +DATA 22 , 0 , 2.22507E-308 , .43556 +DATA 23 , 0 , 2.22507E-308 , -.210971 +DATA 24 , 0 , 2.22507E-308 , -.455216 +DATA 25 , 0 , 2.22507E-308 , -110.907 +DATA 26 , 0 , 2.22507E-308 , 105.632 +DATA 27 , 0 , 2.22507E-308 , -114.341 +DATA 28 , 0 , 2.22507E-308 , 109.706 +DATA 29 , 0 , 2.22507E-308 , 109.198 +DATA 30 , 0 , 2.22507E-308 , 85.8773 +DATA 31 , 0 , 2.22507E-308 , -58.3548 +DATA 32 , 0 , 2.22507E-308 , 29.6397 +DATA 33 , 0 , 2.22507E-308 , -108.36 +DATA 34 , 0 , 2.22507E-308 , -46.5199 +DATA 35 , 0 , 2.22507E-308 , 112.521 +DATA 36 , 0 , 2.22507E-308 , 45.4151 +DATA 37 , 0 , 2.22507E-308 , 101.129 +DATA 38 , 0 , 2.22507E-308 , 65.0473 +DATA 39 , 0 , 2.22507E-308 , 48.4012 +DATA 40 , 0 , 2.22507E-308 , 122.294 +DATA 41 , 0 , 2.22507E-308 , -56.1094 +DATA 42 , 0 , 2.22507E-308 , -121.087 +DATA 43 , 0 , 2.22507E-308 , -123.517 +DATA 44 , 0 , 2.22507E-308 , -97.6301 +DATA 45 , 0 , 2.22507E-308 , -64.0001 +DATA 46 , 0 , 2.22507E-308 , -25.6888 +DATA 47 , 0 , 2.22507E-308 , 14.8006 +DATA 48 , 0 , 2.22507E-308 , -61.0877 +DATA 49 , 0 , 2.22507E-308 , -66.6381 +DATA 50 , 0 , 2.22507E-308 , -5476.5 +DATA 51 , 0 , 2.22507E-308 , -21210.3 +DATA 52 , 0 , 2.22507E-308 , -28757.2 +DATA 53 , 0 , 2.22507E-308 , -28732.2 +DATA 54 , 0 , 2.22507E-308 , 12730.3 +DATA 55 , 0 , 2.22507E-308 , -1830.69 +DATA 56 , 0 , 2.22507E-308 , 5486.39 +DATA 57 , 0 , 2.22507E-308 , 22405.9 +DATA 58 , 0 , 2.22507E-308 , 30809.8 +DATA 59 , 0 , 2.22507E-308 , -28930.6 +DATA 60 , 0 , 2.22507E-308 , -6014.53 +DATA 61 , 0 , 2.22507E-308 , 17414.6 +DATA 62 , 0 , 2.22507E-308 , -10538.3 +DATA 63 , 0 , 2.22507E-308 , -17536.3 +DATA 64 , 0 , 2.22507E-308 , -8856.62 +DATA 65 , 0 , 2.22507E-308 , -5140.12 +DATA 66 , 0 , 2.22507E-308 , -8595.31 +DATA 67 , 0 , 2.22507E-308 , -3382.87 +DATA 68 , 0 , 2.22507E-308 , -5002.07 +DATA 69 , 0 , 2.22507E-308 , -5800.72 +DATA 70 , 0 , 2.22507E-308 , 29686.4 +DATA 71 , 0 , 2.22507E-308 , 2571. +DATA 72 , 0 , 2.22507E-308 , 31091. +DATA 73 , 0 , 2.22507E-308 , 14819. +DATA 74 , 0 , 2.22507E-308 , 3790.9 +DATA 75 , 0 , 2.22507E-308 , -4.2981E+9 +DATA 76 , 0 , 2.22507E-308 , -7.05453E+8 +DATA 77 , 0 , 2.22507E-308 , -3.10179E+9 +DATA 78 , 0 , 2.22507E-308 , -4.86159E+9 +DATA 79 , 0 , 2.22507E-308 , -8.62908E+8 +DATA 80 , 0 , 2.22507E-308 , -3.4101E+9 +DATA 81 , 0 , 2.22507E-308 , 3.3889E+9 +DATA 82 , 0 , 2.22507E-308 , 2.49826E+9 +DATA 83 , 0 , 2.22507E-308 , 2.3491E+9 +DATA 84 , 0 , 2.22507E-308 , 1.94745E+8 +DATA 85 , 0 , 2.22507E-308 , 2.02475E+9 +DATA 86 , 0 , 2.22507E-308 , -2.26748E+9 +DATA 87 , 0 , 2.22507E-308 , -2.10587E+9 +DATA 88 , 0 , 2.22507E-308 , 4.23585E+9 +DATA 89 , 0 , 2.22507E-308 , -2.66524E+9 +DATA 90 , 0 , 2.22507E-308 , 4.01052E+9 +DATA 91 , 0 , 2.22507E-308 , -4.87912E+9 +DATA 92 , 0 , 2.22507E-308 , 1.77556E+9 +DATA 93 , 0 , 2.22507E-308 , 2.87705E+8 +DATA 94 , 0 , 2.22507E-308 , 1.99977E+8 +DATA 95 , 0 , 2.22507E-308 , -3.39941E+9 +DATA 96 , 0 , 2.22507E-308 , -3.49119E+9 +DATA 97 , 0 , 2.22507E-308 , -2.86324E+9 +DATA 98 , 0 , 2.22507E-308 , 4.20418E+9 +DATA 99 , 0 , 2.22507E-308 , -3.1518E+9 +DATA 100 , 0 , 2.22507E-308 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_EPS_X_N.OUT b/NBS2/F_EPS_X_N.OUT new file mode 100644 index 0000000..4e02712 --- /dev/null +++ b/NBS2/F_EPS_X_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 2.22507E-308 X= 0 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 2.22507E-308 X= 1 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 2.22507E-308 X=-1 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.22507E-308 X= .4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 2.22507E-308 X=-.4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 2.22507E-308 X= .6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2.22507E-308 X=-.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.22507E-308 X= 254 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.22507E-308 X= 255 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 2.22507E-308 X= 256 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 2.22507E-308 X= 32000 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 2.22507E-308 X=-.227229 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 2.22507E-308 X=-.239157 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 2.22507E-308 X=-.213586 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 2.22507E-308 X= .274675 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 2.22507E-308 X= .169766 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 2.22507E-308 X= .318766 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.22507E-308 X= 2.06658E-2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 2.22507E-308 X= .188257 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 2.22507E-308 X=-.277537 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 2.22507E-308 X=-.481303 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.22507E-308 X= .43556 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 2.22507E-308 X=-.210971 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 2.22507E-308 X=-.455216 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 2.22507E-308 X=-110.907 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.22507E-308 X= 105.632 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.22507E-308 X=-114.341 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.22507E-308 X= 109.706 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.22507E-308 X= 109.198 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 2.22507E-308 X= 85.8773 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 2.22507E-308 X=-58.3548 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 2.22507E-308 X= 29.6397 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 2.22507E-308 X=-108.36 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 2.22507E-308 X=-46.5199 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 2.22507E-308 X= 112.521 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.22507E-308 X= 45.4151 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 2.22507E-308 X= 101.129 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 2.22507E-308 X= 65.0473 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 2.22507E-308 X= 48.4012 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.22507E-308 X= 122.294 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.22507E-308 X=-56.1094 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 2.22507E-308 X=-121.087 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.22507E-308 X=-123.517 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 2.22507E-308 X=-97.6301 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 2.22507E-308 X=-64.0001 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 2.22507E-308 X=-25.6888 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.22507E-308 X= 14.8006 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.22507E-308 X=-61.0877 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 2.22507E-308 X=-66.6381 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 2.22507E-308 X=-5476.5 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 2.22507E-308 X=-21210.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 2.22507E-308 X=-28757.2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 2.22507E-308 X=-28732.2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 2.22507E-308 X= 12730.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 2.22507E-308 X=-1830.69 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.22507E-308 X= 5486.39 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 2.22507E-308 X= 22405.9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 2.22507E-308 X= 30809.8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 2.22507E-308 X=-28930.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 2.22507E-308 X=-6014.53 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 2.22507E-308 X= 17414.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 2.22507E-308 X=-10538.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 2.22507E-308 X=-17536.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 2.22507E-308 X=-8856.62 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 2.22507E-308 X=-5140.12 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 2.22507E-308 X=-8595.31 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 2.22507E-308 X=-3382.87 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 2.22507E-308 X=-5002.07 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 2.22507E-308 X=-5800.72 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 2.22507E-308 X= 29686.4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.22507E-308 X= 2571 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 2.22507E-308 X= 31091 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 2.22507E-308 X= 14819 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 2.22507E-308 X= 3790.9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 2.22507E-308 X=-4.2981E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 2.22507E-308 X=-7.05453E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.22507E-308 X=-3.10179E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 2.22507E-308 X=-4.86159E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 2.22507E-308 X=-8.62908E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 2.22507E-308 X=-3.4101E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 2.22507E-308 X= 3.3889E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.22507E-308 X= 2.49826E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.22507E-308 X= 2.3491E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 2.22507E-308 X= 1.94745E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.22507E-308 X= 2.02475E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.22507E-308 X=-2.26748E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.22507E-308 X=-2.10587E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.22507E-308 X= 4.23585E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.22507E-308 X=-2.66524E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 2.22507E-308 X= 4.01052E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.22507E-308 X=-4.87912E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 2.22507E-308 X= 1.77556E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.22507E-308 X= 2.87705E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.22507E-308 X= 1.99977E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 2.22507E-308 X=-3.39941E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 2.22507E-308 X=-3.49119E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 2.22507E-308 X=-2.86324E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 2.22507E-308 X= 4.20418E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 2.22507E-308 X=-3.1518E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 2.22507E-308 X= + 4.60615E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_EPS_X_N.dif b/NBS2/F_EPS_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_EPS_X_N.run b/NBS2/F_EPS_X_N.run new file mode 100644 index 0000000..72a1454 --- /dev/null +++ b/NBS2/F_EPS_X_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 2.22507E-308 X= 0 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 2.22507E-308 X= 1 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 2.22507E-308 X=-1 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 2.22507E-308 X= .4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 2.22507E-308 X=-.4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 2.22507E-308 X= .6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2.22507E-308 X=-.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.22507E-308 X= 254 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.22507E-308 X= 255 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 2.22507E-308 X= 256 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 2.22507E-308 X= 32000 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 2.22507E-308 X=-.227229 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 2.22507E-308 X=-.239157 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 2.22507E-308 X=-.213586 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 2.22507E-308 X= .274675 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 2.22507E-308 X= .169766 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 2.22507E-308 X= .318766 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.22507E-308 X= 2.06658E-2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 2.22507E-308 X= .188257 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 2.22507E-308 X=-.277537 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 2.22507E-308 X=-.481303 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 2.22507E-308 X= .43556 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 2.22507E-308 X=-.210971 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 2.22507E-308 X=-.455216 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 2.22507E-308 X=-110.907 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.22507E-308 X= 105.632 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.22507E-308 X=-114.341 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.22507E-308 X= 109.706 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.22507E-308 X= 109.198 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 2.22507E-308 X= 85.8773 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 2.22507E-308 X=-58.3548 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 2.22507E-308 X= 29.6397 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 2.22507E-308 X=-108.36 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 2.22507E-308 X=-46.5199 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 2.22507E-308 X= 112.521 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.22507E-308 X= 45.4151 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 2.22507E-308 X= 101.129 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 2.22507E-308 X= 65.0473 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 2.22507E-308 X= 48.4012 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.22507E-308 X= 122.294 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 2.22507E-308 X=-56.1094 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 2.22507E-308 X=-121.087 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.22507E-308 X=-123.517 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 2.22507E-308 X=-97.6301 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 2.22507E-308 X=-64.0001 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 2.22507E-308 X=-25.6888 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.22507E-308 X= 14.8006 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.22507E-308 X=-61.0877 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 2.22507E-308 X=-66.6381 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 2.22507E-308 X=-5476.5 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 2.22507E-308 X=-21210.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 2.22507E-308 X=-28757.2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 2.22507E-308 X=-28732.2 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 2.22507E-308 X= 12730.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 2.22507E-308 X=-1830.69 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.22507E-308 X= 5486.39 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 2.22507E-308 X= 22405.9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 2.22507E-308 X= 30809.8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 2.22507E-308 X=-28930.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 2.22507E-308 X=-6014.53 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 2.22507E-308 X= 17414.6 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 2.22507E-308 X=-10538.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 2.22507E-308 X=-17536.3 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 2.22507E-308 X=-8856.62 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 2.22507E-308 X=-5140.12 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 2.22507E-308 X=-8595.31 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 2.22507E-308 X=-3382.87 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 2.22507E-308 X=-5002.07 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 2.22507E-308 X=-5800.72 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 2.22507E-308 X= 29686.4 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.22507E-308 X= 2571 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 2.22507E-308 X= 31091 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 2.22507E-308 X= 14819 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 2.22507E-308 X= 3790.9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 2.22507E-308 X=-4.2981E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 2.22507E-308 X=-7.05453E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 2.22507E-308 X=-3.10179E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 2.22507E-308 X=-4.86159E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 2.22507E-308 X=-8.62908E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 2.22507E-308 X=-3.4101E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 2.22507E-308 X= 3.3889E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.22507E-308 X= 2.49826E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.22507E-308 X= 2.3491E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 2.22507E-308 X= 1.94745E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.22507E-308 X= 2.02475E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 2.22507E-308 X=-2.26748E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 2.22507E-308 X=-2.10587E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.22507E-308 X= 4.23585E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 2.22507E-308 X=-2.66524E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 2.22507E-308 X= 4.01052E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 2.22507E-308 X=-4.87912E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 2.22507E-308 X= 1.77556E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.22507E-308 X= 2.87705E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 2.22507E-308 X= 1.99977E+8 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 2.22507E-308 X=-3.39941E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 2.22507E-308 X=-3.49119E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 2.22507E-308 X=-2.86324E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 2.22507E-308 X= 4.20418E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 2.22507E-308 X=-3.1518E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 2.22507E-308 X= + 4.60615E+9 + F= 0 N= 2.22507E-308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ERROR_X_A_N.80 b/NBS2/F_ERROR_X_A_N.80 new file mode 100644 index 0000000..f6057e5 --- /dev/null +++ b/NBS2/F_ERROR_X_A_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 A$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 X= 1 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 A$=[z] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 A$=[ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 X= .6 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 A$=[ LLLL] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 A$=[ '' ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 A$=[ oo ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 A$=[ \\\\ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 A$=[ lllll ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 A$=[ uuuu ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 A$=[ a ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 A$=[ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 A$=[ hh ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 A$=[ h ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 A$=[ )] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 A$=[ 5 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 A$=[ 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 A$=[ 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 A$=[ 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 A$=[ 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 A$=[ + yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ERROR_X_A_N.BAS b/NBS2/F_ERROR_X_A_N.BAS new file mode 100644 index 0000000..80242f3 --- /dev/null +++ b/NBS2/F_ERROR_X_A_N.BAS @@ -0,0 +1,184 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:21 +REM FILENAME: F_ERROR_X_A_N.BAS +REM SYNTAX: N = ERROR( X, A$ ) +REM UNIQUEID: F_ERROR_X_A_N +REM FUNCTION: ERROR +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ERROR( X, A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 , "" +DATA 2 , 1 , 0 , 1 , " " +DATA 3 , 1 , 0 , -1 , "3" +DATA 4 , 0 , 0 , .4 , "z" +DATA 5 , 0 , 0 , -.4 , " " +DATA 6 , 1 , 0 , .6 , " 3" +DATA 7 , 1 , 0 , -.6 , " z" +DATA 8 , 1 , 0 , 254 , "3 " +DATA 9 , 1 , 0 , 255 , "z " +DATA 10 , 1 , 0 , 256 , " 3 " +DATA 11 , 1 , 0 , 32000 , " z " +DATA 12 , 0 , 0 , -.227229 , " LLLL" +DATA 13 , 0 , 0 , -.239157 , " '' " +DATA 14 , 0 , 0 , -.213586 , " oo " +DATA 15 , 0 , 0 , .274675 , " 00 " +DATA 16 , 0 , 0 , .169766 , " \\\\ " +DATA 17 , 0 , 0 , .318766 , " lllll " +DATA 18 , 0 , 0 , 2.06658E-2 , " uuuu " +DATA 19 , 0 , 0 , .188257 , " a " +DATA 20 , 0 , 0 , -.277537 , " " +DATA 21 , 0 , 0 , -.481303 , " hh " +DATA 22 , 0 , 0 , .43556 , " h " +DATA 23 , 0 , 0 , -.210971 , " )" +DATA 24 , 0 , 0 , -.455216 , " 5 " +DATA 25 , 1 , 0 , -110.907 , " 2 " +DATA 26 , 1 , 0 , 105.632 , " - " +DATA 27 , 1 , 0 , -114.341 , "dd " +DATA 28 , 1 , 0 , 109.706 , " tttt " +DATA 29 , 1 , 0 , 109.198 , " :::: " +DATA 30 , 1 , 0 , 85.8773 , " ___ " +DATA 31 , 1 , 0 , -58.3548 , " " +DATA 32 , 1 , 0 , 29.6397 , " " +DATA 33 , 1 , 0 , -108.36 , " _____ " +DATA 34 , 1 , 0 , -46.5199 , " S " +DATA 35 , 1 , 0 , 112.521 , " FFFF " +DATA 36 , 1 , 0 , 45.4151 , " kkk" +DATA 37 , 1 , 0 , 101.129 , " NNNN " +DATA 38 , 1 , 0 , 65.0473 , " mmmm " +DATA 39 , 1 , 0 , 48.4012 , " ,,,,, " +DATA 40 , 1 , 0 , 122.294 , "OO " +DATA 41 , 1 , 0 , -56.1094 , " HHHH " +DATA 42 , 1 , 0 , -121.087 , " < " +DATA 43 , 1 , 0 , -123.517 , " j " +DATA 44 , 1 , 0 , -97.6301 , " yyyy " +DATA 45 , 1 , 0 , -64.0001 , " +++ " +DATA 46 , 1 , 0 , -25.6888 , "o " +DATA 47 , 1 , 0 , 14.8006 , " ((" +DATA 48 , 1 , 0 , -61.0877 , " uu " +DATA 49 , 1 , 0 , -66.6381 , " 00 " +DATA 50 , 1 , 0 , -5476.5 , " HH " +DATA 51 , 1 , 0 , -21210.3 , " " +DATA 52 , 1 , 0 , -28757.2 , " G " +DATA 53 , 1 , 0 , -28732.2 , " {{{{ " +DATA 54 , 1 , 0 , 12730.3 , " ]]] " +DATA 55 , 1 , 0 , -1830.69 , "CCC" +DATA 56 , 1 , 0 , 5486.39 , " 44 " +DATA 57 , 1 , 0 , 22405.9 , "^^ " +DATA 58 , 1 , 0 , 30809.8 , " QQ " +DATA 59 , 1 , 0 , -28930.6 , " FFFF " +DATA 60 , 1 , 0 , -6014.53 , " n " +DATA 61 , 1 , 0 , 17414.6 , " hh " +DATA 62 , 1 , 0 , -10538.3 , "555 " +DATA 63 , 1 , 0 , -17536.3 , " YYYY " +DATA 64 , 1 , 0 , -8856.62 , " w " +DATA 65 , 1 , 0 , -5140.12 , "MMMM " +DATA 66 , 1 , 0 , -8595.31 , " JJJJ " +DATA 67 , 1 , 0 , -3382.87 , " %% " +DATA 68 , 1 , 0 , -5002.07 , " * " +DATA 69 , 1 , 0 , -5800.72 , " @@@ " +DATA 70 , 1 , 0 , 29686.4 , "I " +DATA 71 , 1 , 0 , 2571. , " ss " +DATA 72 , 1 , 0 , 31091. , " f " +DATA 73 , 1 , 0 , 14819. , " D " +DATA 74 , 1 , 0 , 3790.9 , "### " +DATA 75 , 1 , 0 , -4.2981E+9 , " ' " +DATA 76 , 1 , 0 , -7.05453E+8 , " dd " +DATA 77 , 1 , 0 , -3.10179E+9 , " TT " +DATA 78 , 1 , 0 , -4.86159E+9 , " vvv " +DATA 79 , 1 , 0 , -8.62908E+8 , " X " +DATA 80 , 1 , 0 , -3.4101E+9 , " % " +DATA 81 , 1 , 0 , 3.3889E+9 , " " +DATA 82 , 1 , 0 , 2.49826E+9 , " 5555 " +DATA 83 , 1 , 0 , 2.3491E+9 , "FFFF " +DATA 84 , 1 , 0 , 1.94745E+8 , " %% " +DATA 85 , 1 , 0 , 2.02475E+9 , " " +DATA 86 , 1 , 0 , -2.26748E+9 , " ~~~~ " +DATA 87 , 1 , 0 , -2.10587E+9 , " || " +DATA 88 , 1 , 0 , 4.23585E+9 , " SSS " +DATA 89 , 1 , 0 , -2.66524E+9 , " 6666 " +DATA 90 , 1 , 0 , 4.01052E+9 , " ww " +DATA 91 , 1 , 0 , -4.87912E+9 , " 1111 " +DATA 92 , 1 , 0 , 1.77556E+9 , " K " +DATA 93 , 1 , 0 , 2.87705E+8 , " ttttt " +DATA 94 , 1 , 0 , 1.99977E+8 , " OOOOO " +DATA 95 , 1 , 0 , -3.39941E+9 , " E " +DATA 96 , 1 , 0 , -3.49119E+9 , " PPPPP " +DATA 97 , 1 , 0 , -2.86324E+9 , " == " +DATA 98 , 1 , 0 , 4.20418E+9 , " VVVV " +DATA 99 , 1 , 0 , -3.1518E+9 , " c " +DATA 100 , 1 , 0 , 4.60615E+9 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ERROR_X_A_N.OUT b/NBS2/F_ERROR_X_A_N.OUT new file mode 100644 index 0000000..047a8cd --- /dev/null +++ b/NBS2/F_ERROR_X_A_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 A$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 X= 1 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 A$=[z] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 A$=[ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 X= .6 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 A$=[ LLLL] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 A$=[ '' ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 A$=[ oo ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 A$=[ \\\\ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 A$=[ lllll ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 A$=[ uuuu ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 A$=[ a ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 A$=[ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 A$=[ hh ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 A$=[ h ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 A$=[ )] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 A$=[ 5 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 A$=[ 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 A$=[ 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 A$=[ 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 A$=[ 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 A$=[ + yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ERROR_X_A_N.dif b/NBS2/F_ERROR_X_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ERROR_X_A_N.run b/NBS2/F_ERROR_X_A_N.run new file mode 100644 index 0000000..f6057e5 --- /dev/null +++ b/NBS2/F_ERROR_X_A_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 A$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 X= 1 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 A$=[3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 A$=[z] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 A$=[ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 X= .6 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 A$=[ LLLL] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 A$=[ '' ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 A$=[ oo ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 A$=[ \\\\ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 A$=[ lllll ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 A$=[ uuuu ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 A$=[ a ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 A$=[ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 A$=[ hh ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 A$=[ h ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 A$=[ )] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 A$=[ 5 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 A$=[ 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 A$=[ 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 A$=[ 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 A$=[ 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 A$=[ + yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ERROR_X_N.80 b/NBS2/F_ERROR_X_N.80 new file mode 100644 index 0000000..51f3bd8 --- /dev/null +++ b/NBS2/F_ERROR_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 X= 1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 X= .6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ERROR_X_N.BAS b/NBS2/F_ERROR_X_N.BAS new file mode 100644 index 0000000..43e6657 --- /dev/null +++ b/NBS2/F_ERROR_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:21 +REM FILENAME: F_ERROR_X_N.BAS +REM SYNTAX: N = ERROR( X ) +REM UNIQUEID: F_ERROR_X_N +REM FUNCTION: ERROR +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ERROR( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 1 , 0 , 1 +DATA 3 , 1 , 0 , -1 +DATA 4 , 0 , 0 , .4 +DATA 5 , 0 , 0 , -.4 +DATA 6 , 1 , 0 , .6 +DATA 7 , 1 , 0 , -.6 +DATA 8 , 1 , 0 , 254 +DATA 9 , 1 , 0 , 255 +DATA 10 , 1 , 0 , 256 +DATA 11 , 1 , 0 , 32000 +DATA 12 , 0 , 0 , -.227229 +DATA 13 , 0 , 0 , -.239157 +DATA 14 , 0 , 0 , -.213586 +DATA 15 , 0 , 0 , .274675 +DATA 16 , 0 , 0 , .169766 +DATA 17 , 0 , 0 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 +DATA 20 , 0 , 0 , -.277537 +DATA 21 , 0 , 0 , -.481303 +DATA 22 , 0 , 0 , .43556 +DATA 23 , 0 , 0 , -.210971 +DATA 24 , 0 , 0 , -.455216 +DATA 25 , 1 , 0 , -110.907 +DATA 26 , 1 , 0 , 105.632 +DATA 27 , 1 , 0 , -114.341 +DATA 28 , 1 , 0 , 109.706 +DATA 29 , 1 , 0 , 109.198 +DATA 30 , 1 , 0 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 +DATA 32 , 1 , 0 , 29.6397 +DATA 33 , 1 , 0 , -108.36 +DATA 34 , 1 , 0 , -46.5199 +DATA 35 , 1 , 0 , 112.521 +DATA 36 , 1 , 0 , 45.4151 +DATA 37 , 1 , 0 , 101.129 +DATA 38 , 1 , 0 , 65.0473 +DATA 39 , 1 , 0 , 48.4012 +DATA 40 , 1 , 0 , 122.294 +DATA 41 , 1 , 0 , -56.1094 +DATA 42 , 1 , 0 , -121.087 +DATA 43 , 1 , 0 , -123.517 +DATA 44 , 1 , 0 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 +DATA 46 , 1 , 0 , -25.6888 +DATA 47 , 1 , 0 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 +DATA 54 , 1 , 0 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 +DATA 56 , 1 , 0 , 5486.39 +DATA 57 , 1 , 0 , 22405.9 +DATA 58 , 1 , 0 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 +DATA 61 , 1 , 0 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 +DATA 70 , 1 , 0 , 29686.4 +DATA 71 , 1 , 0 , 2571. +DATA 72 , 1 , 0 , 31091. +DATA 73 , 1 , 0 , 14819. +DATA 74 , 1 , 0 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 +DATA 84 , 1 , 0 , 1.94745E+8 +DATA 85 , 1 , 0 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 1 , 0 , 1.77556E+9 +DATA 93 , 1 , 0 , 2.87705E+8 +DATA 94 , 1 , 0 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ERROR_X_N.OUT b/NBS2/F_ERROR_X_N.OUT new file mode 100644 index 0000000..42dcce9 --- /dev/null +++ b/NBS2/F_ERROR_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 X= 1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 X= .6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ERROR_X_N.dif b/NBS2/F_ERROR_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ERROR_X_N.run b/NBS2/F_ERROR_X_N.run new file mode 100644 index 0000000..51f3bd8 --- /dev/null +++ b/NBS2/F_ERROR_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 X= 1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 X= .6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 X= 29.6397 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 X= 14.8006 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_EXP_X_N.80 b/NBS2/F_EXP_X_N.80 new file mode 100644 index 0000000..d1e96de --- /dev/null +++ b/NBS2/F_EXP_X_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 2.71828 X= 1 + F= 0 N= 2.71828 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= .367879 X=-1 + F= 0 N= .367879 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.49182 X= .4 + F= 0 N= 1.49182 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .67032 X=-.4 + F= 0 N= .67032 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.82212 X= .6 + F= 0 N= 1.82212 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .548812 X=-.6 + F= 0 N= .548812 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.04549E+110 X= 254 + F= 0 N= 2.04549E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 5.56023E+110 X= 255 + F= 0 N= 5.56023E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1.51143E+111 X= 256 + F= 0 N= 1.51143E+111 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .796738 X=-.227229 + F= 0 N= .796738 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .787291 X=-.239157 + F= 0 N= .787291 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .807683 X=-.213586 + F= 0 N= .807683 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.3161 X= .274675 + F= 0 N= 1.3161 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.18503 X= .169766 + F= 0 N= 1.18503 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.37543 X= .318766 + F= 0 N= 1.37543 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.02088 X= 2.06658E-2 + F= 0 N= 1.02088 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.20714 X= .188257 + F= 0 N= 1.20714 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .757648 X=-.277537 + F= 0 N= .757648 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .617978 X=-.481303 + F= 0 N= .617978 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.54583 X= .43556 + F= 0 N= 1.54583 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .809798 X=-.210971 + F= 0 N= .809798 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .634311 X=-.455216 + F= 0 N= .634311 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 6.8187E-49 X=-110.907 + F= 0 N= 6.8187E-49 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 7.50576E+45 X= 105.632 + F= 0 N= 7.50576E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.19955E-50 X=-114.341 + F= 0 N= 2.19955E-50 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.41276E+47 X= 109.706 + F= 0 N= 4.41276E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.65515E+47 X= 109.198 + F= 0 N= 2.65515E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.97714E+37 X= 85.8773 + F= 0 N= 1.97714E+37 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4.53766E-26 X=-58.3548 + F= 0 N= 4.53766E-26 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 7.45346E+12 X= 29.6397 + F= 0 N= 7.45346E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 8.70663E-48 X=-108.36 + F= 0 N= 8.70663E-48 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 6.26129E-21 X=-46.5199 + F= 0 N= 6.26129E-21 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 7.3663E+48 X= 112.521 + F= 0 N= 7.3663E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.29087E+19 X= 45.4151 + F= 0 N= 5.29087E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 8.31317E+43 X= 101.129 + F= 0 N= 8.31317E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.77698E+28 X= 65.0473 + F= 0 N= 1.77698E+28 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.04803E+21 X= 48.4012 + F= 0 N= 1.04803E+21 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.29303E+53 X= 122.294 + F= 0 N= 1.29303E+53 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 4.28546E-25 X=-56.1094 + F= 0 N= 4.28546E-25 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 2.58574E-53 X=-121.087 + F= 0 N= 2.58574E-53 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.2764E-54 X=-123.517 + F= 0 N= 2.2764E-54 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 3.97911E-43 X=-97.6301 + F= 0 N= 3.97911E-43 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 1.60365E-28 X=-64.0001 + F= 0 N= 1.60365E-28 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 6.97422E-12 X=-25.6888 + F= 0 N= 6.97422E-12 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.67805E+6 X= 14.8006 + F= 0 N= 2.67805E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.95086E-27 X=-61.0877 + F= 0 N= 2.95086E-27 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.14668E-29 X=-66.6381 + F= 0 N= 1.14668E-29 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 0 X=-5476.5 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 0 X=-21210.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 0 X=-28757.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 0 X=-28732.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 0 X=-1830.69 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 0 X=-28930.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 0 X=-6014.53 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 0 X=-10538.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 0 X=-17536.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 0 X=-8856.62 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 0 X=-5140.12 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 0 X=-8595.31 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 0 X=-3382.87 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 0 X=-5002.07 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 0 X=-5800.72 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_EXP_X_N.BAS b/NBS2/F_EXP_X_N.BAS new file mode 100644 index 0000000..ac0ac4a --- /dev/null +++ b/NBS2/F_EXP_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:22 +REM FILENAME: F_EXP_X_N.BAS +REM SYNTAX: N = EXP( X ) +REM UNIQUEID: F_EXP_X_N +REM FUNCTION: EXP +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = EXP( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 1 , 0 +DATA 2 , 0 , 2.71828 , 1 +DATA 3 , 0 , .367879 , -1 +DATA 4 , 0 , 1.49182 , .4 +DATA 5 , 0 , .67032 , -.4 +DATA 6 , 0 , 1.82212 , .6 +DATA 7 , 0 , .548812 , -.6 +DATA 8 , 0 , 2.04549E+110 , 254 +DATA 9 , 0 , 5.56023E+110 , 255 +DATA 10 , 0 , 1.51143E+111 , 256 +DATA 11 , 1 , 1.79769E+308 , 32000 +DATA 12 , 0 , .796738 , -.227229 +DATA 13 , 0 , .787291 , -.239157 +DATA 14 , 0 , .807683 , -.213586 +DATA 15 , 0 , 1.3161 , .274675 +DATA 16 , 0 , 1.18503 , .169766 +DATA 17 , 0 , 1.37543 , .318766 +DATA 18 , 0 , 1.02088 , 2.06658E-2 +DATA 19 , 0 , 1.20714 , .188257 +DATA 20 , 0 , .757648 , -.277537 +DATA 21 , 0 , .617978 , -.481303 +DATA 22 , 0 , 1.54583 , .43556 +DATA 23 , 0 , .809798 , -.210971 +DATA 24 , 0 , .634311 , -.455216 +DATA 25 , 0 , 6.8187E-49 , -110.907 +DATA 26 , 0 , 7.50576E+45 , 105.632 +DATA 27 , 0 , 2.19955E-50 , -114.341 +DATA 28 , 0 , 4.41276E+47 , 109.706 +DATA 29 , 0 , 2.65515E+47 , 109.198 +DATA 30 , 0 , 1.97714E+37 , 85.8773 +DATA 31 , 0 , 4.53766E-26 , -58.3548 +DATA 32 , 0 , 7.45346E+12 , 29.6397 +DATA 33 , 0 , 8.70663E-48 , -108.36 +DATA 34 , 0 , 6.26129E-21 , -46.5199 +DATA 35 , 0 , 7.3663E+48 , 112.521 +DATA 36 , 0 , 5.29087E+19 , 45.4151 +DATA 37 , 0 , 8.31317E+43 , 101.129 +DATA 38 , 0 , 1.77698E+28 , 65.0473 +DATA 39 , 0 , 1.04803E+21 , 48.4012 +DATA 40 , 0 , 1.29303E+53 , 122.294 +DATA 41 , 0 , 4.28546E-25 , -56.1094 +DATA 42 , 0 , 2.58574E-53 , -121.087 +DATA 43 , 0 , 2.2764E-54 , -123.517 +DATA 44 , 0 , 3.97911E-43 , -97.6301 +DATA 45 , 0 , 1.60365E-28 , -64.0001 +DATA 46 , 0 , 6.97422E-12 , -25.6888 +DATA 47 , 0 , 2.67805E+6 , 14.8006 +DATA 48 , 0 , 2.95086E-27 , -61.0877 +DATA 49 , 0 , 1.14668E-29 , -66.6381 +DATA 50 , 0 , 0 , -5476.5 +DATA 51 , 0 , 0 , -21210.3 +DATA 52 , 0 , 0 , -28757.2 +DATA 53 , 0 , 0 , -28732.2 +DATA 54 , 1 , 1.79769E+308 , 12730.3 +DATA 55 , 0 , 0 , -1830.69 +DATA 56 , 1 , 1.79769E+308 , 5486.39 +DATA 57 , 1 , 1.79769E+308 , 22405.9 +DATA 58 , 1 , 1.79769E+308 , 30809.8 +DATA 59 , 0 , 0 , -28930.6 +DATA 60 , 0 , 0 , -6014.53 +DATA 61 , 1 , 1.79769E+308 , 17414.6 +DATA 62 , 0 , 0 , -10538.3 +DATA 63 , 0 , 0 , -17536.3 +DATA 64 , 0 , 0 , -8856.62 +DATA 65 , 0 , 0 , -5140.12 +DATA 66 , 0 , 0 , -8595.31 +DATA 67 , 0 , 0 , -3382.87 +DATA 68 , 0 , 0 , -5002.07 +DATA 69 , 0 , 0 , -5800.72 +DATA 70 , 1 , 1.79769E+308 , 29686.4 +DATA 71 , 1 , 1.79769E+308 , 2571. +DATA 72 , 1 , 1.79769E+308 , 31091. +DATA 73 , 1 , 1.79769E+308 , 14819. +DATA 74 , 1 , 1.79769E+308 , 3790.9 +DATA 75 , 0 , 0 , -4.2981E+9 +DATA 76 , 0 , 0 , -7.05453E+8 +DATA 77 , 0 , 0 , -3.10179E+9 +DATA 78 , 0 , 0 , -4.86159E+9 +DATA 79 , 0 , 0 , -8.62908E+8 +DATA 80 , 0 , 0 , -3.4101E+9 +DATA 81 , 1 , 1.79769E+308 , 3.3889E+9 +DATA 82 , 1 , 1.79769E+308 , 2.49826E+9 +DATA 83 , 1 , 1.79769E+308 , 2.3491E+9 +DATA 84 , 1 , 1.79769E+308 , 1.94745E+8 +DATA 85 , 1 , 1.79769E+308 , 2.02475E+9 +DATA 86 , 0 , 0 , -2.26748E+9 +DATA 87 , 0 , 0 , -2.10587E+9 +DATA 88 , 1 , 1.79769E+308 , 4.23585E+9 +DATA 89 , 0 , 0 , -2.66524E+9 +DATA 90 , 1 , 1.79769E+308 , 4.01052E+9 +DATA 91 , 0 , 0 , -4.87912E+9 +DATA 92 , 1 , 1.79769E+308 , 1.77556E+9 +DATA 93 , 1 , 1.79769E+308 , 2.87705E+8 +DATA 94 , 1 , 1.79769E+308 , 1.99977E+8 +DATA 95 , 0 , 0 , -3.39941E+9 +DATA 96 , 0 , 0 , -3.49119E+9 +DATA 97 , 0 , 0 , -2.86324E+9 +DATA 98 , 1 , 1.79769E+308 , 4.20418E+9 +DATA 99 , 0 , 0 , -3.1518E+9 +DATA 100 , 1 , 1.79769E+308 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_EXP_X_N.OUT b/NBS2/F_EXP_X_N.OUT new file mode 100644 index 0000000..80a0a3d --- /dev/null +++ b/NBS2/F_EXP_X_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 2.71828 X= 1 + F= 0 N= 2.71828 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= .367879 X=-1 + F= 0 N= .367879 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.49182 X= .4 + F= 0 N= 1.49182 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .67032 X=-.4 + F= 0 N= .67032 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.82212 X= .6 + F= 0 N= 1.82212 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .548812 X=-.6 + F= 0 N= .548812 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.04549E+110 X= 254 + F= 0 N= 2.04549E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 5.56023E+110 X= 255 + F= 0 N= 5.56023E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1.51143E+111 X= 256 + F= 0 N= 1.51143E+111 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .796738 X=-.227229 + F= 0 N= .796738 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .787291 X=-.239157 + F= 0 N= .787291 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .807683 X=-.213586 + F= 0 N= .807683 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.3161 X= .274675 + F= 0 N= 1.3161 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.18503 X= .169766 + F= 0 N= 1.18503 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.37543 X= .318766 + F= 0 N= 1.37543 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.02088 X= 2.06658E-2 + F= 0 N= 1.02088 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.20714 X= .188257 + F= 0 N= 1.20714 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .757648 X=-.277537 + F= 0 N= .757648 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .617978 X=-.481303 + F= 0 N= .617978 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.54583 X= .43556 + F= 0 N= 1.54583 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .809798 X=-.210971 + F= 0 N= .809798 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .634311 X=-.455216 + F= 0 N= .634311 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 6.8187E-49 X=-110.907 + F= 0 N= 6.8187E-49 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 7.50576E+45 X= 105.632 + F= 0 N= 7.50576E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.19955E-50 X=-114.341 + F= 0 N= 2.19955E-50 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.41276E+47 X= 109.706 + F= 0 N= 4.41276E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.65515E+47 X= 109.198 + F= 0 N= 2.65515E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.97714E+37 X= 85.8773 + F= 0 N= 1.97714E+37 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4.53766E-26 X=-58.3548 + F= 0 N= 4.53766E-26 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 7.45346E+12 X= 29.6397 + F= 0 N= 7.45346E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 8.70663E-48 X=-108.36 + F= 0 N= 8.70663E-48 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 6.26129E-21 X=-46.5199 + F= 0 N= 6.26129E-21 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 7.3663E+48 X= 112.521 + F= 0 N= 7.3663E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.29087E+19 X= 45.4151 + F= 0 N= 5.29087E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 8.31317E+43 X= 101.129 + F= 0 N= 8.31317E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.77698E+28 X= 65.0473 + F= 0 N= 1.77698E+28 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.04803E+21 X= 48.4012 + F= 0 N= 1.04803E+21 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.29303E+53 X= 122.294 + F= 0 N= 1.29303E+53 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 4.28546E-25 X=-56.1094 + F= 0 N= 4.28546E-25 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 2.58574E-53 X=-121.087 + F= 0 N= 2.58574E-53 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.2764E-54 X=-123.517 + F= 0 N= 2.2764E-54 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 3.97911E-43 X=-97.6301 + F= 0 N= 3.97911E-43 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 1.60365E-28 X=-64.0001 + F= 0 N= 1.60365E-28 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 6.97422E-12 X=-25.6888 + F= 0 N= 6.97422E-12 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.67805E+6 X= 14.8006 + F= 0 N= 2.67805E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.95086E-27 X=-61.0877 + F= 0 N= 2.95086E-27 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.14668E-29 X=-66.6381 + F= 0 N= 1.14668E-29 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 0 X=-5476.5 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 0 X=-21210.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 0 X=-28757.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 0 X=-28732.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 0 X=-1830.69 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 0 X=-28930.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 0 X=-6014.53 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 0 X=-10538.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 0 X=-17536.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 0 X=-8856.62 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 0 X=-5140.12 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 0 X=-8595.31 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 0 X=-3382.87 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 0 X=-5002.07 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 0 X=-5800.72 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_EXP_X_N.dif b/NBS2/F_EXP_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_EXP_X_N.run b/NBS2/F_EXP_X_N.run new file mode 100644 index 0000000..d1e96de --- /dev/null +++ b/NBS2/F_EXP_X_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 2.71828 X= 1 + F= 0 N= 2.71828 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= .367879 X=-1 + F= 0 N= .367879 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.49182 X= .4 + F= 0 N= 1.49182 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= .67032 X=-.4 + F= 0 N= .67032 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.82212 X= .6 + F= 0 N= 1.82212 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= .548812 X=-.6 + F= 0 N= .548812 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.04549E+110 X= 254 + F= 0 N= 2.04549E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 5.56023E+110 X= 255 + F= 0 N= 5.56023E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1.51143E+111 X= 256 + F= 0 N= 1.51143E+111 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= .796738 X=-.227229 + F= 0 N= .796738 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= .787291 X=-.239157 + F= 0 N= .787291 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= .807683 X=-.213586 + F= 0 N= .807683 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.3161 X= .274675 + F= 0 N= 1.3161 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.18503 X= .169766 + F= 0 N= 1.18503 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.37543 X= .318766 + F= 0 N= 1.37543 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.02088 X= 2.06658E-2 + F= 0 N= 1.02088 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.20714 X= .188257 + F= 0 N= 1.20714 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= .757648 X=-.277537 + F= 0 N= .757648 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= .617978 X=-.481303 + F= 0 N= .617978 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.54583 X= .43556 + F= 0 N= 1.54583 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= .809798 X=-.210971 + F= 0 N= .809798 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= .634311 X=-.455216 + F= 0 N= .634311 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 6.8187E-49 X=-110.907 + F= 0 N= 6.8187E-49 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 7.50576E+45 X= 105.632 + F= 0 N= 7.50576E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 2.19955E-50 X=-114.341 + F= 0 N= 2.19955E-50 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.41276E+47 X= 109.706 + F= 0 N= 4.41276E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.65515E+47 X= 109.198 + F= 0 N= 2.65515E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.97714E+37 X= 85.8773 + F= 0 N= 1.97714E+37 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4.53766E-26 X=-58.3548 + F= 0 N= 4.53766E-26 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 7.45346E+12 X= 29.6397 + F= 0 N= 7.45346E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 8.70663E-48 X=-108.36 + F= 0 N= 8.70663E-48 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 6.26129E-21 X=-46.5199 + F= 0 N= 6.26129E-21 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 7.3663E+48 X= 112.521 + F= 0 N= 7.3663E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.29087E+19 X= 45.4151 + F= 0 N= 5.29087E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 8.31317E+43 X= 101.129 + F= 0 N= 8.31317E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.77698E+28 X= 65.0473 + F= 0 N= 1.77698E+28 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.04803E+21 X= 48.4012 + F= 0 N= 1.04803E+21 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1.29303E+53 X= 122.294 + F= 0 N= 1.29303E+53 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 4.28546E-25 X=-56.1094 + F= 0 N= 4.28546E-25 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 2.58574E-53 X=-121.087 + F= 0 N= 2.58574E-53 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 2.2764E-54 X=-123.517 + F= 0 N= 2.2764E-54 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 3.97911E-43 X=-97.6301 + F= 0 N= 3.97911E-43 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 1.60365E-28 X=-64.0001 + F= 0 N= 1.60365E-28 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 6.97422E-12 X=-25.6888 + F= 0 N= 6.97422E-12 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.67805E+6 X= 14.8006 + F= 0 N= 2.67805E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 2.95086E-27 X=-61.0877 + F= 0 N= 2.95086E-27 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1.14668E-29 X=-66.6381 + F= 0 N= 1.14668E-29 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 0 X=-5476.5 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 0 X=-21210.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 0 X=-28757.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 0 X=-28732.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 0 X=-1830.69 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 0 X=-28930.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 0 X=-6014.53 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 0 X=-10538.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 0 X=-17536.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 0 X=-8856.62 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 0 X=-5140.12 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 0 X=-8595.31 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 0 X=-3382.87 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 0 X=-5002.07 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 0 X=-5800.72 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FIX_X_N.80 b/NBS2/F_FIX_X_N.80 new file mode 100644 index 0000000..9ad24c2 --- /dev/null +++ b/NBS2/F_FIX_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FIX_X_N.BAS b/NBS2/F_FIX_X_N.BAS new file mode 100644 index 0000000..ae69c2f --- /dev/null +++ b/NBS2/F_FIX_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:22 +REM FILENAME: F_FIX_X_N.BAS +REM SYNTAX: N = FIX( X ) +REM UNIQUEID: F_FIX_X_N +REM FUNCTION: FIX +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = FIX( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , 0 , .4 +DATA 5 , 0 , 0 , -.4 +DATA 6 , 0 , 1 , .6 +DATA 7 , 0 , -1 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , 0 , -.227229 +DATA 13 , 0 , 0 , -.239157 +DATA 14 , 0 , 0 , -.213586 +DATA 15 , 0 , 0 , .274675 +DATA 16 , 0 , 0 , .169766 +DATA 17 , 0 , 0 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 +DATA 20 , 0 , 0 , -.277537 +DATA 21 , 0 , 0 , -.481303 +DATA 22 , 0 , 0 , .43556 +DATA 23 , 0 , 0 , -.210971 +DATA 24 , 0 , 0 , -.455216 +DATA 25 , 0 , -111 , -110.907 +DATA 26 , 0 , 106 , 105.632 +DATA 27 , 0 , -114 , -114.341 +DATA 28 , 0 , 110 , 109.706 +DATA 29 , 0 , 109 , 109.198 +DATA 30 , 0 , 86 , 85.8773 +DATA 31 , 0 , -58 , -58.3548 +DATA 32 , 0 , 30 , 29.6397 +DATA 33 , 0 , -108 , -108.36 +DATA 34 , 0 , -47 , -46.5199 +DATA 35 , 0 , 113 , 112.521 +DATA 36 , 0 , 45 , 45.4151 +DATA 37 , 0 , 101 , 101.129 +DATA 38 , 0 , 65 , 65.0473 +DATA 39 , 0 , 48 , 48.4012 +DATA 40 , 0 , 122 , 122.294 +DATA 41 , 0 , -56 , -56.1094 +DATA 42 , 0 , -121 , -121.087 +DATA 43 , 0 , -124 , -123.517 +DATA 44 , 0 , -98 , -97.6301 +DATA 45 , 0 , -64 , -64.0001 +DATA 46 , 0 , -26 , -25.6888 +DATA 47 , 0 , 15 , 14.8006 +DATA 48 , 0 , -61 , -61.0877 +DATA 49 , 0 , -67 , -66.6381 +DATA 50 , 0 , -5476 , -5476.5 +DATA 51 , 0 , -21210 , -21210.3 +DATA 52 , 0 , -28757 , -28757.2 +DATA 53 , 0 , -28732 , -28732.2 +DATA 54 , 0 , 12730 , 12730.3 +DATA 55 , 0 , -1831 , -1830.69 +DATA 56 , 0 , 5486 , 5486.39 +DATA 57 , 0 , 22406 , 22405.9 +DATA 58 , 0 , 30810 , 30809.8 +DATA 59 , 0 , -28931 , -28930.6 +DATA 60 , 0 , -6015 , -6014.53 +DATA 61 , 0 , 17415 , 17414.6 +DATA 62 , 0 , -10538 , -10538.3 +DATA 63 , 0 , -17536 , -17536.3 +DATA 64 , 0 , -8857 , -8856.62 +DATA 65 , 0 , -5140 , -5140.12 +DATA 66 , 0 , -8595 , -8595.31 +DATA 67 , 0 , -3383 , -3382.87 +DATA 68 , 0 , -5002 , -5002.07 +DATA 69 , 0 , -5801 , -5800.72 +DATA 70 , 0 , 29686 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3791 , 3790.9 +DATA 75 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_FIX_X_N.OUT b/NBS2/F_FIX_X_N.OUT new file mode 100644 index 0000000..324ddd8 --- /dev/null +++ b/NBS2/F_FIX_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FIX_X_N.dif b/NBS2/F_FIX_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_FIX_X_N.run b/NBS2/F_FIX_X_N.run new file mode 100644 index 0000000..9ad24c2 --- /dev/null +++ b/NBS2/F_FIX_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 106 X= 105.632 + F= 0 N= 106 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 110 X= 109.706 + F= 0 N= 110 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 86 X= 85.8773 + F= 0 N= 86 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 30 X= 29.6397 + F= 0 N= 30 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 113 X= 112.521 + F= 0 N= 113 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 15 X= 14.8006 + F= 0 N= 15 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22406 X= 22405.9 + F= 0 N= 22406 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30810 X= 30809.8 + F= 0 N= 30810 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17415 X= 17414.6 + F= 0 N= 17415 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3791 X= 3790.9 + F= 0 N= 3791 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FP_X_N.80 b/NBS2/F_FP_X_N.80 new file mode 100644 index 0000000..b54db7c --- /dev/null +++ b/NBS2/F_FP_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 0 X= 32000 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.907 X=-110.907 + F= 0 N=-.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .632 X= 105.632 + F= 0 N= .632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.341 X=-114.341 + F= 0 N=-.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .706 X= 109.706 + F= 0 N= .706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .198 X= 109.198 + F= 0 N= .198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .8773 X= 85.8773 + F= 0 N= .8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.3548 X=-58.3548 + F= 0 N=-.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .6397 X= 29.6397 + F= 0 N= .6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-.36 X=-108.36 + F= 0 N=-.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.5199 X=-46.5199 + F= 0 N=-.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .521 X= 112.521 + F= 0 N= .521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .4151 X= 45.4151 + F= 0 N= .4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .129 X= 101.129 + F= 0 N= .129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .0473 X= 65.0473 + F= 0 N= .0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .4012 X= 48.4012 + F= 0 N= .4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .294 X= 122.294 + F= 0 N= .294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-.1094 X=-56.1094 + F= 0 N=-.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.087 X=-121.087 + F= 0 N=-.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.517 X=-123.517 + F= 0 N=-.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.6301 X=-97.6301 + F= 0 N=-.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.0001 X=-64.0001 + F= 0 N=-.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.6888 X=-25.6888 + F= 0 N=-.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .8006 X= 14.8006 + F= 0 N= .8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.0877 X=-61.0877 + F= 0 N=-.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.6381 X=-66.6381 + F= 0 N=-.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.5 X=-5476.5 + F= 0 N=-.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.3 X=-21210.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-.2 X=-28757.2 + F= 0 N=-.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-.2 X=-28732.2 + F= 0 N=-.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .3 X= 12730.3 + F= 0 N= .3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.69 X=-1830.69 + F= 0 N=-.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .39 X= 5486.39 + F= 0 N= .39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .9 X= 22405.9 + F= 0 N= .9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .8 X= 30809.8 + F= 0 N= .8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.6 X=-28930.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-.53 X=-6014.53 + F= 0 N=-.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .6 X= 17414.6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.3 X=-10538.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-.3 X=-17536.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.62 X=-8856.62 + F= 0 N=-.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.12 X=-5140.12 + F= 0 N=-.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-.31 X=-8595.31 + F= 0 N=-.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.87 X=-3382.87 + F= 0 N=-.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.07 X=-5002.07 + F= 0 N=-.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.72 X=-5800.72 + F= 0 N=-.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= .4 X= 29686.4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 0 X= 31091 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 0 X= 14819 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .9 X= 3790.9 + F= 0 N= .9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 0 X= 3.3889E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 0 X= 2.49826E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 0 X= 2.3491E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 0 X= 1.94745E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 0 X= 2.02475E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 0 X= 4.23585E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1. +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 0 X= 1.77556E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 0 X= 2.87705E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 0 X= 1.99977E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 0 X= 4.20418E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 0 X= 4.60615E+9 + F= 0 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FP_X_N.BAS b/NBS2/F_FP_X_N.BAS new file mode 100644 index 0000000..8ebe165 --- /dev/null +++ b/NBS2/F_FP_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:22 +REM FILENAME: F_FP_X_N.BAS +REM SYNTAX: N = FP( X ) +REM UNIQUEID: F_FP_X_N +REM FUNCTION: FP +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = FP( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 0 , 1 +DATA 3 , 0 , 0 , -1 +DATA 4 , 0 , .4 , .4 +DATA 5 , 0 , -.4 , -.4 +DATA 6 , 0 , .6 , .6 +DATA 7 , 0 , -.6 , -.6 +DATA 8 , 0 , 0 , 254 +DATA 9 , 0 , 0 , 255 +DATA 10 , 0 , 0 , 256 +DATA 11 , 0 , 0 , 32000 +DATA 12 , 0 , -.227229 , -.227229 +DATA 13 , 0 , -.239157 , -.239157 +DATA 14 , 0 , -.213586 , -.213586 +DATA 15 , 0 , .274675 , .274675 +DATA 16 , 0 , .169766 , .169766 +DATA 17 , 0 , .318766 , .318766 +DATA 18 , 0 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , .188257 , .188257 +DATA 20 , 0 , -.277537 , -.277537 +DATA 21 , 0 , -.481303 , -.481303 +DATA 22 , 0 , .43556 , .43556 +DATA 23 , 0 , -.210971 , -.210971 +DATA 24 , 0 , -.455216 , -.455216 +DATA 25 , 0 , -.907 , -110.907 +DATA 26 , 0 , .632 , 105.632 +DATA 27 , 0 , -.341 , -114.341 +DATA 28 , 0 , .706 , 109.706 +DATA 29 , 0 , .198 , 109.198 +DATA 30 , 0 , .8773 , 85.8773 +DATA 31 , 0 , -.3548 , -58.3548 +DATA 32 , 0 , .6397 , 29.6397 +DATA 33 , 0 , -.36 , -108.36 +DATA 34 , 0 , -.5199 , -46.5199 +DATA 35 , 0 , .521 , 112.521 +DATA 36 , 0 , .4151 , 45.4151 +DATA 37 , 0 , .129 , 101.129 +DATA 38 , 0 , .0473 , 65.0473 +DATA 39 , 0 , .4012 , 48.4012 +DATA 40 , 0 , .294 , 122.294 +DATA 41 , 0 , -.1094 , -56.1094 +DATA 42 , 0 , -.087 , -121.087 +DATA 43 , 0 , -.517 , -123.517 +DATA 44 , 0 , -.6301 , -97.6301 +DATA 45 , 0 , -.0001 , -64.0001 +DATA 46 , 0 , -.6888 , -25.6888 +DATA 47 , 0 , .8006 , 14.8006 +DATA 48 , 0 , -.0877 , -61.0877 +DATA 49 , 0 , -.6381 , -66.6381 +DATA 50 , 0 , -.5 , -5476.5 +DATA 51 , 0 , -.3 , -21210.3 +DATA 52 , 0 , -.2 , -28757.2 +DATA 53 , 0 , -.2 , -28732.2 +DATA 54 , 0 , .3 , 12730.3 +DATA 55 , 0 , -.69 , -1830.69 +DATA 56 , 0 , .39 , 5486.39 +DATA 57 , 0 , .9 , 22405.9 +DATA 58 , 0 , .8 , 30809.8 +DATA 59 , 0 , -.6 , -28930.6 +DATA 60 , 0 , -.53 , -6014.53 +DATA 61 , 0 , .6 , 17414.6 +DATA 62 , 0 , -.3 , -10538.3 +DATA 63 , 0 , -.3 , -17536.3 +DATA 64 , 0 , -.62 , -8856.62 +DATA 65 , 0 , -.12 , -5140.12 +DATA 66 , 0 , -.31 , -8595.31 +DATA 67 , 0 , -.87 , -3382.87 +DATA 68 , 0 , -.07 , -5002.07 +DATA 69 , 0 , -.72 , -5800.72 +DATA 70 , 0 , .4 , 29686.4 +DATA 71 , 0 , 0 , 2571. +DATA 72 , 0 , 0 , 31091. +DATA 73 , 0 , 0 , 14819. +DATA 74 , 0 , .9 , 3790.9 +DATA 75 , 0 , 0 , -4.2981E+9 +DATA 76 , 0 , 0 , -7.05453E+8 +DATA 77 , 0 , 0 , -3.10179E+9 +DATA 78 , 0 , 0 , -4.86159E+9 +DATA 79 , 0 , 0 , -8.62908E+8 +DATA 80 , 0 , 0 , -3.4101E+9 +DATA 81 , 0 , 0 , 3.3889E+9 +DATA 82 , 0 , 0 , 2.49826E+9 +DATA 83 , 0 , 0 , 2.3491E+9 +DATA 84 , 0 , 0 , 1.94745E+8 +DATA 85 , 0 , 0 , 2.02475E+9 +DATA 86 , 0 , 0 , -2.26748E+9 +DATA 87 , 0 , 0 , -2.10587E+9 +DATA 88 , 0 , 0 , 4.23585E+9 +DATA 89 , 0 , 0 , -2.66524E+9 +DATA 90 , 0 , 1. , 4.01052E+9 +DATA 91 , 0 , 0 , -4.87912E+9 +DATA 92 , 0 , 0 , 1.77556E+9 +DATA 93 , 0 , 0 , 2.87705E+8 +DATA 94 , 0 , 0 , 1.99977E+8 +DATA 95 , 0 , 0 , -3.39941E+9 +DATA 96 , 0 , 0 , -3.49119E+9 +DATA 97 , 0 , 0 , -2.86324E+9 +DATA 98 , 0 , 0 , 4.20418E+9 +DATA 99 , 0 , 0 , -3.1518E+9 +DATA 100 , 0 , 0 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_FP_X_N.OUT b/NBS2/F_FP_X_N.OUT new file mode 100644 index 0000000..31493f2 --- /dev/null +++ b/NBS2/F_FP_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 0 X= 32000 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.907 X=-110.907 + F= 0 N=-.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .632 X= 105.632 + F= 0 N= .632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.341 X=-114.341 + F= 0 N=-.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .706 X= 109.706 + F= 0 N= .706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .198 X= 109.198 + F= 0 N= .198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .8773 X= 85.8773 + F= 0 N= .8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.3548 X=-58.3548 + F= 0 N=-.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .6397 X= 29.6397 + F= 0 N= .6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-.36 X=-108.36 + F= 0 N=-.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.5199 X=-46.5199 + F= 0 N=-.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .521 X= 112.521 + F= 0 N= .521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .4151 X= 45.4151 + F= 0 N= .4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .129 X= 101.129 + F= 0 N= .129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .0473 X= 65.0473 + F= 0 N= .0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .4012 X= 48.4012 + F= 0 N= .4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .294 X= 122.294 + F= 0 N= .294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-.1094 X=-56.1094 + F= 0 N=-.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.087 X=-121.087 + F= 0 N=-.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.517 X=-123.517 + F= 0 N=-.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.6301 X=-97.6301 + F= 0 N=-.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.0001 X=-64.0001 + F= 0 N=-.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.6888 X=-25.6888 + F= 0 N=-.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .8006 X= 14.8006 + F= 0 N= .8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.0877 X=-61.0877 + F= 0 N=-.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.6381 X=-66.6381 + F= 0 N=-.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.5 X=-5476.5 + F= 0 N=-.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.3 X=-21210.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-.2 X=-28757.2 + F= 0 N=-.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-.2 X=-28732.2 + F= 0 N=-.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .3 X= 12730.3 + F= 0 N= .3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.69 X=-1830.69 + F= 0 N=-.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .39 X= 5486.39 + F= 0 N= .39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .9 X= 22405.9 + F= 0 N= .9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .8 X= 30809.8 + F= 0 N= .8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.6 X=-28930.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-.53 X=-6014.53 + F= 0 N=-.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .6 X= 17414.6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.3 X=-10538.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-.3 X=-17536.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.62 X=-8856.62 + F= 0 N=-.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.12 X=-5140.12 + F= 0 N=-.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-.31 X=-8595.31 + F= 0 N=-.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.87 X=-3382.87 + F= 0 N=-.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.07 X=-5002.07 + F= 0 N=-.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.72 X=-5800.72 + F= 0 N=-.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= .4 X= 29686.4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 0 X= 31091 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 0 X= 14819 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .9 X= 3790.9 + F= 0 N= .9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 0 X= 3.3889E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 0 X= 2.49826E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 0 X= 2.3491E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 0 X= 1.94745E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 0 X= 2.02475E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 0 X= 4.23585E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1. +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 0 X= 1.77556E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 0 X= 2.87705E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 0 X= 1.99977E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 0 X= 4.20418E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 0 X= 4.60615E+9 + F= 0 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FP_X_N.dif b/NBS2/F_FP_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_FP_X_N.run b/NBS2/F_FP_X_N.run new file mode 100644 index 0000000..b54db7c --- /dev/null +++ b/NBS2/F_FP_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 0 X= 32000 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-.907 X=-110.907 + F= 0 N=-.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= .632 X= 105.632 + F= 0 N= .632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.341 X=-114.341 + F= 0 N=-.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .706 X= 109.706 + F= 0 N= .706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .198 X= 109.198 + F= 0 N= .198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= .8773 X= 85.8773 + F= 0 N= .8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.3548 X=-58.3548 + F= 0 N=-.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .6397 X= 29.6397 + F= 0 N= .6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-.36 X=-108.36 + F= 0 N=-.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.5199 X=-46.5199 + F= 0 N=-.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= .521 X= 112.521 + F= 0 N= .521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .4151 X= 45.4151 + F= 0 N= .4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .129 X= 101.129 + F= 0 N= .129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .0473 X= 65.0473 + F= 0 N= .0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .4012 X= 48.4012 + F= 0 N= .4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .294 X= 122.294 + F= 0 N= .294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-.1094 X=-56.1094 + F= 0 N=-.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.087 X=-121.087 + F= 0 N=-.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-.517 X=-123.517 + F= 0 N=-.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.6301 X=-97.6301 + F= 0 N=-.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.0001 X=-64.0001 + F= 0 N=-.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.6888 X=-25.6888 + F= 0 N=-.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .8006 X= 14.8006 + F= 0 N= .8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-.0877 X=-61.0877 + F= 0 N=-.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.6381 X=-66.6381 + F= 0 N=-.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.5 X=-5476.5 + F= 0 N=-.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-.3 X=-21210.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-.2 X=-28757.2 + F= 0 N=-.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-.2 X=-28732.2 + F= 0 N=-.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .3 X= 12730.3 + F= 0 N= .3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.69 X=-1830.69 + F= 0 N=-.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .39 X= 5486.39 + F= 0 N= .39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= .9 X= 22405.9 + F= 0 N= .9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .8 X= 30809.8 + F= 0 N= .8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.6 X=-28930.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-.53 X=-6014.53 + F= 0 N=-.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .6 X= 17414.6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.3 X=-10538.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-.3 X=-17536.3 + F= 0 N=-.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.62 X=-8856.62 + F= 0 N=-.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.12 X=-5140.12 + F= 0 N=-.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-.31 X=-8595.31 + F= 0 N=-.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.87 X=-3382.87 + F= 0 N=-.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.07 X=-5002.07 + F= 0 N=-.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.72 X=-5800.72 + F= 0 N=-.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= .4 X= 29686.4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 0 X= 31091 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 0 X= 14819 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .9 X= 3790.9 + F= 0 N= .9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 0 X= 3.3889E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 0 X= 2.49826E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 0 X= 2.3491E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 0 X= 1.94745E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 0 X= 2.02475E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 0 X= 4.23585E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1. +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 0 X= 1.77556E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 0 X= 2.87705E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 0 X= 1.99977E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 0 X= 4.20418E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 0 X= 4.60615E+9 + F= 0 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FRE_A_N.80 b/NBS2/F_FRE_A_N.80 new file mode 100644 index 0000000..1696aa8 --- /dev/null +++ b/NBS2/F_FRE_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 32000 A$=[] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 32000 A$=[3] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 32000 A$=[z] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32000 A$=[ 3] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32000 A$=[ z] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 32000 A$=[3 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 32000 A$=[z ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32000 A$=[ 3 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 A$=[ z ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32000 A$=[ LLLL] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32000 A$=[ '' ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32000 A$=[ oo ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32000 A$=[ 00 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32000 A$=[ \\\\ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32000 A$=[ lllll ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32000 A$=[ uuuu ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32000 A$=[ a ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32000 A$=[ hh ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32000 A$=[ h ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32000 A$=[ )] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32000 A$=[ 5 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32000 A$=[ 2 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32000 A$=[ - ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 32000 A$=[dd ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32000 A$=[ tttt ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32000 A$=[ :::: ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32000 A$=[ ___ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32000 A$=[ _____ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32000 A$=[ S ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32000 A$=[ FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32000 A$=[ kkk] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32000 A$=[ NNNN ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32000 A$=[ mmmm ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32000 A$=[ ,,,,, ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 32000 A$=[OO ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32000 A$=[ HHHH ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32000 A$=[ < ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32000 A$=[ j ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32000 A$=[ yyyy ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32000 A$=[ +++ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 32000 A$=[o ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32000 A$=[ ((] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32000 A$=[ uu ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32000 A$=[ 00 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32000 A$=[ HH ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32000 A$=[ G ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32000 A$=[ {{{{ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32000 A$=[ ]]] ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 32000 A$=[CCC] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32000 A$=[ 44 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 32000 A$=[^^ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32000 A$=[ QQ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32000 A$=[ FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32000 A$=[ n ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32000 A$=[ hh ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 32000 A$=[555 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32000 A$=[ YYYY ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32000 A$=[ w ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 32000 A$=[MMMM ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32000 A$=[ JJJJ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32000 A$=[ %% ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32000 A$=[ * ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32000 A$=[ @@@ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 32000 A$=[I ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32000 A$=[ ss ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32000 A$=[ f ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32000 A$=[ D ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 32000 A$=[### ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32000 A$=[ ' ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32000 A$=[ dd ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32000 A$=[ TT ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32000 A$=[ vvv ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32000 A$=[ X ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32000 A$=[ % ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32000 A$=[ 5555 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 32000 A$=[FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32000 A$=[ %% ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32000 A$=[ ~~~~ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32000 A$=[ || ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32000 A$=[ SSS ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32000 A$=[ 6666 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32000 A$=[ ww ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32000 A$=[ 1111 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32000 A$=[ K ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32000 A$=[ ttttt ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32000 A$=[ OOOOO ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32000 A$=[ E ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32000 A$=[ PPPPP ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32000 A$=[ == ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32000 A$=[ VVVV ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32000 A$=[ c ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32000 A$=[ yyyy ] + F= 0 N= 32000 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FRE_A_N.BAS b/NBS2/F_FRE_A_N.BAS new file mode 100644 index 0000000..1bb3aea --- /dev/null +++ b/NBS2/F_FRE_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:23 +REM FILENAME: F_FRE_A_N.BAS +REM SYNTAX: N = FRE( A$ ) +REM UNIQUEID: F_FRE_A_N +REM FUNCTION: FRE +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = FRE( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 32000 , "" +DATA 2 , 0 , 32000 , " " +DATA 3 , 0 , 32000 , "3" +DATA 4 , 0 , 32000 , "z" +DATA 5 , 0 , 32000 , " " +DATA 6 , 0 , 32000 , " 3" +DATA 7 , 0 , 32000 , " z" +DATA 8 , 0 , 32000 , "3 " +DATA 9 , 0 , 32000 , "z " +DATA 10 , 0 , 32000 , " 3 " +DATA 11 , 0 , 32000 , " z " +DATA 12 , 0 , 32000 , " LLLL" +DATA 13 , 0 , 32000 , " '' " +DATA 14 , 0 , 32000 , " oo " +DATA 15 , 0 , 32000 , " 00 " +DATA 16 , 0 , 32000 , " \\\\ " +DATA 17 , 0 , 32000 , " lllll " +DATA 18 , 0 , 32000 , " uuuu " +DATA 19 , 0 , 32000 , " a " +DATA 20 , 0 , 32000 , " " +DATA 21 , 0 , 32000 , " hh " +DATA 22 , 0 , 32000 , " h " +DATA 23 , 0 , 32000 , " )" +DATA 24 , 0 , 32000 , " 5 " +DATA 25 , 0 , 32000 , " 2 " +DATA 26 , 0 , 32000 , " - " +DATA 27 , 0 , 32000 , "dd " +DATA 28 , 0 , 32000 , " tttt " +DATA 29 , 0 , 32000 , " :::: " +DATA 30 , 0 , 32000 , " ___ " +DATA 31 , 0 , 32000 , " " +DATA 32 , 0 , 32000 , " " +DATA 33 , 0 , 32000 , " _____ " +DATA 34 , 0 , 32000 , " S " +DATA 35 , 0 , 32000 , " FFFF " +DATA 36 , 0 , 32000 , " kkk" +DATA 37 , 0 , 32000 , " NNNN " +DATA 38 , 0 , 32000 , " mmmm " +DATA 39 , 0 , 32000 , " ,,,,, " +DATA 40 , 0 , 32000 , "OO " +DATA 41 , 0 , 32000 , " HHHH " +DATA 42 , 0 , 32000 , " < " +DATA 43 , 0 , 32000 , " j " +DATA 44 , 0 , 32000 , " yyyy " +DATA 45 , 0 , 32000 , " +++ " +DATA 46 , 0 , 32000 , "o " +DATA 47 , 0 , 32000 , " ((" +DATA 48 , 0 , 32000 , " uu " +DATA 49 , 0 , 32000 , " 00 " +DATA 50 , 0 , 32000 , " HH " +DATA 51 , 0 , 32000 , " " +DATA 52 , 0 , 32000 , " G " +DATA 53 , 0 , 32000 , " {{{{ " +DATA 54 , 0 , 32000 , " ]]] " +DATA 55 , 0 , 32000 , "CCC" +DATA 56 , 0 , 32000 , " 44 " +DATA 57 , 0 , 32000 , "^^ " +DATA 58 , 0 , 32000 , " QQ " +DATA 59 , 0 , 32000 , " FFFF " +DATA 60 , 0 , 32000 , " n " +DATA 61 , 0 , 32000 , " hh " +DATA 62 , 0 , 32000 , "555 " +DATA 63 , 0 , 32000 , " YYYY " +DATA 64 , 0 , 32000 , " w " +DATA 65 , 0 , 32000 , "MMMM " +DATA 66 , 0 , 32000 , " JJJJ " +DATA 67 , 0 , 32000 , " %% " +DATA 68 , 0 , 32000 , " * " +DATA 69 , 0 , 32000 , " @@@ " +DATA 70 , 0 , 32000 , "I " +DATA 71 , 0 , 32000 , " ss " +DATA 72 , 0 , 32000 , " f " +DATA 73 , 0 , 32000 , " D " +DATA 74 , 0 , 32000 , "### " +DATA 75 , 0 , 32000 , " ' " +DATA 76 , 0 , 32000 , " dd " +DATA 77 , 0 , 32000 , " TT " +DATA 78 , 0 , 32000 , " vvv " +DATA 79 , 0 , 32000 , " X " +DATA 80 , 0 , 32000 , " % " +DATA 81 , 0 , 32000 , " " +DATA 82 , 0 , 32000 , " 5555 " +DATA 83 , 0 , 32000 , "FFFF " +DATA 84 , 0 , 32000 , " %% " +DATA 85 , 0 , 32000 , " " +DATA 86 , 0 , 32000 , " ~~~~ " +DATA 87 , 0 , 32000 , " || " +DATA 88 , 0 , 32000 , " SSS " +DATA 89 , 0 , 32000 , " 6666 " +DATA 90 , 0 , 32000 , " ww " +DATA 91 , 0 , 32000 , " 1111 " +DATA 92 , 0 , 32000 , " K " +DATA 93 , 0 , 32000 , " ttttt " +DATA 94 , 0 , 32000 , " OOOOO " +DATA 95 , 0 , 32000 , " E " +DATA 96 , 0 , 32000 , " PPPPP " +DATA 97 , 0 , 32000 , " == " +DATA 98 , 0 , 32000 , " VVVV " +DATA 99 , 0 , 32000 , " c " +DATA 100 , 0 , 32000 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_FRE_A_N.OUT b/NBS2/F_FRE_A_N.OUT new file mode 100644 index 0000000..e70ff82 --- /dev/null +++ b/NBS2/F_FRE_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 32000 A$=[] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 32000 A$=[3] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 32000 A$=[z] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32000 A$=[ 3] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32000 A$=[ z] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 32000 A$=[3 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 32000 A$=[z ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32000 A$=[ 3 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 A$=[ z ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32000 A$=[ LLLL] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32000 A$=[ '' ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32000 A$=[ oo ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32000 A$=[ 00 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32000 A$=[ \\\\ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32000 A$=[ lllll ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32000 A$=[ uuuu ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32000 A$=[ a ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32000 A$=[ hh ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32000 A$=[ h ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32000 A$=[ )] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32000 A$=[ 5 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32000 A$=[ 2 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32000 A$=[ - ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 32000 A$=[dd ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32000 A$=[ tttt ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32000 A$=[ :::: ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32000 A$=[ ___ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32000 A$=[ _____ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32000 A$=[ S ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32000 A$=[ FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32000 A$=[ kkk] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32000 A$=[ NNNN ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32000 A$=[ mmmm ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32000 A$=[ ,,,,, ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 32000 A$=[OO ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32000 A$=[ HHHH ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32000 A$=[ < ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32000 A$=[ j ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32000 A$=[ yyyy ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32000 A$=[ +++ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 32000 A$=[o ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32000 A$=[ ((] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32000 A$=[ uu ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32000 A$=[ 00 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32000 A$=[ HH ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32000 A$=[ G ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32000 A$=[ {{{{ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32000 A$=[ ]]] ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 32000 A$=[CCC] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32000 A$=[ 44 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 32000 A$=[^^ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32000 A$=[ QQ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32000 A$=[ FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32000 A$=[ n ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32000 A$=[ hh ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 32000 A$=[555 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32000 A$=[ YYYY ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32000 A$=[ w ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 32000 A$=[MMMM ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32000 A$=[ JJJJ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32000 A$=[ %% ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32000 A$=[ * ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32000 A$=[ @@@ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 32000 A$=[I ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32000 A$=[ ss ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32000 A$=[ f ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32000 A$=[ D ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 32000 A$=[### ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32000 A$=[ ' ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32000 A$=[ dd ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32000 A$=[ TT ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32000 A$=[ vvv ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32000 A$=[ X ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32000 A$=[ % ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32000 A$=[ 5555 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 32000 A$=[FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32000 A$=[ %% ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32000 A$=[ ~~~~ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32000 A$=[ || ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32000 A$=[ SSS ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32000 A$=[ 6666 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32000 A$=[ ww ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32000 A$=[ 1111 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32000 A$=[ K ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32000 A$=[ ttttt ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32000 A$=[ OOOOO ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32000 A$=[ E ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32000 A$=[ PPPPP ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32000 A$=[ == ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32000 A$=[ VVVV ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32000 A$=[ c ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32000 A$=[ yyyy ] + F= 0 N= 32000 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FRE_A_N.dif b/NBS2/F_FRE_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_FRE_A_N.run b/NBS2/F_FRE_A_N.run new file mode 100644 index 0000000..1696aa8 --- /dev/null +++ b/NBS2/F_FRE_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 32000 A$=[] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 32000 A$=[3] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 32000 A$=[z] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32000 A$=[ 3] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32000 A$=[ z] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 32000 A$=[3 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 32000 A$=[z ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32000 A$=[ 3 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 A$=[ z ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32000 A$=[ LLLL] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32000 A$=[ '' ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32000 A$=[ oo ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32000 A$=[ 00 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32000 A$=[ \\\\ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32000 A$=[ lllll ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32000 A$=[ uuuu ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32000 A$=[ a ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32000 A$=[ hh ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32000 A$=[ h ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32000 A$=[ )] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32000 A$=[ 5 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32000 A$=[ 2 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32000 A$=[ - ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 32000 A$=[dd ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32000 A$=[ tttt ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32000 A$=[ :::: ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32000 A$=[ ___ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32000 A$=[ _____ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32000 A$=[ S ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32000 A$=[ FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32000 A$=[ kkk] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32000 A$=[ NNNN ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32000 A$=[ mmmm ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32000 A$=[ ,,,,, ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 32000 A$=[OO ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32000 A$=[ HHHH ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32000 A$=[ < ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32000 A$=[ j ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32000 A$=[ yyyy ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32000 A$=[ +++ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 32000 A$=[o ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32000 A$=[ ((] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32000 A$=[ uu ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32000 A$=[ 00 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32000 A$=[ HH ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32000 A$=[ G ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32000 A$=[ {{{{ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32000 A$=[ ]]] ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 32000 A$=[CCC] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32000 A$=[ 44 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 32000 A$=[^^ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32000 A$=[ QQ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32000 A$=[ FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32000 A$=[ n ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32000 A$=[ hh ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 32000 A$=[555 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32000 A$=[ YYYY ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32000 A$=[ w ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 32000 A$=[MMMM ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32000 A$=[ JJJJ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32000 A$=[ %% ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32000 A$=[ * ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32000 A$=[ @@@ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 32000 A$=[I ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32000 A$=[ ss ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32000 A$=[ f ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32000 A$=[ D ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 32000 A$=[### ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32000 A$=[ ' ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32000 A$=[ dd ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32000 A$=[ TT ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32000 A$=[ vvv ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32000 A$=[ X ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32000 A$=[ % ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32000 A$=[ 5555 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 32000 A$=[FFFF ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32000 A$=[ %% ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32000 A$=[ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32000 A$=[ ~~~~ ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32000 A$=[ || ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32000 A$=[ SSS ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32000 A$=[ 6666 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32000 A$=[ ww ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32000 A$=[ 1111 ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32000 A$=[ K ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32000 A$=[ ttttt ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32000 A$=[ OOOOO ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32000 A$=[ E ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32000 A$=[ PPPPP ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32000 A$=[ == ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32000 A$=[ VVVV ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32000 A$=[ c ] + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32000 A$=[ yyyy ] + F= 0 N= 32000 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FRE_X_N.80 b/NBS2/F_FRE_X_N.80 new file mode 100644 index 0000000..3f23161 --- /dev/null +++ b/NBS2/F_FRE_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 32000 X= 0 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32000 X= 1 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 32000 X=-1 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 32000 X= .4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32000 X=-.4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32000 X= .6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32000 X=-.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 32000 X= 254 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 32000 X= 255 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32000 X= 256 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32000 X=-.227229 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32000 X=-.239157 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32000 X=-.213586 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32000 X= .274675 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32000 X= .169766 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32000 X= .318766 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32000 X= 2.06658E-2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32000 X= .188257 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32000 X=-.277537 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32000 X=-.481303 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32000 X= .43556 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32000 X=-.210971 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32000 X=-.455216 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32000 X=-110.907 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32000 X= 105.632 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 32000 X=-114.341 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32000 X= 109.706 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32000 X= 109.198 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32000 X= 85.8773 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32000 X=-58.3548 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32000 X= 29.6397 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32000 X=-108.36 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32000 X=-46.5199 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32000 X= 112.521 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32000 X= 45.4151 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32000 X= 101.129 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32000 X= 65.0473 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32000 X= 48.4012 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 32000 X= 122.294 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32000 X=-56.1094 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32000 X=-121.087 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32000 X=-123.517 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32000 X=-97.6301 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32000 X=-64.0001 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 32000 X=-25.6888 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32000 X= 14.8006 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32000 X=-61.0877 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32000 X=-66.6381 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32000 X=-5476.5 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32000 X=-21210.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32000 X=-28757.2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32000 X=-28732.2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32000 X= 12730.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 32000 X=-1830.69 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32000 X= 5486.39 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 32000 X= 22405.9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32000 X= 30809.8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32000 X=-28930.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32000 X=-6014.53 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32000 X= 17414.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 32000 X=-10538.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32000 X=-17536.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32000 X=-8856.62 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 32000 X=-5140.12 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32000 X=-8595.31 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32000 X=-3382.87 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32000 X=-5002.07 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32000 X=-5800.72 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 32000 X= 29686.4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32000 X= 2571 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32000 X= 31091 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32000 X= 14819 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 32000 X= 3790.9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32000 X=-4.2981E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32000 X=-7.05453E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32000 X=-3.10179E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32000 X=-4.86159E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32000 X=-8.62908E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32000 X=-3.4101E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32000 X= 3.3889E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32000 X= 2.49826E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 32000 X= 2.3491E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32000 X= 1.94745E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32000 X= 2.02475E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32000 X=-2.26748E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32000 X=-2.10587E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32000 X= 4.23585E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32000 X=-2.66524E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32000 X= 4.01052E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32000 X=-4.87912E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32000 X= 1.77556E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32000 X= 2.87705E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32000 X= 1.99977E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32000 X=-3.39941E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32000 X=-3.49119E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32000 X=-2.86324E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32000 X= 4.20418E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32000 X=-3.1518E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32000 X= 4.60615E+9 + F= 0 N= 32000 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FRE_X_N.BAS b/NBS2/F_FRE_X_N.BAS new file mode 100644 index 0000000..66a34c5 --- /dev/null +++ b/NBS2/F_FRE_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:23 +REM FILENAME: F_FRE_X_N.BAS +REM SYNTAX: N = FRE( X ) +REM UNIQUEID: F_FRE_X_N +REM FUNCTION: FRE +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = FRE( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 32000 , 0 +DATA 2 , 0 , 32000 , 1 +DATA 3 , 0 , 32000 , -1 +DATA 4 , 0 , 32000 , .4 +DATA 5 , 0 , 32000 , -.4 +DATA 6 , 0 , 32000 , .6 +DATA 7 , 0 , 32000 , -.6 +DATA 8 , 0 , 32000 , 254 +DATA 9 , 0 , 32000 , 255 +DATA 10 , 0 , 32000 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , 32000 , -.227229 +DATA 13 , 0 , 32000 , -.239157 +DATA 14 , 0 , 32000 , -.213586 +DATA 15 , 0 , 32000 , .274675 +DATA 16 , 0 , 32000 , .169766 +DATA 17 , 0 , 32000 , .318766 +DATA 18 , 0 , 32000 , 2.06658E-2 +DATA 19 , 0 , 32000 , .188257 +DATA 20 , 0 , 32000 , -.277537 +DATA 21 , 0 , 32000 , -.481303 +DATA 22 , 0 , 32000 , .43556 +DATA 23 , 0 , 32000 , -.210971 +DATA 24 , 0 , 32000 , -.455216 +DATA 25 , 0 , 32000 , -110.907 +DATA 26 , 0 , 32000 , 105.632 +DATA 27 , 0 , 32000 , -114.341 +DATA 28 , 0 , 32000 , 109.706 +DATA 29 , 0 , 32000 , 109.198 +DATA 30 , 0 , 32000 , 85.8773 +DATA 31 , 0 , 32000 , -58.3548 +DATA 32 , 0 , 32000 , 29.6397 +DATA 33 , 0 , 32000 , -108.36 +DATA 34 , 0 , 32000 , -46.5199 +DATA 35 , 0 , 32000 , 112.521 +DATA 36 , 0 , 32000 , 45.4151 +DATA 37 , 0 , 32000 , 101.129 +DATA 38 , 0 , 32000 , 65.0473 +DATA 39 , 0 , 32000 , 48.4012 +DATA 40 , 0 , 32000 , 122.294 +DATA 41 , 0 , 32000 , -56.1094 +DATA 42 , 0 , 32000 , -121.087 +DATA 43 , 0 , 32000 , -123.517 +DATA 44 , 0 , 32000 , -97.6301 +DATA 45 , 0 , 32000 , -64.0001 +DATA 46 , 0 , 32000 , -25.6888 +DATA 47 , 0 , 32000 , 14.8006 +DATA 48 , 0 , 32000 , -61.0877 +DATA 49 , 0 , 32000 , -66.6381 +DATA 50 , 0 , 32000 , -5476.5 +DATA 51 , 0 , 32000 , -21210.3 +DATA 52 , 0 , 32000 , -28757.2 +DATA 53 , 0 , 32000 , -28732.2 +DATA 54 , 0 , 32000 , 12730.3 +DATA 55 , 0 , 32000 , -1830.69 +DATA 56 , 0 , 32000 , 5486.39 +DATA 57 , 0 , 32000 , 22405.9 +DATA 58 , 0 , 32000 , 30809.8 +DATA 59 , 0 , 32000 , -28930.6 +DATA 60 , 0 , 32000 , -6014.53 +DATA 61 , 0 , 32000 , 17414.6 +DATA 62 , 0 , 32000 , -10538.3 +DATA 63 , 0 , 32000 , -17536.3 +DATA 64 , 0 , 32000 , -8856.62 +DATA 65 , 0 , 32000 , -5140.12 +DATA 66 , 0 , 32000 , -8595.31 +DATA 67 , 0 , 32000 , -3382.87 +DATA 68 , 0 , 32000 , -5002.07 +DATA 69 , 0 , 32000 , -5800.72 +DATA 70 , 0 , 32000 , 29686.4 +DATA 71 , 0 , 32000 , 2571. +DATA 72 , 0 , 32000 , 31091. +DATA 73 , 0 , 32000 , 14819. +DATA 74 , 0 , 32000 , 3790.9 +DATA 75 , 0 , 32000 , -4.2981E+9 +DATA 76 , 0 , 32000 , -7.05453E+8 +DATA 77 , 0 , 32000 , -3.10179E+9 +DATA 78 , 0 , 32000 , -4.86159E+9 +DATA 79 , 0 , 32000 , -8.62908E+8 +DATA 80 , 0 , 32000 , -3.4101E+9 +DATA 81 , 0 , 32000 , 3.3889E+9 +DATA 82 , 0 , 32000 , 2.49826E+9 +DATA 83 , 0 , 32000 , 2.3491E+9 +DATA 84 , 0 , 32000 , 1.94745E+8 +DATA 85 , 0 , 32000 , 2.02475E+9 +DATA 86 , 0 , 32000 , -2.26748E+9 +DATA 87 , 0 , 32000 , -2.10587E+9 +DATA 88 , 0 , 32000 , 4.23585E+9 +DATA 89 , 0 , 32000 , -2.66524E+9 +DATA 90 , 0 , 32000 , 4.01052E+9 +DATA 91 , 0 , 32000 , -4.87912E+9 +DATA 92 , 0 , 32000 , 1.77556E+9 +DATA 93 , 0 , 32000 , 2.87705E+8 +DATA 94 , 0 , 32000 , 1.99977E+8 +DATA 95 , 0 , 32000 , -3.39941E+9 +DATA 96 , 0 , 32000 , -3.49119E+9 +DATA 97 , 0 , 32000 , -2.86324E+9 +DATA 98 , 0 , 32000 , 4.20418E+9 +DATA 99 , 0 , 32000 , -3.1518E+9 +DATA 100 , 0 , 32000 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_FRE_X_N.OUT b/NBS2/F_FRE_X_N.OUT new file mode 100644 index 0000000..bcafa9c --- /dev/null +++ b/NBS2/F_FRE_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 32000 X= 0 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32000 X= 1 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 32000 X=-1 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 32000 X= .4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32000 X=-.4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32000 X= .6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32000 X=-.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 32000 X= 254 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 32000 X= 255 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32000 X= 256 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32000 X=-.227229 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32000 X=-.239157 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32000 X=-.213586 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32000 X= .274675 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32000 X= .169766 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32000 X= .318766 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32000 X= 2.06658E-2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32000 X= .188257 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32000 X=-.277537 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32000 X=-.481303 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32000 X= .43556 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32000 X=-.210971 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32000 X=-.455216 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32000 X=-110.907 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32000 X= 105.632 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 32000 X=-114.341 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32000 X= 109.706 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32000 X= 109.198 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32000 X= 85.8773 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32000 X=-58.3548 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32000 X= 29.6397 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32000 X=-108.36 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32000 X=-46.5199 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32000 X= 112.521 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32000 X= 45.4151 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32000 X= 101.129 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32000 X= 65.0473 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32000 X= 48.4012 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 32000 X= 122.294 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32000 X=-56.1094 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32000 X=-121.087 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32000 X=-123.517 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32000 X=-97.6301 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32000 X=-64.0001 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 32000 X=-25.6888 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32000 X= 14.8006 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32000 X=-61.0877 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32000 X=-66.6381 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32000 X=-5476.5 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32000 X=-21210.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32000 X=-28757.2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32000 X=-28732.2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32000 X= 12730.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 32000 X=-1830.69 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32000 X= 5486.39 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 32000 X= 22405.9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32000 X= 30809.8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32000 X=-28930.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32000 X=-6014.53 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32000 X= 17414.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 32000 X=-10538.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32000 X=-17536.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32000 X=-8856.62 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 32000 X=-5140.12 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32000 X=-8595.31 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32000 X=-3382.87 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32000 X=-5002.07 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32000 X=-5800.72 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 32000 X= 29686.4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32000 X= 2571 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32000 X= 31091 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32000 X= 14819 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 32000 X= 3790.9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32000 X=-4.2981E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32000 X=-7.05453E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32000 X=-3.10179E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32000 X=-4.86159E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32000 X=-8.62908E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32000 X=-3.4101E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32000 X= 3.3889E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32000 X= 2.49826E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 32000 X= 2.3491E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32000 X= 1.94745E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32000 X= 2.02475E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32000 X=-2.26748E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32000 X=-2.10587E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32000 X= 4.23585E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32000 X=-2.66524E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32000 X= 4.01052E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32000 X=-4.87912E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32000 X= 1.77556E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32000 X= 2.87705E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32000 X= 1.99977E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32000 X=-3.39941E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32000 X=-3.49119E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32000 X=-2.86324E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32000 X= 4.20418E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32000 X=-3.1518E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32000 X= 4.60615E+9 + F= 0 N= 32000 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_FRE_X_N.dif b/NBS2/F_FRE_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_FRE_X_N.run b/NBS2/F_FRE_X_N.run new file mode 100644 index 0000000..3f23161 --- /dev/null +++ b/NBS2/F_FRE_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 32000 X= 0 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32000 X= 1 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 32000 X=-1 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 32000 X= .4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 32000 X=-.4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 32000 X= .6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 32000 X=-.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 32000 X= 254 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 32000 X= 255 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 32000 X= 256 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 32000 X=-.227229 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 32000 X=-.239157 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 32000 X=-.213586 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 32000 X= .274675 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 32000 X= .169766 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 32000 X= .318766 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 32000 X= 2.06658E-2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 32000 X= .188257 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 32000 X=-.277537 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 32000 X=-.481303 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 32000 X= .43556 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 32000 X=-.210971 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 32000 X=-.455216 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 32000 X=-110.907 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 32000 X= 105.632 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 32000 X=-114.341 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 32000 X= 109.706 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 32000 X= 109.198 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 32000 X= 85.8773 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 32000 X=-58.3548 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 32000 X= 29.6397 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 32000 X=-108.36 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 32000 X=-46.5199 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 32000 X= 112.521 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 32000 X= 45.4151 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 32000 X= 101.129 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 32000 X= 65.0473 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 32000 X= 48.4012 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 32000 X= 122.294 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 32000 X=-56.1094 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 32000 X=-121.087 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 32000 X=-123.517 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 32000 X=-97.6301 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 32000 X=-64.0001 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 32000 X=-25.6888 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 32000 X= 14.8006 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 32000 X=-61.0877 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 32000 X=-66.6381 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 32000 X=-5476.5 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 32000 X=-21210.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 32000 X=-28757.2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 32000 X=-28732.2 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 32000 X= 12730.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 32000 X=-1830.69 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 32000 X= 5486.39 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 32000 X= 22405.9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 32000 X= 30809.8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 32000 X=-28930.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 32000 X=-6014.53 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 32000 X= 17414.6 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 32000 X=-10538.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 32000 X=-17536.3 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 32000 X=-8856.62 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 32000 X=-5140.12 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 32000 X=-8595.31 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 32000 X=-3382.87 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 32000 X=-5002.07 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 32000 X=-5800.72 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 32000 X= 29686.4 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 32000 X= 2571 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 32000 X= 31091 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 32000 X= 14819 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 32000 X= 3790.9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 32000 X=-4.2981E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 32000 X=-7.05453E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 32000 X=-3.10179E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 32000 X=-4.86159E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 32000 X=-8.62908E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 32000 X=-3.4101E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 32000 X= 3.3889E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 32000 X= 2.49826E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 32000 X= 2.3491E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 32000 X= 1.94745E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 32000 X= 2.02475E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 32000 X=-2.26748E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 32000 X=-2.10587E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 32000 X= 4.23585E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 32000 X=-2.66524E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 32000 X= 4.01052E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 32000 X=-4.87912E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 32000 X= 1.77556E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 32000 X= 2.87705E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 32000 X= 1.99977E+8 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 32000 X=-3.39941E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 32000 X=-3.49119E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 32000 X=-2.86324E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 32000 X= 4.20418E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 32000 X=-3.1518E+9 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32000 X= 4.60615E+9 + F= 0 N= 32000 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_HEX_X_S.80 b/NBS2/F_HEX_X_S.80 new file mode 100644 index 0000000..e9f736b --- /dev/null +++ b/NBS2/F_HEX_X_S.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[0] X= 0 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[1] X= 1 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[FFFFFFFF] X=-1 + F= 0 S$=[FFFFFFFF] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[0] X= .4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[0] X=-.4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[1] X= .6 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[FFFFFFFF] X=-.6 + F= 0 S$=[FFFFFFFF] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[FE] X= 254 + F= 0 S$=[FE] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[FF] X= 255 + F= 0 S$=[FF] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[100] X= 256 + F= 0 S$=[100] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[7D00] X= 32000 + F= 0 S$=[7D00] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[0] X=-.227229 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[0] X=-.239157 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[0] X=-.213586 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[0] X= .274675 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[0] X= .169766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[0] X= .318766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[0] X= 2.06658E-2 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[0] X= .188257 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[0] X=-.277537 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[0] X=-.481303 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[0] X= .43556 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[0] X=-.210971 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[0] X=-.455216 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[FFFFFF91] X=-110.907 + F= 0 S$=[FFFFFF91] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[6A] X= 105.632 + F= 0 S$=[6A] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[FFFFFF8E] X=-114.341 + F= 0 S$=[FFFFFF8E] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[6E] X= 109.706 + F= 0 S$=[6E] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[6D] X= 109.198 + F= 0 S$=[6D] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[56] X= 85.8773 + F= 0 S$=[56] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[FFFFFFC6] X=-58.3548 + F= 0 S$=[FFFFFFC6] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[1E] X= 29.6397 + F= 0 S$=[1E] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[FFFFFF94] X=-108.36 + F= 0 S$=[FFFFFF94] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[FFFFFFD1] X=-46.5199 + F= 0 S$=[FFFFFFD1] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[71] X= 112.521 + F= 0 S$=[71] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[2D] X= 45.4151 + F= 0 S$=[2D] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[65] X= 101.129 + F= 0 S$=[65] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[41] X= 65.0473 + F= 0 S$=[41] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[30] X= 48.4012 + F= 0 S$=[30] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[7A] X= 122.294 + F= 0 S$=[7A] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[FFFFFFC8] X=-56.1094 + F= 0 S$=[FFFFFFC8] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[FFFFFF87] X=-121.087 + F= 0 S$=[FFFFFF87] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[FFFFFF84] X=-123.517 + F= 0 S$=[FFFFFF84] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[FFFFFF9E] X=-97.6301 + F= 0 S$=[FFFFFF9E] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[FFFFFFC0] X=-64.0001 + F= 0 S$=[FFFFFFC0] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[FFFFFFE6] X=-25.6888 + F= 0 S$=[FFFFFFE6] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[F] X= 14.8006 + F= 0 S$=[F] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[FFFFFFC3] X=-61.0877 + F= 0 S$=[FFFFFFC3] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[FFFFFFBD] X=-66.6381 + F= 0 S$=[FFFFFFBD] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[FFFFEA9C] X=-5476.5 + F= 0 S$=[FFFFEA9C] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[FFFFAD26] X=-21210.3 + F= 0 S$=[FFFFAD26] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[FFFF8FAB] X=-28757.2 + F= 0 S$=[FFFF8FAB] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[FFFF8FC4] X=-28732.2 + F= 0 S$=[FFFF8FC4] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[31BA] X= 12730.3 + F= 0 S$=[31BA] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[FFFFF8D9] X=-1830.69 + F= 0 S$=[FFFFF8D9] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[156E] X= 5486.39 + F= 0 S$=[156E] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[5786] X= 22405.9 + F= 0 S$=[5786] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[785A] X= 30809.8 + F= 0 S$=[785A] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF8EFD] X=-28930.6 + F= 0 S$=[FFFF8EFD] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[FFFFE881] X=-6014.53 + F= 0 S$=[FFFFE881] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[4407] X= 17414.6 + F= 0 S$=[4407] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[FFFFD6D6] X=-10538.3 + F= 0 S$=[FFFFD6D6] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[FFFFBB80] X=-17536.3 + F= 0 S$=[FFFFBB80] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[FFFFDD67] X=-8856.62 + F= 0 S$=[FFFFDD67] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[FFFFEBEC] X=-5140.12 + F= 0 S$=[FFFFEBEC] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[FFFFDE6D] X=-8595.31 + F= 0 S$=[FFFFDE6D] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[FFFFF2C9] X=-3382.87 + F= 0 S$=[FFFFF2C9] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[FFFFEC76] X=-5002.07 + F= 0 S$=[FFFFEC76] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[FFFFE957] X=-5800.72 + F= 0 S$=[FFFFE957] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[73F6] X= 29686.4 + F= 0 S$=[73F6] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[A0B] X= 2571 + F= 0 S$=[A0B] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[7973] X= 31091 + F= 0 S$=[7973] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[39E3] X= 14819 + F= 0 S$=[39E3] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ECF] X= 3790.9 + F= 0 S$=[ECF] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_HEX_X_S.BAS b/NBS2/F_HEX_X_S.BAS new file mode 100644 index 0000000..db3709e --- /dev/null +++ b/NBS2/F_HEX_X_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:23 +REM FILENAME: F_HEX_X_S.BAS +REM SYNTAX: S$ = HEX$( X ) +REM UNIQUEID: F_HEX_X_S +REM FUNCTION: HEX$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = HEX$( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "0", 0 +DATA 2 , 0 , "1", 1 +DATA 3 , 0 , "FFFFFFFF", -1 +DATA 4 , 0 , "0", .4 +DATA 5 , 0 , "0", -.4 +DATA 6 , 0 , "1", .6 +DATA 7 , 0 , "FFFFFFFF", -.6 +DATA 8 , 0 , "FE", 254 +DATA 9 , 0 , "FF", 255 +DATA 10 , 0 , "100", 256 +DATA 11 , 0 , "7D00", 32000 +DATA 12 , 0 , "0", -.227229 +DATA 13 , 0 , "0", -.239157 +DATA 14 , 0 , "0", -.213586 +DATA 15 , 0 , "0", .274675 +DATA 16 , 0 , "0", .169766 +DATA 17 , 0 , "0", .318766 +DATA 18 , 0 , "0", 2.06658E-2 +DATA 19 , 0 , "0", .188257 +DATA 20 , 0 , "0", -.277537 +DATA 21 , 0 , "0", -.481303 +DATA 22 , 0 , "0", .43556 +DATA 23 , 0 , "0", -.210971 +DATA 24 , 0 , "0", -.455216 +DATA 25 , 0 , "FFFFFF91", -110.907 +DATA 26 , 0 , "6A", 105.632 +DATA 27 , 0 , "FFFFFF8E", -114.341 +DATA 28 , 0 , "6E", 109.706 +DATA 29 , 0 , "6D", 109.198 +DATA 30 , 0 , "56", 85.8773 +DATA 31 , 0 , "FFFFFFC6", -58.3548 +DATA 32 , 0 , "1E", 29.6397 +DATA 33 , 0 , "FFFFFF94", -108.36 +DATA 34 , 0 , "FFFFFFD1", -46.5199 +DATA 35 , 0 , "71", 112.521 +DATA 36 , 0 , "2D", 45.4151 +DATA 37 , 0 , "65", 101.129 +DATA 38 , 0 , "41", 65.0473 +DATA 39 , 0 , "30", 48.4012 +DATA 40 , 0 , "7A", 122.294 +DATA 41 , 0 , "FFFFFFC8", -56.1094 +DATA 42 , 0 , "FFFFFF87", -121.087 +DATA 43 , 0 , "FFFFFF84", -123.517 +DATA 44 , 0 , "FFFFFF9E", -97.6301 +DATA 45 , 0 , "FFFFFFC0", -64.0001 +DATA 46 , 0 , "FFFFFFE6", -25.6888 +DATA 47 , 0 , "F", 14.8006 +DATA 48 , 0 , "FFFFFFC3", -61.0877 +DATA 49 , 0 , "FFFFFFBD", -66.6381 +DATA 50 , 0 , "FFFFEA9C", -5476.5 +DATA 51 , 0 , "FFFFAD26", -21210.3 +DATA 52 , 0 , "FFFF8FAB", -28757.2 +DATA 53 , 0 , "FFFF8FC4", -28732.2 +DATA 54 , 0 , "31BA", 12730.3 +DATA 55 , 0 , "FFFFF8D9", -1830.69 +DATA 56 , 0 , "156E", 5486.39 +DATA 57 , 0 , "5786", 22405.9 +DATA 58 , 0 , "785A", 30809.8 +DATA 59 , 0 , "FFFF8EFD", -28930.6 +DATA 60 , 0 , "FFFFE881", -6014.53 +DATA 61 , 0 , "4407", 17414.6 +DATA 62 , 0 , "FFFFD6D6", -10538.3 +DATA 63 , 0 , "FFFFBB80", -17536.3 +DATA 64 , 0 , "FFFFDD67", -8856.62 +DATA 65 , 0 , "FFFFEBEC", -5140.12 +DATA 66 , 0 , "FFFFDE6D", -8595.31 +DATA 67 , 0 , "FFFFF2C9", -3382.87 +DATA 68 , 0 , "FFFFEC76", -5002.07 +DATA 69 , 0 , "FFFFE957", -5800.72 +DATA 70 , 0 , "73F6", 29686.4 +DATA 71 , 0 , "A0B", 2571. +DATA 72 , 0 , "7973", 31091. +DATA 73 , 0 , "39E3", 14819. +DATA 74 , 0 , "ECF", 3790.9 +DATA 75 , 1 , "", -4.2981E+9 +DATA 76 , 1 , "", -7.05453E+8 +DATA 77 , 1 , "", -3.10179E+9 +DATA 78 , 1 , "", -4.86159E+9 +DATA 79 , 1 , "", -8.62908E+8 +DATA 80 , 1 , "", -3.4101E+9 +DATA 81 , 1 , "", 3.3889E+9 +DATA 82 , 1 , "", 2.49826E+9 +DATA 83 , 1 , "", 2.3491E+9 +DATA 84 , 1 , "", 1.94745E+8 +DATA 85 , 1 , "", 2.02475E+9 +DATA 86 , 1 , "", -2.26748E+9 +DATA 87 , 1 , "", -2.10587E+9 +DATA 88 , 1 , "", 4.23585E+9 +DATA 89 , 1 , "", -2.66524E+9 +DATA 90 , 1 , "", 4.01052E+9 +DATA 91 , 1 , "", -4.87912E+9 +DATA 92 , 1 , "", 1.77556E+9 +DATA 93 , 1 , "", 2.87705E+8 +DATA 94 , 1 , "", 1.99977E+8 +DATA 95 , 1 , "", -3.39941E+9 +DATA 96 , 1 , "", -3.49119E+9 +DATA 97 , 1 , "", -2.86324E+9 +DATA 98 , 1 , "", 4.20418E+9 +DATA 99 , 1 , "", -3.1518E+9 +DATA 100 , 1 , "", 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_HEX_X_S.OUT b/NBS2/F_HEX_X_S.OUT new file mode 100644 index 0000000..5e155ee --- /dev/null +++ b/NBS2/F_HEX_X_S.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[0] X= 0 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[1] X= 1 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[FFFFFFFF] X=-1 + F= 0 S$=[FFFFFFFF] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[0] X= .4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[0] X=-.4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[1] X= .6 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[FFFFFFFF] X=-.6 + F= 0 S$=[FFFFFFFF] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[FE] X= 254 + F= 0 S$=[FE] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[FF] X= 255 + F= 0 S$=[FF] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[100] X= 256 + F= 0 S$=[100] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[7D00] X= 32000 + F= 0 S$=[7D00] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[0] X=-.227229 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[0] X=-.239157 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[0] X=-.213586 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[0] X= .274675 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[0] X= .169766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[0] X= .318766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[0] X= 2.06658E-2 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[0] X= .188257 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[0] X=-.277537 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[0] X=-.481303 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[0] X= .43556 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[0] X=-.210971 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[0] X=-.455216 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[FFFFFF91] X=-110.907 + F= 0 S$=[FFFFFF91] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[6A] X= 105.632 + F= 0 S$=[6A] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[FFFFFF8E] X=-114.341 + F= 0 S$=[FFFFFF8E] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[6E] X= 109.706 + F= 0 S$=[6E] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[6D] X= 109.198 + F= 0 S$=[6D] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[56] X= 85.8773 + F= 0 S$=[56] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[FFFFFFC6] X=-58.3548 + F= 0 S$=[FFFFFFC6] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[1E] X= 29.6397 + F= 0 S$=[1E] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[FFFFFF94] X=-108.36 + F= 0 S$=[FFFFFF94] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[FFFFFFD1] X=-46.5199 + F= 0 S$=[FFFFFFD1] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[71] X= 112.521 + F= 0 S$=[71] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[2D] X= 45.4151 + F= 0 S$=[2D] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[65] X= 101.129 + F= 0 S$=[65] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[41] X= 65.0473 + F= 0 S$=[41] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[30] X= 48.4012 + F= 0 S$=[30] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[7A] X= 122.294 + F= 0 S$=[7A] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[FFFFFFC8] X=-56.1094 + F= 0 S$=[FFFFFFC8] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[FFFFFF87] X=-121.087 + F= 0 S$=[FFFFFF87] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[FFFFFF84] X=-123.517 + F= 0 S$=[FFFFFF84] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[FFFFFF9E] X=-97.6301 + F= 0 S$=[FFFFFF9E] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[FFFFFFC0] X=-64.0001 + F= 0 S$=[FFFFFFC0] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[FFFFFFE6] X=-25.6888 + F= 0 S$=[FFFFFFE6] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[F] X= 14.8006 + F= 0 S$=[F] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[FFFFFFC3] X=-61.0877 + F= 0 S$=[FFFFFFC3] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[FFFFFFBD] X=-66.6381 + F= 0 S$=[FFFFFFBD] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[FFFFEA9C] X=-5476.5 + F= 0 S$=[FFFFEA9C] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[FFFFAD26] X=-21210.3 + F= 0 S$=[FFFFAD26] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[FFFF8FAB] X=-28757.2 + F= 0 S$=[FFFF8FAB] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[FFFF8FC4] X=-28732.2 + F= 0 S$=[FFFF8FC4] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[31BA] X= 12730.3 + F= 0 S$=[31BA] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[FFFFF8D9] X=-1830.69 + F= 0 S$=[FFFFF8D9] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[156E] X= 5486.39 + F= 0 S$=[156E] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[5786] X= 22405.9 + F= 0 S$=[5786] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[785A] X= 30809.8 + F= 0 S$=[785A] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF8EFD] X=-28930.6 + F= 0 S$=[FFFF8EFD] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[FFFFE881] X=-6014.53 + F= 0 S$=[FFFFE881] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[4407] X= 17414.6 + F= 0 S$=[4407] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[FFFFD6D6] X=-10538.3 + F= 0 S$=[FFFFD6D6] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[FFFFBB80] X=-17536.3 + F= 0 S$=[FFFFBB80] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[FFFFDD67] X=-8856.62 + F= 0 S$=[FFFFDD67] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[FFFFEBEC] X=-5140.12 + F= 0 S$=[FFFFEBEC] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[FFFFDE6D] X=-8595.31 + F= 0 S$=[FFFFDE6D] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[FFFFF2C9] X=-3382.87 + F= 0 S$=[FFFFF2C9] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[FFFFEC76] X=-5002.07 + F= 0 S$=[FFFFEC76] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[FFFFE957] X=-5800.72 + F= 0 S$=[FFFFE957] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[73F6] X= 29686.4 + F= 0 S$=[73F6] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[A0B] X= 2571 + F= 0 S$=[A0B] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[7973] X= 31091 + F= 0 S$=[7973] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[39E3] X= 14819 + F= 0 S$=[39E3] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ECF] X= 3790.9 + F= 0 S$=[ECF] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_HEX_X_S.dif b/NBS2/F_HEX_X_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_HEX_X_S.run b/NBS2/F_HEX_X_S.run new file mode 100644 index 0000000..e9f736b --- /dev/null +++ b/NBS2/F_HEX_X_S.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[0] X= 0 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[1] X= 1 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[FFFFFFFF] X=-1 + F= 0 S$=[FFFFFFFF] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[0] X= .4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[0] X=-.4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[1] X= .6 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[FFFFFFFF] X=-.6 + F= 0 S$=[FFFFFFFF] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[FE] X= 254 + F= 0 S$=[FE] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[FF] X= 255 + F= 0 S$=[FF] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[100] X= 256 + F= 0 S$=[100] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[7D00] X= 32000 + F= 0 S$=[7D00] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[0] X=-.227229 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[0] X=-.239157 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[0] X=-.213586 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[0] X= .274675 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[0] X= .169766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[0] X= .318766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[0] X= 2.06658E-2 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[0] X= .188257 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[0] X=-.277537 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[0] X=-.481303 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[0] X= .43556 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[0] X=-.210971 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[0] X=-.455216 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[FFFFFF91] X=-110.907 + F= 0 S$=[FFFFFF91] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[6A] X= 105.632 + F= 0 S$=[6A] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[FFFFFF8E] X=-114.341 + F= 0 S$=[FFFFFF8E] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[6E] X= 109.706 + F= 0 S$=[6E] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[6D] X= 109.198 + F= 0 S$=[6D] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[56] X= 85.8773 + F= 0 S$=[56] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[FFFFFFC6] X=-58.3548 + F= 0 S$=[FFFFFFC6] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[1E] X= 29.6397 + F= 0 S$=[1E] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[FFFFFF94] X=-108.36 + F= 0 S$=[FFFFFF94] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[FFFFFFD1] X=-46.5199 + F= 0 S$=[FFFFFFD1] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[71] X= 112.521 + F= 0 S$=[71] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[2D] X= 45.4151 + F= 0 S$=[2D] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[65] X= 101.129 + F= 0 S$=[65] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[41] X= 65.0473 + F= 0 S$=[41] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[30] X= 48.4012 + F= 0 S$=[30] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[7A] X= 122.294 + F= 0 S$=[7A] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[FFFFFFC8] X=-56.1094 + F= 0 S$=[FFFFFFC8] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[FFFFFF87] X=-121.087 + F= 0 S$=[FFFFFF87] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[FFFFFF84] X=-123.517 + F= 0 S$=[FFFFFF84] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[FFFFFF9E] X=-97.6301 + F= 0 S$=[FFFFFF9E] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[FFFFFFC0] X=-64.0001 + F= 0 S$=[FFFFFFC0] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[FFFFFFE6] X=-25.6888 + F= 0 S$=[FFFFFFE6] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[F] X= 14.8006 + F= 0 S$=[F] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[FFFFFFC3] X=-61.0877 + F= 0 S$=[FFFFFFC3] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[FFFFFFBD] X=-66.6381 + F= 0 S$=[FFFFFFBD] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[FFFFEA9C] X=-5476.5 + F= 0 S$=[FFFFEA9C] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[FFFFAD26] X=-21210.3 + F= 0 S$=[FFFFAD26] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[FFFF8FAB] X=-28757.2 + F= 0 S$=[FFFF8FAB] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[FFFF8FC4] X=-28732.2 + F= 0 S$=[FFFF8FC4] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[31BA] X= 12730.3 + F= 0 S$=[31BA] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[FFFFF8D9] X=-1830.69 + F= 0 S$=[FFFFF8D9] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[156E] X= 5486.39 + F= 0 S$=[156E] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[5786] X= 22405.9 + F= 0 S$=[5786] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[785A] X= 30809.8 + F= 0 S$=[785A] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF8EFD] X=-28930.6 + F= 0 S$=[FFFF8EFD] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[FFFFE881] X=-6014.53 + F= 0 S$=[FFFFE881] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[4407] X= 17414.6 + F= 0 S$=[4407] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[FFFFD6D6] X=-10538.3 + F= 0 S$=[FFFFD6D6] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[FFFFBB80] X=-17536.3 + F= 0 S$=[FFFFBB80] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[FFFFDD67] X=-8856.62 + F= 0 S$=[FFFFDD67] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[FFFFEBEC] X=-5140.12 + F= 0 S$=[FFFFEBEC] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[FFFFDE6D] X=-8595.31 + F= 0 S$=[FFFFDE6D] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[FFFFF2C9] X=-3382.87 + F= 0 S$=[FFFFF2C9] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[FFFFEC76] X=-5002.07 + F= 0 S$=[FFFFEC76] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[FFFFE957] X=-5800.72 + F= 0 S$=[FFFFE957] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[73F6] X= 29686.4 + F= 0 S$=[73F6] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[A0B] X= 2571 + F= 0 S$=[A0B] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[7973] X= 31091 + F= 0 S$=[7973] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[39E3] X= 14819 + F= 0 S$=[39E3] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ECF] X= 3790.9 + F= 0 S$=[ECF] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INSTR_A_B_N.80 b/NBS2/F_INSTR_A_B_N.80 new file mode 100644 index 0000000..e30b20f --- /dev/null +++ b/NBS2/F_INSTR_A_B_N.80 @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R= 0 A$=[] B$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 A$=[3] B$=[3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 A$=[z] B$=[z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 A$=[ 3] B$=[ 3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1 A$=[ z] B$=[ z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 A$=[3 ] B$=[3 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 A$=[z ] B$=[z ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 A$=[ 3 ] B$=[ 3 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 A$=[ z ] B$=[ z ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1 A$=[ LLLL] B$=[ LLLL] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1 A$=[ '' ] B$=[ + '' ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1 A$=[ oo ] B$=[ + oo ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 A$=[ 00 ] B$=[ 00 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 A$=[ \\\\ ] B$=[ \\\\ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 A$=[ lllll ] B$=[ lllll ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 A$=[ uuuu ] B$=[ + uuuu ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 A$=[ a ] B$=[ a ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1 A$=[ hh ] B$=[ hh ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 A$=[ h ] B$=[ h ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1 A$=[ )] B$=[ )] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1 A$=[ 5 ] B$=[ 5 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1 A$=[ 2 ] B$=[ 2 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 A$=[ - ] B$=[ - ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 1 A$=[dd ] B$=[dd ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 A$=[ tttt ] B$=[ tttt ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 A$=[ :::: ] B$=[ :::: ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 A$=[ ___ ] B$=[ ___ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1 A$=[ _____ ] B$=[ _____ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 1 A$=[ S ] B$=[ S ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 A$=[ FFFF ] B$=[ FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 A$=[ kkk] B$=[ kkk] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 A$=[ NNNN ] B$=[ + NNNN ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 A$=[ mmmm ] B$=[ mmmm ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 A$=[ ,,,,, ] B$=[ + ,,,,, ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 A$=[OO ] B$=[OO ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1 A$=[ HHHH ] B$=[ HHHH ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 1 A$=[ < ] B$=[ < ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1 A$=[ j ] B$=[ j ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1 A$=[ yyyy ] B$=[ + yyyy ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 1 A$=[ +++ ] B$=[ +++ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 1 A$=[o ] B$=[o ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 A$=[ ((] B$=[ ((] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1 A$=[ uu ] B$=[ + uu ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1 A$=[ 00 ] B$=[ + 00 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1 A$=[ HH ] B$=[ HH ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1 A$=[ G ] B$=[ G ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1 A$=[ {{{{ ] B$=[ {{{{ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 A$=[ ]]] ] B$=[ + ]]] ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1 A$=[CCC] B$=[CCC] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 A$=[ 44 ] B$=[ 44 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 A$=[^^ ] B$=[^^ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 A$=[ QQ ] B$=[ + QQ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 1 A$=[ FFFF ] B$=[ + FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 1 A$=[ n ] B$=[ n ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 A$=[ hh ] B$=[ hh ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 1 A$=[555 ] B$=[555 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1 A$=[ YYYY ] B$=[ YYYY ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 1 A$=[ w ] B$=[ + w ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1 A$=[MMMM ] B$=[MMMM ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1 A$=[ JJJJ ] B$=[ JJJJ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1 A$=[ %% ] B$=[ + %% ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1 A$=[ * ] B$=[ * ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 1 A$=[ @@@ ] B$=[ + @@@ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 A$=[I ] B$=[I ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 A$=[ ss ] B$=[ ss ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 A$=[ f ] B$=[ f ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 A$=[ D ] B$=[ D ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 A$=[### ] B$=[### ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1 A$=[ ' ] B$=[ + ' ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1 A$=[ dd ] B$=[ dd ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1 A$=[ TT ] B$=[ TT ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1 A$=[ vvv ] B$=[ vvv ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1 A$=[ X ] B$=[ X ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 1 A$=[ % ] B$=[ % ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 A$=[ 5555 ] B$=[ 5555 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 A$=[FFFF ] B$=[FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 A$=[ %% ] B$=[ %% ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 1 A$=[ ~~~~ ] B$=[ + ~~~~ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 1 A$=[ || ] B$=[ || ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 A$=[ SSS ] B$=[ + SSS ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 1 A$=[ 6666 ] B$=[ 6666 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 A$=[ ww ] B$=[ ww ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1 A$=[ 1111 ] B$=[ 1111 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 A$=[ K ] B$=[ K ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 A$=[ ttttt ] B$=[ ttttt ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 A$=[ OOOOO ] B$=[ OOOOO ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1 A$=[ E ] B$=[ E ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1 A$=[ PPPPP ] B$=[ PPPPP ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 1 A$=[ == ] B$=[ == ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 A$=[ VVVV ] B$=[ VVVV ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1 A$=[ c ] B$=[ c ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 A$=[ yyyy ] +B$=[ yyyy ] + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INSTR_A_B_N.BAS b/NBS2/F_INSTR_A_B_N.BAS new file mode 100644 index 0000000..a404cdd --- /dev/null +++ b/NBS2/F_INSTR_A_B_N.BAS @@ -0,0 +1,184 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:23 +REM FILENAME: F_INSTR_A_B_N.BAS +REM SYNTAX: N = INSTR( A$, B$ ) +REM UNIQUEID: F_INSTR_A_B_N +REM FUNCTION: INSTR +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM B$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$, B$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]", "B$=[";B$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = INSTR( A$, B$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , "", "" +DATA 2 , 0 , 1 , " ", " " +DATA 3 , 0 , 1 , "3", "3" +DATA 4 , 0 , 1 , "z", "z" +DATA 5 , 0 , 1 , " ", " " +DATA 6 , 0 , 1 , " 3", " 3" +DATA 7 , 0 , 1 , " z", " z" +DATA 8 , 0 , 1 , "3 ", "3 " +DATA 9 , 0 , 1 , "z ", "z " +DATA 10 , 0 , 1 , " 3 ", " 3 " +DATA 11 , 0 , 1 , " z ", " z " +DATA 12 , 0 , 1 , " LLLL", " LLLL" +DATA 13 , 0 , 1 , " '' ", " '' " +DATA 14 , 0 , 1 , " oo ", " oo " +DATA 15 , 0 , 1 , " 00 ", " 00 " +DATA 16 , 0 , 1 , " \\\\ ", " \\\\ " +DATA 17 , 0 , 1 , " lllll ", " lllll " +DATA 18 , 0 , 1 , " uuuu ", " uuuu " +DATA 19 , 0 , 1 , " a ", " a " +DATA 20 , 0 , 1 , " ", " " +DATA 21 , 0 , 1 , " hh ", " hh " +DATA 22 , 0 , 1 , " h ", " h " +DATA 23 , 0 , 1 , " )", " )" +DATA 24 , 0 , 1 , " 5 ", " 5 " +DATA 25 , 0 , 1 , " 2 ", " 2 " +DATA 26 , 0 , 1 , " - ", " - " +DATA 27 , 0 , 1 , "dd ", "dd " +DATA 28 , 0 , 1 , " tttt ", " tttt " +DATA 29 , 0 , 1 , " :::: ", " :::: " +DATA 30 , 0 , 1 , " ___ ", " ___ " +DATA 31 , 0 , 1 , " ", " " +DATA 32 , 0 , 1 , " ", " " +DATA 33 , 0 , 1 , " _____ ", " _____ " +DATA 34 , 0 , 1 , " S ", " S " +DATA 35 , 0 , 1 , " FFFF ", " FFFF " +DATA 36 , 0 , 1 , " kkk", " kkk" +DATA 37 , 0 , 1 , " NNNN ", " NNNN " +DATA 38 , 0 , 1 , " mmmm ", " mmmm " +DATA 39 , 0 , 1 , " ,,,,, ", " ,,,,, " +DATA 40 , 0 , 1 , "OO ", "OO " +DATA 41 , 0 , 1 , " HHHH ", " HHHH " +DATA 42 , 0 , 1 , " < ", " < " +DATA 43 , 0 , 1 , " j ", " j " +DATA 44 , 0 , 1 , " yyyy ", " yyyy " +DATA 45 , 0 , 1 , " +++ ", " +++ " +DATA 46 , 0 , 1 , "o ", "o " +DATA 47 , 0 , 1 , " ((", " ((" +DATA 48 , 0 , 1 , " uu ", " uu " +DATA 49 , 0 , 1 , " 00 ", " 00 " +DATA 50 , 0 , 1 , " HH ", " HH " +DATA 51 , 0 , 1 , " ", " " +DATA 52 , 0 , 1 , " G ", " G " +DATA 53 , 0 , 1 , " {{{{ ", " {{{{ " +DATA 54 , 0 , 1 , " ]]] ", " ]]] " +DATA 55 , 0 , 1 , "CCC", "CCC" +DATA 56 , 0 , 1 , " 44 ", " 44 " +DATA 57 , 0 , 1 , "^^ ", "^^ " +DATA 58 , 0 , 1 , " QQ ", " QQ " +DATA 59 , 0 , 1 , " FFFF ", " FFFF " +DATA 60 , 0 , 1 , " n ", " n " +DATA 61 , 0 , 1 , " hh ", " hh " +DATA 62 , 0 , 1 , "555 ", "555 " +DATA 63 , 0 , 1 , " YYYY ", " YYYY " +DATA 64 , 0 , 1 , " w ", " w " +DATA 65 , 0 , 1 , "MMMM ", "MMMM " +DATA 66 , 0 , 1 , " JJJJ ", " JJJJ " +DATA 67 , 0 , 1 , " %% ", " %% " +DATA 68 , 0 , 1 , " * ", " * " +DATA 69 , 0 , 1 , " @@@ ", " @@@ " +DATA 70 , 0 , 1 , "I ", "I " +DATA 71 , 0 , 1 , " ss ", " ss " +DATA 72 , 0 , 1 , " f ", " f " +DATA 73 , 0 , 1 , " D ", " D " +DATA 74 , 0 , 1 , "### ", "### " +DATA 75 , 0 , 1 , " ' ", " ' " +DATA 76 , 0 , 1 , " dd ", " dd " +DATA 77 , 0 , 1 , " TT ", " TT " +DATA 78 , 0 , 1 , " vvv ", " vvv " +DATA 79 , 0 , 1 , " X ", " X " +DATA 80 , 0 , 1 , " % ", " % " +DATA 81 , 0 , 1 , " ", " " +DATA 82 , 0 , 1 , " 5555 ", " 5555 " +DATA 83 , 0 , 1 , "FFFF ", "FFFF " +DATA 84 , 0 , 1 , " %% ", " %% " +DATA 85 , 0 , 1 , " ", " " +DATA 86 , 0 , 1 , " ~~~~ ", " ~~~~ " +DATA 87 , 0 , 1 , " || ", " || " +DATA 88 , 0 , 1 , " SSS ", " SSS " +DATA 89 , 0 , 1 , " 6666 ", " 6666 " +DATA 90 , 0 , 1 , " ww ", " ww " +DATA 91 , 0 , 1 , " 1111 ", " 1111 " +DATA 92 , 0 , 1 , " K ", " K " +DATA 93 , 0 , 1 , " ttttt ", " ttttt " +DATA 94 , 0 , 1 , " OOOOO ", " OOOOO " +DATA 95 , 0 , 1 , " E ", " E " +DATA 96 , 0 , 1 , " PPPPP ", " PPPPP " +DATA 97 , 0 , 1 , " == ", " == " +DATA 98 , 0 , 1 , " VVVV ", " VVVV " +DATA 99 , 0 , 1 , " c ", " c " +DATA 100 , 0 , 1 , " yyyy ", " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_INSTR_A_B_N.OUT b/NBS2/F_INSTR_A_B_N.OUT new file mode 100644 index 0000000..84a8475 --- /dev/null +++ b/NBS2/F_INSTR_A_B_N.OUT @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R= 0 A$=[] B$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 A$=[3] B$=[3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 A$=[z] B$=[z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 A$=[ 3] B$=[ 3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1 A$=[ z] B$=[ z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 A$=[3 ] B$=[3 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 A$=[z ] B$=[z ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 A$=[ 3 ] B$=[ 3 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 A$=[ z ] B$=[ z ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1 A$=[ LLLL] B$=[ LLLL] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1 A$=[ '' ] B$=[ + '' ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1 A$=[ oo ] B$=[ + oo ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 A$=[ 00 ] B$=[ 00 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 A$=[ \\\\ ] B$=[ \\\\ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 A$=[ lllll ] B$=[ lllll ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 A$=[ uuuu ] B$=[ + uuuu ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 A$=[ a ] B$=[ a ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1 A$=[ hh ] B$=[ hh ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 A$=[ h ] B$=[ h ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1 A$=[ )] B$=[ )] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1 A$=[ 5 ] B$=[ 5 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1 A$=[ 2 ] B$=[ 2 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 A$=[ - ] B$=[ - ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 1 A$=[dd ] B$=[dd ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 A$=[ tttt ] B$=[ tttt ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 A$=[ :::: ] B$=[ :::: ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 A$=[ ___ ] B$=[ ___ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1 A$=[ _____ ] B$=[ _____ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 1 A$=[ S ] B$=[ S ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 A$=[ FFFF ] B$=[ FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 A$=[ kkk] B$=[ kkk] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 A$=[ NNNN ] B$=[ + NNNN ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 A$=[ mmmm ] B$=[ mmmm ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 A$=[ ,,,,, ] B$=[ + ,,,,, ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 A$=[OO ] B$=[OO ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1 A$=[ HHHH ] B$=[ HHHH ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 1 A$=[ < ] B$=[ < ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1 A$=[ j ] B$=[ j ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1 A$=[ yyyy ] B$=[ + yyyy ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 1 A$=[ +++ ] B$=[ +++ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 1 A$=[o ] B$=[o ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 A$=[ ((] B$=[ ((] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1 A$=[ uu ] B$=[ + uu ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1 A$=[ 00 ] B$=[ + 00 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1 A$=[ HH ] B$=[ HH ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1 A$=[ G ] B$=[ G ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1 A$=[ {{{{ ] B$=[ {{{{ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 A$=[ ]]] ] B$=[ + ]]] ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1 A$=[CCC] B$=[CCC] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 A$=[ 44 ] B$=[ 44 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 A$=[^^ ] B$=[^^ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 A$=[ QQ ] B$=[ + QQ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 1 A$=[ FFFF ] B$=[ + FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 1 A$=[ n ] B$=[ n ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 A$=[ hh ] B$=[ hh ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 1 A$=[555 ] B$=[555 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1 A$=[ YYYY ] B$=[ YYYY ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 1 A$=[ w ] B$=[ + w ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1 A$=[MMMM ] B$=[MMMM ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1 A$=[ JJJJ ] B$=[ JJJJ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1 A$=[ %% ] B$=[ + %% ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1 A$=[ * ] B$=[ * ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 1 A$=[ @@@ ] B$=[ + @@@ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 A$=[I ] B$=[I ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 A$=[ ss ] B$=[ ss ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 A$=[ f ] B$=[ f ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 A$=[ D ] B$=[ D ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 A$=[### ] B$=[### ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1 A$=[ ' ] B$=[ + ' ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1 A$=[ dd ] B$=[ dd ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1 A$=[ TT ] B$=[ TT ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1 A$=[ vvv ] B$=[ vvv ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1 A$=[ X ] B$=[ X ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 1 A$=[ % ] B$=[ % ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 A$=[ 5555 ] B$=[ 5555 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 A$=[FFFF ] B$=[FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 A$=[ %% ] B$=[ %% ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 1 A$=[ ~~~~ ] B$=[ + ~~~~ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 1 A$=[ || ] B$=[ || ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 A$=[ SSS ] B$=[ + SSS ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 1 A$=[ 6666 ] B$=[ 6666 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 A$=[ ww ] B$=[ ww ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1 A$=[ 1111 ] B$=[ 1111 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 A$=[ K ] B$=[ K ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 A$=[ ttttt ] B$=[ ttttt ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 A$=[ OOOOO ] B$=[ OOOOO ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1 A$=[ E ] B$=[ E ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1 A$=[ PPPPP ] B$=[ PPPPP ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 1 A$=[ == ] B$=[ == ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 A$=[ VVVV ] B$=[ VVVV ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1 A$=[ c ] B$=[ c ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 A$=[ yyyy ] +B$=[ yyyy ] + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INSTR_A_B_N.dif b/NBS2/F_INSTR_A_B_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_INSTR_A_B_N.run b/NBS2/F_INSTR_A_B_N.run new file mode 100644 index 0000000..e30b20f --- /dev/null +++ b/NBS2/F_INSTR_A_B_N.run @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R= 0 A$=[] B$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 A$=[3] B$=[3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 A$=[z] B$=[z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 A$=[ 3] B$=[ 3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1 A$=[ z] B$=[ z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 A$=[3 ] B$=[3 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 A$=[z ] B$=[z ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 A$=[ 3 ] B$=[ 3 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 A$=[ z ] B$=[ z ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1 A$=[ LLLL] B$=[ LLLL] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1 A$=[ '' ] B$=[ + '' ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1 A$=[ oo ] B$=[ + oo ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 A$=[ 00 ] B$=[ 00 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 A$=[ \\\\ ] B$=[ \\\\ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 A$=[ lllll ] B$=[ lllll ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 A$=[ uuuu ] B$=[ + uuuu ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 A$=[ a ] B$=[ a ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1 A$=[ hh ] B$=[ hh ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 A$=[ h ] B$=[ h ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1 A$=[ )] B$=[ )] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1 A$=[ 5 ] B$=[ 5 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1 A$=[ 2 ] B$=[ 2 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 A$=[ - ] B$=[ - ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 1 A$=[dd ] B$=[dd ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 A$=[ tttt ] B$=[ tttt ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 A$=[ :::: ] B$=[ :::: ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 A$=[ ___ ] B$=[ ___ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1 A$=[ _____ ] B$=[ _____ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 1 A$=[ S ] B$=[ S ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 A$=[ FFFF ] B$=[ FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 A$=[ kkk] B$=[ kkk] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 A$=[ NNNN ] B$=[ + NNNN ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 A$=[ mmmm ] B$=[ mmmm ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 A$=[ ,,,,, ] B$=[ + ,,,,, ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 A$=[OO ] B$=[OO ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1 A$=[ HHHH ] B$=[ HHHH ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 1 A$=[ < ] B$=[ < ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1 A$=[ j ] B$=[ j ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1 A$=[ yyyy ] B$=[ + yyyy ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 1 A$=[ +++ ] B$=[ +++ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 1 A$=[o ] B$=[o ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 A$=[ ((] B$=[ ((] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1 A$=[ uu ] B$=[ + uu ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1 A$=[ 00 ] B$=[ + 00 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1 A$=[ HH ] B$=[ HH ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1 A$=[ G ] B$=[ G ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1 A$=[ {{{{ ] B$=[ {{{{ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 A$=[ ]]] ] B$=[ + ]]] ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1 A$=[CCC] B$=[CCC] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 A$=[ 44 ] B$=[ 44 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 A$=[^^ ] B$=[^^ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 A$=[ QQ ] B$=[ + QQ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 1 A$=[ FFFF ] B$=[ + FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 1 A$=[ n ] B$=[ n ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 A$=[ hh ] B$=[ hh ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 1 A$=[555 ] B$=[555 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1 A$=[ YYYY ] B$=[ YYYY ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 1 A$=[ w ] B$=[ + w ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1 A$=[MMMM ] B$=[MMMM ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1 A$=[ JJJJ ] B$=[ JJJJ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1 A$=[ %% ] B$=[ + %% ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1 A$=[ * ] B$=[ * ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 1 A$=[ @@@ ] B$=[ + @@@ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 A$=[I ] B$=[I ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 A$=[ ss ] B$=[ ss ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 A$=[ f ] B$=[ f ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 A$=[ D ] B$=[ D ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 A$=[### ] B$=[### ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1 A$=[ ' ] B$=[ + ' ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1 A$=[ dd ] B$=[ dd ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1 A$=[ TT ] B$=[ TT ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1 A$=[ vvv ] B$=[ vvv ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1 A$=[ X ] B$=[ X ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 1 A$=[ % ] B$=[ % ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 A$=[ 5555 ] B$=[ 5555 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 A$=[FFFF ] B$=[FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 A$=[ %% ] B$=[ %% ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 1 A$=[ ~~~~ ] B$=[ + ~~~~ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 1 A$=[ || ] B$=[ || ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 A$=[ SSS ] B$=[ + SSS ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 1 A$=[ 6666 ] B$=[ 6666 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 A$=[ ww ] B$=[ ww ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1 A$=[ 1111 ] B$=[ 1111 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 A$=[ K ] B$=[ K ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 A$=[ ttttt ] B$=[ ttttt ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 A$=[ OOOOO ] B$=[ OOOOO ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1 A$=[ E ] B$=[ E ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1 A$=[ PPPPP ] B$=[ PPPPP ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 1 A$=[ == ] B$=[ == ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 A$=[ VVVV ] B$=[ VVVV ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1 A$=[ c ] B$=[ c ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 A$=[ yyyy ] +B$=[ yyyy ] + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INSTR_X_A_B_N.80 b/NBS2/F_INSTR_X_A_B_N.80 new file mode 100644 index 0000000..81c75b6 --- /dev/null +++ b/NBS2/F_INSTR_X_A_B_N.80 @@ -0,0 +1,400 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 A$=[] B$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 A$=[ ] B$=[ +] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 A$=[3] B$=[3 +] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 X= .4 A$=[z] B$=[z +] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 A$=[ 3] B$=[ + 3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 A$=[ z] B$=[ + z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 A$=[3 ] B$=[ +3 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 A$=[z ] B$=[ +z ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 A$=[ 3 ] B$=[ + 3 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 A$=[ z ] B$=[ + z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 A$=[ LLLL] B$=[ + LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 A$=[ '' ] +B$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 A$=[ oo ] +B$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 X= .274675 A$=[ 00 ] B$=[ + 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 X= .169766 A$=[ \\\\ ] B$=[ + \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 X= .318766 A$=[ lllll ] B$=[ + lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 X= 2.06658E-2 A$=[ uuuu ] +B$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 X= .188257 A$=[ a ] B$=[ + a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 A$=[ hh ] B$=[ + hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 X= .43556 A$=[ h ] B$=[ + h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 A$=[ )] B$=[ + )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 A$=[ 5 ] B$=[ + 5 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 A$=[ 2 ] B$=[ + 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 A$=[ - ] B$=[ + - ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 A$=[dd ] B$=[ +dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 A$=[ tttt ] B$=[ + tttt ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 A$=[ :::: ] B$=[ + :::: ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 A$=[ ___ ] B$=[ + ___ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 A$=[ ] B$=[ + ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 A$=[ _____ ] B$=[ + _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 A$=[ S ] B$=[ + S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 A$=[ FFFF ] B$=[ + FFFF ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 A$=[ kkk] B$=[ + kkk] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 A$=[ NNNN ] +B$=[ NNNN ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 A$=[ mmmm ] B$=[ + mmmm ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 A$=[ ,,,,, ] +B$=[ ,,,,, ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 A$=[OO ] B$=[ +OO ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 A$=[ HHHH ] B$=[ + HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 A$=[ < ] B$=[ + < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 A$=[ j ] B$=[ + j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 A$=[ yyyy ] +B$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 A$=[ +++ ] B$=[ + +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 A$=[o ] B$=[ +o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 A$=[ ((] B$=[ + ((] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 A$=[ uu ] +B$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 A$=[ 00 ] +B$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 A$=[ HH ] B$=[ + HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 A$=[ G ] B$=[ + G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 A$=[ {{{{ ] B$=[ + {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 A$=[ ]]] ] +B$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 A$=[CCC] B$=[ +CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 A$=[ 44 ] B$=[ + 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 A$=[^^ ] B$=[ +^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 A$=[ QQ ] +B$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 A$=[ FFFF ] +B$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 A$=[ n ] B$=[ + n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 A$=[ hh ] B$=[ + hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 A$=[555 ] B$=[ +555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 A$=[ YYYY ] B$=[ + YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 A$=[ w ] +B$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 A$=[MMMM ] B$=[ +MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 A$=[ JJJJ ] B$=[ + JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 A$=[ %% ] +B$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 A$=[ * ] B$=[ + * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 A$=[ @@@ ] +B$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 A$=[I ] B$=[ +I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 A$=[ ss ] B$=[ + ss ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 A$=[ f ] B$=[ + f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 A$=[ D ] B$=[ + D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 0 X= 3790.9 A$=[### ] B$=[ +### ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 A$=[ ' ] +B$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 A$=[ dd ] B$=[ + dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 A$=[ TT ] B$=[ + TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 A$=[ vvv ] B$=[ + vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 A$=[ X ] B$=[ + X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 A$=[ % ] B$=[ + % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 A$=[ 5555 ] B$=[ + 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 A$=[FFFF ] B$=[ +FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 A$=[ %% ] B$=[ + %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 A$=[ ~~~~ ] +B$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 A$=[ || ] B$=[ + || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 A$=[ SSS ] +B$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 A$=[ 6666 ] B$=[ + 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 A$=[ ww ] B$=[ + ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 A$=[ 1111 ] B$=[ + 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 A$=[ K ] B$=[ + K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 A$=[ ttttt ] B$=[ + ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 A$=[ OOOOO ] B$=[ + OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 A$=[ E ] B$=[ + E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 A$=[ PPPPP ] B$=[ + PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 A$=[ == ] B$=[ + == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 A$=[ VVVV ] B$=[ + VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 A$=[ c ] B$=[ + c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 A$=[ + yyyy ] B$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INSTR_X_A_B_N.BAS b/NBS2/F_INSTR_X_A_B_N.BAS new file mode 100644 index 0000000..7413974 --- /dev/null +++ b/NBS2/F_INSTR_X_A_B_N.BAS @@ -0,0 +1,185 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:24 +REM FILENAME: F_INSTR_X_A_B_N.BAS +REM SYNTAX: N = INSTR( X, A$, B$ ) +REM UNIQUEID: F_INSTR_X_A_B_N +REM FUNCTION: INSTR +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM A$ ACTUAL FUNCTION PARAMETER +REM B$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X, A$, B$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X, "A$=[";A$;"]", "B$=[";B$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = INSTR( X, A$, B$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , 0 , "", "" +DATA 2 , 0 , 1 , 1 , " ", " " +DATA 3 , 1 , 0 , -1 , "3", "3" +DATA 4 , 1 , 0 , .4 , "z", "z" +DATA 5 , 1 , 0 , -.4 , " ", " " +DATA 6 , 0 , 1 , .6 , " 3", " 3" +DATA 7 , 1 , 0 , -.6 , " z", " z" +DATA 8 , 0 , 0 , 254 , "3 ", "3 " +DATA 9 , 0 , 0 , 255 , "z ", "z " +DATA 10 , 0 , 0 , 256 , " 3 ", " 3 " +DATA 11 , 1 , 0 , 32000 , " z ", " z " +DATA 12 , 1 , 0 , -.227229 , " LLLL", " LLLL" +DATA 13 , 1 , 0 , -.239157 , " '' ", " '' " +DATA 14 , 1 , 0 , -.213586 , " oo ", " oo " +DATA 15 , 1 , 0 , .274675 , " 00 ", " 00 " +DATA 16 , 1 , 0 , .169766 , " \\\\ ", " \\\\ " +DATA 17 , 1 , 0 , .318766 , " lllll ", " lllll " +DATA 18 , 1 , 0 , 2.06658E-2 , " uuuu ", " uuuu " +DATA 19 , 1 , 0 , .188257 , " a ", " a " +DATA 20 , 1 , 0 , -.277537 , " ", " " +DATA 21 , 1 , 0 , -.481303 , " hh ", " hh " +DATA 22 , 1 , 0 , .43556 , " h ", " h " +DATA 23 , 1 , 0 , -.210971 , " )", " )" +DATA 24 , 1 , 0 , -.455216 , " 5 ", " 5 " +DATA 25 , 1 , 0 , -110.907 , " 2 ", " 2 " +DATA 26 , 0 , 0 , 105.632 , " - ", " - " +DATA 27 , 1 , 0 , -114.341 , "dd ", "dd " +DATA 28 , 0 , 0 , 109.706 , " tttt ", " tttt " +DATA 29 , 0 , 0 , 109.198 , " :::: ", " :::: " +DATA 30 , 0 , 0 , 85.8773 , " ___ ", " ___ " +DATA 31 , 1 , 0 , -58.3548 , " ", " " +DATA 32 , 0 , 0 , 29.6397 , " ", " " +DATA 33 , 1 , 0 , -108.36 , " _____ ", " _____ " +DATA 34 , 1 , 0 , -46.5199 , " S ", " S " +DATA 35 , 0 , 0 , 112.521 , " FFFF ", " FFFF " +DATA 36 , 0 , 0 , 45.4151 , " kkk", " kkk" +DATA 37 , 0 , 0 , 101.129 , " NNNN ", " NNNN " +DATA 38 , 0 , 0 , 65.0473 , " mmmm ", " mmmm " +DATA 39 , 0 , 0 , 48.4012 , " ,,,,, ", " ,,,,, " +DATA 40 , 0 , 0 , 122.294 , "OO ", "OO " +DATA 41 , 1 , 0 , -56.1094 , " HHHH ", " HHHH " +DATA 42 , 1 , 0 , -121.087 , " < ", " < " +DATA 43 , 1 , 0 , -123.517 , " j ", " j " +DATA 44 , 1 , 0 , -97.6301 , " yyyy ", " yyyy " +DATA 45 , 1 , 0 , -64.0001 , " +++ ", " +++ " +DATA 46 , 1 , 0 , -25.6888 , "o ", "o " +DATA 47 , 0 , 0 , 14.8006 , " ((", " ((" +DATA 48 , 1 , 0 , -61.0877 , " uu ", " uu " +DATA 49 , 1 , 0 , -66.6381 , " 00 ", " 00 " +DATA 50 , 1 , 0 , -5476.5 , " HH ", " HH " +DATA 51 , 1 , 0 , -21210.3 , " ", " " +DATA 52 , 1 , 0 , -28757.2 , " G ", " G " +DATA 53 , 1 , 0 , -28732.2 , " {{{{ ", " {{{{ " +DATA 54 , 1 , 0 , 12730.3 , " ]]] ", " ]]] " +DATA 55 , 1 , 0 , -1830.69 , "CCC", "CCC" +DATA 56 , 1 , 0 , 5486.39 , " 44 ", " 44 " +DATA 57 , 1 , 0 , 22405.9 , "^^ ", "^^ " +DATA 58 , 1 , 0 , 30809.8 , " QQ ", " QQ " +DATA 59 , 1 , 0 , -28930.6 , " FFFF ", " FFFF " +DATA 60 , 1 , 0 , -6014.53 , " n ", " n " +DATA 61 , 1 , 0 , 17414.6 , " hh ", " hh " +DATA 62 , 1 , 0 , -10538.3 , "555 ", "555 " +DATA 63 , 1 , 0 , -17536.3 , " YYYY ", " YYYY " +DATA 64 , 1 , 0 , -8856.62 , " w ", " w " +DATA 65 , 1 , 0 , -5140.12 , "MMMM ", "MMMM " +DATA 66 , 1 , 0 , -8595.31 , " JJJJ ", " JJJJ " +DATA 67 , 1 , 0 , -3382.87 , " %% ", " %% " +DATA 68 , 1 , 0 , -5002.07 , " * ", " * " +DATA 69 , 1 , 0 , -5800.72 , " @@@ ", " @@@ " +DATA 70 , 1 , 0 , 29686.4 , "I ", "I " +DATA 71 , 0 , 0 , 2571. , " ss ", " ss " +DATA 72 , 1 , 0 , 31091. , " f ", " f " +DATA 73 , 1 , 0 , 14819. , " D ", " D " +DATA 74 , 0 , 0 , 3790.9 , "### ", "### " +DATA 75 , 1 , 0 , -4.2981E+9 , " ' ", " ' " +DATA 76 , 1 , 0 , -7.05453E+8 , " dd ", " dd " +DATA 77 , 1 , 0 , -3.10179E+9 , " TT ", " TT " +DATA 78 , 1 , 0 , -4.86159E+9 , " vvv ", " vvv " +DATA 79 , 1 , 0 , -8.62908E+8 , " X ", " X " +DATA 80 , 1 , 0 , -3.4101E+9 , " % ", " % " +DATA 81 , 1 , 0 , 3.3889E+9 , " ", " " +DATA 82 , 1 , 0 , 2.49826E+9 , " 5555 ", " 5555 " +DATA 83 , 1 , 0 , 2.3491E+9 , "FFFF ", "FFFF " +DATA 84 , 1 , 0 , 1.94745E+8 , " %% ", " %% " +DATA 85 , 1 , 0 , 2.02475E+9 , " ", " " +DATA 86 , 1 , 0 , -2.26748E+9 , " ~~~~ ", " ~~~~ " +DATA 87 , 1 , 0 , -2.10587E+9 , " || ", " || " +DATA 88 , 1 , 0 , 4.23585E+9 , " SSS ", " SSS " +DATA 89 , 1 , 0 , -2.66524E+9 , " 6666 ", " 6666 " +DATA 90 , 1 , 0 , 4.01052E+9 , " ww ", " ww " +DATA 91 , 1 , 0 , -4.87912E+9 , " 1111 ", " 1111 " +DATA 92 , 1 , 0 , 1.77556E+9 , " K ", " K " +DATA 93 , 1 , 0 , 2.87705E+8 , " ttttt ", " ttttt " +DATA 94 , 1 , 0 , 1.99977E+8 , " OOOOO ", " OOOOO " +DATA 95 , 1 , 0 , -3.39941E+9 , " E ", " E " +DATA 96 , 1 , 0 , -3.49119E+9 , " PPPPP ", " PPPPP " +DATA 97 , 1 , 0 , -2.86324E+9 , " == ", " == " +DATA 98 , 1 , 0 , 4.20418E+9 , " VVVV ", " VVVV " +DATA 99 , 1 , 0 , -3.1518E+9 , " c ", " c " +DATA 100 , 1 , 0 , 4.60615E+9 , " yyyy ", " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_INSTR_X_A_B_N.OUT b/NBS2/F_INSTR_X_A_B_N.OUT new file mode 100644 index 0000000..30d7c68 --- /dev/null +++ b/NBS2/F_INSTR_X_A_B_N.OUT @@ -0,0 +1,400 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 A$=[] B$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 A$=[ ] B$=[ +] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 A$=[3] B$=[3 +] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 X= .4 A$=[z] B$=[z +] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 A$=[ 3] B$=[ + 3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 A$=[ z] B$=[ + z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 A$=[3 ] B$=[ +3 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 A$=[z ] B$=[ +z ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 A$=[ 3 ] B$=[ + 3 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 A$=[ z ] B$=[ + z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 A$=[ LLLL] B$=[ + LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 A$=[ '' ] +B$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 A$=[ oo ] +B$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 X= .274675 A$=[ 00 ] B$=[ + 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 X= .169766 A$=[ \\\\ ] B$=[ + \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 X= .318766 A$=[ lllll ] B$=[ + lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 X= 2.06658E-2 A$=[ uuuu ] +B$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 X= .188257 A$=[ a ] B$=[ + a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 A$=[ hh ] B$=[ + hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 X= .43556 A$=[ h ] B$=[ + h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 A$=[ )] B$=[ + )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 A$=[ 5 ] B$=[ + 5 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 A$=[ 2 ] B$=[ + 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 A$=[ - ] B$=[ + - ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 A$=[dd ] B$=[ +dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 A$=[ tttt ] B$=[ + tttt ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 A$=[ :::: ] B$=[ + :::: ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 A$=[ ___ ] B$=[ + ___ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 A$=[ ] B$=[ + ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 A$=[ _____ ] B$=[ + _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 A$=[ S ] B$=[ + S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 A$=[ FFFF ] B$=[ + FFFF ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 A$=[ kkk] B$=[ + kkk] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 A$=[ NNNN ] +B$=[ NNNN ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 A$=[ mmmm ] B$=[ + mmmm ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 A$=[ ,,,,, ] +B$=[ ,,,,, ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 A$=[OO ] B$=[ +OO ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 A$=[ HHHH ] B$=[ + HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 A$=[ < ] B$=[ + < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 A$=[ j ] B$=[ + j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 A$=[ yyyy ] +B$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 A$=[ +++ ] B$=[ + +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 A$=[o ] B$=[ +o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 A$=[ ((] B$=[ + ((] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 A$=[ uu ] +B$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 A$=[ 00 ] +B$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 A$=[ HH ] B$=[ + HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 A$=[ G ] B$=[ + G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 A$=[ {{{{ ] B$=[ + {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 A$=[ ]]] ] +B$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 A$=[CCC] B$=[ +CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 A$=[ 44 ] B$=[ + 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 A$=[^^ ] B$=[ +^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 A$=[ QQ ] +B$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 A$=[ FFFF ] +B$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 A$=[ n ] B$=[ + n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 A$=[ hh ] B$=[ + hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 A$=[555 ] B$=[ +555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 A$=[ YYYY ] B$=[ + YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 A$=[ w ] +B$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 A$=[MMMM ] B$=[ +MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 A$=[ JJJJ ] B$=[ + JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 A$=[ %% ] +B$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 A$=[ * ] B$=[ + * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 A$=[ @@@ ] +B$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 A$=[I ] B$=[ +I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 A$=[ ss ] B$=[ + ss ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 A$=[ f ] B$=[ + f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 A$=[ D ] B$=[ + D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 0 X= 3790.9 A$=[### ] B$=[ +### ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 A$=[ ' ] +B$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 A$=[ dd ] B$=[ + dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 A$=[ TT ] B$=[ + TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 A$=[ vvv ] B$=[ + vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 A$=[ X ] B$=[ + X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 A$=[ % ] B$=[ + % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 A$=[ 5555 ] B$=[ + 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 A$=[FFFF ] B$=[ +FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 A$=[ %% ] B$=[ + %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 A$=[ ~~~~ ] +B$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 A$=[ || ] B$=[ + || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 A$=[ SSS ] +B$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 A$=[ 6666 ] B$=[ + 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 A$=[ ww ] B$=[ + ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 A$=[ 1111 ] B$=[ + 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 A$=[ K ] B$=[ + K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 A$=[ ttttt ] B$=[ + ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 A$=[ OOOOO ] B$=[ + OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 A$=[ E ] B$=[ + E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 A$=[ PPPPP ] B$=[ + PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 A$=[ == ] B$=[ + == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 A$=[ VVVV ] B$=[ + VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 A$=[ c ] B$=[ + c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 A$=[ + yyyy ] B$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INSTR_X_A_B_N.dif b/NBS2/F_INSTR_X_A_B_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_INSTR_X_A_B_N.run b/NBS2/F_INSTR_X_A_B_N.run new file mode 100644 index 0000000..81c75b6 --- /dev/null +++ b/NBS2/F_INSTR_X_A_B_N.run @@ -0,0 +1,400 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 A$=[] B$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 A$=[ ] B$=[ +] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 A$=[3] B$=[3 +] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 X= .4 A$=[z] B$=[z +] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 A$=[ 3] B$=[ + 3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 A$=[ z] B$=[ + z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 A$=[3 ] B$=[ +3 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 A$=[z ] B$=[ +z ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 A$=[ 3 ] B$=[ + 3 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 A$=[ z ] B$=[ + z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 A$=[ LLLL] B$=[ + LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 A$=[ '' ] +B$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 A$=[ oo ] +B$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 X= .274675 A$=[ 00 ] B$=[ + 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 X= .169766 A$=[ \\\\ ] B$=[ + \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 X= .318766 A$=[ lllll ] B$=[ + lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 X= 2.06658E-2 A$=[ uuuu ] +B$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 X= .188257 A$=[ a ] B$=[ + a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 A$=[ hh ] B$=[ + hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 X= .43556 A$=[ h ] B$=[ + h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 A$=[ )] B$=[ + )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 A$=[ 5 ] B$=[ + 5 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 A$=[ 2 ] B$=[ + 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 A$=[ - ] B$=[ + - ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 A$=[dd ] B$=[ +dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 A$=[ tttt ] B$=[ + tttt ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 A$=[ :::: ] B$=[ + :::: ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 A$=[ ___ ] B$=[ + ___ ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 A$=[ ] B$=[ + ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 A$=[ _____ ] B$=[ + _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 A$=[ S ] B$=[ + S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 A$=[ FFFF ] B$=[ + FFFF ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 A$=[ kkk] B$=[ + kkk] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 A$=[ NNNN ] +B$=[ NNNN ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 A$=[ mmmm ] B$=[ + mmmm ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 A$=[ ,,,,, ] +B$=[ ,,,,, ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 A$=[OO ] B$=[ +OO ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 A$=[ HHHH ] B$=[ + HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 A$=[ < ] B$=[ + < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 A$=[ j ] B$=[ + j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 A$=[ yyyy ] +B$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 A$=[ +++ ] B$=[ + +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 A$=[o ] B$=[ +o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 A$=[ ((] B$=[ + ((] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 A$=[ uu ] +B$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 A$=[ 00 ] +B$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 A$=[ HH ] B$=[ + HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 A$=[ G ] B$=[ + G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 A$=[ {{{{ ] B$=[ + {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 A$=[ ]]] ] +B$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 A$=[CCC] B$=[ +CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 A$=[ 44 ] B$=[ + 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 A$=[^^ ] B$=[ +^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 A$=[ QQ ] +B$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 A$=[ FFFF ] +B$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 A$=[ n ] B$=[ + n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 A$=[ hh ] B$=[ + hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 A$=[555 ] B$=[ +555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 A$=[ YYYY ] B$=[ + YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 A$=[ w ] +B$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 A$=[MMMM ] B$=[ +MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 A$=[ JJJJ ] B$=[ + JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 A$=[ %% ] +B$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 A$=[ * ] B$=[ + * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 A$=[ @@@ ] +B$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 A$=[I ] B$=[ +I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 A$=[ ss ] B$=[ + ss ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 A$=[ f ] B$=[ + f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 A$=[ D ] B$=[ + D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 0 X= 3790.9 A$=[### ] B$=[ +### ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 A$=[ ' ] +B$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 A$=[ dd ] B$=[ + dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 A$=[ TT ] B$=[ + TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 A$=[ vvv ] B$=[ + vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 A$=[ X ] B$=[ + X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 A$=[ % ] B$=[ + % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 A$=[ 5555 ] B$=[ + 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 A$=[FFFF ] B$=[ +FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 A$=[ %% ] B$=[ + %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 A$=[ ] B$=[ + ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 A$=[ ~~~~ ] +B$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 A$=[ || ] B$=[ + || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 A$=[ SSS ] +B$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 A$=[ 6666 ] B$=[ + 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 A$=[ ww ] B$=[ + ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 A$=[ 1111 ] B$=[ + 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 A$=[ K ] B$=[ + K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 A$=[ ttttt ] B$=[ + ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 A$=[ OOOOO ] B$=[ + OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 A$=[ E ] B$=[ + E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 A$=[ PPPPP ] B$=[ + PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 A$=[ == ] B$=[ + == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 A$=[ VVVV ] B$=[ + VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 A$=[ c ] B$=[ + c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 A$=[ + yyyy ] B$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INT_X_N.80 b/NBS2/F_INT_X_N.80 new file mode 100644 index 0000000..7e7e351 --- /dev/null +++ b/NBS2/F_INT_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-1 X=-.4 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1 X=-.227229 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1 X=-.239157 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1 X=-.213586 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1 X=-.277537 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1 X=-.481303 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1 X=-.210971 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-1 X=-.455216 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105 X= 105.632 + F= 0 N= 105 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-115 X=-114.341 + F= 0 N=-115 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109 X= 109.706 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85 X= 85.8773 + F= 0 N= 85 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-59 X=-58.3548 + F= 0 N=-59 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29 X= 29.6397 + F= 0 N= 29 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-109 X=-108.36 + F= 0 N=-109 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112 X= 112.521 + F= 0 N= 112 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-57 X=-56.1094 + F= 0 N=-57 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-122 X=-121.087 + F= 0 N=-122 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-65 X=-64.0001 + F= 0 N=-65 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14 X= 14.8006 + F= 0 N= 14 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-62 X=-61.0877 + F= 0 N=-62 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5477 X=-5476.5 + F= 0 N=-5477 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21211 X=-21210.3 + F= 0 N=-21211 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28758 X=-28757.2 + F= 0 N=-28758 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28733 X=-28732.2 + F= 0 N=-28733 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405 X= 22405.9 + F= 0 N= 22405 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809 X= 30809.8 + F= 0 N= 30809 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414 X= 17414.6 + F= 0 N= 17414 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10539 X=-10538.3 + F= 0 N=-10539 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17537 X=-17536.3 + F= 0 N=-17537 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5141 X=-5140.12 + F= 0 N=-5141 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8596 X=-8595.31 + F= 0 N=-8596 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5003 X=-5002.07 + F= 0 N=-5003 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790 X= 3790.9 + F= 0 N= 3790 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INT_X_N.BAS b/NBS2/F_INT_X_N.BAS new file mode 100644 index 0000000..7a30787 --- /dev/null +++ b/NBS2/F_INT_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:24 +REM FILENAME: F_INT_X_N.BAS +REM SYNTAX: N = INT( X ) +REM UNIQUEID: F_INT_X_N +REM FUNCTION: INT +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = INT( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , 0 , .4 +DATA 5 , 0 , -1 , -.4 +DATA 6 , 0 , 0 , .6 +DATA 7 , 0 , -1 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , -1 , -.227229 +DATA 13 , 0 , -1 , -.239157 +DATA 14 , 0 , -1 , -.213586 +DATA 15 , 0 , 0 , .274675 +DATA 16 , 0 , 0 , .169766 +DATA 17 , 0 , 0 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 +DATA 20 , 0 , -1 , -.277537 +DATA 21 , 0 , -1 , -.481303 +DATA 22 , 0 , 0 , .43556 +DATA 23 , 0 , -1 , -.210971 +DATA 24 , 0 , -1 , -.455216 +DATA 25 , 0 , -111 , -110.907 +DATA 26 , 0 , 105 , 105.632 +DATA 27 , 0 , -115 , -114.341 +DATA 28 , 0 , 109 , 109.706 +DATA 29 , 0 , 109 , 109.198 +DATA 30 , 0 , 85 , 85.8773 +DATA 31 , 0 , -59 , -58.3548 +DATA 32 , 0 , 29 , 29.6397 +DATA 33 , 0 , -109 , -108.36 +DATA 34 , 0 , -47 , -46.5199 +DATA 35 , 0 , 112 , 112.521 +DATA 36 , 0 , 45 , 45.4151 +DATA 37 , 0 , 101 , 101.129 +DATA 38 , 0 , 65 , 65.0473 +DATA 39 , 0 , 48 , 48.4012 +DATA 40 , 0 , 122 , 122.294 +DATA 41 , 0 , -57 , -56.1094 +DATA 42 , 0 , -122 , -121.087 +DATA 43 , 0 , -124 , -123.517 +DATA 44 , 0 , -98 , -97.6301 +DATA 45 , 0 , -65 , -64.0001 +DATA 46 , 0 , -26 , -25.6888 +DATA 47 , 0 , 14 , 14.8006 +DATA 48 , 0 , -62 , -61.0877 +DATA 49 , 0 , -67 , -66.6381 +DATA 50 , 0 , -5477 , -5476.5 +DATA 51 , 0 , -21211 , -21210.3 +DATA 52 , 0 , -28758 , -28757.2 +DATA 53 , 0 , -28733 , -28732.2 +DATA 54 , 0 , 12730 , 12730.3 +DATA 55 , 0 , -1831 , -1830.69 +DATA 56 , 0 , 5486 , 5486.39 +DATA 57 , 0 , 22405 , 22405.9 +DATA 58 , 0 , 30809 , 30809.8 +DATA 59 , 0 , -28931 , -28930.6 +DATA 60 , 0 , -6015 , -6014.53 +DATA 61 , 0 , 17414 , 17414.6 +DATA 62 , 0 , -10539 , -10538.3 +DATA 63 , 0 , -17537 , -17536.3 +DATA 64 , 0 , -8857 , -8856.62 +DATA 65 , 0 , -5141 , -5140.12 +DATA 66 , 0 , -8596 , -8595.31 +DATA 67 , 0 , -3383 , -3382.87 +DATA 68 , 0 , -5003 , -5002.07 +DATA 69 , 0 , -5801 , -5800.72 +DATA 70 , 0 , 29686 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3790 , 3790.9 +DATA 75 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_INT_X_N.OUT b/NBS2/F_INT_X_N.OUT new file mode 100644 index 0000000..06ac05b --- /dev/null +++ b/NBS2/F_INT_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-1 X=-.4 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1 X=-.227229 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1 X=-.239157 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1 X=-.213586 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1 X=-.277537 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1 X=-.481303 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1 X=-.210971 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-1 X=-.455216 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105 X= 105.632 + F= 0 N= 105 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-115 X=-114.341 + F= 0 N=-115 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109 X= 109.706 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85 X= 85.8773 + F= 0 N= 85 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-59 X=-58.3548 + F= 0 N=-59 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29 X= 29.6397 + F= 0 N= 29 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-109 X=-108.36 + F= 0 N=-109 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112 X= 112.521 + F= 0 N= 112 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-57 X=-56.1094 + F= 0 N=-57 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-122 X=-121.087 + F= 0 N=-122 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-65 X=-64.0001 + F= 0 N=-65 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14 X= 14.8006 + F= 0 N= 14 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-62 X=-61.0877 + F= 0 N=-62 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5477 X=-5476.5 + F= 0 N=-5477 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21211 X=-21210.3 + F= 0 N=-21211 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28758 X=-28757.2 + F= 0 N=-28758 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28733 X=-28732.2 + F= 0 N=-28733 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405 X= 22405.9 + F= 0 N= 22405 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809 X= 30809.8 + F= 0 N= 30809 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414 X= 17414.6 + F= 0 N= 17414 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10539 X=-10538.3 + F= 0 N=-10539 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17537 X=-17536.3 + F= 0 N=-17537 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5141 X=-5140.12 + F= 0 N=-5141 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8596 X=-8595.31 + F= 0 N=-8596 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5003 X=-5002.07 + F= 0 N=-5003 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790 X= 3790.9 + F= 0 N= 3790 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_INT_X_N.dif b/NBS2/F_INT_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_INT_X_N.run b/NBS2/F_INT_X_N.run new file mode 100644 index 0000000..7e7e351 --- /dev/null +++ b/NBS2/F_INT_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-1 X=-.4 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1 X=-.227229 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1 X=-.239157 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1 X=-.213586 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1 X=-.277537 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1 X=-.481303 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1 X=-.210971 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-1 X=-.455216 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-111 X=-110.907 + F= 0 N=-111 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105 X= 105.632 + F= 0 N= 105 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-115 X=-114.341 + F= 0 N=-115 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109 X= 109.706 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85 X= 85.8773 + F= 0 N= 85 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-59 X=-58.3548 + F= 0 N=-59 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29 X= 29.6397 + F= 0 N= 29 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-109 X=-108.36 + F= 0 N=-109 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-47 X=-46.5199 + F= 0 N=-47 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112 X= 112.521 + F= 0 N= 112 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-57 X=-56.1094 + F= 0 N=-57 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-122 X=-121.087 + F= 0 N=-122 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-124 X=-123.517 + F= 0 N=-124 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-98 X=-97.6301 + F= 0 N=-98 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-65 X=-64.0001 + F= 0 N=-65 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-26 X=-25.6888 + F= 0 N=-26 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14 X= 14.8006 + F= 0 N= 14 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-62 X=-61.0877 + F= 0 N=-62 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-67 X=-66.6381 + F= 0 N=-67 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5477 X=-5476.5 + F= 0 N=-5477 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21211 X=-21210.3 + F= 0 N=-21211 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28758 X=-28757.2 + F= 0 N=-28758 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28733 X=-28732.2 + F= 0 N=-28733 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1831 X=-1830.69 + F= 0 N=-1831 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405 X= 22405.9 + F= 0 N= 22405 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809 X= 30809.8 + F= 0 N= 30809 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28931 X=-28930.6 + F= 0 N=-28931 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6015 X=-6014.53 + F= 0 N=-6015 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414 X= 17414.6 + F= 0 N= 17414 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10539 X=-10538.3 + F= 0 N=-10539 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17537 X=-17536.3 + F= 0 N=-17537 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8857 X=-8856.62 + F= 0 N=-8857 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5141 X=-5140.12 + F= 0 N=-5141 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8596 X=-8595.31 + F= 0 N=-8596 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3383 X=-3382.87 + F= 0 N=-3383 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5003 X=-5002.07 + F= 0 N=-5003 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5801 X=-5800.72 + F= 0 N=-5801 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790 X= 3790.9 + F= 0 N= 3790 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_IP_X_N.80 b/NBS2/F_IP_X_N.80 new file mode 100644 index 0000000..a459321 --- /dev/null +++ b/NBS2/F_IP_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110 X=-110.907 + F= 0 N=-110 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105 X= 105.632 + F= 0 N= 105 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109 X= 109.706 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85 X= 85.8773 + F= 0 N= 85 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29 X= 29.6397 + F= 0 N= 29 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46 X=-46.5199 + F= 0 N=-46 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112 X= 112.521 + F= 0 N= 112 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123 X=-123.517 + F= 0 N=-123 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97 X=-97.6301 + F= 0 N=-97 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25 X=-25.6888 + F= 0 N=-25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14 X= 14.8006 + F= 0 N= 14 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66 X=-66.6381 + F= 0 N=-66 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830 X=-1830.69 + F= 0 N=-1830 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405 X= 22405.9 + F= 0 N= 22405 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809 X= 30809.8 + F= 0 N= 30809 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930 X=-28930.6 + F= 0 N=-28930 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014 X=-6014.53 + F= 0 N=-6014 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414 X= 17414.6 + F= 0 N= 17414 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856 X=-8856.62 + F= 0 N=-8856 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382 X=-3382.87 + F= 0 N=-3382 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800 X=-5800.72 + F= 0 N=-5800 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790 X= 3790.9 + F= 0 N= 3790 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_IP_X_N.BAS b/NBS2/F_IP_X_N.BAS new file mode 100644 index 0000000..63ece6d --- /dev/null +++ b/NBS2/F_IP_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:24 +REM FILENAME: F_IP_X_N.BAS +REM SYNTAX: N = IP( X ) +REM UNIQUEID: F_IP_X_N +REM FUNCTION: IP +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = IP( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , 0 , .4 +DATA 5 , 0 , 0 , -.4 +DATA 6 , 0 , 0 , .6 +DATA 7 , 0 , 0 , -.6 +DATA 8 , 0 , 254 , 254 +DATA 9 , 0 , 255 , 255 +DATA 10 , 0 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 +DATA 12 , 0 , 0 , -.227229 +DATA 13 , 0 , 0 , -.239157 +DATA 14 , 0 , 0 , -.213586 +DATA 15 , 0 , 0 , .274675 +DATA 16 , 0 , 0 , .169766 +DATA 17 , 0 , 0 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 +DATA 20 , 0 , 0 , -.277537 +DATA 21 , 0 , 0 , -.481303 +DATA 22 , 0 , 0 , .43556 +DATA 23 , 0 , 0 , -.210971 +DATA 24 , 0 , 0 , -.455216 +DATA 25 , 0 , -110 , -110.907 +DATA 26 , 0 , 105 , 105.632 +DATA 27 , 0 , -114 , -114.341 +DATA 28 , 0 , 109 , 109.706 +DATA 29 , 0 , 109 , 109.198 +DATA 30 , 0 , 85 , 85.8773 +DATA 31 , 0 , -58 , -58.3548 +DATA 32 , 0 , 29 , 29.6397 +DATA 33 , 0 , -108 , -108.36 +DATA 34 , 0 , -46 , -46.5199 +DATA 35 , 0 , 112 , 112.521 +DATA 36 , 0 , 45 , 45.4151 +DATA 37 , 0 , 101 , 101.129 +DATA 38 , 0 , 65 , 65.0473 +DATA 39 , 0 , 48 , 48.4012 +DATA 40 , 0 , 122 , 122.294 +DATA 41 , 0 , -56 , -56.1094 +DATA 42 , 0 , -121 , -121.087 +DATA 43 , 0 , -123 , -123.517 +DATA 44 , 0 , -97 , -97.6301 +DATA 45 , 0 , -64 , -64.0001 +DATA 46 , 0 , -25 , -25.6888 +DATA 47 , 0 , 14 , 14.8006 +DATA 48 , 0 , -61 , -61.0877 +DATA 49 , 0 , -66 , -66.6381 +DATA 50 , 0 , -5476 , -5476.5 +DATA 51 , 0 , -21210 , -21210.3 +DATA 52 , 0 , -28757 , -28757.2 +DATA 53 , 0 , -28732 , -28732.2 +DATA 54 , 0 , 12730 , 12730.3 +DATA 55 , 0 , -1830 , -1830.69 +DATA 56 , 0 , 5486 , 5486.39 +DATA 57 , 0 , 22405 , 22405.9 +DATA 58 , 0 , 30809 , 30809.8 +DATA 59 , 0 , -28930 , -28930.6 +DATA 60 , 0 , -6014 , -6014.53 +DATA 61 , 0 , 17414 , 17414.6 +DATA 62 , 0 , -10538 , -10538.3 +DATA 63 , 0 , -17536 , -17536.3 +DATA 64 , 0 , -8856 , -8856.62 +DATA 65 , 0 , -5140 , -5140.12 +DATA 66 , 0 , -8595 , -8595.31 +DATA 67 , 0 , -3382 , -3382.87 +DATA 68 , 0 , -5002 , -5002.07 +DATA 69 , 0 , -5800 , -5800.72 +DATA 70 , 0 , 29686 , 29686.4 +DATA 71 , 0 , 2571 , 2571. +DATA 72 , 0 , 31091 , 31091. +DATA 73 , 0 , 14819 , 14819. +DATA 74 , 0 , 3790 , 3790.9 +DATA 75 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_IP_X_N.OUT b/NBS2/F_IP_X_N.OUT new file mode 100644 index 0000000..f577c32 --- /dev/null +++ b/NBS2/F_IP_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110 X=-110.907 + F= 0 N=-110 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105 X= 105.632 + F= 0 N= 105 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109 X= 109.706 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85 X= 85.8773 + F= 0 N= 85 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29 X= 29.6397 + F= 0 N= 29 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46 X=-46.5199 + F= 0 N=-46 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112 X= 112.521 + F= 0 N= 112 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123 X=-123.517 + F= 0 N=-123 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97 X=-97.6301 + F= 0 N=-97 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25 X=-25.6888 + F= 0 N=-25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14 X= 14.8006 + F= 0 N= 14 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66 X=-66.6381 + F= 0 N=-66 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830 X=-1830.69 + F= 0 N=-1830 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405 X= 22405.9 + F= 0 N= 22405 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809 X= 30809.8 + F= 0 N= 30809 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930 X=-28930.6 + F= 0 N=-28930 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014 X=-6014.53 + F= 0 N=-6014 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414 X= 17414.6 + F= 0 N= 17414 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856 X=-8856.62 + F= 0 N=-8856 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382 X=-3382.87 + F= 0 N=-3382 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800 X=-5800.72 + F= 0 N=-5800 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790 X= 3790.9 + F= 0 N= 3790 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_IP_X_N.dif b/NBS2/F_IP_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_IP_X_N.run b/NBS2/F_IP_X_N.run new file mode 100644 index 0000000..a459321 --- /dev/null +++ b/NBS2/F_IP_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110 X=-110.907 + F= 0 N=-110 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105 X= 105.632 + F= 0 N= 105 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114 X=-114.341 + F= 0 N=-114 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109 X= 109.706 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109 X= 109.198 + F= 0 N= 109 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85 X= 85.8773 + F= 0 N= 85 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58 X=-58.3548 + F= 0 N=-58 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29 X= 29.6397 + F= 0 N= 29 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108 X=-108.36 + F= 0 N=-108 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46 X=-46.5199 + F= 0 N=-46 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112 X= 112.521 + F= 0 N= 112 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45 X= 45.4151 + F= 0 N= 45 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101 X= 101.129 + F= 0 N= 101 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65 X= 65.0473 + F= 0 N= 65 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48 X= 48.4012 + F= 0 N= 48 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122 X= 122.294 + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56 X=-56.1094 + F= 0 N=-56 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121 X=-121.087 + F= 0 N=-121 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123 X=-123.517 + F= 0 N=-123 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97 X=-97.6301 + F= 0 N=-97 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64 X=-64.0001 + F= 0 N=-64 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25 X=-25.6888 + F= 0 N=-25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14 X= 14.8006 + F= 0 N= 14 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61 X=-61.0877 + F= 0 N=-61 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66 X=-66.6381 + F= 0 N=-66 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476 X=-5476.5 + F= 0 N=-5476 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210 X=-21210.3 + F= 0 N=-21210 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757 X=-28757.2 + F= 0 N=-28757 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732 X=-28732.2 + F= 0 N=-28732 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730 X= 12730.3 + F= 0 N= 12730 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830 X=-1830.69 + F= 0 N=-1830 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486 X= 5486.39 + F= 0 N= 5486 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405 X= 22405.9 + F= 0 N= 22405 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809 X= 30809.8 + F= 0 N= 30809 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930 X=-28930.6 + F= 0 N=-28930 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014 X=-6014.53 + F= 0 N=-6014 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414 X= 17414.6 + F= 0 N= 17414 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538 X=-10538.3 + F= 0 N=-10538 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536 X=-17536.3 + F= 0 N=-17536 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856 X=-8856.62 + F= 0 N=-8856 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140 X=-5140.12 + F= 0 N=-5140 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595 X=-8595.31 + F= 0 N=-8595 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382 X=-3382.87 + F= 0 N=-3382 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002 X=-5002.07 + F= 0 N=-5002 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800 X=-5800.72 + F= 0 N=-5800 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686 X= 29686.4 + F= 0 N= 29686 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790 X= 3790.9 + F= 0 N= 3790 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LCASE_A_S.80 b/NBS2/F_LCASE_A_S.80 new file mode 100644 index 0000000..f185a59 --- /dev/null +++ b/NBS2/F_LCASE_A_S.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ z] A$=[ z] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ z ] A$=[ z ] + F= 0 S$=[ z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ llll] A$=[ LLLL] + F= 0 S$=[ llll] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ '' ] A$=[ '' ] + F= 0 S$=[ '' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ oo ] A$=[ oo ] + F= 0 S$=[ oo ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\ ] A$=[ \\\\ ] + F= 0 S$=[ \\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ lllll ] A$=[ lllll ] + F= 0 S$=[ lllll ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ uuuu ] A$=[ uuuu ] + F= 0 S$=[ uuuu ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ a ] A$=[ a ] + F= 0 S$=[ a ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ hh ] A$=[ hh ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ h ] A$=[ h ] + F= 0 S$=[ h ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5 ] A$=[ 5 ] + F= 0 S$=[ 5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2 ] A$=[ 2 ] + F= 0 S$=[ 2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd ] A$=[dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____ ] A$=[ _____ ] + F= 0 S$=[ _____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ s ] A$=[ S ] + F= 0 S$=[ s ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ ffff ] A$=[ FFFF ] + F= 0 S$=[ ffff ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ nnnn ] A$=[ NNNN ] + F= 0 S$=[ nnnn ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[oo ] A$=[OO ] + F= 0 S$=[oo ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ hhhh ] A$=[ HHHH ] + F= 0 S$=[ hhhh ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ < ] A$=[ < ] + F= 0 S$=[ < ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ j ] A$=[ j ] + F= 0 S$=[ j ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ yyyy ] A$=[ yyyy ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++ ] A$=[ +++ ] + F= 0 S$=[ +++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o ] A$=[o ] + F= 0 S$=[o ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ uu ] A$=[ uu ] + F= 0 S$=[ uu ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ hh ] A$=[ HH ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ g ] A$=[ G ] + F= 0 S$=[ g ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{ ] A$=[ {{{{ ] + F= 0 S$=[ {{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]] ] A$=[ ]]] ] + F= 0 S$=[ ]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[ccc] A$=[CCC] + F= 0 S$=[ccc] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44 ] A$=[ 44 ] + F= 0 S$=[ 44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ qq ] A$=[ QQ ] + F= 0 S$=[ qq ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ ffff ] A$=[ FFFF ] + F= 0 S$=[ ffff ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ n ] A$=[ n ] + F= 0 S$=[ n ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ hh ] A$=[ hh ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ yyyy ] A$=[ YYYY ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ w ] A$=[ w ] + F= 0 S$=[ w ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[mmmm ] A$=[MMMM ] + F= 0 S$=[mmmm ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ jjjj ] A$=[ JJJJ ] + F= 0 S$=[ jjjj ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ * ] A$=[ * ] + F= 0 S$=[ * ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@ ] A$=[ @@@ ] + F= 0 S$=[ @@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[i ] A$=[I ] + F= 0 S$=[i ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ f ] A$=[ f ] + F= 0 S$=[ f ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ d ] A$=[ D ] + F= 0 S$=[ d ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ ' ] A$=[ ' ] + F= 0 S$=[ ' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ dd ] A$=[ dd ] + F= 0 S$=[ dd ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ tt ] A$=[ TT ] + F= 0 S$=[ tt ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ vvv ] A$=[ vvv ] + F= 0 S$=[ vvv ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ x ] A$=[ X ] + F= 0 S$=[ x ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ % ] A$=[ % ] + F= 0 S$=[ % ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555 ] A$=[ 5555 ] + F= 0 S$=[ 5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[ffff ] A$=[FFFF ] + F= 0 S$=[ffff ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ || ] A$=[ || ] + F= 0 S$=[ || ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ sss ] A$=[ SSS ] + F= 0 S$=[ sss ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666 ] A$=[ 6666 ] + F= 0 S$=[ 6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ ww ] A$=[ ww ] + F= 0 S$=[ ww ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111 ] A$=[ 1111 ] + F= 0 S$=[ 1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ k ] A$=[ K ] + F= 0 S$=[ k ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ ttttt ] A$=[ ttttt ] + F= 0 S$=[ ttttt ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ ooooo ] A$=[ OOOOO ] + F= 0 S$=[ ooooo ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ e ] A$=[ E ] + F= 0 S$=[ e ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ ppppp ] A$=[ PPPPP ] + F= 0 S$=[ ppppp ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ == ] A$=[ == ] + F= 0 S$=[ == ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ vvvv ] A$=[ VVVV ] + F= 0 S$=[ vvvv ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ c ] A$=[ c ] + F= 0 S$=[ c ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ yyyy ] A$=[ + yyyy ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LCASE_A_S.BAS b/NBS2/F_LCASE_A_S.BAS new file mode 100644 index 0000000..e15fb56 --- /dev/null +++ b/NBS2/F_LCASE_A_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:25 +REM FILENAME: F_LCASE_A_S.BAS +REM SYNTAX: S$ = LCASE$( A$ ) +REM UNIQUEID: F_LCASE_A_S +REM FUNCTION: LCASE$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = LCASE$( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", "" +DATA 2 , 0 , " ", " " +DATA 3 , 0 , "3", "3" +DATA 4 , 0 , "z", "z" +DATA 5 , 0 , " ", " " +DATA 6 , 0 , " 3", " 3" +DATA 7 , 0 , " z", " z" +DATA 8 , 0 , "3 ", "3 " +DATA 9 , 0 , "z ", "z " +DATA 10 , 0 , " 3 ", " 3 " +DATA 11 , 0 , " z ", " z " +DATA 12 , 0 , " llll", " LLLL" +DATA 13 , 0 , " '' ", " '' " +DATA 14 , 0 , " oo ", " oo " +DATA 15 , 0 , " 00 ", " 00 " +DATA 16 , 0 , " \\\\ ", " \\\\ " +DATA 17 , 0 , " lllll ", " lllll " +DATA 18 , 0 , " uuuu ", " uuuu " +DATA 19 , 0 , " a ", " a " +DATA 20 , 0 , " ", " " +DATA 21 , 0 , " hh ", " hh " +DATA 22 , 0 , " h ", " h " +DATA 23 , 0 , " )", " )" +DATA 24 , 0 , " 5 ", " 5 " +DATA 25 , 0 , " 2 ", " 2 " +DATA 26 , 0 , " - ", " - " +DATA 27 , 0 , "dd ", "dd " +DATA 28 , 0 , " tttt ", " tttt " +DATA 29 , 0 , " :::: ", " :::: " +DATA 30 , 0 , " ___ ", " ___ " +DATA 31 , 0 , " ", " " +DATA 32 , 0 , " ", " " +DATA 33 , 0 , " _____ ", " _____ " +DATA 34 , 0 , " s ", " S " +DATA 35 , 0 , " ffff ", " FFFF " +DATA 36 , 0 , " kkk", " kkk" +DATA 37 , 0 , " nnnn ", " NNNN " +DATA 38 , 0 , " mmmm ", " mmmm " +DATA 39 , 0 , " ,,,,, ", " ,,,,, " +DATA 40 , 0 , "oo ", "OO " +DATA 41 , 0 , " hhhh ", " HHHH " +DATA 42 , 0 , " < ", " < " +DATA 43 , 0 , " j ", " j " +DATA 44 , 0 , " yyyy ", " yyyy " +DATA 45 , 0 , " +++ ", " +++ " +DATA 46 , 0 , "o ", "o " +DATA 47 , 0 , " ((", " ((" +DATA 48 , 0 , " uu ", " uu " +DATA 49 , 0 , " 00 ", " 00 " +DATA 50 , 0 , " hh ", " HH " +DATA 51 , 0 , " ", " " +DATA 52 , 0 , " g ", " G " +DATA 53 , 0 , " {{{{ ", " {{{{ " +DATA 54 , 0 , " ]]] ", " ]]] " +DATA 55 , 0 , "ccc", "CCC" +DATA 56 , 0 , " 44 ", " 44 " +DATA 57 , 0 , "^^ ", "^^ " +DATA 58 , 0 , " qq ", " QQ " +DATA 59 , 0 , " ffff ", " FFFF " +DATA 60 , 0 , " n ", " n " +DATA 61 , 0 , " hh ", " hh " +DATA 62 , 0 , "555 ", "555 " +DATA 63 , 0 , " yyyy ", " YYYY " +DATA 64 , 0 , " w ", " w " +DATA 65 , 0 , "mmmm ", "MMMM " +DATA 66 , 0 , " jjjj ", " JJJJ " +DATA 67 , 0 , " %% ", " %% " +DATA 68 , 0 , " * ", " * " +DATA 69 , 0 , " @@@ ", " @@@ " +DATA 70 , 0 , "i ", "I " +DATA 71 , 0 , " ss ", " ss " +DATA 72 , 0 , " f ", " f " +DATA 73 , 0 , " d ", " D " +DATA 74 , 0 , "### ", "### " +DATA 75 , 0 , " ' ", " ' " +DATA 76 , 0 , " dd ", " dd " +DATA 77 , 0 , " tt ", " TT " +DATA 78 , 0 , " vvv ", " vvv " +DATA 79 , 0 , " x ", " X " +DATA 80 , 0 , " % ", " % " +DATA 81 , 0 , " ", " " +DATA 82 , 0 , " 5555 ", " 5555 " +DATA 83 , 0 , "ffff ", "FFFF " +DATA 84 , 0 , " %% ", " %% " +DATA 85 , 0 , " ", " " +DATA 86 , 0 , " ~~~~ ", " ~~~~ " +DATA 87 , 0 , " || ", " || " +DATA 88 , 0 , " sss ", " SSS " +DATA 89 , 0 , " 6666 ", " 6666 " +DATA 90 , 0 , " ww ", " ww " +DATA 91 , 0 , " 1111 ", " 1111 " +DATA 92 , 0 , " k ", " K " +DATA 93 , 0 , " ttttt ", " ttttt " +DATA 94 , 0 , " ooooo ", " OOOOO " +DATA 95 , 0 , " e ", " E " +DATA 96 , 0 , " ppppp ", " PPPPP " +DATA 97 , 0 , " == ", " == " +DATA 98 , 0 , " vvvv ", " VVVV " +DATA 99 , 0 , " c ", " c " +DATA 100 , 0 , " yyyy ", " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_LCASE_A_S.OUT b/NBS2/F_LCASE_A_S.OUT new file mode 100644 index 0000000..e9c7e01 --- /dev/null +++ b/NBS2/F_LCASE_A_S.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ z] A$=[ z] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ z ] A$=[ z ] + F= 0 S$=[ z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ llll] A$=[ LLLL] + F= 0 S$=[ llll] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ '' ] A$=[ '' ] + F= 0 S$=[ '' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ oo ] A$=[ oo ] + F= 0 S$=[ oo ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\ ] A$=[ \\\\ ] + F= 0 S$=[ \\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ lllll ] A$=[ lllll ] + F= 0 S$=[ lllll ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ uuuu ] A$=[ uuuu ] + F= 0 S$=[ uuuu ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ a ] A$=[ a ] + F= 0 S$=[ a ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ hh ] A$=[ hh ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ h ] A$=[ h ] + F= 0 S$=[ h ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5 ] A$=[ 5 ] + F= 0 S$=[ 5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2 ] A$=[ 2 ] + F= 0 S$=[ 2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd ] A$=[dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____ ] A$=[ _____ ] + F= 0 S$=[ _____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ s ] A$=[ S ] + F= 0 S$=[ s ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ ffff ] A$=[ FFFF ] + F= 0 S$=[ ffff ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ nnnn ] A$=[ NNNN ] + F= 0 S$=[ nnnn ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[oo ] A$=[OO ] + F= 0 S$=[oo ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ hhhh ] A$=[ HHHH ] + F= 0 S$=[ hhhh ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ < ] A$=[ < ] + F= 0 S$=[ < ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ j ] A$=[ j ] + F= 0 S$=[ j ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ yyyy ] A$=[ yyyy ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++ ] A$=[ +++ ] + F= 0 S$=[ +++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o ] A$=[o ] + F= 0 S$=[o ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ uu ] A$=[ uu ] + F= 0 S$=[ uu ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ hh ] A$=[ HH ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ g ] A$=[ G ] + F= 0 S$=[ g ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{ ] A$=[ {{{{ ] + F= 0 S$=[ {{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]] ] A$=[ ]]] ] + F= 0 S$=[ ]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[ccc] A$=[CCC] + F= 0 S$=[ccc] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44 ] A$=[ 44 ] + F= 0 S$=[ 44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ qq ] A$=[ QQ ] + F= 0 S$=[ qq ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ ffff ] A$=[ FFFF ] + F= 0 S$=[ ffff ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ n ] A$=[ n ] + F= 0 S$=[ n ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ hh ] A$=[ hh ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ yyyy ] A$=[ YYYY ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ w ] A$=[ w ] + F= 0 S$=[ w ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[mmmm ] A$=[MMMM ] + F= 0 S$=[mmmm ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ jjjj ] A$=[ JJJJ ] + F= 0 S$=[ jjjj ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ * ] A$=[ * ] + F= 0 S$=[ * ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@ ] A$=[ @@@ ] + F= 0 S$=[ @@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[i ] A$=[I ] + F= 0 S$=[i ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ f ] A$=[ f ] + F= 0 S$=[ f ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ d ] A$=[ D ] + F= 0 S$=[ d ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ ' ] A$=[ ' ] + F= 0 S$=[ ' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ dd ] A$=[ dd ] + F= 0 S$=[ dd ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ tt ] A$=[ TT ] + F= 0 S$=[ tt ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ vvv ] A$=[ vvv ] + F= 0 S$=[ vvv ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ x ] A$=[ X ] + F= 0 S$=[ x ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ % ] A$=[ % ] + F= 0 S$=[ % ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555 ] A$=[ 5555 ] + F= 0 S$=[ 5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[ffff ] A$=[FFFF ] + F= 0 S$=[ffff ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ || ] A$=[ || ] + F= 0 S$=[ || ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ sss ] A$=[ SSS ] + F= 0 S$=[ sss ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666 ] A$=[ 6666 ] + F= 0 S$=[ 6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ ww ] A$=[ ww ] + F= 0 S$=[ ww ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111 ] A$=[ 1111 ] + F= 0 S$=[ 1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ k ] A$=[ K ] + F= 0 S$=[ k ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ ttttt ] A$=[ ttttt ] + F= 0 S$=[ ttttt ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ ooooo ] A$=[ OOOOO ] + F= 0 S$=[ ooooo ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ e ] A$=[ E ] + F= 0 S$=[ e ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ ppppp ] A$=[ PPPPP ] + F= 0 S$=[ ppppp ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ == ] A$=[ == ] + F= 0 S$=[ == ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ vvvv ] A$=[ VVVV ] + F= 0 S$=[ vvvv ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ c ] A$=[ c ] + F= 0 S$=[ c ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ yyyy ] A$=[ + yyyy ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LCASE_A_S.dif b/NBS2/F_LCASE_A_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_LCASE_A_S.run b/NBS2/F_LCASE_A_S.run new file mode 100644 index 0000000..f185a59 --- /dev/null +++ b/NBS2/F_LCASE_A_S.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ z] A$=[ z] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ z ] A$=[ z ] + F= 0 S$=[ z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ llll] A$=[ LLLL] + F= 0 S$=[ llll] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ '' ] A$=[ '' ] + F= 0 S$=[ '' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ oo ] A$=[ oo ] + F= 0 S$=[ oo ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\ ] A$=[ \\\\ ] + F= 0 S$=[ \\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ lllll ] A$=[ lllll ] + F= 0 S$=[ lllll ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ uuuu ] A$=[ uuuu ] + F= 0 S$=[ uuuu ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ a ] A$=[ a ] + F= 0 S$=[ a ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ hh ] A$=[ hh ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ h ] A$=[ h ] + F= 0 S$=[ h ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5 ] A$=[ 5 ] + F= 0 S$=[ 5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2 ] A$=[ 2 ] + F= 0 S$=[ 2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd ] A$=[dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____ ] A$=[ _____ ] + F= 0 S$=[ _____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ s ] A$=[ S ] + F= 0 S$=[ s ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ ffff ] A$=[ FFFF ] + F= 0 S$=[ ffff ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ nnnn ] A$=[ NNNN ] + F= 0 S$=[ nnnn ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[oo ] A$=[OO ] + F= 0 S$=[oo ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ hhhh ] A$=[ HHHH ] + F= 0 S$=[ hhhh ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ < ] A$=[ < ] + F= 0 S$=[ < ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ j ] A$=[ j ] + F= 0 S$=[ j ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ yyyy ] A$=[ yyyy ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++ ] A$=[ +++ ] + F= 0 S$=[ +++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o ] A$=[o ] + F= 0 S$=[o ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ uu ] A$=[ uu ] + F= 0 S$=[ uu ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ hh ] A$=[ HH ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ g ] A$=[ G ] + F= 0 S$=[ g ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{ ] A$=[ {{{{ ] + F= 0 S$=[ {{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]] ] A$=[ ]]] ] + F= 0 S$=[ ]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[ccc] A$=[CCC] + F= 0 S$=[ccc] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44 ] A$=[ 44 ] + F= 0 S$=[ 44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ qq ] A$=[ QQ ] + F= 0 S$=[ qq ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ ffff ] A$=[ FFFF ] + F= 0 S$=[ ffff ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ n ] A$=[ n ] + F= 0 S$=[ n ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ hh ] A$=[ hh ] + F= 0 S$=[ hh ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ yyyy ] A$=[ YYYY ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ w ] A$=[ w ] + F= 0 S$=[ w ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[mmmm ] A$=[MMMM ] + F= 0 S$=[mmmm ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ jjjj ] A$=[ JJJJ ] + F= 0 S$=[ jjjj ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ * ] A$=[ * ] + F= 0 S$=[ * ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@ ] A$=[ @@@ ] + F= 0 S$=[ @@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[i ] A$=[I ] + F= 0 S$=[i ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ f ] A$=[ f ] + F= 0 S$=[ f ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ d ] A$=[ D ] + F= 0 S$=[ d ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ ' ] A$=[ ' ] + F= 0 S$=[ ' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ dd ] A$=[ dd ] + F= 0 S$=[ dd ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ tt ] A$=[ TT ] + F= 0 S$=[ tt ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ vvv ] A$=[ vvv ] + F= 0 S$=[ vvv ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ x ] A$=[ X ] + F= 0 S$=[ x ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ % ] A$=[ % ] + F= 0 S$=[ % ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555 ] A$=[ 5555 ] + F= 0 S$=[ 5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[ffff ] A$=[FFFF ] + F= 0 S$=[ffff ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ || ] A$=[ || ] + F= 0 S$=[ || ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ sss ] A$=[ SSS ] + F= 0 S$=[ sss ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666 ] A$=[ 6666 ] + F= 0 S$=[ 6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ ww ] A$=[ ww ] + F= 0 S$=[ ww ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111 ] A$=[ 1111 ] + F= 0 S$=[ 1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ k ] A$=[ K ] + F= 0 S$=[ k ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ ttttt ] A$=[ ttttt ] + F= 0 S$=[ ttttt ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ ooooo ] A$=[ OOOOO ] + F= 0 S$=[ ooooo ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ e ] A$=[ E ] + F= 0 S$=[ e ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ ppppp ] A$=[ PPPPP ] + F= 0 S$=[ ppppp ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ == ] A$=[ == ] + F= 0 S$=[ == ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ vvvv ] A$=[ VVVV ] + F= 0 S$=[ vvvv ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ c ] A$=[ c ] + F= 0 S$=[ c ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ yyyy ] A$=[ + yyyy ] + F= 0 S$=[ yyyy ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LEFT_A_X_S.80 b/NBS2/F_LEFT_A_X_S.80 new file mode 100644 index 0000000..2125e9e --- /dev/null +++ b/NBS2/F_LEFT_A_X_S.80 @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] A$=[z] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] A$=[ 3] X= .6 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] X= 254 + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] X= 255 + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] X= 256 + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] A$=[ LLLL] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] A$=[ '' ] X= +-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] A$=[ oo ] X= +-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] A$=[ 00 ] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] A$=[ \\\\ ] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] A$=[ lllll ] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] A$=[ a ] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] A$=[ hh ] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] A$=[ h ] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] A$=[ )] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] A$=[ 5 ] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] X= 105.632 + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] X= 109.706 + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] X= 109.198 + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] X= 85.8773 + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] X= 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] X= 112.521 + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] X= 45.4151 + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] +X= 101.129 + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] +X= 48.4012 + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] X= 122.294 + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] X= 14.8006 + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] X= 2571 + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] X= 3790.9 + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LEFT_A_X_S.BAS b/NBS2/F_LEFT_A_X_S.BAS new file mode 100644 index 0000000..e6ef72c --- /dev/null +++ b/NBS2/F_LEFT_A_X_S.BAS @@ -0,0 +1,160 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:25 +REM FILENAME: F_LEFT_A_X_S.BAS +REM SYNTAX: S$ = LEFT$( A$, X ) +REM UNIQUEID: F_LEFT_A_X_S +REM FUNCTION: LEFT$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]", "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = LEFT$( A$, X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", "", 0 +DATA 2 , 0 , " ", " ", 1 +DATA 3 , 1 , "", "3", -1 +DATA 4 , 0 , "", "z", .4 +DATA 5 , 0 , "", " ", -.4 +DATA 6 , 0 , " ", " 3", .6 +DATA 7 , 1 , "", " z", -.6 +DATA 8 , 0 , "3 ", "3 ", 254 +DATA 9 , 0 , "z ", "z ", 255 +DATA 10 , 0 , " 3 ", " 3 ", 256 +DATA 11 , 1 , "", " z ", 32000 +DATA 12 , 0 , "", " LLLL", -.227229 +DATA 13 , 0 , "", " '' ", -.239157 +DATA 14 , 0 , "", " oo ", -.213586 +DATA 15 , 0 , "", " 00 ", .274675 +DATA 16 , 0 , "", " \\\\ ", .169766 +DATA 17 , 0 , "", " lllll ", .318766 +DATA 18 , 0 , "", " uuuu ", 2.06658E-2 +DATA 19 , 0 , "", " a ", .188257 +DATA 20 , 0 , "", " ", -.277537 +DATA 21 , 0 , "", " hh ", -.481303 +DATA 22 , 0 , "", " h ", .43556 +DATA 23 , 0 , "", " )", -.210971 +DATA 24 , 0 , "", " 5 ", -.455216 +DATA 25 , 1 , "", " 2 ", -110.907 +DATA 26 , 0 , " - ", " - ", 105.632 +DATA 27 , 1 , "", "dd ", -114.341 +DATA 28 , 0 , " tttt ", " tttt ", 109.706 +DATA 29 , 0 , " :::: ", " :::: ", 109.198 +DATA 30 , 0 , " ___ ", " ___ ", 85.8773 +DATA 31 , 1 , "", " ", -58.3548 +DATA 32 , 0 , " ", " ", 29.6397 +DATA 33 , 1 , "", " _____ ", -108.36 +DATA 34 , 1 , "", " S ", -46.5199 +DATA 35 , 0 , " FFFF ", " FFFF ", 112.521 +DATA 36 , 0 , " kkk", " kkk", 45.4151 +DATA 37 , 0 , " NNNN ", " NNNN ", 101.129 +DATA 38 , 0 , " mmmm ", " mmmm ", 65.0473 +DATA 39 , 0 , " ,,,,, ", " ,,,,, ", 48.4012 +DATA 40 , 0 , "OO ", "OO ", 122.294 +DATA 41 , 1 , "", " HHHH ", -56.1094 +DATA 42 , 1 , "", " < ", -121.087 +DATA 43 , 1 , "", " j ", -123.517 +DATA 44 , 1 , "", " yyyy ", -97.6301 +DATA 45 , 1 , "", " +++ ", -64.0001 +DATA 46 , 1 , "", "o ", -25.6888 +DATA 47 , 0 , " ((", " ((", 14.8006 +DATA 48 , 1 , "", " uu ", -61.0877 +DATA 49 , 1 , "", " 00 ", -66.6381 +DATA 50 , 1 , "", " HH ", -5476.5 +DATA 51 , 1 , "", " ", -21210.3 +DATA 52 , 1 , "", " G ", -28757.2 +DATA 53 , 1 , "", " {{{{ ", -28732.2 +DATA 54 , 1 , "", " ]]] ", 12730.3 +DATA 55 , 1 , "", "CCC", -1830.69 +DATA 56 , 1 , "", " 44 ", 5486.39 +DATA 57 , 1 , "", "^^ ", 22405.9 +DATA 58 , 1 , "", " QQ ", 30809.8 +DATA 59 , 1 , "", " FFFF ", -28930.6 +DATA 60 , 1 , "", " n ", -6014.53 +DATA 61 , 1 , "", " hh ", 17414.6 +DATA 62 , 1 , "", "555 ", -10538.3 +DATA 63 , 1 , "", " YYYY ", -17536.3 +DATA 64 , 1 , "", " w ", -8856.62 +DATA 65 , 1 , "", "MMMM ", -5140.12 +DATA 66 , 1 , "", " JJJJ ", -8595.31 +DATA 67 , 1 , "", " %% ", -3382.87 +DATA 68 , 1 , "", " * ", -5002.07 +DATA 69 , 1 , "", " @@@ ", -5800.72 +DATA 70 , 1 , "", "I ", 29686.4 +DATA 71 , 0 , " ss ", " ss ", 2571. +DATA 72 , 1 , "", " f ", 31091. +DATA 73 , 1 , "", " D ", 14819. +DATA 74 , 0 , "### ", "### ", 3790.9 +DATA 75 , 1 , "", " ' ", -4.2981E+9 +DATA 76 , 1 , "", " dd ", -7.05453E+8 +DATA 77 , 1 , "", " TT ", -3.10179E+9 +DATA 78 , 1 , "", " vvv ", -4.86159E+9 +DATA 79 , 1 , "", " X ", -8.62908E+8 +DATA 80 , 1 , "", " % ", -3.4101E+9 +DATA 81 , 1 , "", " ", 3.3889E+9 +DATA 82 , 1 , "", " 5555 ", 2.49826E+9 +DATA 83 , 1 , "", "FFFF ", 2.3491E+9 +DATA 84 , 1 , "", " %% ", 1.94745E+8 +DATA 85 , 1 , "", " ", 2.02475E+9 +DATA 86 , 1 , "", " ~~~~ ", -2.26748E+9 +DATA 87 , 1 , "", " || ", -2.10587E+9 +DATA 88 , 1 , "", " SSS ", 4.23585E+9 +DATA 89 , 1 , "", " 6666 ", -2.66524E+9 +DATA 90 , 1 , "", " ww ", 4.01052E+9 +DATA 91 , 1 , "", " 1111 ", -4.87912E+9 +DATA 92 , 1 , "", " K ", 1.77556E+9 +DATA 93 , 1 , "", " ttttt ", 2.87705E+8 +DATA 94 , 1 , "", " OOOOO ", 1.99977E+8 +DATA 95 , 1 , "", " E ", -3.39941E+9 +DATA 96 , 1 , "", " PPPPP ", -3.49119E+9 +DATA 97 , 1 , "", " == ", -2.86324E+9 +DATA 98 , 1 , "", " VVVV ", 4.20418E+9 +DATA 99 , 1 , "", " c ", -3.1518E+9 +DATA 100 , 1 , "", " yyyy ", 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_LEFT_A_X_S.OUT b/NBS2/F_LEFT_A_X_S.OUT new file mode 100644 index 0000000..7eb8e34 --- /dev/null +++ b/NBS2/F_LEFT_A_X_S.OUT @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] A$=[z] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] A$=[ 3] X= .6 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] X= 254 + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] X= 255 + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] X= 256 + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] A$=[ LLLL] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] A$=[ '' ] X= +-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] A$=[ oo ] X= +-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] A$=[ 00 ] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] A$=[ \\\\ ] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] A$=[ lllll ] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] A$=[ a ] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] A$=[ hh ] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] A$=[ h ] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] A$=[ )] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] A$=[ 5 ] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] X= 105.632 + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] X= 109.706 + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] X= 109.198 + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] X= 85.8773 + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] X= 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] X= 112.521 + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] X= 45.4151 + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] +X= 101.129 + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] +X= 48.4012 + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] X= 122.294 + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] X= 14.8006 + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] X= 2571 + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] X= 3790.9 + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LEFT_A_X_S.dif b/NBS2/F_LEFT_A_X_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_LEFT_A_X_S.run b/NBS2/F_LEFT_A_X_S.run new file mode 100644 index 0000000..2125e9e --- /dev/null +++ b/NBS2/F_LEFT_A_X_S.run @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] A$=[z] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] A$=[ 3] X= .6 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] X= 254 + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] X= 255 + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] X= 256 + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] A$=[ LLLL] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] A$=[ '' ] X= +-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] A$=[ oo ] X= +-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] A$=[ 00 ] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] A$=[ \\\\ ] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] A$=[ lllll ] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] A$=[ a ] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] A$=[ hh ] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] A$=[ h ] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] A$=[ )] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] A$=[ 5 ] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] X= 105.632 + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] X= 109.706 + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] X= 109.198 + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] X= 85.8773 + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] X= 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] X= 112.521 + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] X= 45.4151 + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] +X= 101.129 + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] +X= 48.4012 + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] X= 122.294 + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] X= 14.8006 + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] X= 2571 + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] X= 3790.9 + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LEN_A_N.80 b/NBS2/F_LEN_A_N.80 new file mode 100644 index 0000000..507620c --- /dev/null +++ b/NBS2/F_LEN_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 A$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 A$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 A$=[3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 A$=[z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 2 A$=[ ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 2 A$=[ 3] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2 A$=[ z] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2 A$=[3 ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2 A$=[z ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3 A$=[ 3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 3 A$=[ z ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 5 A$=[ LLLL] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 10 A$=[ '' ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 10 A$=[ oo ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5 A$=[ 00 ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 9 A$=[ \\\\ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 8 A$=[ lllll ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 10 A$=[ uuuu ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5 A$=[ a ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 7 A$=[ ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 8 A$=[ hh ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 6 A$=[ h ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 2 A$=[ )] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 8 A$=[ 5 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 4 A$=[ 2 ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5 A$=[ - ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 3 A$=[dd ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 9 A$=[ tttt ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9 A$=[ :::: ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9 A$=[ ___ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 7 A$=[ ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 8 A$=[ _____ ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 3 A$=[ S ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 7 A$=[ FFFF ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7 A$=[ kkk] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 10 A$=[ NNNN ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 9 A$=[ mmmm ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 10 A$=[ ,,,,, ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5 A$=[OO ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 9 A$=[ HHHH ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 3 A$=[ < ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 8 A$=[ j ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 12 A$=[ yyyy ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 6 A$=[ +++ ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 3 A$=[o ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 6 A$=[ ((] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 12 A$=[ uu ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 11 A$=[ 00 ] + F= 0 N= 11 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 9 A$=[ HH ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 6 A$=[ G ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 9 A$=[ {{{{ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12 A$=[ ]]] ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 3 A$=[CCC] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 9 A$=[ 44 ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4 A$=[^^ ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 10 A$=[ QQ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 11 A$=[ FFFF ] + F= 0 N= 11 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5 A$=[ n ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 8 A$=[ hh ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 7 A$=[555 ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 9 A$=[ YYYY ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 10 A$=[ w ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 5 A$=[MMMM ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 9 A$=[ JJJJ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 10 A$=[ %% ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 8 A$=[ * ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 10 A$=[ @@@ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 2 A$=[I ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 8 A$=[ ss ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4 A$=[ f ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 6 A$=[ D ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 7 A$=[### ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 10 A$=[ ' ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 8 A$=[ dd ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 7 A$=[ TT ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 6 A$=[ vvv ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 6 A$=[ X ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 8 A$=[ % ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 2 A$=[ ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8 A$=[ 5555 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 7 A$=[FFFF ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 9 A$=[ %% ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 10 A$=[ ~~~~ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 9 A$=[ || ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 13 A$=[ SSS ] + F= 0 N= 13 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 8 A$=[ 6666 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 9 A$=[ ww ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 9 A$=[ 1111 ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3 A$=[ K ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8 A$=[ ttttt ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 9 A$=[ OOOOO ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 4 A$=[ E ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 9 A$=[ PPPPP ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 7 A$=[ == ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 9 A$=[ VVVV ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5 A$=[ c ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 13 A$=[ yyyy ] + F= 0 N= 13 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LEN_A_N.BAS b/NBS2/F_LEN_A_N.BAS new file mode 100644 index 0000000..26f9fc0 --- /dev/null +++ b/NBS2/F_LEN_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:25 +REM FILENAME: F_LEN_A_N.BAS +REM SYNTAX: N = LEN( A$ ) +REM UNIQUEID: F_LEN_A_N +REM FUNCTION: LEN +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = LEN( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , "" +DATA 2 , 0 , 1 , " " +DATA 3 , 0 , 1 , "3" +DATA 4 , 0 , 1 , "z" +DATA 5 , 0 , 2 , " " +DATA 6 , 0 , 2 , " 3" +DATA 7 , 0 , 2 , " z" +DATA 8 , 0 , 2 , "3 " +DATA 9 , 0 , 2 , "z " +DATA 10 , 0 , 3 , " 3 " +DATA 11 , 0 , 3 , " z " +DATA 12 , 0 , 5 , " LLLL" +DATA 13 , 0 , 10 , " '' " +DATA 14 , 0 , 10 , " oo " +DATA 15 , 0 , 5 , " 00 " +DATA 16 , 0 , 9 , " \\\\ " +DATA 17 , 0 , 8 , " lllll " +DATA 18 , 0 , 10 , " uuuu " +DATA 19 , 0 , 5 , " a " +DATA 20 , 0 , 7 , " " +DATA 21 , 0 , 8 , " hh " +DATA 22 , 0 , 6 , " h " +DATA 23 , 0 , 2 , " )" +DATA 24 , 0 , 8 , " 5 " +DATA 25 , 0 , 4 , " 2 " +DATA 26 , 0 , 5 , " - " +DATA 27 , 0 , 3 , "dd " +DATA 28 , 0 , 9 , " tttt " +DATA 29 , 0 , 9 , " :::: " +DATA 30 , 0 , 9 , " ___ " +DATA 31 , 0 , 5 , " " +DATA 32 , 0 , 7 , " " +DATA 33 , 0 , 8 , " _____ " +DATA 34 , 0 , 3 , " S " +DATA 35 , 0 , 7 , " FFFF " +DATA 36 , 0 , 7 , " kkk" +DATA 37 , 0 , 10 , " NNNN " +DATA 38 , 0 , 9 , " mmmm " +DATA 39 , 0 , 10 , " ,,,,, " +DATA 40 , 0 , 5 , "OO " +DATA 41 , 0 , 9 , " HHHH " +DATA 42 , 0 , 3 , " < " +DATA 43 , 0 , 8 , " j " +DATA 44 , 0 , 12 , " yyyy " +DATA 45 , 0 , 6 , " +++ " +DATA 46 , 0 , 3 , "o " +DATA 47 , 0 , 6 , " ((" +DATA 48 , 0 , 12 , " uu " +DATA 49 , 0 , 11 , " 00 " +DATA 50 , 0 , 9 , " HH " +DATA 51 , 0 , 5 , " " +DATA 52 , 0 , 6 , " G " +DATA 53 , 0 , 9 , " {{{{ " +DATA 54 , 0 , 12 , " ]]] " +DATA 55 , 0 , 3 , "CCC" +DATA 56 , 0 , 9 , " 44 " +DATA 57 , 0 , 4 , "^^ " +DATA 58 , 0 , 10 , " QQ " +DATA 59 , 0 , 11 , " FFFF " +DATA 60 , 0 , 5 , " n " +DATA 61 , 0 , 8 , " hh " +DATA 62 , 0 , 7 , "555 " +DATA 63 , 0 , 9 , " YYYY " +DATA 64 , 0 , 10 , " w " +DATA 65 , 0 , 5 , "MMMM " +DATA 66 , 0 , 9 , " JJJJ " +DATA 67 , 0 , 10 , " %% " +DATA 68 , 0 , 8 , " * " +DATA 69 , 0 , 10 , " @@@ " +DATA 70 , 0 , 2 , "I " +DATA 71 , 0 , 8 , " ss " +DATA 72 , 0 , 4 , " f " +DATA 73 , 0 , 6 , " D " +DATA 74 , 0 , 7 , "### " +DATA 75 , 0 , 10 , " ' " +DATA 76 , 0 , 8 , " dd " +DATA 77 , 0 , 7 , " TT " +DATA 78 , 0 , 6 , " vvv " +DATA 79 , 0 , 6 , " X " +DATA 80 , 0 , 8 , " % " +DATA 81 , 0 , 2 , " " +DATA 82 , 0 , 8 , " 5555 " +DATA 83 , 0 , 7 , "FFFF " +DATA 84 , 0 , 9 , " %% " +DATA 85 , 0 , 5 , " " +DATA 86 , 0 , 10 , " ~~~~ " +DATA 87 , 0 , 9 , " || " +DATA 88 , 0 , 13 , " SSS " +DATA 89 , 0 , 8 , " 6666 " +DATA 90 , 0 , 9 , " ww " +DATA 91 , 0 , 9 , " 1111 " +DATA 92 , 0 , 3 , " K " +DATA 93 , 0 , 8 , " ttttt " +DATA 94 , 0 , 9 , " OOOOO " +DATA 95 , 0 , 4 , " E " +DATA 96 , 0 , 9 , " PPPPP " +DATA 97 , 0 , 7 , " == " +DATA 98 , 0 , 9 , " VVVV " +DATA 99 , 0 , 5 , " c " +DATA 100 , 0 , 13 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_LEN_A_N.OUT b/NBS2/F_LEN_A_N.OUT new file mode 100644 index 0000000..ef8cea6 --- /dev/null +++ b/NBS2/F_LEN_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 A$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 A$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 A$=[3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 A$=[z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 2 A$=[ ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 2 A$=[ 3] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2 A$=[ z] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2 A$=[3 ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2 A$=[z ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3 A$=[ 3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 3 A$=[ z ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 5 A$=[ LLLL] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 10 A$=[ '' ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 10 A$=[ oo ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5 A$=[ 00 ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 9 A$=[ \\\\ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 8 A$=[ lllll ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 10 A$=[ uuuu ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5 A$=[ a ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 7 A$=[ ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 8 A$=[ hh ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 6 A$=[ h ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 2 A$=[ )] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 8 A$=[ 5 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 4 A$=[ 2 ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5 A$=[ - ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 3 A$=[dd ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 9 A$=[ tttt ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9 A$=[ :::: ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9 A$=[ ___ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 7 A$=[ ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 8 A$=[ _____ ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 3 A$=[ S ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 7 A$=[ FFFF ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7 A$=[ kkk] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 10 A$=[ NNNN ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 9 A$=[ mmmm ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 10 A$=[ ,,,,, ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5 A$=[OO ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 9 A$=[ HHHH ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 3 A$=[ < ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 8 A$=[ j ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 12 A$=[ yyyy ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 6 A$=[ +++ ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 3 A$=[o ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 6 A$=[ ((] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 12 A$=[ uu ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 11 A$=[ 00 ] + F= 0 N= 11 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 9 A$=[ HH ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 6 A$=[ G ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 9 A$=[ {{{{ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12 A$=[ ]]] ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 3 A$=[CCC] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 9 A$=[ 44 ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4 A$=[^^ ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 10 A$=[ QQ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 11 A$=[ FFFF ] + F= 0 N= 11 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5 A$=[ n ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 8 A$=[ hh ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 7 A$=[555 ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 9 A$=[ YYYY ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 10 A$=[ w ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 5 A$=[MMMM ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 9 A$=[ JJJJ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 10 A$=[ %% ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 8 A$=[ * ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 10 A$=[ @@@ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 2 A$=[I ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 8 A$=[ ss ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4 A$=[ f ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 6 A$=[ D ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 7 A$=[### ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 10 A$=[ ' ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 8 A$=[ dd ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 7 A$=[ TT ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 6 A$=[ vvv ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 6 A$=[ X ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 8 A$=[ % ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 2 A$=[ ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8 A$=[ 5555 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 7 A$=[FFFF ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 9 A$=[ %% ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 10 A$=[ ~~~~ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 9 A$=[ || ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 13 A$=[ SSS ] + F= 0 N= 13 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 8 A$=[ 6666 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 9 A$=[ ww ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 9 A$=[ 1111 ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3 A$=[ K ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8 A$=[ ttttt ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 9 A$=[ OOOOO ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 4 A$=[ E ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 9 A$=[ PPPPP ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 7 A$=[ == ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 9 A$=[ VVVV ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5 A$=[ c ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 13 A$=[ yyyy ] + F= 0 N= 13 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LEN_A_N.dif b/NBS2/F_LEN_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_LEN_A_N.run b/NBS2/F_LEN_A_N.run new file mode 100644 index 0000000..507620c --- /dev/null +++ b/NBS2/F_LEN_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 A$=[] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 A$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 A$=[3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 A$=[z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 2 A$=[ ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 2 A$=[ 3] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 2 A$=[ z] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2 A$=[3 ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2 A$=[z ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3 A$=[ 3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 3 A$=[ z ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 5 A$=[ LLLL] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 10 A$=[ '' ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 10 A$=[ oo ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 5 A$=[ 00 ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 9 A$=[ \\\\ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 8 A$=[ lllll ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 10 A$=[ uuuu ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 5 A$=[ a ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 7 A$=[ ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 8 A$=[ hh ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 6 A$=[ h ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 2 A$=[ )] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 8 A$=[ 5 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 4 A$=[ 2 ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 5 A$=[ - ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 3 A$=[dd ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 9 A$=[ tttt ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 9 A$=[ :::: ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9 A$=[ ___ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 7 A$=[ ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 8 A$=[ _____ ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 3 A$=[ S ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 7 A$=[ FFFF ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7 A$=[ kkk] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 10 A$=[ NNNN ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 9 A$=[ mmmm ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 10 A$=[ ,,,,, ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 5 A$=[OO ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 9 A$=[ HHHH ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 3 A$=[ < ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 8 A$=[ j ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 12 A$=[ yyyy ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 6 A$=[ +++ ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 3 A$=[o ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 6 A$=[ ((] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 12 A$=[ uu ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 11 A$=[ 00 ] + F= 0 N= 11 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 9 A$=[ HH ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 6 A$=[ G ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 9 A$=[ {{{{ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12 A$=[ ]]] ] + F= 0 N= 12 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 3 A$=[CCC] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 9 A$=[ 44 ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4 A$=[^^ ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 10 A$=[ QQ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 11 A$=[ FFFF ] + F= 0 N= 11 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 5 A$=[ n ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 8 A$=[ hh ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 7 A$=[555 ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 9 A$=[ YYYY ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 10 A$=[ w ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 5 A$=[MMMM ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 9 A$=[ JJJJ ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 10 A$=[ %% ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 8 A$=[ * ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 10 A$=[ @@@ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 2 A$=[I ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 8 A$=[ ss ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4 A$=[ f ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 6 A$=[ D ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 7 A$=[### ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 10 A$=[ ' ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 8 A$=[ dd ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 7 A$=[ TT ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 6 A$=[ vvv ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 6 A$=[ X ] + F= 0 N= 6 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 8 A$=[ % ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 2 A$=[ ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 8 A$=[ 5555 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 7 A$=[FFFF ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 9 A$=[ %% ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 5 A$=[ ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 10 A$=[ ~~~~ ] + F= 0 N= 10 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 9 A$=[ || ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 13 A$=[ SSS ] + F= 0 N= 13 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 8 A$=[ 6666 ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 9 A$=[ ww ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 9 A$=[ 1111 ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3 A$=[ K ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8 A$=[ ttttt ] + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 9 A$=[ OOOOO ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 4 A$=[ E ] + F= 0 N= 4 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 9 A$=[ PPPPP ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 7 A$=[ == ] + F= 0 N= 7 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 9 A$=[ VVVV ] + F= 0 N= 9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 5 A$=[ c ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 13 A$=[ yyyy ] + F= 0 N= 13 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOC_X_N.run b/NBS2/F_LOC_X_N.run new file mode 100644 index 0000000..c692128 --- /dev/null +++ b/NBS2/F_LOC_X_N.run @@ -0,0 +1,8 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 1 N= 0 +*** TEST FAILED, EXCEPTION MISMATCH *** + +Program interrupted at line 1006 diff --git a/NBS2/F_LOF_X_N.run b/NBS2/F_LOF_X_N.run new file mode 100644 index 0000000..e092330 --- /dev/null +++ b/NBS2/F_LOF_X_N.run @@ -0,0 +1,8 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 2950 X= 1 + F= 1 N= 0 +*** TEST FAILED, EXCEPTION MISMATCH *** + +Program interrupted at line 1006 diff --git a/NBS2/F_LOG10_X_N.80 b/NBS2/F_LOG10_X_N.80 new file mode 100644 index 0000000..130a5d3 --- /dev/null +++ b/NBS2/F_LOG10_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-.39794 X= .4 + F= 0 N=-.39794 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.221849 X= .6 + F= 0 N=-.221849 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.40483 X= 254 + F= 0 N= 2.40483 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.40654 X= 255 + F= 0 N= 2.40654 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 2.40824 X= 256 + F= 0 N= 2.40824 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 4.50515 X= 32000 + F= 0 N= 4.50515 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-.561181 X= .274675 + F= 0 N=-.561181 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-.770149 X= .169766 + F= 0 N=-.770149 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-.496528 X= .318766 + F= 0 N=-.496528 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-1.68475 X= 2.06658E-2 + F= 0 N=-1.68475 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-.725249 X= .188257 + F= 0 N=-.725249 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-.360952 X= .43556 + F= 0 N=-.360952 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.0238 X= 105.632 + F= 0 N= 2.0238 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.04023 X= 109.706 + F= 0 N= 2.04023 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.03821 X= 109.198 + F= 0 N= 2.03821 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.93388 X= 85.8773 + F= 0 N= 1.93388 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.47187 X= 29.6397 + F= 0 N= 1.47187 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 2.05123 X= 112.521 + F= 0 N= 2.05123 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.6572 X= 45.4151 + F= 0 N= 1.6572 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 2.00488 X= 101.129 + F= 0 N= 2.00488 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.81323 X= 65.0473 + F= 0 N= 1.81323 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.68486 X= 48.4012 + F= 0 N= 1.68486 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.08741 X= 122.294 + F= 0 N= 2.08741 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.17028 X= 14.8006 + F= 0 N= 1.17028 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 4.10484 X= 12730.3 + F= 0 N= 4.10484 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 3.73929 X= 5486.39 + F= 0 N= 3.73929 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4.35036 X= 22405.9 + F= 0 N= 4.35036 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4.48869 X= 30809.8 + F= 0 N= 4.48869 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 4.24091 X= 17414.6 + F= 0 N= 4.24091 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 4.47256 X= 29686.4 + F= 0 N= 4.47256 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 3.4101 X= 2571 + F= 0 N= 3.4101 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4.49263 X= 31091 + F= 0 N= 4.49263 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 4.17082 X= 14819 + F= 0 N= 4.17082 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3.57874 X= 3790.9 + F= 0 N= 3.57874 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 9.53006 X= 3.3889E+9 + F= 0 N= 9.53006 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 9.39764 X= 2.49826E+9 + F= 0 N= 9.39764 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 9.3709 X= 2.3491E+9 + F= 0 N= 9.3709 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 8.28947 X= 1.94745E+8 + F= 0 N= 8.28947 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 9.30637 X= 2.02475E+9 + F= 0 N= 9.30637 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 9.62694 X= 4.23585E+9 + F= 0 N= 9.62694 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 9.6032 X= 4.01052E+9 + F= 0 N= 9.6032 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 9.24934 X= 1.77556E+9 + F= 0 N= 9.24934 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8.45895 X= 2.87705E+8 + F= 0 N= 8.45895 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 8.30098 X= 1.99977E+8 + F= 0 N= 8.30098 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 9.62368 X= 4.20418E+9 + F= 0 N= 9.62368 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 9.66334 X= 4.60615E+9 + F= 0 N= 9.66334 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOG10_X_N.BAS b/NBS2/F_LOG10_X_N.BAS new file mode 100644 index 0000000..358398c --- /dev/null +++ b/NBS2/F_LOG10_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:26 +REM FILENAME: F_LOG10_X_N.BAS +REM SYNTAX: N = LOG10( X ) +REM UNIQUEID: F_LOG10_X_N +REM FUNCTION: LOG10 +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = LOG10( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , 0 +DATA 2 , 0 , 0 , 1 +DATA 3 , 1 , 0 , -1 +DATA 4 , 0 , -.39794 , .4 +DATA 5 , 1 , 0 , -.4 +DATA 6 , 0 , -.221849 , .6 +DATA 7 , 1 , 0 , -.6 +DATA 8 , 0 , 2.40483 , 254 +DATA 9 , 0 , 2.40654 , 255 +DATA 10 , 0 , 2.40824 , 256 +DATA 11 , 0 , 4.50515 , 32000 +DATA 12 , 1 , 0 , -.227229 +DATA 13 , 1 , 0 , -.239157 +DATA 14 , 1 , 0 , -.213586 +DATA 15 , 0 , -.561181 , .274675 +DATA 16 , 0 , -.770149 , .169766 +DATA 17 , 0 , -.496528 , .318766 +DATA 18 , 0 , -1.68475 , 2.06658E-2 +DATA 19 , 0 , -.725249 , .188257 +DATA 20 , 1 , 0 , -.277537 +DATA 21 , 1 , 0 , -.481303 +DATA 22 , 0 , -.360952 , .43556 +DATA 23 , 1 , 0 , -.210971 +DATA 24 , 1 , 0 , -.455216 +DATA 25 , 1 , 0 , -110.907 +DATA 26 , 0 , 2.0238 , 105.632 +DATA 27 , 1 , 0 , -114.341 +DATA 28 , 0 , 2.04023 , 109.706 +DATA 29 , 0 , 2.03821 , 109.198 +DATA 30 , 0 , 1.93388 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 +DATA 32 , 0 , 1.47187 , 29.6397 +DATA 33 , 1 , 0 , -108.36 +DATA 34 , 1 , 0 , -46.5199 +DATA 35 , 0 , 2.05123 , 112.521 +DATA 36 , 0 , 1.6572 , 45.4151 +DATA 37 , 0 , 2.00488 , 101.129 +DATA 38 , 0 , 1.81323 , 65.0473 +DATA 39 , 0 , 1.68486 , 48.4012 +DATA 40 , 0 , 2.08741 , 122.294 +DATA 41 , 1 , 0 , -56.1094 +DATA 42 , 1 , 0 , -121.087 +DATA 43 , 1 , 0 , -123.517 +DATA 44 , 1 , 0 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 +DATA 46 , 1 , 0 , -25.6888 +DATA 47 , 0 , 1.17028 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 +DATA 54 , 0 , 4.10484 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 +DATA 56 , 0 , 3.73929 , 5486.39 +DATA 57 , 0 , 4.35036 , 22405.9 +DATA 58 , 0 , 4.48869 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 +DATA 61 , 0 , 4.24091 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 +DATA 70 , 0 , 4.47256 , 29686.4 +DATA 71 , 0 , 3.4101 , 2571. +DATA 72 , 0 , 4.49263 , 31091. +DATA 73 , 0 , 4.17082 , 14819. +DATA 74 , 0 , 3.57874 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 0 , 9.53006 , 3.3889E+9 +DATA 82 , 0 , 9.39764 , 2.49826E+9 +DATA 83 , 0 , 9.3709 , 2.3491E+9 +DATA 84 , 0 , 8.28947 , 1.94745E+8 +DATA 85 , 0 , 9.30637 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 0 , 9.62694 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 0 , 9.6032 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 0 , 9.24934 , 1.77556E+9 +DATA 93 , 0 , 8.45895 , 2.87705E+8 +DATA 94 , 0 , 8.30098 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 0 , 9.62368 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 0 , 9.66334 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_LOG10_X_N.OUT b/NBS2/F_LOG10_X_N.OUT new file mode 100644 index 0000000..ee276e4 --- /dev/null +++ b/NBS2/F_LOG10_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-.39794 X= .4 + F= 0 N=-.39794 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.221849 X= .6 + F= 0 N=-.221849 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.40483 X= 254 + F= 0 N= 2.40483 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.40654 X= 255 + F= 0 N= 2.40654 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 2.40824 X= 256 + F= 0 N= 2.40824 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 4.50515 X= 32000 + F= 0 N= 4.50515 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-.561181 X= .274675 + F= 0 N=-.561181 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-.770149 X= .169766 + F= 0 N=-.770149 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-.496528 X= .318766 + F= 0 N=-.496528 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-1.68475 X= 2.06658E-2 + F= 0 N=-1.68475 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-.725249 X= .188257 + F= 0 N=-.725249 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-.360952 X= .43556 + F= 0 N=-.360952 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.0238 X= 105.632 + F= 0 N= 2.0238 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.04023 X= 109.706 + F= 0 N= 2.04023 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.03821 X= 109.198 + F= 0 N= 2.03821 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.93388 X= 85.8773 + F= 0 N= 1.93388 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.47187 X= 29.6397 + F= 0 N= 1.47187 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 2.05123 X= 112.521 + F= 0 N= 2.05123 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.6572 X= 45.4151 + F= 0 N= 1.6572 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 2.00488 X= 101.129 + F= 0 N= 2.00488 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.81323 X= 65.0473 + F= 0 N= 1.81323 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.68486 X= 48.4012 + F= 0 N= 1.68486 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.08741 X= 122.294 + F= 0 N= 2.08741 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.17028 X= 14.8006 + F= 0 N= 1.17028 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 4.10484 X= 12730.3 + F= 0 N= 4.10484 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 3.73929 X= 5486.39 + F= 0 N= 3.73929 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4.35036 X= 22405.9 + F= 0 N= 4.35036 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4.48869 X= 30809.8 + F= 0 N= 4.48869 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 4.24091 X= 17414.6 + F= 0 N= 4.24091 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 4.47256 X= 29686.4 + F= 0 N= 4.47256 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 3.4101 X= 2571 + F= 0 N= 3.4101 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4.49263 X= 31091 + F= 0 N= 4.49263 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 4.17082 X= 14819 + F= 0 N= 4.17082 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3.57874 X= 3790.9 + F= 0 N= 3.57874 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 9.53006 X= 3.3889E+9 + F= 0 N= 9.53006 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 9.39764 X= 2.49826E+9 + F= 0 N= 9.39764 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 9.3709 X= 2.3491E+9 + F= 0 N= 9.3709 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 8.28947 X= 1.94745E+8 + F= 0 N= 8.28947 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 9.30637 X= 2.02475E+9 + F= 0 N= 9.30637 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 9.62694 X= 4.23585E+9 + F= 0 N= 9.62694 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 9.6032 X= 4.01052E+9 + F= 0 N= 9.6032 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 9.24934 X= 1.77556E+9 + F= 0 N= 9.24934 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8.45895 X= 2.87705E+8 + F= 0 N= 8.45895 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 8.30098 X= 1.99977E+8 + F= 0 N= 8.30098 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 9.62368 X= 4.20418E+9 + F= 0 N= 9.62368 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 9.66334 X= 4.60615E+9 + F= 0 N= 9.66334 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOG10_X_N.dif b/NBS2/F_LOG10_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_LOG10_X_N.run b/NBS2/F_LOG10_X_N.run new file mode 100644 index 0000000..130a5d3 --- /dev/null +++ b/NBS2/F_LOG10_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-.39794 X= .4 + F= 0 N=-.39794 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.221849 X= .6 + F= 0 N=-.221849 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 2.40483 X= 254 + F= 0 N= 2.40483 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.40654 X= 255 + F= 0 N= 2.40654 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 2.40824 X= 256 + F= 0 N= 2.40824 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 4.50515 X= 32000 + F= 0 N= 4.50515 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-.561181 X= .274675 + F= 0 N=-.561181 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-.770149 X= .169766 + F= 0 N=-.770149 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-.496528 X= .318766 + F= 0 N=-.496528 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-1.68475 X= 2.06658E-2 + F= 0 N=-1.68475 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-.725249 X= .188257 + F= 0 N=-.725249 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-.360952 X= .43556 + F= 0 N=-.360952 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.0238 X= 105.632 + F= 0 N= 2.0238 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.04023 X= 109.706 + F= 0 N= 2.04023 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 2.03821 X= 109.198 + F= 0 N= 2.03821 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.93388 X= 85.8773 + F= 0 N= 1.93388 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1.47187 X= 29.6397 + F= 0 N= 1.47187 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 2.05123 X= 112.521 + F= 0 N= 2.05123 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1.6572 X= 45.4151 + F= 0 N= 1.6572 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 2.00488 X= 101.129 + F= 0 N= 2.00488 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.81323 X= 65.0473 + F= 0 N= 1.81323 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1.68486 X= 48.4012 + F= 0 N= 1.68486 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.08741 X= 122.294 + F= 0 N= 2.08741 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.17028 X= 14.8006 + F= 0 N= 1.17028 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 4.10484 X= 12730.3 + F= 0 N= 4.10484 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 3.73929 X= 5486.39 + F= 0 N= 3.73929 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4.35036 X= 22405.9 + F= 0 N= 4.35036 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4.48869 X= 30809.8 + F= 0 N= 4.48869 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 4.24091 X= 17414.6 + F= 0 N= 4.24091 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 4.47256 X= 29686.4 + F= 0 N= 4.47256 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 3.4101 X= 2571 + F= 0 N= 3.4101 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4.49263 X= 31091 + F= 0 N= 4.49263 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 4.17082 X= 14819 + F= 0 N= 4.17082 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3.57874 X= 3790.9 + F= 0 N= 3.57874 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 9.53006 X= 3.3889E+9 + F= 0 N= 9.53006 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 9.39764 X= 2.49826E+9 + F= 0 N= 9.39764 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 9.3709 X= 2.3491E+9 + F= 0 N= 9.3709 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 8.28947 X= 1.94745E+8 + F= 0 N= 8.28947 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 9.30637 X= 2.02475E+9 + F= 0 N= 9.30637 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 9.62694 X= 4.23585E+9 + F= 0 N= 9.62694 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 9.6032 X= 4.01052E+9 + F= 0 N= 9.6032 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 9.24934 X= 1.77556E+9 + F= 0 N= 9.24934 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 8.45895 X= 2.87705E+8 + F= 0 N= 8.45895 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 8.30098 X= 1.99977E+8 + F= 0 N= 8.30098 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 9.62368 X= 4.20418E+9 + F= 0 N= 9.62368 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 9.66334 X= 4.60615E+9 + F= 0 N= 9.66334 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOG2_X_N.80 b/NBS2/F_LOG2_X_N.80 new file mode 100644 index 0000000..2130de4 --- /dev/null +++ b/NBS2/F_LOG2_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-1.32193 X= .4 + F= 0 N=-1.32193 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.736966 X= .6 + F= 0 N=-.736966 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 7.98868 X= 254 + F= 0 N= 7.98868 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 7.99435 X= 255 + F= 0 N= 7.99435 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 8 X= 256 + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 14.9658 X= 32000 + F= 0 N= 14.9658 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-1.8642 X= .274675 + F= 0 N=-1.8642 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-2.55838 X= .169766 + F= 0 N=-2.55838 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-1.64943 X= .318766 + F= 0 N=-1.64943 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-5.59661 X= 2.06658E-2 + F= 0 N=-5.59661 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-2.40922 X= .188257 + F= 0 N=-2.40922 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-1.19906 X= .43556 + F= 0 N=-1.19906 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 6.7229 X= 105.632 + F= 0 N= 6.7229 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6.7775 X= 109.706 + F= 0 N= 6.7775 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6.7708 X= 109.198 + F= 0 N= 6.7708 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 6.4242 X= 85.8773 + F= 0 N= 6.4242 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4.88946 X= 29.6397 + F= 0 N= 4.88946 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 6.81405 X= 112.521 + F= 0 N= 6.81405 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.5051 X= 45.4151 + F= 0 N= 5.5051 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 6.66005 X= 101.129 + F= 0 N= 6.66005 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 6.02342 X= 65.0473 + F= 0 N= 6.02342 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.59697 X= 48.4012 + F= 0 N= 5.59697 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.93421 X= 122.294 + F= 0 N= 6.93421 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 3.88758 X= 14.8006 + F= 0 N= 3.88758 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 13.636 X= 12730.3 + F= 0 N= 13.636 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 12.4216 X= 5486.39 + F= 0 N= 12.4216 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 14.4516 X= 22405.9 + F= 0 N= 14.4516 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 14.9111 X= 30809.8 + F= 0 N= 14.9111 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 14.088 X= 17414.6 + F= 0 N= 14.088 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 14.8575 X= 29686.4 + F= 0 N= 14.8575 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 11.3281 X= 2571 + F= 0 N= 11.3281 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 14.9242 X= 31091 + F= 0 N= 14.9242 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 13.8552 X= 14819 + F= 0 N= 13.8552 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 11.8883 X= 3790.9 + F= 0 N= 11.8883 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 31.6582 X= 3.3889E+9 + F= 0 N= 31.6582 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 31.2183 X= 2.49826E+9 + F= 0 N= 31.2183 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 31.1295 X= 2.3491E+9 + F= 0 N= 31.1295 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 27.537 X= 1.94745E+8 + F= 0 N= 27.537 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 30.9151 X= 2.02475E+9 + F= 0 N= 30.9151 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 31.98 X= 4.23585E+9 + F= 0 N= 31.98 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 31.9011 X= 4.01052E+9 + F= 0 N= 31.9011 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 30.7256 X= 1.77556E+9 + F= 0 N= 30.7256 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 28.1 X= 2.87705E+8 + F= 0 N= 28.1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 27.5753 X= 1.99977E+8 + F= 0 N= 27.5753 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 31.9692 X= 4.20418E+9 + F= 0 N= 31.9692 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32.1009 X= 4.60615E+9 + F= 0 N= 32.1009 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOG2_X_N.BAS b/NBS2/F_LOG2_X_N.BAS new file mode 100644 index 0000000..5052a7c --- /dev/null +++ b/NBS2/F_LOG2_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:26 +REM FILENAME: F_LOG2_X_N.BAS +REM SYNTAX: N = LOG2( X ) +REM UNIQUEID: F_LOG2_X_N +REM FUNCTION: LOG2 +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = LOG2( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , 0 +DATA 2 , 0 , 0 , 1 +DATA 3 , 1 , 0 , -1 +DATA 4 , 0 , -1.32193 , .4 +DATA 5 , 1 , 0 , -.4 +DATA 6 , 0 , -.736966 , .6 +DATA 7 , 1 , 0 , -.6 +DATA 8 , 0 , 7.98868 , 254 +DATA 9 , 0 , 7.99435 , 255 +DATA 10 , 0 , 8 , 256 +DATA 11 , 0 , 14.9658 , 32000 +DATA 12 , 1 , 0 , -.227229 +DATA 13 , 1 , 0 , -.239157 +DATA 14 , 1 , 0 , -.213586 +DATA 15 , 0 , -1.8642 , .274675 +DATA 16 , 0 , -2.55838 , .169766 +DATA 17 , 0 , -1.64943 , .318766 +DATA 18 , 0 , -5.59661 , 2.06658E-2 +DATA 19 , 0 , -2.40922 , .188257 +DATA 20 , 1 , 0 , -.277537 +DATA 21 , 1 , 0 , -.481303 +DATA 22 , 0 , -1.19906 , .43556 +DATA 23 , 1 , 0 , -.210971 +DATA 24 , 1 , 0 , -.455216 +DATA 25 , 1 , 0 , -110.907 +DATA 26 , 0 , 6.7229 , 105.632 +DATA 27 , 1 , 0 , -114.341 +DATA 28 , 0 , 6.7775 , 109.706 +DATA 29 , 0 , 6.7708 , 109.198 +DATA 30 , 0 , 6.4242 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 +DATA 32 , 0 , 4.88946 , 29.6397 +DATA 33 , 1 , 0 , -108.36 +DATA 34 , 1 , 0 , -46.5199 +DATA 35 , 0 , 6.81405 , 112.521 +DATA 36 , 0 , 5.5051 , 45.4151 +DATA 37 , 0 , 6.66005 , 101.129 +DATA 38 , 0 , 6.02342 , 65.0473 +DATA 39 , 0 , 5.59697 , 48.4012 +DATA 40 , 0 , 6.93421 , 122.294 +DATA 41 , 1 , 0 , -56.1094 +DATA 42 , 1 , 0 , -121.087 +DATA 43 , 1 , 0 , -123.517 +DATA 44 , 1 , 0 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 +DATA 46 , 1 , 0 , -25.6888 +DATA 47 , 0 , 3.88758 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 +DATA 54 , 0 , 13.636 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 +DATA 56 , 0 , 12.4216 , 5486.39 +DATA 57 , 0 , 14.4516 , 22405.9 +DATA 58 , 0 , 14.9111 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 +DATA 61 , 0 , 14.088 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 +DATA 70 , 0 , 14.8575 , 29686.4 +DATA 71 , 0 , 11.3281 , 2571. +DATA 72 , 0 , 14.9242 , 31091. +DATA 73 , 0 , 13.8552 , 14819. +DATA 74 , 0 , 11.8883 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 0 , 31.6582 , 3.3889E+9 +DATA 82 , 0 , 31.2183 , 2.49826E+9 +DATA 83 , 0 , 31.1295 , 2.3491E+9 +DATA 84 , 0 , 27.537 , 1.94745E+8 +DATA 85 , 0 , 30.9151 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 0 , 31.98 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 0 , 31.9011 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 0 , 30.7256 , 1.77556E+9 +DATA 93 , 0 , 28.1 , 2.87705E+8 +DATA 94 , 0 , 27.5753 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 0 , 31.9692 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 0 , 32.1009 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_LOG2_X_N.OUT b/NBS2/F_LOG2_X_N.OUT new file mode 100644 index 0000000..ec00814 --- /dev/null +++ b/NBS2/F_LOG2_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-1.32193 X= .4 + F= 0 N=-1.32193 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.736966 X= .6 + F= 0 N=-.736966 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 7.98868 X= 254 + F= 0 N= 7.98868 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 7.99435 X= 255 + F= 0 N= 7.99435 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 8 X= 256 + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 14.9658 X= 32000 + F= 0 N= 14.9658 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-1.8642 X= .274675 + F= 0 N=-1.8642 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-2.55838 X= .169766 + F= 0 N=-2.55838 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-1.64943 X= .318766 + F= 0 N=-1.64943 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-5.59661 X= 2.06658E-2 + F= 0 N=-5.59661 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-2.40922 X= .188257 + F= 0 N=-2.40922 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-1.19906 X= .43556 + F= 0 N=-1.19906 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 6.7229 X= 105.632 + F= 0 N= 6.7229 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6.7775 X= 109.706 + F= 0 N= 6.7775 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6.7708 X= 109.198 + F= 0 N= 6.7708 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 6.4242 X= 85.8773 + F= 0 N= 6.4242 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4.88946 X= 29.6397 + F= 0 N= 4.88946 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 6.81405 X= 112.521 + F= 0 N= 6.81405 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.5051 X= 45.4151 + F= 0 N= 5.5051 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 6.66005 X= 101.129 + F= 0 N= 6.66005 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 6.02342 X= 65.0473 + F= 0 N= 6.02342 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.59697 X= 48.4012 + F= 0 N= 5.59697 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.93421 X= 122.294 + F= 0 N= 6.93421 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 3.88758 X= 14.8006 + F= 0 N= 3.88758 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 13.636 X= 12730.3 + F= 0 N= 13.636 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 12.4216 X= 5486.39 + F= 0 N= 12.4216 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 14.4516 X= 22405.9 + F= 0 N= 14.4516 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 14.9111 X= 30809.8 + F= 0 N= 14.9111 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 14.088 X= 17414.6 + F= 0 N= 14.088 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 14.8575 X= 29686.4 + F= 0 N= 14.8575 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 11.3281 X= 2571 + F= 0 N= 11.3281 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 14.9242 X= 31091 + F= 0 N= 14.9242 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 13.8552 X= 14819 + F= 0 N= 13.8552 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 11.8883 X= 3790.9 + F= 0 N= 11.8883 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 31.6582 X= 3.3889E+9 + F= 0 N= 31.6582 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 31.2183 X= 2.49826E+9 + F= 0 N= 31.2183 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 31.1295 X= 2.3491E+9 + F= 0 N= 31.1295 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 27.537 X= 1.94745E+8 + F= 0 N= 27.537 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 30.9151 X= 2.02475E+9 + F= 0 N= 30.9151 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 31.98 X= 4.23585E+9 + F= 0 N= 31.98 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 31.9011 X= 4.01052E+9 + F= 0 N= 31.9011 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 30.7256 X= 1.77556E+9 + F= 0 N= 30.7256 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 28.1 X= 2.87705E+8 + F= 0 N= 28.1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 27.5753 X= 1.99977E+8 + F= 0 N= 27.5753 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 31.9692 X= 4.20418E+9 + F= 0 N= 31.9692 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32.1009 X= 4.60615E+9 + F= 0 N= 32.1009 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOG2_X_N.dif b/NBS2/F_LOG2_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_LOG2_X_N.run b/NBS2/F_LOG2_X_N.run new file mode 100644 index 0000000..2130de4 --- /dev/null +++ b/NBS2/F_LOG2_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-1.32193 X= .4 + F= 0 N=-1.32193 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.736966 X= .6 + F= 0 N=-.736966 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 7.98868 X= 254 + F= 0 N= 7.98868 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 7.99435 X= 255 + F= 0 N= 7.99435 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 8 X= 256 + F= 0 N= 8 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 14.9658 X= 32000 + F= 0 N= 14.9658 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-1.8642 X= .274675 + F= 0 N=-1.8642 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-2.55838 X= .169766 + F= 0 N=-2.55838 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-1.64943 X= .318766 + F= 0 N=-1.64943 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-5.59661 X= 2.06658E-2 + F= 0 N=-5.59661 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-2.40922 X= .188257 + F= 0 N=-2.40922 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-1.19906 X= .43556 + F= 0 N=-1.19906 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 6.7229 X= 105.632 + F= 0 N= 6.7229 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 6.7775 X= 109.706 + F= 0 N= 6.7775 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 6.7708 X= 109.198 + F= 0 N= 6.7708 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 6.4242 X= 85.8773 + F= 0 N= 6.4242 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4.88946 X= 29.6397 + F= 0 N= 4.88946 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 6.81405 X= 112.521 + F= 0 N= 6.81405 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 5.5051 X= 45.4151 + F= 0 N= 5.5051 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 6.66005 X= 101.129 + F= 0 N= 6.66005 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 6.02342 X= 65.0473 + F= 0 N= 6.02342 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.59697 X= 48.4012 + F= 0 N= 5.59697 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.93421 X= 122.294 + F= 0 N= 6.93421 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 3.88758 X= 14.8006 + F= 0 N= 3.88758 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 13.636 X= 12730.3 + F= 0 N= 13.636 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 12.4216 X= 5486.39 + F= 0 N= 12.4216 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 14.4516 X= 22405.9 + F= 0 N= 14.4516 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 14.9111 X= 30809.8 + F= 0 N= 14.9111 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 14.088 X= 17414.6 + F= 0 N= 14.088 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 14.8575 X= 29686.4 + F= 0 N= 14.8575 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 11.3281 X= 2571 + F= 0 N= 11.3281 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 14.9242 X= 31091 + F= 0 N= 14.9242 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 13.8552 X= 14819 + F= 0 N= 13.8552 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 11.8883 X= 3790.9 + F= 0 N= 11.8883 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 31.6582 X= 3.3889E+9 + F= 0 N= 31.6582 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 31.2183 X= 2.49826E+9 + F= 0 N= 31.2183 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 31.1295 X= 2.3491E+9 + F= 0 N= 31.1295 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 27.537 X= 1.94745E+8 + F= 0 N= 27.537 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 30.9151 X= 2.02475E+9 + F= 0 N= 30.9151 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 31.98 X= 4.23585E+9 + F= 0 N= 31.98 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 31.9011 X= 4.01052E+9 + F= 0 N= 31.9011 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 30.7256 X= 1.77556E+9 + F= 0 N= 30.7256 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 28.1 X= 2.87705E+8 + F= 0 N= 28.1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 27.5753 X= 1.99977E+8 + F= 0 N= 27.5753 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 31.9692 X= 4.20418E+9 + F= 0 N= 31.9692 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 32.1009 X= 4.60615E+9 + F= 0 N= 32.1009 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOG_X_N.80 b/NBS2/F_LOG_X_N.80 new file mode 100644 index 0000000..b8d0474 --- /dev/null +++ b/NBS2/F_LOG_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-.916291 X= .4 + F= 0 N=-.916291 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.510826 X= .6 + F= 0 N=-.510826 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 5.53733 X= 254 + F= 0 N= 5.53733 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 5.54126 X= 255 + F= 0 N= 5.54126 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 5.54518 X= 256 + F= 0 N= 5.54518 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 10.3735 X= 32000 + F= 0 N= 10.3735 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-1.29217 X= .274675 + F= 0 N=-1.29217 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-1.77333 X= .169766 + F= 0 N=-1.77333 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-1.1433 X= .318766 + F= 0 N=-1.1433 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-3.87928 X= 2.06658E-2 + F= 0 N=-3.87928 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-1.66995 X= .188257 + F= 0 N=-1.66995 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-.831123 X= .43556 + F= 0 N=-.831123 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 4.65996 X= 105.632 + F= 0 N= 4.65996 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.6978 X= 109.706 + F= 0 N= 4.6978 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 4.69316 X= 109.198 + F= 0 N= 4.69316 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4.45292 X= 85.8773 + F= 0 N= 4.45292 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.38911 X= 29.6397 + F= 0 N= 3.38911 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 4.72314 X= 112.521 + F= 0 N= 4.72314 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 3.81584 X= 45.4151 + F= 0 N= 3.81584 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.6164 X= 101.129 + F= 0 N= 4.6164 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 4.17511 X= 65.0473 + F= 0 N= 4.17511 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 3.87952 X= 48.4012 + F= 0 N= 3.87952 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4.80643 X= 122.294 + F= 0 N= 4.80643 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.69467 X= 14.8006 + F= 0 N= 2.69467 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 9.45174 X= 12730.3 + F= 0 N= 9.45174 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 8.61003 X= 5486.39 + F= 0 N= 8.61003 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 10.0171 X= 22405.9 + F= 0 N= 10.0171 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 10.3356 X= 30809.8 + F= 0 N= 10.3356 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 9.76506 X= 17414.6 + F= 0 N= 9.76506 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 10.2984 X= 29686.4 + F= 0 N= 10.2984 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 7.85205 X= 2571 + F= 0 N= 7.85205 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 10.3447 X= 31091 + F= 0 N= 10.3447 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 9.60367 X= 14819 + F= 0 N= 9.60367 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 8.24036 X= 3790.9 + F= 0 N= 8.24036 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 21.9438 X= 3.3889E+9 + F= 0 N= 21.9438 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 21.6389 X= 2.49826E+9 + F= 0 N= 21.6389 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 21.5773 X= 2.3491E+9 + F= 0 N= 21.5773 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 19.0872 X= 1.94745E+8 + F= 0 N= 19.0872 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 21.4287 X= 2.02475E+9 + F= 0 N= 21.4287 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 22.1668 X= 4.23585E+9 + F= 0 N= 22.1668 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 22.1122 X= 4.01052E+9 + F= 0 N= 22.1122 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 21.2974 X= 1.77556E+9 + F= 0 N= 21.2974 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 19.4774 X= 2.87705E+8 + F= 0 N= 19.4774 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 19.1137 X= 1.99977E+8 + F= 0 N= 19.1137 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 22.1593 X= 4.20418E+9 + F= 0 N= 22.1593 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 22.2507 X= 4.60615E+9 + F= 0 N= 22.2507 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOG_X_N.BAS b/NBS2/F_LOG_X_N.BAS new file mode 100644 index 0000000..4a574d8 --- /dev/null +++ b/NBS2/F_LOG_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:26 +REM FILENAME: F_LOG_X_N.BAS +REM SYNTAX: N = LOG( X ) +REM UNIQUEID: F_LOG_X_N +REM FUNCTION: LOG +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = LOG( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , 0 +DATA 2 , 0 , 0 , 1 +DATA 3 , 1 , 0 , -1 +DATA 4 , 0 , -.916291 , .4 +DATA 5 , 1 , 0 , -.4 +DATA 6 , 0 , -.510826 , .6 +DATA 7 , 1 , 0 , -.6 +DATA 8 , 0 , 5.53733 , 254 +DATA 9 , 0 , 5.54126 , 255 +DATA 10 , 0 , 5.54518 , 256 +DATA 11 , 0 , 10.3735 , 32000 +DATA 12 , 1 , 0 , -.227229 +DATA 13 , 1 , 0 , -.239157 +DATA 14 , 1 , 0 , -.213586 +DATA 15 , 0 , -1.29217 , .274675 +DATA 16 , 0 , -1.77333 , .169766 +DATA 17 , 0 , -1.1433 , .318766 +DATA 18 , 0 , -3.87928 , 2.06658E-2 +DATA 19 , 0 , -1.66995 , .188257 +DATA 20 , 1 , 0 , -.277537 +DATA 21 , 1 , 0 , -.481303 +DATA 22 , 0 , -.831123 , .43556 +DATA 23 , 1 , 0 , -.210971 +DATA 24 , 1 , 0 , -.455216 +DATA 25 , 1 , 0 , -110.907 +DATA 26 , 0 , 4.65996 , 105.632 +DATA 27 , 1 , 0 , -114.341 +DATA 28 , 0 , 4.6978 , 109.706 +DATA 29 , 0 , 4.69316 , 109.198 +DATA 30 , 0 , 4.45292 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 +DATA 32 , 0 , 3.38911 , 29.6397 +DATA 33 , 1 , 0 , -108.36 +DATA 34 , 1 , 0 , -46.5199 +DATA 35 , 0 , 4.72314 , 112.521 +DATA 36 , 0 , 3.81584 , 45.4151 +DATA 37 , 0 , 4.6164 , 101.129 +DATA 38 , 0 , 4.17511 , 65.0473 +DATA 39 , 0 , 3.87952 , 48.4012 +DATA 40 , 0 , 4.80643 , 122.294 +DATA 41 , 1 , 0 , -56.1094 +DATA 42 , 1 , 0 , -121.087 +DATA 43 , 1 , 0 , -123.517 +DATA 44 , 1 , 0 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 +DATA 46 , 1 , 0 , -25.6888 +DATA 47 , 0 , 2.69467 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 +DATA 54 , 0 , 9.45174 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 +DATA 56 , 0 , 8.61003 , 5486.39 +DATA 57 , 0 , 10.0171 , 22405.9 +DATA 58 , 0 , 10.3356 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 +DATA 61 , 0 , 9.76506 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 +DATA 70 , 0 , 10.2984 , 29686.4 +DATA 71 , 0 , 7.85205 , 2571. +DATA 72 , 0 , 10.3447 , 31091. +DATA 73 , 0 , 9.60367 , 14819. +DATA 74 , 0 , 8.24036 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 0 , 21.9438 , 3.3889E+9 +DATA 82 , 0 , 21.6389 , 2.49826E+9 +DATA 83 , 0 , 21.5773 , 2.3491E+9 +DATA 84 , 0 , 19.0872 , 1.94745E+8 +DATA 85 , 0 , 21.4287 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 0 , 22.1668 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 0 , 22.1122 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 0 , 21.2974 , 1.77556E+9 +DATA 93 , 0 , 19.4774 , 2.87705E+8 +DATA 94 , 0 , 19.1137 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 0 , 22.1593 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 0 , 22.2507 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_LOG_X_N.OUT b/NBS2/F_LOG_X_N.OUT new file mode 100644 index 0000000..cf3a339 --- /dev/null +++ b/NBS2/F_LOG_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-.916291 X= .4 + F= 0 N=-.916291 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.510826 X= .6 + F= 0 N=-.510826 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 5.53733 X= 254 + F= 0 N= 5.53733 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 5.54126 X= 255 + F= 0 N= 5.54126 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 5.54518 X= 256 + F= 0 N= 5.54518 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 10.3735 X= 32000 + F= 0 N= 10.3735 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-1.29217 X= .274675 + F= 0 N=-1.29217 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-1.77333 X= .169766 + F= 0 N=-1.77333 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-1.1433 X= .318766 + F= 0 N=-1.1433 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-3.87928 X= 2.06658E-2 + F= 0 N=-3.87928 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-1.66995 X= .188257 + F= 0 N=-1.66995 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-.831123 X= .43556 + F= 0 N=-.831123 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 4.65996 X= 105.632 + F= 0 N= 4.65996 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.6978 X= 109.706 + F= 0 N= 4.6978 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 4.69316 X= 109.198 + F= 0 N= 4.69316 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4.45292 X= 85.8773 + F= 0 N= 4.45292 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.38911 X= 29.6397 + F= 0 N= 3.38911 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 4.72314 X= 112.521 + F= 0 N= 4.72314 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 3.81584 X= 45.4151 + F= 0 N= 3.81584 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.6164 X= 101.129 + F= 0 N= 4.6164 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 4.17511 X= 65.0473 + F= 0 N= 4.17511 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 3.87952 X= 48.4012 + F= 0 N= 3.87952 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4.80643 X= 122.294 + F= 0 N= 4.80643 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.69467 X= 14.8006 + F= 0 N= 2.69467 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 9.45174 X= 12730.3 + F= 0 N= 9.45174 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 8.61003 X= 5486.39 + F= 0 N= 8.61003 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 10.0171 X= 22405.9 + F= 0 N= 10.0171 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 10.3356 X= 30809.8 + F= 0 N= 10.3356 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 9.76506 X= 17414.6 + F= 0 N= 9.76506 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 10.2984 X= 29686.4 + F= 0 N= 10.2984 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 7.85205 X= 2571 + F= 0 N= 7.85205 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 10.3447 X= 31091 + F= 0 N= 10.3447 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 9.60367 X= 14819 + F= 0 N= 9.60367 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 8.24036 X= 3790.9 + F= 0 N= 8.24036 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 21.9438 X= 3.3889E+9 + F= 0 N= 21.9438 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 21.6389 X= 2.49826E+9 + F= 0 N= 21.6389 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 21.5773 X= 2.3491E+9 + F= 0 N= 21.5773 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 19.0872 X= 1.94745E+8 + F= 0 N= 19.0872 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 21.4287 X= 2.02475E+9 + F= 0 N= 21.4287 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 22.1668 X= 4.23585E+9 + F= 0 N= 22.1668 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 22.1122 X= 4.01052E+9 + F= 0 N= 22.1122 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 21.2974 X= 1.77556E+9 + F= 0 N= 21.2974 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 19.4774 X= 2.87705E+8 + F= 0 N= 19.4774 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 19.1137 X= 1.99977E+8 + F= 0 N= 19.1137 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 22.1593 X= 4.20418E+9 + F= 0 N= 22.1593 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 22.2507 X= 4.60615E+9 + F= 0 N= 22.2507 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LOG_X_N.dif b/NBS2/F_LOG_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_LOG_X_N.run b/NBS2/F_LOG_X_N.run new file mode 100644 index 0000000..b8d0474 --- /dev/null +++ b/NBS2/F_LOG_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R=-.916291 X= .4 + F= 0 N=-.916291 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R=-.510826 X= .6 + F= 0 N=-.510826 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 5.53733 X= 254 + F= 0 N= 5.53733 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 5.54126 X= 255 + F= 0 N= 5.54126 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 5.54518 X= 256 + F= 0 N= 5.54518 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 10.3735 X= 32000 + F= 0 N= 10.3735 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R=-1.29217 X= .274675 + F= 0 N=-1.29217 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R=-1.77333 X= .169766 + F= 0 N=-1.77333 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R=-1.1433 X= .318766 + F= 0 N=-1.1433 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R=-3.87928 X= 2.06658E-2 + F= 0 N=-3.87928 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R=-1.66995 X= .188257 + F= 0 N=-1.66995 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R=-.831123 X= .43556 + F= 0 N=-.831123 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 4.65996 X= 105.632 + F= 0 N= 4.65996 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4.6978 X= 109.706 + F= 0 N= 4.6978 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 4.69316 X= 109.198 + F= 0 N= 4.69316 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4.45292 X= 85.8773 + F= 0 N= 4.45292 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.38911 X= 29.6397 + F= 0 N= 3.38911 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 4.72314 X= 112.521 + F= 0 N= 4.72314 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 3.81584 X= 45.4151 + F= 0 N= 3.81584 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.6164 X= 101.129 + F= 0 N= 4.6164 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 4.17511 X= 65.0473 + F= 0 N= 4.17511 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 3.87952 X= 48.4012 + F= 0 N= 3.87952 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4.80643 X= 122.294 + F= 0 N= 4.80643 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 2.69467 X= 14.8006 + F= 0 N= 2.69467 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 9.45174 X= 12730.3 + F= 0 N= 9.45174 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 8.61003 X= 5486.39 + F= 0 N= 8.61003 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 10.0171 X= 22405.9 + F= 0 N= 10.0171 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 10.3356 X= 30809.8 + F= 0 N= 10.3356 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 9.76506 X= 17414.6 + F= 0 N= 9.76506 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 10.2984 X= 29686.4 + F= 0 N= 10.2984 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 7.85205 X= 2571 + F= 0 N= 7.85205 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 10.3447 X= 31091 + F= 0 N= 10.3447 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 9.60367 X= 14819 + F= 0 N= 9.60367 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 8.24036 X= 3790.9 + F= 0 N= 8.24036 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 21.9438 X= 3.3889E+9 + F= 0 N= 21.9438 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 21.6389 X= 2.49826E+9 + F= 0 N= 21.6389 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 21.5773 X= 2.3491E+9 + F= 0 N= 21.5773 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 19.0872 X= 1.94745E+8 + F= 0 N= 19.0872 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 21.4287 X= 2.02475E+9 + F= 0 N= 21.4287 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 22.1668 X= 4.23585E+9 + F= 0 N= 22.1668 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 22.1122 X= 4.01052E+9 + F= 0 N= 22.1122 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 21.2974 X= 1.77556E+9 + F= 0 N= 21.2974 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 19.4774 X= 2.87705E+8 + F= 0 N= 19.4774 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 19.1137 X= 1.99977E+8 + F= 0 N= 19.1137 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 22.1593 X= 4.20418E+9 + F= 0 N= 22.1593 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 22.2507 X= 4.60615E+9 + F= 0 N= 22.2507 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LTRIM_A_S.80 b/NBS2/F_LTRIM_A_S.80 new file mode 100644 index 0000000..7348667 --- /dev/null +++ b/NBS2/F_LTRIM_A_S.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[z] A$=[ z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[3 ] A$=[ 3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[z ] A$=[ z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[LLLL] A$=[ LLLL] + F= 0 S$=[LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=['' ] A$=[ '' ] + F= 0 S$=['' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[oo ] A$=[ oo ] + F= 0 S$=[oo ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[00 ] A$=[ 00 ] + F= 0 S$=[00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[\\\\ ] A$=[ \\\\ ] + F= 0 S$=[\\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[lllll ] A$=[ lllll ] + F= 0 S$=[lllll ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[uuuu ] A$=[ uuuu ] + F= 0 S$=[uuuu ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[a ] A$=[ a ] + F= 0 S$=[a ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[hh ] A$=[ hh ] + F= 0 S$=[hh ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[h ] A$=[ h ] + F= 0 S$=[h ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[)] A$=[ )] + F= 0 S$=[)] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[5 ] A$=[ 5 ] + F= 0 S$=[5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[2 ] A$=[ 2 ] + F= 0 S$=[2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[- ] A$=[ - ] + F= 0 S$=[- ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd ] A$=[dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[tttt ] A$=[ tttt ] + F= 0 S$=[tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[:::: ] A$=[ :::: ] + F= 0 S$=[:::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[___ ] A$=[ ___ ] + F= 0 S$=[___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[_____ ] A$=[ _____ ] + F= 0 S$=[_____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[S ] A$=[ S ] + F= 0 S$=[S ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[FFFF ] A$=[ FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[kkk] A$=[ kkk] + F= 0 S$=[kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[NNNN ] A$=[ NNNN ] + F= 0 S$=[NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[mmmm ] A$=[ mmmm ] + F= 0 S$=[mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[HHHH ] A$=[ HHHH ] + F= 0 S$=[HHHH ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[< ] A$=[ < ] + F= 0 S$=[< ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[j ] A$=[ j ] + F= 0 S$=[j ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[yyyy ] A$=[ yyyy ] + F= 0 S$=[yyyy ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[+++ ] A$=[ +++ ] + F= 0 S$=[+++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o ] A$=[o ] + F= 0 S$=[o ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[((] A$=[ ((] + F= 0 S$=[((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[uu ] A$=[ uu ] + F= 0 S$=[uu ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[00 ] A$=[ 00 ] + F= 0 S$=[00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[HH ] A$=[ HH ] + F= 0 S$=[HH ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[G ] A$=[ G ] + F= 0 S$=[G ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[{{{{ ] A$=[ {{{{ ] + F= 0 S$=[{{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[]]] ] A$=[ ]]] ] + F= 0 S$=[]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[44 ] A$=[ 44 ] + F= 0 S$=[44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[QQ ] A$=[ QQ ] + F= 0 S$=[QQ ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF ] A$=[ FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[n ] A$=[ n ] + F= 0 S$=[n ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[hh ] A$=[ hh ] + F= 0 S$=[hh ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[YYYY ] A$=[ YYYY ] + F= 0 S$=[YYYY ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[w ] A$=[ w ] + F= 0 S$=[w ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM ] A$=[MMMM ] + F= 0 S$=[MMMM ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[JJJJ ] A$=[ JJJJ ] + F= 0 S$=[JJJJ ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[%% ] A$=[ %% ] + F= 0 S$=[%% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[* ] A$=[ * ] + F= 0 S$=[* ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[@@@ ] A$=[ @@@ ] + F= 0 S$=[@@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I ] A$=[I ] + F= 0 S$=[I ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ss ] A$=[ ss ] + F= 0 S$=[ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[f ] A$=[ f ] + F= 0 S$=[f ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[D ] A$=[ D ] + F= 0 S$=[D ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[' ] A$=[ ' ] + F= 0 S$=[' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[dd ] A$=[ dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[TT ] A$=[ TT ] + F= 0 S$=[TT ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[vvv ] A$=[ vvv ] + F= 0 S$=[vvv ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[X ] A$=[ X ] + F= 0 S$=[X ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[% ] A$=[ % ] + F= 0 S$=[% ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[5555 ] A$=[ 5555 ] + F= 0 S$=[5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF ] A$=[FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[%% ] A$=[ %% ] + F= 0 S$=[%% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[|| ] A$=[ || ] + F= 0 S$=[|| ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[SSS ] A$=[ SSS ] + F= 0 S$=[SSS ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[6666 ] A$=[ 6666 ] + F= 0 S$=[6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ww ] A$=[ ww ] + F= 0 S$=[ww ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[1111 ] A$=[ 1111 ] + F= 0 S$=[1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[K ] A$=[ K ] + F= 0 S$=[K ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ttttt ] A$=[ ttttt ] + F= 0 S$=[ttttt ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[OOOOO ] A$=[ OOOOO ] + F= 0 S$=[OOOOO ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[E ] A$=[ E ] + F= 0 S$=[E ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[PPPPP ] A$=[ PPPPP ] + F= 0 S$=[PPPPP ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[== ] A$=[ == ] + F= 0 S$=[== ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[VVVV ] A$=[ VVVV ] + F= 0 S$=[VVVV ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[c ] A$=[ c ] + F= 0 S$=[c ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[yyyy ] A$=[ yyyy ] + F= 0 S$=[yyyy ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LTRIM_A_S.BAS b/NBS2/F_LTRIM_A_S.BAS new file mode 100644 index 0000000..63333cc --- /dev/null +++ b/NBS2/F_LTRIM_A_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:27 +REM FILENAME: F_LTRIM_A_S.BAS +REM SYNTAX: S$ = LTRIM$( A$ ) +REM UNIQUEID: F_LTRIM_A_S +REM FUNCTION: LTRIM$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = LTRIM$( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", "" +DATA 2 , 0 , "", " " +DATA 3 , 0 , "3", "3" +DATA 4 , 0 , "z", "z" +DATA 5 , 0 , "", " " +DATA 6 , 0 , "3", " 3" +DATA 7 , 0 , "z", " z" +DATA 8 , 0 , "3 ", "3 " +DATA 9 , 0 , "z ", "z " +DATA 10 , 0 , "3 ", " 3 " +DATA 11 , 0 , "z ", " z " +DATA 12 , 0 , "LLLL", " LLLL" +DATA 13 , 0 , "'' ", " '' " +DATA 14 , 0 , "oo ", " oo " +DATA 15 , 0 , "00 ", " 00 " +DATA 16 , 0 , "\\\\ ", " \\\\ " +DATA 17 , 0 , "lllll ", " lllll " +DATA 18 , 0 , "uuuu ", " uuuu " +DATA 19 , 0 , "a ", " a " +DATA 20 , 0 , "", " " +DATA 21 , 0 , "hh ", " hh " +DATA 22 , 0 , "h ", " h " +DATA 23 , 0 , ")", " )" +DATA 24 , 0 , "5 ", " 5 " +DATA 25 , 0 , "2 ", " 2 " +DATA 26 , 0 , "- ", " - " +DATA 27 , 0 , "dd ", "dd " +DATA 28 , 0 , "tttt ", " tttt " +DATA 29 , 0 , ":::: ", " :::: " +DATA 30 , 0 , "___ ", " ___ " +DATA 31 , 0 , "", " " +DATA 32 , 0 , "", " " +DATA 33 , 0 , "_____ ", " _____ " +DATA 34 , 0 , "S ", " S " +DATA 35 , 0 , "FFFF ", " FFFF " +DATA 36 , 0 , "kkk", " kkk" +DATA 37 , 0 , "NNNN ", " NNNN " +DATA 38 , 0 , "mmmm ", " mmmm " +DATA 39 , 0 , ",,,,, ", " ,,,,, " +DATA 40 , 0 , "OO ", "OO " +DATA 41 , 0 , "HHHH ", " HHHH " +DATA 42 , 0 , "< ", " < " +DATA 43 , 0 , "j ", " j " +DATA 44 , 0 , "yyyy ", " yyyy " +DATA 45 , 0 , "+++ ", " +++ " +DATA 46 , 0 , "o ", "o " +DATA 47 , 0 , "((", " ((" +DATA 48 , 0 , "uu ", " uu " +DATA 49 , 0 , "00 ", " 00 " +DATA 50 , 0 , "HH ", " HH " +DATA 51 , 0 , "", " " +DATA 52 , 0 , "G ", " G " +DATA 53 , 0 , "{{{{ ", " {{{{ " +DATA 54 , 0 , "]]] ", " ]]] " +DATA 55 , 0 , "CCC", "CCC" +DATA 56 , 0 , "44 ", " 44 " +DATA 57 , 0 , "^^ ", "^^ " +DATA 58 , 0 , "QQ ", " QQ " +DATA 59 , 0 , "FFFF ", " FFFF " +DATA 60 , 0 , "n ", " n " +DATA 61 , 0 , "hh ", " hh " +DATA 62 , 0 , "555 ", "555 " +DATA 63 , 0 , "YYYY ", " YYYY " +DATA 64 , 0 , "w ", " w " +DATA 65 , 0 , "MMMM ", "MMMM " +DATA 66 , 0 , "JJJJ ", " JJJJ " +DATA 67 , 0 , "%% ", " %% " +DATA 68 , 0 , "* ", " * " +DATA 69 , 0 , "@@@ ", " @@@ " +DATA 70 , 0 , "I ", "I " +DATA 71 , 0 , "ss ", " ss " +DATA 72 , 0 , "f ", " f " +DATA 73 , 0 , "D ", " D " +DATA 74 , 0 , "### ", "### " +DATA 75 , 0 , "' ", " ' " +DATA 76 , 0 , "dd ", " dd " +DATA 77 , 0 , "TT ", " TT " +DATA 78 , 0 , "vvv ", " vvv " +DATA 79 , 0 , "X ", " X " +DATA 80 , 0 , "% ", " % " +DATA 81 , 0 , "", " " +DATA 82 , 0 , "5555 ", " 5555 " +DATA 83 , 0 , "FFFF ", "FFFF " +DATA 84 , 0 , "%% ", " %% " +DATA 85 , 0 , "", " " +DATA 86 , 0 , "~~~~ ", " ~~~~ " +DATA 87 , 0 , "|| ", " || " +DATA 88 , 0 , "SSS ", " SSS " +DATA 89 , 0 , "6666 ", " 6666 " +DATA 90 , 0 , "ww ", " ww " +DATA 91 , 0 , "1111 ", " 1111 " +DATA 92 , 0 , "K ", " K " +DATA 93 , 0 , "ttttt ", " ttttt " +DATA 94 , 0 , "OOOOO ", " OOOOO " +DATA 95 , 0 , "E ", " E " +DATA 96 , 0 , "PPPPP ", " PPPPP " +DATA 97 , 0 , "== ", " == " +DATA 98 , 0 , "VVVV ", " VVVV " +DATA 99 , 0 , "c ", " c " +DATA 100 , 0 , "yyyy ", " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_LTRIM_A_S.OUT b/NBS2/F_LTRIM_A_S.OUT new file mode 100644 index 0000000..05a91e5 --- /dev/null +++ b/NBS2/F_LTRIM_A_S.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[z] A$=[ z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[3 ] A$=[ 3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[z ] A$=[ z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[LLLL] A$=[ LLLL] + F= 0 S$=[LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=['' ] A$=[ '' ] + F= 0 S$=['' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[oo ] A$=[ oo ] + F= 0 S$=[oo ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[00 ] A$=[ 00 ] + F= 0 S$=[00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[\\\\ ] A$=[ \\\\ ] + F= 0 S$=[\\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[lllll ] A$=[ lllll ] + F= 0 S$=[lllll ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[uuuu ] A$=[ uuuu ] + F= 0 S$=[uuuu ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[a ] A$=[ a ] + F= 0 S$=[a ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[hh ] A$=[ hh ] + F= 0 S$=[hh ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[h ] A$=[ h ] + F= 0 S$=[h ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[)] A$=[ )] + F= 0 S$=[)] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[5 ] A$=[ 5 ] + F= 0 S$=[5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[2 ] A$=[ 2 ] + F= 0 S$=[2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[- ] A$=[ - ] + F= 0 S$=[- ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd ] A$=[dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[tttt ] A$=[ tttt ] + F= 0 S$=[tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[:::: ] A$=[ :::: ] + F= 0 S$=[:::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[___ ] A$=[ ___ ] + F= 0 S$=[___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[_____ ] A$=[ _____ ] + F= 0 S$=[_____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[S ] A$=[ S ] + F= 0 S$=[S ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[FFFF ] A$=[ FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[kkk] A$=[ kkk] + F= 0 S$=[kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[NNNN ] A$=[ NNNN ] + F= 0 S$=[NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[mmmm ] A$=[ mmmm ] + F= 0 S$=[mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[HHHH ] A$=[ HHHH ] + F= 0 S$=[HHHH ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[< ] A$=[ < ] + F= 0 S$=[< ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[j ] A$=[ j ] + F= 0 S$=[j ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[yyyy ] A$=[ yyyy ] + F= 0 S$=[yyyy ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[+++ ] A$=[ +++ ] + F= 0 S$=[+++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o ] A$=[o ] + F= 0 S$=[o ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[((] A$=[ ((] + F= 0 S$=[((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[uu ] A$=[ uu ] + F= 0 S$=[uu ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[00 ] A$=[ 00 ] + F= 0 S$=[00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[HH ] A$=[ HH ] + F= 0 S$=[HH ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[G ] A$=[ G ] + F= 0 S$=[G ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[{{{{ ] A$=[ {{{{ ] + F= 0 S$=[{{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[]]] ] A$=[ ]]] ] + F= 0 S$=[]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[44 ] A$=[ 44 ] + F= 0 S$=[44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[QQ ] A$=[ QQ ] + F= 0 S$=[QQ ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF ] A$=[ FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[n ] A$=[ n ] + F= 0 S$=[n ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[hh ] A$=[ hh ] + F= 0 S$=[hh ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[YYYY ] A$=[ YYYY ] + F= 0 S$=[YYYY ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[w ] A$=[ w ] + F= 0 S$=[w ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM ] A$=[MMMM ] + F= 0 S$=[MMMM ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[JJJJ ] A$=[ JJJJ ] + F= 0 S$=[JJJJ ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[%% ] A$=[ %% ] + F= 0 S$=[%% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[* ] A$=[ * ] + F= 0 S$=[* ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[@@@ ] A$=[ @@@ ] + F= 0 S$=[@@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I ] A$=[I ] + F= 0 S$=[I ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ss ] A$=[ ss ] + F= 0 S$=[ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[f ] A$=[ f ] + F= 0 S$=[f ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[D ] A$=[ D ] + F= 0 S$=[D ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[' ] A$=[ ' ] + F= 0 S$=[' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[dd ] A$=[ dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[TT ] A$=[ TT ] + F= 0 S$=[TT ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[vvv ] A$=[ vvv ] + F= 0 S$=[vvv ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[X ] A$=[ X ] + F= 0 S$=[X ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[% ] A$=[ % ] + F= 0 S$=[% ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[5555 ] A$=[ 5555 ] + F= 0 S$=[5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF ] A$=[FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[%% ] A$=[ %% ] + F= 0 S$=[%% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[|| ] A$=[ || ] + F= 0 S$=[|| ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[SSS ] A$=[ SSS ] + F= 0 S$=[SSS ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[6666 ] A$=[ 6666 ] + F= 0 S$=[6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ww ] A$=[ ww ] + F= 0 S$=[ww ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[1111 ] A$=[ 1111 ] + F= 0 S$=[1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[K ] A$=[ K ] + F= 0 S$=[K ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ttttt ] A$=[ ttttt ] + F= 0 S$=[ttttt ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[OOOOO ] A$=[ OOOOO ] + F= 0 S$=[OOOOO ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[E ] A$=[ E ] + F= 0 S$=[E ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[PPPPP ] A$=[ PPPPP ] + F= 0 S$=[PPPPP ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[== ] A$=[ == ] + F= 0 S$=[== ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[VVVV ] A$=[ VVVV ] + F= 0 S$=[VVVV ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[c ] A$=[ c ] + F= 0 S$=[c ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[yyyy ] A$=[ yyyy ] + F= 0 S$=[yyyy ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_LTRIM_A_S.dif b/NBS2/F_LTRIM_A_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_LTRIM_A_S.run b/NBS2/F_LTRIM_A_S.run new file mode 100644 index 0000000..7348667 --- /dev/null +++ b/NBS2/F_LTRIM_A_S.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[z] A$=[ z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[3 ] A$=[ 3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[z ] A$=[ z ] + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[LLLL] A$=[ LLLL] + F= 0 S$=[LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=['' ] A$=[ '' ] + F= 0 S$=['' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[oo ] A$=[ oo ] + F= 0 S$=[oo ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[00 ] A$=[ 00 ] + F= 0 S$=[00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[\\\\ ] A$=[ \\\\ ] + F= 0 S$=[\\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[lllll ] A$=[ lllll ] + F= 0 S$=[lllll ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[uuuu ] A$=[ uuuu ] + F= 0 S$=[uuuu ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[a ] A$=[ a ] + F= 0 S$=[a ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[hh ] A$=[ hh ] + F= 0 S$=[hh ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[h ] A$=[ h ] + F= 0 S$=[h ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[)] A$=[ )] + F= 0 S$=[)] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[5 ] A$=[ 5 ] + F= 0 S$=[5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[2 ] A$=[ 2 ] + F= 0 S$=[2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[- ] A$=[ - ] + F= 0 S$=[- ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd ] A$=[dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[tttt ] A$=[ tttt ] + F= 0 S$=[tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[:::: ] A$=[ :::: ] + F= 0 S$=[:::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[___ ] A$=[ ___ ] + F= 0 S$=[___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[_____ ] A$=[ _____ ] + F= 0 S$=[_____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[S ] A$=[ S ] + F= 0 S$=[S ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[FFFF ] A$=[ FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[kkk] A$=[ kkk] + F= 0 S$=[kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[NNNN ] A$=[ NNNN ] + F= 0 S$=[NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[mmmm ] A$=[ mmmm ] + F= 0 S$=[mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[HHHH ] A$=[ HHHH ] + F= 0 S$=[HHHH ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[< ] A$=[ < ] + F= 0 S$=[< ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[j ] A$=[ j ] + F= 0 S$=[j ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[yyyy ] A$=[ yyyy ] + F= 0 S$=[yyyy ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[+++ ] A$=[ +++ ] + F= 0 S$=[+++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o ] A$=[o ] + F= 0 S$=[o ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[((] A$=[ ((] + F= 0 S$=[((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[uu ] A$=[ uu ] + F= 0 S$=[uu ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[00 ] A$=[ 00 ] + F= 0 S$=[00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[HH ] A$=[ HH ] + F= 0 S$=[HH ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[G ] A$=[ G ] + F= 0 S$=[G ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[{{{{ ] A$=[ {{{{ ] + F= 0 S$=[{{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[]]] ] A$=[ ]]] ] + F= 0 S$=[]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[44 ] A$=[ 44 ] + F= 0 S$=[44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[QQ ] A$=[ QQ ] + F= 0 S$=[QQ ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF ] A$=[ FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[n ] A$=[ n ] + F= 0 S$=[n ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[hh ] A$=[ hh ] + F= 0 S$=[hh ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[YYYY ] A$=[ YYYY ] + F= 0 S$=[YYYY ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[w ] A$=[ w ] + F= 0 S$=[w ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM ] A$=[MMMM ] + F= 0 S$=[MMMM ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[JJJJ ] A$=[ JJJJ ] + F= 0 S$=[JJJJ ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[%% ] A$=[ %% ] + F= 0 S$=[%% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[* ] A$=[ * ] + F= 0 S$=[* ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[@@@ ] A$=[ @@@ ] + F= 0 S$=[@@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I ] A$=[I ] + F= 0 S$=[I ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ss ] A$=[ ss ] + F= 0 S$=[ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[f ] A$=[ f ] + F= 0 S$=[f ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[D ] A$=[ D ] + F= 0 S$=[D ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[' ] A$=[ ' ] + F= 0 S$=[' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[dd ] A$=[ dd ] + F= 0 S$=[dd ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[TT ] A$=[ TT ] + F= 0 S$=[TT ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[vvv ] A$=[ vvv ] + F= 0 S$=[vvv ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[X ] A$=[ X ] + F= 0 S$=[X ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[% ] A$=[ % ] + F= 0 S$=[% ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[5555 ] A$=[ 5555 ] + F= 0 S$=[5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF ] A$=[FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[%% ] A$=[ %% ] + F= 0 S$=[%% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[|| ] A$=[ || ] + F= 0 S$=[|| ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[SSS ] A$=[ SSS ] + F= 0 S$=[SSS ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[6666 ] A$=[ 6666 ] + F= 0 S$=[6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ww ] A$=[ ww ] + F= 0 S$=[ww ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[1111 ] A$=[ 1111 ] + F= 0 S$=[1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[K ] A$=[ K ] + F= 0 S$=[K ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ttttt ] A$=[ ttttt ] + F= 0 S$=[ttttt ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[OOOOO ] A$=[ OOOOO ] + F= 0 S$=[OOOOO ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[E ] A$=[ E ] + F= 0 S$=[E ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[PPPPP ] A$=[ PPPPP ] + F= 0 S$=[PPPPP ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[== ] A$=[ == ] + F= 0 S$=[== ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[VVVV ] A$=[ VVVV ] + F= 0 S$=[VVVV ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[c ] A$=[ c ] + F= 0 S$=[c ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[yyyy ] A$=[ yyyy ] + F= 0 S$=[yyyy ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MAXLEN_A_N.80 b/NBS2/F_MAXLEN_A_N.80 new file mode 100644 index 0000000..8342c20 --- /dev/null +++ b/NBS2/F_MAXLEN_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 4096 A$=[] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 4096 A$=[3] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 4096 A$=[z] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 4096 A$=[ 3] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 4096 A$=[ z] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 4096 A$=[3 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 4096 A$=[z ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 4096 A$=[ 3 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 4096 A$=[ z ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 4096 A$=[ LLLL] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 4096 A$=[ '' ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 4096 A$=[ oo ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 4096 A$=[ 00 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 4096 A$=[ \\\\ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 4096 A$=[ lllll ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 4096 A$=[ uuuu ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 4096 A$=[ a ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 4096 A$=[ hh ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 4096 A$=[ h ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 4096 A$=[ )] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 4096 A$=[ 5 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 4096 A$=[ 2 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 4096 A$=[ - ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 4096 A$=[dd ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4096 A$=[ tttt ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 4096 A$=[ :::: ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4096 A$=[ ___ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 4096 A$=[ _____ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 4096 A$=[ S ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 4096 A$=[ FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 4096 A$=[ kkk] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4096 A$=[ NNNN ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 4096 A$=[ mmmm ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 4096 A$=[ ,,,,, ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4096 A$=[OO ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 4096 A$=[ HHHH ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 4096 A$=[ < ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 4096 A$=[ j ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 4096 A$=[ yyyy ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 4096 A$=[ +++ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 4096 A$=[o ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 4096 A$=[ ((] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 4096 A$=[ uu ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 4096 A$=[ 00 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 4096 A$=[ HH ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 4096 A$=[ G ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 4096 A$=[ {{{{ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 4096 A$=[ ]]] ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 4096 A$=[CCC] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 4096 A$=[ 44 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4096 A$=[^^ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4096 A$=[ QQ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 4096 A$=[ FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 4096 A$=[ n ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 4096 A$=[ hh ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 4096 A$=[555 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 4096 A$=[ YYYY ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 4096 A$=[ w ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 4096 A$=[MMMM ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 4096 A$=[ JJJJ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 4096 A$=[ %% ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 4096 A$=[ * ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 4096 A$=[ @@@ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 4096 A$=[I ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 4096 A$=[ ss ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4096 A$=[ f ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 4096 A$=[ D ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 4096 A$=[### ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 4096 A$=[ ' ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 4096 A$=[ dd ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 4096 A$=[ TT ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4096 A$=[ vvv ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 4096 A$=[ X ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 4096 A$=[ % ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 4096 A$=[ 5555 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 4096 A$=[FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 4096 A$=[ %% ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 4096 A$=[ ~~~~ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 4096 A$=[ || ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4096 A$=[ SSS ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 4096 A$=[ 6666 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4096 A$=[ ww ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 4096 A$=[ 1111 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 4096 A$=[ K ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 4096 A$=[ ttttt ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 4096 A$=[ OOOOO ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 4096 A$=[ E ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 4096 A$=[ PPPPP ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 4096 A$=[ == ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4096 A$=[ VVVV ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 4096 A$=[ c ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4096 A$=[ yyyy ] + F= 0 N= 4096 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MAXLEN_A_N.BAS b/NBS2/F_MAXLEN_A_N.BAS new file mode 100644 index 0000000..d1becc3 --- /dev/null +++ b/NBS2/F_MAXLEN_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:27 +REM FILENAME: F_MAXLEN_A_N.BAS +REM SYNTAX: N = MAXLEN( A$ ) +REM UNIQUEID: F_MAXLEN_A_N +REM FUNCTION: MAXLEN +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = MAXLEN( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 4096 , "" +DATA 2 , 0 , 4096 , " " +DATA 3 , 0 , 4096 , "3" +DATA 4 , 0 , 4096 , "z" +DATA 5 , 0 , 4096 , " " +DATA 6 , 0 , 4096 , " 3" +DATA 7 , 0 , 4096 , " z" +DATA 8 , 0 , 4096 , "3 " +DATA 9 , 0 , 4096 , "z " +DATA 10 , 0 , 4096 , " 3 " +DATA 11 , 0 , 4096 , " z " +DATA 12 , 0 , 4096 , " LLLL" +DATA 13 , 0 , 4096 , " '' " +DATA 14 , 0 , 4096 , " oo " +DATA 15 , 0 , 4096 , " 00 " +DATA 16 , 0 , 4096 , " \\\\ " +DATA 17 , 0 , 4096 , " lllll " +DATA 18 , 0 , 4096 , " uuuu " +DATA 19 , 0 , 4096 , " a " +DATA 20 , 0 , 4096 , " " +DATA 21 , 0 , 4096 , " hh " +DATA 22 , 0 , 4096 , " h " +DATA 23 , 0 , 4096 , " )" +DATA 24 , 0 , 4096 , " 5 " +DATA 25 , 0 , 4096 , " 2 " +DATA 26 , 0 , 4096 , " - " +DATA 27 , 0 , 4096 , "dd " +DATA 28 , 0 , 4096 , " tttt " +DATA 29 , 0 , 4096 , " :::: " +DATA 30 , 0 , 4096 , " ___ " +DATA 31 , 0 , 4096 , " " +DATA 32 , 0 , 4096 , " " +DATA 33 , 0 , 4096 , " _____ " +DATA 34 , 0 , 4096 , " S " +DATA 35 , 0 , 4096 , " FFFF " +DATA 36 , 0 , 4096 , " kkk" +DATA 37 , 0 , 4096 , " NNNN " +DATA 38 , 0 , 4096 , " mmmm " +DATA 39 , 0 , 4096 , " ,,,,, " +DATA 40 , 0 , 4096 , "OO " +DATA 41 , 0 , 4096 , " HHHH " +DATA 42 , 0 , 4096 , " < " +DATA 43 , 0 , 4096 , " j " +DATA 44 , 0 , 4096 , " yyyy " +DATA 45 , 0 , 4096 , " +++ " +DATA 46 , 0 , 4096 , "o " +DATA 47 , 0 , 4096 , " ((" +DATA 48 , 0 , 4096 , " uu " +DATA 49 , 0 , 4096 , " 00 " +DATA 50 , 0 , 4096 , " HH " +DATA 51 , 0 , 4096 , " " +DATA 52 , 0 , 4096 , " G " +DATA 53 , 0 , 4096 , " {{{{ " +DATA 54 , 0 , 4096 , " ]]] " +DATA 55 , 0 , 4096 , "CCC" +DATA 56 , 0 , 4096 , " 44 " +DATA 57 , 0 , 4096 , "^^ " +DATA 58 , 0 , 4096 , " QQ " +DATA 59 , 0 , 4096 , " FFFF " +DATA 60 , 0 , 4096 , " n " +DATA 61 , 0 , 4096 , " hh " +DATA 62 , 0 , 4096 , "555 " +DATA 63 , 0 , 4096 , " YYYY " +DATA 64 , 0 , 4096 , " w " +DATA 65 , 0 , 4096 , "MMMM " +DATA 66 , 0 , 4096 , " JJJJ " +DATA 67 , 0 , 4096 , " %% " +DATA 68 , 0 , 4096 , " * " +DATA 69 , 0 , 4096 , " @@@ " +DATA 70 , 0 , 4096 , "I " +DATA 71 , 0 , 4096 , " ss " +DATA 72 , 0 , 4096 , " f " +DATA 73 , 0 , 4096 , " D " +DATA 74 , 0 , 4096 , "### " +DATA 75 , 0 , 4096 , " ' " +DATA 76 , 0 , 4096 , " dd " +DATA 77 , 0 , 4096 , " TT " +DATA 78 , 0 , 4096 , " vvv " +DATA 79 , 0 , 4096 , " X " +DATA 80 , 0 , 4096 , " % " +DATA 81 , 0 , 4096 , " " +DATA 82 , 0 , 4096 , " 5555 " +DATA 83 , 0 , 4096 , "FFFF " +DATA 84 , 0 , 4096 , " %% " +DATA 85 , 0 , 4096 , " " +DATA 86 , 0 , 4096 , " ~~~~ " +DATA 87 , 0 , 4096 , " || " +DATA 88 , 0 , 4096 , " SSS " +DATA 89 , 0 , 4096 , " 6666 " +DATA 90 , 0 , 4096 , " ww " +DATA 91 , 0 , 4096 , " 1111 " +DATA 92 , 0 , 4096 , " K " +DATA 93 , 0 , 4096 , " ttttt " +DATA 94 , 0 , 4096 , " OOOOO " +DATA 95 , 0 , 4096 , " E " +DATA 96 , 0 , 4096 , " PPPPP " +DATA 97 , 0 , 4096 , " == " +DATA 98 , 0 , 4096 , " VVVV " +DATA 99 , 0 , 4096 , " c " +DATA 100 , 0 , 4096 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_MAXLEN_A_N.OUT b/NBS2/F_MAXLEN_A_N.OUT new file mode 100644 index 0000000..99b21aa --- /dev/null +++ b/NBS2/F_MAXLEN_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 4096 A$=[] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 4096 A$=[3] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 4096 A$=[z] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 4096 A$=[ 3] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 4096 A$=[ z] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 4096 A$=[3 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 4096 A$=[z ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 4096 A$=[ 3 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 4096 A$=[ z ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 4096 A$=[ LLLL] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 4096 A$=[ '' ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 4096 A$=[ oo ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 4096 A$=[ 00 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 4096 A$=[ \\\\ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 4096 A$=[ lllll ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 4096 A$=[ uuuu ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 4096 A$=[ a ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 4096 A$=[ hh ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 4096 A$=[ h ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 4096 A$=[ )] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 4096 A$=[ 5 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 4096 A$=[ 2 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 4096 A$=[ - ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 4096 A$=[dd ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4096 A$=[ tttt ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 4096 A$=[ :::: ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4096 A$=[ ___ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 4096 A$=[ _____ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 4096 A$=[ S ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 4096 A$=[ FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 4096 A$=[ kkk] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4096 A$=[ NNNN ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 4096 A$=[ mmmm ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 4096 A$=[ ,,,,, ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4096 A$=[OO ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 4096 A$=[ HHHH ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 4096 A$=[ < ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 4096 A$=[ j ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 4096 A$=[ yyyy ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 4096 A$=[ +++ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 4096 A$=[o ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 4096 A$=[ ((] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 4096 A$=[ uu ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 4096 A$=[ 00 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 4096 A$=[ HH ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 4096 A$=[ G ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 4096 A$=[ {{{{ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 4096 A$=[ ]]] ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 4096 A$=[CCC] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 4096 A$=[ 44 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4096 A$=[^^ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4096 A$=[ QQ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 4096 A$=[ FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 4096 A$=[ n ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 4096 A$=[ hh ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 4096 A$=[555 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 4096 A$=[ YYYY ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 4096 A$=[ w ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 4096 A$=[MMMM ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 4096 A$=[ JJJJ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 4096 A$=[ %% ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 4096 A$=[ * ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 4096 A$=[ @@@ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 4096 A$=[I ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 4096 A$=[ ss ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4096 A$=[ f ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 4096 A$=[ D ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 4096 A$=[### ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 4096 A$=[ ' ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 4096 A$=[ dd ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 4096 A$=[ TT ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4096 A$=[ vvv ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 4096 A$=[ X ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 4096 A$=[ % ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 4096 A$=[ 5555 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 4096 A$=[FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 4096 A$=[ %% ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 4096 A$=[ ~~~~ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 4096 A$=[ || ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4096 A$=[ SSS ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 4096 A$=[ 6666 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4096 A$=[ ww ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 4096 A$=[ 1111 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 4096 A$=[ K ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 4096 A$=[ ttttt ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 4096 A$=[ OOOOO ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 4096 A$=[ E ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 4096 A$=[ PPPPP ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 4096 A$=[ == ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4096 A$=[ VVVV ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 4096 A$=[ c ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4096 A$=[ yyyy ] + F= 0 N= 4096 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MAXLEN_A_N.dif b/NBS2/F_MAXLEN_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_MAXLEN_A_N.run b/NBS2/F_MAXLEN_A_N.run new file mode 100644 index 0000000..8342c20 --- /dev/null +++ b/NBS2/F_MAXLEN_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 4096 A$=[] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 4096 A$=[3] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 4096 A$=[z] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 4096 A$=[ 3] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 4096 A$=[ z] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 4096 A$=[3 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 4096 A$=[z ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 4096 A$=[ 3 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 4096 A$=[ z ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 4096 A$=[ LLLL] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 4096 A$=[ '' ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 4096 A$=[ oo ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 4096 A$=[ 00 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 4096 A$=[ \\\\ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 4096 A$=[ lllll ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 4096 A$=[ uuuu ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 4096 A$=[ a ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 4096 A$=[ hh ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 4096 A$=[ h ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 4096 A$=[ )] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 4096 A$=[ 5 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 4096 A$=[ 2 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 4096 A$=[ - ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 4096 A$=[dd ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 4096 A$=[ tttt ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 4096 A$=[ :::: ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 4096 A$=[ ___ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 4096 A$=[ _____ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 4096 A$=[ S ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 4096 A$=[ FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 4096 A$=[ kkk] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4096 A$=[ NNNN ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 4096 A$=[ mmmm ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 4096 A$=[ ,,,,, ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 4096 A$=[OO ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 4096 A$=[ HHHH ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 4096 A$=[ < ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 4096 A$=[ j ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 4096 A$=[ yyyy ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 4096 A$=[ +++ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 4096 A$=[o ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 4096 A$=[ ((] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 4096 A$=[ uu ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 4096 A$=[ 00 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 4096 A$=[ HH ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 4096 A$=[ G ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 4096 A$=[ {{{{ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 4096 A$=[ ]]] ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 4096 A$=[CCC] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 4096 A$=[ 44 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 4096 A$=[^^ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 4096 A$=[ QQ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 4096 A$=[ FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 4096 A$=[ n ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 4096 A$=[ hh ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 4096 A$=[555 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 4096 A$=[ YYYY ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 4096 A$=[ w ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 4096 A$=[MMMM ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 4096 A$=[ JJJJ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 4096 A$=[ %% ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 4096 A$=[ * ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 4096 A$=[ @@@ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 4096 A$=[I ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 4096 A$=[ ss ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 4096 A$=[ f ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 4096 A$=[ D ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 4096 A$=[### ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 4096 A$=[ ' ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 4096 A$=[ dd ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 4096 A$=[ TT ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4096 A$=[ vvv ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 4096 A$=[ X ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 4096 A$=[ % ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 4096 A$=[ 5555 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 4096 A$=[FFFF ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 4096 A$=[ %% ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 4096 A$=[ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 4096 A$=[ ~~~~ ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 4096 A$=[ || ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4096 A$=[ SSS ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 4096 A$=[ 6666 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4096 A$=[ ww ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 4096 A$=[ 1111 ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 4096 A$=[ K ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 4096 A$=[ ttttt ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 4096 A$=[ OOOOO ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 4096 A$=[ E ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 4096 A$=[ PPPPP ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 4096 A$=[ == ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4096 A$=[ VVVV ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 4096 A$=[ c ] + F= 0 N= 4096 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4096 A$=[ yyyy ] + F= 0 N= 4096 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MAX_X_Y_N.80 b/NBS2/F_MAX_X_Y_N.80 new file mode 100644 index 0000000..85c7375 --- /dev/null +++ b/NBS2/F_MAX_X_Y_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 Y=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 Y= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 Y=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 Y= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 Y=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 Y= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 Y= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 Y= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 Y= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 Y=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 Y=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 Y=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 Y= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 Y= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 Y= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 Y= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 Y=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 Y=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 Y= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 Y=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 Y=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 Y=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 Y= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 Y=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 Y= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 Y= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 Y= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 Y=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 Y=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 Y=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 Y= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 Y= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 Y= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 Y= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 Y= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 Y= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 Y=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 Y=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 Y=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 Y=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 Y=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 Y=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 Y=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 Y=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 Y=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 Y=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 Y=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 Y=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 Y= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 Y=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 Y= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 Y= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 Y= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 Y=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 Y=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 Y= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 Y=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 Y=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 Y=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 Y=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 Y=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 Y=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 Y=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 Y=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 Y= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 Y= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 Y= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 Y= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 Y= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MAX_X_Y_N.BAS b/NBS2/F_MAX_X_Y_N.BAS new file mode 100644 index 0000000..8606e6a --- /dev/null +++ b/NBS2/F_MAX_X_Y_N.BAS @@ -0,0 +1,184 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:27 +REM FILENAME: F_MAX_X_Y_N.BAS +REM SYNTAX: N = MAX( X, Y ) +REM UNIQUEID: F_MAX_X_Y_N +REM FUNCTION: MAX +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = MAX( X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 , 1 +DATA 3 , 0 , -1 , -1 , -1 +DATA 4 , 0 , .4 , .4 , .4 +DATA 5 , 0 , -.4 , -.4 , -.4 +DATA 6 , 0 , .6 , .6 , .6 +DATA 7 , 0 , -.6 , -.6 , -.6 +DATA 8 , 0 , 254 , 254 , 254 +DATA 9 , 0 , 255 , 255 , 255 +DATA 10 , 0 , 256 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 , 32000 +DATA 12 , 0 , -.227229 , -.227229 , -.227229 +DATA 13 , 0 , -.239157 , -.239157 , -.239157 +DATA 14 , 0 , -.213586 , -.213586 , -.213586 +DATA 15 , 0 , .274675 , .274675 , .274675 +DATA 16 , 0 , .169766 , .169766 , .169766 +DATA 17 , 0 , .318766 , .318766 , .318766 +DATA 18 , 0 , 2.06658E-2 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , .188257 , .188257 , .188257 +DATA 20 , 0 , -.277537 , -.277537 , -.277537 +DATA 21 , 0 , -.481303 , -.481303 , -.481303 +DATA 22 , 0 , .43556 , .43556 , .43556 +DATA 23 , 0 , -.210971 , -.210971 , -.210971 +DATA 24 , 0 , -.455216 , -.455216 , -.455216 +DATA 25 , 0 , -110.907 , -110.907 , -110.907 +DATA 26 , 0 , 105.632 , 105.632 , 105.632 +DATA 27 , 0 , -114.341 , -114.341 , -114.341 +DATA 28 , 0 , 109.706 , 109.706 , 109.706 +DATA 29 , 0 , 109.198 , 109.198 , 109.198 +DATA 30 , 0 , 85.8773 , 85.8773 , 85.8773 +DATA 31 , 0 , -58.3548 , -58.3548 , -58.3548 +DATA 32 , 0 , 29.6397 , 29.6397 , 29.6397 +DATA 33 , 0 , -108.36 , -108.36 , -108.36 +DATA 34 , 0 , -46.5199 , -46.5199 , -46.5199 +DATA 35 , 0 , 112.521 , 112.521 , 112.521 +DATA 36 , 0 , 45.4151 , 45.4151 , 45.4151 +DATA 37 , 0 , 101.129 , 101.129 , 101.129 +DATA 38 , 0 , 65.0473 , 65.0473 , 65.0473 +DATA 39 , 0 , 48.4012 , 48.4012 , 48.4012 +DATA 40 , 0 , 122.294 , 122.294 , 122.294 +DATA 41 , 0 , -56.1094 , -56.1094 , -56.1094 +DATA 42 , 0 , -121.087 , -121.087 , -121.087 +DATA 43 , 0 , -123.517 , -123.517 , -123.517 +DATA 44 , 0 , -97.6301 , -97.6301 , -97.6301 +DATA 45 , 0 , -64.0001 , -64.0001 , -64.0001 +DATA 46 , 0 , -25.6888 , -25.6888 , -25.6888 +DATA 47 , 0 , 14.8006 , 14.8006 , 14.8006 +DATA 48 , 0 , -61.0877 , -61.0877 , -61.0877 +DATA 49 , 0 , -66.6381 , -66.6381 , -66.6381 +DATA 50 , 0 , -5476.5 , -5476.5 , -5476.5 +DATA 51 , 0 , -21210.3 , -21210.3 , -21210.3 +DATA 52 , 0 , -28757.2 , -28757.2 , -28757.2 +DATA 53 , 0 , -28732.2 , -28732.2 , -28732.2 +DATA 54 , 0 , 12730.3 , 12730.3 , 12730.3 +DATA 55 , 0 , -1830.69 , -1830.69 , -1830.69 +DATA 56 , 0 , 5486.39 , 5486.39 , 5486.39 +DATA 57 , 0 , 22405.9 , 22405.9 , 22405.9 +DATA 58 , 0 , 30809.8 , 30809.8 , 30809.8 +DATA 59 , 0 , -28930.6 , -28930.6 , -28930.6 +DATA 60 , 0 , -6014.53 , -6014.53 , -6014.53 +DATA 61 , 0 , 17414.6 , 17414.6 , 17414.6 +DATA 62 , 0 , -10538.3 , -10538.3 , -10538.3 +DATA 63 , 0 , -17536.3 , -17536.3 , -17536.3 +DATA 64 , 0 , -8856.62 , -8856.62 , -8856.62 +DATA 65 , 0 , -5140.12 , -5140.12 , -5140.12 +DATA 66 , 0 , -8595.31 , -8595.31 , -8595.31 +DATA 67 , 0 , -3382.87 , -3382.87 , -3382.87 +DATA 68 , 0 , -5002.07 , -5002.07 , -5002.07 +DATA 69 , 0 , -5800.72 , -5800.72 , -5800.72 +DATA 70 , 0 , 29686.4 , 29686.4 , 29686.4 +DATA 71 , 0 , 2571 , 2571. , 2571. +DATA 72 , 0 , 31091 , 31091. , 31091. +DATA 73 , 0 , 14819 , 14819. , 14819. +DATA 74 , 0 , 3790.9 , 3790.9 , 3790.9 +DATA 75 , 0 , -4.2981E+9 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -3.10179E+9 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -4.86159E+9 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -3.4101E+9 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.26748E+9 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.66524E+9 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -4.87912E+9 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -3.39941E+9 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -3.49119E+9 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.86324E+9 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -3.1518E+9 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_MAX_X_Y_N.OUT b/NBS2/F_MAX_X_Y_N.OUT new file mode 100644 index 0000000..02d49d5 --- /dev/null +++ b/NBS2/F_MAX_X_Y_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 Y=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 Y= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 Y=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 Y= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 Y=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 Y= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 Y= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 Y= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 Y= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 Y=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 Y=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 Y=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 Y= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 Y= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 Y= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 Y= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 Y=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 Y=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 Y= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 Y=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 Y=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 Y=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 Y= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 Y=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 Y= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 Y= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 Y= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 Y=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 Y=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 Y=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 Y= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 Y= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 Y= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 Y= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 Y= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 Y= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 Y=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 Y=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 Y=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 Y=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 Y=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 Y=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 Y=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 Y=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 Y=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 Y=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 Y=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 Y=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 Y= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 Y=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 Y= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 Y= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 Y= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 Y=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 Y=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 Y= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 Y=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 Y=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 Y=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 Y=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 Y=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 Y=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 Y=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 Y=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 Y= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 Y= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 Y= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 Y= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 Y= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MAX_X_Y_N.dif b/NBS2/F_MAX_X_Y_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_MAX_X_Y_N.run b/NBS2/F_MAX_X_Y_N.run new file mode 100644 index 0000000..85c7375 --- /dev/null +++ b/NBS2/F_MAX_X_Y_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 Y=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 Y= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 Y=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 Y= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 Y=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 Y= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 Y= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 Y= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 Y= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 Y=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 Y=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 Y=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 Y= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 Y= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 Y= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 Y= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 Y=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 Y=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 Y= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 Y=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 Y=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 Y=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 Y= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 Y=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 Y= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 Y= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 Y= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 Y=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 Y=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 Y=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 Y= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 Y= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 Y= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 Y= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 Y= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 Y= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 Y=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 Y=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 Y=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 Y=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 Y=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 Y=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 Y=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 Y=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 Y=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 Y=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 Y=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 Y=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 Y= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 Y=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 Y= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 Y= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 Y= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 Y=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 Y=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 Y= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 Y=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 Y=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 Y=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 Y=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 Y=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 Y=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 Y=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 Y=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 Y= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 Y= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 Y= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 Y= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 Y= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MID_A_X_S.80 b/NBS2/F_MID_A_X_S.80 new file mode 100644 index 0000000..1efaab3 --- /dev/null +++ b/NBS2/F_MID_A_X_S.80 @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 1 R$=[] A$=[] X= 0 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 1 R$=[] A$=[z] X= .4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 1 R$=[] A$=[ ] X=-.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] X= .6 + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[] A$=[3 ] X= 254 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[] A$=[z ] X= 255 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[] A$=[ 3 ] X= 256 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 1 R$=[] A$=[ LLLL] X=-.227229 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 1 R$=[] A$=[ '' ] X= +-.239157 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 1 R$=[] A$=[ oo ] X= +-.213586 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 1 R$=[] A$=[ 00 ] X= .274675 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 1 R$=[] A$=[ \\\\ ] X= .169766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 1 R$=[] A$=[ lllll ] X= .318766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 1 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 1 R$=[] A$=[ a ] X= .188257 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 1 R$=[] A$=[ ] X=-.277537 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 1 R$=[] A$=[ hh ] X=-.481303 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 1 R$=[] A$=[ h ] X= .43556 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 1 R$=[] A$=[ )] X=-.210971 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 1 R$=[] A$=[ 5 ] X=-.455216 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[] A$=[ - ] X= 105.632 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[] A$=[ tttt ] X= 109.706 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[] A$=[ :::: ] X= 109.198 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[] A$=[ ___ ] X= 85.8773 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] X= 29.6397 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[] A$=[ FFFF ] X= 112.521 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[] A$=[ kkk] X= 45.4151 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[] A$=[ NNNN ] X= + 101.129 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[] A$=[ ,,,,, ] X= + 48.4012 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[] A$=[OO ] X= 122.294 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[] A$=[ ((] X= 14.8006 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[] A$=[ ss ] X= 2571 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[] A$=[### ] X= 3790.9 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MID_A_X_S.BAS b/NBS2/F_MID_A_X_S.BAS new file mode 100644 index 0000000..208376b --- /dev/null +++ b/NBS2/F_MID_A_X_S.BAS @@ -0,0 +1,160 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:28 +REM FILENAME: F_MID_A_X_S.BAS +REM SYNTAX: S$ = MID$( A$, X ) +REM UNIQUEID: F_MID_A_X_S +REM FUNCTION: MID$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]", "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = MID$( A$, X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , "", "", 0 +DATA 2 , 0 , " ", " ", 1 +DATA 3 , 1 , "", "3", -1 +DATA 4 , 1 , "", "z", .4 +DATA 5 , 1 , "", " ", -.4 +DATA 6 , 0 , " 3", " 3", .6 +DATA 7 , 1 , "", " z", -.6 +DATA 8 , 0 , "", "3 ", 254 +DATA 9 , 0 , "", "z ", 255 +DATA 10 , 0 , "", " 3 ", 256 +DATA 11 , 1 , "", " z ", 32000 +DATA 12 , 1 , "", " LLLL", -.227229 +DATA 13 , 1 , "", " '' ", -.239157 +DATA 14 , 1 , "", " oo ", -.213586 +DATA 15 , 1 , "", " 00 ", .274675 +DATA 16 , 1 , "", " \\\\ ", .169766 +DATA 17 , 1 , "", " lllll ", .318766 +DATA 18 , 1 , "", " uuuu ", 2.06658E-2 +DATA 19 , 1 , "", " a ", .188257 +DATA 20 , 1 , "", " ", -.277537 +DATA 21 , 1 , "", " hh ", -.481303 +DATA 22 , 1 , "", " h ", .43556 +DATA 23 , 1 , "", " )", -.210971 +DATA 24 , 1 , "", " 5 ", -.455216 +DATA 25 , 1 , "", " 2 ", -110.907 +DATA 26 , 0 , "", " - ", 105.632 +DATA 27 , 1 , "", "dd ", -114.341 +DATA 28 , 0 , "", " tttt ", 109.706 +DATA 29 , 0 , "", " :::: ", 109.198 +DATA 30 , 0 , "", " ___ ", 85.8773 +DATA 31 , 1 , "", " ", -58.3548 +DATA 32 , 0 , "", " ", 29.6397 +DATA 33 , 1 , "", " _____ ", -108.36 +DATA 34 , 1 , "", " S ", -46.5199 +DATA 35 , 0 , "", " FFFF ", 112.521 +DATA 36 , 0 , "", " kkk", 45.4151 +DATA 37 , 0 , "", " NNNN ", 101.129 +DATA 38 , 0 , "", " mmmm ", 65.0473 +DATA 39 , 0 , "", " ,,,,, ", 48.4012 +DATA 40 , 0 , "", "OO ", 122.294 +DATA 41 , 1 , "", " HHHH ", -56.1094 +DATA 42 , 1 , "", " < ", -121.087 +DATA 43 , 1 , "", " j ", -123.517 +DATA 44 , 1 , "", " yyyy ", -97.6301 +DATA 45 , 1 , "", " +++ ", -64.0001 +DATA 46 , 1 , "", "o ", -25.6888 +DATA 47 , 0 , "", " ((", 14.8006 +DATA 48 , 1 , "", " uu ", -61.0877 +DATA 49 , 1 , "", " 00 ", -66.6381 +DATA 50 , 1 , "", " HH ", -5476.5 +DATA 51 , 1 , "", " ", -21210.3 +DATA 52 , 1 , "", " G ", -28757.2 +DATA 53 , 1 , "", " {{{{ ", -28732.2 +DATA 54 , 1 , "", " ]]] ", 12730.3 +DATA 55 , 1 , "", "CCC", -1830.69 +DATA 56 , 1 , "", " 44 ", 5486.39 +DATA 57 , 1 , "", "^^ ", 22405.9 +DATA 58 , 1 , "", " QQ ", 30809.8 +DATA 59 , 1 , "", " FFFF ", -28930.6 +DATA 60 , 1 , "", " n ", -6014.53 +DATA 61 , 1 , "", " hh ", 17414.6 +DATA 62 , 1 , "", "555 ", -10538.3 +DATA 63 , 1 , "", " YYYY ", -17536.3 +DATA 64 , 1 , "", " w ", -8856.62 +DATA 65 , 1 , "", "MMMM ", -5140.12 +DATA 66 , 1 , "", " JJJJ ", -8595.31 +DATA 67 , 1 , "", " %% ", -3382.87 +DATA 68 , 1 , "", " * ", -5002.07 +DATA 69 , 1 , "", " @@@ ", -5800.72 +DATA 70 , 1 , "", "I ", 29686.4 +DATA 71 , 0 , "", " ss ", 2571. +DATA 72 , 1 , "", " f ", 31091. +DATA 73 , 1 , "", " D ", 14819. +DATA 74 , 0 , "", "### ", 3790.9 +DATA 75 , 1 , "", " ' ", -4.2981E+9 +DATA 76 , 1 , "", " dd ", -7.05453E+8 +DATA 77 , 1 , "", " TT ", -3.10179E+9 +DATA 78 , 1 , "", " vvv ", -4.86159E+9 +DATA 79 , 1 , "", " X ", -8.62908E+8 +DATA 80 , 1 , "", " % ", -3.4101E+9 +DATA 81 , 1 , "", " ", 3.3889E+9 +DATA 82 , 1 , "", " 5555 ", 2.49826E+9 +DATA 83 , 1 , "", "FFFF ", 2.3491E+9 +DATA 84 , 1 , "", " %% ", 1.94745E+8 +DATA 85 , 1 , "", " ", 2.02475E+9 +DATA 86 , 1 , "", " ~~~~ ", -2.26748E+9 +DATA 87 , 1 , "", " || ", -2.10587E+9 +DATA 88 , 1 , "", " SSS ", 4.23585E+9 +DATA 89 , 1 , "", " 6666 ", -2.66524E+9 +DATA 90 , 1 , "", " ww ", 4.01052E+9 +DATA 91 , 1 , "", " 1111 ", -4.87912E+9 +DATA 92 , 1 , "", " K ", 1.77556E+9 +DATA 93 , 1 , "", " ttttt ", 2.87705E+8 +DATA 94 , 1 , "", " OOOOO ", 1.99977E+8 +DATA 95 , 1 , "", " E ", -3.39941E+9 +DATA 96 , 1 , "", " PPPPP ", -3.49119E+9 +DATA 97 , 1 , "", " == ", -2.86324E+9 +DATA 98 , 1 , "", " VVVV ", 4.20418E+9 +DATA 99 , 1 , "", " c ", -3.1518E+9 +DATA 100 , 1 , "", " yyyy ", 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_MID_A_X_S.OUT b/NBS2/F_MID_A_X_S.OUT new file mode 100644 index 0000000..588c2ba --- /dev/null +++ b/NBS2/F_MID_A_X_S.OUT @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 1 R$=[] A$=[] X= 0 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 1 R$=[] A$=[z] X= .4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 1 R$=[] A$=[ ] X=-.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] X= .6 + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[] A$=[3 ] X= 254 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[] A$=[z ] X= 255 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[] A$=[ 3 ] X= 256 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 1 R$=[] A$=[ LLLL] X=-.227229 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 1 R$=[] A$=[ '' ] X= +-.239157 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 1 R$=[] A$=[ oo ] X= +-.213586 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 1 R$=[] A$=[ 00 ] X= .274675 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 1 R$=[] A$=[ \\\\ ] X= .169766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 1 R$=[] A$=[ lllll ] X= .318766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 1 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 1 R$=[] A$=[ a ] X= .188257 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 1 R$=[] A$=[ ] X=-.277537 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 1 R$=[] A$=[ hh ] X=-.481303 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 1 R$=[] A$=[ h ] X= .43556 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 1 R$=[] A$=[ )] X=-.210971 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 1 R$=[] A$=[ 5 ] X=-.455216 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[] A$=[ - ] X= 105.632 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[] A$=[ tttt ] X= 109.706 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[] A$=[ :::: ] X= 109.198 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[] A$=[ ___ ] X= 85.8773 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] X= 29.6397 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[] A$=[ FFFF ] X= 112.521 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[] A$=[ kkk] X= 45.4151 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[] A$=[ NNNN ] X= + 101.129 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[] A$=[ ,,,,, ] X= + 48.4012 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[] A$=[OO ] X= 122.294 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[] A$=[ ((] X= 14.8006 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[] A$=[ ss ] X= 2571 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[] A$=[### ] X= 3790.9 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MID_A_X_S.dif b/NBS2/F_MID_A_X_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_MID_A_X_S.run b/NBS2/F_MID_A_X_S.run new file mode 100644 index 0000000..1efaab3 --- /dev/null +++ b/NBS2/F_MID_A_X_S.run @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 1 R$=[] A$=[] X= 0 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 1 R$=[] A$=[z] X= .4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 1 R$=[] A$=[ ] X=-.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] X= .6 + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[] A$=[3 ] X= 254 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[] A$=[z ] X= 255 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[] A$=[ 3 ] X= 256 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 1 R$=[] A$=[ LLLL] X=-.227229 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 1 R$=[] A$=[ '' ] X= +-.239157 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 1 R$=[] A$=[ oo ] X= +-.213586 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 1 R$=[] A$=[ 00 ] X= .274675 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 1 R$=[] A$=[ \\\\ ] X= .169766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 1 R$=[] A$=[ lllll ] X= .318766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 1 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 1 R$=[] A$=[ a ] X= .188257 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 1 R$=[] A$=[ ] X=-.277537 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 1 R$=[] A$=[ hh ] X=-.481303 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 1 R$=[] A$=[ h ] X= .43556 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 1 R$=[] A$=[ )] X=-.210971 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 1 R$=[] A$=[ 5 ] X=-.455216 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[] A$=[ - ] X= 105.632 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[] A$=[ tttt ] X= 109.706 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[] A$=[ :::: ] X= 109.198 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[] A$=[ ___ ] X= 85.8773 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] X= 29.6397 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[] A$=[ FFFF ] X= 112.521 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[] A$=[ kkk] X= 45.4151 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[] A$=[ NNNN ] X= + 101.129 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[] A$=[ ,,,,, ] X= + 48.4012 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[] A$=[OO ] X= 122.294 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[] A$=[ ((] X= 14.8006 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[] A$=[ ss ] X= 2571 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[] A$=[### ] X= 3790.9 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MID_A_X_Y_S.80 b/NBS2/F_MID_A_X_Y_S.80 new file mode 100644 index 0000000..bf6f620 --- /dev/null +++ b/NBS2/F_MID_A_X_Y_S.80 @@ -0,0 +1,398 @@ +TESTCASE # 1 E= 1 R$=[] A$=[] X= 0 Y= 0 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 Y= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 Y=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 1 R$=[] A$=[z] X= .4 Y= .4 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 1 R$=[] A$=[ ] X=-.4 Y=-.4 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] A$=[ 3] X= .6 Y= .6 + + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 Y=-.6 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[] A$=[3 ] X= 254 Y= + 254 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[] A$=[z ] X= 255 Y= + 255 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[] A$=[ 3 ] X= 256 Y= + 256 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 Y= + 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 1 R$=[] A$=[ LLLL] X=-.227229 Y= +-.227229 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 1 R$=[] A$=[ '' ] X= +-.239157 Y=-.239157 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 1 R$=[] A$=[ oo ] X= +-.213586 Y=-.213586 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 1 R$=[] A$=[ 00 ] X= .274675 Y= + .274675 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 1 R$=[] A$=[ \\\\ ] X= .169766 Y= + .169766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 1 R$=[] A$=[ lllll ] X= .318766 Y= + .318766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 1 R$=[] A$=[ uuuu ] X= + 2.06658E-2 Y= 2.06658E-2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 1 R$=[] A$=[ a ] X= .188257 Y= + .188257 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 1 R$=[] A$=[ ] X=-.277537 Y= +-.277537 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 1 R$=[] A$=[ hh ] X=-.481303 Y= +-.481303 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 1 R$=[] A$=[ h ] X= .43556 Y= + .43556 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 1 R$=[] A$=[ )] X=-.210971 Y= +-.210971 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 1 R$=[] A$=[ 5 ] X=-.455216 Y= +-.455216 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 Y= +-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[] A$=[ - ] X= 105.632 Y= + 105.632 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 Y= +-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[] A$=[ tttt ] X= 109.706 Y= + 109.706 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[] A$=[ :::: ] X= 109.198 Y= + 109.198 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[] A$=[ ___ ] X= 85.8773 Y= + 85.8773 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 Y= +-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] X= 29.6397 Y= + 29.6397 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 Y= +-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 Y= +-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[] A$=[ FFFF ] X= 112.521 Y= + 112.521 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[] A$=[ kkk] X= 45.4151 Y= + 45.4151 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[] A$=[ NNNN ] X= + 101.129 Y= 101.129 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[] A$=[ mmmm ] X= 65.0473 Y= + 65.0473 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[] A$=[ ,,,,, ] X= + 48.4012 Y= 48.4012 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[] A$=[OO ] X= 122.294 Y= + 122.294 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 Y= +-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 Y= +-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 Y= +-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 Y=-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 Y= +-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 Y= +-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[] A$=[ ((] X= 14.8006 Y= + 14.8006 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 Y=-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 Y=-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 Y= +-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 Y= +-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 Y= +-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 Y= +-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 Y= 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 Y= +-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 Y= + 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 Y= + 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 Y= 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 Y=-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 Y= +-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 Y= + 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 Y= +-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 Y= +-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 Y=-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 Y= +-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 Y= +-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 Y=-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 Y= +-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 Y=-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 Y= + 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[] A$=[ ss ] X= 2571 Y= + 2571 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 Y= + 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 Y= + 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[] A$=[### ] X= 3790.9 Y= + 3790.9 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 Y=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 Y= +-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 Y= +-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 Y= +-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 Y= +-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 Y= +-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 Y= + 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 Y= + 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 Y= + 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 Y= + 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 Y= + 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 Y=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 Y= +-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 Y= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 Y= +-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 Y= + 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 Y= +-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 Y= + 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 Y= + 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 Y= + 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 Y= +-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 Y= +-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 Y= +-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 Y= + 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 Y= +-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 Y= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MID_A_X_Y_S.BAS b/NBS2/F_MID_A_X_Y_S.BAS new file mode 100644 index 0000000..9fccce6 --- /dev/null +++ b/NBS2/F_MID_A_X_Y_S.BAS @@ -0,0 +1,161 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:28 +REM FILENAME: F_MID_A_X_Y_S.BAS +REM SYNTAX: S$ = MID$( A$, X, Y ) +REM UNIQUEID: F_MID_A_X_Y_S +REM FUNCTION: MID$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]", "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = MID$( A$, X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , "", "", 0 , 0 +DATA 2 , 0 , " ", " ", 1 , 1 +DATA 3 , 1 , "", "3", -1 , -1 +DATA 4 , 1 , "", "z", .4 , .4 +DATA 5 , 1 , "", " ", -.4 , -.4 +DATA 6 , 0 , " ", " 3", .6 , .6 +DATA 7 , 1 , "", " z", -.6 , -.6 +DATA 8 , 0 , "", "3 ", 254 , 254 +DATA 9 , 0 , "", "z ", 255 , 255 +DATA 10 , 0 , "", " 3 ", 256 , 256 +DATA 11 , 1 , "", " z ", 32000 , 32000 +DATA 12 , 1 , "", " LLLL", -.227229 , -.227229 +DATA 13 , 1 , "", " '' ", -.239157 , -.239157 +DATA 14 , 1 , "", " oo ", -.213586 , -.213586 +DATA 15 , 1 , "", " 00 ", .274675 , .274675 +DATA 16 , 1 , "", " \\\\ ", .169766 , .169766 +DATA 17 , 1 , "", " lllll ", .318766 , .318766 +DATA 18 , 1 , "", " uuuu ", 2.06658E-2 , 2.06658E-2 +DATA 19 , 1 , "", " a ", .188257 , .188257 +DATA 20 , 1 , "", " ", -.277537 , -.277537 +DATA 21 , 1 , "", " hh ", -.481303 , -.481303 +DATA 22 , 1 , "", " h ", .43556 , .43556 +DATA 23 , 1 , "", " )", -.210971 , -.210971 +DATA 24 , 1 , "", " 5 ", -.455216 , -.455216 +DATA 25 , 1 , "", " 2 ", -110.907 , -110.907 +DATA 26 , 0 , "", " - ", 105.632 , 105.632 +DATA 27 , 1 , "", "dd ", -114.341 , -114.341 +DATA 28 , 0 , "", " tttt ", 109.706 , 109.706 +DATA 29 , 0 , "", " :::: ", 109.198 , 109.198 +DATA 30 , 0 , "", " ___ ", 85.8773 , 85.8773 +DATA 31 , 1 , "", " ", -58.3548 , -58.3548 +DATA 32 , 0 , "", " ", 29.6397 , 29.6397 +DATA 33 , 1 , "", " _____ ", -108.36 , -108.36 +DATA 34 , 1 , "", " S ", -46.5199 , -46.5199 +DATA 35 , 0 , "", " FFFF ", 112.521 , 112.521 +DATA 36 , 0 , "", " kkk", 45.4151 , 45.4151 +DATA 37 , 0 , "", " NNNN ", 101.129 , 101.129 +DATA 38 , 0 , "", " mmmm ", 65.0473 , 65.0473 +DATA 39 , 0 , "", " ,,,,, ", 48.4012 , 48.4012 +DATA 40 , 0 , "", "OO ", 122.294 , 122.294 +DATA 41 , 1 , "", " HHHH ", -56.1094 , -56.1094 +DATA 42 , 1 , "", " < ", -121.087 , -121.087 +DATA 43 , 1 , "", " j ", -123.517 , -123.517 +DATA 44 , 1 , "", " yyyy ", -97.6301 , -97.6301 +DATA 45 , 1 , "", " +++ ", -64.0001 , -64.0001 +DATA 46 , 1 , "", "o ", -25.6888 , -25.6888 +DATA 47 , 0 , "", " ((", 14.8006 , 14.8006 +DATA 48 , 1 , "", " uu ", -61.0877 , -61.0877 +DATA 49 , 1 , "", " 00 ", -66.6381 , -66.6381 +DATA 50 , 1 , "", " HH ", -5476.5 , -5476.5 +DATA 51 , 1 , "", " ", -21210.3 , -21210.3 +DATA 52 , 1 , "", " G ", -28757.2 , -28757.2 +DATA 53 , 1 , "", " {{{{ ", -28732.2 , -28732.2 +DATA 54 , 1 , "", " ]]] ", 12730.3 , 12730.3 +DATA 55 , 1 , "", "CCC", -1830.69 , -1830.69 +DATA 56 , 1 , "", " 44 ", 5486.39 , 5486.39 +DATA 57 , 1 , "", "^^ ", 22405.9 , 22405.9 +DATA 58 , 1 , "", " QQ ", 30809.8 , 30809.8 +DATA 59 , 1 , "", " FFFF ", -28930.6 , -28930.6 +DATA 60 , 1 , "", " n ", -6014.53 , -6014.53 +DATA 61 , 1 , "", " hh ", 17414.6 , 17414.6 +DATA 62 , 1 , "", "555 ", -10538.3 , -10538.3 +DATA 63 , 1 , "", " YYYY ", -17536.3 , -17536.3 +DATA 64 , 1 , "", " w ", -8856.62 , -8856.62 +DATA 65 , 1 , "", "MMMM ", -5140.12 , -5140.12 +DATA 66 , 1 , "", " JJJJ ", -8595.31 , -8595.31 +DATA 67 , 1 , "", " %% ", -3382.87 , -3382.87 +DATA 68 , 1 , "", " * ", -5002.07 , -5002.07 +DATA 69 , 1 , "", " @@@ ", -5800.72 , -5800.72 +DATA 70 , 1 , "", "I ", 29686.4 , 29686.4 +DATA 71 , 0 , "", " ss ", 2571. , 2571. +DATA 72 , 1 , "", " f ", 31091. , 31091. +DATA 73 , 1 , "", " D ", 14819. , 14819. +DATA 74 , 0 , "", "### ", 3790.9 , 3790.9 +DATA 75 , 1 , "", " ' ", -4.2981E+9 , -4.2981E+9 +DATA 76 , 1 , "", " dd ", -7.05453E+8 , -7.05453E+8 +DATA 77 , 1 , "", " TT ", -3.10179E+9 , -3.10179E+9 +DATA 78 , 1 , "", " vvv ", -4.86159E+9 , -4.86159E+9 +DATA 79 , 1 , "", " X ", -8.62908E+8 , -8.62908E+8 +DATA 80 , 1 , "", " % ", -3.4101E+9 , -3.4101E+9 +DATA 81 , 1 , "", " ", 3.3889E+9 , 3.3889E+9 +DATA 82 , 1 , "", " 5555 ", 2.49826E+9 , 2.49826E+9 +DATA 83 , 1 , "", "FFFF ", 2.3491E+9 , 2.3491E+9 +DATA 84 , 1 , "", " %% ", 1.94745E+8 , 1.94745E+8 +DATA 85 , 1 , "", " ", 2.02475E+9 , 2.02475E+9 +DATA 86 , 1 , "", " ~~~~ ", -2.26748E+9 , -2.26748E+9 +DATA 87 , 1 , "", " || ", -2.10587E+9 , -2.10587E+9 +DATA 88 , 1 , "", " SSS ", 4.23585E+9 , 4.23585E+9 +DATA 89 , 1 , "", " 6666 ", -2.66524E+9 , -2.66524E+9 +DATA 90 , 1 , "", " ww ", 4.01052E+9 , 4.01052E+9 +DATA 91 , 1 , "", " 1111 ", -4.87912E+9 , -4.87912E+9 +DATA 92 , 1 , "", " K ", 1.77556E+9 , 1.77556E+9 +DATA 93 , 1 , "", " ttttt ", 2.87705E+8 , 2.87705E+8 +DATA 94 , 1 , "", " OOOOO ", 1.99977E+8 , 1.99977E+8 +DATA 95 , 1 , "", " E ", -3.39941E+9 , -3.39941E+9 +DATA 96 , 1 , "", " PPPPP ", -3.49119E+9 , -3.49119E+9 +DATA 97 , 1 , "", " == ", -2.86324E+9 , -2.86324E+9 +DATA 98 , 1 , "", " VVVV ", 4.20418E+9 , 4.20418E+9 +DATA 99 , 1 , "", " c ", -3.1518E+9 , -3.1518E+9 +DATA 100 , 1 , "", " yyyy ", 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_MID_A_X_Y_S.OUT b/NBS2/F_MID_A_X_Y_S.OUT new file mode 100644 index 0000000..d10f931 --- /dev/null +++ b/NBS2/F_MID_A_X_Y_S.OUT @@ -0,0 +1,398 @@ +TESTCASE # 1 E= 1 R$=[] A$=[] X= 0 Y= 0 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 Y= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 Y=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 1 R$=[] A$=[z] X= .4 Y= .4 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 1 R$=[] A$=[ ] X=-.4 Y=-.4 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] A$=[ 3] X= .6 Y= .6 + + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 Y=-.6 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[] A$=[3 ] X= 254 Y= + 254 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[] A$=[z ] X= 255 Y= + 255 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[] A$=[ 3 ] X= 256 Y= + 256 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 Y= + 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 1 R$=[] A$=[ LLLL] X=-.227229 Y= +-.227229 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 1 R$=[] A$=[ '' ] X= +-.239157 Y=-.239157 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 1 R$=[] A$=[ oo ] X= +-.213586 Y=-.213586 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 1 R$=[] A$=[ 00 ] X= .274675 Y= + .274675 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 1 R$=[] A$=[ \\\\ ] X= .169766 Y= + .169766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 1 R$=[] A$=[ lllll ] X= .318766 Y= + .318766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 1 R$=[] A$=[ uuuu ] X= + 2.06658E-2 Y= 2.06658E-2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 1 R$=[] A$=[ a ] X= .188257 Y= + .188257 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 1 R$=[] A$=[ ] X=-.277537 Y= +-.277537 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 1 R$=[] A$=[ hh ] X=-.481303 Y= +-.481303 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 1 R$=[] A$=[ h ] X= .43556 Y= + .43556 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 1 R$=[] A$=[ )] X=-.210971 Y= +-.210971 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 1 R$=[] A$=[ 5 ] X=-.455216 Y= +-.455216 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 Y= +-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[] A$=[ - ] X= 105.632 Y= + 105.632 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 Y= +-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[] A$=[ tttt ] X= 109.706 Y= + 109.706 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[] A$=[ :::: ] X= 109.198 Y= + 109.198 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[] A$=[ ___ ] X= 85.8773 Y= + 85.8773 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 Y= +-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] X= 29.6397 Y= + 29.6397 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 Y= +-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 Y= +-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[] A$=[ FFFF ] X= 112.521 Y= + 112.521 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[] A$=[ kkk] X= 45.4151 Y= + 45.4151 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[] A$=[ NNNN ] X= + 101.129 Y= 101.129 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[] A$=[ mmmm ] X= 65.0473 Y= + 65.0473 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[] A$=[ ,,,,, ] X= + 48.4012 Y= 48.4012 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[] A$=[OO ] X= 122.294 Y= + 122.294 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 Y= +-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 Y= +-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 Y= +-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 Y=-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 Y= +-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 Y= +-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[] A$=[ ((] X= 14.8006 Y= + 14.8006 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 Y=-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 Y=-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 Y= +-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 Y= +-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 Y= +-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 Y= +-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 Y= 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 Y= +-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 Y= + 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 Y= + 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 Y= 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 Y=-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 Y= +-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 Y= + 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 Y= +-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 Y= +-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 Y=-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 Y= +-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 Y= +-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 Y=-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 Y= +-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 Y=-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 Y= + 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[] A$=[ ss ] X= 2571 Y= + 2571 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 Y= + 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 Y= + 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[] A$=[### ] X= 3790.9 Y= + 3790.9 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 Y=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 Y= +-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 Y= +-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 Y= +-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 Y= +-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 Y= +-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 Y= + 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 Y= + 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 Y= + 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 Y= + 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 Y= + 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 Y=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 Y= +-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 Y= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 Y= +-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 Y= + 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 Y= +-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 Y= + 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 Y= + 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 Y= + 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 Y= +-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 Y= +-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 Y= +-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 Y= + 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 Y= +-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 Y= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MID_A_X_Y_S.dif b/NBS2/F_MID_A_X_Y_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_MID_A_X_Y_S.run b/NBS2/F_MID_A_X_Y_S.run new file mode 100644 index 0000000..bf6f620 --- /dev/null +++ b/NBS2/F_MID_A_X_Y_S.run @@ -0,0 +1,398 @@ +TESTCASE # 1 E= 1 R$=[] A$=[] X= 0 Y= 0 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 Y= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 Y=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 1 R$=[] A$=[z] X= .4 Y= .4 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 1 R$=[] A$=[ ] X=-.4 Y=-.4 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] A$=[ 3] X= .6 Y= .6 + + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 Y=-.6 + + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[] A$=[3 ] X= 254 Y= + 254 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[] A$=[z ] X= 255 Y= + 255 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[] A$=[ 3 ] X= 256 Y= + 256 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 Y= + 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 1 R$=[] A$=[ LLLL] X=-.227229 Y= +-.227229 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 1 R$=[] A$=[ '' ] X= +-.239157 Y=-.239157 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 1 R$=[] A$=[ oo ] X= +-.213586 Y=-.213586 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 1 R$=[] A$=[ 00 ] X= .274675 Y= + .274675 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 1 R$=[] A$=[ \\\\ ] X= .169766 Y= + .169766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 1 R$=[] A$=[ lllll ] X= .318766 Y= + .318766 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 1 R$=[] A$=[ uuuu ] X= + 2.06658E-2 Y= 2.06658E-2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 1 R$=[] A$=[ a ] X= .188257 Y= + .188257 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 1 R$=[] A$=[ ] X=-.277537 Y= +-.277537 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 1 R$=[] A$=[ hh ] X=-.481303 Y= +-.481303 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 1 R$=[] A$=[ h ] X= .43556 Y= + .43556 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 1 R$=[] A$=[ )] X=-.210971 Y= +-.210971 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 1 R$=[] A$=[ 5 ] X=-.455216 Y= +-.455216 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 Y= +-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[] A$=[ - ] X= 105.632 Y= + 105.632 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 Y= +-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[] A$=[ tttt ] X= 109.706 Y= + 109.706 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[] A$=[ :::: ] X= 109.198 Y= + 109.198 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[] A$=[ ___ ] X= 85.8773 Y= + 85.8773 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 Y= +-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] X= 29.6397 Y= + 29.6397 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 Y= +-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 Y= +-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[] A$=[ FFFF ] X= 112.521 Y= + 112.521 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[] A$=[ kkk] X= 45.4151 Y= + 45.4151 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[] A$=[ NNNN ] X= + 101.129 Y= 101.129 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[] A$=[ mmmm ] X= 65.0473 Y= + 65.0473 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[] A$=[ ,,,,, ] X= + 48.4012 Y= 48.4012 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[] A$=[OO ] X= 122.294 Y= + 122.294 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 Y= +-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 Y= +-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 Y= +-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 Y=-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 Y= +-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 Y= +-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[] A$=[ ((] X= 14.8006 Y= + 14.8006 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 Y=-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 Y=-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 Y= +-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 Y= +-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 Y= +-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 Y= +-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 Y= 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 Y= +-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 Y= + 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 Y= + 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 Y= 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 Y=-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 Y= +-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 Y= + 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 Y= +-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 Y= +-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 Y=-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 Y= +-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 Y= +-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 Y=-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 Y= +-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 Y=-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 Y= + 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[] A$=[ ss ] X= 2571 Y= + 2571 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 Y= + 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 Y= + 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[] A$=[### ] X= 3790.9 Y= + 3790.9 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 Y=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 Y= +-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 Y= +-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 Y= +-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 Y= +-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 Y= +-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 Y= + 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 Y= + 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 Y= + 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 Y= + 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 Y= + 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 Y=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 Y= +-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 Y= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 Y= +-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 Y= + 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 Y= +-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 Y= + 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 Y= + 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 Y= + 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 Y= +-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 Y= +-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 Y= +-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 Y= + 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 Y= +-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 Y= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MIN_X_Y_N.80 b/NBS2/F_MIN_X_Y_N.80 new file mode 100644 index 0000000..85c7375 --- /dev/null +++ b/NBS2/F_MIN_X_Y_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 Y=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 Y= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 Y=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 Y= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 Y=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 Y= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 Y= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 Y= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 Y= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 Y=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 Y=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 Y=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 Y= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 Y= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 Y= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 Y= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 Y=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 Y=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 Y= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 Y=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 Y=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 Y=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 Y= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 Y=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 Y= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 Y= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 Y= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 Y=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 Y=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 Y=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 Y= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 Y= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 Y= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 Y= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 Y= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 Y= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 Y=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 Y=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 Y=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 Y=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 Y=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 Y=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 Y=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 Y=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 Y=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 Y=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 Y=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 Y=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 Y= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 Y=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 Y= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 Y= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 Y= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 Y=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 Y=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 Y= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 Y=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 Y=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 Y=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 Y=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 Y=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 Y=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 Y=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 Y=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 Y= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 Y= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 Y= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 Y= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 Y= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MIN_X_Y_N.BAS b/NBS2/F_MIN_X_Y_N.BAS new file mode 100644 index 0000000..ab7a663 --- /dev/null +++ b/NBS2/F_MIN_X_Y_N.BAS @@ -0,0 +1,184 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:28 +REM FILENAME: F_MIN_X_Y_N.BAS +REM SYNTAX: N = MIN( X, Y ) +REM UNIQUEID: F_MIN_X_Y_N +REM FUNCTION: MIN +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = MIN( X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 , 1 +DATA 3 , 0 , -1 , -1 , -1 +DATA 4 , 0 , .4 , .4 , .4 +DATA 5 , 0 , -.4 , -.4 , -.4 +DATA 6 , 0 , .6 , .6 , .6 +DATA 7 , 0 , -.6 , -.6 , -.6 +DATA 8 , 0 , 254 , 254 , 254 +DATA 9 , 0 , 255 , 255 , 255 +DATA 10 , 0 , 256 , 256 , 256 +DATA 11 , 0 , 32000 , 32000 , 32000 +DATA 12 , 0 , -.227229 , -.227229 , -.227229 +DATA 13 , 0 , -.239157 , -.239157 , -.239157 +DATA 14 , 0 , -.213586 , -.213586 , -.213586 +DATA 15 , 0 , .274675 , .274675 , .274675 +DATA 16 , 0 , .169766 , .169766 , .169766 +DATA 17 , 0 , .318766 , .318766 , .318766 +DATA 18 , 0 , 2.06658E-2 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , .188257 , .188257 , .188257 +DATA 20 , 0 , -.277537 , -.277537 , -.277537 +DATA 21 , 0 , -.481303 , -.481303 , -.481303 +DATA 22 , 0 , .43556 , .43556 , .43556 +DATA 23 , 0 , -.210971 , -.210971 , -.210971 +DATA 24 , 0 , -.455216 , -.455216 , -.455216 +DATA 25 , 0 , -110.907 , -110.907 , -110.907 +DATA 26 , 0 , 105.632 , 105.632 , 105.632 +DATA 27 , 0 , -114.341 , -114.341 , -114.341 +DATA 28 , 0 , 109.706 , 109.706 , 109.706 +DATA 29 , 0 , 109.198 , 109.198 , 109.198 +DATA 30 , 0 , 85.8773 , 85.8773 , 85.8773 +DATA 31 , 0 , -58.3548 , -58.3548 , -58.3548 +DATA 32 , 0 , 29.6397 , 29.6397 , 29.6397 +DATA 33 , 0 , -108.36 , -108.36 , -108.36 +DATA 34 , 0 , -46.5199 , -46.5199 , -46.5199 +DATA 35 , 0 , 112.521 , 112.521 , 112.521 +DATA 36 , 0 , 45.4151 , 45.4151 , 45.4151 +DATA 37 , 0 , 101.129 , 101.129 , 101.129 +DATA 38 , 0 , 65.0473 , 65.0473 , 65.0473 +DATA 39 , 0 , 48.4012 , 48.4012 , 48.4012 +DATA 40 , 0 , 122.294 , 122.294 , 122.294 +DATA 41 , 0 , -56.1094 , -56.1094 , -56.1094 +DATA 42 , 0 , -121.087 , -121.087 , -121.087 +DATA 43 , 0 , -123.517 , -123.517 , -123.517 +DATA 44 , 0 , -97.6301 , -97.6301 , -97.6301 +DATA 45 , 0 , -64.0001 , -64.0001 , -64.0001 +DATA 46 , 0 , -25.6888 , -25.6888 , -25.6888 +DATA 47 , 0 , 14.8006 , 14.8006 , 14.8006 +DATA 48 , 0 , -61.0877 , -61.0877 , -61.0877 +DATA 49 , 0 , -66.6381 , -66.6381 , -66.6381 +DATA 50 , 0 , -5476.5 , -5476.5 , -5476.5 +DATA 51 , 0 , -21210.3 , -21210.3 , -21210.3 +DATA 52 , 0 , -28757.2 , -28757.2 , -28757.2 +DATA 53 , 0 , -28732.2 , -28732.2 , -28732.2 +DATA 54 , 0 , 12730.3 , 12730.3 , 12730.3 +DATA 55 , 0 , -1830.69 , -1830.69 , -1830.69 +DATA 56 , 0 , 5486.39 , 5486.39 , 5486.39 +DATA 57 , 0 , 22405.9 , 22405.9 , 22405.9 +DATA 58 , 0 , 30809.8 , 30809.8 , 30809.8 +DATA 59 , 0 , -28930.6 , -28930.6 , -28930.6 +DATA 60 , 0 , -6014.53 , -6014.53 , -6014.53 +DATA 61 , 0 , 17414.6 , 17414.6 , 17414.6 +DATA 62 , 0 , -10538.3 , -10538.3 , -10538.3 +DATA 63 , 0 , -17536.3 , -17536.3 , -17536.3 +DATA 64 , 0 , -8856.62 , -8856.62 , -8856.62 +DATA 65 , 0 , -5140.12 , -5140.12 , -5140.12 +DATA 66 , 0 , -8595.31 , -8595.31 , -8595.31 +DATA 67 , 0 , -3382.87 , -3382.87 , -3382.87 +DATA 68 , 0 , -5002.07 , -5002.07 , -5002.07 +DATA 69 , 0 , -5800.72 , -5800.72 , -5800.72 +DATA 70 , 0 , 29686.4 , 29686.4 , 29686.4 +DATA 71 , 0 , 2571 , 2571. , 2571. +DATA 72 , 0 , 31091 , 31091. , 31091. +DATA 73 , 0 , 14819 , 14819. , 14819. +DATA 74 , 0 , 3790.9 , 3790.9 , 3790.9 +DATA 75 , 0 , -4.2981E+9 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , -7.05453E+8 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , -3.10179E+9 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , -4.86159E+9 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , -8.62908E+8 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , -3.4101E+9 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 3.3889E+9 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 2.49826E+9 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 2.3491E+9 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 1.94745E+8 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 2.02475E+9 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , -2.26748E+9 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , -2.10587E+9 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 4.23585E+9 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , -2.66524E+9 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 4.01052E+9 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , -4.87912E+9 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 1.77556E+9 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 2.87705E+8 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 1.99977E+8 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , -3.39941E+9 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , -3.49119E+9 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , -2.86324E+9 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 4.20418E+9 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , -3.1518E+9 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 4.60615E+9 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_MIN_X_Y_N.OUT b/NBS2/F_MIN_X_Y_N.OUT new file mode 100644 index 0000000..02d49d5 --- /dev/null +++ b/NBS2/F_MIN_X_Y_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 Y=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 Y= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 Y=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 Y= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 Y=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 Y= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 Y= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 Y= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 Y= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 Y=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 Y=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 Y=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 Y= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 Y= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 Y= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 Y= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 Y=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 Y=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 Y= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 Y=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 Y=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 Y=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 Y= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 Y=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 Y= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 Y= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 Y= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 Y=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 Y=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 Y=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 Y= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 Y= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 Y= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 Y= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 Y= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 Y= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 Y=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 Y=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 Y=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 Y=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 Y=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 Y=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 Y=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 Y=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 Y=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 Y=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 Y=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 Y=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 Y= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 Y=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 Y= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 Y= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 Y= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 Y=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 Y=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 Y= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 Y=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 Y=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 Y=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 Y=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 Y=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 Y=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 Y=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 Y=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 Y= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 Y= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 Y= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 Y= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 Y= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_MIN_X_Y_N.dif b/NBS2/F_MIN_X_Y_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_MIN_X_Y_N.run b/NBS2/F_MIN_X_Y_N.run new file mode 100644 index 0000000..85c7375 --- /dev/null +++ b/NBS2/F_MIN_X_Y_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 Y=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .4 X= .4 Y= .4 + F= 0 N= .4 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.4 X=-.4 Y=-.4 + F= 0 N=-.4 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .6 X= .6 Y= .6 + F= 0 N= .6 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.6 X=-.6 Y=-.6 + F= 0 N=-.6 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 254 X= 254 Y= 254 + F= 0 N= 254 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 255 X= 255 Y= 255 + F= 0 N= 255 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 256 X= 256 Y= 256 + F= 0 N= 256 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 32000 X= 32000 Y= 32000 + F= 0 N= 32000 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.227229 X=-.227229 Y=-.227229 + F= 0 N=-.227229 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.239157 X=-.239157 Y=-.239157 + F= 0 N=-.239157 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.213586 X=-.213586 Y=-.213586 + F= 0 N=-.213586 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .274675 X= .274675 Y= .274675 + F= 0 N= .274675 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .169766 X= .169766 Y= .169766 + F= 0 N= .169766 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .318766 X= .318766 Y= .318766 + F= 0 N= .318766 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06658E-2 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 2.06658E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .188257 X= .188257 Y= .188257 + F= 0 N= .188257 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.277537 X=-.277537 Y=-.277537 + F= 0 N=-.277537 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.481303 X=-.481303 Y=-.481303 + F= 0 N=-.481303 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .43556 X= .43556 Y= .43556 + F= 0 N= .43556 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.210971 X=-.210971 Y=-.210971 + F= 0 N=-.210971 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.455216 X=-.455216 Y=-.455216 + F= 0 N=-.455216 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-110.907 X=-110.907 Y=-110.907 + F= 0 N=-110.907 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 105.632 X= 105.632 Y= 105.632 + F= 0 N= 105.632 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-114.341 X=-114.341 Y=-114.341 + F= 0 N=-114.341 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 109.706 X= 109.706 Y= 109.706 + F= 0 N= 109.706 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 109.198 X= 109.198 Y= 109.198 + F= 0 N= 109.198 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 85.8773 X= 85.8773 Y= 85.8773 + F= 0 N= 85.8773 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-58.3548 X=-58.3548 Y=-58.3548 + F= 0 N=-58.3548 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-108.36 X=-108.36 Y=-108.36 + F= 0 N=-108.36 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-46.5199 X=-46.5199 Y=-46.5199 + F= 0 N=-46.5199 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 112.521 X= 112.521 Y= 112.521 + F= 0 N= 112.521 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 45.4151 X= 45.4151 Y= 45.4151 + F= 0 N= 45.4151 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 101.129 X= 101.129 Y= 101.129 + F= 0 N= 101.129 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 65.0473 X= 65.0473 Y= 65.0473 + F= 0 N= 65.0473 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 48.4012 X= 48.4012 Y= 48.4012 + F= 0 N= 48.4012 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 122.294 X= 122.294 Y= 122.294 + F= 0 N= 122.294 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-56.1094 X=-56.1094 Y=-56.1094 + F= 0 N=-56.1094 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-121.087 X=-121.087 Y=-121.087 + F= 0 N=-121.087 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-123.517 X=-123.517 Y=-123.517 + F= 0 N=-123.517 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-97.6301 X=-97.6301 Y=-97.6301 + F= 0 N=-97.6301 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-64.0001 X=-64.0001 Y=-64.0001 + F= 0 N=-64.0001 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-25.6888 X=-25.6888 Y=-25.6888 + F= 0 N=-25.6888 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-61.0877 X=-61.0877 Y=-61.0877 + F= 0 N=-61.0877 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-66.6381 X=-66.6381 Y=-66.6381 + F= 0 N=-66.6381 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-5476.5 X=-5476.5 Y=-5476.5 + F= 0 N=-5476.5 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-21210.3 X=-21210.3 Y=-21210.3 + F= 0 N=-21210.3 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-28757.2 X=-28757.2 Y=-28757.2 + F= 0 N=-28757.2 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-28732.2 X=-28732.2 Y=-28732.2 + F= 0 N=-28732.2 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 12730.3 X= 12730.3 Y= 12730.3 + F= 0 N= 12730.3 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1830.69 X=-1830.69 Y=-1830.69 + F= 0 N=-1830.69 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 5486.39 X= 5486.39 Y= 5486.39 + F= 0 N= 5486.39 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 22405.9 X= 22405.9 Y= 22405.9 + F= 0 N= 22405.9 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 30809.8 X= 30809.8 Y= 30809.8 + F= 0 N= 30809.8 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-28930.6 X=-28930.6 Y=-28930.6 + F= 0 N=-28930.6 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-6014.53 X=-6014.53 Y=-6014.53 + F= 0 N=-6014.53 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 17414.6 X= 17414.6 Y= 17414.6 + F= 0 N= 17414.6 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-10538.3 X=-10538.3 Y=-10538.3 + F= 0 N=-10538.3 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-17536.3 X=-17536.3 Y=-17536.3 + F= 0 N=-17536.3 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-8856.62 X=-8856.62 Y=-8856.62 + F= 0 N=-8856.62 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-5140.12 X=-5140.12 Y=-5140.12 + F= 0 N=-5140.12 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-8595.31 X=-8595.31 Y=-8595.31 + F= 0 N=-8595.31 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-3382.87 X=-3382.87 Y=-3382.87 + F= 0 N=-3382.87 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-5002.07 X=-5002.07 Y=-5002.07 + F= 0 N=-5002.07 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-5800.72 X=-5800.72 Y=-5800.72 + F= 0 N=-5800.72 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 29686.4 X= 29686.4 Y= 29686.4 + F= 0 N= 29686.4 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2571 X= 2571 Y= 2571 + F= 0 N= 2571 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 31091 X= 31091 Y= 31091 + F= 0 N= 31091 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 14819 X= 14819 Y= 14819 + F= 0 N= 14819 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 3790.9 X= 3790.9 Y= 3790.9 + F= 0 N= 3790.9 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-4.2981E+9 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N=-4.2981E+9 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-7.05453E+8 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N=-7.05453E+8 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-3.10179E+9 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N=-3.10179E+9 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-4.86159E+9 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N=-4.86159E+9 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-8.62908E+8 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N=-8.62908E+8 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-3.4101E+9 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N=-3.4101E+9 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 3.3889E+9 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 3.3889E+9 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 2.49826E+9 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 2.49826E+9 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.3491E+9 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 2.3491E+9 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1.94745E+8 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 1.94745E+8 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 2.02475E+9 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 2.02475E+9 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-2.26748E+9 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N=-2.26748E+9 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-2.10587E+9 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N=-2.10587E+9 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 4.23585E+9 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 4.23585E+9 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-2.66524E+9 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N=-2.66524E+9 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 4.01052E+9 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 4.01052E+9 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-4.87912E+9 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N=-4.87912E+9 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1.77556E+9 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 1.77556E+9 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 2.87705E+8 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 2.87705E+8 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.99977E+8 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 1.99977E+8 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-3.39941E+9 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N=-3.39941E+9 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-3.49119E+9 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N=-3.49119E+9 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-2.86324E+9 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N=-2.86324E+9 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 4.20418E+9 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 4.20418E+9 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-3.1518E+9 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N=-3.1518E+9 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 4.60615E+9 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 4.60615E+9 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_NULL_X_N.80 b/NBS2/F_NULL_X_N.80 new file mode 100644 index 0000000..fa23ff0 --- /dev/null +++ b/NBS2/F_NULL_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_NULL_X_N.BAS b/NBS2/F_NULL_X_N.BAS new file mode 100644 index 0000000..6b60a23 --- /dev/null +++ b/NBS2/F_NULL_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:29 +REM FILENAME: F_NULL_X_N.BAS +REM SYNTAX: N = NULL( X ) +REM UNIQUEID: F_NULL_X_N +REM FUNCTION: NULL +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = NULL( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 0 , 1 +DATA 3 , 1 , 0 , -1 +DATA 4 , 0 , 0 , .4 +DATA 5 , 0 , 0 , -.4 +DATA 6 , 0 , 0 , .6 +DATA 7 , 1 , 0 , -.6 +DATA 8 , 0 , 0 , 254 +DATA 9 , 0 , 0 , 255 +DATA 10 , 1 , 0 , 256 +DATA 11 , 1 , 0 , 32000 +DATA 12 , 0 , 0 , -.227229 +DATA 13 , 0 , 0 , -.239157 +DATA 14 , 0 , 0 , -.213586 +DATA 15 , 0 , 0 , .274675 +DATA 16 , 0 , 0 , .169766 +DATA 17 , 0 , 0 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 +DATA 20 , 0 , 0 , -.277537 +DATA 21 , 0 , 0 , -.481303 +DATA 22 , 0 , 0 , .43556 +DATA 23 , 0 , 0 , -.210971 +DATA 24 , 0 , 0 , -.455216 +DATA 25 , 1 , 0 , -110.907 +DATA 26 , 0 , 0 , 105.632 +DATA 27 , 1 , 0 , -114.341 +DATA 28 , 0 , 0 , 109.706 +DATA 29 , 0 , 0 , 109.198 +DATA 30 , 0 , 0 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 +DATA 32 , 0 , 0 , 29.6397 +DATA 33 , 1 , 0 , -108.36 +DATA 34 , 1 , 0 , -46.5199 +DATA 35 , 0 , 0 , 112.521 +DATA 36 , 0 , 0 , 45.4151 +DATA 37 , 0 , 0 , 101.129 +DATA 38 , 0 , 0 , 65.0473 +DATA 39 , 0 , 0 , 48.4012 +DATA 40 , 0 , 0 , 122.294 +DATA 41 , 1 , 0 , -56.1094 +DATA 42 , 1 , 0 , -121.087 +DATA 43 , 1 , 0 , -123.517 +DATA 44 , 1 , 0 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 +DATA 46 , 1 , 0 , -25.6888 +DATA 47 , 0 , 0 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 +DATA 54 , 1 , 0 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 +DATA 56 , 1 , 0 , 5486.39 +DATA 57 , 1 , 0 , 22405.9 +DATA 58 , 1 , 0 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 +DATA 61 , 1 , 0 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 +DATA 70 , 1 , 0 , 29686.4 +DATA 71 , 1 , 0 , 2571. +DATA 72 , 1 , 0 , 31091. +DATA 73 , 1 , 0 , 14819. +DATA 74 , 1 , 0 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 +DATA 84 , 1 , 0 , 1.94745E+8 +DATA 85 , 1 , 0 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 1 , 0 , 1.77556E+9 +DATA 93 , 1 , 0 , 2.87705E+8 +DATA 94 , 1 , 0 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_NULL_X_N.OUT b/NBS2/F_NULL_X_N.OUT new file mode 100644 index 0000000..e8c87e4 --- /dev/null +++ b/NBS2/F_NULL_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_NULL_X_N.dif b/NBS2/F_NULL_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_NULL_X_N.run b/NBS2/F_NULL_X_N.run new file mode 100644 index 0000000..fa23ff0 --- /dev/null +++ b/NBS2/F_NULL_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_OCT_X_S.80 b/NBS2/F_OCT_X_S.80 new file mode 100644 index 0000000..3c37cb1 --- /dev/null +++ b/NBS2/F_OCT_X_S.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[0] X= 0 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[1] X= 1 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[37777777777] X=-1 + F= 0 S$=[37777777777] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[0] X= .4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[0] X=-.4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[1] X= .6 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[37777777777] X=-.6 + F= 0 S$=[37777777777] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[376] X= 254 + F= 0 S$=[376] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[377] X= 255 + F= 0 S$=[377] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[400] X= 256 + F= 0 S$=[400] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[76400] X= 32000 + F= 0 S$=[76400] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[0] X=-.227229 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[0] X=-.239157 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[0] X=-.213586 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[0] X= .274675 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[0] X= .169766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[0] X= .318766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[0] X= 2.06658E-2 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[0] X= .188257 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[0] X=-.277537 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[0] X=-.481303 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[0] X= .43556 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[0] X=-.210971 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[0] X=-.455216 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[37777777621] X=-110.907 + F= 0 S$=[37777777621] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[152] X= 105.632 + F= 0 S$=[152] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[37777777616] X=-114.341 + F= 0 S$=[37777777616] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[156] X= 109.706 + F= 0 S$=[156] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[155] X= 109.198 + F= 0 S$=[155] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[126] X= 85.8773 + F= 0 S$=[126] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[37777777706] X=-58.3548 + F= 0 S$=[37777777706] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[36] X= 29.6397 + F= 0 S$=[36] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[37777777624] X=-108.36 + F= 0 S$=[37777777624] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[37777777721] X=-46.5199 + F= 0 S$=[37777777721] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[161] X= 112.521 + F= 0 S$=[161] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[55] X= 45.4151 + F= 0 S$=[55] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[145] X= 101.129 + F= 0 S$=[145] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[101] X= 65.0473 + F= 0 S$=[101] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[60] X= 48.4012 + F= 0 S$=[60] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[172] X= 122.294 + F= 0 S$=[172] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[37777777710] X=-56.1094 + F= 0 S$=[37777777710] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[37777777607] X=-121.087 + F= 0 S$=[37777777607] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[37777777604] X=-123.517 + F= 0 S$=[37777777604] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[37777777636] X=-97.6301 + F= 0 S$=[37777777636] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[37777777700] X=-64.0001 + F= 0 S$=[37777777700] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[37777777746] X=-25.6888 + F= 0 S$=[37777777746] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[17] X= 14.8006 + F= 0 S$=[17] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[37777777703] X=-61.0877 + F= 0 S$=[37777777703] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[37777777675] X=-66.6381 + F= 0 S$=[37777777675] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[37777765234] X=-5476.5 + F= 0 S$=[37777765234] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[37777726446] X=-21210.3 + F= 0 S$=[37777726446] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[37777707653] X=-28757.2 + F= 0 S$=[37777707653] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[37777707704] X=-28732.2 + F= 0 S$=[37777707704] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[30672] X= 12730.3 + F= 0 S$=[30672] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[37777774331] X=-1830.69 + F= 0 S$=[37777774331] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[12556] X= 5486.39 + F= 0 S$=[12556] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[53606] X= 22405.9 + F= 0 S$=[53606] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[74132] X= 30809.8 + F= 0 S$=[74132] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[37777707375] X=-28930.6 + F= 0 S$=[37777707375] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[37777764201] X=-6014.53 + F= 0 S$=[37777764201] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[42007] X= 17414.6 + F= 0 S$=[42007] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[37777753326] X=-10538.3 + F= 0 S$=[37777753326] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[37777735600] X=-17536.3 + F= 0 S$=[37777735600] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[37777756547] X=-8856.62 + F= 0 S$=[37777756547] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[37777765754] X=-5140.12 + F= 0 S$=[37777765754] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[37777757155] X=-8595.31 + F= 0 S$=[37777757155] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[37777771311] X=-3382.87 + F= 0 S$=[37777771311] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[37777766166] X=-5002.07 + F= 0 S$=[37777766166] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[37777764527] X=-5800.72 + F= 0 S$=[37777764527] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[71766] X= 29686.4 + F= 0 S$=[71766] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[5013] X= 2571 + F= 0 S$=[5013] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[74563] X= 31091 + F= 0 S$=[74563] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[34743] X= 14819 + F= 0 S$=[34743] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[7317] X= 3790.9 + F= 0 S$=[7317] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_OCT_X_S.BAS b/NBS2/F_OCT_X_S.BAS new file mode 100644 index 0000000..ea0a332 --- /dev/null +++ b/NBS2/F_OCT_X_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:29 +REM FILENAME: F_OCT_X_S.BAS +REM SYNTAX: S$ = OCT$( X ) +REM UNIQUEID: F_OCT_X_S +REM FUNCTION: OCT$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = OCT$( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "0", 0 +DATA 2 , 0 , "1", 1 +DATA 3 , 0 , "37777777777", -1 +DATA 4 , 0 , "0", .4 +DATA 5 , 0 , "0", -.4 +DATA 6 , 0 , "1", .6 +DATA 7 , 0 , "37777777777", -.6 +DATA 8 , 0 , "376", 254 +DATA 9 , 0 , "377", 255 +DATA 10 , 0 , "400", 256 +DATA 11 , 0 , "76400", 32000 +DATA 12 , 0 , "0", -.227229 +DATA 13 , 0 , "0", -.239157 +DATA 14 , 0 , "0", -.213586 +DATA 15 , 0 , "0", .274675 +DATA 16 , 0 , "0", .169766 +DATA 17 , 0 , "0", .318766 +DATA 18 , 0 , "0", 2.06658E-2 +DATA 19 , 0 , "0", .188257 +DATA 20 , 0 , "0", -.277537 +DATA 21 , 0 , "0", -.481303 +DATA 22 , 0 , "0", .43556 +DATA 23 , 0 , "0", -.210971 +DATA 24 , 0 , "0", -.455216 +DATA 25 , 0 , "37777777621", -110.907 +DATA 26 , 0 , "152", 105.632 +DATA 27 , 0 , "37777777616", -114.341 +DATA 28 , 0 , "156", 109.706 +DATA 29 , 0 , "155", 109.198 +DATA 30 , 0 , "126", 85.8773 +DATA 31 , 0 , "37777777706", -58.3548 +DATA 32 , 0 , "36", 29.6397 +DATA 33 , 0 , "37777777624", -108.36 +DATA 34 , 0 , "37777777721", -46.5199 +DATA 35 , 0 , "161", 112.521 +DATA 36 , 0 , "55", 45.4151 +DATA 37 , 0 , "145", 101.129 +DATA 38 , 0 , "101", 65.0473 +DATA 39 , 0 , "60", 48.4012 +DATA 40 , 0 , "172", 122.294 +DATA 41 , 0 , "37777777710", -56.1094 +DATA 42 , 0 , "37777777607", -121.087 +DATA 43 , 0 , "37777777604", -123.517 +DATA 44 , 0 , "37777777636", -97.6301 +DATA 45 , 0 , "37777777700", -64.0001 +DATA 46 , 0 , "37777777746", -25.6888 +DATA 47 , 0 , "17", 14.8006 +DATA 48 , 0 , "37777777703", -61.0877 +DATA 49 , 0 , "37777777675", -66.6381 +DATA 50 , 0 , "37777765234", -5476.5 +DATA 51 , 0 , "37777726446", -21210.3 +DATA 52 , 0 , "37777707653", -28757.2 +DATA 53 , 0 , "37777707704", -28732.2 +DATA 54 , 0 , "30672", 12730.3 +DATA 55 , 0 , "37777774331", -1830.69 +DATA 56 , 0 , "12556", 5486.39 +DATA 57 , 0 , "53606", 22405.9 +DATA 58 , 0 , "74132", 30809.8 +DATA 59 , 0 , "37777707375", -28930.6 +DATA 60 , 0 , "37777764201", -6014.53 +DATA 61 , 0 , "42007", 17414.6 +DATA 62 , 0 , "37777753326", -10538.3 +DATA 63 , 0 , "37777735600", -17536.3 +DATA 64 , 0 , "37777756547", -8856.62 +DATA 65 , 0 , "37777765754", -5140.12 +DATA 66 , 0 , "37777757155", -8595.31 +DATA 67 , 0 , "37777771311", -3382.87 +DATA 68 , 0 , "37777766166", -5002.07 +DATA 69 , 0 , "37777764527", -5800.72 +DATA 70 , 0 , "71766", 29686.4 +DATA 71 , 0 , "5013", 2571. +DATA 72 , 0 , "74563", 31091. +DATA 73 , 0 , "34743", 14819. +DATA 74 , 0 , "7317", 3790.9 +DATA 75 , 1 , "", -4.2981E+9 +DATA 76 , 1 , "", -7.05453E+8 +DATA 77 , 1 , "", -3.10179E+9 +DATA 78 , 1 , "", -4.86159E+9 +DATA 79 , 1 , "", -8.62908E+8 +DATA 80 , 1 , "", -3.4101E+9 +DATA 81 , 1 , "", 3.3889E+9 +DATA 82 , 1 , "", 2.49826E+9 +DATA 83 , 1 , "", 2.3491E+9 +DATA 84 , 1 , "", 1.94745E+8 +DATA 85 , 1 , "", 2.02475E+9 +DATA 86 , 1 , "", -2.26748E+9 +DATA 87 , 1 , "", -2.10587E+9 +DATA 88 , 1 , "", 4.23585E+9 +DATA 89 , 1 , "", -2.66524E+9 +DATA 90 , 1 , "", 4.01052E+9 +DATA 91 , 1 , "", -4.87912E+9 +DATA 92 , 1 , "", 1.77556E+9 +DATA 93 , 1 , "", 2.87705E+8 +DATA 94 , 1 , "", 1.99977E+8 +DATA 95 , 1 , "", -3.39941E+9 +DATA 96 , 1 , "", -3.49119E+9 +DATA 97 , 1 , "", -2.86324E+9 +DATA 98 , 1 , "", 4.20418E+9 +DATA 99 , 1 , "", -3.1518E+9 +DATA 100 , 1 , "", 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_OCT_X_S.OUT b/NBS2/F_OCT_X_S.OUT new file mode 100644 index 0000000..f694e5a --- /dev/null +++ b/NBS2/F_OCT_X_S.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[0] X= 0 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[1] X= 1 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[37777777777] X=-1 + F= 0 S$=[37777777777] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[0] X= .4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[0] X=-.4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[1] X= .6 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[37777777777] X=-.6 + F= 0 S$=[37777777777] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[376] X= 254 + F= 0 S$=[376] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[377] X= 255 + F= 0 S$=[377] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[400] X= 256 + F= 0 S$=[400] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[76400] X= 32000 + F= 0 S$=[76400] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[0] X=-.227229 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[0] X=-.239157 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[0] X=-.213586 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[0] X= .274675 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[0] X= .169766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[0] X= .318766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[0] X= 2.06658E-2 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[0] X= .188257 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[0] X=-.277537 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[0] X=-.481303 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[0] X= .43556 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[0] X=-.210971 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[0] X=-.455216 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[37777777621] X=-110.907 + F= 0 S$=[37777777621] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[152] X= 105.632 + F= 0 S$=[152] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[37777777616] X=-114.341 + F= 0 S$=[37777777616] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[156] X= 109.706 + F= 0 S$=[156] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[155] X= 109.198 + F= 0 S$=[155] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[126] X= 85.8773 + F= 0 S$=[126] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[37777777706] X=-58.3548 + F= 0 S$=[37777777706] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[36] X= 29.6397 + F= 0 S$=[36] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[37777777624] X=-108.36 + F= 0 S$=[37777777624] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[37777777721] X=-46.5199 + F= 0 S$=[37777777721] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[161] X= 112.521 + F= 0 S$=[161] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[55] X= 45.4151 + F= 0 S$=[55] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[145] X= 101.129 + F= 0 S$=[145] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[101] X= 65.0473 + F= 0 S$=[101] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[60] X= 48.4012 + F= 0 S$=[60] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[172] X= 122.294 + F= 0 S$=[172] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[37777777710] X=-56.1094 + F= 0 S$=[37777777710] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[37777777607] X=-121.087 + F= 0 S$=[37777777607] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[37777777604] X=-123.517 + F= 0 S$=[37777777604] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[37777777636] X=-97.6301 + F= 0 S$=[37777777636] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[37777777700] X=-64.0001 + F= 0 S$=[37777777700] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[37777777746] X=-25.6888 + F= 0 S$=[37777777746] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[17] X= 14.8006 + F= 0 S$=[17] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[37777777703] X=-61.0877 + F= 0 S$=[37777777703] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[37777777675] X=-66.6381 + F= 0 S$=[37777777675] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[37777765234] X=-5476.5 + F= 0 S$=[37777765234] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[37777726446] X=-21210.3 + F= 0 S$=[37777726446] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[37777707653] X=-28757.2 + F= 0 S$=[37777707653] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[37777707704] X=-28732.2 + F= 0 S$=[37777707704] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[30672] X= 12730.3 + F= 0 S$=[30672] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[37777774331] X=-1830.69 + F= 0 S$=[37777774331] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[12556] X= 5486.39 + F= 0 S$=[12556] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[53606] X= 22405.9 + F= 0 S$=[53606] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[74132] X= 30809.8 + F= 0 S$=[74132] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[37777707375] X=-28930.6 + F= 0 S$=[37777707375] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[37777764201] X=-6014.53 + F= 0 S$=[37777764201] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[42007] X= 17414.6 + F= 0 S$=[42007] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[37777753326] X=-10538.3 + F= 0 S$=[37777753326] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[37777735600] X=-17536.3 + F= 0 S$=[37777735600] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[37777756547] X=-8856.62 + F= 0 S$=[37777756547] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[37777765754] X=-5140.12 + F= 0 S$=[37777765754] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[37777757155] X=-8595.31 + F= 0 S$=[37777757155] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[37777771311] X=-3382.87 + F= 0 S$=[37777771311] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[37777766166] X=-5002.07 + F= 0 S$=[37777766166] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[37777764527] X=-5800.72 + F= 0 S$=[37777764527] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[71766] X= 29686.4 + F= 0 S$=[71766] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[5013] X= 2571 + F= 0 S$=[5013] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[74563] X= 31091 + F= 0 S$=[74563] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[34743] X= 14819 + F= 0 S$=[34743] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[7317] X= 3790.9 + F= 0 S$=[7317] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_OCT_X_S.dif b/NBS2/F_OCT_X_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_OCT_X_S.run b/NBS2/F_OCT_X_S.run new file mode 100644 index 0000000..3c37cb1 --- /dev/null +++ b/NBS2/F_OCT_X_S.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[0] X= 0 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[1] X= 1 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[37777777777] X=-1 + F= 0 S$=[37777777777] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[0] X= .4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[0] X=-.4 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[1] X= .6 + F= 0 S$=[1] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[37777777777] X=-.6 + F= 0 S$=[37777777777] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[376] X= 254 + F= 0 S$=[376] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[377] X= 255 + F= 0 S$=[377] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[400] X= 256 + F= 0 S$=[400] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[76400] X= 32000 + F= 0 S$=[76400] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[0] X=-.227229 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[0] X=-.239157 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[0] X=-.213586 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[0] X= .274675 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[0] X= .169766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[0] X= .318766 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[0] X= 2.06658E-2 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[0] X= .188257 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[0] X=-.277537 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[0] X=-.481303 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[0] X= .43556 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[0] X=-.210971 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[0] X=-.455216 + F= 0 S$=[0] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[37777777621] X=-110.907 + F= 0 S$=[37777777621] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[152] X= 105.632 + F= 0 S$=[152] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[37777777616] X=-114.341 + F= 0 S$=[37777777616] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[156] X= 109.706 + F= 0 S$=[156] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[155] X= 109.198 + F= 0 S$=[155] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[126] X= 85.8773 + F= 0 S$=[126] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[37777777706] X=-58.3548 + F= 0 S$=[37777777706] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[36] X= 29.6397 + F= 0 S$=[36] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[37777777624] X=-108.36 + F= 0 S$=[37777777624] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[37777777721] X=-46.5199 + F= 0 S$=[37777777721] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[161] X= 112.521 + F= 0 S$=[161] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[55] X= 45.4151 + F= 0 S$=[55] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[145] X= 101.129 + F= 0 S$=[145] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[101] X= 65.0473 + F= 0 S$=[101] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[60] X= 48.4012 + F= 0 S$=[60] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[172] X= 122.294 + F= 0 S$=[172] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[37777777710] X=-56.1094 + F= 0 S$=[37777777710] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[37777777607] X=-121.087 + F= 0 S$=[37777777607] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[37777777604] X=-123.517 + F= 0 S$=[37777777604] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[37777777636] X=-97.6301 + F= 0 S$=[37777777636] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[37777777700] X=-64.0001 + F= 0 S$=[37777777700] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[37777777746] X=-25.6888 + F= 0 S$=[37777777746] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[17] X= 14.8006 + F= 0 S$=[17] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[37777777703] X=-61.0877 + F= 0 S$=[37777777703] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[37777777675] X=-66.6381 + F= 0 S$=[37777777675] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[37777765234] X=-5476.5 + F= 0 S$=[37777765234] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[37777726446] X=-21210.3 + F= 0 S$=[37777726446] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[37777707653] X=-28757.2 + F= 0 S$=[37777707653] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[37777707704] X=-28732.2 + F= 0 S$=[37777707704] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[30672] X= 12730.3 + F= 0 S$=[30672] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[37777774331] X=-1830.69 + F= 0 S$=[37777774331] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[12556] X= 5486.39 + F= 0 S$=[12556] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[53606] X= 22405.9 + F= 0 S$=[53606] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[74132] X= 30809.8 + F= 0 S$=[74132] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[37777707375] X=-28930.6 + F= 0 S$=[37777707375] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[37777764201] X=-6014.53 + F= 0 S$=[37777764201] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[42007] X= 17414.6 + F= 0 S$=[42007] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[37777753326] X=-10538.3 + F= 0 S$=[37777753326] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[37777735600] X=-17536.3 + F= 0 S$=[37777735600] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[37777756547] X=-8856.62 + F= 0 S$=[37777756547] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[37777765754] X=-5140.12 + F= 0 S$=[37777765754] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[37777757155] X=-8595.31 + F= 0 S$=[37777757155] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[37777771311] X=-3382.87 + F= 0 S$=[37777771311] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[37777766166] X=-5002.07 + F= 0 S$=[37777766166] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[37777764527] X=-5800.72 + F= 0 S$=[37777764527] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[71766] X= 29686.4 + F= 0 S$=[71766] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[5013] X= 2571 + F= 0 S$=[5013] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[74563] X= 31091 + F= 0 S$=[74563] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[34743] X= 14819 + F= 0 S$=[34743] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[7317] X= 3790.9 + F= 0 S$=[7317] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ORD_A_N.80 b/NBS2/F_ORD_A_N.80 new file mode 100644 index 0000000..dbbf8b3 --- /dev/null +++ b/NBS2/F_ORD_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 51 A$=[3] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 122 A$=[z] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 A$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 A$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 A$=[ \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 A$=[ lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 A$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 A$=[ 5 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 A$=[ 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 A$=[ 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 A$=[ 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 A$=[ 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ORD_A_N.BAS b/NBS2/F_ORD_A_N.BAS new file mode 100644 index 0000000..e089a5c --- /dev/null +++ b/NBS2/F_ORD_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:29 +REM FILENAME: F_ORD_A_N.BAS +REM SYNTAX: N = ORD( A$ ) +REM UNIQUEID: F_ORD_A_N +REM FUNCTION: ORD +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ORD( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , "" +DATA 2 , 0 , 32 , " " +DATA 3 , 0 , 51 , "3" +DATA 4 , 0 , 122 , "z" +DATA 5 , 1 , 0 , " " +DATA 6 , 1 , 0 , " 3" +DATA 7 , 1 , 0 , " z" +DATA 8 , 1 , 0 , "3 " +DATA 9 , 1 , 0 , "z " +DATA 10 , 1 , 0 , " 3 " +DATA 11 , 1 , 0 , " z " +DATA 12 , 1 , 0 , " LLLL" +DATA 13 , 1 , 0 , " '' " +DATA 14 , 1 , 0 , " oo " +DATA 15 , 1 , 0 , " 00 " +DATA 16 , 1 , 0 , " \\\\ " +DATA 17 , 1 , 0 , " lllll " +DATA 18 , 1 , 0 , " uuuu " +DATA 19 , 1 , 0 , " a " +DATA 20 , 1 , 0 , " " +DATA 21 , 1 , 0 , " hh " +DATA 22 , 1 , 0 , " h " +DATA 23 , 1 , 0 , " )" +DATA 24 , 1 , 0 , " 5 " +DATA 25 , 1 , 0 , " 2 " +DATA 26 , 1 , 0 , " - " +DATA 27 , 1 , 0 , "dd " +DATA 28 , 1 , 0 , " tttt " +DATA 29 , 1 , 0 , " :::: " +DATA 30 , 1 , 0 , " ___ " +DATA 31 , 1 , 0 , " " +DATA 32 , 1 , 0 , " " +DATA 33 , 1 , 0 , " _____ " +DATA 34 , 1 , 0 , " S " +DATA 35 , 1 , 0 , " FFFF " +DATA 36 , 1 , 0 , " kkk" +DATA 37 , 1 , 0 , " NNNN " +DATA 38 , 1 , 0 , " mmmm " +DATA 39 , 1 , 0 , " ,,,,, " +DATA 40 , 1 , 0 , "OO " +DATA 41 , 1 , 0 , " HHHH " +DATA 42 , 1 , 0 , " < " +DATA 43 , 1 , 0 , " j " +DATA 44 , 1 , 0 , " yyyy " +DATA 45 , 1 , 0 , " +++ " +DATA 46 , 1 , 0 , "o " +DATA 47 , 1 , 0 , " ((" +DATA 48 , 1 , 0 , " uu " +DATA 49 , 1 , 0 , " 00 " +DATA 50 , 1 , 0 , " HH " +DATA 51 , 1 , 0 , " " +DATA 52 , 1 , 0 , " G " +DATA 53 , 1 , 0 , " {{{{ " +DATA 54 , 1 , 0 , " ]]] " +DATA 55 , 1 , 0 , "CCC" +DATA 56 , 1 , 0 , " 44 " +DATA 57 , 1 , 0 , "^^ " +DATA 58 , 1 , 0 , " QQ " +DATA 59 , 1 , 0 , " FFFF " +DATA 60 , 1 , 0 , " n " +DATA 61 , 1 , 0 , " hh " +DATA 62 , 1 , 0 , "555 " +DATA 63 , 1 , 0 , " YYYY " +DATA 64 , 1 , 0 , " w " +DATA 65 , 1 , 0 , "MMMM " +DATA 66 , 1 , 0 , " JJJJ " +DATA 67 , 1 , 0 , " %% " +DATA 68 , 1 , 0 , " * " +DATA 69 , 1 , 0 , " @@@ " +DATA 70 , 1 , 0 , "I " +DATA 71 , 1 , 0 , " ss " +DATA 72 , 1 , 0 , " f " +DATA 73 , 1 , 0 , " D " +DATA 74 , 1 , 0 , "### " +DATA 75 , 1 , 0 , " ' " +DATA 76 , 1 , 0 , " dd " +DATA 77 , 1 , 0 , " TT " +DATA 78 , 1 , 0 , " vvv " +DATA 79 , 1 , 0 , " X " +DATA 80 , 1 , 0 , " % " +DATA 81 , 1 , 0 , " " +DATA 82 , 1 , 0 , " 5555 " +DATA 83 , 1 , 0 , "FFFF " +DATA 84 , 1 , 0 , " %% " +DATA 85 , 1 , 0 , " " +DATA 86 , 1 , 0 , " ~~~~ " +DATA 87 , 1 , 0 , " || " +DATA 88 , 1 , 0 , " SSS " +DATA 89 , 1 , 0 , " 6666 " +DATA 90 , 1 , 0 , " ww " +DATA 91 , 1 , 0 , " 1111 " +DATA 92 , 1 , 0 , " K " +DATA 93 , 1 , 0 , " ttttt " +DATA 94 , 1 , 0 , " OOOOO " +DATA 95 , 1 , 0 , " E " +DATA 96 , 1 , 0 , " PPPPP " +DATA 97 , 1 , 0 , " == " +DATA 98 , 1 , 0 , " VVVV " +DATA 99 , 1 , 0 , " c " +DATA 100 , 1 , 0 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ORD_A_N.OUT b/NBS2/F_ORD_A_N.OUT new file mode 100644 index 0000000..ec1e08f --- /dev/null +++ b/NBS2/F_ORD_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 51 A$=[3] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 122 A$=[z] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 A$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 A$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 A$=[ \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 A$=[ lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 A$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 A$=[ 5 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 A$=[ 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 A$=[ 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 A$=[ 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 A$=[ 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ORD_A_N.dif b/NBS2/F_ORD_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ORD_A_N.run b/NBS2/F_ORD_A_N.run new file mode 100644 index 0000000..dbbf8b3 --- /dev/null +++ b/NBS2/F_ORD_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 32 A$=[ ] + F= 0 N= 32 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 51 A$=[3] + F= 0 N= 51 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 122 A$=[z] + F= 0 N= 122 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 1 R= 0 A$=[ 3] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 A$=[3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 A$=[ 3 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 A$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 A$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 A$=[ \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 A$=[ lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 A$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 A$=[ 5 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 A$=[ 2 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 A$=[ 00 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 A$=[ 44 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 A$=[555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 A$=[ 5555 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 A$=[ 6666 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 A$=[ 1111 ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_POS_A_B_N.run b/NBS2/F_POS_A_B_N.run new file mode 100644 index 0000000..79b6350 --- /dev/null +++ b/NBS2/F_POS_A_B_N.run @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R= 1 A$=[] B$=[] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1 A$=[3] B$=[3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 A$=[z] B$=[z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 A$=[ 3] B$=[ 3] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1 A$=[ z] B$=[ z] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 A$=[3 ] B$=[3 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 A$=[z ] B$=[z ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 A$=[ 3 ] B$=[ 3 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 A$=[ z ] B$=[ z ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1 A$=[ LLLL] B$=[ LLLL] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1 A$=[ '' ] B$=[ + '' ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1 A$=[ oo ] B$=[ + oo ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 A$=[ 00 ] B$=[ 00 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 A$=[ \\\\ ] B$=[ \\\\ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 A$=[ lllll ] B$=[ lllll ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 A$=[ uuuu ] B$=[ + uuuu ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 A$=[ a ] B$=[ a ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1 A$=[ hh ] B$=[ hh ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 A$=[ h ] B$=[ h ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1 A$=[ )] B$=[ )] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1 A$=[ 5 ] B$=[ 5 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 1 A$=[ 2 ] B$=[ 2 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 A$=[ - ] B$=[ - ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 1 A$=[dd ] B$=[dd ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 A$=[ tttt ] B$=[ tttt ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 A$=[ :::: ] B$=[ :::: ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 A$=[ ___ ] B$=[ ___ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 1 A$=[ _____ ] B$=[ _____ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 1 A$=[ S ] B$=[ S ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 A$=[ FFFF ] B$=[ FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 A$=[ kkk] B$=[ kkk] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 A$=[ NNNN ] B$=[ + NNNN ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 A$=[ mmmm ] B$=[ mmmm ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 A$=[ ,,,,, ] B$=[ + ,,,,, ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 A$=[OO ] B$=[OO ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1 A$=[ HHHH ] B$=[ HHHH ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 1 A$=[ < ] B$=[ < ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 1 A$=[ j ] B$=[ j ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 1 A$=[ yyyy ] B$=[ + yyyy ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 1 A$=[ +++ ] B$=[ +++ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 1 A$=[o ] B$=[o ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 A$=[ ((] B$=[ ((] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 1 A$=[ uu ] B$=[ + uu ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 1 A$=[ 00 ] B$=[ + 00 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 1 A$=[ HH ] B$=[ HH ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1 A$=[ G ] B$=[ G ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1 A$=[ {{{{ ] B$=[ {{{{ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 A$=[ ]]] ] B$=[ + ]]] ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1 A$=[CCC] B$=[CCC] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 A$=[ 44 ] B$=[ 44 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 A$=[^^ ] B$=[^^ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 A$=[ QQ ] B$=[ + QQ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 1 A$=[ FFFF ] B$=[ + FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 1 A$=[ n ] B$=[ n ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 A$=[ hh ] B$=[ hh ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 1 A$=[555 ] B$=[555 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1 A$=[ YYYY ] B$=[ YYYY ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 1 A$=[ w ] B$=[ + w ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1 A$=[MMMM ] B$=[MMMM ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1 A$=[ JJJJ ] B$=[ JJJJ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 1 A$=[ %% ] B$=[ + %% ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1 A$=[ * ] B$=[ * ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 1 A$=[ @@@ ] B$=[ + @@@ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 A$=[I ] B$=[I ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 A$=[ ss ] B$=[ ss ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 A$=[ f ] B$=[ f ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 A$=[ D ] B$=[ D ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 A$=[### ] B$=[### ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1 A$=[ ' ] B$=[ + ' ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1 A$=[ dd ] B$=[ dd ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1 A$=[ TT ] B$=[ TT ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 1 A$=[ vvv ] B$=[ vvv ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 1 A$=[ X ] B$=[ X ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 1 A$=[ % ] B$=[ % ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 A$=[ 5555 ] B$=[ 5555 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 A$=[FFFF ] B$=[FFFF ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 A$=[ %% ] B$=[ %% ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 A$=[ ] B$=[ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 1 A$=[ ~~~~ ] B$=[ + ~~~~ ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 1 A$=[ || ] B$=[ || ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 A$=[ SSS ] B$=[ + SSS ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 1 A$=[ 6666 ] B$=[ 6666 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 A$=[ ww ] B$=[ ww ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1 A$=[ 1111 ] B$=[ 1111 ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 A$=[ K ] B$=[ K ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 A$=[ ttttt ] B$=[ ttttt ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 A$=[ OOOOO ] B$=[ OOOOO ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1 A$=[ E ] B$=[ E ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 1 A$=[ PPPPP ] B$=[ PPPPP ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 1 A$=[ == ] B$=[ == ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 A$=[ VVVV ] B$=[ VVVV ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 1 A$=[ c ] B$=[ c ] + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 A$=[ yyyy ] +B$=[ yyyy ] + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_POS_A_B_X_N.run b/NBS2/F_POS_A_B_X_N.run new file mode 100644 index 0000000..84a7251 --- /dev/null +++ b/NBS2/F_POS_A_B_X_N.run @@ -0,0 +1,398 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] B$=[] X= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 A$=[ ] B$=[ ] X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 A$=[3] B$=[3] X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] B$=[z] X= .4 + + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] B$=[ ] X=-.4 + + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 A$=[ 3] B$=[ 3] X= .6 + + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] B$=[ z] X=-.6 + + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 A$=[3 ] B$=[3 ] X= + 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 A$=[z ] B$=[z ] X= + 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 A$=[ 3 ] B$=[ 3 ] X= + 256 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] B$=[ z ] X= + 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] B$=[ LLLL] X= +-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 A$=[ '' ] B$=[ + '' ] X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 A$=[ oo ] B$=[ + oo ] X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 1 R= 0 A$=[ 00 ] B$=[ 00 ] X= + .274675 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 A$=[ \\\\ ] B$=[ \\\\ ] X= + .169766 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 A$=[ lllll ] B$=[ lllll ] X= + .318766 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 A$=[ uuuu ] B$=[ + uuuu ] X= 2.06658E-2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] B$=[ a ] X= + .188257 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] B$=[ ] X= +-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 A$=[ hh ] B$=[ hh ] X= +-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] B$=[ h ] X= + .43556 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] B$=[ )] X= +-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 A$=[ 5 ] B$=[ 5 ] X= +-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 A$=[ 2 ] B$=[ 2 ] X= +-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 A$=[ - ] B$=[ - ] X= + 105.632 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] B$=[dd ] X= +-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 A$=[ tttt ] B$=[ tttt ] X= + 109.706 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 A$=[ :::: ] B$=[ :::: ] X= + 109.198 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 A$=[ ___ ] B$=[ ___ ] X= + 85.8773 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] B$=[ ] X= +-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 A$=[ ] B$=[ ] X= + 29.6397 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 A$=[ _____ ] B$=[ _____ ] X= +-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] B$=[ S ] X= +-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 A$=[ FFFF ] B$=[ FFFF ] X= + 112.521 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 A$=[ kkk] B$=[ kkk] X= + 45.4151 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 A$=[ NNNN ] B$=[ + NNNN ] X= 101.129 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 A$=[ mmmm ] B$=[ mmmm ] X= + 65.0473 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 A$=[ ,,,,, ] B$=[ + ,,,,, ] X= 48.4012 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 A$=[OO ] B$=[OO ] X= + 122.294 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 A$=[ HHHH ] B$=[ HHHH ] X= +-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] B$=[ < ] X= +-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 A$=[ j ] B$=[ j ] X= +-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 A$=[ yyyy ] B$=[ + yyyy ] X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] B$=[ +++ ] X= +-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] B$=[o ] X= +-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 A$=[ ((] B$=[ ((] X= + 14.8006 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 A$=[ uu ] B$=[ + uu ] X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 A$=[ 00 ] B$=[ + 00 ] X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 A$=[ HH ] B$=[ HH ] X= +-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] B$=[ ] X= +-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] B$=[ G ] X= +-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 A$=[ {{{{ ] B$=[ {{{{ ] X= +-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 A$=[ ]]] ] B$=[ + ]]] ] X= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] B$=[CCC] X= +-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 A$=[ 44 ] B$=[ 44 ] X= + 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] B$=[^^ ] X= + 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 A$=[ QQ ] B$=[ + QQ ] X= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 A$=[ FFFF ] B$=[ + FFFF ] X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] B$=[ n ] X= +-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 A$=[ hh ] B$=[ hh ] X= + 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 A$=[555 ] B$=[555 ] X= +-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 A$=[ YYYY ] B$=[ YYYY ] X= +-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 A$=[ w ] B$=[ + w ] X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] B$=[MMMM ] X= +-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 A$=[ JJJJ ] B$=[ JJJJ ] X= +-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 A$=[ %% ] B$=[ + %% ] X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 A$=[ * ] B$=[ * ] X= +-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 A$=[ @@@ ] B$=[ + @@@ ] X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] B$=[I ] X= + 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 A$=[ ss ] B$=[ ss ] X= + 2571 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] B$=[ f ] X= + 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] B$=[ D ] X= + 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 0 A$=[### ] B$=[### ] X= + 3790.9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 A$=[ ' ] B$=[ + ' ] X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 A$=[ dd ] B$=[ dd ] X= +-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] B$=[ TT ] X= +-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] B$=[ vvv ] X= +-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] B$=[ X ] X= +-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 A$=[ % ] B$=[ % ] X= +-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] B$=[ ] X= + 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 A$=[ 5555 ] B$=[ 5555 ] X= + 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] B$=[FFFF ] X= + 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 A$=[ %% ] B$=[ %% ] X= + 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] B$=[ ] X= + 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 A$=[ ~~~~ ] B$=[ + ~~~~ ] X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 A$=[ || ] B$=[ || ] X= +-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 A$=[ SSS ] B$=[ + SSS ] X= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 A$=[ 6666 ] B$=[ 6666 ] X= +-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 A$=[ ww ] B$=[ ww ] X= + 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 A$=[ 1111 ] B$=[ 1111 ] X= +-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] B$=[ K ] X= + 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 A$=[ ttttt ] B$=[ ttttt ] X= + 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 A$=[ OOOOO ] B$=[ OOOOO ] X= + 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] B$=[ E ] X= +-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 A$=[ PPPPP ] B$=[ PPPPP ] X= +-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] B$=[ == ] X= +-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 A$=[ VVVV ] B$=[ VVVV ] X= + 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] B$=[ c ] X= +-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 A$=[ yyyy ] +B$=[ yyyy ] X= 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_RAD_X_N.80 b/NBS2/F_RAD_X_N.80 new file mode 100644 index 0000000..ce5ea97 --- /dev/null +++ b/NBS2/F_RAD_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.74533E-2 X= 1 + F= 0 N= 1.74533E-2 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.74533E-2 X=-1 + F= 0 N=-1.74533E-2 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 6.98132E-3 X= .4 + F= 0 N= 6.98132E-3 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-6.98132E-3 X=-.4 + F= 0 N=-6.98132E-3 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .010472 X= .6 + F= 0 N= .010472 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.010472 X=-.6 + F= 0 N=-.010472 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 4.43314 X= 254 + F= 0 N= 4.43314 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 4.45059 X= 255 + F= 0 N= 4.45059 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 4.46804 X= 256 + F= 0 N= 4.46804 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 558.505 X= 32000 + F= 0 N= 558.505 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-3.96589E-3 X=-.227229 + F= 0 N=-3.96589E-3 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.17408E-3 X=-.239157 + F= 0 N=-4.17408E-3 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-3.72778E-3 X=-.213586 + F= 0 N=-3.72778E-3 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 4.79398E-3 X= .274675 + F= 0 N= 4.79398E-3 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 2.96298E-3 X= .169766 + F= 0 N= 2.96298E-3 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 5.56352E-3 X= .318766 + F= 0 N= 5.56352E-3 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 3.60686E-4 X= 2.06658E-2 + F= 0 N= 3.60686E-4 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 3.2857E-3 X= .188257 + F= 0 N= 3.2857E-3 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-4.84393E-3 X=-.277537 + F= 0 N=-4.84393E-3 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-8.40032E-3 X=-.481303 + F= 0 N=-8.40032E-3 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 7.60196E-3 X= .43556 + F= 0 N= 7.60196E-3 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-3.68214E-3 X=-.210971 + F= 0 N=-3.68214E-3 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-7.94502E-3 X=-.455216 + F= 0 N=-7.94502E-3 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.93569 X=-110.907 + F= 0 N=-1.93569 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.84363 X= 105.632 + F= 0 N= 1.84363 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.99563 X=-114.341 + F= 0 N=-1.99563 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.91473 X= 109.706 + F= 0 N= 1.91473 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.90586 X= 109.198 + F= 0 N= 1.90586 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.49884 X= 85.8773 + F= 0 N= 1.49884 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.01848 X=-58.3548 + F= 0 N=-1.01848 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .51731 X= 29.6397 + F= 0 N= .51731 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.89124 X=-108.36 + F= 0 N=-1.89124 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.811925 X=-46.5199 + F= 0 N=-.811925 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.96386 X= 112.521 + F= 0 N= 1.96386 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .792643 X= 45.4151 + F= 0 N= .792643 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.76503 X= 101.129 + F= 0 N= 1.76503 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.13529 X= 65.0473 + F= 0 N= 1.13529 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .84476 X= 48.4012 + F= 0 N= .84476 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.13443 X= 122.294 + F= 0 N= 2.13443 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-.979294 X=-56.1094 + F= 0 N=-.979294 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-2.11337 X=-121.087 + F= 0 N=-2.11337 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.15578 X=-123.517 + F= 0 N=-2.15578 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.70397 X=-97.6301 + F= 0 N=-1.70397 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.11701 X=-64.0001 + F= 0 N=-1.11701 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.448354 X=-25.6888 + F= 0 N=-.448354 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .258319 X= 14.8006 + F= 0 N= .258319 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.06618 X=-61.0877 + F= 0 N=-1.06618 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.16305 X=-66.6381 + F= 0 N=-1.16305 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-95.583 X=-5476.5 + F= 0 N=-95.583 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-370.19 X=-21210.3 + F= 0 N=-370.19 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-501.908 X=-28757.2 + F= 0 N=-501.908 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-501.471 X=-28732.2 + F= 0 N=-501.471 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 222.186 X= 12730.3 + F= 0 N= 222.186 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-31.9516 X=-1830.69 + F= 0 N=-31.9516 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 95.7556 X= 5486.39 + F= 0 N= 95.7556 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 391.057 X= 22405.9 + F= 0 N= 391.057 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 537.732 X= 30809.8 + F= 0 N= 537.732 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-504.934 X=-28930.6 + F= 0 N=-504.934 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-104.973 X=-6014.53 + F= 0 N=-104.973 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 303.942 X= 17414.6 + F= 0 N= 303.942 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-183.928 X=-10538.3 + F= 0 N=-183.928 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-306.066 X=-17536.3 + F= 0 N=-306.066 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-154.577 X=-8856.62 + F= 0 N=-154.577 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-89.712 X=-5140.12 + F= 0 N=-89.712 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-150.016 X=-8595.31 + F= 0 N=-150.016 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-59.0422 X=-3382.87 + F= 0 N=-59.0422 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-87.3026 X=-5002.07 + F= 0 N=-87.3026 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-101.242 X=-5800.72 + F= 0 N=-101.242 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 518.125 X= 29686.4 + F= 0 N= 518.125 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 44.8724 X= 2571 + F= 0 N= 44.8724 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 542.64 X= 31091 + F= 0 N= 542.64 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 258.64 X= 14819 + F= 0 N= 258.64 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 66.1637 X= 3790.9 + F= 0 N= 66.1637 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-7.5016E+7 X=-4.2981E+9 + F= 0 N=-7.5016E+7 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1.23125E+7 X=-7.05453E+8 + F= 0 N=-1.23125E+7 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-5.41364E+7 X=-3.10179E+9 + F= 0 N=-5.41364E+7 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-8.48508E+7 X=-4.86159E+9 + F= 0 N=-8.48508E+7 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.50606E+7 X=-8.62908E+8 + F= 0 N=-1.50606E+7 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-5.95175E+7 X=-3.4101E+9 + F= 0 N=-5.95175E+7 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 5.91475E+7 X= 3.3889E+9 + F= 0 N= 5.91475E+7 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 4.36029E+7 X= 2.49826E+9 + F= 0 N= 4.36029E+7 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 4.09995E+7 X= 2.3491E+9 + F= 0 N= 4.09995E+7 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 3.39894E+6 X= 1.94745E+8 + F= 0 N= 3.39894E+6 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 3.53386E+7 X= 2.02475E+9 + F= 0 N= 3.53386E+7 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-3.9575E+7 X=-2.26748E+9 + F= 0 N=-3.9575E+7 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-3.67544E+7 X=-2.10587E+9 + F= 0 N=-3.67544E+7 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 7.39295E+7 X= 4.23585E+9 + F= 0 N= 7.39295E+7 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-4.65172E+7 X=-2.66524E+9 + F= 0 N=-4.65172E+7 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 6.99968E+7 X= 4.01052E+9 + F= 0 N= 6.99968E+7 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-8.51567E+7 X=-4.87912E+9 + F= 0 N=-8.51567E+7 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3.09894E+7 X= 1.77556E+9 + F= 0 N= 3.09894E+7 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 5.0214E+6 X= 2.87705E+8 + F= 0 N= 5.0214E+6 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 3.49026E+6 X= 1.99977E+8 + F= 0 N= 3.49026E+6 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-5.93309E+7 X=-3.39941E+9 + F= 0 N=-5.93309E+7 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-6.09328E+7 X=-3.49119E+9 + F= 0 N=-6.09328E+7 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-4.9973E+7 X=-2.86324E+9 + F= 0 N=-4.9973E+7 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 7.33768E+7 X= 4.20418E+9 + F= 0 N= 7.33768E+7 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-5.50093E+7 X=-3.1518E+9 + F= 0 N=-5.50093E+7 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 8.03925E+7 X= 4.60615E+9 + F= 0 N= 8.03925E+7 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_RAD_X_N.BAS b/NBS2/F_RAD_X_N.BAS new file mode 100644 index 0000000..b312eba --- /dev/null +++ b/NBS2/F_RAD_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:30 +REM FILENAME: F_RAD_X_N.BAS +REM SYNTAX: N = RAD( X ) +REM UNIQUEID: F_RAD_X_N +REM FUNCTION: RAD +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = RAD( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1.74533E-2 , 1 +DATA 3 , 0 , -1.74533E-2 , -1 +DATA 4 , 0 , 6.98132E-3 , .4 +DATA 5 , 0 , -6.98132E-3 , -.4 +DATA 6 , 0 , .010472 , .6 +DATA 7 , 0 , -.010472 , -.6 +DATA 8 , 0 , 4.43314 , 254 +DATA 9 , 0 , 4.45059 , 255 +DATA 10 , 0 , 4.46804 , 256 +DATA 11 , 0 , 558.505 , 32000 +DATA 12 , 0 , -3.96589E-3 , -.227229 +DATA 13 , 0 , -4.17408E-3 , -.239157 +DATA 14 , 0 , -3.72778E-3 , -.213586 +DATA 15 , 0 , 4.79398E-3 , .274675 +DATA 16 , 0 , 2.96298E-3 , .169766 +DATA 17 , 0 , 5.56352E-3 , .318766 +DATA 18 , 0 , 3.60686E-4 , 2.06658E-2 +DATA 19 , 0 , 3.2857E-3 , .188257 +DATA 20 , 0 , -4.84393E-3 , -.277537 +DATA 21 , 0 , -8.40032E-3 , -.481303 +DATA 22 , 0 , 7.60196E-3 , .43556 +DATA 23 , 0 , -3.68214E-3 , -.210971 +DATA 24 , 0 , -7.94502E-3 , -.455216 +DATA 25 , 0 , -1.93569 , -110.907 +DATA 26 , 0 , 1.84363 , 105.632 +DATA 27 , 0 , -1.99563 , -114.341 +DATA 28 , 0 , 1.91473 , 109.706 +DATA 29 , 0 , 1.90586 , 109.198 +DATA 30 , 0 , 1.49884 , 85.8773 +DATA 31 , 0 , -1.01848 , -58.3548 +DATA 32 , 0 , .51731 , 29.6397 +DATA 33 , 0 , -1.89124 , -108.36 +DATA 34 , 0 , -.811925 , -46.5199 +DATA 35 , 0 , 1.96386 , 112.521 +DATA 36 , 0 , .792643 , 45.4151 +DATA 37 , 0 , 1.76503 , 101.129 +DATA 38 , 0 , 1.13529 , 65.0473 +DATA 39 , 0 , .84476 , 48.4012 +DATA 40 , 0 , 2.13443 , 122.294 +DATA 41 , 0 , -.979294 , -56.1094 +DATA 42 , 0 , -2.11337 , -121.087 +DATA 43 , 0 , -2.15578 , -123.517 +DATA 44 , 0 , -1.70397 , -97.6301 +DATA 45 , 0 , -1.11701 , -64.0001 +DATA 46 , 0 , -.448354 , -25.6888 +DATA 47 , 0 , .258319 , 14.8006 +DATA 48 , 0 , -1.06618 , -61.0877 +DATA 49 , 0 , -1.16305 , -66.6381 +DATA 50 , 0 , -95.583 , -5476.5 +DATA 51 , 0 , -370.19 , -21210.3 +DATA 52 , 0 , -501.908 , -28757.2 +DATA 53 , 0 , -501.471 , -28732.2 +DATA 54 , 0 , 222.186 , 12730.3 +DATA 55 , 0 , -31.9516 , -1830.69 +DATA 56 , 0 , 95.7556 , 5486.39 +DATA 57 , 0 , 391.057 , 22405.9 +DATA 58 , 0 , 537.732 , 30809.8 +DATA 59 , 0 , -504.934 , -28930.6 +DATA 60 , 0 , -104.973 , -6014.53 +DATA 61 , 0 , 303.942 , 17414.6 +DATA 62 , 0 , -183.928 , -10538.3 +DATA 63 , 0 , -306.066 , -17536.3 +DATA 64 , 0 , -154.577 , -8856.62 +DATA 65 , 0 , -89.712 , -5140.12 +DATA 66 , 0 , -150.016 , -8595.31 +DATA 67 , 0 , -59.0422 , -3382.87 +DATA 68 , 0 , -87.3026 , -5002.07 +DATA 69 , 0 , -101.242 , -5800.72 +DATA 70 , 0 , 518.125 , 29686.4 +DATA 71 , 0 , 44.8724 , 2571. +DATA 72 , 0 , 542.64 , 31091. +DATA 73 , 0 , 258.64 , 14819. +DATA 74 , 0 , 66.1637 , 3790.9 +DATA 75 , 0 , -7.5016E+7 , -4.2981E+9 +DATA 76 , 0 , -1.23125E+7 , -7.05453E+8 +DATA 77 , 0 , -5.41364E+7 , -3.10179E+9 +DATA 78 , 0 , -8.48508E+7 , -4.86159E+9 +DATA 79 , 0 , -1.50606E+7 , -8.62908E+8 +DATA 80 , 0 , -5.95175E+7 , -3.4101E+9 +DATA 81 , 0 , 5.91475E+7 , 3.3889E+9 +DATA 82 , 0 , 4.36029E+7 , 2.49826E+9 +DATA 83 , 0 , 4.09995E+7 , 2.3491E+9 +DATA 84 , 0 , 3.39894E+6 , 1.94745E+8 +DATA 85 , 0 , 3.53386E+7 , 2.02475E+9 +DATA 86 , 0 , -3.9575E+7 , -2.26748E+9 +DATA 87 , 0 , -3.67544E+7 , -2.10587E+9 +DATA 88 , 0 , 7.39295E+7 , 4.23585E+9 +DATA 89 , 0 , -4.65172E+7 , -2.66524E+9 +DATA 90 , 0 , 6.99968E+7 , 4.01052E+9 +DATA 91 , 0 , -8.51567E+7 , -4.87912E+9 +DATA 92 , 0 , 3.09894E+7 , 1.77556E+9 +DATA 93 , 0 , 5.0214E+6 , 2.87705E+8 +DATA 94 , 0 , 3.49026E+6 , 1.99977E+8 +DATA 95 , 0 , -5.93309E+7 , -3.39941E+9 +DATA 96 , 0 , -6.09328E+7 , -3.49119E+9 +DATA 97 , 0 , -4.9973E+7 , -2.86324E+9 +DATA 98 , 0 , 7.33768E+7 , 4.20418E+9 +DATA 99 , 0 , -5.50093E+7 , -3.1518E+9 +DATA 100 , 0 , 8.03925E+7 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_RAD_X_N.OUT b/NBS2/F_RAD_X_N.OUT new file mode 100644 index 0000000..cfa5ae2 --- /dev/null +++ b/NBS2/F_RAD_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.74533E-2 X= 1 + F= 0 N= 1.74533E-2 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.74533E-2 X=-1 + F= 0 N=-1.74533E-2 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 6.98132E-3 X= .4 + F= 0 N= 6.98132E-3 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-6.98132E-3 X=-.4 + F= 0 N=-6.98132E-3 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .010472 X= .6 + F= 0 N= .010472 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.010472 X=-.6 + F= 0 N=-.010472 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 4.43314 X= 254 + F= 0 N= 4.43314 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 4.45059 X= 255 + F= 0 N= 4.45059 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 4.46804 X= 256 + F= 0 N= 4.46804 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 558.505 X= 32000 + F= 0 N= 558.505 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-3.96589E-3 X=-.227229 + F= 0 N=-3.96589E-3 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.17408E-3 X=-.239157 + F= 0 N=-4.17408E-3 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-3.72778E-3 X=-.213586 + F= 0 N=-3.72778E-3 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 4.79398E-3 X= .274675 + F= 0 N= 4.79398E-3 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 2.96298E-3 X= .169766 + F= 0 N= 2.96298E-3 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 5.56352E-3 X= .318766 + F= 0 N= 5.56352E-3 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 3.60686E-4 X= 2.06658E-2 + F= 0 N= 3.60686E-4 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 3.2857E-3 X= .188257 + F= 0 N= 3.2857E-3 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-4.84393E-3 X=-.277537 + F= 0 N=-4.84393E-3 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-8.40032E-3 X=-.481303 + F= 0 N=-8.40032E-3 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 7.60196E-3 X= .43556 + F= 0 N= 7.60196E-3 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-3.68214E-3 X=-.210971 + F= 0 N=-3.68214E-3 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-7.94502E-3 X=-.455216 + F= 0 N=-7.94502E-3 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.93569 X=-110.907 + F= 0 N=-1.93569 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.84363 X= 105.632 + F= 0 N= 1.84363 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.99563 X=-114.341 + F= 0 N=-1.99563 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.91473 X= 109.706 + F= 0 N= 1.91473 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.90586 X= 109.198 + F= 0 N= 1.90586 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.49884 X= 85.8773 + F= 0 N= 1.49884 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.01848 X=-58.3548 + F= 0 N=-1.01848 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .51731 X= 29.6397 + F= 0 N= .51731 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.89124 X=-108.36 + F= 0 N=-1.89124 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.811925 X=-46.5199 + F= 0 N=-.811925 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.96386 X= 112.521 + F= 0 N= 1.96386 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .792643 X= 45.4151 + F= 0 N= .792643 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.76503 X= 101.129 + F= 0 N= 1.76503 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.13529 X= 65.0473 + F= 0 N= 1.13529 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .84476 X= 48.4012 + F= 0 N= .84476 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.13443 X= 122.294 + F= 0 N= 2.13443 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-.979294 X=-56.1094 + F= 0 N=-.979294 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-2.11337 X=-121.087 + F= 0 N=-2.11337 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.15578 X=-123.517 + F= 0 N=-2.15578 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.70397 X=-97.6301 + F= 0 N=-1.70397 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.11701 X=-64.0001 + F= 0 N=-1.11701 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.448354 X=-25.6888 + F= 0 N=-.448354 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .258319 X= 14.8006 + F= 0 N= .258319 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.06618 X=-61.0877 + F= 0 N=-1.06618 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.16305 X=-66.6381 + F= 0 N=-1.16305 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-95.583 X=-5476.5 + F= 0 N=-95.583 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-370.19 X=-21210.3 + F= 0 N=-370.19 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-501.908 X=-28757.2 + F= 0 N=-501.908 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-501.471 X=-28732.2 + F= 0 N=-501.471 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 222.186 X= 12730.3 + F= 0 N= 222.186 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-31.9516 X=-1830.69 + F= 0 N=-31.9516 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 95.7556 X= 5486.39 + F= 0 N= 95.7556 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 391.057 X= 22405.9 + F= 0 N= 391.057 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 537.732 X= 30809.8 + F= 0 N= 537.732 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-504.934 X=-28930.6 + F= 0 N=-504.934 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-104.973 X=-6014.53 + F= 0 N=-104.973 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 303.942 X= 17414.6 + F= 0 N= 303.942 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-183.928 X=-10538.3 + F= 0 N=-183.928 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-306.066 X=-17536.3 + F= 0 N=-306.066 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-154.577 X=-8856.62 + F= 0 N=-154.577 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-89.712 X=-5140.12 + F= 0 N=-89.712 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-150.016 X=-8595.31 + F= 0 N=-150.016 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-59.0422 X=-3382.87 + F= 0 N=-59.0422 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-87.3026 X=-5002.07 + F= 0 N=-87.3026 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-101.242 X=-5800.72 + F= 0 N=-101.242 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 518.125 X= 29686.4 + F= 0 N= 518.125 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 44.8724 X= 2571 + F= 0 N= 44.8724 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 542.64 X= 31091 + F= 0 N= 542.64 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 258.64 X= 14819 + F= 0 N= 258.64 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 66.1637 X= 3790.9 + F= 0 N= 66.1637 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-7.5016E+7 X=-4.2981E+9 + F= 0 N=-7.5016E+7 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1.23125E+7 X=-7.05453E+8 + F= 0 N=-1.23125E+7 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-5.41364E+7 X=-3.10179E+9 + F= 0 N=-5.41364E+7 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-8.48508E+7 X=-4.86159E+9 + F= 0 N=-8.48508E+7 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.50606E+7 X=-8.62908E+8 + F= 0 N=-1.50606E+7 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-5.95175E+7 X=-3.4101E+9 + F= 0 N=-5.95175E+7 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 5.91475E+7 X= 3.3889E+9 + F= 0 N= 5.91475E+7 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 4.36029E+7 X= 2.49826E+9 + F= 0 N= 4.36029E+7 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 4.09995E+7 X= 2.3491E+9 + F= 0 N= 4.09995E+7 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 3.39894E+6 X= 1.94745E+8 + F= 0 N= 3.39894E+6 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 3.53386E+7 X= 2.02475E+9 + F= 0 N= 3.53386E+7 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-3.9575E+7 X=-2.26748E+9 + F= 0 N=-3.9575E+7 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-3.67544E+7 X=-2.10587E+9 + F= 0 N=-3.67544E+7 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 7.39295E+7 X= 4.23585E+9 + F= 0 N= 7.39295E+7 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-4.65172E+7 X=-2.66524E+9 + F= 0 N=-4.65172E+7 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 6.99968E+7 X= 4.01052E+9 + F= 0 N= 6.99968E+7 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-8.51567E+7 X=-4.87912E+9 + F= 0 N=-8.51567E+7 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3.09894E+7 X= 1.77556E+9 + F= 0 N= 3.09894E+7 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 5.0214E+6 X= 2.87705E+8 + F= 0 N= 5.0214E+6 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 3.49026E+6 X= 1.99977E+8 + F= 0 N= 3.49026E+6 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-5.93309E+7 X=-3.39941E+9 + F= 0 N=-5.93309E+7 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-6.09328E+7 X=-3.49119E+9 + F= 0 N=-6.09328E+7 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-4.9973E+7 X=-2.86324E+9 + F= 0 N=-4.9973E+7 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 7.33768E+7 X= 4.20418E+9 + F= 0 N= 7.33768E+7 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-5.50093E+7 X=-3.1518E+9 + F= 0 N=-5.50093E+7 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 8.03925E+7 X= 4.60615E+9 + F= 0 N= 8.03925E+7 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_RAD_X_N.dif b/NBS2/F_RAD_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_RAD_X_N.run b/NBS2/F_RAD_X_N.run new file mode 100644 index 0000000..ce5ea97 --- /dev/null +++ b/NBS2/F_RAD_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.74533E-2 X= 1 + F= 0 N= 1.74533E-2 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.74533E-2 X=-1 + F= 0 N=-1.74533E-2 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 6.98132E-3 X= .4 + F= 0 N= 6.98132E-3 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-6.98132E-3 X=-.4 + F= 0 N=-6.98132E-3 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .010472 X= .6 + F= 0 N= .010472 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.010472 X=-.6 + F= 0 N=-.010472 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 4.43314 X= 254 + F= 0 N= 4.43314 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 4.45059 X= 255 + F= 0 N= 4.45059 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 4.46804 X= 256 + F= 0 N= 4.46804 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 558.505 X= 32000 + F= 0 N= 558.505 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-3.96589E-3 X=-.227229 + F= 0 N=-3.96589E-3 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-4.17408E-3 X=-.239157 + F= 0 N=-4.17408E-3 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-3.72778E-3 X=-.213586 + F= 0 N=-3.72778E-3 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 4.79398E-3 X= .274675 + F= 0 N= 4.79398E-3 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 2.96298E-3 X= .169766 + F= 0 N= 2.96298E-3 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 5.56352E-3 X= .318766 + F= 0 N= 5.56352E-3 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 3.60686E-4 X= 2.06658E-2 + F= 0 N= 3.60686E-4 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 3.2857E-3 X= .188257 + F= 0 N= 3.2857E-3 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-4.84393E-3 X=-.277537 + F= 0 N=-4.84393E-3 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-8.40032E-3 X=-.481303 + F= 0 N=-8.40032E-3 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 7.60196E-3 X= .43556 + F= 0 N= 7.60196E-3 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-3.68214E-3 X=-.210971 + F= 0 N=-3.68214E-3 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-7.94502E-3 X=-.455216 + F= 0 N=-7.94502E-3 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.93569 X=-110.907 + F= 0 N=-1.93569 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1.84363 X= 105.632 + F= 0 N= 1.84363 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1.99563 X=-114.341 + F= 0 N=-1.99563 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1.91473 X= 109.706 + F= 0 N= 1.91473 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.90586 X= 109.198 + F= 0 N= 1.90586 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.49884 X= 85.8773 + F= 0 N= 1.49884 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.01848 X=-58.3548 + F= 0 N=-1.01848 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= .51731 X= 29.6397 + F= 0 N= .51731 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1.89124 X=-108.36 + F= 0 N=-1.89124 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.811925 X=-46.5199 + F= 0 N=-.811925 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.96386 X= 112.521 + F= 0 N= 1.96386 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .792643 X= 45.4151 + F= 0 N= .792643 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.76503 X= 101.129 + F= 0 N= 1.76503 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1.13529 X= 65.0473 + F= 0 N= 1.13529 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= .84476 X= 48.4012 + F= 0 N= .84476 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 2.13443 X= 122.294 + F= 0 N= 2.13443 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-.979294 X=-56.1094 + F= 0 N=-.979294 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-2.11337 X=-121.087 + F= 0 N=-2.11337 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.15578 X=-123.517 + F= 0 N=-2.15578 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.70397 X=-97.6301 + F= 0 N=-1.70397 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1.11701 X=-64.0001 + F= 0 N=-1.11701 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.448354 X=-25.6888 + F= 0 N=-.448354 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .258319 X= 14.8006 + F= 0 N= .258319 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.06618 X=-61.0877 + F= 0 N=-1.06618 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.16305 X=-66.6381 + F= 0 N=-1.16305 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-95.583 X=-5476.5 + F= 0 N=-95.583 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-370.19 X=-21210.3 + F= 0 N=-370.19 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-501.908 X=-28757.2 + F= 0 N=-501.908 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-501.471 X=-28732.2 + F= 0 N=-501.471 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 222.186 X= 12730.3 + F= 0 N= 222.186 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-31.9516 X=-1830.69 + F= 0 N=-31.9516 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 95.7556 X= 5486.39 + F= 0 N= 95.7556 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 391.057 X= 22405.9 + F= 0 N= 391.057 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 537.732 X= 30809.8 + F= 0 N= 537.732 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-504.934 X=-28930.6 + F= 0 N=-504.934 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-104.973 X=-6014.53 + F= 0 N=-104.973 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 303.942 X= 17414.6 + F= 0 N= 303.942 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-183.928 X=-10538.3 + F= 0 N=-183.928 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-306.066 X=-17536.3 + F= 0 N=-306.066 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-154.577 X=-8856.62 + F= 0 N=-154.577 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-89.712 X=-5140.12 + F= 0 N=-89.712 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-150.016 X=-8595.31 + F= 0 N=-150.016 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-59.0422 X=-3382.87 + F= 0 N=-59.0422 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-87.3026 X=-5002.07 + F= 0 N=-87.3026 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-101.242 X=-5800.72 + F= 0 N=-101.242 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 518.125 X= 29686.4 + F= 0 N= 518.125 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 44.8724 X= 2571 + F= 0 N= 44.8724 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 542.64 X= 31091 + F= 0 N= 542.64 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 258.64 X= 14819 + F= 0 N= 258.64 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 66.1637 X= 3790.9 + F= 0 N= 66.1637 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-7.5016E+7 X=-4.2981E+9 + F= 0 N=-7.5016E+7 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1.23125E+7 X=-7.05453E+8 + F= 0 N=-1.23125E+7 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-5.41364E+7 X=-3.10179E+9 + F= 0 N=-5.41364E+7 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-8.48508E+7 X=-4.86159E+9 + F= 0 N=-8.48508E+7 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.50606E+7 X=-8.62908E+8 + F= 0 N=-1.50606E+7 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-5.95175E+7 X=-3.4101E+9 + F= 0 N=-5.95175E+7 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 5.91475E+7 X= 3.3889E+9 + F= 0 N= 5.91475E+7 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 4.36029E+7 X= 2.49826E+9 + F= 0 N= 4.36029E+7 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 4.09995E+7 X= 2.3491E+9 + F= 0 N= 4.09995E+7 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 3.39894E+6 X= 1.94745E+8 + F= 0 N= 3.39894E+6 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 3.53386E+7 X= 2.02475E+9 + F= 0 N= 3.53386E+7 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-3.9575E+7 X=-2.26748E+9 + F= 0 N=-3.9575E+7 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-3.67544E+7 X=-2.10587E+9 + F= 0 N=-3.67544E+7 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 7.39295E+7 X= 4.23585E+9 + F= 0 N= 7.39295E+7 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-4.65172E+7 X=-2.66524E+9 + F= 0 N=-4.65172E+7 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 6.99968E+7 X= 4.01052E+9 + F= 0 N= 6.99968E+7 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-8.51567E+7 X=-4.87912E+9 + F= 0 N=-8.51567E+7 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 3.09894E+7 X= 1.77556E+9 + F= 0 N= 3.09894E+7 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 5.0214E+6 X= 2.87705E+8 + F= 0 N= 5.0214E+6 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 3.49026E+6 X= 1.99977E+8 + F= 0 N= 3.49026E+6 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-5.93309E+7 X=-3.39941E+9 + F= 0 N=-5.93309E+7 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-6.09328E+7 X=-3.49119E+9 + F= 0 N=-6.09328E+7 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-4.9973E+7 X=-2.86324E+9 + F= 0 N=-4.9973E+7 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 7.33768E+7 X= 4.20418E+9 + F= 0 N= 7.33768E+7 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-5.50093E+7 X=-3.1518E+9 + F= 0 N=-5.50093E+7 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 8.03925E+7 X= 4.60615E+9 + F= 0 N= 8.03925E+7 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_REMAINDER_X_Y_N.80 b/NBS2/F_REMAINDER_X_Y_N.80 new file mode 100644 index 0000000..4a97f4b --- /dev/null +++ b/NBS2/F_REMAINDER_X_Y_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 Y= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 Y= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 Y=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 Y= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 Y=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 Y= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 Y=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 Y= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 Y= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 Y= 256 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 0 X= 32000 Y= 32000 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 Y=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 Y=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 Y=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 Y= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 Y= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 Y=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 Y=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 Y= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 Y=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 Y=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 0 X=-110.907 Y=-110.907 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 Y= 105.632 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 0 X=-114.341 Y=-114.341 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 Y= 109.706 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 Y= 109.198 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 Y= 85.8773 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 0 X=-58.3548 Y=-58.3548 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 Y= 29.6397 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 0 X=-108.36 Y=-108.36 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 0 X=-46.5199 Y=-46.5199 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 Y= 112.521 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 Y= 45.4151 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 Y= 101.129 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 Y= 65.0473 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 Y= 48.4012 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 Y= 122.294 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 0 X=-56.1094 Y=-56.1094 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 0 X=-121.087 Y=-121.087 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 0 X=-123.517 Y=-123.517 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 0 X=-97.6301 Y=-97.6301 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 0 X=-64.0001 Y=-64.0001 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 0 X=-25.6888 Y=-25.6888 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 Y= 14.8006 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 0 X=-61.0877 Y=-61.0877 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 0 X=-66.6381 Y=-66.6381 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 0 X=-5476.5 Y=-5476.5 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 0 X=-21210.3 Y=-21210.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 0 X=-28757.2 Y=-28757.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 0 X=-28732.2 Y=-28732.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 0 X= 12730.3 Y= 12730.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 0 X=-1830.69 Y=-1830.69 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 0 X= 5486.39 Y= 5486.39 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 0 X= 22405.9 Y= 22405.9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 0 X= 30809.8 Y= 30809.8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 0 X=-28930.6 Y=-28930.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 0 X=-6014.53 Y=-6014.53 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 0 X= 17414.6 Y= 17414.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 0 X=-10538.3 Y=-10538.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 0 X=-17536.3 Y=-17536.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 0 X=-8856.62 Y=-8856.62 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 0 X=-5140.12 Y=-5140.12 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 0 X=-8595.31 Y=-8595.31 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 0 X=-3382.87 Y=-3382.87 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 0 X=-5002.07 Y=-5002.07 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 0 X=-5800.72 Y=-5800.72 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 0 X= 29686.4 Y= 29686.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 Y= 2571 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 0 X= 31091 Y= 31091 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 0 X= 14819 Y= 14819 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 0 X= 3790.9 Y= 3790.9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_REMAINDER_X_Y_N.BAS b/NBS2/F_REMAINDER_X_Y_N.BAS new file mode 100644 index 0000000..ec08a9c --- /dev/null +++ b/NBS2/F_REMAINDER_X_Y_N.BAS @@ -0,0 +1,184 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:30 +REM FILENAME: F_REMAINDER_X_Y_N.BAS +REM SYNTAX: N = REMAINDER( X, Y ) +REM UNIQUEID: F_REMAINDER_X_Y_N +REM FUNCTION: REMAINDER +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = REMAINDER( X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , 0 , 0 +DATA 2 , 0 , 0 , 1 , 1 +DATA 3 , 0 , 0 , -1 , -1 +DATA 4 , 0 , 0 , .4 , .4 +DATA 5 , 0 , 0 , -.4 , -.4 +DATA 6 , 0 , 0 , .6 , .6 +DATA 7 , 0 , 0 , -.6 , -.6 +DATA 8 , 0 , 0 , 254 , 254 +DATA 9 , 0 , 0 , 255 , 255 +DATA 10 , 0 , 0 , 256 , 256 +DATA 11 , 0 , 0 , 32000 , 32000 +DATA 12 , 0 , 0 , -.227229 , -.227229 +DATA 13 , 0 , 0 , -.239157 , -.239157 +DATA 14 , 0 , 0 , -.213586 , -.213586 +DATA 15 , 0 , 0 , .274675 , .274675 +DATA 16 , 0 , 0 , .169766 , .169766 +DATA 17 , 0 , 0 , .318766 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 , .188257 +DATA 20 , 0 , 0 , -.277537 , -.277537 +DATA 21 , 0 , 0 , -.481303 , -.481303 +DATA 22 , 0 , 0 , .43556 , .43556 +DATA 23 , 0 , 0 , -.210971 , -.210971 +DATA 24 , 0 , 0 , -.455216 , -.455216 +DATA 25 , 0 , 0 , -110.907 , -110.907 +DATA 26 , 0 , 0 , 105.632 , 105.632 +DATA 27 , 0 , 0 , -114.341 , -114.341 +DATA 28 , 0 , 0 , 109.706 , 109.706 +DATA 29 , 0 , 0 , 109.198 , 109.198 +DATA 30 , 0 , 0 , 85.8773 , 85.8773 +DATA 31 , 0 , 0 , -58.3548 , -58.3548 +DATA 32 , 0 , 0 , 29.6397 , 29.6397 +DATA 33 , 0 , 0 , -108.36 , -108.36 +DATA 34 , 0 , 0 , -46.5199 , -46.5199 +DATA 35 , 0 , 0 , 112.521 , 112.521 +DATA 36 , 0 , 0 , 45.4151 , 45.4151 +DATA 37 , 0 , 0 , 101.129 , 101.129 +DATA 38 , 0 , 0 , 65.0473 , 65.0473 +DATA 39 , 0 , 0 , 48.4012 , 48.4012 +DATA 40 , 0 , 0 , 122.294 , 122.294 +DATA 41 , 0 , 0 , -56.1094 , -56.1094 +DATA 42 , 0 , 0 , -121.087 , -121.087 +DATA 43 , 0 , 0 , -123.517 , -123.517 +DATA 44 , 0 , 0 , -97.6301 , -97.6301 +DATA 45 , 0 , 0 , -64.0001 , -64.0001 +DATA 46 , 0 , 0 , -25.6888 , -25.6888 +DATA 47 , 0 , 0 , 14.8006 , 14.8006 +DATA 48 , 0 , 0 , -61.0877 , -61.0877 +DATA 49 , 0 , 0 , -66.6381 , -66.6381 +DATA 50 , 0 , 0 , -5476.5 , -5476.5 +DATA 51 , 0 , 0 , -21210.3 , -21210.3 +DATA 52 , 0 , 0 , -28757.2 , -28757.2 +DATA 53 , 0 , 0 , -28732.2 , -28732.2 +DATA 54 , 0 , 0 , 12730.3 , 12730.3 +DATA 55 , 0 , 0 , -1830.69 , -1830.69 +DATA 56 , 0 , 0 , 5486.39 , 5486.39 +DATA 57 , 0 , 0 , 22405.9 , 22405.9 +DATA 58 , 0 , 0 , 30809.8 , 30809.8 +DATA 59 , 0 , 0 , -28930.6 , -28930.6 +DATA 60 , 0 , 0 , -6014.53 , -6014.53 +DATA 61 , 0 , 0 , 17414.6 , 17414.6 +DATA 62 , 0 , 0 , -10538.3 , -10538.3 +DATA 63 , 0 , 0 , -17536.3 , -17536.3 +DATA 64 , 0 , 0 , -8856.62 , -8856.62 +DATA 65 , 0 , 0 , -5140.12 , -5140.12 +DATA 66 , 0 , 0 , -8595.31 , -8595.31 +DATA 67 , 0 , 0 , -3382.87 , -3382.87 +DATA 68 , 0 , 0 , -5002.07 , -5002.07 +DATA 69 , 0 , 0 , -5800.72 , -5800.72 +DATA 70 , 0 , 0 , 29686.4 , 29686.4 +DATA 71 , 0 , 0 , 2571. , 2571. +DATA 72 , 0 , 0 , 31091. , 31091. +DATA 73 , 0 , 0 , 14819. , 14819. +DATA 74 , 0 , 0 , 3790.9 , 3790.9 +DATA 75 , 0 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 0 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 0 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 0 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 0 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 0 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 0 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 0 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 0 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 0 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 0 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 0 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 0 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 0 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 0 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 0 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 0 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 0 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 0 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 0 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 0 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 0 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 0 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 0 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 0 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 0 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_REMAINDER_X_Y_N.OUT b/NBS2/F_REMAINDER_X_Y_N.OUT new file mode 100644 index 0000000..bf6d494 --- /dev/null +++ b/NBS2/F_REMAINDER_X_Y_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 Y= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 Y= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 Y=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 Y= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 Y=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 Y= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 Y=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 Y= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 Y= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 Y= 256 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 0 X= 32000 Y= 32000 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 Y=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 Y=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 Y=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 Y= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 Y= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 Y=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 Y=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 Y= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 Y=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 Y=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 0 X=-110.907 Y=-110.907 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 Y= 105.632 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 0 X=-114.341 Y=-114.341 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 Y= 109.706 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 Y= 109.198 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 Y= 85.8773 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 0 X=-58.3548 Y=-58.3548 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 Y= 29.6397 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 0 X=-108.36 Y=-108.36 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 0 X=-46.5199 Y=-46.5199 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 Y= 112.521 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 Y= 45.4151 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 Y= 101.129 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 Y= 65.0473 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 Y= 48.4012 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 Y= 122.294 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 0 X=-56.1094 Y=-56.1094 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 0 X=-121.087 Y=-121.087 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 0 X=-123.517 Y=-123.517 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 0 X=-97.6301 Y=-97.6301 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 0 X=-64.0001 Y=-64.0001 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 0 X=-25.6888 Y=-25.6888 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 Y= 14.8006 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 0 X=-61.0877 Y=-61.0877 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 0 X=-66.6381 Y=-66.6381 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 0 X=-5476.5 Y=-5476.5 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 0 X=-21210.3 Y=-21210.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 0 X=-28757.2 Y=-28757.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 0 X=-28732.2 Y=-28732.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 0 X= 12730.3 Y= 12730.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 0 X=-1830.69 Y=-1830.69 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 0 X= 5486.39 Y= 5486.39 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 0 X= 22405.9 Y= 22405.9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 0 X= 30809.8 Y= 30809.8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 0 X=-28930.6 Y=-28930.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 0 X=-6014.53 Y=-6014.53 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 0 X= 17414.6 Y= 17414.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 0 X=-10538.3 Y=-10538.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 0 X=-17536.3 Y=-17536.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 0 X=-8856.62 Y=-8856.62 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 0 X=-5140.12 Y=-5140.12 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 0 X=-8595.31 Y=-8595.31 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 0 X=-3382.87 Y=-3382.87 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 0 X=-5002.07 Y=-5002.07 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 0 X=-5800.72 Y=-5800.72 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 0 X= 29686.4 Y= 29686.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 Y= 2571 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 0 X= 31091 Y= 31091 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 0 X= 14819 Y= 14819 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 0 X= 3790.9 Y= 3790.9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_REMAINDER_X_Y_N.dif b/NBS2/F_REMAINDER_X_Y_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_REMAINDER_X_Y_N.run b/NBS2/F_REMAINDER_X_Y_N.run new file mode 100644 index 0000000..4a97f4b --- /dev/null +++ b/NBS2/F_REMAINDER_X_Y_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 1 R= 0 X= 0 Y= 0 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 0 X= 1 Y= 1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 Y=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 0 X= .4 Y= .4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 Y=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 0 X= .6 Y= .6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 Y=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 0 X= 254 Y= 254 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 0 X= 255 Y= 255 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 0 X= 256 Y= 256 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 0 X= 32000 Y= 32000 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 Y=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 Y=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 Y=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 Y= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 Y= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 Y=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 Y=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 0 X= .43556 Y= .43556 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 Y=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 Y=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 0 X=-110.907 Y=-110.907 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 0 X= 105.632 Y= 105.632 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 0 X=-114.341 Y=-114.341 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 0 X= 109.706 Y= 109.706 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 0 X= 109.198 Y= 109.198 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 0 X= 85.8773 Y= 85.8773 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 0 X=-58.3548 Y=-58.3548 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 0 X= 29.6397 Y= 29.6397 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 0 X=-108.36 Y=-108.36 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= 0 X=-46.5199 Y=-46.5199 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 0 X= 112.521 Y= 112.521 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 0 X= 45.4151 Y= 45.4151 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 0 X= 101.129 Y= 101.129 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 0 X= 65.0473 Y= 65.0473 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 0 X= 48.4012 Y= 48.4012 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 0 X= 122.294 Y= 122.294 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 0 X=-56.1094 Y=-56.1094 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 0 X=-121.087 Y=-121.087 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= 0 X=-123.517 Y=-123.517 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= 0 X=-97.6301 Y=-97.6301 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 0 X=-64.0001 Y=-64.0001 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 0 X=-25.6888 Y=-25.6888 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 0 X= 14.8006 Y= 14.8006 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= 0 X=-61.0877 Y=-61.0877 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 0 X=-66.6381 Y=-66.6381 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= 0 X=-5476.5 Y=-5476.5 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= 0 X=-21210.3 Y=-21210.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 0 X=-28757.2 Y=-28757.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 0 X=-28732.2 Y=-28732.2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 0 X= 12730.3 Y= 12730.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 0 X=-1830.69 Y=-1830.69 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 0 X= 5486.39 Y= 5486.39 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 0 X= 22405.9 Y= 22405.9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 0 X= 30809.8 Y= 30809.8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= 0 X=-28930.6 Y=-28930.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 0 X=-6014.53 Y=-6014.53 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 0 X= 17414.6 Y= 17414.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 0 X=-10538.3 Y=-10538.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 0 X=-17536.3 Y=-17536.3 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= 0 X=-8856.62 Y=-8856.62 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 0 X=-5140.12 Y=-5140.12 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 0 X=-8595.31 Y=-8595.31 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= 0 X=-3382.87 Y=-3382.87 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 0 X=-5002.07 Y=-5002.07 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 0 X=-5800.72 Y=-5800.72 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 0 X= 29686.4 Y= 29686.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 0 X= 2571 Y= 2571 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 0 X= 31091 Y= 31091 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 0 X= 14819 Y= 14819 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 0 X= 3790.9 Y= 3790.9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 0 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_REPEAT_X_A_S.80 b/NBS2/F_REPEAT_X_A_S.80 new file mode 100644 index 0000000..0c4e1fa --- /dev/null +++ b/NBS2/F_REPEAT_X_A_S.80 @@ -0,0 +1,525 @@ +TESTCASE # 1 E= 1 R$=[] X= 0 A$=[] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 A$=[3] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 A$=[z] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 A$=[ 3] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 A$=[ z] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] X= 254 A$=[3 ] + F= 0 S$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] X= 255 A$=[z ] + F= 0 S$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 A$=[ 3 ] + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 A$=[ z ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 A$=[ LLLL] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 A$=[ '' ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 A$=[ oo ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 A$=[ 00 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 A$=[ \\\\ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 A$=[ lllll ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 A$=[ uuuu ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 A$=[ a ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 A$=[ hh ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 A$=[ h ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 A$=[ )] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 A$=[ 5 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 A$=[ 2 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 A$=[ - ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 A$=[dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 A$=[ tttt ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 A$=[ :::: ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 A$=[ ___ ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 A$=[ _____ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 A$=[ S ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 A$=[ FFFF ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 A$=[ kkk] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 A$=[ NNNN ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 A$=[ mmmm ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 A$=[ + ,,,,, ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] X= 122.294 A$=[OO ] + F= 0 S$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 A$=[ HHHH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 A$=[ < ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 A$=[ j ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 A$=[ yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 A$=[ +++ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 A$=[o ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 A$=[ + ((] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 A$=[ uu ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 A$=[ 00 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 A$=[ HH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 A$=[ G ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 A$=[ {{{{ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 A$=[ ]]] ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 A$=[CCC] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 A$=[ 44 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 A$=[^^ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 A$=[ QQ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 A$=[ FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 A$=[ n ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 A$=[ hh ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 A$=[555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 A$=[ YYYY ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 A$=[ w ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 A$=[MMMM ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 A$=[ JJJJ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 A$=[ * ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 A$=[ @@@ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 A$=[I ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 A$=[ ss ] + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 A$=[ f ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 A$=[ D ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] X= 3790.9 A$=[### ] + F= 0 S$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 A$=[ ' ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 A$=[ dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 A$=[ TT ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 A$=[ vvv ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 A$=[ X ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 A$=[ % ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 A$=[ 5555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 A$=[FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 A$=[ || ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 A$=[ SSS ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 A$=[ 6666 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 A$=[ ww ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 A$=[ 1111 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 A$=[ K ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 A$=[ ttttt ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 A$=[ OOOOO ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 A$=[ E ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 A$=[ PPPPP ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 A$=[ == ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 A$=[ VVVV ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 A$=[ c ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 A$=[ + yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_REPEAT_X_A_S.BAS b/NBS2/F_REPEAT_X_A_S.BAS new file mode 100644 index 0000000..7695eb4 --- /dev/null +++ b/NBS2/F_REPEAT_X_A_S.BAS @@ -0,0 +1,160 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:30 +REM FILENAME: F_REPEAT_X_A_S.BAS +REM SYNTAX: S$ = REPEAT$( X, A$ ) +REM UNIQUEID: F_REPEAT_X_A_S +REM FUNCTION: REPEAT$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = REPEAT$( X, A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , "", 0 , "" +DATA 2 , 0 , " ", 1 , " " +DATA 3 , 1 , "", -1 , "3" +DATA 4 , 0 , "", .4 , "z" +DATA 5 , 0 , "", -.4 , " " +DATA 6 , 0 , " ", .6 , " 3" +DATA 7 , 1 , "", -.6 , " z" +DATA 8 , 0 , "33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333", 254 , "3 " +DATA 9 , 0 , "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", 255 , "z " +DATA 10 , 0 , " ", 256 , " 3 " +DATA 11 , 1 , "", 32000 , " z " +DATA 12 , 0 , "", -.227229 , " LLLL" +DATA 13 , 0 , "", -.239157 , " '' " +DATA 14 , 0 , "", -.213586 , " oo " +DATA 15 , 0 , "", .274675 , " 00 " +DATA 16 , 0 , "", .169766 , " \\\\ " +DATA 17 , 0 , "", .318766 , " lllll " +DATA 18 , 0 , "", 2.06658E-2 , " uuuu " +DATA 19 , 0 , "", .188257 , " a " +DATA 20 , 0 , "", -.277537 , " " +DATA 21 , 0 , "", -.481303 , " hh " +DATA 22 , 0 , "", .43556 , " h " +DATA 23 , 0 , "", -.210971 , " )" +DATA 24 , 0 , "", -.455216 , " 5 " +DATA 25 , 1 , "", -110.907 , " 2 " +DATA 26 , 0 , " ", 105.632 , " - " +DATA 27 , 1 , "", -114.341 , "dd " +DATA 28 , 0 , " ", 109.706 , " tttt " +DATA 29 , 0 , " ", 109.198 , " :::: " +DATA 30 , 0 , " ", 85.8773 , " ___ " +DATA 31 , 1 , "", -58.3548 , " " +DATA 32 , 0 , " ", 29.6397 , " " +DATA 33 , 1 , "", -108.36 , " _____ " +DATA 34 , 1 , "", -46.5199 , " S " +DATA 35 , 0 , " ", 112.521 , " FFFF " +DATA 36 , 0 , " ", 45.4151 , " kkk" +DATA 37 , 0 , " ", 101.129 , " NNNN " +DATA 38 , 0 , " ", 65.0473 , " mmmm " +DATA 39 , 0 , " ", 48.4012 , " ,,,,, " +DATA 40 , 0 , "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", 122.294 , "OO " +DATA 41 , 1 , "", -56.1094 , " HHHH " +DATA 42 , 1 , "", -121.087 , " < " +DATA 43 , 1 , "", -123.517 , " j " +DATA 44 , 1 , "", -97.6301 , " yyyy " +DATA 45 , 1 , "", -64.0001 , " +++ " +DATA 46 , 1 , "", -25.6888 , "o " +DATA 47 , 0 , " ", 14.8006 , " ((" +DATA 48 , 1 , "", -61.0877 , " uu " +DATA 49 , 1 , "", -66.6381 , " 00 " +DATA 50 , 1 , "", -5476.5 , " HH " +DATA 51 , 1 , "", -21210.3 , " " +DATA 52 , 1 , "", -28757.2 , " G " +DATA 53 , 1 , "", -28732.2 , " {{{{ " +DATA 54 , 1 , "", 12730.3 , " ]]] " +DATA 55 , 1 , "", -1830.69 , "CCC" +DATA 56 , 1 , "", 5486.39 , " 44 " +DATA 57 , 1 , "", 22405.9 , "^^ " +DATA 58 , 1 , "", 30809.8 , " QQ " +DATA 59 , 1 , "", -28930.6 , " FFFF " +DATA 60 , 1 , "", -6014.53 , " n " +DATA 61 , 1 , "", 17414.6 , " hh " +DATA 62 , 1 , "", -10538.3 , "555 " +DATA 63 , 1 , "", -17536.3 , " YYYY " +DATA 64 , 1 , "", -8856.62 , " w " +DATA 65 , 1 , "", -5140.12 , "MMMM " +DATA 66 , 1 , "", -8595.31 , " JJJJ " +DATA 67 , 1 , "", -3382.87 , " %% " +DATA 68 , 1 , "", -5002.07 , " * " +DATA 69 , 1 , "", -5800.72 , " @@@ " +DATA 70 , 1 , "", 29686.4 , "I " +DATA 71 , 0 , " ", 2571. , " ss " +DATA 72 , 1 , "", 31091. , " f " +DATA 73 , 1 , "", 14819. , " D " +DATA 74 , 0 , "###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################", 3790.9 , "### " +DATA 75 , 1 , "", -4.2981E+9 , " ' " +DATA 76 , 1 , "", -7.05453E+8 , " dd " +DATA 77 , 1 , "", -3.10179E+9 , " TT " +DATA 78 , 1 , "", -4.86159E+9 , " vvv " +DATA 79 , 1 , "", -8.62908E+8 , " X " +DATA 80 , 1 , "", -3.4101E+9 , " % " +DATA 81 , 1 , "", 3.3889E+9 , " " +DATA 82 , 1 , "", 2.49826E+9 , " 5555 " +DATA 83 , 1 , "", 2.3491E+9 , "FFFF " +DATA 84 , 1 , "", 1.94745E+8 , " %% " +DATA 85 , 1 , "", 2.02475E+9 , " " +DATA 86 , 1 , "", -2.26748E+9 , " ~~~~ " +DATA 87 , 1 , "", -2.10587E+9 , " || " +DATA 88 , 1 , "", 4.23585E+9 , " SSS " +DATA 89 , 1 , "", -2.66524E+9 , " 6666 " +DATA 90 , 1 , "", 4.01052E+9 , " ww " +DATA 91 , 1 , "", -4.87912E+9 , " 1111 " +DATA 92 , 1 , "", 1.77556E+9 , " K " +DATA 93 , 1 , "", 2.87705E+8 , " ttttt " +DATA 94 , 1 , "", 1.99977E+8 , " OOOOO " +DATA 95 , 1 , "", -3.39941E+9 , " E " +DATA 96 , 1 , "", -3.49119E+9 , " PPPPP " +DATA 97 , 1 , "", -2.86324E+9 , " == " +DATA 98 , 1 , "", 4.20418E+9 , " VVVV " +DATA 99 , 1 , "", -3.1518E+9 , " c " +DATA 100 , 1 , "", 4.60615E+9 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_REPEAT_X_A_S.OUT b/NBS2/F_REPEAT_X_A_S.OUT new file mode 100644 index 0000000..9cd8e21 --- /dev/null +++ b/NBS2/F_REPEAT_X_A_S.OUT @@ -0,0 +1,525 @@ +TESTCASE # 1 E= 1 R$=[] X= 0 A$=[] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 A$=[3] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 A$=[z] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 A$=[ 3] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 A$=[ z] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] X= 254 A$=[3 ] + F= 0 S$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] X= 255 A$=[z ] + F= 0 S$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 A$=[ 3 ] + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 A$=[ z ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 A$=[ LLLL] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 A$=[ '' ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 A$=[ oo ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 A$=[ 00 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 A$=[ \\\\ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 A$=[ lllll ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 A$=[ uuuu ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 A$=[ a ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 A$=[ hh ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 A$=[ h ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 A$=[ )] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 A$=[ 5 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 A$=[ 2 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 A$=[ - ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 A$=[dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 A$=[ tttt ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 A$=[ :::: ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 A$=[ ___ ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 A$=[ _____ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 A$=[ S ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 A$=[ FFFF ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 A$=[ kkk] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 A$=[ NNNN ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 A$=[ mmmm ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 A$=[ + ,,,,, ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] X= 122.294 A$=[OO ] + F= 0 S$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 A$=[ HHHH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 A$=[ < ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 A$=[ j ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 A$=[ yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 A$=[ +++ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 A$=[o ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 A$=[ + ((] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 A$=[ uu ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 A$=[ 00 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 A$=[ HH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 A$=[ G ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 A$=[ {{{{ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 A$=[ ]]] ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 A$=[CCC] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 A$=[ 44 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 A$=[^^ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 A$=[ QQ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 A$=[ FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 A$=[ n ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 A$=[ hh ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 A$=[555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 A$=[ YYYY ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 A$=[ w ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 A$=[MMMM ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 A$=[ JJJJ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 A$=[ * ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 A$=[ @@@ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 A$=[I ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 A$=[ ss ] + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 A$=[ f ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 A$=[ D ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] X= 3790.9 A$=[### ] + F= 0 S$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 A$=[ ' ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 A$=[ dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 A$=[ TT ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 A$=[ vvv ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 A$=[ X ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 A$=[ % ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 A$=[ 5555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 A$=[FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 A$=[ || ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 A$=[ SSS ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 A$=[ 6666 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 A$=[ ww ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 A$=[ 1111 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 A$=[ K ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 A$=[ ttttt ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 A$=[ OOOOO ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 A$=[ E ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 A$=[ PPPPP ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 A$=[ == ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 A$=[ VVVV ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 A$=[ c ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 A$=[ + yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_REPEAT_X_A_S.dif b/NBS2/F_REPEAT_X_A_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_REPEAT_X_A_S.run b/NBS2/F_REPEAT_X_A_S.run new file mode 100644 index 0000000..0c4e1fa --- /dev/null +++ b/NBS2/F_REPEAT_X_A_S.run @@ -0,0 +1,525 @@ +TESTCASE # 1 E= 1 R$=[] X= 0 A$=[] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 A$=[3] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 A$=[z] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 A$=[ 3] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 A$=[ z] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] X= 254 A$=[3 ] + F= 0 S$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] X= 255 A$=[z ] + F= 0 S$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 A$=[ 3 ] + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 A$=[ z ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 A$=[ LLLL] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 A$=[ '' ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 A$=[ oo ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 A$=[ 00 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 A$=[ \\\\ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 A$=[ lllll ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 A$=[ uuuu ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 A$=[ a ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 A$=[ hh ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 A$=[ h ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 A$=[ )] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 A$=[ 5 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 A$=[ 2 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 A$=[ - ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 A$=[dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 A$=[ tttt ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 A$=[ :::: ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 A$=[ ___ ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 A$=[ _____ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 A$=[ S ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 A$=[ FFFF ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 A$=[ kkk] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 A$=[ NNNN ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 A$=[ mmmm ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 A$=[ + ,,,,, ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] X= 122.294 A$=[OO ] + F= 0 S$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 A$=[ HHHH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 A$=[ < ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 A$=[ j ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 A$=[ yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 A$=[ +++ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 A$=[o ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 A$=[ + ((] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 A$=[ uu ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 A$=[ 00 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 A$=[ HH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 A$=[ G ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 A$=[ {{{{ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 A$=[ ]]] ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 A$=[CCC] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 A$=[ 44 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 A$=[^^ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 A$=[ QQ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 A$=[ FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 A$=[ n ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 A$=[ hh ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 A$=[555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 A$=[ YYYY ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 A$=[ w ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 A$=[MMMM ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 A$=[ JJJJ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 A$=[ * ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 A$=[ @@@ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 A$=[I ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 A$=[ ss ] + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 A$=[ f ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 A$=[ D ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] X= 3790.9 A$=[### ] + F= 0 S$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 A$=[ ' ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 A$=[ dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 A$=[ TT ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 A$=[ vvv ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 A$=[ X ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 A$=[ % ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 A$=[ 5555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 A$=[FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 A$=[ || ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 A$=[ SSS ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 A$=[ 6666 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 A$=[ ww ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 A$=[ 1111 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 A$=[ K ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 A$=[ ttttt ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 A$=[ OOOOO ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 A$=[ E ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 A$=[ PPPPP ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 A$=[ == ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 A$=[ VVVV ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 A$=[ c ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 A$=[ + yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_REPEAT_X_Y_S.80 b/NBS2/F_REPEAT_X_Y_S.80 new file mode 100644 index 0000000..15a8b57 --- /dev/null +++ b/NBS2/F_REPEAT_X_Y_S.80 @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 Y= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 Y= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_REPEAT_X_Y_S.BAS b/NBS2/F_REPEAT_X_Y_S.BAS new file mode 100644 index 0000000..c42f5ff --- /dev/null +++ b/NBS2/F_REPEAT_X_Y_S.BAS @@ -0,0 +1,160 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:31 +REM FILENAME: F_REPEAT_X_Y_S.BAS +REM SYNTAX: S$ = REPEAT$( X, Y ) +REM UNIQUEID: F_REPEAT_X_Y_S +REM FUNCTION: REPEAT$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = REPEAT$( X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", 0 , 0 +DATA 2 , 0 , "", 1 , 1 +DATA 3 , 1 , "", -1 , -1 +DATA 4 , 0 , "", .4 , .4 +DATA 5 , 0 , "", -.4 , -.4 +DATA 6 , 0 , "", .6 , .6 +DATA 7 , 1 , "", -.6 , -.6 +DATA 8 , 0 , "þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ", 254 , 254 +DATA 9 , 0 , "ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ", 255 , 255 +DATA 10 , 1 , "", 256 , 256 +DATA 11 , 1 , "", 32000 , 32000 +DATA 12 , 0 , "", -.227229 , -.227229 +DATA 13 , 0 , "", -.239157 , -.239157 +DATA 14 , 0 , "", -.213586 , -.213586 +DATA 15 , 0 , "", .274675 , .274675 +DATA 16 , 0 , "", .169766 , .169766 +DATA 17 , 0 , "", .318766 , .318766 +DATA 18 , 0 , "", 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , "", .188257 , .188257 +DATA 20 , 0 , "", -.277537 , -.277537 +DATA 21 , 0 , "", -.481303 , -.481303 +DATA 22 , 0 , "", .43556 , .43556 +DATA 23 , 0 , "", -.210971 , -.210971 +DATA 24 , 0 , "", -.455216 , -.455216 +DATA 25 , 1 , "", -110.907 , -110.907 +DATA 26 , 0 , "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj", 105.632 , 105.632 +DATA 27 , 1 , "", -114.341 , -114.341 +DATA 28 , 0 , "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn", 109.706 , 109.706 +DATA 29 , 0 , "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", 109.198 , 109.198 +DATA 30 , 0 , "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 85.8773 , 85.8773 +DATA 31 , 1 , "", -58.3548 , -58.3548 +DATA 32 , 0 , "", 29.6397 , 29.6397 +DATA 33 , 1 , "", -108.36 , -108.36 +DATA 34 , 1 , "", -46.5199 , -46.5199 +DATA 35 , 0 , "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", 112.521 , 112.521 +DATA 36 , 0 , "---------------------------------------------", 45.4151 , 45.4151 +DATA 37 , 0 , "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", 101.129 , 101.129 +DATA 38 , 0 , "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 65.0473 , 65.0473 +DATA 39 , 0 , "000000000000000000000000000000000000000000000000", 48.4012 , 48.4012 +DATA 40 , 0 , "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", 122.294 , 122.294 +DATA 41 , 1 , "", -56.1094 , -56.1094 +DATA 42 , 1 , "", -121.087 , -121.087 +DATA 43 , 1 , "", -123.517 , -123.517 +DATA 44 , 1 , "", -97.6301 , -97.6301 +DATA 45 , 1 , "", -64.0001 , -64.0001 +DATA 46 , 1 , "", -25.6888 , -25.6888 +DATA 47 , 0 , "", 14.8006 , 14.8006 +DATA 48 , 1 , "", -61.0877 , -61.0877 +DATA 49 , 1 , "", -66.6381 , -66.6381 +DATA 50 , 1 , "", -5476.5 , -5476.5 +DATA 51 , 1 , "", -21210.3 , -21210.3 +DATA 52 , 1 , "", -28757.2 , -28757.2 +DATA 53 , 1 , "", -28732.2 , -28732.2 +DATA 54 , 1 , "", 12730.3 , 12730.3 +DATA 55 , 1 , "", -1830.69 , -1830.69 +DATA 56 , 1 , "", 5486.39 , 5486.39 +DATA 57 , 1 , "", 22405.9 , 22405.9 +DATA 58 , 1 , "", 30809.8 , 30809.8 +DATA 59 , 1 , "", -28930.6 , -28930.6 +DATA 60 , 1 , "", -6014.53 , -6014.53 +DATA 61 , 1 , "", 17414.6 , 17414.6 +DATA 62 , 1 , "", -10538.3 , -10538.3 +DATA 63 , 1 , "", -17536.3 , -17536.3 +DATA 64 , 1 , "", -8856.62 , -8856.62 +DATA 65 , 1 , "", -5140.12 , -5140.12 +DATA 66 , 1 , "", -8595.31 , -8595.31 +DATA 67 , 1 , "", -3382.87 , -3382.87 +DATA 68 , 1 , "", -5002.07 , -5002.07 +DATA 69 , 1 , "", -5800.72 , -5800.72 +DATA 70 , 1 , "", 29686.4 , 29686.4 +DATA 71 , 1 , "", 2571. , 2571. +DATA 72 , 1 , "", 31091. , 31091. +DATA 73 , 1 , "", 14819. , 14819. +DATA 74 , 1 , "", 3790.9 , 3790.9 +DATA 75 , 1 , "", -4.2981E+9 , -4.2981E+9 +DATA 76 , 1 , "", -7.05453E+8 , -7.05453E+8 +DATA 77 , 1 , "", -3.10179E+9 , -3.10179E+9 +DATA 78 , 1 , "", -4.86159E+9 , -4.86159E+9 +DATA 79 , 1 , "", -8.62908E+8 , -8.62908E+8 +DATA 80 , 1 , "", -3.4101E+9 , -3.4101E+9 +DATA 81 , 1 , "", 3.3889E+9 , 3.3889E+9 +DATA 82 , 1 , "", 2.49826E+9 , 2.49826E+9 +DATA 83 , 1 , "", 2.3491E+9 , 2.3491E+9 +DATA 84 , 1 , "", 1.94745E+8 , 1.94745E+8 +DATA 85 , 1 , "", 2.02475E+9 , 2.02475E+9 +DATA 86 , 1 , "", -2.26748E+9 , -2.26748E+9 +DATA 87 , 1 , "", -2.10587E+9 , -2.10587E+9 +DATA 88 , 1 , "", 4.23585E+9 , 4.23585E+9 +DATA 89 , 1 , "", -2.66524E+9 , -2.66524E+9 +DATA 90 , 1 , "", 4.01052E+9 , 4.01052E+9 +DATA 91 , 1 , "", -4.87912E+9 , -4.87912E+9 +DATA 92 , 1 , "", 1.77556E+9 , 1.77556E+9 +DATA 93 , 1 , "", 2.87705E+8 , 2.87705E+8 +DATA 94 , 1 , "", 1.99977E+8 , 1.99977E+8 +DATA 95 , 1 , "", -3.39941E+9 , -3.39941E+9 +DATA 96 , 1 , "", -3.49119E+9 , -3.49119E+9 +DATA 97 , 1 , "", -2.86324E+9 , -2.86324E+9 +DATA 98 , 1 , "", 4.20418E+9 , 4.20418E+9 +DATA 99 , 1 , "", -3.1518E+9 , -3.1518E+9 +DATA 100 , 1 , "", 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_REPEAT_X_Y_S.OUT b/NBS2/F_REPEAT_X_Y_S.OUT new file mode 100644 index 0000000..8c9b91d --- /dev/null +++ b/NBS2/F_REPEAT_X_Y_S.OUT @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 Y= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 Y= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_REPEAT_X_Y_S.dif b/NBS2/F_REPEAT_X_Y_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_REPEAT_X_Y_S.run b/NBS2/F_REPEAT_X_Y_S.run new file mode 100644 index 0000000..15a8b57 --- /dev/null +++ b/NBS2/F_REPEAT_X_Y_S.run @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 Y= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 Y= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_RIGHT_A_X_S.80 b/NBS2/F_RIGHT_A_X_S.80 new file mode 100644 index 0000000..8e10388 --- /dev/null +++ b/NBS2/F_RIGHT_A_X_S.80 @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] A$=[z] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] X= .6 + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] X= 254 + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] X= 255 + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] X= 256 + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] A$=[ LLLL] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] A$=[ '' ] X= +-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] A$=[ oo ] X= +-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] A$=[ 00 ] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] A$=[ \\\\ ] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] A$=[ lllll ] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] A$=[ a ] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] A$=[ hh ] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] A$=[ h ] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] A$=[ )] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] A$=[ 5 ] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] X= 105.632 + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] X= 109.706 + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] X= 109.198 + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] X= 85.8773 + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] X= 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] X= 112.521 + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] X= 45.4151 + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] +X= 101.129 + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] +X= 48.4012 + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] X= 122.294 + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] X= 14.8006 + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] X= 2571 + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] X= 3790.9 + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_RIGHT_A_X_S.BAS b/NBS2/F_RIGHT_A_X_S.BAS new file mode 100644 index 0000000..4b2d098 --- /dev/null +++ b/NBS2/F_RIGHT_A_X_S.BAS @@ -0,0 +1,160 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:31 +REM FILENAME: F_RIGHT_A_X_S.BAS +REM SYNTAX: S$ = RIGHT$( A$, X ) +REM UNIQUEID: F_RIGHT_A_X_S +REM FUNCTION: RIGHT$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]", "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = RIGHT$( A$, X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", "", 0 +DATA 2 , 0 , " ", " ", 1 +DATA 3 , 1 , "", "3", -1 +DATA 4 , 0 , "", "z", .4 +DATA 5 , 0 , "", " ", -.4 +DATA 6 , 0 , "3", " 3", .6 +DATA 7 , 1 , "", " z", -.6 +DATA 8 , 0 , "3 ", "3 ", 254 +DATA 9 , 0 , "z ", "z ", 255 +DATA 10 , 0 , " 3 ", " 3 ", 256 +DATA 11 , 1 , "", " z ", 32000 +DATA 12 , 0 , "", " LLLL", -.227229 +DATA 13 , 0 , "", " '' ", -.239157 +DATA 14 , 0 , "", " oo ", -.213586 +DATA 15 , 0 , "", " 00 ", .274675 +DATA 16 , 0 , "", " \\\\ ", .169766 +DATA 17 , 0 , "", " lllll ", .318766 +DATA 18 , 0 , "", " uuuu ", 2.06658E-2 +DATA 19 , 0 , "", " a ", .188257 +DATA 20 , 0 , "", " ", -.277537 +DATA 21 , 0 , "", " hh ", -.481303 +DATA 22 , 0 , "", " h ", .43556 +DATA 23 , 0 , "", " )", -.210971 +DATA 24 , 0 , "", " 5 ", -.455216 +DATA 25 , 1 , "", " 2 ", -110.907 +DATA 26 , 0 , " - ", " - ", 105.632 +DATA 27 , 1 , "", "dd ", -114.341 +DATA 28 , 0 , " tttt ", " tttt ", 109.706 +DATA 29 , 0 , " :::: ", " :::: ", 109.198 +DATA 30 , 0 , " ___ ", " ___ ", 85.8773 +DATA 31 , 1 , "", " ", -58.3548 +DATA 32 , 0 , " ", " ", 29.6397 +DATA 33 , 1 , "", " _____ ", -108.36 +DATA 34 , 1 , "", " S ", -46.5199 +DATA 35 , 0 , " FFFF ", " FFFF ", 112.521 +DATA 36 , 0 , " kkk", " kkk", 45.4151 +DATA 37 , 0 , " NNNN ", " NNNN ", 101.129 +DATA 38 , 0 , " mmmm ", " mmmm ", 65.0473 +DATA 39 , 0 , " ,,,,, ", " ,,,,, ", 48.4012 +DATA 40 , 0 , "OO ", "OO ", 122.294 +DATA 41 , 1 , "", " HHHH ", -56.1094 +DATA 42 , 1 , "", " < ", -121.087 +DATA 43 , 1 , "", " j ", -123.517 +DATA 44 , 1 , "", " yyyy ", -97.6301 +DATA 45 , 1 , "", " +++ ", -64.0001 +DATA 46 , 1 , "", "o ", -25.6888 +DATA 47 , 0 , " ((", " ((", 14.8006 +DATA 48 , 1 , "", " uu ", -61.0877 +DATA 49 , 1 , "", " 00 ", -66.6381 +DATA 50 , 1 , "", " HH ", -5476.5 +DATA 51 , 1 , "", " ", -21210.3 +DATA 52 , 1 , "", " G ", -28757.2 +DATA 53 , 1 , "", " {{{{ ", -28732.2 +DATA 54 , 1 , "", " ]]] ", 12730.3 +DATA 55 , 1 , "", "CCC", -1830.69 +DATA 56 , 1 , "", " 44 ", 5486.39 +DATA 57 , 1 , "", "^^ ", 22405.9 +DATA 58 , 1 , "", " QQ ", 30809.8 +DATA 59 , 1 , "", " FFFF ", -28930.6 +DATA 60 , 1 , "", " n ", -6014.53 +DATA 61 , 1 , "", " hh ", 17414.6 +DATA 62 , 1 , "", "555 ", -10538.3 +DATA 63 , 1 , "", " YYYY ", -17536.3 +DATA 64 , 1 , "", " w ", -8856.62 +DATA 65 , 1 , "", "MMMM ", -5140.12 +DATA 66 , 1 , "", " JJJJ ", -8595.31 +DATA 67 , 1 , "", " %% ", -3382.87 +DATA 68 , 1 , "", " * ", -5002.07 +DATA 69 , 1 , "", " @@@ ", -5800.72 +DATA 70 , 1 , "", "I ", 29686.4 +DATA 71 , 0 , " ss ", " ss ", 2571. +DATA 72 , 1 , "", " f ", 31091. +DATA 73 , 1 , "", " D ", 14819. +DATA 74 , 0 , "### ", "### ", 3790.9 +DATA 75 , 1 , "", " ' ", -4.2981E+9 +DATA 76 , 1 , "", " dd ", -7.05453E+8 +DATA 77 , 1 , "", " TT ", -3.10179E+9 +DATA 78 , 1 , "", " vvv ", -4.86159E+9 +DATA 79 , 1 , "", " X ", -8.62908E+8 +DATA 80 , 1 , "", " % ", -3.4101E+9 +DATA 81 , 1 , "", " ", 3.3889E+9 +DATA 82 , 1 , "", " 5555 ", 2.49826E+9 +DATA 83 , 1 , "", "FFFF ", 2.3491E+9 +DATA 84 , 1 , "", " %% ", 1.94745E+8 +DATA 85 , 1 , "", " ", 2.02475E+9 +DATA 86 , 1 , "", " ~~~~ ", -2.26748E+9 +DATA 87 , 1 , "", " || ", -2.10587E+9 +DATA 88 , 1 , "", " SSS ", 4.23585E+9 +DATA 89 , 1 , "", " 6666 ", -2.66524E+9 +DATA 90 , 1 , "", " ww ", 4.01052E+9 +DATA 91 , 1 , "", " 1111 ", -4.87912E+9 +DATA 92 , 1 , "", " K ", 1.77556E+9 +DATA 93 , 1 , "", " ttttt ", 2.87705E+8 +DATA 94 , 1 , "", " OOOOO ", 1.99977E+8 +DATA 95 , 1 , "", " E ", -3.39941E+9 +DATA 96 , 1 , "", " PPPPP ", -3.49119E+9 +DATA 97 , 1 , "", " == ", -2.86324E+9 +DATA 98 , 1 , "", " VVVV ", 4.20418E+9 +DATA 99 , 1 , "", " c ", -3.1518E+9 +DATA 100 , 1 , "", " yyyy ", 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_RIGHT_A_X_S.OUT b/NBS2/F_RIGHT_A_X_S.OUT new file mode 100644 index 0000000..b25864d --- /dev/null +++ b/NBS2/F_RIGHT_A_X_S.OUT @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] A$=[z] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] X= .6 + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] X= 254 + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] X= 255 + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] X= 256 + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] A$=[ LLLL] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] A$=[ '' ] X= +-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] A$=[ oo ] X= +-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] A$=[ 00 ] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] A$=[ \\\\ ] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] A$=[ lllll ] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] A$=[ a ] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] A$=[ hh ] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] A$=[ h ] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] A$=[ )] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] A$=[ 5 ] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] X= 105.632 + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] X= 109.706 + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] X= 109.198 + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] X= 85.8773 + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] X= 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] X= 112.521 + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] X= 45.4151 + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] +X= 101.129 + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] +X= 48.4012 + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] X= 122.294 + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] X= 14.8006 + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] X= 2571 + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] X= 3790.9 + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_RIGHT_A_X_S.dif b/NBS2/F_RIGHT_A_X_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_RIGHT_A_X_S.run b/NBS2/F_RIGHT_A_X_S.run new file mode 100644 index 0000000..8e10388 --- /dev/null +++ b/NBS2/F_RIGHT_A_X_S.run @@ -0,0 +1,319 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] A$=[3] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] A$=[z] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] X= .6 + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] A$=[ z] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] X= 254 + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z ] A$=[z ] X= 255 + F= 0 S$=[z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] X= 256 + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] A$=[ z ] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] A$=[ LLLL] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] A$=[ '' ] X= +-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] A$=[ oo ] X= +-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] A$=[ 00 ] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] A$=[ \\\\ ] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] A$=[ lllll ] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] A$=[ uuuu ] X= + 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] A$=[ a ] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] A$=[ hh ] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] A$=[ h ] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] A$=[ )] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] A$=[ 5 ] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] A$=[ 2 ] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] X= 105.632 + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] A$=[dd ] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt ] A$=[ tttt ] X= 109.706 + F= 0 S$=[ tttt ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] X= 109.198 + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] X= 85.8773 + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] A$=[ ] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] X= 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] A$=[ _____ ] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] A$=[ S ] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] X= 112.521 + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] X= 45.4151 + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] +X= 101.129 + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm ] A$=[ mmmm ] X= 65.0473 + F= 0 S$=[ mmmm ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] +X= 48.4012 + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] X= 122.294 + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] A$=[ HHHH ] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] A$=[ < ] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] A$=[ j ] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] A$=[ yyyy ] X= +-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] A$=[ +++ ] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] A$=[o ] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] X= 14.8006 + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] A$=[ uu ] X= +-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] A$=[ 00 ] X= +-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] A$=[ HH ] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] A$=[ ] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] A$=[ G ] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] A$=[ {{{{ ] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] A$=[ ]]] ] X= + 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] A$=[CCC] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] A$=[ 44 ] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] A$=[^^ ] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] A$=[ QQ ] X= + 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] A$=[ FFFF ] X= +-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] A$=[ n ] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] A$=[ hh ] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] A$=[555 ] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] A$=[ YYYY ] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] A$=[ w ] X= +-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] A$=[MMMM ] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] A$=[ JJJJ ] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] A$=[ %% ] X= +-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] A$=[ * ] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] A$=[ @@@ ] X= +-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] A$=[I ] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss ] A$=[ ss ] X= 2571 + F= 0 S$=[ ss ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] A$=[ f ] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] A$=[ D ] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] X= 3790.9 + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] A$=[ ' ] X= +-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] A$=[ dd ] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] A$=[ TT ] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] A$=[ vvv ] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] A$=[ X ] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] A$=[ % ] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] A$=[ ] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] A$=[ 5555 ] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] A$=[FFFF ] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] A$=[ %% ] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] A$=[ ] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] A$=[ ~~~~ ] X= +-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] A$=[ || ] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] A$=[ SSS ] X= + 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] A$=[ 6666 ] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] A$=[ ww ] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] A$=[ 1111 ] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] A$=[ K ] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] A$=[ ttttt ] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] A$=[ OOOOO ] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] A$=[ E ] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] A$=[ PPPPP ] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] A$=[ == ] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] A$=[ VVVV ] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] A$=[ c ] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] A$=[ yyyy ] +X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ROUND_X_Y_N.80 b/NBS2/F_ROUND_X_Y_N.80 new file mode 100644 index 0000000..8376ad1 --- /dev/null +++ b/NBS2/F_ROUND_X_Y_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 Y=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .398107 X= .4 Y= .4 + F= 0 N= .398107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 Y=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .502377 X= .6 Y= .6 + F= 0 N= .502377 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 Y=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 Y= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 Y= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 Y= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 Y= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 Y=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 Y=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 Y=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .531282 X= .274675 Y= .274675 + F= 0 N= .531282 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .479992 X= .318766 Y= .318766 + F= 0 N= .479992 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 Y=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 Y=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .366809 X= .43556 Y= .43556 + F= 0 N= .366809 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 Y=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 Y=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 Y=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 Y= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 Y=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 Y= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 Y= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 Y= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 Y=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 Y=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 Y=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 Y= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 Y= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 Y= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 Y= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 Y= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 Y= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 Y=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 Y=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 Y=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 Y=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 Y=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 0 X=-25.6888 Y=-25.6888 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 Y=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 Y=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 Y=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 Y=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 Y=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 Y=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 Y= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 Y=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 Y= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 Y= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 Y= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 Y=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 Y=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 Y= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 Y=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 Y=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 Y=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 Y=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 Y=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 Y=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 Y=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 Y=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 Y= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 Y= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 Y= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 Y= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 Y= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ROUND_X_Y_N.BAS b/NBS2/F_ROUND_X_Y_N.BAS new file mode 100644 index 0000000..6d3eac7 --- /dev/null +++ b/NBS2/F_ROUND_X_Y_N.BAS @@ -0,0 +1,184 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:31 +REM FILENAME: F_ROUND_X_Y_N.BAS +REM SYNTAX: N = ROUND( X, Y ) +REM UNIQUEID: F_ROUND_X_Y_N +REM FUNCTION: ROUND +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = ROUND( X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 , 1 +DATA 3 , 0 , 0 , -1 , -1 +DATA 4 , 0 , .398107 , .4 , .4 +DATA 5 , 0 , 0 , -.4 , -.4 +DATA 6 , 0 , .502377 , .6 , .6 +DATA 7 , 0 , 0 , -.6 , -.6 +DATA 8 , 1 , 0 , 254 , 254 +DATA 9 , 1 , 0 , 255 , 255 +DATA 10 , 1 , 0 , 256 , 256 +DATA 11 , 1 , 0 , 32000 , 32000 +DATA 12 , 0 , 0 , -.227229 , -.227229 +DATA 13 , 0 , 0 , -.239157 , -.239157 +DATA 14 , 0 , 0 , -.213586 , -.213586 +DATA 15 , 0 , .531282 , .274675 , .274675 +DATA 16 , 0 , 0 , .169766 , .169766 +DATA 17 , 0 , .479992 , .318766 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 , .188257 +DATA 20 , 0 , 0 , -.277537 , -.277537 +DATA 21 , 0 , 0 , -.481303 , -.481303 +DATA 22 , 0 , .366809 , .43556 , .43556 +DATA 23 , 0 , 0 , -.210971 , -.210971 +DATA 24 , 0 , 0 , -.455216 , -.455216 +DATA 25 , 1 , 0 , -110.907 , -110.907 +DATA 26 , 1 , 0 , 105.632 , 105.632 +DATA 27 , 1 , 0 , -114.341 , -114.341 +DATA 28 , 1 , 0 , 109.706 , 109.706 +DATA 29 , 1 , 0 , 109.198 , 109.198 +DATA 30 , 1 , 0 , 85.8773 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 , -58.3548 +DATA 32 , 0 , 29.6397 , 29.6397 , 29.6397 +DATA 33 , 1 , 0 , -108.36 , -108.36 +DATA 34 , 1 , 0 , -46.5199 , -46.5199 +DATA 35 , 1 , 0 , 112.521 , 112.521 +DATA 36 , 1 , 0 , 45.4151 , 45.4151 +DATA 37 , 1 , 0 , 101.129 , 101.129 +DATA 38 , 1 , 0 , 65.0473 , 65.0473 +DATA 39 , 1 , 0 , 48.4012 , 48.4012 +DATA 40 , 1 , 0 , 122.294 , 122.294 +DATA 41 , 1 , 0 , -56.1094 , -56.1094 +DATA 42 , 1 , 0 , -121.087 , -121.087 +DATA 43 , 1 , 0 , -123.517 , -123.517 +DATA 44 , 1 , 0 , -97.6301 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 , -64.0001 +DATA 46 , 0 , 0 , -25.6888 , -25.6888 +DATA 47 , 0 , 14.8006 , 14.8006 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 , -28732.2 +DATA 54 , 1 , 0 , 12730.3 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 , -1830.69 +DATA 56 , 1 , 0 , 5486.39 , 5486.39 +DATA 57 , 1 , 0 , 22405.9 , 22405.9 +DATA 58 , 1 , 0 , 30809.8 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 , -6014.53 +DATA 61 , 1 , 0 , 17414.6 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 , -5800.72 +DATA 70 , 1 , 0 , 29686.4 , 29686.4 +DATA 71 , 1 , 0 , 2571. , 2571. +DATA 72 , 1 , 0 , 31091. , 31091. +DATA 73 , 1 , 0 , 14819. , 14819. +DATA 74 , 1 , 0 , 3790.9 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 1 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 1 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 1 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 1 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 1 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_ROUND_X_Y_N.OUT b/NBS2/F_ROUND_X_Y_N.OUT new file mode 100644 index 0000000..3752f27 --- /dev/null +++ b/NBS2/F_ROUND_X_Y_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 Y=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .398107 X= .4 Y= .4 + F= 0 N= .398107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 Y=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .502377 X= .6 Y= .6 + F= 0 N= .502377 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 Y=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 Y= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 Y= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 Y= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 Y= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 Y=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 Y=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 Y=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .531282 X= .274675 Y= .274675 + F= 0 N= .531282 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .479992 X= .318766 Y= .318766 + F= 0 N= .479992 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 Y=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 Y=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .366809 X= .43556 Y= .43556 + F= 0 N= .366809 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 Y=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 Y=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 Y=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 Y= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 Y=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 Y= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 Y= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 Y= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 Y=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 Y=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 Y=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 Y= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 Y= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 Y= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 Y= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 Y= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 Y= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 Y=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 Y=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 Y=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 Y=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 Y=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 0 X=-25.6888 Y=-25.6888 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 Y=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 Y=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 Y=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 Y=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 Y=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 Y=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 Y= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 Y=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 Y= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 Y= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 Y= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 Y=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 Y=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 Y= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 Y=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 Y=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 Y=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 Y=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 Y=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 Y=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 Y=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 Y=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 Y= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 Y= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 Y= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 Y= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 Y= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_ROUND_X_Y_N.dif b/NBS2/F_ROUND_X_Y_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_ROUND_X_Y_N.run b/NBS2/F_ROUND_X_Y_N.run new file mode 100644 index 0000000..8376ad1 --- /dev/null +++ b/NBS2/F_ROUND_X_Y_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 0 X=-1 Y=-1 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .398107 X= .4 Y= .4 + F= 0 N= .398107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 0 X=-.4 Y=-.4 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .502377 X= .6 Y= .6 + F= 0 N= .502377 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 0 X=-.6 Y=-.6 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 Y= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 Y= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 Y= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 Y= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 0 X=-.227229 Y=-.227229 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 0 X=-.239157 Y=-.239157 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 0 X=-.213586 Y=-.213586 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .531282 X= .274675 Y= .274675 + F= 0 N= .531282 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .479992 X= .318766 Y= .318766 + F= 0 N= .479992 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 0 X=-.277537 Y=-.277537 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 0 X=-.481303 Y=-.481303 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .366809 X= .43556 Y= .43556 + F= 0 N= .366809 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 0 X=-.210971 Y=-.210971 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 0 X=-.455216 Y=-.455216 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 Y=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 Y= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 Y=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 Y= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 Y= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 Y= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 Y=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 Y=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 Y=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 Y= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 Y= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 Y= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 Y= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 Y= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 Y= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 Y=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 Y=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 Y=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 Y=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 Y=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 0 X=-25.6888 Y=-25.6888 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 Y=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 Y=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 Y=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 Y=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 Y=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 Y=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 Y= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 Y=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 Y= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 Y= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 Y= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 Y=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 Y=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 Y= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 Y=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 Y=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 Y=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 Y=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 Y=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 Y=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 Y=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 Y=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 Y= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 Y= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 Y= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 Y= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 Y= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_RTRIM_A_S.80 b/NBS2/F_RTRIM_A_S.80 new file mode 100644 index 0000000..c93e67c --- /dev/null +++ b/NBS2/F_RTRIM_A_S.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ z] A$=[ z] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3] A$=[3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z] A$=[z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3] A$=[ 3 ] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ z] A$=[ z ] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ LLLL] A$=[ LLLL] + F= 0 S$=[ LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ ''] A$=[ '' ] + F= 0 S$=[ ''] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ oo] A$=[ oo ] + F= 0 S$=[ oo] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00] A$=[ 00 ] + F= 0 S$=[ 00] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\] A$=[ \\\\ ] + F= 0 S$=[ \\\\] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ lllll] A$=[ lllll ] + F= 0 S$=[ lllll] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ uuuu] A$=[ uuuu ] + F= 0 S$=[ uuuu] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ a] A$=[ a ] + F= 0 S$=[ a] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ hh] A$=[ hh ] + F= 0 S$=[ hh] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ h] A$=[ h ] + F= 0 S$=[ h] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5] A$=[ 5 ] + F= 0 S$=[ 5] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2] A$=[ 2 ] + F= 0 S$=[ 2] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ -] A$=[ - ] + F= 0 S$=[ -] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd] A$=[dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt] A$=[ tttt ] + F= 0 S$=[ tttt] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ ::::] A$=[ :::: ] + F= 0 S$=[ ::::] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___] A$=[ ___ ] + F= 0 S$=[ ___] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____] A$=[ _____ ] + F= 0 S$=[ _____] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ S] A$=[ S ] + F= 0 S$=[ S] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF] A$=[ FFFF ] + F= 0 S$=[ FFFF] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN] A$=[ NNNN ] + F= 0 S$=[ NNNN] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm] A$=[ mmmm ] + F= 0 S$=[ mmmm] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,,] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,,] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO] A$=[OO ] + F= 0 S$=[OO] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ HHHH] A$=[ HHHH ] + F= 0 S$=[ HHHH] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ <] A$=[ < ] + F= 0 S$=[ <] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ j] A$=[ j ] + F= 0 S$=[ j] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ yyyy] A$=[ yyyy ] + F= 0 S$=[ yyyy] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++] A$=[ +++ ] + F= 0 S$=[ +++] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o] A$=[o ] + F= 0 S$=[o] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ uu] A$=[ uu ] + F= 0 S$=[ uu] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00] A$=[ 00 ] + F= 0 S$=[ 00] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ HH] A$=[ HH ] + F= 0 S$=[ HH] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ G] A$=[ G ] + F= 0 S$=[ G] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{] A$=[ {{{{ ] + F= 0 S$=[ {{{{] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]]] A$=[ ]]] ] + F= 0 S$=[ ]]]] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44] A$=[ 44 ] + F= 0 S$=[ 44] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^] A$=[^^ ] + F= 0 S$=[^^] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ QQ] A$=[ QQ ] + F= 0 S$=[ QQ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ FFFF] A$=[ FFFF ] + F= 0 S$=[ FFFF] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ n] A$=[ n ] + F= 0 S$=[ n] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ hh] A$=[ hh ] + F= 0 S$=[ hh] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555] A$=[555 ] + F= 0 S$=[555] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ YYYY] A$=[ YYYY ] + F= 0 S$=[ YYYY] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ w] A$=[ w ] + F= 0 S$=[ w] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM] A$=[MMMM ] + F= 0 S$=[MMMM] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ JJJJ] A$=[ JJJJ ] + F= 0 S$=[ JJJJ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %%] A$=[ %% ] + F= 0 S$=[ %%] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ *] A$=[ * ] + F= 0 S$=[ *] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@] A$=[ @@@ ] + F= 0 S$=[ @@@] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I] A$=[I ] + F= 0 S$=[I] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss] A$=[ ss ] + F= 0 S$=[ ss] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ f] A$=[ f ] + F= 0 S$=[ f] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ D] A$=[ D ] + F= 0 S$=[ D] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[###] A$=[### ] + F= 0 S$=[###] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ '] A$=[ ' ] + F= 0 S$=[ '] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ dd] A$=[ dd ] + F= 0 S$=[ dd] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ TT] A$=[ TT ] + F= 0 S$=[ TT] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ vvv] A$=[ vvv ] + F= 0 S$=[ vvv] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ X] A$=[ X ] + F= 0 S$=[ X] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ %] A$=[ % ] + F= 0 S$=[ %] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555] A$=[ 5555 ] + F= 0 S$=[ 5555] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF] A$=[FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %%] A$=[ %% ] + F= 0 S$=[ %%] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ ||] A$=[ || ] + F= 0 S$=[ ||] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ SSS] A$=[ SSS ] + F= 0 S$=[ SSS] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666] A$=[ 6666 ] + F= 0 S$=[ 6666] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ ww] A$=[ ww ] + F= 0 S$=[ ww] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111] A$=[ 1111 ] + F= 0 S$=[ 1111] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ K] A$=[ K ] + F= 0 S$=[ K] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ ttttt] A$=[ ttttt ] + F= 0 S$=[ ttttt] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ OOOOO] A$=[ OOOOO ] + F= 0 S$=[ OOOOO] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ E] A$=[ E ] + F= 0 S$=[ E] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ PPPPP] A$=[ PPPPP ] + F= 0 S$=[ PPPPP] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ ==] A$=[ == ] + F= 0 S$=[ ==] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ VVVV] A$=[ VVVV ] + F= 0 S$=[ VVVV] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ c] A$=[ c ] + F= 0 S$=[ c] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ yyyy] A$=[ yyyy ] + F= 0 S$=[ yyyy] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_RTRIM_A_S.BAS b/NBS2/F_RTRIM_A_S.BAS new file mode 100644 index 0000000..8b57f32 --- /dev/null +++ b/NBS2/F_RTRIM_A_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:32 +REM FILENAME: F_RTRIM_A_S.BAS +REM SYNTAX: S$ = RTRIM$( A$ ) +REM UNIQUEID: F_RTRIM_A_S +REM FUNCTION: RTRIM$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = RTRIM$( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", "" +DATA 2 , 0 , "", " " +DATA 3 , 0 , "3", "3" +DATA 4 , 0 , "z", "z" +DATA 5 , 0 , "", " " +DATA 6 , 0 , " 3", " 3" +DATA 7 , 0 , " z", " z" +DATA 8 , 0 , "3", "3 " +DATA 9 , 0 , "z", "z " +DATA 10 , 0 , " 3", " 3 " +DATA 11 , 0 , " z", " z " +DATA 12 , 0 , " LLLL", " LLLL" +DATA 13 , 0 , " ''", " '' " +DATA 14 , 0 , " oo", " oo " +DATA 15 , 0 , " 00", " 00 " +DATA 16 , 0 , " \\\\", " \\\\ " +DATA 17 , 0 , " lllll", " lllll " +DATA 18 , 0 , " uuuu", " uuuu " +DATA 19 , 0 , " a", " a " +DATA 20 , 0 , "", " " +DATA 21 , 0 , " hh", " hh " +DATA 22 , 0 , " h", " h " +DATA 23 , 0 , " )", " )" +DATA 24 , 0 , " 5", " 5 " +DATA 25 , 0 , " 2", " 2 " +DATA 26 , 0 , " -", " - " +DATA 27 , 0 , "dd", "dd " +DATA 28 , 0 , " tttt", " tttt " +DATA 29 , 0 , " ::::", " :::: " +DATA 30 , 0 , " ___", " ___ " +DATA 31 , 0 , "", " " +DATA 32 , 0 , "", " " +DATA 33 , 0 , " _____", " _____ " +DATA 34 , 0 , " S", " S " +DATA 35 , 0 , " FFFF", " FFFF " +DATA 36 , 0 , " kkk", " kkk" +DATA 37 , 0 , " NNNN", " NNNN " +DATA 38 , 0 , " mmmm", " mmmm " +DATA 39 , 0 , " ,,,,,", " ,,,,, " +DATA 40 , 0 , "OO", "OO " +DATA 41 , 0 , " HHHH", " HHHH " +DATA 42 , 0 , " <", " < " +DATA 43 , 0 , " j", " j " +DATA 44 , 0 , " yyyy", " yyyy " +DATA 45 , 0 , " +++", " +++ " +DATA 46 , 0 , "o", "o " +DATA 47 , 0 , " ((", " ((" +DATA 48 , 0 , " uu", " uu " +DATA 49 , 0 , " 00", " 00 " +DATA 50 , 0 , " HH", " HH " +DATA 51 , 0 , "", " " +DATA 52 , 0 , " G", " G " +DATA 53 , 0 , " {{{{", " {{{{ " +DATA 54 , 0 , " ]]]", " ]]] " +DATA 55 , 0 , "CCC", "CCC" +DATA 56 , 0 , " 44", " 44 " +DATA 57 , 0 , "^^", "^^ " +DATA 58 , 0 , " QQ", " QQ " +DATA 59 , 0 , " FFFF", " FFFF " +DATA 60 , 0 , " n", " n " +DATA 61 , 0 , " hh", " hh " +DATA 62 , 0 , "555", "555 " +DATA 63 , 0 , " YYYY", " YYYY " +DATA 64 , 0 , " w", " w " +DATA 65 , 0 , "MMMM", "MMMM " +DATA 66 , 0 , " JJJJ", " JJJJ " +DATA 67 , 0 , " %%", " %% " +DATA 68 , 0 , " *", " * " +DATA 69 , 0 , " @@@", " @@@ " +DATA 70 , 0 , "I", "I " +DATA 71 , 0 , " ss", " ss " +DATA 72 , 0 , " f", " f " +DATA 73 , 0 , " D", " D " +DATA 74 , 0 , "###", "### " +DATA 75 , 0 , " '", " ' " +DATA 76 , 0 , " dd", " dd " +DATA 77 , 0 , " TT", " TT " +DATA 78 , 0 , " vvv", " vvv " +DATA 79 , 0 , " X", " X " +DATA 80 , 0 , " %", " % " +DATA 81 , 0 , "", " " +DATA 82 , 0 , " 5555", " 5555 " +DATA 83 , 0 , "FFFF", "FFFF " +DATA 84 , 0 , " %%", " %% " +DATA 85 , 0 , "", " " +DATA 86 , 0 , " ~~~~", " ~~~~ " +DATA 87 , 0 , " ||", " || " +DATA 88 , 0 , " SSS", " SSS " +DATA 89 , 0 , " 6666", " 6666 " +DATA 90 , 0 , " ww", " ww " +DATA 91 , 0 , " 1111", " 1111 " +DATA 92 , 0 , " K", " K " +DATA 93 , 0 , " ttttt", " ttttt " +DATA 94 , 0 , " OOOOO", " OOOOO " +DATA 95 , 0 , " E", " E " +DATA 96 , 0 , " PPPPP", " PPPPP " +DATA 97 , 0 , " ==", " == " +DATA 98 , 0 , " VVVV", " VVVV " +DATA 99 , 0 , " c", " c " +DATA 100 , 0 , " yyyy", " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_RTRIM_A_S.OUT b/NBS2/F_RTRIM_A_S.OUT new file mode 100644 index 0000000..71f34cb --- /dev/null +++ b/NBS2/F_RTRIM_A_S.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ z] A$=[ z] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3] A$=[3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z] A$=[z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3] A$=[ 3 ] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ z] A$=[ z ] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ LLLL] A$=[ LLLL] + F= 0 S$=[ LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ ''] A$=[ '' ] + F= 0 S$=[ ''] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ oo] A$=[ oo ] + F= 0 S$=[ oo] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00] A$=[ 00 ] + F= 0 S$=[ 00] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\] A$=[ \\\\ ] + F= 0 S$=[ \\\\] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ lllll] A$=[ lllll ] + F= 0 S$=[ lllll] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ uuuu] A$=[ uuuu ] + F= 0 S$=[ uuuu] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ a] A$=[ a ] + F= 0 S$=[ a] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ hh] A$=[ hh ] + F= 0 S$=[ hh] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ h] A$=[ h ] + F= 0 S$=[ h] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5] A$=[ 5 ] + F= 0 S$=[ 5] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2] A$=[ 2 ] + F= 0 S$=[ 2] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ -] A$=[ - ] + F= 0 S$=[ -] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd] A$=[dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt] A$=[ tttt ] + F= 0 S$=[ tttt] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ ::::] A$=[ :::: ] + F= 0 S$=[ ::::] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___] A$=[ ___ ] + F= 0 S$=[ ___] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____] A$=[ _____ ] + F= 0 S$=[ _____] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ S] A$=[ S ] + F= 0 S$=[ S] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF] A$=[ FFFF ] + F= 0 S$=[ FFFF] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN] A$=[ NNNN ] + F= 0 S$=[ NNNN] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm] A$=[ mmmm ] + F= 0 S$=[ mmmm] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,,] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,,] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO] A$=[OO ] + F= 0 S$=[OO] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ HHHH] A$=[ HHHH ] + F= 0 S$=[ HHHH] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ <] A$=[ < ] + F= 0 S$=[ <] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ j] A$=[ j ] + F= 0 S$=[ j] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ yyyy] A$=[ yyyy ] + F= 0 S$=[ yyyy] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++] A$=[ +++ ] + F= 0 S$=[ +++] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o] A$=[o ] + F= 0 S$=[o] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ uu] A$=[ uu ] + F= 0 S$=[ uu] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00] A$=[ 00 ] + F= 0 S$=[ 00] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ HH] A$=[ HH ] + F= 0 S$=[ HH] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ G] A$=[ G ] + F= 0 S$=[ G] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{] A$=[ {{{{ ] + F= 0 S$=[ {{{{] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]]] A$=[ ]]] ] + F= 0 S$=[ ]]]] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44] A$=[ 44 ] + F= 0 S$=[ 44] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^] A$=[^^ ] + F= 0 S$=[^^] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ QQ] A$=[ QQ ] + F= 0 S$=[ QQ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ FFFF] A$=[ FFFF ] + F= 0 S$=[ FFFF] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ n] A$=[ n ] + F= 0 S$=[ n] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ hh] A$=[ hh ] + F= 0 S$=[ hh] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555] A$=[555 ] + F= 0 S$=[555] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ YYYY] A$=[ YYYY ] + F= 0 S$=[ YYYY] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ w] A$=[ w ] + F= 0 S$=[ w] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM] A$=[MMMM ] + F= 0 S$=[MMMM] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ JJJJ] A$=[ JJJJ ] + F= 0 S$=[ JJJJ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %%] A$=[ %% ] + F= 0 S$=[ %%] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ *] A$=[ * ] + F= 0 S$=[ *] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@] A$=[ @@@ ] + F= 0 S$=[ @@@] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I] A$=[I ] + F= 0 S$=[I] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss] A$=[ ss ] + F= 0 S$=[ ss] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ f] A$=[ f ] + F= 0 S$=[ f] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ D] A$=[ D ] + F= 0 S$=[ D] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[###] A$=[### ] + F= 0 S$=[###] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ '] A$=[ ' ] + F= 0 S$=[ '] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ dd] A$=[ dd ] + F= 0 S$=[ dd] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ TT] A$=[ TT ] + F= 0 S$=[ TT] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ vvv] A$=[ vvv ] + F= 0 S$=[ vvv] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ X] A$=[ X ] + F= 0 S$=[ X] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ %] A$=[ % ] + F= 0 S$=[ %] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555] A$=[ 5555 ] + F= 0 S$=[ 5555] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF] A$=[FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %%] A$=[ %% ] + F= 0 S$=[ %%] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ ||] A$=[ || ] + F= 0 S$=[ ||] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ SSS] A$=[ SSS ] + F= 0 S$=[ SSS] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666] A$=[ 6666 ] + F= 0 S$=[ 6666] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ ww] A$=[ ww ] + F= 0 S$=[ ww] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111] A$=[ 1111 ] + F= 0 S$=[ 1111] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ K] A$=[ K ] + F= 0 S$=[ K] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ ttttt] A$=[ ttttt ] + F= 0 S$=[ ttttt] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ OOOOO] A$=[ OOOOO ] + F= 0 S$=[ OOOOO] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ E] A$=[ E ] + F= 0 S$=[ E] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ PPPPP] A$=[ PPPPP ] + F= 0 S$=[ PPPPP] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ ==] A$=[ == ] + F= 0 S$=[ ==] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ VVVV] A$=[ VVVV ] + F= 0 S$=[ VVVV] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ c] A$=[ c ] + F= 0 S$=[ c] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ yyyy] A$=[ yyyy ] + F= 0 S$=[ yyyy] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_RTRIM_A_S.dif b/NBS2/F_RTRIM_A_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_RTRIM_A_S.run b/NBS2/F_RTRIM_A_S.run new file mode 100644 index 0000000..c93e67c --- /dev/null +++ b/NBS2/F_RTRIM_A_S.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ z] A$=[ z] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3] A$=[3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z] A$=[z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3] A$=[ 3 ] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ z] A$=[ z ] + F= 0 S$=[ z] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ LLLL] A$=[ LLLL] + F= 0 S$=[ LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ ''] A$=[ '' ] + F= 0 S$=[ ''] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ oo] A$=[ oo ] + F= 0 S$=[ oo] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00] A$=[ 00 ] + F= 0 S$=[ 00] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\] A$=[ \\\\ ] + F= 0 S$=[ \\\\] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ lllll] A$=[ lllll ] + F= 0 S$=[ lllll] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ uuuu] A$=[ uuuu ] + F= 0 S$=[ uuuu] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ a] A$=[ a ] + F= 0 S$=[ a] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ hh] A$=[ hh ] + F= 0 S$=[ hh] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ h] A$=[ h ] + F= 0 S$=[ h] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5] A$=[ 5 ] + F= 0 S$=[ 5] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2] A$=[ 2 ] + F= 0 S$=[ 2] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ -] A$=[ - ] + F= 0 S$=[ -] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd] A$=[dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ tttt] A$=[ tttt ] + F= 0 S$=[ tttt] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ ::::] A$=[ :::: ] + F= 0 S$=[ ::::] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___] A$=[ ___ ] + F= 0 S$=[ ___] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____] A$=[ _____ ] + F= 0 S$=[ _____] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ S] A$=[ S ] + F= 0 S$=[ S] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF] A$=[ FFFF ] + F= 0 S$=[ FFFF] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ kkk] A$=[ kkk] + F= 0 S$=[ kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN] A$=[ NNNN ] + F= 0 S$=[ NNNN] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ mmmm] A$=[ mmmm ] + F= 0 S$=[ mmmm] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,,] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,,] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO] A$=[OO ] + F= 0 S$=[OO] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ HHHH] A$=[ HHHH ] + F= 0 S$=[ HHHH] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ <] A$=[ < ] + F= 0 S$=[ <] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ j] A$=[ j ] + F= 0 S$=[ j] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ yyyy] A$=[ yyyy ] + F= 0 S$=[ yyyy] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++] A$=[ +++ ] + F= 0 S$=[ +++] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o] A$=[o ] + F= 0 S$=[o] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ uu] A$=[ uu ] + F= 0 S$=[ uu] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00] A$=[ 00 ] + F= 0 S$=[ 00] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ HH] A$=[ HH ] + F= 0 S$=[ HH] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ G] A$=[ G ] + F= 0 S$=[ G] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{] A$=[ {{{{ ] + F= 0 S$=[ {{{{] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]]] A$=[ ]]] ] + F= 0 S$=[ ]]]] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44] A$=[ 44 ] + F= 0 S$=[ 44] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^] A$=[^^ ] + F= 0 S$=[^^] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ QQ] A$=[ QQ ] + F= 0 S$=[ QQ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ FFFF] A$=[ FFFF ] + F= 0 S$=[ FFFF] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ n] A$=[ n ] + F= 0 S$=[ n] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ hh] A$=[ hh ] + F= 0 S$=[ hh] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555] A$=[555 ] + F= 0 S$=[555] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ YYYY] A$=[ YYYY ] + F= 0 S$=[ YYYY] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ w] A$=[ w ] + F= 0 S$=[ w] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM] A$=[MMMM ] + F= 0 S$=[MMMM] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ JJJJ] A$=[ JJJJ ] + F= 0 S$=[ JJJJ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %%] A$=[ %% ] + F= 0 S$=[ %%] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ *] A$=[ * ] + F= 0 S$=[ *] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@] A$=[ @@@ ] + F= 0 S$=[ @@@] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I] A$=[I ] + F= 0 S$=[I] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ ss] A$=[ ss ] + F= 0 S$=[ ss] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ f] A$=[ f ] + F= 0 S$=[ f] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ D] A$=[ D ] + F= 0 S$=[ D] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[###] A$=[### ] + F= 0 S$=[###] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ '] A$=[ ' ] + F= 0 S$=[ '] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ dd] A$=[ dd ] + F= 0 S$=[ dd] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ TT] A$=[ TT ] + F= 0 S$=[ TT] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ vvv] A$=[ vvv ] + F= 0 S$=[ vvv] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ X] A$=[ X ] + F= 0 S$=[ X] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ %] A$=[ % ] + F= 0 S$=[ %] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555] A$=[ 5555 ] + F= 0 S$=[ 5555] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF] A$=[FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %%] A$=[ %% ] + F= 0 S$=[ %%] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ ||] A$=[ || ] + F= 0 S$=[ ||] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ SSS] A$=[ SSS ] + F= 0 S$=[ SSS] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666] A$=[ 6666 ] + F= 0 S$=[ 6666] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ ww] A$=[ ww ] + F= 0 S$=[ ww] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111] A$=[ 1111 ] + F= 0 S$=[ 1111] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ K] A$=[ K ] + F= 0 S$=[ K] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ ttttt] A$=[ ttttt ] + F= 0 S$=[ ttttt] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ OOOOO] A$=[ OOOOO ] + F= 0 S$=[ OOOOO] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ E] A$=[ E ] + F= 0 S$=[ E] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ PPPPP] A$=[ PPPPP ] + F= 0 S$=[ PPPPP] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ ==] A$=[ == ] + F= 0 S$=[ ==] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ VVVV] A$=[ VVVV ] + F= 0 S$=[ VVVV] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ c] A$=[ c ] + F= 0 S$=[ c] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ yyyy] A$=[ yyyy ] + F= 0 S$=[ yyyy] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SEC_X_N.80 b/NBS2/F_SEC_X_N.80 new file mode 100644 index 0000000..3c02fff --- /dev/null +++ b/NBS2/F_SEC_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.85082 X= 1 + F= 0 N= 1.85082 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1.85082 X=-1 + F= 0 N= 1.85082 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.0857 X= .4 + F= 0 N= 1.0857 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.0857 X=-.4 + F= 0 N= 1.0857 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.21163 X= .6 + F= 0 N= 1.21163 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1.21163 X=-.6 + F= 0 N= 1.21163 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-1.12105 X= 254 + F= 0 N=-1.12105 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-1.15968 X= 255 + F= 0 N=-1.15968 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-25.1315 X= 256 + F= 0 N=-25.1315 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.03555 X= 32000 + F= 0 N= 1.03555 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.02638 X=-.227229 + F= 0 N= 1.02638 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.0293 X=-.239157 + F= 0 N= 1.0293 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.02325 X=-.213586 + F= 0 N= 1.02325 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.03895 X= .274675 + F= 0 N= 1.03895 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.01459 X= .169766 + F= 0 N= 1.01459 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.05305 X= .318766 + F= 0 N= 1.05305 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.00021 X= 2.06658E-2 + F= 0 N= 1.00021 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.01799 X= .188257 + F= 0 N= 1.01799 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.03979 X=-.277537 + F= 0 N= 1.03979 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.12817 X=-.481303 + F= 0 N= 1.12817 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.10298 X= .43556 + F= 0 N= 1.10298 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.02267 X=-.210971 + F= 0 N= 1.02267 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.11338 X=-.455216 + F= 0 N= 1.11338 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.72218 X=-110.907 + F= 0 N=-1.72218 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.63897 X= 105.632 + F= 0 N= 2.63897 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 3.11208 X=-114.341 + F= 0 N= 3.11208 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-1.03202 X= 109.706 + F= 0 N=-1.03202 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-1.37667 X= 109.198 + F= 0 N=-1.37667 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-2.02496 X= 85.8773 + F= 0 N=-2.02496 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-4.28872 X=-58.3548 + F= 0 N=-4.28872 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-4.90224 X= 29.6397 + F= 0 N=-4.90224 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 40.0899 X=-108.36 + F= 0 N= 40.0899 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.21495 X=-46.5199 + F= 0 N=-1.21495 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.19266 X= 112.521 + F= 0 N= 1.19266 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7.26977 X= 45.4151 + F= 0 N= 7.26977 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.21 X= 101.129 + F= 0 N= 1.21 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-1.66412 X= 65.0473 + F= 0 N=-1.66412 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-3.45673 X= 48.4012 + F= 0 N=-3.45673 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-1.02659 X= 122.294 + F= 0 N=-1.02659 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.1049 X=-56.1094 + F= 0 N= 1.1049 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-7.39279 X=-121.087 + F= 0 N=-7.39279 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.83622 X=-123.517 + F= 0 N=-1.83622 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.02969 X=-97.6301 + F= 0 N=-1.02969 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 2.55255 X=-64.0001 + F= 0 N= 2.55255 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 1.17738 X=-25.6888 + F= 0 N= 1.17738 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-1.62384 X= 14.8006 + F= 0 N=-1.62384 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-5.79745 X=-61.0877 + F= 0 N=-5.79745 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.27044 X=-66.6381 + F= 0 N=-1.27044 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.3119 X=-5476.5 + F= 0 N=-1.3119 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-6.1697 X=-21210.3 + F= 0 N=-6.1697 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.69356 X=-28757.2 + F= 0 N= 1.69356 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.44489 X=-28732.2 + F= 0 N= 1.44489 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.18519 X= 12730.3 + F= 0 N= 1.18519 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.53008 X=-1830.69 + F= 0 N=-1.53008 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.55844 X= 5486.39 + F= 0 N= 2.55844 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.00188 X= 22405.9 + F= 0 N= 1.00188 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-1.02051 X= 30809.8 + F= 0 N=-1.02051 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.05586 X=-28930.6 + F= 0 N=-1.05586 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 20.3602 X=-6014.53 + F= 0 N= 20.3602 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-1.36915 X= 17414.6 + F= 0 N=-1.36915 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.82406 X=-10538.3 + F= 0 N= 5.82406 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1.00247 X=-17536.3 + F= 0 N= 1.00247 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.1218 X=-8856.62 + F= 0 N=-1.1218 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.12415 X=-5140.12 + F= 0 N= 1.12415 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.00384 X=-8595.31 + F= 0 N= 1.00384 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.23336 X=-3382.87 + F= 0 N=-1.23336 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1.26047 X=-5002.07 + F= 0 N= 1.26047 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 4.37081 X=-5800.72 + F= 0 N= 4.37081 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-12.5478 X= 29686.4 + F= 0 N=-12.5478 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.60754 X= 2571 + F= 0 N= 2.60754 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-4.41841 X= 31091 + F= 0 N=-4.41841 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-1.0058 X= 14819 + F= 0 N=-1.0058 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-1.85757 X= 3790.9 + F= 0 N=-1.85757 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.21811 X=-4.2981E+9 + F= 0 N= 1.21811 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.10197 X=-7.05453E+8 + F= 0 N= 1.10197 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1.09563 X=-3.10179E+9 + F= 0 N= 1.09563 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.44344 X=-4.86159E+9 + F= 0 N= 4.44344 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.49665 X=-8.62908E+8 + F= 0 N=-1.49665 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.08191 X=-3.4101E+9 + F= 0 N=-1.08191 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-1.6201 X= 3.3889E+9 + F= 0 N=-1.6201 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.44883 X= 2.49826E+9 + F= 0 N= 1.44883 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.44122 X= 2.3491E+9 + F= 0 N= 2.44122 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-1.28179 X= 1.94745E+8 + F= 0 N=-1.28179 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.01278 X= 2.02475E+9 + F= 0 N= 1.01278 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.54534 X=-2.26748E+9 + F= 0 N=-1.54534 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 1.00158 X=-2.10587E+9 + F= 0 N= 1.00158 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-2.99423 X= 4.23585E+9 + F= 0 N=-2.99423 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.01375 X=-2.66524E+9 + F= 0 N=-1.01375 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-1.47161 X= 4.01052E+9 + F= 0 N=-1.47161 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1.07953 X=-4.87912E+9 + F= 0 N= 1.07953 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 25.4889 X= 1.77556E+9 + F= 0 N= 25.4889 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.2236 X= 2.87705E+8 + F= 0 N= 1.2236 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.06209 X= 1.99977E+8 + F= 0 N= 1.06209 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1.21439 X=-3.39941E+9 + F= 0 N= 1.21439 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.9457 X=-3.49119E+9 + F= 0 N= 6.9457 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-18.8696 X=-2.86324E+9 + F= 0 N=-18.8696 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-1.6737 X= 4.20418E+9 + F= 0 N=-1.6737 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.53453 X=-3.1518E+9 + F= 0 N=-1.53453 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.3945 X= 4.60615E+9 + F= 0 N= 1.3945 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SEC_X_N.BAS b/NBS2/F_SEC_X_N.BAS new file mode 100644 index 0000000..87c42ad --- /dev/null +++ b/NBS2/F_SEC_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:32 +REM FILENAME: F_SEC_X_N.BAS +REM SYNTAX: N = SEC( X ) +REM UNIQUEID: F_SEC_X_N +REM FUNCTION: SEC +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = SEC( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 1 , 0 +DATA 2 , 0 , 1.85082 , 1 +DATA 3 , 0 , 1.85082 , -1 +DATA 4 , 0 , 1.0857 , .4 +DATA 5 , 0 , 1.0857 , -.4 +DATA 6 , 0 , 1.21163 , .6 +DATA 7 , 0 , 1.21163 , -.6 +DATA 8 , 0 , -1.12105 , 254 +DATA 9 , 0 , -1.15968 , 255 +DATA 10 , 0 , -25.1315 , 256 +DATA 11 , 0 , 1.03555 , 32000 +DATA 12 , 0 , 1.02638 , -.227229 +DATA 13 , 0 , 1.0293 , -.239157 +DATA 14 , 0 , 1.02325 , -.213586 +DATA 15 , 0 , 1.03895 , .274675 +DATA 16 , 0 , 1.01459 , .169766 +DATA 17 , 0 , 1.05305 , .318766 +DATA 18 , 0 , 1.00021 , 2.06658E-2 +DATA 19 , 0 , 1.01799 , .188257 +DATA 20 , 0 , 1.03979 , -.277537 +DATA 21 , 0 , 1.12817 , -.481303 +DATA 22 , 0 , 1.10298 , .43556 +DATA 23 , 0 , 1.02267 , -.210971 +DATA 24 , 0 , 1.11338 , -.455216 +DATA 25 , 0 , -1.72218 , -110.907 +DATA 26 , 0 , 2.63897 , 105.632 +DATA 27 , 0 , 3.11208 , -114.341 +DATA 28 , 0 , -1.03202 , 109.706 +DATA 29 , 0 , -1.37667 , 109.198 +DATA 30 , 0 , -2.02496 , 85.8773 +DATA 31 , 0 , -4.28872 , -58.3548 +DATA 32 , 0 , -4.90224 , 29.6397 +DATA 33 , 0 , 40.0899 , -108.36 +DATA 34 , 0 , -1.21495 , -46.5199 +DATA 35 , 0 , 1.19266 , 112.521 +DATA 36 , 0 , 7.26977 , 45.4151 +DATA 37 , 0 , 1.21 , 101.129 +DATA 38 , 0 , -1.66412 , 65.0473 +DATA 39 , 0 , -3.45673 , 48.4012 +DATA 40 , 0 , -1.02659 , 122.294 +DATA 41 , 0 , 1.1049 , -56.1094 +DATA 42 , 0 , -7.39279 , -121.087 +DATA 43 , 0 , -1.83622 , -123.517 +DATA 44 , 0 , -1.02969 , -97.6301 +DATA 45 , 0 , 2.55255 , -64.0001 +DATA 46 , 0 , 1.17738 , -25.6888 +DATA 47 , 0 , -1.62384 , 14.8006 +DATA 48 , 0 , -5.79745 , -61.0877 +DATA 49 , 0 , -1.27044 , -66.6381 +DATA 50 , 0 , -1.3119 , -5476.5 +DATA 51 , 0 , -6.1697 , -21210.3 +DATA 52 , 0 , 1.69356 , -28757.2 +DATA 53 , 0 , 1.44489 , -28732.2 +DATA 54 , 0 , 1.18519 , 12730.3 +DATA 55 , 0 , -1.53008 , -1830.69 +DATA 56 , 0 , 2.55844 , 5486.39 +DATA 57 , 0 , 1.00188 , 22405.9 +DATA 58 , 0 , -1.02051 , 30809.8 +DATA 59 , 0 , -1.05586 , -28930.6 +DATA 60 , 0 , 20.3602 , -6014.53 +DATA 61 , 0 , -1.36915 , 17414.6 +DATA 62 , 0 , 5.82406 , -10538.3 +DATA 63 , 0 , 1.00247 , -17536.3 +DATA 64 , 0 , -1.1218 , -8856.62 +DATA 65 , 0 , 1.12415 , -5140.12 +DATA 66 , 0 , 1.00384 , -8595.31 +DATA 67 , 0 , -1.23336 , -3382.87 +DATA 68 , 0 , 1.26047 , -5002.07 +DATA 69 , 0 , 4.37081 , -5800.72 +DATA 70 , 0 , -12.5478 , 29686.4 +DATA 71 , 0 , 2.60754 , 2571. +DATA 72 , 0 , -4.41841 , 31091. +DATA 73 , 0 , -1.0058 , 14819. +DATA 74 , 0 , -1.85757 , 3790.9 +DATA 75 , 0 , 1.21811 , -4.2981E+9 +DATA 76 , 0 , 1.10197 , -7.05453E+8 +DATA 77 , 0 , 1.09563 , -3.10179E+9 +DATA 78 , 0 , 4.44344 , -4.86159E+9 +DATA 79 , 0 , -1.49665 , -8.62908E+8 +DATA 80 , 0 , -1.08191 , -3.4101E+9 +DATA 81 , 0 , -1.6201 , 3.3889E+9 +DATA 82 , 0 , 1.44883 , 2.49826E+9 +DATA 83 , 0 , 2.44122 , 2.3491E+9 +DATA 84 , 0 , -1.28179 , 1.94745E+8 +DATA 85 , 0 , 1.01278 , 2.02475E+9 +DATA 86 , 0 , -1.54534 , -2.26748E+9 +DATA 87 , 0 , 1.00158 , -2.10587E+9 +DATA 88 , 0 , -2.99423 , 4.23585E+9 +DATA 89 , 0 , -1.01375 , -2.66524E+9 +DATA 90 , 0 , -1.47161 , 4.01052E+9 +DATA 91 , 0 , 1.07953 , -4.87912E+9 +DATA 92 , 0 , 25.4889 , 1.77556E+9 +DATA 93 , 0 , 1.2236 , 2.87705E+8 +DATA 94 , 0 , 1.06209 , 1.99977E+8 +DATA 95 , 0 , 1.21439 , -3.39941E+9 +DATA 96 , 0 , 6.9457 , -3.49119E+9 +DATA 97 , 0 , -18.8696 , -2.86324E+9 +DATA 98 , 0 , -1.6737 , 4.20418E+9 +DATA 99 , 0 , -1.53453 , -3.1518E+9 +DATA 100 , 0 , 1.3945 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_SEC_X_N.OUT b/NBS2/F_SEC_X_N.OUT new file mode 100644 index 0000000..71937e4 --- /dev/null +++ b/NBS2/F_SEC_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.85082 X= 1 + F= 0 N= 1.85082 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1.85082 X=-1 + F= 0 N= 1.85082 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.0857 X= .4 + F= 0 N= 1.0857 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.0857 X=-.4 + F= 0 N= 1.0857 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.21163 X= .6 + F= 0 N= 1.21163 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1.21163 X=-.6 + F= 0 N= 1.21163 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-1.12105 X= 254 + F= 0 N=-1.12105 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-1.15968 X= 255 + F= 0 N=-1.15968 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-25.1315 X= 256 + F= 0 N=-25.1315 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.03555 X= 32000 + F= 0 N= 1.03555 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.02638 X=-.227229 + F= 0 N= 1.02638 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.0293 X=-.239157 + F= 0 N= 1.0293 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.02325 X=-.213586 + F= 0 N= 1.02325 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.03895 X= .274675 + F= 0 N= 1.03895 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.01459 X= .169766 + F= 0 N= 1.01459 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.05305 X= .318766 + F= 0 N= 1.05305 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.00021 X= 2.06658E-2 + F= 0 N= 1.00021 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.01799 X= .188257 + F= 0 N= 1.01799 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.03979 X=-.277537 + F= 0 N= 1.03979 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.12817 X=-.481303 + F= 0 N= 1.12817 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.10298 X= .43556 + F= 0 N= 1.10298 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.02267 X=-.210971 + F= 0 N= 1.02267 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.11338 X=-.455216 + F= 0 N= 1.11338 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.72218 X=-110.907 + F= 0 N=-1.72218 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.63897 X= 105.632 + F= 0 N= 2.63897 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 3.11208 X=-114.341 + F= 0 N= 3.11208 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-1.03202 X= 109.706 + F= 0 N=-1.03202 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-1.37667 X= 109.198 + F= 0 N=-1.37667 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-2.02496 X= 85.8773 + F= 0 N=-2.02496 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-4.28872 X=-58.3548 + F= 0 N=-4.28872 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-4.90224 X= 29.6397 + F= 0 N=-4.90224 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 40.0899 X=-108.36 + F= 0 N= 40.0899 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.21495 X=-46.5199 + F= 0 N=-1.21495 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.19266 X= 112.521 + F= 0 N= 1.19266 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7.26977 X= 45.4151 + F= 0 N= 7.26977 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.21 X= 101.129 + F= 0 N= 1.21 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-1.66412 X= 65.0473 + F= 0 N=-1.66412 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-3.45673 X= 48.4012 + F= 0 N=-3.45673 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-1.02659 X= 122.294 + F= 0 N=-1.02659 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.1049 X=-56.1094 + F= 0 N= 1.1049 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-7.39279 X=-121.087 + F= 0 N=-7.39279 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.83622 X=-123.517 + F= 0 N=-1.83622 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.02969 X=-97.6301 + F= 0 N=-1.02969 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 2.55255 X=-64.0001 + F= 0 N= 2.55255 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 1.17738 X=-25.6888 + F= 0 N= 1.17738 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-1.62384 X= 14.8006 + F= 0 N=-1.62384 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-5.79745 X=-61.0877 + F= 0 N=-5.79745 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.27044 X=-66.6381 + F= 0 N=-1.27044 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.3119 X=-5476.5 + F= 0 N=-1.3119 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-6.1697 X=-21210.3 + F= 0 N=-6.1697 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.69356 X=-28757.2 + F= 0 N= 1.69356 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.44489 X=-28732.2 + F= 0 N= 1.44489 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.18519 X= 12730.3 + F= 0 N= 1.18519 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.53008 X=-1830.69 + F= 0 N=-1.53008 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.55844 X= 5486.39 + F= 0 N= 2.55844 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.00188 X= 22405.9 + F= 0 N= 1.00188 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-1.02051 X= 30809.8 + F= 0 N=-1.02051 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.05586 X=-28930.6 + F= 0 N=-1.05586 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 20.3602 X=-6014.53 + F= 0 N= 20.3602 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-1.36915 X= 17414.6 + F= 0 N=-1.36915 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.82406 X=-10538.3 + F= 0 N= 5.82406 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1.00247 X=-17536.3 + F= 0 N= 1.00247 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.1218 X=-8856.62 + F= 0 N=-1.1218 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.12415 X=-5140.12 + F= 0 N= 1.12415 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.00384 X=-8595.31 + F= 0 N= 1.00384 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.23336 X=-3382.87 + F= 0 N=-1.23336 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1.26047 X=-5002.07 + F= 0 N= 1.26047 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 4.37081 X=-5800.72 + F= 0 N= 4.37081 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-12.5478 X= 29686.4 + F= 0 N=-12.5478 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.60754 X= 2571 + F= 0 N= 2.60754 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-4.41841 X= 31091 + F= 0 N=-4.41841 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-1.0058 X= 14819 + F= 0 N=-1.0058 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-1.85757 X= 3790.9 + F= 0 N=-1.85757 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.21811 X=-4.2981E+9 + F= 0 N= 1.21811 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.10197 X=-7.05453E+8 + F= 0 N= 1.10197 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1.09563 X=-3.10179E+9 + F= 0 N= 1.09563 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.44344 X=-4.86159E+9 + F= 0 N= 4.44344 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.49665 X=-8.62908E+8 + F= 0 N=-1.49665 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.08191 X=-3.4101E+9 + F= 0 N=-1.08191 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-1.6201 X= 3.3889E+9 + F= 0 N=-1.6201 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.44883 X= 2.49826E+9 + F= 0 N= 1.44883 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.44122 X= 2.3491E+9 + F= 0 N= 2.44122 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-1.28179 X= 1.94745E+8 + F= 0 N=-1.28179 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.01278 X= 2.02475E+9 + F= 0 N= 1.01278 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.54534 X=-2.26748E+9 + F= 0 N=-1.54534 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 1.00158 X=-2.10587E+9 + F= 0 N= 1.00158 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-2.99423 X= 4.23585E+9 + F= 0 N=-2.99423 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.01375 X=-2.66524E+9 + F= 0 N=-1.01375 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-1.47161 X= 4.01052E+9 + F= 0 N=-1.47161 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1.07953 X=-4.87912E+9 + F= 0 N= 1.07953 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 25.4889 X= 1.77556E+9 + F= 0 N= 25.4889 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.2236 X= 2.87705E+8 + F= 0 N= 1.2236 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.06209 X= 1.99977E+8 + F= 0 N= 1.06209 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1.21439 X=-3.39941E+9 + F= 0 N= 1.21439 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.9457 X=-3.49119E+9 + F= 0 N= 6.9457 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-18.8696 X=-2.86324E+9 + F= 0 N=-18.8696 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-1.6737 X= 4.20418E+9 + F= 0 N=-1.6737 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.53453 X=-3.1518E+9 + F= 0 N=-1.53453 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.3945 X= 4.60615E+9 + F= 0 N= 1.3945 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SEC_X_N.dif b/NBS2/F_SEC_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_SEC_X_N.run b/NBS2/F_SEC_X_N.run new file mode 100644 index 0000000..3c02fff --- /dev/null +++ b/NBS2/F_SEC_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 1 X= 0 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.85082 X= 1 + F= 0 N= 1.85082 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 1.85082 X=-1 + F= 0 N= 1.85082 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1.0857 X= .4 + F= 0 N= 1.0857 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R= 1.0857 X=-.4 + F= 0 N= 1.0857 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1.21163 X= .6 + F= 0 N= 1.21163 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R= 1.21163 X=-.6 + F= 0 N= 1.21163 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-1.12105 X= 254 + F= 0 N=-1.12105 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-1.15968 X= 255 + F= 0 N=-1.15968 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-25.1315 X= 256 + F= 0 N=-25.1315 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1.03555 X= 32000 + F= 0 N= 1.03555 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R= 1.02638 X=-.227229 + F= 0 N= 1.02638 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R= 1.0293 X=-.239157 + F= 0 N= 1.0293 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R= 1.02325 X=-.213586 + F= 0 N= 1.02325 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1.03895 X= .274675 + F= 0 N= 1.03895 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1.01459 X= .169766 + F= 0 N= 1.01459 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1.05305 X= .318766 + F= 0 N= 1.05305 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1.00021 X= 2.06658E-2 + F= 0 N= 1.00021 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1.01799 X= .188257 + F= 0 N= 1.01799 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R= 1.03979 X=-.277537 + F= 0 N= 1.03979 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R= 1.12817 X=-.481303 + F= 0 N= 1.12817 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1.10298 X= .43556 + F= 0 N= 1.10298 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R= 1.02267 X=-.210971 + F= 0 N= 1.02267 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 1.11338 X=-.455216 + F= 0 N= 1.11338 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.72218 X=-110.907 + F= 0 N=-1.72218 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 2.63897 X= 105.632 + F= 0 N= 2.63897 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R= 3.11208 X=-114.341 + F= 0 N= 3.11208 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-1.03202 X= 109.706 + F= 0 N=-1.03202 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-1.37667 X= 109.198 + F= 0 N=-1.37667 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-2.02496 X= 85.8773 + F= 0 N=-2.02496 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-4.28872 X=-58.3548 + F= 0 N=-4.28872 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-4.90224 X= 29.6397 + F= 0 N=-4.90224 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R= 40.0899 X=-108.36 + F= 0 N= 40.0899 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1.21495 X=-46.5199 + F= 0 N=-1.21495 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1.19266 X= 112.521 + F= 0 N= 1.19266 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7.26977 X= 45.4151 + F= 0 N= 7.26977 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1.21 X= 101.129 + F= 0 N= 1.21 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-1.66412 X= 65.0473 + F= 0 N=-1.66412 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-3.45673 X= 48.4012 + F= 0 N=-3.45673 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-1.02659 X= 122.294 + F= 0 N=-1.02659 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= 1.1049 X=-56.1094 + F= 0 N= 1.1049 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-7.39279 X=-121.087 + F= 0 N=-7.39279 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.83622 X=-123.517 + F= 0 N=-1.83622 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.02969 X=-97.6301 + F= 0 N=-1.02969 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R= 2.55255 X=-64.0001 + F= 0 N= 2.55255 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R= 1.17738 X=-25.6888 + F= 0 N= 1.17738 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-1.62384 X= 14.8006 + F= 0 N=-1.62384 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-5.79745 X=-61.0877 + F= 0 N=-5.79745 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1.27044 X=-66.6381 + F= 0 N=-1.27044 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1.3119 X=-5476.5 + F= 0 N=-1.3119 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-6.1697 X=-21210.3 + F= 0 N=-6.1697 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.69356 X=-28757.2 + F= 0 N= 1.69356 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.44489 X=-28732.2 + F= 0 N= 1.44489 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1.18519 X= 12730.3 + F= 0 N= 1.18519 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1.53008 X=-1830.69 + F= 0 N=-1.53008 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.55844 X= 5486.39 + F= 0 N= 2.55844 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1.00188 X= 22405.9 + F= 0 N= 1.00188 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-1.02051 X= 30809.8 + F= 0 N=-1.02051 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1.05586 X=-28930.6 + F= 0 N=-1.05586 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R= 20.3602 X=-6014.53 + F= 0 N= 20.3602 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-1.36915 X= 17414.6 + F= 0 N=-1.36915 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 5.82406 X=-10538.3 + F= 0 N= 5.82406 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 1.00247 X=-17536.3 + F= 0 N= 1.00247 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1.1218 X=-8856.62 + F= 0 N=-1.1218 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R= 1.12415 X=-5140.12 + F= 0 N= 1.12415 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 1.00384 X=-8595.31 + F= 0 N= 1.00384 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1.23336 X=-3382.87 + F= 0 N=-1.23336 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R= 1.26047 X=-5002.07 + F= 0 N= 1.26047 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R= 4.37081 X=-5800.72 + F= 0 N= 4.37081 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-12.5478 X= 29686.4 + F= 0 N=-12.5478 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.60754 X= 2571 + F= 0 N= 2.60754 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-4.41841 X= 31091 + F= 0 N=-4.41841 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-1.0058 X= 14819 + F= 0 N=-1.0058 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-1.85757 X= 3790.9 + F= 0 N=-1.85757 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= 1.21811 X=-4.2981E+9 + F= 0 N= 1.21811 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R= 1.10197 X=-7.05453E+8 + F= 0 N= 1.10197 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= 1.09563 X=-3.10179E+9 + F= 0 N= 1.09563 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.44344 X=-4.86159E+9 + F= 0 N= 4.44344 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.49665 X=-8.62908E+8 + F= 0 N=-1.49665 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1.08191 X=-3.4101E+9 + F= 0 N=-1.08191 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-1.6201 X= 3.3889E+9 + F= 0 N=-1.6201 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.44883 X= 2.49826E+9 + F= 0 N= 1.44883 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 2.44122 X= 2.3491E+9 + F= 0 N= 2.44122 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-1.28179 X= 1.94745E+8 + F= 0 N=-1.28179 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1.01278 X= 2.02475E+9 + F= 0 N= 1.01278 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1.54534 X=-2.26748E+9 + F= 0 N=-1.54534 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R= 1.00158 X=-2.10587E+9 + F= 0 N= 1.00158 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-2.99423 X= 4.23585E+9 + F= 0 N=-2.99423 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1.01375 X=-2.66524E+9 + F= 0 N=-1.01375 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-1.47161 X= 4.01052E+9 + F= 0 N=-1.47161 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1.07953 X=-4.87912E+9 + F= 0 N= 1.07953 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 25.4889 X= 1.77556E+9 + F= 0 N= 25.4889 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1.2236 X= 2.87705E+8 + F= 0 N= 1.2236 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1.06209 X= 1.99977E+8 + F= 0 N= 1.06209 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R= 1.21439 X=-3.39941E+9 + F= 0 N= 1.21439 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.9457 X=-3.49119E+9 + F= 0 N= 6.9457 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-18.8696 X=-2.86324E+9 + F= 0 N=-18.8696 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-1.6737 X= 4.20418E+9 + F= 0 N=-1.6737 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.53453 X=-3.1518E+9 + F= 0 N=-1.53453 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1.3945 X= 4.60615E+9 + F= 0 N= 1.3945 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SGN_X_N.80 b/NBS2/F_SGN_X_N.80 new file mode 100644 index 0000000..2760649 --- /dev/null +++ b/NBS2/F_SGN_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 X= .4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-1 X=-.4 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 X= 254 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 X= 255 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 X= 256 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 X= 32000 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1 X=-.227229 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1 X=-.239157 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1 X=-.213586 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 X= .274675 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 X= .169766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 X= .318766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 X= 2.06658E-2 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 X= .188257 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1 X=-.277537 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1 X=-.481303 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 X= .43556 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1 X=-.210971 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-1 X=-.455216 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1 X=-110.907 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 X= 105.632 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1 X=-114.341 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 X= 109.706 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 X= 109.198 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 X= 85.8773 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1 X=-58.3548 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 X= 29.6397 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1 X=-108.36 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1 X=-46.5199 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 X= 112.521 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 X= 45.4151 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 X= 101.129 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 X= 65.0473 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 X= 48.4012 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 X= 122.294 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1 X=-56.1094 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1 X=-121.087 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1 X=-123.517 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1 X=-97.6301 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1 X=-64.0001 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1 X=-25.6888 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 X= 14.8006 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1 X=-61.0877 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1 X=-66.6381 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1 X=-5476.5 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1 X=-21210.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1 X=-28757.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1 X=-28732.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 X= 12730.3 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1 X=-1830.69 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 X= 5486.39 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 X= 22405.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 X= 30809.8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1 X=-28930.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1 X=-6014.53 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 X= 17414.6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1 X=-10538.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1 X=-17536.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1 X=-8856.62 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1 X=-5140.12 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1 X=-8595.31 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1 X=-3382.87 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1 X=-5002.07 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1 X=-5800.72 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 X= 29686.4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 X= 2571 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 X= 31091 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 X= 14819 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 X= 3790.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1 X=-4.2981E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1 X=-7.05453E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1 X=-3.10179E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1 X=-4.86159E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1 X=-8.62908E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1 X=-3.4101E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 X= 3.3889E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 X= 2.49826E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 X= 2.3491E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 X= 1.94745E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 X= 2.02475E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1 X=-2.26748E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1 X=-2.10587E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 X= 4.23585E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1 X=-2.66524E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1 X=-4.87912E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 X= 1.77556E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 X= 2.87705E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 X= 1.99977E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1 X=-3.39941E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1 X=-3.49119E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1 X=-2.86324E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 X= 4.20418E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1 X=-3.1518E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 X= 4.60615E+9 + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SGN_X_N.BAS b/NBS2/F_SGN_X_N.BAS new file mode 100644 index 0000000..ecee1cd --- /dev/null +++ b/NBS2/F_SGN_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:32 +REM FILENAME: F_SGN_X_N.BAS +REM SYNTAX: N = SGN( X ) +REM UNIQUEID: F_SGN_X_N +REM FUNCTION: SGN +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = SGN( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 0 , -1 , -1 +DATA 4 , 0 , 1 , .4 +DATA 5 , 0 , -1 , -.4 +DATA 6 , 0 , 1 , .6 +DATA 7 , 0 , -1 , -.6 +DATA 8 , 0 , 1 , 254 +DATA 9 , 0 , 1 , 255 +DATA 10 , 0 , 1 , 256 +DATA 11 , 0 , 1 , 32000 +DATA 12 , 0 , -1 , -.227229 +DATA 13 , 0 , -1 , -.239157 +DATA 14 , 0 , -1 , -.213586 +DATA 15 , 0 , 1 , .274675 +DATA 16 , 0 , 1 , .169766 +DATA 17 , 0 , 1 , .318766 +DATA 18 , 0 , 1 , 2.06658E-2 +DATA 19 , 0 , 1 , .188257 +DATA 20 , 0 , -1 , -.277537 +DATA 21 , 0 , -1 , -.481303 +DATA 22 , 0 , 1 , .43556 +DATA 23 , 0 , -1 , -.210971 +DATA 24 , 0 , -1 , -.455216 +DATA 25 , 0 , -1 , -110.907 +DATA 26 , 0 , 1 , 105.632 +DATA 27 , 0 , -1 , -114.341 +DATA 28 , 0 , 1 , 109.706 +DATA 29 , 0 , 1 , 109.198 +DATA 30 , 0 , 1 , 85.8773 +DATA 31 , 0 , -1 , -58.3548 +DATA 32 , 0 , 1 , 29.6397 +DATA 33 , 0 , -1 , -108.36 +DATA 34 , 0 , -1 , -46.5199 +DATA 35 , 0 , 1 , 112.521 +DATA 36 , 0 , 1 , 45.4151 +DATA 37 , 0 , 1 , 101.129 +DATA 38 , 0 , 1 , 65.0473 +DATA 39 , 0 , 1 , 48.4012 +DATA 40 , 0 , 1 , 122.294 +DATA 41 , 0 , -1 , -56.1094 +DATA 42 , 0 , -1 , -121.087 +DATA 43 , 0 , -1 , -123.517 +DATA 44 , 0 , -1 , -97.6301 +DATA 45 , 0 , -1 , -64.0001 +DATA 46 , 0 , -1 , -25.6888 +DATA 47 , 0 , 1 , 14.8006 +DATA 48 , 0 , -1 , -61.0877 +DATA 49 , 0 , -1 , -66.6381 +DATA 50 , 0 , -1 , -5476.5 +DATA 51 , 0 , -1 , -21210.3 +DATA 52 , 0 , -1 , -28757.2 +DATA 53 , 0 , -1 , -28732.2 +DATA 54 , 0 , 1 , 12730.3 +DATA 55 , 0 , -1 , -1830.69 +DATA 56 , 0 , 1 , 5486.39 +DATA 57 , 0 , 1 , 22405.9 +DATA 58 , 0 , 1 , 30809.8 +DATA 59 , 0 , -1 , -28930.6 +DATA 60 , 0 , -1 , -6014.53 +DATA 61 , 0 , 1 , 17414.6 +DATA 62 , 0 , -1 , -10538.3 +DATA 63 , 0 , -1 , -17536.3 +DATA 64 , 0 , -1 , -8856.62 +DATA 65 , 0 , -1 , -5140.12 +DATA 66 , 0 , -1 , -8595.31 +DATA 67 , 0 , -1 , -3382.87 +DATA 68 , 0 , -1 , -5002.07 +DATA 69 , 0 , -1 , -5800.72 +DATA 70 , 0 , 1 , 29686.4 +DATA 71 , 0 , 1 , 2571. +DATA 72 , 0 , 1 , 31091. +DATA 73 , 0 , 1 , 14819. +DATA 74 , 0 , 1 , 3790.9 +DATA 75 , 0 , -1 , -4.2981E+9 +DATA 76 , 0 , -1 , -7.05453E+8 +DATA 77 , 0 , -1 , -3.10179E+9 +DATA 78 , 0 , -1 , -4.86159E+9 +DATA 79 , 0 , -1 , -8.62908E+8 +DATA 80 , 0 , -1 , -3.4101E+9 +DATA 81 , 0 , 1 , 3.3889E+9 +DATA 82 , 0 , 1 , 2.49826E+9 +DATA 83 , 0 , 1 , 2.3491E+9 +DATA 84 , 0 , 1 , 1.94745E+8 +DATA 85 , 0 , 1 , 2.02475E+9 +DATA 86 , 0 , -1 , -2.26748E+9 +DATA 87 , 0 , -1 , -2.10587E+9 +DATA 88 , 0 , 1 , 4.23585E+9 +DATA 89 , 0 , -1 , -2.66524E+9 +DATA 90 , 0 , 1 , 4.01052E+9 +DATA 91 , 0 , -1 , -4.87912E+9 +DATA 92 , 0 , 1 , 1.77556E+9 +DATA 93 , 0 , 1 , 2.87705E+8 +DATA 94 , 0 , 1 , 1.99977E+8 +DATA 95 , 0 , -1 , -3.39941E+9 +DATA 96 , 0 , -1 , -3.49119E+9 +DATA 97 , 0 , -1 , -2.86324E+9 +DATA 98 , 0 , 1 , 4.20418E+9 +DATA 99 , 0 , -1 , -3.1518E+9 +DATA 100 , 0 , 1 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_SGN_X_N.OUT b/NBS2/F_SGN_X_N.OUT new file mode 100644 index 0000000..f8a653d --- /dev/null +++ b/NBS2/F_SGN_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 X= .4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-1 X=-.4 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 X= 254 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 X= 255 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 X= 256 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 X= 32000 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1 X=-.227229 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1 X=-.239157 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1 X=-.213586 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 X= .274675 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 X= .169766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 X= .318766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 X= 2.06658E-2 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 X= .188257 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1 X=-.277537 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1 X=-.481303 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 X= .43556 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1 X=-.210971 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-1 X=-.455216 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1 X=-110.907 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 X= 105.632 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1 X=-114.341 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 X= 109.706 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 X= 109.198 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 X= 85.8773 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1 X=-58.3548 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 X= 29.6397 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1 X=-108.36 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1 X=-46.5199 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 X= 112.521 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 X= 45.4151 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 X= 101.129 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 X= 65.0473 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 X= 48.4012 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 X= 122.294 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1 X=-56.1094 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1 X=-121.087 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1 X=-123.517 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1 X=-97.6301 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1 X=-64.0001 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1 X=-25.6888 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 X= 14.8006 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1 X=-61.0877 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1 X=-66.6381 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1 X=-5476.5 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1 X=-21210.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1 X=-28757.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1 X=-28732.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 X= 12730.3 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1 X=-1830.69 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 X= 5486.39 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 X= 22405.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 X= 30809.8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1 X=-28930.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1 X=-6014.53 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 X= 17414.6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1 X=-10538.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1 X=-17536.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1 X=-8856.62 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1 X=-5140.12 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1 X=-8595.31 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1 X=-3382.87 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1 X=-5002.07 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1 X=-5800.72 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 X= 29686.4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 X= 2571 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 X= 31091 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 X= 14819 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 X= 3790.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1 X=-4.2981E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1 X=-7.05453E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1 X=-3.10179E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1 X=-4.86159E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1 X=-8.62908E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1 X=-3.4101E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 X= 3.3889E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 X= 2.49826E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 X= 2.3491E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 X= 1.94745E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 X= 2.02475E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1 X=-2.26748E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1 X=-2.10587E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 X= 4.23585E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1 X=-2.66524E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1 X=-4.87912E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 X= 1.77556E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 X= 2.87705E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 X= 1.99977E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1 X=-3.39941E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1 X=-3.49119E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1 X=-2.86324E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 X= 4.20418E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1 X=-3.1518E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 X= 4.60615E+9 + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SGN_X_N.dif b/NBS2/F_SGN_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_SGN_X_N.run b/NBS2/F_SGN_X_N.run new file mode 100644 index 0000000..2760649 --- /dev/null +++ b/NBS2/F_SGN_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1 X=-1 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= 1 X= .4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-1 X=-.4 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 1 X= .6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-1 X=-.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 X= 254 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 X= 255 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 X= 256 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 X= 32000 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1 X=-.227229 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1 X=-.239157 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1 X=-.213586 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 1 X= .274675 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 1 X= .169766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 1 X= .318766 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 1 X= 2.06658E-2 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 1 X= .188257 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1 X=-.277537 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-1 X=-.481303 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= 1 X= .43556 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1 X=-.210971 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-1 X=-.455216 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1 X=-110.907 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 X= 105.632 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1 X=-114.341 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 X= 109.706 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 X= 109.198 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 X= 85.8773 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1 X=-58.3548 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 X= 29.6397 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1 X=-108.36 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1 X=-46.5199 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 X= 112.521 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 X= 45.4151 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 X= 101.129 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 X= 65.0473 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 X= 48.4012 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 X= 122.294 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1 X=-56.1094 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1 X=-121.087 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1 X=-123.517 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1 X=-97.6301 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1 X=-64.0001 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1 X=-25.6888 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 X= 14.8006 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1 X=-61.0877 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1 X=-66.6381 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1 X=-5476.5 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1 X=-21210.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1 X=-28757.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1 X=-28732.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 X= 12730.3 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1 X=-1830.69 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 X= 5486.39 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 X= 22405.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 X= 30809.8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1 X=-28930.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1 X=-6014.53 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 X= 17414.6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1 X=-10538.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1 X=-17536.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1 X=-8856.62 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1 X=-5140.12 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1 X=-8595.31 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1 X=-3382.87 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1 X=-5002.07 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1 X=-5800.72 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 X= 29686.4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 X= 2571 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 X= 31091 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 X= 14819 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 X= 3790.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1 X=-4.2981E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1 X=-7.05453E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1 X=-3.10179E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1 X=-4.86159E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1 X=-8.62908E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1 X=-3.4101E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 X= 3.3889E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 X= 2.49826E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 X= 2.3491E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 X= 1.94745E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 X= 2.02475E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1 X=-2.26748E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1 X=-2.10587E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 X= 4.23585E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1 X=-2.66524E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1 X=-4.87912E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 X= 1.77556E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 X= 2.87705E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 X= 1.99977E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1 X=-3.39941E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1 X=-3.49119E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1 X=-2.86324E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 X= 4.20418E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1 X=-3.1518E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 X= 4.60615E+9 + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SINH_X_N.80 b/NBS2/F_SINH_X_N.80 new file mode 100644 index 0000000..46411a7 --- /dev/null +++ b/NBS2/F_SINH_X_N.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.1752 X= 1 + F= 0 N= 1.1752 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.1752 X=-1 + F= 0 N=-1.1752 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .410752 X= .4 + F= 0 N= .410752 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.410752 X=-.4 + F= 0 N=-.410752 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .636654 X= .6 + F= 0 N= .636654 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.636654 X=-.6 + F= 0 N=-.636654 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.02275E+110 X= 254 + F= 0 N= 1.02275E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.78012E+110 X= 255 + F= 0 N= 2.78012E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 7.55714E+110 X= 256 + F= 0 N= 7.55714E+110 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.229189 X=-.227229 + F= 0 N=-.229189 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.241443 X=-.239157 + F= 0 N=-.241443 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.215214 X=-.213586 + F= 0 N=-.215214 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .278142 X= .274675 + F= 0 N= .278142 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .170583 X= .169766 + F= 0 N= .170583 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .324192 X= .318766 + F= 0 N= .324192 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06673E-2 X= 2.06658E-2 + F= 0 N= 2.06673E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .189371 X= .188257 + F= 0 N= .189371 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.281114 X=-.277537 + F= 0 N=-.281114 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.500102 X=-.481303 + F= 0 N=-.500102 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .449463 X= .43556 + F= 0 N= .449463 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.212539 X=-.210971 + F= 0 N=-.212539 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.471101 X=-.455216 + F= 0 N=-.471101 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-7.33277E+47 X=-110.907 + F= 0 N=-7.33277E+47 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 3.75288E+45 X= 105.632 + F= 0 N= 3.75288E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.27319E+49 X=-114.341 + F= 0 N=-2.27319E+49 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.20638E+47 X= 109.706 + F= 0 N= 2.20638E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.32757E+47 X= 109.198 + F= 0 N= 1.32757E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.8857E+36 X= 85.8773 + F= 0 N= 9.8857E+36 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.10189E+25 X=-58.3548 + F= 0 N=-1.10189E+25 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.72673E+12 X= 29.6397 + F= 0 N= 3.72673E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-5.74275E+46 X=-108.36 + F= 0 N=-5.74275E+46 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-7.98557E+19 X=-46.5199 + F= 0 N=-7.98557E+19 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 3.68315E+48 X= 112.521 + F= 0 N= 3.68315E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.64544E+19 X= 45.4151 + F= 0 N= 2.64544E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.15658E+43 X= 101.129 + F= 0 N= 4.15658E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.88492E+27 X= 65.0473 + F= 0 N= 8.88492E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.24015E+20 X= 48.4012 + F= 0 N= 5.24015E+20 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.46516E+52 X= 122.294 + F= 0 N= 6.46516E+52 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1.16674E+24 X=-56.1094 + F= 0 N=-1.16674E+24 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.93369E+52 X=-121.087 + F= 0 N=-1.93369E+52 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.19645E+53 X=-123.517 + F= 0 N=-2.19645E+53 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.25656E+42 X=-97.6301 + F= 0 N=-1.25656E+42 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-3.11789E+27 X=-64.0001 + F= 0 N=-3.11789E+27 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-7.16926E+10 X=-25.6888 + F= 0 N=-7.16926E+10 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.33903E+6 X= 14.8006 + F= 0 N= 1.33903E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.69442E+26 X=-61.0877 + F= 0 N=-1.69442E+26 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-4.36043E+28 X=-66.6381 + F= 0 N=-4.36043E+28 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R=-1.79769E+308 X=-5476.5 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R=-1.79769E+308 X=-21210.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R=-1.79769E+308 X=-28757.2 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R=-1.79769E+308 X=-28732.2 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R=-1.79769E+308 X=-1830.69 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R=-1.79769E+308 X=-28930.6 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R=-1.79769E+308 X=-6014.53 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R=-1.79769E+308 X=-10538.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R=-1.79769E+308 X=-17536.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R=-1.79769E+308 X=-8856.62 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R=-1.79769E+308 X=-5140.12 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R=-1.79769E+308 X=-8595.31 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R=-1.79769E+308 X=-3382.87 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R=-1.79769E+308 X=-5002.07 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R=-1.79769E+308 X=-5800.72 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R=-1.79769E+308 X=-4.2981E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R=-1.79769E+308 X=-7.05453E+8 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R=-1.79769E+308 X=-3.10179E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R=-1.79769E+308 X=-4.86159E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R=-1.79769E+308 X=-8.62908E+8 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R=-1.79769E+308 X=-3.4101E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R=-1.79769E+308 X=-2.26748E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R=-1.79769E+308 X=-2.10587E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R=-1.79769E+308 X=-2.66524E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R=-1.79769E+308 X=-4.87912E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R=-1.79769E+308 X=-3.39941E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R=-1.79769E+308 X=-3.49119E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R=-1.79769E+308 X=-2.86324E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R=-1.79769E+308 X=-3.1518E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SINH_X_N.BAS b/NBS2/F_SINH_X_N.BAS new file mode 100644 index 0000000..3a9505b --- /dev/null +++ b/NBS2/F_SINH_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:33 +REM FILENAME: F_SINH_X_N.BAS +REM SYNTAX: N = SINH( X ) +REM UNIQUEID: F_SINH_X_N +REM FUNCTION: SINH +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = SINH( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1.1752 , 1 +DATA 3 , 0 , -1.1752 , -1 +DATA 4 , 0 , .410752 , .4 +DATA 5 , 0 , -.410752 , -.4 +DATA 6 , 0 , .636654 , .6 +DATA 7 , 0 , -.636654 , -.6 +DATA 8 , 0 , 1.02275E+110 , 254 +DATA 9 , 0 , 2.78012E+110 , 255 +DATA 10 , 0 , 7.55714E+110 , 256 +DATA 11 , 1 , 1.79769E+308 , 32000 +DATA 12 , 0 , -.229189 , -.227229 +DATA 13 , 0 , -.241443 , -.239157 +DATA 14 , 0 , -.215214 , -.213586 +DATA 15 , 0 , .278142 , .274675 +DATA 16 , 0 , .170583 , .169766 +DATA 17 , 0 , .324192 , .318766 +DATA 18 , 0 , 2.06673E-2 , 2.06658E-2 +DATA 19 , 0 , .189371 , .188257 +DATA 20 , 0 , -.281114 , -.277537 +DATA 21 , 0 , -.500102 , -.481303 +DATA 22 , 0 , .449463 , .43556 +DATA 23 , 0 , -.212539 , -.210971 +DATA 24 , 0 , -.471101 , -.455216 +DATA 25 , 0 , -7.33277E+47 , -110.907 +DATA 26 , 0 , 3.75288E+45 , 105.632 +DATA 27 , 0 , -2.27319E+49 , -114.341 +DATA 28 , 0 , 2.20638E+47 , 109.706 +DATA 29 , 0 , 1.32757E+47 , 109.198 +DATA 30 , 0 , 9.8857E+36 , 85.8773 +DATA 31 , 0 , -1.10189E+25 , -58.3548 +DATA 32 , 0 , 3.72673E+12 , 29.6397 +DATA 33 , 0 , -5.74275E+46 , -108.36 +DATA 34 , 0 , -7.98557E+19 , -46.5199 +DATA 35 , 0 , 3.68315E+48 , 112.521 +DATA 36 , 0 , 2.64544E+19 , 45.4151 +DATA 37 , 0 , 4.15658E+43 , 101.129 +DATA 38 , 0 , 8.88492E+27 , 65.0473 +DATA 39 , 0 , 5.24015E+20 , 48.4012 +DATA 40 , 0 , 6.46516E+52 , 122.294 +DATA 41 , 0 , -1.16674E+24 , -56.1094 +DATA 42 , 0 , -1.93369E+52 , -121.087 +DATA 43 , 0 , -2.19645E+53 , -123.517 +DATA 44 , 0 , -1.25656E+42 , -97.6301 +DATA 45 , 0 , -3.11789E+27 , -64.0001 +DATA 46 , 0 , -7.16926E+10 , -25.6888 +DATA 47 , 0 , 1.33903E+6 , 14.8006 +DATA 48 , 0 , -1.69442E+26 , -61.0877 +DATA 49 , 0 , -4.36043E+28 , -66.6381 +DATA 50 , 1 , -1.79769E+308 , -5476.5 +DATA 51 , 1 , -1.79769E+308 , -21210.3 +DATA 52 , 1 , -1.79769E+308 , -28757.2 +DATA 53 , 1 , -1.79769E+308 , -28732.2 +DATA 54 , 1 , 1.79769E+308 , 12730.3 +DATA 55 , 1 , -1.79769E+308 , -1830.69 +DATA 56 , 1 , 1.79769E+308 , 5486.39 +DATA 57 , 1 , 1.79769E+308 , 22405.9 +DATA 58 , 1 , 1.79769E+308 , 30809.8 +DATA 59 , 1 , -1.79769E+308 , -28930.6 +DATA 60 , 1 , -1.79769E+308 , -6014.53 +DATA 61 , 1 , 1.79769E+308 , 17414.6 +DATA 62 , 1 , -1.79769E+308 , -10538.3 +DATA 63 , 1 , -1.79769E+308 , -17536.3 +DATA 64 , 1 , -1.79769E+308 , -8856.62 +DATA 65 , 1 , -1.79769E+308 , -5140.12 +DATA 66 , 1 , -1.79769E+308 , -8595.31 +DATA 67 , 1 , -1.79769E+308 , -3382.87 +DATA 68 , 1 , -1.79769E+308 , -5002.07 +DATA 69 , 1 , -1.79769E+308 , -5800.72 +DATA 70 , 1 , 1.79769E+308 , 29686.4 +DATA 71 , 1 , 1.79769E+308 , 2571. +DATA 72 , 1 , 1.79769E+308 , 31091. +DATA 73 , 1 , 1.79769E+308 , 14819. +DATA 74 , 1 , 1.79769E+308 , 3790.9 +DATA 75 , 1 , -1.79769E+308 , -4.2981E+9 +DATA 76 , 1 , -1.79769E+308 , -7.05453E+8 +DATA 77 , 1 , -1.79769E+308 , -3.10179E+9 +DATA 78 , 1 , -1.79769E+308 , -4.86159E+9 +DATA 79 , 1 , -1.79769E+308 , -8.62908E+8 +DATA 80 , 1 , -1.79769E+308 , -3.4101E+9 +DATA 81 , 1 , 1.79769E+308 , 3.3889E+9 +DATA 82 , 1 , 1.79769E+308 , 2.49826E+9 +DATA 83 , 1 , 1.79769E+308 , 2.3491E+9 +DATA 84 , 1 , 1.79769E+308 , 1.94745E+8 +DATA 85 , 1 , 1.79769E+308 , 2.02475E+9 +DATA 86 , 1 , -1.79769E+308 , -2.26748E+9 +DATA 87 , 1 , -1.79769E+308 , -2.10587E+9 +DATA 88 , 1 , 1.79769E+308 , 4.23585E+9 +DATA 89 , 1 , -1.79769E+308 , -2.66524E+9 +DATA 90 , 1 , 1.79769E+308 , 4.01052E+9 +DATA 91 , 1 , -1.79769E+308 , -4.87912E+9 +DATA 92 , 1 , 1.79769E+308 , 1.77556E+9 +DATA 93 , 1 , 1.79769E+308 , 2.87705E+8 +DATA 94 , 1 , 1.79769E+308 , 1.99977E+8 +DATA 95 , 1 , -1.79769E+308 , -3.39941E+9 +DATA 96 , 1 , -1.79769E+308 , -3.49119E+9 +DATA 97 , 1 , -1.79769E+308 , -2.86324E+9 +DATA 98 , 1 , 1.79769E+308 , 4.20418E+9 +DATA 99 , 1 , -1.79769E+308 , -3.1518E+9 +DATA 100 , 1 , 1.79769E+308 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_SINH_X_N.OUT b/NBS2/F_SINH_X_N.OUT new file mode 100644 index 0000000..071ef5a --- /dev/null +++ b/NBS2/F_SINH_X_N.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.1752 X= 1 + F= 0 N= 1.1752 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.1752 X=-1 + F= 0 N=-1.1752 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .410752 X= .4 + F= 0 N= .410752 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.410752 X=-.4 + F= 0 N=-.410752 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .636654 X= .6 + F= 0 N= .636654 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.636654 X=-.6 + F= 0 N=-.636654 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.02275E+110 X= 254 + F= 0 N= 1.02275E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.78012E+110 X= 255 + F= 0 N= 2.78012E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 7.55714E+110 X= 256 + F= 0 N= 7.55714E+110 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.229189 X=-.227229 + F= 0 N=-.229189 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.241443 X=-.239157 + F= 0 N=-.241443 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.215214 X=-.213586 + F= 0 N=-.215214 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .278142 X= .274675 + F= 0 N= .278142 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .170583 X= .169766 + F= 0 N= .170583 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .324192 X= .318766 + F= 0 N= .324192 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06673E-2 X= 2.06658E-2 + F= 0 N= 2.06673E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .189371 X= .188257 + F= 0 N= .189371 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.281114 X=-.277537 + F= 0 N=-.281114 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.500102 X=-.481303 + F= 0 N=-.500102 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .449463 X= .43556 + F= 0 N= .449463 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.212539 X=-.210971 + F= 0 N=-.212539 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.471101 X=-.455216 + F= 0 N=-.471101 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-7.33277E+47 X=-110.907 + F= 0 N=-7.33277E+47 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 3.75288E+45 X= 105.632 + F= 0 N= 3.75288E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.27319E+49 X=-114.341 + F= 0 N=-2.27319E+49 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.20638E+47 X= 109.706 + F= 0 N= 2.20638E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.32757E+47 X= 109.198 + F= 0 N= 1.32757E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.8857E+36 X= 85.8773 + F= 0 N= 9.8857E+36 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.10189E+25 X=-58.3548 + F= 0 N=-1.10189E+25 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.72673E+12 X= 29.6397 + F= 0 N= 3.72673E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-5.74275E+46 X=-108.36 + F= 0 N=-5.74275E+46 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-7.98557E+19 X=-46.5199 + F= 0 N=-7.98557E+19 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 3.68315E+48 X= 112.521 + F= 0 N= 3.68315E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.64544E+19 X= 45.4151 + F= 0 N= 2.64544E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.15658E+43 X= 101.129 + F= 0 N= 4.15658E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.88492E+27 X= 65.0473 + F= 0 N= 8.88492E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.24015E+20 X= 48.4012 + F= 0 N= 5.24015E+20 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.46516E+52 X= 122.294 + F= 0 N= 6.46516E+52 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1.16674E+24 X=-56.1094 + F= 0 N=-1.16674E+24 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.93369E+52 X=-121.087 + F= 0 N=-1.93369E+52 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.19645E+53 X=-123.517 + F= 0 N=-2.19645E+53 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.25656E+42 X=-97.6301 + F= 0 N=-1.25656E+42 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-3.11789E+27 X=-64.0001 + F= 0 N=-3.11789E+27 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-7.16926E+10 X=-25.6888 + F= 0 N=-7.16926E+10 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.33903E+6 X= 14.8006 + F= 0 N= 1.33903E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.69442E+26 X=-61.0877 + F= 0 N=-1.69442E+26 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-4.36043E+28 X=-66.6381 + F= 0 N=-4.36043E+28 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R=-1.79769E+308 X=-5476.5 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R=-1.79769E+308 X=-21210.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R=-1.79769E+308 X=-28757.2 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R=-1.79769E+308 X=-28732.2 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R=-1.79769E+308 X=-1830.69 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R=-1.79769E+308 X=-28930.6 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R=-1.79769E+308 X=-6014.53 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R=-1.79769E+308 X=-10538.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R=-1.79769E+308 X=-17536.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R=-1.79769E+308 X=-8856.62 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R=-1.79769E+308 X=-5140.12 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R=-1.79769E+308 X=-8595.31 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R=-1.79769E+308 X=-3382.87 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R=-1.79769E+308 X=-5002.07 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R=-1.79769E+308 X=-5800.72 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R=-1.79769E+308 X=-4.2981E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R=-1.79769E+308 X=-7.05453E+8 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R=-1.79769E+308 X=-3.10179E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R=-1.79769E+308 X=-4.86159E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R=-1.79769E+308 X=-8.62908E+8 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R=-1.79769E+308 X=-3.4101E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R=-1.79769E+308 X=-2.26748E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R=-1.79769E+308 X=-2.10587E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R=-1.79769E+308 X=-2.66524E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R=-1.79769E+308 X=-4.87912E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R=-1.79769E+308 X=-3.39941E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R=-1.79769E+308 X=-3.49119E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R=-1.79769E+308 X=-2.86324E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R=-1.79769E+308 X=-3.1518E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SINH_X_N.dif b/NBS2/F_SINH_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_SINH_X_N.run b/NBS2/F_SINH_X_N.run new file mode 100644 index 0000000..46411a7 --- /dev/null +++ b/NBS2/F_SINH_X_N.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.1752 X= 1 + F= 0 N= 1.1752 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.1752 X=-1 + F= 0 N=-1.1752 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .410752 X= .4 + F= 0 N= .410752 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.410752 X=-.4 + F= 0 N=-.410752 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .636654 X= .6 + F= 0 N= .636654 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.636654 X=-.6 + F= 0 N=-.636654 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1.02275E+110 X= 254 + F= 0 N= 1.02275E+110 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 2.78012E+110 X= 255 + F= 0 N= 2.78012E+110 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 7.55714E+110 X= 256 + F= 0 N= 7.55714E+110 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 1.79769E+308 X= 32000 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.229189 X=-.227229 + F= 0 N=-.229189 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.241443 X=-.239157 + F= 0 N=-.241443 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.215214 X=-.213586 + F= 0 N=-.215214 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .278142 X= .274675 + F= 0 N= .278142 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .170583 X= .169766 + F= 0 N= .170583 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .324192 X= .318766 + F= 0 N= .324192 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06673E-2 X= 2.06658E-2 + F= 0 N= 2.06673E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .189371 X= .188257 + F= 0 N= .189371 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.281114 X=-.277537 + F= 0 N=-.281114 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.500102 X=-.481303 + F= 0 N=-.500102 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .449463 X= .43556 + F= 0 N= .449463 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.212539 X=-.210971 + F= 0 N=-.212539 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.471101 X=-.455216 + F= 0 N=-.471101 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-7.33277E+47 X=-110.907 + F= 0 N=-7.33277E+47 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 3.75288E+45 X= 105.632 + F= 0 N= 3.75288E+45 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.27319E+49 X=-114.341 + F= 0 N=-2.27319E+49 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 2.20638E+47 X= 109.706 + F= 0 N= 2.20638E+47 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1.32757E+47 X= 109.198 + F= 0 N= 1.32757E+47 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.8857E+36 X= 85.8773 + F= 0 N= 9.8857E+36 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1.10189E+25 X=-58.3548 + F= 0 N=-1.10189E+25 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 3.72673E+12 X= 29.6397 + F= 0 N= 3.72673E+12 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-5.74275E+46 X=-108.36 + F= 0 N=-5.74275E+46 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-7.98557E+19 X=-46.5199 + F= 0 N=-7.98557E+19 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 3.68315E+48 X= 112.521 + F= 0 N= 3.68315E+48 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 2.64544E+19 X= 45.4151 + F= 0 N= 2.64544E+19 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 4.15658E+43 X= 101.129 + F= 0 N= 4.15658E+43 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.88492E+27 X= 65.0473 + F= 0 N= 8.88492E+27 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 5.24015E+20 X= 48.4012 + F= 0 N= 5.24015E+20 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 6.46516E+52 X= 122.294 + F= 0 N= 6.46516E+52 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1.16674E+24 X=-56.1094 + F= 0 N=-1.16674E+24 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1.93369E+52 X=-121.087 + F= 0 N=-1.93369E+52 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-2.19645E+53 X=-123.517 + F= 0 N=-2.19645E+53 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1.25656E+42 X=-97.6301 + F= 0 N=-1.25656E+42 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-3.11789E+27 X=-64.0001 + F= 0 N=-3.11789E+27 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-7.16926E+10 X=-25.6888 + F= 0 N=-7.16926E+10 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1.33903E+6 X= 14.8006 + F= 0 N= 1.33903E+6 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1.69442E+26 X=-61.0877 + F= 0 N=-1.69442E+26 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-4.36043E+28 X=-66.6381 + F= 0 N=-4.36043E+28 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R=-1.79769E+308 X=-5476.5 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R=-1.79769E+308 X=-21210.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R=-1.79769E+308 X=-28757.2 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R=-1.79769E+308 X=-28732.2 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 1.79769E+308 X= 12730.3 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R=-1.79769E+308 X=-1830.69 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 1.79769E+308 X= 5486.39 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 1.79769E+308 X= 22405.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 1.79769E+308 X= 30809.8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R=-1.79769E+308 X=-28930.6 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R=-1.79769E+308 X=-6014.53 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 1.79769E+308 X= 17414.6 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R=-1.79769E+308 X=-10538.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R=-1.79769E+308 X=-17536.3 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R=-1.79769E+308 X=-8856.62 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R=-1.79769E+308 X=-5140.12 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R=-1.79769E+308 X=-8595.31 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R=-1.79769E+308 X=-3382.87 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R=-1.79769E+308 X=-5002.07 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R=-1.79769E+308 X=-5800.72 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 1.79769E+308 X= 29686.4 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 1.79769E+308 X= 2571 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 1.79769E+308 X= 31091 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 1.79769E+308 X= 14819 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 1.79769E+308 X= 3790.9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R=-1.79769E+308 X=-4.2981E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R=-1.79769E+308 X=-7.05453E+8 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R=-1.79769E+308 X=-3.10179E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R=-1.79769E+308 X=-4.86159E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R=-1.79769E+308 X=-8.62908E+8 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R=-1.79769E+308 X=-3.4101E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 1.79769E+308 X= 3.3889E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 1.79769E+308 X= 2.49826E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 1.79769E+308 X= 2.3491E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 1.79769E+308 X= 1.94745E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 1.79769E+308 X= 2.02475E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R=-1.79769E+308 X=-2.26748E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R=-1.79769E+308 X=-2.10587E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 1.79769E+308 X= 4.23585E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R=-1.79769E+308 X=-2.66524E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 1.79769E+308 X= 4.01052E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R=-1.79769E+308 X=-4.87912E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 1.79769E+308 X= 1.77556E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 1.79769E+308 X= 2.87705E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 1.79769E+308 X= 1.99977E+8 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R=-1.79769E+308 X=-3.39941E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R=-1.79769E+308 X=-3.49119E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R=-1.79769E+308 X=-2.86324E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 1.79769E+308 X= 4.20418E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R=-1.79769E+308 X=-3.1518E+9 + F= 1 N=-1.79769E+308 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 1.79769E+308 X= + 4.60615E+9 + F= 1 N= 1.79769E+308 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SIN_X_N.80 b/NBS2/F_SIN_X_N.80 new file mode 100644 index 0000000..11aa723 --- /dev/null +++ b/NBS2/F_SIN_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .841471 X= 1 + F= 0 N= .841471 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.841471 X=-1 + F= 0 N=-.841471 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .389418 X= .4 + F= 0 N= .389418 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.389418 X=-.4 + F= 0 N=-.389418 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .564642 X= .6 + F= 0 N= .564642 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.564642 X=-.6 + F= 0 N=-.564642 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= .451999 X= 254 + F= 0 N= .451999 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-.506392 X= 255 + F= 0 N=-.506392 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-.999208 X= 256 + F= 0 N=-.999208 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-.259756 X= 32000 + F= 0 N=-.259756 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.225279 X=-.227229 + F= 0 N=-.225279 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.236884 X=-.239157 + F= 0 N=-.236884 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.211966 X=-.213586 + F= 0 N=-.211966 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .271234 X= .274675 + F= 0 N= .271234 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168952 X= .169766 + F= 0 N= .168952 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .313395 X= .318766 + F= 0 N= .313395 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06643E-2 X= 2.06658E-2 + F= 0 N= 2.06643E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .187147 X= .188257 + F= 0 N= .187147 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.273988 X=-.277537 + F= 0 N=-.273988 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.462935 X=-.481303 + F= 0 N=-.462935 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .421918 X= .43556 + F= 0 N= .421918 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.209409 X=-.210971 + F= 0 N=-.209409 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.439656 X=-.455216 + F= 0 N=-.439656 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= .814146 X=-110.907 + F= 0 N= .814146 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-.925423 X= 105.632 + F= 0 N=-.925423 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.946968 X=-114.341 + F= 0 N=-.946968 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .247155 X= 109.706 + F= 0 N= .247155 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .687284 X= 109.198 + F= 0 N= .687284 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-.869554 X= 85.8773 + F= 0 N=-.869554 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.972436 X=-58.3548 + F= 0 N=-.972436 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-.978973 X= 29.6397 + F= 0 N=-.978973 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-.999689 X=-108.36 + F= 0 N=-.999689 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.567931 X=-46.5199 + F= 0 N=-.567931 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-.544955 X= 112.521 + F= 0 N=-.544955 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .990494 X= 45.4151 + F= 0 N= .990494 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .56302 X= 101.129 + F= 0 N= .56302 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .79931 X= 65.0473 + F= 0 N= .79931 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-.957241 X= 48.4012 + F= 0 N=-.957241 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .22614 X= 122.294 + F= 0 N= .22614 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .425277 X=-56.1094 + F= 0 N= .425277 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.990809 X=-121.087 + F= 0 N=-.990809 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= .838697 X=-123.517 + F= 0 N= .838697 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= .238409 X=-97.6301 + F= 0 N= .238409 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.920065 X=-64.0001 + F= 0 N=-.920065 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.527843 X=-25.6888 + F= 0 N=-.527843 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .787883 X= 14.8006 + F= 0 N= .787883 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= .985011 X=-61.0877 + F= 0 N= .985011 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= .616787 X=-66.6381 + F= 0 N= .616787 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= .647276 X=-5476.5 + F= 0 N= .647276 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= .986777 X=-21210.3 + F= 0 N= .986777 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .807057 X=-28757.2 + F= 0 N= .807057 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .721807 X=-28732.2 + F= 0 N= .721807 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .536739 X= 12730.3 + F= 0 N= .536739 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.756874 X=-1830.69 + F= 0 N=-.756874 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .920449 X= 5486.39 + F= 0 N= .920449 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 6.11564E-2 X= 22405.9 + F= 0 N= 6.11564E-2 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-.199499 X= 30809.8 + F= 0 N=-.199499 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.320964 X=-28930.6 + F= 0 N=-.320964 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-.998793 X=-6014.53 + F= 0 N=-.998793 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-.683043 X= 17414.6 + F= 0 N=-.683043 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.985149 X=-10538.3 + F= 0 N=-.985149 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 7.01347E-2 X=-17536.3 + F= 0 N= 7.01347E-2 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= .453162 X=-8856.62 + F= 0 N= .453162 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.456821 X=-5140.12 + F= 0 N=-.456821 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8.73886E-2 X=-8595.31 + F= 0 N= 8.73886E-2 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.585331 X=-3382.87 + F= 0 N=-.585331 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.608759 X=-5002.07 + F= 0 N=-.608759 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.973476 X=-5800.72 + F= 0 N=-.973476 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-.996819 X= 29686.4 + F= 0 N=-.996819 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .923539 X= 2571 + F= 0 N= .923539 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= .974052 X= 31091 + F= 0 N= .974052 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-.107246 X= 14819 + F= 0 N=-.107246 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .842729 X= 3790.9 + F= 0 N= .842729 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .571013 X=-4.2981E+9 + F= 0 N= .571013 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-.420125 X=-7.05453E+8 + F= 0 N=-.420125 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .408592 X=-3.10179E+9 + F= 0 N= .408592 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .974347 X=-4.86159E+9 + F= 0 N= .974347 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= .744018 X=-8.62908E+8 + F= 0 N= .744018 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-.381683 X=-3.4101E+9 + F= 0 N=-.381683 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-.78677 X= 3.3889E+9 + F= 0 N=-.78677 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .723606 X= 2.49826E+9 + F= 0 N= .723606 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-.912251 X= 2.3491E+9 + F= 0 N=-.912251 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= .62558 X= 1.94745E+8 + F= 0 N= .62558 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .158389 X= 2.02475E+9 + F= 0 N= .158389 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-.762398 X=-2.26748E+9 + F= 0 N=-.762398 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-5.60771E-2 X=-2.10587E+9 + F= 0 N=-5.60771E-2 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-.942582 X= 4.23585E+9 + F= 0 N=-.942582 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= .164144 X=-2.66524E+9 + F= 0 N= .164144 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= .733648 X= 4.01052E+9 + F= 0 N= .733648 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .376706 X=-4.87912E+9 + F= 0 N= .376706 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-.99923 X= 1.77556E+9 + F= 0 N=-.99923 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-.57627 X= 2.87705E+8 + F= 0 N=-.57627 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .336893 X= 1.99977E+8 + F= 0 N= .336893 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-.567372 X=-3.39941E+9 + F= 0 N=-.567372 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .989581 X=-3.49119E+9 + F= 0 N= .989581 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-.998595 X=-2.86324E+9 + F= 0 N=-.998595 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-.801884 X= 4.20418E+9 + F= 0 N=-.801884 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= .758508 X=-3.1518E+9 + F= 0 N= .758508 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .696967 X= 4.60615E+9 + F= 0 N= .696967 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SIN_X_N.BAS b/NBS2/F_SIN_X_N.BAS new file mode 100644 index 0000000..86931e3 --- /dev/null +++ b/NBS2/F_SIN_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:33 +REM FILENAME: F_SIN_X_N.BAS +REM SYNTAX: N = SIN( X ) +REM UNIQUEID: F_SIN_X_N +REM FUNCTION: SIN +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = SIN( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , .841471 , 1 +DATA 3 , 0 , -.841471 , -1 +DATA 4 , 0 , .389418 , .4 +DATA 5 , 0 , -.389418 , -.4 +DATA 6 , 0 , .564642 , .6 +DATA 7 , 0 , -.564642 , -.6 +DATA 8 , 0 , .451999 , 254 +DATA 9 , 0 , -.506392 , 255 +DATA 10 , 0 , -.999208 , 256 +DATA 11 , 0 , -.259756 , 32000 +DATA 12 , 0 , -.225279 , -.227229 +DATA 13 , 0 , -.236884 , -.239157 +DATA 14 , 0 , -.211966 , -.213586 +DATA 15 , 0 , .271234 , .274675 +DATA 16 , 0 , .168952 , .169766 +DATA 17 , 0 , .313395 , .318766 +DATA 18 , 0 , 2.06643E-2 , 2.06658E-2 +DATA 19 , 0 , .187147 , .188257 +DATA 20 , 0 , -.273988 , -.277537 +DATA 21 , 0 , -.462935 , -.481303 +DATA 22 , 0 , .421918 , .43556 +DATA 23 , 0 , -.209409 , -.210971 +DATA 24 , 0 , -.439656 , -.455216 +DATA 25 , 0 , .814146 , -110.907 +DATA 26 , 0 , -.925423 , 105.632 +DATA 27 , 0 , -.946968 , -114.341 +DATA 28 , 0 , .247155 , 109.706 +DATA 29 , 0 , .687284 , 109.198 +DATA 30 , 0 , -.869554 , 85.8773 +DATA 31 , 0 , -.972436 , -58.3548 +DATA 32 , 0 , -.978973 , 29.6397 +DATA 33 , 0 , -.999689 , -108.36 +DATA 34 , 0 , -.567931 , -46.5199 +DATA 35 , 0 , -.544955 , 112.521 +DATA 36 , 0 , .990494 , 45.4151 +DATA 37 , 0 , .56302 , 101.129 +DATA 38 , 0 , .79931 , 65.0473 +DATA 39 , 0 , -.957241 , 48.4012 +DATA 40 , 0 , .22614 , 122.294 +DATA 41 , 0 , .425277 , -56.1094 +DATA 42 , 0 , -.990809 , -121.087 +DATA 43 , 0 , .838697 , -123.517 +DATA 44 , 0 , .238409 , -97.6301 +DATA 45 , 0 , -.920065 , -64.0001 +DATA 46 , 0 , -.527843 , -25.6888 +DATA 47 , 0 , .787883 , 14.8006 +DATA 48 , 0 , .985011 , -61.0877 +DATA 49 , 0 , .616787 , -66.6381 +DATA 50 , 0 , .647276 , -5476.5 +DATA 51 , 0 , .986777 , -21210.3 +DATA 52 , 0 , .807057 , -28757.2 +DATA 53 , 0 , .721807 , -28732.2 +DATA 54 , 0 , .536739 , 12730.3 +DATA 55 , 0 , -.756874 , -1830.69 +DATA 56 , 0 , .920449 , 5486.39 +DATA 57 , 0 , 6.11564E-2 , 22405.9 +DATA 58 , 0 , -.199499 , 30809.8 +DATA 59 , 0 , -.320964 , -28930.6 +DATA 60 , 0 , -.998793 , -6014.53 +DATA 61 , 0 , -.683043 , 17414.6 +DATA 62 , 0 , -.985149 , -10538.3 +DATA 63 , 0 , 7.01347E-2 , -17536.3 +DATA 64 , 0 , .453162 , -8856.62 +DATA 65 , 0 , -.456821 , -5140.12 +DATA 66 , 0 , 8.73886E-2 , -8595.31 +DATA 67 , 0 , -.585331 , -3382.87 +DATA 68 , 0 , -.608759 , -5002.07 +DATA 69 , 0 , -.973476 , -5800.72 +DATA 70 , 0 , -.996819 , 29686.4 +DATA 71 , 0 , .923539 , 2571. +DATA 72 , 0 , .974052 , 31091. +DATA 73 , 0 , -.107246 , 14819. +DATA 74 , 0 , .842729 , 3790.9 +DATA 75 , 0 , .571013 , -4.2981E+9 +DATA 76 , 0 , -.420125 , -7.05453E+8 +DATA 77 , 0 , .408592 , -3.10179E+9 +DATA 78 , 0 , .974347 , -4.86159E+9 +DATA 79 , 0 , .744018 , -8.62908E+8 +DATA 80 , 0 , -.381683 , -3.4101E+9 +DATA 81 , 0 , -.78677 , 3.3889E+9 +DATA 82 , 0 , .723606 , 2.49826E+9 +DATA 83 , 0 , -.912251 , 2.3491E+9 +DATA 84 , 0 , .62558 , 1.94745E+8 +DATA 85 , 0 , .158389 , 2.02475E+9 +DATA 86 , 0 , -.762398 , -2.26748E+9 +DATA 87 , 0 , -5.60771E-2 , -2.10587E+9 +DATA 88 , 0 , -.942582 , 4.23585E+9 +DATA 89 , 0 , .164144 , -2.66524E+9 +DATA 90 , 0 , .733648 , 4.01052E+9 +DATA 91 , 0 , .376706 , -4.87912E+9 +DATA 92 , 0 , -.99923 , 1.77556E+9 +DATA 93 , 0 , -.57627 , 2.87705E+8 +DATA 94 , 0 , .336893 , 1.99977E+8 +DATA 95 , 0 , -.567372 , -3.39941E+9 +DATA 96 , 0 , .989581 , -3.49119E+9 +DATA 97 , 0 , -.998595 , -2.86324E+9 +DATA 98 , 0 , -.801884 , 4.20418E+9 +DATA 99 , 0 , .758508 , -3.1518E+9 +DATA 100 , 0 , .696967 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_SIN_X_N.OUT b/NBS2/F_SIN_X_N.OUT new file mode 100644 index 0000000..891dfc7 --- /dev/null +++ b/NBS2/F_SIN_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .841471 X= 1 + F= 0 N= .841471 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.841471 X=-1 + F= 0 N=-.841471 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .389418 X= .4 + F= 0 N= .389418 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.389418 X=-.4 + F= 0 N=-.389418 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .564642 X= .6 + F= 0 N= .564642 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.564642 X=-.6 + F= 0 N=-.564642 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= .451999 X= 254 + F= 0 N= .451999 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-.506392 X= 255 + F= 0 N=-.506392 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-.999208 X= 256 + F= 0 N=-.999208 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-.259756 X= 32000 + F= 0 N=-.259756 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.225279 X=-.227229 + F= 0 N=-.225279 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.236884 X=-.239157 + F= 0 N=-.236884 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.211966 X=-.213586 + F= 0 N=-.211966 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .271234 X= .274675 + F= 0 N= .271234 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168952 X= .169766 + F= 0 N= .168952 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .313395 X= .318766 + F= 0 N= .313395 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06643E-2 X= 2.06658E-2 + F= 0 N= 2.06643E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .187147 X= .188257 + F= 0 N= .187147 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.273988 X=-.277537 + F= 0 N=-.273988 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.462935 X=-.481303 + F= 0 N=-.462935 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .421918 X= .43556 + F= 0 N= .421918 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.209409 X=-.210971 + F= 0 N=-.209409 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.439656 X=-.455216 + F= 0 N=-.439656 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= .814146 X=-110.907 + F= 0 N= .814146 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-.925423 X= 105.632 + F= 0 N=-.925423 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.946968 X=-114.341 + F= 0 N=-.946968 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .247155 X= 109.706 + F= 0 N= .247155 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .687284 X= 109.198 + F= 0 N= .687284 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-.869554 X= 85.8773 + F= 0 N=-.869554 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.972436 X=-58.3548 + F= 0 N=-.972436 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-.978973 X= 29.6397 + F= 0 N=-.978973 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-.999689 X=-108.36 + F= 0 N=-.999689 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.567931 X=-46.5199 + F= 0 N=-.567931 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-.544955 X= 112.521 + F= 0 N=-.544955 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .990494 X= 45.4151 + F= 0 N= .990494 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .56302 X= 101.129 + F= 0 N= .56302 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .79931 X= 65.0473 + F= 0 N= .79931 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-.957241 X= 48.4012 + F= 0 N=-.957241 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .22614 X= 122.294 + F= 0 N= .22614 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .425277 X=-56.1094 + F= 0 N= .425277 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.990809 X=-121.087 + F= 0 N=-.990809 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= .838697 X=-123.517 + F= 0 N= .838697 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= .238409 X=-97.6301 + F= 0 N= .238409 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.920065 X=-64.0001 + F= 0 N=-.920065 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.527843 X=-25.6888 + F= 0 N=-.527843 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .787883 X= 14.8006 + F= 0 N= .787883 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= .985011 X=-61.0877 + F= 0 N= .985011 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= .616787 X=-66.6381 + F= 0 N= .616787 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= .647276 X=-5476.5 + F= 0 N= .647276 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= .986777 X=-21210.3 + F= 0 N= .986777 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .807057 X=-28757.2 + F= 0 N= .807057 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .721807 X=-28732.2 + F= 0 N= .721807 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .536739 X= 12730.3 + F= 0 N= .536739 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.756874 X=-1830.69 + F= 0 N=-.756874 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .920449 X= 5486.39 + F= 0 N= .920449 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 6.11564E-2 X= 22405.9 + F= 0 N= 6.11564E-2 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-.199499 X= 30809.8 + F= 0 N=-.199499 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.320964 X=-28930.6 + F= 0 N=-.320964 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-.998793 X=-6014.53 + F= 0 N=-.998793 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-.683043 X= 17414.6 + F= 0 N=-.683043 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.985149 X=-10538.3 + F= 0 N=-.985149 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 7.01347E-2 X=-17536.3 + F= 0 N= 7.01347E-2 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= .453162 X=-8856.62 + F= 0 N= .453162 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.456821 X=-5140.12 + F= 0 N=-.456821 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8.73886E-2 X=-8595.31 + F= 0 N= 8.73886E-2 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.585331 X=-3382.87 + F= 0 N=-.585331 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.608759 X=-5002.07 + F= 0 N=-.608759 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.973476 X=-5800.72 + F= 0 N=-.973476 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-.996819 X= 29686.4 + F= 0 N=-.996819 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .923539 X= 2571 + F= 0 N= .923539 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= .974052 X= 31091 + F= 0 N= .974052 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-.107246 X= 14819 + F= 0 N=-.107246 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .842729 X= 3790.9 + F= 0 N= .842729 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .571013 X=-4.2981E+9 + F= 0 N= .571013 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-.420125 X=-7.05453E+8 + F= 0 N=-.420125 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .408592 X=-3.10179E+9 + F= 0 N= .408592 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .974347 X=-4.86159E+9 + F= 0 N= .974347 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= .744018 X=-8.62908E+8 + F= 0 N= .744018 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-.381683 X=-3.4101E+9 + F= 0 N=-.381683 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-.78677 X= 3.3889E+9 + F= 0 N=-.78677 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .723606 X= 2.49826E+9 + F= 0 N= .723606 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-.912251 X= 2.3491E+9 + F= 0 N=-.912251 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= .62558 X= 1.94745E+8 + F= 0 N= .62558 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .158389 X= 2.02475E+9 + F= 0 N= .158389 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-.762398 X=-2.26748E+9 + F= 0 N=-.762398 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-5.60771E-2 X=-2.10587E+9 + F= 0 N=-5.60771E-2 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-.942582 X= 4.23585E+9 + F= 0 N=-.942582 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= .164144 X=-2.66524E+9 + F= 0 N= .164144 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= .733648 X= 4.01052E+9 + F= 0 N= .733648 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .376706 X=-4.87912E+9 + F= 0 N= .376706 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-.99923 X= 1.77556E+9 + F= 0 N=-.99923 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-.57627 X= 2.87705E+8 + F= 0 N=-.57627 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .336893 X= 1.99977E+8 + F= 0 N= .336893 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-.567372 X=-3.39941E+9 + F= 0 N=-.567372 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .989581 X=-3.49119E+9 + F= 0 N= .989581 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-.998595 X=-2.86324E+9 + F= 0 N=-.998595 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-.801884 X= 4.20418E+9 + F= 0 N=-.801884 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= .758508 X=-3.1518E+9 + F= 0 N= .758508 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .696967 X= 4.60615E+9 + F= 0 N= .696967 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SIN_X_N.dif b/NBS2/F_SIN_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_SIN_X_N.run b/NBS2/F_SIN_X_N.run new file mode 100644 index 0000000..11aa723 --- /dev/null +++ b/NBS2/F_SIN_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .841471 X= 1 + F= 0 N= .841471 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.841471 X=-1 + F= 0 N=-.841471 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .389418 X= .4 + F= 0 N= .389418 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.389418 X=-.4 + F= 0 N=-.389418 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .564642 X= .6 + F= 0 N= .564642 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.564642 X=-.6 + F= 0 N=-.564642 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= .451999 X= 254 + F= 0 N= .451999 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R=-.506392 X= 255 + F= 0 N=-.506392 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R=-.999208 X= 256 + F= 0 N=-.999208 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-.259756 X= 32000 + F= 0 N=-.259756 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.225279 X=-.227229 + F= 0 N=-.225279 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.236884 X=-.239157 + F= 0 N=-.236884 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.211966 X=-.213586 + F= 0 N=-.211966 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .271234 X= .274675 + F= 0 N= .271234 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168952 X= .169766 + F= 0 N= .168952 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .313395 X= .318766 + F= 0 N= .313395 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06643E-2 X= 2.06658E-2 + F= 0 N= 2.06643E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .187147 X= .188257 + F= 0 N= .187147 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.273988 X=-.277537 + F= 0 N=-.273988 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.462935 X=-.481303 + F= 0 N=-.462935 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .421918 X= .43556 + F= 0 N= .421918 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.209409 X=-.210971 + F= 0 N=-.209409 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.439656 X=-.455216 + F= 0 N=-.439656 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= .814146 X=-110.907 + F= 0 N= .814146 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-.925423 X= 105.632 + F= 0 N=-.925423 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-.946968 X=-114.341 + F= 0 N=-.946968 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= .247155 X= 109.706 + F= 0 N= .247155 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= .687284 X= 109.198 + F= 0 N= .687284 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R=-.869554 X= 85.8773 + F= 0 N=-.869554 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-.972436 X=-58.3548 + F= 0 N=-.972436 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R=-.978973 X= 29.6397 + F= 0 N=-.978973 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-.999689 X=-108.36 + F= 0 N=-.999689 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-.567931 X=-46.5199 + F= 0 N=-.567931 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-.544955 X= 112.521 + F= 0 N=-.544955 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= .990494 X= 45.4151 + F= 0 N= .990494 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .56302 X= 101.129 + F= 0 N= .56302 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= .79931 X= 65.0473 + F= 0 N= .79931 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R=-.957241 X= 48.4012 + F= 0 N=-.957241 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= .22614 X= 122.294 + F= 0 N= .22614 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .425277 X=-56.1094 + F= 0 N= .425277 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-.990809 X=-121.087 + F= 0 N=-.990809 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R= .838697 X=-123.517 + F= 0 N= .838697 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R= .238409 X=-97.6301 + F= 0 N= .238409 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-.920065 X=-64.0001 + F= 0 N=-.920065 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.527843 X=-25.6888 + F= 0 N=-.527843 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= .787883 X= 14.8006 + F= 0 N= .787883 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R= .985011 X=-61.0877 + F= 0 N= .985011 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= .616787 X=-66.6381 + F= 0 N= .616787 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R= .647276 X=-5476.5 + F= 0 N= .647276 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R= .986777 X=-21210.3 + F= 0 N= .986777 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= .807057 X=-28757.2 + F= 0 N= .807057 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= .721807 X=-28732.2 + F= 0 N= .721807 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .536739 X= 12730.3 + F= 0 N= .536739 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-.756874 X=-1830.69 + F= 0 N=-.756874 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= .920449 X= 5486.39 + F= 0 N= .920449 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 6.11564E-2 X= 22405.9 + F= 0 N= 6.11564E-2 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R=-.199499 X= 30809.8 + F= 0 N=-.199499 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-.320964 X=-28930.6 + F= 0 N=-.320964 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-.998793 X=-6014.53 + F= 0 N=-.998793 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R=-.683043 X= 17414.6 + F= 0 N=-.683043 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-.985149 X=-10538.3 + F= 0 N=-.985149 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 7.01347E-2 X=-17536.3 + F= 0 N= 7.01347E-2 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R= .453162 X=-8856.62 + F= 0 N= .453162 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.456821 X=-5140.12 + F= 0 N=-.456821 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8.73886E-2 X=-8595.31 + F= 0 N= 8.73886E-2 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-.585331 X=-3382.87 + F= 0 N=-.585331 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.608759 X=-5002.07 + F= 0 N=-.608759 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-.973476 X=-5800.72 + F= 0 N=-.973476 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R=-.996819 X= 29686.4 + F= 0 N=-.996819 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= .923539 X= 2571 + F= 0 N= .923539 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= .974052 X= 31091 + F= 0 N= .974052 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R=-.107246 X= 14819 + F= 0 N=-.107246 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= .842729 X= 3790.9 + F= 0 N= .842729 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .571013 X=-4.2981E+9 + F= 0 N= .571013 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-.420125 X=-7.05453E+8 + F= 0 N=-.420125 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .408592 X=-3.10179E+9 + F= 0 N= .408592 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= .974347 X=-4.86159E+9 + F= 0 N= .974347 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R= .744018 X=-8.62908E+8 + F= 0 N= .744018 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-.381683 X=-3.4101E+9 + F= 0 N=-.381683 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R=-.78677 X= 3.3889E+9 + F= 0 N=-.78677 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= .723606 X= 2.49826E+9 + F= 0 N= .723606 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-.912251 X= 2.3491E+9 + F= 0 N=-.912251 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= .62558 X= 1.94745E+8 + F= 0 N= .62558 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .158389 X= 2.02475E+9 + F= 0 N= .158389 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-.762398 X=-2.26748E+9 + F= 0 N=-.762398 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-5.60771E-2 X=-2.10587E+9 + F= 0 N=-5.60771E-2 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R=-.942582 X= 4.23585E+9 + F= 0 N=-.942582 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= .164144 X=-2.66524E+9 + F= 0 N= .164144 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= .733648 X= 4.01052E+9 + F= 0 N= .733648 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .376706 X=-4.87912E+9 + F= 0 N= .376706 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-.99923 X= 1.77556E+9 + F= 0 N=-.99923 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-.57627 X= 2.87705E+8 + F= 0 N=-.57627 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .336893 X= 1.99977E+8 + F= 0 N= .336893 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-.567372 X=-3.39941E+9 + F= 0 N=-.567372 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= .989581 X=-3.49119E+9 + F= 0 N= .989581 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-.998595 X=-2.86324E+9 + F= 0 N=-.998595 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R=-.801884 X= 4.20418E+9 + F= 0 N=-.801884 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R= .758508 X=-3.1518E+9 + F= 0 N= .758508 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .696967 X= 4.60615E+9 + F= 0 N= .696967 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SPACE_X_S.80 b/NBS2/F_SPACE_X_S.80 new file mode 100644 index 0000000..01e7c2c --- /dev/null +++ b/NBS2/F_SPACE_X_S.80 @@ -0,0 +1,522 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ + + + + ] X= 254 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ + + + + ] X= 255 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ + + ] X= 122.294 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 3790.9 + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SPACE_X_S.BAS b/NBS2/F_SPACE_X_S.BAS new file mode 100644 index 0000000..ce35cd7 --- /dev/null +++ b/NBS2/F_SPACE_X_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:33 +REM FILENAME: F_SPACE_X_S.BAS +REM SYNTAX: S$ = SPACE$( X ) +REM UNIQUEID: F_SPACE_X_S +REM FUNCTION: SPACE$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = SPACE$( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", 0 +DATA 2 , 0 , " ", 1 +DATA 3 , 1 , "", -1 +DATA 4 , 0 , "", .4 +DATA 5 , 0 , "", -.4 +DATA 6 , 0 , " ", .6 +DATA 7 , 1 , "", -.6 +DATA 8 , 0 , " ", 254 +DATA 9 , 0 , " ", 255 +DATA 10 , 0 , " ", 256 +DATA 11 , 1 , "", 32000 +DATA 12 , 0 , "", -.227229 +DATA 13 , 0 , "", -.239157 +DATA 14 , 0 , "", -.213586 +DATA 15 , 0 , "", .274675 +DATA 16 , 0 , "", .169766 +DATA 17 , 0 , "", .318766 +DATA 18 , 0 , "", 2.06658E-2 +DATA 19 , 0 , "", .188257 +DATA 20 , 0 , "", -.277537 +DATA 21 , 0 , "", -.481303 +DATA 22 , 0 , "", .43556 +DATA 23 , 0 , "", -.210971 +DATA 24 , 0 , "", -.455216 +DATA 25 , 1 , "", -110.907 +DATA 26 , 0 , " ", 105.632 +DATA 27 , 1 , "", -114.341 +DATA 28 , 0 , " ", 109.706 +DATA 29 , 0 , " ", 109.198 +DATA 30 , 0 , " ", 85.8773 +DATA 31 , 1 , "", -58.3548 +DATA 32 , 0 , " ", 29.6397 +DATA 33 , 1 , "", -108.36 +DATA 34 , 1 , "", -46.5199 +DATA 35 , 0 , " ", 112.521 +DATA 36 , 0 , " ", 45.4151 +DATA 37 , 0 , " ", 101.129 +DATA 38 , 0 , " ", 65.0473 +DATA 39 , 0 , " ", 48.4012 +DATA 40 , 0 , " ", 122.294 +DATA 41 , 1 , "", -56.1094 +DATA 42 , 1 , "", -121.087 +DATA 43 , 1 , "", -123.517 +DATA 44 , 1 , "", -97.6301 +DATA 45 , 1 , "", -64.0001 +DATA 46 , 1 , "", -25.6888 +DATA 47 , 0 , " ", 14.8006 +DATA 48 , 1 , "", -61.0877 +DATA 49 , 1 , "", -66.6381 +DATA 50 , 1 , "", -5476.5 +DATA 51 , 1 , "", -21210.3 +DATA 52 , 1 , "", -28757.2 +DATA 53 , 1 , "", -28732.2 +DATA 54 , 1 , "", 12730.3 +DATA 55 , 1 , "", -1830.69 +DATA 56 , 1 , "", 5486.39 +DATA 57 , 1 , "", 22405.9 +DATA 58 , 1 , "", 30809.8 +DATA 59 , 1 , "", -28930.6 +DATA 60 , 1 , "", -6014.53 +DATA 61 , 1 , "", 17414.6 +DATA 62 , 1 , "", -10538.3 +DATA 63 , 1 , "", -17536.3 +DATA 64 , 1 , "", -8856.62 +DATA 65 , 1 , "", -5140.12 +DATA 66 , 1 , "", -8595.31 +DATA 67 , 1 , "", -3382.87 +DATA 68 , 1 , "", -5002.07 +DATA 69 , 1 , "", -5800.72 +DATA 70 , 1 , "", 29686.4 +DATA 71 , 0 , " ", 2571. +DATA 72 , 1 , "", 31091. +DATA 73 , 1 , "", 14819. +DATA 74 , 0 , " ", 3790.9 +DATA 75 , 1 , "", -4.2981E+9 +DATA 76 , 1 , "", -7.05453E+8 +DATA 77 , 1 , "", -3.10179E+9 +DATA 78 , 1 , "", -4.86159E+9 +DATA 79 , 1 , "", -8.62908E+8 +DATA 80 , 1 , "", -3.4101E+9 +DATA 81 , 1 , "", 3.3889E+9 +DATA 82 , 1 , "", 2.49826E+9 +DATA 83 , 1 , "", 2.3491E+9 +DATA 84 , 1 , "", 1.94745E+8 +DATA 85 , 1 , "", 2.02475E+9 +DATA 86 , 1 , "", -2.26748E+9 +DATA 87 , 1 , "", -2.10587E+9 +DATA 88 , 1 , "", 4.23585E+9 +DATA 89 , 1 , "", -2.66524E+9 +DATA 90 , 1 , "", 4.01052E+9 +DATA 91 , 1 , "", -4.87912E+9 +DATA 92 , 1 , "", 1.77556E+9 +DATA 93 , 1 , "", 2.87705E+8 +DATA 94 , 1 , "", 1.99977E+8 +DATA 95 , 1 , "", -3.39941E+9 +DATA 96 , 1 , "", -3.49119E+9 +DATA 97 , 1 , "", -2.86324E+9 +DATA 98 , 1 , "", 4.20418E+9 +DATA 99 , 1 , "", -3.1518E+9 +DATA 100 , 1 , "", 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_SPACE_X_S.OUT b/NBS2/F_SPACE_X_S.OUT new file mode 100644 index 0000000..8a5ca87 --- /dev/null +++ b/NBS2/F_SPACE_X_S.OUT @@ -0,0 +1,522 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ + + + + ] X= 254 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ + + + + ] X= 255 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ + + ] X= 122.294 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 3790.9 + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SPACE_X_S.dif b/NBS2/F_SPACE_X_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_SPACE_X_S.run b/NBS2/F_SPACE_X_S.run new file mode 100644 index 0000000..01e7c2c --- /dev/null +++ b/NBS2/F_SPACE_X_S.run @@ -0,0 +1,522 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ + + + + ] X= 254 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ + + + + ] X= 255 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ + + ] X= 122.294 + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 3790.9 + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SQR_X_N.80 b/NBS2/F_SQR_X_N.80 new file mode 100644 index 0000000..1c74901 --- /dev/null +++ b/NBS2/F_SQR_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .632456 X= .4 + F= 0 N= .632456 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .774597 X= .6 + F= 0 N= .774597 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 15.9374 X= 254 + F= 0 N= 15.9374 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 15.9687 X= 255 + F= 0 N= 15.9687 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 16 X= 256 + F= 0 N= 16 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 178.885 X= 32000 + F= 0 N= 178.885 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .524094 X= .274675 + F= 0 N= .524094 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .412027 X= .169766 + F= 0 N= .412027 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .564594 X= .318766 + F= 0 N= .564594 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .143756 X= 2.06658E-2 + F= 0 N= .143756 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .433886 X= .188257 + F= 0 N= .433886 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .65997 X= .43556 + F= 0 N= .65997 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 10.2777 X= 105.632 + F= 0 N= 10.2777 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 10.4741 X= 109.706 + F= 0 N= 10.4741 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 10.4498 X= 109.198 + F= 0 N= 10.4498 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.267 X= 85.8773 + F= 0 N= 9.267 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.44424 X= 29.6397 + F= 0 N= 5.44424 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 10.6076 X= 112.521 + F= 0 N= 10.6076 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 6.73907 X= 45.4151 + F= 0 N= 6.73907 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 10.0563 X= 101.129 + F= 0 N= 10.0563 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.06519 X= 65.0473 + F= 0 N= 8.06519 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 6.9571 X= 48.4012 + F= 0 N= 6.9571 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 11.0587 X= 122.294 + F= 0 N= 11.0587 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 3.84715 X= 14.8006 + F= 0 N= 3.84715 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 112.829 X= 12730.3 + F= 0 N= 112.829 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 74.0702 X= 5486.39 + F= 0 N= 74.0702 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 149.686 X= 22405.9 + F= 0 N= 149.686 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 175.527 X= 30809.8 + F= 0 N= 175.527 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 131.964 X= 17414.6 + F= 0 N= 131.964 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 172.297 X= 29686.4 + F= 0 N= 172.297 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 50.705 X= 2571 + F= 0 N= 50.705 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 176.326 X= 31091 + F= 0 N= 176.326 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 121.733 X= 14819 + F= 0 N= 121.733 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 61.5703 X= 3790.9 + F= 0 N= 61.5703 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 58214.3 X= 3.3889E+9 + F= 0 N= 58214.3 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 49982.6 X= 2.49826E+9 + F= 0 N= 49982.6 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 48467.5 X= 2.3491E+9 + F= 0 N= 48467.5 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 13955.1 X= 1.94745E+8 + F= 0 N= 13955.1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 44997.2 X= 2.02475E+9 + F= 0 N= 44997.2 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 65083.4 X= 4.23585E+9 + F= 0 N= 65083.4 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 63328.7 X= 4.01052E+9 + F= 0 N= 63328.7 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 42137.4 X= 1.77556E+9 + F= 0 N= 42137.4 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 16961.9 X= 2.87705E+8 + F= 0 N= 16961.9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 14141.3 X= 1.99977E+8 + F= 0 N= 14141.3 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 64839.6 X= 4.20418E+9 + F= 0 N= 64839.6 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 67868.6 X= 4.60615E+9 + F= 0 N= 67868.6 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SQR_X_N.BAS b/NBS2/F_SQR_X_N.BAS new file mode 100644 index 0000000..d100c5a --- /dev/null +++ b/NBS2/F_SQR_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:33 +REM FILENAME: F_SQR_X_N.BAS +REM SYNTAX: N = SQR( X ) +REM UNIQUEID: F_SQR_X_N +REM FUNCTION: SQR +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = SQR( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 +DATA 3 , 1 , 0 , -1 +DATA 4 , 0 , .632456 , .4 +DATA 5 , 1 , 0 , -.4 +DATA 6 , 0 , .774597 , .6 +DATA 7 , 1 , 0 , -.6 +DATA 8 , 0 , 15.9374 , 254 +DATA 9 , 0 , 15.9687 , 255 +DATA 10 , 0 , 16 , 256 +DATA 11 , 0 , 178.885 , 32000 +DATA 12 , 1 , 0 , -.227229 +DATA 13 , 1 , 0 , -.239157 +DATA 14 , 1 , 0 , -.213586 +DATA 15 , 0 , .524094 , .274675 +DATA 16 , 0 , .412027 , .169766 +DATA 17 , 0 , .564594 , .318766 +DATA 18 , 0 , .143756 , 2.06658E-2 +DATA 19 , 0 , .433886 , .188257 +DATA 20 , 1 , 0 , -.277537 +DATA 21 , 1 , 0 , -.481303 +DATA 22 , 0 , .65997 , .43556 +DATA 23 , 1 , 0 , -.210971 +DATA 24 , 1 , 0 , -.455216 +DATA 25 , 1 , 0 , -110.907 +DATA 26 , 0 , 10.2777 , 105.632 +DATA 27 , 1 , 0 , -114.341 +DATA 28 , 0 , 10.4741 , 109.706 +DATA 29 , 0 , 10.4498 , 109.198 +DATA 30 , 0 , 9.267 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 +DATA 32 , 0 , 5.44424 , 29.6397 +DATA 33 , 1 , 0 , -108.36 +DATA 34 , 1 , 0 , -46.5199 +DATA 35 , 0 , 10.6076 , 112.521 +DATA 36 , 0 , 6.73907 , 45.4151 +DATA 37 , 0 , 10.0563 , 101.129 +DATA 38 , 0 , 8.06519 , 65.0473 +DATA 39 , 0 , 6.9571 , 48.4012 +DATA 40 , 0 , 11.0587 , 122.294 +DATA 41 , 1 , 0 , -56.1094 +DATA 42 , 1 , 0 , -121.087 +DATA 43 , 1 , 0 , -123.517 +DATA 44 , 1 , 0 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 +DATA 46 , 1 , 0 , -25.6888 +DATA 47 , 0 , 3.84715 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 +DATA 54 , 0 , 112.829 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 +DATA 56 , 0 , 74.0702 , 5486.39 +DATA 57 , 0 , 149.686 , 22405.9 +DATA 58 , 0 , 175.527 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 +DATA 61 , 0 , 131.964 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 +DATA 70 , 0 , 172.297 , 29686.4 +DATA 71 , 0 , 50.705 , 2571. +DATA 72 , 0 , 176.326 , 31091. +DATA 73 , 0 , 121.733 , 14819. +DATA 74 , 0 , 61.5703 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 +DATA 81 , 0 , 58214.3 , 3.3889E+9 +DATA 82 , 0 , 49982.6 , 2.49826E+9 +DATA 83 , 0 , 48467.5 , 2.3491E+9 +DATA 84 , 0 , 13955.1 , 1.94745E+8 +DATA 85 , 0 , 44997.2 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 +DATA 88 , 0 , 65083.4 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 +DATA 90 , 0 , 63328.7 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 +DATA 92 , 0 , 42137.4 , 1.77556E+9 +DATA 93 , 0 , 16961.9 , 2.87705E+8 +DATA 94 , 0 , 14141.3 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 +DATA 98 , 0 , 64839.6 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 +DATA 100 , 0 , 67868.6 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_SQR_X_N.OUT b/NBS2/F_SQR_X_N.OUT new file mode 100644 index 0000000..cc49da5 --- /dev/null +++ b/NBS2/F_SQR_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .632456 X= .4 + F= 0 N= .632456 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .774597 X= .6 + F= 0 N= .774597 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 15.9374 X= 254 + F= 0 N= 15.9374 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 15.9687 X= 255 + F= 0 N= 15.9687 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 16 X= 256 + F= 0 N= 16 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 178.885 X= 32000 + F= 0 N= 178.885 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .524094 X= .274675 + F= 0 N= .524094 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .412027 X= .169766 + F= 0 N= .412027 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .564594 X= .318766 + F= 0 N= .564594 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .143756 X= 2.06658E-2 + F= 0 N= .143756 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .433886 X= .188257 + F= 0 N= .433886 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .65997 X= .43556 + F= 0 N= .65997 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 10.2777 X= 105.632 + F= 0 N= 10.2777 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 10.4741 X= 109.706 + F= 0 N= 10.4741 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 10.4498 X= 109.198 + F= 0 N= 10.4498 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.267 X= 85.8773 + F= 0 N= 9.267 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.44424 X= 29.6397 + F= 0 N= 5.44424 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 10.6076 X= 112.521 + F= 0 N= 10.6076 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 6.73907 X= 45.4151 + F= 0 N= 6.73907 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 10.0563 X= 101.129 + F= 0 N= 10.0563 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.06519 X= 65.0473 + F= 0 N= 8.06519 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 6.9571 X= 48.4012 + F= 0 N= 6.9571 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 11.0587 X= 122.294 + F= 0 N= 11.0587 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 3.84715 X= 14.8006 + F= 0 N= 3.84715 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 112.829 X= 12730.3 + F= 0 N= 112.829 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 74.0702 X= 5486.39 + F= 0 N= 74.0702 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 149.686 X= 22405.9 + F= 0 N= 149.686 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 175.527 X= 30809.8 + F= 0 N= 175.527 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 131.964 X= 17414.6 + F= 0 N= 131.964 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 172.297 X= 29686.4 + F= 0 N= 172.297 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 50.705 X= 2571 + F= 0 N= 50.705 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 176.326 X= 31091 + F= 0 N= 176.326 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 121.733 X= 14819 + F= 0 N= 121.733 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 61.5703 X= 3790.9 + F= 0 N= 61.5703 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 58214.3 X= 3.3889E+9 + F= 0 N= 58214.3 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 49982.6 X= 2.49826E+9 + F= 0 N= 49982.6 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 48467.5 X= 2.3491E+9 + F= 0 N= 48467.5 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 13955.1 X= 1.94745E+8 + F= 0 N= 13955.1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 44997.2 X= 2.02475E+9 + F= 0 N= 44997.2 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 65083.4 X= 4.23585E+9 + F= 0 N= 65083.4 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 63328.7 X= 4.01052E+9 + F= 0 N= 63328.7 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 42137.4 X= 1.77556E+9 + F= 0 N= 42137.4 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 16961.9 X= 2.87705E+8 + F= 0 N= 16961.9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 14141.3 X= 1.99977E+8 + F= 0 N= 14141.3 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 64839.6 X= 4.20418E+9 + F= 0 N= 64839.6 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 67868.6 X= 4.60615E+9 + F= 0 N= 67868.6 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_SQR_X_N.dif b/NBS2/F_SQR_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_SQR_X_N.run b/NBS2/F_SQR_X_N.run new file mode 100644 index 0000000..1c74901 --- /dev/null +++ b/NBS2/F_SQR_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 1 R= 0 X=-1 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .632456 X= .4 + F= 0 N= .632456 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 X=-.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .774597 X= .6 + F= 0 N= .774597 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 X=-.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 15.9374 X= 254 + F= 0 N= 15.9374 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 15.9687 X= 255 + F= 0 N= 15.9687 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 16 X= 256 + F= 0 N= 16 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 178.885 X= 32000 + F= 0 N= 178.885 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 X=-.227229 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 X=-.239157 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 X=-.213586 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .524094 X= .274675 + F= 0 N= .524094 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .412027 X= .169766 + F= 0 N= .412027 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .564594 X= .318766 + F= 0 N= .564594 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= .143756 X= 2.06658E-2 + F= 0 N= .143756 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .433886 X= .188257 + F= 0 N= .433886 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 X=-.277537 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 X=-.481303 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .65997 X= .43556 + F= 0 N= .65997 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 X=-.210971 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 1 R= 0 X=-.455216 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 10.2777 X= 105.632 + F= 0 N= 10.2777 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 10.4741 X= 109.706 + F= 0 N= 10.4741 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 10.4498 X= 109.198 + F= 0 N= 10.4498 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 9.267 X= 85.8773 + F= 0 N= 9.267 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 5.44424 X= 29.6397 + F= 0 N= 5.44424 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 10.6076 X= 112.521 + F= 0 N= 10.6076 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 6.73907 X= 45.4151 + F= 0 N= 6.73907 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 10.0563 X= 101.129 + F= 0 N= 10.0563 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 8.06519 X= 65.0473 + F= 0 N= 8.06519 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 6.9571 X= 48.4012 + F= 0 N= 6.9571 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 11.0587 X= 122.294 + F= 0 N= 11.0587 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 X=-25.6888 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 3.84715 X= 14.8006 + F= 0 N= 3.84715 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 112.829 X= 12730.3 + F= 0 N= 112.829 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 74.0702 X= 5486.39 + F= 0 N= 74.0702 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 149.686 X= 22405.9 + F= 0 N= 149.686 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 175.527 X= 30809.8 + F= 0 N= 175.527 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 131.964 X= 17414.6 + F= 0 N= 131.964 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 172.297 X= 29686.4 + F= 0 N= 172.297 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 50.705 X= 2571 + F= 0 N= 50.705 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 176.326 X= 31091 + F= 0 N= 176.326 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 121.733 X= 14819 + F= 0 N= 121.733 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 61.5703 X= 3790.9 + F= 0 N= 61.5703 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 58214.3 X= 3.3889E+9 + F= 0 N= 58214.3 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 49982.6 X= 2.49826E+9 + F= 0 N= 49982.6 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 48467.5 X= 2.3491E+9 + F= 0 N= 48467.5 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 13955.1 X= 1.94745E+8 + F= 0 N= 13955.1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 44997.2 X= 2.02475E+9 + F= 0 N= 44997.2 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 65083.4 X= 4.23585E+9 + F= 0 N= 65083.4 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 63328.7 X= 4.01052E+9 + F= 0 N= 63328.7 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 42137.4 X= 1.77556E+9 + F= 0 N= 42137.4 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 16961.9 X= 2.87705E+8 + F= 0 N= 16961.9 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 14141.3 X= 1.99977E+8 + F= 0 N= 14141.3 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 64839.6 X= 4.20418E+9 + F= 0 N= 64839.6 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 67868.6 X= 4.60615E+9 + F= 0 N= 67868.6 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_STRING_X_A_S.80 b/NBS2/F_STRING_X_A_S.80 new file mode 100644 index 0000000..0c4e1fa --- /dev/null +++ b/NBS2/F_STRING_X_A_S.80 @@ -0,0 +1,525 @@ +TESTCASE # 1 E= 1 R$=[] X= 0 A$=[] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 A$=[3] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 A$=[z] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 A$=[ 3] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 A$=[ z] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] X= 254 A$=[3 ] + F= 0 S$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] X= 255 A$=[z ] + F= 0 S$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 A$=[ 3 ] + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 A$=[ z ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 A$=[ LLLL] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 A$=[ '' ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 A$=[ oo ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 A$=[ 00 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 A$=[ \\\\ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 A$=[ lllll ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 A$=[ uuuu ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 A$=[ a ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 A$=[ hh ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 A$=[ h ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 A$=[ )] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 A$=[ 5 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 A$=[ 2 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 A$=[ - ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 A$=[dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 A$=[ tttt ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 A$=[ :::: ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 A$=[ ___ ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 A$=[ _____ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 A$=[ S ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 A$=[ FFFF ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 A$=[ kkk] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 A$=[ NNNN ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 A$=[ mmmm ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 A$=[ + ,,,,, ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] X= 122.294 A$=[OO ] + F= 0 S$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 A$=[ HHHH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 A$=[ < ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 A$=[ j ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 A$=[ yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 A$=[ +++ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 A$=[o ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 A$=[ + ((] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 A$=[ uu ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 A$=[ 00 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 A$=[ HH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 A$=[ G ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 A$=[ {{{{ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 A$=[ ]]] ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 A$=[CCC] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 A$=[ 44 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 A$=[^^ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 A$=[ QQ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 A$=[ FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 A$=[ n ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 A$=[ hh ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 A$=[555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 A$=[ YYYY ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 A$=[ w ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 A$=[MMMM ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 A$=[ JJJJ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 A$=[ * ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 A$=[ @@@ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 A$=[I ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 A$=[ ss ] + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 A$=[ f ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 A$=[ D ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] X= 3790.9 A$=[### ] + F= 0 S$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 A$=[ ' ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 A$=[ dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 A$=[ TT ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 A$=[ vvv ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 A$=[ X ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 A$=[ % ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 A$=[ 5555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 A$=[FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 A$=[ || ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 A$=[ SSS ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 A$=[ 6666 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 A$=[ ww ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 A$=[ 1111 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 A$=[ K ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 A$=[ ttttt ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 A$=[ OOOOO ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 A$=[ E ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 A$=[ PPPPP ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 A$=[ == ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 A$=[ VVVV ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 A$=[ c ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 A$=[ + yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_STRING_X_A_S.BAS b/NBS2/F_STRING_X_A_S.BAS new file mode 100644 index 0000000..7967415 --- /dev/null +++ b/NBS2/F_STRING_X_A_S.BAS @@ -0,0 +1,160 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:34 +REM FILENAME: F_STRING_X_A_S.BAS +REM SYNTAX: S$ = STRING$( X, A$ ) +REM UNIQUEID: F_STRING_X_A_S +REM FUNCTION: STRING$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = STRING$( X, A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , "", 0 , "" +DATA 2 , 0 , " ", 1 , " " +DATA 3 , 1 , "", -1 , "3" +DATA 4 , 0 , "", .4 , "z" +DATA 5 , 0 , "", -.4 , " " +DATA 6 , 0 , " ", .6 , " 3" +DATA 7 , 1 , "", -.6 , " z" +DATA 8 , 0 , "33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333", 254 , "3 " +DATA 9 , 0 , "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", 255 , "z " +DATA 10 , 0 , " ", 256 , " 3 " +DATA 11 , 1 , "", 32000 , " z " +DATA 12 , 0 , "", -.227229 , " LLLL" +DATA 13 , 0 , "", -.239157 , " '' " +DATA 14 , 0 , "", -.213586 , " oo " +DATA 15 , 0 , "", .274675 , " 00 " +DATA 16 , 0 , "", .169766 , " \\\\ " +DATA 17 , 0 , "", .318766 , " lllll " +DATA 18 , 0 , "", 2.06658E-2 , " uuuu " +DATA 19 , 0 , "", .188257 , " a " +DATA 20 , 0 , "", -.277537 , " " +DATA 21 , 0 , "", -.481303 , " hh " +DATA 22 , 0 , "", .43556 , " h " +DATA 23 , 0 , "", -.210971 , " )" +DATA 24 , 0 , "", -.455216 , " 5 " +DATA 25 , 1 , "", -110.907 , " 2 " +DATA 26 , 0 , " ", 105.632 , " - " +DATA 27 , 1 , "", -114.341 , "dd " +DATA 28 , 0 , " ", 109.706 , " tttt " +DATA 29 , 0 , " ", 109.198 , " :::: " +DATA 30 , 0 , " ", 85.8773 , " ___ " +DATA 31 , 1 , "", -58.3548 , " " +DATA 32 , 0 , " ", 29.6397 , " " +DATA 33 , 1 , "", -108.36 , " _____ " +DATA 34 , 1 , "", -46.5199 , " S " +DATA 35 , 0 , " ", 112.521 , " FFFF " +DATA 36 , 0 , " ", 45.4151 , " kkk" +DATA 37 , 0 , " ", 101.129 , " NNNN " +DATA 38 , 0 , " ", 65.0473 , " mmmm " +DATA 39 , 0 , " ", 48.4012 , " ,,,,, " +DATA 40 , 0 , "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", 122.294 , "OO " +DATA 41 , 1 , "", -56.1094 , " HHHH " +DATA 42 , 1 , "", -121.087 , " < " +DATA 43 , 1 , "", -123.517 , " j " +DATA 44 , 1 , "", -97.6301 , " yyyy " +DATA 45 , 1 , "", -64.0001 , " +++ " +DATA 46 , 1 , "", -25.6888 , "o " +DATA 47 , 0 , " ", 14.8006 , " ((" +DATA 48 , 1 , "", -61.0877 , " uu " +DATA 49 , 1 , "", -66.6381 , " 00 " +DATA 50 , 1 , "", -5476.5 , " HH " +DATA 51 , 1 , "", -21210.3 , " " +DATA 52 , 1 , "", -28757.2 , " G " +DATA 53 , 1 , "", -28732.2 , " {{{{ " +DATA 54 , 1 , "", 12730.3 , " ]]] " +DATA 55 , 1 , "", -1830.69 , "CCC" +DATA 56 , 1 , "", 5486.39 , " 44 " +DATA 57 , 1 , "", 22405.9 , "^^ " +DATA 58 , 1 , "", 30809.8 , " QQ " +DATA 59 , 1 , "", -28930.6 , " FFFF " +DATA 60 , 1 , "", -6014.53 , " n " +DATA 61 , 1 , "", 17414.6 , " hh " +DATA 62 , 1 , "", -10538.3 , "555 " +DATA 63 , 1 , "", -17536.3 , " YYYY " +DATA 64 , 1 , "", -8856.62 , " w " +DATA 65 , 1 , "", -5140.12 , "MMMM " +DATA 66 , 1 , "", -8595.31 , " JJJJ " +DATA 67 , 1 , "", -3382.87 , " %% " +DATA 68 , 1 , "", -5002.07 , " * " +DATA 69 , 1 , "", -5800.72 , " @@@ " +DATA 70 , 1 , "", 29686.4 , "I " +DATA 71 , 0 , " ", 2571. , " ss " +DATA 72 , 1 , "", 31091. , " f " +DATA 73 , 1 , "", 14819. , " D " +DATA 74 , 0 , "###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################", 3790.9 , "### " +DATA 75 , 1 , "", -4.2981E+9 , " ' " +DATA 76 , 1 , "", -7.05453E+8 , " dd " +DATA 77 , 1 , "", -3.10179E+9 , " TT " +DATA 78 , 1 , "", -4.86159E+9 , " vvv " +DATA 79 , 1 , "", -8.62908E+8 , " X " +DATA 80 , 1 , "", -3.4101E+9 , " % " +DATA 81 , 1 , "", 3.3889E+9 , " " +DATA 82 , 1 , "", 2.49826E+9 , " 5555 " +DATA 83 , 1 , "", 2.3491E+9 , "FFFF " +DATA 84 , 1 , "", 1.94745E+8 , " %% " +DATA 85 , 1 , "", 2.02475E+9 , " " +DATA 86 , 1 , "", -2.26748E+9 , " ~~~~ " +DATA 87 , 1 , "", -2.10587E+9 , " || " +DATA 88 , 1 , "", 4.23585E+9 , " SSS " +DATA 89 , 1 , "", -2.66524E+9 , " 6666 " +DATA 90 , 1 , "", 4.01052E+9 , " ww " +DATA 91 , 1 , "", -4.87912E+9 , " 1111 " +DATA 92 , 1 , "", 1.77556E+9 , " K " +DATA 93 , 1 , "", 2.87705E+8 , " ttttt " +DATA 94 , 1 , "", 1.99977E+8 , " OOOOO " +DATA 95 , 1 , "", -3.39941E+9 , " E " +DATA 96 , 1 , "", -3.49119E+9 , " PPPPP " +DATA 97 , 1 , "", -2.86324E+9 , " == " +DATA 98 , 1 , "", 4.20418E+9 , " VVVV " +DATA 99 , 1 , "", -3.1518E+9 , " c " +DATA 100 , 1 , "", 4.60615E+9 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_STRING_X_A_S.OUT b/NBS2/F_STRING_X_A_S.OUT new file mode 100644 index 0000000..9cd8e21 --- /dev/null +++ b/NBS2/F_STRING_X_A_S.OUT @@ -0,0 +1,525 @@ +TESTCASE # 1 E= 1 R$=[] X= 0 A$=[] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 A$=[3] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 A$=[z] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 A$=[ 3] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 A$=[ z] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] X= 254 A$=[3 ] + F= 0 S$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] X= 255 A$=[z ] + F= 0 S$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 A$=[ 3 ] + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 A$=[ z ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 A$=[ LLLL] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 A$=[ '' ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 A$=[ oo ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 A$=[ 00 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 A$=[ \\\\ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 A$=[ lllll ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 A$=[ uuuu ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 A$=[ a ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 A$=[ hh ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 A$=[ h ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 A$=[ )] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 A$=[ 5 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 A$=[ 2 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 A$=[ - ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 A$=[dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 A$=[ tttt ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 A$=[ :::: ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 A$=[ ___ ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 A$=[ _____ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 A$=[ S ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 A$=[ FFFF ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 A$=[ kkk] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 A$=[ NNNN ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 A$=[ mmmm ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 A$=[ + ,,,,, ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] X= 122.294 A$=[OO ] + F= 0 S$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 A$=[ HHHH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 A$=[ < ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 A$=[ j ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 A$=[ yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 A$=[ +++ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 A$=[o ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 A$=[ + ((] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 A$=[ uu ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 A$=[ 00 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 A$=[ HH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 A$=[ G ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 A$=[ {{{{ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 A$=[ ]]] ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 A$=[CCC] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 A$=[ 44 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 A$=[^^ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 A$=[ QQ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 A$=[ FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 A$=[ n ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 A$=[ hh ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 A$=[555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 A$=[ YYYY ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 A$=[ w ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 A$=[MMMM ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 A$=[ JJJJ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 A$=[ * ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 A$=[ @@@ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 A$=[I ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 A$=[ ss ] + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 A$=[ f ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 A$=[ D ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] X= 3790.9 A$=[### ] + F= 0 S$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 A$=[ ' ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 A$=[ dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 A$=[ TT ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 A$=[ vvv ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 A$=[ X ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 A$=[ % ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 A$=[ 5555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 A$=[FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 A$=[ || ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 A$=[ SSS ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 A$=[ 6666 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 A$=[ ww ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 A$=[ 1111 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 A$=[ K ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 A$=[ ttttt ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 A$=[ OOOOO ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 A$=[ E ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 A$=[ PPPPP ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 A$=[ == ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 A$=[ VVVV ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 A$=[ c ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 A$=[ + yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_STRING_X_A_S.dif b/NBS2/F_STRING_X_A_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_STRING_X_A_S.run b/NBS2/F_STRING_X_A_S.run new file mode 100644 index 0000000..0c4e1fa --- /dev/null +++ b/NBS2/F_STRING_X_A_S.run @@ -0,0 +1,525 @@ +TESTCASE # 1 E= 1 R$=[] X= 0 A$=[] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 1 R$=[] X=-1 A$=[3] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[] X= .4 A$=[z] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] X=-.4 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ ] X= .6 A$=[ 3] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 7 E= 1 R$=[] X=-.6 A$=[ z] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] X= 254 A$=[3 ] + F= 0 S$=[ +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333333333333333333333333333333333333333333333333333333333333333333333 +33333333333333] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] X= 255 A$=[z ] + F= 0 S$=[ +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +zzzzzzzzzzzzzzz] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ + + + + ] X= 256 A$=[ 3 ] + F= 0 S$=[ + + + + ] +*** TEST PASSED *** +TESTCASE # 11 E= 1 R$=[] X= 32000 A$=[ z ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[] X=-.227229 A$=[ LLLL] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[] X=-.239157 A$=[ '' ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[] X=-.213586 A$=[ oo ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[] X= .274675 A$=[ 00 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[] X= .169766 A$=[ \\\\ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[] X= .318766 A$=[ lllll ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[] X= 2.06658E-2 A$=[ uuuu ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[] X= .188257 A$=[ a ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] X=-.277537 A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[] X=-.481303 A$=[ hh ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[] X= .43556 A$=[ h ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[] X=-.210971 A$=[ )] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[] X=-.455216 A$=[ 5 ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 25 E= 1 R$=[] X=-110.907 A$=[ 2 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ + + ] X= 105.632 A$=[ - ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 27 E= 1 R$=[] X=-114.341 A$=[dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ + + ] X= 109.706 A$=[ tttt ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ + + ] X= 109.198 A$=[ :::: ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ + + ] X= 85.8773 A$=[ ___ ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 31 E= 1 R$=[] X=-58.3548 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] X= + 29.6397 A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 1 R$=[] X=-108.36 A$=[ _____ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 34 E= 1 R$=[] X=-46.5199 A$=[ S ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ + + ] X= 112.521 A$=[ FFFF ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ ] +X= 45.4151 A$=[ kkk] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ + + ] X= 101.129 A$=[ NNNN ] + F= 0 S$=[ + + ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ + ] X= + 65.0473 A$=[ mmmm ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ + ] X= 48.4012 A$=[ + ,,,,, ] + F= 0 S$=[ + ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] X= 122.294 A$=[OO ] + F= 0 S$=[ +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] +*** TEST PASSED *** +TESTCASE # 41 E= 1 R$=[] X=-56.1094 A$=[ HHHH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 42 E= 1 R$=[] X=-121.087 A$=[ < ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 43 E= 1 R$=[] X=-123.517 A$=[ j ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 44 E= 1 R$=[] X=-97.6301 A$=[ yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 45 E= 1 R$=[] X=-64.0001 A$=[ +++ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 46 E= 1 R$=[] X=-25.6888 A$=[o ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ] X= 14.8006 A$=[ + ((] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 48 E= 1 R$=[] X=-61.0877 A$=[ uu ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 49 E= 1 R$=[] X=-66.6381 A$=[ 00 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 50 E= 1 R$=[] X=-5476.5 A$=[ HH ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 51 E= 1 R$=[] X=-21210.3 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 1 R$=[] X=-28757.2 A$=[ G ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 53 E= 1 R$=[] X=-28732.2 A$=[ {{{{ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 54 E= 1 R$=[] X= 12730.3 A$=[ ]]] ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 55 E= 1 R$=[] X=-1830.69 A$=[CCC] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 56 E= 1 R$=[] X= 5486.39 A$=[ 44 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 57 E= 1 R$=[] X= 22405.9 A$=[^^ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 58 E= 1 R$=[] X= 30809.8 A$=[ QQ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 59 E= 1 R$=[] X=-28930.6 A$=[ FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 60 E= 1 R$=[] X=-6014.53 A$=[ n ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 61 E= 1 R$=[] X= 17414.6 A$=[ hh ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 62 E= 1 R$=[] X=-10538.3 A$=[555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 63 E= 1 R$=[] X=-17536.3 A$=[ YYYY ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 64 E= 1 R$=[] X=-8856.62 A$=[ w ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 65 E= 1 R$=[] X=-5140.12 A$=[MMMM ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 66 E= 1 R$=[] X=-8595.31 A$=[ JJJJ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 67 E= 1 R$=[] X=-3382.87 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 68 E= 1 R$=[] X=-5002.07 A$=[ * ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 69 E= 1 R$=[] X=-5800.72 A$=[ @@@ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 70 E= 1 R$=[] X= 29686.4 A$=[I ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] X= 2571 A$=[ ss ] + F= 0 S$=[ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ] +*** TEST PASSED *** +TESTCASE # 72 E= 1 R$=[] X= 31091 A$=[ f ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 73 E= 1 R$=[] X= 14819 A$=[ D ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] X= 3790.9 A$=[### ] + F= 0 S$=[ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +################################################################################ +###############################] +*** TEST PASSED *** +TESTCASE # 75 E= 1 R$=[] X=-4.2981E+9 A$=[ ' ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 76 E= 1 R$=[] X=-7.05453E+8 A$=[ dd ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 77 E= 1 R$=[] X=-3.10179E+9 A$=[ TT ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 78 E= 1 R$=[] X=-4.86159E+9 A$=[ vvv ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 79 E= 1 R$=[] X=-8.62908E+8 A$=[ X ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 80 E= 1 R$=[] X=-3.4101E+9 A$=[ % ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 81 E= 1 R$=[] X= 3.3889E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 1 R$=[] X= 2.49826E+9 A$=[ 5555 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 83 E= 1 R$=[] X= 2.3491E+9 A$=[FFFF ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 84 E= 1 R$=[] X= 1.94745E+8 A$=[ %% ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 85 E= 1 R$=[] X= 2.02475E+9 A$=[ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 1 R$=[] X=-2.26748E+9 A$=[ ~~~~ ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 87 E= 1 R$=[] X=-2.10587E+9 A$=[ || ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 88 E= 1 R$=[] X= 4.23585E+9 A$=[ SSS ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 89 E= 1 R$=[] X=-2.66524E+9 A$=[ 6666 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 90 E= 1 R$=[] X= 4.01052E+9 A$=[ ww ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 91 E= 1 R$=[] X=-4.87912E+9 A$=[ 1111 ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 92 E= 1 R$=[] X= 1.77556E+9 A$=[ K ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 93 E= 1 R$=[] X= 2.87705E+8 A$=[ ttttt ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 94 E= 1 R$=[] X= 1.99977E+8 A$=[ OOOOO ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 95 E= 1 R$=[] X=-3.39941E+9 A$=[ E ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 96 E= 1 R$=[] X=-3.49119E+9 A$=[ PPPPP ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 97 E= 1 R$=[] X=-2.86324E+9 A$=[ == ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 98 E= 1 R$=[] X= 4.20418E+9 A$=[ VVVV ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 99 E= 1 R$=[] X=-3.1518E+9 A$=[ c ] + F= 1 S$=[] +*** TEST PASSED *** +TESTCASE # 100 E= 1 R$=[] X= 4.60615E+9 A$=[ + yyyy ] + F= 1 S$=[] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_STRING_X_Y_S.80 b/NBS2/F_STRING_X_Y_S.80 new file mode 100644 index 0000000..15a8b57 --- /dev/null +++ b/NBS2/F_STRING_X_Y_S.80 @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 Y= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 Y= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_STRING_X_Y_S.BAS b/NBS2/F_STRING_X_Y_S.BAS new file mode 100644 index 0000000..1a54fba --- /dev/null +++ b/NBS2/F_STRING_X_Y_S.BAS @@ -0,0 +1,160 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:34 +REM FILENAME: F_STRING_X_Y_S.BAS +REM SYNTAX: S$ = STRING$( X, Y ) +REM UNIQUEID: F_STRING_X_Y_S +REM FUNCTION: STRING$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = STRING$( X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", 0 , 0 +DATA 2 , 0 , "", 1 , 1 +DATA 3 , 1 , "", -1 , -1 +DATA 4 , 0 , "", .4 , .4 +DATA 5 , 0 , "", -.4 , -.4 +DATA 6 , 0 , "", .6 , .6 +DATA 7 , 1 , "", -.6 , -.6 +DATA 8 , 0 , "þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ", 254 , 254 +DATA 9 , 0 , "ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ", 255 , 255 +DATA 10 , 1 , "", 256 , 256 +DATA 11 , 1 , "", 32000 , 32000 +DATA 12 , 0 , "", -.227229 , -.227229 +DATA 13 , 0 , "", -.239157 , -.239157 +DATA 14 , 0 , "", -.213586 , -.213586 +DATA 15 , 0 , "", .274675 , .274675 +DATA 16 , 0 , "", .169766 , .169766 +DATA 17 , 0 , "", .318766 , .318766 +DATA 18 , 0 , "", 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , "", .188257 , .188257 +DATA 20 , 0 , "", -.277537 , -.277537 +DATA 21 , 0 , "", -.481303 , -.481303 +DATA 22 , 0 , "", .43556 , .43556 +DATA 23 , 0 , "", -.210971 , -.210971 +DATA 24 , 0 , "", -.455216 , -.455216 +DATA 25 , 1 , "", -110.907 , -110.907 +DATA 26 , 0 , "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj", 105.632 , 105.632 +DATA 27 , 1 , "", -114.341 , -114.341 +DATA 28 , 0 , "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn", 109.706 , 109.706 +DATA 29 , 0 , "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", 109.198 , 109.198 +DATA 30 , 0 , "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", 85.8773 , 85.8773 +DATA 31 , 1 , "", -58.3548 , -58.3548 +DATA 32 , 0 , "", 29.6397 , 29.6397 +DATA 33 , 1 , "", -108.36 , -108.36 +DATA 34 , 1 , "", -46.5199 , -46.5199 +DATA 35 , 0 , "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", 112.521 , 112.521 +DATA 36 , 0 , "---------------------------------------------", 45.4151 , 45.4151 +DATA 37 , 0 , "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", 101.129 , 101.129 +DATA 38 , 0 , "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", 65.0473 , 65.0473 +DATA 39 , 0 , "000000000000000000000000000000000000000000000000", 48.4012 , 48.4012 +DATA 40 , 0 , "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", 122.294 , 122.294 +DATA 41 , 1 , "", -56.1094 , -56.1094 +DATA 42 , 1 , "", -121.087 , -121.087 +DATA 43 , 1 , "", -123.517 , -123.517 +DATA 44 , 1 , "", -97.6301 , -97.6301 +DATA 45 , 1 , "", -64.0001 , -64.0001 +DATA 46 , 1 , "", -25.6888 , -25.6888 +DATA 47 , 0 , "", 14.8006 , 14.8006 +DATA 48 , 1 , "", -61.0877 , -61.0877 +DATA 49 , 1 , "", -66.6381 , -66.6381 +DATA 50 , 1 , "", -5476.5 , -5476.5 +DATA 51 , 1 , "", -21210.3 , -21210.3 +DATA 52 , 1 , "", -28757.2 , -28757.2 +DATA 53 , 1 , "", -28732.2 , -28732.2 +DATA 54 , 1 , "", 12730.3 , 12730.3 +DATA 55 , 1 , "", -1830.69 , -1830.69 +DATA 56 , 1 , "", 5486.39 , 5486.39 +DATA 57 , 1 , "", 22405.9 , 22405.9 +DATA 58 , 1 , "", 30809.8 , 30809.8 +DATA 59 , 1 , "", -28930.6 , -28930.6 +DATA 60 , 1 , "", -6014.53 , -6014.53 +DATA 61 , 1 , "", 17414.6 , 17414.6 +DATA 62 , 1 , "", -10538.3 , -10538.3 +DATA 63 , 1 , "", -17536.3 , -17536.3 +DATA 64 , 1 , "", -8856.62 , -8856.62 +DATA 65 , 1 , "", -5140.12 , -5140.12 +DATA 66 , 1 , "", -8595.31 , -8595.31 +DATA 67 , 1 , "", -3382.87 , -3382.87 +DATA 68 , 1 , "", -5002.07 , -5002.07 +DATA 69 , 1 , "", -5800.72 , -5800.72 +DATA 70 , 1 , "", 29686.4 , 29686.4 +DATA 71 , 1 , "", 2571. , 2571. +DATA 72 , 1 , "", 31091. , 31091. +DATA 73 , 1 , "", 14819. , 14819. +DATA 74 , 1 , "", 3790.9 , 3790.9 +DATA 75 , 1 , "", -4.2981E+9 , -4.2981E+9 +DATA 76 , 1 , "", -7.05453E+8 , -7.05453E+8 +DATA 77 , 1 , "", -3.10179E+9 , -3.10179E+9 +DATA 78 , 1 , "", -4.86159E+9 , -4.86159E+9 +DATA 79 , 1 , "", -8.62908E+8 , -8.62908E+8 +DATA 80 , 1 , "", -3.4101E+9 , -3.4101E+9 +DATA 81 , 1 , "", 3.3889E+9 , 3.3889E+9 +DATA 82 , 1 , "", 2.49826E+9 , 2.49826E+9 +DATA 83 , 1 , "", 2.3491E+9 , 2.3491E+9 +DATA 84 , 1 , "", 1.94745E+8 , 1.94745E+8 +DATA 85 , 1 , "", 2.02475E+9 , 2.02475E+9 +DATA 86 , 1 , "", -2.26748E+9 , -2.26748E+9 +DATA 87 , 1 , "", -2.10587E+9 , -2.10587E+9 +DATA 88 , 1 , "", 4.23585E+9 , 4.23585E+9 +DATA 89 , 1 , "", -2.66524E+9 , -2.66524E+9 +DATA 90 , 1 , "", 4.01052E+9 , 4.01052E+9 +DATA 91 , 1 , "", -4.87912E+9 , -4.87912E+9 +DATA 92 , 1 , "", 1.77556E+9 , 1.77556E+9 +DATA 93 , 1 , "", 2.87705E+8 , 2.87705E+8 +DATA 94 , 1 , "", 1.99977E+8 , 1.99977E+8 +DATA 95 , 1 , "", -3.39941E+9 , -3.39941E+9 +DATA 96 , 1 , "", -3.49119E+9 , -3.49119E+9 +DATA 97 , 1 , "", -2.86324E+9 , -2.86324E+9 +DATA 98 , 1 , "", 4.20418E+9 , 4.20418E+9 +DATA 99 , 1 , "", -3.1518E+9 , -3.1518E+9 +DATA 100 , 1 , "", 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_STRING_X_Y_S.OUT b/NBS2/F_STRING_X_Y_S.OUT new file mode 100644 index 0000000..8c9b91d --- /dev/null +++ b/NBS2/F_STRING_X_Y_S.OUT @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 Y= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 Y= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_STRING_X_Y_S.dif b/NBS2/F_STRING_X_Y_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_STRING_X_Y_S.run b/NBS2/F_STRING_X_Y_S.run new file mode 100644 index 0000000..15a8b57 --- /dev/null +++ b/NBS2/F_STRING_X_Y_S.run @@ -0,0 +1,9 @@ +TESTCASE # 1 E= 0 R$=[] X= 0 Y= 0 + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] X= 1 Y= 1 + F= 0 S$=[ + +*** TEST FAILED, RESULT MISMATCH *** + +Program interrupted at line 1011 diff --git a/NBS2/F_STR_X_S.80 b/NBS2/F_STR_X_S.80 new file mode 100644 index 0000000..4da03d5 --- /dev/null +++ b/NBS2/F_STR_X_S.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[ 0] X= 0 + F= 0 S$=[ 0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ 1] X= 1 + F= 0 S$=[ 1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[-1] X=-1 + F= 0 S$=[-1] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[ .4] X= .4 + F= 0 S$=[ .4] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[-.4] X=-.4 + F= 0 S$=[-.4] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ .6] X= .6 + F= 0 S$=[ .6] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[-.6] X=-.6 + F= 0 S$=[-.6] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ 254] X= 254 + F= 0 S$=[ 254] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ 255] X= 255 + F= 0 S$=[ 255] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 256] X= 256 + F= 0 S$=[ 256] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ 32000] X= 32000 + F= 0 S$=[ 32000] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[-.227229] X=-.227229 + F= 0 S$=[-.227229] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[-.239157] X=-.239157 + F= 0 S$=[-.239157] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[-.213586] X=-.213586 + F= 0 S$=[-.213586] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ .274675] X= .274675 + F= 0 S$=[ .274675] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ .169766] X= .169766 + F= 0 S$=[ .169766] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ .318766] X= .318766 + F= 0 S$=[ .318766] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ 2.06658E-2] X= 2.06658E-2 + F= 0 S$=[ 2.06658E-2] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ .188257] X= .188257 + F= 0 S$=[ .188257] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[-.277537] X=-.277537 + F= 0 S$=[-.277537] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[-.481303] X=-.481303 + F= 0 S$=[-.481303] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ .43556] X= .43556 + F= 0 S$=[ .43556] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[-.210971] X=-.210971 + F= 0 S$=[-.210971] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[-.455216] X=-.455216 + F= 0 S$=[-.455216] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[-110.907] X=-110.907 + F= 0 S$=[-110.907] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ 105.632] X= 105.632 + F= 0 S$=[ 105.632] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[-114.341] X=-114.341 + F= 0 S$=[-114.341] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ 109.706] X= 109.706 + F= 0 S$=[ 109.706] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ 109.198] X= 109.198 + F= 0 S$=[ 109.198] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ 85.8773] X= 85.8773 + F= 0 S$=[ 85.8773] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[-58.3548] X=-58.3548 + F= 0 S$=[-58.3548] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ 29.6397] X= 29.6397 + F= 0 S$=[ 29.6397] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[-108.36] X=-108.36 + F= 0 S$=[-108.36] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[-46.5199] X=-46.5199 + F= 0 S$=[-46.5199] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ 112.521] X= 112.521 + F= 0 S$=[ 112.521] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ 45.4151] X= 45.4151 + F= 0 S$=[ 45.4151] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ 101.129] X= 101.129 + F= 0 S$=[ 101.129] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ 65.0473] X= 65.0473 + F= 0 S$=[ 65.0473] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ 48.4012] X= 48.4012 + F= 0 S$=[ 48.4012] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ 122.294] X= 122.294 + F= 0 S$=[ 122.294] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[-56.1094] X=-56.1094 + F= 0 S$=[-56.1094] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[-121.087] X=-121.087 + F= 0 S$=[-121.087] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[-123.517] X=-123.517 + F= 0 S$=[-123.517] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[-97.6301] X=-97.6301 + F= 0 S$=[-97.6301] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[-64.0001] X=-64.0001 + F= 0 S$=[-64.0001] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[-25.6888] X=-25.6888 + F= 0 S$=[-25.6888] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ 14.8006] X= 14.8006 + F= 0 S$=[ 14.8006] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[-61.0877] X=-61.0877 + F= 0 S$=[-61.0877] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[-66.6381] X=-66.6381 + F= 0 S$=[-66.6381] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[-5476.5] X=-5476.5 + F= 0 S$=[-5476.5] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[-21210.3] X=-21210.3 + F= 0 S$=[-21210.3] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[-28757.2] X=-28757.2 + F= 0 S$=[-28757.2] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[-28732.2] X=-28732.2 + F= 0 S$=[-28732.2] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ 12730.3] X= 12730.3 + F= 0 S$=[ 12730.3] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[-1830.69] X=-1830.69 + F= 0 S$=[-1830.69] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 5486.39] X= 5486.39 + F= 0 S$=[ 5486.39] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[ 22405.9] X= 22405.9 + F= 0 S$=[ 22405.9] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ 30809.8] X= 30809.8 + F= 0 S$=[ 30809.8] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[-28930.6] X=-28930.6 + F= 0 S$=[-28930.6] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[-6014.53] X=-6014.53 + F= 0 S$=[-6014.53] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ 17414.6] X= 17414.6 + F= 0 S$=[ 17414.6] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[-10538.3] X=-10538.3 + F= 0 S$=[-10538.3] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[-17536.3] X=-17536.3 + F= 0 S$=[-17536.3] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[-8856.62] X=-8856.62 + F= 0 S$=[-8856.62] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[-5140.12] X=-5140.12 + F= 0 S$=[-5140.12] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[-8595.31] X=-8595.31 + F= 0 S$=[-8595.31] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[-3382.87] X=-3382.87 + F= 0 S$=[-3382.87] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[-5002.07] X=-5002.07 + F= 0 S$=[-5002.07] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[-5800.72] X=-5800.72 + F= 0 S$=[-5800.72] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[ 29686.4] X= 29686.4 + F= 0 S$=[ 29686.4] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ 2571] X= 2571 + F= 0 S$=[ 2571] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ 31091] X= 31091 + F= 0 S$=[ 31091] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ 14819] X= 14819 + F= 0 S$=[ 14819] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ 3790.9] X= 3790.9 + F= 0 S$=[ 3790.9] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[-4.2981E+9] X=-4.2981E+9 + F= 0 S$=[-4.2981E+9] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[-7.05453E+8] X=-7.05453E+8 + F= 0 S$=[-7.05453E+8] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[-3.10179E+9] X=-3.10179E+9 + F= 0 S$=[-3.10179E+9] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[-4.86159E+9] X=-4.86159E+9 + F= 0 S$=[-4.86159E+9] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[-8.62908E+8] X=-8.62908E+8 + F= 0 S$=[-8.62908E+8] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[-3.4101E+9] X=-3.4101E+9 + F= 0 S$=[-3.4101E+9] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ 3.3889E+9] X= 3.3889E+9 + F= 0 S$=[ 3.3889E+9] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 2.49826E+9] X= 2.49826E+9 + F= 0 S$=[ 2.49826E+9] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[ 2.3491E+9] X= 2.3491E+9 + F= 0 S$=[ 2.3491E+9] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ 1.94745E+8] X= 1.94745E+8 + F= 0 S$=[ 1.94745E+8] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ 2.02475E+9] X= 2.02475E+9 + F= 0 S$=[ 2.02475E+9] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[-2.26748E+9] X=-2.26748E+9 + F= 0 S$=[-2.26748E+9] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[-2.10587E+9] X=-2.10587E+9 + F= 0 S$=[-2.10587E+9] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ 4.23585E+9] X= 4.23585E+9 + F= 0 S$=[ 4.23585E+9] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[-2.66524E+9] X=-2.66524E+9 + F= 0 S$=[-2.66524E+9] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ 4.01052E+9] X= 4.01052E+9 + F= 0 S$=[ 4.01052E+9] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[-4.87912E+9] X=-4.87912E+9 + F= 0 S$=[-4.87912E+9] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ 1.77556E+9] X= 1.77556E+9 + F= 0 S$=[ 1.77556E+9] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ 2.87705E+8] X= 2.87705E+8 + F= 0 S$=[ 2.87705E+8] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ 1.99977E+8] X= 1.99977E+8 + F= 0 S$=[ 1.99977E+8] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[-3.39941E+9] X=-3.39941E+9 + F= 0 S$=[-3.39941E+9] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[-3.49119E+9] X=-3.49119E+9 + F= 0 S$=[-3.49119E+9] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[-2.86324E+9] X=-2.86324E+9 + F= 0 S$=[-2.86324E+9] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ 4.20418E+9] X= 4.20418E+9 + F= 0 S$=[ 4.20418E+9] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[-3.1518E+9] X=-3.1518E+9 + F= 0 S$=[-3.1518E+9] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ 4.60615E+9] X= + 4.60615E+9 + F= 0 S$=[ 4.60615E+9] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_STR_X_S.BAS b/NBS2/F_STR_X_S.BAS new file mode 100644 index 0000000..e813781 --- /dev/null +++ b/NBS2/F_STR_X_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:34 +REM FILENAME: F_STR_X_S.BAS +REM SYNTAX: S$ = STR$( X ) +REM UNIQUEID: F_STR_X_S +REM FUNCTION: STR$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = STR$( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , " 0", 0 +DATA 2 , 0 , " 1", 1 +DATA 3 , 0 , "-1", -1 +DATA 4 , 0 , " .4", .4 +DATA 5 , 0 , "-.4", -.4 +DATA 6 , 0 , " .6", .6 +DATA 7 , 0 , "-.6", -.6 +DATA 8 , 0 , " 254", 254 +DATA 9 , 0 , " 255", 255 +DATA 10 , 0 , " 256", 256 +DATA 11 , 0 , " 32000", 32000 +DATA 12 , 0 , "-.227229", -.227229 +DATA 13 , 0 , "-.239157", -.239157 +DATA 14 , 0 , "-.213586", -.213586 +DATA 15 , 0 , " .274675", .274675 +DATA 16 , 0 , " .169766", .169766 +DATA 17 , 0 , " .318766", .318766 +DATA 18 , 0 , " 2.06658E-2", 2.06658E-2 +DATA 19 , 0 , " .188257", .188257 +DATA 20 , 0 , "-.277537", -.277537 +DATA 21 , 0 , "-.481303", -.481303 +DATA 22 , 0 , " .43556", .43556 +DATA 23 , 0 , "-.210971", -.210971 +DATA 24 , 0 , "-.455216", -.455216 +DATA 25 , 0 , "-110.907", -110.907 +DATA 26 , 0 , " 105.632", 105.632 +DATA 27 , 0 , "-114.341", -114.341 +DATA 28 , 0 , " 109.706", 109.706 +DATA 29 , 0 , " 109.198", 109.198 +DATA 30 , 0 , " 85.8773", 85.8773 +DATA 31 , 0 , "-58.3548", -58.3548 +DATA 32 , 0 , " 29.6397", 29.6397 +DATA 33 , 0 , "-108.36", -108.36 +DATA 34 , 0 , "-46.5199", -46.5199 +DATA 35 , 0 , " 112.521", 112.521 +DATA 36 , 0 , " 45.4151", 45.4151 +DATA 37 , 0 , " 101.129", 101.129 +DATA 38 , 0 , " 65.0473", 65.0473 +DATA 39 , 0 , " 48.4012", 48.4012 +DATA 40 , 0 , " 122.294", 122.294 +DATA 41 , 0 , "-56.1094", -56.1094 +DATA 42 , 0 , "-121.087", -121.087 +DATA 43 , 0 , "-123.517", -123.517 +DATA 44 , 0 , "-97.6301", -97.6301 +DATA 45 , 0 , "-64.0001", -64.0001 +DATA 46 , 0 , "-25.6888", -25.6888 +DATA 47 , 0 , " 14.8006", 14.8006 +DATA 48 , 0 , "-61.0877", -61.0877 +DATA 49 , 0 , "-66.6381", -66.6381 +DATA 50 , 0 , "-5476.5", -5476.5 +DATA 51 , 0 , "-21210.3", -21210.3 +DATA 52 , 0 , "-28757.2", -28757.2 +DATA 53 , 0 , "-28732.2", -28732.2 +DATA 54 , 0 , " 12730.3", 12730.3 +DATA 55 , 0 , "-1830.69", -1830.69 +DATA 56 , 0 , " 5486.39", 5486.39 +DATA 57 , 0 , " 22405.9", 22405.9 +DATA 58 , 0 , " 30809.8", 30809.8 +DATA 59 , 0 , "-28930.6", -28930.6 +DATA 60 , 0 , "-6014.53", -6014.53 +DATA 61 , 0 , " 17414.6", 17414.6 +DATA 62 , 0 , "-10538.3", -10538.3 +DATA 63 , 0 , "-17536.3", -17536.3 +DATA 64 , 0 , "-8856.62", -8856.62 +DATA 65 , 0 , "-5140.12", -5140.12 +DATA 66 , 0 , "-8595.31", -8595.31 +DATA 67 , 0 , "-3382.87", -3382.87 +DATA 68 , 0 , "-5002.07", -5002.07 +DATA 69 , 0 , "-5800.72", -5800.72 +DATA 70 , 0 , " 29686.4", 29686.4 +DATA 71 , 0 , " 2571", 2571. +DATA 72 , 0 , " 31091", 31091. +DATA 73 , 0 , " 14819", 14819. +DATA 74 , 0 , " 3790.9", 3790.9 +DATA 75 , 0 , "-4.2981E+9", -4.2981E+9 +DATA 76 , 0 , "-7.05453E+8", -7.05453E+8 +DATA 77 , 0 , "-3.10179E+9", -3.10179E+9 +DATA 78 , 0 , "-4.86159E+9", -4.86159E+9 +DATA 79 , 0 , "-8.62908E+8", -8.62908E+8 +DATA 80 , 0 , "-3.4101E+9", -3.4101E+9 +DATA 81 , 0 , " 3.3889E+9", 3.3889E+9 +DATA 82 , 0 , " 2.49826E+9", 2.49826E+9 +DATA 83 , 0 , " 2.3491E+9", 2.3491E+9 +DATA 84 , 0 , " 1.94745E+8", 1.94745E+8 +DATA 85 , 0 , " 2.02475E+9", 2.02475E+9 +DATA 86 , 0 , "-2.26748E+9", -2.26748E+9 +DATA 87 , 0 , "-2.10587E+9", -2.10587E+9 +DATA 88 , 0 , " 4.23585E+9", 4.23585E+9 +DATA 89 , 0 , "-2.66524E+9", -2.66524E+9 +DATA 90 , 0 , " 4.01052E+9", 4.01052E+9 +DATA 91 , 0 , "-4.87912E+9", -4.87912E+9 +DATA 92 , 0 , " 1.77556E+9", 1.77556E+9 +DATA 93 , 0 , " 2.87705E+8", 2.87705E+8 +DATA 94 , 0 , " 1.99977E+8", 1.99977E+8 +DATA 95 , 0 , "-3.39941E+9", -3.39941E+9 +DATA 96 , 0 , "-3.49119E+9", -3.49119E+9 +DATA 97 , 0 , "-2.86324E+9", -2.86324E+9 +DATA 98 , 0 , " 4.20418E+9", 4.20418E+9 +DATA 99 , 0 , "-3.1518E+9", -3.1518E+9 +DATA 100 , 0 , " 4.60615E+9", 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_STR_X_S.OUT b/NBS2/F_STR_X_S.OUT new file mode 100644 index 0000000..5bc5089 --- /dev/null +++ b/NBS2/F_STR_X_S.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[ 0] X= 0 + F= 0 S$=[ 0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ 1] X= 1 + F= 0 S$=[ 1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[-1] X=-1 + F= 0 S$=[-1] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[ .4] X= .4 + F= 0 S$=[ .4] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[-.4] X=-.4 + F= 0 S$=[-.4] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ .6] X= .6 + F= 0 S$=[ .6] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[-.6] X=-.6 + F= 0 S$=[-.6] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ 254] X= 254 + F= 0 S$=[ 254] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ 255] X= 255 + F= 0 S$=[ 255] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 256] X= 256 + F= 0 S$=[ 256] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ 32000] X= 32000 + F= 0 S$=[ 32000] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[-.227229] X=-.227229 + F= 0 S$=[-.227229] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[-.239157] X=-.239157 + F= 0 S$=[-.239157] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[-.213586] X=-.213586 + F= 0 S$=[-.213586] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ .274675] X= .274675 + F= 0 S$=[ .274675] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ .169766] X= .169766 + F= 0 S$=[ .169766] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ .318766] X= .318766 + F= 0 S$=[ .318766] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ 2.06658E-2] X= 2.06658E-2 + F= 0 S$=[ 2.06658E-2] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ .188257] X= .188257 + F= 0 S$=[ .188257] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[-.277537] X=-.277537 + F= 0 S$=[-.277537] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[-.481303] X=-.481303 + F= 0 S$=[-.481303] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ .43556] X= .43556 + F= 0 S$=[ .43556] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[-.210971] X=-.210971 + F= 0 S$=[-.210971] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[-.455216] X=-.455216 + F= 0 S$=[-.455216] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[-110.907] X=-110.907 + F= 0 S$=[-110.907] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ 105.632] X= 105.632 + F= 0 S$=[ 105.632] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[-114.341] X=-114.341 + F= 0 S$=[-114.341] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ 109.706] X= 109.706 + F= 0 S$=[ 109.706] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ 109.198] X= 109.198 + F= 0 S$=[ 109.198] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ 85.8773] X= 85.8773 + F= 0 S$=[ 85.8773] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[-58.3548] X=-58.3548 + F= 0 S$=[-58.3548] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ 29.6397] X= 29.6397 + F= 0 S$=[ 29.6397] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[-108.36] X=-108.36 + F= 0 S$=[-108.36] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[-46.5199] X=-46.5199 + F= 0 S$=[-46.5199] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ 112.521] X= 112.521 + F= 0 S$=[ 112.521] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ 45.4151] X= 45.4151 + F= 0 S$=[ 45.4151] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ 101.129] X= 101.129 + F= 0 S$=[ 101.129] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ 65.0473] X= 65.0473 + F= 0 S$=[ 65.0473] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ 48.4012] X= 48.4012 + F= 0 S$=[ 48.4012] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ 122.294] X= 122.294 + F= 0 S$=[ 122.294] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[-56.1094] X=-56.1094 + F= 0 S$=[-56.1094] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[-121.087] X=-121.087 + F= 0 S$=[-121.087] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[-123.517] X=-123.517 + F= 0 S$=[-123.517] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[-97.6301] X=-97.6301 + F= 0 S$=[-97.6301] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[-64.0001] X=-64.0001 + F= 0 S$=[-64.0001] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[-25.6888] X=-25.6888 + F= 0 S$=[-25.6888] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ 14.8006] X= 14.8006 + F= 0 S$=[ 14.8006] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[-61.0877] X=-61.0877 + F= 0 S$=[-61.0877] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[-66.6381] X=-66.6381 + F= 0 S$=[-66.6381] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[-5476.5] X=-5476.5 + F= 0 S$=[-5476.5] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[-21210.3] X=-21210.3 + F= 0 S$=[-21210.3] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[-28757.2] X=-28757.2 + F= 0 S$=[-28757.2] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[-28732.2] X=-28732.2 + F= 0 S$=[-28732.2] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ 12730.3] X= 12730.3 + F= 0 S$=[ 12730.3] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[-1830.69] X=-1830.69 + F= 0 S$=[-1830.69] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 5486.39] X= 5486.39 + F= 0 S$=[ 5486.39] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[ 22405.9] X= 22405.9 + F= 0 S$=[ 22405.9] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ 30809.8] X= 30809.8 + F= 0 S$=[ 30809.8] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[-28930.6] X=-28930.6 + F= 0 S$=[-28930.6] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[-6014.53] X=-6014.53 + F= 0 S$=[-6014.53] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ 17414.6] X= 17414.6 + F= 0 S$=[ 17414.6] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[-10538.3] X=-10538.3 + F= 0 S$=[-10538.3] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[-17536.3] X=-17536.3 + F= 0 S$=[-17536.3] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[-8856.62] X=-8856.62 + F= 0 S$=[-8856.62] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[-5140.12] X=-5140.12 + F= 0 S$=[-5140.12] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[-8595.31] X=-8595.31 + F= 0 S$=[-8595.31] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[-3382.87] X=-3382.87 + F= 0 S$=[-3382.87] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[-5002.07] X=-5002.07 + F= 0 S$=[-5002.07] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[-5800.72] X=-5800.72 + F= 0 S$=[-5800.72] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[ 29686.4] X= 29686.4 + F= 0 S$=[ 29686.4] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ 2571] X= 2571 + F= 0 S$=[ 2571] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ 31091] X= 31091 + F= 0 S$=[ 31091] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ 14819] X= 14819 + F= 0 S$=[ 14819] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ 3790.9] X= 3790.9 + F= 0 S$=[ 3790.9] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[-4.2981E+9] X=-4.2981E+9 + F= 0 S$=[-4.2981E+9] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[-7.05453E+8] X=-7.05453E+8 + F= 0 S$=[-7.05453E+8] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[-3.10179E+9] X=-3.10179E+9 + F= 0 S$=[-3.10179E+9] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[-4.86159E+9] X=-4.86159E+9 + F= 0 S$=[-4.86159E+9] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[-8.62908E+8] X=-8.62908E+8 + F= 0 S$=[-8.62908E+8] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[-3.4101E+9] X=-3.4101E+9 + F= 0 S$=[-3.4101E+9] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ 3.3889E+9] X= 3.3889E+9 + F= 0 S$=[ 3.3889E+9] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 2.49826E+9] X= 2.49826E+9 + F= 0 S$=[ 2.49826E+9] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[ 2.3491E+9] X= 2.3491E+9 + F= 0 S$=[ 2.3491E+9] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ 1.94745E+8] X= 1.94745E+8 + F= 0 S$=[ 1.94745E+8] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ 2.02475E+9] X= 2.02475E+9 + F= 0 S$=[ 2.02475E+9] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[-2.26748E+9] X=-2.26748E+9 + F= 0 S$=[-2.26748E+9] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[-2.10587E+9] X=-2.10587E+9 + F= 0 S$=[-2.10587E+9] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ 4.23585E+9] X= 4.23585E+9 + F= 0 S$=[ 4.23585E+9] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[-2.66524E+9] X=-2.66524E+9 + F= 0 S$=[-2.66524E+9] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ 4.01052E+9] X= 4.01052E+9 + F= 0 S$=[ 4.01052E+9] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[-4.87912E+9] X=-4.87912E+9 + F= 0 S$=[-4.87912E+9] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ 1.77556E+9] X= 1.77556E+9 + F= 0 S$=[ 1.77556E+9] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ 2.87705E+8] X= 2.87705E+8 + F= 0 S$=[ 2.87705E+8] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ 1.99977E+8] X= 1.99977E+8 + F= 0 S$=[ 1.99977E+8] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[-3.39941E+9] X=-3.39941E+9 + F= 0 S$=[-3.39941E+9] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[-3.49119E+9] X=-3.49119E+9 + F= 0 S$=[-3.49119E+9] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[-2.86324E+9] X=-2.86324E+9 + F= 0 S$=[-2.86324E+9] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ 4.20418E+9] X= 4.20418E+9 + F= 0 S$=[ 4.20418E+9] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[-3.1518E+9] X=-3.1518E+9 + F= 0 S$=[-3.1518E+9] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ 4.60615E+9] X= + 4.60615E+9 + F= 0 S$=[ 4.60615E+9] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_STR_X_S.dif b/NBS2/F_STR_X_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_STR_X_S.run b/NBS2/F_STR_X_S.run new file mode 100644 index 0000000..4da03d5 --- /dev/null +++ b/NBS2/F_STR_X_S.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[ 0] X= 0 + F= 0 S$=[ 0] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ 1] X= 1 + F= 0 S$=[ 1] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[-1] X=-1 + F= 0 S$=[-1] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[ .4] X= .4 + F= 0 S$=[ .4] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[-.4] X=-.4 + F= 0 S$=[-.4] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ .6] X= .6 + F= 0 S$=[ .6] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[-.6] X=-.6 + F= 0 S$=[-.6] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[ 254] X= 254 + F= 0 S$=[ 254] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[ 255] X= 255 + F= 0 S$=[ 255] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 256] X= 256 + F= 0 S$=[ 256] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ 32000] X= 32000 + F= 0 S$=[ 32000] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[-.227229] X=-.227229 + F= 0 S$=[-.227229] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[-.239157] X=-.239157 + F= 0 S$=[-.239157] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[-.213586] X=-.213586 + F= 0 S$=[-.213586] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ .274675] X= .274675 + F= 0 S$=[ .274675] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ .169766] X= .169766 + F= 0 S$=[ .169766] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ .318766] X= .318766 + F= 0 S$=[ .318766] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ 2.06658E-2] X= 2.06658E-2 + F= 0 S$=[ 2.06658E-2] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ .188257] X= .188257 + F= 0 S$=[ .188257] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[-.277537] X=-.277537 + F= 0 S$=[-.277537] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[-.481303] X=-.481303 + F= 0 S$=[-.481303] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ .43556] X= .43556 + F= 0 S$=[ .43556] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[-.210971] X=-.210971 + F= 0 S$=[-.210971] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[-.455216] X=-.455216 + F= 0 S$=[-.455216] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[-110.907] X=-110.907 + F= 0 S$=[-110.907] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ 105.632] X= 105.632 + F= 0 S$=[ 105.632] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[-114.341] X=-114.341 + F= 0 S$=[-114.341] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ 109.706] X= 109.706 + F= 0 S$=[ 109.706] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ 109.198] X= 109.198 + F= 0 S$=[ 109.198] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ 85.8773] X= 85.8773 + F= 0 S$=[ 85.8773] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[-58.3548] X=-58.3548 + F= 0 S$=[-58.3548] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ 29.6397] X= 29.6397 + F= 0 S$=[ 29.6397] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[-108.36] X=-108.36 + F= 0 S$=[-108.36] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[-46.5199] X=-46.5199 + F= 0 S$=[-46.5199] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ 112.521] X= 112.521 + F= 0 S$=[ 112.521] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ 45.4151] X= 45.4151 + F= 0 S$=[ 45.4151] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ 101.129] X= 101.129 + F= 0 S$=[ 101.129] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ 65.0473] X= 65.0473 + F= 0 S$=[ 65.0473] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ 48.4012] X= 48.4012 + F= 0 S$=[ 48.4012] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[ 122.294] X= 122.294 + F= 0 S$=[ 122.294] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[-56.1094] X=-56.1094 + F= 0 S$=[-56.1094] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[-121.087] X=-121.087 + F= 0 S$=[-121.087] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[-123.517] X=-123.517 + F= 0 S$=[-123.517] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[-97.6301] X=-97.6301 + F= 0 S$=[-97.6301] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[-64.0001] X=-64.0001 + F= 0 S$=[-64.0001] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[-25.6888] X=-25.6888 + F= 0 S$=[-25.6888] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ 14.8006] X= 14.8006 + F= 0 S$=[ 14.8006] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[-61.0877] X=-61.0877 + F= 0 S$=[-61.0877] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[-66.6381] X=-66.6381 + F= 0 S$=[-66.6381] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[-5476.5] X=-5476.5 + F= 0 S$=[-5476.5] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[-21210.3] X=-21210.3 + F= 0 S$=[-21210.3] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[-28757.2] X=-28757.2 + F= 0 S$=[-28757.2] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[-28732.2] X=-28732.2 + F= 0 S$=[-28732.2] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ 12730.3] X= 12730.3 + F= 0 S$=[ 12730.3] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[-1830.69] X=-1830.69 + F= 0 S$=[-1830.69] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 5486.39] X= 5486.39 + F= 0 S$=[ 5486.39] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[ 22405.9] X= 22405.9 + F= 0 S$=[ 22405.9] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ 30809.8] X= 30809.8 + F= 0 S$=[ 30809.8] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[-28930.6] X=-28930.6 + F= 0 S$=[-28930.6] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[-6014.53] X=-6014.53 + F= 0 S$=[-6014.53] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ 17414.6] X= 17414.6 + F= 0 S$=[ 17414.6] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[-10538.3] X=-10538.3 + F= 0 S$=[-10538.3] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[-17536.3] X=-17536.3 + F= 0 S$=[-17536.3] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[-8856.62] X=-8856.62 + F= 0 S$=[-8856.62] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[-5140.12] X=-5140.12 + F= 0 S$=[-5140.12] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[-8595.31] X=-8595.31 + F= 0 S$=[-8595.31] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[-3382.87] X=-3382.87 + F= 0 S$=[-3382.87] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[-5002.07] X=-5002.07 + F= 0 S$=[-5002.07] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[-5800.72] X=-5800.72 + F= 0 S$=[-5800.72] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[ 29686.4] X= 29686.4 + F= 0 S$=[ 29686.4] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ 2571] X= 2571 + F= 0 S$=[ 2571] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ 31091] X= 31091 + F= 0 S$=[ 31091] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ 14819] X= 14819 + F= 0 S$=[ 14819] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[ 3790.9] X= 3790.9 + F= 0 S$=[ 3790.9] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[-4.2981E+9] X=-4.2981E+9 + F= 0 S$=[-4.2981E+9] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[-7.05453E+8] X=-7.05453E+8 + F= 0 S$=[-7.05453E+8] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[-3.10179E+9] X=-3.10179E+9 + F= 0 S$=[-3.10179E+9] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[-4.86159E+9] X=-4.86159E+9 + F= 0 S$=[-4.86159E+9] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[-8.62908E+8] X=-8.62908E+8 + F= 0 S$=[-8.62908E+8] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[-3.4101E+9] X=-3.4101E+9 + F= 0 S$=[-3.4101E+9] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ 3.3889E+9] X= 3.3889E+9 + F= 0 S$=[ 3.3889E+9] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 2.49826E+9] X= 2.49826E+9 + F= 0 S$=[ 2.49826E+9] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[ 2.3491E+9] X= 2.3491E+9 + F= 0 S$=[ 2.3491E+9] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ 1.94745E+8] X= 1.94745E+8 + F= 0 S$=[ 1.94745E+8] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ 2.02475E+9] X= 2.02475E+9 + F= 0 S$=[ 2.02475E+9] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[-2.26748E+9] X=-2.26748E+9 + F= 0 S$=[-2.26748E+9] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[-2.10587E+9] X=-2.10587E+9 + F= 0 S$=[-2.10587E+9] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ 4.23585E+9] X= 4.23585E+9 + F= 0 S$=[ 4.23585E+9] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[-2.66524E+9] X=-2.66524E+9 + F= 0 S$=[-2.66524E+9] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ 4.01052E+9] X= 4.01052E+9 + F= 0 S$=[ 4.01052E+9] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[-4.87912E+9] X=-4.87912E+9 + F= 0 S$=[-4.87912E+9] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ 1.77556E+9] X= 1.77556E+9 + F= 0 S$=[ 1.77556E+9] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ 2.87705E+8] X= 2.87705E+8 + F= 0 S$=[ 2.87705E+8] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ 1.99977E+8] X= 1.99977E+8 + F= 0 S$=[ 1.99977E+8] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[-3.39941E+9] X=-3.39941E+9 + F= 0 S$=[-3.39941E+9] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[-3.49119E+9] X=-3.49119E+9 + F= 0 S$=[-3.49119E+9] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[-2.86324E+9] X=-2.86324E+9 + F= 0 S$=[-2.86324E+9] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ 4.20418E+9] X= 4.20418E+9 + F= 0 S$=[ 4.20418E+9] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[-3.1518E+9] X=-3.1518E+9 + F= 0 S$=[-3.1518E+9] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ 4.60615E+9] X= + 4.60615E+9 + F= 0 S$=[ 4.60615E+9] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TANH_X_N.80 b/NBS2/F_TANH_X_N.80 new file mode 100644 index 0000000..f401779 --- /dev/null +++ b/NBS2/F_TANH_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .761594 X= 1 + F= 0 N= .761594 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.761594 X=-1 + F= 0 N=-.761594 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .379949 X= .4 + F= 0 N= .379949 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.379949 X=-.4 + F= 0 N=-.379949 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .53705 X= .6 + F= 0 N= .53705 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.53705 X=-.6 + F= 0 N=-.53705 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 X= 254 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 X= 255 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 X= 256 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 X= 32000 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.223397 X=-.227229 + F= 0 N=-.223397 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.234699 X=-.239157 + F= 0 N=-.234699 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.210396 X=-.213586 + F= 0 N=-.210396 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .26797 X= .274675 + F= 0 N= .26797 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168154 X= .169766 + F= 0 N= .168154 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .308391 X= .318766 + F= 0 N= .308391 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06629E-2 X= 2.06658E-2 + F= 0 N= 2.06629E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .186064 X= .188257 + F= 0 N= .186064 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.270624 X=-.277537 + F= 0 N=-.270624 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.447287 X=-.481303 + F= 0 N=-.447287 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .409957 X= .43556 + F= 0 N= .409957 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.207896 X=-.210971 + F= 0 N=-.207896 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.426177 X=-.455216 + F= 0 N=-.426177 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1 X=-110.907 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 X= 105.632 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1 X=-114.341 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 X= 109.706 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 X= 109.198 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 X= 85.8773 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1 X=-58.3548 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 X= 29.6397 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1 X=-108.36 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1 X=-46.5199 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 X= 112.521 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 X= 45.4151 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 X= 101.129 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 X= 65.0473 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 X= 48.4012 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 X= 122.294 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1 X=-56.1094 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1 X=-121.087 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1 X=-123.517 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1 X=-97.6301 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1 X=-64.0001 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1 X=-25.6888 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 X= 14.8006 + F= 0 N= 1. +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1 X=-61.0877 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1 X=-66.6381 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1 X=-5476.5 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1 X=-21210.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1 X=-28757.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1 X=-28732.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 X= 12730.3 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1 X=-1830.69 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 X= 5486.39 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 X= 22405.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 X= 30809.8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1 X=-28930.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1 X=-6014.53 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 X= 17414.6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1 X=-10538.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1 X=-17536.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1 X=-8856.62 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1 X=-5140.12 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1 X=-8595.31 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1 X=-3382.87 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1 X=-5002.07 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1 X=-5800.72 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 X= 29686.4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 X= 2571 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 X= 31091 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 X= 14819 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 X= 3790.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1 X=-4.2981E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1 X=-7.05453E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1 X=-3.10179E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1 X=-4.86159E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1 X=-8.62908E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1 X=-3.4101E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 X= 3.3889E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 X= 2.49826E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 X= 2.3491E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 X= 1.94745E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 X= 2.02475E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1 X=-2.26748E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1 X=-2.10587E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 X= 4.23585E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1 X=-2.66524E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1 X=-4.87912E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 X= 1.77556E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 X= 2.87705E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 X= 1.99977E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1 X=-3.39941E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1 X=-3.49119E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1 X=-2.86324E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 X= 4.20418E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1 X=-3.1518E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 X= 4.60615E+9 + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TANH_X_N.BAS b/NBS2/F_TANH_X_N.BAS new file mode 100644 index 0000000..a778b0f --- /dev/null +++ b/NBS2/F_TANH_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:35 +REM FILENAME: F_TANH_X_N.BAS +REM SYNTAX: N = TANH( X ) +REM UNIQUEID: F_TANH_X_N +REM FUNCTION: TANH +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = TANH( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , .761594 , 1 +DATA 3 , 0 , -.761594 , -1 +DATA 4 , 0 , .379949 , .4 +DATA 5 , 0 , -.379949 , -.4 +DATA 6 , 0 , .53705 , .6 +DATA 7 , 0 , -.53705 , -.6 +DATA 8 , 0 , 1 , 254 +DATA 9 , 0 , 1 , 255 +DATA 10 , 0 , 1 , 256 +DATA 11 , 0 , 1 , 32000 +DATA 12 , 0 , -.223397 , -.227229 +DATA 13 , 0 , -.234699 , -.239157 +DATA 14 , 0 , -.210396 , -.213586 +DATA 15 , 0 , .26797 , .274675 +DATA 16 , 0 , .168154 , .169766 +DATA 17 , 0 , .308391 , .318766 +DATA 18 , 0 , 2.06629E-2 , 2.06658E-2 +DATA 19 , 0 , .186064 , .188257 +DATA 20 , 0 , -.270624 , -.277537 +DATA 21 , 0 , -.447287 , -.481303 +DATA 22 , 0 , .409957 , .43556 +DATA 23 , 0 , -.207896 , -.210971 +DATA 24 , 0 , -.426177 , -.455216 +DATA 25 , 0 , -1 , -110.907 +DATA 26 , 0 , 1 , 105.632 +DATA 27 , 0 , -1 , -114.341 +DATA 28 , 0 , 1 , 109.706 +DATA 29 , 0 , 1 , 109.198 +DATA 30 , 0 , 1 , 85.8773 +DATA 31 , 0 , -1 , -58.3548 +DATA 32 , 0 , 1 , 29.6397 +DATA 33 , 0 , -1 , -108.36 +DATA 34 , 0 , -1 , -46.5199 +DATA 35 , 0 , 1 , 112.521 +DATA 36 , 0 , 1 , 45.4151 +DATA 37 , 0 , 1 , 101.129 +DATA 38 , 0 , 1 , 65.0473 +DATA 39 , 0 , 1 , 48.4012 +DATA 40 , 0 , 1 , 122.294 +DATA 41 , 0 , -1 , -56.1094 +DATA 42 , 0 , -1 , -121.087 +DATA 43 , 0 , -1 , -123.517 +DATA 44 , 0 , -1 , -97.6301 +DATA 45 , 0 , -1 , -64.0001 +DATA 46 , 0 , -1 , -25.6888 +DATA 47 , 0 , 1. , 14.8006 +DATA 48 , 0 , -1 , -61.0877 +DATA 49 , 0 , -1 , -66.6381 +DATA 50 , 0 , -1 , -5476.5 +DATA 51 , 0 , -1 , -21210.3 +DATA 52 , 0 , -1 , -28757.2 +DATA 53 , 0 , -1 , -28732.2 +DATA 54 , 0 , 1 , 12730.3 +DATA 55 , 0 , -1 , -1830.69 +DATA 56 , 0 , 1 , 5486.39 +DATA 57 , 0 , 1 , 22405.9 +DATA 58 , 0 , 1 , 30809.8 +DATA 59 , 0 , -1 , -28930.6 +DATA 60 , 0 , -1 , -6014.53 +DATA 61 , 0 , 1 , 17414.6 +DATA 62 , 0 , -1 , -10538.3 +DATA 63 , 0 , -1 , -17536.3 +DATA 64 , 0 , -1 , -8856.62 +DATA 65 , 0 , -1 , -5140.12 +DATA 66 , 0 , -1 , -8595.31 +DATA 67 , 0 , -1 , -3382.87 +DATA 68 , 0 , -1 , -5002.07 +DATA 69 , 0 , -1 , -5800.72 +DATA 70 , 0 , 1 , 29686.4 +DATA 71 , 0 , 1 , 2571. +DATA 72 , 0 , 1 , 31091. +DATA 73 , 0 , 1 , 14819. +DATA 74 , 0 , 1 , 3790.9 +DATA 75 , 0 , -1 , -4.2981E+9 +DATA 76 , 0 , -1 , -7.05453E+8 +DATA 77 , 0 , -1 , -3.10179E+9 +DATA 78 , 0 , -1 , -4.86159E+9 +DATA 79 , 0 , -1 , -8.62908E+8 +DATA 80 , 0 , -1 , -3.4101E+9 +DATA 81 , 0 , 1 , 3.3889E+9 +DATA 82 , 0 , 1 , 2.49826E+9 +DATA 83 , 0 , 1 , 2.3491E+9 +DATA 84 , 0 , 1 , 1.94745E+8 +DATA 85 , 0 , 1 , 2.02475E+9 +DATA 86 , 0 , -1 , -2.26748E+9 +DATA 87 , 0 , -1 , -2.10587E+9 +DATA 88 , 0 , 1 , 4.23585E+9 +DATA 89 , 0 , -1 , -2.66524E+9 +DATA 90 , 0 , 1 , 4.01052E+9 +DATA 91 , 0 , -1 , -4.87912E+9 +DATA 92 , 0 , 1 , 1.77556E+9 +DATA 93 , 0 , 1 , 2.87705E+8 +DATA 94 , 0 , 1 , 1.99977E+8 +DATA 95 , 0 , -1 , -3.39941E+9 +DATA 96 , 0 , -1 , -3.49119E+9 +DATA 97 , 0 , -1 , -2.86324E+9 +DATA 98 , 0 , 1 , 4.20418E+9 +DATA 99 , 0 , -1 , -3.1518E+9 +DATA 100 , 0 , 1 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_TANH_X_N.OUT b/NBS2/F_TANH_X_N.OUT new file mode 100644 index 0000000..21cca94 --- /dev/null +++ b/NBS2/F_TANH_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .761594 X= 1 + F= 0 N= .761594 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.761594 X=-1 + F= 0 N=-.761594 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .379949 X= .4 + F= 0 N= .379949 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.379949 X=-.4 + F= 0 N=-.379949 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .53705 X= .6 + F= 0 N= .53705 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.53705 X=-.6 + F= 0 N=-.53705 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 X= 254 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 X= 255 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 X= 256 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 X= 32000 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.223397 X=-.227229 + F= 0 N=-.223397 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.234699 X=-.239157 + F= 0 N=-.234699 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.210396 X=-.213586 + F= 0 N=-.210396 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .26797 X= .274675 + F= 0 N= .26797 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168154 X= .169766 + F= 0 N= .168154 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .308391 X= .318766 + F= 0 N= .308391 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06629E-2 X= 2.06658E-2 + F= 0 N= 2.06629E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .186064 X= .188257 + F= 0 N= .186064 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.270624 X=-.277537 + F= 0 N=-.270624 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.447287 X=-.481303 + F= 0 N=-.447287 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .409957 X= .43556 + F= 0 N= .409957 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.207896 X=-.210971 + F= 0 N=-.207896 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.426177 X=-.455216 + F= 0 N=-.426177 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1 X=-110.907 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 X= 105.632 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1 X=-114.341 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 X= 109.706 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 X= 109.198 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 X= 85.8773 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1 X=-58.3548 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 X= 29.6397 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1 X=-108.36 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1 X=-46.5199 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 X= 112.521 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 X= 45.4151 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 X= 101.129 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 X= 65.0473 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 X= 48.4012 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 X= 122.294 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1 X=-56.1094 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1 X=-121.087 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1 X=-123.517 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1 X=-97.6301 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1 X=-64.0001 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1 X=-25.6888 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 X= 14.8006 + F= 0 N= 1. +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1 X=-61.0877 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1 X=-66.6381 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1 X=-5476.5 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1 X=-21210.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1 X=-28757.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1 X=-28732.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 X= 12730.3 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1 X=-1830.69 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 X= 5486.39 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 X= 22405.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 X= 30809.8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1 X=-28930.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1 X=-6014.53 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 X= 17414.6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1 X=-10538.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1 X=-17536.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1 X=-8856.62 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1 X=-5140.12 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1 X=-8595.31 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1 X=-3382.87 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1 X=-5002.07 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1 X=-5800.72 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 X= 29686.4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 X= 2571 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 X= 31091 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 X= 14819 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 X= 3790.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1 X=-4.2981E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1 X=-7.05453E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1 X=-3.10179E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1 X=-4.86159E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1 X=-8.62908E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1 X=-3.4101E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 X= 3.3889E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 X= 2.49826E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 X= 2.3491E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 X= 1.94745E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 X= 2.02475E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1 X=-2.26748E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1 X=-2.10587E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 X= 4.23585E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1 X=-2.66524E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1 X=-4.87912E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 X= 1.77556E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 X= 2.87705E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 X= 1.99977E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1 X=-3.39941E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1 X=-3.49119E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1 X=-2.86324E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 X= 4.20418E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1 X=-3.1518E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 X= 4.60615E+9 + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TANH_X_N.dif b/NBS2/F_TANH_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_TANH_X_N.run b/NBS2/F_TANH_X_N.run new file mode 100644 index 0000000..f401779 --- /dev/null +++ b/NBS2/F_TANH_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= .761594 X= 1 + F= 0 N= .761594 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-.761594 X=-1 + F= 0 N=-.761594 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .379949 X= .4 + F= 0 N= .379949 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.379949 X=-.4 + F= 0 N=-.379949 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .53705 X= .6 + F= 0 N= .53705 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.53705 X=-.6 + F= 0 N=-.53705 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 1 X= 254 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= 1 X= 255 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 1 X= 256 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R= 1 X= 32000 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.223397 X=-.227229 + F= 0 N=-.223397 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.234699 X=-.239157 + F= 0 N=-.234699 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.210396 X=-.213586 + F= 0 N=-.210396 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .26797 X= .274675 + F= 0 N= .26797 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .168154 X= .169766 + F= 0 N= .168154 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .308391 X= .318766 + F= 0 N= .308391 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06629E-2 X= 2.06658E-2 + F= 0 N= 2.06629E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .186064 X= .188257 + F= 0 N= .186064 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.270624 X=-.277537 + F= 0 N=-.270624 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.447287 X=-.481303 + F= 0 N=-.447287 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .409957 X= .43556 + F= 0 N= .409957 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.207896 X=-.210971 + F= 0 N=-.207896 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.426177 X=-.455216 + F= 0 N=-.426177 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1 X=-110.907 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R= 1 X= 105.632 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-1 X=-114.341 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R= 1 X= 109.706 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R= 1 X= 109.198 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1 X= 85.8773 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R=-1 X=-58.3548 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 1 X= 29.6397 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-1 X=-108.36 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R=-1 X=-46.5199 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R= 1 X= 112.521 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 1 X= 45.4151 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= 1 X= 101.129 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R= 1 X= 65.0473 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 1 X= 48.4012 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R= 1 X= 122.294 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R=-1 X=-56.1094 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R=-1 X=-121.087 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1 X=-123.517 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-1 X=-97.6301 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-1 X=-64.0001 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-1 X=-25.6888 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 1 X= 14.8006 + F= 0 N= 1. +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-1 X=-61.0877 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-1 X=-66.6381 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-1 X=-5476.5 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-1 X=-21210.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R=-1 X=-28757.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R=-1 X=-28732.2 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= 1 X= 12730.3 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R=-1 X=-1830.69 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 1 X= 5486.39 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 1 X= 22405.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= 1 X= 30809.8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R=-1 X=-28930.6 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-1 X=-6014.53 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= 1 X= 17414.6 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-1 X=-10538.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R=-1 X=-17536.3 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-1 X=-8856.62 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-1 X=-5140.12 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R=-1 X=-8595.31 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R=-1 X=-3382.87 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-1 X=-5002.07 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-1 X=-5800.72 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 1 X= 29686.4 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 1 X= 2571 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R= 1 X= 31091 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= 1 X= 14819 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R= 1 X= 3790.9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R=-1 X=-4.2981E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-1 X=-7.05453E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R=-1 X=-3.10179E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R=-1 X=-4.86159E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1 X=-8.62908E+8 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R=-1 X=-3.4101E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1 X= 3.3889E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1 X= 2.49826E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R= 1 X= 2.3491E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R= 1 X= 1.94745E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= 1 X= 2.02475E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R=-1 X=-2.26748E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-1 X=-2.10587E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 1 X= 4.23585E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-1 X=-2.66524E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R= 1 X= 4.01052E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R=-1 X=-4.87912E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R= 1 X= 1.77556E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R= 1 X= 2.87705E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= 1 X= 1.99977E+8 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-1 X=-3.39941E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R=-1 X=-3.49119E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R=-1 X=-2.86324E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1 X= 4.20418E+9 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1 X=-3.1518E+9 + F= 0 N=-1 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= 1 X= 4.60615E+9 + F= 0 N= 1 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TAN_X_N.80 b/NBS2/F_TAN_X_N.80 new file mode 100644 index 0000000..47783d0 --- /dev/null +++ b/NBS2/F_TAN_X_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.55741 X= 1 + F= 0 N= 1.55741 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.55741 X=-1 + F= 0 N=-1.55741 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .422793 X= .4 + F= 0 N= .422793 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.422793 X=-.4 + F= 0 N=-.422793 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .684137 X= .6 + F= 0 N= .684137 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.684137 X=-.6 + F= 0 N=-.684137 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-.506715 X= 254 + F= 0 N=-.506715 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= .587254 X= 255 + F= 0 N= .587254 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 25.1116 X= 256 + F= 0 N= 25.1116 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-.268989 X= 32000 + F= 0 N=-.268989 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.231222 X=-.227229 + F= 0 N=-.231222 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.243823 X=-.239157 + F= 0 N=-.243823 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.216894 X=-.213586 + F= 0 N=-.216894 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .281798 X= .274675 + F= 0 N= .281798 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .171416 X= .169766 + F= 0 N= .171416 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .33002 X= .318766 + F= 0 N= .33002 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06687E-2 X= 2.06658E-2 + F= 0 N= 2.06687E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .190513 X= .188257 + F= 0 N= .190513 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.28489 X=-.277537 + F= 0 N=-.28489 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.522268 X=-.481303 + F= 0 N=-.522268 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .465368 X= .43556 + F= 0 N= .465368 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.214158 X=-.210971 + F= 0 N=-.214158 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.489504 X=-.455216 + F= 0 N=-.489504 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.4021 X=-110.907 + F= 0 N=-1.4021 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-2.44216 X= 105.632 + F= 0 N=-2.44216 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.94704 X=-114.341 + F= 0 N=-2.94704 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-.255068 X= 109.706 + F= 0 N=-.255068 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-.946165 X= 109.198 + F= 0 N=-.946165 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.76081 X= 85.8773 + F= 0 N= 1.76081 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4.17051 X=-58.3548 + F= 0 N= 4.17051 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4.79916 X= 29.6397 + F= 0 N= 4.79916 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-40.0774 X=-108.36 + F= 0 N=-40.0774 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= .69001 X=-46.5199 + F= 0 N= .69001 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-.649944 X= 112.521 + F= 0 N=-.649944 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7.20066 X= 45.4151 + F= 0 N= 7.20066 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .681256 X= 101.129 + F= 0 N= .681256 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-1.33015 X= 65.0473 + F= 0 N=-1.33015 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 3.30892 X= 48.4012 + F= 0 N= 3.30892 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-.232154 X= 122.294 + F= 0 N=-.232154 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .469886 X=-56.1094 + F= 0 N= .469886 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 7.32485 X=-121.087 + F= 0 N= 7.32485 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.54003 X=-123.517 + F= 0 N=-1.54003 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.245488 X=-97.6301 + F= 0 N=-.245488 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-2.34851 X=-64.0001 + F= 0 N=-2.34851 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.621473 X=-25.6888 + F= 0 N=-.621473 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-1.27939 X= 14.8006 + F= 0 N=-1.27939 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-5.71055 X=-61.0877 + F= 0 N=-5.71055 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.78359 X=-66.6381 + F= 0 N=-.78359 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.849158 X=-5476.5 + F= 0 N=-.849158 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-6.08812 X=-21210.3 + F= 0 N=-6.08812 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.3668 X=-28757.2 + F= 0 N= 1.3668 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.04293 X=-28732.2 + F= 0 N= 1.04293 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .636137 X= 12730.3 + F= 0 N= .636137 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1.15808 X=-1830.69 + F= 0 N= 1.15808 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.35491 X= 5486.39 + F= 0 N= 2.35491 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 6.12711E-2 X= 22405.9 + F= 0 N= 6.12711E-2 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .203591 X= 30809.8 + F= 0 N= .203591 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= .338894 X=-28930.6 + F= 0 N= .338894 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-20.3356 X=-6014.53 + F= 0 N=-20.3356 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .935191 X= 17414.6 + F= 0 N= .935191 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-5.73757 X=-10538.3 + F= 0 N=-5.73757 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 7.03078E-2 X=-17536.3 + F= 0 N= 7.03078E-2 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.508355 X=-8856.62 + F= 0 N=-.508355 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.513537 X=-5140.12 + F= 0 N=-.513537 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8.77242E-2 X=-8595.31 + F= 0 N= 8.77242E-2 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= .721922 X=-3382.87 + F= 0 N= .721922 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.767322 X=-5002.07 + F= 0 N=-.767322 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-4.25488 X=-5800.72 + F= 0 N=-4.25488 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 12.5078 X= 29686.4 + F= 0 N= 12.5078 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.40816 X= 2571 + F= 0 N= 2.40816 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-4.30376 X= 31091 + F= 0 N=-4.30376 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= .107868 X= 14819 + F= 0 N= .107868 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-1.56543 X= 3790.9 + F= 0 N=-1.56543 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .695559 X=-4.2981E+9 + F= 0 N= .695559 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-.462965 X=-7.05453E+8 + F= 0 N=-.462965 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .447665 X=-3.10179E+9 + F= 0 N= .447665 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.32945 X=-4.86159E+9 + F= 0 N= 4.32945 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.11353 X=-8.62908E+8 + F= 0 N=-1.11353 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= .412946 X=-3.4101E+9 + F= 0 N= .412946 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.27465 X= 3.3889E+9 + F= 0 N= 1.27465 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.04838 X= 2.49826E+9 + F= 0 N= 1.04838 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-2.22701 X= 2.3491E+9 + F= 0 N=-2.22701 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-.801861 X= 1.94745E+8 + F= 0 N=-.801861 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .160414 X= 2.02475E+9 + F= 0 N= .160414 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 1.17816 X=-2.26748E+9 + F= 0 N= 1.17816 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-5.61655E-2 X=-2.10587E+9 + F= 0 N=-5.61655E-2 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.82231 X= 4.23585E+9 + F= 0 N= 2.82231 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-.166401 X=-2.66524E+9 + F= 0 N=-.166401 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-1.07964 X= 4.01052E+9 + F= 0 N=-1.07964 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .406664 X=-4.87912E+9 + F= 0 N= .406664 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-25.4693 X= 1.77556E+9 + F= 0 N=-25.4693 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-.705126 X= 2.87705E+8 + F= 0 N=-.705126 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .357809 X= 1.99977E+8 + F= 0 N= .357809 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-.689009 X=-3.39941E+9 + F= 0 N=-.689009 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.87334 X=-3.49119E+9 + F= 0 N= 6.87334 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 18.8431 X=-2.86324E+9 + F= 0 N= 18.8431 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.34211 X= 4.20418E+9 + F= 0 N= 1.34211 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.16396 X=-3.1518E+9 + F= 0 N=-1.16396 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .971919 X= 4.60615E+9 + F= 0 N= .971919 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TAN_X_N.BAS b/NBS2/F_TAN_X_N.BAS new file mode 100644 index 0000000..9af6e08 --- /dev/null +++ b/NBS2/F_TAN_X_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:35 +REM FILENAME: F_TAN_X_N.BAS +REM SYNTAX: N = TAN( X ) +REM UNIQUEID: F_TAN_X_N +REM FUNCTION: TAN +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = TAN( X ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 +DATA 2 , 0 , 1.55741 , 1 +DATA 3 , 0 , -1.55741 , -1 +DATA 4 , 0 , .422793 , .4 +DATA 5 , 0 , -.422793 , -.4 +DATA 6 , 0 , .684137 , .6 +DATA 7 , 0 , -.684137 , -.6 +DATA 8 , 0 , -.506715 , 254 +DATA 9 , 0 , .587254 , 255 +DATA 10 , 0 , 25.1116 , 256 +DATA 11 , 0 , -.268989 , 32000 +DATA 12 , 0 , -.231222 , -.227229 +DATA 13 , 0 , -.243823 , -.239157 +DATA 14 , 0 , -.216894 , -.213586 +DATA 15 , 0 , .281798 , .274675 +DATA 16 , 0 , .171416 , .169766 +DATA 17 , 0 , .33002 , .318766 +DATA 18 , 0 , 2.06687E-2 , 2.06658E-2 +DATA 19 , 0 , .190513 , .188257 +DATA 20 , 0 , -.28489 , -.277537 +DATA 21 , 0 , -.522268 , -.481303 +DATA 22 , 0 , .465368 , .43556 +DATA 23 , 0 , -.214158 , -.210971 +DATA 24 , 0 , -.489504 , -.455216 +DATA 25 , 0 , -1.4021 , -110.907 +DATA 26 , 0 , -2.44216 , 105.632 +DATA 27 , 0 , -2.94704 , -114.341 +DATA 28 , 0 , -.255068 , 109.706 +DATA 29 , 0 , -.946165 , 109.198 +DATA 30 , 0 , 1.76081 , 85.8773 +DATA 31 , 0 , 4.17051 , -58.3548 +DATA 32 , 0 , 4.79916 , 29.6397 +DATA 33 , 0 , -40.0774 , -108.36 +DATA 34 , 0 , .69001 , -46.5199 +DATA 35 , 0 , -.649944 , 112.521 +DATA 36 , 0 , 7.20066 , 45.4151 +DATA 37 , 0 , .681256 , 101.129 +DATA 38 , 0 , -1.33015 , 65.0473 +DATA 39 , 0 , 3.30892 , 48.4012 +DATA 40 , 0 , -.232154 , 122.294 +DATA 41 , 0 , .469886 , -56.1094 +DATA 42 , 0 , 7.32485 , -121.087 +DATA 43 , 0 , -1.54003 , -123.517 +DATA 44 , 0 , -.245488 , -97.6301 +DATA 45 , 0 , -2.34851 , -64.0001 +DATA 46 , 0 , -.621473 , -25.6888 +DATA 47 , 0 , -1.27939 , 14.8006 +DATA 48 , 0 , -5.71055 , -61.0877 +DATA 49 , 0 , -.78359 , -66.6381 +DATA 50 , 0 , -.849158 , -5476.5 +DATA 51 , 0 , -6.08812 , -21210.3 +DATA 52 , 0 , 1.3668 , -28757.2 +DATA 53 , 0 , 1.04293 , -28732.2 +DATA 54 , 0 , .636137 , 12730.3 +DATA 55 , 0 , 1.15808 , -1830.69 +DATA 56 , 0 , 2.35491 , 5486.39 +DATA 57 , 0 , 6.12711E-2 , 22405.9 +DATA 58 , 0 , .203591 , 30809.8 +DATA 59 , 0 , .338894 , -28930.6 +DATA 60 , 0 , -20.3356 , -6014.53 +DATA 61 , 0 , .935191 , 17414.6 +DATA 62 , 0 , -5.73757 , -10538.3 +DATA 63 , 0 , 7.03078E-2 , -17536.3 +DATA 64 , 0 , -.508355 , -8856.62 +DATA 65 , 0 , -.513537 , -5140.12 +DATA 66 , 0 , 8.77242E-2 , -8595.31 +DATA 67 , 0 , .721922 , -3382.87 +DATA 68 , 0 , -.767322 , -5002.07 +DATA 69 , 0 , -4.25488 , -5800.72 +DATA 70 , 0 , 12.5078 , 29686.4 +DATA 71 , 0 , 2.40816 , 2571. +DATA 72 , 0 , -4.30376 , 31091. +DATA 73 , 0 , .107868 , 14819. +DATA 74 , 0 , -1.56543 , 3790.9 +DATA 75 , 0 , .695559 , -4.2981E+9 +DATA 76 , 0 , -.462965 , -7.05453E+8 +DATA 77 , 0 , .447665 , -3.10179E+9 +DATA 78 , 0 , 4.32945 , -4.86159E+9 +DATA 79 , 0 , -1.11353 , -8.62908E+8 +DATA 80 , 0 , .412946 , -3.4101E+9 +DATA 81 , 0 , 1.27465 , 3.3889E+9 +DATA 82 , 0 , 1.04838 , 2.49826E+9 +DATA 83 , 0 , -2.22701 , 2.3491E+9 +DATA 84 , 0 , -.801861 , 1.94745E+8 +DATA 85 , 0 , .160414 , 2.02475E+9 +DATA 86 , 0 , 1.17816 , -2.26748E+9 +DATA 87 , 0 , -5.61655E-2 , -2.10587E+9 +DATA 88 , 0 , 2.82231 , 4.23585E+9 +DATA 89 , 0 , -.166401 , -2.66524E+9 +DATA 90 , 0 , -1.07964 , 4.01052E+9 +DATA 91 , 0 , .406664 , -4.87912E+9 +DATA 92 , 0 , -25.4693 , 1.77556E+9 +DATA 93 , 0 , -.705126 , 2.87705E+8 +DATA 94 , 0 , .357809 , 1.99977E+8 +DATA 95 , 0 , -.689009 , -3.39941E+9 +DATA 96 , 0 , 6.87334 , -3.49119E+9 +DATA 97 , 0 , 18.8431 , -2.86324E+9 +DATA 98 , 0 , 1.34211 , 4.20418E+9 +DATA 99 , 0 , -1.16396 , -3.1518E+9 +DATA 100 , 0 , .971919 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_TAN_X_N.OUT b/NBS2/F_TAN_X_N.OUT new file mode 100644 index 0000000..765dd10 --- /dev/null +++ b/NBS2/F_TAN_X_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.55741 X= 1 + F= 0 N= 1.55741 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.55741 X=-1 + F= 0 N=-1.55741 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .422793 X= .4 + F= 0 N= .422793 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.422793 X=-.4 + F= 0 N=-.422793 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .684137 X= .6 + F= 0 N= .684137 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.684137 X=-.6 + F= 0 N=-.684137 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-.506715 X= 254 + F= 0 N=-.506715 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= .587254 X= 255 + F= 0 N= .587254 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 25.1116 X= 256 + F= 0 N= 25.1116 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-.268989 X= 32000 + F= 0 N=-.268989 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.231222 X=-.227229 + F= 0 N=-.231222 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.243823 X=-.239157 + F= 0 N=-.243823 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.216894 X=-.213586 + F= 0 N=-.216894 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .281798 X= .274675 + F= 0 N= .281798 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .171416 X= .169766 + F= 0 N= .171416 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .33002 X= .318766 + F= 0 N= .33002 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06687E-2 X= 2.06658E-2 + F= 0 N= 2.06687E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .190513 X= .188257 + F= 0 N= .190513 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.28489 X=-.277537 + F= 0 N=-.28489 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.522268 X=-.481303 + F= 0 N=-.522268 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .465368 X= .43556 + F= 0 N= .465368 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.214158 X=-.210971 + F= 0 N=-.214158 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.489504 X=-.455216 + F= 0 N=-.489504 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.4021 X=-110.907 + F= 0 N=-1.4021 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-2.44216 X= 105.632 + F= 0 N=-2.44216 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.94704 X=-114.341 + F= 0 N=-2.94704 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-.255068 X= 109.706 + F= 0 N=-.255068 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-.946165 X= 109.198 + F= 0 N=-.946165 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.76081 X= 85.8773 + F= 0 N= 1.76081 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4.17051 X=-58.3548 + F= 0 N= 4.17051 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4.79916 X= 29.6397 + F= 0 N= 4.79916 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-40.0774 X=-108.36 + F= 0 N=-40.0774 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= .69001 X=-46.5199 + F= 0 N= .69001 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-.649944 X= 112.521 + F= 0 N=-.649944 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7.20066 X= 45.4151 + F= 0 N= 7.20066 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .681256 X= 101.129 + F= 0 N= .681256 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-1.33015 X= 65.0473 + F= 0 N=-1.33015 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 3.30892 X= 48.4012 + F= 0 N= 3.30892 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-.232154 X= 122.294 + F= 0 N=-.232154 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .469886 X=-56.1094 + F= 0 N= .469886 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 7.32485 X=-121.087 + F= 0 N= 7.32485 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.54003 X=-123.517 + F= 0 N=-1.54003 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.245488 X=-97.6301 + F= 0 N=-.245488 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-2.34851 X=-64.0001 + F= 0 N=-2.34851 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.621473 X=-25.6888 + F= 0 N=-.621473 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-1.27939 X= 14.8006 + F= 0 N=-1.27939 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-5.71055 X=-61.0877 + F= 0 N=-5.71055 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.78359 X=-66.6381 + F= 0 N=-.78359 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.849158 X=-5476.5 + F= 0 N=-.849158 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-6.08812 X=-21210.3 + F= 0 N=-6.08812 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.3668 X=-28757.2 + F= 0 N= 1.3668 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.04293 X=-28732.2 + F= 0 N= 1.04293 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .636137 X= 12730.3 + F= 0 N= .636137 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1.15808 X=-1830.69 + F= 0 N= 1.15808 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.35491 X= 5486.39 + F= 0 N= 2.35491 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 6.12711E-2 X= 22405.9 + F= 0 N= 6.12711E-2 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .203591 X= 30809.8 + F= 0 N= .203591 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= .338894 X=-28930.6 + F= 0 N= .338894 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-20.3356 X=-6014.53 + F= 0 N=-20.3356 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .935191 X= 17414.6 + F= 0 N= .935191 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-5.73757 X=-10538.3 + F= 0 N=-5.73757 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 7.03078E-2 X=-17536.3 + F= 0 N= 7.03078E-2 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.508355 X=-8856.62 + F= 0 N=-.508355 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.513537 X=-5140.12 + F= 0 N=-.513537 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8.77242E-2 X=-8595.31 + F= 0 N= 8.77242E-2 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= .721922 X=-3382.87 + F= 0 N= .721922 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.767322 X=-5002.07 + F= 0 N=-.767322 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-4.25488 X=-5800.72 + F= 0 N=-4.25488 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 12.5078 X= 29686.4 + F= 0 N= 12.5078 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.40816 X= 2571 + F= 0 N= 2.40816 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-4.30376 X= 31091 + F= 0 N=-4.30376 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= .107868 X= 14819 + F= 0 N= .107868 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-1.56543 X= 3790.9 + F= 0 N=-1.56543 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .695559 X=-4.2981E+9 + F= 0 N= .695559 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-.462965 X=-7.05453E+8 + F= 0 N=-.462965 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .447665 X=-3.10179E+9 + F= 0 N= .447665 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.32945 X=-4.86159E+9 + F= 0 N= 4.32945 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.11353 X=-8.62908E+8 + F= 0 N=-1.11353 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= .412946 X=-3.4101E+9 + F= 0 N= .412946 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.27465 X= 3.3889E+9 + F= 0 N= 1.27465 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.04838 X= 2.49826E+9 + F= 0 N= 1.04838 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-2.22701 X= 2.3491E+9 + F= 0 N=-2.22701 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-.801861 X= 1.94745E+8 + F= 0 N=-.801861 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .160414 X= 2.02475E+9 + F= 0 N= .160414 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 1.17816 X=-2.26748E+9 + F= 0 N= 1.17816 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-5.61655E-2 X=-2.10587E+9 + F= 0 N=-5.61655E-2 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.82231 X= 4.23585E+9 + F= 0 N= 2.82231 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-.166401 X=-2.66524E+9 + F= 0 N=-.166401 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-1.07964 X= 4.01052E+9 + F= 0 N=-1.07964 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .406664 X=-4.87912E+9 + F= 0 N= .406664 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-25.4693 X= 1.77556E+9 + F= 0 N=-25.4693 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-.705126 X= 2.87705E+8 + F= 0 N=-.705126 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .357809 X= 1.99977E+8 + F= 0 N= .357809 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-.689009 X=-3.39941E+9 + F= 0 N=-.689009 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.87334 X=-3.49119E+9 + F= 0 N= 6.87334 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 18.8431 X=-2.86324E+9 + F= 0 N= 18.8431 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.34211 X= 4.20418E+9 + F= 0 N= 1.34211 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.16396 X=-3.1518E+9 + F= 0 N=-1.16396 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .971919 X= 4.60615E+9 + F= 0 N= .971919 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TAN_X_N.dif b/NBS2/F_TAN_X_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_TAN_X_N.run b/NBS2/F_TAN_X_N.run new file mode 100644 index 0000000..47783d0 --- /dev/null +++ b/NBS2/F_TAN_X_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1.55741 X= 1 + F= 0 N= 1.55741 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-1.55741 X=-1 + F= 0 N=-1.55741 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .422793 X= .4 + F= 0 N= .422793 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-.422793 X=-.4 + F= 0 N=-.422793 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .684137 X= .6 + F= 0 N= .684137 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-.684137 X=-.6 + F= 0 N=-.684137 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R=-.506715 X= 254 + F= 0 N=-.506715 +*** TEST PASSED *** +TESTCASE # 9 E= 0 R= .587254 X= 255 + F= 0 N= .587254 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 25.1116 X= 256 + F= 0 N= 25.1116 +*** TEST PASSED *** +TESTCASE # 11 E= 0 R=-.268989 X= 32000 + F= 0 N=-.268989 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-.231222 X=-.227229 + F= 0 N=-.231222 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-.243823 X=-.239157 + F= 0 N=-.243823 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-.216894 X=-.213586 + F= 0 N=-.216894 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= .281798 X= .274675 + F= 0 N= .281798 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= .171416 X= .169766 + F= 0 N= .171416 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= .33002 X= .318766 + F= 0 N= .33002 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 2.06687E-2 X= 2.06658E-2 + F= 0 N= 2.06687E-2 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= .190513 X= .188257 + F= 0 N= .190513 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-.28489 X=-.277537 + F= 0 N=-.28489 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-.522268 X=-.481303 + F= 0 N=-.522268 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .465368 X= .43556 + F= 0 N= .465368 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-.214158 X=-.210971 + F= 0 N=-.214158 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-.489504 X=-.455216 + F= 0 N=-.489504 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R=-1.4021 X=-110.907 + F= 0 N=-1.4021 +*** TEST PASSED *** +TESTCASE # 26 E= 0 R=-2.44216 X= 105.632 + F= 0 N=-2.44216 +*** TEST PASSED *** +TESTCASE # 27 E= 0 R=-2.94704 X=-114.341 + F= 0 N=-2.94704 +*** TEST PASSED *** +TESTCASE # 28 E= 0 R=-.255068 X= 109.706 + F= 0 N=-.255068 +*** TEST PASSED *** +TESTCASE # 29 E= 0 R=-.946165 X= 109.198 + F= 0 N=-.946165 +*** TEST PASSED *** +TESTCASE # 30 E= 0 R= 1.76081 X= 85.8773 + F= 0 N= 1.76081 +*** TEST PASSED *** +TESTCASE # 31 E= 0 R= 4.17051 X=-58.3548 + F= 0 N= 4.17051 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 4.79916 X= 29.6397 + F= 0 N= 4.79916 +*** TEST PASSED *** +TESTCASE # 33 E= 0 R=-40.0774 X=-108.36 + F= 0 N=-40.0774 +*** TEST PASSED *** +TESTCASE # 34 E= 0 R= .69001 X=-46.5199 + F= 0 N= .69001 +*** TEST PASSED *** +TESTCASE # 35 E= 0 R=-.649944 X= 112.521 + F= 0 N=-.649944 +*** TEST PASSED *** +TESTCASE # 36 E= 0 R= 7.20066 X= 45.4151 + F= 0 N= 7.20066 +*** TEST PASSED *** +TESTCASE # 37 E= 0 R= .681256 X= 101.129 + F= 0 N= .681256 +*** TEST PASSED *** +TESTCASE # 38 E= 0 R=-1.33015 X= 65.0473 + F= 0 N=-1.33015 +*** TEST PASSED *** +TESTCASE # 39 E= 0 R= 3.30892 X= 48.4012 + F= 0 N= 3.30892 +*** TEST PASSED *** +TESTCASE # 40 E= 0 R=-.232154 X= 122.294 + F= 0 N=-.232154 +*** TEST PASSED *** +TESTCASE # 41 E= 0 R= .469886 X=-56.1094 + F= 0 N= .469886 +*** TEST PASSED *** +TESTCASE # 42 E= 0 R= 7.32485 X=-121.087 + F= 0 N= 7.32485 +*** TEST PASSED *** +TESTCASE # 43 E= 0 R=-1.54003 X=-123.517 + F= 0 N=-1.54003 +*** TEST PASSED *** +TESTCASE # 44 E= 0 R=-.245488 X=-97.6301 + F= 0 N=-.245488 +*** TEST PASSED *** +TESTCASE # 45 E= 0 R=-2.34851 X=-64.0001 + F= 0 N=-2.34851 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-.621473 X=-25.6888 + F= 0 N=-.621473 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R=-1.27939 X= 14.8006 + F= 0 N=-1.27939 +*** TEST PASSED *** +TESTCASE # 48 E= 0 R=-5.71055 X=-61.0877 + F= 0 N=-5.71055 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R=-.78359 X=-66.6381 + F= 0 N=-.78359 +*** TEST PASSED *** +TESTCASE # 50 E= 0 R=-.849158 X=-5476.5 + F= 0 N=-.849158 +*** TEST PASSED *** +TESTCASE # 51 E= 0 R=-6.08812 X=-21210.3 + F= 0 N=-6.08812 +*** TEST PASSED *** +TESTCASE # 52 E= 0 R= 1.3668 X=-28757.2 + F= 0 N= 1.3668 +*** TEST PASSED *** +TESTCASE # 53 E= 0 R= 1.04293 X=-28732.2 + F= 0 N= 1.04293 +*** TEST PASSED *** +TESTCASE # 54 E= 0 R= .636137 X= 12730.3 + F= 0 N= .636137 +*** TEST PASSED *** +TESTCASE # 55 E= 0 R= 1.15808 X=-1830.69 + F= 0 N= 1.15808 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 2.35491 X= 5486.39 + F= 0 N= 2.35491 +*** TEST PASSED *** +TESTCASE # 57 E= 0 R= 6.12711E-2 X= 22405.9 + F= 0 N= 6.12711E-2 +*** TEST PASSED *** +TESTCASE # 58 E= 0 R= .203591 X= 30809.8 + F= 0 N= .203591 +*** TEST PASSED *** +TESTCASE # 59 E= 0 R= .338894 X=-28930.6 + F= 0 N= .338894 +*** TEST PASSED *** +TESTCASE # 60 E= 0 R=-20.3356 X=-6014.53 + F= 0 N=-20.3356 +*** TEST PASSED *** +TESTCASE # 61 E= 0 R= .935191 X= 17414.6 + F= 0 N= .935191 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R=-5.73757 X=-10538.3 + F= 0 N=-5.73757 +*** TEST PASSED *** +TESTCASE # 63 E= 0 R= 7.03078E-2 X=-17536.3 + F= 0 N= 7.03078E-2 +*** TEST PASSED *** +TESTCASE # 64 E= 0 R=-.508355 X=-8856.62 + F= 0 N=-.508355 +*** TEST PASSED *** +TESTCASE # 65 E= 0 R=-.513537 X=-5140.12 + F= 0 N=-.513537 +*** TEST PASSED *** +TESTCASE # 66 E= 0 R= 8.77242E-2 X=-8595.31 + F= 0 N= 8.77242E-2 +*** TEST PASSED *** +TESTCASE # 67 E= 0 R= .721922 X=-3382.87 + F= 0 N= .721922 +*** TEST PASSED *** +TESTCASE # 68 E= 0 R=-.767322 X=-5002.07 + F= 0 N=-.767322 +*** TEST PASSED *** +TESTCASE # 69 E= 0 R=-4.25488 X=-5800.72 + F= 0 N=-4.25488 +*** TEST PASSED *** +TESTCASE # 70 E= 0 R= 12.5078 X= 29686.4 + F= 0 N= 12.5078 +*** TEST PASSED *** +TESTCASE # 71 E= 0 R= 2.40816 X= 2571 + F= 0 N= 2.40816 +*** TEST PASSED *** +TESTCASE # 72 E= 0 R=-4.30376 X= 31091 + F= 0 N=-4.30376 +*** TEST PASSED *** +TESTCASE # 73 E= 0 R= .107868 X= 14819 + F= 0 N= .107868 +*** TEST PASSED *** +TESTCASE # 74 E= 0 R=-1.56543 X= 3790.9 + F= 0 N=-1.56543 +*** TEST PASSED *** +TESTCASE # 75 E= 0 R= .695559 X=-4.2981E+9 + F= 0 N= .695559 +*** TEST PASSED *** +TESTCASE # 76 E= 0 R=-.462965 X=-7.05453E+8 + F= 0 N=-.462965 +*** TEST PASSED *** +TESTCASE # 77 E= 0 R= .447665 X=-3.10179E+9 + F= 0 N= .447665 +*** TEST PASSED *** +TESTCASE # 78 E= 0 R= 4.32945 X=-4.86159E+9 + F= 0 N= 4.32945 +*** TEST PASSED *** +TESTCASE # 79 E= 0 R=-1.11353 X=-8.62908E+8 + F= 0 N=-1.11353 +*** TEST PASSED *** +TESTCASE # 80 E= 0 R= .412946 X=-3.4101E+9 + F= 0 N= .412946 +*** TEST PASSED *** +TESTCASE # 81 E= 0 R= 1.27465 X= 3.3889E+9 + F= 0 N= 1.27465 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 1.04838 X= 2.49826E+9 + F= 0 N= 1.04838 +*** TEST PASSED *** +TESTCASE # 83 E= 0 R=-2.22701 X= 2.3491E+9 + F= 0 N=-2.22701 +*** TEST PASSED *** +TESTCASE # 84 E= 0 R=-.801861 X= 1.94745E+8 + F= 0 N=-.801861 +*** TEST PASSED *** +TESTCASE # 85 E= 0 R= .160414 X= 2.02475E+9 + F= 0 N= .160414 +*** TEST PASSED *** +TESTCASE # 86 E= 0 R= 1.17816 X=-2.26748E+9 + F= 0 N= 1.17816 +*** TEST PASSED *** +TESTCASE # 87 E= 0 R=-5.61655E-2 X=-2.10587E+9 + F= 0 N=-5.61655E-2 +*** TEST PASSED *** +TESTCASE # 88 E= 0 R= 2.82231 X= 4.23585E+9 + F= 0 N= 2.82231 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R=-.166401 X=-2.66524E+9 + F= 0 N=-.166401 +*** TEST PASSED *** +TESTCASE # 90 E= 0 R=-1.07964 X= 4.01052E+9 + F= 0 N=-1.07964 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= .406664 X=-4.87912E+9 + F= 0 N= .406664 +*** TEST PASSED *** +TESTCASE # 92 E= 0 R=-25.4693 X= 1.77556E+9 + F= 0 N=-25.4693 +*** TEST PASSED *** +TESTCASE # 93 E= 0 R=-.705126 X= 2.87705E+8 + F= 0 N=-.705126 +*** TEST PASSED *** +TESTCASE # 94 E= 0 R= .357809 X= 1.99977E+8 + F= 0 N= .357809 +*** TEST PASSED *** +TESTCASE # 95 E= 0 R=-.689009 X=-3.39941E+9 + F= 0 N=-.689009 +*** TEST PASSED *** +TESTCASE # 96 E= 0 R= 6.87334 X=-3.49119E+9 + F= 0 N= 6.87334 +*** TEST PASSED *** +TESTCASE # 97 E= 0 R= 18.8431 X=-2.86324E+9 + F= 0 N= 18.8431 +*** TEST PASSED *** +TESTCASE # 98 E= 0 R= 1.34211 X= 4.20418E+9 + F= 0 N= 1.34211 +*** TEST PASSED *** +TESTCASE # 99 E= 0 R=-1.16396 X=-3.1518E+9 + F= 0 N=-1.16396 +*** TEST PASSED *** +TESTCASE # 100 E= 0 R= .971919 X= 4.60615E+9 + F= 0 N= .971919 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TRIM_A_S.80 b/NBS2/F_TRIM_A_S.80 new file mode 100644 index 0000000..b282de7 --- /dev/null +++ b/NBS2/F_TRIM_A_S.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[z] A$=[ z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3] A$=[3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z] A$=[z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[3] A$=[ 3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[z] A$=[ z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[LLLL] A$=[ LLLL] + F= 0 S$=[LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[''] A$=[ '' ] + F= 0 S$=[''] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[oo] A$=[ oo ] + F= 0 S$=[oo] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[00] A$=[ 00 ] + F= 0 S$=[00] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[\\\\] A$=[ \\\\ ] + F= 0 S$=[\\\\] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[lllll] A$=[ lllll ] + F= 0 S$=[lllll] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[uuuu] A$=[ uuuu ] + F= 0 S$=[uuuu] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[a] A$=[ a ] + F= 0 S$=[a] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[hh] A$=[ hh ] + F= 0 S$=[hh] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[h] A$=[ h ] + F= 0 S$=[h] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[)] A$=[ )] + F= 0 S$=[)] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[5] A$=[ 5 ] + F= 0 S$=[5] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[2] A$=[ 2 ] + F= 0 S$=[2] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[-] A$=[ - ] + F= 0 S$=[-] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd] A$=[dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[tttt] A$=[ tttt ] + F= 0 S$=[tttt] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[::::] A$=[ :::: ] + F= 0 S$=[::::] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[___] A$=[ ___ ] + F= 0 S$=[___] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[_____] A$=[ _____ ] + F= 0 S$=[_____] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[S] A$=[ S ] + F= 0 S$=[S] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[FFFF] A$=[ FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[kkk] A$=[ kkk] + F= 0 S$=[kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[NNNN] A$=[ NNNN ] + F= 0 S$=[NNNN] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[mmmm] A$=[ mmmm ] + F= 0 S$=[mmmm] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[,,,,,] A$=[ ,,,,, ] + F= 0 S$=[,,,,,] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO] A$=[OO ] + F= 0 S$=[OO] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[HHHH] A$=[ HHHH ] + F= 0 S$=[HHHH] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[<] A$=[ < ] + F= 0 S$=[<] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[j] A$=[ j ] + F= 0 S$=[j] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[yyyy] A$=[ yyyy ] + F= 0 S$=[yyyy] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[+++] A$=[ +++ ] + F= 0 S$=[+++] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o] A$=[o ] + F= 0 S$=[o] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[((] A$=[ ((] + F= 0 S$=[((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[uu] A$=[ uu ] + F= 0 S$=[uu] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[00] A$=[ 00 ] + F= 0 S$=[00] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[HH] A$=[ HH ] + F= 0 S$=[HH] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[G] A$=[ G ] + F= 0 S$=[G] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[{{{{] A$=[ {{{{ ] + F= 0 S$=[{{{{] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[]]]] A$=[ ]]] ] + F= 0 S$=[]]]] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[44] A$=[ 44 ] + F= 0 S$=[44] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^] A$=[^^ ] + F= 0 S$=[^^] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[QQ] A$=[ QQ ] + F= 0 S$=[QQ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF] A$=[ FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[n] A$=[ n ] + F= 0 S$=[n] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[hh] A$=[ hh ] + F= 0 S$=[hh] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555] A$=[555 ] + F= 0 S$=[555] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[YYYY] A$=[ YYYY ] + F= 0 S$=[YYYY] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[w] A$=[ w ] + F= 0 S$=[w] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM] A$=[MMMM ] + F= 0 S$=[MMMM] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[JJJJ] A$=[ JJJJ ] + F= 0 S$=[JJJJ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[%%] A$=[ %% ] + F= 0 S$=[%%] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[*] A$=[ * ] + F= 0 S$=[*] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[@@@] A$=[ @@@ ] + F= 0 S$=[@@@] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I] A$=[I ] + F= 0 S$=[I] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ss] A$=[ ss ] + F= 0 S$=[ss] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[f] A$=[ f ] + F= 0 S$=[f] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[D] A$=[ D ] + F= 0 S$=[D] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[###] A$=[### ] + F= 0 S$=[###] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=['] A$=[ ' ] + F= 0 S$=['] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[dd] A$=[ dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[TT] A$=[ TT ] + F= 0 S$=[TT] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[vvv] A$=[ vvv ] + F= 0 S$=[vvv] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[X] A$=[ X ] + F= 0 S$=[X] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[%] A$=[ % ] + F= 0 S$=[%] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[5555] A$=[ 5555 ] + F= 0 S$=[5555] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF] A$=[FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[%%] A$=[ %% ] + F= 0 S$=[%%] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[~~~~] A$=[ ~~~~ ] + F= 0 S$=[~~~~] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[||] A$=[ || ] + F= 0 S$=[||] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[SSS] A$=[ SSS ] + F= 0 S$=[SSS] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[6666] A$=[ 6666 ] + F= 0 S$=[6666] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ww] A$=[ ww ] + F= 0 S$=[ww] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[1111] A$=[ 1111 ] + F= 0 S$=[1111] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[K] A$=[ K ] + F= 0 S$=[K] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ttttt] A$=[ ttttt ] + F= 0 S$=[ttttt] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[OOOOO] A$=[ OOOOO ] + F= 0 S$=[OOOOO] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[E] A$=[ E ] + F= 0 S$=[E] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[PPPPP] A$=[ PPPPP ] + F= 0 S$=[PPPPP] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[==] A$=[ == ] + F= 0 S$=[==] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[VVVV] A$=[ VVVV ] + F= 0 S$=[VVVV] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[c] A$=[ c ] + F= 0 S$=[c] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[yyyy] A$=[ yyyy ] + F= 0 S$=[yyyy] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TRIM_A_S.BAS b/NBS2/F_TRIM_A_S.BAS new file mode 100644 index 0000000..1c269e0 --- /dev/null +++ b/NBS2/F_TRIM_A_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:35 +REM FILENAME: F_TRIM_A_S.BAS +REM SYNTAX: S$ = TRIM$( A$ ) +REM UNIQUEID: F_TRIM_A_S +REM FUNCTION: TRIM$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = TRIM$( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", "" +DATA 2 , 0 , "", " " +DATA 3 , 0 , "3", "3" +DATA 4 , 0 , "z", "z" +DATA 5 , 0 , "", " " +DATA 6 , 0 , "3", " 3" +DATA 7 , 0 , "z", " z" +DATA 8 , 0 , "3", "3 " +DATA 9 , 0 , "z", "z " +DATA 10 , 0 , "3", " 3 " +DATA 11 , 0 , "z", " z " +DATA 12 , 0 , "LLLL", " LLLL" +DATA 13 , 0 , "''", " '' " +DATA 14 , 0 , "oo", " oo " +DATA 15 , 0 , "00", " 00 " +DATA 16 , 0 , "\\\\", " \\\\ " +DATA 17 , 0 , "lllll", " lllll " +DATA 18 , 0 , "uuuu", " uuuu " +DATA 19 , 0 , "a", " a " +DATA 20 , 0 , "", " " +DATA 21 , 0 , "hh", " hh " +DATA 22 , 0 , "h", " h " +DATA 23 , 0 , ")", " )" +DATA 24 , 0 , "5", " 5 " +DATA 25 , 0 , "2", " 2 " +DATA 26 , 0 , "-", " - " +DATA 27 , 0 , "dd", "dd " +DATA 28 , 0 , "tttt", " tttt " +DATA 29 , 0 , "::::", " :::: " +DATA 30 , 0 , "___", " ___ " +DATA 31 , 0 , "", " " +DATA 32 , 0 , "", " " +DATA 33 , 0 , "_____", " _____ " +DATA 34 , 0 , "S", " S " +DATA 35 , 0 , "FFFF", " FFFF " +DATA 36 , 0 , "kkk", " kkk" +DATA 37 , 0 , "NNNN", " NNNN " +DATA 38 , 0 , "mmmm", " mmmm " +DATA 39 , 0 , ",,,,,", " ,,,,, " +DATA 40 , 0 , "OO", "OO " +DATA 41 , 0 , "HHHH", " HHHH " +DATA 42 , 0 , "<", " < " +DATA 43 , 0 , "j", " j " +DATA 44 , 0 , "yyyy", " yyyy " +DATA 45 , 0 , "+++", " +++ " +DATA 46 , 0 , "o", "o " +DATA 47 , 0 , "((", " ((" +DATA 48 , 0 , "uu", " uu " +DATA 49 , 0 , "00", " 00 " +DATA 50 , 0 , "HH", " HH " +DATA 51 , 0 , "", " " +DATA 52 , 0 , "G", " G " +DATA 53 , 0 , "{{{{", " {{{{ " +DATA 54 , 0 , "]]]", " ]]] " +DATA 55 , 0 , "CCC", "CCC" +DATA 56 , 0 , "44", " 44 " +DATA 57 , 0 , "^^", "^^ " +DATA 58 , 0 , "QQ", " QQ " +DATA 59 , 0 , "FFFF", " FFFF " +DATA 60 , 0 , "n", " n " +DATA 61 , 0 , "hh", " hh " +DATA 62 , 0 , "555", "555 " +DATA 63 , 0 , "YYYY", " YYYY " +DATA 64 , 0 , "w", " w " +DATA 65 , 0 , "MMMM", "MMMM " +DATA 66 , 0 , "JJJJ", " JJJJ " +DATA 67 , 0 , "%%", " %% " +DATA 68 , 0 , "*", " * " +DATA 69 , 0 , "@@@", " @@@ " +DATA 70 , 0 , "I", "I " +DATA 71 , 0 , "ss", " ss " +DATA 72 , 0 , "f", " f " +DATA 73 , 0 , "D", " D " +DATA 74 , 0 , "###", "### " +DATA 75 , 0 , "'", " ' " +DATA 76 , 0 , "dd", " dd " +DATA 77 , 0 , "TT", " TT " +DATA 78 , 0 , "vvv", " vvv " +DATA 79 , 0 , "X", " X " +DATA 80 , 0 , "%", " % " +DATA 81 , 0 , "", " " +DATA 82 , 0 , "5555", " 5555 " +DATA 83 , 0 , "FFFF", "FFFF " +DATA 84 , 0 , "%%", " %% " +DATA 85 , 0 , "", " " +DATA 86 , 0 , "~~~~", " ~~~~ " +DATA 87 , 0 , "||", " || " +DATA 88 , 0 , "SSS", " SSS " +DATA 89 , 0 , "6666", " 6666 " +DATA 90 , 0 , "ww", " ww " +DATA 91 , 0 , "1111", " 1111 " +DATA 92 , 0 , "K", " K " +DATA 93 , 0 , "ttttt", " ttttt " +DATA 94 , 0 , "OOOOO", " OOOOO " +DATA 95 , 0 , "E", " E " +DATA 96 , 0 , "PPPPP", " PPPPP " +DATA 97 , 0 , "==", " == " +DATA 98 , 0 , "VVVV", " VVVV " +DATA 99 , 0 , "c", " c " +DATA 100 , 0 , "yyyy", " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_TRIM_A_S.OUT b/NBS2/F_TRIM_A_S.OUT new file mode 100644 index 0000000..6b1ccc2 --- /dev/null +++ b/NBS2/F_TRIM_A_S.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[z] A$=[ z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3] A$=[3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z] A$=[z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[3] A$=[ 3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[z] A$=[ z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[LLLL] A$=[ LLLL] + F= 0 S$=[LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[''] A$=[ '' ] + F= 0 S$=[''] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[oo] A$=[ oo ] + F= 0 S$=[oo] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[00] A$=[ 00 ] + F= 0 S$=[00] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[\\\\] A$=[ \\\\ ] + F= 0 S$=[\\\\] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[lllll] A$=[ lllll ] + F= 0 S$=[lllll] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[uuuu] A$=[ uuuu ] + F= 0 S$=[uuuu] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[a] A$=[ a ] + F= 0 S$=[a] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[hh] A$=[ hh ] + F= 0 S$=[hh] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[h] A$=[ h ] + F= 0 S$=[h] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[)] A$=[ )] + F= 0 S$=[)] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[5] A$=[ 5 ] + F= 0 S$=[5] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[2] A$=[ 2 ] + F= 0 S$=[2] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[-] A$=[ - ] + F= 0 S$=[-] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd] A$=[dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[tttt] A$=[ tttt ] + F= 0 S$=[tttt] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[::::] A$=[ :::: ] + F= 0 S$=[::::] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[___] A$=[ ___ ] + F= 0 S$=[___] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[_____] A$=[ _____ ] + F= 0 S$=[_____] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[S] A$=[ S ] + F= 0 S$=[S] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[FFFF] A$=[ FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[kkk] A$=[ kkk] + F= 0 S$=[kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[NNNN] A$=[ NNNN ] + F= 0 S$=[NNNN] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[mmmm] A$=[ mmmm ] + F= 0 S$=[mmmm] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[,,,,,] A$=[ ,,,,, ] + F= 0 S$=[,,,,,] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO] A$=[OO ] + F= 0 S$=[OO] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[HHHH] A$=[ HHHH ] + F= 0 S$=[HHHH] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[<] A$=[ < ] + F= 0 S$=[<] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[j] A$=[ j ] + F= 0 S$=[j] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[yyyy] A$=[ yyyy ] + F= 0 S$=[yyyy] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[+++] A$=[ +++ ] + F= 0 S$=[+++] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o] A$=[o ] + F= 0 S$=[o] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[((] A$=[ ((] + F= 0 S$=[((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[uu] A$=[ uu ] + F= 0 S$=[uu] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[00] A$=[ 00 ] + F= 0 S$=[00] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[HH] A$=[ HH ] + F= 0 S$=[HH] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[G] A$=[ G ] + F= 0 S$=[G] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[{{{{] A$=[ {{{{ ] + F= 0 S$=[{{{{] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[]]]] A$=[ ]]] ] + F= 0 S$=[]]]] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[44] A$=[ 44 ] + F= 0 S$=[44] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^] A$=[^^ ] + F= 0 S$=[^^] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[QQ] A$=[ QQ ] + F= 0 S$=[QQ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF] A$=[ FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[n] A$=[ n ] + F= 0 S$=[n] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[hh] A$=[ hh ] + F= 0 S$=[hh] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555] A$=[555 ] + F= 0 S$=[555] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[YYYY] A$=[ YYYY ] + F= 0 S$=[YYYY] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[w] A$=[ w ] + F= 0 S$=[w] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM] A$=[MMMM ] + F= 0 S$=[MMMM] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[JJJJ] A$=[ JJJJ ] + F= 0 S$=[JJJJ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[%%] A$=[ %% ] + F= 0 S$=[%%] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[*] A$=[ * ] + F= 0 S$=[*] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[@@@] A$=[ @@@ ] + F= 0 S$=[@@@] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I] A$=[I ] + F= 0 S$=[I] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ss] A$=[ ss ] + F= 0 S$=[ss] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[f] A$=[ f ] + F= 0 S$=[f] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[D] A$=[ D ] + F= 0 S$=[D] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[###] A$=[### ] + F= 0 S$=[###] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=['] A$=[ ' ] + F= 0 S$=['] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[dd] A$=[ dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[TT] A$=[ TT ] + F= 0 S$=[TT] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[vvv] A$=[ vvv ] + F= 0 S$=[vvv] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[X] A$=[ X ] + F= 0 S$=[X] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[%] A$=[ % ] + F= 0 S$=[%] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[5555] A$=[ 5555 ] + F= 0 S$=[5555] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF] A$=[FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[%%] A$=[ %% ] + F= 0 S$=[%%] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[~~~~] A$=[ ~~~~ ] + F= 0 S$=[~~~~] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[||] A$=[ || ] + F= 0 S$=[||] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[SSS] A$=[ SSS ] + F= 0 S$=[SSS] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[6666] A$=[ 6666 ] + F= 0 S$=[6666] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ww] A$=[ ww ] + F= 0 S$=[ww] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[1111] A$=[ 1111 ] + F= 0 S$=[1111] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[K] A$=[ K ] + F= 0 S$=[K] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ttttt] A$=[ ttttt ] + F= 0 S$=[ttttt] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[OOOOO] A$=[ OOOOO ] + F= 0 S$=[OOOOO] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[E] A$=[ E ] + F= 0 S$=[E] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[PPPPP] A$=[ PPPPP ] + F= 0 S$=[PPPPP] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[==] A$=[ == ] + F= 0 S$=[==] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[VVVV] A$=[ VVVV ] + F= 0 S$=[VVVV] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[c] A$=[ c ] + F= 0 S$=[c] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[yyyy] A$=[ yyyy ] + F= 0 S$=[yyyy] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TRIM_A_S.dif b/NBS2/F_TRIM_A_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_TRIM_A_S.run b/NBS2/F_TRIM_A_S.run new file mode 100644 index 0000000..b282de7 --- /dev/null +++ b/NBS2/F_TRIM_A_S.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[z] A$=[z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[3] A$=[ 3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[z] A$=[ z] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3] A$=[3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[z] A$=[z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[3] A$=[ 3 ] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[z] A$=[ z ] + F= 0 S$=[z] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[LLLL] A$=[ LLLL] + F= 0 S$=[LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[''] A$=[ '' ] + F= 0 S$=[''] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[oo] A$=[ oo ] + F= 0 S$=[oo] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[00] A$=[ 00 ] + F= 0 S$=[00] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[\\\\] A$=[ \\\\ ] + F= 0 S$=[\\\\] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[lllll] A$=[ lllll ] + F= 0 S$=[lllll] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[uuuu] A$=[ uuuu ] + F= 0 S$=[uuuu] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[a] A$=[ a ] + F= 0 S$=[a] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[hh] A$=[ hh ] + F= 0 S$=[hh] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[h] A$=[ h ] + F= 0 S$=[h] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[)] A$=[ )] + F= 0 S$=[)] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[5] A$=[ 5 ] + F= 0 S$=[5] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[2] A$=[ 2 ] + F= 0 S$=[2] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[-] A$=[ - ] + F= 0 S$=[-] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[dd] A$=[dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[tttt] A$=[ tttt ] + F= 0 S$=[tttt] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[::::] A$=[ :::: ] + F= 0 S$=[::::] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[___] A$=[ ___ ] + F= 0 S$=[___] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[_____] A$=[ _____ ] + F= 0 S$=[_____] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[S] A$=[ S ] + F= 0 S$=[S] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[FFFF] A$=[ FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[kkk] A$=[ kkk] + F= 0 S$=[kkk] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[NNNN] A$=[ NNNN ] + F= 0 S$=[NNNN] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[mmmm] A$=[ mmmm ] + F= 0 S$=[mmmm] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[,,,,,] A$=[ ,,,,, ] + F= 0 S$=[,,,,,] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO] A$=[OO ] + F= 0 S$=[OO] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[HHHH] A$=[ HHHH ] + F= 0 S$=[HHHH] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[<] A$=[ < ] + F= 0 S$=[<] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[j] A$=[ j ] + F= 0 S$=[j] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[yyyy] A$=[ yyyy ] + F= 0 S$=[yyyy] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[+++] A$=[ +++ ] + F= 0 S$=[+++] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[o] A$=[o ] + F= 0 S$=[o] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[((] A$=[ ((] + F= 0 S$=[((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[uu] A$=[ uu ] + F= 0 S$=[uu] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[00] A$=[ 00 ] + F= 0 S$=[00] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[HH] A$=[ HH ] + F= 0 S$=[HH] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[G] A$=[ G ] + F= 0 S$=[G] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[{{{{] A$=[ {{{{ ] + F= 0 S$=[{{{{] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[]]]] A$=[ ]]] ] + F= 0 S$=[]]]] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[44] A$=[ 44 ] + F= 0 S$=[44] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^] A$=[^^ ] + F= 0 S$=[^^] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[QQ] A$=[ QQ ] + F= 0 S$=[QQ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[FFFF] A$=[ FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[n] A$=[ n ] + F= 0 S$=[n] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[hh] A$=[ hh ] + F= 0 S$=[hh] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555] A$=[555 ] + F= 0 S$=[555] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[YYYY] A$=[ YYYY ] + F= 0 S$=[YYYY] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[w] A$=[ w ] + F= 0 S$=[w] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM] A$=[MMMM ] + F= 0 S$=[MMMM] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[JJJJ] A$=[ JJJJ ] + F= 0 S$=[JJJJ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[%%] A$=[ %% ] + F= 0 S$=[%%] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[*] A$=[ * ] + F= 0 S$=[*] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[@@@] A$=[ @@@ ] + F= 0 S$=[@@@] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I] A$=[I ] + F= 0 S$=[I] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ss] A$=[ ss ] + F= 0 S$=[ss] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[f] A$=[ f ] + F= 0 S$=[f] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[D] A$=[ D ] + F= 0 S$=[D] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[###] A$=[### ] + F= 0 S$=[###] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=['] A$=[ ' ] + F= 0 S$=['] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[dd] A$=[ dd ] + F= 0 S$=[dd] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[TT] A$=[ TT ] + F= 0 S$=[TT] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[vvv] A$=[ vvv ] + F= 0 S$=[vvv] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[X] A$=[ X ] + F= 0 S$=[X] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[%] A$=[ % ] + F= 0 S$=[%] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[5555] A$=[ 5555 ] + F= 0 S$=[5555] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF] A$=[FFFF ] + F= 0 S$=[FFFF] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[%%] A$=[ %% ] + F= 0 S$=[%%] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[] A$=[ ] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[~~~~] A$=[ ~~~~ ] + F= 0 S$=[~~~~] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[||] A$=[ || ] + F= 0 S$=[||] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[SSS] A$=[ SSS ] + F= 0 S$=[SSS] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[6666] A$=[ 6666 ] + F= 0 S$=[6666] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ww] A$=[ ww ] + F= 0 S$=[ww] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[1111] A$=[ 1111 ] + F= 0 S$=[1111] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[K] A$=[ K ] + F= 0 S$=[K] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ttttt] A$=[ ttttt ] + F= 0 S$=[ttttt] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[OOOOO] A$=[ OOOOO ] + F= 0 S$=[OOOOO] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[E] A$=[ E ] + F= 0 S$=[E] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[PPPPP] A$=[ PPPPP ] + F= 0 S$=[PPPPP] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[==] A$=[ == ] + F= 0 S$=[==] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[VVVV] A$=[ VVVV ] + F= 0 S$=[VVVV] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[c] A$=[ c ] + F= 0 S$=[c] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[yyyy] A$=[ yyyy ] + F= 0 S$=[yyyy] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TRUNCATE_X_Y_N.80 b/NBS2/F_TRUNCATE_X_Y_N.80 new file mode 100644 index 0000000..20d5478 --- /dev/null +++ b/NBS2/F_TRUNCATE_X_Y_N.80 @@ -0,0 +1,303 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-10 X=-1 Y=-1 + F= 0 N=-10 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .398107 X= .4 Y= .4 + F= 0 N= .398107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.51189 X=-.4 Y=-.4 + F= 0 N=-2.51189 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .502377 X= .6 Y= .6 + F= 0 N= .502377 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-3.98107 X=-.6 Y=-.6 + F= 0 N=-3.98107 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 Y= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 Y= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 Y= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 Y= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1.68744 X=-.227229 Y=-.227229 + F= 0 N=-1.68744 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1.73443 X=-.239157 Y=-.239157 + F= 0 N=-1.73443 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1.63526 X=-.213586 Y=-.213586 + F= 0 N=-1.63526 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 Y= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 Y= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1.89468 X=-.277537 Y=-.277537 + F= 0 N=-1.89468 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-3.02903 X=-.481303 Y=-.481303 + F= 0 N=-3.02903 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .366809 X= .43556 Y= .43556 + F= 0 N= .366809 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1.62544 X=-.210971 Y=-.210971 + F= 0 N=-1.62544 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.85244 X=-.455216 Y=-.455216 + F= 0 N=-2.85244 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 Y=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 Y= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 Y=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 Y= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 Y= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 Y= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 Y=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 Y=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 Y=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 Y= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 Y= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 Y= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 Y= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 Y= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 Y= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 Y=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 Y=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 Y=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 Y=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 Y=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-4.88427E+25 X=-25.6888 Y= +-25.6888 + F= 0 N=-4.88427E+25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 Y=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 Y=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 Y=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 Y=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 Y=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 Y=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 Y= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 Y=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 Y= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 Y= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 Y= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 Y=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 Y=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 Y= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 Y=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 Y=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 Y=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 Y=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 Y=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 Y=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 Y=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 Y=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 Y= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 Y= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 Y= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 Y= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 Y= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TRUNCATE_X_Y_N.BAS b/NBS2/F_TRUNCATE_X_Y_N.BAS new file mode 100644 index 0000000..9380cb3 --- /dev/null +++ b/NBS2/F_TRUNCATE_X_Y_N.BAS @@ -0,0 +1,184 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:36 +REM FILENAME: F_TRUNCATE_X_Y_N.BAS +REM SYNTAX: N = TRUNCATE( X, Y ) +REM UNIQUEID: F_TRUNCATE_X_Y_N +REM FUNCTION: TRUNCATE +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM X ACTUAL FUNCTION PARAMETER +REM Y ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, X, Y +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "X=";X, "Y=";Y +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = TRUNCATE( X, Y ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , 0 , 0 , 0 +DATA 2 , 0 , 1 , 1 , 1 +DATA 3 , 0 , -10 , -1 , -1 +DATA 4 , 0 , .398107 , .4 , .4 +DATA 5 , 0 , -2.51189 , -.4 , -.4 +DATA 6 , 0 , .502377 , .6 , .6 +DATA 7 , 0 , -3.98107 , -.6 , -.6 +DATA 8 , 1 , 0 , 254 , 254 +DATA 9 , 1 , 0 , 255 , 255 +DATA 10 , 1 , 0 , 256 , 256 +DATA 11 , 1 , 0 , 32000 , 32000 +DATA 12 , 0 , -1.68744 , -.227229 , -.227229 +DATA 13 , 0 , -1.73443 , -.239157 , -.239157 +DATA 14 , 0 , -1.63526 , -.213586 , -.213586 +DATA 15 , 0 , 0 , .274675 , .274675 +DATA 16 , 0 , 0 , .169766 , .169766 +DATA 17 , 0 , 0 , .318766 , .318766 +DATA 18 , 0 , 0 , 2.06658E-2 , 2.06658E-2 +DATA 19 , 0 , 0 , .188257 , .188257 +DATA 20 , 0 , -1.89468 , -.277537 , -.277537 +DATA 21 , 0 , -3.02903 , -.481303 , -.481303 +DATA 22 , 0 , .366809 , .43556 , .43556 +DATA 23 , 0 , -1.62544 , -.210971 , -.210971 +DATA 24 , 0 , -2.85244 , -.455216 , -.455216 +DATA 25 , 1 , 0 , -110.907 , -110.907 +DATA 26 , 1 , 0 , 105.632 , 105.632 +DATA 27 , 1 , 0 , -114.341 , -114.341 +DATA 28 , 1 , 0 , 109.706 , 109.706 +DATA 29 , 1 , 0 , 109.198 , 109.198 +DATA 30 , 1 , 0 , 85.8773 , 85.8773 +DATA 31 , 1 , 0 , -58.3548 , -58.3548 +DATA 32 , 0 , 29.6397 , 29.6397 , 29.6397 +DATA 33 , 1 , 0 , -108.36 , -108.36 +DATA 34 , 1 , 0 , -46.5199 , -46.5199 +DATA 35 , 1 , 0 , 112.521 , 112.521 +DATA 36 , 1 , 0 , 45.4151 , 45.4151 +DATA 37 , 1 , 0 , 101.129 , 101.129 +DATA 38 , 1 , 0 , 65.0473 , 65.0473 +DATA 39 , 1 , 0 , 48.4012 , 48.4012 +DATA 40 , 1 , 0 , 122.294 , 122.294 +DATA 41 , 1 , 0 , -56.1094 , -56.1094 +DATA 42 , 1 , 0 , -121.087 , -121.087 +DATA 43 , 1 , 0 , -123.517 , -123.517 +DATA 44 , 1 , 0 , -97.6301 , -97.6301 +DATA 45 , 1 , 0 , -64.0001 , -64.0001 +DATA 46 , 0 , -4.88427E+25 , -25.6888 , -25.6888 +DATA 47 , 0 , 14.8006 , 14.8006 , 14.8006 +DATA 48 , 1 , 0 , -61.0877 , -61.0877 +DATA 49 , 1 , 0 , -66.6381 , -66.6381 +DATA 50 , 1 , 0 , -5476.5 , -5476.5 +DATA 51 , 1 , 0 , -21210.3 , -21210.3 +DATA 52 , 1 , 0 , -28757.2 , -28757.2 +DATA 53 , 1 , 0 , -28732.2 , -28732.2 +DATA 54 , 1 , 0 , 12730.3 , 12730.3 +DATA 55 , 1 , 0 , -1830.69 , -1830.69 +DATA 56 , 1 , 0 , 5486.39 , 5486.39 +DATA 57 , 1 , 0 , 22405.9 , 22405.9 +DATA 58 , 1 , 0 , 30809.8 , 30809.8 +DATA 59 , 1 , 0 , -28930.6 , -28930.6 +DATA 60 , 1 , 0 , -6014.53 , -6014.53 +DATA 61 , 1 , 0 , 17414.6 , 17414.6 +DATA 62 , 1 , 0 , -10538.3 , -10538.3 +DATA 63 , 1 , 0 , -17536.3 , -17536.3 +DATA 64 , 1 , 0 , -8856.62 , -8856.62 +DATA 65 , 1 , 0 , -5140.12 , -5140.12 +DATA 66 , 1 , 0 , -8595.31 , -8595.31 +DATA 67 , 1 , 0 , -3382.87 , -3382.87 +DATA 68 , 1 , 0 , -5002.07 , -5002.07 +DATA 69 , 1 , 0 , -5800.72 , -5800.72 +DATA 70 , 1 , 0 , 29686.4 , 29686.4 +DATA 71 , 1 , 0 , 2571. , 2571. +DATA 72 , 1 , 0 , 31091. , 31091. +DATA 73 , 1 , 0 , 14819. , 14819. +DATA 74 , 1 , 0 , 3790.9 , 3790.9 +DATA 75 , 1 , 0 , -4.2981E+9 , -4.2981E+9 +DATA 76 , 1 , 0 , -7.05453E+8 , -7.05453E+8 +DATA 77 , 1 , 0 , -3.10179E+9 , -3.10179E+9 +DATA 78 , 1 , 0 , -4.86159E+9 , -4.86159E+9 +DATA 79 , 1 , 0 , -8.62908E+8 , -8.62908E+8 +DATA 80 , 1 , 0 , -3.4101E+9 , -3.4101E+9 +DATA 81 , 1 , 0 , 3.3889E+9 , 3.3889E+9 +DATA 82 , 1 , 0 , 2.49826E+9 , 2.49826E+9 +DATA 83 , 1 , 0 , 2.3491E+9 , 2.3491E+9 +DATA 84 , 1 , 0 , 1.94745E+8 , 1.94745E+8 +DATA 85 , 1 , 0 , 2.02475E+9 , 2.02475E+9 +DATA 86 , 1 , 0 , -2.26748E+9 , -2.26748E+9 +DATA 87 , 1 , 0 , -2.10587E+9 , -2.10587E+9 +DATA 88 , 1 , 0 , 4.23585E+9 , 4.23585E+9 +DATA 89 , 1 , 0 , -2.66524E+9 , -2.66524E+9 +DATA 90 , 1 , 0 , 4.01052E+9 , 4.01052E+9 +DATA 91 , 1 , 0 , -4.87912E+9 , -4.87912E+9 +DATA 92 , 1 , 0 , 1.77556E+9 , 1.77556E+9 +DATA 93 , 1 , 0 , 2.87705E+8 , 2.87705E+8 +DATA 94 , 1 , 0 , 1.99977E+8 , 1.99977E+8 +DATA 95 , 1 , 0 , -3.39941E+9 , -3.39941E+9 +DATA 96 , 1 , 0 , -3.49119E+9 , -3.49119E+9 +DATA 97 , 1 , 0 , -2.86324E+9 , -2.86324E+9 +DATA 98 , 1 , 0 , 4.20418E+9 , 4.20418E+9 +DATA 99 , 1 , 0 , -3.1518E+9 , -3.1518E+9 +DATA 100 , 1 , 0 , 4.60615E+9 , 4.60615E+9 +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_TRUNCATE_X_Y_N.OUT b/NBS2/F_TRUNCATE_X_Y_N.OUT new file mode 100644 index 0000000..f7b331c --- /dev/null +++ b/NBS2/F_TRUNCATE_X_Y_N.OUT @@ -0,0 +1,303 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-10 X=-1 Y=-1 + F= 0 N=-10 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .398107 X= .4 Y= .4 + F= 0 N= .398107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.51189 X=-.4 Y=-.4 + F= 0 N=-2.51189 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .502377 X= .6 Y= .6 + F= 0 N= .502377 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-3.98107 X=-.6 Y=-.6 + F= 0 N=-3.98107 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 Y= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 Y= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 Y= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 Y= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1.68744 X=-.227229 Y=-.227229 + F= 0 N=-1.68744 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1.73443 X=-.239157 Y=-.239157 + F= 0 N=-1.73443 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1.63526 X=-.213586 Y=-.213586 + F= 0 N=-1.63526 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 Y= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 Y= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1.89468 X=-.277537 Y=-.277537 + F= 0 N=-1.89468 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-3.02903 X=-.481303 Y=-.481303 + F= 0 N=-3.02903 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .366809 X= .43556 Y= .43556 + F= 0 N= .366809 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1.62544 X=-.210971 Y=-.210971 + F= 0 N=-1.62544 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.85244 X=-.455216 Y=-.455216 + F= 0 N=-2.85244 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 Y=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 Y= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 Y=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 Y= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 Y= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 Y= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 Y=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 Y=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 Y=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 Y= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 Y= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 Y= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 Y= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 Y= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 Y= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 Y=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 Y=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 Y=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 Y=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 Y=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-4.88427E+25 X=-25.6888 Y= +-25.6888 + F= 0 N=-4.88427E+25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 Y=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 Y=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 Y=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 Y=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 Y=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 Y=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 Y= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 Y=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 Y= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 Y= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 Y= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 Y=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 Y=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 Y= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 Y=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 Y=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 Y=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 Y=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 Y=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 Y=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 Y=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 Y=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 Y= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 Y= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 Y= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 Y= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 Y= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_TRUNCATE_X_Y_N.dif b/NBS2/F_TRUNCATE_X_Y_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_TRUNCATE_X_Y_N.run b/NBS2/F_TRUNCATE_X_Y_N.run new file mode 100644 index 0000000..20d5478 --- /dev/null +++ b/NBS2/F_TRUNCATE_X_Y_N.run @@ -0,0 +1,303 @@ +TESTCASE # 1 E= 0 R= 0 X= 0 Y= 0 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 0 R= 1 X= 1 Y= 1 + F= 0 N= 1 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R=-10 X=-1 Y=-1 + F= 0 N=-10 +*** TEST PASSED *** +TESTCASE # 4 E= 0 R= .398107 X= .4 Y= .4 + F= 0 N= .398107 +*** TEST PASSED *** +TESTCASE # 5 E= 0 R=-2.51189 X=-.4 Y=-.4 + F= 0 N=-2.51189 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= .502377 X= .6 Y= .6 + F= 0 N= .502377 +*** TEST PASSED *** +TESTCASE # 7 E= 0 R=-3.98107 X=-.6 Y=-.6 + F= 0 N=-3.98107 +*** TEST PASSED *** +TESTCASE # 8 E= 1 R= 0 X= 254 Y= 254 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 X= 255 Y= 255 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 1 R= 0 X= 256 Y= 256 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 X= 32000 Y= 32000 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 0 R=-1.68744 X=-.227229 Y=-.227229 + F= 0 N=-1.68744 +*** TEST PASSED *** +TESTCASE # 13 E= 0 R=-1.73443 X=-.239157 Y=-.239157 + F= 0 N=-1.73443 +*** TEST PASSED *** +TESTCASE # 14 E= 0 R=-1.63526 X=-.213586 Y=-.213586 + F= 0 N=-1.63526 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 X= .274675 Y= .274675 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 0 R= 0 X= .169766 Y= .169766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 0 R= 0 X= .318766 Y= .318766 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 0 R= 0 X= 2.06658E-2 Y= 2.06658E-2 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 0 R= 0 X= .188257 Y= .188257 + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 0 R=-1.89468 X=-.277537 Y=-.277537 + F= 0 N=-1.89468 +*** TEST PASSED *** +TESTCASE # 21 E= 0 R=-3.02903 X=-.481303 Y=-.481303 + F= 0 N=-3.02903 +*** TEST PASSED *** +TESTCASE # 22 E= 0 R= .366809 X= .43556 Y= .43556 + F= 0 N= .366809 +*** TEST PASSED *** +TESTCASE # 23 E= 0 R=-1.62544 X=-.210971 Y=-.210971 + F= 0 N=-1.62544 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R=-2.85244 X=-.455216 Y=-.455216 + F= 0 N=-2.85244 +*** TEST PASSED *** +TESTCASE # 25 E= 1 R= 0 X=-110.907 Y=-110.907 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 X= 105.632 Y= 105.632 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 X=-114.341 Y=-114.341 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 X= 109.706 Y= 109.706 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 X= 109.198 Y= 109.198 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 X= 85.8773 Y= 85.8773 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 X=-58.3548 Y=-58.3548 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 0 R= 29.6397 X= 29.6397 Y= 29.6397 + F= 0 N= 29.6397 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 X=-108.36 Y=-108.36 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 X=-46.5199 Y=-46.5199 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 X= 112.521 Y= 112.521 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 X= 45.4151 Y= 45.4151 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 X= 101.129 Y= 101.129 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 X= 65.0473 Y= 65.0473 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 X= 48.4012 Y= 48.4012 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 X= 122.294 Y= 122.294 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 X=-56.1094 Y=-56.1094 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 X=-121.087 Y=-121.087 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 X=-123.517 Y=-123.517 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 X=-97.6301 Y=-97.6301 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 X=-64.0001 Y=-64.0001 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 0 R=-4.88427E+25 X=-25.6888 Y= +-25.6888 + F= 0 N=-4.88427E+25 +*** TEST PASSED *** +TESTCASE # 47 E= 0 R= 14.8006 X= 14.8006 Y= 14.8006 + F= 0 N= 14.8006 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 X=-61.0877 Y=-61.0877 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 1 R= 0 X=-66.6381 Y=-66.6381 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 X=-5476.5 Y=-5476.5 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 X=-21210.3 Y=-21210.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 X=-28757.2 Y=-28757.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 X=-28732.2 Y=-28732.2 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 X= 12730.3 Y= 12730.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 X=-1830.69 Y=-1830.69 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 1 R= 0 X= 5486.39 Y= 5486.39 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 X= 22405.9 Y= 22405.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 X= 30809.8 Y= 30809.8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 X=-28930.6 Y=-28930.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 X=-6014.53 Y=-6014.53 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 X= 17414.6 Y= 17414.6 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 1 R= 0 X=-10538.3 Y=-10538.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 X=-17536.3 Y=-17536.3 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 X=-8856.62 Y=-8856.62 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 X=-5140.12 Y=-5140.12 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 X=-8595.31 Y=-8595.31 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 X=-3382.87 Y=-3382.87 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 X=-5002.07 Y=-5002.07 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 X=-5800.72 Y=-5800.72 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 X= 29686.4 Y= 29686.4 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 X= 2571 Y= 2571 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 X= 31091 Y= 31091 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 X= 14819 Y= 14819 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 X= 3790.9 Y= 3790.9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 X=-4.2981E+9 Y=-4.2981E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 X=-7.05453E+8 Y=-7.05453E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 X=-3.10179E+9 Y=-3.10179E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 X=-4.86159E+9 Y=-4.86159E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 X=-8.62908E+8 Y=-8.62908E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 X=-3.4101E+9 Y=-3.4101E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 X= 3.3889E+9 Y= 3.3889E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 1 R= 0 X= 2.49826E+9 Y= 2.49826E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 X= 2.3491E+9 Y= 2.3491E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 X= 1.94745E+8 Y= 1.94745E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 X= 2.02475E+9 Y= 2.02475E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 X=-2.26748E+9 Y=-2.26748E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 X=-2.10587E+9 Y=-2.10587E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 X= 4.23585E+9 Y= 4.23585E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 1 R= 0 X=-2.66524E+9 Y=-2.66524E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 X= 4.01052E+9 Y= 4.01052E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 1 R= 0 X=-4.87912E+9 Y=-4.87912E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 X= 1.77556E+9 Y= 1.77556E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 X= 2.87705E+8 Y= 2.87705E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 X= 1.99977E+8 Y= 1.99977E+8 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 X=-3.39941E+9 Y=-3.39941E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 X=-3.49119E+9 Y=-3.49119E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 X=-2.86324E+9 Y=-2.86324E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 X= 4.20418E+9 Y= 4.20418E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 X=-3.1518E+9 Y=-3.1518E+9 + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 X= 4.60615E+9 Y= + 4.60615E+9 + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_UCASE_A_S.80 b/NBS2/F_UCASE_A_S.80 new file mode 100644 index 0000000..9ffdb73 --- /dev/null +++ b/NBS2/F_UCASE_A_S.80 @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[Z] A$=[z] + F= 0 S$=[Z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ Z] A$=[ z] + F= 0 S$=[ Z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[Z ] A$=[z ] + F= 0 S$=[Z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ Z ] A$=[ z ] + F= 0 S$=[ Z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ LLLL] A$=[ LLLL] + F= 0 S$=[ LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ '' ] A$=[ '' ] + F= 0 S$=[ '' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ OO ] A$=[ oo ] + F= 0 S$=[ OO ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\ ] A$=[ \\\\ ] + F= 0 S$=[ \\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ LLLLL ] A$=[ lllll ] + F= 0 S$=[ LLLLL ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ UUUU ] A$=[ uuuu ] + F= 0 S$=[ UUUU ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ A ] A$=[ a ] + F= 0 S$=[ A ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ HH ] A$=[ hh ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ H ] A$=[ h ] + F= 0 S$=[ H ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5 ] A$=[ 5 ] + F= 0 S$=[ 5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2 ] A$=[ 2 ] + F= 0 S$=[ 2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[DD ] A$=[dd ] + F= 0 S$=[DD ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ TTTT ] A$=[ tttt ] + F= 0 S$=[ TTTT ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____ ] A$=[ _____ ] + F= 0 S$=[ _____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ S ] A$=[ S ] + F= 0 S$=[ S ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ KKK] A$=[ kkk] + F= 0 S$=[ KKK] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ MMMM ] A$=[ mmmm ] + F= 0 S$=[ MMMM ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ HHHH ] A$=[ HHHH ] + F= 0 S$=[ HHHH ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ < ] A$=[ < ] + F= 0 S$=[ < ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ J ] A$=[ j ] + F= 0 S$=[ J ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ YYYY ] A$=[ yyyy ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++ ] A$=[ +++ ] + F= 0 S$=[ +++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[O ] A$=[o ] + F= 0 S$=[O ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ UU ] A$=[ uu ] + F= 0 S$=[ UU ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ HH ] A$=[ HH ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ G ] A$=[ G ] + F= 0 S$=[ G ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{ ] A$=[ {{{{ ] + F= 0 S$=[ {{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]] ] A$=[ ]]] ] + F= 0 S$=[ ]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44 ] A$=[ 44 ] + F= 0 S$=[ 44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ QQ ] A$=[ QQ ] + F= 0 S$=[ QQ ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ FFFF ] A$=[ FFFF ] + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ N ] A$=[ n ] + F= 0 S$=[ N ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ HH ] A$=[ hh ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ YYYY ] A$=[ YYYY ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ W ] A$=[ w ] + F= 0 S$=[ W ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM ] A$=[MMMM ] + F= 0 S$=[MMMM ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ JJJJ ] A$=[ JJJJ ] + F= 0 S$=[ JJJJ ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ * ] A$=[ * ] + F= 0 S$=[ * ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@ ] A$=[ @@@ ] + F= 0 S$=[ @@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I ] A$=[I ] + F= 0 S$=[I ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ SS ] A$=[ ss ] + F= 0 S$=[ SS ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ F ] A$=[ f ] + F= 0 S$=[ F ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ D ] A$=[ D ] + F= 0 S$=[ D ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ ' ] A$=[ ' ] + F= 0 S$=[ ' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ DD ] A$=[ dd ] + F= 0 S$=[ DD ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ TT ] A$=[ TT ] + F= 0 S$=[ TT ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ VVV ] A$=[ vvv ] + F= 0 S$=[ VVV ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ X ] A$=[ X ] + F= 0 S$=[ X ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ % ] A$=[ % ] + F= 0 S$=[ % ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555 ] A$=[ 5555 ] + F= 0 S$=[ 5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF ] A$=[FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ || ] A$=[ || ] + F= 0 S$=[ || ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ SSS ] A$=[ SSS ] + F= 0 S$=[ SSS ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666 ] A$=[ 6666 ] + F= 0 S$=[ 6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ WW ] A$=[ ww ] + F= 0 S$=[ WW ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111 ] A$=[ 1111 ] + F= 0 S$=[ 1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ K ] A$=[ K ] + F= 0 S$=[ K ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ TTTTT ] A$=[ ttttt ] + F= 0 S$=[ TTTTT ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ OOOOO ] A$=[ OOOOO ] + F= 0 S$=[ OOOOO ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ E ] A$=[ E ] + F= 0 S$=[ E ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ PPPPP ] A$=[ PPPPP ] + F= 0 S$=[ PPPPP ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ == ] A$=[ == ] + F= 0 S$=[ == ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ VVVV ] A$=[ VVVV ] + F= 0 S$=[ VVVV ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ C ] A$=[ c ] + F= 0 S$=[ C ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ YYYY ] A$=[ + yyyy ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_UCASE_A_S.BAS b/NBS2/F_UCASE_A_S.BAS new file mode 100644 index 0000000..ca78875 --- /dev/null +++ b/NBS2/F_UCASE_A_S.BAS @@ -0,0 +1,159 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:36 +REM FILENAME: F_UCASE_A_S.BAS +REM SYNTAX: S$ = UCASE$( A$ ) +REM UNIQUEID: F_UCASE_A_S +REM FUNCTION: UCASE$ +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R$ EXPECTED FUNCTION RESULT +REM S$ ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R$, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R$=[";R$;"]", "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 S$ = UCASE$( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"S$=[";S$;"]" +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R$ <> S$ THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 0 , "", "" +DATA 2 , 0 , " ", " " +DATA 3 , 0 , "3", "3" +DATA 4 , 0 , "Z", "z" +DATA 5 , 0 , " ", " " +DATA 6 , 0 , " 3", " 3" +DATA 7 , 0 , " Z", " z" +DATA 8 , 0 , "3 ", "3 " +DATA 9 , 0 , "Z ", "z " +DATA 10 , 0 , " 3 ", " 3 " +DATA 11 , 0 , " Z ", " z " +DATA 12 , 0 , " LLLL", " LLLL" +DATA 13 , 0 , " '' ", " '' " +DATA 14 , 0 , " OO ", " oo " +DATA 15 , 0 , " 00 ", " 00 " +DATA 16 , 0 , " \\\\ ", " \\\\ " +DATA 17 , 0 , " LLLLL ", " lllll " +DATA 18 , 0 , " UUUU ", " uuuu " +DATA 19 , 0 , " A ", " a " +DATA 20 , 0 , " ", " " +DATA 21 , 0 , " HH ", " hh " +DATA 22 , 0 , " H ", " h " +DATA 23 , 0 , " )", " )" +DATA 24 , 0 , " 5 ", " 5 " +DATA 25 , 0 , " 2 ", " 2 " +DATA 26 , 0 , " - ", " - " +DATA 27 , 0 , "DD ", "dd " +DATA 28 , 0 , " TTTT ", " tttt " +DATA 29 , 0 , " :::: ", " :::: " +DATA 30 , 0 , " ___ ", " ___ " +DATA 31 , 0 , " ", " " +DATA 32 , 0 , " ", " " +DATA 33 , 0 , " _____ ", " _____ " +DATA 34 , 0 , " S ", " S " +DATA 35 , 0 , " FFFF ", " FFFF " +DATA 36 , 0 , " KKK", " kkk" +DATA 37 , 0 , " NNNN ", " NNNN " +DATA 38 , 0 , " MMMM ", " mmmm " +DATA 39 , 0 , " ,,,,, ", " ,,,,, " +DATA 40 , 0 , "OO ", "OO " +DATA 41 , 0 , " HHHH ", " HHHH " +DATA 42 , 0 , " < ", " < " +DATA 43 , 0 , " J ", " j " +DATA 44 , 0 , " YYYY ", " yyyy " +DATA 45 , 0 , " +++ ", " +++ " +DATA 46 , 0 , "O ", "o " +DATA 47 , 0 , " ((", " ((" +DATA 48 , 0 , " UU ", " uu " +DATA 49 , 0 , " 00 ", " 00 " +DATA 50 , 0 , " HH ", " HH " +DATA 51 , 0 , " ", " " +DATA 52 , 0 , " G ", " G " +DATA 53 , 0 , " {{{{ ", " {{{{ " +DATA 54 , 0 , " ]]] ", " ]]] " +DATA 55 , 0 , "CCC", "CCC" +DATA 56 , 0 , " 44 ", " 44 " +DATA 57 , 0 , "^^ ", "^^ " +DATA 58 , 0 , " QQ ", " QQ " +DATA 59 , 0 , " FFFF ", " FFFF " +DATA 60 , 0 , " N ", " n " +DATA 61 , 0 , " HH ", " hh " +DATA 62 , 0 , "555 ", "555 " +DATA 63 , 0 , " YYYY ", " YYYY " +DATA 64 , 0 , " W ", " w " +DATA 65 , 0 , "MMMM ", "MMMM " +DATA 66 , 0 , " JJJJ ", " JJJJ " +DATA 67 , 0 , " %% ", " %% " +DATA 68 , 0 , " * ", " * " +DATA 69 , 0 , " @@@ ", " @@@ " +DATA 70 , 0 , "I ", "I " +DATA 71 , 0 , " SS ", " ss " +DATA 72 , 0 , " F ", " f " +DATA 73 , 0 , " D ", " D " +DATA 74 , 0 , "### ", "### " +DATA 75 , 0 , " ' ", " ' " +DATA 76 , 0 , " DD ", " dd " +DATA 77 , 0 , " TT ", " TT " +DATA 78 , 0 , " VVV ", " vvv " +DATA 79 , 0 , " X ", " X " +DATA 80 , 0 , " % ", " % " +DATA 81 , 0 , " ", " " +DATA 82 , 0 , " 5555 ", " 5555 " +DATA 83 , 0 , "FFFF ", "FFFF " +DATA 84 , 0 , " %% ", " %% " +DATA 85 , 0 , " ", " " +DATA 86 , 0 , " ~~~~ ", " ~~~~ " +DATA 87 , 0 , " || ", " || " +DATA 88 , 0 , " SSS ", " SSS " +DATA 89 , 0 , " 6666 ", " 6666 " +DATA 90 , 0 , " WW ", " ww " +DATA 91 , 0 , " 1111 ", " 1111 " +DATA 92 , 0 , " K ", " K " +DATA 93 , 0 , " TTTTT ", " ttttt " +DATA 94 , 0 , " OOOOO ", " OOOOO " +DATA 95 , 0 , " E ", " E " +DATA 96 , 0 , " PPPPP ", " PPPPP " +DATA 97 , 0 , " == ", " == " +DATA 98 , 0 , " VVVV ", " VVVV " +DATA 99 , 0 , " C ", " c " +DATA 100 , 0 , " YYYY ", " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_UCASE_A_S.OUT b/NBS2/F_UCASE_A_S.OUT new file mode 100644 index 0000000..1b1117d --- /dev/null +++ b/NBS2/F_UCASE_A_S.OUT @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[Z] A$=[z] + F= 0 S$=[Z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ Z] A$=[ z] + F= 0 S$=[ Z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[Z ] A$=[z ] + F= 0 S$=[Z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ Z ] A$=[ z ] + F= 0 S$=[ Z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ LLLL] A$=[ LLLL] + F= 0 S$=[ LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ '' ] A$=[ '' ] + F= 0 S$=[ '' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ OO ] A$=[ oo ] + F= 0 S$=[ OO ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\ ] A$=[ \\\\ ] + F= 0 S$=[ \\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ LLLLL ] A$=[ lllll ] + F= 0 S$=[ LLLLL ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ UUUU ] A$=[ uuuu ] + F= 0 S$=[ UUUU ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ A ] A$=[ a ] + F= 0 S$=[ A ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ HH ] A$=[ hh ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ H ] A$=[ h ] + F= 0 S$=[ H ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5 ] A$=[ 5 ] + F= 0 S$=[ 5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2 ] A$=[ 2 ] + F= 0 S$=[ 2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[DD ] A$=[dd ] + F= 0 S$=[DD ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ TTTT ] A$=[ tttt ] + F= 0 S$=[ TTTT ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____ ] A$=[ _____ ] + F= 0 S$=[ _____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ S ] A$=[ S ] + F= 0 S$=[ S ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ KKK] A$=[ kkk] + F= 0 S$=[ KKK] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ MMMM ] A$=[ mmmm ] + F= 0 S$=[ MMMM ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ HHHH ] A$=[ HHHH ] + F= 0 S$=[ HHHH ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ < ] A$=[ < ] + F= 0 S$=[ < ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ J ] A$=[ j ] + F= 0 S$=[ J ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ YYYY ] A$=[ yyyy ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++ ] A$=[ +++ ] + F= 0 S$=[ +++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[O ] A$=[o ] + F= 0 S$=[O ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ UU ] A$=[ uu ] + F= 0 S$=[ UU ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ HH ] A$=[ HH ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ G ] A$=[ G ] + F= 0 S$=[ G ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{ ] A$=[ {{{{ ] + F= 0 S$=[ {{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]] ] A$=[ ]]] ] + F= 0 S$=[ ]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44 ] A$=[ 44 ] + F= 0 S$=[ 44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ QQ ] A$=[ QQ ] + F= 0 S$=[ QQ ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ FFFF ] A$=[ FFFF ] + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ N ] A$=[ n ] + F= 0 S$=[ N ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ HH ] A$=[ hh ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ YYYY ] A$=[ YYYY ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ W ] A$=[ w ] + F= 0 S$=[ W ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM ] A$=[MMMM ] + F= 0 S$=[MMMM ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ JJJJ ] A$=[ JJJJ ] + F= 0 S$=[ JJJJ ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ * ] A$=[ * ] + F= 0 S$=[ * ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@ ] A$=[ @@@ ] + F= 0 S$=[ @@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I ] A$=[I ] + F= 0 S$=[I ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ SS ] A$=[ ss ] + F= 0 S$=[ SS ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ F ] A$=[ f ] + F= 0 S$=[ F ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ D ] A$=[ D ] + F= 0 S$=[ D ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ ' ] A$=[ ' ] + F= 0 S$=[ ' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ DD ] A$=[ dd ] + F= 0 S$=[ DD ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ TT ] A$=[ TT ] + F= 0 S$=[ TT ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ VVV ] A$=[ vvv ] + F= 0 S$=[ VVV ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ X ] A$=[ X ] + F= 0 S$=[ X ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ % ] A$=[ % ] + F= 0 S$=[ % ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555 ] A$=[ 5555 ] + F= 0 S$=[ 5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF ] A$=[FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ || ] A$=[ || ] + F= 0 S$=[ || ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ SSS ] A$=[ SSS ] + F= 0 S$=[ SSS ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666 ] A$=[ 6666 ] + F= 0 S$=[ 6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ WW ] A$=[ ww ] + F= 0 S$=[ WW ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111 ] A$=[ 1111 ] + F= 0 S$=[ 1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ K ] A$=[ K ] + F= 0 S$=[ K ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ TTTTT ] A$=[ ttttt ] + F= 0 S$=[ TTTTT ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ OOOOO ] A$=[ OOOOO ] + F= 0 S$=[ OOOOO ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ E ] A$=[ E ] + F= 0 S$=[ E ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ PPPPP ] A$=[ PPPPP ] + F= 0 S$=[ PPPPP ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ == ] A$=[ == ] + F= 0 S$=[ == ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ VVVV ] A$=[ VVVV ] + F= 0 S$=[ VVVV ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ C ] A$=[ c ] + F= 0 S$=[ C ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ YYYY ] A$=[ + yyyy ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_UCASE_A_S.dif b/NBS2/F_UCASE_A_S.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_UCASE_A_S.run b/NBS2/F_UCASE_A_S.run new file mode 100644 index 0000000..9ffdb73 --- /dev/null +++ b/NBS2/F_UCASE_A_S.run @@ -0,0 +1,302 @@ +TESTCASE # 1 E= 0 R$=[] A$=[] + F= 0 S$=[] +*** TEST PASSED *** +TESTCASE # 2 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 3 E= 0 R$=[3] A$=[3] + F= 0 S$=[3] +*** TEST PASSED *** +TESTCASE # 4 E= 0 R$=[Z] A$=[z] + F= 0 S$=[Z] +*** TEST PASSED *** +TESTCASE # 5 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 6 E= 0 R$=[ 3] A$=[ 3] + F= 0 S$=[ 3] +*** TEST PASSED *** +TESTCASE # 7 E= 0 R$=[ Z] A$=[ z] + F= 0 S$=[ Z] +*** TEST PASSED *** +TESTCASE # 8 E= 0 R$=[3 ] A$=[3 ] + F= 0 S$=[3 ] +*** TEST PASSED *** +TESTCASE # 9 E= 0 R$=[Z ] A$=[z ] + F= 0 S$=[Z ] +*** TEST PASSED *** +TESTCASE # 10 E= 0 R$=[ 3 ] A$=[ 3 ] + F= 0 S$=[ 3 ] +*** TEST PASSED *** +TESTCASE # 11 E= 0 R$=[ Z ] A$=[ z ] + F= 0 S$=[ Z ] +*** TEST PASSED *** +TESTCASE # 12 E= 0 R$=[ LLLL] A$=[ LLLL] + F= 0 S$=[ LLLL] +*** TEST PASSED *** +TESTCASE # 13 E= 0 R$=[ '' ] A$=[ '' ] + F= 0 S$=[ '' ] +*** TEST PASSED *** +TESTCASE # 14 E= 0 R$=[ OO ] A$=[ oo ] + F= 0 S$=[ OO ] +*** TEST PASSED *** +TESTCASE # 15 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 16 E= 0 R$=[ \\\\ ] A$=[ \\\\ ] + F= 0 S$=[ \\\\ ] +*** TEST PASSED *** +TESTCASE # 17 E= 0 R$=[ LLLLL ] A$=[ lllll ] + F= 0 S$=[ LLLLL ] +*** TEST PASSED *** +TESTCASE # 18 E= 0 R$=[ UUUU ] A$=[ uuuu ] + F= 0 S$=[ UUUU ] +*** TEST PASSED *** +TESTCASE # 19 E= 0 R$=[ A ] A$=[ a ] + F= 0 S$=[ A ] +*** TEST PASSED *** +TESTCASE # 20 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 21 E= 0 R$=[ HH ] A$=[ hh ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 22 E= 0 R$=[ H ] A$=[ h ] + F= 0 S$=[ H ] +*** TEST PASSED *** +TESTCASE # 23 E= 0 R$=[ )] A$=[ )] + F= 0 S$=[ )] +*** TEST PASSED *** +TESTCASE # 24 E= 0 R$=[ 5 ] A$=[ 5 ] + F= 0 S$=[ 5 ] +*** TEST PASSED *** +TESTCASE # 25 E= 0 R$=[ 2 ] A$=[ 2 ] + F= 0 S$=[ 2 ] +*** TEST PASSED *** +TESTCASE # 26 E= 0 R$=[ - ] A$=[ - ] + F= 0 S$=[ - ] +*** TEST PASSED *** +TESTCASE # 27 E= 0 R$=[DD ] A$=[dd ] + F= 0 S$=[DD ] +*** TEST PASSED *** +TESTCASE # 28 E= 0 R$=[ TTTT ] A$=[ tttt ] + F= 0 S$=[ TTTT ] +*** TEST PASSED *** +TESTCASE # 29 E= 0 R$=[ :::: ] A$=[ :::: ] + F= 0 S$=[ :::: ] +*** TEST PASSED *** +TESTCASE # 30 E= 0 R$=[ ___ ] A$=[ ___ ] + F= 0 S$=[ ___ ] +*** TEST PASSED *** +TESTCASE # 31 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 32 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 33 E= 0 R$=[ _____ ] A$=[ _____ ] + F= 0 S$=[ _____ ] +*** TEST PASSED *** +TESTCASE # 34 E= 0 R$=[ S ] A$=[ S ] + F= 0 S$=[ S ] +*** TEST PASSED *** +TESTCASE # 35 E= 0 R$=[ FFFF ] A$=[ FFFF ] + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 36 E= 0 R$=[ KKK] A$=[ kkk] + F= 0 S$=[ KKK] +*** TEST PASSED *** +TESTCASE # 37 E= 0 R$=[ NNNN ] A$=[ NNNN ] + F= 0 S$=[ NNNN ] +*** TEST PASSED *** +TESTCASE # 38 E= 0 R$=[ MMMM ] A$=[ mmmm ] + F= 0 S$=[ MMMM ] +*** TEST PASSED *** +TESTCASE # 39 E= 0 R$=[ ,,,,, ] A$=[ ,,,,, ] + F= 0 S$=[ ,,,,, ] +*** TEST PASSED *** +TESTCASE # 40 E= 0 R$=[OO ] A$=[OO ] + F= 0 S$=[OO ] +*** TEST PASSED *** +TESTCASE # 41 E= 0 R$=[ HHHH ] A$=[ HHHH ] + F= 0 S$=[ HHHH ] +*** TEST PASSED *** +TESTCASE # 42 E= 0 R$=[ < ] A$=[ < ] + F= 0 S$=[ < ] +*** TEST PASSED *** +TESTCASE # 43 E= 0 R$=[ J ] A$=[ j ] + F= 0 S$=[ J ] +*** TEST PASSED *** +TESTCASE # 44 E= 0 R$=[ YYYY ] A$=[ yyyy ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +TESTCASE # 45 E= 0 R$=[ +++ ] A$=[ +++ ] + F= 0 S$=[ +++ ] +*** TEST PASSED *** +TESTCASE # 46 E= 0 R$=[O ] A$=[o ] + F= 0 S$=[O ] +*** TEST PASSED *** +TESTCASE # 47 E= 0 R$=[ ((] A$=[ ((] + F= 0 S$=[ ((] +*** TEST PASSED *** +TESTCASE # 48 E= 0 R$=[ UU ] A$=[ uu ] + F= 0 S$=[ UU ] +*** TEST PASSED *** +TESTCASE # 49 E= 0 R$=[ 00 ] A$=[ 00 ] + F= 0 S$=[ 00 ] +*** TEST PASSED *** +TESTCASE # 50 E= 0 R$=[ HH ] A$=[ HH ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 51 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 52 E= 0 R$=[ G ] A$=[ G ] + F= 0 S$=[ G ] +*** TEST PASSED *** +TESTCASE # 53 E= 0 R$=[ {{{{ ] A$=[ {{{{ ] + F= 0 S$=[ {{{{ ] +*** TEST PASSED *** +TESTCASE # 54 E= 0 R$=[ ]]] ] A$=[ ]]] ] + F= 0 S$=[ ]]] ] +*** TEST PASSED *** +TESTCASE # 55 E= 0 R$=[CCC] A$=[CCC] + F= 0 S$=[CCC] +*** TEST PASSED *** +TESTCASE # 56 E= 0 R$=[ 44 ] A$=[ 44 ] + F= 0 S$=[ 44 ] +*** TEST PASSED *** +TESTCASE # 57 E= 0 R$=[^^ ] A$=[^^ ] + F= 0 S$=[^^ ] +*** TEST PASSED *** +TESTCASE # 58 E= 0 R$=[ QQ ] A$=[ QQ ] + F= 0 S$=[ QQ ] +*** TEST PASSED *** +TESTCASE # 59 E= 0 R$=[ FFFF ] A$=[ FFFF ] + F= 0 S$=[ FFFF ] +*** TEST PASSED *** +TESTCASE # 60 E= 0 R$=[ N ] A$=[ n ] + F= 0 S$=[ N ] +*** TEST PASSED *** +TESTCASE # 61 E= 0 R$=[ HH ] A$=[ hh ] + F= 0 S$=[ HH ] +*** TEST PASSED *** +TESTCASE # 62 E= 0 R$=[555 ] A$=[555 ] + F= 0 S$=[555 ] +*** TEST PASSED *** +TESTCASE # 63 E= 0 R$=[ YYYY ] A$=[ YYYY ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +TESTCASE # 64 E= 0 R$=[ W ] A$=[ w ] + F= 0 S$=[ W ] +*** TEST PASSED *** +TESTCASE # 65 E= 0 R$=[MMMM ] A$=[MMMM ] + F= 0 S$=[MMMM ] +*** TEST PASSED *** +TESTCASE # 66 E= 0 R$=[ JJJJ ] A$=[ JJJJ ] + F= 0 S$=[ JJJJ ] +*** TEST PASSED *** +TESTCASE # 67 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 68 E= 0 R$=[ * ] A$=[ * ] + F= 0 S$=[ * ] +*** TEST PASSED *** +TESTCASE # 69 E= 0 R$=[ @@@ ] A$=[ @@@ ] + F= 0 S$=[ @@@ ] +*** TEST PASSED *** +TESTCASE # 70 E= 0 R$=[I ] A$=[I ] + F= 0 S$=[I ] +*** TEST PASSED *** +TESTCASE # 71 E= 0 R$=[ SS ] A$=[ ss ] + F= 0 S$=[ SS ] +*** TEST PASSED *** +TESTCASE # 72 E= 0 R$=[ F ] A$=[ f ] + F= 0 S$=[ F ] +*** TEST PASSED *** +TESTCASE # 73 E= 0 R$=[ D ] A$=[ D ] + F= 0 S$=[ D ] +*** TEST PASSED *** +TESTCASE # 74 E= 0 R$=[### ] A$=[### ] + F= 0 S$=[### ] +*** TEST PASSED *** +TESTCASE # 75 E= 0 R$=[ ' ] A$=[ ' ] + F= 0 S$=[ ' ] +*** TEST PASSED *** +TESTCASE # 76 E= 0 R$=[ DD ] A$=[ dd ] + F= 0 S$=[ DD ] +*** TEST PASSED *** +TESTCASE # 77 E= 0 R$=[ TT ] A$=[ TT ] + F= 0 S$=[ TT ] +*** TEST PASSED *** +TESTCASE # 78 E= 0 R$=[ VVV ] A$=[ vvv ] + F= 0 S$=[ VVV ] +*** TEST PASSED *** +TESTCASE # 79 E= 0 R$=[ X ] A$=[ X ] + F= 0 S$=[ X ] +*** TEST PASSED *** +TESTCASE # 80 E= 0 R$=[ % ] A$=[ % ] + F= 0 S$=[ % ] +*** TEST PASSED *** +TESTCASE # 81 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 82 E= 0 R$=[ 5555 ] A$=[ 5555 ] + F= 0 S$=[ 5555 ] +*** TEST PASSED *** +TESTCASE # 83 E= 0 R$=[FFFF ] A$=[FFFF ] + F= 0 S$=[FFFF ] +*** TEST PASSED *** +TESTCASE # 84 E= 0 R$=[ %% ] A$=[ %% ] + F= 0 S$=[ %% ] +*** TEST PASSED *** +TESTCASE # 85 E= 0 R$=[ ] A$=[ ] + F= 0 S$=[ ] +*** TEST PASSED *** +TESTCASE # 86 E= 0 R$=[ ~~~~ ] A$=[ ~~~~ ] + F= 0 S$=[ ~~~~ ] +*** TEST PASSED *** +TESTCASE # 87 E= 0 R$=[ || ] A$=[ || ] + F= 0 S$=[ || ] +*** TEST PASSED *** +TESTCASE # 88 E= 0 R$=[ SSS ] A$=[ SSS ] + F= 0 S$=[ SSS ] +*** TEST PASSED *** +TESTCASE # 89 E= 0 R$=[ 6666 ] A$=[ 6666 ] + F= 0 S$=[ 6666 ] +*** TEST PASSED *** +TESTCASE # 90 E= 0 R$=[ WW ] A$=[ ww ] + F= 0 S$=[ WW ] +*** TEST PASSED *** +TESTCASE # 91 E= 0 R$=[ 1111 ] A$=[ 1111 ] + F= 0 S$=[ 1111 ] +*** TEST PASSED *** +TESTCASE # 92 E= 0 R$=[ K ] A$=[ K ] + F= 0 S$=[ K ] +*** TEST PASSED *** +TESTCASE # 93 E= 0 R$=[ TTTTT ] A$=[ ttttt ] + F= 0 S$=[ TTTTT ] +*** TEST PASSED *** +TESTCASE # 94 E= 0 R$=[ OOOOO ] A$=[ OOOOO ] + F= 0 S$=[ OOOOO ] +*** TEST PASSED *** +TESTCASE # 95 E= 0 R$=[ E ] A$=[ E ] + F= 0 S$=[ E ] +*** TEST PASSED *** +TESTCASE # 96 E= 0 R$=[ PPPPP ] A$=[ PPPPP ] + F= 0 S$=[ PPPPP ] +*** TEST PASSED *** +TESTCASE # 97 E= 0 R$=[ == ] A$=[ == ] + F= 0 S$=[ == ] +*** TEST PASSED *** +TESTCASE # 98 E= 0 R$=[ VVVV ] A$=[ VVVV ] + F= 0 S$=[ VVVV ] +*** TEST PASSED *** +TESTCASE # 99 E= 0 R$=[ C ] A$=[ c ] + F= 0 S$=[ C ] +*** TEST PASSED *** +TESTCASE # 100 E= 0 R$=[ YYYY ] A$=[ + yyyy ] + F= 0 S$=[ YYYY ] +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_VAL_A_N.80 b/NBS2/F_VAL_A_N.80 new file mode 100644 index 0000000..177ef2e --- /dev/null +++ b/NBS2/F_VAL_A_N.80 @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 3 A$=[3] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 3 A$=[ 3] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 3 A$=[3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3 A$=[ 3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 A$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 A$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 A$=[ \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 A$=[ lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 A$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5 A$=[ 5 ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 2 A$=[ 2 ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 0 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 44 A$=[ 44 ] + F= 0 N= 44 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 555 A$=[555 ] + F= 0 N= 555 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 5555 A$=[ 5555 ] + F= 0 N= 5555 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 6666 A$=[ 6666 ] + F= 0 N= 6666 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1111 A$=[ 1111 ] + F= 0 N= 1111 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_VAL_A_N.BAS b/NBS2/F_VAL_A_N.BAS new file mode 100644 index 0000000..c7b88df --- /dev/null +++ b/NBS2/F_VAL_A_N.BAS @@ -0,0 +1,183 @@ +REM ------------------------------------------------------------ +REM PURPOSE: TEST THE PARAMETER RANGE CHECKS +REM AUTHOR: HOWARD WULF, AF5NE +REM GENERATED: 02/21/2015 14:08:36 +REM FILENAME: F_VAL_A_N.BAS +REM SYNTAX: N = VAL( A$ ) +REM UNIQUEID: F_VAL_A_N +REM FUNCTION: VAL +REM +REM VARIABLE DESCRIPTION +REM I CURRENT TESTCASE NUMBER +REM E EXPECTED ERROR FLAG +REM F ACTUAL ERROR FLAG +REM R EXPECTED FUNCTION RESULT +REM N ACTUAL FUNCTION RESULT +REM A$ ACTUAL FUNCTION PARAMETER +REM +RESTORE 2000 +REM GET TESTCASE # +READ I +WHILE I > 0 +REM GET TESTCASE DATA +READ E, R, A$ +REM DISPLAY TESTCASE DATA +PRINT "TESTCASE #";I,"E=";E,"R=";R, "A$=[";A$;"]" +REM EXECUTE TESTCASE +N = 0 +S$ = "" +ON ERROR GOTO 9000 +F = 0 +999 N = VAL( A$ ) +ERROR 0 +REM DISPLAY TESTCASE RESULTS +PRINT ,"F=";F,"N=";N +REM VERIFY EXPECTED ERROR +IF E <> F THEN + PRINT "*** TEST FAILED, EXCEPTION MISMATCH ***" + STOP +END IF +REM VERIFY EXPECTED RESULT +IF R > 0 THEN + LET RMIN = 0.99 * R + IF R > MAXNUM / 1.012 THEN + LET RMAX = MAXNUM + ELSE + LET RMAX = 1.01 * R + END IF +END IF +IF R < 0 THEN + IF R < - MAXNUM / 1.012 THEN + LET RMIN = -MAXNUM + ELSE + LET RMIN = 1.01 * R + END IF + LET RMAX = 0.99 * R +END IF +IF R = 0 THEN + LET RMIN = -.01 + LET RMAX = +.01 +END IF +IF N < RMIN THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +IF N > RMAX THEN + PRINT "*** TEST FAILED, RESULT MISMATCH ***" + STOP +END IF +PRINT "*** TEST PASSED ***" +REM GET NEXT TESTCASE # +READ I +WEND +PRINT "*** ALL TESTS PASSED ***" +GOTO 9999 +1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS... +DATA 1 , 1 , 0 , "" +DATA 2 , 1 , 0 , " " +DATA 3 , 0 , 3 , "3" +DATA 4 , 1 , 0 , "z" +DATA 5 , 1 , 0 , " " +DATA 6 , 0 , 3 , " 3" +DATA 7 , 1 , 0 , " z" +DATA 8 , 0 , 3 , "3 " +DATA 9 , 1 , 0 , "z " +DATA 10 , 0 , 3 , " 3 " +DATA 11 , 1 , 0 , " z " +DATA 12 , 1 , 0 , " LLLL" +DATA 13 , 1 , 0 , " '' " +DATA 14 , 1 , 0 , " oo " +DATA 15 , 0 , 0 , " 00 " +DATA 16 , 1 , 0 , " \\\\ " +DATA 17 , 1 , 0 , " lllll " +DATA 18 , 1 , 0 , " uuuu " +DATA 19 , 1 , 0 , " a " +DATA 20 , 1 , 0 , " " +DATA 21 , 1 , 0 , " hh " +DATA 22 , 1 , 0 , " h " +DATA 23 , 1 , 0 , " )" +DATA 24 , 0 , 5 , " 5 " +DATA 25 , 0 , 2 , " 2 " +DATA 26 , 1 , 0 , " - " +DATA 27 , 1 , 0 , "dd " +DATA 28 , 1 , 0 , " tttt " +DATA 29 , 1 , 0 , " :::: " +DATA 30 , 1 , 0 , " ___ " +DATA 31 , 1 , 0 , " " +DATA 32 , 1 , 0 , " " +DATA 33 , 1 , 0 , " _____ " +DATA 34 , 1 , 0 , " S " +DATA 35 , 1 , 0 , " FFFF " +DATA 36 , 1 , 0 , " kkk" +DATA 37 , 1 , 0 , " NNNN " +DATA 38 , 1 , 0 , " mmmm " +DATA 39 , 1 , 0 , " ,,,,, " +DATA 40 , 1 , 0 , "OO " +DATA 41 , 1 , 0 , " HHHH " +DATA 42 , 1 , 0 , " < " +DATA 43 , 1 , 0 , " j " +DATA 44 , 1 , 0 , " yyyy " +DATA 45 , 1 , 0 , " +++ " +DATA 46 , 1 , 0 , "o " +DATA 47 , 1 , 0 , " ((" +DATA 48 , 1 , 0 , " uu " +DATA 49 , 0 , 0 , " 00 " +DATA 50 , 1 , 0 , " HH " +DATA 51 , 1 , 0 , " " +DATA 52 , 1 , 0 , " G " +DATA 53 , 1 , 0 , " {{{{ " +DATA 54 , 1 , 0 , " ]]] " +DATA 55 , 1 , 0 , "CCC" +DATA 56 , 0 , 44 , " 44 " +DATA 57 , 1 , 0 , "^^ " +DATA 58 , 1 , 0 , " QQ " +DATA 59 , 1 , 0 , " FFFF " +DATA 60 , 1 , 0 , " n " +DATA 61 , 1 , 0 , " hh " +DATA 62 , 0 , 555 , "555 " +DATA 63 , 1 , 0 , " YYYY " +DATA 64 , 1 , 0 , " w " +DATA 65 , 1 , 0 , "MMMM " +DATA 66 , 1 , 0 , " JJJJ " +DATA 67 , 1 , 0 , " %% " +DATA 68 , 1 , 0 , " * " +DATA 69 , 1 , 0 , " @@@ " +DATA 70 , 1 , 0 , "I " +DATA 71 , 1 , 0 , " ss " +DATA 72 , 1 , 0 , " f " +DATA 73 , 1 , 0 , " D " +DATA 74 , 1 , 0 , "### " +DATA 75 , 1 , 0 , " ' " +DATA 76 , 1 , 0 , " dd " +DATA 77 , 1 , 0 , " TT " +DATA 78 , 1 , 0 , " vvv " +DATA 79 , 1 , 0 , " X " +DATA 80 , 1 , 0 , " % " +DATA 81 , 1 , 0 , " " +DATA 82 , 0 , 5555 , " 5555 " +DATA 83 , 1 , 0 , "FFFF " +DATA 84 , 1 , 0 , " %% " +DATA 85 , 1 , 0 , " " +DATA 86 , 1 , 0 , " ~~~~ " +DATA 87 , 1 , 0 , " || " +DATA 88 , 1 , 0 , " SSS " +DATA 89 , 0 , 6666 , " 6666 " +DATA 90 , 1 , 0 , " ww " +DATA 91 , 0 , 1111 , " 1111 " +DATA 92 , 1 , 0 , " K " +DATA 93 , 1 , 0 , " ttttt " +DATA 94 , 1 , 0 , " OOOOO " +DATA 95 , 1 , 0 , " E " +DATA 96 , 1 , 0 , " PPPPP " +DATA 97 , 1 , 0 , " == " +DATA 98 , 1 , 0 , " VVVV " +DATA 99 , 1 , 0 , " c " +DATA 100 , 1 , 0 , " yyyy " +DATA 0 +9000 REM ERROR HANDLER +IF ERL = 999 THEN + F = ABS(SGN(ERR)) + RESUME NEXT +END IF +PRINT "*** UNEXPECTED ERROR ON LINE ";ERL;" ***" +9999 END diff --git a/NBS2/F_VAL_A_N.OUT b/NBS2/F_VAL_A_N.OUT new file mode 100644 index 0000000..d85f823 --- /dev/null +++ b/NBS2/F_VAL_A_N.OUT @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 3 A$=[3] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 3 A$=[ 3] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 3 A$=[3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3 A$=[ 3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 A$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 A$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 A$=[ \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 A$=[ lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 A$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5 A$=[ 5 ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 2 A$=[ 2 ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 0 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 44 A$=[ 44 ] + F= 0 N= 44 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 555 A$=[555 ] + F= 0 N= 555 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 5555 A$=[ 5555 ] + F= 0 N= 5555 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 6666 A$=[ 6666 ] + F= 0 N= 6666 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1111 A$=[ 1111 ] + F= 0 N= 1111 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/F_VAL_A_N.dif b/NBS2/F_VAL_A_N.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/F_VAL_A_N.run b/NBS2/F_VAL_A_N.run new file mode 100644 index 0000000..177ef2e --- /dev/null +++ b/NBS2/F_VAL_A_N.run @@ -0,0 +1,301 @@ +TESTCASE # 1 E= 1 R= 0 A$=[] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 2 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 3 E= 0 R= 3 A$=[3] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 4 E= 1 R= 0 A$=[z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 5 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 6 E= 0 R= 3 A$=[ 3] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 7 E= 1 R= 0 A$=[ z] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 8 E= 0 R= 3 A$=[3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 9 E= 1 R= 0 A$=[z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 10 E= 0 R= 3 A$=[ 3 ] + F= 0 N= 3 +*** TEST PASSED *** +TESTCASE # 11 E= 1 R= 0 A$=[ z ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 12 E= 1 R= 0 A$=[ LLLL] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 13 E= 1 R= 0 A$=[ '' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 14 E= 1 R= 0 A$=[ oo ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 15 E= 0 R= 0 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 16 E= 1 R= 0 A$=[ \\\\ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 17 E= 1 R= 0 A$=[ lllll ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 18 E= 1 R= 0 A$=[ uuuu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 19 E= 1 R= 0 A$=[ a ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 20 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 21 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 22 E= 1 R= 0 A$=[ h ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 23 E= 1 R= 0 A$=[ )] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 24 E= 0 R= 5 A$=[ 5 ] + F= 0 N= 5 +*** TEST PASSED *** +TESTCASE # 25 E= 0 R= 2 A$=[ 2 ] + F= 0 N= 2 +*** TEST PASSED *** +TESTCASE # 26 E= 1 R= 0 A$=[ - ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 27 E= 1 R= 0 A$=[dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 28 E= 1 R= 0 A$=[ tttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 29 E= 1 R= 0 A$=[ :::: ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 30 E= 1 R= 0 A$=[ ___ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 31 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 32 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 33 E= 1 R= 0 A$=[ _____ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 34 E= 1 R= 0 A$=[ S ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 35 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 36 E= 1 R= 0 A$=[ kkk] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 37 E= 1 R= 0 A$=[ NNNN ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 38 E= 1 R= 0 A$=[ mmmm ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 39 E= 1 R= 0 A$=[ ,,,,, ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 40 E= 1 R= 0 A$=[OO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 41 E= 1 R= 0 A$=[ HHHH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 42 E= 1 R= 0 A$=[ < ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 43 E= 1 R= 0 A$=[ j ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 44 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 45 E= 1 R= 0 A$=[ +++ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 46 E= 1 R= 0 A$=[o ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 47 E= 1 R= 0 A$=[ ((] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 48 E= 1 R= 0 A$=[ uu ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 49 E= 0 R= 0 A$=[ 00 ] + F= 0 N= 0 +*** TEST PASSED *** +TESTCASE # 50 E= 1 R= 0 A$=[ HH ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 51 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 52 E= 1 R= 0 A$=[ G ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 53 E= 1 R= 0 A$=[ {{{{ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 54 E= 1 R= 0 A$=[ ]]] ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 55 E= 1 R= 0 A$=[CCC] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 56 E= 0 R= 44 A$=[ 44 ] + F= 0 N= 44 +*** TEST PASSED *** +TESTCASE # 57 E= 1 R= 0 A$=[^^ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 58 E= 1 R= 0 A$=[ QQ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 59 E= 1 R= 0 A$=[ FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 60 E= 1 R= 0 A$=[ n ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 61 E= 1 R= 0 A$=[ hh ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 62 E= 0 R= 555 A$=[555 ] + F= 0 N= 555 +*** TEST PASSED *** +TESTCASE # 63 E= 1 R= 0 A$=[ YYYY ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 64 E= 1 R= 0 A$=[ w ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 65 E= 1 R= 0 A$=[MMMM ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 66 E= 1 R= 0 A$=[ JJJJ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 67 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 68 E= 1 R= 0 A$=[ * ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 69 E= 1 R= 0 A$=[ @@@ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 70 E= 1 R= 0 A$=[I ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 71 E= 1 R= 0 A$=[ ss ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 72 E= 1 R= 0 A$=[ f ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 73 E= 1 R= 0 A$=[ D ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 74 E= 1 R= 0 A$=[### ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 75 E= 1 R= 0 A$=[ ' ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 76 E= 1 R= 0 A$=[ dd ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 77 E= 1 R= 0 A$=[ TT ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 78 E= 1 R= 0 A$=[ vvv ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 79 E= 1 R= 0 A$=[ X ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 80 E= 1 R= 0 A$=[ % ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 81 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 82 E= 0 R= 5555 A$=[ 5555 ] + F= 0 N= 5555 +*** TEST PASSED *** +TESTCASE # 83 E= 1 R= 0 A$=[FFFF ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 84 E= 1 R= 0 A$=[ %% ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 85 E= 1 R= 0 A$=[ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 86 E= 1 R= 0 A$=[ ~~~~ ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 87 E= 1 R= 0 A$=[ || ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 88 E= 1 R= 0 A$=[ SSS ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 89 E= 0 R= 6666 A$=[ 6666 ] + F= 0 N= 6666 +*** TEST PASSED *** +TESTCASE # 90 E= 1 R= 0 A$=[ ww ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 91 E= 0 R= 1111 A$=[ 1111 ] + F= 0 N= 1111 +*** TEST PASSED *** +TESTCASE # 92 E= 1 R= 0 A$=[ K ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 93 E= 1 R= 0 A$=[ ttttt ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 94 E= 1 R= 0 A$=[ OOOOO ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 95 E= 1 R= 0 A$=[ E ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 96 E= 1 R= 0 A$=[ PPPPP ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 97 E= 1 R= 0 A$=[ == ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 98 E= 1 R= 0 A$=[ VVVV ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 99 E= 1 R= 0 A$=[ c ] + F= 1 N= 0 +*** TEST PASSED *** +TESTCASE # 100 E= 1 R= 0 A$=[ yyyy ] + F= 1 N= 0 +*** TEST PASSED *** +*** ALL TESTS PASSED *** diff --git a/NBS2/M001.BAS b/NBS2/M001.BAS new file mode 100644 index 0000000..1ad7def --- /dev/null +++ b/NBS2/M001.BAS @@ -0,0 +1,22 @@ +100 rem Filename: date1.bas +110 rem Purpose: verify DATE +120 rem this test must be executed manually +130 let X = DATE ' YYDDD +140 let Y = FIX( X / 1000 ) +150 let D = X - Y * 1000 +160 let Y = 1900 + Y +170 print " The Year:"; Y +180 print "Day of year:"; D +190 input "Is this correct (Y/N)"; A$ +200 if UCASE$( A$ ) <> "Y" then goto TestFailed +8000 rem ------------------------------------------ +8010 TestPassed: +8020 print "*** ALL TESTS PASSED ***" +8030 goto TheEnd +8500 rem ------------------------------------------ +8510 TestFailed: +8520 print "*** TEST FAILED ***" +8530 goto TheEnd +9000 rem ------------------------------------------ +9010 TheEnd: +9999 end diff --git a/NBS2/M002.BAS b/NBS2/M002.BAS new file mode 100644 index 0000000..04880e3 --- /dev/null +++ b/NBS2/M002.BAS @@ -0,0 +1,12 @@ +010 rem verify CONT command +020 rem this must be executed manually +090 let ITERATION = ITERATION + 1 +100 print "100. Enter CONT at the command line. Next line should be 120" +110 stop +120 print "120. Enter CONT at the command line. Next line should be 140" +130 end +140 print "140. Enter CONT at the command line. Next line should be 100" +900 REM Quit when we have executed this complete program 3 times +910 if ITERATION > 2 then +920 QUIT +930 end if diff --git a/NBS2/M003.BAS b/NBS2/M003.BAS new file mode 100644 index 0000000..6128e1f --- /dev/null +++ b/NBS2/M003.BAS @@ -0,0 +1,78 @@ +100 REM PURPOSE: DISPLAY/VERIFY THE IMPLEMENTATION-DEFINED VALUES +110 REM AUTHOR: HOWARD WULF, AF5NE +120 REM DATE: 2015-01-25 +130 REM ------------------------------------------------------- +140 PRINT "THIS PROGRAM DISPLAYS THE IMPLEMENTATION-DEFINED" +150 PRINT "RANGES FOR ALL BASIC VARIABLE TYPES." +160 PRINT "THERE SHOULD BE NO ERROR MESSAGES." +170 PRINT "MAXLVL=";MAXLVL +200 PRINT "MAXNUM=";MAXNUM +210 PRINT "MAXDBL=";MAXDBL +220 PRINT "MAXSNG=";MAXSNG +230 PRINT "MAXCUR=";MAXCUR +240 PRINT "MAXLNG=";MAXLNG +250 PRINT "MAXINT=";MAXINT +260 PRINT "MAXBYT=";MAXBYT +270 PRINT "MAXDEV=";MAXDEV +280 PRINT "MAXLEN=";MAXLEN("") +300 PRINT "MINNUM=";MINNUM +310 PRINT "MINDBL=";MINDBL +320 PRINT "MINSNG=";MINSNG +330 PRINT "MINCUR=";MINCUR +340 PRINT "MINLNG=";MINLNG +350 PRINT "MININT=";MININT +360 PRINT "MINBYT=";MINBYT +370 PRINT "MINDEV=";MINDEV +380 PRINT "MINLEN=";0 +400 REM ------------------------------------------------ +410 REM VERIFY THE MAX... RANGES ARE VALID +420 IF MAXNUM < MAXDBL THEN +430 PRINT "*** ERROR MAXNUM < MAXDBL ***" +440 END IF +450 IF MAXDBL < MAXSNG THEN +460 PRINT "*** ERROR MAXDBL < MAXSNG ***" +470 END IF +480 IF MAXSNG < MAXCUR THEN +490 PRINT "*** ERROR MAXSNG < MAXCUR ***" +500 END IF +510 IF MAXCUR < MAXLNG THEN +520 PRINT "*** ERROR MAXCUR < MAXSNG ***" +530 END IF +540 IF MAXLNG < MAXINT THEN +550 PRINT "*** ERROR MAXLNG < MAXINT ***" +560 END IF +570 IF MAXINT < MAXBYT THEN +580 PRINT "*** ERROR MAXINT < MAXBYT ***" +590 END IF +600 IF MAXBYT < MAXDEV THEN +610 PRINT "*** ERROR MAXBYT < MAXDEV ***" +620 END IF +630 IF MAXINT < MAXLEN("") THEN +640 PRINT "*** ERROR MAXINT < MAXLEN ***" +650 END IF +700 REM -------------------------------------------- +710 REM VERIFY THE MIN... RANGES +720 IF MINDBL < MINNUM THEN +730 PRINT "*** ERROR MINDBL < MINNUM ***" +740 END IF +750 IF MINSNG < MINDBL THEN +760 PRINT "*** ERROR MINSNG < MINDBL ***" +770 END IF +780 IF MINCUR < MINSNG THEN +790 PRINT "*** ERROR MINCUR < MINSNG ***" +800 END IF +810 IF MINLNG < MINCUR THEN +820 PRINT "*** ERROR MINLNG < MINCUR ***" +840 END IF +850 IF MININT < MINLNG THEN +860 PRINT "*** ERROR MININT < MINLNG ***" +870 END IF +880 IF MINBYT < MININT THEN +890 PRINT "*** ERROR MINBYT < MININT ***" +900 END IF +910 IF MINDEV < MINBYT THEN +920 PRINT "*** ERROR MINDEV < MINBYT ***" +930 END IF +940 REM MINLEN("") IS 0 +950 PRINT "IF NO ERROR MESSAGES, THEN *** TEST PASSED ***" +999 END diff --git a/NBS2/M004.BAS b/NBS2/M004.BAS new file mode 100644 index 0000000..5958017 --- /dev/null +++ b/NBS2/M004.BAS @@ -0,0 +1,21 @@ +100 REM PURPOSE: VERIFY ON TIMER ... GOSUB ... +110 REM AUTHOR: HOWARD WULF, AF5NE +120 REM DATE: 2015-01-25 +130 REM +140 REM --------------------------------------- +200 ON TIMER 0.1 GOSUB 500 +210 TIMER ON +220 WHILE 1 +230 WEND +240 GOTO 999 +500 REM -------------------------------------- +510 PRINT "TIMER" +515 REM AS CURRENTLY IMPLEMENTED, +516 REM THE TIMER AUTOMATICALLY CLEARS +517 REM WHEN ACTIVATED. +518 REM IF YOU WANT IT TO FIRE AGAIN, +519 REM THEN YOU HAVE TO SET IT AGAIN. +520 TIMER ON +530 RETURN +540 STOP +999 END diff --git a/NBS2/M005.BAS b/NBS2/M005.BAS new file mode 100644 index 0000000..b8c120b --- /dev/null +++ b/NBS2/M005.BAS @@ -0,0 +1,48 @@ +100 REM PURPOSE: VERIFY ON TIMER ... GOSUB ... +110 REM AUTHOR: HOWARD WULF, AF5NE +120 REM DATE: 2015-01-25 +130 REM +140 REM --------------------------------------- +150 REM THE '50' BELOW IS THE NUMBER OF BASIC LINES +160 REM TO EXECUTE BEFORE FIRING THE TIMER EVENT +170 REM +200 ON TIMER 0.05 GOSUB 500 +205 LET N = 0 +210 TIMER ON +220 WHILE 1 +230 WEND +240 GOTO 999 +500 REM -------------------------------------- +510 PRINT "TIMER" +515 REM AS CURRENTLY IMPLEMENTED, +516 REM THE TIMER CLEARS WHEN ACTIVATED. +517 REM +518 REM IF YOU WANT IT TO FIRE AGAIN, +519 REM THEN YOU HAVE TO SET IT AGAIN. +520 TIMER ON +525 N = N + 1 +527 IF N < 1 OR N > 5 THEN +528 LET N = 1 +529 END IF +530 ON N GOTO 1000,2000,3000,4000,5000 +540 STOP +999 END +1000 REM ROUTINE 1 +1010 PRINT "ROUTINE #1" +1020 RETURN +2000 REM ROUTINE 2 +2010 PRINT , "ROUTINE #2" +2015 REM WATCH OUT FOR RECURSION WITH LARGE LOOP VALUES +2020 FOR J = 1 TO 10 +2030 PRINT "J=";J +2040 NEXT J +2050 RETURN +3000 REM ROUTINE 3 +3010 PRINT , , "ROUTINE #3" +3020 RETURN +4000 REM ROUTINE 4 +4010 PRINT , , , "ROUTINE #4" +4020 RETURN +5000 REM ROUTINE 5 +5010 PRINT , , , , "ROUTINE #5" +5020 RETURN diff --git a/NBS2/M006.BAS b/NBS2/M006.BAS new file mode 100644 index 0000000..b476bbe --- /dev/null +++ b/NBS2/M006.BAS @@ -0,0 +1,54 @@ +100 REM PURPOSE: CLS, LOCATE, COLOR FOR ANSI/VT100 +110 REM AUTHOR: HOWARD WULF, AF5NE +120 REM DATE: 2015-01-25 +130 REM +140 REM --------------------------------------- +150 REM In this example, ESC codes are used to +160 REM control the terminal display. +170 REM +200 SUB CLS() +210 PRINT CHR$(27);"[2J"; +220 END SUB +230 SUB LOCATE( Row, Col ) +240 PRINT CHR$(27);"[";TRIM$(STR$(Row));";";TRIM$(STR$(Col));"H"; +250 END SUB +260 SUB COLOR( Fore, Back ) +270 PRINT CHR$(27);"[";TRIM$(STR$(30+Fore));";";TRIM$(STR$(40+Back));"m"; +280 END SUB +290 REM +300 COLOR 7, 4 ' WHITE ON BLUE +310 CLS +325 REM DRAW A BOX +330 FOR R = 1 TO 20 +332 LOCATE R, 5 +340 SELECT CASE R +350 CASE 1 +360 PRINT "+";STRING$(40,"-");"+" +362 CASE 20 +364 PRINT "+";STRING$(40,"-");"+" +370 CASE ELSE +380 PRINT "|";STRING$(40," ");"|" +390 END SELECT +400 NEXT R +410 REM WRITE SOME TEXT +420 LOCATE 5, 10 +425 COLOR 1, 3 ' Red on Yellow +430 PRINT "This is RED on YELLOW" +500 REM COLOR MAP +510 FOR F = 30 TO 37 +520 FOR B = 40 TO 47 +530 LOCATE F - 27, B - 3 +540 COLOR F-30,B-40 +550 PRINT "X" +560 NEXT B +570 NEXT F +600 REM INPUT WITH DIFFERENT COLOR +610 LOCATE 15, 10 +620 COLOR 4, 5 ' Blue on Magenta +630 PRINT "TYPE SOMETHING"; +640 COLOR 7, 0 ' White on Black +650 INPUT A$ +700 REM RESET TERMINAL +710 COLOR 2, 0 ' Green on Black +720 CLS +999 END diff --git a/NBS2/M006.png b/NBS2/M006.png new file mode 100644 index 0000000..f1ad755 --- /dev/null +++ b/NBS2/M006.png @@ -0,0 +1 @@ +‰PNG diff --git a/NBS2/M007.BAS b/NBS2/M007.BAS new file mode 100644 index 0000000..155dead --- /dev/null +++ b/NBS2/M007.BAS @@ -0,0 +1,45 @@ +100 REM PURPOSE: CLS, LOCATE, COLOR FOR ANSI/VT100 +110 REM AUTHOR: HOWARD WULF, AF5NE +120 REM DATE: 2015-01-25 +130 REM +140 REM --------------------------------------- +150 REM In this example, ESC codes are used to +160 REM control the terminal display. +170 REM +180 OPTION TERMINAL ANSI +300 COLOR 7, 4 ' WHITE ON BLUE +310 CLS +325 REM DRAW A BOX +330 FOR R = 1 TO 20 +332 LOCATE R, 5 +340 SELECT CASE R +350 CASE 1 +360 PRINT "+";STRING$(40,"-");"+" +362 CASE 20 +364 PRINT "+";STRING$(40,"-");"+" +370 CASE ELSE +380 PRINT "|";STRING$(40," ");"|" +390 END SELECT +400 NEXT R +410 REM WRITE SOME TEXT +420 LOCATE 5, 10 +425 COLOR 1, 3 ' Red on Yellow +430 PRINT "This is RED on YELLOW" +500 REM COLOR MAP +510 FOR F = 30 TO 37 +520 FOR B = 40 TO 47 +530 LOCATE F - 27, B - 3 +540 COLOR F-30,B-40 +550 PRINT "X" +560 NEXT B +570 NEXT F +600 REM INPUT WITH DIFFERENT COLOR +610 LOCATE 15, 10 +620 COLOR 4, 5 ' Blue on Magenta +630 PRINT "TYPE SOMETHING"; +640 COLOR 7, 0 ' White on Black +650 INPUT A$ +700 REM RESET TERMINAL +710 COLOR 2, 0 ' Green on Black +720 CLS +999 END diff --git a/NBS2/MAINTAINER.BAS b/NBS2/MAINTAINER.BAS new file mode 100644 index 0000000..bf96524 --- /dev/null +++ b/NBS2/MAINTAINER.BAS @@ -0,0 +1,7 @@ +MAINTAINER CMDS ID +MAINTAINER CMDS SWITCH +MAINTAINER CMDS TABLE + +MAINTAINER FNCS ID +MAINTAINER FNCS SWITCH +MAINTAINER FNCS TABLE diff --git a/NBS2/MAINTAINER.OUT b/NBS2/MAINTAINER.OUT new file mode 100644 index 0000000..de03a77 --- /dev/null +++ b/NBS2/MAINTAINER.OUT @@ -0,0 +1,4337 @@ +/* COMMANDS */ +#define C_QUEST 1 /* ? */ +#define C_CALL 2 /* CALL */ +#define C_CASE 3 /* CASE */ +#define C_CASE_ELSE 4 /* CASE ELSE */ +#define C_CASE_IF 5 /* CASE IF */ +#define C_CASE_IS 6 /* CASE IS */ +#define C_CHAIN 7 /* CHAIN */ +#define C_CHANGE 8 /* CHANGE */ +#define C_CLEAR 9 /* CLEAR */ +#define C_CLOAD 10 /* CLOAD */ +#define C_CLOAD_ 11 /* CLOAD* */ +#define C_CMDS 12 /* CMDS */ +#define C_COMMON 13 /* COMMON */ +#define C_CONT 14 /* CONT */ +#define C_CSAVE 15 /* CSAVE */ +#define C_CSAVE_ 16 /* CSAVE* */ +#define C_DATA 17 /* DATA */ +#define C_DEF 18 /* DEF */ +#define C_DEF_SUB 19 /* DEF SUB */ +#define C_DEFDBL 20 /* DEFDBL */ +#define C_DEFINT 21 /* DEFINT */ +#define C_DEFSNG 22 /* DEFSNG */ +#define C_DEFSTR 23 /* DEFSTR */ +#define C_DELETE 24 /* DELETE */ +#define C_DIM 25 /* DIM */ +#define C_DO 26 /* DO */ +#define C_DO_UNTIL 27 /* DO UNTIL */ +#define C_DO_WHILE 28 /* DO WHILE */ +#define C_EDIT 29 /* EDIT */ +#define C_ELSE 30 /* ELSE */ +#define C_ELSEIF 31 /* ELSEIF */ +#define C_END 32 /* END */ +#define C_END_FUNCTION 33 /* END FUNCTION */ +#define C_END_IF 34 /* END IF */ +#define C_END_SELECT 35 /* END SELECT */ +#define C_END_SUB 36 /* END SUB */ +#define C_ERASE 37 /* ERASE */ +#define C_EXIT 38 /* EXIT */ +#define C_EXIT_DO 39 /* EXIT DO */ +#define C_EXIT_FOR 40 /* EXIT FOR */ +#define C_EXIT_FUNCTION 41 /* EXIT FUNCTION */ +#define C_EXIT_SUB 42 /* EXIT SUB */ +#define C_EXIT_UNTIL 43 /* EXIT UNTIL */ +#define C_EXIT_WHILE 44 /* EXIT WHILE */ +#define C_FIELD 45 /* FIELD */ +#define C_FNCS 46 /* FNCS */ +#define C_FOR 47 /* FOR */ +#define C_FUNCTION 48 /* FUNCTION */ +#define C_GO 49 /* GO */ +#define C_GOSUB 50 /* GOSUB */ +#define C_GOTO 51 /* GOTO */ +#define C_HELP 52 /* HELP */ +#define C_IF 53 /* IF */ +#define C_IF_THEN 54 /* IF THEN */ +#define C_INPUT 55 /* INPUT */ +#define C_LET 56 /* LET */ +#define C_LINE 57 /* LINE */ +#define C_LIST 58 /* LIST */ +#define C_LOAD 59 /* LOAD */ +#define C_LOOP 60 /* LOOP */ +#define C_LOOP_UNTIL 61 /* LOOP UNTIL */ +#define C_LOOP_WHILE 62 /* LOOP WHILE */ +#define C_LPRINT 63 /* LPRINT */ +#define C_LSET 64 /* LSET */ +#define C_MAINTAINER 65 /* MAINTAINER */ +#define C_MERGE 66 /* MERGE */ +#define C_MID_ 67 /* MID$ */ +#define C_NAME 68 /* NAME */ +#define C_NEW 69 /* NEW */ +#define C_NEXT 70 /* NEXT */ +#define C_ON 71 /* ON */ +#define C_ON_ERROR_GOSUB 72 /* ON ERROR GOSUB */ +#define C_ON_ERROR_GOTO 73 /* ON ERROR GOTO */ +#define C_ON_ERROR_RESUME_NEXT 74 /* ON ERROR RESUME NEXT */ +#define C_ON_ERROR_RETURN_NEXT 75 /* ON ERROR RETURN NEXT */ +#define C_ON_TIMER 76 /* ON TIMER */ +#define C_OPEN 77 /* OPEN */ +#define C_OPTION 78 /* OPTION */ +#define C_OPTION_ANGLE_DEGREES 79 /* OPTION ANGLE DEGREES */ +#define C_OPTION_ANGLE_RADIANS 80 /* OPTION ANGLE RADIANS */ +#define C_OPTION_ARITHMETIC_DECIMAL 81 /* OPTION ARITHMETIC DECIMAL */ +#define C_OPTION_ARITHMETIC_FIXED 82 /* OPTION ARITHMETIC FIXED */ +#define C_OPTION_ARITHMETIC_NATIVE 83 /* OPTION ARITHMETIC NATIVE */ +#define C_OPTION_BASE_0 84 /* OPTION BASE 0 */ +#define C_OPTION_BASE_1 85 /* OPTION BASE 1 */ +#define C_OPTION_BUGS_OFF 86 /* OPTION BUGS OFF */ +#define C_OPTION_BUGS_ON 87 /* OPTION BUGS ON */ +#define C_OPTION_COMMENT 88 /* OPTION COMMENT */ +#define C_OPTION_COMPARE_BINARY 89 /* OPTION COMPARE BINARY */ +#define C_OPTION_COMPARE_DATABASE 90 /* OPTION COMPARE DATABASE */ +#define C_OPTION_COMPARE_TEXT 91 /* OPTION COMPARE TEXT */ +#define C_OPTION_COVERAGE_OFF 92 /* OPTION COVERAGE OFF */ +#define C_OPTION_COVERAGE_ON 93 /* OPTION COVERAGE ON */ +#define C_OPTION_DATE 94 /* OPTION DATE */ +#define C_OPTION_DISABLE_COMMAND 95 /* OPTION DISABLE COMMAND */ +#define C_OPTION_DISABLE_FUNCTION 96 /* OPTION DISABLE FUNCTION */ +#define C_OPTION_DISABLE_OPERATOR 97 /* OPTION DISABLE OPERATOR */ +#define C_OPTION_ENABLE_COMMAND 98 /* OPTION ENABLE COMMAND */ +#define C_OPTION_ENABLE_FUNCTION 99 /* OPTION ENABLE FUNCTION */ +#define C_OPTION_ENABLE_OPERATOR 100 /* OPTION ENABLE OPERATOR */ +#define C_OPTION_ERROR_GOSUB 101 /* OPTION ERROR GOSUB */ +#define C_OPTION_ERROR_GOTO 102 /* OPTION ERROR GOTO */ +#define C_OPTION_INDENT 103 /* OPTION INDENT */ +#define C_OPTION_LABELS_OFF 104 /* OPTION LABELS OFF */ +#define C_OPTION_LABELS_ON 105 /* OPTION LABELS ON */ +#define C_OPTION_STATEMENT 106 /* OPTION STATEMENT */ +#define C_OPTION_STRICT_OFF 107 /* OPTION STRICT OFF */ +#define C_OPTION_STRICT_ON 108 /* OPTION STRICT ON */ +#define C_OPTION_TERMINAL_ADM_3A 109 /* OPTION TERMINAL ADM-3A */ +#define C_OPTION_TERMINAL_ANSI 110 /* OPTION TERMINAL ANSI */ +#define C_OPTION_TERMINAL_NONE 111 /* OPTION TERMINAL NONE */ +#define C_OPTION_TIME 112 /* OPTION TIME */ +#define C_OPTION_TRACE_OFF 113 /* OPTION TRACE OFF */ +#define C_OPTION_TRACE_ON 114 /* OPTION TRACE ON */ +#define C_OPTION_VERSION 115 /* OPTION VERSION */ +#define C_PRINT 116 /* PRINT */ +#define C_QUIT 117 /* QUIT */ +#define C_READ 118 /* READ */ +#define C_REM 119 /* REM */ +#define C_RENUM 120 /* RENUM */ +#define C_RESTORE 121 /* RESTORE */ +#define C_RESUME 122 /* RESUME */ +#define C_RETURN 123 /* RETURN */ +#define C_RSET 124 /* RSET */ +#define C_RUN 125 /* RUN */ +#define C_SAVE 126 /* SAVE */ +#define C_SELECT 127 /* SELECT */ +#define C_SELECT_CASE 128 /* SELECT CASE */ +#define C_STOP 129 /* STOP */ +#define C_SUB 130 /* SUB */ +#define C_SWAP 131 /* SWAP */ +#define C_SYSTEM 132 /* SYSTEM */ +#define C_TIMER 133 /* TIMER */ +#define C_TIMER_OFF 134 /* TIMER OFF */ +#define C_TIMER_ON 135 /* TIMER ON */ +#define C_TIMER_STOP 136 /* TIMER STOP */ +#define C_UEND 137 /* UEND */ +#define C_UNTIL 138 /* UNTIL */ +#define C_USER_LBL 139 /* USER LBL */ +#define C_VARS 140 /* VARS */ +#define C_WEND 141 /* WEND */ +#define C_WHILE 142 /* WHILE */ +#define C_WRITE 143 /* WRITE */ +#define NUM_COMMANDS 143 +/* SWITCH */ +struct bwb_line *bwb_vector( struct bwb_line *l ) +{ + struct bwb_line *r; + switch( l->cmdnum ) + { + case C_QUEST: + r = bwb_QUEST( l ); + break; + case C_CALL: + r = bwb_CALL( l ); + break; + case C_CASE: + r = bwb_CASE( l ); + break; + case C_CASE_ELSE: + r = bwb_CASE_ELSE( l ); + break; + case C_CASE_IF: + r = bwb_CASE_IF( l ); + break; + case C_CASE_IS: + r = bwb_CASE_IS( l ); + break; + case C_CHAIN: + r = bwb_CHAIN( l ); + break; + case C_CHANGE: + r = bwb_CHANGE( l ); + break; + case C_CLEAR: + r = bwb_CLEAR( l ); + break; + case C_CLOAD: + r = bwb_CLOAD( l ); + break; + case C_CLOAD_: + r = bwb_CLOAD_( l ); + break; + case C_CMDS: + r = bwb_CMDS( l ); + break; + case C_COMMON: + r = bwb_COMMON( l ); + break; + case C_CONT: + r = bwb_CONT( l ); + break; + case C_CSAVE: + r = bwb_CSAVE( l ); + break; + case C_CSAVE_: + r = bwb_CSAVE_( l ); + break; + case C_DATA: + r = bwb_DATA( l ); + break; + case C_DEF: + r = bwb_DEF( l ); + break; + case C_DEF_SUB: + r = bwb_DEF_SUB( l ); + break; + case C_DEFDBL: + r = bwb_DEFDBL( l ); + break; + case C_DEFINT: + r = bwb_DEFINT( l ); + break; + case C_DEFSNG: + r = bwb_DEFSNG( l ); + break; + case C_DEFSTR: + r = bwb_DEFSTR( l ); + break; + case C_DELETE: + r = bwb_DELETE( l ); + break; + case C_DIM: + r = bwb_DIM( l ); + break; + case C_DO: + r = bwb_DO( l ); + break; + case C_DO_UNTIL: + r = bwb_DO_UNTIL( l ); + break; + case C_DO_WHILE: + r = bwb_DO_WHILE( l ); + break; + case C_EDIT: + r = bwb_EDIT( l ); + break; + case C_ELSE: + r = bwb_ELSE( l ); + break; + case C_ELSEIF: + r = bwb_ELSEIF( l ); + break; + case C_END: + r = bwb_END( l ); + break; + case C_END_FUNCTION: + r = bwb_END_FUNCTION( l ); + break; + case C_END_IF: + r = bwb_END_IF( l ); + break; + case C_END_SELECT: + r = bwb_END_SELECT( l ); + break; + case C_END_SUB: + r = bwb_END_SUB( l ); + break; + case C_ERASE: + r = bwb_ERASE( l ); + break; + case C_EXIT: + r = bwb_EXIT( l ); + break; + case C_EXIT_DO: + r = bwb_EXIT_DO( l ); + break; + case C_EXIT_FOR: + r = bwb_EXIT_FOR( l ); + break; + case C_EXIT_FUNCTION: + r = bwb_EXIT_FUNCTION( l ); + break; + case C_EXIT_SUB: + r = bwb_EXIT_SUB( l ); + break; + case C_EXIT_UNTIL: + r = bwb_EXIT_UNTIL( l ); + break; + case C_EXIT_WHILE: + r = bwb_EXIT_WHILE( l ); + break; + case C_FIELD: + r = bwb_FIELD( l ); + break; + case C_FNCS: + r = bwb_FNCS( l ); + break; + case C_FOR: + r = bwb_FOR( l ); + break; + case C_FUNCTION: + r = bwb_FUNCTION( l ); + break; + case C_GO: + r = bwb_GO( l ); + break; + case C_GOSUB: + r = bwb_GOSUB( l ); + break; + case C_GOTO: + r = bwb_GOTO( l ); + break; + case C_HELP: + r = bwb_HELP( l ); + break; + case C_IF: + r = bwb_IF( l ); + break; + case C_IF_THEN: + r = bwb_IF_THEN( l ); + break; + case C_INPUT: + r = bwb_INPUT( l ); + break; + case C_LET: + r = bwb_LET( l ); + break; + case C_LINE: + r = bwb_LINE( l ); + break; + case C_LIST: + r = bwb_LIST( l ); + break; + case C_LOAD: + r = bwb_LOAD( l ); + break; + case C_LOOP: + r = bwb_LOOP( l ); + break; + case C_LOOP_UNTIL: + r = bwb_LOOP_UNTIL( l ); + break; + case C_LOOP_WHILE: + r = bwb_LOOP_WHILE( l ); + break; + case C_LPRINT: + r = bwb_LPRINT( l ); + break; + case C_LSET: + r = bwb_LSET( l ); + break; + case C_MAINTAINER: + r = bwb_MAINTAINER( l ); + break; + case C_MERGE: + r = bwb_MERGE( l ); + break; + case C_MID_: + r = bwb_MID_( l ); + break; + case C_NAME: + r = bwb_NAME( l ); + break; + case C_NEW: + r = bwb_NEW( l ); + break; + case C_NEXT: + r = bwb_NEXT( l ); + break; + case C_ON: + r = bwb_ON( l ); + break; + case C_ON_ERROR_GOSUB: + r = bwb_ON_ERROR_GOSUB( l ); + break; + case C_ON_ERROR_GOTO: + r = bwb_ON_ERROR_GOTO( l ); + break; + case C_ON_ERROR_RESUME_NEXT: + r = bwb_ON_ERROR_RESUME_NEXT( l ); + break; + case C_ON_ERROR_RETURN_NEXT: + r = bwb_ON_ERROR_RETURN_NEXT( l ); + break; + case C_ON_TIMER: + r = bwb_ON_TIMER( l ); + break; + case C_OPEN: + r = bwb_OPEN( l ); + break; + case C_OPTION: + r = bwb_OPTION( l ); + break; + case C_OPTION_ANGLE_DEGREES: + r = bwb_OPTION_ANGLE_DEGREES( l ); + break; + case C_OPTION_ANGLE_RADIANS: + r = bwb_OPTION_ANGLE_RADIANS( l ); + break; + case C_OPTION_ARITHMETIC_DECIMAL: + r = bwb_OPTION_ARITHMETIC_DECIMAL( l ); + break; + case C_OPTION_ARITHMETIC_FIXED: + r = bwb_OPTION_ARITHMETIC_FIXED( l ); + break; + case C_OPTION_ARITHMETIC_NATIVE: + r = bwb_OPTION_ARITHMETIC_NATIVE( l ); + break; + case C_OPTION_BASE_0: + r = bwb_OPTION_BASE_0( l ); + break; + case C_OPTION_BASE_1: + r = bwb_OPTION_BASE_1( l ); + break; + case C_OPTION_BUGS_OFF: + r = bwb_OPTION_BUGS_OFF( l ); + break; + case C_OPTION_BUGS_ON: + r = bwb_OPTION_BUGS_ON( l ); + break; + case C_OPTION_COMMENT: + r = bwb_OPTION_COMMENT( l ); + break; + case C_OPTION_COMPARE_BINARY: + r = bwb_OPTION_COMPARE_BINARY( l ); + break; + case C_OPTION_COMPARE_DATABASE: + r = bwb_OPTION_COMPARE_DATABASE( l ); + break; + case C_OPTION_COMPARE_TEXT: + r = bwb_OPTION_COMPARE_TEXT( l ); + break; + case C_OPTION_COVERAGE_OFF: + r = bwb_OPTION_COVERAGE_OFF( l ); + break; + case C_OPTION_COVERAGE_ON: + r = bwb_OPTION_COVERAGE_ON( l ); + break; + case C_OPTION_DATE: + r = bwb_OPTION_DATE( l ); + break; + case C_OPTION_DISABLE_COMMAND: + r = bwb_OPTION_DISABLE_COMMAND( l ); + break; + case C_OPTION_DISABLE_FUNCTION: + r = bwb_OPTION_DISABLE_FUNCTION( l ); + break; + case C_OPTION_DISABLE_OPERATOR: + r = bwb_OPTION_DISABLE_OPERATOR( l ); + break; + case C_OPTION_ENABLE_COMMAND: + r = bwb_OPTION_ENABLE_COMMAND( l ); + break; + case C_OPTION_ENABLE_FUNCTION: + r = bwb_OPTION_ENABLE_FUNCTION( l ); + break; + case C_OPTION_ENABLE_OPERATOR: + r = bwb_OPTION_ENABLE_OPERATOR( l ); + break; + case C_OPTION_ERROR_GOSUB: + r = bwb_OPTION_ERROR_GOSUB( l ); + break; + case C_OPTION_ERROR_GOTO: + r = bwb_OPTION_ERROR_GOTO( l ); + break; + case C_OPTION_INDENT: + r = bwb_OPTION_INDENT( l ); + break; + case C_OPTION_LABELS_OFF: + r = bwb_OPTION_LABELS_OFF( l ); + break; + case C_OPTION_LABELS_ON: + r = bwb_OPTION_LABELS_ON( l ); + break; + case C_OPTION_STATEMENT: + r = bwb_OPTION_STATEMENT( l ); + break; + case C_OPTION_STRICT_OFF: + r = bwb_OPTION_STRICT_OFF( l ); + break; + case C_OPTION_STRICT_ON: + r = bwb_OPTION_STRICT_ON( l ); + break; + case C_OPTION_TERMINAL_ADM_3A: + r = bwb_OPTION_TERMINAL_ADM_3A( l ); + break; + case C_OPTION_TERMINAL_ANSI: + r = bwb_OPTION_TERMINAL_ANSI( l ); + break; + case C_OPTION_TERMINAL_NONE: + r = bwb_OPTION_TERMINAL_NONE( l ); + break; + case C_OPTION_TIME: + r = bwb_OPTION_TIME( l ); + break; + case C_OPTION_TRACE_OFF: + r = bwb_OPTION_TRACE_OFF( l ); + break; + case C_OPTION_TRACE_ON: + r = bwb_OPTION_TRACE_ON( l ); + break; + case C_OPTION_VERSION: + r = bwb_OPTION_VERSION( l ); + break; + case C_PRINT: + r = bwb_PRINT( l ); + break; + case C_QUIT: + r = bwb_QUIT( l ); + break; + case C_READ: + r = bwb_READ( l ); + break; + case C_REM: + r = bwb_REM( l ); + break; + case C_RENUM: + r = bwb_RENUM( l ); + break; + case C_RESTORE: + r = bwb_RESTORE( l ); + break; + case C_RESUME: + r = bwb_RESUME( l ); + break; + case C_RETURN: + r = bwb_RETURN( l ); + break; + case C_RSET: + r = bwb_RSET( l ); + break; + case C_RUN: + r = bwb_RUN( l ); + break; + case C_SAVE: + r = bwb_SAVE( l ); + break; + case C_SELECT: + r = bwb_SELECT( l ); + break; + case C_SELECT_CASE: + r = bwb_SELECT_CASE( l ); + break; + case C_STOP: + r = bwb_STOP( l ); + break; + case C_SUB: + r = bwb_SUB( l ); + break; + case C_SWAP: + r = bwb_SWAP( l ); + break; + case C_SYSTEM: + r = bwb_SYSTEM( l ); + break; + case C_TIMER: + r = bwb_TIMER( l ); + break; + case C_TIMER_OFF: + r = bwb_TIMER_OFF( l ); + break; + case C_TIMER_ON: + r = bwb_TIMER_ON( l ); + break; + case C_TIMER_STOP: + r = bwb_TIMER_STOP( l ); + break; + case C_UEND: + r = bwb_UEND( l ); + break; + case C_UNTIL: + r = bwb_UNTIL( l ); + break; + case C_USER_LBL: + r = bwb_USER_LBL( l ); + break; + case C_VARS: + r = bwb_VARS( l ); + break; + case C_WEND: + r = bwb_WEND( l ); + break; + case C_WHILE: + r = bwb_WHILE( l ); + break; + case C_WRITE: + r = bwb_WRITE( l ); + break; + default: + sprintf( bwb_ebuf, "in bwb_vector(), INTERNAL ERROR: %d not in switch", l->cmdnum ); + bwb_error( bwb_ebuf ); + r = l; + break; + } + return r; +} +/* COMMAND TABLE */ + +#include "bwbasic.h" + +struct bwb_command bwb_cmdtable[ NUM_COMMANDS ] = +{ +{ + C_QUEST, /* UniqueID */ + "? expressions...", /* Syntax */ + "This is just a shortcut for PRINT.", /* Description */ + "?", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CALL, /* UniqueID */ + "CALL subroutine-name( [parameter [, ...] ] )", /* Syntax */ + "Calls a subroutine that was defined by SUB and END SUB.", /* Description */ + "CALL", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CASE, /* UniqueID */ + "CASE constant", /* Syntax */ + "Introduces an element of a SELECT CASE statement.", /* Description */ + "CASE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CASE_ELSE, /* UniqueID */ + "CASE ELSE", /* Syntax */ + "Introduces a default SELECT CASE element.", /* Description */ + "CASE ELSE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CASE_IF, /* UniqueID */ + "CASE IF partial-expression", /* Syntax */ + "Introduces a conditional SELECT CASE element.", /* Description */ + "CASE IF", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CASE_IS, /* UniqueID */ + "CASE IS", /* Syntax */ + "Same as CASE IF.", /* Description */ + "CASE IS", /* Name */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + C_CHAIN, /* UniqueID */ + "CHAIN filename$", /* Syntax */ + "Load and execute another BASIC program, without clearing vari" +"ables.", /* Description */ + "CHAIN", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CHANGE, /* UniqueID */ + "CHANGE A$ TO X | CHANGE X TO A$", /* Syntax */ + "Changes a string to a numeric array or a numeric array to a s" +"tring.", /* Description */ + "CHANGE", /* Name */ + B14 | D64 /* OptionVersionBitmask */ +}, +{ + C_CLEAR, /* UniqueID */ + "CLEAR", /* Syntax */ + "Sets all numeric variables to 0, and all string variables to " +"empty strings.", /* Description */ + "CLEAR", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CLOAD, /* UniqueID */ + "CLOAD [file-name$]", /* Syntax */ + "Loads an ASCII BASIC program into memory.", /* Description */ + "CLOAD", /* Name */ + B14 | M80 | T83 | T84 | M85 /* OptionVersionBitmask */ +}, +{ + C_CLOAD_, /* UniqueID */ + "CLOAD* ArrayName", /* Syntax */ + "Loads a numeric array from a file saved using CSAVE*.", /* Description */ + "CLOAD*", /* Name */ + B14 | M80 | T83 | T84 | M85 /* OptionVersionBitmask */ +}, +{ + C_CMDS, /* UniqueID */ + "CMDS", /* Syntax */ + "Prints a list of all implemented BASIC commands.", /* Description */ + "CMDS", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_COMMON, /* UniqueID */ + "COMMON variable [, ...]", /* Syntax */ + "Designates variables to be passed to a CHAINed program.", /* Description */ + "COMMON", /* Name */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CONT, /* UniqueID */ + "CONT", /* Syntax */ + "Continue a BASIC program after a STOP has been executed. Pro" +"gram resumes at the line after the STOP.", /* Description */ + "CONT", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_CSAVE, /* UniqueID */ + "CSAVE [file-name$]", /* Syntax */ + "Saves the current program into the file file-name$ in ASCII f" +"ormat.", /* Description */ + "CSAVE", /* Name */ + B14 | M80 | T83 | T84 | M85 /* OptionVersionBitmask */ +}, +{ + C_CSAVE_, /* UniqueID */ + "CSAVE* ArrayName", /* Syntax */ + "Saves a numeric array into a file.", /* Description */ + "CSAVE*", /* Name */ + B14 | M80 | T83 | T84 | M85 /* OptionVersionBitmask */ +}, +{ + C_DATA, /* UniqueID */ + "DATA constant [, ...]", /* Syntax */ + "Stores numeric and string constants to be accessed by READ.", /* Description */ + "DATA", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DEF, /* UniqueID */ + "DEF FNname(arg...)] = expression", /* Syntax */ + "Defines a single line user-written function. For multiple li" +"ne functions use the FUNCTION command.", /* Description */ + "DEF", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DEF_SUB, /* UniqueID */ + "DEF SUB", /* Syntax */ + "An internal command that allows the BASIC program to execute " +"any function as though it were a command. You do not directl" +"y call this command. If your program has a line beginning w" +"ith a functio name, then DEF SUB is used to execute the funct" +"ion and ignore the result.", /* Description */ + "DEF SUB", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DEFDBL, /* UniqueID */ + "DEFDBL letter[-letter] [, ...]", /* Syntax */ + "Declares variables with single-letter names as numeric variab" +"les. TODO: enforce the rnage of [MINDBL,MAXDBL].", /* Description */ + "DEFDBL", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DEFINT, /* UniqueID */ + "DEFINT letter[-letter] [, ...]", /* Syntax */ + "Declares variables with single-letter names as numeric variab" +"les. TODO: enforce the rnage of [MININT,MAXINT].", /* Description */ + "DEFINT", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DEFSNG, /* UniqueID */ + "DEFSNG letter[-letter] [, ...]", /* Syntax */ + "Declares variables with single-letter names as numeric variab" +"les. TODO: enforce the rnage of [MINSNG,MAXSNG].", /* Description */ + "DEFSNG", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DEFSTR, /* UniqueID */ + "DEFSTR letter[-letter] [, ...]", /* Syntax */ + "Declares variables with single-letter names as string variabl" +"es. TODO: enforce the range of [MINLEN,MAXLEN].", /* Description */ + "DEFSTR", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DELETE, /* UniqueID */ + "DELETE line [- line]", /* Syntax */ + "Deletes program lines indicated by the argument(s). All prog" +"ram lines have a number, which is visible with the LIST comma" +"nd. If line numbers are not provided, they are assigned begi" +"nning with 1.", /* Description */ + "DELETE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DIM, /* UniqueID */ + "DIM variable( elements [, ...]) [, ...]", /* Syntax */ + "Specifies the dimensions of an array variables.", /* Description */ + "DIM", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DO, /* UniqueID */ + "DO", /* Syntax */ + "Top of a DO - LOOP structure. If the loop is not terminated " +"by EXIT DO or LOOP UNTIL or LOOP WHILE, then it will loop for" +"ever.", /* Description */ + "DO", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DO_UNTIL, /* UniqueID */ + "DO UNTIL expression", /* Syntax */ + "Top of a DO - LOOP structure. If the expression is zero, the" +"n the loop is terminated.", /* Description */ + "DO UNTIL", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_DO_WHILE, /* UniqueID */ + "DO WHILE expression", /* Syntax */ + "Top of a DO - LOOP structure. If the expression is non-zero," +" then the loop is terminated.", /* Description */ + "DO WHILE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_EDIT, /* UniqueID */ + "EDIT", /* Syntax */ + "implementation defined.", /* Description */ + "EDIT", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_ELSE, /* UniqueID */ + "ELSE", /* Syntax */ + "Introduces a default condition in a multi-line IF statement.", /* Description */ + "ELSE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_ELSEIF, /* UniqueID */ + "ELSEIF", /* Syntax */ + "Introduces a secondary condition in a multi-line IF statement" +".", /* Description */ + "ELSEIF", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_END, /* UniqueID */ + "END", /* Syntax */ + "Terminates program execution. If the BASIC program was execut" +"ed from the operating system level, then control returns to t" +"he operating system, oterwise control reuturns to the BASIC p" +"rompt.", /* Description */ + "END", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_END_FUNCTION, /* UniqueID */ + "END FUNCTION", /* Syntax */ + "Specifies the last line of a multi-line FUNCTION definition.", /* Description */ + "END FUNCTION", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_END_IF, /* UniqueID */ + "END IF", /* Syntax */ + "Specifies the last line of a multi-line IF definition.", /* Description */ + "END IF", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_END_SELECT, /* UniqueID */ + "END SELECT", /* Syntax */ + "Specifies the last line of a multi-line SELECT CASE definitio" +"n.", /* Description */ + "END SELECT", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_END_SUB, /* UniqueID */ + "END SUB", /* Syntax */ + "Specifies the last line of a multi-line SUB definition.", /* Description */ + "END SUB", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_ERASE, /* UniqueID */ + "ERASE variable [, ...]", /* Syntax */ + "Eliminates arrayed variables from a program.", /* Description */ + "ERASE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_EXIT, /* UniqueID */ + "EXIT", /* Syntax */ + "EXIT by itself is a syntax error. Use EXIT DO, EXIT FOR, EXI" +"T FUNCTION, EXIT SUB, EXIT UNTIL, or EXIT WHILE.", /* Description */ + "EXIT", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_EXIT_DO, /* UniqueID */ + "EXIT DO", /* Syntax */ + "Immediately exits the inner-most DO-LOOP strucure.", /* Description */ + "EXIT DO", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_EXIT_FOR, /* UniqueID */ + "EXIT FOR", /* Syntax */ + "Immediately exits the inner-most FOR-NEXT strucure.", /* Description */ + "EXIT FOR", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_EXIT_FUNCTION, /* UniqueID */ + "EXIT FUNCTION", /* Syntax */ + "Immediately exits the inner-most multi-line FUNCTION strucure" +".", /* Description */ + "EXIT FUNCTION", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_EXIT_SUB, /* UniqueID */ + "EXIT SUB", /* Syntax */ + "Immediately exits the inner-most multi-line SUB strucure.", /* Description */ + "EXIT SUB", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_EXIT_UNTIL, /* UniqueID */ + "EXIT UNTIL", /* Syntax */ + "Immediately exits the inner-most UNTIL-UEND strucure.", /* Description */ + "EXIT UNTIL", /* Name */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + C_EXIT_WHILE, /* UniqueID */ + "EXIT WHILE", /* Syntax */ + "Immediately exits the inner-most WHILE-END strucure.", /* Description */ + "EXIT WHILE", /* Name */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + C_FIELD, /* UniqueID */ + "FIELD [#] device-number, number AS string-variable$ [, ...]", /* Syntax */ + "Assigns 'number' bytes in the buffer of random file 'device-n" +"umber' to the variable 'string-variable$'. GET will automati" +"cally update the variable, and PUT will automatically use the" +" variable.", /* Description */ + "FIELD", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_FNCS, /* UniqueID */ + "FNCS", /* Syntax */ + "Prints a list of all pre-defined BASIC functions.", /* Description */ + "FNCS", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_FOR, /* UniqueID */ + "FOR variable = start TO finish [STEP increment]", /* Syntax */ + "Top of a FOR - NEXT structure. The loop will continue a fixe" +"d number of times, which is determined by the values of start" +", finish, and increment.", /* Description */ + "FOR", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_FUNCTION, /* UniqueID */ + "FUNCTION [ ( parameter [, ... ] ) ]", /* Syntax */ + "Top line of a multi-line FUNCTION definition. The variable n" +"ames specified are local to the FUNCTION definition, and are " +"initialized BYVAL when the function is invoked by another rou" +"tine.", /* Description */ + "FUNCTION", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_GO, /* UniqueID */ + "GO", /* Syntax */ + "GO by itself is a syntax error. Use GOTO or GOSUB instead.", /* Description */ + "GO", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_GOSUB, /* UniqueID */ + "GOSUB line", /* Syntax */ + "Initiates a subroutine call to the line specified. The subro" +"utine must end with RETURN. The 'line' may be a number or a " +"label.", /* Description */ + "GOSUB", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_GOTO, /* UniqueID */ + "GOTO line", /* Syntax */ + "Branches program execution to the specified line. The 'line'" +" may be a number or a label.", /* Description */ + "GOTO", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_HELP, /* UniqueID */ + "HELP name", /* Syntax */ + "Provides help on the specified 'name' which is a command name" +" or function name.", /* Description */ + "HELP", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_IF, /* UniqueID */ + "IF expression THEN line1 [ELSE line2]", /* Syntax */ + "Single line standard IF command. If the value of expression " +"is non-zero, then branh to line1. If the value of expression" +" is zero and ELSE is provided, then branch to line2. If the " +"value of expression is zero and ELSE is not provided, continu" +"e to the next line. LABELS are not allowed.", /* Description */ + "IF", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_IF_THEN, /* UniqueID */ + "IF expression THEN", /* Syntax */ + "Top of a multi-line IF - END IF structure. If the value of e" +"xpression is non-zero, then the program lines upto the next E" +"LSE or ELSE IF command are executed, otherwise the program br" +"anches to the next ELSE or ELSE IF command.", /* Description */ + "IF THEN", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_INPUT, /* UniqueID */ + "INPUT [# device-number]|[;][\"prompt string\";] variable [, ..." +"]s", /* Syntax */ + "Reads input from the terminal or athe file specified by devic" +"e-number.", /* Description */ + "INPUT", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LET, /* UniqueID */ + "[LET] variable = expression", /* Syntax */ + "Assigns the value of expression to variable. The 'LET' keywo" +"rd is optional.", /* Description */ + "LET", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LINE, /* UniqueID */ + "LINE INPUT [[#] device-number,][\"prompt string\";] string-vari" +"able$", /* Syntax */ + "Reads entire line from the keyboard or a file into string-var" +"iable$.", /* Description */ + "LINE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LIST, /* UniqueID */ + "LIST line1 [- line2]", /* Syntax */ + "Lists BASIC program lines from 'line1' to 'line2'", /* Description */ + "LIST", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LOAD, /* UniqueID */ + "LOAD [file-name$]", /* Syntax */ + "Loads an ASCII BASIC program into memory.", /* Description */ + "LOAD", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LOOP, /* UniqueID */ + "LOOP", /* Syntax */ + "Bottom of a DO - LOOP structure. IF the loop is not terminat" +"ed by EXIT DO or DO UNTIL or DO WHILE, then it will loop fore" +"ver.", /* Description */ + "LOOP", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LOOP_UNTIL, /* UniqueID */ + "LOOP UNTIL", /* Syntax */ + "Bottom of a DO - LOOP structure. If the expression is zero, " +"then the loop is terminated.", /* Description */ + "LOOP UNTIL", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LOOP_WHILE, /* UniqueID */ + "LOOP WHILE", /* Syntax */ + "Bottom of a DO - LOOP structure. If the expression is non-ze" +"ro, then the loop is terminated.", /* Description */ + "LOOP WHILE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LPRINT, /* UniqueID */ + "LPRINT [USING format-string$;] expressions...", /* Syntax */ + "Send output to the default printer which is implementation de" +"fined.", /* Description */ + "LPRINT", /* Name */ + B14 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_LSET, /* UniqueID */ + "LSET string-variable$ = expression", /* Syntax */ + "Left-aligns the value of expression into string-variable$. I" +"f the length of the value is too short, then it is padded on " +"the right with spaces. If the length of the value is too lon" +"g, then it is truncated on the right. This is only for use w" +"ith variables assigned to a random access buffer with FIELD c" +"ommand.", /* Description */ + "LSET", /* Name */ + B14 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_MAINTAINER, /* UniqueID */ + "MAINTAINER", /* Syntax */ + "This command is reserved for use by the Bywater BASIC maintai" +"ner and does whatever the maintainer wants it to do. It is n" +"ot for the BASIC programmer.", /* Description */ + "MAINTAINER", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_MERGE, /* UniqueID */ + "MERGE file-name", /* Syntax */ + "Merges the BASIC program in file-name into the current BASIC " +"program. Lines in file-name replace any matching lines in th" +"e current program.", /* Description */ + "MERGE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_MID_, /* UniqueID */ + "MID$( variable$, start [, count ] ) = expression", /* Syntax */ + "Replaces a subtring of variable$ with expression.", /* Description */ + "MID$", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_NAME, /* UniqueID */ + "NAME old-file-name AS new-file-name", /* Syntax */ + "Changes the name of an existing file.", /* Description */ + "NAME", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_NEW, /* UniqueID */ + "NEW", /* Syntax */ + "Deletes the program in memory and clears all variables.", /* Description */ + "NEW", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_NEXT, /* UniqueID */ + "NEXT [variable]", /* Syntax */ + "The bottom line of a FOR - NEXT structure.", /* Description */ + "NEXT", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_ON, /* UniqueID */ + "ON expression GOTO | GOSUB line [, ...]", /* Syntax */ + "Branches (GOTO) or calls (GOSUB) based on the rounded value o" +"f variable.", /* Description */ + "ON", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_ON_ERROR_GOSUB, /* UniqueID */ + "ON ERROR GOSUB errline", /* Syntax */ + "When a trappable error occurs, execute 'GOSUB errline'. The " +"error handler must terminate with a RETURN command. If the l" +"ine number is 0 (zerp), then use the default error handler. " +"Valid when OPTION ERROR GOSUB.", /* Description */ + "ON ERROR GOSUB", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_ON_ERROR_GOTO, /* UniqueID */ + "ON ERROR GOTO errline", /* Syntax */ + "When a trappable error occurs, execute 'GOTO errline'. The e" +"rror handler must terminate with a RESUME command. If the li" +"ne number is 0 (zerp), then use the default error handler. V" +"alid when OPTION ERROR GOTO.", /* Description */ + "ON ERROR GOTO", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_ON_ERROR_RESUME_NEXT, /* UniqueID */ + "ON ERROR RESUME NEXT", /* Syntax */ + "When a trappable error occurs, execution continues with the n" +"ext line. Valid when OPTION ERROR GOTO.", /* Description */ + "ON ERROR RESUME NEXT", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_ON_ERROR_RETURN_NEXT, /* UniqueID */ + "ON ERROR RETURN NEXT", /* Syntax */ + "When a trappable error occurs, execution continues with the n" +"ext line. Valid when OPTION ERROR GOSUB.", /* Description */ + "ON ERROR RETURN NEXT", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_ON_TIMER, /* UniqueID */ + "ON TIMER count GOSUB line", /* Syntax */ + "Specifies a line (or label) to gosub when count seconds have " +"elaspsed after TIMER ON is executed. The interrupt routine s" +"hould end with a RETURN command. Timer events only occur in " +"running BASIC programs. The resolution of the clock is imple" +"mentation defined.", /* Description */ + "ON TIMER", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_OPEN, /* UniqueID */ + "OPEN file-name [FOR INPUT|OUTPUT|APPEND|BINARY|RANDOM] AS [#]" +"device-number [LEN = record-length]", /* Syntax */ + "Opens a file for use. INPUT, OUTPUT, and APPEND are for text" +" files. BINARY is for binary files. RANDOM is for structure" +"d binary files and requires LEN. Files opened for RANDOM use" +" GET and PUT.", /* Description */ + "OPEN", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_OPTION, /* UniqueID */ + "OPTION ...", /* Syntax */ + "OPTION by itself is a syntax error.", /* Description */ + "OPTION", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ANGLE_DEGREES, /* UniqueID */ + "OPTION ANGLE DEGREES", /* Syntax */ + "Configures the math functions to accept and return angles in " +"degrees.", /* Description */ + "OPTION ANGLE DEGREES", /* Name */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ANGLE_RADIANS, /* UniqueID */ + "OPTION ANGLE RADIANS", /* Syntax */ + "Configures the math functions to accept and return angles in " +"radians.", /* Description */ + "OPTION ANGLE RADIANS", /* Name */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ARITHMETIC_DECIMAL, /* UniqueID */ + "OPTION ARITHMETIC DECIMAL", /* Syntax */ + "Currently has no effect.", /* Description */ + "OPTION ARITHMETIC DECIMAL", /* Name */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ARITHMETIC_FIXED, /* UniqueID */ + "OPTION ARITHMETIC FIXED", /* Syntax */ + "Currently has no effect.", /* Description */ + "OPTION ARITHMETIC FIXED", /* Name */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ARITHMETIC_NATIVE, /* UniqueID */ + "OPTION ARITHMETIC NATIVE", /* Syntax */ + "Currently has no effect.", /* Description */ + "OPTION ARITHMETIC NATIVE", /* Name */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + C_OPTION_BASE_0, /* UniqueID */ + "OPTION BASE 0", /* Syntax */ + "Sets the lowest array subscript to 0.", /* Description */ + "OPTION BASE 0", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_OPTION_BASE_1, /* UniqueID */ + "OPTION BASE 1", /* Syntax */ + "Sets the lowest array subscript to 1.", /* Description */ + "OPTION BASE 1", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_OPTION_BUGS_OFF, /* UniqueID */ + "OPTION BUGS OFF", /* Syntax */ + "Disables bugs commonly found in BASIC-80 derivatives and clon" +"es.", /* Description */ + "OPTION BUGS OFF", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_BUGS_ON, /* UniqueID */ + "OPTION BUGS ON", /* Syntax */ + "Enables bugs commonly found in BASIC-80 derivatives and clone" +"s.", /* Description */ + "OPTION BUGS ON", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_COMMENT, /* UniqueID */ + "OPTION COMMENT char", /* Syntax */ + "Sets the comment character.", /* Description */ + "OPTION COMMENT", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_COMPARE_BINARY, /* UniqueID */ + "OPTION COMPARE BINARY", /* Syntax */ + "Causes string comparisons to be case-sensitive.", /* Description */ + "OPTION COMPARE BINARY", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_COMPARE_DATABASE, /* UniqueID */ + "OPTION COMPARE DATABASE", /* Syntax */ + "Causes string comparisons to be case-insensitive.", /* Description */ + "OPTION COMPARE DATABASE", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_COMPARE_TEXT, /* UniqueID */ + "OPTION COMPARE TEXT", /* Syntax */ + "Causes string comparisons to be case-insensitive.", /* Description */ + "OPTION COMPARE TEXT", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_COVERAGE_OFF, /* UniqueID */ + "OPTION COVERAGE OFF", /* Syntax */ + "Disables BASIC code coverage recording, displayed using the L" +"IST command.", /* Description */ + "OPTION COVERAGE OFF", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_COVERAGE_ON, /* UniqueID */ + "OPTION COVERAGE ON", /* Syntax */ + "Enables BASIC code coverage recording, displayed using the LI" +"ST command.", /* Description */ + "OPTION COVERAGE ON", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_DATE, /* UniqueID */ + "OPTION DATE format", /* Syntax */ + "Sets the date format string used by C strftime() for DATE$.", /* Description */ + "OPTION DATE", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_DISABLE_COMMAND, /* UniqueID */ + "OPTION DISABLE COMMAND name", /* Syntax */ + "Disables the specified BASIC command.", /* Description */ + "OPTION DISABLE COMMAND", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_DISABLE_FUNCTION, /* UniqueID */ + "OPTION DISABLE FUNCTION name", /* Syntax */ + "Disables the specified BASIC function.", /* Description */ + "OPTION DISABLE FUNCTION", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_DISABLE_OPERATOR, /* UniqueID */ + "OPTION DISABLE OPERATOR name", /* Syntax */ + "Disables the specified BASIC operator.", /* Description */ + "OPTION DISABLE OPERATOR", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ENABLE_COMMAND, /* UniqueID */ + "OPTION ENABLE COMMAND name", /* Syntax */ + "Enables the specified BASIC command.", /* Description */ + "OPTION ENABLE COMMAND", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ENABLE_FUNCTION, /* UniqueID */ + "OPTION ENABLE FUNCTION name", /* Syntax */ + "Enables the specified BASIC function.", /* Description */ + "OPTION ENABLE FUNCTION", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ENABLE_OPERATOR, /* UniqueID */ + "OPTION ENABLE OPERATOR name", /* Syntax */ + "Enables the specified BASIC operator.", /* Description */ + "OPTION ENABLE OPERATOR", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ERROR_GOSUB, /* UniqueID */ + "OPTION ERROR GOSUB", /* Syntax */ + "When an error occurs, GOSUB to the error handler. The error " +"handler exits with RETURN.", /* Description */ + "OPTION ERROR GOSUB", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_ERROR_GOTO, /* UniqueID */ + "OPTION ERROR GOTO", /* Syntax */ + "When an error occurs, GOTO to the error handler. The error h" +"andler exits with RESUME.", /* Description */ + "OPTION ERROR GOTO", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_INDENT, /* UniqueID */ + "OPTION INDENT number", /* Syntax */ + "Sets indention level for LIST. Zero means no indention. Def" +"ault is 2.", /* Description */ + "OPTION INDENT", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_LABELS_OFF, /* UniqueID */ + "OPTION LABELS OFF", /* Syntax */ + "Disables text labels.", /* Description */ + "OPTION LABELS OFF", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_LABELS_ON, /* UniqueID */ + "OPTION LABELS ON", /* Syntax */ + "Enables text labels.", /* Description */ + "OPTION LABELS ON", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_STATEMENT, /* UniqueID */ + "OPTION STATEMENT char", /* Syntax */ + "Sets the statement seperator character.", /* Description */ + "OPTION STATEMENT", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_STRICT_OFF, /* UniqueID */ + "OPTION STRICT OFF", /* Syntax */ + "Disables checking for implicit array creation without using t" +"he DIM command.", /* Description */ + "OPTION STRICT OFF", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_STRICT_ON, /* UniqueID */ + "OPTION STRICT ON", /* Syntax */ + "Enables checking for implicit array creation without using th" +"e DIM command.", /* Description */ + "OPTION STRICT ON", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_TERMINAL_ADM_3A, /* UniqueID */ + "OPTION TERMINAL ADM-3A", /* Syntax */ + "Enables ADM-3A terminal control codes for CLS, COLOR, and LOC" +"ATE.", /* Description */ + "OPTION TERMINAL ADM-3A", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_TERMINAL_ANSI, /* UniqueID */ + "OPTION TERMINAL ANSI", /* Syntax */ + "Enables ANSI terminal control codes for CLS, COLOR, and LOCAT" +"E.", /* Description */ + "OPTION TERMINAL ANSI", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_TERMINAL_NONE, /* UniqueID */ + "OPTION TERMINAL NONE", /* Syntax */ + "Disables terminal control codes for CLS, COLOR, and LOCATE.", /* Description */ + "OPTION TERMINAL NONE", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_TIME, /* UniqueID */ + "OPTION TIME format", /* Syntax */ + "Sets the time format string used by C strftime() for TIME$.", /* Description */ + "OPTION TIME", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_TRACE_OFF, /* UniqueID */ + "OPTION TRACE OFF", /* Syntax */ + "Disables displaying a stack trace when an ERROR occurs.", /* Description */ + "OPTION TRACE OFF", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_TRACE_ON, /* UniqueID */ + "OPTION TRACE ON", /* Syntax */ + "Enables displaying a stack trace when an ERROR occurs.", /* Description */ + "OPTION TRACE ON", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_OPTION_VERSION, /* UniqueID */ + "OPTION VERSION [version] ", /* Syntax */ + "Selects a combination of OPTION settings and enables certain " +"commands and functions. If no version is specified, displays" +" a list of the available versions.", /* Description */ + "OPTION VERSION", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_PRINT, /* UniqueID */ + "PRINT [# device-number,][USING format-string$;] expressions.." +".", /* Syntax */ + "Sends output to the console or a file.", /* Description */ + "PRINT", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_QUIT, /* UniqueID */ + "QUIT", /* Syntax */ + "Exits to the operating system.", /* Description */ + "QUIT", /* Name */ + B14 | D64 | E78 | E86 /* OptionVersionBitmask */ +}, +{ + C_READ, /* UniqueID */ + "READ variable [, ...]", /* Syntax */ + "Reads values from DATA statements.", /* Description */ + "READ", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_REM, /* UniqueID */ + "REM ...", /* Syntax */ + "Remark.", /* Description */ + "REM", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_RENUM, /* UniqueID */ + "RENUM", /* Syntax */ + "Implementation defined.", /* Description */ + "RENUM", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_RESTORE, /* UniqueID */ + "RESTORE [line]", /* Syntax */ + "Resets the line used for the next READ statement. 'line' may" +" be either a number or a label.", /* Description */ + "RESTORE", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_RESUME, /* UniqueID */ + "RESUME [ 0 | line | NEXT ]", /* Syntax */ + "Used in an error handler to specify the next line to execute." +" RESUME and RESUME 0 branch to ERL. RESUME NEXT branches to" +" the line after ERL. RESUME line branches to the specified l" +"ine. 'line' may be either a number or a label.", /* Description */ + "RESUME", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_RETURN, /* UniqueID */ + "RETURN", /* Syntax */ + "Concludes a subroutine called by GOSUB.", /* Description */ + "RETURN", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_RSET, /* UniqueID */ + "RSET string-variable$ = expression", /* Syntax */ + "Right-aligns the value of expression into string-variable$. " +"If the length of the value is too short, then it is padded on" +" the left with spaces. If the length of the value is too lon" +"g, then it is truncated on the right. This is only for use w" +"ith variables assigned to a random access buffer with FIELD c" +"ommand.", /* Description */ + "RSET", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_RUN, /* UniqueID */ + "RUN [line | file-name$]", /* Syntax */ + "RUN executes the program in memory from the start. RUN line " +"exexecutes the program in memory beginning at 'line'. RUN fi" +"le-name$ loads a new BAASIC program and executes the program " +"from the start.", /* Description */ + "RUN", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_SAVE, /* UniqueID */ + "SAVE [file-name$]", /* Syntax */ + "Saves the current program into the file file-name$ in ASCII f" +"ormat.", /* Description */ + "SAVE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_SELECT, /* UniqueID */ + "SELECT", /* Syntax */ + "SELECT by itself is a syntax error. Use SELECT CASE instead." +"", /* Description */ + "SELECT", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_SELECT_CASE, /* UniqueID */ + "SELECT CASE expression", /* Syntax */ + "Introduces a multi-line conditional selection statement.", /* Description */ + "SELECT CASE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_STOP, /* UniqueID */ + "STOP", /* Syntax */ + "Interrupts program execution and displays the line number of " +"the STOP command. For use when debugging BASIC programs. Wh" +"ether STOP issues a SIGINT signal is implementation defined.", /* Description */ + "STOP", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_SUB, /* UniqueID */ + "SUB name [ ( parameter [,...] ) ]", /* Syntax */ + "Top line of a multi-line SUB definition. The variable names " +"specified are local to the SUB definition, and are initialize" +"d BYVAL when the subroutine is invoked by another routine.", /* Description */ + "SUB", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_SWAP, /* UniqueID */ + "SWAP variable, variable", /* Syntax */ + "Swaps the values of two variables. Both variables must be of " +"the same type.", /* Description */ + "SWAP", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_SYSTEM, /* UniqueID */ + "SYSTEM", /* Syntax */ + "Exits to the operating system.", /* Description */ + "SYSTEM", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_TIMER, /* UniqueID */ + "TIMER", /* Syntax */ + "TIMER by itself is a syntax error. Use TIMER OFF, TIMER ON, " +"or TIMER STOP instead.", /* Description */ + "TIMER", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_TIMER_OFF, /* UniqueID */ + "TIMER OFF", /* Syntax */ + "TIMER OFF terminates the timer interrupt.", /* Description */ + "TIMER OFF", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_TIMER_ON, /* UniqueID */ + "TIMER ON", /* Syntax */ + "TIMER ON enables the timer interrupt. When the specified sec" +"onds have elapsed, TIMER STOP is internaly executed before th" +"e interrupt is taken. TIMER ON should be executed just befor" +"e the RETURN command if you want the interrupt to occur again" +".", /* Description */ + "TIMER ON", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_TIMER_STOP, /* UniqueID */ + "TIMER STOP", /* Syntax */ + "TIMER STOP disables the interrupt, but the count continues.", /* Description */ + "TIMER STOP", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_UEND, /* UniqueID */ + "UEND", /* Syntax */ + "Bottom of a UNTIL - UEND structure.", /* Description */ + "UEND", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_UNTIL, /* UniqueID */ + "UNTIL expression", /* Syntax */ + "Top of a UNTIL - UEND structure. If the expression is zero, " +"then the loop is terminated.", /* Description */ + "UNTIL", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_USER_LBL, /* UniqueID */ + "USER LBL", /* Syntax */ + "An internal command that allows the BASIC program to find a u" +"ser label. You do not directly call this command. If your p" +"rogram has a line with a label, then USER LBL is used to mark" +" the line.", /* Description */ + "USER LBL", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_VARS, /* UniqueID */ + "VARS", /* Syntax */ + "Prints a list of all global variables.", /* Description */ + "VARS", /* Name */ + B14 /* OptionVersionBitmask */ +}, +{ + C_WEND, /* UniqueID */ + "WEND", /* Syntax */ + "Bottom of a WHILE - WEND structure.", /* Description */ + "WEND", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_WHILE, /* UniqueID */ + "WHILE", /* Syntax */ + "Top of a WHILE - WEND structure. If the expression is non-ze" +"ro, then the loop is terminated.", /* Description */ + "WHILE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + C_WRITE, /* UniqueID */ + "WRITE [# device-number,] element [, .... ]", /* Syntax */ + "Outputs variables to the screen or to a file.", /* Description */ + "WRITE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +}; + +/* FUNCTIONS */ +#define F_ABS_X_N 1 /* N = ABS( X ) */ +#define F_ACOS_X_N 2 /* N = ACOS( X ) */ +#define F_ANGLE_X_Y_N 3 /* N = ANGLE( X, Y ) */ +#define F_ARGC_N 4 /* N = ARGC */ +#define F_ARGT_X_S 5 /* S$ = ARGT$( X ) */ +#define F_ARGV_X_N 6 /* N = ARGV( X ) */ +#define F_ARGV_X_S 7 /* S$ = ARGV$( X ) */ +#define F_ASC_A_N 8 /* N = ASC( A$ ) */ +#define F_ASIN_X_N 9 /* N = ASIN( X ) */ +#define F_ATN_X_N 10 /* N = ATN( X ) */ +#define F_CCUR_X_N 11 /* N = CCUR( X ) */ +#define F_CDBL_X_N 12 /* N = CDBL( X ) */ +#define F_CEIL_X_N 13 /* N = CEIL( X ) */ +#define F_CHDIR_A_N 14 /* N = CHDIR( A$ ) */ +#define F_CHR_X_S 15 /* S$ = CHR$( X ) */ +#define F_CINT_X_N 16 /* N = CINT( X ) */ +#define F_CLNG_X_N 17 /* N = CLNG( X ) */ +#define F_CLOSE_X_N 18 /* N = CLOSE( X ) */ +#define F_CLS_N 19 /* N = CLS */ +#define F_COLOR_X_Y_N 20 /* N = COLOR( X, Y ) */ +#define F_COS_X_N 21 /* N = COS( X ) */ +#define F_COSH_X_N 22 /* N = COSH( X ) */ +#define F_COT_X_N 23 /* N = COT( X ) */ +#define F_CSC_X_N 24 /* N = CSC( X ) */ +#define F_CSNG_X_N 25 /* N = CSNG( X ) */ +#define F_CVC_A_N 26 /* N = CVC( A$ ) */ +#define F_CVD_A_N 27 /* N = CVD( A$ ) */ +#define F_CVI_A_N 28 /* N = CVI( A$ ) */ +#define F_CVL_A_N 29 /* N = CVL( A$ ) */ +#define F_CVS_A_N 30 /* N = CVS( A$ ) */ +#define F_DATE_N 31 /* N = DATE */ +#define F_DATE_S 32 /* S$ = DATE$ */ +#define F_DEF_FN_N 33 /* N = DEF FN */ +#define F_DEG_X_N 34 /* N = DEG( X ) */ +#define F_ENVIRON_A_N 35 /* N = ENVIRON( A$ ) */ +#define F_ENVIRON_A_S 36 /* S$ = ENVIRON$( A$ ) */ +#define F_EOF_X_N 37 /* N = EOF( X ) */ +#define F_EPS_X_N 38 /* N = EPS( X ) */ +#define F_ERL_N 39 /* N = ERL */ +#define F_ERR_N 40 /* N = ERR */ +#define F_ERR_S 41 /* S$ = ERR$ */ +#define F_ERROR_X_N 42 /* N = ERROR( X ) */ +#define F_ERROR_X_A_N 43 /* N = ERROR( X, A$ ) */ +#define F_EXP_X_N 44 /* N = EXP( X ) */ +#define F_FILEATTR_X_Y_N 45 /* N = FILEATTR( X, Y ) */ +#define F_FILES_N 46 /* N = FILES */ +#define F_FILES_A_N 47 /* N = FILES( A$ ) */ +#define F_FIX_X_N 48 /* N = FIX( X ) */ +#define F_FP_X_N 49 /* N = FP( X ) */ +#define F_FRE_N 50 /* N = FRE */ +#define F_FRE_X_N 51 /* N = FRE( X ) */ +#define F_FRE_A_N 52 /* N = FRE( A$ ) */ +#define F_FREEFILE_N 53 /* N = FREEFILE */ +#define F_GET_X_N 54 /* N = GET( X ) */ +#define F_GET_X_Y_N 55 /* N = GET( X, Y ) */ +#define F_HEX_X_S 56 /* S$ = HEX$( X ) */ +#define F_INKEY_S 57 /* S$ = INKEY$ */ +#define F_INP_X_N 58 /* N = INP( X ) */ +#define F_INPUT_X_S 59 /* S$ = INPUT$( X ) */ +#define F_INPUT_X_Y_S 60 /* S$ = INPUT$( X, Y ) */ +#define F_INSTR_A_B_N 61 /* N = INSTR( A$, B$ ) */ +#define F_INSTR_X_A_B_N 62 /* N = INSTR( X, A$, B$ ) */ +#define F_INT_X_N 63 /* N = INT( X ) */ +#define F_IP_X_N 64 /* N = IP( X ) */ +#define F_KILL_A_N 65 /* N = KILL( A$ ) */ +#define F_LCASE_A_S 66 /* S$ = LCASE$( A$ ) */ +#define F_LEFT_A_X_S 67 /* S$ = LEFT$( A$, X ) */ +#define F_LEN_A_N 68 /* N = LEN( A$ ) */ +#define F_LOC_X_N 69 /* N = LOC( X ) */ +#define F_LOCATE_X_Y_N 70 /* N = LOCATE( X, Y ) */ +#define F_LOF_X_N 71 /* N = LOF( X ) */ +#define F_LOG_X_N 72 /* N = LOG( X ) */ +#define F_LOG10_X_N 73 /* N = LOG10( X ) */ +#define F_LOG2_X_N 74 /* N = LOG2( X ) */ +#define F_LPOS_N 75 /* N = LPOS */ +#define F_LTRIM_A_S 76 /* S$ = LTRIM$( A$ ) */ +#define F_LWIDTH_X_N 77 /* N = LWIDTH( X ) */ +#define F_MAX_X_Y_N 78 /* N = MAX( X, Y ) */ +#define F_MAXBYT_N 79 /* N = MAXBYT */ +#define F_MAXCUR_N 80 /* N = MAXCUR */ +#define F_MAXDBL_N 81 /* N = MAXDBL */ +#define F_MAXDEV_N 82 /* N = MAXDEV */ +#define F_MAXINT_N 83 /* N = MAXINT */ +#define F_MAXLEN_A_N 84 /* N = MAXLEN( A$ ) */ +#define F_MAXLNG_N 85 /* N = MAXLNG */ +#define F_MAXLVL_N 86 /* N = MAXLVL */ +#define F_MAXNUM_N 87 /* N = MAXNUM */ +#define F_MAXSNG_N 88 /* N = MAXSNG */ +#define F_MID_A_X_S 89 /* S$ = MID$( A$, X ) */ +#define F_MID_A_X_Y_S 90 /* S$ = MID$( A$, X, Y ) */ +#define F_MIN_X_Y_N 91 /* N = MIN( X, Y ) */ +#define F_MINBYT_N 92 /* N = MINBYT */ +#define F_MINCUR_N 93 /* N = MINCUR */ +#define F_MINDBL_N 94 /* N = MINDBL */ +#define F_MINDEV_N 95 /* N = MINDEV */ +#define F_MININT_N 96 /* N = MININT */ +#define F_MINLNG_N 97 /* N = MINLNG */ +#define F_MINNUM_N 98 /* N = MINNUM */ +#define F_MINSNG_N 99 /* N = MINSNG */ +#define F_MKC_X_S 100 /* S$ = MKC$( X ) */ +#define F_MKD_X_S 101 /* S$ = MKD$( X ) */ +#define F_MKDIR_A_N 102 /* N = MKDIR( A$ ) */ +#define F_MKI_X_S 103 /* S$ = MKI$( X ) */ +#define F_MKL_X_S 104 /* S$ = MKL$( X ) */ +#define F_MKS_X_S 105 /* S$ = MKS$( X ) */ +#define F_MOD_X_Y_N 106 /* N = MOD( X, Y ) */ +#define F_NAME_A_B_N 107 /* N = NAME( A$, B$ ) */ +#define F_NULL_X_N 108 /* N = NULL( X ) */ +#define F_OCT_X_S 109 /* S$ = OCT$( X ) */ +#define F_OPEN_A_X_B_N 110 /* N = OPEN( A$, X, B$ ) */ +#define F_OPEN_A_X_B_Y_N 111 /* N = OPEN( A$, X, B$, Y ) */ +#define F_ORD_A_N 112 /* N = ORD( A$ ) */ +#define F_OUT_X_Y_N 113 /* N = OUT( X, Y ) */ +#define F_PEEK_X_N 114 /* N = PEEK( X ) */ +#define F_PI_N 115 /* N = PI */ +#define F_POKE_X_Y_N 116 /* N = POKE( X, Y ) */ +#define F_POS_N 117 /* N = POS */ +#define F_POS_X_N 118 /* N = POS( X ) */ +#define F_POS_A_B_N 119 /* N = POS( A$, B$ ) */ +#define F_POS_A_B_X_N 120 /* N = POS( A$, B$, X ) */ +#define F_PUT_X_N 121 /* N = PUT( X ) */ +#define F_PUT_X_Y_N 122 /* N = PUT( X, Y ) */ +#define F_RAD_X_N 123 /* N = RAD( X ) */ +#define F_RANDOMIZE_N 124 /* N = RANDOMIZE */ +#define F_RANDOMIZE_X_N 125 /* N = RANDOMIZE( X ) */ +#define F_REMAINDER_X_Y_N 126 /* N = REMAINDER( X, Y ) */ +#define F_REPEAT_X_Y_S 127 /* S$ = REPEAT$( X, Y ) */ +#define F_REPEAT_X_A_S 128 /* S$ = REPEAT$( X, A$ ) */ +#define F_RESET_N 129 /* N = RESET */ +#define F_RIGHT_A_X_S 130 /* S$ = RIGHT$( A$, X ) */ +#define F_RMDIR_A_N 131 /* N = RMDIR( A$ ) */ +#define F_RND_N 132 /* N = RND */ +#define F_RND_X_N 133 /* N = RND( X ) */ +#define F_ROUND_X_Y_N 134 /* N = ROUND( X, Y ) */ +#define F_RTRIM_A_S 135 /* S$ = RTRIM$( A$ ) */ +#define F_SEC_X_N 136 /* N = SEC( X ) */ +#define F_SEEK_X_N 137 /* N = SEEK( X ) */ +#define F_SEEK_X_Y_N 138 /* N = SEEK( X, Y ) */ +#define F_SGN_X_N 139 /* N = SGN( X ) */ +#define F_SHELL_A_N 140 /* N = SHELL( A$ ) */ +#define F_SIN_X_N 141 /* N = SIN( X ) */ +#define F_SINH_X_N 142 /* N = SINH( X ) */ +#define F_SPACE_X_S 143 /* S$ = SPACE$( X ) */ +#define F_SPC_X_S 144 /* S$ = SPC( X ) */ +#define F_SQR_X_N 145 /* N = SQR( X ) */ +#define F_STR_X_S 146 /* S$ = STR$( X ) */ +#define F_STRING_X_A_S 147 /* S$ = STRING$( X, A$ ) */ +#define F_STRING_X_Y_S 148 /* S$ = STRING$( X, Y ) */ +#define F_TAB_X_S 149 /* S$ = TAB( X ) */ +#define F_TAN_X_N 150 /* N = TAN( X ) */ +#define F_TANH_X_N 151 /* N = TANH( X ) */ +#define F_TIME_N 152 /* N = TIME */ +#define F_TIME_S 153 /* S$ = TIME$ */ +#define F_TIMER_N 154 /* N = TIMER */ +#define F_TRIM_A_S 155 /* S$ = TRIM$( A$ ) */ +#define F_TROFF_N 156 /* N = TROFF */ +#define F_TRON_N 157 /* N = TRON */ +#define F_TRUNCATE_X_Y_N 158 /* N = TRUNCATE( X, Y ) */ +#define F_UCASE_A_S 159 /* S$ = UCASE$( A$ ) */ +#define F_VAL_A_N 160 /* N = VAL( A$ ) */ +#define F_WAIT_X_Y_N 161 /* N = WAIT( X, Y ) */ +#define F_WAIT_X_Y_Z_N 162 /* N = WAIT( X, Y, Z ) */ +#define F_WIDTH_X_N 163 /* N = WIDTH( X ) */ +#define F_WIDTH_X_Y_N 164 /* N = WIDTH( X, Y ) */ +#define NUM_FUNCTIONS 164 +/* SWITCH */ +switch( UniqueID ) +{ +case F_ABS_X_N: + break; +case F_ACOS_X_N: + break; +case F_ANGLE_X_Y_N: + break; +case F_ARGC_N: + break; +case F_ARGT_X_S: + break; +case F_ARGV_X_N: + break; +case F_ARGV_X_S: + break; +case F_ASC_A_N: + break; +case F_ASIN_X_N: + break; +case F_ATN_X_N: + break; +case F_CCUR_X_N: + break; +case F_CDBL_X_N: + break; +case F_CEIL_X_N: + break; +case F_CHDIR_A_N: + break; +case F_CHR_X_S: + break; +case F_CINT_X_N: + break; +case F_CLNG_X_N: + break; +case F_CLOSE_X_N: + break; +case F_CLS_N: + break; +case F_COLOR_X_Y_N: + break; +case F_COS_X_N: + break; +case F_COSH_X_N: + break; +case F_COT_X_N: + break; +case F_CSC_X_N: + break; +case F_CSNG_X_N: + break; +case F_CVC_A_N: + break; +case F_CVD_A_N: + break; +case F_CVI_A_N: + break; +case F_CVL_A_N: + break; +case F_CVS_A_N: + break; +case F_DATE_N: + break; +case F_DATE_S: + break; +case F_DEF_FN_N: + break; +case F_DEG_X_N: + break; +case F_ENVIRON_A_N: + break; +case F_ENVIRON_A_S: + break; +case F_EOF_X_N: + break; +case F_EPS_X_N: + break; +case F_ERL_N: + break; +case F_ERR_N: + break; +case F_ERR_S: + break; +case F_ERROR_X_N: + break; +case F_ERROR_X_A_N: + break; +case F_EXP_X_N: + break; +case F_FILEATTR_X_Y_N: + break; +case F_FILES_N: + break; +case F_FILES_A_N: + break; +case F_FIX_X_N: + break; +case F_FP_X_N: + break; +case F_FRE_N: + break; +case F_FRE_X_N: + break; +case F_FRE_A_N: + break; +case F_FREEFILE_N: + break; +case F_GET_X_N: + break; +case F_GET_X_Y_N: + break; +case F_HEX_X_S: + break; +case F_INKEY_S: + break; +case F_INP_X_N: + break; +case F_INPUT_X_S: + break; +case F_INPUT_X_Y_S: + break; +case F_INSTR_A_B_N: + break; +case F_INSTR_X_A_B_N: + break; +case F_INT_X_N: + break; +case F_IP_X_N: + break; +case F_KILL_A_N: + break; +case F_LCASE_A_S: + break; +case F_LEFT_A_X_S: + break; +case F_LEN_A_N: + break; +case F_LOC_X_N: + break; +case F_LOCATE_X_Y_N: + break; +case F_LOF_X_N: + break; +case F_LOG_X_N: + break; +case F_LOG10_X_N: + break; +case F_LOG2_X_N: + break; +case F_LPOS_N: + break; +case F_LTRIM_A_S: + break; +case F_LWIDTH_X_N: + break; +case F_MAX_X_Y_N: + break; +case F_MAXBYT_N: + break; +case F_MAXCUR_N: + break; +case F_MAXDBL_N: + break; +case F_MAXDEV_N: + break; +case F_MAXINT_N: + break; +case F_MAXLEN_A_N: + break; +case F_MAXLNG_N: + break; +case F_MAXLVL_N: + break; +case F_MAXNUM_N: + break; +case F_MAXSNG_N: + break; +case F_MID_A_X_S: + break; +case F_MID_A_X_Y_S: + break; +case F_MIN_X_Y_N: + break; +case F_MINBYT_N: + break; +case F_MINCUR_N: + break; +case F_MINDBL_N: + break; +case F_MINDEV_N: + break; +case F_MININT_N: + break; +case F_MINLNG_N: + break; +case F_MINNUM_N: + break; +case F_MINSNG_N: + break; +case F_MKC_X_S: + break; +case F_MKD_X_S: + break; +case F_MKDIR_A_N: + break; +case F_MKI_X_S: + break; +case F_MKL_X_S: + break; +case F_MKS_X_S: + break; +case F_MOD_X_Y_N: + break; +case F_NAME_A_B_N: + break; +case F_NULL_X_N: + break; +case F_OCT_X_S: + break; +case F_OPEN_A_X_B_N: + break; +case F_OPEN_A_X_B_Y_N: + break; +case F_ORD_A_N: + break; +case F_OUT_X_Y_N: + break; +case F_PEEK_X_N: + break; +case F_PI_N: + break; +case F_POKE_X_Y_N: + break; +case F_POS_N: + break; +case F_POS_X_N: + break; +case F_POS_A_B_N: + break; +case F_POS_A_B_X_N: + break; +case F_PUT_X_N: + break; +case F_PUT_X_Y_N: + break; +case F_RAD_X_N: + break; +case F_RANDOMIZE_N: + break; +case F_RANDOMIZE_X_N: + break; +case F_REMAINDER_X_Y_N: + break; +case F_REPEAT_X_Y_S: + break; +case F_REPEAT_X_A_S: + break; +case F_RESET_N: + break; +case F_RIGHT_A_X_S: + break; +case F_RMDIR_A_N: + break; +case F_RND_N: + break; +case F_RND_X_N: + break; +case F_ROUND_X_Y_N: + break; +case F_RTRIM_A_S: + break; +case F_SEC_X_N: + break; +case F_SEEK_X_N: + break; +case F_SEEK_X_Y_N: + break; +case F_SGN_X_N: + break; +case F_SHELL_A_N: + break; +case F_SIN_X_N: + break; +case F_SINH_X_N: + break; +case F_SPACE_X_S: + break; +case F_SPC_X_S: + break; +case F_SQR_X_N: + break; +case F_STR_X_S: + break; +case F_STRING_X_A_S: + break; +case F_STRING_X_Y_S: + break; +case F_TAB_X_S: + break; +case F_TAN_X_N: + break; +case F_TANH_X_N: + break; +case F_TIME_N: + break; +case F_TIME_S: + break; +case F_TIMER_N: + break; +case F_TRIM_A_S: + break; +case F_TROFF_N: + break; +case F_TRON_N: + break; +case F_TRUNCATE_X_Y_N: + break; +case F_UCASE_A_S: + break; +case F_VAL_A_N: + break; +case F_WAIT_X_Y_N: + break; +case F_WAIT_X_Y_Z_N: + break; +case F_WIDTH_X_N: + break; +case F_WIDTH_X_Y_N: + break; +} +/* FUNCTION TABLE */ + +#include "bwbasic.h" + +struct bwb_function bwb_prefuncs[ NUM_FUNCTIONS ] = +{ +{ + F_ABS_X_N, /* UniqueID */ + "N = ABS( X )", /* Syntax */ + "The absolute value of X.", /* Description */ + "ABS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ACOS_X_N, /* UniqueID */ + "N = ACOS( X )", /* Syntax */ + "The arccosine of X in radians, where 0 <= ACOS(X) <= PI. X s" +"hall be in the range -1 <= X <= 1.", /* Description */ + "ACOS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_ANGLE_X_Y_N, /* UniqueID */ + "N = ANGLE( X, Y )", /* Syntax */ + "The angle in radians between the positive x-axis and the vect" +"or joining the origin to the point with coordinates (X, Y), w" +"here -PI < ANGLE(X,Y) <= PI. X and Y must not both be 0. No" +"te that the counterclockwise is positive, e.g., ANGLE(1,1) = " +"45 degrees.", /* Description */ + "ANGLE", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_ARGC_N, /* UniqueID */ + "N = ARGC", /* Syntax */ + "The number of parameters passed to a FUNCTION or SUB. If not" +" in a FUNCTION or SUB, returns -1.", /* Description */ + "ARGC", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_ARGT_X_S, /* UniqueID */ + "S$ = ARGT$( X )", /* Syntax */ + "The value of the X'th parameter to a FUNCTION or SUB; '$' or " +"'#'. X in [1,ARGC].", /* Description */ + "ARGT$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_ARGV_X_N, /* UniqueID */ + "N = ARGV( X )", /* Syntax */ + "The value of the X'th parameter to a FUNCTION or SUB. X in [" +"1,ARGC] and ARGT$( X ) = '#'.", /* Description */ + "ARGV", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_ARGV_X_S, /* UniqueID */ + "S$ = ARGV$( X )", /* Syntax */ + "The value of the X'th parameter to a FUNCTION or SUB. X in [" +"1,ARGC] and ARGT$( X ) = '$'.", /* Description */ + "ARGV$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_ASC_A_N, /* UniqueID */ + "N = ASC( A$ )", /* Syntax */ + "The ASCII code for the first letter in A$.", /* Description */ + "ASC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ASIN_X_N, /* UniqueID */ + "N = ASIN( X )", /* Syntax */ + "The arcsine of X in radians, where -PI/2 <= ASIN(X) <= PI/2; " +"X shall be in the range -1 <= X <= 1.", /* Description */ + "ASIN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_ATN_X_N, /* UniqueID */ + "N = ATN( X )", /* Syntax */ + "The arctangent of X in radians, i.e. the angle whose tangent " +"is X, where -PI/2 < ATN(X) < PI/2.", /* Description */ + "ATN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CCUR_X_N, /* UniqueID */ + "N = CCUR( X )", /* Syntax */ + "The currency (64-bit) integer value of X.", /* Description */ + "CCUR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1CUR, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_CDBL_X_N, /* UniqueID */ + "N = CDBL( X )", /* Syntax */ + "The double-precision value of X.", /* Description */ + "CDBL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DBL, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CEIL_X_N, /* UniqueID */ + "N = CEIL( X )", /* Syntax */ + "The smallest integer not less than X.", /* Description */ + "CEIL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_CHDIR_A_N, /* UniqueID */ + "N = CHDIR( A$ )", /* Syntax */ + "Changes to the directory named to A$.", /* Description */ + "CHDIR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CHR_X_S, /* UniqueID */ + "S$ = CHR$( X )", /* Syntax */ + "The one-character string with the character corresponding to " +"the ASCII code X.", /* Description */ + "CHR$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CINT_X_N, /* UniqueID */ + "N = CINT( X )", /* Syntax */ + "The short (16-bit) integer value of X.", /* Description */ + "CINT", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CLNG_X_N, /* UniqueID */ + "N = CLNG( X )", /* Syntax */ + "The long (32-bit) integer value of X.", /* Description */ + "CLNG", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LNG, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CLOSE_X_N, /* UniqueID */ + "N = CLOSE( X )", /* Syntax */ + "Close file number X.", /* Description */ + "CLOSE", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CLS_N, /* UniqueID */ + "N = CLS", /* Syntax */ + "Clears the screen. Cursor is positioned at row 1, column 1.", /* Description */ + "CLS", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_COLOR_X_Y_N, /* UniqueID */ + "N = COLOR( X, Y )", /* Syntax */ + "Sets the foreground text color to X, and the background text " +"color to Y.", /* Description */ + "COLOR", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1BYT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_COS_X_N, /* UniqueID */ + "N = COS( X )", /* Syntax */ + "The cosine of X, where X is in radians.", /* Description */ + "COS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_COSH_X_N, /* UniqueID */ + "N = COSH( X )", /* Syntax */ + "The hyperbolic cosine of X.", /* Description */ + "COSH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_COT_X_N, /* UniqueID */ + "N = COT( X )", /* Syntax */ + "The cotangent of X, where X is in radians.", /* Description */ + "COT", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_CSC_X_N, /* UniqueID */ + "N = CSC( X )", /* Syntax */ + "The cosecant of X, where X is in radians.", /* Description */ + "CSC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_CSNG_X_N, /* UniqueID */ + "N = CSNG( X )", /* Syntax */ + "The single-precision value of X.", /* Description */ + "CSNG", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1FLT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CVC_A_N, /* UniqueID */ + "N = CVC( A$ )", /* Syntax */ + "The currency (64-bit) integer value in A$, which was created " +"by MKC$.", /* Description */ + "CVC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1CUR, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_CVD_A_N, /* UniqueID */ + "N = CVD( A$ )", /* Syntax */ + "The double-precision value in A$, which was created by MKD$.", /* Description */ + "CVD", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1DBL, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CVI_A_N, /* UniqueID */ + "N = CVI( A$ )", /* Syntax */ + "The short (16-bit) integer value in A$, which was created by " +"MKI$.", /* Description */ + "CVI", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CVL_A_N, /* UniqueID */ + "N = CVL( A$ )", /* Syntax */ + "The long (32-bit) integer value in A$, which was created by M" +"KL$.", /* Description */ + "CVL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1LNG, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_CVS_A_N, /* UniqueID */ + "N = CVS( A$ )", /* Syntax */ + "The single-precision value in A$, which was created by MKS$.", /* Description */ + "CVS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1FLT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_DATE_N, /* UniqueID */ + "N = DATE", /* Syntax */ + "The current date in decimal form YYYDDD, where YYY are the nu" +"mber of years since 1900 and DDD is the ordinal number of the" +" current day of the year; e.g., the value of DATE on May 9, 1" +"977 was 77129. If there is no calendar available, then the v" +"alue of DATE shall be -1.", /* Description */ + "DATE", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_DATE_S, /* UniqueID */ + "S$ = DATE$", /* Syntax */ + "BASIC-80: The current date based on the computer's internal c" +"lock as a string in the form 'MM-DD-YYYY'.ECMA-116: The date " +"in the string representation 'YYYYMMDD' according to ISO 2014" +". For example, the value of DATE$ on May 9, 1977 was '197705" +"09'. If there is not calendar available, then the value of D" +"ATE$ shall be '00000000'.", /* Description */ + "DATE$", /* Name */ + STRING, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_DEF_FN_N, /* UniqueID */ + "N = DEF FN", /* Syntax */ + "User Function.", /* Description */ + "DEF FN", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_DEG_X_N, /* UniqueID */ + "N = DEG( X )", /* Syntax */ + "The number of degrees in X radians.", /* Description */ + "DEG", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_ENVIRON_A_N, /* UniqueID */ + "N = ENVIRON( A$ )", /* Syntax */ + "Sends the environment variable expression contained in A$ to " +"the host operating system. A$ must contain the '=' characte" +"r.", /* Description */ + "ENVIRON", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ENVIRON_A_S, /* UniqueID */ + "S$ = ENVIRON$( A$ )", /* Syntax */ + "The value of the environment variable named A$.", /* Description */ + "ENVIRON$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_EOF_X_N, /* UniqueID */ + "N = EOF( X )", /* Syntax */ + "If device number X is at the end-of-file, then -1, otherwise " +"0.", /* Description */ + "EOF", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_EPS_X_N, /* UniqueID */ + "N = EPS( X )", /* Syntax */ + "The maximum of (X-X1,X2-X, sigma) where X1 and X2 are the pre" +"decessor and successor of X and signma is the smallest positi" +"ve value representable. If X has no predecessor the X1=X and" +" if X has no successor the X2=X. Note EPS(0) is the smallest" +" positive number representable by the implementation, and is " +"therefor implementation-defined. Note also that EPS may prod" +"uce different results for different arithmetic options (see O" +"PTION ARITHMETIC).", /* Description */ + "EPS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_ERL_N, /* UniqueID */ + "N = ERL", /* Syntax */ + "The line number of the most recent error.", /* Description */ + "ERL", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ERR_N, /* UniqueID */ + "N = ERR", /* Syntax */ + "The error number of the most recent error.", /* Description */ + "ERR", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ERR_S, /* UniqueID */ + "S$ = ERR$", /* Syntax */ + "The last error message.", /* Description */ + "ERR$", /* Name */ + STRING, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ERROR_X_N, /* UniqueID */ + "N = ERROR( X )", /* Syntax */ + "Simulate the error number in X.", /* Description */ + "ERROR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ERROR_X_A_N, /* UniqueID */ + "N = ERROR( X, A$ )", /* Syntax */ + "Simulate the error number in X, with a custom message in A$.", /* Description */ + "ERROR", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2STR, /* ParameterTypes */ + P1BYT | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_EXP_X_N, /* UniqueID */ + "N = EXP( X )", /* Syntax */ + "The exponential value of X, i.e., the value of the base of na" +"tural logarithms (e = 2.71828) raised to the power of X; if " +"EXP(X) is less that machine infinitesimal, then its value sha" +"ll be replaced with zero.", /* Description */ + "EXP", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_FILEATTR_X_Y_N, /* UniqueID */ + "N = FILEATTR( X, Y )", /* Syntax */ + "For file X, if Y = 1 then returns open mode, otherwise return" +"s zero.", /* Description */ + "FILEATTR", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_FILES_N, /* UniqueID */ + "N = FILES", /* Syntax */ + "Displays all the file names.", /* Description */ + "FILES", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_FILES_A_N, /* UniqueID */ + "N = FILES( A$ )", /* Syntax */ + "Displays all the file names matching A$.", /* Description */ + "FILES", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_FIX_X_N, /* UniqueID */ + "N = FIX( X )", /* Syntax */ + "The truncated integer, part of X. FIX (X) is equivalent to SG" +"N(X)*INT(ABS(X)). The major difference between FIX and INT is" +" that FIX does not return the next lower number for negative " +"X.", /* Description */ + "FIX", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_FP_X_N, /* UniqueID */ + "N = FP( X )", /* Syntax */ + "The fractional part of X, i.e. X - IP(X).", /* Description */ + "FP", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_FRE_N, /* UniqueID */ + "N = FRE", /* Syntax */ + "The number of bytes of available memory. This function is pr" +"ovided for backward compatibility and it always returns a fix" +"ed value of 32000.", /* Description */ + "FRE", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_FRE_X_N, /* UniqueID */ + "N = FRE( X )", /* Syntax */ + "The number of bytes of available memory. This function is pr" +"ovided for backward compatibility and it always returns a fix" +"ed value of 32000. The value of X is ignored.", /* Description */ + "FRE", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_FRE_A_N, /* UniqueID */ + "N = FRE( A$ )", /* Syntax */ + "The number of bytes of available memory. This function is pr" +"ovided for backward compatibility and it always returns a fix" +"ed value of 32000.The value of A$ is ignored.", /* Description */ + "FRE", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_FREEFILE_N, /* UniqueID */ + "N = FREEFILE", /* Syntax */ + "The next available file number.", /* Description */ + "FREEFILE", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_GET_X_N, /* UniqueID */ + "N = GET( X )", /* Syntax */ + "For file X, gets the next available record.", /* Description */ + "GET", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_GET_X_Y_N, /* UniqueID */ + "N = GET( X, Y )", /* Syntax */ + "For file X, gets record number Y. The first record number is" +" 1.", /* Description */ + "GET", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_HEX_X_S, /* UniqueID */ + "S$ = HEX$( X )", /* Syntax */ + "The the hexadecimal (base 16) representation of X.", /* Description */ + "HEX$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_INKEY_S, /* UniqueID */ + "S$ = INKEY$", /* Syntax */ + "The keypress, if available. If a keypress is not available, t" +"hen immediately returns a null string (''). If not supported" +" by the platform, then always returns an empty string, so use" +" INPUT$(1) instead.", /* Description */ + "INKEY$", /* Name */ + STRING, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_INP_X_N, /* UniqueID */ + "N = INP( X )", /* Syntax */ + "The value read from machine port X. Not supported on all pla" +"tforms.", /* Description */ + "INP", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_INPUT_X_S, /* UniqueID */ + "S$ = INPUT$( X )", /* Syntax */ + "The string of X characters, read from the terminal.", /* Description */ + "INPUT$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_INPUT_X_Y_S, /* UniqueID */ + "S$ = INPUT$( X, Y )", /* Syntax */ + "The string of X characters, read from file Y.", /* Description */ + "INPUT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1LEN | P2DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_INSTR_A_B_N, /* UniqueID */ + "N = INSTR( A$, B$ )", /* Syntax */ + "The position at which B$ occurs in A$, beginning at position " +"1.", /* Description */ + "INSTR", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2STR, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_INSTR_X_A_B_N, /* UniqueID */ + "N = INSTR( X, A$, B$ )", /* Syntax */ + "The position at which B$ occurs in A$, beginning at position " +"X.", /* Description */ + "INSTR", /* Name */ + NUMBER, /* ReturnType */ + 3, /* ParameterCount */ + P1NUM | P2STR | P3STR, /* ParameterTypes */ + P1POS | P2ANY | P3ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_INT_X_N, /* UniqueID */ + "N = INT( X )", /* Syntax */ + "The largest integer not greater than X; e.g. INT(1.3) = 1 and" +" INT(-1.3) = 2.", /* Description */ + "INT", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_IP_X_N, /* UniqueID */ + "N = IP( X )", /* Syntax */ + "The integer part of X, i.e., SGN(X)*INT(ABS(X)).", /* Description */ + "IP", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_KILL_A_N, /* UniqueID */ + "N = KILL( A$ )", /* Syntax */ + "Removes the file named in A$.", /* Description */ + "KILL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LCASE_A_S, /* UniqueID */ + "S$ = LCASE$( A$ )", /* Syntax */ + "The string of characters from the value associatedwith A$ by " +"replacing each upper-case-letter in the string by its lower-c" +"ase version.", /* Description */ + "LCASE$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LEFT_A_X_S, /* UniqueID */ + "S$ = LEFT$( A$, X )", /* Syntax */ + "The X left-most characters of A$, beginning from postion 1.", /* Description */ + "LEFT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2NUM, /* ParameterTypes */ + P1ANY | P2LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LEN_A_N, /* UniqueID */ + "N = LEN( A$ )", /* Syntax */ + "The length of A$.", /* Description */ + "LEN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LOC_X_N, /* UniqueID */ + "N = LOC( X )", /* Syntax */ + "The location of file X; the next record that GET or PUT state" +"ments will use.", /* Description */ + "LOC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LOCATE_X_Y_N, /* UniqueID */ + "N = LOCATE( X, Y )", /* Syntax */ + "Locates the cursor to row X, column Y.", /* Description */ + "LOCATE", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1BYT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LOF_X_N, /* UniqueID */ + "N = LOF( X )", /* Syntax */ + "The length of file X.", /* Description */ + "LOF", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LOG_X_N, /* UniqueID */ + "N = LOG( X )", /* Syntax */ + "The natural logarithm of X; X shall be greater than zero.", /* Description */ + "LOG", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1GTZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LOG10_X_N, /* UniqueID */ + "N = LOG10( X )", /* Syntax */ + "The common logarithm of X; X shall be greater than zero.", /* Description */ + "LOG10", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1GTZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_LOG2_X_N, /* UniqueID */ + "N = LOG2( X )", /* Syntax */ + "The base 2 logarithm of X; X shall be greater than zero.", /* Description */ + "LOG2", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1GTZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_LPOS_N, /* UniqueID */ + "N = LPOS", /* Syntax */ + "The current cursor position in the line for the printer.", /* Description */ + "LPOS", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LTRIM_A_S, /* UniqueID */ + "S$ = LTRIM$( A$ )", /* Syntax */ + "The string of characters resulting from the value associated " +"with A$ by deleting all leading space characters.", /* Description */ + "LTRIM$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_LWIDTH_X_N, /* UniqueID */ + "N = LWIDTH( X )", /* Syntax */ + "For printer, sets the line width to X. Zero means no wrapping" +" will occur.", /* Description */ + "LWIDTH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_MAX_X_Y_N, /* UniqueID */ + "N = MAX( X, Y )", /* Syntax */ + "The smaller (algebraically) of the parameters.", /* Description */ + "MAX", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_MAXBYT_N, /* UniqueID */ + "N = MAXBYT", /* Syntax */ + "The largest finite positive number representable as a BYTE; i" +"mplementation-defined.", /* Description */ + "MAXBYT", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MAXCUR_N, /* UniqueID */ + "N = MAXCUR", /* Syntax */ + "The largest finite positive number representable as a CURRENC" +"Y; implementation-defined.", /* Description */ + "MAXCUR", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MAXDBL_N, /* UniqueID */ + "N = MAXDBL", /* Syntax */ + "The largest finite positive number representable as a DOUBLE;" +" implementation-defined.", /* Description */ + "MAXDBL", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MAXDEV_N, /* UniqueID */ + "N = MAXDEV", /* Syntax */ + "The largest finite positive number useable as a FILE NUMBER; " +"implementation-defined.", /* Description */ + "MAXDEV", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MAXINT_N, /* UniqueID */ + "N = MAXINT", /* Syntax */ + "The largest finite positive number representable as an INTEGE" +"R; implementation-defined.", /* Description */ + "MAXINT", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MAXLEN_A_N, /* UniqueID */ + "N = MAXLEN( A$ )", /* Syntax */ + "The maximum length associated with the simple-string-variable" +" A$.", /* Description */ + "MAXLEN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_MAXLNG_N, /* UniqueID */ + "N = MAXLNG", /* Syntax */ + "The largest finite positive number representable as a LONG; i" +"mplementation-defined.", /* Description */ + "MAXLNG", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MAXLVL_N, /* UniqueID */ + "N = MAXLVL", /* Syntax */ + "The maximum stack level; implementation-defined.", /* Description */ + "MAXLVL", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MAXNUM_N, /* UniqueID */ + "N = MAXNUM", /* Syntax */ + "The largest finite positive number representable and manipula" +"ble by the implementation; implementation-defined. MAXNUM ma" +"y represent diffent number for different arithmetic options (" +"see OPTION ARITHMETIC).", /* Description */ + "MAXNUM", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_MAXSNG_N, /* UniqueID */ + "N = MAXSNG", /* Syntax */ + "The largest finite positive number representable as a SINGLE;" +" implementation-defined.", /* Description */ + "MAXSNG", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MID_A_X_S, /* UniqueID */ + "S$ = MID$( A$, X )", /* Syntax */ + "The characters of A$, starting from postion X.", /* Description */ + "MID$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2NUM, /* ParameterTypes */ + P1ANY | P2POS, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_MID_A_X_Y_S, /* UniqueID */ + "S$ = MID$( A$, X, Y )", /* Syntax */ + "The Y characters of A$, starting from postion X.", /* Description */ + "MID$", /* Name */ + STRING, /* ReturnType */ + 3, /* ParameterCount */ + P1STR | P2NUM | P3NUM, /* ParameterTypes */ + P1ANY | P2POS | P3LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_MIN_X_Y_N, /* UniqueID */ + "N = MIN( X, Y )", /* Syntax */ + "The smaller (algebraically) of the parameters.", /* Description */ + "MIN", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_MINBYT_N, /* UniqueID */ + "N = MINBYT", /* Syntax */ + "The largest finite negative number representable as a BYTE; i" +"mplementation-defined.", /* Description */ + "MINBYT", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MINCUR_N, /* UniqueID */ + "N = MINCUR", /* Syntax */ + "The largest finite negative number representable as a CURRENC" +"Y; implementation-defined.", /* Description */ + "MINCUR", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MINDBL_N, /* UniqueID */ + "N = MINDBL", /* Syntax */ + "The largest finite negative number representable as a DOUBLE;" +" implementation-defined.", /* Description */ + "MINDBL", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MINDEV_N, /* UniqueID */ + "N = MINDEV", /* Syntax */ + "The largest finite negative number useable as a FILE NUMBER; " +"implementation-defined.", /* Description */ + "MINDEV", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MININT_N, /* UniqueID */ + "N = MININT", /* Syntax */ + "The largest finite negative number representable as an INTEGE" +"R; implementation-defined.", /* Description */ + "MININT", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MINLNG_N, /* UniqueID */ + "N = MINLNG", /* Syntax */ + "The largest finite negative number representable as a LONG; i" +"mplementation-defined.", /* Description */ + "MINLNG", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MINNUM_N, /* UniqueID */ + "N = MINNUM", /* Syntax */ + "The largest finite negative number representable and manipula" +"ble by the implementation; implementation-defined. MINNUM ma" +"y represent diffent number for different arithmetic options (" +"see OPTION ARITHMETIC).", /* Description */ + "MINNUM", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MINSNG_N, /* UniqueID */ + "N = MINSNG", /* Syntax */ + "The largest finite negative number representable as a SINGLE;" +" implementation-defined.", /* Description */ + "MINSNG", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MKC_X_S, /* UniqueID */ + "S$ = MKC$( X )", /* Syntax */ + "The internal representation of the currency (64-bit) integer " +"X as a string.", /* Description */ + "MKC$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1CUR, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ +}, +{ + F_MKD_X_S, /* UniqueID */ + "S$ = MKD$( X )", /* Syntax */ + "The internal representation of X as a string.", /* Description */ + "MKD$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DBL, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_MKDIR_A_N, /* UniqueID */ + "N = MKDIR( A$ )", /* Syntax */ + "Makes the directory named in A$.", /* Description */ + "MKDIR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_MKI_X_S, /* UniqueID */ + "S$ = MKI$( X )", /* Syntax */ + "The internal representation of the short (16-bit) integer X a" +"s a string.", /* Description */ + "MKI$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_MKL_X_S, /* UniqueID */ + "S$ = MKL$( X )", /* Syntax */ + "The internal representation of the long (32-bit) integer X as" +" a string.", /* Description */ + "MKL$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LNG, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_MKS_X_S, /* UniqueID */ + "S$ = MKS$( X )", /* Syntax */ + "The internal representation of X as a string.", /* Description */ + "MKS$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1FLT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_MOD_X_Y_N, /* UniqueID */ + "N = MOD( X, Y )", /* Syntax */ + "X modulo Y, i.e., X-Y*INT(X/Y). Y shall not equal zero.", /* Description */ + "MOD", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2NEZ, /* ParameterTests */ + NULL, /* NextPointer */ + E86 /* OptionVersionBitmask */ +}, +{ + F_NAME_A_B_N, /* UniqueID */ + "N = NAME( A$, B$ )", /* Syntax */ + "Rename the file named A$ into B$.", /* Description */ + "NAME", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2STR, /* ParameterTypes */ + P1BYT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_NULL_X_N, /* UniqueID */ + "N = NULL( X )", /* Syntax */ + "Appends X null characters after each line printed by LPRINT o" +"r LLIST.", /* Description */ + "NULL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_OCT_X_S, /* UniqueID */ + "S$ = OCT$( X )", /* Syntax */ + "The the octal (base 8) representation of X.", /* Description */ + "OCT$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_OPEN_A_X_B_N, /* UniqueID */ + "N = OPEN( A$, X, B$ )", /* Syntax */ + "Open file number X. A$ is the mode: I, O, A, R. B$ is the f" +"ile name. Default the record length.", /* Description */ + "OPEN", /* Name */ + NUMBER, /* ReturnType */ + 3, /* ParameterCount */ + P1STR | P2NUM | P3STR, /* ParameterTypes */ + P1BYT | P2DEV | P3BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_OPEN_A_X_B_Y_N, /* UniqueID */ + "N = OPEN( A$, X, B$, Y )", /* Syntax */ + "Open file number X. A$ is the mode: I, O, A, R. B$ is the f" +"ile name. Y is the record length.", /* Description */ + "OPEN", /* Name */ + NUMBER, /* ReturnType */ + 4, /* ParameterCount */ + P1STR | P2NUM | P3STR | P4NUM, /* ParameterTypes */ + P1BYT | P2DEV | P3BYT | P4INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ORD_A_N, /* UniqueID */ + "N = ORD( A$ )", /* Syntax */ + "The ordinal position of the character named by the string ass" +"ociated with A$ in the collating sequence of ASCII character " +"set, where the first member of the character set is in positi" +"on zero. The acceptable values for the standard character se" +"t are shown in Table 1.", /* Description */ + "ORD", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_OUT_X_Y_N, /* UniqueID */ + "N = OUT( X, Y )", /* Syntax */ + "Sends Y to hardware port X. Not supported on all platforms.", /* Description */ + "OUT", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1INT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_PEEK_X_N, /* UniqueID */ + "N = PEEK( X )", /* Syntax */ + "The value read from hardware address X. Not supported on all" +" platforms.", /* Description */ + "PEEK", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LNG, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_PI_N, /* UniqueID */ + "N = PI", /* Syntax */ + "The constant 3.14159 which is the ratio of the circumference " +"of a circle to its diameter.", /* Description */ + "PI", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_POKE_X_Y_N, /* UniqueID */ + "N = POKE( X, Y )", /* Syntax */ + "Sends Y to hardware address X. Not supported on all platform" +"s.", /* Description */ + "POKE", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1LNG | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_POS_N, /* UniqueID */ + "N = POS", /* Syntax */ + "The current cursor position in the line.", /* Description */ + "POS", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_POS_X_N, /* UniqueID */ + "N = POS( X )", /* Syntax */ + "The current cursor position in the line for file X.", /* Description */ + "POS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_POS_A_B_N, /* UniqueID */ + "N = POS( A$, B$ )", /* Syntax */ + "The character position, within the value assocated with A$, o" +"f the first character of the first occurence of the value ass" +"ociated with B$, starting at the first character of A$. If t" +"here is not such occurence, then the value returned is zero.", /* Description */ + "POS", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2STR, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_POS_A_B_X_N, /* UniqueID */ + "N = POS( A$, B$, X )", /* Syntax */ + "The character position, within the value assocated with A$, o" +"f the first character of the first occurence of the value ass" +"ociated with B$, starting at the Xth character of A$. If the" +"re is not such occurence, then the value returned is zero.", /* Description */ + "POS", /* Name */ + NUMBER, /* ReturnType */ + 3, /* ParameterCount */ + P1STR | P2STR | P3NUM, /* ParameterTypes */ + P1ANY | P2ANY | P3POS, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_PUT_X_N, /* UniqueID */ + "N = PUT( X )", /* Syntax */ + "For file X, puts the next available record.", /* Description */ + "PUT", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_PUT_X_Y_N, /* UniqueID */ + "N = PUT( X, Y )", /* Syntax */ + "For file X, puts record number Y. The first record number is" +" 1.", /* Description */ + "PUT", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_RAD_X_N, /* UniqueID */ + "N = RAD( X )", /* Syntax */ + "The number of radians in X degrees.", /* Description */ + "RAD", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_RANDOMIZE_N, /* UniqueID */ + "N = RANDOMIZE", /* Syntax */ + "Seeds the pseudo-random number generator with TIME.", /* Description */ + "RANDOMIZE", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_RANDOMIZE_X_N, /* UniqueID */ + "N = RANDOMIZE( X )", /* Syntax */ + "Seeds the pseudo-random number generator with X.", /* Description */ + "RANDOMIZE", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_REMAINDER_X_Y_N, /* UniqueID */ + "N = REMAINDER( X, Y )", /* Syntax */ + "The remainder function, i.e., X-Y*IP(X/Y). Y shall not equal" +" zero.", /* Description */ + "REMAINDER", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2NEZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_REPEAT_X_Y_S, /* UniqueID */ + "S$ = REPEAT$( X, Y )", /* Syntax */ + "The string consisting of X copies of CHR$(Y); X > 0.", /* Description */ + "REPEAT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1LEN | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_REPEAT_X_A_S, /* UniqueID */ + "S$ = REPEAT$( X, A$ )", /* Syntax */ + "The string consisting of X copies of A$; X > 0.", /* Description */ + "REPEAT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2STR, /* ParameterTypes */ + P1LEN | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_RESET_N, /* UniqueID */ + "N = RESET", /* Syntax */ + "Close all open files.", /* Description */ + "RESET", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_RIGHT_A_X_S, /* UniqueID */ + "S$ = RIGHT$( A$, X )", /* Syntax */ + "The right-most X characters of A$.", /* Description */ + "RIGHT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2NUM, /* ParameterTypes */ + P1ANY | P2LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_RMDIR_A_N, /* UniqueID */ + "N = RMDIR( A$ )", /* Syntax */ + "Removes the directory named in A$.", /* Description */ + "RMDIR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_RND_N, /* UniqueID */ + "N = RND", /* Syntax */ + "The next pseudo-random number in an implementation-defined se" +"quence of pseudo-random numbers uniformly distributed in the " +"range 0 <= RND < 1.", /* Description */ + "RND", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_RND_X_N, /* UniqueID */ + "N = RND( X )", /* Syntax */ + "Returns a pseudorandom number in the range [0,1]. The value " +"of X is ignored.", /* Description */ + "RND", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_ROUND_X_Y_N, /* UniqueID */ + "N = ROUND( X, Y )", /* Syntax */ + "The value of X rounded to Y decimal digits to the right of th" +"e decimal point (or -Y digits to the left if Y < 0); i.e., IN" +"T(X*10^Y+.5)/10^Y. Y must be in [-32,32].", /* Description */ + "ROUND", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_RTRIM_A_S, /* UniqueID */ + "S$ = RTRIM$( A$ )", /* Syntax */ + "The string of characters resulting from the value associated " +"with A$ by deleting all trailing space characters.", /* Description */ + "RTRIM$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_SEC_X_N, /* UniqueID */ + "N = SEC( X )", /* Syntax */ + "The secant of X, where X is in radians.", /* Description */ + "SEC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_SEEK_X_N, /* UniqueID */ + "N = SEEK( X )", /* Syntax */ + "The location of file X; the next record that GET or PUT state" +"ments will use.", /* Description */ + "SEEK", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_SEEK_X_Y_N, /* UniqueID */ + "N = SEEK( X, Y )", /* Syntax */ + "For file X, move to record number Y; the first record number " +"is 1.", /* Description */ + "SEEK", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_SGN_X_N, /* UniqueID */ + "N = SGN( X )", /* Syntax */ + "The sign of X: -1 if X < 0, 0 if X = 0, and +1 if X > 0.", /* Description */ + "SGN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_SHELL_A_N, /* UniqueID */ + "N = SHELL( A$ )", /* Syntax */ + "The exit code resulting from the execution of an operating sy" +"stem command.", /* Description */ + "SHELL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_SIN_X_N, /* UniqueID */ + "N = SIN( X )", /* Syntax */ + "The sine of X, where X is in radians.", /* Description */ + "SIN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_SINH_X_N, /* UniqueID */ + "N = SINH( X )", /* Syntax */ + "The hyperbolic sine of X.", /* Description */ + "SINH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_SPACE_X_S, /* UniqueID */ + "S$ = SPACE$( X )", /* Syntax */ + "The string of X blank spaces.", /* Description */ + "SPACE$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_SPC_X_S, /* UniqueID */ + "S$ = SPC( X )", /* Syntax */ + "The string of X blank spaces. Only for use within the PRINT " +"command.", /* Description */ + "SPC", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_SQR_X_N, /* UniqueID */ + "N = SQR( X )", /* Syntax */ + "The non-negative square root of X; X shall be non-negative.", /* Description */ + "SQR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1GEZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_STR_X_S, /* UniqueID */ + "S$ = STR$( X )", /* Syntax */ + "The string generated by the print-statement as the numeric-re" +"presentation of the value associated with X.", /* Description */ + "STR$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_STRING_X_A_S, /* UniqueID */ + "S$ = STRING$( X, A$ )", /* Syntax */ + "The string X bytes long consisting of the first character of " +"A$.", /* Description */ + "STRING$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2STR, /* ParameterTypes */ + P1LEN | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_STRING_X_Y_S, /* UniqueID */ + "S$ = STRING$( X, Y )", /* Syntax */ + "The string X bytes long consisting of CHR$(Y).", /* Description */ + "STRING$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1LEN | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_TAB_X_S, /* UniqueID */ + "S$ = TAB( X )", /* Syntax */ + "The string required to advance to column X. Only for use wit" +"hin the PRINT command.", /* Description */ + "TAB", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_TAN_X_N, /* UniqueID */ + "N = TAN( X )", /* Syntax */ + "The tangent of X, where X is in radians.", /* Description */ + "TAN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_TANH_X_N, /* UniqueID */ + "N = TANH( X )", /* Syntax */ + "The hyperbolic tangent of X.", /* Description */ + "TANH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_TIME_N, /* UniqueID */ + "N = TIME", /* Syntax */ + "The time elapsed since the previous midnight, expressed in se" +"conds; e.g., the value of TIME at 11:15 AM is 40500. If ther" +"e is no clock available, then the value of TIME shall be -1. " +" The value of TIME at midnight shall be zero (not 86400).", /* Description */ + "TIME", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_TIME_S, /* UniqueID */ + "S$ = TIME$", /* Syntax */ + "The time of day in 24-hour notation according to ISO 3307. F" +"or example, the value of TIME$ at 11:15 AM is '11:15:00'. If" +" there is no clock available, then the value of TIME$ shall b" +"e '99:99:99'. The value of TIME$ at midnight is '00:00:00'.", /* Description */ + "TIME$", /* Name */ + STRING, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_TIMER_N, /* UniqueID */ + "N = TIMER", /* Syntax */ + "The time in the system clock in seconds elapsed since midnigh" +"t.", /* Description */ + "TIMER", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_TRIM_A_S, /* UniqueID */ + "S$ = TRIM$( A$ )", /* Syntax */ + "The string resulting from removing both leading and trailing " +"spaces from A$.", /* Description */ + "TRIM$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_TROFF_N, /* UniqueID */ + "N = TROFF", /* Syntax */ + "Turn tracing OFF", /* Description */ + "TROFF", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_TRON_N, /* UniqueID */ + "N = TRON", /* Syntax */ + "Turn tracing ON", /* Description */ + "TRON", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_TRUNCATE_X_Y_N, /* UniqueID */ + "N = TRUNCATE( X, Y )", /* Syntax */ + "The value of X truncated to Y decimal digits to the right of " +"the decimal point (or -Y digits to the left if Y < 0); i.e., " +"IP(X*10^Y)/10^Y. Y in [-32,32].", /* Description */ + "TRUNCATE", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ +}, +{ + F_UCASE_A_S, /* UniqueID */ + "S$ = UCASE$( A$ )", /* Syntax */ + "The string of characters resulting from the value associated " +"with A$ by replacing each lower-case-letter in the string by " +"its upper-case version.", /* Description */ + "UCASE$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_VAL_A_N, /* UniqueID */ + "N = VAL( A$ )", /* Syntax */ + "The value of the numeric-constant associated with A$, if the " +"string associated with A$ is a numeric-constant. Leading and" +" trailing spaces in the string are ignored. If the evaluatio" +"n of the numeric-constant would result in a value which cause" +"s an underflow, then the value returned shall be zero. For e" +"xample, VAL(' 123.5 ' ) = 123.5, VAL('2.E-99') could be zero," +" and VAL('MCMXVII') causes an exception.", /* Description */ + "VAL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_WAIT_X_Y_N, /* UniqueID */ + "N = WAIT( X, Y )", /* Syntax */ + "Waits for the value of (INP(X) AND Y) to become nonzero. Not" +" supported on all platforms.", /* Description */ + "WAIT", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1INT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_WAIT_X_Y_Z_N, /* UniqueID */ + "N = WAIT( X, Y, Z )", /* Syntax */ + "Waits for the value of ((INP(X) XOR Z) AND Y) to become nonze" +"ro. Not supported on all platforms.", /* Description */ + "WAIT", /* Name */ + NUMBER, /* ReturnType */ + 3, /* ParameterCount */ + P1NUM | P2NUM | P3NUM, /* ParameterTypes */ + P1INT | P2BYT | P3BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_WIDTH_X_N, /* UniqueID */ + "N = WIDTH( X )", /* Syntax */ + "For console, sets the line width to X. Zero means no wrapping" +" will occur.", /* Description */ + "WIDTH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +{ + F_WIDTH_X_Y_N, /* UniqueID */ + "N = WIDTH( X, Y )", /* Syntax */ + "For file X, sets the line width to Y. Zero means no wrapping" +" will occur.", /* Description */ + "WIDTH", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ +}, +}; + diff --git a/NBS2/MANUAL.BAS b/NBS2/MANUAL.BAS new file mode 100644 index 0000000..dca9690 --- /dev/null +++ b/NBS2/MANUAL.BAS @@ -0,0 +1,2 @@ +MAINTAINER CMDS MANUAL +MAINTAINER FNCS MANUAL diff --git a/NBS2/MANUAL.OUT b/NBS2/MANUAL.OUT new file mode 100644 index 0000000..ee019a1 --- /dev/null +++ b/NBS2/MANUAL.OUT @@ -0,0 +1,6308 @@ +------------------------------------------------------------ + SYNTAX: ? expressions... +DESCRIPTION: This is just a shortcut for PRINT. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CALL subroutine-name( [parameter [, ...] ] ) +DESCRIPTION: Calls a subroutine that was defined by SUB and END SUB. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CASE constant +DESCRIPTION: Introduces an element of a SELECT CASE statement. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CASE ELSE +DESCRIPTION: Introduces a default SELECT CASE element. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CASE IF partial-expression +DESCRIPTION: Introduces a conditional SELECT CASE element. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CASE IS +DESCRIPTION: Same as CASE IF. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CHAIN filename$ +DESCRIPTION: Load and execute another BASIC program, without clearing variables. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CHANGE A$ TO X | CHANGE X TO A$ +DESCRIPTION: Changes a string to a numeric array or a numeric array to a string. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CLEAR +DESCRIPTION: Sets all numeric variables to 0, and all string variables to empty strings. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CLOAD [file-name$] +DESCRIPTION: Loads an ASCII BASIC program into memory. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CLOAD* ArrayName +DESCRIPTION: Loads a numeric array from a file saved using CSAVE*. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CMDS +DESCRIPTION: Prints a list of all implemented BASIC commands. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: COMMON variable [, ...] +DESCRIPTION: Designates variables to be passed to a CHAINed program. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CONT +DESCRIPTION: Continue a BASIC program after a STOP has been executed. Program resumes at the line after the STOP. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CSAVE [file-name$] +DESCRIPTION: Saves the current program into the file file-name$ in ASCII format. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CSAVE* ArrayName +DESCRIPTION: Saves a numeric array into a file. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: DATA constant [, ...] +DESCRIPTION: Stores numeric and string constants to be accessed by READ. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEF FNname(arg...)] = expression +DESCRIPTION: Defines a single line user-written function. For multiple line functions use the FUNCTION command. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEF SUB +DESCRIPTION: An internal command that allows the BASIC program to execute any function as though it were a command. You do not directly call this command. If your program has a line beginning with a functio name, then DEF SUB is used to execute the function and ignore the result. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEFDBL letter[-letter] [, ...] +DESCRIPTION: Declares variables with single-letter names as numeric variables. TODO: enforce the rnage of [MINDBL,MAXDBL]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEFINT letter[-letter] [, ...] +DESCRIPTION: Declares variables with single-letter names as numeric variables. TODO: enforce the rnage of [MININT,MAXINT]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEFSNG letter[-letter] [, ...] +DESCRIPTION: Declares variables with single-letter names as numeric variables. TODO: enforce the rnage of [MINSNG,MAXSNG]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEFSTR letter[-letter] [, ...] +DESCRIPTION: Declares variables with single-letter names as string variables. TODO: enforce the range of [MINLEN,MAXLEN]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DELETE line [- line] +DESCRIPTION: Deletes program lines indicated by the argument(s). All program lines have a number, which is visible with the LIST command. If line numbers are not provided, they are assigned beginning with 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DIM variable( elements [, ...]) [, ...] +DESCRIPTION: Specifies the dimensions of an array variables. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DO +DESCRIPTION: Top of a DO - LOOP structure. If the loop is not terminated by EXIT DO or LOOP UNTIL or LOOP WHILE, then it will loop forever. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DO UNTIL expression +DESCRIPTION: Top of a DO - LOOP structure. If the expression is zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DO WHILE expression +DESCRIPTION: Top of a DO - LOOP structure. If the expression is non-zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EDIT +DESCRIPTION: implementation defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ELSE +DESCRIPTION: Introduces a default condition in a multi-line IF statement. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ELSEIF +DESCRIPTION: Introduces a secondary condition in a multi-line IF statement. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END +DESCRIPTION: Terminates program execution. If the BASIC program was executed from the operating system level, then control returns to the operating system, oterwise control reuturns to the BASIC prompt. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END FUNCTION +DESCRIPTION: Specifies the last line of a multi-line FUNCTION definition. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END IF +DESCRIPTION: Specifies the last line of a multi-line IF definition. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END SELECT +DESCRIPTION: Specifies the last line of a multi-line SELECT CASE definition. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END SUB +DESCRIPTION: Specifies the last line of a multi-line SUB definition. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ERASE variable [, ...] +DESCRIPTION: Eliminates arrayed variables from a program. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT +DESCRIPTION: EXIT by itself is a syntax error. Use EXIT DO, EXIT FOR, EXIT FUNCTION, EXIT SUB, EXIT UNTIL, or EXIT WHILE. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT DO +DESCRIPTION: Immediately exits the inner-most DO-LOOP strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT FOR +DESCRIPTION: Immediately exits the inner-most FOR-NEXT strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT FUNCTION +DESCRIPTION: Immediately exits the inner-most multi-line FUNCTION strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT SUB +DESCRIPTION: Immediately exits the inner-most multi-line SUB strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT UNTIL +DESCRIPTION: Immediately exits the inner-most UNTIL-UEND strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: EXIT WHILE +DESCRIPTION: Immediately exits the inner-most WHILE-END strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: FIELD [#] device-number, number AS string-variable$ [, ...] +DESCRIPTION: Assigns 'number' bytes in the buffer of random file 'device-number' to the variable 'string-variable$'. GET will automatically update the variable, and PUT will automatically use the variable. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: FNCS +DESCRIPTION: Prints a list of all pre-defined BASIC functions. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: FOR variable = start TO finish [STEP increment] +DESCRIPTION: Top of a FOR - NEXT structure. The loop will continue a fixed number of times, which is determined by the values of start, finish, and increment. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: FUNCTION [ ( parameter [, ... ] ) ] +DESCRIPTION: Top line of a multi-line FUNCTION definition. The variable names specified are local to the FUNCTION definition, and are initialized BYVAL when the function is invoked by another routine. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: GO +DESCRIPTION: GO by itself is a syntax error. Use GOTO or GOSUB instead. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: GOSUB line +DESCRIPTION: Initiates a subroutine call to the line specified. The subroutine must end with RETURN. The 'line' may be a number or a label. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: GOTO line +DESCRIPTION: Branches program execution to the specified line. The 'line' may be a number or a label. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: HELP name +DESCRIPTION: Provides help on the specified 'name' which is a command name or function name. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: IF expression THEN line1 [ELSE line2] +DESCRIPTION: Single line standard IF command. If the value of expression is non-zero, then branh to line1. If the value of expression is zero and ELSE is provided, then branch to line2. If the value of expression is zero and ELSE is not provided, continue to the next line. LABELS are not allowed. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: IF expression THEN +DESCRIPTION: Top of a multi-line IF - END IF structure. If the value of expression is non-zero, then the program lines upto the next ELSE or ELSE IF command are executed, otherwise the program branches to the next ELSE or ELSE IF command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: INPUT [# device-number]|[;]["prompt string";] variable [, ...]s +DESCRIPTION: Reads input from the terminal or athe file specified by device-number. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: [LET] variable = expression +DESCRIPTION: Assigns the value of expression to variable. The 'LET' keyword is optional. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LINE INPUT [[#] device-number,]["prompt string";] string-variable$ +DESCRIPTION: Reads entire line from the keyboard or a file into string-variable$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LIST line1 [- line2] +DESCRIPTION: Lists BASIC program lines from 'line1' to 'line2' + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LOAD [file-name$] +DESCRIPTION: Loads an ASCII BASIC program into memory. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LOOP +DESCRIPTION: Bottom of a DO - LOOP structure. IF the loop is not terminated by EXIT DO or DO UNTIL or DO WHILE, then it will loop forever. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LOOP UNTIL +DESCRIPTION: Bottom of a DO - LOOP structure. If the expression is zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LOOP WHILE +DESCRIPTION: Bottom of a DO - LOOP structure. If the expression is non-zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LPRINT [USING format-string$;] expressions... +DESCRIPTION: Send output to the default printer which is implementation defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LSET string-variable$ = expression +DESCRIPTION: Left-aligns the value of expression into string-variable$. If the length of the value is too short, then it is padded on the right with spaces. If the length of the value is too long, then it is truncated on the right. This is only for use with variables assigned to a random access buffer with FIELD command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: MAINTAINER +DESCRIPTION: This command is reserved for use by the Bywater BASIC maintainer and does whatever the maintainer wants it to do. It is not for the BASIC programmer. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: MERGE file-name +DESCRIPTION: Merges the BASIC program in file-name into the current BASIC program. Lines in file-name replace any matching lines in the current program. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: MID$( variable$, start [, count ] ) = expression +DESCRIPTION: Replaces a subtring of variable$ with expression. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: NAME old-file-name AS new-file-name +DESCRIPTION: Changes the name of an existing file. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: NEW +DESCRIPTION: Deletes the program in memory and clears all variables. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: NEXT [variable] +DESCRIPTION: The bottom line of a FOR - NEXT structure. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ON expression GOTO | GOSUB line [, ...] +DESCRIPTION: Branches (GOTO) or calls (GOSUB) based on the rounded value of variable. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ON ERROR GOSUB errline +DESCRIPTION: When a trappable error occurs, execute 'GOSUB errline'. The error handler must terminate with a RETURN command. If the line number is 0 (zerp), then use the default error handler. Valid when OPTION ERROR GOSUB. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: ON ERROR GOTO errline +DESCRIPTION: When a trappable error occurs, execute 'GOTO errline'. The error handler must terminate with a RESUME command. If the line number is 0 (zerp), then use the default error handler. Valid when OPTION ERROR GOTO. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ON ERROR RESUME NEXT +DESCRIPTION: When a trappable error occurs, execution continues with the next line. Valid when OPTION ERROR GOTO. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ON ERROR RETURN NEXT +DESCRIPTION: When a trappable error occurs, execution continues with the next line. Valid when OPTION ERROR GOSUB. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: ON TIMER count GOSUB line +DESCRIPTION: Specifies a line (or label) to gosub when count seconds have elaspsed after TIMER ON is executed. The interrupt routine should end with a RETURN command. Timer events only occur in running BASIC programs. The resolution of the clock is implementation defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPEN file-name [FOR INPUT|OUTPUT|APPEND|BINARY|RANDOM] AS [#]device-number [LEN = record-length] +DESCRIPTION: Opens a file for use. INPUT, OUTPUT, and APPEND are for text files. BINARY is for binary files. RANDOM is for structured binary files and requires LEN. Files opened for RANDOM use GET and PUT. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ... +DESCRIPTION: OPTION by itself is a syntax error. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ANGLE DEGREES +DESCRIPTION: Configures the math functions to accept and return angles in degrees. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ANGLE RADIANS +DESCRIPTION: Configures the math functions to accept and return angles in radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ARITHMETIC DECIMAL +DESCRIPTION: Currently has no effect. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ARITHMETIC FIXED +DESCRIPTION: Currently has no effect. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ARITHMETIC NATIVE +DESCRIPTION: Currently has no effect. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION BASE 0 +DESCRIPTION: Sets the lowest array subscript to 0. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPTION BASE 1 +DESCRIPTION: Sets the lowest array subscript to 1. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPTION BUGS OFF +DESCRIPTION: Disables bugs commonly found in BASIC-80 derivatives and clones. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION BUGS ON +DESCRIPTION: Enables bugs commonly found in BASIC-80 derivatives and clones. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COMMENT char +DESCRIPTION: Sets the comment character. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COMPARE BINARY +DESCRIPTION: Causes string comparisons to be case-sensitive. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COMPARE DATABASE +DESCRIPTION: Causes string comparisons to be case-insensitive. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COMPARE TEXT +DESCRIPTION: Causes string comparisons to be case-insensitive. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COVERAGE OFF +DESCRIPTION: Disables BASIC code coverage recording, displayed using the LIST command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COVERAGE ON +DESCRIPTION: Enables BASIC code coverage recording, displayed using the LIST command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION DATE format +DESCRIPTION: Sets the date format string used by C strftime() for DATE$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION DISABLE COMMAND name +DESCRIPTION: Disables the specified BASIC command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION DISABLE FUNCTION name +DESCRIPTION: Disables the specified BASIC function. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION DISABLE OPERATOR name +DESCRIPTION: Disables the specified BASIC operator. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ENABLE COMMAND name +DESCRIPTION: Enables the specified BASIC command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ENABLE FUNCTION name +DESCRIPTION: Enables the specified BASIC function. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ENABLE OPERATOR name +DESCRIPTION: Enables the specified BASIC operator. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ERROR GOSUB +DESCRIPTION: When an error occurs, GOSUB to the error handler. The error handler exits with RETURN. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ERROR GOTO +DESCRIPTION: When an error occurs, GOTO to the error handler. The error handler exits with RESUME. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION INDENT number +DESCRIPTION: Sets indention level for LIST. Zero means no indention. Default is 2. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION LABELS OFF +DESCRIPTION: Disables text labels. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION LABELS ON +DESCRIPTION: Enables text labels. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION STATEMENT char +DESCRIPTION: Sets the statement seperator character. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION STRICT OFF +DESCRIPTION: Disables checking for implicit array creation without using the DIM command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION STRICT ON +DESCRIPTION: Enables checking for implicit array creation without using the DIM command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TERMINAL ADM-3A +DESCRIPTION: Enables ADM-3A terminal control codes for CLS, COLOR, and LOCATE. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TERMINAL ANSI +DESCRIPTION: Enables ANSI terminal control codes for CLS, COLOR, and LOCATE. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TERMINAL NONE +DESCRIPTION: Disables terminal control codes for CLS, COLOR, and LOCATE. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TIME format +DESCRIPTION: Sets the time format string used by C strftime() for TIME$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TRACE OFF +DESCRIPTION: Disables displaying a stack trace when an ERROR occurs. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TRACE ON +DESCRIPTION: Enables displaying a stack trace when an ERROR occurs. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION VERSION [version] +DESCRIPTION: Selects a combination of OPTION settings and enables certain commands and functions. If no version is specified, displays a list of the available versions. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: PRINT [# device-number,][USING format-string$;] expressions... +DESCRIPTION: Sends output to the console or a file. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: QUIT +DESCRIPTION: Exits to the operating system. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: READ variable [, ...] +DESCRIPTION: Reads values from DATA statements. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: REM ... +DESCRIPTION: Remark. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RENUM +DESCRIPTION: Implementation defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RESTORE [line] +DESCRIPTION: Resets the line used for the next READ statement. 'line' may be either a number or a label. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RESUME [ 0 | line | NEXT ] +DESCRIPTION: Used in an error handler to specify the next line to execute. RESUME and RESUME 0 branch to ERL. RESUME NEXT branches to the line after ERL. RESUME line branches to the specified line. 'line' may be either a number or a label. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RETURN +DESCRIPTION: Concludes a subroutine called by GOSUB. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RSET string-variable$ = expression +DESCRIPTION: Right-aligns the value of expression into string-variable$. If the length of the value is too short, then it is padded on the left with spaces. If the length of the value is too long, then it is truncated on the right. This is only for use with variables assigned to a random access buffer with FIELD command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RUN [line | file-name$] +DESCRIPTION: RUN executes the program in memory from the start. RUN line exexecutes the program in memory beginning at 'line'. RUN file-name$ loads a new BAASIC program and executes the program from the start. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SAVE [file-name$] +DESCRIPTION: Saves the current program into the file file-name$ in ASCII format. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SELECT +DESCRIPTION: SELECT by itself is a syntax error. Use SELECT CASE instead. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SELECT CASE expression +DESCRIPTION: Introduces a multi-line conditional selection statement. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: STOP +DESCRIPTION: Interrupts program execution and displays the line number of the STOP command. For use when debugging BASIC programs. Whether STOP issues a SIGINT signal is implementation defined. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SUB name [ ( parameter [,...] ) ] +DESCRIPTION: Top line of a multi-line SUB definition. The variable names specified are local to the SUB definition, and are initialized BYVAL when the subroutine is invoked by another routine. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SWAP variable, variable +DESCRIPTION: Swaps the values of two variables. Both variables must be of the same type. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SYSTEM +DESCRIPTION: Exits to the operating system. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: TIMER +DESCRIPTION: TIMER by itself is a syntax error. Use TIMER OFF, TIMER ON, or TIMER STOP instead. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: TIMER OFF +DESCRIPTION: TIMER OFF terminates the timer interrupt. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: TIMER ON +DESCRIPTION: TIMER ON enables the timer interrupt. When the specified seconds have elapsed, TIMER STOP is internaly executed before the interrupt is taken. TIMER ON should be executed just before the RETURN command if you want the interrupt to occur again. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: TIMER STOP +DESCRIPTION: TIMER STOP disables the interrupt, but the count continues. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: UEND +DESCRIPTION: Bottom of a UNTIL - UEND structure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: UNTIL expression +DESCRIPTION: Top of a UNTIL - UEND structure. If the expression is zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: USER LBL +DESCRIPTION: An internal command that allows the BASIC program to find a user label. You do not directly call this command. If your program has a line with a label, then USER LBL is used to mark the line. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: VARS +DESCRIPTION: Prints a list of all global variables. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: WEND +DESCRIPTION: Bottom of a WHILE - WEND structure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: WHILE +DESCRIPTION: Top of a WHILE - WEND structure. If the expression is non-zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: WRITE [# device-number,] element [, .... ] +DESCRIPTION: Outputs variables to the screen or to a file. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ +------------------------------------------------------------ + SYNTAX: N = ABS( X ) + PARAMETER: X is a number +DESCRIPTION: The absolute value of X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ACOS( X ) + PARAMETER: X is a number +DESCRIPTION: The arccosine of X in radians, where 0 <= ACOS(X) <= PI. X shall be in the range -1 <= X <= 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ANGLE( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number +DESCRIPTION: The angle in radians between the positive x-axis and the vector joining the origin to the point with coordinates (X, Y), where -PI < ANGLE(X,Y) <= PI. X and Y must not both be 0. Note that the counterclockwise is positive, e.g., ANGLE(1,1) = 45 degrees. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ARGC +DESCRIPTION: The number of parameters passed to a FUNCTION or SUB. If not in a FUNCTION or SUB, returns -1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = ARGT$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The value of the X'th parameter to a FUNCTION or SUB; '$' or '#'. X in [1,ARGC]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ARGV( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The value of the X'th parameter to a FUNCTION or SUB. X in [1,ARGC] and ARGT$( X ) = '#'. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = ARGV$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The value of the X'th parameter to a FUNCTION or SUB. X in [1,ARGC] and ARGT$( X ) = '$'. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ASC( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The ASCII code for the first letter in A$. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ASIN( X ) + PARAMETER: X is a number +DESCRIPTION: The arcsine of X in radians, where -PI/2 <= ASIN(X) <= PI/2; X shall be in the range -1 <= X <= 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ATN( X ) + PARAMETER: X is a number +DESCRIPTION: The arctangent of X in radians, i.e. the angle whose tangent is X, where -PI/2 < ATN(X) < PI/2. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CCUR( X ) + PARAMETER: X is a number, [MINCUR,MAXCUR] +DESCRIPTION: The currency (64-bit) integer value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CDBL( X ) + PARAMETER: X is a number, [MINDBL,MAXDBL] +DESCRIPTION: The double-precision value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CEIL( X ) + PARAMETER: X is a number +DESCRIPTION: The smallest integer not less than X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CHDIR( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Changes to the directory named to A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = CHR$( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: The one-character string with the character corresponding to the ASCII code X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CINT( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The short (16-bit) integer value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CLNG( X ) + PARAMETER: X is a number, [MINLNG,MAXLNG] +DESCRIPTION: The long (32-bit) integer value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CLOSE( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: Close file number X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CLS +DESCRIPTION: Clears the screen. Cursor is positioned at row 1, column 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = COLOR( X, Y ) + PARAMETER: X is a number, [0,255] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Sets the foreground text color to X, and the background text color to Y. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = COS( X ) + PARAMETER: X is a number +DESCRIPTION: The cosine of X, where X is in radians. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = COSH( X ) + PARAMETER: X is a number +DESCRIPTION: The hyperbolic cosine of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = COT( X ) + PARAMETER: X is a number +DESCRIPTION: The cotangent of X, where X is in radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CSC( X ) + PARAMETER: X is a number +DESCRIPTION: The cosecant of X, where X is in radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CSNG( X ) + PARAMETER: X is a number, [MINFLT,MAXFLT] +DESCRIPTION: The single-precision value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CVC( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(CUR) +DESCRIPTION: The currency (64-bit) integer value in A$, which was created by MKC$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CVD( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(DBL) +DESCRIPTION: The double-precision value in A$, which was created by MKD$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CVI( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(INT) +DESCRIPTION: The short (16-bit) integer value in A$, which was created by MKI$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CVL( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(LNG) +DESCRIPTION: The long (32-bit) integer value in A$, which was created by MKL$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CVS( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(FLT) +DESCRIPTION: The single-precision value in A$, which was created by MKS$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = DATE +DESCRIPTION: The current date in decimal form YYYDDD, where YYY are the number of years since 1900 and DDD is the ordinal number of the current day of the year; e.g., the value of DATE on May 9, 1977 was 77129. If there is no calendar available, then the value of DATE shall be -1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = DATE$ +DESCRIPTION: BASIC-80: The current date based on the computer's internal clock as a string in the form 'MM-DD-YYYY'.ECMA-116: The date in the string representation 'YYYYMMDD' according to ISO 2014. For example, the value of DATE$ on May 9, 1977 was '19770509'. If there is not calendar available, then the value of DATE$ shall be '00000000'. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = DEF FN +DESCRIPTION: User Function. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = DEG( X ) + PARAMETER: X is a number +DESCRIPTION: The number of degrees in X radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ENVIRON( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Sends the environment variable expression contained in A$ to the host operating system. A$ must contain the '=' character. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = ENVIRON$( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The value of the environment variable named A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = EOF( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: If device number X is at the end-of-file, then -1, otherwise 0. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = EPS( X ) + PARAMETER: X is a number +DESCRIPTION: The maximum of (X-X1,X2-X, sigma) where X1 and X2 are the predecessor and successor of X and signma is the smallest positive value representable. If X has no predecessor the X1=X and if X has no successor the X2=X. Note EPS(0) is the smallest positive number representable by the implementation, and is therefor implementation-defined. Note also that EPS may produce different results for different arithmetic options (see OPTION ARITHMETIC). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ERL +DESCRIPTION: The line number of the most recent error. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ERR +DESCRIPTION: The error number of the most recent error. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = ERR$ +DESCRIPTION: The last error message. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ERROR( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: Simulate the error number in X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ERROR( X, A$ ) + PARAMETER: X is a number, [0,255] + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: Simulate the error number in X, with a custom message in A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = EXP( X ) + PARAMETER: X is a number +DESCRIPTION: The exponential value of X, i.e., the value of the base of natural logarithms (e = 2.71828) raised to the power of X; if EXP(X) is less that machine infinitesimal, then its value shall be replaced with zero. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FILEATTR( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: For file X, if Y = 1 then returns open mode, otherwise returns zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FILES +DESCRIPTION: Displays all the file names. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FILES( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Displays all the file names matching A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FIX( X ) + PARAMETER: X is a number +DESCRIPTION: The truncated integer, part of X. FIX (X) is equivalent to SGN(X)*INT(ABS(X)). The major difference between FIX and INT is that FIX does not return the next lower number for negative X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FP( X ) + PARAMETER: X is a number +DESCRIPTION: The fractional part of X, i.e. X - IP(X). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = FRE +DESCRIPTION: The number of bytes of available memory. This function is provided for backward compatibility and it always returns a fixed value of 32000. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FRE( X ) + PARAMETER: X is a number +DESCRIPTION: The number of bytes of available memory. This function is provided for backward compatibility and it always returns a fixed value of 32000. The value of X is ignored. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FRE( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The number of bytes of available memory. This function is provided for backward compatibility and it always returns a fixed value of 32000.The value of A$ is ignored. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FREEFILE +DESCRIPTION: The next available file number. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = GET( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: For file X, gets the next available record. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = GET( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: For file X, gets record number Y. The first record number is 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = HEX$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The the hexadecimal (base 16) representation of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = INKEY$ +DESCRIPTION: The keypress, if available. If a keypress is not available, then immediately returns a null string (''). If not supported by the platform, then always returns an empty string, so use INPUT$(1) instead. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = INP( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: The value read from machine port X. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = INPUT$( X ) + PARAMETER: X is a number, [0,MAXLEN] +DESCRIPTION: The string of X characters, read from the terminal. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = INPUT$( X, Y ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: Y is a number, [1,MAXDEV] +DESCRIPTION: The string of X characters, read from file Y. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = INSTR( A$, B$ ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: B$ is a string, LEN >= 0 +DESCRIPTION: The position at which B$ occurs in A$, beginning at position 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = INSTR( X, A$, B$ ) + PARAMETER: X is a number, [1,MAXLEN] + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: B$ is a string, LEN >= 0 +DESCRIPTION: The position at which B$ occurs in A$, beginning at position X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = INT( X ) + PARAMETER: X is a number +DESCRIPTION: The largest integer not greater than X; e.g. INT(1.3) = 1 and INT(-1.3) = 2. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = IP( X ) + PARAMETER: X is a number +DESCRIPTION: The integer part of X, i.e., SGN(X)*INT(ABS(X)). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = KILL( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Removes the file named in A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = LCASE$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string of characters from the value associatedwith A$ by replacing each upper-case-letter in the string by its lower-case version. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = LEFT$( A$, X ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: X is a number, [0,MAXLEN] +DESCRIPTION: The X left-most characters of A$, beginning from postion 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LEN( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The length of A$. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOC( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: The location of file X; the next record that GET or PUT statements will use. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOCATE( X, Y ) + PARAMETER: X is a number, [0,255] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Locates the cursor to row X, column Y. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOF( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: The length of file X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOG( X ) + PARAMETER: X is a number, > 0 +DESCRIPTION: The natural logarithm of X; X shall be greater than zero. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOG10( X ) + PARAMETER: X is a number, > 0 +DESCRIPTION: The common logarithm of X; X shall be greater than zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = LOG2( X ) + PARAMETER: X is a number, > 0 +DESCRIPTION: The base 2 logarithm of X; X shall be greater than zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = LPOS +DESCRIPTION: The current cursor position in the line for the printer. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = LTRIM$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string of characters resulting from the value associated with A$ by deleting all leading space characters. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LWIDTH( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: For printer, sets the line width to X. Zero means no wrapping will occur. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = MAX( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number +DESCRIPTION: The smaller (algebraically) of the parameters. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXBYT +DESCRIPTION: The largest finite positive number representable as a BYTE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXCUR +DESCRIPTION: The largest finite positive number representable as a CURRENCY; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXDBL +DESCRIPTION: The largest finite positive number representable as a DOUBLE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXDEV +DESCRIPTION: The largest finite positive number useable as a FILE NUMBER; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXINT +DESCRIPTION: The largest finite positive number representable as an INTEGER; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXLEN( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The maximum length associated with the simple-string-variable A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXLNG +DESCRIPTION: The largest finite positive number representable as a LONG; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXLVL +DESCRIPTION: The maximum stack level; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXNUM +DESCRIPTION: The largest finite positive number representable and manipulable by the implementation; implementation-defined. MAXNUM may represent diffent number for different arithmetic options (see OPTION ARITHMETIC). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXSNG +DESCRIPTION: The largest finite positive number representable as a SINGLE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MID$( A$, X ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: X is a number, [1,MAXLEN] +DESCRIPTION: The characters of A$, starting from postion X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MID$( A$, X, Y ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: X is a number, [1,MAXLEN] + PARAMETER: Y is a number, [0,MAXLEN] +DESCRIPTION: The Y characters of A$, starting from postion X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = MIN( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number +DESCRIPTION: The smaller (algebraically) of the parameters. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINBYT +DESCRIPTION: The largest finite negative number representable as a BYTE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINCUR +DESCRIPTION: The largest finite negative number representable as a CURRENCY; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINDBL +DESCRIPTION: The largest finite negative number representable as a DOUBLE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINDEV +DESCRIPTION: The largest finite negative number useable as a FILE NUMBER; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MININT +DESCRIPTION: The largest finite negative number representable as an INTEGER; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINLNG +DESCRIPTION: The largest finite negative number representable as a LONG; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINNUM +DESCRIPTION: The largest finite negative number representable and manipulable by the implementation; implementation-defined. MINNUM may represent diffent number for different arithmetic options (see OPTION ARITHMETIC). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINSNG +DESCRIPTION: The largest finite negative number representable as a SINGLE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKC$( X ) + PARAMETER: X is a number, [MINCUR,MAXCUR] +DESCRIPTION: The internal representation of the currency (64-bit) integer X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKD$( X ) + PARAMETER: X is a number, [MINDBL,MAXDBL] +DESCRIPTION: The internal representation of X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = MKDIR( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Makes the directory named in A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKI$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The internal representation of the short (16-bit) integer X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKL$( X ) + PARAMETER: X is a number, [MINLNG,MAXLNG] +DESCRIPTION: The internal representation of the long (32-bit) integer X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKS$( X ) + PARAMETER: X is a number, [MINFLT,MAXFLT] +DESCRIPTION: The internal representation of X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = MOD( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number, <> 0 +DESCRIPTION: X modulo Y, i.e., X-Y*INT(X/Y). Y shall not equal zero. + VERSIONS: + [_] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = NAME( A$, B$ ) + PARAMETER: A$ is a string, LEN >= 1 + PARAMETER: B$ is a string, LEN >= 1 +DESCRIPTION: Rename the file named A$ into B$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = NULL( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: Appends X null characters after each line printed by LPRINT or LLIST. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = OCT$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The the octal (base 8) representation of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = OPEN( A$, X, B$ ) + PARAMETER: A$ is a string, LEN >= 1 + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: B$ is a string, LEN >= 1 +DESCRIPTION: Open file number X. A$ is the mode: I, O, A, R. B$ is the file name. Default the record length. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = OPEN( A$, X, B$, Y ) + PARAMETER: A$ is a string, LEN >= 1 + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: B$ is a string, LEN >= 1 + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: Open file number X. A$ is the mode: I, O, A, R. B$ is the file name. Y is the record length. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ORD( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The ordinal position of the character named by the string associated with A$ in the collating sequence of ASCII character set, where the first member of the character set is in position zero. The acceptable values for the standard character set are shown in Table 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = OUT( X, Y ) + PARAMETER: X is a number, [MININT,MAXINT] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Sends Y to hardware port X. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = PEEK( X ) + PARAMETER: X is a number, [MINLNG,MAXLNG] +DESCRIPTION: The value read from hardware address X. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = PI +DESCRIPTION: The constant 3.14159 which is the ratio of the circumference of a circle to its diameter. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = POKE( X, Y ) + PARAMETER: X is a number, [MINLNG,MAXLNG] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Sends Y to hardware address X. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = POS +DESCRIPTION: The current cursor position in the line. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = POS( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: The current cursor position in the line for file X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = POS( A$, B$ ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: B$ is a string, LEN >= 0 +DESCRIPTION: The character position, within the value assocated with A$, of the first character of the first occurence of the value associated with B$, starting at the first character of A$. If there is not such occurence, then the value returned is zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = POS( A$, B$, X ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: B$ is a string, LEN >= 0 + PARAMETER: X is a number, [1,MAXLEN] +DESCRIPTION: The character position, within the value assocated with A$, of the first character of the first occurence of the value associated with B$, starting at the Xth character of A$. If there is not such occurence, then the value returned is zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = PUT( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: For file X, puts the next available record. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = PUT( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: For file X, puts record number Y. The first record number is 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RAD( X ) + PARAMETER: X is a number +DESCRIPTION: The number of radians in X degrees. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = RANDOMIZE +DESCRIPTION: Seeds the pseudo-random number generator with TIME. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RANDOMIZE( X ) + PARAMETER: X is a number +DESCRIPTION: Seeds the pseudo-random number generator with X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = REMAINDER( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number, <> 0 +DESCRIPTION: The remainder function, i.e., X-Y*IP(X/Y). Y shall not equal zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = REPEAT$( X, Y ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: The string consisting of X copies of CHR$(Y); X > 0. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = REPEAT$( X, A$ ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The string consisting of X copies of A$; X > 0. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RESET +DESCRIPTION: Close all open files. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = RIGHT$( A$, X ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: X is a number, [0,MAXLEN] +DESCRIPTION: The right-most X characters of A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RMDIR( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Removes the directory named in A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RND +DESCRIPTION: The next pseudo-random number in an implementation-defined sequence of pseudo-random numbers uniformly distributed in the range 0 <= RND < 1. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RND( X ) + PARAMETER: X is a number +DESCRIPTION: Returns a pseudorandom number in the range [0,1]. The value of X is ignored. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ROUND( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: The value of X rounded to Y decimal digits to the right of the decimal point (or -Y digits to the left if Y < 0); i.e., INT(X*10^Y+.5)/10^Y. Y must be in [-32,32]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = RTRIM$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string of characters resulting from the value associated with A$ by deleting all trailing space characters. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SEC( X ) + PARAMETER: X is a number +DESCRIPTION: The secant of X, where X is in radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = SEEK( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: The location of file X; the next record that GET or PUT statements will use. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SEEK( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: For file X, move to record number Y; the first record number is 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SGN( X ) + PARAMETER: X is a number +DESCRIPTION: The sign of X: -1 if X < 0, 0 if X = 0, and +1 if X > 0. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SHELL( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The exit code resulting from the execution of an operating system command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SIN( X ) + PARAMETER: X is a number +DESCRIPTION: The sine of X, where X is in radians. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SINH( X ) + PARAMETER: X is a number +DESCRIPTION: The hyperbolic sine of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = SPACE$( X ) + PARAMETER: X is a number, [0,MAXLEN] +DESCRIPTION: The string of X blank spaces. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = SPC( X ) + PARAMETER: X is a number +DESCRIPTION: The string of X blank spaces. Only for use within the PRINT command. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SQR( X ) + PARAMETER: X is a number, >= 0 +DESCRIPTION: The non-negative square root of X; X shall be non-negative. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = STR$( X ) + PARAMETER: X is a number +DESCRIPTION: The string generated by the print-statement as the numeric-representation of the value associated with X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = STRING$( X, A$ ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The string X bytes long consisting of the first character of A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = STRING$( X, Y ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: The string X bytes long consisting of CHR$(Y). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = TAB( X ) + PARAMETER: X is a number +DESCRIPTION: The string required to advance to column X. Only for use within the PRINT command. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TAN( X ) + PARAMETER: X is a number +DESCRIPTION: The tangent of X, where X is in radians. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TANH( X ) + PARAMETER: X is a number +DESCRIPTION: The hyperbolic tangent of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = TIME +DESCRIPTION: The time elapsed since the previous midnight, expressed in seconds; e.g., the value of TIME at 11:15 AM is 40500. If there is no clock available, then the value of TIME shall be -1. The value of TIME at midnight shall be zero (not 86400). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = TIME$ +DESCRIPTION: The time of day in 24-hour notation according to ISO 3307. For example, the value of TIME$ at 11:15 AM is '11:15:00'. If there is no clock available, then the value of TIME$ shall be '99:99:99'. The value of TIME$ at midnight is '00:00:00'. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TIMER +DESCRIPTION: The time in the system clock in seconds elapsed since midnight. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = TRIM$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string resulting from removing both leading and trailing spaces from A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TROFF +DESCRIPTION: Turn tracing OFF + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TRON +DESCRIPTION: Turn tracing ON + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TRUNCATE( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: The value of X truncated to Y decimal digits to the right of the decimal point (or -Y digits to the left if Y < 0); i.e., IP(X*10^Y)/10^Y. Y in [-32,32]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = UCASE$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string of characters resulting from the value associated with A$ by replacing each lower-case-letter in the string by its upper-case version. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = VAL( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The value of the numeric-constant associated with A$, if the string associated with A$ is a numeric-constant. Leading and trailing spaces in the string are ignored. If the evaluation of the numeric-constant would result in a value which causes an underflow, then the value returned shall be zero. For example, VAL(' 123.5 ' ) = 123.5, VAL('2.E-99') could be zero, and VAL('MCMXVII') causes an exception. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = WAIT( X, Y ) + PARAMETER: X is a number, [MININT,MAXINT] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Waits for the value of (INP(X) AND Y) to become nonzero. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = WAIT( X, Y, Z ) + PARAMETER: X is a number, [MININT,MAXINT] + PARAMETER: Y is a number, [0,255] + PARAMETER: Z is a number, [0,255] +DESCRIPTION: Waits for the value of ((INP(X) XOR Z) AND Y) to become nonzero. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = WIDTH( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: For console, sets the line width to X. Zero means no wrapping will occur. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = WIDTH( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: For file X, sets the line width to Y. Zero means no wrapping will occur. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ diff --git a/NBS2/NBS_minimal_BASIC_test_programs_vol1.txt b/NBS2/NBS_minimal_BASIC_test_programs_vol1.txt new file mode 100644 index 0000000..62dbe8f --- /dev/null +++ b/NBS2/NBS_minimal_BASIC_test_programs_vol1.txt @@ -0,0 +1,4538 @@ + Google + + + + +This is a digital copy of a book that was preserved for generations on library shelves before it was carefully scanned by Google as part of a project +to make the world's books discoverable online. +It has survived long enough for the copyright to expire and the book to enter the public domain. A public domain book is one that was never subject +to copyright or whose legal copyright term has expired. Whether a book is in the public domain may vary country to country. Public domain books +are our gateways to the past, representing a wealth of history, culture and knowledge that's often difficult to discover. +Marks, notations and other marginalia present in the original volume will appear in this file - a reminder of this book's long journey from the +publisher to a library and finally to you. + +Usage guidelines +Google is proud to partner with libraries to digitize public domain materials and make them widely accessible. Public domain books belong to the +public and we are merely their custodians. Nevertheless, this work is expensive, so in order to keep providing this resource, we have taken steps to +prevent abuse by commercial parties, including placing technical restrictions on automated querying. +We also ask that you: + + + Make non-commercial use of the files We designed Google Book Search for use by individuals, and we request that you use these files for + personal, non-commercial purposes. + + Refrain from automated querying Do not send automated queries of any sort to Google's system: If you are conducting research on machine + translation, optical character recognition or other areas where access to a large amount of text is helpful, please contact us. We encourage the + use of public domain materials for these purposes and may be able to help. + + Maintain attribution The Google "watermark" you see on each file is essential for informing people about this project and helping them find + additional materials through Google Book Search. Please do not remove it. + + Keep it legal Whatever your use, remember that you are responsible for ensuring that what you are doing is legal. Do not assume that just + because we believe a book is in the public domain for users in the United States, that the work is also in the public domain for users in other + countries. Whether a book is still in copyright varies from country to country, and we can't offer guidance on whether any specific use of + any specific book is allowed. Please do not assume that a book's appearance in Google Book Search means it can be used in any manner + anywhere in the world. Copyright infringement liability can be quite severe. + +About Google Book Search +Google's mission is to organize the world's information and to make it universally accessible and useful. Google Book Search helps readers +discover the world's books while helping authors and publishers reach new audiences. You can search through the full text of this book on the web +at http://books.google.com/ + +13.10: 500-70/1 + + + of Commerce Computer Science + + National Bureau and Technology + of Standards + + + + + + NBS Special Publication 500-70/1 + + + + NBS Minimal BASIC Test + + + Programs—Version 2, + + + User's Manual + + + + Volume 1—Documentation + + + + + + + + + + + + + + + + + NOTRE DAME + + 247 + NOV 25 1980 + 15183 + DOCUMENTS CENTER + DEPOSITORY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UNIVERSITY OF MICHIGAN + 3 9015 07758 8021 + + NATIONAL BUREAU OF STANDARDS + + +The National Bureau of Standards' was established by an act of Congress on March 3, 1901. +The Bureau's overall goal is to strengthen and advance the Nation's science and technology +and facilitate their effective application for public benefit. To this end, the Bureau conducts +research and provides: (I) a basis for the Nation's physical measurement system, (2) scientific +and technological services for industry and government, (3) a technical basis for equity in +trade, and (4) technical services to promote public safety. The Bureau's technical work is per- +formed by the National Measurement Laboratory, the National Engineering Laboratory, and +the Institute for Computer Sciences and Technology. + +THE NATIONAL MEASUREMENT LABORATORY provides the national system of +physical and chemical and materials measurement; coordinates the system with measurement +systems of other nations and furnishes essential services leading to accurate and uniform +physical and chemical measurement throughout the Nation's scientific community, industry, +and commerce; conducts materials research leading to improved methods of measurement, +standards, and data on the properties of materials needed by industry, commerce, educational +institutions, and Government; provides advisory and research services to other Government +agencies; develops, produces, and distributes Standard Reference Materials; and provides +calibration services. The Laboratory consists of the following centers: + + Absolute Physical Quantities' — Radiation Research — Thermodynamics and + Molecular Science — Analytical Chemistry — Materials Science. + +THE NATIONAL ENGINEERING LABORATORY provides technology and technical ser- +vices to the public and private sectors to address national needs and to solve national +problems; conducts research in engineering and applied science in support of these efforts; +builds and maintains competence in the necessary disciplines required to carry out this +research and technical service; develops engineering data and measurement capabilities; +provides engineering measurement traceability services; develops test methods and proposes +engineering standards and code changes; develops and proposes new engineering practices; +and develops and improves mechanisms to transfer results of its research to the ultimate user. +The Laboratory consists of the lollowing centers: + + Applied Mathematics — Electronics and Electrical Engineering' — Mechanical + Engineering and Process Technology= — Building Technology — Fire Research — + Consumer Product Technology — Field Methods. + +THE INSTITUTE FOR COMPUTER SCIENCES AND TECHNOLOGY conducts +research and provides scientific and technical services to aid Federal agencies in the selection, +acquisition, application, and use of computer technology to improve effectiveness and +economy in Government operations in accordance with Public Law 89-306 (40 U.S.C. 759), +relevant Executive Orders, and other directives; carries out this mission by managing the +Federal Information Processing Standards Program, developing Federal ADP standards +guidelines, and managing Federal participation in ADP voluntary standardization activities; +provides scientific and technological advisory services and assistance to Federal agencies; and +provides the technical foundation for computer-related policies of the Federal Government. +The Institute consists of the following centers: + + Programming Science and Technology — Computer Systems Engineering. + +'Headquarters and Laboratories at Gaithersburg, MD, unless otherwise noted; +mailing address Washington. DC 20234. +Some divisions within the center are located at Boulder, CO 80303. + +Computer Science + +and Technology + + + +NBS Special Publication 500-70/1 + + +NBS Minimal BASIC Test + +Programs—Version 2, + +User's Manual + +Volume 1—Documentation + + +John V. Cugini +Joan S. Bowden +Mark W. Skall + +Center for Programming Science and Technology +Institute for Computer Sciences and Technology +National Bureau of Standards +Washington, DC 20234 + + + + + + + + + + + + + + + + +U.S. DEPARTMENT OF COMMERCE +Philip M. Klutznick, Secretary +Luther H. Hodges, Jr., Deputy Secretary +Jordan J. Baruch, Assistant Secretary for Productivity, + Technology and Innovation +National Bureau of Standards +Ernest Ambler, Director +Issued November 1980 + + Reports on Computer Science and Technology + + The National Bureau of Standards has a special responsibility within the Federal + Government for computer science and technology activities. The programs of the + NBS Institute for Computer Sciences and Technology are designed to provide ADP + standards, guidelines, and technical advisory services to improve the effectiveness + of computer utilization in the Federal sector, and to perform appropriate research and + development efforts as foundation for such activities and programs. This publication + series will report these NBS efforts to the Federal computer community as well as to + interested specialists in the academic and private sectors. Those wishing to receive + notices of publications in this series should complete and return the form at the end + of this publication. + + + + + + National Bureau of Standards Special Publication 500-70/1 + Nat. Bur. Stand. (U.S.), Spec. Publ. 500-70/1, 79 pages (Nov. 1980) + CODEN: XNBSAV + + + + + Library of Congress Catalog Card Number: 80-600163 + + + + + + + + + + + + + + + + + + + + + + U.S. GOVERNMENT PRINTING OFFICE + WASHINGTON: 1980 + +For sale by the Superintendent of Documents, U.S. Government Printing Office, Washington, D.C. 20402 + Price $4.00 + (Add 25 percent for other than U.S. mailing) + + NBS Minimal BASIC Test Programs - Version 2 + User's Manual + Volume 1 - Documentation + + John V. Cugini + Joan S. Bowden + Mark W. Skall + + +Abstract: This publication describes the set of programs +developed by NBS for the purpose of testing conformance of +implementations of the computer language BASIC to the American +National Standard for Minimal BASIC, ANSI X3.60-1978. The +Department of Commerce has adopted this ANSI standard as Federal +Information Processing Standard 68. By submitting the programs +to a candidate implementation, the user can test the various +features which an implementation must support in order to conform +to the standard. While some programs can determine whether or +not a given feature is correctly implemented, others produce +output which the user must then interpret to some degree. This +manual describes how the programs should be used so as to +interpret correctly the results of the tests. Such +interpretation depends strongly on a solid understanding of the +conformance rules laid down in the standard, and there is a brief +discussion of these rules and how they relate to the test +programs and to the various ways in which the language may be +implemented. + +Key words: BASIC; language processor testing; Minimal BASIC; +programming language standards; software standards; software +testing + +Acknowledgments: Version 2 owes its existence to the efforts and +example of many people. Dr. David Gilsinn and Mr. Charles +Sheppard, the authors of version 1*, deserve credit for +construction of that first system, of which version 2 is a +refinement. In addition, they were generous in their advice on +many of the pitfalls to avoid on the second iteration. Mr. +Landon Dyer assisted with the testing and document preparation. +It is also important to thank the many people who sent in +comments and suggestions on Version 1. We hope that all the +users of the resulting Version 2 will help us improve it further. + + + + + + + + + + + + +* issued as an NBS Internal Report; no longer available. + + Page 2 + Table of Contents +Section Page +1 How to Use This Manual 6 +2 The Language Standard for BASIC 7 + 2.1 History and Prospects 7 + 2.2 The Minimal BASIC Language 8 + 2.3 Conformance to the Standard 9 + 2.3.1 Program conformance 9 + 2.3.2 Implementation conformance 10 +3 Determining Implementation Conformance 11 + 3.1 Test programs as test data, not algorithms 11 + 3.2 Special Issues Raised by the Standard Requirements 12 + 3.2.1 Implementation—defined features 12 + 3.2.2 Error and Exception Reporting 12 +4 Structure of the Test System 15 + 4.1 Testing Features Before Using Them 15 + 4.2 Hierarchical Organization of the Tests 16 + 4.3 Environment Assumptions 16 + 4.4 Operating and Interpreting the Tests 17 + 4.4.1 User Checking vs. Self Checking 17 + 4.4.2 Types of Tests 18 + 4.4.2.1 Standard Tests 18 + 4.4.2.2 Exception Tests 18 + 4.4.2.3 Error Tests 19 + 4.4.2.4 Informative Tests 22 + 4.4.3 Documentation 23 + + Page 3 +Section Page +5 Functional Groups of Test Programs 26 + 5.1 Simple PRINTing of string constants 26 + 5.2 END and STOP 26 + 5.3 PRINTing and simple assignment (LET) 27 + 5.3.1 String variables and TAB 27 + 5.3.2 Numeric constants and variables 28 + 5.4 Control Statements and REM 28 + 5.5 Variables 29 + 5.6 Numeric Constants, Variables, and Operations 29 + 5.6.1 Standard Capabilities 29 + 5.6.2 Exceptions 30 + 5.6.3 Errors 31 + 5.6.4 Accuracy tests - Informative 31 + 5.7 FOR-NEXT 33 + 5.8 Arrays 34 + 5.8.1 Standard Capabilities 34 + 5.8.2 Exceptions 34 + 5.8.3 Errors 34 + 5.9 Control Statements 35 + 5.9.1 GOSUB and RETURN 35 + 5.9.2 ON-GOTO 36 + 5.10 READ, DATA, and RESTORE 36 + 5.10.1 Standard Capabilities 36 + 5.10.2 Exceptions 36 + 5.10.3 Errors 36 + + Page 4 + + +Section Page + + 5.11 INPUT 37 + + 5.11.1 Standard Capabilities 37 + + 5.11.2 Exceptions 38 + + 5.11.3 Errors 40 + + 5.12 Implementation-supplied Functions 42 + + 5.12.1 Precise functions: ABS,INT,SGN 42 + + 5.12.2 Approximated functions: + SQR,ATN,COS,EXP,LOG,SIN,TAN 42 + + 5.12.3 RND and RANDOMIZE 43 + + 5.12.3.1 Standard Capabilities 44 + + 5.12.3.2 Informative Tests 44 + + 5.12.4 Errors 45 + + 5.13 User-defined Functions 45 + + 5.13.1 Standard Capabilities 45 + + 5.13.2 Errors 45 + + 5.14 Numeric Expressions 46 + + 5.14.1 Standard Capabilities in context of + LET-statement 46 + + 5.14.2 Expressions in other contexts: PRINT, IF, + ON-GOTO, FOR 46 + + 5.14.3 Exceptions in subscripts and arguments 47 + + 5.14.4 Exceptions in other contexts: PRINT, IF, + ON-GOTO, FOR 47 + + Page 5 + + +Section Page + + 5.15 Miscellaneous Checks 47 + + 5.15.1 Missing keyword 47 + + 5.15.2 Spaces 48 + + 5.15.3 Quotes 48 + + 5.15.4 Line Numbers 48 + + 5.15.5 Line longer than 72 characters 48 + + 5.15.6 Margin Overflow for Output Line 49 + + 5.15.7 Lowercase characters 49 + + 5.15.8 Ordering Strings 49 + + 5.15.9 Mismatch of Types in Assignment 49 + +6 Tables of Summary Information about the Test Programs 50 + + 6.1 Group Structure of the Minimal BASIC Test Programs 51 + + 6.2 Test Program Sequence 54 + + 6.3 Cross-reference between ANSI Standard and Test + Programs 71 + +Appendix A: Differences between Versions 1 and 2 of the + Minimal BASIC Test Programs 75 + +References 76 + +Figures: + + Figure 1 - Error and Exception Handling 14 + + Figure 2 - Format of Test Program Output 25 + + Figure 3 - Instructions for the INPUT Exceptions Test 41 + + Page 6 + + +1 HOW TO USE THIS MANUAL + + This manual presents background information and operating +instructions for the NBS Minimal BASIC test programs. Readers +who want a general idea of what the programs are supposed to do +and why they are structured as they are should read sections 2 +and 3. These sections give a brief explanation of BASIC, how it +is standardized, and how the test programs help measure +conformance to the standard. Those who wish to know how to +interpret the results of program execution should also read +section 3 and then section 4 for the general rules of +interpretation and section 5 for information peculiar to +individual programs and groups of programs within the test +system. Section 6 contains tables of summary information about +the tests. + + Volume 2 of this publication consists of the source listings +and sample outputs for all the test programs. + + The test system for BASIC should be helpful to anyone with +an interest in measuring the conformance of an implementation of +BASIC (e.g., a compiler or interpreter) to the Minimal BASIC +standard. This would include 1) purchasers who want to be sure +they are buying a standard implementation, 2) programmers who +must use a given implementation and want to know in which areas +it conforms to the standard and which features to avoid or be +wary of, and 3) implementors who may wish to use the tests as a +development and debugging tool. + + Much of this manual is derived from the technical +specifications in the American National Standard for Minimal +BASIC, ANSI X3.60-1978 [1]. You will need a copy of that +standard in order to understand most of the material herein. +Copies are available from the American National Standards +Institute, 1430 Broadway, New York, NY 10018. This document will +frequently cite ANSI X3.60-1978, and references to "the standard" +should be taken to mean that ANSI publication. + + The measure of success for Version 2 of the Minimal BASIC +Test Programs is its usefulness to you. We at NBS would greatly +appreciate hearing about your evaluation of the test system. We +will respond to requests for clarification concerning the system +and its relation to the standard. Also, we will maintain a +mailing list of users who request to be notified of changes and +major clarifications. Please direct all comments, questions, and +suggestions to: + + Project Manager + NBS BASIC Test Programs + National Bureau of Standards + Technology Bldg., Room A-265 + Washington, DC 20234 + + Page 7 + + +2 THE LANGUAGE STANDARD FOR BASIC + +2.1 History And Prospects + + BASIC is a computer programming language developed in the +mid 1960's by Professors John G. Kemeny and Thomas E. Kurtz at +Dartmouth College. The primary motivation behind its design was +educational (in contrast to the design goals for, e.g. COBOL and +FORTRAN) and accordingly the language has always emphasized ease +of use and understanding as opposed to simple machine efficiency. +In July 1973, NBS published a "Candidate Standard for Fundamental +BASIC" [2] by Prof. John A. N. Lee of the University of +Massachusetts at Amherst. This work represented the beginning of +a serious effort to standardize BASIC. The first meeting of the +American National Standards Technical Committee on the +Programming Language BASIC, X3J2, convened at CBEMA headquarters +in Washington DC, on January 23-24, 1974, with Professor Kurtz as +chairman. The committee adopted a program of work which +envisioned development of a nucleus language followed by +modularized enhancements. The nucleus finally emerged as Minimal +BASIC, which was approved as an ANSI standard January 17, 1978. +As its name implies, the language defined in the standard is one +which any implementation of BASIC should encompass. + + Meanwhile, NBS had been developing a set of test programs, +the purpose of which was to exercise all the facilities defined +in the standard and thereby test conformance of implementations +to the standard. This test suite was released as NBSIR +78-1420-1, 2 3 and 4, NBS Minimal BASIC Test Programs - Version +1 User's Manual in January 1978. NBS distributed this version to +more than 60 users, many of whom made suggestions about how the +test suite might be improved. NBS has endeavored to incorporate +these suggestions and re-design the tests where it seemed useful +to do so. The result is the current Version 2 of the test suite. +Appendix A contains a summary of the differences between versions + 1 and 2. + + In order to provide a larger selection of high level +programming languages for the Federal government's ADP +activities, the Department of Commerce has incorporated the ANSI +standard as Federal Information Processing Standard 68. This +means, among other things, that implementations of BASIC sold to +the Federal government after an 18 month transition period must +conform to the technical specifications of the ANSI standard: +hence the NBS interest in developing a tool for measuring such +conformance. + + ANSI X3J2 is currently (April 1980) working on a language +standard for a much richer version of BASIC, which will provide +such features as real-time process control, graphics, string +manipulation, file handling, exception handling, and array +manipulation. The current expectation is for ANSI adoption of +this standard sometime in 1982. It is probable that such a +standard for a full version of BASIC would be adopted as a +Federal Information Processing Standard. + + Page 8 + + +2.2 The Minimal BASIC Language + + Minimal BASIC is distinguished among standardized computer +languages by its simplicity and its suitability for the casual +user. It is simple, not only because of its historic purpose as +a computer language for the casual user, but also because the +ANSI BASIC committee organized its work around the concept of +first defining a core or nucleus language which one might +reasonably expect any implementation of BASIC to include, to be +followed by a .standard for enhanced versions of the language. +Therefore the tendency was to defer standardization of all the +sophisticated features and include only the simple features. In +particular, Minimal BASIC has no facilities for file handling, +string manipulation, or array manipulation and has only +rudimentary control structures. Although BASIC was originally +designed for interactive use, the standard does not restrict +implementations to that use. + + Minimal BASIC provides for only two types of data, numeric +(with the properties usually associated with real or +floating-point numbers) and string. String data can be read as +input, printed as output, and moved and compared internally. The +only legal comparisons, however, are equal or not equal; no +collating sequence among characters is defined. Numeric data can +be manipulated with the usual choice of operations: addition, +subtraction, multiplication, division, and involution (sometimes +called exponentiation). There is a modest assortment of numeric +functions. One- and two-dimensional arrays are allowed, but only +for numeric data, not string. + + For control, there is a GOTO, an IF which can cause control +to jump to any line in the program, a GOSUB and RETURN for +internal subroutines, a FOR and NEXT statement to execute loops +while incrementing a control-variable, and a STOP statement. + + Input and output are accomplished with the INPUT and PRINT +statements, both of which are designed for use on an interactive +terminal. There is also a feature which has no real equivalent +among the popular computer languages: a kind of internal file of +data values, numeric and string, which can be assigned to +variables with a READ statement (not to be confused with INPUT +which handles external data). The internal set of values is +created with DATA statements, and may be read repetitively from +the beginning of the set by using the RESTORE statement. + + The programmer may (but need not) declare the size of arrays +with the DIM statement and specify that subscripts begin at 0 or +1 with an OPTION statement. The programmer may also establish +numeric user-defined functions with the DEF statement, but only +as simple expressions, taking one argument. The RANDOMIZE +statement works in conjunction with the RND function. If RND is +called without execution of RANDOMIZE, it always returns the same +sequence of pseudo-random numbers for each execution of the +program. Executing RANDOMIZE causes RND to return an +unpredictable set of values each time. + + Page 9 + + + The REM statement allows the programmer to insert comments +or remarks throughout the program. + + Although the facilities of the language are modest, there is +one area in which the standard sets rather stringent +requirements, namely, diagnostic messages. The mandate of the +standard that implementations exhibit reasonable behavior even +when presented with unreasonable programs follows directly from +the design goal of solicitude towards the beginning or casual +user. Thus, the standard takes care to define what happens if +the user commits any of a number of syntactic or semantic +blunders. The need to test these diagnostic requirements +strongly affected the overall shape of the test system as will +become apparent in later sections. + + + +2.3 Conformance To The Standard + + There are many reasons for establishing a standard for a +programming language: the promotion of well—defined and +well—designed languages as a consequence of the standardizing +process itself, the ability to create language—based rather than +machine—based software tools and techniques, the increase in +programmer productivity which an industry—wide standard fosters, +and so on. At bottom, however, there is one result essential to +the success of a standard: program portability. The same +program should not evoke perniciously different behavior in +different implementations. Ideally, the same source code and +data environment should produce the same output, regardless of +the machine environment. + + How does conformance to the standard work towards this goal? +Essentially, the standard defines the set of syntactically legal +programs, assigns a semantic meaning to all of them and then +requires that implementations (sometimes called processors; we +will use the two terms interchangeably throughout this document) +actually produce the assigned meaning when presented with a legal +program. + + + +2.3.1 Program Conformance + Program conformance, then, is a matter of syntax. We look +at the source code and determine whether or not it obeys all the +rules laid down in the standard. These rules are mostly spelled +out in the syntax sections of the standard using a variant of +Backus—Naur Form (BNF). They are supplemented, however, by +certain context—sensitive constraints, which are contained in the +semantics sections. Thus the rules form a ceiling for conforming +programs. If a program has been constructed according to the +rules, it meets the standard, without regard to its semantic +meaning. The syntactic rules are fully implementation +independent: a standard program must be accepted by all standard + + Page 10 + + +processors. Further, since we can tell if a program is standard +by mere inspection, it would be a reasonably easy job to build a +recognizer or syntax checker which could always discover whether +or not a program is standard. Unfortunately, such a recognizer +could not be written in Minimal BASIC itself and this probably +explains why no recognizer to check program conformance has +gained wide acceptance. At least one such recognizer does exist, +however. Called PBASIC [3], it was developed at the University +of Kent at Canterbury and is written in PFORT, a portable subset +of FORTRAN. PBASIC was used to check the syntax of the Version 2 +Minimal BASIC Test Programs. + + + +2.3.2 Implementation Conformance + + Implementation conformance is derivative of the more +primitive concept of program conformance. In contrast to the way +in which program conformance is described, processor conformance +is specified functionally, not structurally. The essential +requirement is that an implementation accept any standard program +and produce the behavior specified by the language standard. +That is, the implementation must make the proper connection +between the syntax of the program and the operation of the +computer system. Note that this is a black box description of +the implementation. Whether the realization of the language is +done with a compiler, an interpreter, firmware, or by being +hard-wired, is irrelevant. Only the external behavior is +important, not the internal structure - quite the opposite of the +way program conformance is determined. + + The difference in the way conformance is defined for +programs and processors radically affects the test methodology by +which we determine whether the standard is met. The relevant +point is that there currently is no way to be certain that an +implementation does conform to the standard, although we can +sometimes be certain that it does not. In short, there is no +algorithm, such as the recognizer that exists for programs, by +which we can answer definitively the question, "Is this a +standard processor?" + + Furthermore, the standard acts as a floor for processors, +rather than a ceiling. That is, an implementation must accept +and process at least all standard programs, but may also +implement enhancements to the language and thus accept +non-standard programs as well. Another difference between +program and processor conformance is that the description of +processor conformance allows for some implementation dependence +even in the treatment of standard programs. Thus for some +standard programs there is no unique semantic meaning, but rather +a set of meanings, usually similar, among which implementations +can choose. + + Page 11 + + +3 DETERMINING IMPLEMENTATION CONFORMANCE + +3.1 Test Programs As Test Data, Not Algorithms + + The test programs do not embody some definitive algorithm by +which the question of processor conformance can be answered yes +or no. There is an important sense in which it is only +accidental that they are programs at all; indeed, some of them, +syntactically, are not. Rather their primary function is as test +data. It is readily apparent, for instance, that the majority of +BASIC test programs are algorithmically trivial; some consist +only of a series of PRINT statements. Viewed as test data, +however, i.e., a series of inputs to a system whose behavior we +wish to probe, the underlying motivation for their structure +becomes intelligible. Simply put, it is the goal of the tests to +exercise at least one representative of every meaningfully +distinct type of syntactic structure or semantic behavior +provided for in the language standard. This strategy is +characteristic of testing in general: all one can do is submit a +representative subset of the typically infinite number of +possible inputs to the system under investigation (the +implementation) and see whether the results are in accord with +the specifications for that system (the language standard). + + Thus, successful results of the tests are necessary, but not +sufficient to show that the specifications are met. A failed +test shows that a language implementation is not standard. A +passed test shows that it may be. A long series of passed tests +which seem to cover all the various aspects of the language gives +us a large measure of confidence that the implementation conforms +to the standard. + + It can scarcely be stressed too strongly that the test +programs do not represent some self-sufficient algorithm which +will automatically deliver correct results to a passive observer. +Rather they are best seen as one component in a larger system +comprising not only the programs, but the documentation of the +programs, the documentation of the processor under test, and, not +least, a reasonably well-informed user who must actively +interpret the results of the tests in the context of some broad +background knowledge about the programs, the processor, and the +language standard. If, for example, a processor rejects a +standard program, it certainly fails to conform to the standard; +yet this is a type of behavior which can hardly be detected by +the program itself: only a human observer who knows that the +processor must accept standard programs, and that this program is +standard, is capable of the proper judgment that this processor +therefore violates the language standard. + + Page 12 + + +3.2 Special Issues Raised By The Standard Requirements + +3.2.1 Implementation-defined Features + + At several points in the standard, processors are given a +choice about how to implement certain features. These subjects +of choice are listed in Appendix C of the standard. In order to +conform, implementations must be accompanied by documentation +describing their treatment of these features (see section +1.4.2(7) of the standard). Many of these choices, especially +those concerning numeric precision, string and numeric overflow, +and uninitialized variables, can have a marked effect on the +result of executing even standard programs. A given program, for +instance, might execute without exceptions on one standard +impleientation, and cause overflow on another, with a notably +different numeric result. The programs that test features in +these areas call for especially careful interpretation by the +user. + + Another class of implementation-defined features is that +associated with language enhancements. If an implementation +executes non-standard programs, it also must document the meaning +it assigns to the non-standard constructions within them. For +instance, if an implementation allows comparison of strings with +a less-than operator, it must document its interpretation of this +comparison. + + + +3.2.2 Error And Exception Reporting + + The standard for BASIC, in view of its intended user base of +beginning and casual programmers, attempts to specify what a +conforming processor must do when confronted with non-standard +circumstances. There are two ways in which this can happen: 1) +a program submitted to the processor might not conform to the +standard syntactic rules, or 2) the executing program might +attempt some operation for which there is no reasonable semantic +interpretation, e.g., division by zero, assignment to a +subscripted variable outside of the array. In the BASIC +standard, the first case is called an error, and the second an +exception, and in order to conform, a processor must take certain +actions upon encountering either sort of anomaly. + + Given a program with a syntactically non-standard +construction the processor must either reject the program with a +message to the user noting the reason for rejection, or, if it +accepts the program, it must be accompanied by documentation +which describes the interpretation of the construction. + + If a condition defined as an exception arises in the course +of execution, the processor is obliged, first to report the +exception, and then to do one of two things, depending on the +type of exception: either it must apply a so-called recovery +procedure and continue execution, or it must terminate execution. + + Page 13 + + + Note that it is the user, not the program, who must +determine whether there has been an adequate error or exception +report, or whether appropriate documentation exists. The +pseudo-code in Figure 1 describes how conforming implementations +must treat errors. It may be thought of as an algorithm which +the user (not the programs) must execute in order to interpret +correctly the effect of submitting a test program to an +implementation. + + The procedure for error handling in Figure 1 speaks of a +processor accepting or rejecting •-program. The glossary (sec. +19) of the standard defines accept as "to acknowledge as being +valid". A processor, then, is said to reject a program if it in +some way signifies to the user that an invalid construction (and +not just an exception) has been found, whenever it encounters the +presumably non-standard construction, or if the processor simply +fails to execute the program at all. A processor implicitly +accepts a program if the processor encounters all constructions +within the program with no indication to the user that the +program contains constructions ruled out by the standard or the +implementation's documentation. + + In like manner, we can construct pseudo-code operating +instructions to the user, which describe how to determine whether +an exception has been handled in conformance with the standard +and this is shown also in Figure 1. + + As a point of clarification, it should be understood that +these categories of error and exception apply to all +implementations, both compilers and interpreters, even though +they are more easily understood in terms of a compiler, which +first does all the syntax checking and then all the execution, +than of an interpreter. There is no requirement, for instance, +that error reports precede exception reports. It is the content, +rather than the timing, of the message that the standard implies. +Messages to reject errors should stress the fact of ill-formed +source code. Exception reports should note the conditions, such +as data values or flow of control, that are abnormal, without +implying that the source code per se is invalid. + + Page 14 + + + Error Handling + +if program is standard + if program accepted by processor + if correct results and behavior + processor PASSES + else + processor FAILS (incorrect interpretation) + endif + else + processor FAILS (rejects standard program) + endif +else (program non-standard) + if program accepted by processor + if non-standard feature correctly documented + processor PASSES + else + processor FAILS (incorrect/missing documentation + for non-standard feature)* + endif + else (non-standard program rejected) + if appropriate error message + processor PASSES + else + processor FAILS (did not report reason for rejection) + endif + endif +endif + +* note that all implementation-defined features must be +documented (See Appendix C in the ANSI Standard) not just +non-standard features. + + + Exception Handling + +if processor reports exception + if procedure is specified for exception + and host system capable of procedure + if processor follows specified procedure + processor PASSES + else + processor FAILS (recovery procedure not followed) + endif + else (no procedure specified or unable to handle) + if processor terminates program + processor PASSES + else + processor FAILS (non-termination on fatal exception) + endif + endif +else + processor FAILS (fail to report exception) +endif + + Figure 1 + + Page 15 + + +4 STRUCTURE OF THE TEST SYSTEM + + The design of the test programs is an attempt to harmonize +several disparate goals: 1) exercise all the individual parts of +the standard, 2) test combinations of features where it seems +likely that the interaction of these features is vulnerable to +incorrect implementation, 3) minimize the number of tests, 4) +make the tests easy to use and their results easy to interpret, +and 5) give the user helpful information about the implementation +even, if possible, in the case of failure of a test. The rest of +this section describes the strategy we ultimately adopted, and +its relationship to conformance and to interpretation by the user +of the programs. + + + +4.1 Testing Features Before Using Them + + Perhaps the most difficult problem of design is to find some +organizing principle which suggests a natural sequence to the +programs. In many ways, the most natural and simple approach is +simply to test the language features in the order they appear in +the standard itself. The major problem with this strategy is +that the tests must then use untested features in order to +exercise the features of immediate interest. This raises the +possibility that the feature ostensibly being tested might +wrongly pass the test because of a flaw in the implementation of +the feature whose validity is implicitly being assumed. +Furthermore, when a test does report a failure, it is not clear +whether the true cause of the failure was the feature under test +or one of the untested features being used. + + These considerations seemed compelling enough that we +decided to order the tests according to the principle of testing +features before using them. This approach is not without its own +problems, however. First and most importantly, it destroys any +simple correspondence between the tests and sections of the +standard. The testing of a given section may well be scattered +throughout the entire test sequence and it is not a trivial task +to identify just those tests whose results pertain to the section +of interest. To ameliorate this problem, we have been careful to +note at the beginning of each test just which sections of the +standard it applies to, and have compiled a cross-reference +listing (see section 6.3), so that you may quickly find the tests +relevant to a particular section. A second problem is that +occasionally the programming of a test becomes artificially +awkward because the language feature appropriate for a certain +task hasn't been tested yet. While the programs generally abide +by the test-before-use rule, there are some cases in which the +price in programming efficiency and convenience is simply too +high and therefore a few of the programs do employ untested +features. When this happens, however, the program always +generates a message telling you which untested feature it is +depending on. Furthermore, we were careful to use the untested + + Page 16 + + +feature in a simple way unlikely to interact with the feature +under test so as to mask errors in its own implementation. + + + +4.2 Hierarchical Organization Of The Tests + + Within the constraints imposed by the test-before-use rule, +we tried to group together functionally related tests. This +grouping should also help you interpret the tests better since +you can usually concentrate on one part of the standard at a +time, even if the parts themselves are not in order. Section 6.1 +of this manual contains a summary of the hierarchical group +structure. It relates a functional subject to a sequential range +of tests and also to the corresponding sections of the standard. +We strongly recommend that you read the relevant sections of the +standard carefully before running the tests in a particular +group. The documentation contained herein explains the rationale +for the tests in each group, but it is not a substitute for a +detailed understanding of the standard itself. + + Many of the individual test programs are themselves further +broken down into so-called sections. Thus the overall +hierarchical subdivision scheme is given by, from largest to +smallest: system, groups, sub-groups, programs, sections. +Program sections are further discussed below under: 4.4.3 +Documentation. + + + +4.3 Environment Assumptions + + The test programs are oriented towards executing in an +interactive environment, but generally can be run in batch mode +as well. Some of the programs do require input, however, and +these present more of a problem, since the input needed often +depends on the immediately preceding output of the program. See +the sample output in Volume 2 for help in setting up data files +if you plan to run all the programs non-interactively. The +programs which use the INPUT statement are 73, 81, 84, 107-113, +and 203. + + We have tried to keep the storage required for execution +within reasonable bounds. Array sizes are as small as possible, +consistent with adequate testing. No program exceeds 300 lines +in length. The programs print many informative messages which +may be changed without affecting the outcome of the tests. If +your implementation cannot handle a program because of its size, +you should set up a temporary copy of the program with the +informative messages cut down to a minimum and use that version. +Be careful not to omit printing which is a substantive part of +the test itself. + + Page 17 + + + The tests assume that the implementation-defined margin for +output lines is at least 72 characters long and contains at least +5 print zones. This should not be confused with the length of a +line in the source code itself. The standard requires +implementations to accept source lines up to 72 characters long. +If the margin is smaller than 72, the tests should still run +(according to the standard), but the output will be aesthetically +less pleasing. + + Finally, the standard does not specify how the tests are to +be submitted to the processor for execution. Therefore, the +machine-readable part of the test system consists only of source +code, i.e., there are no system control commands. It is your +responsibility to submit the programs to the implementation in a +natural way which does not violate the integrity of the tests. + + + +4.4 Operating And Interpreting The Tests + + This section will attempt to guide you through the practical +aspects of using the test programs as a tool to measure +implementation conformance. The more general issues of +conformance are covered in section 3, and of course in the +standard itself, especially sections 1 and 2 of the ANSI +document. + + + +4.4.1 User Checking Vs. Self Checking + + All of the test programs require interpretation of their +behavior by the user. As mentioned earlier, the user is an +active component in the test system; the source code of the test +programs is another component, subordinate to the test user. An +important goal in the design of the programs was the minimization +of the need for sophisticated interpretation of the test results; +but minimization is not elimination. In the best case, the +program will print out a conspicuous message indicating that the +test passed or failed, and you need only interpret this message +correctly. In other cases, you have to examine rather carefully +the results and behavior of the program, and must apply the rules +of the standard yourself. This interpretation is necessary in: + +1. Programs which test that PRINTed output is produced in a + certain format + +2. Programs which test that termination occurs at the correct + time (this arises in many of the exception tests) + +3. Programs for which conformance depends on the existence of + adequate documentation of implementation-defined features + (both those defined in Appendix C of the standard and for any + of the error tests that are accepted). + + Page 18 + + + The test programs are an only partially automated solution +to the problem of determining processor conformance. Naive +reliance on the test programs alone can very well lead to an +incorrect judgment about whether an implementation meets the +standard. + + + +4.4.2 Types Of Tests + + There are four types of test programs: 1) standard, 2) +exception, 3) error, and 4) informative. Within each of the +functional groups (described above, section 4.2) the tests occur +in that order, although not all groups have all four types. The +rules that pertain to each type follow. It is quite important +that you be aware of which type of test you are running and use +the rules which apply to that type. + + + +4.4.2.1 Standard Tests + + These tests are the ones whose title does not begin with +"EXCEPTION" or "ERROR" and which generate a message about passing +or failing at the end of each section. The paragraph below on +documentation describes the concept of sections of a test. Since +these programs are syntactically standard and raise no exception +conditions, they must be accepted and executed to completion by +the implementation. If the implementation fails to do this, it +has failed the test. For example, if the implementation fails to +recognize the key word OPTION, or if it does not accept one of +the numeric constants, then the test has failed. Quite +obviously, it is you who must apply this rule, since the program +itself won't execute at all. + + Assuming that the implementation does process the program, +the next question is whether it has done so correctly. The +program may be able to determine this itself, or you may have to +do some active interpretation of the results. See the section +below on documentation for more detail. + + + +4.4.2.2 Exception Tests + + These tests have titles that begin with the word "EXCEPTION" +and examine the behavior of the implementation when exception +conditions occur during execution. Nonetheless, these programs +are also standard conforming (i.e., syntactically valid) and thus +the implementation must accept and process them. + + There are two special considerations. The first is the +distinction between so-called fatal and non-fatal exceptions. +Some exceptions in the standard specify a recovery procedure +which allows continued execution of the program, while others + + Page 19 + + +(the fatal exceptions) do not. If no recovery procedure is +specified, the implementation must report the exception and then +terminate the program. Programs testing fatal exceptions will +print out a message that they are about to attempt the +instruction causing the exception. If execution proceeds beyond +that point, the test fails and prints a message so stating. With +the non-fatal exceptions, the test program attempts to discover +whether the recovery procedure has been applied or not and in +this instance, the test is much like the standard tests, where +the question is whether the implementation has followed the +semantic rules correctly. For instance, the semantic meaning of +division by zero is to report the exception, supply machine +infinity, and continue. The standard, however, allows +implementations to terminate execution after even a non-fatal +exception "if restrictions imposed by the hardware or operating +environment make it impossible to follow the given procedures." +Because it would be redundant to keep noting this allowance, the +test programs do not print such a message for each non-fatal +exception. Therefore, when running a test for a non-fatal +exception, note that the implementation may, under the stated +circumstances, terminate the program, rather than apply the +recovery procedure. + + The second special consideration is that in the case of +INPUT and numeric and string overflow, the precise conditions for +the exception can be implementation-defined. It is possible, +therefore, that a standard program, executing on two different +standard-conforming processors, using the same data, could cause +an exception in one implementation and not in the other. The +tests attempt to force the exception to occur, but it could +happen, especially in the case of string overflow, that a +syntactically standard program cannot force such an exception in +a given processor. The documentation accompanying the +implementation under test must describe correctly those +implementation-defined features upon which the occurrence of +exceptions depends. That is, it must be possible to find out +from the documentation whether and when overflow and INPUT +exceptions will occur in the test programs. + + There is a summary of the requirements for exception +handling in the form of pseudo-code in section 3.2.2 (Figure 1). + + + +4.4.2.3 Error Tests + + These tests have titles that begin with the word "ERROR" and +examine how a processor handles a non-standard program. Each of +these programs contains a syntactic construction explicitly ruled +out by the standard, either in the various syntax sections, or in +the semantics sections. Given a program with a syntactically +non-standard construction the processor must either reject the +program with a message to the user noting the reason for +rejection, or, if it accepts the program, it must be accompanied +by documentation which describes the interpretation of the + + Page 20 + + +construction. Testing this requirement involves the submission +of deliberately illegal programs to the processor to see if it +will produce an appropriate message, or if it contains an +enhancement of the language such as to assign a semantic meaning +to the error. Thus we are faced with an interesting selection +problem: out of the infinity of non—standard programs, which are +worth submitting to the processor? Three criteria seem +reasonable to apply: + +1. Test errors which we might expect would be most difficult for + a processor to detect, e.g., violations of context—sensitive + constraints. These are the ones ruled out by the semantics + rather than syntax sections of the standard. + +2. Test errors likely to be made by beginners, for example use + of a two character array name. + +3. Test errors for which there may very well exist a language + enhancement, e.g., comparing strings with "<" and ">". + + + Based on these criteria, the test system contains programs +for the errors in the two lists which follow. The first list is +for constructions ruled out by the semantics sections alone +(these usually are instances of context—sensitive syntax +constraints) and the second for plausible syntax errors ruled out +by the BNF productions. + + Context—sensitive errors: + + 1. line number out of strictly ascending order + +2. line number of zero + +3. line—length > 72 characters + + 4, use of an undefined user function + +5. use of a function before its definition + + 6. recursive function definition + + 7. duplicate function definition + + 8. number of arguments in function invocation <> number of + parameters in function definition + + 9. reference to numeric—supplied—function with incorrect number + of arguments + +10. no spaces around keywords + +11. spaces within keywords and other elements or before line + number + + Page 21 + + +12. non-existent line number for GOTO, GOSUB, IF...THEN, + ON...GOTO + +13. mismatch of control variables in FOR-blocks (e.g., + interleaving) + +14. nested FOR-blocks with same variable + +15. jump into FOR-block + +16. conflict on number of dimensions among references: A, A(1), + A(1,1) + +17. conflict on number of dimensions between DIM and reference, + e.g., DIM A(20) and either A or A(2,2) + +18. reference to subscripted variable followed by DIMensioning + thereof + +19. multiple OPTION statements + +20. OPTION follows reference to subscripted variable + +21. OPTION follows DIM + +22. OPTION BASE 1 followed by DIM A(0) + +23. DIM of same variable twice + + + Context-free errors: + + 1. use of long name for array, e.g A1(1) + + 2. assignment of string to number and number to string + + 3. assignment without the keyword LET + + 4. comparison of two strings for < or > + + 5. comparison of a string with a number + + 6. unmatched parenthesis in expression + + 7. FOR without matching NEXT and vice-versa + + 8. multiple parameters in parameter list + + 9. line without line-number + +10. line number longer than four digits + +11. quoted strings containing the quote character or lowercase + letters + + Page 22 + + +12. unquoted strings containing quoted-string-characters + +13. type mismatch on function reference (using string as an + argument) + +14. DEF with string variable for parameter + +15. DEF with multiple parameters + +16. misplaced or missing END-statement + +17. null entries in various lists (INPUT, DATA, READ, e.g.) + +18. use of """ as involution operator + +19. adjacent operators, such as 2 ^ -4 + + + When developing programs to test for possible enhancements, + we also tried to assist the user in confirming what the actual + processor behavior is, so that it may be checked against the + documentation. For example, the program that tests whether the + implementation accepts "<" and ">" for comparison of strings also + displays the implicit character collating sequence if the + comparisons are accepted. When the implementation accepts an + error program be sure to check that the documentation does in + fact describe the actual interpretation of the error as exhibited + by the test program. If the error program is rejected, the + processor's error message should be a reasonably accurate + description of the erroneous construction. + + There is a summary of the requirements for error handling in + the form of pseudo-code in section 3.2.2 (Figure 1). + + + + 4.4.2.4 Informative Tests + + Informative tests are very much like standard tests. The + implementation must accept and process them, since they are + syntactically standard. The difference is that the standard only + recommends, rather than requires, certain aspects of their + behavior. The pass/fail message (described below) and other + program output indicates when a test is informative and not + mandatory. All the informative tests have to do with the quality + (as opposed to the existence) of various mathematical facilities. + Specifically, the accuracy of the numeric operations and + approximated functions and the randomness of the RND function are + the subjects of informative tests. Some of the standard tests + also have individual sections which are informative, and again + the pass/fail message is the key to which sections are + informative and which mandatory. If numeric accuracy is + important for your purposes, either as an implementor or a user, + you should analyze closely the results of the informative tests. + + Page 23 + + +4.4.3 Documentation + + There are three kinds of documentation in the test system, +serving three complementary purposes: + +1. The user's manual (this document). The purpose of this + manual is to provide a global description of the test system + and how it relates to the standard and to conformance. At a + more detailed level, there is also a description of each + functional group of programs and the particular things you + should watch for when running that group. + +2. Program output. As far as possible, the programs attempt to + explain themselves and how they must be interpreted to + determine conformance. Nonetheless, they make sense only in + the context of some background knowledge of the BASIC + standard and conformance (more detail below on output + format). + +3. Remarks in the source code. Using the REM statement, the + programs attempt to clarify their own internal logic, should + you care to examine it. Many of the programs are + algorithmically trivial enough that remarks are superfluous, + but otherwise remarks are there to guide your understanding + of how the programs are intended to work. + + + There is a format for program output consistent throughout +the test sequence. The program first prints its identifying. +sequence number and title. The next line lists the sections of +the ANSI standard to which this test applies. After this program +header, there is general information, if any, pertaining to the +whole program. Following all this program-level output there is +a series of one or more sections, numbered sequentially within +the program number. Each section tests one aspect of the general +feature being exercised by the program. Every section header +displays the section number and title and any information +pertinent to that section. Then the message, "BEGIN TEST." +appears, after which the program attempts execution of the +feature under test. At this point, the test may print +information to help the user understand how execution is +proceeding. + + Then comes the important part: a message, surrounded by +asterisks, announcing "*" TEST PASSED ***" or "*** TEST FAILED +***II . If the test cannot diagnose its own behavior, it will +print a conditional pass/fail message, prefacing the standard +message with a description of what must or must not have happened +for the test to pass. Be careful to understand and apply these +conditions correctly. It is a good idea to read the ANSI +standard with special attention in conjunction with this sort of +test, so that you can better understand the point of the +particular section. + + Page 24 + + + There is no pass/fail message for the error tests, since +there is, of course, no standard semantics prescribed for a +non-standard construction. As mentioned above, error programs +usually generate messages to help you diagnose the behavior of +the processor when it does accept such a program. + + After the pass/fail message will come a line containing "END +TEST." which signals that the section is finished. If there is +another section, the section header will appear next. If not, +there will be a message announcing the end of the program. Note +that each section passes or fails independently; all sections, +not just the last, must print "*** TEST PASSED ***" for the. +program as a whole to pass. Figure 2 contains a schematic +outline of standard program output. + + Page 25 + + + Format of Test Program Output + + + +PROGRAM FILE nn: descriptive program title. + ANSI STANDARD xx.x, yy.y ... + +message if a feature is used before being tested, cf. section 4.1 +and general remarks about the purpose of the program + +SECTION nn.1: descriptive section title. + +interpretive message for error or exception tests +and general remarks about the purpose of this section. + + BEGIN TEST. + +function—specific messages and test results + +*** TEST PASSED (or FAILED) ***or +*** INFORMATIVE TEST PASSED (or FAILED) *** + or +conditional pass/fail message when +it cannot be determined internally. + or +message to assist analysis of processor +behavior for error program + + END TEST. + +SECTION nn.2: descriptive section title. + + + . +SECTION nn.m: descriptive section title. + + + . +END PROGRAM nn + + + + + + + + + + + + + + + Figure 2 + + Page 26 + + +5 FUNCTIONAL GROUPS OF TEST PROGRAMS + + This section contains information specific to each of the +groups and sub-groups of programs within the test sequence. +Groups are arranged hierarchically, as reflected in the numbering +system. The sub-section numbers within this section correspond +to the group numbering in the table of section 6.1, e.g., section +5.12.1.2 of the manual describes functional group 12.1.2. + + It is the purpose of this section to help you understand the +overall objectives and context of the tests by providing +information supplementary to that already in the tests. This +section will generally not simply repeat information contained in +the tests themselves, except for emphasis. Where the tests +require considerable user interpretation, this documentation will +give you the needed background information. Where the tests are +self-checking, this documentation will be correspondingly brief. +We suggest that you first read the comments in this section to +get the general idea of what the tests are trying to do, read the +relevant sections of the ANSI standard to learn the precise +rules, and finally run the programs themselves, comparing their +output to the sample output in Volume 2. The messages written by +the test programs are intended to tell you in detail just what +behavior is necessary to pass, but these messages are not the +vehicle for explaining how that criterion is derived from the +standard. Program output should be reasonably intelligible by +itself, but it is better understood in the broader context of the +standard and its conformance rules. + + + +5.1 Simple PRINTing Of String Constants + This group consists of one program which tests that the +implementation is capable of the most primitive type of PRINTing, +that of string constants and also the null PRINT. Note that it +is entirely up to you to determine whether the test passes or +fails by assuring that the program output is consistent with the +expected output. The program's own messages describe what is +expected. You may also refer to the sample output in Volume 2 to +see what the output should look like. + + + +5.2 END And STOP + + This group tests the means of bringing BASIC programs to +normal termination. These capabilities are tested early, since +all the programs use them. Both END and STOP cause execution to +stop when encountered, but STOP may appear anywhere in the +program any number of times. There must be exactly one END +statement in a program, and it must be the last line in the +source code. Thus, END serves both as a syntactic marker for the +end of the program, and is also executable. + + Page 27 + + + Since the program can't know when it has ended (although it +can know when it hasn't), you must assure that the programs +terminate at the right time. + + + +5.3 PRINTing And Simple Assignment (LET) + + This group of programs examines the ability of the +implementation to print strings and numbers correctly. Both +constants and variables are tested as print-items. The +variables, of course, have to be given a value before they are +printed, and this is done with the LET statement. + + PRINT is among the most semantically complex statements in +BASIC. Furthermore, the PRINT statement is the outstanding case +of a feature whose operation cannot be checked internally. The +consequence is that this group calls for the most sophisticated +user interpretation of any in the test sequence. Please read +carefully the specifications in the programs, section 12 of the +ANSI standard, and this documentation; the interpretation of +test results should then be reasonably clear. + + The emphasis in this group is on the correct representation +of numeric and string values. There is some testing that TAB, +comma, and semi-colon perform their functions, but a challenging +exercise of these features is deferred until group 14.6 because +of the other features needed to test them. + + + +5.3.1 String Variables And TAB + + The PRINTing of strings is fairly straightforward and should +be relatively easy to check, since there are no +implementation-defined features which affect the printing. The +only possible problem is the margin width. The program assumes a +margin of at least 60 characters with at least 4 print zones. If +your implementation supports only a shorter margin, you must make +due allowance for it. The standard does not prescribe a minimum +margin. + + The string overflow test requires careful interpretation. +Your implementation must have a defined maximum string length, +and the fatal exception should occur on the assignment +corresponding to that documented length. If the implementation +supports at least 58 characters in the string, overflow should +not occur. Be sure, if there is no overflow exception report, +that the processor has indeed not lost data. Do this by checking +that the output has not been truncated. A processor that loses +string data without reporting overflow definitely fails. + + Checking for a TAB exception is simple enough; just follow +the conditional pass/fail messages closely. Note that one +section of the test should not generate an exception since, even + + Page 28 + + +though the argument itself is less than one, its value becomes +one after rounding. + + + +5.3.2 Numeric Constants And Variables + + In the following discussion, the terms "significand", +"exrad", "explicit point", "implicit point", and "scaled" are +used in accordance with the meaning ascribed them in the ANSI +standard. + + The rules for printing numeric values are fairly elaborate, +and, moreover, are heavily implementation-dependent; accordingly +conscientious scrutiny is in order. There are two rules to keep +in mind. First, the expected output format depends on the value +of the print-item, not its source format. In particular, integer +values should print as integers as long as the significand-width +can accommodate them, fractional values should print in explicit +point unscaled format where no loss of accuracy results, and the +rest should print in explicit point scaled format. For example +"PRINT 2.1E2" should produce "210" because the item has an +integer value, even though it is written in source code in +explicit point scaled format. Second, leading zeros in the exrad +and trailing zeros in the significand may be omitted. Thus, for +an implementation with a significand-width of 8 and an +exrad-width of 3, the value 1,230,000,000 could print as +"1.2300000E+009" at one extreme or "1.23E+9" at the other. The +tests generally display the expected output in the latter form, +but it should be understood that extra zeros can be tacked on to +the actual output, up to the widths specified for the +implementation. + + The tests in general are oriented toward the minimum +requirements of six decimal digits of accuracy, a significand +length of six and an exrad-width of two. You must apply the +standard requirements in terms of your own implementation's +widths, however. + + + +5.4 Control Statements And REM + + This group checks that the simple control structures all +work when used in a simple way. Some of the same facilities are +checked more rigorously in later groups. As with PRINT, END and +STOP, these features must come early in the test sequence, since +a BASIC program cannot do much of consequence without them. If +any of these tests fail, the validity of much of the rest of the +test sequence is doubtful, since following tests rely heavily on +GOTO, GOSUB, and IF. Note especially that trailing blanks should +be significant in comparing strings, e.g. "ABC" <> "ABC ". +Subsequent tests which rely on this property of IF will give +false results if the implementation doesn't process the +comparison properly. + + Page 29 + + + The tests for GOTO and GOSUB exercise a variety of transfers +to make sure the processor handles control correctly. If +everything works, you should get intelligible, self-consistent +output. If the output looks scrambled, the test has failed. +There are no helpful diagnostics for failures since it is +impossible to anticipate exactly how a processor might +misinterpret transfers of control. Look carefully at the sample +output for the GOTO and GOSUB programs in Volume 2, to know what +to expect. + + The IF...THEN tests use a somewhat complex algorithm, so pay +attention to the REM statements if you are trying to understand +the logic. On the other hand, these tests are easy to use +because they are completely self-checking. You need only look +for the pass/fail messages to see if they worked. It is worth +noting that the IF...THEN test for numeric values depends on the +validity of the IF...THEN test for strings, which comes just +before. + + The error tests are understandable in light of the general +rules for interpretation of error programs given earlier. + + + +5.5 Variables + + The first of these programs simply checks that the set of +valid names is as guaranteed by the standard. In particular, A, +AO, and A$ are all distinct. There are no diagnostics for +failure, since we expect failures to be rare and it is simple +enough to isolate the misinterpretation by modifying the program, +if that proves necessary. A later test in group 8.1 tests that +the implementation fulfills the requirements for array names. + + Default initialization of variables is one of the most +important aspects of semantics left to implementation definition. +Implementations may treat this however they want to, but it must +be documented, and you should check that the documentation agrees +with the behavior of the program. Thus this is not merely an +informative test; the processor must have correct documentation +for its behavior in order to conform. + + + +5.6 Numeric Constants, Variables, And Operations + +5.6.1 Standard Capabilities + + This group of programs introduces the use of numeric +expressions, specifically those formed with the arithmetic +operations (+, -, II, /, A) provided in BASIC. The most +troublesome aspect of these tests is the explicit disavowal in +the standard of any criterion of accuracy for the result of the +operations. Thus it becomes somewhat difficult to say at what +point a processor fails to implement a given operation. We + + Page 30 + + +finally decided to require exact results only for integer +arithmetic, and, in the case of non-integral operands, to apply +an extremely loose criterion of accuracy such that if an +implementation failed to meet it, one could reasonably conclude +either that the precedence rules had been violated or that the +operation had not been implemented at all. + + Although the standard does not mandate accuracy for +expressions, it does require that individual numbers be accurate +to at least six significant decimal digits. This requirement is +tested by assuring that values which differ by 1 in the 6th digit +actually compare in the proper order, using the IF statement. +The rationale for the accuracy test is best explained with an +example: suppose we write the constant "333.333" somewhere in +the program. For six digits of accuracy to be maintained, it +must evaluate internally to some value between 333.3325 and +333.3335, since six digits of accuracy implies an error less than +5 in the 7th place. By the same reasoning, "333.334" must +evaluate between 333.3335 and 333.3345. Since the allowable +ranges do not overlap, the standard requires that 333.333 compare +as strictly less than 333.334. Of course this same reasoning +would apply to any two numbers which differed by 1 in the sixth +digit. + + The accuracy test not only assures that these minimal +requirements are met, but also attempts to measure how much +accuracy the implementation actually provides. It does this both +by comparing some numbers in the manner described above for 7, 8, +and 9 decimal digits, and also by using an algorithm to compute +any reasonable internal accuracy. Since such an algorithm is +highly sensitive to the peculiarities of the system's +implementation of arithmetic, this last test is informative only. + + + +5.6.2 Exceptions + + The standard specifies a variety of exceptions for numeric +expressions. All the mandatory non-fatal exceptions occur when +machine infinity is exceeded and they all call for the +implementation to supply machine infinity as the result and +continue execution. The tests ensure that machine infinity is at +least as great as the guaranteed minimum of 1E38, but since +machine infinity is implementation-defined, you must assure that +the value actually supplied is accurately documented. + + It is worth repeating here the general guidance that the +timing of exception reports is not specified by the standard. +The wording is intentionally imprecise to allow implementations +to anticipate exceptions, if they desire. Such anticipation may +well occur for overflow and underflow of numeric constants; that +is, an implementation may issue the exception report before +execution of the program begins. Note that the recovery +procedure, substitution of machine infinity for overflow, remains +in effect. + + Page 31 + + + Underflow, whether for expressions or constants, is only +recommended as an exception, but, in any case, zero must be +supplied when the magnitude of the result is below the minimum +representable by the implementation. Note that this is required +in the semantics sections (7.4 and 5.4) of the standard, not the +exception sections (7.5 and 5.5). + + + +5.6.3 Errors + + These programs try out the effect of various constructions +which represent either common programming errors (missing +parentheses) or common enhancements (1111 as the involution +operator) or a blend of the two (adjacent operators). No special +interpretation rules apply to these tests beyond those normally +associated with error programs. + + + +5.6.4 Accuracy Tests - Informative + + Although the standard mandates no particular accuracy for +expression evaluation, such accuracy is nonetheless an important +measure of the quality of language implementation, and is of +interest to a large proportion of language users. Accordingly, +these tests apply a criterion of accuracy for the arithmetic +operations which is suggested by the standard's requirement that +individual numeric values be represented accurate to six +significant decimal digits. Note, however, that these tests are +informative, not only because there is no strict accuracy +requirement, but also because there is no generally valid way for +a computer to measure precisely the accuracy of its own +operations. Such a measurement involves calculations which must +use the very facilities being measured. + + The criterion for passing or failing is based on the concept +that an implementation should be at least as accurate as a +reasonable hypothetical implementation which uses the least +accurate numeric representation allowed by the standard. It is +best explained by first considering accuracy for functions of a +single variable, and then generalizing to operations, which may +be thought of as functions of two variables. Given an internal +precision of at least d decimal digits, we simply require that +the computed value for f(x) (hereinafter denoted by "cf(x)") be +some value actually taken on by the function within the domain +(x-e,x+e), where + + e = 10 " (int (1og10 ( abs (x))) + 1 - d) + +For example, suppose we want to test the value returned by +sin(29.1234) and we specify that d=6. Then: + + e = 10 " (int (1og10 (29.1234)) + 1 - 6) + = 10 " (int (1.464) - 5) + = 1E-4 + + Page 32 + + + +and so we require that csin(x) equal some value taken on by +sin(x) in the interval [29.1233, 29.1235]. This then reduces to +the test that -.7507297957 <= csin(29.1234) <= -.7505976588. + + The motivation for the formula for e is as follows. +According to the rule for accuracy of numbers, the internal +representation of the argument must lie within [x - e/2, x + +e/2]. Now suppose that the internal representation is near an +endpoint of the legal interval, and that the granularity of the +machine (i.e., the difference between adjacent internal numeric +representations) in that region of the real number line is near e +(which would be the coarsest allowed, given accuracy of d +digits). Given this worst case, we would still want a value +returned for which the actual argument was closer to that +internal representation than to immediately adjacent +representations. This means that we allow for a variation of e/2 +when the argument is converted from source to internal form, and +another variation of e/2 around the internal representation +itself. The maximum allowable variation along the x-axis is then +simply the sum of the worst-case variations: e/2 + e/2 = e. +This is reasonable if we think of a given internal form as +representing not only a point on the real number line, but the +set of points for which there is no closer internal form. Then, +all we know is that the source argument is somewhere within that +set and all we require is that the computed value of the function +be true for some (probably different) argument within the set. +For accuracy d, the maximum width of the set is of course e. + + It should be noted that the first allowed variation of e/2 +is inherent in the process of decimal (source) to, e.g., binary +(internal) conversion. The case for allowing a variation of e/2 +around the internal representation itself is somewhat weaker. If +one insists on exact results within the internal numerical +manipulation, then the function would be allowed to vary only +within the domain [x - e/2, x + e/2], but we did not require this +in the tests. + + Note that the above scheme not only allows for the discrete +nature of the machine, but also for numeric instability in the +function itself. Mathematically, if the value of an argument is +known to six places, it does not follow that the value of the +function is known to six places; the error may be considerably +more or less. For example, a function is often very stable near +where its graph crosses the y-axis, but not the x-axis (e.g. COS +(1E-22)) and very unstable where it crosses the x-axis but not +the y-axis (e.g. SIN (21.99)). By allowing the cf(x) to take on +any value in the specified domain, we impose strict accuracy +where it can be achieved, and permit low accuracy where +appropriate. Thus, the pass/fail criterion is independent of +both the argument and function; it reflects only how well the +implementation computed, relative to a worst-case six-digit +machine. + + Page 33 + + + Finally, we must recognize that even if the value of a +function is computable to high accuracy (as with COS (1E-22)), +the graininess of the machine will again limit how accurately the +result itself can be represented. For this reason, there is an +additional allowance of e/2 around the result. This implies that +even if the result is computable to, say, 20 digits, we never +require more than 6 digits of accuracy. + + Now all the preceding comments generalize quite naturally to +functions of many variables. We can then be guided in our +treatment of the arithmetic operations by the above remarks on +functions, if we recall that the operations may be thought of as +functions of two variables, namely their operands. If we think +of, say, subtraction as such a function (i.e. subtract (x,y) = +x-y), then the same considerations of argument accuracy and +mathematical stability pertain. Thus, we allow both operands to +vary within their intervals, and simply require the result of the +operation to be within the extreme values so generated. Note +that such a technique would be necessary for any of the usual +functions which take two variables, such as some versions of +arctan. + + It should be stressed that the resulting accuracy tests +represent only a very minimal requirement. The design goal was +to permit even the grainiest machine allowed by the standard to +pass the tests; all conforming implementations, then, are +inherently capable of passing. Many users will wish to impose +more stringent criteria. For example, those interested in high +accuracy, or implementors whose machines carry more than six +digits, should examine closely the computed value and true value +to see if the accuracy is what they expect. + + + +5.7 FOR-NEXT + + The ANSI standard provides a loop capability, along with an +associated control-variable, through the use of the FOR +statement. The semantic requirements for this construction are +particularly well-defined. Specifically, the effect of the FOR +is described in terms of more primitive language features (IF, +GOTO, LET, and REM), which are themselves not very vulnerable to +misinterpretation. The tests accordingly are quite specific and +extensive in the behavior they require. The standard tests are +completely self-checking, since conformance depends only on the +value of the control-variable and number of times through the +loop. The general design plan was not only to determine passing +or failing, but also to display information allowing the user to +examine the progress of execution. This should help you diagnose +any problems. Note especially the requirement that the control +variable, upon exit from the loop, should have the first unused, +not the last used, value. + + Page 34 + + + The FOR statement has no associated exceptions, but it does +have a rich variety of errors, many of them context sensitive, +and therefore somewhat harder for an implementation to detect. +As always, if any error programs are accepted, the documentation +must specify what meaning the implementation assigns to them. + + + +5.8 Arrays + +5.8.1 Standard Capabilities + + The standard provides for storing numeric values in one- or +two-dimensional arrays. The tests for standard capabilities are +all self-checking and quite straightforward in exercising some +feature defined •n the standard. Note the requirement that +subscript values be rounded to integers; the program testing +this must not cause an exception or the processor fails. + + + +5.8.2 Exceptions + + The exception tests ensure that the subscript out of range +condition is handled properly. Note that it is here that the +real semantic meaning of OPTION and DIM are exercised; they have +little effect other than to cause or prevent the subscript +exception for certain subscript values. Since this is a fatal +exception, you must check (since the program cannot) that the +programs terminate at the right time, as indicated in their +messages. + + + +5.8.3 Errors + + As with the FOR statement, there are a considerable number +of syntactic restrictions. The thrust of these restrictions is +to assure that OPTION precedes DIM, that DIM precedes references +to the arrays that it governs, and that declared subscript bounds +are compatible. + + Three of the error programs call for INPUT from the user. +This is to help you diagnose the actual behavior of the +implementation if it accepts the programs. The first of these, +#73, lets you try to reference an array with a subscript of 0 or +1 when OPTION BASE 1 and DIM A(0) have been specified, to see +when an exception occurs. + + The second, #81, allows you to try a subscript of 0 or 1 for +an array whose DIM statement precedes the OPTION statement. + + The third program using INPUT, #84, is a bit more complex +and has to do with double dimensioning. If there are two DIM +statements for the same array, the implementation has a choice of + + Page 35 + + +several plausible interpretations. We have noted five such +possibilities and have attempted to distinguish which, if any, +seems to apply. Since the only semantic effect of DIM is to +cause or prevent an exception for a given array reference, +however, it is necessary to run the program three times to see +when exceptions occur and when they don't, assuming the processor +hasn't simply rejected the program outright. Your input-reply +simply tells the program which of the three executions it is +currently performing. For each execution, you must note whether +an exception occurred or not and then match the results against +the table in the program. Suppose, for instance, that you get an +exception the first time but not the second or third. That would +be incompatible with all five interpretations except number 4, +which is that the first DIM statement executed sets the size of +the array and it is never changed thereafter. As usual, check +the documentation to make sure it correctly describes what +happens. + + + +5.9 Control Statements + + This group fully exploits the properties of some of the +control facilities which were tested in a simpler way in group 4. +As before, there seemed no good way to provide diagnostics for +failure of standard tests, since the behavior of a failing +processor is impossible to predict. Passing implementations will +cause the "*** TEST PASSED ***" message to appear, but certain +kinds of failures might cause the programs to abort, without +producing a failure message. Check Volume 2 for an example of +correct output. + + + +5.9.1 GOSUB And RETURN + + Most of the tests in this group are self-explanatory, but +the one checking address stacking deserves some comment. The +standard describes the effect of issuing GOSUBs and RETURNS in +terms of a stack of return addresses, for which the GOSUB adds a +new address to the top, and the RETURN uses the most recently +added address. Thus, we get a kind of primitive recursion in the +control structure (although without any stacking of data). Note +that this description allows complete freedom in the placement of +GOSUBs and RETURNs in the source code. There is no static +association of any RETURN with any GOSUB. The test which +verifies this specification computes binomial coefficients, using +the usual recursive formula. The logic of the program is a bit +convoluted, but intentionally so, in order to exercise the +stacking mechanism vigorously. + + Page 36 + + +5.9.2 ON-GOTO + + The ON-GOTO tests are all readily understandable. The one +thing you might want to watch for is that the processor rounds +the expression controlling the ON-GOTO to the nearest integer, as +specified in the standard. Thus, "ON .6 GOTO", "ON 1 GOTO", and +"ON 1.4 GOTO" should all have the same effect; there should be +no out of range exception for values between .5 and 1. + + + +5.10 READ, DATA, And RESTORE + + This group tests the facilities for establishing a stream of +data in the program and accessing it sequentially. This feature +has some subtle requirements, and it would be wise to read the +standard especially carefully so that you understand the purpose +of the tests. + + + +5.10.1 Standard Capabilities + + All but the last of these tests are reasonably simple. The +last test dealing with the general properties of READ and DATA, +although self-checking, has somewhat complex internal logic. It +assures that the range of operands of READ and DATA can overlap +freely and that a given datum can be read as numeric at one time +and as a string at a later time. If you need to examine the +internal logic closely, be sure to use the REM statements at the +beginning which break down the structure of the READ and DATA +lists for you. + + + +5.10.2 Exceptions + + The exceptions can be understood directly from the programs. +Note that string overflow may or may not occur, depending on the +implementation-defined maximum string length. If overflow (loss +of data) does occur, the processor must report an exception and +execution must terminate. If there is no exception report, look +carefully at the output to assure that no loss of data has +occurred. + + + +5.10.3 Errors + + All of the error tests display results if the implementation +accepts them, allowing you to check that the documentation +matches the actual behavior of the processor. Some of the +illegal constructs are likely candidates for enhancements and +thus the diagnostic feature is important here. + + • Page 37 + + +5.11 INPUT + + This group, like that for PRINT, calls for a good deal of +user participation. This participation takes the form, not only +of interpreting program output but also of supplying appropriate +INPUT replies. The validity of this group depends strongly on +the entry of correct replies. + + + +5.11.1 Standard Capabilities + + The first program assures that the processor can accept as +input any syntactically valid number. It is absolutely +essential, then, that you reply to each message with precisely +the same set of characters that it asks for. If it tells you to +enter "1.E22" you must not reply with, e.g. "1E22". This would +defeat one of the purposes of that reply, which is to see whether +the processor correctly handles a decimal point immediately +before the exponent. Once you have correctly entered the reply, +one of several things can happen. If the processor in some way +rejects the reply, for instance by producing a message that it is +not a valid number, then the processor has failed the test since +all the replies are in fact valid according to the standard. To +get by this problem, simply enter any number not numerically +equal to the one originally requested. This will let you get on +to the other items, and will signal a failure to the processor as +described below. + + If the processor accepts the reply, the program then tests +that six digits of accuracy have been preserved. If so, you will +get a message that the test is OK, and may go on to the next +reply. If not, you will get a message indicating that the +correct value was not received, and the program will ask if you +want to retry that item. If you simply mistyped the original +input-reply, you should enter the code for a retry. If your +original reply was correct, but the processor misinterpreted the +numeric value, there is no point to retrying; just go ahead to +the next item. The program will count up all the failures and +report the total at the end of the program. + + The next program, for array input, assures that you can +enter numbers into an array, and that assignments are done left +to right, so that a statement such as "INPUT I, A(I)" allows you +to control which element of the array gets the value. Also, it +is here (and only here) that the standard's requirement for +checking the input-reply before assignment is tested. Your first +reply to this section of the test must cause an exception, and +you must be allowed to re-enter the entire reply, otherwise the +test fails. The rest of the program is self-checking. + + The program for string input comes next and, as with the +numeric input program two considerations are paramount: 1) you +should enter your replies exactly as indicated in the message and +2) all input replies are syntactically valid and therefore if the + + Page 38 + + +implementation rejects any of them, it fails the test. A +potentially troublesome aspect of this program is that the +prompting message cannot always look exactly like your reply. In +particular, your replies will sometimes include blanks and +quotes. It is impossible to PRINT the quote character in Minimal +BASIC, so the number-sign (1) is used instead. For ease of +counting characters, an equals (=) is used in the message to +represent blanks. Therefore, when you see the number-sign, type +the quote and when you see the equals, type the blank. If you +forget, the item will fail and you will have a chance to retry, +so make sure that a reported failure really is a processor +failure and not just your own mistyping before bypassing the +retry. As with the numeric input, if the processor rejects one +of the replies, simply enter any reply whose evaluation is not +equal to that of the prompting message to bypass the item and +force a failure. The second section of the string input program +does not use the substitute characters in the message; rather +you always type exactly what you see in the message surrounded by +quotes. + + The program for mixed input follows the conventions +individually established by the numeric and string input +programs. Its purpose is simply to assure that the +implementation can handle both string and numeric data in the +same reply. + + + +5.11.2 Exceptions + + Unlike the other groups, where each exception type is tested +with its own program, all the mandatory exceptions for INPUT are +gathered into one routine. There are two reasons for this: +first, there are so many variations worth trying that a separate +program for each would be impractical, and second, the recovery +procedures are the same for all input exception types. It is, +then, both economical and convenient to group together all the +various possibilities into one program. Underflow on INPUT is an +optional exception and has a different recovery procedure, +governed by the semantics for numeric constants rather than +INPUT. It, therefore, is tested in its own separate program. + + The conformance requirements for input exceptions are +perhaps the most complex of any in the standard. It is +worthwhile to review these requirements in some detail, and then +relate them to the test. The standard says that +"unquoted-strings that are numeric-constants must be supplied as +input for numeric-variables, and either quoted-strings or +unquoted-strings must be supplied as input for string-variables." +Since the syntactic entities mentioned are well-defined in the +standard, this specification seems clear enough. Recall, +however, that processors can, in general, enlarge the class of +syntactic objects which they accept. In particular, a processor +may have an enhanced definition of quoted-string, +unquoted-string, numeric-constant, or, more generally, + + Page 39 + + +input-reply, and therefore accept a reply not strictly allowed by +the standard, just as standard implementations may accept, and +render meaningful, non-standard programs. The result is that the +conditions for an input exception may depend' on +implementation-defined features, and thus a given input-reply may +cause an exception for one processor and yet not another. Note +that the same situation prevails for overflow - the exception +depends on the implementation-defined maximum string length and +machine infinity. Thus, "LET A = 1E37 * 100" may cause overflow +on one standard processor, but not another. + + When running the program then, a given input-reply need not +generate an exception if there is a documented enhancement which +describes its interpretation. Of course, such an enhancement +must not change the meaning of any input-reply which is +syntactically standard. Note that, of the replies called for in +the program, some are syntactically standard and some are not; +they should, however, all cause exceptions on a truly minimal +BASIC processor, i.e. one with no syntactic enhancements, with +machine infinity = 1E38 and with maximum string length of 18. + + Another problem is that, for some replies, it is not clear +which exception type applies. If, for instance, you respond to +"INPUT A,B,C" with: "2„3", it may be taken as a wrong type, +since a numeric-constant was not supplied for B, or as +insufficient data, since only two, not three, were supplied. In +such a case, as with all exception reports, it is sufficient if +the report is a reasonably accurate description of what went +wrong, regardless of precisely how the report corresponds to the +types defined in the standard. + + As with all non-fatal exceptions, it is permitted for an +implementation to treat a given INPUT exception as fatal, if the +hardware or operating environment makes the recovery procedure +impossible to follow. The program is set up with table-driven +logic, so that each exception is triggered by a set of values in +a given DATA statement. If you need to separate out some of the +cases because they cause the program to terminate, simply delete +the DATA statements for those cases. REM statements in the +program describe the format of the data. + + After that lengthy preliminary discussion, we are now ready +to consider how to operate and interpret the test. The program +will ask you for a reply, and also show you the INPUT statement +to which it is directed, to help you understand why the exception +should occur. Enter the exception-provoking reply, exactly as +requested by the message. If all goes well, the implementation +will give you an exception report and allow you to re-supply the +entire input-reply. On this second try, simply enter all zeros, +exactly as many as needed by the complete original INPUT +statement, to bypass that case - this will signal the program +that that case has passed, and you will then receive the next +message. + + Page 40 + + + Now, let us look at what might go wrong. If the +implementation simply accepts the initial input-reply, the +program will display the resulting values assigned to the +variables and signal a possible failure. If the documentation +for the processor describes an enhancement which agrees with the +actual result, then that case passes; otherwise it is a failure. + + Suppose the implementation reports an exception, but does +not allow you to re-supply the entire input-reply. At that +point, just do whatever the processor requires to bypass that +case. You should supply non-zero input to signal the program +that the case in question has failed. + + When the program detects an apparent failure (non-zeros in +the variables) it allows you to retry the whole case. As before, +if you mistyped you should reply that you wish to retry; if the +processor simply mishandled the exception, reject the retry and +move on to the next case. + + Figure 3 outlines the user's operating and interpretation +procedure for the INPUT exception test. + + + +5.11.3 Errors + + There is only one error program and it tests the effect of a +null entry in the input-list. The usual rules for error tests +apply (see section 4.4.2.3). + + Page 41 + + + Instructions for the INPUT exceptions test + + +Inspect message from program +Supply exact copy of message as input-reply +If processor reports exception +then + if processor allows you to re-supply entire reply + then + enter all zeros (exactly enough to satisfy original + INPUT request) + if processor responds that test passed + then + test passed + else (no pass message after entering zeros) + zeros not assigned to variables + test failed (recovery procedure not followed) + endif + else (not allowed to re-supply entire reply) + supply any non-zero reply to bypass this case + test failed (recovery procedure not followed) + endif +else (no exception report) + if documentation for processor correctly describes syntactic + enhancement to accept the reply + then + test passed + else (no exception and incorrect/missing documentation) + test failed + endif +endif + + + + + + + + + + + + + + + + + + + + + + + + Figure 3 + + Page 42 + + +5.12 Implementation-supplied Functions + + All conforming implementations must make available to the +programmer the set of functions defined in section 8 of the ANSI +standard. The purpose of this group is to assure that these +functions have actually been implemented and also to measure at +least roughly the quality of implementation. + + + +5.12.1 Precise Functions: ABS,INT,SGN + + These three functions are distinguished among the eleven +supplied functions in that any reasonable implementation should +return a precise value for them. Therefore they can be tested in +a more stringent manner than the other eight which are inherently +approximate (i.e. a discrete machine cannot possibly supply an +exact answer for most arguments). + + The structure of the tests is simple: the function under +test is invoked with a variety of argument values and the +returned value is compared to the correct result. If all results +are equal, the test passes, otherwise it fails. The values are +displayed for your inspection and the tests are self-checking. +The test for the INT function has a second section which does an +informative test on the values returned for large arguments +requiring more than six digits of accuracy. + + + +5.12.2 Approximated Functions: SQR,ATN,COS,EXP,LOG,SIN,TAN + + These functions do not typically return rational values for +rational arguments and thus may only be approximated by digital +computers. Furthermore, the standard explicitly disavows any +criterion of accuracy, making it difficult to say when an +implementation has definitely failed a test. Because of these +constraints, the non-exception tests in this group are +informative only. We can, however, quite easily apply the ideas +developed earlier in section 5.6.4. As explained there, we can +devise an accuracy criterion for the implementation of a +function, based on a hypothetical six decimal digit machine. If +a function returns a value less accurate even than that of which +this worst-case machine is capable, the informative test fails. + + To repeat the earlier guidance for the numeric operations: +this approach imposes only a very minimal requirement. You may +well want to set a stricter standard for the implementation under +test. For this reason, the programs in this group also compute +and report an error measure, which gives an estimate of the +degree of accuracy achieved, again relative to a six-digit +machine. The error measure thus goes beyond a simple pass/fail +report and quantifies how well or poorly the function value was +computed. Of course, the error measure itself is subject to +inaccuracy in its own internal computation, and no one + + Page 43 + + +measurement should be taken as precisely correct. Nonetheless, +when the error measures of all the cases are considered in the +aggregate, it should give a good overall picture of the quality +of function evaluation. Since it is based on the same allowed +interval for values as the pass/fail criterion, it too measures +the quality of function evaluation independent of the function +and argument under test. It does depend on the internal accuracy +with which the implementation can represent numeric quantities: +the greater the accuracy, the smaller the error measure should +become. As a rough guide, the error measures should all be < +10-(6-d), where d is the number of significant decimal digits +supported by the implementation (this is determined in the +standard tests for numeric operations, group 6.1). For instance, +an eight decimal digit processor should have all error measures < +.01. + + Another point to be stressed: even though the results of +these tests are informative, the tests themselves are +syntactically standard, and thus must be accepted and processed +bi the implementation. If, for instance, the processor does not +recognize the ATN function and rejects the program, it definitely +fails to conform to the standard. This is in contrast to the +case of a processor which accepts the program, but returns +somewhat inaccurate values. The latter processor is arguably +standard-conforming, even if of low quality. + + This group also contains exception tests for those +conditions so specified in the ANSI standard. Most of these can +be understood in light of the general guidance given for +exceptions. The program for overflow of the TAN function +deserves some comment. Since it is questionable whether overflow +can be forced simply by encoding pi/2 as a numeric constant for +the source code argument, the program attempts to generate the +exception by a convergence algorithm. It may be, however, that +no argument exists which will cause overflow, so you must verify +merely that if overflow occurs, then it is reported as an +exception. For instance, if several of the function calls return +machine infinity, it is clear that overflow has occurred and if +there were no exception report in such a case, the test fails. +Also, as a measure of quality, the returned values with a given +sign should increase in magnitude until overflow occurs, i.e. +all the positive values should form an ascending sequence, and +the negative values a descending sequence. + + + +5.12.3 RND And RANDOMIZE + + Unlike the other functions, there is no single correct value +to be returned by any individual reference to RND, but only the +properties of an aggregation of returned values are specified. +The standard says that these values are "uniformly distributed in +the range 0 <= RND < 1". Also, section 17 specifies that in the +absence of the RANDOMIZE statement, RND will generate the same +pseudorandom sequence for each execution of a program; + + Page 44 + + +conversely, each execution of RANDOMIZE "generates a new +unpredictable starting point" for the sequence produced by RND. +The RND tests follow closely the strategy put forth in chapter +3.3.1 of Knuth's The Art of Computer Programming (4], which +explains fully the rationale for the programs in this group. + + + +5.12.3.1 Standard Capabilities + + The first two programs test that the same sequence or a +novel sequence appear as appropriate, depending on whether +RANDOMIZE has executed. Note that you must execute both of these +programs three times apiece, since the RND sequence is +initialized by the implementation only when execution begins. +The next three programs all test properties of the sequence which +follow directly from the specification that it is uniformly +distributed in the range 0 <= RND < 1. If the results make it +quite improbable that the distribution is uniform, or if any +value returned is outside the legal range, then the test fails. +Of course, any implementation could pass simply by adjusting the +RND algorithm or starting point until a passing sequence is +generated. In order to measure the quality of implementation, +you can run the programs with a RANDOMIZE statement in the +beginning and then observe how often the test passes or fails. +Note that, if you use RANDOMIZE, these programs should fail a +certain proportion of the time since they are probabilistic +tests. + + + +5.12.3.2 Informative Tests + + There are several desirable properties of a sequence of +pseudorandom numbers which are not strictly implied by uniform +distribution. If, for instance, the numbers in the sequence +alternated between being <= .5 and > .5, they might still be +uniform, but would be non-random in an important way. These +tests attempt to measure how well the implementation has +approached the ideal of a perfectly random sequence by looking +for patterns indicative of nonrandomness in the sequence actually +produced. Like the tests for standard capabilities, these +programs are probabilistic and any one of them may fail without +necessarily implying that the RND sequence is not random. If a +high quality RND function is important for your purposes, we +suggest you run each of these programs several times with the +RANDOMIZE statement. If a given test seems to fail far more +often than likely, it may well indicate a weakness in the RND +algorithm. + + Page 45 + + +5.12.4 Errors + + The tests in this group all use an argument-list which is +incorrect in some way, either for the particular function, or +because of the general rules of syntax. As always, if the +processor does accept any of them, the documentation must be +consistent with the actual results. Note that the ANSI standard +contains a misprint, indicating that the TAN function takes no +arguments. The tests are written to treat TAN as a function of a +single variable. + + + +5.13 User-defined Functions + + The standard provides a facility so that programmers can +define functions of a single variable in the form of a numeric +expression. This group of tests exercises both the invoking +mechanism (function references) and the defining mechanism (DEF +statement). + + + +5.13.1 Standard Capabilities + + These programs test a variety of properties guaranteed by +the standard: the DEF statement must allow any numeric +expression as the function definition; the parameter, if any, +must not be confused with a global variable of the same name; +global variables, other than one with the same name as the +parameter, are available to the function definition; a DEF +statement in the path of execution has no effect; invocation of +a function as such never changes the value of any variable; the +set of valid names for user-defined functions is "FN" followed by +any alphabetic character. The tests are self-checking. As with +the numeric operations, a very loose criterion of accuracy is +used to check the implementation. Its purpose is not to check +accuracy as such, but only to assure that the semantic behavior +accords with the standard. + + + +5.13.2 Errors + + Many of these tests are similar to the error tests for +implementation-supplied functions, in that they try out various +malformed argument lists. There are also some tests involving +the DEF statement, in particular for the requirements that a +program contain exactly one DEF statement for each user function +referred to in the program and that the definition precede any +references. + + Page 46 + + +5.14 Numeric Expressions + + Numeric expressions have a somewhat special place in the +Minimal BASIC standard. They are the most complex entity, +syntactically, for two reasons. First, the expression itself may +be built up in a variety of ways. Numeric constants, variables, +and function references are combined using any of five +operations. The function references themselves may be to +user-defined expressions. And of course expressions can be +nested, either implicitly, or explicitly with parentheses. +Second, not only do the expressions have a complex internal +syntax, but also they may appear in a number of quite different +contexts. Not just the LET statement, but also the IF, PRINT, +ON...GOTO, and FOR statements, can contain expressions. Also +they may be used as array subscripts or as arguments in a +function reference. Note that when they are used in the +ON...GOTO, as subscripts, or as arguments to TAB, expressions +must be rounded to the nearest integer. + + The overall strategy of the test system is first to assure +that the elements of numeric expressions are handled correctly, +then to try out increasingly complex expressions in the +comparatively simple context of the LET statement, and finally to +verify that these complex expressions work properly in the other +contexts mentioned. Preceding groups have already accomplished +the first task of checking out individual expression elements, +such as constants, variables (both simple and array), and +function references. This group completes the latter two steps. + + + +5.14.1 Standard Capabilities In Context Of LET-statement + + This test tries out various lengthy expressions, using the +full generality allowed by the standard, and assigns the +resulting value to a variable. As usual, if this value is even +approximately correct, the test passes, since we are interested +in semantics rather than accuracy. The program displays the +correct value and actual computed value. This test also verifies +that subscript expressions evaluate to the nearest integer. + + + +5.14.2 Expressions In Other Contexts: PRINT, IF, ON-GOTO, FOR + + Please note that the PRINT test, like other PRINT tests, is +inherently incapable of checking itself, and therefore you must +inspect and interpret the results. The PRINT program first tests +the use of expressions as print-items. Check that the actual and +correct values are reasonably close. The second section of the +program tests that the TAB call is handled correctly. Simply +verify that the characters appear in the appropriate columns. + + Page 47 + + + The second program is self-checking and tests IF, ON-GOTO +and FOR, one in each section. As with other tests of control +statements, the diagnostics are rather sparse for failures. +Check Volume 2 for an example of correct output. + + + +5.14.3 Exceptions In Subscripts And Arguments + + The exceptions specified in section 7 and 8 apply to numeric +expressions in whatever context they occur. These tests simply +assure that the correct values are supplied, e.g., machine +infinity for overflow, zero for underflow, and that the execution +continues normally as if that value had been put in that context +as, say, a numeric constant. Sometimes this action will produce +normal results and sometimes will trigger another exception, +e.g., machine infinity supplied as a subscript. Simply verify +that the exception reports are produced as specified in the +individual tests. + + + +5.14.4 Exceptions In Other Contexts: PRINT, IF, ON-GOTO, FOR + As in the immediately preceding section, these tests make +sure that the recovery procedures have the natural effect given +the context in which they occur. As usual for exception tests, +it is up to you to verify that reasonable exception reports +appear. The PRINT tests also require user interpretation to some +degree. + + + +5.15 Miscellaneous Checks + + This group consists mostly of error tests in which the error +is tied not to some specific functional area but rather to the +general format rules for BASIC programs. If you are not already +thoroughly familiar with the general criteria for error tests, it +would be wise to review them (sections 3.2.2 and 4.4.2.3 of this +document) before going through this group. A few tests require +special comment and this is supplied below in the appropriate +subsection. + + + +5.15.1 Missing Keyword + + Many implementations of BASIC allow programs to omit the +keyword LET in assignment statements. This program checks that +possibility and reports the resulting behavior if accepted. + + Page 48 + + +5.15.2 Spaces + + Sections 3 and 4 of the ANSI standard specify several +context sensitive rules for the occurrence of spaces in a BASIC +program. The standard test assures that wherever one space may +occur, several spaces may occur with no effect, except within a +quoted- or unquoted-string. There are certain places where +spaces either must, or may, or may not appear, and the error +programs test how the implementation treats various violations of +the rules. + + + +5.15.3 Quotes + + These programs test the effect of using either a single or +double quote in a quoted string. Some processors may interpret +the double quote as a single occurrence of the quote character +within the string. The programs test the effect of aberrant +quotes in the context of the PRINT and the LET statements. + + + +5.15.4 Line Numbers + + The first of these programs is a standard, not an error, +test. It verifies that leading zeros in line numbers have no +effect. The other programs all deal with some violation of the +syntax rules for line numbers. When submitting these programs to +your implementation, you should not explicitly call for any +sorting or renumbering of lines. If the implementation sorts the +lines by default, even when the program is submitted to it in the +simplest way, the documentation must make this clear. Such +sorting merely constitutes a particular type of syntactic +enhancement, i.e., to treat a program with lines out of order as +if they were in order. Similarly, an implementation may discard +duplicate lines, or append line numbers to the beginning of lines +missing them, as long as these actions occur without special user +intervention and are documented. Of course, processors may also +reject such programs, with an error message to the user. + + + +5.15.5 Line Longer Than 72 Characters + + This program tests the implementation's reaction to a line +whose length is greater than the standard limit of 72. Many +implementations accept longer lines; if so the documentation +must specify the limit. + + Page 49 + + +5.15.6 Margin Overflow For Output Line + + This is not an error test, but a standard one. Further, it +involves PRINT capabilities and therefore calls for careful user +interpretation. Its purpose is to assure correct handling of the +margin and print zones, relative to the implementation-defined +length for each of those two entities. After you have entered +the appropriate values, the program will generate pairs of +output, with either one or two printed lines for each member of +the pair. The first member is produced using primitive +capabilities of PRINT and is intended to show what the output +should look like. The second member of the pair is produced +using the facilities under teat and shows what the output +actually looks like. If the two members differ at all, the test +fails. It could happen, however, that the first member of the +pair does not produce the correct output either. You should, +therefore, closely examine the sample output for this test in +Volume 2 to understand what the expected output is. Of course +the sample is exactly correct only for implementations with the +same margin and zone width, but allowing for the possibly +different widths of your processor, the sample should give you +the idea of what your processor must do. + + + +5.15.7 Lowercase Characters + + These two tests tell you whether your processor can handle +lowercase characters in the program, and, if so, whether they are +converted to uppercase or left as lowercase. + + + +5.15.8 Ordering Strings + + This program tests whether your implementation accepts +comparison operators other than the standard = or <> for strings. +If the processor does accept them, the program assumes that the +interpretation is the intuitively appealing one and prints +informative output concerning the implicit character collating +sequence and also some comparison results for multi-character +strings. + + + +5.15.9 Mismatch Of Types In Assignment + + These programs check whether the processor accepts +assignment of a string to a numeric variable and vice-versa, and +if so what the resulting value of the receiving variable is. As +usual, make sure your documentation covers these cases if the +implementation accepts these programs. + + Page 50 + + +6 TABLES OF SUMMARY INFORMATION ABOUT THE TEST PROGRAMS + + This section contains three tables which should help you +find your way around the programs and the ANSI standard. The +first table presents the functional grouping of the tests and +shows which programs are in each group and the sections of the +ANSI standard whose specifications are being tested thereby. The +second table lists all the programs individually by number and +title, and also the particular sections and subsections of the +standard to which they apply. The third table lists the sections +and subsections of the standard in order, followed by a list of +program numbers for those sections. This third table is +especially important if you want to test the implementation of +only certain parts of the standard. Be aware, however, that +since the sections of the standard are not tested in order, the +tests for a given section may rely on the implementation of later +sections in the standard which have been tested earlier in the +test sequence. + + Page 51 + + +6.1 Group Structure Of The Minimal BASIC Test Programs + + Program ANSI +Group Number Section + +1 Simple PRINTing of string constants 1 (3,5,12) + +2 END and STOP 2-5 (4,10) + + 2.1 END 2-4 (4) + + 2.2 STOP 5 (10) + +3 PRINTing and simple assignment (LET) 6-14 (5,6.9,12) + + 3.1 string variables and TAB 6-8 (6,9,12) + + 3.2 numeric constants and variables 9-14 (5,6,9,12) + +4 Control Statements and REM 15-21 (10,18) + 4.1 REM and GOTO 15-16 (10,18) + + 4.2 GOSUB and RETURN 17 (10) + + 4.3 IF-THEN 18-21 (10) + +5 Variables 22-23 (6) +6 Numeric Constants, Variables, + and Operations 24-43 (5,6,7) + + 6.1 Standard Capabilities 24-27 (5,6,7) + 6.2 Exceptions 28-35 (5,7) + + 6.3 Errors 36-38 (7) + + 6.4 Accuracy tests - Informative 39-43 (7) + +7 FOR-NEXT 44-55 (10,11) + + 7.1 Standard Capabilities 44-49 (10,11) + 7.2 Errors 50-55 (11) +8 Arrays 56-84 (6,7,9,15) + 8.1 Standard Capabilities 56-62 (6,7,9,15) + + 8.2 Exceptions 63-72 (6,15) + + 8.3 Errors 73-84 (6,15) + + Page 52 + + +Group Structure of the Minimal BASIC Test Programs (cont.) + +Group Program ANSI + Number Section + +9 Control Statements 85-91 (10) + + 9.1 GOSUB and RETURN 85-87 (10) + + 9.2 ON-GOTO 88-91 (10) + +10 READ, DATA, and RESTORE 92-106 (3,5,14) + + 10.1 Standard Capabilities 92-95 (3,5,14) + + 10.2 Exceptions 96-101 (14) + + 10.3 Errors 102-106 (3,14) + +11 INPUT 107-113 (3,5,13) + + 11.1 Standard Capabilities 107-110 (3,5,13) + + 11.2 Exceptions 111-112 (3,5,13) + + 11.3 Errors 113 (13) + +12 Implementation-supplied Functions 114-150 (7,8,17) + 12.1 Precise functions: + ABS, INT, SGN 114-116 (8) + + 12.2 Approximated functions: + SQR, ATN, COS, EXP, LOG, + SIN, TAN 117-129 (7,8) + + 12.3 RND and RANDOMIZE 130-142 (8,17) + + 12.3.1 Standard Capabilities 130-134 (8,17) + + 12.3.2 Informative tests 135-142 (8) + + 12.4 Errors 143-150 (7,8) + +13 User-defined Functions 151-163 (7,16) + + 13.1 Standard Capabilities 151-152 (7,16) + + 13.2 Errors 153-163 (7,16) + + Page 53 + + +Group Structure of the Minimal BASIC Test Programs (cont.) +Group Program ANSI + Number Section + +14 Numeric Expressions 164-184 (6,7,8,10, + 11,12,16) + 14.1 Standard Capabilities in context of + LET—statement 164 (6,7,8,16) + + 14.2 Expressions in other contexts: + PRINT, IF, ON—GOTO, FOR 165-166 (7,10,11,12) + + 14.3 Exceptions in subscripts and + arguments 167-171 (6,7,8,16) + + 14.4 Exceptions in other contexts: + PRINT, IF, ON—GOTO, FOR 172-184 (7,10,11,12) + +15 Miscellaneous Checks 185-208 (3,4,9,10,12) + + 15.1 Missing keyword 185 (9) + + 15.2 Spaces 186-191 (3,4) + + 15.3 Quotes 192-195 (3,9,12) + 15.4 Line numbers 196-201 (4) + + 15.5 Line longer than 72 characters 202 (4) + + 15.6 Effect of zones and margin on PRINT 203 (12) + + 15.7 lowercase characters 204-205 (3,9,12) + + 15.8 Ordering relations between strings ...206 (3,10) + + 15.9 Mismatch of types in assignment 207-208 (9) + + Page 54 + + +6.2 Test Program Sequence + + +PROGRAM NUMBER 1 + NULL PRINT AND PRINTING QUOTED STRINGS. + REFS: 3.2 3.4 5.2 5.4 12.2 12.4 + +PROGRAM NUMBER 2 + THE END-STATEMENT. + REFS: 4.2 4.4 + +PROGRAM NUMBER 3 + ERROR - MISPLACED END-STATEMENT. + REFS: 4.2 4.4 + +PROGRAM NUMBER 4 + ERROR - MISSING END-STATEMENT. + REFS: 4.2 4.4 + +PROGRAM NUMBER 5 + THE STOP-STATEMENT. + REFS: 10.2 10.4 + +PROGRAM NUMBER 6 + PRINT-SEPARATORS, TABS, AND STRING VARIABLES. + REFS: 6.2 6.4 9.2 9.4 12.2 12.4 + +PROGRAM NUMBER 7 + EXCEPTION - STRING OVERFLOW USING THE LET-STATEMENT. + REFS: 9.5 12.4 + +PROGRAM NUMBER 8 + EXCEPTION - TAB ARGUMENT LESS THAN ONE. + REFS: 12.5 + +PROGRAM NUMBER 9 + PRINTING NR1 AND NR2 NUMERIC CONSTANTS. + REFS: 5.2 5.4 12.4 + +PROGRAM NUMBER 10 + PRINTING NR3 NUMERIC CONSTANTS. + REFS: 5.2 5.4 12.4 + +PROGRAM NUMBER 11 + PRINTING NUMERIC VARIABLES ASSIGNED NR1 AND NR2 CONSTANTS. + REFS: 5.2 5.4 6.2 6.4 9.2 9.4 12.4 + +PROGRAM NUMBER 12 + PRINTING NUMERIC VARIABLES ASSIGNED NR3 CONSTANTS. + REFS: 5.2 5.4 6.2 6.4 9.2 9.4 12.4 + +PROGRAM NUMBER 13 + FORMAT AND ROUNDING OF PRINTED NUMERIC CONSTANTS. + REFS: 12.4 5.2 5.4 + + Page 55 + + +PROGRAM NUMBER 14 + PRINTING AND ASSIGNING NUMERIC VALUES NEAR TO THE MAXIMUM AND + MINIMUM MAGNITUDE. + REFS: 5.4 9.4 12.4 + +PROGRAM NUMBER 15 + THE REM AND GOTO STATEMENTS. + REFS: 18.2 18.4 10.2 10.4 + +PROGRAM NUMBER 16 + ERROR - TRANSFER TO A NON-EXISTING LINE NUMBER USING THE + GOTO-STATEMENT. + REFS: 10.4 + +PROGRAM NUMBER 17 + ELEMENTARY USE OF GOSUB AND RETURN. + REFS: 10.2 10.4 + +PROGRAM NUMBER 18 + THE IF-THEN STATEMENT WITH STRING OPERANDS. + REFS: 10.2 10.4 + +PROGRAM NUMBER 19 + THE IF-THEN STATEMENT WITH NUMERIC OPERANDS + REFS: 10.2 10.4 + +PROGRAM NUMBER 20 + ERROR - IF-THEN STATEMENT WITH A STRING AND NUMERIC OPERAND. + REFS: 10.2 + +PROGRAM NUMBER 21 + ERROR - TRANSFER TO NON-EXISTING LINE NUMBER USING THE + IF-THEN-STATEMENT. + REFS: 10.4 + +PROGRAM NUMBER 22 + NUMERIC AND STRING VARIABLE NAMES WITH THE SAME INITIAL + LETTER. + REFS: 6.2 6.4 + +PROGRAM NUMBER 23 + INITIALIZATION OF STRING AND NUMERIC VARIABLES. + REFS: 6.6 + +PROGRAM NUMBER 24 + PLUS AND MINUS + REFS: 7.2 7.4 + +PROGRAM NUMBER 25 + MULTIPLY, DIVIDE, AND INVOLUTE + REFS: 7.2 7.4 + +PROGRAM NUMBER 26 + PRECEDENCE RULES FOR NUMERIC EXPRESSIONS. + REFS: 7.2 7.4 + + Page 56 + + +PROGRAM NUMBER 27 + ACCURACY OF CONSTANTS AND VARIABLES. + REFS: 5.2 5.4 6.2 6.4 10.4 + +PROGRAM NUMBER 28 + EXCEPTION - DIVISION BY ZERO. + REFS: 7.5 + +PROGRAM NUMBER 29 + EXCEPTION - OVERFLOW OF NUMERIC EXPRESSIONS. + REFS: 7.5 + +PROGRAM NUMBER 30 + EXCEPTION - OVERFLOW OF NUMERIC CONSTANTS. + REFS: 5.4 5.5 + +PROGRAM NUMBER 31 + EXCEPTION - ZERO RAISED TO A NEGATIVE POWER. + REFS: 7.5 + +PROGRAM NUMBER 32 + EXCEPTION - NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER. + REFS: 7.5 + +PROGRAM NUMBER 33 + EXCEPTION - UNDERFLOW OF NUMERIC EXPRESSIONS. + REFS: 7.4 + +PROGRAM NUMBER 34 + EXCEPTION - UNDERFLOW OF NUMERIC CONSTANTS. + REFS: 5.4 5.6 + +PROGRAM NUMBER 35 + EXCEPTION - OVERFLOW AND UNDERFLOW WITHIN SUB-EXPRESSIONS + REFS: 7.4 7.5 + +PROGRAM NUMBER 36 + ERROR - UNMATCHED PARENTHESES IN NUMERIC EXPRESSION. + REFS: 7.2 + +PROGRAM NUMBER 37 + ERROR - USE OF '*,' AS OPERATOR. + REFS: 7.2 + +PROGRAM NUMBER 38 + ERROR - USE OF ADJACENT OPERATORS. + REFS: 7.2 + +PROGRAM NUMBER 39 + ACCURACY OF ADDITION + REFS: 7.2 7.4 7.6 + +PROGRAM NUMBER 40 + ACCURACY OF SUBTRACTION + REFS: 7.2 7.4 7.6 + + Page 57 + + +PROGRAM NUMBER 41 + ACCURACY OF MULTIPLICATION + REFS: 7.2 7.4 7.6 + +PROGRAM NUMBER 42 + ACCURACY OF DIVISION + REFS: 7.2 7.4 7.6 + +PROGRAM NUMBER 43 + ACCURACY OF INVOLUTION + REFS: 7.2 7.4 7.6 + +PROGRAM NUMBER 44 + ELEMENTARY USE OF THE FOR-STATEMENT. + REFS: 11.2 11.4 + +PROGRAM NUMBER 45 + ALTERING THE CONTROL-VARIABLE WITHIN A FOR-BLOCK. + REFS: 11.2 11.4 + +PROGRAM NUMBER 46 + INTERACTION OF CONTROL STATEMENTS WITH THE FOR-STATEMENT. + REFS: 11.2 11.4 10.2 10.4 + +PROGRAM NUMBER 47 + INCREMENT IN THE STEP CLAUSE OF THE FOR-STATEMENT DEFAULTS TO + A VALUE OF ONE. + REFS: 11.2 11.4 + +PROGRAM NUMBER 48 + LIMIT AND INCREMENT IN THE FOR-STATEMENT ARE EVALUATED ONCE + UPON ENTERING THE LOOP. + REFS: 11.2 11.4 + +PROGRAM NUMBER 49 + NESTED FOR-BLOCKS. + REFS: 11.2 11.4 + +PROGRAM NUMBER 50 + ERROR - FOR-STATEMENT WITHOUT A MATCHING NEXT-STATEMENT. + REFS: 11.2 11.4 + +PROGRAM NUMBER 51 + ERROR - NEXT-STATEMENT WITHOUT A MATCHING FOR-STATEMENT. + REFS: 11.2 11.4 + +PROGRAM NUMBER 52 + ERROR - MISMATCHED CONTROL-VARIABLES ON FOR-STATEMENT AND + NEXT-STATEMENT. + REFS: 11.4 + +PROGRAM NUMBER 53 + ERROR - INTERLEAVED FOR-BLOCKS. + REFS: 11.4 + + Page 58 + + +PROGRAM NUMBER 54 + ERROR - NESTED FOR-BLOCKS WITH THE SAME CONTROL VARIABLE. + REFS: 11.4 + +PROGRAM NUMBER 55 + ERROR - JUMP INTO FOR-BLOCK. + REFS: 11.4 + +PROGRAM NUMBER 56 + ARRAY ASSIGNMENT WITHOUT THE OPTION-STATEMENT. + REFS: 6.2 6.4 9.2 9.4 15.2 15.4 + +PROGRAM NUMBER 57 + ARRAY ASSIGNMENT WITH OPTION BASE O. + REFS: 6.2 6.4 9.2 9.4 15.2 15.4 + +PROGRAM NUMBER 58 + ARRAY ASSIGNMENT WITH OPTION BASE 1. + REFS: 6.2 6.4 9.2 9.4 15.2 15.4 + +PROGRAM NUMBER 59 + ARRAY NAMED 'A' IS DISTINCT FROM 'A$'. + REFS: 6.2 6.4 + +PROGRAM NUMBER 60 + NUMERIC CONSTANTS USED AS SUBSCRIPTS ARE ROUNDED TO NEAREST + INTEGER. + REFS: 6.4 5.4 + +PROGRAM NUMBER 61 + NUMERIC EXPRESSIONS CONTAINIV. SUBSCRIPTED VARIABLES. + REFS: 6.2 6.4 7.2 7.4 + +PROGRAM NUMBER 62 + GENERAL SYNTACTIC AND SEMANTIC PROPERTIES OF ARRAY CONTROL + STATEMENTS: OPTION AND DIM. + REFS: 15.2 15.4 + +PROGRAM NUMBER 63 + EXCEPTION - SUBSCRIPT TOO LARGE FOR ONE-DIMENSIONAL ARRAY. + REFS: 6.5 + +PROGRAM NUMBER 64 + EXCEPTION - SUBSCRIPT TOO SMALL FOR TWO-DIMENSIONAL ARRAY. + REFS: 6.5 + +PROGRAM NUMBER 65 + EXCEPTION - SUBSCRIPT TOO SMALL FOR ONE-DIMENSIONAL ARRAY, + WITH DIM. + REFS: 6.5 15.2 15.4 + +PROGRAM NUMBER 66 + EXCEPTION - SUBSCRIPT TOO LARGE FOR TWO-DIMENSIONAL ARRAY, + WITH DIM. + REFS: 6.5 15.2 15.4 + + Page 59 + + +PROGRAM NUMBER 67 + EXCEPTION - SUBSCRIPT TOO SMALL FOR ONE-DIMENSIONAL ARRAY, + WITH OPTION BASE 1. + REFS: 6.5 15.2 15.4 + +PROGRAM NUMBER 68 + EXCEPTION - SUBSCRIPT TOO LARGE FOR ONE-DIMENSIONAL ARRAY, + WITH DIM AND OPTION BASE 1. + REFS: 6.5 15.2 15.4 + +PROGRAM NUMBER 69 + EXCEPTION - SUBSCRIPT TOO LARGE FOR TWO-DIMENSIONAL ARRAY, + WITH DIM AND OPTION BASE O. + REFS: 6.5 15.2 15.4 + +PROGRAM NUMBER 70 + EXCEPTION - SUBSCRIPT TOO SMALL FOR ONE-DIMENSIONAL ARRAY, + WITH OPTION BASE O. + REFS: 6.5 15.2 15.4 + +PROGRAM NUMBER 71 + EXCEPTION - SUBSCRIPT TOO SMALL FOR TWO-DIMENSIONAL ARRAY, + WITH DIM AND OPTION BASE O. + REFS: 6.5 15.2 15.4 + +PROGRAM NUMBER 72 + EXCEPTION - SUBSCRIPT TOO SMALL FOR TWO-DIMENSIONAL ARRAY, + WITH DIM AND OPTION BASE 1. + REFS: 6.5 15.2 15.4 + +PROGRAM NUMBER 73 + ERROR - DIM SETS UPPER BOUND OF ZERO WITH OPTION BASE 1. + REFS: 15.4 + +PROGRAM NUMBER 74 + ERROR - DIM SETS ARRAY TO ONE DIMENSION AND REFERENCE IS MADE + TO TWO-DIMENSIONAL VARIABLE OF SAME NAME. + REFS: 15.4 6.4 + +PROGRAM NUMBER 75 + ERROR - DIM SETS ARRAY TO ONE DIMENSION AND REFERENCE IS MADE + TO SIMPLE VARIABLE OF SAME NAME. + REFS: 15.4 6.4 + +PROGRAM NUMBER 76 + ERROR - DIM SETS ARRAY TO TWO DIMENSIONS AND REFERENCE IS MADE + TO ONE-DIMENSIONAL VARIABLE OF SAME NAME. + REFS: 15.4 6.4 + +PROGRAM NUMBER 77 + ERROR - REFERENCE TO ARRAY AND SIMPLE VARIABLE OF SAME NAME. + REFS: 6.4 + + Page 60 + + +PROGRAM NUMBER 78 + ERROR - REFERENCE TO ONE-DIMENSIONAL AND TWO-DIMENSIONAL + VARIABLE OF SAME NAME. + REFS: 6.4 + +PROGRAM NUMBER 79 + ERROR - REFERENCE TO ARRAY WITH LETTER-DIGIT NAME. + REFS: 6.2 + +PROGRAM NUMBER 80 + ERROR - MULTIPLE OPTION STATEMENTS. + REFS: 15.4 + +PROGRAM NUMBER 81 + ERROR - DIM-STATEMENT PRECEDES OPTION-STATEMENT. + REFS: 15.4 + +PROGRAM NUMBER 82 + ERROR - ARRAY-REFERENCE PRECEDES OPTION-STATEMENT. + REFS: 15.4 + +PROGRAM NUMBER 83 + ERROR - ARRAY-REFERENCE PRECEDES DIM-STATEMENT. + REFS: 15.4 + +PROGRAM NUMBER 84 + ERROR - DIMENSIONING THE SAME ARRAY MORE THAN ONCE. + REFS: 15.4 + +PROGRAM NUMBER 85 + GENERAL CAPABILITIES OF GOSUB/RETURN. + REFS: 10.4 + +PROGRAM NUMBER 86 + EXCEPTION - RETURN WITHOUT GOSUB. + REFS: 10.5 + +PROGRAM NUMBER 87 + ERROR - TRANSFER TO NON-EXISTING LINE NUMBER USING THE + GOSUB-STATEMENT. + REFS: 10.4 + +PROGRAM NUMBER 88 + THE ON-GOTO-STATEMENT. + REFS: 10.2 10.4 + +PROGRAM NUMBER 89 + EXCEPTION - ON-GOTO CONTROL EXPRESSION LESS THAN 1. + REFS: 10.5 + +PROGRAM NUMBER 90 + EXCEPTION - ON-GOTO CONTROL EXPRESSION GREATER THAN NUMBER OF + LINE-NUMBERS IN LIST. + REFS: 10.5 + + Page 61 + + +PROGRAM NUMBER 91 + ERROR - TRANSFER TO NON-EXISTING LINE NUMBER USING THE + ON-GOTO-STATEMENT. + REFS: 10.4 + +PROGRAM NUMBER 92 + READ AND DATA STATEMENTS FOR NUMERIC DATA. + REFS: 5.2 14.2 14.4 + +PROGRAM NUMBER 93 + READ AND DATA STATEMENTS FOR STRING DATA. + REFS: 3.2 5.2 14.2 14.4 + +PROGRAM NUMBER 91i + READING DATA INTO SUBSCRIPTED VARIABLES. + REFS: 14.2 14.4 + +PROGRAM NUMBER 95 + GENERAL USE OF THE READ, DATA, AND RESTORE STATEMENTS. + REFS: 14.2 14.4 + +PROGRAM NUMBER 96 + EXCEPTION - NUMERIC UNDERFLOW WHEN READING DATA CAUSES + REPLACEMENT BY ZERO. + REFS: 5.5 14.4 + +PROGRAM NUMBER 97 + EXCEPTION - INSUFFICIENT DATA FOR READ. + REFS: 14.5 + +PROGRAM NUMBER 98 + EXCEPTION - READING UNQUOTED STRING DATA INTO A NUMERIC + VARIABLE. + REFS: 14.5 + +PROGRAM NUMBER 99 + EXCEPTION - READING QUOTED STRING DATA INTO A NUMERIC + VARIABLE. + REFS: 14.5 + +PROGRAM NUMBER 100 + EXCEPTION - STRING OVERFLOW ON READ. + REFS: 14.5 + +PROGRAM NUMBER 101 + EXCEPTION - NUMERIC OVERFLOW ON READ. + REFS: 14.5 + +PROGRAM NUMBER 102 + ERROR - ILLEGAL CHARACTER IN UNQUOTED STRING IN DATA + STATEMENT. + REFS: 3.2 14.2 + + Page 62 + + +PROGRAM NUMBER 103 + ERROR - READING QUOTED STRINGS CONTAINING SINGLE QUOTE. + REFS: 3.2 14.2 + +PROGRAM NUMBER 104 + ERROR - READING QUOTED STRINGS CONTAINING DOUBLE QUOTE. + REFS: 3.2 14.2 + +PROGRAM NUMBER 105 + ERROR - NULL DATUM IN DATA-LIST. + REFS: 14.2 + +PROGRAM NUMBER 106 + ERROR - NULL ENTRY IN READ'S VARIABLE-LIST. + REFS: 14.2 + +PROGRAM NUMBER 107 + INPUT OF NUMERIC CONSTANTS. + REFS: 5.2 13.2 13.4 + +PROGRAM NUMBER 108 + INPUT TO SUBSCRIPTED VARIABLES. + REFS: 13.2 13.4 + +PROGRAM NUMBER 109 + STRING INPUT. + REFS: 3.2 13.2 13.4 + +PROGRAM NUMBER 110 + MIXED INPUT OF STRINGS AND NUMBERS. + REFS: 13.2 13.4 + +PROGRAM NUMBER 111 + EXCEPTION - NUMERIC UNDERFLOW ON INPUT CAUSES REPLACEMENT BY + ZERO. + REFS: 5.6 13.4 + +PROGRAM NUMBER 112 + EXCEPTION - INPUT-REPLY INCONSISTENT WITH INPUT VARIABLE-LIST. + REFS: 13.4 13.5 3.2 5.2 + +PROGRAM NUMBER 113 + ERROR - NULL ENTRY IN INPUT-LIST. + REFS: 13.2 + +PROGRAM NUMBER 114 + EVALUATION OF ABS FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 115 + EVALUATION OF INT FUNCTION. + REFS: 8.4 + + Page 63 + + +PROGRAM NUMBER 116 + EVALUATION OF SGN FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 117 + ACCURACY OF SQR FUNCTION. + REFS: 7.6 8.4 + +PROGRAM NUMBER 118 + EXCEPTION - SQR OF NEGATIVE ARGUMENT. + REFS: 8.5 + +PROGRAM NUMBER 119 + ACCURACY OF ATN FUNCTION. + REFS: 7.6 8.4 + +PROGRAM NUMBER 120 + ACCURACY OF COS FUNCTION. + REFS: 7.6 8.4 + +PROGRAM NUMBER 121 + ACCURACY OF EXP FUNCTION. + REFS: 7.6 8.4 + +PROGRAM NUMBER 122 + EXCEPTION - OVERFLOW ON VALUE OF EXP FUNCTION. + REFS: 8.5 + +PROGRAM NUMBER 123 + EXCEPTION - UNDERFLOW ON VALUE OF EXP FUNCTION. + REFS: 8.4 8.6 + +PROGRAM NUMBER 124 + ACCURACY OF LOG FUNCTION. + REFS: 7.6 8.4 + +PROGRAM NUMBER 125 + EXCEPTION - LOG OF ZERO ARGUMENT. + REFS: 8.5 + +PROGRAM NUMBER 126 + EXCEPTION - LOG OF NEGATIVE ARGUMENT. + REFS: 8.5 + +PROGRAM NUMBER 127 + ACCURACY OF SIN FUNCTION. + REFS: 7.6 8.4 + +PROGRAM NUMBER 128 + ACCURACY OF TAN FUNCTION. + REFS: 7.6 8.4 + +PROGRAM NUMBER 129 + EXCEPTION - OVERFLOW ON VALUE OF TAN FUNCTION. + REFS: 8.5 + + Page 64 + + +PROGRAM NUMBER 130 + RND FUNCTION WITHOUT RANDOMIZE STATEMENT. + REFS: 8.2 8.4 + +PROGRAM NUMBER 131 + RND FUNCTION WITH THE RANDOMIZE STATEMENT. + REFS: 8.2 8.4 17.2 17.4 + +PROGRAM NUMBER 132 + AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5 AND 0 <= RND < 1. + REFS: 8.4 + +PROGRAM NUMBER 133 + CHI-SQUARE UNIFORMITY TEST FOR RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 134 + KOMOLGOROV-SMIRNOV UNIFORMITY TEST FOR RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 135 + SERIAL TEST FOR RANDOMNESS. + REFS: 8.4 + +PROGRAM NUMBER 136 + GAP TEST FOR RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 137 + POKER TEST FOR RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 138 + COUPON COLLECTOR TEST OF RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 139 + PERMUTATION TEST FOR THE RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 140 + RUNS TEST FOR THE RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 141 + MAXIMUM OF GROUP TEST OF RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 142 + SERIAL CORRELATION TEST OF RND FUNCTION. + REFS: 8.4 + +PROGRAM NUMBER 143 + ERROR - TWO ARGUMENTS IN LIST FOR SIN FUNCTION. + REFS: 7.2 7.4 8.2 8.4 + + Page 65 + + +PROGRAM NUMBER 144 + ERROR - TWO ARGUMENTS IN LIST FOR ATM FUNCTION; + REFS: 7.2 7.4 8.2 8.A + +PROGRAM NUMBER 145 + ERROR - TWO ARGUMENTS IN LIST FOR RND FUNCTION; + REFS: 7.2 7.4 8.2 8.4 + +PROGRAM NUMBER 146 + ERROR - ONE ARGUMENT IN LIST FOR RND FUNCTION; + REFS: 7.2 7.4 8.2 8.4 + +PROGRAM NUMBER 147 + ERROR - NULL ARGUMENT-LIST FOR INT FUNCTION; + REFS: 7.2 7.4 8.2 8.4 + +PROGRAM NUMBER 148 + ERROR - MISSING ARGUMENT LIST FOR TAN FUNCTION; + REFS: 7.2 7.4 8.2 8.'4 + +PROGRAM NUMBER 149 + ERROR - NULL ARGUMENT-LIST FOR RND FUNCTION.' + REFS: 7.2 7.* 8.2 8.A + +PROGRAM NUMBER 150 + ERROR - USING A STRING AS AN ARGUMENT FOR AN + IMPLEMENTATION-SUPPLIED FUNCTION.' + REFS: 7.2 7.4 8.2 8.A + +PROGRAM NUMBER 151 + USER-DEFINED FUNCTIONS; + REFS: 16.2 16.4 7.2 7.'4 + +PROGRAM NUMBER 152 + VALID NAMES FOR USER-DEFINED FUNCTIONS. + REFS: 16.2 + +PROGRAM NUMBER 153 + ERROR - SUPERFLUOUS ARGUMENT-LIST FOR USER-DEFINED FUNCTION. + REFS: 16.4 + +PROGRAM NUMBER 154 + ERROR - MISSING ARGUMENT-LIST FOR USER-DEFINED FUNCTION.' + REFS: 16.4 + +PROGRAM NUMBER 155 + ERROR - NULL ARGUMENT-LIST FOR USER-DEFINED FUNCTION.' + REFS: 7.2 7.4 16.2 16.4 + +PROGRAM NUMBER 156 + ERROR - EXCESS ARGUMENT IN LIST FOR USER-DEFINED FUNCTION. + REFS: 16.4 + + Page 66 + + +PROGRAM NUMBER 157 + ERROR - USER-DEFINED FUNCTION WITH TWO PARAMETERS. + REFS: 16.2 16.4 7.2 7.4 + +PROGRAM NUMBER 158 + ERROR - USING A STRING AS AN ARGUMENT FOR A USER-DEFINED + FUNCTION. + REFS: 7.2 7.4 16.2 16.4 + +PROGRAM NUMBER 159 + ERROR - USING A STRING AS AN ARGUMENT AND PARAMETER FOR A + USER-DEFINED FUNCTION. + REFS: 7.2 7.4 16.2 16.4 + +PROGRAM NUMBER 160 + ERROR - FUNCTION DEFINED MORE THAN ONCE. + REFS: 16.4 + +PROGRAM NUMBER 161 + ERROR - REFERENCING A FUNCTION INSIDE ITS OWN DEFINITION. + REFS: 16.4 + +PROGRAM NUMBER 162 + ERROR - REFERENCE TO FUNCTION PRECEDES ITS DEFINITION. + REFS: 16.4 + +PROGRAM NUMBER 163 + ERROR - REFERENCE TO AN UNDEFINED FUNCTION. + REFS: 16.4 + +PROGRAM NUMBER 164 + GENERAL USE OF NUMERIC EXPRESSIONS IN LET-STATEMENT. + REFS: 6.2 6.4 7.2 7.4 8.2 8.4 16.2 16.4 + +PROGRAM NUMBER 165 + COMPOUND EXPRESSIONS AND PRINT. + REFS: 7.2 7.4 12.2 12.4 + +PROGRAM NUMBER 166 + COMPOUND EXPRESSIONS USED WITH CONTROL STATEMENTS AND + FOR-STATEMENTS. + REFS: 7.2 7.4 10.2 10.4 11.2 11.4 + +PROGRAM NUMBER 167 + EXCEPTION - EVALUATION OF NUMERIC EXPRESSIONS ACTING AS + FUNCTION ARGUMENTS. + REFS: 7.5 8.4 16.4 + +PROGRAM NUMBER 168 + EXCEPTION - OVERFLOW IN THE SUBSCRIPT OF AN ARRAY. + REFS: 6.4 6.5 7.5 + + Page 67 + + +PROGRAM NUMBER 169 + EXCEPTION - NUMERIC UNDERFLOW IN THE EVALUATION OF NUMERIC + EXPRESSIONS ACTING AS ARGUMENTS AND SUBSCRIPTS. + REFS: 6.4 7.4 7.6 8.4 + +PROGRAM NUMBER 170 + EXCEPTION - NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER + IN A SUBSCRIPT. + REFS: 7.5 6.2 + +PROGRAM NUMBER 171 + EXCEPTION - LOG OF A NEGATIVE QUANTITY IN AN ARGUMENT. + REFS: 8.5 16.2 + +PROGRAM NUMBER 172 + EXCEPTION - SQR OF NEGATIVE QUANTITY IN PRINT-ITEM. + REFS: 8.5 12.2 + +PROGRAM NUMBER 173 + EXCEPTION - NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER + IN TAB-ITEM. + REFS: 7.5 12.2 + +PROGRAM NUMBER 174 + EXCEPTION - EVALUATION OF NUMERIC EXPRESSIONS IN THE PRINT + STATEMENT. + REFS: 7.5 8.5 12.2 + +PROGRAM NUMBER 175 + EXCEPTION - UNDERFLOW IN THE EVALUATION OF NUMERIC EXPRESSIONS + IN THE PRINT STATEMENT. + REFS: 7.4 7.6 8.6 12.2 + +PROGRAM NUMBER 176 + EXCEPTION - NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER + IN IF-STATEMENT. + REFS: 7.5 10.2 + +PROGRAM NUMBER 177 + EXCEPTION - EVALUATION OF NUMERIC EXPRESSIONS IN THE + IF-STATEMENT. + REFS: 7.5 10.2 + +PROGRAM NUMBER 178 + EXCEPTION - UNDERFLOW IN THE EVALUATION OF NUMERIC + EXPRESSIONS IN THE IF-STATEMENT. + REFS: 7.4 7.6 10.2 + +PROGRAM NUMBER 179 + EXCEPTION - LOG OF ZERO IN ON-GOTO-STATEMENT. + REFS: 8.5 10.2 + + Page 68 + + +PROGRAM NUMBER 180 + EXCEPTION - EVALUATION OF NUMERIC EXPRESSIONS IN THE ON-GOTO + STATEMENT. + REFS: 7.5 10.2 10.5 + +PROGRAM NUMBER 181 + EXCEPTION - UNDERFLOW IN THE EVALUATION OF THE EXP FUNCTION IN + THE ON-GOTO STATEMENT. + REFS: 7.4 8.6 10.2 10.5 + +PROGRAM NUMBER 182 + EXCEPTION - NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER + IN FOR-STATEMENT. + REFS: 7.5 11.2 + +PROGRAM NUMBER 183 + EXCEPTION - EVALUATION OF NUMERIC EXPRESSIONS IN THE + FOR-STATEMENT. + REFS: 7.5 11.2 + +PROGRAM NUMBER 184 + EXCEPTION - UNDERFLOW IN THE EVALUATION OF NUMERIC EXPRESSIONS + IN THE FOR-STATEMENT. + REFS: 7.4 7.6 11.2 + +PROGRAM NUMBER 185 + ERROR - MISSING KEYWORD LET. + REFS: 9.2 9.4 + +PROGRAM NUMBER 186 + EXTRA SPACES HAVE NO EFFECT. + REFS: 3.4 + +PROGRAM NUMBER 187 + ERROR - SPACES AT THE BEGINNING OF A LINE. + REFS: 3.4 4.4 + +PROGRAM NUMBER 188 + ERROR - SPACES WITHIN LINE-NUMBERS. + REFS: 3.4 4.4 + +PROGRAM NUMBER 189 + ERROR - SPACES WITHIN KEYWORDS. + REFS: 3.4 + +PROGRAM NUMBER 190 + ERROR - NO SPACES BEFORE KEYWORDS. + REFS: 3.4 + +PROGRAM NUMBER 191 + ERROR - NO SPACES AFTER KEYWORDS. + REFS: 3.4 + + Page 69 + + +PROGRAM NUMBER 192 + ERROR - PRINT-ITEM QUOTED STRINGS CONTAINING SINGLE QUOTE. + REFS: 3.2 12.2 12.4 + + PROGRAM NUMBER 193 + ERROR - PRINT-ITEM QUOTED STRINGS CONTAINING DOUBLE QUOTES. + REFS: 3.2 12.2 12.4 + + PROGRAM NUMBER 194 + ERROR - ASSIGNED QUOTED STRINGS CONTAINING SINGLE QUOTE. + REFS: 3.2 9.2 + + PROGRAM NUMBER 195 + ERROR - ASSIGNED QUOTED STRING CONTAINING DOUBLE QUOTES. + REFS: 3.2 9.2 + + PROGRAM NUMBER 196 + LINE-NUMBERS WITH LEADING ZEROS. + REFS: 4.2 4.4 + + PROGRAM NUMBER 197 + ERROR - DUPLICATE LINE-NUMBERS. + REFS: 4.4 + + PROGRAM NUMBER 198 + ERROR - LINES OUT OF ORDER. + REFS: 4.4 + + PROGRAM NUMBER 199 + ERROR - FIVE-DIGIT LINE-NUMBERS. + REFS: 4.2 + + PROGRAM NUMBER 200 + ERROR - LINE-NUMBER ZERO. + REFS: 4.4 + + PROGRAM NUMBER 201 + ERROR - STATEMENTS WITHOUT LINE-NUMBERS. + REFS: 4.2 4.4 + + PROGRAM NUMBER 202 + ERROR - LINES LONGER THAN 72 CHARACTERS. + REFS: 4.4 + + PROGRAM NUMBER 203 + EFFECT OF ZONES AND MARGIN ON PRINT. + REFS: 12.4 12.2 + + PROGRAM NUMBER 204 + ERROR - PRINT-STATEMENTS CONTAINING LOWERCASE CHARACTERS. + REFS: 3.2 3.4 12.2 + + PROGRAM NUMBER 205 + ERROR - ASSIGNED STRING CONTAINING LOWERCASE CHARACTERS. + REFS: 3.2 3.4 9.2 + + Page 70 + + +PROGRAM NUMBER 206 + ERROR - ORDERING RELATIONS BETWEEN STRINGS. + REFS: 3.2 3.4 3.6 10.2 + +PROGRAM NUMBER 207 + ERROR - ASSIGNMENT OF A STRING TO A NUMERIC VARIABLE. + REFS: 9.2 + +PROGRAM NUMBER 208 + ERROR - ASSIGNMENT OF A NUMBER TO A STRING VARIABLE. + REFS: 9.2 + + Page 71 + + +6.3 Cross-reference Between ANSI Standard And Test Programs + +Section 3: Characters and Strings + + 3.2: Syntax + 1 93 102 103 104 109 112 192 193 194 195 204 205 206 + + 3.4: Semantics + 1 186 187 188 189 190 191 204 205 206 + + 3.6: Remarks + 206 + +Section 4: Programs + + 4.2: Syntax + 2 3 4 196 199 201 + 4.4: Semantics + 2 3 4 187 188 196 197 198 200 201 202 + +Section 5: Constants + + 5.2: Syntax + 1 9 10 11 12 13 27 92 93 107 112 + + 5.4: Semantics + 1 9 10 11 12 13 14 27 30 34 60 + + 5.5: Exceptions + 30 + 5.6: Remarks + 34 96 111 + +Section 6: Variables + 6.2: Syntax + 6 11 12 22 27 56 57 58 59 61 79 164 170 + + 6.4: Semantics + 6 11 12 22 27 56 57 58 59 60 61 74 75 76 77 + 78 164 168 169 + + 6.5: Exceptions + 63 64 65 66 67 68 69 70 71 72 168 + + 6.6: Remarks + 23 + + Page 72 + + +Cross-reference between ANSI Standard and Test Programs (cont.) + +Section 7: Expressions + + 7.2: Syntax + 24 25 26 36 37 38 39 40 41 42 43 61 143 144 145 + 146 147 148 149 150 151 155 157 158 159 164 165 166 + + 7.4: Semantics + 24 25 26 33 35 39 40 41 42 43 61 143 144 145 146 + 147 148 149 150 151 155 157 158 159 164 165 166 169 175 178 + 181 184 + + 7.5: Exceptions + 28 29 31 32 35 167 168 170 173 174 176 177 180 182 183 + + 7.6: Remarks + 39 40 41 42 43 117 119 120 121 124 127 128 169 175 178 + 184 + +Section 8: Implementation-Supplied Functions + + 8.2: Syntax + 130 131 143 144 145 146 147 148 149 150 164 + + 8.4: Semantics + 114 115 116 117 119 120 121 123 124 127 128 130 131 132 133 + 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 + 149 150 164 167 169 + + 8.5: Exceptions + 118 122 125 126 129 171 172 174 179 + + 8.6: Remarks + 123 175 181 + +Section 9: The Let-Statement + + 9.2: Syntax + 6 11 12 56 57 58 185 194 195 205 207 208 + + 9.4: Semantics + 6 11 12 14 56 57 58 185 + + 9.5: Exceptions + 7 + + Page 73 + + +Cross-reference between ANSI Standard and Test Programs (cont.) + +Section 10: Control Statements + + 10.2: Syntax + 5 15 17 18 19 20 46 88 166 176 177 178 179 180 181 + 206 + + 10.4: Semantics + 5 15 16 17 18 19 21 27 46 85 87 88 91 166 + + 10.5: Exceptions + 86 89 90 180 181 + +Section 11: For-Statements and Next-Statements + + 11.2: 44 Syntax 45 46 47 48 49 50 51 166 182 183 184 + + 11.4: 44 Semantics 45 46 47 48 49 50 51 52 53 54 55 166 + +Section 12: The Print-Statement + + 12.2: Syntax + 1 6 165 172 173 174 175 192 193 203 204 + + 12.4: Semantics + 1 6 7 9 10 11 12 13 14 165 192 193 203 + + 12.5: Exceptions + 8 + +Section 13: The Input-Statement + + 13.2: Syntax 107 108 109 110 113 + + 13.4: Semantics + 107 108 109 110 111 112 + + 13.5: Exceptions + 112 +Section 14: The Data-, Read-, and Restore-Statements + + 14.2: Syntax + 92 93 94 95 102 103 104 105 106 + 14.4: Semantics + 92 93 94 95 96 + + 14.5: Exceptions 97 98 99 100 101 + + Page 74 + + +Cross-reference between ANSI Standard and Test Programs (cont.) + +Section 15: Array-Declarations + + 15.2: Syntax + 56 57 58 62 65 66 67 68 69 70 71 72 + + 15.4: Semantics + 56 57 58 62 65 66 67 68 69 70 71 72 73 74 75 + 76 80 81 82 83 84 + +Section 16: User-Defined Functions + + 16.2: Syntax + 151 152 155 157 158 159 164 171 + + 16.4: Semantics + 151 153 154 155 156 157 158 159 160 161 162 163 164 167 + +Section 17: The Randomize Statement + + 17.2: Syntax + 131 + + 17.4: Semantics + 131 + +Section 18: The Remark-Statement + + 18.2: Syntax + 15 + + 18.4: Semantics + 15 + + Page 75 + + + Appendix A + + Differences between Versions 1 and 2 of + the Minimal BASIC Test Programs + + In the development of Version 2, we introduced a wide +variety of changes in the test system. Some were substantive, +some stylistic. Below is a list of the more significant +differences. + +1. Perhaps the most extensive change has to do with the more + complete treatment of the errors and exceptions which must be + detected and reported by a conforming processor. We've tried + to make clear the distinction between the two and just what + conformance entails in each case. Also, Version 2 tests a + wider variety of anomalous conditions for the processor to + handle. It is in this area of helpful recovery from + programmer mistakes that the Minimal BASIC standard imposes + stricter requirements than other language standards and the + tests reflect this emphasis. + +2. Version 2 differs significantly from Version 1 in its + treatment of accuracy requirements. We abandoned any attempt + to compute internal accuracy for the purpose of judging + conformance as being too vulnerable to the problems of + circularity. Rather we formulated a criterion of accuracy, + and computed the required results outside the program itself. + The programs therefore generally contain only simple IF + statements comparing constants or variables (no lengthy + expressions). Those test sections where we did attempt some + internal computation of accuracy, e.g., the error measure and + computation of accuracy of constants and variables, are + informative only. + +3. There are a number of new informative tests for the RND + function. These are to help users whose applications are + strongly dependent on a nearly patternless RND sequence. + +4. The overall structure of the test system is more explicit. + The group numbering should help to explain why testing of + certain sections of the ANSI standard had to precede others. + Also, it should be easier to isolate the programs relevant to + the testing of a given section by referring to the group + structure. + +5. We tried to be especially careful to keep the printed output + of the various tests as consistent as their subject matter + would allow. In particular, we always made sure that the + programs stated as explicitly as possible what was necessary + for the test to pass or fail and that this message was + surrounded by triple asterisks. + + Page 76 + + + References + + +1. American National Standard for Minimal BASIC, X3.60-1978, + American National Standards Institute, New York New York, + January 1978. + +2. J. A. Lee, A Candidate Standard for Fundamental BASIC, + NBS-GCR 73-17, National Bureau of Standards, Washington DC, + July 1973 + +3. T. R. Hopkins, PBASIC - A Verifier for BASIC, Software - + Practice and Experience, Vol. 10, 175-181 (1980) + +4. D. E. Knuth, The Art of Computer Programming, Vol. 2, + Addison-Wesley Publishing Company, Reading Massachusetts + (1969) + + BS-114A (REV. 2-SC) + U.S. DEPT. OF COMM. -1. PUBLICATION OR 2. Performing Organ. Report No 3. Publication Date + REPORT NO. + BIBLIOGRAPHIC DATA November 1980 + SHEET (See instructions) NBS SP 500-70/1 + + 4. TITLE AND SUBTITLE Ctmputer Science and Technology + + + NBS Minimal BASIC Test Programs - Version 2 - User's Manual,Volume 1 - Documentation + + + + + + + + 5. AUTHOR(S) + + John V. Cugini, Joan S. Bowden, Mark W. Skall + + + 6. PERFORMING ORGANIZATION (If joint or other than NBS, see instructions) 7. Contract/Grant No. • + + + + NATIONAL BUREAU OF STANDARDS + DEPARTMENT OF COMMERCE I. Type of Report 8 Period Covered + + WASHINGTON, D.C. 20234 + Final + + + 9. SPONSORING ORGANIZATION NAME AND COMPLETE ADDRESS (Street, City. State. ZIP) + + + + + + + Same as item 6. + + + + +v10. SUPPLEMENTARY NOTES + + + + Library of Congress Catalog Card Number: 80-600163 + + + + [] Document describes a computer program; SF-I8S, FIPS Software Summary, is attached. + + 11. ABSTRACT (A 200-word or less factual summary of most significant information. If document includes a significant + bibliography or literature survey, mention it here) + + + + This publication describes the set of programs developed by NBS for the + + purpose of testing conformance of implementations of the computer language BASIC + + to the American National Standard for Minimal BASIC, ANSI X3.60-1978. The + + Department of Commerce has adopted this ANSI standard as Federal Information + + Processing Standard 68. By submitting the programs to a candidate implementation, + + the user can test the various features which an implementation must support in + + order to conform to the standard. While some programs can determine whether or + + not a given feature is correctly implemented, others produce output which the + + user must then interpret to some degree. This manual describes how the programs + + should be used so as to interpret correctly the results of the tests. Such + + interpretation depends strongly on a solid understanding of the conformance rules + + laid down in the standard, and there is a brief discussion of these rules and + + how they relate to the test programs and to the various ways in which the language + + may be implemented. + + + + + + + + + + +, , + 12. KEY WORDS (Six to twelve entries; alphabetical order; capitalize only proper names; and separate key words by semicolons) + + + Basic; language processor testing; minimal basic; programming language standards; + + software standards; software testing + + ¦ +'13. AVAILABILITY 14. NO. OF + PRINTED PAGES + PC Unlimited + Li For Official Distribution. Do Not Release to NTIS 79 + + rid Order From Superintendent of Documents, U.S. Government Printing Office, Washington, D C + 20402. 15. Price + + + E j Order From National Technical Information Service (NTIS), Springfield, VA. 22161 $4.00 + + + + + *U.S. GOVERNMENT PRINTING OFFICE: 1980-331'021/6715 USCOMM-DC 6043-P80 + +, + + Libranes of Notre Dame /15Y4o7 + + + + + + + 0 518 903 + + + + NBS TECHNICAL PUBLICATIONS + + + + + PERIODICALS NOTE: The principal publication outlet for the foregoing data is + the Journal of Physical and Chemical Reference Data (JPCRD) +JOURNAL OF RESEARCH—The Journal of Research of the published quarterly for NBS by the American Chemical Society +National Bureau of Standards reports NBS research and develop- (ACS) and the American Institute of Physics (A I P). Subscriptions, +ment in those disciplines of the physical and engineering sciences in reprints, and supplements available from ACS, 1155 Sixteenth St., +which the Bureau is active. These include physics, chemistry, NW, Washington, DC 20056. +engineering, mathematics, and computer sciences. Papers cover a +broad range of subjects, with major emphasis on measurement Building Science Series—Disseminates technical information +methodology and the basic technology underlying standardization. developed at the Bureau on building materials, components, +Also included from time to time arc survey articles on topics systems, and whole structures. The series presents research results, +closely related to the Bureau's technical and scientific programs. test methods, and performance criteria related to the structural and +As a special service to subscribers each issue contains complete environmental functions and the durability and safety charac- +citations to all recent Bureau publications in both NBS and non- teristics of building elements and systems. +NBS media. Issued six times a year. Annual subscription: domestic + I 3: foreign 516.25. Single copy. S3 domestic: $3.75 foreign. Technical Notes—Studies or reports which are complete in them- + selves but restrictive in their treatment of a subject. Analogous to +NOTE: The Journal was formerly published in two sections: Sec- monographs but not so comprehensive in scope or definitive in +tion A "Physics and Chemistry" and Section B "Mathematical treatment of the subject area. Often serve as a vehicle for final +Sciences." reports of work performed at N BS under the sponsorship of other +DIMENSIONS/NBS—This monthly magazine is published to in- government agencies. +form scientists, engineers. bus.ncss a d industry leaders, teachers, +students, and consumers of the I. test advances in science and Voluntary Product Standards—Developed under procedures +technology, with primary empnasiN on v. - rk at N BS. The magazine published by the Department of Commerce in Part 10, Title 15, of +highlights and reviews such issues as energy ::.search, fire protec- the Code of Federal Regulations. The standards establish +tion, building technology, metric conversicr, pollution abatement, nationally recognized requirements for products, and provide all +health and safety, and consumer product performance. In addi- concerned interests with a basis for common understanding of the +tion, it reports the results of Bureau programs in measurement characteristics of the products. NBS administers this program as a +standards and techniques, properties of matter and materials, supplement to the activities of the private sector standardizing +engineering standards and services, instrumentation, and organizations. +automatic data processing. Annual subscription: domestic SI I; Consumer Information Series—Practical information, based on +foreign $13.75. N BS research and experience, covering areas of interest to the con- + NONPERIODICALS sumer. Easily understandable language and illustrations provide + useful background knowledge for shopping in today's tech- +Monographs—Major contributions to the technical literature on nological marketplace. +various subjects related to the Bureau's scientific and technical ac- Order the above NBS publications from: Superintendent of Docu- +tivities. ments, Government Printing Office. Washington. DC 20402. +Handbooks—Recommended codes of engineering and industrial Order the following NBS publications—FIPS and NBSIR's—from +practice (including safety codes) developed in cooperation with in- the National Technical Information Services, Springfield. VA 22161. +terested industries, professional organizations, and regulatory + +bodies. Federal Information Processing Standards Publications (FIPS + +Special Publications—Include proceedings of conferences spon- PUB)—Publications in this series collectively constitute the +sored by NBS, NBS annual reports, and other special publications Federal Information Processing Standards Register. The Register +appropriate to this grouping such as wall charts, pocket cards, and serves as the official source of information in the Federal Govern- +bibliographies. ment regarding standards issued by NBS pursuant to the Federal +Applied Mathematics Series—Mathematical tables, manuals, and Property and Administrative Services Act of 1949 as amended, +studies of special interest to physicists, engineers, chemists, Public Law 89-306 (79 Stat. 1127), and as implemented by Ex- +biologists, mathematicians, computer programmers, and others ecutive Order 11717 (38 FR 12315, dated May I I, 1973) and Part 6 +engaged in scientific and technical work. of Title 15 CFR (Code of Federal Regulations). + +National Standard Reference Data Series—Provides quantitative NBS Interagency Reports (NBSIR )—A special series of interim or +data on the physical and chemical properties of materials, com- final reports on work performed by NBS for outside sponsors +piled from the world's literature and critically evaluated. (both government and non-government). In general, initial dis- +Developed under a worldwide program coordinated by NBS under tribution is handled by the sponsor; public distribution is by the +the authority of the National Standard Data Act (Public Law National Technical Information Services, Springfield, VA 22161, +90-396). in paper copy or microfiche form. + + + + + + + BIBLIOGRAPHIC SUBSCRIPTION SERVICES + + + +The following current-awareness and literature-survey bibliographies Superconducting Devices and Material.. A literature survey issued +are issued periodically by the Bureau: quarterly. Annual subscription: S45. Please send subscription or- +Cryogenic Data ('enter Current Awareness Service. A literature sur- ders and remittances for the preceding bibliographic services to the +vey issued biweekly. Annual subscription. domestic S35: foreign National Bureau of Standards, Cryogenic Data Center (736) +S45 Boulder, CO 80303. + +Liquefied Natural Gas. A literati,' e sur issued quarterly•nnuJ1 +suhsolption S30 + +U.S. DEPARTMENT OF COMMERCE + +National Bureau of Standards +Washington. D.C. 20234 + + POSTAGE ANO FEES PAID +OFFICIAL BUSINESSU.S. DEPARTMENT OF COMMERCE + COM¦215 + + +Penalty for Private Use. $300 + 111 + + + + + + + + SPECIAL FOURTH-CLASS RATE + + BOOK + diff --git a/NBS2/P001.80 b/NBS2/P001.80 new file mode 100644 index 0000000..9442b85 --- /dev/null +++ b/NBS2/P001.80 @@ -0,0 +1,93 @@ +PROGRAM FILE 1: NULL PRINT AND PRINTING QUOTED STRINGS. + ANSI STANDARD 3.2, 3.4, 5.2, 5.4, 12.2, 12.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE END STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + + + * * * * * * * * * * * * * * * * * * + * * + * MINIMAL BASIC TEST PROGRAMS * + * VERSION 2 * + * * + * PRODUCT OF * + * NATIONAL BUREAU OF STANDARDS * + * * + * * * * * * * * * * * * * * * * * * + +SECTION 1.1: NULL PRINT. + + BEGIN TEST. + THIS IS LINE 1. + THIS IS LINE 2. + + THIS IS LINE 4, 3 SHOULD HAVE BEEN SKIPPED. + THIS IS LINE 5. + + + THIS IS LINE 8, 6 AND 7 SHOULD HAVE BEEN SKIPPED. + +*** TEST PASSED IF LINES 2 AND 4 HAVE A BLANK LINE BETWEEN + THEM, AND LINES 5 AND 8 TWO BLANK LINES *** + + END TEST. + +SECTION 2.1: LEGAL CHARACTERS IN PRINTING QUOTED STRINGS. + + BEGIN TEST. + + LINE BELOW MUST PRINT OUT UPPER CASE LETTERS A THROUGH Z + ABCDEFGHIJKLMNOPQRSTUVWXYZ + + LINE BELOW MUST PRINT OUT DIGITS ZERO THROUGH NINE. + 0123456789 + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, LEFT +PARENTHESIS, RIGHT PARENTHESIS, AMPERSAND, EXCLAMATION +POINT, NUMBER SIGN, PERCENT, APOSTROPHE, QUESTION MARK, +ASTERISK, AND DOLLAR SIGN. + ()&!#%'?*$ + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, PLUS, +COMMA, MINUS, SLANT, LESS-THAN, EQUALS, GREATER-THAN, +CIRCUMFLEX, AND PERIOD. + +,-/<=>^. + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, COLON, +SPACE, SEMI-COLON, AND UNDERLINE. + : ;_ + +*** TEST PASSED IF THE ABOVE SPECIFICATIONS WERE MET *** + + END TEST. + +SECTION 1.3: SPACES IN QUOTED STRINGS. + + BEGIN TEST. + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + A CD GH LM RS YZ + +*** TEST PASSED IF THE SECOND LINE OF ALPHA CHARACTERS IN + THE ABOVE TEST HAS BLANKS WHERE THE LETTERS B, E, F, + I, J, K, N, O, P, Q, T, U, V, W, AND X APPEAR IN THE + FIRST LINE. *** + + END TEST. + +SECTION 1.4: PRINTING THE NULL STRING. + + BEGIN TEST. + +THE NEXT STATEMENT PRINTS A NULL QUOTED STRING. + +THE LINE ABOVE MUST BE BLANK AS A RESULT OF PRINTING +A NULL QUOTED STRING. + +*** TEST PASSED IF THE ABOVE SPECIFICATIONS WERE MET *** + + END TEST. + +END PROGRAM 1 diff --git a/NBS2/P001.BAS b/NBS2/P001.BAS new file mode 100644 index 0000000..aeaf6a1 --- /dev/null +++ b/NBS2/P001.BAS @@ -0,0 +1,94 @@ +10 PRINT "PROGRAM FILE 1: NULL PRINT AND PRINTING QUOTED STRINGS." +20 PRINT " ANSI STANDARD 3.2, 3.4, 5.2, 5.4, 12.2, 12.4" +30 PRINT +40 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF THE END STATEMENT" +50 PRINT " WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +60 PRINT " THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE " +70 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +80 PRINT +90 PRINT +100 PRINT " * * * * * * * * * * * * * * * * * *" +110 PRINT " * *" +120 PRINT " * MINIMAL BASIC TEST PROGRAMS *" +130 PRINT " * VERSION 2 *" +135 PRINT " * *" +140 PRINT " * PRODUCT OF *" +150 PRINT " * NATIONAL BUREAU OF STANDARDS *" +160 PRINT " * *" +170 PRINT " * * * * * * * * * * * * * * * * * *" +180 PRINT +190 PRINT "SECTION 1.1: NULL PRINT. " +200 PRINT +210 PRINT " BEGIN TEST." +220 PRINT " THIS IS LINE 1." +230 PRINT " THIS IS LINE 2." +240 PRINT +250 PRINT " THIS IS LINE 4, 3 SHOULD HAVE BEEN SKIPPED." +260 PRINT " THIS IS LINE 5." +270 PRINT +280 PRINT +290 PRINT " THIS IS LINE 8, 6 AND 7 SHOULD HAVE BEEN SKIPPED." +300 PRINT +310 PRINT "*** TEST PASSED IF LINES 2 AND 4 HAVE A BLANK LINE BETWEEN" +320 PRINT " THEM, AND LINES 5 AND 8 TWO BLANK LINES ***" +330 PRINT +340 PRINT " END TEST." +350 PRINT +360 PRINT "SECTION 2.1: LEGAL CHARACTERS IN PRINTING QUOTED STRINGS." +390 PRINT +400 PRINT " BEGIN TEST." +410 PRINT +420 PRINT " LINE BELOW MUST PRINT OUT UPPER CASE LETTERS A THROUGH Z" +430 PRINT " ABCDEFGHIJKLMNOPQRSTUVWXYZ" +440 PRINT +450 PRINT " LINE BELOW MUST PRINT OUT DIGITS ZERO THROUGH NINE." +460 PRINT " 0123456789" +470 PRINT +480 PRINT "LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, LEFT" +490 PRINT "PARENTHESIS, RIGHT PARENTHESIS, AMPERSAND, EXCLAMATION" +500 PRINT "POINT, NUMBER SIGN, PERCENT, APOSTROPHE, QUESTION MARK," +510 PRINT "ASTERISK, AND DOLLAR SIGN." +520 PRINT " ()&!#%'?*$" +530 PRINT +540 PRINT "LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, PLUS," +550 PRINT "COMMA, MINUS, SLANT, LESS-THAN, EQUALS, GREATER-THAN," +560 PRINT "CIRCUMFLEX, AND PERIOD." +570 PRINT " +,-/<=>^." +580 PRINT +590 PRINT "LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, COLON," +600 PRINT "SPACE, SEMI-COLON, AND UNDERLINE." +610 PRINT " : ;_" +620 PRINT +630 PRINT "*** TEST PASSED IF THE ABOVE SPECIFICATIONS WERE MET ***" +640 PRINT +650 PRINT " END TEST." +660 PRINT +670 PRINT "SECTION 1.3: SPACES IN QUOTED STRINGS." +690 PRINT +700 PRINT " BEGIN TEST." +710 PRINT +720 PRINT " ABCDEFGHIJKLMNOPQRSTUVWXYZ" +730 PRINT " A CD GH LM RS YZ" +740 PRINT +750 PRINT "*** TEST PASSED IF THE SECOND LINE OF ALPHA CHARACTERS IN " +760 PRINT " THE ABOVE TEST HAS BLANKS WHERE THE LETTERS B, E, F," +770 PRINT " I, J, K, N, O, P, Q, T, U, V, W, AND X APPEAR IN THE " +775 PRINT " FIRST LINE. ***" +780 PRINT +790 PRINT " END TEST." +800 PRINT +810 PRINT "SECTION 1.4: PRINTING THE NULL STRING." +830 PRINT +840 PRINT " BEGIN TEST." +850 PRINT +870 PRINT "THE NEXT STATEMENT PRINTS A NULL QUOTED STRING." +890 PRINT "" +900 PRINT "THE LINE ABOVE MUST BE BLANK AS A RESULT OF PRINTING" +910 PRINT "A NULL QUOTED STRING." +920 PRINT +930 PRINT "*** TEST PASSED IF THE ABOVE SPECIFICATIONS WERE MET ***" +940 PRINT +950 PRINT " END TEST." +960 PRINT +970 PRINT "END PROGRAM 1" +980 END diff --git a/NBS2/P001.OUT b/NBS2/P001.OUT new file mode 100644 index 0000000..2484ca7 --- /dev/null +++ b/NBS2/P001.OUT @@ -0,0 +1,93 @@ +PROGRAM FILE 1: NULL PRINT AND PRINTING QUOTED STRINGS. + ANSI STANDARD 3.2, 3.4, 5.2, 5.4, 12.2, 12.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE END STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + + + * * * * * * * * * * * * * * * * * * + * * + * MINIMAL BASIC TEST PROGRAMS * + * VERSION 2 * + * * + * PRODUCT OF * + * NATIONAL BUREAU OF STANDARDS * + * * + * * * * * * * * * * * * * * * * * * + +SECTION 1.1: NULL PRINT. + + BEGIN TEST. + THIS IS LINE 1. + THIS IS LINE 2. + + THIS IS LINE 4, 3 SHOULD HAVE BEEN SKIPPED. + THIS IS LINE 5. + + + THIS IS LINE 8, 6 AND 7 SHOULD HAVE BEEN SKIPPED. + +*** TEST PASSED IF LINES 2 AND 4 HAVE A BLANK LINE BETWEEN + THEM, AND LINES 5 AND 8 TWO BLANK LINES *** + + END TEST. + +SECTION 2.1: LEGAL CHARACTERS IN PRINTING QUOTED STRINGS. + + BEGIN TEST. + + LINE BELOW MUST PRINT OUT UPPER CASE LETTERS A THROUGH Z + ABCDEFGHIJKLMNOPQRSTUVWXYZ + + LINE BELOW MUST PRINT OUT DIGITS ZERO THROUGH NINE. + 0123456789 + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, LEFT +PARENTHESIS, RIGHT PARENTHESIS, AMPERSAND, EXCLAMATION +POINT, NUMBER SIGN, PERCENT, APOSTROPHE, QUESTION MARK, +ASTERISK, AND DOLLAR SIGN. + ()&!#%'?*$ + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, PLUS, +COMMA, MINUS, SLANT, LESS-THAN, EQUALS, GREATER-THAN, +CIRCUMFLEX, AND PERIOD. + +,-/<=>^. + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, COLON, +SPACE, SEMI-COLON, AND UNDERLINE. + : ;_ + +*** TEST PASSED IF THE ABOVE SPECIFICATIONS WERE MET *** + + END TEST. + +SECTION 1.3: SPACES IN QUOTED STRINGS. + + BEGIN TEST. + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + A CD GH LM RS YZ + +*** TEST PASSED IF THE SECOND LINE OF ALPHA CHARACTERS IN + THE ABOVE TEST HAS BLANKS WHERE THE LETTERS B, E, F, + I, J, K, N, O, P, Q, T, U, V, W, AND X APPEAR IN THE + FIRST LINE. *** + + END TEST. + +SECTION 1.4: PRINTING THE NULL STRING. + + BEGIN TEST. + +THE NEXT STATEMENT PRINTS A NULL QUOTED STRING. + +THE LINE ABOVE MUST BE BLANK AS A RESULT OF PRINTING +A NULL QUOTED STRING. + +*** TEST PASSED IF THE ABOVE SPECIFICATIONS WERE MET *** + + END TEST. + +END PROGRAM 1 diff --git a/NBS2/P001.dif b/NBS2/P001.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P001.run b/NBS2/P001.run new file mode 100644 index 0000000..9442b85 --- /dev/null +++ b/NBS2/P001.run @@ -0,0 +1,93 @@ +PROGRAM FILE 1: NULL PRINT AND PRINTING QUOTED STRINGS. + ANSI STANDARD 3.2, 3.4, 5.2, 5.4, 12.2, 12.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE END STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + + + * * * * * * * * * * * * * * * * * * + * * + * MINIMAL BASIC TEST PROGRAMS * + * VERSION 2 * + * * + * PRODUCT OF * + * NATIONAL BUREAU OF STANDARDS * + * * + * * * * * * * * * * * * * * * * * * + +SECTION 1.1: NULL PRINT. + + BEGIN TEST. + THIS IS LINE 1. + THIS IS LINE 2. + + THIS IS LINE 4, 3 SHOULD HAVE BEEN SKIPPED. + THIS IS LINE 5. + + + THIS IS LINE 8, 6 AND 7 SHOULD HAVE BEEN SKIPPED. + +*** TEST PASSED IF LINES 2 AND 4 HAVE A BLANK LINE BETWEEN + THEM, AND LINES 5 AND 8 TWO BLANK LINES *** + + END TEST. + +SECTION 2.1: LEGAL CHARACTERS IN PRINTING QUOTED STRINGS. + + BEGIN TEST. + + LINE BELOW MUST PRINT OUT UPPER CASE LETTERS A THROUGH Z + ABCDEFGHIJKLMNOPQRSTUVWXYZ + + LINE BELOW MUST PRINT OUT DIGITS ZERO THROUGH NINE. + 0123456789 + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, LEFT +PARENTHESIS, RIGHT PARENTHESIS, AMPERSAND, EXCLAMATION +POINT, NUMBER SIGN, PERCENT, APOSTROPHE, QUESTION MARK, +ASTERISK, AND DOLLAR SIGN. + ()&!#%'?*$ + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, PLUS, +COMMA, MINUS, SLANT, LESS-THAN, EQUALS, GREATER-THAN, +CIRCUMFLEX, AND PERIOD. + +,-/<=>^. + +LINE BELOW MUST PRINT OUT, IN THE FOLLOWING ORDER, COLON, +SPACE, SEMI-COLON, AND UNDERLINE. + : ;_ + +*** TEST PASSED IF THE ABOVE SPECIFICATIONS WERE MET *** + + END TEST. + +SECTION 1.3: SPACES IN QUOTED STRINGS. + + BEGIN TEST. + + ABCDEFGHIJKLMNOPQRSTUVWXYZ + A CD GH LM RS YZ + +*** TEST PASSED IF THE SECOND LINE OF ALPHA CHARACTERS IN + THE ABOVE TEST HAS BLANKS WHERE THE LETTERS B, E, F, + I, J, K, N, O, P, Q, T, U, V, W, AND X APPEAR IN THE + FIRST LINE. *** + + END TEST. + +SECTION 1.4: PRINTING THE NULL STRING. + + BEGIN TEST. + +THE NEXT STATEMENT PRINTS A NULL QUOTED STRING. + +THE LINE ABOVE MUST BE BLANK AS A RESULT OF PRINTING +A NULL QUOTED STRING. + +*** TEST PASSED IF THE ABOVE SPECIFICATIONS WERE MET *** + + END TEST. + +END PROGRAM 1 diff --git a/NBS2/P002.80 b/NBS2/P002.80 new file mode 100644 index 0000000..a0ba78d --- /dev/null +++ b/NBS2/P002.80 @@ -0,0 +1,17 @@ +PROGRAM FILE 2: THE END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 2.1: THE END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR TERMINATES +THE BASIC PROGRAM WHEN IT ENCOUNTERS AN END STATEMENT. + + BEGIN TEST. + +*** TEST PASSES IF 'END PROGRAM 2' IS THE LAST OUTPUT + GENERATED BY THIS PROGRAM, FOLLOWED BY NORMAL + TERMINATION OF EXECUTION. *** + + END TEST. + +END PROGRAM 2 diff --git a/NBS2/P002.BAS b/NBS2/P002.BAS new file mode 100644 index 0000000..35a8d83 --- /dev/null +++ b/NBS2/P002.BAS @@ -0,0 +1,18 @@ +10 PRINT "PROGRAM FILE 2: THE END-STATEMENT." +20 PRINT " ANSI STANDARD 4.2, 4.4" +30 PRINT +40 PRINT "SECTION 2.1: THE END-STATEMENT." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR TERMINATES" +70 PRINT "THE BASIC PROGRAM WHEN IT ENCOUNTERS AN END STATEMENT." +80 PRINT +90 PRINT " BEGIN TEST." +100 PRINT +110 PRINT "*** TEST PASSES IF 'END PROGRAM 2' IS THE LAST OUTPUT" +120 PRINT " GENERATED BY THIS PROGRAM, FOLLOWED BY NORMAL " +125 PRINT " TERMINATION OF EXECUTION. ***" +130 PRINT +140 PRINT " END TEST." +150 PRINT +160 PRINT "END PROGRAM 2" +170 END diff --git a/NBS2/P002.OUT b/NBS2/P002.OUT new file mode 100644 index 0000000..812284f --- /dev/null +++ b/NBS2/P002.OUT @@ -0,0 +1,17 @@ +PROGRAM FILE 2: THE END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 2.1: THE END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR TERMINATES +THE BASIC PROGRAM WHEN IT ENCOUNTERS AN END STATEMENT. + + BEGIN TEST. + +*** TEST PASSES IF 'END PROGRAM 2' IS THE LAST OUTPUT + GENERATED BY THIS PROGRAM, FOLLOWED BY NORMAL + TERMINATION OF EXECUTION. *** + + END TEST. + +END PROGRAM 2 diff --git a/NBS2/P002.dif b/NBS2/P002.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P002.run b/NBS2/P002.run new file mode 100644 index 0000000..a0ba78d --- /dev/null +++ b/NBS2/P002.run @@ -0,0 +1,17 @@ +PROGRAM FILE 2: THE END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 2.1: THE END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR TERMINATES +THE BASIC PROGRAM WHEN IT ENCOUNTERS AN END STATEMENT. + + BEGIN TEST. + +*** TEST PASSES IF 'END PROGRAM 2' IS THE LAST OUTPUT + GENERATED BY THIS PROGRAM, FOLLOWED BY NORMAL + TERMINATION OF EXECUTION. *** + + END TEST. + +END PROGRAM 2 diff --git a/NBS2/P003.80 b/NBS2/P003.80 new file mode 100644 index 0000000..7b3a5ae --- /dev/null +++ b/NBS2/P003.80 @@ -0,0 +1,26 @@ +PROGRAM FILE 3: ERROR - MISPLACED END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 3.1: ERROR - MISPLACED END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING AN END STATEMENT WHICH IS +NOT PHYSICALLY LAST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF THIS SENTENCE IS THE LAST SENTENCE PRINTED, THE PROCESSOR +DID NOT EXECUTE ANY MORE STATEMENTS AFTER ENCOUNTERING AN +END-STATEMENT IN THE MIDDLE OF THE PROGRAM. diff --git a/NBS2/P003.BAS b/NBS2/P003.BAS new file mode 100644 index 0000000..696a2de --- /dev/null +++ b/NBS2/P003.BAS @@ -0,0 +1,36 @@ +10 PRINT "PROGRAM FILE 3: ERROR - MISPLACED END-STATEMENT." +20 PRINT " ANSI STANDARD 4.2, 4.4" +30 PRINT +40 PRINT "SECTION 3.1: ERROR - MISPLACED END-STATEMENT." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR" +70 PRINT "ACCEPTS PROGRAMS CONTAINING AN END STATEMENT WHICH IS" +80 PRINT "NOT PHYSICALLY LAST." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 PRINT "IF THIS SENTENCE IS THE LAST SENTENCE PRINTED, THE PROCESSOR" +250 PRINT "DID NOT EXECUTE ANY MORE STATEMENTS AFTER ENCOUNTERING AN" +260 PRINT "END-STATEMENT IN THE MIDDLE OF THE PROGRAM." +270 END +280 PRINT +290 PRINT "IF THIS SENTENCE IS PRINTED OUT, THE PROCESSOR CONTINUED TO" +300 PRINT "EXECUTE STATEMENTS AFTER ENCOUNTERING AN END-STATEMENT" +310 PRINT "IN THE MIDDLE OF THE PROGRAM." +320 PRINT +330 PRINT " END TEST." +340 PRINT +350 PRINT "END PROGRAM 3" +360 END diff --git a/NBS2/P003.OUT b/NBS2/P003.OUT new file mode 100644 index 0000000..3a9ce59 --- /dev/null +++ b/NBS2/P003.OUT @@ -0,0 +1,26 @@ +PROGRAM FILE 3: ERROR - MISPLACED END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 3.1: ERROR - MISPLACED END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING AN END STATEMENT WHICH IS +NOT PHYSICALLY LAST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF THIS SENTENCE IS THE LAST SENTENCE PRINTED, THE PROCESSOR +DID NOT EXECUTE ANY MORE STATEMENTS AFTER ENCOUNTERING AN +END-STATEMENT IN THE MIDDLE OF THE PROGRAM. diff --git a/NBS2/P003.dif b/NBS2/P003.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P003.run b/NBS2/P003.run new file mode 100644 index 0000000..7b3a5ae --- /dev/null +++ b/NBS2/P003.run @@ -0,0 +1,26 @@ +PROGRAM FILE 3: ERROR - MISPLACED END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 3.1: ERROR - MISPLACED END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING AN END STATEMENT WHICH IS +NOT PHYSICALLY LAST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF THIS SENTENCE IS THE LAST SENTENCE PRINTED, THE PROCESSOR +DID NOT EXECUTE ANY MORE STATEMENTS AFTER ENCOUNTERING AN +END-STATEMENT IN THE MIDDLE OF THE PROGRAM. diff --git a/NBS2/P004.80 b/NBS2/P004.80 new file mode 100644 index 0000000..7e5c13f --- /dev/null +++ b/NBS2/P004.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 4: ERROR - MISSING END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 4.1: ERROR - MISSING END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS WHICH DO NOT CONTAIN AN END STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR IS EXECUTING A PROGRAM WHICH DOES NOT CONTAIN +AN END STATEMENT. + + END TEST. + +END PROGRAM 4 diff --git a/NBS2/P004.BAS b/NBS2/P004.BAS new file mode 100644 index 0000000..6e2e3fc --- /dev/null +++ b/NBS2/P004.BAS @@ -0,0 +1,28 @@ +10 PRINT "PROGRAM FILE 4: ERROR - MISSING END-STATEMENT." +20 PRINT " ANSI STANDARD 4.2, 4.4" +30 PRINT +40 PRINT "SECTION 4.1: ERROR - MISSING END-STATEMENT." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR" +70 PRINT "ACCEPTS PROGRAMS WHICH DO NOT CONTAIN AN END STATEMENT." +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT " BEGIN TEST." +220 PRINT +230 PRINT "THE PROCESSOR IS EXECUTING A PROGRAM WHICH DOES NOT CONTAIN" +240 PRINT "AN END STATEMENT." +250 PRINT +260 PRINT " END TEST." +270 PRINT +280 PRINT "END PROGRAM 4" diff --git a/NBS2/P004.OUT b/NBS2/P004.OUT new file mode 100644 index 0000000..10b2f48 --- /dev/null +++ b/NBS2/P004.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 4: ERROR - MISSING END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 4.1: ERROR - MISSING END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS WHICH DO NOT CONTAIN AN END STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR IS EXECUTING A PROGRAM WHICH DOES NOT CONTAIN +AN END STATEMENT. + + END TEST. + +END PROGRAM 4 diff --git a/NBS2/P004.dif b/NBS2/P004.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P004.run b/NBS2/P004.run new file mode 100644 index 0000000..7e5c13f --- /dev/null +++ b/NBS2/P004.run @@ -0,0 +1,28 @@ +PROGRAM FILE 4: ERROR - MISSING END-STATEMENT. + ANSI STANDARD 4.2, 4.4 + +SECTION 4.1: ERROR - MISSING END-STATEMENT. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS WHICH DO NOT CONTAIN AN END STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR IS EXECUTING A PROGRAM WHICH DOES NOT CONTAIN +AN END STATEMENT. + + END TEST. + +END PROGRAM 4 diff --git a/NBS2/P005.80 b/NBS2/P005.80 new file mode 100644 index 0000000..914e548 --- /dev/null +++ b/NBS2/P005.80 @@ -0,0 +1,11 @@ +PROGRAM FILE 5: THE STOP-STATEMENT. + ANSI STANDARD 10.2, 10.4 + +SECTION 5.1: THE STOP-STATEMENT. + + BEGIN TEST. + +IF PROGRAM EXECUTION TERMINATES AFTER THE NEXT LINE, + *** TEST PASSED *** + +Program interrupted at line 100 diff --git a/NBS2/P005.BAS b/NBS2/P005.BAS new file mode 100644 index 0000000..a72a901 --- /dev/null +++ b/NBS2/P005.BAS @@ -0,0 +1,17 @@ +10 PRINT "PROGRAM FILE 5: THE STOP-STATEMENT." +20 PRINT " ANSI STANDARD 10.2, 10.4" +30 PRINT +40 PRINT "SECTION 5.1: THE STOP-STATEMENT." +50 PRINT +60 PRINT " BEGIN TEST." +70 PRINT +80 PRINT "IF PROGRAM EXECUTION TERMINATES AFTER THE NEXT LINE," +90 PRINT " *** TEST PASSED ***" +100 STOP +110 PRINT "PROGRAM EXECUTION WAS NOT TERMINATED:" +120 PRINT " *** TEST FAILED ***" +130 PRINT +140 PRINT " END TEST." +150 PRINT +160 PRINT "END PROGRAM 5" +170 END diff --git a/NBS2/P005.OUT b/NBS2/P005.OUT new file mode 100644 index 0000000..732d480 --- /dev/null +++ b/NBS2/P005.OUT @@ -0,0 +1,11 @@ +PROGRAM FILE 5: THE STOP-STATEMENT. + ANSI STANDARD 10.2, 10.4 + +SECTION 5.1: THE STOP-STATEMENT. + + BEGIN TEST. + +IF PROGRAM EXECUTION TERMINATES AFTER THE NEXT LINE, + *** TEST PASSED *** + +Program interrupted at line 100 diff --git a/NBS2/P005.dif b/NBS2/P005.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P005.run b/NBS2/P005.run new file mode 100644 index 0000000..914e548 --- /dev/null +++ b/NBS2/P005.run @@ -0,0 +1,11 @@ +PROGRAM FILE 5: THE STOP-STATEMENT. + ANSI STANDARD 10.2, 10.4 + +SECTION 5.1: THE STOP-STATEMENT. + + BEGIN TEST. + +IF PROGRAM EXECUTION TERMINATES AFTER THE NEXT LINE, + *** TEST PASSED *** + +Program interrupted at line 100 diff --git a/NBS2/P006.80 b/NBS2/P006.80 new file mode 100644 index 0000000..f23f965 --- /dev/null +++ b/NBS2/P006.80 @@ -0,0 +1,135 @@ +PROGRAM FILE 6: PRINT-SEPARATORS, TABS, + AND STRING VARIABLES. + ANSI STANDARD 6.2, 6.4, 9.4, 12.2, 12.4 + +SECTION 6.1: SEMICOLON SEPARATOR WITH QUOTED STRINGS. + + BEGIN TEST. + + 1. 123 + 2. 123 + 3. 123 + 4. 123 + 5. 123 + +*** TEST PASSED IF THERE ARE EXACTLY FIVE NUMBERED LINES + ABOVE, EACH CONTAINING THE ADJACENT DIGITS '123', AND + IF THEY ARE LINED UP IN A COLUMN *** + + END TEST. + +SECTION 6.2: THE COMMA SEPARATOR WITH QUOTED STRINGS. + + BEGIN TEST. + +THE PRINT LINE SHOULD BE DIVIDED INTO EQUAL ZONES WHICH +ENABLE THE COMMA SEPARATOR TO ACT AS A TAB WHEN PRINTING +A SERIES OF COMMA-SEPARATED ITEMS. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +XYZ XYZ XYZ + +*** TEST PASSED IF 3 SETS OF THE CHARACTERS 'XYZ' ARE EVENLY + SPACED ON A SINGLE LINE IN THE ABOVE TEST AND WIDTH + OF A PRINT ZONE IS AS DOCUMENTED *** + + END TEST. + +SECTION 6.3: TABBING QUOTED STRINGS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 + 1 + 2 + 3 + +*** TEST PASSED IF A '1' IS PRINTED BELOW COLUMN HEADING 24. + A '2' BELOW 48 AND A '3' BELOW 59 IN THE ABOVE TEST *** + + END TEST. + +SECTION 6.4: THE ASSIGNMENT OF QUOTED STRINGS. + + BEGIN TEST. + +THIS TEST ASSIGNS THE SAME QUOTED STRING TO ALL LEGAL STRING +VARIABLES: A$ THROUGH Z$, USING A SERIES OF LET-STATEMENTS. +A$ IS ASSIGNED THE QUOTED STRING, THEN B$ IS ASSIGNED A$ ... +THROUGH Z$ ASSIGNED Y$. + + Z$ = 18 CHARACTERS LONG + +*** TEST PASSED IF 'Z$ = 18 CHARACTERS LONG' IS PRINTED + IN THE ABOVE TEST *** + + END TEST. + +SECTION 6.5: SEMICOLON SEPARATOR WITH ASSIGNED STRINGS + AND CONSTANTS. + + BEGIN TEST. + + 1.123 + 2.123 + 3.123 + 4.123 + 5.123 + +*** TEST PASSED IF THERE ARE EXACTLY FIVE NUMBERED LINES + ABOVE, EACH CONTAINING THE ADJACENT DIGITS '123', AND + IF THEY ARE LINED UP IN A COLUMN *** + + END TEST. + +SECTION 6.6: COMMA SEPARATOR - ASSIGNED STRINGS + AND CONSTANTS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +XYZ XYZ XYZ + +*** TEST PASSED IF 3 SETS OF THE CHARACTERS 'XYZ' ARE + EVENLY SPACED ON A SINGLE LINE IN THE ABOVE TEST AND + WIDTH OF PRINT ZONE IS AS DOCUMENTED *** + + END TEST. + +SECTION 6.7: TABBING ASSIGNED STRINGS AND CONSTANTS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 + 1 + 2 + 3 + +*** TEST PASSED IF A '1' PRINTS BELOW COLUMN HEADING 24, + A '2' BELOW 48, AND A '3' BELOW 59 *** + + END TEST. + +SECTION 6.8: NULL PRINT ITEMS. + +THIS TEST DETERMINES WHETHER THE PROCESSOR RECOGNIZES +CONSECUTIVE COMMAS IN A PRINT-STATEMENT AS TAB POSITIONS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +PRINT-ZONE IDENTIFIERS: +1 2 3 4 + A + +*** TEST PASSED IF AN 'A' IS IN THE BEGINNING COLUMN OF THE + FOURTH PRINT ZONE FOR THIS SYSTEM *** + + END TEST. + +END PROGRAM 6 diff --git a/NBS2/P006.BAS b/NBS2/P006.BAS new file mode 100644 index 0000000..8eccd9f --- /dev/null +++ b/NBS2/P006.BAS @@ -0,0 +1,190 @@ +10 PRINT "PROGRAM FILE 6: PRINT-SEPARATORS, TABS," +15 PRINT " AND STRING VARIABLES." +20 PRINT " ANSI STANDARD 6.2, 6.4, 9.4, 12.2, 12.4" +30 PRINT +40 PRINT "SECTION 6.1: SEMICOLON SEPARATOR WITH QUOTED STRINGS." +60 PRINT +70 PRINT " BEGIN TEST." +80 PRINT +90 PRINT " 1. 123" +100 PRINT " 2. 1";"2";"3" +110 PRINT " 3. 1"; +120 PRINT "23" +130 PRINT " 4. 12"; +140 PRINT "3" +150 PRINT " 5. 1"; +160 PRINT "2"; +170 PRINT "3" +180 PRINT +190 PRINT "*** TEST PASSED IF THERE ARE EXACTLY FIVE NUMBERED LINES" +200 PRINT " ABOVE, EACH CONTAINING THE ADJACENT DIGITS '123', AND" +205 PRINT " IF THEY ARE LINED UP IN A COLUMN ***" +210 PRINT +220 PRINT " END TEST." +380 PRINT +390 PRINT "SECTION 6.2: THE COMMA SEPARATOR WITH QUOTED STRINGS." +410 PRINT +420 PRINT " BEGIN TEST." +430 PRINT +440 PRINT "THE PRINT LINE SHOULD BE DIVIDED INTO EQUAL ZONES WHICH " +450 PRINT "ENABLE THE COMMA SEPARATOR TO ACT AS A TAB WHEN PRINTING" +460 PRINT "A SERIES OF COMMA-SEPARATED ITEMS." +470 PRINT +480 PRINT "00000000011111111112222222222333333333344444444445"; +490 PRINT "5555555556" +500 PRINT "12345678901234567890123456789012345678901234567890"; +510 PRINT "1234567890" +520 PRINT "XYZ","XYZ","XYZ" +530 PRINT +540 PRINT "*** TEST PASSED IF 3 SETS OF THE CHARACTERS 'XYZ' ARE EVENLY" +550 PRINT " SPACED ON A SINGLE LINE IN THE ABOVE TEST AND WIDTH" +555 PRINT " OF A PRINT ZONE IS AS DOCUMENTED ***" +560 PRINT +570 PRINT " END TEST." +580 PRINT +590 PRINT "SECTION 6.3: TABBING QUOTED STRINGS." +610 PRINT +620 PRINT " BEGIN TEST." +630 PRINT +640 PRINT "00000000011111111112222222222333333333344444444445"; +650 PRINT "5555555556" +660 PRINT "12345678901234567890123456789012345678901234567890"; +670 PRINT "1234567890" +680 PRINT TAB(24);"1" +690 PRINT TAB(48);"2" +700 PRINT TAB(59);"3" +710 PRINT +720 PRINT "*** TEST PASSED IF A '1' IS PRINTED BELOW COLUMN HEADING 24." +730 PRINT " A '2' BELOW 48 AND A '3' BELOW 59 IN THE ABOVE TEST ***" +740 PRINT +750 PRINT " END TEST." +760 PRINT +770 PRINT "SECTION 6.4: THE ASSIGNMENT OF QUOTED STRINGS." +790 PRINT +800 PRINT " BEGIN TEST." +810 PRINT +820 PRINT "THIS TEST ASSIGNS THE SAME QUOTED STRING TO ALL LEGAL STRING" +830 PRINT "VARIABLES: A$ THROUGH Z$, USING A SERIES OF LET-STATEMENTS." +840 PRINT "A$ IS ASSIGNED THE QUOTED STRING, THEN B$ IS ASSIGNED A$ ..." +850 PRINT "THROUGH Z$ ASSIGNED Y$." +860 PRINT +870 LET A$="18 CHARACTERS LONG" +880 LET B$=A$ +890 LET C$=B$ +900 LET D$=C$ +910 LET E$=D$ +920 LET F$=E$ +930 LET G$=F$ +940 LET H$=G$ +950 LET I$=H$ +960 LET J$=I$ +970 LET K$=J$ +980 LET L$=K$ +990 LET M$=L$ +1000 LET N$=M$ +1010 LET O$=N$ +1020 LET P$=O$ +1030 LET Q$=P$ +1040 LET R$=Q$ +1050 LET S$=R$ +1060 LET T$=S$ +1070 LET U$=T$ +1080 LET V$=U$ +1090 LET W$=V$ +1100 LET X$=W$ +1110 LET Y$=X$ +1120 LET Z$=Y$ +1130 PRINT " Z$ = ";Z$ +1140 PRINT +1150 PRINT "*** TEST PASSED IF 'Z$ = 18 CHARACTERS LONG' IS PRINTED" +1160 PRINT " IN THE ABOVE TEST ***" +1170 PRINT +1180 PRINT " END TEST." +1190 PRINT +1200 PRINT "SECTION 6.5: SEMICOLON SEPARATOR WITH ASSIGNED STRINGS" +1210 PRINT " AND CONSTANTS." +1220 PRINT +1230 PRINT " BEGIN TEST." +1240 PRINT +1250 LET A$="123" +1260 LET B$="1" +1270 LET C$="2" +1280 LET D$="3" +1290 LET E$="12" +1300 LET F$="23" +1310 PRINT " 1.";A$ +1320 PRINT " 2.";B$;C$;D$ +1330 PRINT " 3.";B$; +1340 PRINT F$ +1350 PRINT " 4.";"12"; +1360 PRINT D$ +1370 PRINT " 5.";B$; +1380 PRINT "2"; +1390 PRINT D$ +1400 PRINT +1410 PRINT "*** TEST PASSED IF THERE ARE EXACTLY FIVE NUMBERED LINES" +1420 PRINT " ABOVE, EACH CONTAINING THE ADJACENT DIGITS '123', AND" +1425 PRINT " IF THEY ARE LINED UP IN A COLUMN ***" +1430 PRINT +1440 PRINT " END TEST." +1450 PRINT +1460 PRINT "SECTION 6.6: COMMA SEPARATOR - ASSIGNED STRINGS" +1470 PRINT " AND CONSTANTS." +1480 PRINT +1490 PRINT " BEGIN TEST." +1500 PRINT +1510 LET A$="XYZ" +1530 LET C$="XYZ" +1540 PRINT "00000000011111111112222222222333333333344444444445"; +1550 PRINT "5555555556" +1560 PRINT "12345678901234567890123456789012345678901234567890"; +1570 PRINT "1234567890" +1580 PRINT A$,"XYZ",C$ +1590 PRINT +1600 PRINT "*** TEST PASSED IF 3 SETS OF THE CHARACTERS 'XYZ' ARE " +1610 PRINT " EVENLY SPACED ON A SINGLE LINE IN THE ABOVE TEST AND " +1615 PRINT " WIDTH OF PRINT ZONE IS AS DOCUMENTED ***" +1620 PRINT +1630 PRINT " END TEST." +1640 PRINT +1650 PRINT "SECTION 6.7: TABBING ASSIGNED STRINGS AND CONSTANTS." +1670 PRINT +1680 PRINT " BEGIN TEST." +1690 PRINT +1700 LET A$="1" +1720 LET C$="3" +1730 PRINT "00000000011111111112222222222333333333344444444445"; +1740 PRINT "5555555556" +1750 PRINT "12345678901234567890123456789012345678901234567890"; +1760 PRINT "1234567890" +1770 PRINT TAB(24);A$ +1780 PRINT TAB(48);"2" +1790 PRINT TAB(59);C$ +1800 PRINT +1810 PRINT "*** TEST PASSED IF A '1' PRINTS BELOW COLUMN HEADING 24," +1820 PRINT " A '2' BELOW 48, AND A '3' BELOW 59 ***" +1830 PRINT +1840 PRINT " END TEST." +1850 PRINT +1860 PRINT "SECTION 6.8: NULL PRINT ITEMS." +1870 PRINT +1880 PRINT "THIS TEST DETERMINES WHETHER THE PROCESSOR RECOGNIZES" +1890 PRINT "CONSECUTIVE COMMAS IN A PRINT-STATEMENT AS TAB POSITIONS." +1900 PRINT +1910 PRINT " BEGIN TEST." +1920 PRINT +1930 PRINT "00000000011111111112222222222333333333344444444445"; +1940 PRINT "5555555556" +1950 PRINT "12345678901234567890123456789012345678901234567890"; +1960 PRINT "1234567890" +1965 PRINT "PRINT-ZONE IDENTIFIERS:" +1970 PRINT "1","2","3","4" +1980 PRINT , , ,"A" +1990 PRINT +2000 PRINT "*** TEST PASSED IF AN 'A' IS IN THE BEGINNING COLUMN OF THE" +2010 PRINT " FOURTH PRINT ZONE FOR THIS SYSTEM ***" +2020 PRINT +2030 PRINT " END TEST." +2040 PRINT +2050 PRINT "END PROGRAM 6" +2060 END diff --git a/NBS2/P006.OUT b/NBS2/P006.OUT new file mode 100644 index 0000000..d9e21ab --- /dev/null +++ b/NBS2/P006.OUT @@ -0,0 +1,135 @@ +PROGRAM FILE 6: PRINT-SEPARATORS, TABS, + AND STRING VARIABLES. + ANSI STANDARD 6.2, 6.4, 9.4, 12.2, 12.4 + +SECTION 6.1: SEMICOLON SEPARATOR WITH QUOTED STRINGS. + + BEGIN TEST. + + 1. 123 + 2. 123 + 3. 123 + 4. 123 + 5. 123 + +*** TEST PASSED IF THERE ARE EXACTLY FIVE NUMBERED LINES + ABOVE, EACH CONTAINING THE ADJACENT DIGITS '123', AND + IF THEY ARE LINED UP IN A COLUMN *** + + END TEST. + +SECTION 6.2: THE COMMA SEPARATOR WITH QUOTED STRINGS. + + BEGIN TEST. + +THE PRINT LINE SHOULD BE DIVIDED INTO EQUAL ZONES WHICH +ENABLE THE COMMA SEPARATOR TO ACT AS A TAB WHEN PRINTING +A SERIES OF COMMA-SEPARATED ITEMS. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +XYZ XYZ XYZ + +*** TEST PASSED IF 3 SETS OF THE CHARACTERS 'XYZ' ARE EVENLY + SPACED ON A SINGLE LINE IN THE ABOVE TEST AND WIDTH + OF A PRINT ZONE IS AS DOCUMENTED *** + + END TEST. + +SECTION 6.3: TABBING QUOTED STRINGS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 + 1 + 2 + 3 + +*** TEST PASSED IF A '1' IS PRINTED BELOW COLUMN HEADING 24. + A '2' BELOW 48 AND A '3' BELOW 59 IN THE ABOVE TEST *** + + END TEST. + +SECTION 6.4: THE ASSIGNMENT OF QUOTED STRINGS. + + BEGIN TEST. + +THIS TEST ASSIGNS THE SAME QUOTED STRING TO ALL LEGAL STRING +VARIABLES: A$ THROUGH Z$, USING A SERIES OF LET-STATEMENTS. +A$ IS ASSIGNED THE QUOTED STRING, THEN B$ IS ASSIGNED A$ ... +THROUGH Z$ ASSIGNED Y$. + + Z$ = 18 CHARACTERS LONG + +*** TEST PASSED IF 'Z$ = 18 CHARACTERS LONG' IS PRINTED + IN THE ABOVE TEST *** + + END TEST. + +SECTION 6.5: SEMICOLON SEPARATOR WITH ASSIGNED STRINGS + AND CONSTANTS. + + BEGIN TEST. + + 1.123 + 2.123 + 3.123 + 4.123 + 5.123 + +*** TEST PASSED IF THERE ARE EXACTLY FIVE NUMBERED LINES + ABOVE, EACH CONTAINING THE ADJACENT DIGITS '123', AND + IF THEY ARE LINED UP IN A COLUMN *** + + END TEST. + +SECTION 6.6: COMMA SEPARATOR - ASSIGNED STRINGS + AND CONSTANTS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +XYZ XYZ XYZ + +*** TEST PASSED IF 3 SETS OF THE CHARACTERS 'XYZ' ARE + EVENLY SPACED ON A SINGLE LINE IN THE ABOVE TEST AND + WIDTH OF PRINT ZONE IS AS DOCUMENTED *** + + END TEST. + +SECTION 6.7: TABBING ASSIGNED STRINGS AND CONSTANTS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 + 1 + 2 + 3 + +*** TEST PASSED IF A '1' PRINTS BELOW COLUMN HEADING 24, + A '2' BELOW 48, AND A '3' BELOW 59 *** + + END TEST. + +SECTION 6.8: NULL PRINT ITEMS. + +THIS TEST DETERMINES WHETHER THE PROCESSOR RECOGNIZES +CONSECUTIVE COMMAS IN A PRINT-STATEMENT AS TAB POSITIONS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +PRINT-ZONE IDENTIFIERS: +1 2 3 4 + A + +*** TEST PASSED IF AN 'A' IS IN THE BEGINNING COLUMN OF THE + FOURTH PRINT ZONE FOR THIS SYSTEM *** + + END TEST. + +END PROGRAM 6 diff --git a/NBS2/P006.dif b/NBS2/P006.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P006.run b/NBS2/P006.run new file mode 100644 index 0000000..f23f965 --- /dev/null +++ b/NBS2/P006.run @@ -0,0 +1,135 @@ +PROGRAM FILE 6: PRINT-SEPARATORS, TABS, + AND STRING VARIABLES. + ANSI STANDARD 6.2, 6.4, 9.4, 12.2, 12.4 + +SECTION 6.1: SEMICOLON SEPARATOR WITH QUOTED STRINGS. + + BEGIN TEST. + + 1. 123 + 2. 123 + 3. 123 + 4. 123 + 5. 123 + +*** TEST PASSED IF THERE ARE EXACTLY FIVE NUMBERED LINES + ABOVE, EACH CONTAINING THE ADJACENT DIGITS '123', AND + IF THEY ARE LINED UP IN A COLUMN *** + + END TEST. + +SECTION 6.2: THE COMMA SEPARATOR WITH QUOTED STRINGS. + + BEGIN TEST. + +THE PRINT LINE SHOULD BE DIVIDED INTO EQUAL ZONES WHICH +ENABLE THE COMMA SEPARATOR TO ACT AS A TAB WHEN PRINTING +A SERIES OF COMMA-SEPARATED ITEMS. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +XYZ XYZ XYZ + +*** TEST PASSED IF 3 SETS OF THE CHARACTERS 'XYZ' ARE EVENLY + SPACED ON A SINGLE LINE IN THE ABOVE TEST AND WIDTH + OF A PRINT ZONE IS AS DOCUMENTED *** + + END TEST. + +SECTION 6.3: TABBING QUOTED STRINGS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 + 1 + 2 + 3 + +*** TEST PASSED IF A '1' IS PRINTED BELOW COLUMN HEADING 24. + A '2' BELOW 48 AND A '3' BELOW 59 IN THE ABOVE TEST *** + + END TEST. + +SECTION 6.4: THE ASSIGNMENT OF QUOTED STRINGS. + + BEGIN TEST. + +THIS TEST ASSIGNS THE SAME QUOTED STRING TO ALL LEGAL STRING +VARIABLES: A$ THROUGH Z$, USING A SERIES OF LET-STATEMENTS. +A$ IS ASSIGNED THE QUOTED STRING, THEN B$ IS ASSIGNED A$ ... +THROUGH Z$ ASSIGNED Y$. + + Z$ = 18 CHARACTERS LONG + +*** TEST PASSED IF 'Z$ = 18 CHARACTERS LONG' IS PRINTED + IN THE ABOVE TEST *** + + END TEST. + +SECTION 6.5: SEMICOLON SEPARATOR WITH ASSIGNED STRINGS + AND CONSTANTS. + + BEGIN TEST. + + 1.123 + 2.123 + 3.123 + 4.123 + 5.123 + +*** TEST PASSED IF THERE ARE EXACTLY FIVE NUMBERED LINES + ABOVE, EACH CONTAINING THE ADJACENT DIGITS '123', AND + IF THEY ARE LINED UP IN A COLUMN *** + + END TEST. + +SECTION 6.6: COMMA SEPARATOR - ASSIGNED STRINGS + AND CONSTANTS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +XYZ XYZ XYZ + +*** TEST PASSED IF 3 SETS OF THE CHARACTERS 'XYZ' ARE + EVENLY SPACED ON A SINGLE LINE IN THE ABOVE TEST AND + WIDTH OF PRINT ZONE IS AS DOCUMENTED *** + + END TEST. + +SECTION 6.7: TABBING ASSIGNED STRINGS AND CONSTANTS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 + 1 + 2 + 3 + +*** TEST PASSED IF A '1' PRINTS BELOW COLUMN HEADING 24, + A '2' BELOW 48, AND A '3' BELOW 59 *** + + END TEST. + +SECTION 6.8: NULL PRINT ITEMS. + +THIS TEST DETERMINES WHETHER THE PROCESSOR RECOGNIZES +CONSECUTIVE COMMAS IN A PRINT-STATEMENT AS TAB POSITIONS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +PRINT-ZONE IDENTIFIERS: +1 2 3 4 + A + +*** TEST PASSED IF AN 'A' IS IN THE BEGINNING COLUMN OF THE + FOURTH PRINT ZONE FOR THIS SYSTEM *** + + END TEST. + +END PROGRAM 6 diff --git a/NBS2/P007.80 b/NBS2/P007.80 new file mode 100644 index 0000000..91bd875 --- /dev/null +++ b/NBS2/P007.80 @@ -0,0 +1,53 @@ +PROGRAM FILE 7: EXCEPTION - STRING OVERFLOW USING + THE LET-STATEMENT. + ANSI STANDARD 9.5, 12.4 + +SECTION 7.1: EXCEPTION - STRING OVERFLOW USING + THE LET-STATEMENT. + +STRING OVERFLOW OCCURS WHEN THE VALUE ASSIGNED TO A STRING +VARIABLE CONTAINS MORE CHARACTERS THAN CAN BE RETAINED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED AND EXECUTION MUST TERMINATE, OR + + 2) STRING OVERFLOW MUST NOT OCCUR + + BEGIN TEST. + +ABOUT TO ASSIGN STRING OF 19 CHARACTERS - +ABOUT TO ASSIGN STRING OF 20 CHARACTERS - +ABOUT TO ASSIGN STRING OF 30 CHARACTERS - +ABOUT TO ASSIGN STRING OF 40 CHARACTERS - +ABOUT TO ASSIGN STRING OF 50 CHARACTERS - +ABOUT TO ASSIGN STRING OF 58 CHARACTERS - +ALL ASSIGNMENTS COMPLETED. + +?*******19********! +?*******19********! + +?********20********! +?********20********! + +?*************30*************! +?*************30*************! + +?******************40******************! +?******************40******************! + +?***********************50***********************! +?***********************50***********************! + +?***************************58***************************! +?***************************58***************************! + +IF THE PAIRED LINES IN THE OUTPUT ARE IDENTICAL AND EACH + LINE STARTS WITH A QUESTION MARK AND ENDS WITH AN + EXCLAMATION POINT, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 7 diff --git a/NBS2/P007.BAS b/NBS2/P007.BAS new file mode 100644 index 0000000..1cf8f47 --- /dev/null +++ b/NBS2/P007.BAS @@ -0,0 +1,60 @@ +10 PRINT "PROGRAM FILE 7: EXCEPTION - STRING OVERFLOW USING" +15 PRINT " THE LET-STATEMENT." +20 PRINT " ANSI STANDARD 9.5, 12.4" +30 PRINT +40 PRINT "SECTION 7.1: EXCEPTION - STRING OVERFLOW USING" +50 PRINT " THE LET-STATEMENT." +60 PRINT +70 PRINT "STRING OVERFLOW OCCURS WHEN THE VALUE ASSIGNED TO A STRING" +80 PRINT "VARIABLE CONTAINS MORE CHARACTERS THAN CAN BE RETAINED." +82 PRINT +85 PRINT "TO PASS THIS TEST:" +90 PRINT +95 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +100 PRINT " DISPLAYED AND EXECUTION MUST TERMINATE, OR" +105 PRINT +110 PRINT " 2) STRING OVERFLOW MUST NOT OCCUR" +120 PRINT +130 PRINT " BEGIN TEST." +140 PRINT +145 PRINT "ABOUT TO ASSIGN STRING OF 19 CHARACTERS - " +150 LET A$="?*******19********!" +155 PRINT "ABOUT TO ASSIGN STRING OF 20 CHARACTERS - " +160 LET B$="?********20********!" +165 PRINT "ABOUT TO ASSIGN STRING OF 30 CHARACTERS - " +170 LET C$="?*************30*************!" +175 PRINT "ABOUT TO ASSIGN STRING OF 40 CHARACTERS - " +180 LET D$="?******************40******************!" +185 PRINT "ABOUT TO ASSIGN STRING OF 50 CHARACTERS - " +190 LET E$="?***********************50***********************!" +195 PRINT "ABOUT TO ASSIGN STRING OF 58 CHARACTERS - " +200 LET F$="?***************************58***************************!" +202 PRINT "ALL ASSIGNMENTS COMPLETED." +205 PRINT +210 PRINT "?*******19********!" +220 PRINT A$ +230 PRINT +240 PRINT "?********20********!" +250 PRINT B$ +260 PRINT +270 PRINT "?*************30*************!" +280 PRINT C$ +290 PRINT +300 PRINT "?******************40******************!" +310 PRINT D$ +320 PRINT +330 PRINT "?***********************50***********************!" +340 PRINT E$ +350 PRINT +360 PRINT "?***************************58***************************!" +370 PRINT F$ +380 PRINT +390 PRINT "IF THE PAIRED LINES IN THE OUTPUT ARE IDENTICAL AND EACH" +400 PRINT " LINE STARTS WITH A QUESTION MARK AND ENDS WITH AN" +410 PRINT " EXCLAMATION POINT, THEN" +420 PRINT "*** TEST PASSED ***" +440 PRINT +450 PRINT " END TEST." +460 PRINT +470 PRINT "END PROGRAM 7" +480 END diff --git a/NBS2/P007.OUT b/NBS2/P007.OUT new file mode 100644 index 0000000..3ea47e1 --- /dev/null +++ b/NBS2/P007.OUT @@ -0,0 +1,53 @@ +PROGRAM FILE 7: EXCEPTION - STRING OVERFLOW USING + THE LET-STATEMENT. + ANSI STANDARD 9.5, 12.4 + +SECTION 7.1: EXCEPTION - STRING OVERFLOW USING + THE LET-STATEMENT. + +STRING OVERFLOW OCCURS WHEN THE VALUE ASSIGNED TO A STRING +VARIABLE CONTAINS MORE CHARACTERS THAN CAN BE RETAINED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED AND EXECUTION MUST TERMINATE, OR + + 2) STRING OVERFLOW MUST NOT OCCUR + + BEGIN TEST. + +ABOUT TO ASSIGN STRING OF 19 CHARACTERS - +ABOUT TO ASSIGN STRING OF 20 CHARACTERS - +ABOUT TO ASSIGN STRING OF 30 CHARACTERS - +ABOUT TO ASSIGN STRING OF 40 CHARACTERS - +ABOUT TO ASSIGN STRING OF 50 CHARACTERS - +ABOUT TO ASSIGN STRING OF 58 CHARACTERS - +ALL ASSIGNMENTS COMPLETED. + +?*******19********! +?*******19********! + +?********20********! +?********20********! + +?*************30*************! +?*************30*************! + +?******************40******************! +?******************40******************! + +?***********************50***********************! +?***********************50***********************! + +?***************************58***************************! +?***************************58***************************! + +IF THE PAIRED LINES IN THE OUTPUT ARE IDENTICAL AND EACH + LINE STARTS WITH A QUESTION MARK AND ENDS WITH AN + EXCLAMATION POINT, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 7 diff --git a/NBS2/P007.dif b/NBS2/P007.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P007.run b/NBS2/P007.run new file mode 100644 index 0000000..91bd875 --- /dev/null +++ b/NBS2/P007.run @@ -0,0 +1,53 @@ +PROGRAM FILE 7: EXCEPTION - STRING OVERFLOW USING + THE LET-STATEMENT. + ANSI STANDARD 9.5, 12.4 + +SECTION 7.1: EXCEPTION - STRING OVERFLOW USING + THE LET-STATEMENT. + +STRING OVERFLOW OCCURS WHEN THE VALUE ASSIGNED TO A STRING +VARIABLE CONTAINS MORE CHARACTERS THAN CAN BE RETAINED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED AND EXECUTION MUST TERMINATE, OR + + 2) STRING OVERFLOW MUST NOT OCCUR + + BEGIN TEST. + +ABOUT TO ASSIGN STRING OF 19 CHARACTERS - +ABOUT TO ASSIGN STRING OF 20 CHARACTERS - +ABOUT TO ASSIGN STRING OF 30 CHARACTERS - +ABOUT TO ASSIGN STRING OF 40 CHARACTERS - +ABOUT TO ASSIGN STRING OF 50 CHARACTERS - +ABOUT TO ASSIGN STRING OF 58 CHARACTERS - +ALL ASSIGNMENTS COMPLETED. + +?*******19********! +?*******19********! + +?********20********! +?********20********! + +?*************30*************! +?*************30*************! + +?******************40******************! +?******************40******************! + +?***********************50***********************! +?***********************50***********************! + +?***************************58***************************! +?***************************58***************************! + +IF THE PAIRED LINES IN THE OUTPUT ARE IDENTICAL AND EACH + LINE STARTS WITH A QUESTION MARK AND ENDS WITH AN + EXCLAMATION POINT, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 7 diff --git a/NBS2/P008.80 b/NBS2/P008.80 new file mode 100644 index 0000000..a47b14a --- /dev/null +++ b/NBS2/P008.80 @@ -0,0 +1,70 @@ +PROGRAM FILE 8: EXCEPTION - TAB ARGUMENT + LESS THAN ONE. + ANSI STANDARD 12.5 + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTIONS MUST BE + DISPLAYED, AND + + 2) THE ARGUMENT TO TAB MUST BE REPLACED WITH A + VALUE OF ONE AND EXECUTION CONTINUES. + +SECTION 8.1: TAB ARGUMENT IS 0. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + +SECTION 8.2: TAB ARGUMENT IS NEGATIVE. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + + +SECTION 8.3: ROUNDED TAB ARGUMENT EQUAL TO ONE. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1 + AND NO EXCEPTION IS REPORTED *** + + END TEST. + +SECTION 8.4: FRACTIONAL TAB ARGUMENT LESS THAN ONE AFTER + ROUNDING + + BEING TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + +END PROGRAM 8 diff --git a/NBS2/P008.BAS b/NBS2/P008.BAS new file mode 100644 index 0000000..abcb4bb --- /dev/null +++ b/NBS2/P008.BAS @@ -0,0 +1,80 @@ +10 PRINT "PROGRAM FILE 8: EXCEPTION - TAB ARGUMENT" +15 PRINT " LESS THAN ONE." +20 PRINT " ANSI STANDARD 12.5" +50 PRINT +60 PRINT "TO PASS THIS TEST:" +65 PRINT +70 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTIONS MUST BE" +75 PRINT " DISPLAYED, AND" +80 PRINT +85 PRINT " 2) THE ARGUMENT TO TAB MUST BE REPLACED WITH A" +90 PRINT " VALUE OF ONE AND EXECUTION CONTINUES." +100 PRINT +110 PRINT "SECTION 8.1: TAB ARGUMENT IS 0." +120 PRINT +130 PRINT " BEGIN TEST." +140 PRINT +145 LET A=0 +150 PRINT "00000000011111111112222222222333333333344444444445"; +160 PRINT "5555555556" +170 PRINT "12345678901234567890123456789012345678901234567890"; +180 PRINT "1234567890" +190 PRINT TAB(A);"X" +200 PRINT +210 PRINT "*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A " +220 PRINT " SYSTEM MESSAGE IDENTIFYING THE EXCEPTION ***" +230 PRINT +240 PRINT " END TEST." +250 PRINT +260 PRINT "SECTION 8.2: TAB ARGUMENT IS NEGATIVE." +270 PRINT +280 PRINT " BEGIN TEST." +290 PRINT +295 LET A=-10 +300 PRINT "00000000011111111112222222222333333333344444444445"; +310 PRINT "5555555556" +320 PRINT "12345678901234567890123456789012345678901234567890"; +330 PRINT "1234567890" +340 PRINT TAB(A);"X" +350 PRINT +360 PRINT "*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A" +370 PRINT " SYSTEM MESSAGE IDENTIFYING THE EXCEPTION ***" +380 PRINT +390 PRINT " END TEST." +400 PRINT +430 PRINT +440 PRINT "SECTION 8.3: ROUNDED TAB ARGUMENT EQUAL TO ONE." +450 PRINT +460 PRINT " BEGIN TEST." +470 PRINT +475 LET A=.6 +480 PRINT "00000000011111111112222222222333333333344444444445"; +490 PRINT "5555555556" +500 PRINT "12345678901234567890123456789012345678901234567890"; +510 PRINT "1234567890" +530 PRINT TAB(A);"X" +540 PRINT +550 PRINT "*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1 " +555 PRINT " AND NO EXCEPTION IS REPORTED ***" +560 PRINT +570 PRINT " END TEST." +580 PRINT +590 PRINT "SECTION 8.4: FRACTIONAL TAB ARGUMENT LESS THAN ONE AFTER" +600 PRINT " ROUNDING" +610 PRINT +620 PRINT " BEING TEST." +630 PRINT +640 PRINT "00000000011111111112222222222333333333344444444445"; +650 PRINT "5555555556" +660 PRINT "12345678901234567890123456789012345678901234567890"; +670 PRINT "1234567890" +680 LET A=.4 +690 PRINT TAB(A);"X" +700 PRINT +710 PRINT "*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A" +720 PRINT " SYSTEM MESSAGE IDENTIFYING THE EXCEPTION ***" +730 PRINT +740 PRINT " END TEST." +750 PRINT +760 PRINT "END PROGRAM 8" +770 END diff --git a/NBS2/P008.OUT b/NBS2/P008.OUT new file mode 100644 index 0000000..24eff91 --- /dev/null +++ b/NBS2/P008.OUT @@ -0,0 +1,70 @@ +PROGRAM FILE 8: EXCEPTION - TAB ARGUMENT + LESS THAN ONE. + ANSI STANDARD 12.5 + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTIONS MUST BE + DISPLAYED, AND + + 2) THE ARGUMENT TO TAB MUST BE REPLACED WITH A + VALUE OF ONE AND EXECUTION CONTINUES. + +SECTION 8.1: TAB ARGUMENT IS 0. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + +SECTION 8.2: TAB ARGUMENT IS NEGATIVE. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + + +SECTION 8.3: ROUNDED TAB ARGUMENT EQUAL TO ONE. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1 + AND NO EXCEPTION IS REPORTED *** + + END TEST. + +SECTION 8.4: FRACTIONAL TAB ARGUMENT LESS THAN ONE AFTER + ROUNDING + + BEING TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + +END PROGRAM 8 diff --git a/NBS2/P008.dif b/NBS2/P008.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P008.run b/NBS2/P008.run new file mode 100644 index 0000000..a47b14a --- /dev/null +++ b/NBS2/P008.run @@ -0,0 +1,70 @@ +PROGRAM FILE 8: EXCEPTION - TAB ARGUMENT + LESS THAN ONE. + ANSI STANDARD 12.5 + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTIONS MUST BE + DISPLAYED, AND + + 2) THE ARGUMENT TO TAB MUST BE REPLACED WITH A + VALUE OF ONE AND EXECUTION CONTINUES. + +SECTION 8.1: TAB ARGUMENT IS 0. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + +SECTION 8.2: TAB ARGUMENT IS NEGATIVE. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + + +SECTION 8.3: ROUNDED TAB ARGUMENT EQUAL TO ONE. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1 + AND NO EXCEPTION IS REPORTED *** + + END TEST. + +SECTION 8.4: FRACTIONAL TAB ARGUMENT LESS THAN ONE AFTER + ROUNDING + + BEING TEST. + +000000000111111111122222222223333333333444444444455555555556 +123456789012345678901234567890123456789012345678901234567890 +*** WARNING: INVALID TAB() *** +X + +*** TEST PASSED IF AN X IS PRINTED IN COLUMN 1, AFTER A + SYSTEM MESSAGE IDENTIFYING THE EXCEPTION *** + + END TEST. + +END PROGRAM 8 diff --git a/NBS2/P009.80 b/NBS2/P009.80 new file mode 100644 index 0000000..42bf5b3 --- /dev/null +++ b/NBS2/P009.80 @@ -0,0 +1,203 @@ +PROGRAM FILE 9: PRINTING NR1 AND NR2 NUMERIC CONSTANTS. + ANS STANDARD 5.2, 5.4, 12.4 + +SECTION 9.1: CONSTANTS IN NR1 FORM (INTEGERS). + +COLUMNS 1 AND 3 SHOW THE OUTPUT AS IT SHOULD BE. +COLUMNS 2 AND 4 SHOW THE ACTUAL OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE ACTUAL SHOULD BE ACTUAL + 0 0 0 0 + 1 1 -1 -1 + 12 12 -12 -12 + 123 123 -123 -123 + 1234 1234 -1234 -1234 + 12345 12345 -12345 -12345 + 123456 123456 -123456 -123456 + 999999 999999 -999999 -999999 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE SAME + NUMERIC REPRESENTATION FOR EACH PAIR OF INTEGERS *** + + END TEST. + +SECTION 9.2: NR1 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + 1 -12 123 +-1234 12345 -123456 + 123456 -1234 123 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF INTEGERS *** + + END TEST. + +SECTION 9.3: SPACE ALLOCATED FOR PRINTED INTEGER CONSTANTS. + +PRINTED INTEGER CONSTANTS ARE PRECEDED BY A SPACE IF +POSITIVE, A MINUS IF NEGATIVE AND FOLLOWED BY A SPACE. +THE SPACE FOR THE CONSTANT IS DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE: * 1 * *-23 * * 456 * + ACTUAL: * 1 * *-23 * * 456 * + +SHOULD BE: * 7890 * *-12345 * * 678901 * + ACTUAL: * 7890 * *-12345 * * 678901 * + +*** TEST PASSED IF 'ACTUAL' LINES MATCH CORRESPONDING + 'SHOULD BE' LINES *** + + END TEST. + +SECTION 9.4: NR1 CONSTANTS SEPARATED BY SEMICOLONS. + +PRINTED INTEGER CONSTANTS ARE PRECEDED BY A SPACE IF +POSITIVE OR A MINUS IF NEGATIVE AND ARE FOLLOWED BY A SPACE. +THE SEMICOLON SEPARATOR PRODUCES A NULL STRING. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE: 0 0 1 -12 123 -1234 12345 -123456 + ACTUAL: 0 0 1 -12 123 -1234 12345 -123456 + +*** TEST PASSED IF 'ACTUAL' LINE MATCHES CORRESPONDING + 'SHOULD BE' LINE *** + + END TEST. + +SECTION 9.5: CONSTANTS IN NR2 FORM. + +COLUMNS 1 AND 3 SHOW THE OUTPUT AS IT SHOULD BE. +COLUMNS 2 AND 4 SHOW THE ACTUAL OUTPUT. + +EXPECTED OUTPUT IS DISPLAYED WITH TRAILING ZEROS +SUPPRESSED. IMPLEMENTATIONS MAY ADD TRAILING ZEROS UP TO +THEIR SIGNIFICAND-WIDTH, D. THUS .12 MAY BE DISPLAYED AS +'.1200' OR '.1200000' IF, FOR INSTANCE, D = 7. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE ACTUAL SHOULD BE ACTUAL + .1 .1 -.1 -.1 + .12 .12 -.12 -.12 + .123 .123 -.123 -.123 + .1234 .1234 -.1234 -.1234 + .12345 .12345 -.12345 -.12345 + .123456 .123456 -.123456 -.123456 + .234567 .234567 -.234567 -.234567 + .345678 .345678 -.345678 -.345678 + .456789 .456789 -.456789 -.456789 + .56789 .56789 -.56789 -.56789 + .6789 .6789 -.6789 -.6789 + .789 .789 -.789 -.789 + .89 .89 -.89 -.89 + .9 .9 -.9 -.9 + 0 0 0 0 + 1.23456 1.23456 -1.23456 -1.23456 + 9.876 9.876 -9.876 -9.876 + 12.3456 12.3456 -12.3456 -12.3456 + 123.456 123.456 -123.456 -123.456 + 1234.56 1234.56 -1234.56 -1234.56 + 12345.6 12345.6 -12345.6 -12345.6 + 23456.7 23456.7 -23456.7 -23456.7 + 34567.8 34567.8 -34567.8 -34567.8 + 45678.9 45678.9 -45678.9 -45678.9 + 56789.1 56789.1 -56789.1 -56789.1 + 67891.2 67891.2 -67891.2 -67891.2 + 78912.3 78912.3 -78912.3 -78912.3 + 89123.4 89123.4 -89123.4 -89123.4 + 91234.5 91234.5 -91234.5 -91234.5 + 99999.9 99999.9 -99999.9 -99999.9 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE + SAME REPRESENTATION FOR EACH PAIR OF NUMBERS + (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 9.6: USING NR2 INSTEAD OF NR3 FORMAT FOR + SIX-DIGIT CONSTANTS. + +NUMBERS THAT CAN BE REPRESENTED IN THE UNSCALED +REPRESENTATION NO LESS ACCURATELY THAN AS IN +SCALED FORMAT, SHALL BE OUTPUT USING THE UNSCALED FORMAT. + + BEGIN TEST. + +SHOULD BE ACTUAL SHOULD BE ACTUAL + + .022222 .022222 -.022222 -.022222 + .004444 .004444 -.004444 -.004444 + .000888 .000888 -.000888 -.000888 + .000044 .000044 -.000044 -.000044 + .000002 .000002 -.000002 -.000002 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE + SAME REPRESENTATION FOR EACH PAIR OF NUMBERS + (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 9.7: NR2 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + .123456 -99999.9 91234.5 +-1.23456 89123.4 -2.34567 + 295.64 .023 -67.8954 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF REAL NUMBERS USING EXPLICIT POINT, + UNSCALED REPRESENTATION *** + + END TEST. + +SECTION 9.8: SPACE ALLOTMENT FOR PRINTED NR2 NUMBERS. + +PRINTED NR2 CONSTANTS ARE PRECEDED BY A SPACE IF POSITIVE +OR BY A MINUS IF NEGATIVE, AND ARE FOLLOWED BY A SPACE. +THE FIELDS FOR THE CONSTANTS ARE DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +* 90000.1 * * .000123 * * .000009 * +* 900.001 * * .000123 * * .000009 * +*-.900001 * *-.000123 * *-.000009 * + +* .234567 * * 1.23456 * * 91.2345 * +* .234567 * * 1.23456 * * 91.2345 * +*-.234567 * *-1.23456 * *-91.2345 * + +* 865.789 * * 1234.56 * * 99999.9 * +* 865.789 * * 1234.56 * * 99999.9 * +*-865.789 * *-1234.56 * *-99999.9 * + +*** TEST PASSED IF EACH NUMBER IS PRECEDED BY A SPACE OR + A MINUS SIGN, AND FOLLOWED BY A SPACE AND THE NUMBERS + USE EXPLICIT POINT, UNSCALED REPRESENTATION *** + + END TEST. + +END PROGRAM 9 diff --git a/NBS2/P009.BAS b/NBS2/P009.BAS new file mode 100644 index 0000000..5c1980e --- /dev/null +++ b/NBS2/P009.BAS @@ -0,0 +1,218 @@ +10 PRINT "PROGRAM FILE 9: PRINTING NR1 AND NR2 NUMERIC CONSTANTS." +20 PRINT " ANS STANDARD 5.2, 5.4, 12.4" +30 PRINT +60 PRINT "SECTION 9.1: CONSTANTS IN NR1 FORM (INTEGERS)." +70 PRINT +80 PRINT "COLUMNS 1 AND 3 SHOW THE OUTPUT AS IT SHOULD BE." +100 PRINT "COLUMNS 2 AND 4 SHOW THE ACTUAL OUTPUT." +120 PRINT +130 PRINT " BEGIN TEST." +140 PRINT +150 PRINT "00000000011111111112222222222333333333344444444445"; +160 PRINT "5555555556666666666777" +170 PRINT "12345678901234567890123456789012345678901234567890"; +180 PRINT "1234567890123456789012" +190 PRINT "SHOULD BE","ACTUAL","SHOULD BE","ACTUAL" +200 PRINT " 0",+0," 0",-0 +210 PRINT " 1",+1,"-1",-1 +220 PRINT " 12",12,"-12",-12 +230 PRINT " 123",+123,"-123",-123 +240 PRINT " 1234",1234,"-1234",-1234 +250 PRINT " 12345",+12345,"-12345",-12345 +260 PRINT " 123456",123456,"-123456",-123456 +270 PRINT " 999999",+999999,"-999999",-999999 +280 PRINT +290 PRINT "*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE SAME" +300 PRINT " NUMERIC REPRESENTATION FOR EACH PAIR OF INTEGERS ***" +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "SECTION 9.2: NR1 CONSTANTS SEPARATED BY COMMAS TO PRODUCE" +350 PRINT " TABULAR OUTPUT." +360 PRINT +370 PRINT " BEGIN TEST." +380 PRINT +390 PRINT "00000000011111111112222222222333333333344444444445"; +400 PRINT "5555555556666666666777" +410 PRINT "12345678901234567890123456789012345678901234567890"; +420 PRINT "1234567890123456789012" +430 PRINT 1,-12,123 +440 PRINT -1234,12345,-123456 +450 PRINT 123456,-1234,123 +460 PRINT +470 PRINT "*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN" +480 PRINT " A COLUMN OF INTEGERS ***" +490 PRINT +500 PRINT " END TEST." +510 PRINT +520 PRINT "SECTION 9.3: SPACE ALLOCATED FOR PRINTED INTEGER CONSTANTS." +530 PRINT +540 PRINT "PRINTED INTEGER CONSTANTS ARE PRECEDED BY A SPACE IF" +550 PRINT "POSITIVE, A MINUS IF NEGATIVE AND FOLLOWED BY A SPACE." +560 PRINT "THE SPACE FOR THE CONSTANT IS DELIMITED BY ASTERISKS." +570 PRINT +580 PRINT " BEGIN TEST." +590 PRINT +600 PRINT "00000000011111111112222222222333333333344444444445"; +610 PRINT "5555555556666666666777" +620 PRINT "12345678901234567890123456789012345678901234567890"; +630 PRINT "1234567890123456789012" +640 PRINT "SHOULD BE:","* 1 *","*-23 *","* 456 *" +650 PRINT " ACTUAL:","*";+1;"*","*";-23;"*","*";456;"*" +660 PRINT +670 PRINT "SHOULD BE:","* 7890 *","*-12345 *","* 678901 *" +690 PRINT " ACTUAL:","*";7890;"*","*";-12345;"*","*";+678901;"*" +710 PRINT +720 PRINT "*** TEST PASSED IF 'ACTUAL' LINES MATCH CORRESPONDING" +730 PRINT " 'SHOULD BE' LINES ***" +740 PRINT +750 PRINT " END TEST." +760 PRINT +770 PRINT "SECTION 9.4: NR1 CONSTANTS SEPARATED BY SEMICOLONS." +780 PRINT +790 PRINT "PRINTED INTEGER CONSTANTS ARE PRECEDED BY A SPACE IF" +800 PRINT "POSITIVE OR A MINUS IF NEGATIVE AND ARE FOLLOWED BY A SPACE." +810 PRINT "THE SEMICOLON SEPARATOR PRODUCES A NULL STRING." +820 PRINT +830 PRINT " BEGIN TEST." +840 PRINT +850 PRINT "00000000011111111112222222222333333333344444444445"; +860 PRINT "5555555556666666666777" +870 PRINT "12345678901234567890123456789012345678901234567890"; +880 PRINT "1234567890123456789012" +885 PRINT "SHOULD BE: 0 0 1 -12 123 -1234 12345 -123456" +890 PRINT " ACTUAL:";0;-0;1;-12;123;-1234;12345;-123456 +900 PRINT +910 PRINT "*** TEST PASSED IF 'ACTUAL' LINE MATCHES CORRESPONDING" +920 PRINT " 'SHOULD BE' LINE ***" +930 PRINT +940 PRINT " END TEST." +950 PRINT +960 PRINT "SECTION 9.5: CONSTANTS IN NR2 FORM." +970 PRINT +980 PRINT "COLUMNS 1 AND 3 SHOW THE OUTPUT AS IT SHOULD BE." +995 PRINT "COLUMNS 2 AND 4 SHOW THE ACTUAL OUTPUT." +1001 PRINT +1002 PRINT "EXPECTED OUTPUT IS DISPLAYED WITH TRAILING ZEROS" +1003 PRINT "SUPPRESSED. IMPLEMENTATIONS MAY ADD TRAILING ZEROS UP TO" +1004 PRINT "THEIR SIGNIFICAND-WIDTH, D. THUS .12 MAY BE DISPLAYED AS" +1005 PRINT "'.1200' OR '.1200000' IF, FOR INSTANCE, D = 7." +1010 PRINT +1020 PRINT " BEGIN TEST." +1030 PRINT +1040 PRINT "00000000011111111112222222222333333333344444444445"; +1050 PRINT "5555555556666666666777" +1060 PRINT "12345678901234567890123456789012345678901234567890"; +1070 PRINT "1234567890123456789012" +1080 PRINT "SHOULD BE","ACTUAL","SHOULD BE","ACTUAL" +1100 PRINT " .1 ",.1,"-.1 ",-.1 +1110 PRINT " .12 ",+.12,"-.12 ",-.12 +1120 PRINT " .123 ",.123,"-.123 ",-.123 +1130 PRINT " .1234 ",+.1234,"-.1234 ",-.1234 +1140 PRINT " .12345 ",.12345,"-.12345 ",-.12345 +1150 PRINT " .123456 ",+.123456,"-.123456 ",-.123456 +1160 PRINT " .234567 ",.234567,"-.234567 ",-.234567 +1170 PRINT " .345678 ",+.345678,"-.345678 ",-.345678 +1180 PRINT " .456789 ",.456789,"-.456789 ",-.456789 +1190 PRINT " .56789 ",+.567890,"-.56789 ",-.567890 +1200 PRINT " .6789 ",.678900,"-.6789 ",-.678900 +1210 PRINT " .789 ",+.789000,"-.789 ",-.789000 +1220 PRINT " .89 ",.890000,"-.89 ",-.890000 +1230 PRINT " .9 ",+.900000,"-.9 ",-.900000 +1240 PRINT " 0 ",0.0," 0 ",-0.0 +1250 PRINT " 1.23456 ",1.23456,"-1.23456",-1.23456 +1260 PRINT " 9.876 ",+9.87600,"-9.876 ",-9.87600 +1270 PRINT " 12.3456 ",12.3456,"-12.3456 ",-12.3456 +1280 PRINT " 123.456 ",+123.456,"-123.456 ",-123.456 +1290 PRINT " 1234.56 ",1234.56,"-1234.56 ",-1234.56 +1300 PRINT " 12345.6 ",+12345.6,"-12345.6 ",-12345.6 +1310 PRINT " 23456.7 ",23456.7,"-23456.7 ",-23456.7 +1320 PRINT " 34567.8 ",+34567.8,"-34567.8 ",-34567.8 +1330 PRINT " 45678.9 ",45678.9,"-45678.9 ",-45678.9 +1340 PRINT " 56789.1 ",+56789.1,"-56789.1 ",-56789.1 +1350 PRINT " 67891.2 ",67891.2,"-67891.2 ",-67891.2 +1360 PRINT " 78912.3 ",+78912.3,"-78912.3 ",-78912.3 +1370 PRINT " 89123.4 ",89123.4,"-89123.4 ",-89123.4 +1380 PRINT " 91234.5 ",+91234.5,"-91234.5 ",-91234.5 +1390 PRINT " 99999.9 ",99999.9,"-99999.9 ",-99999.9 +1400 PRINT +1410 PRINT "*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE " +1420 PRINT " SAME REPRESENTATION FOR EACH PAIR OF NUMBERS " +1425 PRINT " (ALLOWING FOR OPTIONAL TRAILING ZEROS) ***" +1430 PRINT +1433 PRINT " END TEST." +1436 PRINT +1440 PRINT "SECTION 9.6: USING NR2 INSTEAD OF NR3 FORMAT FOR" +1450 PRINT " SIX-DIGIT CONSTANTS." +1460 PRINT +1490 PRINT "NUMBERS THAT CAN BE REPRESENTED IN THE UNSCALED" +1500 PRINT "REPRESENTATION NO LESS ACCURATELY THAN AS IN" +1510 PRINT "SCALED FORMAT, SHALL BE OUTPUT USING THE UNSCALED FORMAT." +1520 PRINT +1523 PRINT " BEGIN TEST." +1526 PRINT +1540 PRINT "SHOULD BE","ACTUAL","SHOULD BE","ACTUAL" +1550 PRINT +1560 PRINT " .022222 ",+.022222,"-.022222 ",-.022222 +1570 PRINT " .004444 ",.004444,"-.004444 ",-.004444 +1580 PRINT " .000888 ",+.000888,"-.000888 ",-.000888 +1590 PRINT " .000044 ",.000044,"-.000044 ",-.000044 +1600 PRINT " .000002 ",.000002,"-.000002 ",-.000002 +1610 PRINT +1620 PRINT "*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE " +1630 PRINT " SAME REPRESENTATION FOR EACH PAIR OF NUMBERS " +1635 PRINT " (ALLOWING FOR OPTIONAL TRAILING ZEROS) ***" +1640 PRINT +1650 PRINT " END TEST." +1660 PRINT +1670 PRINT "SECTION 9.7: NR2 CONSTANTS SEPARATED BY COMMAS TO PRODUCE" +1680 PRINT " TABULAR OUTPUT." +1690 PRINT +1700 PRINT " BEGIN TEST." +1710 PRINT +1720 PRINT "00000000011111111112222222222333333333344444444445"; +1730 PRINT "5555555556666666666777" +1740 PRINT "12345678901234567890123456789012345678901234567890"; +1750 PRINT "1234567890123456789012" +1760 PRINT .123456,-99999.9,91234.5 +1770 PRINT -1.23456,89123.4,-2.34567 +1780 PRINT +295.64,.023,-67.8954 +1790 PRINT +1800 PRINT "*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN" +1810 PRINT " A COLUMN OF REAL NUMBERS USING EXPLICIT POINT," +1820 PRINT " UNSCALED REPRESENTATION ***" +1825 PRINT +1830 PRINT " END TEST." +1840 PRINT +1850 PRINT "SECTION 9.8: SPACE ALLOTMENT FOR PRINTED NR2 NUMBERS." +1860 PRINT +1870 PRINT "PRINTED NR2 CONSTANTS ARE PRECEDED BY A SPACE IF POSITIVE" +1880 PRINT "OR BY A MINUS IF NEGATIVE, AND ARE FOLLOWED BY A SPACE." +1890 PRINT "THE FIELDS FOR THE CONSTANTS ARE DELIMITED BY ASTERISKS." +1900 PRINT +1910 PRINT " BEGIN TEST." +1920 PRINT +1930 PRINT "00000000011111111112222222222333333333344444444445"; +1940 PRINT "5555555556666666666777" +1950 PRINT "12345678901234567890123456789012345678901234567890"; +1960 PRINT "1234567890123456789012" +1970 PRINT "*";90000.1;"*","*";.000123;"*","*";.000009;"*" +1980 PRINT "*";+900.001;"*","*";+0.000123;"*","*";+0.000009;"*" +1990 PRINT "*";-0.900001;"*","*";-0.000123;"*","*";-0.000009;"*" +2000 PRINT +2010 PRINT "*";.234567;"*","*";1.23456;"*","*";91.2345;"*" +2020 PRINT "*";+0.234567;"*","*";+1.23456;"*","*";91.2345;"*" +2030 PRINT "*";-0.234567;"*","*";-1.23456;"*","*";-91.2345;"*" +2040 PRINT +2050 PRINT "*";865.789;"*","*";1234.56;"*","*";99999.9;"*" +2060 PRINT "*";+865.789;"*","*";+1234.56;"*","*";+99999.9;"*" +2070 PRINT "*";-865.789;"*","*";-1234.56;"*","*";-99999.9;"*" +2080 PRINT +2090 PRINT "*** TEST PASSED IF EACH NUMBER IS PRECEDED BY A SPACE OR" +2100 PRINT " A MINUS SIGN, AND FOLLOWED BY A SPACE AND THE NUMBERS" +2110 PRINT " USE EXPLICIT POINT, UNSCALED REPRESENTATION ***" +2120 PRINT +2130 PRINT " END TEST." +2335 PRINT +2340 PRINT "END PROGRAM 9" +2350 END diff --git a/NBS2/P009.OUT b/NBS2/P009.OUT new file mode 100644 index 0000000..7940d0b --- /dev/null +++ b/NBS2/P009.OUT @@ -0,0 +1,203 @@ +PROGRAM FILE 9: PRINTING NR1 AND NR2 NUMERIC CONSTANTS. + ANS STANDARD 5.2, 5.4, 12.4 + +SECTION 9.1: CONSTANTS IN NR1 FORM (INTEGERS). + +COLUMNS 1 AND 3 SHOW THE OUTPUT AS IT SHOULD BE. +COLUMNS 2 AND 4 SHOW THE ACTUAL OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE ACTUAL SHOULD BE ACTUAL + 0 0 0 0 + 1 1 -1 -1 + 12 12 -12 -12 + 123 123 -123 -123 + 1234 1234 -1234 -1234 + 12345 12345 -12345 -12345 + 123456 123456 -123456 -123456 + 999999 999999 -999999 -999999 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE SAME + NUMERIC REPRESENTATION FOR EACH PAIR OF INTEGERS *** + + END TEST. + +SECTION 9.2: NR1 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + 1 -12 123 +-1234 12345 -123456 + 123456 -1234 123 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF INTEGERS *** + + END TEST. + +SECTION 9.3: SPACE ALLOCATED FOR PRINTED INTEGER CONSTANTS. + +PRINTED INTEGER CONSTANTS ARE PRECEDED BY A SPACE IF +POSITIVE, A MINUS IF NEGATIVE AND FOLLOWED BY A SPACE. +THE SPACE FOR THE CONSTANT IS DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE: * 1 * *-23 * * 456 * + ACTUAL: * 1 * *-23 * * 456 * + +SHOULD BE: * 7890 * *-12345 * * 678901 * + ACTUAL: * 7890 * *-12345 * * 678901 * + +*** TEST PASSED IF 'ACTUAL' LINES MATCH CORRESPONDING + 'SHOULD BE' LINES *** + + END TEST. + +SECTION 9.4: NR1 CONSTANTS SEPARATED BY SEMICOLONS. + +PRINTED INTEGER CONSTANTS ARE PRECEDED BY A SPACE IF +POSITIVE OR A MINUS IF NEGATIVE AND ARE FOLLOWED BY A SPACE. +THE SEMICOLON SEPARATOR PRODUCES A NULL STRING. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE: 0 0 1 -12 123 -1234 12345 -123456 + ACTUAL: 0 0 1 -12 123 -1234 12345 -123456 + +*** TEST PASSED IF 'ACTUAL' LINE MATCHES CORRESPONDING + 'SHOULD BE' LINE *** + + END TEST. + +SECTION 9.5: CONSTANTS IN NR2 FORM. + +COLUMNS 1 AND 3 SHOW THE OUTPUT AS IT SHOULD BE. +COLUMNS 2 AND 4 SHOW THE ACTUAL OUTPUT. + +EXPECTED OUTPUT IS DISPLAYED WITH TRAILING ZEROS +SUPPRESSED. IMPLEMENTATIONS MAY ADD TRAILING ZEROS UP TO +THEIR SIGNIFICAND-WIDTH, D. THUS .12 MAY BE DISPLAYED AS +'.1200' OR '.1200000' IF, FOR INSTANCE, D = 7. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE ACTUAL SHOULD BE ACTUAL + .1 .1 -.1 -.1 + .12 .12 -.12 -.12 + .123 .123 -.123 -.123 + .1234 .1234 -.1234 -.1234 + .12345 .12345 -.12345 -.12345 + .123456 .123456 -.123456 -.123456 + .234567 .234567 -.234567 -.234567 + .345678 .345678 -.345678 -.345678 + .456789 .456789 -.456789 -.456789 + .56789 .56789 -.56789 -.56789 + .6789 .6789 -.6789 -.6789 + .789 .789 -.789 -.789 + .89 .89 -.89 -.89 + .9 .9 -.9 -.9 + 0 0 0 0 + 1.23456 1.23456 -1.23456 -1.23456 + 9.876 9.876 -9.876 -9.876 + 12.3456 12.3456 -12.3456 -12.3456 + 123.456 123.456 -123.456 -123.456 + 1234.56 1234.56 -1234.56 -1234.56 + 12345.6 12345.6 -12345.6 -12345.6 + 23456.7 23456.7 -23456.7 -23456.7 + 34567.8 34567.8 -34567.8 -34567.8 + 45678.9 45678.9 -45678.9 -45678.9 + 56789.1 56789.1 -56789.1 -56789.1 + 67891.2 67891.2 -67891.2 -67891.2 + 78912.3 78912.3 -78912.3 -78912.3 + 89123.4 89123.4 -89123.4 -89123.4 + 91234.5 91234.5 -91234.5 -91234.5 + 99999.9 99999.9 -99999.9 -99999.9 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE + SAME REPRESENTATION FOR EACH PAIR OF NUMBERS + (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 9.6: USING NR2 INSTEAD OF NR3 FORMAT FOR + SIX-DIGIT CONSTANTS. + +NUMBERS THAT CAN BE REPRESENTED IN THE UNSCALED +REPRESENTATION NO LESS ACCURATELY THAN AS IN +SCALED FORMAT, SHALL BE OUTPUT USING THE UNSCALED FORMAT. + + BEGIN TEST. + +SHOULD BE ACTUAL SHOULD BE ACTUAL + + .022222 .022222 -.022222 -.022222 + .004444 .004444 -.004444 -.004444 + .000888 .000888 -.000888 -.000888 + .000044 .000044 -.000044 -.000044 + .000002 .000002 -.000002 -.000002 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE + SAME REPRESENTATION FOR EACH PAIR OF NUMBERS + (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 9.7: NR2 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + .123456 -99999.9 91234.5 +-1.23456 89123.4 -2.34567 + 295.64 .023 -67.8954 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF REAL NUMBERS USING EXPLICIT POINT, + UNSCALED REPRESENTATION *** + + END TEST. + +SECTION 9.8: SPACE ALLOTMENT FOR PRINTED NR2 NUMBERS. + +PRINTED NR2 CONSTANTS ARE PRECEDED BY A SPACE IF POSITIVE +OR BY A MINUS IF NEGATIVE, AND ARE FOLLOWED BY A SPACE. +THE FIELDS FOR THE CONSTANTS ARE DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +* 90000.1 * * .000123 * * .000009 * +* 900.001 * * .000123 * * .000009 * +*-.900001 * *-.000123 * *-.000009 * + +* .234567 * * 1.23456 * * 91.2345 * +* .234567 * * 1.23456 * * 91.2345 * +*-.234567 * *-1.23456 * *-91.2345 * + +* 865.789 * * 1234.56 * * 99999.9 * +* 865.789 * * 1234.56 * * 99999.9 * +*-865.789 * *-1234.56 * *-99999.9 * + +*** TEST PASSED IF EACH NUMBER IS PRECEDED BY A SPACE OR + A MINUS SIGN, AND FOLLOWED BY A SPACE AND THE NUMBERS + USE EXPLICIT POINT, UNSCALED REPRESENTATION *** + + END TEST. + +END PROGRAM 9 diff --git a/NBS2/P009.dif b/NBS2/P009.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P009.run b/NBS2/P009.run new file mode 100644 index 0000000..42bf5b3 --- /dev/null +++ b/NBS2/P009.run @@ -0,0 +1,203 @@ +PROGRAM FILE 9: PRINTING NR1 AND NR2 NUMERIC CONSTANTS. + ANS STANDARD 5.2, 5.4, 12.4 + +SECTION 9.1: CONSTANTS IN NR1 FORM (INTEGERS). + +COLUMNS 1 AND 3 SHOW THE OUTPUT AS IT SHOULD BE. +COLUMNS 2 AND 4 SHOW THE ACTUAL OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE ACTUAL SHOULD BE ACTUAL + 0 0 0 0 + 1 1 -1 -1 + 12 12 -12 -12 + 123 123 -123 -123 + 1234 1234 -1234 -1234 + 12345 12345 -12345 -12345 + 123456 123456 -123456 -123456 + 999999 999999 -999999 -999999 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE SAME + NUMERIC REPRESENTATION FOR EACH PAIR OF INTEGERS *** + + END TEST. + +SECTION 9.2: NR1 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + 1 -12 123 +-1234 12345 -123456 + 123456 -1234 123 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF INTEGERS *** + + END TEST. + +SECTION 9.3: SPACE ALLOCATED FOR PRINTED INTEGER CONSTANTS. + +PRINTED INTEGER CONSTANTS ARE PRECEDED BY A SPACE IF +POSITIVE, A MINUS IF NEGATIVE AND FOLLOWED BY A SPACE. +THE SPACE FOR THE CONSTANT IS DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE: * 1 * *-23 * * 456 * + ACTUAL: * 1 * *-23 * * 456 * + +SHOULD BE: * 7890 * *-12345 * * 678901 * + ACTUAL: * 7890 * *-12345 * * 678901 * + +*** TEST PASSED IF 'ACTUAL' LINES MATCH CORRESPONDING + 'SHOULD BE' LINES *** + + END TEST. + +SECTION 9.4: NR1 CONSTANTS SEPARATED BY SEMICOLONS. + +PRINTED INTEGER CONSTANTS ARE PRECEDED BY A SPACE IF +POSITIVE OR A MINUS IF NEGATIVE AND ARE FOLLOWED BY A SPACE. +THE SEMICOLON SEPARATOR PRODUCES A NULL STRING. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE: 0 0 1 -12 123 -1234 12345 -123456 + ACTUAL: 0 0 1 -12 123 -1234 12345 -123456 + +*** TEST PASSED IF 'ACTUAL' LINE MATCHES CORRESPONDING + 'SHOULD BE' LINE *** + + END TEST. + +SECTION 9.5: CONSTANTS IN NR2 FORM. + +COLUMNS 1 AND 3 SHOW THE OUTPUT AS IT SHOULD BE. +COLUMNS 2 AND 4 SHOW THE ACTUAL OUTPUT. + +EXPECTED OUTPUT IS DISPLAYED WITH TRAILING ZEROS +SUPPRESSED. IMPLEMENTATIONS MAY ADD TRAILING ZEROS UP TO +THEIR SIGNIFICAND-WIDTH, D. THUS .12 MAY BE DISPLAYED AS +'.1200' OR '.1200000' IF, FOR INSTANCE, D = 7. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +SHOULD BE ACTUAL SHOULD BE ACTUAL + .1 .1 -.1 -.1 + .12 .12 -.12 -.12 + .123 .123 -.123 -.123 + .1234 .1234 -.1234 -.1234 + .12345 .12345 -.12345 -.12345 + .123456 .123456 -.123456 -.123456 + .234567 .234567 -.234567 -.234567 + .345678 .345678 -.345678 -.345678 + .456789 .456789 -.456789 -.456789 + .56789 .56789 -.56789 -.56789 + .6789 .6789 -.6789 -.6789 + .789 .789 -.789 -.789 + .89 .89 -.89 -.89 + .9 .9 -.9 -.9 + 0 0 0 0 + 1.23456 1.23456 -1.23456 -1.23456 + 9.876 9.876 -9.876 -9.876 + 12.3456 12.3456 -12.3456 -12.3456 + 123.456 123.456 -123.456 -123.456 + 1234.56 1234.56 -1234.56 -1234.56 + 12345.6 12345.6 -12345.6 -12345.6 + 23456.7 23456.7 -23456.7 -23456.7 + 34567.8 34567.8 -34567.8 -34567.8 + 45678.9 45678.9 -45678.9 -45678.9 + 56789.1 56789.1 -56789.1 -56789.1 + 67891.2 67891.2 -67891.2 -67891.2 + 78912.3 78912.3 -78912.3 -78912.3 + 89123.4 89123.4 -89123.4 -89123.4 + 91234.5 91234.5 -91234.5 -91234.5 + 99999.9 99999.9 -99999.9 -99999.9 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE + SAME REPRESENTATION FOR EACH PAIR OF NUMBERS + (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 9.6: USING NR2 INSTEAD OF NR3 FORMAT FOR + SIX-DIGIT CONSTANTS. + +NUMBERS THAT CAN BE REPRESENTED IN THE UNSCALED +REPRESENTATION NO LESS ACCURATELY THAN AS IN +SCALED FORMAT, SHALL BE OUTPUT USING THE UNSCALED FORMAT. + + BEGIN TEST. + +SHOULD BE ACTUAL SHOULD BE ACTUAL + + .022222 .022222 -.022222 -.022222 + .004444 .004444 -.004444 -.004444 + .000888 .000888 -.000888 -.000888 + .000044 .000044 -.000044 -.000044 + .000002 .000002 -.000002 -.000002 + +*** TEST PASSED IF COLUMNS 1 & 2, AND 3 & 4 CONTAIN THE + SAME REPRESENTATION FOR EACH PAIR OF NUMBERS + (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 9.7: NR2 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + .123456 -99999.9 91234.5 +-1.23456 89123.4 -2.34567 + 295.64 .023 -67.8954 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF REAL NUMBERS USING EXPLICIT POINT, + UNSCALED REPRESENTATION *** + + END TEST. + +SECTION 9.8: SPACE ALLOTMENT FOR PRINTED NR2 NUMBERS. + +PRINTED NR2 CONSTANTS ARE PRECEDED BY A SPACE IF POSITIVE +OR BY A MINUS IF NEGATIVE, AND ARE FOLLOWED BY A SPACE. +THE FIELDS FOR THE CONSTANTS ARE DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +* 90000.1 * * .000123 * * .000009 * +* 900.001 * * .000123 * * .000009 * +*-.900001 * *-.000123 * *-.000009 * + +* .234567 * * 1.23456 * * 91.2345 * +* .234567 * * 1.23456 * * 91.2345 * +*-.234567 * *-1.23456 * *-91.2345 * + +* 865.789 * * 1234.56 * * 99999.9 * +* 865.789 * * 1234.56 * * 99999.9 * +*-865.789 * *-1234.56 * *-99999.9 * + +*** TEST PASSED IF EACH NUMBER IS PRECEDED BY A SPACE OR + A MINUS SIGN, AND FOLLOWED BY A SPACE AND THE NUMBERS + USE EXPLICIT POINT, UNSCALED REPRESENTATION *** + + END TEST. + +END PROGRAM 9 diff --git a/NBS2/P010.80 b/NBS2/P010.80 new file mode 100644 index 0000000..27ef245 --- /dev/null +++ b/NBS2/P010.80 @@ -0,0 +1,204 @@ +PROGRAM FILE 10: PRINTING NR3 NUMERIC CONSTANTS. + ANSI STANDARD 5.2, 5.4, 12.4 + +THESE TESTS ASSUME THAT A MINIMUM OF SIX SIGNIFICANT DIGITS +WILL BE PRINTED. PROCESSORS WHICH PRINT MORE SIGNIFICANT +DIGITS SHOULD HAVE COMPARABLE ACCURACY. + +NOTE THAT THE DISPLAYED STANDARD OUTPUT IS ORIENTED TO +THE MINIMAL REQUIREMENTS OF SIGNIFICAND-WIDTH, D, +EQUAL TO SIX, AND EXRAD-WIDTH, E, EQUAL TO TWO. FOR D > 6 +AND E > 2, THERE MAY BE EXTRA TRAILING AND LEADING ZEROS, +RESPECTIVELY. + +SECTION 10.1: POSITIVE NUMBER AND SIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT PRINT + AS '1.23456E+32' *** + + END TEST. + +SECTION 10.2: POSITIVE NUMBER AND UNSIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: UNSIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT PRINT + AS '1.23456E+32' *** + + END TEST. + +SECTION 10.3: NEGATIVE NUMBER AND SIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE PRINT + AS '-1.23456E+32' *** + + END TEST. + +SECTION 10.4: POSITIVE NUMBER AND NEGATIVE EXRAD. + + BEGIN TEST. + +SOURCE FORM: SIGNED EXRAD - BOTH COLUMNS + SIGNED SIGNIFICAND - COLUMN 1 + UNSIGNED SIGNIFICAND - COLUMN 2 + + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT + PRINT AS '1.23456E-24' *** + + END TEST. + +SECTION 10.5: NEGATIVE NUMBER AND NEGATIVE EXRAD. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - COLUMN 1 + SIGNED EXRAD - COLUMN 1 + +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT + PRINT AS '-1.23456E-24' *** + + END TEST. + +SECTION 10.6: MISCELLANEOUS NR3 CONSTANTS. + +ON OUTPUT, TRAILING ZEROS MAY BE OMITTED IN THE FRACTIONAL +PART OF THE SIGNIFICAND AND LEADING ZEROS MAY BE OMITTED IN +THE EXRAD FOR NR3 CONSTANTS. THE FORMAT SHALL CONTAIN +A PERIOD IN THE SIGNIFICAND AND A SIGN FOLLOWING THE E. +THE SIGNIFICAND MUST BE >=1 AND < 10. + + BEGIN TEST. + +(EXPECTED OUTPUT DISPLAYED WITH ZEROS SUPPRESSED.) + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +1.E30 1.E+30 1.E+30 +10.E30 1.E+31 1.E+31 +1E09 1.E+9 1.E+9 +25.01E036 2.501E+37 2.501E+37 +24.01E36 2.501E+37 2.501E+37 +-1.E30 -1.E+30 -1.E+30 +1E-30 1.E-30 1.E-30 +-1E-30 -1.E-30 -1.E-30 +1.000E034 1.E+34 1.E+34 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD *** + + END TEST. + +SECTION 10.7: NR3 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + 1.E+30 -9.87E-37 1.23456E+32 +-1.23456E+32 1.7865E+36 5.E-20 + 9.9E+11 -7.6532E+34 8.2E-13 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF NR3 NUMBERS *** + + END TEST. + +SECTION 10.8: WIDTH FOR PRINTED E-FORMAT CONSTANTS + +THE SPACE FOR THE CONSTANT IS DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +* 1.23456E+32 * +*-1.23456E+32 * +* 1.23456E-32 * +*-1.23456E-32 * +* 1.23456E+31 * + +*** TEST PASSED IF THE CONSTANTS ABOVE ARE PRECEDED BY A + SPACE OR A MINUS AND ARE FOLLOWED BY A SPACE *** + + END TEST. + +END PROGRAM 10 diff --git a/NBS2/P010.BAS b/NBS2/P010.BAS new file mode 100644 index 0000000..ba7d0ee --- /dev/null +++ b/NBS2/P010.BAS @@ -0,0 +1,209 @@ +10 PRINT "PROGRAM FILE 10: PRINTING NR3 NUMERIC CONSTANTS." +20 PRINT " ANSI STANDARD 5.2, 5.4, 12.4" +30 PRINT +60 PRINT "THESE TESTS ASSUME THAT A MINIMUM OF SIX SIGNIFICANT DIGITS" +70 PRINT "WILL BE PRINTED. PROCESSORS WHICH PRINT MORE SIGNIFICANT" +80 PRINT "DIGITS SHOULD HAVE COMPARABLE ACCURACY." +90 PRINT +91 PRINT "NOTE THAT THE DISPLAYED STANDARD OUTPUT IS ORIENTED TO" +92 PRINT "THE MINIMAL REQUIREMENTS OF SIGNIFICAND-WIDTH, D, " +93 PRINT "EQUAL TO SIX, AND EXRAD-WIDTH, E, EQUAL TO TWO. FOR D > 6" +94 PRINT "AND E > 2, THERE MAY BE EXTRA TRAILING AND LEADING ZEROS," +95 PRINT "RESPECTIVELY." +96 PRINT +97 PRINT "SECTION 10.1: POSITIVE NUMBER AND SIGNED SIGNIFICAND." +98 PRINT +100 PRINT " BEGIN TEST." +110 PRINT +140 PRINT "SOURCE FORM: SIGNED SIGNIFICAND - BOTH COLUMNS" +150 PRINT " UNSIGNED EXRAD - COLUMN 1" +160 PRINT " SIGNED EXRAD - COLUMN 2" +190 PRINT +200 PRINT +123456E27,+123456E+27 +210 PRINT +123456.E27,+123456.E+27 +220 PRINT +12345.6E28,+12345.6E+28 +230 PRINT +1234.56E29,+1234.56E+29 +240 PRINT +123.456E30,+123.456E+30 +250 PRINT +12.3456E31,+12.3456E+31 +260 PRINT +1.23456E32,+1.23456E+32 +270 PRINT +.123456E33,+.123456E+33 +280 PRINT +1.2345600000000E32,+1.2345600000000E+32 +290 PRINT +.00000123456E38,+.00000123456E+38 +300 PRINT +.00001234560000E37,+.00001234560000E+37 +310 PRINT +320 PRINT "*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT PRINT" +330 PRINT " AS '1.23456E+32' ***" +340 PRINT +350 PRINT " END TEST." +360 PRINT +363 PRINT "SECTION 10.2: POSITIVE NUMBER AND UNSIGNED SIGNIFICAND." +366 PRINT +367 PRINT " BEGIN TEST." +368 PRINT +370 PRINT "SOURCE FORM: UNSIGNED SIGNIFICAND - BOTH COLUMNS" +380 PRINT " UNSIGNED EXRAD - COLUMN 1" +390 PRINT " SIGNED EXRAD - COLUMN 2" +400 PRINT +430 PRINT 123456E27,123456E+27 +440 PRINT 123456.E27,123456.E+27 +450 PRINT 12345.6E28,12345.6E+28 +460 PRINT 1234.56E29,1234.56E+29 +470 PRINT 123.456E30,123.456E+30 +480 PRINT 12.3456E31,12.3456E+31 +490 PRINT 1.23456E32,1.23456E+32 +500 PRINT .123456E33,.123456E+33 +510 PRINT 1.2345600000000E32,1.2345600000000E+32 +520 PRINT .00000123456E38,.00000123456E+38 +530 PRINT .00001234560000E37,.00001234560000E+37 +540 PRINT +550 PRINT "*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT PRINT" +560 PRINT " AS '1.23456E+32' ***" +570 PRINT +580 PRINT " END TEST." +590 PRINT +593 PRINT "SECTION 10.3: NEGATIVE NUMBER AND SIGNED SIGNIFICAND." +595 PRINT +597 PRINT " BEGIN TEST." +598 PRINT +600 PRINT "SOURCE FORM: SIGNED SIGNIFICAND - BOTH COLUMNS" +610 PRINT " UNSIGNED EXRAD - COLUMN 1" +620 PRINT " SIGNED EXRAD - COLUMN 2" +630 PRINT +660 PRINT -123456E27,-123456E+27 +670 PRINT -123456.E27,-123456.E+27 +680 PRINT -12345.6E28,-12345.6E+28 +690 PRINT -1234.56E29,-1234.56E+29 +700 PRINT -123.456E30,-123.456E+30 +710 PRINT -12.3456E31,-12.3456E+31 +720 PRINT -1.23456E32,-1.23456E+32 +730 PRINT -.123456E33,-.123456E+33 +740 PRINT -1.2345600000000E32,-1.2345600000000E+32 +750 PRINT -.00000123456E38,-.00000123456E+38 +760 PRINT -.00001234560000E37,-.00001234560000E+37 +770 PRINT +780 PRINT "*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE PRINT" +790 PRINT " AS '-1.23456E+32' ***" +800 PRINT +810 PRINT " END TEST." +820 PRINT +822 PRINT "SECTION 10.4: POSITIVE NUMBER AND NEGATIVE EXRAD." +824 PRINT +826 PRINT " BEGIN TEST." +828 PRINT +830 PRINT "SOURCE FORM: SIGNED EXRAD - BOTH COLUMNS" +840 PRINT " SIGNED SIGNIFICAND - COLUMN 1" +850 PRINT " UNSIGNED SIGNIFICAND - COLUMN 2" +860 PRINT +880 PRINT +123456E-29,123456E-29 +890 PRINT +123456.E-29,123456.E-29 +900 PRINT +12345.6E-28,12345.6E-28 +910 PRINT +1234.56E-27,1234.56E-27 +920 PRINT +123.456E-26,123.456E-26 +930 PRINT +12.3456E-25,12.3456E-25 +940 PRINT +1.23456E-24,1.23456E-24 +950 PRINT +.123456E-23,.123456E-23 +960 PRINT +1.2345600000000E-24,1.2345600000000E-24 +970 PRINT +.00000123456E-18,.00000123456E-18 +980 PRINT +.00001234560000E-19,.00001234560000E-19 +990 PRINT +1000 PRINT "*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT" +1010 PRINT " PRINT AS '1.23456E-24' ***" +1020 PRINT +1030 PRINT " END TEST." +1040 PRINT +1042 PRINT "SECTION 10.5: NEGATIVE NUMBER AND NEGATIVE EXRAD." +1044 PRINT +1046 PRINT " BEGIN TEST." +1048 PRINT +1050 PRINT "SOURCE FORM: SIGNED SIGNIFICAND - COLUMN 1" +1060 PRINT " SIGNED EXRAD - COLUMN 1" +1070 PRINT +1100 PRINT -123456E-29 +1110 PRINT -123456.E-29 +1120 PRINT -12345.6E-28 +1130 PRINT -1234.56E-27 +1140 PRINT -123.456E-26 +1150 PRINT -12.3456E-25 +1160 PRINT -1.23456E-24 +1170 PRINT -.123456E-23 +1180 PRINT -1.2345600000000E-24 +1190 PRINT -.00000123456E-18 +1200 PRINT -.00001234560000E-19 +1210 PRINT +1220 PRINT "*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT" +1230 PRINT " PRINT AS '-1.23456E-24' ***" +1240 PRINT +1250 PRINT " END TEST." +1260 PRINT +1270 PRINT "SECTION 10.6: MISCELLANEOUS NR3 CONSTANTS." +1280 PRINT +1290 PRINT "ON OUTPUT, TRAILING ZEROS MAY BE OMITTED IN THE FRACTIONAL" +1300 PRINT "PART OF THE SIGNIFICAND AND LEADING ZEROS MAY BE OMITTED IN" +1310 PRINT "THE EXRAD FOR NR3 CONSTANTS. THE FORMAT SHALL CONTAIN" +1320 PRINT "A PERIOD IN THE SIGNIFICAND AND A SIGN FOLLOWING THE E." +1330 PRINT "THE SIGNIFICAND MUST BE >=1 AND < 10." +1340 PRINT +1350 PRINT " BEGIN TEST." +1360 PRINT +1363 PRINT "(EXPECTED OUTPUT DISPLAYED WITH ZEROS SUPPRESSED.)" +1366 PRINT +1370 PRINT "SOURCE","OUTPUT","ACTUAL" +1380 PRINT "CONSTANT","SHOULD BE","OUTPUT" +1390 PRINT +1400 PRINT "1.E30"," 1.E+30",1.E30 +1410 PRINT "10.E30"," 1.E+31",10.E30 +1420 PRINT "1E09"," 1.E+9",1E09 +1430 PRINT "25.01E036"," 2.501E+37",25.01E036 +1440 PRINT "24.01E36"," 2.501E+37",25.01E36 +1450 PRINT "-1.E30","-1.E+30",-1.E30 +1460 PRINT "1E-30"," 1.E-30",1E-30 +1470 PRINT "-1E-30","-1.E-30",-1E-30 +1480 PRINT "1.000E034"," 1.E+34",1.000E034 +1500 PRINT +1510 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +1520 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN" +1530 PRINT " THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD ***" +1535 PRINT +1540 PRINT " END TEST." +1550 PRINT +1560 PRINT "SECTION 10.7: NR3 CONSTANTS SEPARATED BY COMMAS TO PRODUCE" +1570 PRINT " TABULAR OUTPUT." +1580 PRINT +1590 PRINT " BEGIN TEST." +1600 PRINT +1610 PRINT "00000000011111111112222222222333333333344444444445"; +1620 PRINT "5555555556666666666777" +1630 PRINT "12345678901234567890123456789012345678901234567890"; +1640 PRINT "1234567890123456789012" +1650 PRINT 1E30,-9.87E-37,1.23456E32 +1660 PRINT -1.23456E32,+1.7865E36,5E-20 +1670 PRINT +99E10,-765.32E32,+0.00082E-9 +1700 PRINT +1710 PRINT "*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN" +1720 PRINT " A COLUMN OF NR3 NUMBERS ***" +1730 PRINT +1733 PRINT " END TEST." +1736 PRINT +1740 PRINT "SECTION 10.8: WIDTH FOR PRINTED E-FORMAT CONSTANTS" +1745 PRINT +1750 PRINT "THE SPACE FOR THE CONSTANT IS DELIMITED BY ASTERISKS." +1760 PRINT +1770 PRINT " BEGIN TEST." +1780 PRINT +1790 PRINT "00000000011111111112222222222333333333344444444445"; +1800 PRINT "5555555556666666666777" +1810 PRINT "12345678901234567890123456789012345678901234567890"; +1820 PRINT "1234567890123456789012" +1830 PRINT "*";1.23456E32;"*" +1840 PRINT "*";-1.23456E32;"*" +1850 PRINT "*";1.23456E-32;"*" +1860 PRINT "*";-1.23456E-32;"*" +1870 PRINT "*";0.123456E32;"*" +1880 PRINT +1890 PRINT "*** TEST PASSED IF THE CONSTANTS ABOVE ARE PRECEDED BY A" +1900 PRINT " SPACE OR A MINUS AND ARE FOLLOWED BY A SPACE ***" +1910 PRINT +1920 PRINT " END TEST." +1930 PRINT +2140 PRINT "END PROGRAM 10" +2150 END diff --git a/NBS2/P010.OUT b/NBS2/P010.OUT new file mode 100644 index 0000000..ef8c985 --- /dev/null +++ b/NBS2/P010.OUT @@ -0,0 +1,204 @@ +PROGRAM FILE 10: PRINTING NR3 NUMERIC CONSTANTS. + ANSI STANDARD 5.2, 5.4, 12.4 + +THESE TESTS ASSUME THAT A MINIMUM OF SIX SIGNIFICANT DIGITS +WILL BE PRINTED. PROCESSORS WHICH PRINT MORE SIGNIFICANT +DIGITS SHOULD HAVE COMPARABLE ACCURACY. + +NOTE THAT THE DISPLAYED STANDARD OUTPUT IS ORIENTED TO +THE MINIMAL REQUIREMENTS OF SIGNIFICAND-WIDTH, D, +EQUAL TO SIX, AND EXRAD-WIDTH, E, EQUAL TO TWO. FOR D > 6 +AND E > 2, THERE MAY BE EXTRA TRAILING AND LEADING ZEROS, +RESPECTIVELY. + +SECTION 10.1: POSITIVE NUMBER AND SIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT PRINT + AS '1.23456E+32' *** + + END TEST. + +SECTION 10.2: POSITIVE NUMBER AND UNSIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: UNSIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT PRINT + AS '1.23456E+32' *** + + END TEST. + +SECTION 10.3: NEGATIVE NUMBER AND SIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE PRINT + AS '-1.23456E+32' *** + + END TEST. + +SECTION 10.4: POSITIVE NUMBER AND NEGATIVE EXRAD. + + BEGIN TEST. + +SOURCE FORM: SIGNED EXRAD - BOTH COLUMNS + SIGNED SIGNIFICAND - COLUMN 1 + UNSIGNED SIGNIFICAND - COLUMN 2 + + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT + PRINT AS '1.23456E-24' *** + + END TEST. + +SECTION 10.5: NEGATIVE NUMBER AND NEGATIVE EXRAD. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - COLUMN 1 + SIGNED EXRAD - COLUMN 1 + +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT + PRINT AS '-1.23456E-24' *** + + END TEST. + +SECTION 10.6: MISCELLANEOUS NR3 CONSTANTS. + +ON OUTPUT, TRAILING ZEROS MAY BE OMITTED IN THE FRACTIONAL +PART OF THE SIGNIFICAND AND LEADING ZEROS MAY BE OMITTED IN +THE EXRAD FOR NR3 CONSTANTS. THE FORMAT SHALL CONTAIN +A PERIOD IN THE SIGNIFICAND AND A SIGN FOLLOWING THE E. +THE SIGNIFICAND MUST BE >=1 AND < 10. + + BEGIN TEST. + +(EXPECTED OUTPUT DISPLAYED WITH ZEROS SUPPRESSED.) + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +1.E30 1.E+30 1.E+30 +10.E30 1.E+31 1.E+31 +1E09 1.E+9 1.E+9 +25.01E036 2.501E+37 2.501E+37 +24.01E36 2.501E+37 2.501E+37 +-1.E30 -1.E+30 -1.E+30 +1E-30 1.E-30 1.E-30 +-1E-30 -1.E-30 -1.E-30 +1.000E034 1.E+34 1.E+34 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD *** + + END TEST. + +SECTION 10.7: NR3 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + 1.E+30 -9.87E-37 1.23456E+32 +-1.23456E+32 1.7865E+36 5.E-20 + 9.9E+11 -7.6532E+34 8.2E-13 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF NR3 NUMBERS *** + + END TEST. + +SECTION 10.8: WIDTH FOR PRINTED E-FORMAT CONSTANTS + +THE SPACE FOR THE CONSTANT IS DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +* 1.23456E+32 * +*-1.23456E+32 * +* 1.23456E-32 * +*-1.23456E-32 * +* 1.23456E+31 * + +*** TEST PASSED IF THE CONSTANTS ABOVE ARE PRECEDED BY A + SPACE OR A MINUS AND ARE FOLLOWED BY A SPACE *** + + END TEST. + +END PROGRAM 10 diff --git a/NBS2/P010.dif b/NBS2/P010.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P010.run b/NBS2/P010.run new file mode 100644 index 0000000..27ef245 --- /dev/null +++ b/NBS2/P010.run @@ -0,0 +1,204 @@ +PROGRAM FILE 10: PRINTING NR3 NUMERIC CONSTANTS. + ANSI STANDARD 5.2, 5.4, 12.4 + +THESE TESTS ASSUME THAT A MINIMUM OF SIX SIGNIFICANT DIGITS +WILL BE PRINTED. PROCESSORS WHICH PRINT MORE SIGNIFICANT +DIGITS SHOULD HAVE COMPARABLE ACCURACY. + +NOTE THAT THE DISPLAYED STANDARD OUTPUT IS ORIENTED TO +THE MINIMAL REQUIREMENTS OF SIGNIFICAND-WIDTH, D, +EQUAL TO SIX, AND EXRAD-WIDTH, E, EQUAL TO TWO. FOR D > 6 +AND E > 2, THERE MAY BE EXTRA TRAILING AND LEADING ZEROS, +RESPECTIVELY. + +SECTION 10.1: POSITIVE NUMBER AND SIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT PRINT + AS '1.23456E+32' *** + + END TEST. + +SECTION 10.2: POSITIVE NUMBER AND UNSIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: UNSIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + 1.23456E+32 1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT PRINT + AS '1.23456E+32' *** + + END TEST. + +SECTION 10.3: NEGATIVE NUMBER AND SIGNED SIGNIFICAND. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - BOTH COLUMNS + UNSIGNED EXRAD - COLUMN 1 + SIGNED EXRAD - COLUMN 2 + +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 +-1.23456E+32 -1.23456E+32 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE PRINT + AS '-1.23456E+32' *** + + END TEST. + +SECTION 10.4: POSITIVE NUMBER AND NEGATIVE EXRAD. + + BEGIN TEST. + +SOURCE FORM: SIGNED EXRAD - BOTH COLUMNS + SIGNED SIGNIFICAND - COLUMN 1 + UNSIGNED SIGNIFICAND - COLUMN 2 + + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + 1.23456E-24 1.23456E-24 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT + PRINT AS '1.23456E-24' *** + + END TEST. + +SECTION 10.5: NEGATIVE NUMBER AND NEGATIVE EXRAD. + + BEGIN TEST. + +SOURCE FORM: SIGNED SIGNIFICAND - COLUMN 1 + SIGNED EXRAD - COLUMN 1 + +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 +-1.23456E-24 + +*** TEST PASSED IF ALL THE NUMBERS IN THE ABOVE OUTPUT + PRINT AS '-1.23456E-24' *** + + END TEST. + +SECTION 10.6: MISCELLANEOUS NR3 CONSTANTS. + +ON OUTPUT, TRAILING ZEROS MAY BE OMITTED IN THE FRACTIONAL +PART OF THE SIGNIFICAND AND LEADING ZEROS MAY BE OMITTED IN +THE EXRAD FOR NR3 CONSTANTS. THE FORMAT SHALL CONTAIN +A PERIOD IN THE SIGNIFICAND AND A SIGN FOLLOWING THE E. +THE SIGNIFICAND MUST BE >=1 AND < 10. + + BEGIN TEST. + +(EXPECTED OUTPUT DISPLAYED WITH ZEROS SUPPRESSED.) + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +1.E30 1.E+30 1.E+30 +10.E30 1.E+31 1.E+31 +1E09 1.E+9 1.E+9 +25.01E036 2.501E+37 2.501E+37 +24.01E36 2.501E+37 2.501E+37 +-1.E30 -1.E+30 -1.E+30 +1E-30 1.E-30 1.E-30 +-1E-30 -1.E-30 -1.E-30 +1.000E034 1.E+34 1.E+34 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD *** + + END TEST. + +SECTION 10.7: NR3 CONSTANTS SEPARATED BY COMMAS TO PRODUCE + TABULAR OUTPUT. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + 1.E+30 -9.87E-37 1.23456E+32 +-1.23456E+32 1.7865E+36 5.E-20 + 9.9E+11 -7.6532E+34 8.2E-13 + +*** TEST PASSED IF THE FIRST THREE PRINT ZONES EACH CONTAIN + A COLUMN OF NR3 NUMBERS *** + + END TEST. + +SECTION 10.8: WIDTH FOR PRINTED E-FORMAT CONSTANTS + +THE SPACE FOR THE CONSTANT IS DELIMITED BY ASTERISKS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +* 1.23456E+32 * +*-1.23456E+32 * +* 1.23456E-32 * +*-1.23456E-32 * +* 1.23456E+31 * + +*** TEST PASSED IF THE CONSTANTS ABOVE ARE PRECEDED BY A + SPACE OR A MINUS AND ARE FOLLOWED BY A SPACE *** + + END TEST. + +END PROGRAM 10 diff --git a/NBS2/P011.80 b/NBS2/P011.80 new file mode 100644 index 0000000..4ea7b85 --- /dev/null +++ b/NBS2/P011.80 @@ -0,0 +1,83 @@ +PROGRAM FILE 11: PRINTING NUMERIC VARIABLES ASSIGNED + NR1 AND NR2 CONSTANTS. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 9.2, 9.4, 12.4 + +SECTION 11.1: PRINTING VARIABLES WHICH HAVE BEEN ASSIGNED + INTEGER (NR1) CONSTANTS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1 1 1 + 12345 12345 12345 + 000 0 0 ++2 2 2 +-3 -3 -3 +-998765 -998765 -998765 ++6912 6912 6912 + +*** TEST PASSED IF THE ACTUAL OUTPUT MATCHES THE OUTPUT + AS IT SHOULD BE *** + + END TEST. + +SECTION 11.2: TRANSITIVE ASSIGNMENT OF AN NR1 CONSTANT. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-99999 -99999 -99999 + +*** TEST PASSES IF THE ACTUAL OUTPUT MATCHES THE OUTPUT + AS IT SHOULD BE *** + + END TEST. + +SECTION 11.3: PRINTING VARIABLES WHICH HAVE BEEN ASSIGNED + NR2 CONSTANTS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.05 1.05 1.05 + 358.672 358.672 358.672 + 0.0 0 0 +-2.1 -2.1 -2.1 ++3.1 3.1 3.1 +-2714.25 -2714.25 -2714.25 ++29.3054 29.3054 29.3054 +-0.00 0 0 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 11.4: TRANSITIVE ASSIGNMENT OF AN NR2 CONSTANT. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-9999.99 -9999.99 -9999.99 + 1.5 1.5 1.5 +-2.5 -2.5 -2.5 ++3.5 3.5 3.5 + 4.5 4.5 4.5 ++5.5 5.5 5.5 +-6.5 -6.5 -6.5 + 9.99999 9.99999 9.99999 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +END PROGRAM 11 diff --git a/NBS2/P011.BAS b/NBS2/P011.BAS new file mode 100644 index 0000000..f492d51 --- /dev/null +++ b/NBS2/P011.BAS @@ -0,0 +1,183 @@ +10 PRINT "PROGRAM FILE 11: PRINTING NUMERIC VARIABLES ASSIGNED" +15 PRINT " NR1 AND NR2 CONSTANTS." +20 PRINT " ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 9.2, 9.4, 12.4" +70 PRINT +80 PRINT "SECTION 11.1: PRINTING VARIABLES WHICH HAVE BEEN ASSIGNED" +85 PRINT " INTEGER (NR1) CONSTANTS." +90 PRINT +100 PRINT " BEGIN TEST." +110 PRINT +310 LET M2=+2 +320 LET L2=-3 +330 LET N2=-998765 +340 LET O2=+6912 +342 LET M1=1 +344 LET J1=12345 +346 LET K1=000 +350 PRINT "ASSIGNED","OUTPUT","ACTUAL" +360 PRINT "CONSTANT","SHOULD BE","OUTPUT" +370 PRINT +372 PRINT " 1 "," 1 ",M1 +374 PRINT " 12345 "," 12345 ",J1 +376 PRINT " 000 "," 0 ",K1 +380 PRINT "+2"," 2 ",M2 +390 PRINT "-3","-3",L2 +400 PRINT "-998765","-998765",N2 +410 PRINT "+6912"," 6912",O2 +420 PRINT +430 PRINT "*** TEST PASSED IF THE ACTUAL OUTPUT MATCHES THE OUTPUT" +440 PRINT " AS IT SHOULD BE ***" +450 PRINT +460 PRINT " END TEST." +470 PRINT +480 PRINT "SECTION 11.2: TRANSITIVE ASSIGNMENT OF AN NR1 CONSTANT." +490 PRINT +500 PRINT " BEGIN TEST." +510 PRINT +520 LET A=-99999 +530 LET B=A +540 LET C=B +550 LET D=C +560 LET E=D +570 LET F=E +580 LET G=F +590 LET H=G +600 LET I=H +610 LET J=I +620 LET K=J +630 LET L=K +640 LET M=L +650 LET N=M +660 LET O=N +670 LET P=O +680 LET Q=P +690 LET R=Q +700 LET S=R +710 LET T=S +720 LET U=T +730 LET V=U +740 LET W=V +750 LET X=W +760 LET Y=X +770 LET Z=Y +780 PRINT "ASSIGNED","OUTPUT","ACTUAL" +790 PRINT "CONSTANT","SHOULD BE","OUTPUT" +800 PRINT +810 PRINT "-99999 ","-99999 ",Z +820 PRINT +830 PRINT "*** TEST PASSES IF THE ACTUAL OUTPUT MATCHES THE OUTPUT" +840 PRINT " AS IT SHOULD BE ***" +850 PRINT +860 PRINT " END TEST." +870 PRINT +900 PRINT "SECTION 11.3: PRINTING VARIABLES WHICH HAVE BEEN ASSIGNED" +905 PRINT " NR2 CONSTANTS." +910 PRINT +1000 PRINT " BEGIN TEST." +1120 PRINT +1130 LET A4=-2.1 +1140 LET B4=+3.1 +1150 LET C4=-2714.25 +1160 LET D4=+29.3054 +1170 LET E4=-0.00 +1172 LET A3=1.05 +1174 LET B3=358.672 +1176 LET C3=0.0 +1180 PRINT "ASSIGNED","OUTPUT","ACTUAL" +1190 PRINT "CONSTANT","SHOULD BE","OUTPUT" +1200 PRINT +1202 PRINT " 1.05 "," 1.05 ",A3 +1204 PRINT " 358.672 "," 358.672 ",B3 +1206 PRINT " 0.0 "," 0 ",C3 +1210 PRINT "-2.1 ","-2.1 ",A4 +1220 PRINT "+3.1 "," 3.1 ",B4 +1230 PRINT "-2714.25 ","-2714.25 ",C4 +1240 PRINT "+29.3054 "," 29.3054 ",D4 +1250 PRINT "-0.00 "," 0 ",E4 +1260 PRINT +1270 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +1280 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) ***" +1290 PRINT +1300 PRINT " END TEST." +1310 PRINT +1320 PRINT "SECTION 11.4: TRANSITIVE ASSIGNMENT OF AN NR2 CONSTANT." +1330 PRINT +1340 PRINT " BEGIN TEST." +1350 PRINT +1360 LET A0=-9999.99 +1370 LET B0=A0 +1380 LET C0=B0 +1390 LET D0=C0 +1400 LET E0=D0 +1410 LET F0=E0 +1420 LET G0=F0 +1430 LET H0=G0 +1440 LET I0=H0 +1450 LET J0=I0 +1460 LET K0=J0 +1470 LET L0=K0 +1480 LET M0=L0 +1490 LET N0=M0 +1500 LET O0=N0 +1510 LET P0=O0 +1520 LET Q0=P0 +1530 LET R0=Q0 +1540 LET S0=R0 +1550 LET T0=S0 +1560 LET U0=T0 +1570 LET V0=U0 +1580 LET W0=V0 +1590 LET X0=W0 +1600 LET Y0=X0 +1610 LET Z0=Y0 +1620 PRINT "ASSIGNED","OUTPUT","ACTUAL" +1630 PRINT "CONSTANT","SHOULD BE","OUTPUT" +1640 PRINT +1650 PRINT "-9999.99 ","-9999.99 ",Z0 +1660 LET A5=1.5 +1670 LET B5=-2.5 +1680 LET C5=+3.5 +1690 LET D5=4.5 +1700 LET E5=+5.5 +1710 LET F5=-6.5 +1720 LET A1=A5 +1730 LET B1=B5 +1740 LET C1=C5 +1750 LET D1=D5 +1760 LET E1=E5 +1770 LET F1=F5 +1780 LET G1=A1 +1790 LET H1=B1 +1800 LET I1=C1 +1810 LET J1=D1 +1820 LET K1=E1 +1830 LET L1=F1 +1840 LET M1=G1 +1850 LET N1=H1 +1860 LET O1=I1 +1870 LET P1=J1 +1880 LET Q1=K1 +1890 LET R1=L1 +1900 LET S1=M1 +1910 LET T1=N1 +1920 LET U1=O1 +1930 LET V1=P1 +1940 LET W1=Q1 +1950 LET X1=R1 +1960 PRINT " 1.5 "," 1.5 ",S1 +1970 PRINT "-2.5 ","-2.5 ",T1 +1980 PRINT "+3.5 "," 3.5 ",U1 +1990 PRINT " 4.5 "," 4.5 ",V1 +2000 PRINT "+5.5 "," 5.5 ",W1 +2010 PRINT "-6.5 ","-6.5 ",X1 +2020 LET Y1=9.99999 +2030 LET Z1=Y1 +2040 PRINT " 9.99999 "," 9.99999 ",Z1 +2050 PRINT +2060 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +2070 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) ***" +2080 PRINT +2090 PRINT " END TEST." +2100 PRINT +2110 PRINT "END PROGRAM 11" +2120 END diff --git a/NBS2/P011.OUT b/NBS2/P011.OUT new file mode 100644 index 0000000..872e940 --- /dev/null +++ b/NBS2/P011.OUT @@ -0,0 +1,83 @@ +PROGRAM FILE 11: PRINTING NUMERIC VARIABLES ASSIGNED + NR1 AND NR2 CONSTANTS. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 9.2, 9.4, 12.4 + +SECTION 11.1: PRINTING VARIABLES WHICH HAVE BEEN ASSIGNED + INTEGER (NR1) CONSTANTS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1 1 1 + 12345 12345 12345 + 000 0 0 ++2 2 2 +-3 -3 -3 +-998765 -998765 -998765 ++6912 6912 6912 + +*** TEST PASSED IF THE ACTUAL OUTPUT MATCHES THE OUTPUT + AS IT SHOULD BE *** + + END TEST. + +SECTION 11.2: TRANSITIVE ASSIGNMENT OF AN NR1 CONSTANT. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-99999 -99999 -99999 + +*** TEST PASSES IF THE ACTUAL OUTPUT MATCHES THE OUTPUT + AS IT SHOULD BE *** + + END TEST. + +SECTION 11.3: PRINTING VARIABLES WHICH HAVE BEEN ASSIGNED + NR2 CONSTANTS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.05 1.05 1.05 + 358.672 358.672 358.672 + 0.0 0 0 +-2.1 -2.1 -2.1 ++3.1 3.1 3.1 +-2714.25 -2714.25 -2714.25 ++29.3054 29.3054 29.3054 +-0.00 0 0 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 11.4: TRANSITIVE ASSIGNMENT OF AN NR2 CONSTANT. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-9999.99 -9999.99 -9999.99 + 1.5 1.5 1.5 +-2.5 -2.5 -2.5 ++3.5 3.5 3.5 + 4.5 4.5 4.5 ++5.5 5.5 5.5 +-6.5 -6.5 -6.5 + 9.99999 9.99999 9.99999 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +END PROGRAM 11 diff --git a/NBS2/P011.dif b/NBS2/P011.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P011.run b/NBS2/P011.run new file mode 100644 index 0000000..4ea7b85 --- /dev/null +++ b/NBS2/P011.run @@ -0,0 +1,83 @@ +PROGRAM FILE 11: PRINTING NUMERIC VARIABLES ASSIGNED + NR1 AND NR2 CONSTANTS. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 9.2, 9.4, 12.4 + +SECTION 11.1: PRINTING VARIABLES WHICH HAVE BEEN ASSIGNED + INTEGER (NR1) CONSTANTS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1 1 1 + 12345 12345 12345 + 000 0 0 ++2 2 2 +-3 -3 -3 +-998765 -998765 -998765 ++6912 6912 6912 + +*** TEST PASSED IF THE ACTUAL OUTPUT MATCHES THE OUTPUT + AS IT SHOULD BE *** + + END TEST. + +SECTION 11.2: TRANSITIVE ASSIGNMENT OF AN NR1 CONSTANT. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-99999 -99999 -99999 + +*** TEST PASSES IF THE ACTUAL OUTPUT MATCHES THE OUTPUT + AS IT SHOULD BE *** + + END TEST. + +SECTION 11.3: PRINTING VARIABLES WHICH HAVE BEEN ASSIGNED + NR2 CONSTANTS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.05 1.05 1.05 + 358.672 358.672 358.672 + 0.0 0 0 +-2.1 -2.1 -2.1 ++3.1 3.1 3.1 +-2714.25 -2714.25 -2714.25 ++29.3054 29.3054 29.3054 +-0.00 0 0 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 11.4: TRANSITIVE ASSIGNMENT OF AN NR2 CONSTANT. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-9999.99 -9999.99 -9999.99 + 1.5 1.5 1.5 +-2.5 -2.5 -2.5 ++3.5 3.5 3.5 + 4.5 4.5 4.5 ++5.5 5.5 5.5 +-6.5 -6.5 -6.5 + 9.99999 9.99999 9.99999 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +END PROGRAM 11 diff --git a/NBS2/P012.80 b/NBS2/P012.80 new file mode 100644 index 0000000..8f59b4a --- /dev/null +++ b/NBS2/P012.80 @@ -0,0 +1,88 @@ +PROGRAM FILE 12: PRINTING NUMERIC VARIABLES ASSIGNED + NR3 CONSTANTS. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 9.2, 9.4, 12.4 + +SECTION 12.1: ASSIGNING NR3 CONSTANTS WHICH PRINT EITHER + AS NR1 OR NR2 CONSTANTS, SIGNED AND UNSIGNED. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.05E02 105 105 +-7.6E1 -76 -76 ++332.4E0 332.4 332.4 + 51.32E-1 5.132 5.132 ++5.34E-3 .00534 .00534 +-14.19E-2 -.1419 -.1419 +-9.9E+2 -990 -990 ++10.5210E+3 10521 10521 + 4.56E+1 45.6 45.6 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 12.2: ASSIGNING NR3 FORM CONSTANTS WHICH PRINT AS + NR3 CONSTANTS, SIGNED AND UNSIGNED. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.E30 1.E+30 1.E+30 ++123.E20 1.23E+22 1.23E+22 +-11.E30 -1.1E+31 -1.1E+31 + 144.E-21 1.44E-19 1.44E-19 +-12.E-22 -1.2E-21 -1.2E-21 ++3645.E-23 3.645E-20 3.645E-20 + 1.E+34 1.E+34 1.E+34 +-200.E+21 -2.E+23 -2.E+23 ++99.E+32 9.9E+33 9.9E+33 + .234E20 2.34E+19 2.34E+19 +-.3E22 -3.E+21 -3.E+21 ++.44E17 4.4E+16 4.4E+16 + .36E-33 3.6E-34 3.6E-34 ++.9E-24 9.E-25 9.E-25 +-.10E-25 -1.E-26 -1.E-26 + .777E+18 7.77E+17 7.77E+17 +-.29E+31 -2.9E+30 -2.9E+30 ++.04E+26 4.E+24 4.E+24 + 70987600000000E+22 + 7.09876E+35 7.09876E+35 ++81E36 8.1E+37 8.1E+37 +-000.000000000192837E-25 + -1.92837E-35 -1.92837E-35 + 627E+27 6.27E+29 6.27E+29 ++53E+19 5.3E+20 5.3E+20 +-4E+28 -4.E+28 -4.E+28 + 1463E-29 1.463E-26 1.463E-26 ++2E-37 2.E-37 2.E-37 +-355E-19 -3.55E-17 -3.55E-17 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND OR LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 12.3: TRANSITIVE ASSIGNMENT OF AN NR3 CONSTANT. + + BEGIN TEST. + + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.E30 1.E+30 1.E+30 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND OR LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 12 diff --git a/NBS2/P012.BAS b/NBS2/P012.BAS new file mode 100644 index 0000000..90b279f --- /dev/null +++ b/NBS2/P012.BAS @@ -0,0 +1,158 @@ +10 PRINT "PROGRAM FILE 12: PRINTING NUMERIC VARIABLES ASSIGNED" +15 PRINT " NR3 CONSTANTS." +20 PRINT " ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 9.2, 9.4, 12.4" +50 PRINT +60 PRINT "SECTION 12.1: ASSIGNING NR3 CONSTANTS WHICH PRINT EITHER" +70 PRINT " AS NR1 OR NR2 CONSTANTS, SIGNED AND UNSIGNED. " +80 PRINT +90 PRINT " BEGIN TEST." +100 PRINT +110 LET A7=1.05E02 +120 LET B7=-7.6E1 +130 LET C7=+332.4E0 +140 LET D7=51.32E-1 +150 LET E7=+5.34E-3 +160 LET F7=-14.19E-2 +170 LET G7=-9.9E+2 +180 LET H7=+10.5210E+3 +190 LET I7=4.56E+1 +200 PRINT "ASSIGNED","OUTPUT","ACTUAL" +210 PRINT "CONSTANT","SHOULD BE","OUTPUT" +220 PRINT +230 PRINT " 1.05E02"," 105 ",A7 +240 PRINT "-7.6E1 ","-76 ",B7 +250 PRINT "+332.4E0"," 332.4 ",C7 +260 PRINT " 51.32E-1"," 5.132 ",D7 +270 PRINT "+5.34E-3 "," .00534 ",E7 +280 PRINT "-14.19E-2 ","-.1419 ",F7 +290 PRINT "-9.9E+2 ","-990 ",G7 +300 PRINT "+10.5210E+3 "," 10521 ",H7 +310 PRINT " 4.56E+1 "," 45.6 ",I7 +320 PRINT +330 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +340 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) ***" +350 PRINT +360 PRINT " END TEST." +370 PRINT +380 PRINT "SECTION 12.2: ASSIGNING NR3 FORM CONSTANTS WHICH PRINT AS" +390 PRINT " NR3 CONSTANTS, SIGNED AND UNSIGNED." +400 PRINT +410 PRINT " BEGIN TEST." +420 PRINT +430 LET A8=1.E30 +440 LET B8=+123.E20 +450 LET C8=-11.E30 +460 LET D8=144.E-21 +470 LET E8=-12.E-22 +480 LET F8=+3645.E-23 +490 LET G8=1.E+34 +500 LET H8=-200.E+21 +510 LET I8=+99.E+32 +520 LET A9=.234E20 +530 LET B9=-.3E22 +540 LET C9=+.44E17 +550 LET D9=.36E-33 +560 LET E9=+.9E-24 +570 LET F9=-.10E-25 +580 LET G9=.777E+18 +590 LET H9=-.29E+31 +600 LET I9=+.04E+26 +610 LET J1=70987600000000E+22 +620 LET J2=+81E36 +630 LET J3=-000.000000000192837E-25 +640 LET J4=627E+27 +650 LET J5=+53E+19 +660 LET J6=-4E+28 +670 LET J7=1463E-29 +680 LET J8=+2E-37 +690 LET J9=-355E-19 +700 PRINT "ASSIGNED","OUTPUT","ACTUAL" +710 PRINT "CONSTANT","SHOULD BE","OUTPUT" +720 PRINT +730 PRINT " 1.E30 "," 1.E+30 ",A8 +740 PRINT "+123.E20 ", " 1.23E+22 ",B8 +750 PRINT "-11.E30 ","-1.1E+31 ",C8 +760 PRINT " 144.E-21 "," 1.44E-19 ",D8 +770 PRINT "-12.E-22 ","-1.2E-21 ",E8 +780 PRINT "+3645.E-23 "," 3.645E-20 ",F8 +790 PRINT " 1.E+34 "," 1.E+34 ",G8 +800 PRINT "-200.E+21 ","-2.E+23 ",H8 +810 PRINT "+99.E+32 "," 9.9E+33 ",I8 +820 PRINT " .234E20 ", "2.34E+19 ",A9 +830 PRINT "-.3E22 ","-3.E+21 ",B9 +840 PRINT "+.44E17 "," 4.4E+16 ",C9 +850 PRINT " .36E-33 "," 3.6E-34 ",D9 +860 PRINT "+.9E-24 "," 9.E-25 ",E9 +870 PRINT "-.10E-25 ","-1.E-26 ",F9 +880 PRINT " .777E+18 "," 7.77E+17 ",G9 +890 PRINT "-.29E+31 ","-2.9E+30 ",H9 +900 PRINT "+.04E+26 "," 4.E+24 ",I9 +910 PRINT " 70987600000000E+22 " +915 PRINT " "," 7.09876E+35 ",J1 +920 PRINT "+81E36 "," 8.1E+37 ",J2 +930 PRINT "-000.000000000192837E-25" +935 PRINT " ","-1.92837E-35 ",J3 +940 PRINT " 627E+27 "," 6.27E+29 ",J4 +950 PRINT "+53E+19 "," 5.3E+20 ",J5 +960 PRINT "-4E+28 ","-4.E+28 ",J6 +970 PRINT " 1463E-29 "," 1.463E-26 ",J7 +980 PRINT "+2E-37 "," 2.E-37 ",J8 +990 PRINT "-355E-19 ","-3.55E-17 ",J9 +1000 PRINT +1010 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +1020 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN" +1030 PRINT " THE SIGNIFICAND OR LEADING ZEROS IN THE EXRAD) ***" +1040 PRINT +1050 PRINT " END TEST." +1060 PRINT +1070 PRINT "SECTION 12.3: TRANSITIVE ASSIGNMENT OF AN NR3 CONSTANT." +1080 PRINT +1090 PRINT " BEGIN TEST." +1100 PRINT +1110 LET A2=1.E30 +1120 LET B2=A2 +1130 LET C2=B2 +1140 LET D2=C2 +1150 LET C3=D2 +1160 LET D3=C3 +1170 LET A6=D3 +1180 LET B6=A6 +1190 LET C6=B6 +1200 LET D6=C6 +1210 LET E2=D6 +1220 LET E3=E2 +1230 LET E4=E3 +1240 LET E6=E4 +1250 LET F2=E6 +1260 LET F3=F2 +1270 LET F4=F3 +1280 LET F6=F4 +1290 LET G2=F6 +1300 LET G3=G2 +1310 LET G4=G3 +1320 LET G5=G4 +1330 LET G6=G5 +1340 LET H2=G6 +1350 LET H3=H2 +1360 LET H4=H3 +1370 LET H5=H4 +1380 LET H6=H5 +1390 LET I2=H6 +1400 LET I3=I2 +1410 LET I4=I3 +1420 LET I5=I4 +1440 LET I6=I5 +1445 PRINT +1450 PRINT "ASSIGNED","OUTPUT","ACTUAL" +1460 PRINT "CONSTANT","SHOULD BE","OUTPUT" +1470 PRINT +1480 PRINT " 1.E30 "," 1.E+30 ",I6 +1490 PRINT +1500 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +1510 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN" +1520 PRINT " THE SIGNIFICAND OR LEADING ZEROS IN THE EXRAD) ***" +1530 PRINT +1540 PRINT " END TEST." +1550 PRINT +1560 PRINT "END PROGRAM 12" +1570 END diff --git a/NBS2/P012.OUT b/NBS2/P012.OUT new file mode 100644 index 0000000..ea84cb4 --- /dev/null +++ b/NBS2/P012.OUT @@ -0,0 +1,88 @@ +PROGRAM FILE 12: PRINTING NUMERIC VARIABLES ASSIGNED + NR3 CONSTANTS. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 9.2, 9.4, 12.4 + +SECTION 12.1: ASSIGNING NR3 CONSTANTS WHICH PRINT EITHER + AS NR1 OR NR2 CONSTANTS, SIGNED AND UNSIGNED. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.05E02 105 105 +-7.6E1 -76 -76 ++332.4E0 332.4 332.4 + 51.32E-1 5.132 5.132 ++5.34E-3 .00534 .00534 +-14.19E-2 -.1419 -.1419 +-9.9E+2 -990 -990 ++10.5210E+3 10521 10521 + 4.56E+1 45.6 45.6 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 12.2: ASSIGNING NR3 FORM CONSTANTS WHICH PRINT AS + NR3 CONSTANTS, SIGNED AND UNSIGNED. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.E30 1.E+30 1.E+30 ++123.E20 1.23E+22 1.23E+22 +-11.E30 -1.1E+31 -1.1E+31 + 144.E-21 1.44E-19 1.44E-19 +-12.E-22 -1.2E-21 -1.2E-21 ++3645.E-23 3.645E-20 3.645E-20 + 1.E+34 1.E+34 1.E+34 +-200.E+21 -2.E+23 -2.E+23 ++99.E+32 9.9E+33 9.9E+33 + .234E20 2.34E+19 2.34E+19 +-.3E22 -3.E+21 -3.E+21 ++.44E17 4.4E+16 4.4E+16 + .36E-33 3.6E-34 3.6E-34 ++.9E-24 9.E-25 9.E-25 +-.10E-25 -1.E-26 -1.E-26 + .777E+18 7.77E+17 7.77E+17 +-.29E+31 -2.9E+30 -2.9E+30 ++.04E+26 4.E+24 4.E+24 + 70987600000000E+22 + 7.09876E+35 7.09876E+35 ++81E36 8.1E+37 8.1E+37 +-000.000000000192837E-25 + -1.92837E-35 -1.92837E-35 + 627E+27 6.27E+29 6.27E+29 ++53E+19 5.3E+20 5.3E+20 +-4E+28 -4.E+28 -4.E+28 + 1463E-29 1.463E-26 1.463E-26 ++2E-37 2.E-37 2.E-37 +-355E-19 -3.55E-17 -3.55E-17 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND OR LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 12.3: TRANSITIVE ASSIGNMENT OF AN NR3 CONSTANT. + + BEGIN TEST. + + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.E30 1.E+30 1.E+30 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND OR LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 12 diff --git a/NBS2/P012.dif b/NBS2/P012.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P012.run b/NBS2/P012.run new file mode 100644 index 0000000..8f59b4a --- /dev/null +++ b/NBS2/P012.run @@ -0,0 +1,88 @@ +PROGRAM FILE 12: PRINTING NUMERIC VARIABLES ASSIGNED + NR3 CONSTANTS. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 9.2, 9.4, 12.4 + +SECTION 12.1: ASSIGNING NR3 CONSTANTS WHICH PRINT EITHER + AS NR1 OR NR2 CONSTANTS, SIGNED AND UNSIGNED. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.05E02 105 105 +-7.6E1 -76 -76 ++332.4E0 332.4 332.4 + 51.32E-1 5.132 5.132 ++5.34E-3 .00534 .00534 +-14.19E-2 -.1419 -.1419 +-9.9E+2 -990 -990 ++10.5210E+3 10521 10521 + 4.56E+1 45.6 45.6 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS) *** + + END TEST. + +SECTION 12.2: ASSIGNING NR3 FORM CONSTANTS WHICH PRINT AS + NR3 CONSTANTS, SIGNED AND UNSIGNED. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.E30 1.E+30 1.E+30 ++123.E20 1.23E+22 1.23E+22 +-11.E30 -1.1E+31 -1.1E+31 + 144.E-21 1.44E-19 1.44E-19 +-12.E-22 -1.2E-21 -1.2E-21 ++3645.E-23 3.645E-20 3.645E-20 + 1.E+34 1.E+34 1.E+34 +-200.E+21 -2.E+23 -2.E+23 ++99.E+32 9.9E+33 9.9E+33 + .234E20 2.34E+19 2.34E+19 +-.3E22 -3.E+21 -3.E+21 ++.44E17 4.4E+16 4.4E+16 + .36E-33 3.6E-34 3.6E-34 ++.9E-24 9.E-25 9.E-25 +-.10E-25 -1.E-26 -1.E-26 + .777E+18 7.77E+17 7.77E+17 +-.29E+31 -2.9E+30 -2.9E+30 ++.04E+26 4.E+24 4.E+24 + 70987600000000E+22 + 7.09876E+35 7.09876E+35 ++81E36 8.1E+37 8.1E+37 +-000.000000000192837E-25 + -1.92837E-35 -1.92837E-35 + 627E+27 6.27E+29 6.27E+29 ++53E+19 5.3E+20 5.3E+20 +-4E+28 -4.E+28 -4.E+28 + 1463E-29 1.463E-26 1.463E-26 ++2E-37 2.E-37 2.E-37 +-355E-19 -3.55E-17 -3.55E-17 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND OR LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 12.3: TRANSITIVE ASSIGNMENT OF AN NR3 CONSTANT. + + BEGIN TEST. + + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + + 1.E30 1.E+30 1.E+30 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND OR LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 12 diff --git a/NBS2/P013.80 b/NBS2/P013.80 new file mode 100644 index 0000000..ae02a9c --- /dev/null +++ b/NBS2/P013.80 @@ -0,0 +1,78 @@ +PROGRAM FILE 13: FORMAT AND ROUNDING OF PRINTED + NUMERIC CONSTANTS. + ANSI STANDARD 12.4, 5.2, 5.4 + +SECTION 13.1: PRINTED REPRESENTATION OF CONSTANTS. + +THE FORMAT OF A PRINTED CONSTANT IS DETERMINED BY THE VALUE +OF THE CONSTANT RATHER THAN BY ITS ORIGINAL REPRESENTATION. +THE SUPPRESSION OF LEADING INSIGNIFICANT ZEROS IN THE EXRAD +OR TRAILING INSIGNIFICANT ZEROS IN THE SIGNIFICAND +IS OPTIONAL. + + BEGIN TEST. + + # CONSTANT NR1 NR2 NR3 + + 1 76767 76767 + 2 76767.0 76767 + 3 767.670E2 76767 + 4 -.987789 -.987789 + 5 -.0009877E9E3 -.987789 + 6 -9.87789E-1 -.987789 + 7 1230000000 1.23E+9 + 8 .0000012345 1.2345E-6 + 9 2.3E9 2.3E+9 + +*** TEST PASSED IF THE CONSTANTS IN ROWS 1, 2 AND 3 PRINTED + IN NR1 FORMAT; IN ROWS 4, 5 AND 6 IN NR2 FORMAT; AND IN + ROWS 7, 8 AND 9 IN NR3 FORMAT *** + +EXCEPT: IF SIGNIFICANCE-WIDTH FOR THIS IMPLEMENTATION IS +GREATER THAN 9, ROWS 7, 8, AND 9 MUST BE IN NR1, NR3, +AND NR1 FORMAT, RESPECTIVELY. + + END TEST. + +SECTION 13.2: ROUNDING RESULTS. + +THE NUMBER OF SIGNIFICANT DIGITS PRINTED IS IMPLEMENTATION +DEFINED; HOWEVER, NR2 AND NR3 CONSTANTS WHICH CONTAIN EXCESS +DIGITS SHOULD BE PRINTED IN A STANDARD REPRESENTATION. + + BEGIN TEST. + +SOURCE CONSTANTS PROCESSOR OUTPUT + +1 1234567886 1.23457E+9 +2 .000001234567886 1.23457E-6 +3 9.999999999 10. +4 923456.7886 923457. +5 -0.09234567886 -9.23457E-2 +6 .04444444444 4.44444E-2 +7 .001200000004 .0012 + +CORRECT REPRESENTATION FOR PROCESSORS PRINTING FROM 6 TO 9 +SIGNIFICANT DIGITS + +D = 6 D = 7 D = 8 D = 9 + +1 1.23457E+9 1.234568E+9 1.2345679E+9 1.23456789E+9 +2 1.23457E-6 1.234568E-6 1.2345679E-6 1.23456789E-6 +3 10 10 10 10 + (10.) (10.) (10.) (10.) +4 923457. 923456.8 923456.79 923456.789 + (923457) +5 -9.23457E-2 -9.234568E-2 -9.2345679E-2 -9.23456789E-2 +6 4.44444E-2 4.444444E-2 4.4444444E-2 4.44444444E-2 +7 .001200 .0012000 .00120000 .001200000 + +*** TEST PASSED IF THE PROCESSOR OUTPUT IN THE FIRST SET + OF NUMBERED ROWS MATCHES THE COLUMN CORRESPONDING + TO THE IMPLEMENTATION-DEFINED SIGNIFICANCE-WIDTH + (ALLOWING FOR OPTIONAL TRAILING ZEROS IN THE + SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 13 diff --git a/NBS2/P013.BAS b/NBS2/P013.BAS new file mode 100644 index 0000000..c687463 --- /dev/null +++ b/NBS2/P013.BAS @@ -0,0 +1,81 @@ +10 PRINT "PROGRAM FILE 13: FORMAT AND ROUNDING OF PRINTED" +20 PRINT " NUMERIC CONSTANTS." +30 PRINT " ANSI STANDARD 12.4, 5.2, 5.4" +40 PRINT +50 PRINT "SECTION 13.1: PRINTED REPRESENTATION OF CONSTANTS." +60 PRINT +70 PRINT "THE FORMAT OF A PRINTED CONSTANT IS DETERMINED BY THE VALUE" +80 PRINT "OF THE CONSTANT RATHER THAN BY ITS ORIGINAL REPRESENTATION." +90 PRINT "THE SUPPRESSION OF LEADING INSIGNIFICANT ZEROS IN THE EXRAD" +100 PRINT "OR TRAILING INSIGNIFICANT ZEROS IN THE SIGNIFICAND" +110 PRINT "IS OPTIONAL. " +120 PRINT +130 PRINT " BEGIN TEST." +140 PRINT +150 PRINT " #","CONSTANT","NR1","NR2","NR3" +160 PRINT +170 PRINT " 1"," 76767",76767 +180 PRINT " 2"," 76767.0",76767.0 +190 PRINT " 3"," 767.670E2",767.67E2 +200 PRINT " 4","-.987789",,-.987789 +210 PRINT " 5","-.0009877E9E3",,-.000987789E3 +220 PRINT " 6","-9.87789E-1",,-9.87789E-1 +230 PRINT " 7"," 1230000000",,,1230000000 +240 PRINT " 8"," .0000012345",,,.0000012345 +250 PRINT " 9"," 2.3E9",,,2.3E9 +260 PRINT +270 PRINT "*** TEST PASSED IF THE CONSTANTS IN ROWS 1, 2 AND 3 PRINTED" +280 PRINT " IN NR1 FORMAT; IN ROWS 4, 5 AND 6 IN NR2 FORMAT; AND IN" +290 PRINT " ROWS 7, 8 AND 9 IN NR3 FORMAT ***" +300 PRINT +310 PRINT "EXCEPT: IF SIGNIFICANCE-WIDTH FOR THIS IMPLEMENTATION IS" +320 PRINT "GREATER THAN 9, ROWS 7, 8, AND 9 MUST BE IN NR1, NR3," +330 PRINT "AND NR1 FORMAT, RESPECTIVELY." +340 PRINT +350 PRINT " END TEST." +360 PRINT +370 PRINT "SECTION 13.2: ROUNDING RESULTS." +380 PRINT +390 PRINT "THE NUMBER OF SIGNIFICANT DIGITS PRINTED IS IMPLEMENTATION" +400 PRINT "DEFINED; HOWEVER, NR2 AND NR3 CONSTANTS WHICH CONTAIN EXCESS" +410 PRINT "DIGITS SHOULD BE PRINTED IN A STANDARD REPRESENTATION." +420 PRINT +430 PRINT " BEGIN TEST." +440 PRINT +450 LET T1=30 +460 PRINT "SOURCE CONSTANTS";TAB(T1);"PROCESSOR OUTPUT" +470 PRINT +480 PRINT "1 1234567886";TAB(T1);1234567886 +490 PRINT "2 .000001234567886";TAB(T1);.000001234567886 +500 PRINT "3 9.999999999";TAB(T1);9.999999999 +510 PRINT "4 923456.7886";TAB(T1);923456.7886 +520 PRINT "5 -0.09234567886";TAB(T1);-0.09234567886 +530 PRINT "6 .04444444444";TAB(T1);.04444444444 +540 PRINT "7 .001200000004";TAB(T1);.001200000004 +550 PRINT +560 PRINT "CORRECT REPRESENTATION FOR PROCESSORS PRINTING FROM 6 TO 9" +570 PRINT "SIGNIFICANT DIGITS" +580 PRINT +590 PRINT "D = 6","D = 7","D = 8","D = 9" +600 PRINT +610 PRINT "1 1.23457E+9","1.234568E+9","1.2345679E+9","1.23456789E+9" +620 PRINT "2 1.23457E-6","1.234568E-6","1.2345679E-6","1.23456789E-6" +630 PRINT "3 10","10","10","10" +640 PRINT " (10.)","(10.)","(10.)","(10.)" +650 PRINT "4 923457.","923456.8","923456.79","923456.789" +660 PRINT " (923457)" +670 PRINT "5 -9.23457E-2","-9.234568E-2", +680 PRINT "-9.2345679E-2","-9.23456789E-2" +690 PRINT "6 4.44444E-2","4.444444E-2","4.4444444E-2","4.44444444E-2" +700 PRINT "7 .001200",".0012000",".00120000",".001200000" +710 PRINT +720 PRINT "*** TEST PASSED IF THE PROCESSOR OUTPUT IN THE FIRST SET" +730 PRINT " OF NUMBERED ROWS MATCHES THE COLUMN CORRESPONDING" +740 PRINT " TO THE IMPLEMENTATION-DEFINED SIGNIFICANCE-WIDTH" +750 PRINT " (ALLOWING FOR OPTIONAL TRAILING ZEROS IN THE" +755 PRINT " SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) ***" +760 PRINT +762 PRINT " END TEST." +765 PRINT +770 PRINT "END PROGRAM 13" +780 END diff --git a/NBS2/P013.OUT b/NBS2/P013.OUT new file mode 100644 index 0000000..49d7497 --- /dev/null +++ b/NBS2/P013.OUT @@ -0,0 +1,78 @@ +PROGRAM FILE 13: FORMAT AND ROUNDING OF PRINTED + NUMERIC CONSTANTS. + ANSI STANDARD 12.4, 5.2, 5.4 + +SECTION 13.1: PRINTED REPRESENTATION OF CONSTANTS. + +THE FORMAT OF A PRINTED CONSTANT IS DETERMINED BY THE VALUE +OF THE CONSTANT RATHER THAN BY ITS ORIGINAL REPRESENTATION. +THE SUPPRESSION OF LEADING INSIGNIFICANT ZEROS IN THE EXRAD +OR TRAILING INSIGNIFICANT ZEROS IN THE SIGNIFICAND +IS OPTIONAL. + + BEGIN TEST. + + # CONSTANT NR1 NR2 NR3 + + 1 76767 76767 + 2 76767.0 76767 + 3 767.670E2 76767 + 4 -.987789 -.987789 + 5 -.0009877E9E3 -.987789 + 6 -9.87789E-1 -.987789 + 7 1230000000 1.23E+9 + 8 .0000012345 1.2345E-6 + 9 2.3E9 2.3E+9 + +*** TEST PASSED IF THE CONSTANTS IN ROWS 1, 2 AND 3 PRINTED + IN NR1 FORMAT; IN ROWS 4, 5 AND 6 IN NR2 FORMAT; AND IN + ROWS 7, 8 AND 9 IN NR3 FORMAT *** + +EXCEPT: IF SIGNIFICANCE-WIDTH FOR THIS IMPLEMENTATION IS +GREATER THAN 9, ROWS 7, 8, AND 9 MUST BE IN NR1, NR3, +AND NR1 FORMAT, RESPECTIVELY. + + END TEST. + +SECTION 13.2: ROUNDING RESULTS. + +THE NUMBER OF SIGNIFICANT DIGITS PRINTED IS IMPLEMENTATION +DEFINED; HOWEVER, NR2 AND NR3 CONSTANTS WHICH CONTAIN EXCESS +DIGITS SHOULD BE PRINTED IN A STANDARD REPRESENTATION. + + BEGIN TEST. + +SOURCE CONSTANTS PROCESSOR OUTPUT + +1 1234567886 1.23457E+9 +2 .000001234567886 1.23457E-6 +3 9.999999999 10. +4 923456.7886 923457. +5 -0.09234567886 -9.23457E-2 +6 .04444444444 4.44444E-2 +7 .001200000004 .0012 + +CORRECT REPRESENTATION FOR PROCESSORS PRINTING FROM 6 TO 9 +SIGNIFICANT DIGITS + +D = 6 D = 7 D = 8 D = 9 + +1 1.23457E+9 1.234568E+9 1.2345679E+9 1.23456789E+9 +2 1.23457E-6 1.234568E-6 1.2345679E-6 1.23456789E-6 +3 10 10 10 10 + (10.) (10.) (10.) (10.) +4 923457. 923456.8 923456.79 923456.789 + (923457) +5 -9.23457E-2 -9.234568E-2 -9.2345679E-2 -9.23456789E-2 +6 4.44444E-2 4.444444E-2 4.4444444E-2 4.44444444E-2 +7 .001200 .0012000 .00120000 .001200000 + +*** TEST PASSED IF THE PROCESSOR OUTPUT IN THE FIRST SET + OF NUMBERED ROWS MATCHES THE COLUMN CORRESPONDING + TO THE IMPLEMENTATION-DEFINED SIGNIFICANCE-WIDTH + (ALLOWING FOR OPTIONAL TRAILING ZEROS IN THE + SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 13 diff --git a/NBS2/P013.dif b/NBS2/P013.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P013.run b/NBS2/P013.run new file mode 100644 index 0000000..ae02a9c --- /dev/null +++ b/NBS2/P013.run @@ -0,0 +1,78 @@ +PROGRAM FILE 13: FORMAT AND ROUNDING OF PRINTED + NUMERIC CONSTANTS. + ANSI STANDARD 12.4, 5.2, 5.4 + +SECTION 13.1: PRINTED REPRESENTATION OF CONSTANTS. + +THE FORMAT OF A PRINTED CONSTANT IS DETERMINED BY THE VALUE +OF THE CONSTANT RATHER THAN BY ITS ORIGINAL REPRESENTATION. +THE SUPPRESSION OF LEADING INSIGNIFICANT ZEROS IN THE EXRAD +OR TRAILING INSIGNIFICANT ZEROS IN THE SIGNIFICAND +IS OPTIONAL. + + BEGIN TEST. + + # CONSTANT NR1 NR2 NR3 + + 1 76767 76767 + 2 76767.0 76767 + 3 767.670E2 76767 + 4 -.987789 -.987789 + 5 -.0009877E9E3 -.987789 + 6 -9.87789E-1 -.987789 + 7 1230000000 1.23E+9 + 8 .0000012345 1.2345E-6 + 9 2.3E9 2.3E+9 + +*** TEST PASSED IF THE CONSTANTS IN ROWS 1, 2 AND 3 PRINTED + IN NR1 FORMAT; IN ROWS 4, 5 AND 6 IN NR2 FORMAT; AND IN + ROWS 7, 8 AND 9 IN NR3 FORMAT *** + +EXCEPT: IF SIGNIFICANCE-WIDTH FOR THIS IMPLEMENTATION IS +GREATER THAN 9, ROWS 7, 8, AND 9 MUST BE IN NR1, NR3, +AND NR1 FORMAT, RESPECTIVELY. + + END TEST. + +SECTION 13.2: ROUNDING RESULTS. + +THE NUMBER OF SIGNIFICANT DIGITS PRINTED IS IMPLEMENTATION +DEFINED; HOWEVER, NR2 AND NR3 CONSTANTS WHICH CONTAIN EXCESS +DIGITS SHOULD BE PRINTED IN A STANDARD REPRESENTATION. + + BEGIN TEST. + +SOURCE CONSTANTS PROCESSOR OUTPUT + +1 1234567886 1.23457E+9 +2 .000001234567886 1.23457E-6 +3 9.999999999 10. +4 923456.7886 923457. +5 -0.09234567886 -9.23457E-2 +6 .04444444444 4.44444E-2 +7 .001200000004 .0012 + +CORRECT REPRESENTATION FOR PROCESSORS PRINTING FROM 6 TO 9 +SIGNIFICANT DIGITS + +D = 6 D = 7 D = 8 D = 9 + +1 1.23457E+9 1.234568E+9 1.2345679E+9 1.23456789E+9 +2 1.23457E-6 1.234568E-6 1.2345679E-6 1.23456789E-6 +3 10 10 10 10 + (10.) (10.) (10.) (10.) +4 923457. 923456.8 923456.79 923456.789 + (923457) +5 -9.23457E-2 -9.234568E-2 -9.2345679E-2 -9.23456789E-2 +6 4.44444E-2 4.444444E-2 4.4444444E-2 4.44444444E-2 +7 .001200 .0012000 .00120000 .001200000 + +*** TEST PASSED IF THE PROCESSOR OUTPUT IN THE FIRST SET + OF NUMBERED ROWS MATCHES THE COLUMN CORRESPONDING + TO THE IMPLEMENTATION-DEFINED SIGNIFICANCE-WIDTH + (ALLOWING FOR OPTIONAL TRAILING ZEROS IN THE + SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 13 diff --git a/NBS2/P014.80 b/NBS2/P014.80 new file mode 100644 index 0000000..1f3d89a --- /dev/null +++ b/NBS2/P014.80 @@ -0,0 +1,89 @@ +PROGRAM FILE 14: PRINTING AND ASSIGNING NUMERIC VALUES + NEAR TO THE MAXIMUM AND MINIMUM MAGNITUDE. + ANSI STANDARD 5.4, 9.4, 12.4 + +SECTION 14.1: PRINTING NR3 CONSTANTS OF SIX SIGNIFICANT + DIGITS WHICH ARE NEAR THE MAGNITUDE OF: + 1E+38 OR 1E-38. + + BEGIN TEST. + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-9.99999E34 -9.99999E+34 -9.99999E+34 ++9.99999E+35 9.99999E+35 9.99999E+35 +-9.99999E+36 -9.99999E+36 -9.99999E+36 + 9.99999E37 9.99999E+37 9.99999E+37 +-1.00001E-36 -1.00001E-36 -1.00001E-36 + 1.00001E-37 1.00001E-37 1.00001E-37 ++1.00001E-38 1.00001E-38 1.00001E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRIALING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.2: ASSIGNING NR3 CONSTANTS OF SIX SIGNIFICANT + DIGITS WHICH ARE NEAR THE MAGNITUDE OF: + 1E+38 OR 1E-38. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-1.00001E-36 -1.00001E-36 -1.00001E-36 + 1.00001E-37 1.00001E-37 1.00001E-37 ++1.00001E-38 1.00001E-38 1.00001E-38 +-9.99999E34 -9.99999E+34 -9.99999E+34 ++9.99999E+35 9.99999E+35 9.99999E+35 +-9.99999E+36 -9.99999E+36 -9.99999E+36 + 9.99999E37 9.99999E+37 9.99999E+37 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.3: NR3 NUMERIC CONSTANTS AT EXTREME + MAGNITUDES AS PRINT ITEMS. + + BEGIN TEST. + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + ++1E38 1.E+38 1.E+38 + 1E-38 1.E-38 1.E-38 +-1E+38 -1.E+38 -1.E+38 +-1E-38 -1.E-38 -1.E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.4: NR3 NUMERIC VARIABLES AT EXTREME + MAGNITUDES AS PRINT ITEMS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + ++1E+38 1.E+38 1.E+38 + 1E-38 1.E-38 1.E-38 +-1E38 -1.E+38 -1.E+38 +-1E-38 -1.E-38 -1.E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 14 diff --git a/NBS2/P014.BAS b/NBS2/P014.BAS new file mode 100644 index 0000000..a139b50 --- /dev/null +++ b/NBS2/P014.BAS @@ -0,0 +1,101 @@ +10 PRINT "PROGRAM FILE 14: PRINTING AND ASSIGNING NUMERIC VALUES" +15 PRINT " NEAR TO THE MAXIMUM AND MINIMUM MAGNITUDE." +20 PRINT " ANSI STANDARD 5.4, 9.4, 12.4" +30 PRINT +40 PRINT "SECTION 14.1: PRINTING NR3 CONSTANTS OF SIX SIGNIFICANT" +50 PRINT " DIGITS WHICH ARE NEAR THE MAGNITUDE OF:" +60 PRINT " 1E+38 OR 1E-38." +90 PRINT +100 PRINT " BEGIN TEST." +110 PRINT +120 PRINT "SOURCE","OUTPUT","ACTUAL" +130 PRINT "CONSTANT","SHOULD BE","OUTPUT" +140 PRINT +190 PRINT "-9.99999E34 ","-9.99999E+34 ",-9.99999E34 +200 PRINT "+9.99999E+35 "," 9.99999E+35 ",+9.99999E+35 +210 PRINT "-9.99999E+36 ","-9.99999E+36 ",-9.99999E+36 +220 PRINT " 9.99999E37 "," 9.99999E+37 ",9.99999E37 +230 PRINT "-1.00001E-36","-1.00001E-36",-1.00001E-36 +240 PRINT " 1.00001E-37"," 1.00001E-37",1.00001E-37 +250 PRINT "+1.00001E-38"," 1.00001E-38",+1.00001E-38 +260 PRINT +270 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +280 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRIALING ZEROS IN" +290 PRINT " THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) ***" +300 PRINT +480 PRINT " END TEST." +490 PRINT +500 PRINT "SECTION 14.2: ASSIGNING NR3 CONSTANTS OF SIX SIGNIFICANT" +510 PRINT " DIGITS WHICH ARE NEAR THE MAGNITUDE OF:" +520 PRINT " 1E+38 OR 1E-38." +530 PRINT +560 PRINT " BEGIN TEST." +570 PRINT +580 PRINT "ASSIGNED","OUTPUT","ACTUAL" +590 PRINT "CONSTANT","SHOULD BE","OUTPUT" +600 PRINT +610 LET A=-1.00001E-36 +620 LET B=1.00001E-37 +630 LET C=+1.00001E-38 +650 LET E=-9.99999E34 +660 LET F=+9.99999E+35 +670 LET G=-9.99999E+36 +680 LET H=9.99999E37 +690 PRINT "-1.00001E-36","-1.00001E-36",A +700 PRINT " 1.00001E-37"," 1.00001E-37",B +710 PRINT "+1.00001E-38"," 1.00001E-38",C +730 PRINT "-9.99999E34 ","-9.99999E+34",E +740 PRINT "+9.99999E+35"," 9.99999E+35",F +750 PRINT "-9.99999E+36","-9.99999E+36",G +760 PRINT " 9.99999E37"," 9.99999E+37",H +770 PRINT +775 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +780 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN" +790 PRINT " THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) ***" +800 PRINT +810 PRINT " END TEST." +1130 PRINT +1140 PRINT "SECTION 14.3: NR3 NUMERIC CONSTANTS AT EXTREME" +1145 PRINT " MAGNITUDES AS PRINT ITEMS." +1150 PRINT +1160 PRINT " BEGIN TEST." +1170 PRINT +1180 PRINT "SOURCE","OUTPUT","ACTUAL" +1190 PRINT "CONSTANT","SHOULD BE","OUTPUT" +1200 PRINT +1210 PRINT "+1E38"," 1.E+38",+1E38 +1220 PRINT " 1E-38"," 1.E-38",1E-38 +1230 PRINT "-1E+38","-1.E+38",-1E+38 +1240 PRINT "-1E-38","-1.E-38",-1E-38 +1250 PRINT +1260 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +1270 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN" +1280 PRINT " THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) ***" +1290 PRINT +1300 PRINT " END TEST." +1310 PRINT +1320 PRINT "SECTION 14.4: NR3 NUMERIC VARIABLES AT EXTREME" +1325 PRINT " MAGNITUDES AS PRINT ITEMS." +1330 PRINT +1340 PRINT " BEGIN TEST." +1350 PRINT +1360 PRINT "ASSIGNED","OUTPUT","ACTUAL" +1370 PRINT "CONSTANT","SHOULD BE","OUTPUT" +1380 PRINT +1390 LET A=+1E+38 +1400 LET B=1E-38 +1410 LET C=-1E38 +1420 LET D=-1E-38 +1430 PRINT "+1E+38"," 1.E+38",A +1440 PRINT " 1E-38"," 1.E-38",B +1450 PRINT "-1E38","-1.E+38",C +1460 PRINT "-1E-38","-1.E-38",D +1470 PRINT +1480 PRINT "*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT" +1490 PRINT " SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN" +1500 PRINT " THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) ***" +1510 PRINT +1520 PRINT " END TEST." +1530 PRINT +1540 PRINT "END PROGRAM 14" +1550 END diff --git a/NBS2/P014.OUT b/NBS2/P014.OUT new file mode 100644 index 0000000..5f329ab --- /dev/null +++ b/NBS2/P014.OUT @@ -0,0 +1,89 @@ +PROGRAM FILE 14: PRINTING AND ASSIGNING NUMERIC VALUES + NEAR TO THE MAXIMUM AND MINIMUM MAGNITUDE. + ANSI STANDARD 5.4, 9.4, 12.4 + +SECTION 14.1: PRINTING NR3 CONSTANTS OF SIX SIGNIFICANT + DIGITS WHICH ARE NEAR THE MAGNITUDE OF: + 1E+38 OR 1E-38. + + BEGIN TEST. + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-9.99999E34 -9.99999E+34 -9.99999E+34 ++9.99999E+35 9.99999E+35 9.99999E+35 +-9.99999E+36 -9.99999E+36 -9.99999E+36 + 9.99999E37 9.99999E+37 9.99999E+37 +-1.00001E-36 -1.00001E-36 -1.00001E-36 + 1.00001E-37 1.00001E-37 1.00001E-37 ++1.00001E-38 1.00001E-38 1.00001E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRIALING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.2: ASSIGNING NR3 CONSTANTS OF SIX SIGNIFICANT + DIGITS WHICH ARE NEAR THE MAGNITUDE OF: + 1E+38 OR 1E-38. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-1.00001E-36 -1.00001E-36 -1.00001E-36 + 1.00001E-37 1.00001E-37 1.00001E-37 ++1.00001E-38 1.00001E-38 1.00001E-38 +-9.99999E34 -9.99999E+34 -9.99999E+34 ++9.99999E+35 9.99999E+35 9.99999E+35 +-9.99999E+36 -9.99999E+36 -9.99999E+36 + 9.99999E37 9.99999E+37 9.99999E+37 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.3: NR3 NUMERIC CONSTANTS AT EXTREME + MAGNITUDES AS PRINT ITEMS. + + BEGIN TEST. + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + ++1E38 1.E+38 1.E+38 + 1E-38 1.E-38 1.E-38 +-1E+38 -1.E+38 -1.E+38 +-1E-38 -1.E-38 -1.E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.4: NR3 NUMERIC VARIABLES AT EXTREME + MAGNITUDES AS PRINT ITEMS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + ++1E+38 1.E+38 1.E+38 + 1E-38 1.E-38 1.E-38 +-1E38 -1.E+38 -1.E+38 +-1E-38 -1.E-38 -1.E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 14 diff --git a/NBS2/P014.dif b/NBS2/P014.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P014.run b/NBS2/P014.run new file mode 100644 index 0000000..1f3d89a --- /dev/null +++ b/NBS2/P014.run @@ -0,0 +1,89 @@ +PROGRAM FILE 14: PRINTING AND ASSIGNING NUMERIC VALUES + NEAR TO THE MAXIMUM AND MINIMUM MAGNITUDE. + ANSI STANDARD 5.4, 9.4, 12.4 + +SECTION 14.1: PRINTING NR3 CONSTANTS OF SIX SIGNIFICANT + DIGITS WHICH ARE NEAR THE MAGNITUDE OF: + 1E+38 OR 1E-38. + + BEGIN TEST. + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-9.99999E34 -9.99999E+34 -9.99999E+34 ++9.99999E+35 9.99999E+35 9.99999E+35 +-9.99999E+36 -9.99999E+36 -9.99999E+36 + 9.99999E37 9.99999E+37 9.99999E+37 +-1.00001E-36 -1.00001E-36 -1.00001E-36 + 1.00001E-37 1.00001E-37 1.00001E-37 ++1.00001E-38 1.00001E-38 1.00001E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRIALING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.2: ASSIGNING NR3 CONSTANTS OF SIX SIGNIFICANT + DIGITS WHICH ARE NEAR THE MAGNITUDE OF: + 1E+38 OR 1E-38. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + +-1.00001E-36 -1.00001E-36 -1.00001E-36 + 1.00001E-37 1.00001E-37 1.00001E-37 ++1.00001E-38 1.00001E-38 1.00001E-38 +-9.99999E34 -9.99999E+34 -9.99999E+34 ++9.99999E+35 9.99999E+35 9.99999E+35 +-9.99999E+36 -9.99999E+36 -9.99999E+36 + 9.99999E37 9.99999E+37 9.99999E+37 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.3: NR3 NUMERIC CONSTANTS AT EXTREME + MAGNITUDES AS PRINT ITEMS. + + BEGIN TEST. + +SOURCE OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + ++1E38 1.E+38 1.E+38 + 1E-38 1.E-38 1.E-38 +-1E+38 -1.E+38 -1.E+38 +-1E-38 -1.E-38 -1.E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +SECTION 14.4: NR3 NUMERIC VARIABLES AT EXTREME + MAGNITUDES AS PRINT ITEMS. + + BEGIN TEST. + +ASSIGNED OUTPUT ACTUAL +CONSTANT SHOULD BE OUTPUT + ++1E+38 1.E+38 1.E+38 + 1E-38 1.E-38 1.E-38 +-1E38 -1.E+38 -1.E+38 +-1E-38 -1.E-38 -1.E-38 + +*** TEST PASSED IF ACTUAL OUTPUT MATCHES OUTPUT AS IT + SHOULD BE (ALLOWING FOR OPTIONAL TRAILING ZEROS IN + THE SIGNIFICAND AND LEADING ZEROS IN THE EXRAD) *** + + END TEST. + +END PROGRAM 14 diff --git a/NBS2/P015.80 b/NBS2/P015.80 new file mode 100644 index 0000000..551bbe7 --- /dev/null +++ b/NBS2/P015.80 @@ -0,0 +1,50 @@ +PROGRAM FILE 15: THE REM AND GOTO STATEMENTS. + ANSI STANDARD 18.2, 18.4, 10.2, 10.4 + +SECTION 15.1: THE REM-STATEMENT - FOR PROGRAM COMMENTS. + + BEGIN TEST. +*** REM TEST PASSED IF THESE ARE THE ONLY TWO LINES + PRINTED BETWEEN 'BEGIN TEST.' AND 'END TEST.' *** + END TEST. + +SECTION 15.2: TEST OPTIONAL SPELLING OF GOTO AND TRANSFER TO + REM-STATEMENT. + + BEGIN TEST. + +IF 1 FOLLOWS THIS LINE, TRANSFER USING 'GOTO' PERFORMED + 1 +IF 2 FOLLOWS THIS LINE, TRANSFER USING 'GO TO' PERFORMED + 2 +IF 3 FOLLOWS THIS LINE, TRANSFER USING 'GO TO' PERFORMED + 3 +IF 4 FOLLOWS THIS LINE, TRANSFER TO REM-STATEMENT PERFORMED + 4 +IF 5 FOLLOWS THIS LINE, FORWARD TRANSFER PERFORMED + 5 +IF 6 FOLLOWS THIS LINE, BACKWARD TRANSFER PERFORMED + 6 +IF 7 FOLLOWS THIS LINE, BACKWARD TRANSFER PERFORMED + 7 +IF 8 FOLLOWS THESE TWO LINES, FORWARD TRANSFER PERFORMED, + WITH LEADING ZERO IN LINE NUMBER OF THE GOTO + 8 + +THE NEXT OUTPUT MUST BE THE '*** TEST PASSED...' +MESSAGE FOR TEST TO PASS. + +*** TEST PASSED IF THE OUTPUT ABOVE IS ORDERED 1,2...,8 + AND NO ERROR MESSAGES HAVE APPEARED *** + + END TEST. + +SECTION 15.3: GOTO-STATEMENT TRANSFERS TO ANOTHER GOTO. + + BEGIN TEST. + +*** TEST PASSED IF THERE ARE NO ERROR MESSAGES *** + + END TEST. + +END PROGRAM 15 diff --git a/NBS2/P015.BAS b/NBS2/P015.BAS new file mode 100644 index 0000000..857467a --- /dev/null +++ b/NBS2/P015.BAS @@ -0,0 +1,96 @@ +10 PRINT "PROGRAM FILE 15: THE REM AND GOTO STATEMENTS." +20 PRINT " ANSI STANDARD 18.2, 18.4, 10.2, 10.4" +30 PRINT +40 PRINT "SECTION 15.1: THE REM-STATEMENT - FOR PROGRAM COMMENTS." +50 PRINT +60 PRINT " BEGIN TEST." +80 REM THIS SECTION TESTS THE REM-STATEMENT. THE MINIMAL BASIC +90 REM CHARACTER SET OF ASCII CHARACTERS IS GIVEN BELOW. +100 REM +110 REM ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456780 +120 REM ! "#$%&'()*+,-./:;<=>?^_ +130 REM +140 REM THE PROGRAM FLOW SHOULD NOT BE ALTERED BY REM STATEMENTS. +160 PRINT "*** REM TEST PASSED IF THESE ARE THE ONLY TWO LINES " +162 REM BETWEEN TWO PRINTS HAS NO EFFECT +165 PRINT " PRINTED BETWEEN 'BEGIN TEST.' AND 'END TEST.' ***" +170 REM NOR DOES A REM FOLLOWING LAST PRINT +180 PRINT " END TEST." +190 PRINT +200 PRINT "SECTION 15.2: TEST OPTIONAL SPELLING OF GOTO AND TRANSFER TO" +210 PRINT " REM-STATEMENT." +220 PRINT +230 PRINT " BEGIN TEST." +240 PRINT +250 PRINT "IF 1 FOLLOWS THIS LINE, TRANSFER USING 'GOTO' PERFORMED" +260 GOTO 430 +270 PRINT " ERROR: TRANSFER FROM LINE 260 TO 430 NOT PERFORMED" +280 LET M=3 +290 PRINT TAB(67);M +300 PRINT "IF 4 FOLLOWS THIS LINE, TRANSFER TO REM-STATEMENT PERFORMED" +310 GO TO 600 +320 PRINT " ERROR: TRANSFER FROM LINE 310 TO 600 NOT PERFORMED" +330 LET M=7 +340 PRINT TAB(67);M +350 PRINT "IF 8 FOLLOWS THESE TWO LINES, FORWARD TRANSFER PERFORMED," +355 PRINT " WITH LEADING ZERO IN LINE NUMBER OF THE GOTO" +360 GO TO 0480 +370 PRINT " ERROR: TRANSFER FROM LINE 360 TO 480 NOT PERFORMED" +380 LET M=2 +390 PRINT TAB(67);M +400 PRINT "IF 3 FOLLOWS THIS LINE, TRANSFER USING 'GO TO' PERFORMED" +410 GO TO 280 +420 PRINT " ERROR: TRANSFER FROM LINE 410 TO 280 NOT PERFORMED" +430 LET M=1 +440 PRINT TAB(67);M +450 PRINT "IF 2 FOLLOWS THIS LINE, TRANSFER USING 'GO TO' PERFORMED" +460 GO TO 380 +470 PRINT " ERROR: TRANSFER FROM LINE 460 TO 380 NOT PERFORMED" +480 LET M=8 +490 PRINT TAB(67);M +495 PRINT +500 PRINT "THE NEXT OUTPUT MUST BE THE '*** TEST PASSED...'" +510 PRINT "MESSAGE FOR TEST TO PASS." +515 PRINT +520 GO TO 710 +530 PRINT " ERROR: TRANSFER FROM LINE 520 TO 710 NOT PERFORMED" +540 LET M=6 +550 PRINT TAB(67);M +560 PRINT "IF 7 FOLLOWS THIS LINE, BACKWARD TRANSFER PERFORMED" +570 GO TO 330 +580 PRINT " ERROR: TRANSFER FROM LINE 570 TO 330 NOT PERFORMED" +590 REM +600 REM TEST GOTO TRANSFERRING TO REM STATEMENT. +610 LET M=4 +620 PRINT TAB(67);M +630 PRINT "IF 5 FOLLOWS THIS LINE, FORWARD TRANSFER PERFORMED" +640 GO TO 660 +650 PRINT " ERROR: TRANSFER FROM LINE 640 TO 660 NOT PERFORMED" +660 LET M=5 +670 PRINT TAB(67);M +680 PRINT "IF 6 FOLLOWS THIS LINE, BACKWARD TRANSFER PERFORMED" +690 GO TO 540 +700 PRINT " ERROR: TRANSFER FROM LINE 690 TO 540 NOT PERFORMED" +710 PRINT "*** TEST PASSED IF THE OUTPUT ABOVE IS ORDERED 1,2...,8 " +720 PRINT " AND NO ERROR MESSAGES HAVE APPEARED ***" +730 PRINT +740 PRINT " END TEST." +760 PRINT +770 PRINT "SECTION 15.3: GOTO-STATEMENT TRANSFERS TO ANOTHER GOTO." +780 PRINT +790 PRINT " BEGIN TEST." +800 PRINT +810 GOTO 880 +820 PRINT " ERROR: TRANSFER FROM LINE 810 TO 880 NOT PERFORMED" +830 PRINT "*** TEST PASSED IF THERE ARE NO ERROR MESSAGES ***" +840 GOTO 900 +850 PRINT " ERROR: TRANSFER FROM LINE 840 TO 900 NOT PERFORMED" +860 GOTO 830 +870 PRINT " ERROR: TRANSFER FROM LINE 860 TO 830 NOT PERFORMED" +880 GOTO 860 +890 PRINT " ERROR: TRANSFER FROM LINE 880 TO 860 NOT PERFORMED" +900 PRINT +910 PRINT " END TEST." +920 PRINT +930 PRINT "END PROGRAM 15" +940 END diff --git a/NBS2/P015.OUT b/NBS2/P015.OUT new file mode 100644 index 0000000..309e806 --- /dev/null +++ b/NBS2/P015.OUT @@ -0,0 +1,50 @@ +PROGRAM FILE 15: THE REM AND GOTO STATEMENTS. + ANSI STANDARD 18.2, 18.4, 10.2, 10.4 + +SECTION 15.1: THE REM-STATEMENT - FOR PROGRAM COMMENTS. + + BEGIN TEST. +*** REM TEST PASSED IF THESE ARE THE ONLY TWO LINES + PRINTED BETWEEN 'BEGIN TEST.' AND 'END TEST.' *** + END TEST. + +SECTION 15.2: TEST OPTIONAL SPELLING OF GOTO AND TRANSFER TO + REM-STATEMENT. + + BEGIN TEST. + +IF 1 FOLLOWS THIS LINE, TRANSFER USING 'GOTO' PERFORMED + 1 +IF 2 FOLLOWS THIS LINE, TRANSFER USING 'GO TO' PERFORMED + 2 +IF 3 FOLLOWS THIS LINE, TRANSFER USING 'GO TO' PERFORMED + 3 +IF 4 FOLLOWS THIS LINE, TRANSFER TO REM-STATEMENT PERFORMED + 4 +IF 5 FOLLOWS THIS LINE, FORWARD TRANSFER PERFORMED + 5 +IF 6 FOLLOWS THIS LINE, BACKWARD TRANSFER PERFORMED + 6 +IF 7 FOLLOWS THIS LINE, BACKWARD TRANSFER PERFORMED + 7 +IF 8 FOLLOWS THESE TWO LINES, FORWARD TRANSFER PERFORMED, + WITH LEADING ZERO IN LINE NUMBER OF THE GOTO + 8 + +THE NEXT OUTPUT MUST BE THE '*** TEST PASSED...' +MESSAGE FOR TEST TO PASS. + +*** TEST PASSED IF THE OUTPUT ABOVE IS ORDERED 1,2...,8 + AND NO ERROR MESSAGES HAVE APPEARED *** + + END TEST. + +SECTION 15.3: GOTO-STATEMENT TRANSFERS TO ANOTHER GOTO. + + BEGIN TEST. + +*** TEST PASSED IF THERE ARE NO ERROR MESSAGES *** + + END TEST. + +END PROGRAM 15 diff --git a/NBS2/P015.dif b/NBS2/P015.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P015.run b/NBS2/P015.run new file mode 100644 index 0000000..551bbe7 --- /dev/null +++ b/NBS2/P015.run @@ -0,0 +1,50 @@ +PROGRAM FILE 15: THE REM AND GOTO STATEMENTS. + ANSI STANDARD 18.2, 18.4, 10.2, 10.4 + +SECTION 15.1: THE REM-STATEMENT - FOR PROGRAM COMMENTS. + + BEGIN TEST. +*** REM TEST PASSED IF THESE ARE THE ONLY TWO LINES + PRINTED BETWEEN 'BEGIN TEST.' AND 'END TEST.' *** + END TEST. + +SECTION 15.2: TEST OPTIONAL SPELLING OF GOTO AND TRANSFER TO + REM-STATEMENT. + + BEGIN TEST. + +IF 1 FOLLOWS THIS LINE, TRANSFER USING 'GOTO' PERFORMED + 1 +IF 2 FOLLOWS THIS LINE, TRANSFER USING 'GO TO' PERFORMED + 2 +IF 3 FOLLOWS THIS LINE, TRANSFER USING 'GO TO' PERFORMED + 3 +IF 4 FOLLOWS THIS LINE, TRANSFER TO REM-STATEMENT PERFORMED + 4 +IF 5 FOLLOWS THIS LINE, FORWARD TRANSFER PERFORMED + 5 +IF 6 FOLLOWS THIS LINE, BACKWARD TRANSFER PERFORMED + 6 +IF 7 FOLLOWS THIS LINE, BACKWARD TRANSFER PERFORMED + 7 +IF 8 FOLLOWS THESE TWO LINES, FORWARD TRANSFER PERFORMED, + WITH LEADING ZERO IN LINE NUMBER OF THE GOTO + 8 + +THE NEXT OUTPUT MUST BE THE '*** TEST PASSED...' +MESSAGE FOR TEST TO PASS. + +*** TEST PASSED IF THE OUTPUT ABOVE IS ORDERED 1,2...,8 + AND NO ERROR MESSAGES HAVE APPEARED *** + + END TEST. + +SECTION 15.3: GOTO-STATEMENT TRANSFERS TO ANOTHER GOTO. + + BEGIN TEST. + +*** TEST PASSED IF THERE ARE NO ERROR MESSAGES *** + + END TEST. + +END PROGRAM 15 diff --git a/NBS2/P016.80 b/NBS2/P016.80 new file mode 100644 index 0000000..8ac07cb --- /dev/null +++ b/NBS2/P016.80 @@ -0,0 +1,23 @@ +PROGRAM FILE 16: ERROR - TRANSFER TO A NON-EXISTING LINE + NUMBER USING THE GOTO-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 16.1: ERROR - TRANSFER TO A NON-EXISTING LINE + NUMBER USING THE GOTO-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 240: Line number 275 not found diff --git a/NBS2/P016.BAS b/NBS2/P016.BAS new file mode 100644 index 0000000..7ca224b --- /dev/null +++ b/NBS2/P016.BAS @@ -0,0 +1,32 @@ +10 PRINT "PROGRAM FILE 16: ERROR - TRANSFER TO A NON-EXISTING LINE" +15 PRINT " NUMBER USING THE GOTO-STATEMENT." +20 PRINT " ANSI STANDARD 10.4" +30 PRINT +40 PRINT "SECTION 16.1: ERROR - TRANSFER TO A NON-EXISTING LINE" +50 PRINT " NUMBER USING THE GOTO-STATEMENT." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 LET A$="LINE 180." +240 GOTO 275 +250 PRINT "IF THIS MESSAGE APPEARS 'GOTO 275' WAS NOT EXECUTED." +260 GOTO 290 +270 LET A$="LINE 270." +280 PRINT "'GOTO 275' JUMPED TO ";A$ +290 PRINT +300 PRINT " END TEST." +310 PRINT +320 PRINT "END PROGRAM 16" +330 END diff --git a/NBS2/P016.OUT b/NBS2/P016.OUT new file mode 100644 index 0000000..94be249 --- /dev/null +++ b/NBS2/P016.OUT @@ -0,0 +1,23 @@ +PROGRAM FILE 16: ERROR - TRANSFER TO A NON-EXISTING LINE + NUMBER USING THE GOTO-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 16.1: ERROR - TRANSFER TO A NON-EXISTING LINE + NUMBER USING THE GOTO-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 240: Line number 275 not found diff --git a/NBS2/P016.dif b/NBS2/P016.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P016.run b/NBS2/P016.run new file mode 100644 index 0000000..8ac07cb --- /dev/null +++ b/NBS2/P016.run @@ -0,0 +1,23 @@ +PROGRAM FILE 16: ERROR - TRANSFER TO A NON-EXISTING LINE + NUMBER USING THE GOTO-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 16.1: ERROR - TRANSFER TO A NON-EXISTING LINE + NUMBER USING THE GOTO-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 240: Line number 275 not found diff --git a/NBS2/P017.80 b/NBS2/P017.80 new file mode 100644 index 0000000..92b47de --- /dev/null +++ b/NBS2/P017.80 @@ -0,0 +1,21 @@ +PROGRAM FILE 17: ELEMENTARY USE OF GOSUB AND RETURN. + ANSI STANDARD 10.2, 10.4 + +SECTION 17.1: ELEMENTARY USE OF GOSUB AND RETURN. + +THIS PROGRAM TESTS THAT THE SUBROUTINE MECHANISM EXISTS +AND THAT A SUBROUTINE CAN BE INVOKED FROM SEVERAL +PLACES IN THE MAIN LINE OF CONTROL. + + BEGIN TEST. + +IF THE NEXT MESSAGE '*** GOSUB TEST PASSED ***' IS +SPELLED CORRECTLY, THE TEST PASSED. + +*** GOSUB TEST PASSED *** + + END TEST. + +END PROGRAM 17 + +Program interrupted at line 230 diff --git a/NBS2/P017.BAS b/NBS2/P017.BAS new file mode 100644 index 0000000..c7c84e5 --- /dev/null +++ b/NBS2/P017.BAS @@ -0,0 +1,32 @@ +10 PRINT "PROGRAM FILE 17: ELEMENTARY USE OF GOSUB AND RETURN." +20 PRINT " ANSI STANDARD 10.2, 10.4" +30 PRINT +40 PRINT "SECTION 17.1: ELEMENTARY USE OF GOSUB AND RETURN." +50 PRINT +52 PRINT "THIS PROGRAM TESTS THAT THE SUBROUTINE MECHANISM EXISTS" +54 PRINT "AND THAT A SUBROUTINE CAN BE INVOKED FROM SEVERAL" +56 PRINT "PLACES IN THE MAIN LINE OF CONTROL." +58 PRINT +60 PRINT " BEGIN TEST." +70 PRINT +80 PRINT "IF THE NEXT MESSAGE '*** GOSUB TEST PASSED ***' IS" +90 PRINT "SPELLED CORRECTLY, THE TEST PASSED." +100 PRINT +110 GOSUB 1000 +120 PRINT "GO"; +130 GOSUB 1200 +140 PRINT "UB TE"; +150 GOSUB 1200 +160 PRINT "T PAS"; +170 GOSUB 1200 +180 PRINT "ED ***" +190 PRINT +200 PRINT " END TEST." +210 PRINT +220 PRINT "END PROGRAM 17" +230 STOP +1000 PRINT "*** "; +1010 RETURN +1200 PRINT "S"; +1210 RETURN +1220 END diff --git a/NBS2/P017.OUT b/NBS2/P017.OUT new file mode 100644 index 0000000..85df8d0 --- /dev/null +++ b/NBS2/P017.OUT @@ -0,0 +1,21 @@ +PROGRAM FILE 17: ELEMENTARY USE OF GOSUB AND RETURN. + ANSI STANDARD 10.2, 10.4 + +SECTION 17.1: ELEMENTARY USE OF GOSUB AND RETURN. + +THIS PROGRAM TESTS THAT THE SUBROUTINE MECHANISM EXISTS +AND THAT A SUBROUTINE CAN BE INVOKED FROM SEVERAL +PLACES IN THE MAIN LINE OF CONTROL. + + BEGIN TEST. + +IF THE NEXT MESSAGE '*** GOSUB TEST PASSED ***' IS +SPELLED CORRECTLY, THE TEST PASSED. + +*** GOSUB TEST PASSED *** + + END TEST. + +END PROGRAM 17 + +Program interrupted at line 230 diff --git a/NBS2/P017.dif b/NBS2/P017.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P017.run b/NBS2/P017.run new file mode 100644 index 0000000..92b47de --- /dev/null +++ b/NBS2/P017.run @@ -0,0 +1,21 @@ +PROGRAM FILE 17: ELEMENTARY USE OF GOSUB AND RETURN. + ANSI STANDARD 10.2, 10.4 + +SECTION 17.1: ELEMENTARY USE OF GOSUB AND RETURN. + +THIS PROGRAM TESTS THAT THE SUBROUTINE MECHANISM EXISTS +AND THAT A SUBROUTINE CAN BE INVOKED FROM SEVERAL +PLACES IN THE MAIN LINE OF CONTROL. + + BEGIN TEST. + +IF THE NEXT MESSAGE '*** GOSUB TEST PASSED ***' IS +SPELLED CORRECTLY, THE TEST PASSED. + +*** GOSUB TEST PASSED *** + + END TEST. + +END PROGRAM 17 + +Program interrupted at line 230 diff --git a/NBS2/P018.80 b/NBS2/P018.80 new file mode 100644 index 0000000..8a1a7c2 --- /dev/null +++ b/NBS2/P018.80 @@ -0,0 +1,54 @@ +PROGRAM FILE 18: THE IF-THEN STATEMENT WITH STRING OPERANDS. + ANSI STANDARD 10.2, 10.4 + +SECTION 18.1: THE IF-THEN STATEMENT WITH STRING OPERANDS. + +THIS SECTION TESTS THE COMPARISON OF STRING VARIABLES AND +CONSTANTS WITH A VARIETY OF VALUES. BOTH RELATIONSHIPS +(= AND <>) ARE TESTED FOR EACH PAIR OF VALUES. THE 'V' OR +'C' FOLLOWING THE COMPARAND VALUE INDICATES WHETHER IT IS +A VARIABLE OR A CONSTANTS. + +'T' OR 'F' IS PRINTED TO SHOW THE OUTCOME OF THE +COMPARISON. FOR INCORRECT COMPARES, AN '*' IS PRINTED +NEXT TO THE ERRONEOUS RESULT. WHEN DISPLAYING COMPARAND +VALUES, THE UNDERLINE CHARACTER, '_', IS USED TO REPRESENT +THE SPACE CHARACTER (THUS A DISPLAYED 'ONE_BLANK' +INDICATES AN INTERNAL VALUE OF 'ONE BLANK'). +ALSO, THE NULL STRING (LENGTH OF ZERO) IS DENOTED BY THE +LABEL '(NULL STRING)'. + +CHARACTER STRINGS SHOULD TEST EQUAL IF AND ONLY IF THE +STRINGS ARE EQUAL IN LENGTH AND CONTAIN IDENTICAL SEQUENCES +OF CHARACTERS. + + BEGIN TEST. + +LEFT : RIGHT +COMPARAND V/C: COMPARAND V/C = <> RESULT + +ABC C : __ABC V F T OK +ABC C : ABC V T F OK +ABC C : ABC_ V F T OK +ABC C : ___ABC__ V F T OK +ABC C : (NULL STRING) V F T OK +ABC C : ABCD V F T OK +___0X9 V : _0X9__ C F T OK +0X9 V : _0X9__ C F T OK +0X9__ V : _0X9__ C F T OK +_0X9__ V : _0X9__ C T F OK +__ V : ____ V F T OK +_ V : (NULL STRING) V F T OK +18_CHARACTERS_LONG V : 18_CHARACTERS_LONG V T F OK +18_CHARACTERS_LONG V : 18_CHARACTERS_LONK V F T OK +!#$%&'()0=+*<>? V : !#$%&'()0=+*<>? V T F OK +(NULL STRING) V : (NULL STRING) V T F OK +UVWXYZ_ V : UVWXYZ__ V F T OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 18 + +Program interrupted at line 1940 diff --git a/NBS2/P018.BAS b/NBS2/P018.BAS new file mode 100644 index 0000000..cdbb934 --- /dev/null +++ b/NBS2/P018.BAS @@ -0,0 +1,209 @@ +10 PRINT "PROGRAM FILE 18: THE IF-THEN STATEMENT WITH STRING OPERANDS." +20 PRINT " ANSI STANDARD 10.2, 10.4" +30 PRINT +40 PRINT "SECTION 18.1: THE IF-THEN STATEMENT WITH STRING OPERANDS." +50 PRINT +60 PRINT "THIS SECTION TESTS THE COMPARISON OF STRING VARIABLES AND" +70 PRINT "CONSTANTS WITH A VARIETY OF VALUES. BOTH RELATIONSHIPS" +80 PRINT "(= AND <>) ARE TESTED FOR EACH PAIR OF VALUES. THE 'V' OR" +90 PRINT "'C' FOLLOWING THE COMPARAND VALUE INDICATES WHETHER IT IS" +100 PRINT "A VARIABLE OR A CONSTANTS." +110 PRINT +120 PRINT "'T' OR 'F' IS PRINTED TO SHOW THE OUTCOME OF THE" +130 PRINT "COMPARISON. FOR INCORRECT COMPARES, AN '*' IS PRINTED" +140 PRINT "NEXT TO THE ERRONEOUS RESULT. WHEN DISPLAYING COMPARAND" +150 PRINT "VALUES, THE UNDERLINE CHARACTER, '_', IS USED TO REPRESENT" +160 PRINT "THE SPACE CHARACTER (THUS A DISPLAYED 'ONE_BLANK' " +170 PRINT "INDICATES AN INTERNAL VALUE OF 'ONE BLANK')." +171 PRINT "ALSO, THE NULL STRING (LENGTH OF ZERO) IS DENOTED BY THE" +172 PRINT "LABEL '(NULL STRING)'." +180 PRINT +190 PRINT "CHARACTER STRINGS SHOULD TEST EQUAL IF AND ONLY IF THE" +200 PRINT "STRINGS ARE EQUAL IN LENGTH AND CONTAIN IDENTICAL SEQUENCES" +210 PRINT "OF CHARACTERS." +220 PRINT +230 PRINT " BEGIN TEST." +240 PRINT +250 PRINT "LEFT";TAB(22);": RIGHT" +260 PRINT "COMPARAND";TAB(19);"V/C: COMPARAND";TAB(42);"V/C"; +270 PRINT TAB(47);"=";TAB(51);"<>";TAB(55);"RESULT" +275 PRINT +280 LET R$="PASSED" +300 LET T$=" ABC" +310 LET V$="__ABC" +320 GOSUB 2500 +330 LET T$="ABC" +340 LET V$="ABC" +350 GOSUB 2000 +360 LET T$="ABC " +370 LET V$="ABC_" +380 GOSUB 2500 +390 LET T$=" ABC " +400 LET V$="___ABC__" +410 GOSUB 2500 +420 LET T$="" +430 LET V$="(NULL STRING)" +440 GOSUB 2500 +450 LET T$="ABCD" +460 LET V$="ABCD" +470 GOSUB 2500 +500 LET T$=" 0X9" +510 LET V$="___0X9" +520 GOSUB 3500 +530 LET T$="0X9" +540 LET V$="0X9" +550 GOSUB 3500 +560 LET T$="0X9 " +570 LET V$="0X9__" +580 GOSUB 3500 +590 LET T$=" 0X9 " +600 LET V$="_0X9__" +610 GOSUB 3000 +620 LET T$=" " +630 LET V$="__" +640 LET U$=" " +650 LET W$="____" +660 GOSUB 4500 +670 LET T$=" " +680 LET V$="_" +690 LET U$="" +700 LET W$="(NULL STRING)" +710 GOSUB 4500 +720 LET T$="18 CHARACTERS LONG" +730 LET V$="18_CHARACTERS_LONG" +740 LET U$="18 CHARACTERS LONG" +750 LET W$="18_CHARACTERS_LONG" +760 GOSUB 4000 +770 LET U$="18 CHARACTERS LONK" +780 LET W$="18_CHARACTERS_LONK" +790 GOSUB 4500 +800 LET T$="!#$%&'()0=+*<>?" +810 LET V$="!#$%&'()0=+*<>?" +820 LET U$="!#$%&'()0=+*<>?" +830 LET W$="!#$%&'()0=+*<>?" +840 GOSUB 4000 +850 LET T$="" +860 LET V$="(NULL STRING)" +870 LET U$="" +880 LET W$="(NULL STRING)" +890 GOSUB 4000 +900 LET T$="UVWXYZ " +910 LET V$="UVWXYZ_" +920 LET U$="UVWXYZ " +930 LET W$="UVWXYZ__" +940 GOSUB 4500 +1900 PRINT +1910 PRINT "*** TEST ";R$;" ***" +1915 PRINT +1920 PRINT " END TEST." +1925 PRINT +1930 PRINT "END PROGRAM 18" +1940 STOP +2000 REM SUBROUTINE TO TEST CONSTANT = VARIABLE +2005 LET B$="T*" +2010 LET A$="T" +2020 LET L$=" OK " +2030 IF "ABC"<>T$ THEN 2060 +2040 LET B$="F" +2050 GOTO 2080 +2060 LET R$="FAILED" +2070 LET L$="FAILED" +2080 IF "ABC"=T$ THEN 2120 +2090 LET R$="FAILED" +2100 LET L$="FAILED" +2110 LET A$="F*" +2120 GOSUB 2900 +2125 GOSUB 5000 +2130 RETURN +2500 REM SUBROUTINE TO TEST CONSTANT <> VARIABLE +2505 LET A$="T*" +2510 LET B$="T" +2520 LET L$=" OK " +2530 IF "ABC"=T$ THEN 2560 +2540 LET A$="F" +2550 GOTO 2580 +2560 LET R$="FAILED" +2570 LET L$="FAILED" +2580 IF "ABC"<>T$ THEN 2620 +2590 LET R$="FAILED" +2600 LET L$="FAILED" +2610 LET B$="F*" +2620 GOSUB 2900 +2625 GOSUB 5000 +2630 RETURN +2900 REM SUBROUTINE TO PRINT COMPARANDS FOR CONSTANT:VARIABLE +2910 PRINT "ABC";TAB(20);"C : ";V$;TAB(43);"V"; +2920 RETURN +3000 REM SUBROUTINE TO TEST VARIABLE = CONSTANT +3005 LET B$="T*" +3010 LET A$="T" +3020 LET L$=" OK " +3030 IF T$<>" 0X9 " THEN 3060 +3040 LET B$="F" +3050 GOTO 3080 +3060 LET R$="FAILED" +3070 LET L$="FAILED" +3080 IF T$=" 0X9 " THEN 3120 +3090 LET R$="FAILED" +3100 LET L$="FAILED" +3110 LET A$="F*" +3120 GOSUB 3900 +3125 GOSUB 5000 +3130 RETURN +3500 REM SUBROUTINE TO TEST VARIABLE <> CONSTANT +3505 LET A$="T*" +3510 LET B$="T" +3520 LET L$=" OK " +3530 IF T$=" 0X9 " THEN 3560 +3540 LET A$="F" +3550 GOTO 3580 +3560 LET R$="FAILED" +3570 LET L$="FAILED" +3580 IF T$<>" 0X9 " THEN 3620 +3590 LET R$="FAILED" +3600 LET L$="FAILED" +3610 LET B$="F*" +3620 GOSUB 3900 +3625 GOSUB 5000 +3630 RETURN +3900 REM SUBROUTINE TO PRINT COMPARANDS FOR VARIABLE:CONSTANT +3910 PRINT V$;TAB(20);"V : _0X9__";TAB(43);"C"; +3920 RETURN +4000 REM SUBROUTINE TO TEST VARIABLE = VARIABLE +4005 LET B$="T*" +4010 LET A$="T" +4020 LET L$=" OK " +4030 IF T$<>U$ THEN 4060 +4040 LET B$="F" +4050 GOTO 4080 +4060 LET R$="FAILED" +4070 LET L$="FAILED" +4080 IF T$=U$ THEN 4120 +4090 LET R$="FAILED" +4100 LET L$="FAILED" +4120 GOSUB 4900 +4125 GOSUB 5000 +4130 RETURN +4500 REM SUBROUTINE TO TEST VARIABLE <> VARIABLE +4505 LET A$="T*" +4510 LET B$="T" +4520 LET L$=" OK " +4530 IF T$=U$ THEN 4560 +4540 LET A$="F" +4550 GOTO 4580 +4560 LET R$="FAILED" +4570 LET L$="FAILED" +4580 IF T$<>U$ THEN 4620 +4590 LET R$="FAILED" +4600 LET L$="FAILED" +4610 LET B$="F*" +4620 GOSUB 4900 +4625 GOSUB 5000 +4630 RETURN +4900 REM SUBROUTINE TO PRINT COMPARANDS FOR VARIABLE:VARIABLE +4910 PRINT V$;TAB(20);"V : ";W$;TAB(43);"V"; +4920 RETURN +5000 REM SUBROUTINE TO PRINT RESULTS OF COMPARE +5010 PRINT TAB(47);A$;TAB(51);B$;TAB(55);L$ +5020 RETURN +9000 END diff --git a/NBS2/P018.OUT b/NBS2/P018.OUT new file mode 100644 index 0000000..341de7e --- /dev/null +++ b/NBS2/P018.OUT @@ -0,0 +1,54 @@ +PROGRAM FILE 18: THE IF-THEN STATEMENT WITH STRING OPERANDS. + ANSI STANDARD 10.2, 10.4 + +SECTION 18.1: THE IF-THEN STATEMENT WITH STRING OPERANDS. + +THIS SECTION TESTS THE COMPARISON OF STRING VARIABLES AND +CONSTANTS WITH A VARIETY OF VALUES. BOTH RELATIONSHIPS +(= AND <>) ARE TESTED FOR EACH PAIR OF VALUES. THE 'V' OR +'C' FOLLOWING THE COMPARAND VALUE INDICATES WHETHER IT IS +A VARIABLE OR A CONSTANTS. + +'T' OR 'F' IS PRINTED TO SHOW THE OUTCOME OF THE +COMPARISON. FOR INCORRECT COMPARES, AN '*' IS PRINTED +NEXT TO THE ERRONEOUS RESULT. WHEN DISPLAYING COMPARAND +VALUES, THE UNDERLINE CHARACTER, '_', IS USED TO REPRESENT +THE SPACE CHARACTER (THUS A DISPLAYED 'ONE_BLANK' +INDICATES AN INTERNAL VALUE OF 'ONE BLANK'). +ALSO, THE NULL STRING (LENGTH OF ZERO) IS DENOTED BY THE +LABEL '(NULL STRING)'. + +CHARACTER STRINGS SHOULD TEST EQUAL IF AND ONLY IF THE +STRINGS ARE EQUAL IN LENGTH AND CONTAIN IDENTICAL SEQUENCES +OF CHARACTERS. + + BEGIN TEST. + +LEFT : RIGHT +COMPARAND V/C: COMPARAND V/C = <> RESULT + +ABC C : __ABC V F T OK +ABC C : ABC V T F OK +ABC C : ABC_ V F T OK +ABC C : ___ABC__ V F T OK +ABC C : (NULL STRING) V F T OK +ABC C : ABCD V F T OK +___0X9 V : _0X9__ C F T OK +0X9 V : _0X9__ C F T OK +0X9__ V : _0X9__ C F T OK +_0X9__ V : _0X9__ C T F OK +__ V : ____ V F T OK +_ V : (NULL STRING) V F T OK +18_CHARACTERS_LONG V : 18_CHARACTERS_LONG V T F OK +18_CHARACTERS_LONG V : 18_CHARACTERS_LONK V F T OK +!#$%&'()0=+*<>? V : !#$%&'()0=+*<>? V T F OK +(NULL STRING) V : (NULL STRING) V T F OK +UVWXYZ_ V : UVWXYZ__ V F T OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 18 + +Program interrupted at line 1940 diff --git a/NBS2/P018.dif b/NBS2/P018.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P018.run b/NBS2/P018.run new file mode 100644 index 0000000..8a1a7c2 --- /dev/null +++ b/NBS2/P018.run @@ -0,0 +1,54 @@ +PROGRAM FILE 18: THE IF-THEN STATEMENT WITH STRING OPERANDS. + ANSI STANDARD 10.2, 10.4 + +SECTION 18.1: THE IF-THEN STATEMENT WITH STRING OPERANDS. + +THIS SECTION TESTS THE COMPARISON OF STRING VARIABLES AND +CONSTANTS WITH A VARIETY OF VALUES. BOTH RELATIONSHIPS +(= AND <>) ARE TESTED FOR EACH PAIR OF VALUES. THE 'V' OR +'C' FOLLOWING THE COMPARAND VALUE INDICATES WHETHER IT IS +A VARIABLE OR A CONSTANTS. + +'T' OR 'F' IS PRINTED TO SHOW THE OUTCOME OF THE +COMPARISON. FOR INCORRECT COMPARES, AN '*' IS PRINTED +NEXT TO THE ERRONEOUS RESULT. WHEN DISPLAYING COMPARAND +VALUES, THE UNDERLINE CHARACTER, '_', IS USED TO REPRESENT +THE SPACE CHARACTER (THUS A DISPLAYED 'ONE_BLANK' +INDICATES AN INTERNAL VALUE OF 'ONE BLANK'). +ALSO, THE NULL STRING (LENGTH OF ZERO) IS DENOTED BY THE +LABEL '(NULL STRING)'. + +CHARACTER STRINGS SHOULD TEST EQUAL IF AND ONLY IF THE +STRINGS ARE EQUAL IN LENGTH AND CONTAIN IDENTICAL SEQUENCES +OF CHARACTERS. + + BEGIN TEST. + +LEFT : RIGHT +COMPARAND V/C: COMPARAND V/C = <> RESULT + +ABC C : __ABC V F T OK +ABC C : ABC V T F OK +ABC C : ABC_ V F T OK +ABC C : ___ABC__ V F T OK +ABC C : (NULL STRING) V F T OK +ABC C : ABCD V F T OK +___0X9 V : _0X9__ C F T OK +0X9 V : _0X9__ C F T OK +0X9__ V : _0X9__ C F T OK +_0X9__ V : _0X9__ C T F OK +__ V : ____ V F T OK +_ V : (NULL STRING) V F T OK +18_CHARACTERS_LONG V : 18_CHARACTERS_LONG V T F OK +18_CHARACTERS_LONG V : 18_CHARACTERS_LONK V F T OK +!#$%&'()0=+*<>? V : !#$%&'()0=+*<>? V T F OK +(NULL STRING) V : (NULL STRING) V T F OK +UVWXYZ_ V : UVWXYZ__ V F T OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 18 + +Program interrupted at line 1940 diff --git a/NBS2/P019.80 b/NBS2/P019.80 new file mode 100644 index 0000000..43d7129 --- /dev/null +++ b/NBS2/P019.80 @@ -0,0 +1,43 @@ +PROGRAM FILE 19: THE IF-THEN STATEMENT WITH NUMERIC OPERANDS + ANSI STANDARD 10.2, 10.4 + +SECTION 19.1: THE IF-THEN STATEMENT WITH NUMERIC OPERANDS. + +THIS SECTION TESTS THE COMPARISON OF NUMERIC VARIABLES AND +CONSTANTS WITH A VARIETY OF NUMERIC VALUES. ALL RELATIONSHIPS +(=, <, >, <>, <=, >=) ARE TESTED FOR EACH PAIR OF VALUES. +THE 'V' OR 'C' FOLLOWING THE COMPARAND VALUE INDICATES +WHETHER IT IS A VARIABLE OR A CONSTANT. + +'T' OR 'F' IS PRINTED TO SHOW THE OUTCOME OF THE +COMPARISON. FOR INCORRECT COMPARES, AN '*' IS PRINTED +NEXT TO THE ERRONEOUS RESULT. + + BEGIN TEST. + +LEFT RIGHT = < > <> <= >= RESULT +COMPARAND COMPARAND + ++5.4321E-22 C : 3.14159 V F T F T T F OK ++5.4321E-22 C : 5.4321E-22 V T F F F T T OK ++5.4321E-22 C : 3.14159E-26 V F F T T F T OK ++5.4321E-22 C : 0 V F F T T F T OK ++5.4321E-22 C : -3.14159E-26 V F F T T F T OK ++5.4321E-22 C : -3.14159 V F F T T F T OK +-9.87655E+10 V : -98765400000 C F T F T T F OK +-9.87654E+10 V : -98765400000 C T F F F T T OK +-3 V : -98765400000 C F F T T F T OK + 1.23456E-30 V : -98765400000 C F F T T F T OK + 456.789 V : -98765400000 C F F T T F T OK +-1.23456E-15 C : -.011E-13 C F T F T T F OK + 0 V : 0 V T F F F T T OK +-3.E+36 V : -3.001E+36 V F F T T F T OK + 0 V : 1.E-38 V F T F T T F OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 19 + +Program interrupted at line 960 diff --git a/NBS2/P019.BAS b/NBS2/P019.BAS new file mode 100644 index 0000000..588b997 --- /dev/null +++ b/NBS2/P019.BAS @@ -0,0 +1,209 @@ +10 PRINT "PROGRAM FILE 19: THE IF-THEN STATEMENT WITH NUMERIC OPERANDS" +20 PRINT " ANSI STANDARD 10.2, 10.4" +30 PRINT +40 PRINT "SECTION 19.1: THE IF-THEN STATEMENT WITH NUMERIC OPERANDS." +50 PRINT +60 PRINT "THIS SECTION TESTS THE COMPARISON OF NUMERIC VARIABLES AND" +70 PRINT "CONSTANTS WITH A VARIETY OF NUMERIC VALUES. ALL RELATIONSHIPS" +80 PRINT "(=, <, >, <>, <=, >=) ARE TESTED FOR EACH PAIR OF VALUES." +85 PRINT "THE 'V' OR 'C' FOLLOWING THE COMPARAND VALUE INDICATES" +90 PRINT "WHETHER IT IS A VARIABLE OR A CONSTANT." +95 PRINT +100 PRINT "'T' OR 'F' IS PRINTED TO SHOW THE OUTCOME OF THE" +105 PRINT "COMPARISON. FOR INCORRECT COMPARES, AN '*' IS PRINTED" +110 PRINT "NEXT TO THE ERRONEOUS RESULT." +115 PRINT +120 PRINT " BEGIN TEST." +125 PRINT +130 PRINT "LEFT RIGHT "; +135 PRINT "= < > <> <= >= RESULT" +140 PRINT "COMPARAND COMPARAND " +145 REM TEST VARIABLE:CONSTANT +150 PRINT +155 LET R$="PASSED" +160 LET A0=3.14159 +170 GOSUB 1000 +180 GOSUB 4000 +190 LET A0=5.4321E-22 +200 GOSUB 2000 +210 GOSUB 4000 +220 LET A0=3.14159E-26 +230 GOSUB 3000 +240 GOSUB 4000 +250 LET A0=-00.0E3 +260 GOSUB 3000 +270 GOSUB 4000 +280 LET A0=-3.14159E-26 +290 GOSUB 3000 +300 GOSUB 4000 +310 LET A0=-3.14159 +320 GOSUB 3000 +330 GOSUB 4000 +335 REM NOW DO CONSTANT:VARIABLE +340 LET B0=-98765500000 +350 GOSUB 1000 +360 GOSUB 4200 +370 LET B0=-98765400000 +380 GOSUB 2000 +390 GOSUB 4200 +400 LET B0=-3 +410 GOSUB 3000 +420 GOSUB 4200 +430 LET B0=1.23456E-30 +440 GOSUB 3000 +450 GOSUB 4200 +460 LET B0=456.789 +470 GOSUB 3000 +480 GOSUB 4200 +490 REM TEST CONSTANT:CONSTANT +500 GOSUB 1000 +510 IF -1.23456E-15 = -.011E-13 THEN 530 +520 LET A$=G$ +530 IF -1.23456E-15 < -.011E-13 THEN 550 +540 LET B$=H$ +550 IF -1.23456E-15 > -.011E-13 THEN 570 +560 LET C$=I$ +570 IF -1.23456E-15 <> -.011E-13 THEN 590 +580 LET D$=J$ +590 IF -1.23456E-15 <= -.011E-13 THEN 610 +600 LET E$=K$ +610 IF -1.23456E-15 >= -.011E-13 THEN 630 +620 LET F$=L$ +630 REM COMPARISON FINISHED +640 PRINT "-1.23456E-15 C";TAB(18);": -.011E-13 C"; +650 GOSUB 5000 +660 REM TEST VARIABLE:VARIABLE +670 LET A0=-0 +680 LET B0=+0 +690 GOSUB 2000 +700 GOSUB 4400 +710 LET A0=-3E36 +720 LET B0=-3.001E36 +730 GOSUB 3000 +740 GOSUB 4400 +750 LET A0=0E22 +760 LET B0=1E-38 +770 GOSUB 1000 +780 GOSUB 4400 +900 PRINT +910 PRINT "*** TEST ";R$;" ***" +920 PRINT +930 PRINT " END TEST." +940 PRINT +950 PRINT "END PROGRAM 19" +960 STOP +1000 REM SUBROUTINE TO INITIALIZE FOR CASE OF < +1010 LET A$="T*" +1020 LET B$="T" +1030 LET C$="T*" +1040 LET D$="T" +1050 LET E$="T" +1060 LET F$="T*" +1070 LET G$="F" +1080 LET H$="F*" +1090 LET I$="F" +1100 LET J$="F*" +1110 LET K$="F*" +1120 LET L$="F" +1140 RETURN +2000 REM SUBROUTINE TO INITIALIZE FOR CASE OF = +2010 LET A$="T" +2020 LET B$="T*" +2030 LET C$="T*" +2040 LET D$="T*" +2050 LET E$="T" +2060 LET F$="T" +2070 LET G$="F*" +2080 LET H$="F" +2090 LET I$="F" +2100 LET J$="F" +2110 LET K$="F*" +2120 LET L$="F*" +2140 RETURN +3000 REM SUBROUTINE TO INITIALIZE FOR CASE OF > +3010 LET A$="T*" +3020 LET B$="T*" +3030 LET C$="T" +3040 LET D$="T" +3050 LET E$="T*" +3060 LET F$="T" +3070 LET G$="F" +3080 LET H$="F" +3090 LET I$="F*" +3100 LET J$="F*" +3110 LET K$="F" +3120 LET L$="F*" +3140 RETURN +4000 REM SUBROUTINE TO TEST CONSTANT:VARIABLE +4010 IF +5.4321E-22 = A0 THEN 4030 +4020 LET A$=G$ +4030 IF +5.4321E-22 < A0 THEN 4050 +4040 LET B$=H$ +4050 IF +5.4321E-22 > A0 THEN 4070 +4060 LET C$=I$ +4070 IF +5.4321E-22 <> A0 THEN 4090 +4080 LET D$=J$ +4090 IF +5.4321E-22 <= A0 THEN 4110 +4100 LET E$=K$ +4110 IF +5.4321E-22 >= A0 THEN 4130 +4120 LET F$=L$ +4130 REM COMPARISONS FINISHED +4140 PRINT "+5.4321E-22 C";TAB(18);": ";A0;"V"; +4150 GOSUB 5000 +4160 RETURN +4200 REM SUBROUTINE TO TEST VARIABLE:CONSTANT +4210 IF B0 = -98765400000 THEN 4230 +4220 LET A$=G$ +4230 IF B0 < -98765400000 THEN 4250 +4240 LET B$=H$ +4250 IF B0 > -98765400000 THEN 4270 +4260 LET C$=I$ +4270 IF B0 <> -98765400000 THEN 4290 +4280 LET D$=J$ +4290 IF B0 <= -98765400000 THEN 4310 +4300 LET E$=K$ +4310 IF B0 >= -98765400000 THEN 4330 +4320 LET F$=L$ +4330 REM COMPARISONS FINISHED +4340 PRINT B0;"V";TAB(18);": -98765400000 C"; +4350 GOSUB 5000 +4360 RETURN +4400 REM SUBROUTINE TO TEST VARIABLE:VARIABLE +4410 IF A0 = B0 THEN 4430 +4420 LET A$=G$ +4430 IF A0 < B0 THEN 4450 +4440 LET B$=H$ +4450 IF A0 > B0 THEN 4470 +4460 LET C$=I$ +4470 IF A0 <> B0 THEN 4490 +4480 LET D$=J$ +4490 IF A0 <= B0 THEN 4510 +4500 LET E$=K$ +4510 IF A0 >= B0 THEN 4530 +4520 LET F$=L$ +4530 REM COMPARISONS FINISHED +4540 PRINT A0;"V";TAB(18);": ";B0;"V"; +4550 GOSUB 5000 +4560 RETURN +5000 REM SUBROUTINE TO CHECK OUT AND PRINT RESULTS OF COMPARE +5010 LET N$=" OK " +5020 IF A$="T*" THEN 5200 +5025 IF A$="F*" THEN 5200 +5030 IF B$="T*" THEN 5200 +5035 IF B$="F*" THEN 5200 +5040 IF C$="T*" THEN 5200 +5045 IF C$="F*" THEN 5200 +5050 IF D$="T*" THEN 5200 +5055 IF D$="F*" THEN 5200 +5060 IF E$="T*" THEN 5200 +5065 IF E$="F*" THEN 5200 +5070 IF F$="T*" THEN 5200 +5075 IF F$="F*" THEN 5200 +5080 GOTO 5210 +5200 LET N$="FAILED" +5205 LET R$="FAILED" +5210 REM RESULTS CHECKED +5510 PRINT TAB(38);A$;TAB(42);B$;TAB(46);C$;TAB(50);D$; +5520 PRINT TAB(54);E$;TAB(58);F$;TAB(62);N$ +5530 RETURN +9999 END diff --git a/NBS2/P019.OUT b/NBS2/P019.OUT new file mode 100644 index 0000000..d4aef55 --- /dev/null +++ b/NBS2/P019.OUT @@ -0,0 +1,43 @@ +PROGRAM FILE 19: THE IF-THEN STATEMENT WITH NUMERIC OPERANDS + ANSI STANDARD 10.2, 10.4 + +SECTION 19.1: THE IF-THEN STATEMENT WITH NUMERIC OPERANDS. + +THIS SECTION TESTS THE COMPARISON OF NUMERIC VARIABLES AND +CONSTANTS WITH A VARIETY OF NUMERIC VALUES. ALL RELATIONSHIPS +(=, <, >, <>, <=, >=) ARE TESTED FOR EACH PAIR OF VALUES. +THE 'V' OR 'C' FOLLOWING THE COMPARAND VALUE INDICATES +WHETHER IT IS A VARIABLE OR A CONSTANT. + +'T' OR 'F' IS PRINTED TO SHOW THE OUTCOME OF THE +COMPARISON. FOR INCORRECT COMPARES, AN '*' IS PRINTED +NEXT TO THE ERRONEOUS RESULT. + + BEGIN TEST. + +LEFT RIGHT = < > <> <= >= RESULT +COMPARAND COMPARAND + ++5.4321E-22 C : 3.14159 V F T F T T F OK ++5.4321E-22 C : 5.4321E-22 V T F F F T T OK ++5.4321E-22 C : 3.14159E-26 V F F T T F T OK ++5.4321E-22 C : 0 V F F T T F T OK ++5.4321E-22 C : -3.14159E-26 V F F T T F T OK ++5.4321E-22 C : -3.14159 V F F T T F T OK +-9.87655E+10 V : -98765400000 C F T F T T F OK +-9.87654E+10 V : -98765400000 C T F F F T T OK +-3 V : -98765400000 C F F T T F T OK + 1.23456E-30 V : -98765400000 C F F T T F T OK + 456.789 V : -98765400000 C F F T T F T OK +-1.23456E-15 C : -.011E-13 C F T F T T F OK + 0 V : 0 V T F F F T T OK +-3.E+36 V : -3.001E+36 V F F T T F T OK + 0 V : 1.E-38 V F T F T T F OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 19 + +Program interrupted at line 960 diff --git a/NBS2/P019.dif b/NBS2/P019.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P019.run b/NBS2/P019.run new file mode 100644 index 0000000..43d7129 --- /dev/null +++ b/NBS2/P019.run @@ -0,0 +1,43 @@ +PROGRAM FILE 19: THE IF-THEN STATEMENT WITH NUMERIC OPERANDS + ANSI STANDARD 10.2, 10.4 + +SECTION 19.1: THE IF-THEN STATEMENT WITH NUMERIC OPERANDS. + +THIS SECTION TESTS THE COMPARISON OF NUMERIC VARIABLES AND +CONSTANTS WITH A VARIETY OF NUMERIC VALUES. ALL RELATIONSHIPS +(=, <, >, <>, <=, >=) ARE TESTED FOR EACH PAIR OF VALUES. +THE 'V' OR 'C' FOLLOWING THE COMPARAND VALUE INDICATES +WHETHER IT IS A VARIABLE OR A CONSTANT. + +'T' OR 'F' IS PRINTED TO SHOW THE OUTCOME OF THE +COMPARISON. FOR INCORRECT COMPARES, AN '*' IS PRINTED +NEXT TO THE ERRONEOUS RESULT. + + BEGIN TEST. + +LEFT RIGHT = < > <> <= >= RESULT +COMPARAND COMPARAND + ++5.4321E-22 C : 3.14159 V F T F T T F OK ++5.4321E-22 C : 5.4321E-22 V T F F F T T OK ++5.4321E-22 C : 3.14159E-26 V F F T T F T OK ++5.4321E-22 C : 0 V F F T T F T OK ++5.4321E-22 C : -3.14159E-26 V F F T T F T OK ++5.4321E-22 C : -3.14159 V F F T T F T OK +-9.87655E+10 V : -98765400000 C F T F T T F OK +-9.87654E+10 V : -98765400000 C T F F F T T OK +-3 V : -98765400000 C F F T T F T OK + 1.23456E-30 V : -98765400000 C F F T T F T OK + 456.789 V : -98765400000 C F F T T F T OK +-1.23456E-15 C : -.011E-13 C F T F T T F OK + 0 V : 0 V T F F F T T OK +-3.E+36 V : -3.001E+36 V F F T T F T OK + 0 V : 1.E-38 V F T F T T F OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 19 + +Program interrupted at line 960 diff --git a/NBS2/P020.80 b/NBS2/P020.80 new file mode 100644 index 0000000..7806b6b --- /dev/null +++ b/NBS2/P020.80 @@ -0,0 +1,29 @@ +PROGRAM FILE 20: ERROR - IF-THEN STATEMENT WITH A STRING AND + NUMERIC OPERAND. + ANSI STANDARD 10.2 + +SECTION 20.1: ERROR - IF-THEN STATEMENT WITH A STRING AND + NUMERIC OPERAND. + +THIS PROGRAM ATTEMPTS TO COMPARE A STRING VARIABLE WITH A +NUMERIC VARIABLE IN AN IF-THEN STATEMENT. + +THIS IS A TEST OF A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=123 +ABOUT TO EXECUTE: IF A$ = X... + + +ERROR in line 300: in op_equals(): Type mismatch in string comparison. diff --git a/NBS2/P020.BAS b/NBS2/P020.BAS new file mode 100644 index 0000000..d324202 --- /dev/null +++ b/NBS2/P020.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 20: ERROR - IF-THEN STATEMENT WITH A STRING AND" +20 PRINT " NUMERIC OPERAND." +30 PRINT " ANSI STANDARD 10.2" +40 PRINT +50 PRINT "SECTION 20.1: ERROR - IF-THEN STATEMENT WITH A STRING AND" +60 PRINT " NUMERIC OPERAND." +70 PRINT +80 PRINT "THIS PROGRAM ATTEMPTS TO COMPARE A STRING VARIABLE WITH A" +90 PRINT "NUMERIC VARIABLE IN AN IF-THEN STATEMENT." +100 PRINT +110 PRINT "THIS IS A TEST OF A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST." +240 PRINT +250 PRINT "SETTING A$='123' AND X=123" +260 LET A$="123" +270 LET X=123 +280 PRINT "ABOUT TO EXECUTE: IF A$ = X..." +290 PRINT +300 IF A$=X THEN 330 +310 PRINT "IF TESTED FALSE." +320 GOTO 340 +330 PRINT "IF TESTED TRUE." +340 PRINT +350 PRINT " END TEST." +360 PRINT +370 PRINT "END PROGRAM 20" +380 END diff --git a/NBS2/P020.OUT b/NBS2/P020.OUT new file mode 100644 index 0000000..836e3e2 --- /dev/null +++ b/NBS2/P020.OUT @@ -0,0 +1,29 @@ +PROGRAM FILE 20: ERROR - IF-THEN STATEMENT WITH A STRING AND + NUMERIC OPERAND. + ANSI STANDARD 10.2 + +SECTION 20.1: ERROR - IF-THEN STATEMENT WITH A STRING AND + NUMERIC OPERAND. + +THIS PROGRAM ATTEMPTS TO COMPARE A STRING VARIABLE WITH A +NUMERIC VARIABLE IN AN IF-THEN STATEMENT. + +THIS IS A TEST OF A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=123 +ABOUT TO EXECUTE: IF A$ = X... + + +ERROR in line 300: in op_equals(): Type mismatch in string comparison. diff --git a/NBS2/P020.dif b/NBS2/P020.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P020.run b/NBS2/P020.run new file mode 100644 index 0000000..7806b6b --- /dev/null +++ b/NBS2/P020.run @@ -0,0 +1,29 @@ +PROGRAM FILE 20: ERROR - IF-THEN STATEMENT WITH A STRING AND + NUMERIC OPERAND. + ANSI STANDARD 10.2 + +SECTION 20.1: ERROR - IF-THEN STATEMENT WITH A STRING AND + NUMERIC OPERAND. + +THIS PROGRAM ATTEMPTS TO COMPARE A STRING VARIABLE WITH A +NUMERIC VARIABLE IN AN IF-THEN STATEMENT. + +THIS IS A TEST OF A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=123 +ABOUT TO EXECUTE: IF A$ = X... + + +ERROR in line 300: in op_equals(): Type mismatch in string comparison. diff --git a/NBS2/P021.80 b/NBS2/P021.80 new file mode 100644 index 0000000..75fb806 --- /dev/null +++ b/NBS2/P021.80 @@ -0,0 +1,23 @@ +PROGRAM FILE 21: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE IF-THEN-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 21.1: ERROR - TRANSFER TO NON-EXISTING LINE NUMBER + USING THE IF-THEN-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 250: Line number 295 not found diff --git a/NBS2/P021.BAS b/NBS2/P021.BAS new file mode 100644 index 0000000..0c691d5 --- /dev/null +++ b/NBS2/P021.BAS @@ -0,0 +1,34 @@ +10 PRINT "PROGRAM FILE 21: ERROR - TRANSFER TO NON-EXISTING LINE" +15 PRINT " NUMBER USING THE IF-THEN-STATEMENT." +20 PRINT " ANSI STANDARD 10.4" +30 PRINT +40 PRINT "SECTION 21.1: ERROR - TRANSFER TO NON-EXISTING LINE NUMBER" +50 PRINT " USING THE IF-THEN-STATEMENT." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +230 LET A$="LINE 300." +240 LET A=5 +250 IF A=5 THEN 295 +260 PRINT "IF THIS MESSAGE APPEARS THE IF-THEN-STATEMENT WAS NOT" +270 PRINT "EXECUTED." +280 GOTO 310 +290 LET A$="LINE 290." +300 PRINT "'IF A=5 THEN 295' JUMPED TO ";A$ +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 21" +350 END diff --git a/NBS2/P021.OUT b/NBS2/P021.OUT new file mode 100644 index 0000000..23a646d --- /dev/null +++ b/NBS2/P021.OUT @@ -0,0 +1,23 @@ +PROGRAM FILE 21: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE IF-THEN-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 21.1: ERROR - TRANSFER TO NON-EXISTING LINE NUMBER + USING THE IF-THEN-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 250: Line number 295 not found diff --git a/NBS2/P021.dif b/NBS2/P021.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P021.run b/NBS2/P021.run new file mode 100644 index 0000000..75fb806 --- /dev/null +++ b/NBS2/P021.run @@ -0,0 +1,23 @@ +PROGRAM FILE 21: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE IF-THEN-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 21.1: ERROR - TRANSFER TO NON-EXISTING LINE NUMBER + USING THE IF-THEN-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 250: Line number 295 not found diff --git a/NBS2/P022.80 b/NBS2/P022.80 new file mode 100644 index 0000000..10fa683 --- /dev/null +++ b/NBS2/P022.80 @@ -0,0 +1,21 @@ +PROGRAM FILE 22: NUMERIC AND STRING VARIABLE NAMES + WITH THE SAME INITIAL LETTER. + ANSI STANDARD 6.2, 6.4 + +SECTION 22.1: NUMERIC AND STRING VARIABLE NAMES WITH THE + SAME INITIAL LETTER. + +THE STANDARD ESTABLISHES A NAME SPACE OF AT LEAST 286 NUMERIC +DATA NAMES (A - Z, A0 - Z0, A1 - Z1, ..., A9 - Z9) AND 26 +DISTINCT STRING DATA NAMES (A$ - Z$). + +THIS PROGRAM TESTS THAT DISTINCT VALUES ARE PRESERVED +IN VARIABLES WITH SIMILAR, BUT NOT IDENTICAL, NAMES. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 22 diff --git a/NBS2/P022.BAS b/NBS2/P022.BAS new file mode 100644 index 0000000..99a7492 --- /dev/null +++ b/NBS2/P022.BAS @@ -0,0 +1,41 @@ +10 PRINT "PROGRAM FILE 22: NUMERIC AND STRING VARIABLE NAMES" +20 PRINT " WITH THE SAME INITIAL LETTER." +30 PRINT " ANSI STANDARD 6.2, 6.4" +40 PRINT +50 PRINT "SECTION 22.1: NUMERIC AND STRING VARIABLE NAMES WITH THE" +60 PRINT " SAME INITIAL LETTER." +70 PRINT +80 PRINT "THE STANDARD ESTABLISHES A NAME SPACE OF AT LEAST 286 NUMERIC" +90 PRINT "DATA NAMES (A - Z, A0 - Z0, A1 - Z1, ..., A9 - Z9) AND 26" +100 PRINT "DISTINCT STRING DATA NAMES (A$ - Z$)." +102 PRINT +104 PRINT "THIS PROGRAM TESTS THAT DISTINCT VALUES ARE PRESERVED" +106 PRINT "IN VARIABLES WITH SIMILAR, BUT NOT IDENTICAL, NAMES." +110 PRINT +120 PRINT " BEGIN TEST." +130 PRINT +140 LET A=10 +150 LET A$="ABC" +155 LET A0=A +160 LET A0=100 +170 LET A9=109 +180 LET B1=123E22 +190 LET B0=-123E-22 +200 LET B$="18 CHARACTERS LONG" +210 LET B=33 +220 IF A<>10 THEN 320 +230 IF A$<>"ABC" THEN 320 +240 IF A9<>109 THEN 320 +250 IF A0<>100 THEN 320 +260 IF B<>33 THEN 320 +270 IF B$<>"18 CHARACTERS LONG" THEN 320 +280 IF B1<>123E22 THEN 320 +290 IF B0<>-123E-22 THEN 320 +300 PRINT "*** TEST PASSED ***" +310 GOTO 330 +320 PRINT "*** TEST FAILED ***" +330 PRINT +340 PRINT " END TEST." +350 PRINT +360 PRINT "END PROGRAM 22" +370 END diff --git a/NBS2/P022.OUT b/NBS2/P022.OUT new file mode 100644 index 0000000..701ce49 --- /dev/null +++ b/NBS2/P022.OUT @@ -0,0 +1,21 @@ +PROGRAM FILE 22: NUMERIC AND STRING VARIABLE NAMES + WITH THE SAME INITIAL LETTER. + ANSI STANDARD 6.2, 6.4 + +SECTION 22.1: NUMERIC AND STRING VARIABLE NAMES WITH THE + SAME INITIAL LETTER. + +THE STANDARD ESTABLISHES A NAME SPACE OF AT LEAST 286 NUMERIC +DATA NAMES (A - Z, A0 - Z0, A1 - Z1, ..., A9 - Z9) AND 26 +DISTINCT STRING DATA NAMES (A$ - Z$). + +THIS PROGRAM TESTS THAT DISTINCT VALUES ARE PRESERVED +IN VARIABLES WITH SIMILAR, BUT NOT IDENTICAL, NAMES. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 22 diff --git a/NBS2/P022.dif b/NBS2/P022.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P022.run b/NBS2/P022.run new file mode 100644 index 0000000..10fa683 --- /dev/null +++ b/NBS2/P022.run @@ -0,0 +1,21 @@ +PROGRAM FILE 22: NUMERIC AND STRING VARIABLE NAMES + WITH THE SAME INITIAL LETTER. + ANSI STANDARD 6.2, 6.4 + +SECTION 22.1: NUMERIC AND STRING VARIABLE NAMES WITH THE + SAME INITIAL LETTER. + +THE STANDARD ESTABLISHES A NAME SPACE OF AT LEAST 286 NUMERIC +DATA NAMES (A - Z, A0 - Z0, A1 - Z1, ..., A9 - Z9) AND 26 +DISTINCT STRING DATA NAMES (A$ - Z$). + +THIS PROGRAM TESTS THAT DISTINCT VALUES ARE PRESERVED +IN VARIABLES WITH SIMILAR, BUT NOT IDENTICAL, NAMES. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 22 diff --git a/NBS2/P023.80 b/NBS2/P023.80 new file mode 100644 index 0000000..a01bd77 --- /dev/null +++ b/NBS2/P023.80 @@ -0,0 +1,29 @@ +PROGRAM FILE 23: INITIALIZATION OF STRING AND NUMERIC + VARIABLES. + ANSI STANDARD 6.6 + +SECTION 23.1: INITIALIZATION OF STRING OF NUMERIC + VARIABLES. + +THIS PROGRAM TESTS HOW THE IMPLEMENTATION TREATS +UNINITIALIZED VARIABLES. THE MINIMAL BASIC STANDARD +RECOMMENDS THAT THIS CONDITION BE TREATED AS AN +EXCEPTION. IN ANY CASE, THE DOCUMENTATION MUST +DESCRIBE THE ACTION OF THE PROCESSOR IN ORDER +FOR THE TEST TO PASS. + + BEGIN TEST. + +NEITHER A$ OR Y HAS BEEN ASSIGNED A VALUE. + +THE IMPLEMENTATION-DEFINED INITIAL VALUE (SURROUNDED + BY APOSTROPHES) FOR A$='' +THE IMPLEMENTATION-DEFINED INITIAL VALUE FOR Y = 0 + +IF THE DOCUMENTATION FOR THIS IMPLEMENTATION CORRECTLY + DESCRIBES THE RESULTS ABOVE, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 23 diff --git a/NBS2/P023.BAS b/NBS2/P023.BAS new file mode 100644 index 0000000..07da578 --- /dev/null +++ b/NBS2/P023.BAS @@ -0,0 +1,30 @@ +10 PRINT "PROGRAM FILE 23: INITIALIZATION OF STRING AND NUMERIC" +20 PRINT " VARIABLES." +30 PRINT " ANSI STANDARD 6.6" +40 PRINT +50 PRINT "SECTION 23.1: INITIALIZATION OF STRING OF NUMERIC" +60 PRINT " VARIABLES." +70 PRINT +80 PRINT "THIS PROGRAM TESTS HOW THE IMPLEMENTATION TREATS" +90 PRINT "UNINITIALIZED VARIABLES. THE MINIMAL BASIC STANDARD" +100 PRINT "RECOMMENDS THAT THIS CONDITION BE TREATED AS AN " +110 PRINT "EXCEPTION. IN ANY CASE, THE DOCUMENTATION MUST" +120 PRINT "DESCRIBE THE ACTION OF THE PROCESSOR IN ORDER" +130 PRINT "FOR THE TEST TO PASS." +140 PRINT +150 PRINT " BEGIN TEST." +160 PRINT +170 PRINT "NEITHER A$ OR Y HAS BEEN ASSIGNED A VALUE." +180 PRINT +190 PRINT "THE IMPLEMENTATION-DEFINED INITIAL VALUE (SURROUNDED" +200 PRINT " BY APOSTROPHES) FOR A$=";"'";A$;"'" +210 PRINT "THE IMPLEMENTATION-DEFINED INITIAL VALUE FOR Y =";Y +220 PRINT +230 PRINT "IF THE DOCUMENTATION FOR THIS IMPLEMENTATION CORRECTLY" +240 PRINT " DESCRIBES THE RESULTS ABOVE, THEN" +250 PRINT "*** TEST PASSED ***" +260 PRINT +270 PRINT " END TEST." +280 PRINT +290 PRINT "END PROGRAM 23" +300 END diff --git a/NBS2/P023.OUT b/NBS2/P023.OUT new file mode 100644 index 0000000..ed49a8c --- /dev/null +++ b/NBS2/P023.OUT @@ -0,0 +1,29 @@ +PROGRAM FILE 23: INITIALIZATION OF STRING AND NUMERIC + VARIABLES. + ANSI STANDARD 6.6 + +SECTION 23.1: INITIALIZATION OF STRING OF NUMERIC + VARIABLES. + +THIS PROGRAM TESTS HOW THE IMPLEMENTATION TREATS +UNINITIALIZED VARIABLES. THE MINIMAL BASIC STANDARD +RECOMMENDS THAT THIS CONDITION BE TREATED AS AN +EXCEPTION. IN ANY CASE, THE DOCUMENTATION MUST +DESCRIBE THE ACTION OF THE PROCESSOR IN ORDER +FOR THE TEST TO PASS. + + BEGIN TEST. + +NEITHER A$ OR Y HAS BEEN ASSIGNED A VALUE. + +THE IMPLEMENTATION-DEFINED INITIAL VALUE (SURROUNDED + BY APOSTROPHES) FOR A$='' +THE IMPLEMENTATION-DEFINED INITIAL VALUE FOR Y = 0 + +IF THE DOCUMENTATION FOR THIS IMPLEMENTATION CORRECTLY + DESCRIBES THE RESULTS ABOVE, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 23 diff --git a/NBS2/P023.dif b/NBS2/P023.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P023.run b/NBS2/P023.run new file mode 100644 index 0000000..a01bd77 --- /dev/null +++ b/NBS2/P023.run @@ -0,0 +1,29 @@ +PROGRAM FILE 23: INITIALIZATION OF STRING AND NUMERIC + VARIABLES. + ANSI STANDARD 6.6 + +SECTION 23.1: INITIALIZATION OF STRING OF NUMERIC + VARIABLES. + +THIS PROGRAM TESTS HOW THE IMPLEMENTATION TREATS +UNINITIALIZED VARIABLES. THE MINIMAL BASIC STANDARD +RECOMMENDS THAT THIS CONDITION BE TREATED AS AN +EXCEPTION. IN ANY CASE, THE DOCUMENTATION MUST +DESCRIBE THE ACTION OF THE PROCESSOR IN ORDER +FOR THE TEST TO PASS. + + BEGIN TEST. + +NEITHER A$ OR Y HAS BEEN ASSIGNED A VALUE. + +THE IMPLEMENTATION-DEFINED INITIAL VALUE (SURROUNDED + BY APOSTROPHES) FOR A$='' +THE IMPLEMENTATION-DEFINED INITIAL VALUE FOR Y = 0 + +IF THE DOCUMENTATION FOR THIS IMPLEMENTATION CORRECTLY + DESCRIBES THE RESULTS ABOVE, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 23 diff --git a/NBS2/P024.80 b/NBS2/P024.80 new file mode 100644 index 0000000..db12eed --- /dev/null +++ b/NBS2/P024.80 @@ -0,0 +1,86 @@ +PROGRAM FILE 24: PLUS AND MINUS + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS THE GROSS SEMANTIC CHARACTERISTICS OF +THE PLUS AND MINUS OPERATORS FOR THE CONSTRUCTION OF +NUMERIC EXPRESSIONS. + +EXPRESSIONS USING ONLY ONE OPERATOR AND CONSTANTS AND +SIMPLE VARIABLES ARE EVALUATED, AND THE RESULTS TESTED +AGAINST THE CORRECT VALUE. CONSTANTS ARE EXPRESSED IN +NR1, NR2, AND NR3 FORM, BUT ARE GENERALLY RESTRICTED TO +INTEGER VALUES TO AVOID ACCURACY PROBLEMS (ACCURACY IS +ADDRESSED IN LATER TESTS). + + +SECTION 24.1: UNARY MINUS + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + + +SECTION 24.2: UNARY PLUS + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + + +SECTION 23.3: ADDITION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 9 9 TEST PASSES +2 66 66 TEST PASSES +3 2302 2302 TEST PASSES +4 121 121 TEST PASSES +5 -132 -132 TEST PASSES +6 21 21 TEST PASSES +7 -220 -220 TEST PASSES +8 102 102 TEST PASSES +9 152 152 TEST PASSES +10 0 0 TEST PASSES +11 -22 -22 TEST PASSES +12 -44 -44 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 24.4: SUBTRACTION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 19 19 TEST PASSES +2 -599 -599 TEST PASSES +3 -245 -245 TEST PASSES +4 37 37 TEST PASSES +5 -37 -37 TEST PASSES +6 347 347 TEST PASSES +7 -456 -456 TEST PASSES +8 -1332 -1332 TEST PASSES +9 1233 1233 TEST PASSES +10 0 0 TEST PASSES +11 -22 -22 TEST PASSES +12 0 0 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +END PROGRAM 24 + +Program interrupted at line 6020 diff --git a/NBS2/P024.BAS b/NBS2/P024.BAS new file mode 100644 index 0000000..c6ea484 --- /dev/null +++ b/NBS2/P024.BAS @@ -0,0 +1,254 @@ +10 PRINT "PROGRAM FILE 24: PLUS AND MINUS" +20 PRINT " ANSI STANDARD 7.2, 7.4" +30 PRINT +40 PRINT "THIS PROGRAM TESTS THE GROSS SEMANTIC CHARACTERISTICS OF" +50 PRINT "THE PLUS AND MINUS OPERATORS FOR THE CONSTRUCTION OF" +60 PRINT "NUMERIC EXPRESSIONS." +70 PRINT +80 PRINT "EXPRESSIONS USING ONLY ONE OPERATOR AND CONSTANTS AND" +90 PRINT "SIMPLE VARIABLES ARE EVALUATED, AND THE RESULTS TESTED" +100 PRINT "AGAINST THE CORRECT VALUE. CONSTANTS ARE EXPRESSED IN" +110 PRINT "NR1, NR2, AND NR3 FORM, BUT ARE GENERALLY RESTRICTED TO" +120 PRINT "INTEGER VALUES TO AVOID ACCURACY PROBLEMS (ACCURACY IS" +130 PRINT "ADDRESSED IN LATER TESTS)." +140 PRINT +142 REM S IS A SWITCH TO INDICATE UNARY (S=0) OR BINARY (S=1) +143 REM OPERATIONS +145 LET S=0 +150 LET M$="24.1: UNARY MINUS" +160 GOSUB 7000 +170 LET N$="CONSTANTS" +180 LET O$="1" +190 LET A=-3 +200 IF A>0 THEN 250 +210 IF A<>-3 THEN 250 +220 IF A<-3.1 THEN 250 +230 IF A>-2.9 THEN 250 +240 IF A=-3 THEN 260 +250 GOSUB 9000 +260 LET A=-0 +270 LET O$="2" +280 IF A=0 THEN 300 +290 GOSUB 9000 +300 LET A=-432.0000 +310 LET O$="3" +320 IF -432=A THEN 340 +330 GOSUB 9000 +340 LET A=-2E2 +350 LET O$="4" +360 IF A=-200 THEN 380 +370 GOSUB 9000 +380 LET A=-200E-1 +390 LET O$="5" +400 IF A=-20 THEN 420 +410 GOSUB 9000 +420 LET N$="VARIABLES" +430 LET B=34 +440 LET O$="6" +450 LET A=-B +460 IF A=-34 THEN 480 +470 GOSUB 9000 +480 LET C=-B +490 LET A=-C +500 LET O$="7" +510 IF A=34 THEN 530 +520 GOSUB 9000 +530 LET B=-99 +540 LET B=-B +550 LET A=-B +560 LET O$="8" +570 IF A=-99 THEN 590 +580 GOSUB 9000 +590 GOSUB 8000 +600 LET M$="24.2: UNARY PLUS" +610 GOSUB 7000 +620 LET N$="CONSTANTS" +630 LET O$="1" +640 LET A=+5 +650 IF A=5 THEN 670 +660 GOSUB 9000 +670 LET A=+0 +680 LET O$="2" +690 IF A=0 THEN 710 +700 GOSUB 9000 +710 LET A=+123.00 +720 LET O$="3" +730 IF A=123 THEN 750 +740 GOSUB 9000 +750 LET A=+87E2 +760 IF A=8700 THEN 790 +780 GOSUB 9000 +790 LET A=+.0054E+5 +800 LET O$="5" +810 IF A=540 THEN 830 +820 GOSUB 9000 +830 LET N$="VARIABLES" +840 LET B=47 +850 LET O$="6" +860 LET A=+B +870 IF A=47 THEN 890 +880 GOSUB 9000 +890 LET B=-88 +900 LET O$="7" +910 LET C=+B +920 LET B=+C +930 LET A=+B +940 IF A=-88 THEN 960 +950 GOSUB 9000 +960 GOSUB 8000 +965 LET S=1 +970 LET M$="23.3: ADDITION" +980 LET N$="CONSTANTS" +990 GOSUB 7000 +1000 LET A=3+6 +1010 LET O$="1" +1020 LET Y=9 +1030 GOSUB 8500 +1040 LET A=34.00+32 +1050 LET O$="2" +1060 LET Y=66 +1070 GOSUB 8500 +1080 LET A=23E2+2 +1090 LET O$="3" +1100 LET Y=2302 +1110 GOSUB 8500 +1120 LET A=33.000+880E-1 +1130 LET O$="4" +1140 LET Y=121 +1150 GOSUB 8500 +1160 LET N$="VAR. & CONSTS." +1170 LET A=-34 +1180 LET B=-98.0 +1190 LET A=A+B +1200 LET O$="5" +1210 LET Y=-132 +1220 GOSUB 8500 +1230 LET B=94 +1240 LET C=-73 +1250 LET A=B+C +1260 LET O$="6" +1270 LET Y=21 +1280 GOSUB 8500 +1290 LET C=434 +1300 LET B=-654 +1310 LET A=B+C +1320 LET O$="7" +1330 LET Y=-220 +1340 GOSUB 8500 +1350 LET B=-98 +1360 LET A=2E2+B +1370 LET O$="8" +1380 LET Y=102 +1390 GOSUB 8500 +1400 LET B=13.0E1 +1410 LET A=B+22 +1420 LET O$="9" +1430 LET Y=152 +1440 GOSUB 8500 +1450 LET B=22 +1460 LET C=-22 +1470 LET O$="10" +1480 LET A=B+C +1490 LET Y=0 +1500 GOSUB 8500 +1510 LET A=0+C +1520 LET O$="11" +1530 LET Y=-22 +1540 GOSUB 8500 +1550 LET A=C+C +1560 LET O$="12" +1570 LET Y=-44 +1580 GOSUB 8500 +1590 GOSUB 8000 +1600 LET M$="24.4: SUBTRACTION" +1610 LET N$="CONSTANTS" +1620 GOSUB 7000 +1630 LET O$="1" +1640 LET A=48-29 +1650 LET Y=19 +1660 GOSUB 8500 +1670 LET A=47-646 +1680 LET O$="2" +1690 LET Y=-599 +1700 GOSUB 8500 +1710 LET A=.00532E5-777. +1720 LET O$="3" +1730 LET Y=-245 +1740 GOSUB 8500 +1750 LET N$="VARS. & CONSTS." +1760 LET B=-56 +1770 LET C=-93 +1780 LET A=B-C +1790 LET O$="4" +1800 LET Y=37 +1810 GOSUB 8500 +1820 LET A=C-B +1830 LET O$="5" +1840 LET Y=-37 +1850 GOSUB 8500 +1860 LET B=-345.000 +1870 LET A=2-B +1880 LET O$="6" +1890 LET Y=347 +1900 GOSUB 8500 +1910 LET A=B-.111E3 +1920 LET O$="7" +1930 LET Y=-456 +1940 GOSUB 8500 +1950 LET A=B-987 +1960 LET O$="8" +1970 LET Y=-1332 +1980 GOSUB 8500 +1990 LET A=888.0-B +2000 LET O$="9" +2010 LET Y=1233 +2020 GOSUB 8500 +2030 LET B=22 +2040 LET A=22-B +2050 LET O$="10" +2060 LET Y=0 +2070 GOSUB 8500 +2080 LET A=0-B +2090 LET O$="11" +2100 LET Y=-22 +2110 GOSUB 8500 +2120 LET B=-87 +2130 LET A=B-B +2140 LET O$="12" +2150 LET Y=0 +2160 GOSUB 8500 +2170 GOSUB 8000 +6000 PRINT +6010 PRINT "END PROGRAM 24" +6020 STOP +7000 REM SUBROUTINE TO BEGIN SECTION +7010 PRINT +7020 PRINT "SECTION ";M$ +7030 PRINT +7040 PRINT " BEGIN TEST" +7050 PRINT +7060 LET R$="PASSED" +7070 IF S=0 THEN 7300 +7080 PRINT "CASE #","SHOULD BE","ACTUAL","OUTCOME" +7090 PRINT +7300 RETURN +8000 REM SUBROUTINE TO END SECTION +8010 PRINT +8040 PRINT "*** TEST ";R$;" ***" +8060 PRINT +8070 PRINT " END TEST" +8080 PRINT +8090 RETURN +8500 REM REPORT RESULTS OF TEST CASE +8505 PRINT O$,Y,A, +8510 IF Y=A THEN 8550 +8520 PRINT "TEST FAILS" +8530 LET R$="FAILED" +8540 GOTO 8560 +8550 PRINT "TEST PASSES" +8560 RETURN +9000 REM HANDLE ERROR REPORT +9010 PRINT "ERROR IN TEST OF ";M$;". ";N$;", CASE #";O$ +9020 LET R$="FAILED" +9030 RETURN +9040 END diff --git a/NBS2/P024.OUT b/NBS2/P024.OUT new file mode 100644 index 0000000..771b674 --- /dev/null +++ b/NBS2/P024.OUT @@ -0,0 +1,86 @@ +PROGRAM FILE 24: PLUS AND MINUS + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS THE GROSS SEMANTIC CHARACTERISTICS OF +THE PLUS AND MINUS OPERATORS FOR THE CONSTRUCTION OF +NUMERIC EXPRESSIONS. + +EXPRESSIONS USING ONLY ONE OPERATOR AND CONSTANTS AND +SIMPLE VARIABLES ARE EVALUATED, AND THE RESULTS TESTED +AGAINST THE CORRECT VALUE. CONSTANTS ARE EXPRESSED IN +NR1, NR2, AND NR3 FORM, BUT ARE GENERALLY RESTRICTED TO +INTEGER VALUES TO AVOID ACCURACY PROBLEMS (ACCURACY IS +ADDRESSED IN LATER TESTS). + + +SECTION 24.1: UNARY MINUS + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + + +SECTION 24.2: UNARY PLUS + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + + +SECTION 23.3: ADDITION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 9 9 TEST PASSES +2 66 66 TEST PASSES +3 2302 2302 TEST PASSES +4 121 121 TEST PASSES +5 -132 -132 TEST PASSES +6 21 21 TEST PASSES +7 -220 -220 TEST PASSES +8 102 102 TEST PASSES +9 152 152 TEST PASSES +10 0 0 TEST PASSES +11 -22 -22 TEST PASSES +12 -44 -44 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 24.4: SUBTRACTION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 19 19 TEST PASSES +2 -599 -599 TEST PASSES +3 -245 -245 TEST PASSES +4 37 37 TEST PASSES +5 -37 -37 TEST PASSES +6 347 347 TEST PASSES +7 -456 -456 TEST PASSES +8 -1332 -1332 TEST PASSES +9 1233 1233 TEST PASSES +10 0 0 TEST PASSES +11 -22 -22 TEST PASSES +12 0 0 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +END PROGRAM 24 + +Program interrupted at line 6020 diff --git a/NBS2/P024.dif b/NBS2/P024.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P024.run b/NBS2/P024.run new file mode 100644 index 0000000..db12eed --- /dev/null +++ b/NBS2/P024.run @@ -0,0 +1,86 @@ +PROGRAM FILE 24: PLUS AND MINUS + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS THE GROSS SEMANTIC CHARACTERISTICS OF +THE PLUS AND MINUS OPERATORS FOR THE CONSTRUCTION OF +NUMERIC EXPRESSIONS. + +EXPRESSIONS USING ONLY ONE OPERATOR AND CONSTANTS AND +SIMPLE VARIABLES ARE EVALUATED, AND THE RESULTS TESTED +AGAINST THE CORRECT VALUE. CONSTANTS ARE EXPRESSED IN +NR1, NR2, AND NR3 FORM, BUT ARE GENERALLY RESTRICTED TO +INTEGER VALUES TO AVOID ACCURACY PROBLEMS (ACCURACY IS +ADDRESSED IN LATER TESTS). + + +SECTION 24.1: UNARY MINUS + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + + +SECTION 24.2: UNARY PLUS + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + + +SECTION 23.3: ADDITION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 9 9 TEST PASSES +2 66 66 TEST PASSES +3 2302 2302 TEST PASSES +4 121 121 TEST PASSES +5 -132 -132 TEST PASSES +6 21 21 TEST PASSES +7 -220 -220 TEST PASSES +8 102 102 TEST PASSES +9 152 152 TEST PASSES +10 0 0 TEST PASSES +11 -22 -22 TEST PASSES +12 -44 -44 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 24.4: SUBTRACTION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 19 19 TEST PASSES +2 -599 -599 TEST PASSES +3 -245 -245 TEST PASSES +4 37 37 TEST PASSES +5 -37 -37 TEST PASSES +6 347 347 TEST PASSES +7 -456 -456 TEST PASSES +8 -1332 -1332 TEST PASSES +9 1233 1233 TEST PASSES +10 0 0 TEST PASSES +11 -22 -22 TEST PASSES +12 0 0 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +END PROGRAM 24 + +Program interrupted at line 6020 diff --git a/NBS2/P025.80 b/NBS2/P025.80 new file mode 100644 index 0000000..1977f10 --- /dev/null +++ b/NBS2/P025.80 @@ -0,0 +1,94 @@ +PROGRAM FILE 25: MULTIPLY, DIVIDE, AND INVOLUTE + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS THE GROSS SEMANTIC CHARACTERISTICS OF +THE MULTIPLY, DIVIDE, AND INVOLUTION OPERATORS FOR THE +CONSTRUCTION OF NUMERIC EXPRESSIONS. + +EXPRESSIONS USING ONLY ONE OPERATOR AND CONSTANTS AND +SIMPLE VARIABLES ARE EVALUATED, AND THE RESULTS TESTED +AGAINST THE CORRECT VALUE. CONSTANTS ARE EXPRESSED IN +NR1, NR2, AND NR3 FORM. THE VALUES OF THE OPERANDS AND +RESULTS ARE RESTRICTED TO INTEGERS AND SIMPLE FRACTIONS +TO AVOID ACCURACY PROBLEMS (ACCURACY IS ADDRESSED IN +LATER TESTS). + + +SECTION 25.1: MULTIPLY + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 21 21 TEST PASSES +2 70 70 TEST PASSES +3 138 138 TEST PASSES +4 -111 -111 TEST PASSES +5 -30 -30 TEST PASSES +6 132 132 TEST PASSES +7 0 0 TEST PASSES +8 9 9 TEST PASSES +9 16 16 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 25.2: DIVIDE + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 4 4 TEST PASSES +2 2 2 TEST PASSES +3 0 0 TEST PASSES +4 7 7 TEST PASSES +5 -49 -49 TEST PASSES +6 -1 -1 TEST PASSES +7 37 37 TEST PASSES +8 0 0 TEST PASSES +9 3.5 3.5 TEST PASSES +10 5.2 5.2 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 25.3: INVOLUTION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 9 9 TEST PASSES +2 64 64 TEST PASSES +3 1 1 TEST PASSES +4 81 81 TEST PASSES +5 -8 -8 TEST PASSES +6 9 9 TEST PASSES +Y 0 0 TEST PASSES +8 1 1 TEST PASSES +9 1 1 TEST PASSES +10 4 4 TEST PASSES +11 .25 .25 TEST PASSES +12 .25 .25 TEST PASSES +13 -.125 -.125 TEST PASSES +14 1 1 TEST PASSES +15 1 1 TEST PASSES +16 8 8 TEST PASSES +17 2.5 2.5 TEST PASSES +18 .6 .6 TEST PASSES +19 -8 -8 TEST PASSES +20 -.125 -.125 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +END PROGRAM 25 + +Program interrupted at line 6020 diff --git a/NBS2/P025.BAS b/NBS2/P025.BAS new file mode 100644 index 0000000..468636c --- /dev/null +++ b/NBS2/P025.BAS @@ -0,0 +1,266 @@ +10 PRINT "PROGRAM FILE 25: MULTIPLY, DIVIDE, AND INVOLUTE" +20 PRINT " ANSI STANDARD 7.2, 7.4" +30 PRINT +40 PRINT "THIS PROGRAM TESTS THE GROSS SEMANTIC CHARACTERISTICS OF" +50 PRINT "THE MULTIPLY, DIVIDE, AND INVOLUTION OPERATORS FOR THE" +60 PRINT "CONSTRUCTION OF NUMERIC EXPRESSIONS." +70 PRINT +80 PRINT "EXPRESSIONS USING ONLY ONE OPERATOR AND CONSTANTS AND" +90 PRINT "SIMPLE VARIABLES ARE EVALUATED, AND THE RESULTS TESTED" +100 PRINT "AGAINST THE CORRECT VALUE. CONSTANTS ARE EXPRESSED IN" +110 PRINT "NR1, NR2, AND NR3 FORM. THE VALUES OF THE OPERANDS AND" +120 PRINT "RESULTS ARE RESTRICTED TO INTEGERS AND SIMPLE FRACTIONS" +130 PRINT "TO AVOID ACCURACY PROBLEMS (ACCURACY IS ADDRESSED IN" +135 PRINT "LATER TESTS)." +140 PRINT +150 LET M$="25.1: MULTIPLY" +160 GOSUB 7000 +170 LET N$="CONSTANTS" +180 LET O$="1" +190 LET A=3*7 +200 LET Y=21 +220 GOSUB 8500 +230 LET A=5.0*14 +240 LET O$="2" +250 LET Y=70 +270 GOSUB 8500 +280 LET A=6.000*2.3E+1 +290 LET O$="3" +300 LET Y=138 +320 GOSUB 8500 +330 LET N$="VAR. & CONSTS." +340 LET A=-37 +350 LET A=A*3 +360 LET O$="4" +370 LET Y=-111 +390 GOSUB 8500 +400 LET B=-6.0 +410 LET C=5 +420 LET A=C*B +430 LET O$="5" +440 LET Y=-30 +460 GOSUB 8500 +470 LET C=-12E-0 +480 LET B=-110E-1 +490 LET O$="6" +500 LET A=B*C +510 LET Y=132 +530 GOSUB 8500 +540 LET C=-3 +550 LET B=-0 +560 LET A=C*B +570 LET O$="7" +580 LET Y=0 +600 GOSUB 8500 +610 LET A=C*C +620 LET O$="8" +630 LET Y=9 +650 GOSUB 8500 +660 LET B=4 +670 LET A=B*4.0 +680 LET O$="9" +690 LET Y=16 +710 GOSUB 8500 +720 GOSUB 8000 +730 LET M$="25.2: DIVIDE" +740 GOSUB 7000 +750 LET N$="CONSTANTS" +760 LET O$="1" +770 LET A=12/3 +780 LET Y=4 +790 GOSUB 8500 +800 LET A=60.00/3E1 +810 LET O$="2" +820 LET Y=2 +830 GOSUB 8500 +840 LET A=0.0/7 +850 LET O$="3" +860 LET Y=0 +870 GOSUB 8500 +880 LET N$="VARS. & CONSTS." +882 LET B=63 +884 LET C=9 +886 LET A=B/C +890 LET O$="4" +900 LET Y=7 +910 GOSUB 8500 +915 LET B=-49 +920 LET C=1.00 +925 LET A=B/C +930 LET O$="5" +940 LET Y=-49 +950 GOSUB 8500 +960 LET B=3 +970 LET C=-3 +975 LET A=B/C +980 LET O$="6" +990 LET Y=-1 +1010 GOSUB 8500 +1020 LET B=-111 +1030 LET O$="7" +1040 LET C=-3 +1060 LET A=B/C +1070 LET Y=37 +1080 GOSUB 8500 +1090 LET B=-8 +1100 LET A=0/B +1110 LET O$="8" +1120 LET Y=0 +1130 GOSUB 8500 +1140 LET C=7 +1150 LET A=C/2 +1160 LET O$="9" +1170 LET Y=3.5 +1180 GOSUB 8500 +1190 LET B=-26 +1200 LET C=-5 +1210 LET A=B/C +1220 LET O$="10" +1230 LET Y=5.2 +1240 GOSUB 8500 +2000 GOSUB 8000 +2010 LET M$="25.3: INVOLUTION" +2020 LET N$="CONSTANTS" +2030 GOSUB 7000 +2040 LET A=3^2 +2050 LET O$="1" +2060 LET Y=9 +2070 GOSUB 8500 +2080 LET A=4.0^3.E-0 +2090 LET O$="2" +2100 LET Y=64 +2110 GOSUB 8500 +2120 LET A=50^0.0 +2130 LET O$="3" +2140 LET Y=1 +2150 GOSUB 8500 +2155 LET N$="VAR. & CONSTS." +2160 LET B=3 +2162 LET C=4 +2165 LET A=B^C +2170 LET O$="4" +2180 LET Y=81 +2190 GOSUB 8500 +2210 LET B=-2 +2220 LET C=3 +2230 LET A=B^C +2240 LET O$="5" +2250 LET Y=-8 +2260 GOSUB 8500 +2270 LET B=-3 +2290 LET A=B^2.0 +2300 LET O$="6" +2310 LET Y=9 +2320 GOSUB 8500 +2330 LET C=4 +2350 LET A=0^C +2360 LET O$="Y" +2370 LET Y=0 +2380 GOSUB 8500 +2390 LET B=4 +2400 LET A=B^0 +2410 LET O$="8" +2420 LET Y=1 +2430 GOSUB 8500 +2440 LET B=0 +2445 LET C=0.0 +2450 LET A=B^C +2460 LET O$="9" +2470 LET Y=1 +2480 GOSUB 8500 +2490 LET B=40E-1 +2500 LET C=1.0 +2510 LET A=B^C +2520 LET O$="10" +2530 LET Y=4 +2540 GOSUB 8500 +2550 LET B=-1 +2560 LET A=4^B +2570 LET O$="11" +2580 LET Y=.25 +2590 GOSUB 8500 +2600 LET B=-2 +2610 LET A=B^B +2620 LET O$="12" +2630 LET Y=.25 +2640 GOSUB 8500 +2650 LET C=-3 +2660 LET A=B^C +2670 LET O$="13" +2680 LET Y=-.125 +2690 GOSUB 8500 +2700 LET B=-3 +2710 LET A=1^B +2720 LET O$="14" +2730 LET Y=1 +2740 GOSUB 8500 +2750 LET B=-2 +2760 LET A=B^0 +2770 LET O$="15" +2780 LET Y=1 +2790 GOSUB 8500 +2800 LET B=-3 +2810 LET A=.5^B +2820 LET O$="16" +2830 LET Y=8 +2840 GOSUB 8500 +2850 LET C=-.5 +2860 LET A=.16^C +2870 LET O$="17" +2880 LET Y=2.5 +2890 GOSUB 8500 +2900 LET A=.36^.5 +2910 LET O$="18" +2920 LET Y=.6 +2930 GOSUB 8500 +2940 LET B=-.5 +2950 LET C=-3 +2960 LET A=B^C +2970 LET O$="19" +2980 LET Y=-8 +2990 GOSUB 8500 +3000 LET A=B^3 +3010 LET O$="20" +3020 LET Y=-.125 +3030 GOSUB 8500 +3040 GOSUB 8000 +6000 PRINT +6010 PRINT "END PROGRAM 25" +6020 STOP +7000 REM SUBROUTINE TO BEGIN SECTION +7010 PRINT +7020 PRINT "SECTION ";M$ +7030 PRINT +7040 PRINT " BEGIN TEST" +7050 PRINT +7060 LET E1=0 +7080 PRINT "CASE #","SHOULD BE","ACTUAL","OUTCOME" +7090 PRINT +7300 RETURN +8000 REM SUBROUTINE TO END SECTION +8010 PRINT +8020 IF E1=0 THEN 8050 +8025 PRINT "*** TEST FAILED IN ";E1;" CASE(S) ***" +8030 GOTO 8060 +8050 PRINT "*** TEST PASSED ***" +8060 PRINT +8070 PRINT " END TEST" +8080 PRINT +8090 RETURN +8500 REM HANDLE TEST CASE REPORT +8510 PRINT O$,Y,A, +8520 LET P$="fails" +8530 LET M=0.1 +8540 IF Y>1 THEN 8570 +8550 IF Y<-1 THEN 8570 +8560 LET M=0.01 +8570 LET T=A-Y +8580 IF T>M THEN 8630 +8590 LET T=Y-A +8600 IF T>M THEN 8630 +8610 LET P$="PASSES" +8620 GOTO 8640 +8630 LET E1=E1+1 +8640 PRINT "TEST ";P$ +8650 RETURN +8660 END diff --git a/NBS2/P025.OUT b/NBS2/P025.OUT new file mode 100644 index 0000000..e56e690 --- /dev/null +++ b/NBS2/P025.OUT @@ -0,0 +1,94 @@ +PROGRAM FILE 25: MULTIPLY, DIVIDE, AND INVOLUTE + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS THE GROSS SEMANTIC CHARACTERISTICS OF +THE MULTIPLY, DIVIDE, AND INVOLUTION OPERATORS FOR THE +CONSTRUCTION OF NUMERIC EXPRESSIONS. + +EXPRESSIONS USING ONLY ONE OPERATOR AND CONSTANTS AND +SIMPLE VARIABLES ARE EVALUATED, AND THE RESULTS TESTED +AGAINST THE CORRECT VALUE. CONSTANTS ARE EXPRESSED IN +NR1, NR2, AND NR3 FORM. THE VALUES OF THE OPERANDS AND +RESULTS ARE RESTRICTED TO INTEGERS AND SIMPLE FRACTIONS +TO AVOID ACCURACY PROBLEMS (ACCURACY IS ADDRESSED IN +LATER TESTS). + + +SECTION 25.1: MULTIPLY + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 21 21 TEST PASSES +2 70 70 TEST PASSES +3 138 138 TEST PASSES +4 -111 -111 TEST PASSES +5 -30 -30 TEST PASSES +6 132 132 TEST PASSES +7 0 0 TEST PASSES +8 9 9 TEST PASSES +9 16 16 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 25.2: DIVIDE + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 4 4 TEST PASSES +2 2 2 TEST PASSES +3 0 0 TEST PASSES +4 7 7 TEST PASSES +5 -49 -49 TEST PASSES +6 -1 -1 TEST PASSES +7 37 37 TEST PASSES +8 0 0 TEST PASSES +9 3.5 3.5 TEST PASSES +10 5.2 5.2 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 25.3: INVOLUTION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 9 9 TEST PASSES +2 64 64 TEST PASSES +3 1 1 TEST PASSES +4 81 81 TEST PASSES +5 -8 -8 TEST PASSES +6 9 9 TEST PASSES +Y 0 0 TEST PASSES +8 1 1 TEST PASSES +9 1 1 TEST PASSES +10 4 4 TEST PASSES +11 .25 .25 TEST PASSES +12 .25 .25 TEST PASSES +13 -.125 -.125 TEST PASSES +14 1 1 TEST PASSES +15 1 1 TEST PASSES +16 8 8 TEST PASSES +17 2.5 2.5 TEST PASSES +18 .6 .6 TEST PASSES +19 -8 -8 TEST PASSES +20 -.125 -.125 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +END PROGRAM 25 + +Program interrupted at line 6020 diff --git a/NBS2/P025.dif b/NBS2/P025.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P025.run b/NBS2/P025.run new file mode 100644 index 0000000..1977f10 --- /dev/null +++ b/NBS2/P025.run @@ -0,0 +1,94 @@ +PROGRAM FILE 25: MULTIPLY, DIVIDE, AND INVOLUTE + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS THE GROSS SEMANTIC CHARACTERISTICS OF +THE MULTIPLY, DIVIDE, AND INVOLUTION OPERATORS FOR THE +CONSTRUCTION OF NUMERIC EXPRESSIONS. + +EXPRESSIONS USING ONLY ONE OPERATOR AND CONSTANTS AND +SIMPLE VARIABLES ARE EVALUATED, AND THE RESULTS TESTED +AGAINST THE CORRECT VALUE. CONSTANTS ARE EXPRESSED IN +NR1, NR2, AND NR3 FORM. THE VALUES OF THE OPERANDS AND +RESULTS ARE RESTRICTED TO INTEGERS AND SIMPLE FRACTIONS +TO AVOID ACCURACY PROBLEMS (ACCURACY IS ADDRESSED IN +LATER TESTS). + + +SECTION 25.1: MULTIPLY + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 21 21 TEST PASSES +2 70 70 TEST PASSES +3 138 138 TEST PASSES +4 -111 -111 TEST PASSES +5 -30 -30 TEST PASSES +6 132 132 TEST PASSES +7 0 0 TEST PASSES +8 9 9 TEST PASSES +9 16 16 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 25.2: DIVIDE + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 4 4 TEST PASSES +2 2 2 TEST PASSES +3 0 0 TEST PASSES +4 7 7 TEST PASSES +5 -49 -49 TEST PASSES +6 -1 -1 TEST PASSES +7 37 37 TEST PASSES +8 0 0 TEST PASSES +9 3.5 3.5 TEST PASSES +10 5.2 5.2 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +SECTION 25.3: INVOLUTION + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 9 9 TEST PASSES +2 64 64 TEST PASSES +3 1 1 TEST PASSES +4 81 81 TEST PASSES +5 -8 -8 TEST PASSES +6 9 9 TEST PASSES +Y 0 0 TEST PASSES +8 1 1 TEST PASSES +9 1 1 TEST PASSES +10 4 4 TEST PASSES +11 .25 .25 TEST PASSES +12 .25 .25 TEST PASSES +13 -.125 -.125 TEST PASSES +14 1 1 TEST PASSES +15 1 1 TEST PASSES +16 8 8 TEST PASSES +17 2.5 2.5 TEST PASSES +18 .6 .6 TEST PASSES +19 -8 -8 TEST PASSES +20 -.125 -.125 TEST PASSES + +*** TEST PASSED *** + + END TEST + + +END PROGRAM 25 + +Program interrupted at line 6020 diff --git a/NBS2/P026.80 b/NBS2/P026.80 new file mode 100644 index 0000000..20e4e79 --- /dev/null +++ b/NBS2/P026.80 @@ -0,0 +1,72 @@ +PROGRAM FILE 26: PRECEDENCE RULES FOR NUMERIC EXPRESSIONS. + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS WHETHER THE PRECEDENCE RULES ARE +CORRECTLY IMPLEMENTED. + +SECTION 26.1: PRECEDENCE ACCORDING TO OPERATOR AND + POSITION (LEFT TO RIGHT). + +THIS SECTION TESTS THE PRECEDENCE RULES USING SIMPLE +INTEGER OPERANDS AND ALL ORDERED PAIRS OF OPERATORS +FOR WHICH THE ORDER OF EVALUATION MAKES A DIFFERENCE. +NO PARENTHESES ARE USED. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 23 23 TEST PASSES +2 10 10 TEST PASSES +3 30 30 TEST PASSES +4 4 4 TEST PASSES +5 -6 -6 TEST PASSES +6 -10 -10 TEST PASSES +7 6 6 TEST PASSES +8 -5 -5 TEST PASSES +9 17 17 TEST PASSES +10 7 7 TEST PASSES +11 24 24 TEST PASSES +12 4 4 TEST PASSES +13 2 2 TEST PASSES +14 4 4 TEST PASSES +15 2 2 TEST PASSES +16 2 2 TEST PASSES +17 6 6 TEST PASSES +18 6 6 TEST PASSES +19 8 8 TEST PASSES +20 9 9 TEST PASSES +21 64 64 TEST PASSES +22 0 0 TEST PASSES +23 -4 -4 TEST PASSES +24 -4 -4 TEST PASSES + +*** TEST PASSED *** + + END TEST + +SECTION 26.2: MIXED OPERATORS, PARENTHESES, AND VARIABLES + +THIS SECTION TESTS THE USE OF PARENTHESES TO ALTER THE +ORDER OF EVALUATION, EXPRESSIONS WITH SEVERAL OPERATORS, +AND THE USE OF VARIABLES AND CONSTANTS. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 4 4 TEST PASSES +2 4 4 TEST PASSES +3 0 0 TEST PASSES +4 6 6 TEST PASSES +5 -16 -16 TEST PASSES +6 3 3 TEST PASSES +7 -5 -5 TEST PASSES + +*** TEST PASSED *** + + END TEST + +END PROGRAM 26 + +Program interrupted at line 8990 diff --git a/NBS2/P026.BAS b/NBS2/P026.BAS new file mode 100644 index 0000000..c7b5a01 --- /dev/null +++ b/NBS2/P026.BAS @@ -0,0 +1,197 @@ +10 PRINT "PROGRAM FILE 26: PRECEDENCE RULES FOR NUMERIC EXPRESSIONS." +20 PRINT " ANSI STANDARD 7.2, 7.4" +30 PRINT +40 PRINT "THIS PROGRAM TESTS WHETHER THE PRECEDENCE RULES ARE" +50 PRINT "CORRECTLY IMPLEMENTED." +60 PRINT +70 PRINT "SECTION 26.1: PRECEDENCE ACCORDING TO OPERATOR AND" +80 PRINT " POSITION (LEFT TO RIGHT)." +90 PRINT +100 PRINT "THIS SECTION TESTS THE PRECEDENCE RULES USING SIMPLE" +110 PRINT "INTEGER OPERANDS AND ALL ORDERED PAIRS OF OPERATORS" +120 PRINT "FOR WHICH THE ORDER OF EVALUATION MAKES A DIFFERENCE." +130 PRINT "NO PARENTHESES ARE USED." +140 PRINT +150 PRINT " BEGIN TEST" +160 PRINT +163 PRINT "CASE #","SHOULD BE","ACTUAL","OUTCOME" +166 PRINT +170 LET F=0 +180 LET O$="1" +190 LET A=3+4 * 5 +200 LET Y=23 +210 GOSUB 9000 +220 LET A=8+4 / 2 +230 LET O$="2" +240 LET Y=10 +250 GOSUB 9000 +260 LET A=3.+3 ^ 3 +270 LET O$="3" +280 LET Y=30 +290 GOSUB 9000 +300 LET A=3 - 40.00E-1+5 +310 LET O$="4" +320 LET Y=4 +330 GOSUB 9000 +340 LET A=3.00 - 4-.5E+1 +350 LET O$="5" +360 LET Y=-6 +370 GOSUB 9000 +380 LET O$="6" +390 LET A=20.E-1-3 * 4 +400 LET Y=-10 +410 GOSUB 9000 +420 LET A=8-4 / 2 +430 LET O$="7" +440 LET Y=6 +450 GOSUB 9000 +460 LET A=3-2 ^ 3 +470 LET O$="8" +480 LET Y=-5 +490 GOSUB 9000 +500 LET A=3 * 4+5 +510 LET O$="9" +520 LET Y=17 +530 GOSUB 9000 +540 LET O$="10" +550 LET A=3.00E0 * 4.00E+00-5.00E-00 +560 LET Y=7 +570 GOSUB 9000 +580 LET A=003.0*2. ^ 3. +590 LET O$="11" +600 LET Y=24 +610 GOSUB 9000 +620 LET A=6 / 2+1 +630 LET O$="12" +640 LET Y=4 +650 GOSUB 9000 +660 LET A=6 / 2-1 +670 LET O$="13" +680 LET Y=2 +690 GOSUB 9000 +700 LET A=2 / 1*2 +710 LET O$="14" +720 LET Y=4 +730 GOSUB 9000 +740 LET A=8 / 2/2 +750 LET O$="15" +760 LET Y=2 +770 GOSUB 9000 +780 LET O$="16" +790 LET A=8/2 ^ 2 +800 LET Y=2 +810 GOSUB 9000 +820 LET A=2 ^ 2+2 +830 LET O$="17" +840 LET Y=6 +850 GOSUB 9000 +860 LET A=2 ^ 3-2 +870 LET O$="18" +880 LET Y=6 +890 GOSUB 9000 +900 LET A=2 ^ 2*2 +910 LET O$="19" +920 LET Y=8 +930 GOSUB 9000 +940 LET A=3 ^ 3/3 +950 LET O$="20" +960 LET Y=9 +970 GOSUB 9000 +980 LET A=2 ^ 3^2 +990 LET O$="21" +1000 LET Y=64 +1010 GOSUB 9000 +1020 LET A=- 2+2 +1030 LET O$="22" +1040 LET Y=0 +1050 GOSUB 9000 +1060 LET A=- 2-2 +1070 LET O$="23" +1080 LET Y=-4 +1090 GOSUB 9000 +1100 LET A=-2 ^ 2 +1110 LET O$="24" +1120 LET Y=-4 +1130 GOSUB 9000 +1140 PRINT +1150 IF F=0 THEN 1180 +1160 PRINT "*** TEST FAILED IN ";F;" CASE(S). ***" +1170 GOTO 1190 +1180 PRINT "*** TEST PASSED ***" +1190 PRINT +1200 PRINT " END TEST" +1210 PRINT +2000 PRINT "SECTION 26.2: MIXED OPERATORS, PARENTHESES, AND VARIABLES" +2020 PRINT +2030 PRINT "THIS SECTION TESTS THE USE OF PARENTHESES TO ALTER THE" +2040 PRINT "ORDER OF EVALUATION, EXPRESSIONS WITH SEVERAL OPERATORS," +2050 PRINT "AND THE USE OF VARIABLES AND CONSTANTS." +2060 PRINT +2070 PRINT " BEGIN TEST" +2080 PRINT +2083 PRINT "CASE #","SHOULD BE","ACTUAL","OUTCOME" +2086 PRINT +2090 LET F=0 +2100 LET O$="1" +2110 LET A=4 +2120 LET A=3-(A-5) +2130 LET Y=4 +2140 GOSUB 9000 +2150 LET O$="2" +2160 LET B=2 +2170 LET A=+2-B+2/B*2^B +2180 LET Y=4 +2190 GOSUB 9000 +2195 LET O$="3" +2200 LET A=-B-B+B/002.*.2E+01^2 +2210 LET Y=0 +2220 GOSUB 9000 +2225 LET O$="4" +2230 LET A=-3 +2240 LET B=-4 +2250 LET A=-(A-B)-B-(A-((+B-(B-A))-A)) +2260 LET Y=6 +2270 GOSUB 9000 +2280 LET O$="5" +2290 LET B=4 +2300 LET A=-(1-(-3))^(+(-B^1)/(-2)) +2310 LET Y=-16 +2320 GOSUB 9000 +2330 LET O$="6" +2340 LET A=-2 +2350 LET B=16 +2360 LET C=-30 +2370 LET A=(-B+(B^.02E+02-4*A*C)^.5)/(2*A) +2380 LET Y=3 +2390 GOSUB 9000 +2400 LET O$="7" +2410 LET A=60/(10-(-(-9))-7)/2 +2420 LET Y=-5 +2430 GOSUB 9000 +2900 PRINT +2910 IF F=0 THEN 2940 +2920 PRINT "*** TEST FAILED IN ";F;" CASE(S). ***" +2930 GOTO 2950 +2940 PRINT "*** TEST PASSED ***" +2950 PRINT +2960 PRINT " END TEST" +8970 PRINT +8980 PRINT "END PROGRAM 26" +8990 STOP +9000 REM HANDLE ERROR REPORT +9005 PRINT O$,Y,A, +9007 LET P$="FAILS" +9010 LET M=0.1 +9020 IF Y>1 THEN 9050 +9030 IF Y<-1 THEN 9050 +9040 LET M=0.01 +9050 LET T=A-Y +9060 IF T>M THEN 9100 +9070 LET T=Y-A +9080 IF T>M THEN 9100 +9090 LET P$="PASSES" +9095 GOTO 9110 +9100 LET F=F+1 +9110 PRINT "TEST ";P$ +9130 RETURN +9140 END diff --git a/NBS2/P026.BAS.BAD b/NBS2/P026.BAS.BAD new file mode 100644 index 0000000..8702845 --- /dev/null +++ b/NBS2/P026.BAS.BAD @@ -0,0 +1,198 @@ +10 PRINT "PROGRAM FILE 26: PRECEDENCE RULES FOR NUMERIC EXPRESSIONS." +20 PRINT " ANSI STANDARD 7.2, 7.4" +30 PRINT +40 PRINT "THIS PROGRAM TESTS WHETHER THE PRECEDENCE RULES ARE" +50 PRINT "CORRECTLY IMPLEMENTED." +60 PRINT +70 PRINT "SECTION 26.1: PRECEDENCE ACCORDING TO OPERATOR AND" +80 PRINT " POSITION (LEFT TO RIGHT)." +90 PRINT +100 PRINT "THIS SECTION TESTS THE PRECEDENCE RULES USING SIMPLE" +110 PRINT "INTEGER OPERANDS AND ALL ORDERED PAIRS OF OPERATORS" +120 PRINT "FOR WHICH THE ORDER OF EVALUATION MAKES A DIFFERENCE." +130 PRINT "NO PARENTHESES ARE USED." +140 PRINT +150 PRINT " BEGIN TEST" +160 PRINT +163 PRINT "CASE #","SHOULD BE","ACTUAL","OUTCOME" +166 PRINT +170 LET F=0 +180 LET O$="1" +190 LET A=3+4 * 5 +200 LET Y=23 +210 GOSUB 9000 +220 LET A=8+4 / 2 +230 LET O$="2" +240 LET Y=10 +250 GOSUB 9000 +260 LET A=3.+3 ^ 3 +270 LET O$="3" +280 LET Y=30 +290 GOSUB 9000 +300 LET A=3 - 40.00E-1+5 +310 LET O$="4" +320 LET Y=4 +330 GOSUB 9000 +340 LET A=3.00 - 4-.5E+1 +350 LET O$="5" +360 LET Y=-6 +370 GOSUB 9000 +380 LET O$="6" +390 LET A=20.E-1-3 * 4 +400 LET Y=-10 +410 GOSUB 9000 +420 LET A=8-4 / 2 +430 LET O$="7" +440 LET Y=6 +450 GOSUB 9000 +460 LET A=3-2 ^ 3 +470 LET O$="8" +480 LET Y=-5 +490 GOSUB 9000 +500 LET A=3 * 4+5 +510 LET O$="9" +520 LET Y=17 +530 GOSUB 9000 +540 LET O$="10" +550 LET A=3.00E0 * 4.00E+00-5.00E-00 +560 LET Y=7 +570 GOSUB 9000 +580 LET A=003.0*2. ^ 3. +590 LET O$="11" +600 LET Y=24 +610 GOSUB 9000 +620 LET A=6 / 2+1 +630 LET O$="12" +640 LET Y=4 +650 GOSUB 9000 +660 LET A=6 / 2-1 +670 LET O$="13" +680 LET Y=2 +690 GOSUB 9000 +700 LET A=2 / 1*2 +710 LET O$="14" +720 LET Y=4 +730 GOSUB 9000 +740 LET A=8 / 2/2 +750 LET O$="15" +760 LET Y=2 +770 GOSUB 9000 +780 LET O$="16" +790 LET A=8/2 ^ 2 +800 LET Y=2 +810 GOSUB 9000 +820 LET A=2 ^ 2+2 +830 LET O$="17" +840 LET Y=6 +850 GOSUB 9000 +860 LET A=2 ^ 3-2 +870 LET O$="18" +880 LET Y=6 +890 GOSUB 9000 +900 LET A=2 ^ 2*2 +910 LET O$="19" +920 LET Y=8 +930 GOSUB 9000 +940 LET A=3 ^ 3/3 +950 LET O$="20" +960 LET Y=9 +970 GOSUB 9000 +980 LET A=2 ^ 3^2 +990 LET O$="21" +1000 LET Y=64 +1010 GOSUB 9000 +1020 LET A=- 2+2 +1030 LET O$="22" +1040 LET Y=0 +1050 GOSUB 9000 +1060 LET A=- 2-2 +1070 LET O$="23" +1080 LET Y=-4 +1090 GOSUB 9000 +1100 LET A=-2 ^ 2 +1110 LET O$="24" +1120 LET Y=-4 +1130 GOSUB 9000 +1140 PRINT +1150 IF F=0 THEN 1180 +1160 PRINT "*** TEST FAILED IN ";F;" CASE(S). ***" +1170 GOTO 1190 +1180 PRINT "*** TEST PASSED ***" +1190 PRINT +1200 PRINT " END TEST" +1210 PRINT +2000 PRINT "SECTION 26.2: MIXED OPERATORS, PARENTHESES, AND VARIABLES" +2020 PRINT +2030 PRINT "THIS SECTION TESTS THE USE OF PARENTHESES TO ALTER THE" +2040 PRINT "ORDER OF EVALUATION, EXPRESSIONS WITH SEVERAL OPERATORS," +2050 PRINT "AND THE USE OF VARIABLES AND CONSTANTS." +2060 PRINT +2070 PRINT " BEGIN TEST" +2080 PRINT +2083 PRINT "CASE #","SHOULD BE","ACTUAL","OUTCOME" +2086 PRINT +2090 LET F=0 +2100 LET O$="1" +2110 LET A=4 +2120 LET A=3-(A-5) +2130 LET Y=4 +2140 GOSUB 9000 +2150 LET O$="2" +2160 LET B=2 +2170 LET A=+2-B+2/B*2^B +2180 LET Y=4 +2190 GOSUB 9000 +2195 LET O$="3" +2200 LET A=-B-B+B/002.*.2E+01^2 +2210 LET Y=0 +2220 GOSUB 9000 +2225 LET O$="4" +2230 LET A=-3 +2240 LET B=-4 +2250 LET A=-(A-B)-B-(A-((+B-(B-A))-A)) +2260 LET Y=6 +2270 GOSUB 9000 +2280 LET O$="5" +2290 LET B=4 +2299 REM BWBASIC HALTS ON THIS LINE: 2300 LET A=-(1-(-3))^(+(-B^1)/(-2)) +2300 LET A=-999999 +2310 LET Y=-16 +2320 GOSUB 9000 +2330 LET O$="6" +2340 LET A=-2 +2350 LET B=16 +2360 LET C=-30 +2370 LET A=(-B+(B^.02E+02-4*A*C)^.5)/(2*A) +2380 LET Y=3 +2390 GOSUB 9000 +2400 LET O$="7" +2410 LET A=60/(10-(-(-9))-7)/2 +2420 LET Y=-5 +2430 GOSUB 9000 +2900 PRINT +2910 IF F=0 THEN 2940 +2920 PRINT "*** TEST FAILED IN ";F;" CASE(S). ***" +2930 GOTO 2950 +2940 PRINT "*** TEST PASSED ***" +2950 PRINT +2960 PRINT " END TEST" +8970 PRINT +8980 PRINT "END PROGRAM 26" +8990 STOP +9000 REM HANDLE ERROR REPORT +9005 PRINT O$,Y,A, +9007 LET P$="FAILS" +9010 LET M=0.1 +9020 IF Y>1 THEN 9050 +9030 IF Y<-1 THEN 9050 +9040 LET M=0.01 +9050 LET T=A-Y +9060 IF T>M THEN 9100 +9070 LET T=Y-A +9080 IF T>M THEN 9100 +9090 LET P$="PASSES" +9095 GOTO 9110 +9100 LET F=F+1 +9110 PRINT "TEST ";P$ +9130 RETURN +9140 END diff --git a/NBS2/P026.OUT b/NBS2/P026.OUT new file mode 100644 index 0000000..5a20aeb --- /dev/null +++ b/NBS2/P026.OUT @@ -0,0 +1,72 @@ +PROGRAM FILE 26: PRECEDENCE RULES FOR NUMERIC EXPRESSIONS. + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS WHETHER THE PRECEDENCE RULES ARE +CORRECTLY IMPLEMENTED. + +SECTION 26.1: PRECEDENCE ACCORDING TO OPERATOR AND + POSITION (LEFT TO RIGHT). + +THIS SECTION TESTS THE PRECEDENCE RULES USING SIMPLE +INTEGER OPERANDS AND ALL ORDERED PAIRS OF OPERATORS +FOR WHICH THE ORDER OF EVALUATION MAKES A DIFFERENCE. +NO PARENTHESES ARE USED. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 23 23 TEST PASSES +2 10 10 TEST PASSES +3 30 30 TEST PASSES +4 4 4 TEST PASSES +5 -6 -6 TEST PASSES +6 -10 -10 TEST PASSES +7 6 6 TEST PASSES +8 -5 -5 TEST PASSES +9 17 17 TEST PASSES +10 7 7 TEST PASSES +11 24 24 TEST PASSES +12 4 4 TEST PASSES +13 2 2 TEST PASSES +14 4 4 TEST PASSES +15 2 2 TEST PASSES +16 2 2 TEST PASSES +17 6 6 TEST PASSES +18 6 6 TEST PASSES +19 8 8 TEST PASSES +20 9 9 TEST PASSES +21 64 64 TEST PASSES +22 0 0 TEST PASSES +23 -4 -4 TEST PASSES +24 -4 -4 TEST PASSES + +*** TEST PASSED *** + + END TEST + +SECTION 26.2: MIXED OPERATORS, PARENTHESES, AND VARIABLES + +THIS SECTION TESTS THE USE OF PARENTHESES TO ALTER THE +ORDER OF EVALUATION, EXPRESSIONS WITH SEVERAL OPERATORS, +AND THE USE OF VARIABLES AND CONSTANTS. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 4 4 TEST PASSES +2 4 4 TEST PASSES +3 0 0 TEST PASSES +4 6 6 TEST PASSES +5 -16 -16 TEST PASSES +6 3 3 TEST PASSES +7 -5 -5 TEST PASSES + +*** TEST PASSED *** + + END TEST + +END PROGRAM 26 + +Program interrupted at line 8990 diff --git a/NBS2/P026.dif b/NBS2/P026.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P026.run b/NBS2/P026.run new file mode 100644 index 0000000..20e4e79 --- /dev/null +++ b/NBS2/P026.run @@ -0,0 +1,72 @@ +PROGRAM FILE 26: PRECEDENCE RULES FOR NUMERIC EXPRESSIONS. + ANSI STANDARD 7.2, 7.4 + +THIS PROGRAM TESTS WHETHER THE PRECEDENCE RULES ARE +CORRECTLY IMPLEMENTED. + +SECTION 26.1: PRECEDENCE ACCORDING TO OPERATOR AND + POSITION (LEFT TO RIGHT). + +THIS SECTION TESTS THE PRECEDENCE RULES USING SIMPLE +INTEGER OPERANDS AND ALL ORDERED PAIRS OF OPERATORS +FOR WHICH THE ORDER OF EVALUATION MAKES A DIFFERENCE. +NO PARENTHESES ARE USED. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 23 23 TEST PASSES +2 10 10 TEST PASSES +3 30 30 TEST PASSES +4 4 4 TEST PASSES +5 -6 -6 TEST PASSES +6 -10 -10 TEST PASSES +7 6 6 TEST PASSES +8 -5 -5 TEST PASSES +9 17 17 TEST PASSES +10 7 7 TEST PASSES +11 24 24 TEST PASSES +12 4 4 TEST PASSES +13 2 2 TEST PASSES +14 4 4 TEST PASSES +15 2 2 TEST PASSES +16 2 2 TEST PASSES +17 6 6 TEST PASSES +18 6 6 TEST PASSES +19 8 8 TEST PASSES +20 9 9 TEST PASSES +21 64 64 TEST PASSES +22 0 0 TEST PASSES +23 -4 -4 TEST PASSES +24 -4 -4 TEST PASSES + +*** TEST PASSED *** + + END TEST + +SECTION 26.2: MIXED OPERATORS, PARENTHESES, AND VARIABLES + +THIS SECTION TESTS THE USE OF PARENTHESES TO ALTER THE +ORDER OF EVALUATION, EXPRESSIONS WITH SEVERAL OPERATORS, +AND THE USE OF VARIABLES AND CONSTANTS. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + +1 4 4 TEST PASSES +2 4 4 TEST PASSES +3 0 0 TEST PASSES +4 6 6 TEST PASSES +5 -16 -16 TEST PASSES +6 3 3 TEST PASSES +7 -5 -5 TEST PASSES + +*** TEST PASSED *** + + END TEST + +END PROGRAM 26 + +Program interrupted at line 8990 diff --git a/NBS2/P027.80 b/NBS2/P027.80 new file mode 100644 index 0000000..2adfd43 --- /dev/null +++ b/NBS2/P027.80 @@ -0,0 +1,121 @@ +PROGRAM FILE 27: ACCURACY OF CONSTANTS AND VARIABLES. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 10.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE ON-GOTO STATEMENT + AND FOR-BLOCKS (THE FOR AND NEXT STATEMENTS) WHICH + HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +THIS PROGRAM TESTS THE LEVEL OF ACCURACY OF NUMERIC VALUE, +USING THE IF-THEN STATEMENT. + +SECTION 27.1: ACCURACY IN COMPARISON OF VARIABLES. + +THIS SECTION COMPARES TWO VARIABLES WHICH HAVE BEEN ASSIGNED +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEN OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY > = + +9.876543212E-7 : 9.876533E-7 6 T F +9.876543212E-7 : 9.8765422E-7 7 T F +9.876543212E-7 : 9.87654311E-7 8 T F +9.876543212E-7 : 9.876543201E-7 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.2: ACCURACY IN THE COMPARISON OF VARIABLES + WITH CONSTANTS. + +THIS SECTION COMPARES A VARIABLE AND A CONSTANT WHICH HAVE +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEM OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY > = + +-9.999988888E36 : -9.999999E36 6 T F +-9.999988888E36 : -9.9999899E36 7 T F +-9.999988888E36 : -9.99998899E36 8 T F +-9.999988888E36 : -9.999988899E36 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.3: ACCURACY IN THE COMPARISON OF CONSTANTS. + +THIS SECTION COMPARES TWO CONSTANTS WHICH HAVE +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEM OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY < = + +9.40395E-37 : 9.40396E-37 6 T F +9.40395E-37 : 9.403951E-37 7 T F +9.40395E-37 : 9.4039501E-37 8 T F +9.40395E-37 : 9.40395001E-37 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.4: ACCURACY FOR CONSTANTS EXPRESSED WITH + DIFFERENT EXPONENTS. + +CONSTANTS MUST BE ACCURATE EVEN WHEN NOT EXPRESSED IN +NORMALIZED FORM (1 <= SIGNIFICAND < 10). + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 27.5: COMPUTED ACCURACY OF NUMERIC VALUES. + +THIS SECTION USES A COMPUTATIONAL ALGORITHM TO ATTEMPT TO +DISCOVER THIS IMPLEMENTATION'S INTERNAL ACCURACY. BECAUSE +THE ALGORITHM RELIES SOMEWHAT ON ACCURACY OF EXPRESSION +EVALUATION, THE RESULTS ARE NOT ABSOLUTELY TRUSTWORTHY AND +SHOULD BE INTERPRETED IN LIGHT OF GENERAL KNOWLEDGE OF +THE CHARACTERISTICS OF THE SYSTEM. + +*** THIS TEST IS INFORMATIVE ONLY *** + + BEGIN TEST. + +COMPUTED ACCURACY = 16 DECIMAL DIGITS. +COMPUTED ACCURACY = 53 BINARY DIGITS. + + END TEST. + +END PROGRAM 27 + +Program interrupted at line 6450 diff --git a/NBS2/P027.BAS b/NBS2/P027.BAS new file mode 100644 index 0000000..3849f1b --- /dev/null +++ b/NBS2/P027.BAS @@ -0,0 +1,251 @@ +5 PRINT "PROGRAM FILE 27: ACCURACY OF CONSTANTS AND VARIABLES." +10 PRINT " ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 10.4" +15 PRINT +20 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF THE ON-GOTO STATEMENT" +25 PRINT " AND FOR-BLOCKS (THE FOR AND NEXT STATEMENTS) WHICH" +30 PRINT " HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +35 PRINT " THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE" +40 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +45 PRINT +50 PRINT "THIS PROGRAM TESTS THE LEVEL OF ACCURACY OF NUMERIC VALUE," +55 PRINT "USING THE IF-THEN STATEMENT." +60 LET T1=34 +70 LET T2=50 +80 LET T3=T1+2 +90 LET T4=T2+2 +100 PRINT +110 PRINT "SECTION 27.1: ACCURACY IN COMPARISON OF VARIABLES." +120 PRINT +130 PRINT "THIS SECTION COMPARES TWO VARIABLES WHICH HAVE BEEN ASSIGNED" +140 PRINT "NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE" +150 PRINT "IMPLEMENTATION CAN DISTINGUISH BETWEEN THEN OR IF THEY ARE" +160 PRINT "TREATED AS EQUAL." +170 PRINT +180 LET C$=" > =" +190 GOSUB 8000 +200 LET A = 9.876543212E-7 +210 LET A$="9.876543212E-7 : " +220 FOR I=6 TO 9 +230 PRINT A$; +240 LET J=I-5 +250 ON J GOTO 600,700,800,900 +600 LET B= 9.876533E-7 +610 PRINT "9.876533E-7"; +620 GOTO 1000 +700 LET B= 9.8765422E-7 +710 PRINT "9.8765422E-7"; +720 GOTO 1000 +800 LET B= 9.87654311E-7 +810 PRINT "9.87654311E-7"; +820 GOTO 1000 +900 LET B= 9.876543201E-7 +910 PRINT "9.876543201E-7"; +920 GOTO 1000 +1000 LET U$="T" +1010 LET E$="T" +1020 IF A > B THEN 1040 +1030 LET U$="F" +1040 IF A = B THEN 1060 +1050 LET E$="F" +1060 REM COMPARISONS FINISHED +1200 GOSUB 8160 +1210 NEXT I +1220 GOSUB 8280 +3000 PRINT "SECTION 27.2: ACCURACY IN THE COMPARISON OF VARIABLES" +3010 PRINT " WITH CONSTANTS." +3020 PRINT +3030 PRINT "THIS SECTION COMPARES A VARIABLE AND A CONSTANT WHICH HAVE" +3040 PRINT "NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE" +3050 PRINT "IMPLEMENTATION CAN DISTINGUISH BETWEEN THEM OR IF THEY ARE" +3060 PRINT "TREATED AS EQUAL." +3070 PRINT +3080 LET C$=" > =" +3090 GOSUB 8000 +3100 LET A$="-9.999988888E36 : " +3110 FOR I=6 TO 9 +3120 PRINT A$; +3130 LET J=I-5 +3140 ON J GOTO 3200,3300,3400,3500 +3200 LET B= -9.999999E36 +3210 PRINT "-9.999999E36"; +3220 GOTO 3600 +3300 LET B= -9.9999899E36 +3310 PRINT "-9.9999899E36"; +3320 GOTO 3600 +3400 LET B= -9.99998899E36 +3410 PRINT "-9.99998899E36"; +3420 GOTO 3600 +3500 LET B= -9.999988899E36 +3510 PRINT "-9.999988899E36"; +3520 GOTO 3600 +3600 LET U$="T" +3610 LET E$="T" +3620 IF -9.999988888E36 > B THEN 3640 +3630 LET U$="F" +3640 IF -9.999988888E36 = B THEN 3660 +3650 LET E$="F" +3660 REM COMPARISON FINISHED +3670 GOSUB 8160 +3680 NEXT I +3690 GOSUB 8280 +5000 PRINT "SECTION 27.3: ACCURACY IN THE COMPARISON OF CONSTANTS." +5010 PRINT +5020 PRINT "THIS SECTION COMPARES TWO CONSTANTS WHICH HAVE" +5030 PRINT "NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE" +5040 PRINT "IMPLEMENTATION CAN DISTINGUISH BETWEEN THEM OR IF THEY ARE" +5050 PRINT "TREATED AS EQUAL." +5060 PRINT +5070 LET C$=" < =" +5080 GOSUB 8000 +5090 LET A$="9.40395E-37 : " +5100 FOR I=6 TO 9 +5110 PRINT A$; +5120 LET U$="T" +5130 LET E$="T" +5140 LET J=I-5 +5150 ON J GOTO 5200,5300,5400,5500 +5200 IF 9.40395E-37 < 9.40396E-37 THEN 5220 +5210 LET U$="F" +5220 IF 9.40395E-37 = 9.40396E-17 THEN 5240 +5230 LET E$="F" +5240 PRINT "9.40396E-37"; +5250 GOTO 5600 +5300 IF 9.40395E-37 < 9.403951E-37 THEN 5320 +5310 LET U$="F" +5320 IF 9.40395E-37 = 9.403951E-37 THEN 5340 +5330 LET E$="F" +5340 PRINT "9.403951E-37"; +5350 GOTO 5600 +5400 IF 9.40395E-37 < 9.4039501E-37 THEN 5420 +5410 LET U$="F" +5420 IF 9.40395E-37 = 9.4039501E-37 THEN 5440 +5430 LET E$="F" +5440 PRINT "9.4039501E-37"; +5450 GOTO 5600 +5500 IF 9.40395E-37 < 9.40395001E-37 THEN 5520 +5510 LET U$="F" +5520 IF 9.40395E-37 = 9.40395001E-37 THEN 5540 +5530 LET E$="F" +5540 PRINT "9.40395001E-37"; +5550 GOTO 5600 +5600 REM COMPARISONS FINISHED +5610 GOSUB 8160 +5620 NEXT I +5630 GOSUB 8280 +5800 PRINT "SECTION 27.4: ACCURACY FOR CONSTANTS EXPRESSED WITH" +5810 PRINT " DIFFERENT EXPONENTS." +5820 PRINT +5830 PRINT "CONSTANTS MUST BE ACCURATE EVEN WHEN NOT EXPRESSED IN" +5840 PRINT "NORMALIZED FORM (1 <= SIGNIFICAND < 10)." +5850 PRINT +5860 PRINT " BEGIN TEST." +5870 PRINT +5880 IF .0000000999991E-18 >= 99999200000E-36 THEN 5950 +5890 IF -.0000000999991E-18 <= -99999200000E-36 THEN 5950 +5900 IF .0000000999992E-18 >= 99999300000E-36 THEN 5950 +5910 IF -.0000000999992E-18 <= -99999300000E-36 THEN 5950 +5920 IF .0000000999993E-18 >= 99999400000E-36 THEN 5950 +5930 IF -.0000000999993E-18 <= -99999400000E-36 THEN 5950 +5940 PRINT "*** TEST PASSED ***" +5945 GO TO 5955 +5950 PRINT "*** TEST FAILED ***" +5955 PRINT +5960 PRINT " END TEST." +5970 PRINT +6000 PRINT "SECTION 27.5: COMPUTED ACCURACY OF NUMERIC VALUES." +6010 PRINT +6020 PRINT "THIS SECTION USES A COMPUTATIONAL ALGORITHM TO ATTEMPT TO" +6030 PRINT "DISCOVER THIS IMPLEMENTATION'S INTERNAL ACCURACY. BECAUSE" +6040 PRINT "THE ALGORITHM RELIES SOMEWHAT ON ACCURACY OF EXPRESSION" +6050 PRINT "EVALUATION, THE RESULTS ARE NOT ABSOLUTELY TRUSTWORTHY AND" +6060 PRINT "SHOULD BE INTERPRETED IN LIGHT OF GENERAL KNOWLEDGE OF" +6070 PRINT "THE CHARACTERISTICS OF THE SYSTEM." +6080 PRINT +6090 PRINT "*** THIS TEST IS INFORMATIVE ONLY ***" +6100 PRINT +6110 PRINT " BEGIN TEST." +6120 PRINT +6130 LET B=10 +6140 LET B$="DECIMAL" +6150 GOSUB 6230 +6160 LET B=2 +6170 LET B$="BINARY" +6180 GOSUB 6230 +6190 PRINT +6200 PRINT " END TEST." +6210 PRINT +6220 GOTO 6430 +6230 LET S=1 +6240 LET E=S +6250 LET D=-1 +6260 LET E=E/B +6270 LET T2 = S - E +6280 LET T1=T2 +6290 REM THE NEXT FOUR STATEMENTS HAVE NO ALGORITHMIC PURPOSE - +6300 REM THEY ARE AN ATTEMPT TO FORCE THE VARIABLE T1 TO BE STORED +6310 REM RATHER THAN SAVED IN OVERLENGTH REGISTERS, AS IS DONE +6320 REM BY SOME MACHINES, WITH AN OPTIMIZING COMPILER. +6325 LET V=1 +6330 LET U=E+D +6340 LET V=U*D*(-V) +6350 IF V < 0 THEN 6330 +6360 LET D=D+1 +6370 IF D>500 THEN 6410 +6380 IF T1 < S THEN 6260 +6390 PRINT "COMPUTED ACCURACY = ";D;B$;" DIGITS." +6400 RETURN +6410 PRINT "UNABLE TO COMPUTE ACCURACY OF ";B$;" DIGITS." +6420 RETURN +6430 REM END SECTION +6440 PRINT "END PROGRAM 27" +6450 STOP +8000 REM SUBROUTINE TO BEGIN SECTION +8010 PRINT " BEGIN TEST." +8020 PRINT +8030 PRINT "NUMERIC VALUES";TAB(T1);"DIGITS OF";TAB(T2); +8040 PRINT "RESULT OF" +8050 PRINT "BEING COMPARED";TAB(T1);"DECIMAL";TAB(T2); +8060 PRINT "COMPARISONS" +8070 PRINT TAB(T1);"ACCURACY";TAB(T2);C$ +8080 PRINT +8090 REM NO. OF ANOMALOUS RESULTS (BOTH TRUE OR BOTH FALSE) +8100 LET S2=0 +8110 REM SIGNIFICANCE SWITCH - 1 IMPLIES LOST SIGNIFICANCE +8120 LET S1=0 +8130 REM NO. OF SIGNIFICANT DIGITS +8140 LET S0=5 +8150 RETURN +8160 REM SUBROUTINE TO SUMMARIZE LINE +8170 LET W$=" " +8180 IF E$=U$ THEN 8230 +8190 IF U$="F" THEN 8250 +8200 IF S1=1 THEN 8260 +8210 LET S0=I +8220 GOTO 8260 +8230 LET W$="***" +8240 LET S2=S2+1 +8250 LET S1=1 +8260 PRINT TAB(T3);I;TAB(T4);U$;" ";E$;" ";W$ +8270 RETURN +8280 REM SUBROUTINE TO END SECTION +8290 LET T$="LEAST" +8300 IF S0=9 THEN 8320 +8310 LET T$="MOST" +8320 PRINT +8330 PRINT "*** TEST INDICATES DECIMAL ACCURACY OF AT ";T$;" ";S0; +8340 PRINT "DIGITS. ***" +8350 IF S0 < 6 THEN 8400 +8360 PRINT "IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY" +8370 PRINT " FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN" +8380 PRINT "*** TEST PASSED ***" +8390 GOTO 8410 +8400 PRINT "*** TEST FAILED: MINIMUM ACCURACY IS SIX DIGITS. ***" +8410 PRINT +8420 IF S2=0 THEN 8460 +8430 PRINT "*** NOTE ANOMALOUS COMPARISON RESULTS IN THE ";S2;" ROW(S)" +8440 PRINT " ABOVE FOLLOWED BY ASTERISKS. ***" +8450 PRINT +8460 PRINT " END TEST." +8470 PRINT +8480 RETURN +8490 END diff --git a/NBS2/P027.OUT b/NBS2/P027.OUT new file mode 100644 index 0000000..f8646ec --- /dev/null +++ b/NBS2/P027.OUT @@ -0,0 +1,121 @@ +PROGRAM FILE 27: ACCURACY OF CONSTANTS AND VARIABLES. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 10.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE ON-GOTO STATEMENT + AND FOR-BLOCKS (THE FOR AND NEXT STATEMENTS) WHICH + HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +THIS PROGRAM TESTS THE LEVEL OF ACCURACY OF NUMERIC VALUE, +USING THE IF-THEN STATEMENT. + +SECTION 27.1: ACCURACY IN COMPARISON OF VARIABLES. + +THIS SECTION COMPARES TWO VARIABLES WHICH HAVE BEEN ASSIGNED +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEN OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY > = + +9.876543212E-7 : 9.876533E-7 6 T F +9.876543212E-7 : 9.8765422E-7 7 T F +9.876543212E-7 : 9.87654311E-7 8 T F +9.876543212E-7 : 9.876543201E-7 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.2: ACCURACY IN THE COMPARISON OF VARIABLES + WITH CONSTANTS. + +THIS SECTION COMPARES A VARIABLE AND A CONSTANT WHICH HAVE +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEM OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY > = + +-9.999988888E36 : -9.999999E36 6 T F +-9.999988888E36 : -9.9999899E36 7 T F +-9.999988888E36 : -9.99998899E36 8 T F +-9.999988888E36 : -9.999988899E36 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.3: ACCURACY IN THE COMPARISON OF CONSTANTS. + +THIS SECTION COMPARES TWO CONSTANTS WHICH HAVE +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEM OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY < = + +9.40395E-37 : 9.40396E-37 6 T F +9.40395E-37 : 9.403951E-37 7 T F +9.40395E-37 : 9.4039501E-37 8 T F +9.40395E-37 : 9.40395001E-37 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.4: ACCURACY FOR CONSTANTS EXPRESSED WITH + DIFFERENT EXPONENTS. + +CONSTANTS MUST BE ACCURATE EVEN WHEN NOT EXPRESSED IN +NORMALIZED FORM (1 <= SIGNIFICAND < 10). + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 27.5: COMPUTED ACCURACY OF NUMERIC VALUES. + +THIS SECTION USES A COMPUTATIONAL ALGORITHM TO ATTEMPT TO +DISCOVER THIS IMPLEMENTATION'S INTERNAL ACCURACY. BECAUSE +THE ALGORITHM RELIES SOMEWHAT ON ACCURACY OF EXPRESSION +EVALUATION, THE RESULTS ARE NOT ABSOLUTELY TRUSTWORTHY AND +SHOULD BE INTERPRETED IN LIGHT OF GENERAL KNOWLEDGE OF +THE CHARACTERISTICS OF THE SYSTEM. + +*** THIS TEST IS INFORMATIVE ONLY *** + + BEGIN TEST. + +COMPUTED ACCURACY = 16 DECIMAL DIGITS. +COMPUTED ACCURACY = 53 BINARY DIGITS. + + END TEST. + +END PROGRAM 27 + +Program interrupted at line 6450 diff --git a/NBS2/P027.dif b/NBS2/P027.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P027.run b/NBS2/P027.run new file mode 100644 index 0000000..2adfd43 --- /dev/null +++ b/NBS2/P027.run @@ -0,0 +1,121 @@ +PROGRAM FILE 27: ACCURACY OF CONSTANTS AND VARIABLES. + ANSI STANDARD 5.2, 5.4, 6.2, 6.4, 10.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE ON-GOTO STATEMENT + AND FOR-BLOCKS (THE FOR AND NEXT STATEMENTS) WHICH + HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +THIS PROGRAM TESTS THE LEVEL OF ACCURACY OF NUMERIC VALUE, +USING THE IF-THEN STATEMENT. + +SECTION 27.1: ACCURACY IN COMPARISON OF VARIABLES. + +THIS SECTION COMPARES TWO VARIABLES WHICH HAVE BEEN ASSIGNED +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEN OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY > = + +9.876543212E-7 : 9.876533E-7 6 T F +9.876543212E-7 : 9.8765422E-7 7 T F +9.876543212E-7 : 9.87654311E-7 8 T F +9.876543212E-7 : 9.876543201E-7 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.2: ACCURACY IN THE COMPARISON OF VARIABLES + WITH CONSTANTS. + +THIS SECTION COMPARES A VARIABLE AND A CONSTANT WHICH HAVE +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEM OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY > = + +-9.999988888E36 : -9.999999E36 6 T F +-9.999988888E36 : -9.9999899E36 7 T F +-9.999988888E36 : -9.99998899E36 8 T F +-9.999988888E36 : -9.999988899E36 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.3: ACCURACY IN THE COMPARISON OF CONSTANTS. + +THIS SECTION COMPARES TWO CONSTANTS WHICH HAVE +NUMERICALLY 'CLOSE' VALUES AND THEN DETERMINES WHETHER THE +IMPLEMENTATION CAN DISTINGUISH BETWEEN THEM OR IF THEY ARE +TREATED AS EQUAL. + + BEGIN TEST. + +NUMERIC VALUES DIGITS OF RESULT OF +BEING COMPARED DECIMAL COMPARISONS + ACCURACY < = + +9.40395E-37 : 9.40396E-37 6 T F +9.40395E-37 : 9.403951E-37 7 T F +9.40395E-37 : 9.4039501E-37 8 T F +9.40395E-37 : 9.40395001E-37 9 T F + +*** TEST INDICATES DECIMAL ACCURACY OF AT LEAST 9 DIGITS. *** +IF DOCUMENTATION FOR THE IMPLEMENTATION-DEFINED ACCURACY + FOR NUMERIC VALUES IS COMPATIBLE WITH THIS RESULT, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 27.4: ACCURACY FOR CONSTANTS EXPRESSED WITH + DIFFERENT EXPONENTS. + +CONSTANTS MUST BE ACCURATE EVEN WHEN NOT EXPRESSED IN +NORMALIZED FORM (1 <= SIGNIFICAND < 10). + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 27.5: COMPUTED ACCURACY OF NUMERIC VALUES. + +THIS SECTION USES A COMPUTATIONAL ALGORITHM TO ATTEMPT TO +DISCOVER THIS IMPLEMENTATION'S INTERNAL ACCURACY. BECAUSE +THE ALGORITHM RELIES SOMEWHAT ON ACCURACY OF EXPRESSION +EVALUATION, THE RESULTS ARE NOT ABSOLUTELY TRUSTWORTHY AND +SHOULD BE INTERPRETED IN LIGHT OF GENERAL KNOWLEDGE OF +THE CHARACTERISTICS OF THE SYSTEM. + +*** THIS TEST IS INFORMATIVE ONLY *** + + BEGIN TEST. + +COMPUTED ACCURACY = 16 DECIMAL DIGITS. +COMPUTED ACCURACY = 53 BINARY DIGITS. + + END TEST. + +END PROGRAM 27 + +Program interrupted at line 6450 diff --git a/NBS2/P028.80 b/NBS2/P028.80 new file mode 100644 index 0000000..bdcb227 --- /dev/null +++ b/NBS2/P028.80 @@ -0,0 +1,77 @@ +PROGRAM FILE 28: EXCEPTION - DIVISION BY ZERO. + ANSI STANDARD 7.5 + +THIS PROGRAM TESTS VARIOUS CASES OF DIVISION BY ZERO. + +SECTION 28.1: POSITIVE NUMBER DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING A POSITIVE +QUANTITY BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 28.2: NEGATIVE NUMBER DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING A NEGATIVE +QUANTITY BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = -1.79769E+308 + +IF VALUE SUPPLIED = NEGATIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 28.3: ZERO DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING ZERO BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 28 diff --git a/NBS2/P028.BAS b/NBS2/P028.BAS new file mode 100644 index 0000000..1320f21 --- /dev/null +++ b/NBS2/P028.BAS @@ -0,0 +1,93 @@ +10 PRINT "PROGRAM FILE 28: EXCEPTION - DIVISION BY ZERO." +20 PRINT " ANSI STANDARD 7.5" +30 PRINT +40 PRINT "THIS PROGRAM TESTS VARIOUS CASES OF DIVISION BY ZERO." +50 PRINT +60 PRINT "SECTION 28.1: POSITIVE NUMBER DIVIDED BY ZERO." +70 PRINT +80 PRINT "THIS SECTION TESTS THE RESULT OF DIVIDING A POSITIVE " +90 PRINT "QUANTITY BY ZERO." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +170 PRINT " OF THE EXPRESSION AND EXECUTION CONTINUES." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 LET B=6 +220 LET A=5/(B-B) +230 PRINT "VALUE SUPPLIED = ";A +240 PRINT +250 IF A > .99E38 THEN 290 +260 PRINT "*** TEST FAILED: VALUE SUPPLIED LESS THAN MINIMUM" +270 PRINT " POSITIVE MACHINE INFINITY. ***" +280 GOTO 320 +290 PRINT "IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND" +300 PRINT " EXCEPTION REPORTED, THEN" +310 PRINT "*** TEST PASSED ***" +320 PRINT +330 PRINT " END TEST." +340 PRINT +1060 PRINT "SECTION 28.2: NEGATIVE NUMBER DIVIDED BY ZERO." +1070 PRINT +1080 PRINT "THIS SECTION TESTS THE RESULT OF DIVIDING A NEGATIVE " +1090 PRINT "QUANTITY BY ZERO." +1100 PRINT +1110 PRINT "TO PASS THIS TEST:" +1120 PRINT +1130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +1140 PRINT " DISPLAYED, AND" +1150 PRINT +1160 PRINT " 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +1170 PRINT " OF THE EXPRESSION AND EXECUTION CONTINUES." +1180 PRINT +1190 PRINT " BEGIN TEST." +1200 PRINT +1210 LET B=6 +1220 LET A=-5/(B-B) +1230 PRINT "VALUE SUPPLIED = ";A +1240 PRINT +1250 IF A < -.99E38 THEN 1290 +1260 PRINT "*** TEST FAILED: VALUE SUPPLIED GREATER THAN MINIMUM" +1270 PRINT " NEGATIVE MACHINE INFINITY. ***" +1280 GOTO 1320 +1290 PRINT "IF VALUE SUPPLIED = NEGATIVE MACHINE INFINITY, AND" +1300 PRINT " EXCEPTION REPORTED, THEN" +1310 PRINT "*** TEST PASSED ***" +1320 PRINT +1330 PRINT " END TEST." +1340 PRINT +2060 PRINT "SECTION 28.3: ZERO DIVIDED BY ZERO." +2070 PRINT +2080 PRINT "THIS SECTION TESTS THE RESULT OF DIVIDING ZERO BY ZERO." +2100 PRINT +2110 PRINT "TO PASS THIS TEST:" +2120 PRINT +2130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +2140 PRINT " DISPLAYED, AND" +2150 PRINT +2160 PRINT " 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +2170 PRINT " OF THE EXPRESSION AND EXECUTION CONTINUES." +2180 PRINT +2190 PRINT " BEGIN TEST." +2200 PRINT +2210 LET B=6 +2220 LET A=0/(B-B) +2230 PRINT "VALUE SUPPLIED = ";A +2240 PRINT +2250 IF A > .99E38 THEN 2290 +2260 PRINT "*** TEST FAILED: VALUE SUPPLIED LESS THAN MINIMUM" +2270 PRINT " POSITIVE MACHINE INFINITY. ***" +2280 GOTO 2320 +2290 PRINT "IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND" +2300 PRINT " EXCEPTION REPORTED, THEN" +2310 PRINT "*** TEST PASSED ***" +2320 PRINT +2330 PRINT " END TEST." +2340 PRINT +3000 PRINT "END PROGRAM 28" +3010 END diff --git a/NBS2/P028.OUT b/NBS2/P028.OUT new file mode 100644 index 0000000..1ba4994 --- /dev/null +++ b/NBS2/P028.OUT @@ -0,0 +1,77 @@ +PROGRAM FILE 28: EXCEPTION - DIVISION BY ZERO. + ANSI STANDARD 7.5 + +THIS PROGRAM TESTS VARIOUS CASES OF DIVISION BY ZERO. + +SECTION 28.1: POSITIVE NUMBER DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING A POSITIVE +QUANTITY BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 28.2: NEGATIVE NUMBER DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING A NEGATIVE +QUANTITY BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = -1.79769E+308 + +IF VALUE SUPPLIED = NEGATIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 28.3: ZERO DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING ZERO BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 28 diff --git a/NBS2/P028.dif b/NBS2/P028.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P028.run b/NBS2/P028.run new file mode 100644 index 0000000..bdcb227 --- /dev/null +++ b/NBS2/P028.run @@ -0,0 +1,77 @@ +PROGRAM FILE 28: EXCEPTION - DIVISION BY ZERO. + ANSI STANDARD 7.5 + +THIS PROGRAM TESTS VARIOUS CASES OF DIVISION BY ZERO. + +SECTION 28.1: POSITIVE NUMBER DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING A POSITIVE +QUANTITY BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 28.2: NEGATIVE NUMBER DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING A NEGATIVE +QUANTITY BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = -1.79769E+308 + +IF VALUE SUPPLIED = NEGATIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 28.3: ZERO DIVIDED BY ZERO. + +THIS SECTION TESTS THE RESULT OF DIVIDING ZERO BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST. + +*** WARNING: Divide by 0 *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 28 diff --git a/NBS2/P029.80 b/NBS2/P029.80 new file mode 100644 index 0000000..96f8566 --- /dev/null +++ b/NBS2/P029.80 @@ -0,0 +1,422 @@ +PROGRAM FILE 29: EXCEPTION - OVERFLOW OF NUMERIC EXPRESSIONS. + ANSI STANDARD 7.5 + +THIS PROGRAM TESTS VARIOUS CASES OF NUMERIC OVERFLOW. + +SECTION 29.1: POSITIVE OVERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +EXCEEDING POSITIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +ABOUT TO COMPUTE 1.E+36 * 10 +RESULT = 1.E+37 + +---------------------------------------- + +ABOUT TO COMPUTE 1.E+37 * 12.5893 +RESULT = 1.25893E+38 + +---------------------------------------- + +ABOUT TO COMPUTE 1.25893E+38 * 16.2181 +RESULT = 2.04174E+39 + +---------------------------------------- + +ABOUT TO COMPUTE 2.04174E+39 * 21.4289 +RESULT = 4.37522E+40 + +---------------------------------------- + +ABOUT TO COMPUTE 4.37522E+40 * 29.1139 +RESULT = 1.2738E+42 + +---------------------------------------- + +ABOUT TO COMPUTE 1.2738E+42 * 40.7859 +RESULT = 5.19529E+43 + +---------------------------------------- + +ABOUT TO COMPUTE 5.19529E+43 * 59.0964 +RESULT = 3.07023E+45 + +---------------------------------------- + +ABOUT TO COMPUTE 3.07023E+45 * 88.8622 +RESULT = 2.72827E+47 + +---------------------------------------- + +ABOUT TO COMPUTE 2.72827E+47 * 139.184 +RESULT = 3.79732E+49 + +---------------------------------------- + +ABOUT TO COMPUTE 3.79732E+49 * 228.007 +RESULT = 8.65814E+51 + +---------------------------------------- + +ABOUT TO COMPUTE 8.65814E+51 * 392.412 +RESULT = 3.39756E+54 + +---------------------------------------- + +ABOUT TO COMPUTE 3.39756E+54 * 713.045 +RESULT = 2.42261E+57 + +---------------------------------------- + +ABOUT TO COMPUTE 2.42261E+57 * 1375.4 +RESULT = 3.33205E+60 + +---------------------------------------- + +ABOUT TO COMPUTE 3.33205E+60 * 2833.16 +RESULT = 9.44025E+63 + +---------------------------------------- + +ABOUT TO COMPUTE 9.44025E+63 * 6273.33 +RESULT = 5.92218E+67 + +---------------------------------------- + +ABOUT TO COMPUTE 5.92218E+67 * 15040. +RESULT = 8.90697E+71 + +---------------------------------------- + +ABOUT TO COMPUTE 8.90697E+71 * 39352.6 +RESULT = 3.50512E+76 + +---------------------------------------- + +ABOUT TO COMPUTE 3.50512E+76 * 113363. +RESULT = 3.9735E+81 + +---------------------------------------- + +ABOUT TO COMPUTE 3.9735E+81 * 363009. +RESULT = 1.44242E+87 + +---------------------------------------- + +ABOUT TO COMPUTE 1.44242E+87 * 1.3059E+6 +RESULT = 1.88365E+93 + +---------------------------------------- + +ABOUT TO COMPUTE 1.88365E+93 * 5.33949E+6 +RESULT = 1.00577E+100 + +---------------------------------------- + +ABOUT TO COMPUTE 1.00577E+100 * 2.51333E+7 +RESULT = 2.52784E+107 + +---------------------------------------- + +ABOUT TO COMPUTE 2.52784E+107 * 1.38126E+8 +RESULT = 3.4916E+115 + +---------------------------------------- + +ABOUT TO COMPUTE 3.4916E+115 * 9.00124E+8 +RESULT = 3.14287E+124 + +---------------------------------------- + +ABOUT TO COMPUTE 3.14287E+124 * 7.0751E+9 +RESULT = 2.22361E+134 + +---------------------------------------- + +ABOUT TO COMPUTE 2.22361E+134 * 6.83449E+10 +RESULT = 1.51973E+145 + +---------------------------------------- + +ABOUT TO COMPUTE 1.51973E+145 * 8.28279E+11 +RESULT = 1.25876E+157 + +---------------------------------------- + +ABOUT TO COMPUTE 1.25876E+157 * 1.28823E+13 +RESULT = 1.62157E+170 + +---------------------------------------- + +ABOUT TO COMPUTE 1.62157E+170 * 2.63629E+14 +RESULT = 4.27494E+184 + +---------------------------------------- + +ABOUT TO COMPUTE 4.27494E+184 * 7.29614E+15 +RESULT = 3.11905E+200 + +---------------------------------------- + +ABOUT TO COMPUTE 3.11905E+200 * 2.81451E+17 +RESULT = 8.77859E+217 + +---------------------------------------- + +ABOUT TO COMPUTE 8.77859E+217 * 1.56438E+19 +RESULT = 1.37331E+237 + +---------------------------------------- + +ABOUT TO COMPUTE 1.37331E+237 * 1.2995E+21 +RESULT = 1.78461E+258 + +---------------------------------------- + +ABOUT TO COMPUTE 1.78461E+258 * 1.6794E+23 +RESULT = 2.99708E+281 + +---------------------------------------- + +ABOUT TO COMPUTE 2.99708E+281 * 3.52915E+25 +RESULT = 1.05771E+307 + +---------------------------------------- + +ABOUT TO COMPUTE 1.05771E+307 * 1.26601E+28 +*** Arithmetic Overflow *** +RESULT = 1.79769E+308 + +---------------------------------------- + +ABOUT TO COMPUTE 1.79769E+308 * 8.17863E+30 +*** Arithmetic Overflow *** +RESULT = 1.79769E+308 + +---------------------------------------- + +LAST TWO MULTIPLICATIONS SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND POSITIVE INFINITY SUPPLIED; IF SO, +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST + +SECTION 29.2: NEGATIVE OVERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +EXCEEDING NEGATIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +ABOUT TO COMPUTE -1.E+36 * 10 +RESULT = -1.E+37 + +---------------------------------------- + +ABOUT TO COMPUTE -1.E+37 * 12.5893 +RESULT = -1.25893E+38 + +---------------------------------------- + +ABOUT TO COMPUTE -1.25893E+38 * 16.2181 +RESULT = -2.04174E+39 + +---------------------------------------- + +ABOUT TO COMPUTE -2.04174E+39 * 21.4289 +RESULT = -4.37522E+40 + +---------------------------------------- + +ABOUT TO COMPUTE -4.37522E+40 * 29.1139 +RESULT = -1.2738E+42 + +---------------------------------------- + +ABOUT TO COMPUTE -1.2738E+42 * 40.7859 +RESULT = -5.19529E+43 + +---------------------------------------- + +ABOUT TO COMPUTE -5.19529E+43 * 59.0964 +RESULT = -3.07023E+45 + +---------------------------------------- + +ABOUT TO COMPUTE -3.07023E+45 * 88.8622 +RESULT = -2.72827E+47 + +---------------------------------------- + +ABOUT TO COMPUTE -2.72827E+47 * 139.184 +RESULT = -3.79732E+49 + +---------------------------------------- + +ABOUT TO COMPUTE -3.79732E+49 * 228.007 +RESULT = -8.65814E+51 + +---------------------------------------- + +ABOUT TO COMPUTE -8.65814E+51 * 392.412 +RESULT = -3.39756E+54 + +---------------------------------------- + +ABOUT TO COMPUTE -3.39756E+54 * 713.045 +RESULT = -2.42261E+57 + +---------------------------------------- + +ABOUT TO COMPUTE -2.42261E+57 * 1375.4 +RESULT = -3.33205E+60 + +---------------------------------------- + +ABOUT TO COMPUTE -3.33205E+60 * 2833.16 +RESULT = -9.44025E+63 + +---------------------------------------- + +ABOUT TO COMPUTE -9.44025E+63 * 6273.33 +RESULT = -5.92218E+67 + +---------------------------------------- + +ABOUT TO COMPUTE -5.92218E+67 * 15040. +RESULT = -8.90697E+71 + +---------------------------------------- + +ABOUT TO COMPUTE -8.90697E+71 * 39352.6 +RESULT = -3.50512E+76 + +---------------------------------------- + +ABOUT TO COMPUTE -3.50512E+76 * 113363. +RESULT = -3.9735E+81 + +---------------------------------------- + +ABOUT TO COMPUTE -3.9735E+81 * 363009. +RESULT = -1.44242E+87 + +---------------------------------------- + +ABOUT TO COMPUTE -1.44242E+87 * 1.3059E+6 +RESULT = -1.88365E+93 + +---------------------------------------- + +ABOUT TO COMPUTE -1.88365E+93 * 5.33949E+6 +RESULT = -1.00577E+100 + +---------------------------------------- + +ABOUT TO COMPUTE -1.00577E+100 * 2.51333E+7 +RESULT = -2.52784E+107 + +---------------------------------------- + +ABOUT TO COMPUTE -2.52784E+107 * 1.38126E+8 +RESULT = -3.4916E+115 + +---------------------------------------- + +ABOUT TO COMPUTE -3.4916E+115 * 9.00124E+8 +RESULT = -3.14287E+124 + +---------------------------------------- + +ABOUT TO COMPUTE -3.14287E+124 * 7.0751E+9 +RESULT = -2.22361E+134 + +---------------------------------------- + +ABOUT TO COMPUTE -2.22361E+134 * 6.83449E+10 +RESULT = -1.51973E+145 + +---------------------------------------- + +ABOUT TO COMPUTE -1.51973E+145 * 8.28279E+11 +RESULT = -1.25876E+157 + +---------------------------------------- + +ABOUT TO COMPUTE -1.25876E+157 * 1.28823E+13 +RESULT = -1.62157E+170 + +---------------------------------------- + +ABOUT TO COMPUTE -1.62157E+170 * 2.63629E+14 +RESULT = -4.27494E+184 + +---------------------------------------- + +ABOUT TO COMPUTE -4.27494E+184 * 7.29614E+15 +RESULT = -3.11905E+200 + +---------------------------------------- + +ABOUT TO COMPUTE -3.11905E+200 * 2.81451E+17 +RESULT = -8.77859E+217 + +---------------------------------------- + +ABOUT TO COMPUTE -8.77859E+217 * 1.56438E+19 +RESULT = -1.37331E+237 + +---------------------------------------- + +ABOUT TO COMPUTE -1.37331E+237 * 1.2995E+21 +RESULT = -1.78461E+258 + +---------------------------------------- + +ABOUT TO COMPUTE -1.78461E+258 * 1.6794E+23 +RESULT = -2.99708E+281 + +---------------------------------------- + +ABOUT TO COMPUTE -2.99708E+281 * 3.52915E+25 +RESULT = -1.05771E+307 + +---------------------------------------- + +ABOUT TO COMPUTE -1.05771E+307 * 1.26601E+28 +*** Arithmetic Overflow *** +RESULT = -1.79769E+308 + +---------------------------------------- + +ABOUT TO COMPUTE -1.79769E+308 * 8.17863E+30 +*** Arithmetic Overflow *** +RESULT = -1.79769E+308 + +---------------------------------------- + +LAST TWO MULTIPLICATIONS SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND NEGATIVE INFINITY SUPPLIED; IF SO, +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +END PROGRAM 29 diff --git a/NBS2/P029.BAS b/NBS2/P029.BAS new file mode 100644 index 0000000..4356d5e --- /dev/null +++ b/NBS2/P029.BAS @@ -0,0 +1,89 @@ +10 PRINT "PROGRAM FILE 29: EXCEPTION - OVERFLOW OF NUMERIC EXPRESSIONS." +20 PRINT " ANSI STANDARD 7.5" +30 PRINT +40 PRINT "THIS PROGRAM TESTS VARIOUS CASES OF NUMERIC OVERFLOW." +50 PRINT +60 PRINT "SECTION 29.1: POSITIVE OVERFLOW" +70 PRINT +80 PRINT "THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION" +90 PRINT "EXCEEDING POSITIVE MACHINE INFINITY." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +170 PRINT " OF THE EXPRESSION AND EXECUTION CONTINUES." +180 PRINT +190 PRINT " BEGIN TEST" +200 PRINT +210 LET M=10 +220 LET F=1 +230 LET A=1E36 +240 LET B=1 +250 PRINT "ABOUT TO COMPUTE ";A;" * ";M +260 LET A=A*M +270 PRINT "RESULT = ";A +280 PRINT +290 PRINT "----------------------------------------" +300 PRINT +310 IF B>=A THEN 360 +320 LET B=A +330 LET F=F*1.1 +340 LET M=10^F +350 GOTO 250 +360 REM CONVERGE +370 IF A>.99E38 THEN 410 +380 PRINT "*** TEST FAILED: VALUE SUPPLIED LESS THAN MINIMUM" +390 PRINT " POSITIVE MACHINE INFINITY. ***" +400 GOTO 440 +410 PRINT "LAST TWO MULTIPLICATIONS SHOULD HAVE BEEN REPORTED" +420 PRINT "AS OVERFLOW, AND POSITIVE INFINITY SUPPLIED; IF SO," +430 PRINT "*** TEST PASSED *** OTHERWISE *** TEST FAILED ***" +440 PRINT +450 PRINT " END TEST" +460 PRINT +470 PRINT "SECTION 29.2: NEGATIVE OVERFLOW" +480 PRINT +490 PRINT "THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION" +500 PRINT "EXCEEDING NEGATIVE MACHINE INFINITY." +510 PRINT +520 PRINT "TO PASS THIS TEST:" +530 PRINT +540 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +550 PRINT " DISPLAYED, AND" +560 PRINT +570 PRINT " 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +580 PRINT " OF THE EXPRESSION AND EXECUTION CONTINUES." +590 PRINT +600 PRINT " BEGIN TEST" +610 PRINT +620 LET M=10 +630 LET F=1 +640 LET A=-1E36 +650 LET B=1 +660 PRINT "ABOUT TO COMPUTE ";A;" * ";M +670 LET A=A*M +680 PRINT "RESULT = ";A +690 PRINT +700 PRINT "----------------------------------------" +710 PRINT +720 IF B<=A THEN 770 +730 LET B=A +740 LET F=F*1.1 +750 LET M=10^F +760 GOTO 660 +770 REM CONVERGE +780 IF A<-.99E38 THEN 820 +790 PRINT "*** TEST FAILED: VALUE SUPPLIED GREATER THAN MINIMUM" +800 PRINT " NEGATIVE MACHINE INFINITY. ***" +810 GOTO 850 +820 PRINT "LAST TWO MULTIPLICATIONS SHOULD HAVE BEEN REPORTED" +830 PRINT "AS OVERFLOW, AND NEGATIVE INFINITY SUPPLIED; IF SO," +840 PRINT "*** TEST PASSES *** OTHERWISE *** TEST FAILS *** " +850 PRINT +860 PRINT " END TEST" +870 PRINT +880 PRINT "END PROGRAM 29" +890 END diff --git a/NBS2/P029.OUT b/NBS2/P029.OUT new file mode 100644 index 0000000..eb962a3 --- /dev/null +++ b/NBS2/P029.OUT @@ -0,0 +1,422 @@ +PROGRAM FILE 29: EXCEPTION - OVERFLOW OF NUMERIC EXPRESSIONS. + ANSI STANDARD 7.5 + +THIS PROGRAM TESTS VARIOUS CASES OF NUMERIC OVERFLOW. + +SECTION 29.1: POSITIVE OVERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +EXCEEDING POSITIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +ABOUT TO COMPUTE 1.E+36 * 10 +RESULT = 1.E+37 + +---------------------------------------- + +ABOUT TO COMPUTE 1.E+37 * 12.5893 +RESULT = 1.25893E+38 + +---------------------------------------- + +ABOUT TO COMPUTE 1.25893E+38 * 16.2181 +RESULT = 2.04174E+39 + +---------------------------------------- + +ABOUT TO COMPUTE 2.04174E+39 * 21.4289 +RESULT = 4.37522E+40 + +---------------------------------------- + +ABOUT TO COMPUTE 4.37522E+40 * 29.1139 +RESULT = 1.2738E+42 + +---------------------------------------- + +ABOUT TO COMPUTE 1.2738E+42 * 40.7859 +RESULT = 5.19529E+43 + +---------------------------------------- + +ABOUT TO COMPUTE 5.19529E+43 * 59.0964 +RESULT = 3.07023E+45 + +---------------------------------------- + +ABOUT TO COMPUTE 3.07023E+45 * 88.8622 +RESULT = 2.72827E+47 + +---------------------------------------- + +ABOUT TO COMPUTE 2.72827E+47 * 139.184 +RESULT = 3.79732E+49 + +---------------------------------------- + +ABOUT TO COMPUTE 3.79732E+49 * 228.007 +RESULT = 8.65814E+51 + +---------------------------------------- + +ABOUT TO COMPUTE 8.65814E+51 * 392.412 +RESULT = 3.39756E+54 + +---------------------------------------- + +ABOUT TO COMPUTE 3.39756E+54 * 713.045 +RESULT = 2.42261E+57 + +---------------------------------------- + +ABOUT TO COMPUTE 2.42261E+57 * 1375.4 +RESULT = 3.33205E+60 + +---------------------------------------- + +ABOUT TO COMPUTE 3.33205E+60 * 2833.16 +RESULT = 9.44025E+63 + +---------------------------------------- + +ABOUT TO COMPUTE 9.44025E+63 * 6273.33 +RESULT = 5.92218E+67 + +---------------------------------------- + +ABOUT TO COMPUTE 5.92218E+67 * 15040. +RESULT = 8.90697E+71 + +---------------------------------------- + +ABOUT TO COMPUTE 8.90697E+71 * 39352.6 +RESULT = 3.50512E+76 + +---------------------------------------- + +ABOUT TO COMPUTE 3.50512E+76 * 113363. +RESULT = 3.9735E+81 + +---------------------------------------- + +ABOUT TO COMPUTE 3.9735E+81 * 363009. +RESULT = 1.44242E+87 + +---------------------------------------- + +ABOUT TO COMPUTE 1.44242E+87 * 1.3059E+6 +RESULT = 1.88365E+93 + +---------------------------------------- + +ABOUT TO COMPUTE 1.88365E+93 * 5.33949E+6 +RESULT = 1.00577E+100 + +---------------------------------------- + +ABOUT TO COMPUTE 1.00577E+100 * 2.51333E+7 +RESULT = 2.52784E+107 + +---------------------------------------- + +ABOUT TO COMPUTE 2.52784E+107 * 1.38126E+8 +RESULT = 3.4916E+115 + +---------------------------------------- + +ABOUT TO COMPUTE 3.4916E+115 * 9.00124E+8 +RESULT = 3.14287E+124 + +---------------------------------------- + +ABOUT TO COMPUTE 3.14287E+124 * 7.0751E+9 +RESULT = 2.22361E+134 + +---------------------------------------- + +ABOUT TO COMPUTE 2.22361E+134 * 6.83449E+10 +RESULT = 1.51973E+145 + +---------------------------------------- + +ABOUT TO COMPUTE 1.51973E+145 * 8.28279E+11 +RESULT = 1.25876E+157 + +---------------------------------------- + +ABOUT TO COMPUTE 1.25876E+157 * 1.28823E+13 +RESULT = 1.62157E+170 + +---------------------------------------- + +ABOUT TO COMPUTE 1.62157E+170 * 2.63629E+14 +RESULT = 4.27494E+184 + +---------------------------------------- + +ABOUT TO COMPUTE 4.27494E+184 * 7.29614E+15 +RESULT = 3.11905E+200 + +---------------------------------------- + +ABOUT TO COMPUTE 3.11905E+200 * 2.81451E+17 +RESULT = 8.77859E+217 + +---------------------------------------- + +ABOUT TO COMPUTE 8.77859E+217 * 1.56438E+19 +RESULT = 1.37331E+237 + +---------------------------------------- + +ABOUT TO COMPUTE 1.37331E+237 * 1.2995E+21 +RESULT = 1.78461E+258 + +---------------------------------------- + +ABOUT TO COMPUTE 1.78461E+258 * 1.6794E+23 +RESULT = 2.99708E+281 + +---------------------------------------- + +ABOUT TO COMPUTE 2.99708E+281 * 3.52915E+25 +RESULT = 1.05771E+307 + +---------------------------------------- + +ABOUT TO COMPUTE 1.05771E+307 * 1.26601E+28 +*** Arithmetic Overflow *** +RESULT = 1.79769E+308 + +---------------------------------------- + +ABOUT TO COMPUTE 1.79769E+308 * 8.17863E+30 +*** Arithmetic Overflow *** +RESULT = 1.79769E+308 + +---------------------------------------- + +LAST TWO MULTIPLICATIONS SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND POSITIVE INFINITY SUPPLIED; IF SO, +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST + +SECTION 29.2: NEGATIVE OVERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +EXCEEDING NEGATIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +ABOUT TO COMPUTE -1.E+36 * 10 +RESULT = -1.E+37 + +---------------------------------------- + +ABOUT TO COMPUTE -1.E+37 * 12.5893 +RESULT = -1.25893E+38 + +---------------------------------------- + +ABOUT TO COMPUTE -1.25893E+38 * 16.2181 +RESULT = -2.04174E+39 + +---------------------------------------- + +ABOUT TO COMPUTE -2.04174E+39 * 21.4289 +RESULT = -4.37522E+40 + +---------------------------------------- + +ABOUT TO COMPUTE -4.37522E+40 * 29.1139 +RESULT = -1.2738E+42 + +---------------------------------------- + +ABOUT TO COMPUTE -1.2738E+42 * 40.7859 +RESULT = -5.19529E+43 + +---------------------------------------- + +ABOUT TO COMPUTE -5.19529E+43 * 59.0964 +RESULT = -3.07023E+45 + +---------------------------------------- + +ABOUT TO COMPUTE -3.07023E+45 * 88.8622 +RESULT = -2.72827E+47 + +---------------------------------------- + +ABOUT TO COMPUTE -2.72827E+47 * 139.184 +RESULT = -3.79732E+49 + +---------------------------------------- + +ABOUT TO COMPUTE -3.79732E+49 * 228.007 +RESULT = -8.65814E+51 + +---------------------------------------- + +ABOUT TO COMPUTE -8.65814E+51 * 392.412 +RESULT = -3.39756E+54 + +---------------------------------------- + +ABOUT TO COMPUTE -3.39756E+54 * 713.045 +RESULT = -2.42261E+57 + +---------------------------------------- + +ABOUT TO COMPUTE -2.42261E+57 * 1375.4 +RESULT = -3.33205E+60 + +---------------------------------------- + +ABOUT TO COMPUTE -3.33205E+60 * 2833.16 +RESULT = -9.44025E+63 + +---------------------------------------- + +ABOUT TO COMPUTE -9.44025E+63 * 6273.33 +RESULT = -5.92218E+67 + +---------------------------------------- + +ABOUT TO COMPUTE -5.92218E+67 * 15040. +RESULT = -8.90697E+71 + +---------------------------------------- + +ABOUT TO COMPUTE -8.90697E+71 * 39352.6 +RESULT = -3.50512E+76 + +---------------------------------------- + +ABOUT TO COMPUTE -3.50512E+76 * 113363. +RESULT = -3.9735E+81 + +---------------------------------------- + +ABOUT TO COMPUTE -3.9735E+81 * 363009. +RESULT = -1.44242E+87 + +---------------------------------------- + +ABOUT TO COMPUTE -1.44242E+87 * 1.3059E+6 +RESULT = -1.88365E+93 + +---------------------------------------- + +ABOUT TO COMPUTE -1.88365E+93 * 5.33949E+6 +RESULT = -1.00577E+100 + +---------------------------------------- + +ABOUT TO COMPUTE -1.00577E+100 * 2.51333E+7 +RESULT = -2.52784E+107 + +---------------------------------------- + +ABOUT TO COMPUTE -2.52784E+107 * 1.38126E+8 +RESULT = -3.4916E+115 + +---------------------------------------- + +ABOUT TO COMPUTE -3.4916E+115 * 9.00124E+8 +RESULT = -3.14287E+124 + +---------------------------------------- + +ABOUT TO COMPUTE -3.14287E+124 * 7.0751E+9 +RESULT = -2.22361E+134 + +---------------------------------------- + +ABOUT TO COMPUTE -2.22361E+134 * 6.83449E+10 +RESULT = -1.51973E+145 + +---------------------------------------- + +ABOUT TO COMPUTE -1.51973E+145 * 8.28279E+11 +RESULT = -1.25876E+157 + +---------------------------------------- + +ABOUT TO COMPUTE -1.25876E+157 * 1.28823E+13 +RESULT = -1.62157E+170 + +---------------------------------------- + +ABOUT TO COMPUTE -1.62157E+170 * 2.63629E+14 +RESULT = -4.27494E+184 + +---------------------------------------- + +ABOUT TO COMPUTE -4.27494E+184 * 7.29614E+15 +RESULT = -3.11905E+200 + +---------------------------------------- + +ABOUT TO COMPUTE -3.11905E+200 * 2.81451E+17 +RESULT = -8.77859E+217 + +---------------------------------------- + +ABOUT TO COMPUTE -8.77859E+217 * 1.56438E+19 +RESULT = -1.37331E+237 + +---------------------------------------- + +ABOUT TO COMPUTE -1.37331E+237 * 1.2995E+21 +RESULT = -1.78461E+258 + +---------------------------------------- + +ABOUT TO COMPUTE -1.78461E+258 * 1.6794E+23 +RESULT = -2.99708E+281 + +---------------------------------------- + +ABOUT TO COMPUTE -2.99708E+281 * 3.52915E+25 +RESULT = -1.05771E+307 + +---------------------------------------- + +ABOUT TO COMPUTE -1.05771E+307 * 1.26601E+28 +*** Arithmetic Overflow *** +RESULT = -1.79769E+308 + +---------------------------------------- + +ABOUT TO COMPUTE -1.79769E+308 * 8.17863E+30 +*** Arithmetic Overflow *** +RESULT = -1.79769E+308 + +---------------------------------------- + +LAST TWO MULTIPLICATIONS SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND NEGATIVE INFINITY SUPPLIED; IF SO, +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +END PROGRAM 29 diff --git a/NBS2/P029.dif b/NBS2/P029.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P029.run b/NBS2/P029.run new file mode 100644 index 0000000..96f8566 --- /dev/null +++ b/NBS2/P029.run @@ -0,0 +1,422 @@ +PROGRAM FILE 29: EXCEPTION - OVERFLOW OF NUMERIC EXPRESSIONS. + ANSI STANDARD 7.5 + +THIS PROGRAM TESTS VARIOUS CASES OF NUMERIC OVERFLOW. + +SECTION 29.1: POSITIVE OVERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +EXCEEDING POSITIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +ABOUT TO COMPUTE 1.E+36 * 10 +RESULT = 1.E+37 + +---------------------------------------- + +ABOUT TO COMPUTE 1.E+37 * 12.5893 +RESULT = 1.25893E+38 + +---------------------------------------- + +ABOUT TO COMPUTE 1.25893E+38 * 16.2181 +RESULT = 2.04174E+39 + +---------------------------------------- + +ABOUT TO COMPUTE 2.04174E+39 * 21.4289 +RESULT = 4.37522E+40 + +---------------------------------------- + +ABOUT TO COMPUTE 4.37522E+40 * 29.1139 +RESULT = 1.2738E+42 + +---------------------------------------- + +ABOUT TO COMPUTE 1.2738E+42 * 40.7859 +RESULT = 5.19529E+43 + +---------------------------------------- + +ABOUT TO COMPUTE 5.19529E+43 * 59.0964 +RESULT = 3.07023E+45 + +---------------------------------------- + +ABOUT TO COMPUTE 3.07023E+45 * 88.8622 +RESULT = 2.72827E+47 + +---------------------------------------- + +ABOUT TO COMPUTE 2.72827E+47 * 139.184 +RESULT = 3.79732E+49 + +---------------------------------------- + +ABOUT TO COMPUTE 3.79732E+49 * 228.007 +RESULT = 8.65814E+51 + +---------------------------------------- + +ABOUT TO COMPUTE 8.65814E+51 * 392.412 +RESULT = 3.39756E+54 + +---------------------------------------- + +ABOUT TO COMPUTE 3.39756E+54 * 713.045 +RESULT = 2.42261E+57 + +---------------------------------------- + +ABOUT TO COMPUTE 2.42261E+57 * 1375.4 +RESULT = 3.33205E+60 + +---------------------------------------- + +ABOUT TO COMPUTE 3.33205E+60 * 2833.16 +RESULT = 9.44025E+63 + +---------------------------------------- + +ABOUT TO COMPUTE 9.44025E+63 * 6273.33 +RESULT = 5.92218E+67 + +---------------------------------------- + +ABOUT TO COMPUTE 5.92218E+67 * 15040. +RESULT = 8.90697E+71 + +---------------------------------------- + +ABOUT TO COMPUTE 8.90697E+71 * 39352.6 +RESULT = 3.50512E+76 + +---------------------------------------- + +ABOUT TO COMPUTE 3.50512E+76 * 113363. +RESULT = 3.9735E+81 + +---------------------------------------- + +ABOUT TO COMPUTE 3.9735E+81 * 363009. +RESULT = 1.44242E+87 + +---------------------------------------- + +ABOUT TO COMPUTE 1.44242E+87 * 1.3059E+6 +RESULT = 1.88365E+93 + +---------------------------------------- + +ABOUT TO COMPUTE 1.88365E+93 * 5.33949E+6 +RESULT = 1.00577E+100 + +---------------------------------------- + +ABOUT TO COMPUTE 1.00577E+100 * 2.51333E+7 +RESULT = 2.52784E+107 + +---------------------------------------- + +ABOUT TO COMPUTE 2.52784E+107 * 1.38126E+8 +RESULT = 3.4916E+115 + +---------------------------------------- + +ABOUT TO COMPUTE 3.4916E+115 * 9.00124E+8 +RESULT = 3.14287E+124 + +---------------------------------------- + +ABOUT TO COMPUTE 3.14287E+124 * 7.0751E+9 +RESULT = 2.22361E+134 + +---------------------------------------- + +ABOUT TO COMPUTE 2.22361E+134 * 6.83449E+10 +RESULT = 1.51973E+145 + +---------------------------------------- + +ABOUT TO COMPUTE 1.51973E+145 * 8.28279E+11 +RESULT = 1.25876E+157 + +---------------------------------------- + +ABOUT TO COMPUTE 1.25876E+157 * 1.28823E+13 +RESULT = 1.62157E+170 + +---------------------------------------- + +ABOUT TO COMPUTE 1.62157E+170 * 2.63629E+14 +RESULT = 4.27494E+184 + +---------------------------------------- + +ABOUT TO COMPUTE 4.27494E+184 * 7.29614E+15 +RESULT = 3.11905E+200 + +---------------------------------------- + +ABOUT TO COMPUTE 3.11905E+200 * 2.81451E+17 +RESULT = 8.77859E+217 + +---------------------------------------- + +ABOUT TO COMPUTE 8.77859E+217 * 1.56438E+19 +RESULT = 1.37331E+237 + +---------------------------------------- + +ABOUT TO COMPUTE 1.37331E+237 * 1.2995E+21 +RESULT = 1.78461E+258 + +---------------------------------------- + +ABOUT TO COMPUTE 1.78461E+258 * 1.6794E+23 +RESULT = 2.99708E+281 + +---------------------------------------- + +ABOUT TO COMPUTE 2.99708E+281 * 3.52915E+25 +RESULT = 1.05771E+307 + +---------------------------------------- + +ABOUT TO COMPUTE 1.05771E+307 * 1.26601E+28 +*** Arithmetic Overflow *** +RESULT = 1.79769E+308 + +---------------------------------------- + +ABOUT TO COMPUTE 1.79769E+308 * 8.17863E+30 +*** Arithmetic Overflow *** +RESULT = 1.79769E+308 + +---------------------------------------- + +LAST TWO MULTIPLICATIONS SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND POSITIVE INFINITY SUPPLIED; IF SO, +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST + +SECTION 29.2: NEGATIVE OVERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +EXCEEDING NEGATIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +ABOUT TO COMPUTE -1.E+36 * 10 +RESULT = -1.E+37 + +---------------------------------------- + +ABOUT TO COMPUTE -1.E+37 * 12.5893 +RESULT = -1.25893E+38 + +---------------------------------------- + +ABOUT TO COMPUTE -1.25893E+38 * 16.2181 +RESULT = -2.04174E+39 + +---------------------------------------- + +ABOUT TO COMPUTE -2.04174E+39 * 21.4289 +RESULT = -4.37522E+40 + +---------------------------------------- + +ABOUT TO COMPUTE -4.37522E+40 * 29.1139 +RESULT = -1.2738E+42 + +---------------------------------------- + +ABOUT TO COMPUTE -1.2738E+42 * 40.7859 +RESULT = -5.19529E+43 + +---------------------------------------- + +ABOUT TO COMPUTE -5.19529E+43 * 59.0964 +RESULT = -3.07023E+45 + +---------------------------------------- + +ABOUT TO COMPUTE -3.07023E+45 * 88.8622 +RESULT = -2.72827E+47 + +---------------------------------------- + +ABOUT TO COMPUTE -2.72827E+47 * 139.184 +RESULT = -3.79732E+49 + +---------------------------------------- + +ABOUT TO COMPUTE -3.79732E+49 * 228.007 +RESULT = -8.65814E+51 + +---------------------------------------- + +ABOUT TO COMPUTE -8.65814E+51 * 392.412 +RESULT = -3.39756E+54 + +---------------------------------------- + +ABOUT TO COMPUTE -3.39756E+54 * 713.045 +RESULT = -2.42261E+57 + +---------------------------------------- + +ABOUT TO COMPUTE -2.42261E+57 * 1375.4 +RESULT = -3.33205E+60 + +---------------------------------------- + +ABOUT TO COMPUTE -3.33205E+60 * 2833.16 +RESULT = -9.44025E+63 + +---------------------------------------- + +ABOUT TO COMPUTE -9.44025E+63 * 6273.33 +RESULT = -5.92218E+67 + +---------------------------------------- + +ABOUT TO COMPUTE -5.92218E+67 * 15040. +RESULT = -8.90697E+71 + +---------------------------------------- + +ABOUT TO COMPUTE -8.90697E+71 * 39352.6 +RESULT = -3.50512E+76 + +---------------------------------------- + +ABOUT TO COMPUTE -3.50512E+76 * 113363. +RESULT = -3.9735E+81 + +---------------------------------------- + +ABOUT TO COMPUTE -3.9735E+81 * 363009. +RESULT = -1.44242E+87 + +---------------------------------------- + +ABOUT TO COMPUTE -1.44242E+87 * 1.3059E+6 +RESULT = -1.88365E+93 + +---------------------------------------- + +ABOUT TO COMPUTE -1.88365E+93 * 5.33949E+6 +RESULT = -1.00577E+100 + +---------------------------------------- + +ABOUT TO COMPUTE -1.00577E+100 * 2.51333E+7 +RESULT = -2.52784E+107 + +---------------------------------------- + +ABOUT TO COMPUTE -2.52784E+107 * 1.38126E+8 +RESULT = -3.4916E+115 + +---------------------------------------- + +ABOUT TO COMPUTE -3.4916E+115 * 9.00124E+8 +RESULT = -3.14287E+124 + +---------------------------------------- + +ABOUT TO COMPUTE -3.14287E+124 * 7.0751E+9 +RESULT = -2.22361E+134 + +---------------------------------------- + +ABOUT TO COMPUTE -2.22361E+134 * 6.83449E+10 +RESULT = -1.51973E+145 + +---------------------------------------- + +ABOUT TO COMPUTE -1.51973E+145 * 8.28279E+11 +RESULT = -1.25876E+157 + +---------------------------------------- + +ABOUT TO COMPUTE -1.25876E+157 * 1.28823E+13 +RESULT = -1.62157E+170 + +---------------------------------------- + +ABOUT TO COMPUTE -1.62157E+170 * 2.63629E+14 +RESULT = -4.27494E+184 + +---------------------------------------- + +ABOUT TO COMPUTE -4.27494E+184 * 7.29614E+15 +RESULT = -3.11905E+200 + +---------------------------------------- + +ABOUT TO COMPUTE -3.11905E+200 * 2.81451E+17 +RESULT = -8.77859E+217 + +---------------------------------------- + +ABOUT TO COMPUTE -8.77859E+217 * 1.56438E+19 +RESULT = -1.37331E+237 + +---------------------------------------- + +ABOUT TO COMPUTE -1.37331E+237 * 1.2995E+21 +RESULT = -1.78461E+258 + +---------------------------------------- + +ABOUT TO COMPUTE -1.78461E+258 * 1.6794E+23 +RESULT = -2.99708E+281 + +---------------------------------------- + +ABOUT TO COMPUTE -2.99708E+281 * 3.52915E+25 +RESULT = -1.05771E+307 + +---------------------------------------- + +ABOUT TO COMPUTE -1.05771E+307 * 1.26601E+28 +*** Arithmetic Overflow *** +RESULT = -1.79769E+308 + +---------------------------------------- + +ABOUT TO COMPUTE -1.79769E+308 * 8.17863E+30 +*** Arithmetic Overflow *** +RESULT = -1.79769E+308 + +---------------------------------------- + +LAST TWO MULTIPLICATIONS SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND NEGATIVE INFINITY SUPPLIED; IF SO, +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +END PROGRAM 29 diff --git a/NBS2/P030.80 b/NBS2/P030.80 new file mode 100644 index 0000000..f5c94d1 --- /dev/null +++ b/NBS2/P030.80 @@ -0,0 +1,52 @@ +PROGRAM FILE 30: EXCEPTION - OVERFLOW OF NUMERIC CONSTANTS. + ANSI STANDARD 5.4, 5.5 + +THIS PROGRAM TESTS VARIOUS CASES OF CONSTANT OVERFLOW. + +SECTION 30.1: POSITIVE CONSTANT OVERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +EXCEEDING POSITIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +RESULT OF ASSIGNING E399999 = 1.79769E+308 +IF (RESULT = 3E99999) OR + (RESULT = POSITIVE INFINITY AND EXCEPTION REPORTED) +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST + +SECTION 30.2: NEGATIVE CONSTANT OVERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +EXCEEDING NEGATIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +RESULT OF ASSIGNING -3E99999 = -1.79769E+308 +IF (RESULT = -3E99999) OR + (RESULT = NEGATIVE INFINITY AND EXCEPTION REPORTED) +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +END PROGRAM 30 diff --git a/NBS2/P030.BAS b/NBS2/P030.BAS new file mode 100644 index 0000000..71b969c --- /dev/null +++ b/NBS2/P030.BAS @@ -0,0 +1,63 @@ +10 PRINT "PROGRAM FILE 30: EXCEPTION - OVERFLOW OF NUMERIC CONSTANTS." +20 PRINT " ANSI STANDARD 5.4, 5.5" +30 PRINT +40 PRINT "THIS PROGRAM TESTS VARIOUS CASES OF CONSTANT OVERFLOW." +50 PRINT +60 PRINT "SECTION 30.1: POSITIVE CONSTANT OVERFLOW" +70 PRINT +80 PRINT "THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION" +90 PRINT "EXCEEDING POSITIVE MACHINE INFINITY." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +170 PRINT " OF THE CONSTANT AND EXECUTION CONTINUES." +180 PRINT +190 PRINT " BEGIN TEST" +200 PRINT +360 LET A=3E99999 +365 PRINT "RESULT OF ASSIGNING E399999 = ";A +370 IF A>.99E38 THEN 410 +380 PRINT "*** TEST FAILED: VALUE SUPPLIED LESS THAN MINIMUM" +390 PRINT " POSITIVE MACHINE INFINITY. ***" +400 GOTO 440 +410 REM RESULT > MINIMUM +420 PRINT "IF (RESULT = 3E99999) OR " +425 PRINT " (RESULT = POSITIVE INFINITY AND EXCEPTION REPORTED)" +430 PRINT "*** TEST PASSED *** OTHERWISE *** TEST FAILED ***" +440 PRINT +450 PRINT " END TEST" +460 PRINT +470 PRINT "SECTION 30.2: NEGATIVE CONSTANT OVERFLOW" +480 PRINT +490 PRINT "THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION" +500 PRINT "EXCEEDING NEGATIVE MACHINE INFINITY." +510 PRINT +520 PRINT "TO PASS THIS TEST:" +530 PRINT +540 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +550 PRINT " DISPLAYED, AND" +560 PRINT +570 PRINT " 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +580 PRINT " OF THE CONSTANT AND EXECUTION CONTINUES." +590 PRINT +600 PRINT " BEGIN TEST" +610 PRINT +770 LET A=-3E99999 +775 PRINT "RESULT OF ASSIGNING -3E99999 = ";A +780 IF A<-.99E38 THEN 820 +790 PRINT "*** TEST FAILED: VALUE SUPPLIED GREATER THAN MINIMUM" +800 PRINT " NEGATIVE MACHINE INFINITY. ***" +810 GOTO 850 +820 REM RESULT < MAXIMUM +830 PRINT "IF (RESULT = -3E99999) OR " +835 PRINT " (RESULT = NEGATIVE INFINITY AND EXCEPTION REPORTED)" +840 PRINT "*** TEST PASSES *** OTHERWISE *** TEST FAILS *** " +850 PRINT +860 PRINT " END TEST" +870 PRINT +880 PRINT "END PROGRAM 30" +890 END diff --git a/NBS2/P030.OUT b/NBS2/P030.OUT new file mode 100644 index 0000000..2eb2b01 --- /dev/null +++ b/NBS2/P030.OUT @@ -0,0 +1,52 @@ +PROGRAM FILE 30: EXCEPTION - OVERFLOW OF NUMERIC CONSTANTS. + ANSI STANDARD 5.4, 5.5 + +THIS PROGRAM TESTS VARIOUS CASES OF CONSTANT OVERFLOW. + +SECTION 30.1: POSITIVE CONSTANT OVERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +EXCEEDING POSITIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +RESULT OF ASSIGNING E399999 = 1.79769E+308 +IF (RESULT = 3E99999) OR + (RESULT = POSITIVE INFINITY AND EXCEPTION REPORTED) +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST + +SECTION 30.2: NEGATIVE CONSTANT OVERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +EXCEEDING NEGATIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +RESULT OF ASSIGNING -3E99999 = -1.79769E+308 +IF (RESULT = -3E99999) OR + (RESULT = NEGATIVE INFINITY AND EXCEPTION REPORTED) +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +END PROGRAM 30 diff --git a/NBS2/P030.dif b/NBS2/P030.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P030.run b/NBS2/P030.run new file mode 100644 index 0000000..f5c94d1 --- /dev/null +++ b/NBS2/P030.run @@ -0,0 +1,52 @@ +PROGRAM FILE 30: EXCEPTION - OVERFLOW OF NUMERIC CONSTANTS. + ANSI STANDARD 5.4, 5.5 + +THIS PROGRAM TESTS VARIOUS CASES OF CONSTANT OVERFLOW. + +SECTION 30.1: POSITIVE CONSTANT OVERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +EXCEEDING POSITIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +RESULT OF ASSIGNING E399999 = 1.79769E+308 +IF (RESULT = 3E99999) OR + (RESULT = POSITIVE INFINITY AND EXCEPTION REPORTED) +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST + +SECTION 30.2: NEGATIVE CONSTANT OVERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +EXCEEDING NEGATIVE MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) NEGATIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +RESULT OF ASSIGNING -3E99999 = -1.79769E+308 +IF (RESULT = -3E99999) OR + (RESULT = NEGATIVE INFINITY AND EXCEPTION REPORTED) +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +END PROGRAM 30 diff --git a/NBS2/P031.80 b/NBS2/P031.80 new file mode 100644 index 0000000..df05a93 --- /dev/null +++ b/NBS2/P031.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 31: EXCEPTION - ZERO RAISED TO A NEGATIVE POWER. + ANSI STANDARD 7.5 + +SECTION 31.1: EXCEPTION - ZERO RAISED TO A NEGATIVE POWER. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST + +END PROGRAM 31 diff --git a/NBS2/P031.BAS b/NBS2/P031.BAS new file mode 100644 index 0000000..d0c63e7 --- /dev/null +++ b/NBS2/P031.BAS @@ -0,0 +1,31 @@ +10 PRINT "PROGRAM FILE 31: EXCEPTION - ZERO RAISED TO A NEGATIVE POWER." +20 PRINT " ANSI STANDARD 7.5" +50 PRINT +60 PRINT "SECTION 31.1: EXCEPTION - ZERO RAISED TO A NEGATIVE POWER." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +170 PRINT " OF THE EXPRESSION AND EXECUTION CONTINUES." +180 PRINT +190 PRINT " BEGIN TEST" +200 PRINT +210 LET B=-6 +220 LET A=0^B +230 PRINT "VALUE SUPPLIED = ";A +240 PRINT +250 IF A > .99E38 THEN 290 +260 PRINT "*** TEST FAILED: VALUE SUPPLIED LESS THAN MINIMUM" +270 PRINT " POSITIVE MACHINE INFINITY. ***" +280 GOTO 320 +290 PRINT "IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND" +300 PRINT " EXCEPTION REPORTED, THEN" +310 PRINT "*** TEST PASSED ***" +320 PRINT +330 PRINT " END TEST" +340 PRINT +350 PRINT "END PROGRAM 31" +360 END diff --git a/NBS2/P031.OUT b/NBS2/P031.OUT new file mode 100644 index 0000000..91b9d90 --- /dev/null +++ b/NBS2/P031.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 31: EXCEPTION - ZERO RAISED TO A NEGATIVE POWER. + ANSI STANDARD 7.5 + +SECTION 31.1: EXCEPTION - ZERO RAISED TO A NEGATIVE POWER. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST + +END PROGRAM 31 diff --git a/NBS2/P031.dif b/NBS2/P031.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P031.run b/NBS2/P031.run new file mode 100644 index 0000000..df05a93 --- /dev/null +++ b/NBS2/P031.run @@ -0,0 +1,25 @@ +PROGRAM FILE 31: EXCEPTION - ZERO RAISED TO A NEGATIVE POWER. + ANSI STANDARD 7.5 + +SECTION 31.1: EXCEPTION - ZERO RAISED TO A NEGATIVE POWER. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION AND EXECUTION CONTINUES. + + BEGIN TEST + +*** Arithmetic Overflow *** +VALUE SUPPLIED = 1.79769E+308 + +IF VALUE SUPPLIED = POSITIVE MACHINE INFINITY, AND + EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST + +END PROGRAM 31 diff --git a/NBS2/P032.80 b/NBS2/P032.80 new file mode 100644 index 0000000..ca10d88 --- /dev/null +++ b/NBS2/P032.80 @@ -0,0 +1,20 @@ +PROGRAM FILE 32: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER. + ANSI STANDARD 7.5 + +SECTION 32.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO ATTEMPT EVALUATION OF (-2) ^ 6.00001: + + +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P032.BAS b/NBS2/P032.BAS new file mode 100644 index 0000000..78c7981 --- /dev/null +++ b/NBS2/P032.BAS @@ -0,0 +1,30 @@ +10 PRINT "PROGRAM FILE 32: EXCEPTION - NEGATIVE QUANTITY RAISED TO A" +20 PRINT " NON-INTEGRAL POWER." +30 PRINT " ANSI STANDARD 7.5" +40 PRINT +50 PRINT "SECTION 32.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO A" +60 PRINT " NON-INTEGRAL POWER." +70 PRINT +80 PRINT "TO PASS THIS TEST:" +90 PRINT +100 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +110 PRINT " DISPLAYED, AND" +120 PRINT +130 PRINT " 2) EXECUTION MUST TERMINATE" +140 PRINT +150 PRINT " BEGIN TEST" +160 PRINT +170 PRINT "ABOUT TO ATTEMPT EVALUATION OF (-2) ^ 6.00001:" +200 PRINT +210 LET B=6.00001 +220 LET A=-2 +230 LET C=A^B +240 PRINT +250 PRINT "VALUE SUPPLIED = ";C +260 PRINT +270 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +280 PRINT +290 PRINT " END TEST" +300 PRINT +310 PRINT "END PROGRAM 32" +320 END diff --git a/NBS2/P032.OUT b/NBS2/P032.OUT new file mode 100644 index 0000000..3284fa7 --- /dev/null +++ b/NBS2/P032.OUT @@ -0,0 +1,20 @@ +PROGRAM FILE 32: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER. + ANSI STANDARD 7.5 + +SECTION 32.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO ATTEMPT EVALUATION OF (-2) ^ 6.00001: + + +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P032.dif b/NBS2/P032.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P032.run b/NBS2/P032.run new file mode 100644 index 0000000..ca10d88 --- /dev/null +++ b/NBS2/P032.run @@ -0,0 +1,20 @@ +PROGRAM FILE 32: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER. + ANSI STANDARD 7.5 + +SECTION 32.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO ATTEMPT EVALUATION OF (-2) ^ 6.00001: + + +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P033.80 b/NBS2/P033.80 new file mode 100644 index 0000000..7fa7e7a --- /dev/null +++ b/NBS2/P033.80 @@ -0,0 +1,405 @@ +PROGRAM FILE 33: EXCEPTION - UNDERFLOW OF + NUMERIC EXPRESSIONS. + ANSI STANDARD 7.4 + +THIS PROGRAM TESTS VARIOUS CASES OF NUMERIC UNDERFLOW. + +SECTION 33.1: POSITIVE UNDERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +LESS THAN POSITIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE 8.E-37 / 10 +RESULT = 8.E-38 + +---------------------------------------- + +ABOUT TO COMPUTE 8.E-38 / 12.5893 +RESULT = 6.35463E-39 + +---------------------------------------- + +ABOUT TO COMPUTE 6.35463E-39 / 16.2181 +RESULT = 3.91823E-40 + +---------------------------------------- + +ABOUT TO COMPUTE 3.91823E-40 / 21.4289 +RESULT = 1.82848E-41 + +---------------------------------------- + +ABOUT TO COMPUTE 1.82848E-41 / 29.1139 +RESULT = 6.28044E-43 + +---------------------------------------- + +ABOUT TO COMPUTE 6.28044E-43 / 40.7859 +RESULT = 1.53986E-44 + +---------------------------------------- + +ABOUT TO COMPUTE 1.53986E-44 / 59.0964 +RESULT = 2.60567E-46 + +---------------------------------------- + +ABOUT TO COMPUTE 2.60567E-46 / 88.8622 +RESULT = 2.93226E-48 + +---------------------------------------- + +ABOUT TO COMPUTE 2.93226E-48 / 139.184 +RESULT = 2.10675E-50 + +---------------------------------------- + +ABOUT TO COMPUTE 2.10675E-50 / 228.007 +RESULT = 9.23986E-53 + +---------------------------------------- + +ABOUT TO COMPUTE 9.23986E-53 / 392.412 +RESULT = 2.35463E-55 + +---------------------------------------- + +ABOUT TO COMPUTE 2.35463E-55 / 713.045 +RESULT = 3.30222E-58 + +---------------------------------------- + +ABOUT TO COMPUTE 3.30222E-58 / 1375.4 +RESULT = 2.40092E-61 + +---------------------------------------- + +ABOUT TO COMPUTE 2.40092E-61 / 2833.16 +RESULT = 8.47435E-65 + +---------------------------------------- + +ABOUT TO COMPUTE 8.47435E-65 / 6273.33 +RESULT = 1.35085E-68 + +---------------------------------------- + +ABOUT TO COMPUTE 1.35085E-68 / 15040. +RESULT = 8.98173E-73 + +---------------------------------------- + +ABOUT TO COMPUTE 8.98173E-73 / 39352.6 +RESULT = 2.28238E-77 + +---------------------------------------- + +ABOUT TO COMPUTE 2.28238E-77 / 113363. +RESULT = 2.01334E-82 + +---------------------------------------- + +ABOUT TO COMPUTE 2.01334E-82 / 363009. +RESULT = 5.54625E-88 + +---------------------------------------- + +ABOUT TO COMPUTE 5.54625E-88 / 1.3059E+6 +RESULT = 4.24708E-94 + +---------------------------------------- + +ABOUT TO COMPUTE 4.24708E-94 / 5.33949E+6 +RESULT = 7.95409E-101 + +---------------------------------------- + +ABOUT TO COMPUTE 7.95409E-101 / 2.51333E+7 +RESULT = 3.16476E-108 + +---------------------------------------- + +ABOUT TO COMPUTE 3.16476E-108 / 1.38126E+8 +RESULT = 2.29121E-116 + +---------------------------------------- + +ABOUT TO COMPUTE 2.29121E-116 / 9.00124E+8 +RESULT = 2.54544E-125 + +---------------------------------------- + +ABOUT TO COMPUTE 2.54544E-125 / 7.0751E+9 +RESULT = 3.59775E-135 + +---------------------------------------- + +ABOUT TO COMPUTE 3.59775E-135 / 6.83449E+10 +RESULT = 5.26411E-146 + +---------------------------------------- + +ABOUT TO COMPUTE 5.26411E-146 / 8.28279E+11 +RESULT = 6.35548E-158 + +---------------------------------------- + +ABOUT TO COMPUTE 6.35548E-158 / 1.28823E+13 +RESULT = 4.93349E-171 + +---------------------------------------- + +ABOUT TO COMPUTE 4.93349E-171 / 2.63629E+14 +RESULT = 1.87137E-185 + +---------------------------------------- + +ABOUT TO COMPUTE 1.87137E-185 / 7.29614E+15 +RESULT = 2.56488E-201 + +---------------------------------------- + +ABOUT TO COMPUTE 2.56488E-201 / 2.81451E+17 +RESULT = 9.11308E-219 + +---------------------------------------- + +ABOUT TO COMPUTE 9.11308E-219 / 1.56438E+19 +RESULT = 5.82536E-238 + +---------------------------------------- + +ABOUT TO COMPUTE 5.82536E-238 / 1.2995E+21 +RESULT = 4.48276E-259 + +---------------------------------------- + +ABOUT TO COMPUTE 4.48276E-259 / 1.6794E+23 +RESULT = 2.66926E-282 + +---------------------------------------- + +ABOUT TO COMPUTE 2.66926E-282 / 3.52915E+25 +RESULT = 7.56348E-308 + +---------------------------------------- + +ABOUT TO COMPUTE 7.56348E-308 / 1.26601E+28 +RESULT = 0 + +---------------------------------------- + +*** TEST PASSED *** + + END TEST + +SECTION 33.2: NEGATIVE UNDERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +GREATER THAN NEGATIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE -8.E-37 / 10 +RESULT = -8.E-38 + +---------------------------------------- + +ABOUT TO COMPUTE -8.E-38 / 12.5893 +RESULT = -6.35463E-39 + +---------------------------------------- + +ABOUT TO COMPUTE -6.35463E-39 / 16.2181 +RESULT = -3.91823E-40 + +---------------------------------------- + +ABOUT TO COMPUTE -3.91823E-40 / 21.4289 +RESULT = -1.82848E-41 + +---------------------------------------- + +ABOUT TO COMPUTE -1.82848E-41 / 29.1139 +RESULT = -6.28044E-43 + +---------------------------------------- + +ABOUT TO COMPUTE -6.28044E-43 / 40.7859 +RESULT = -1.53986E-44 + +---------------------------------------- + +ABOUT TO COMPUTE -1.53986E-44 / 59.0964 +RESULT = -2.60567E-46 + +---------------------------------------- + +ABOUT TO COMPUTE -2.60567E-46 / 88.8622 +RESULT = -2.93226E-48 + +---------------------------------------- + +ABOUT TO COMPUTE -2.93226E-48 / 139.184 +RESULT = -2.10675E-50 + +---------------------------------------- + +ABOUT TO COMPUTE -2.10675E-50 / 228.007 +RESULT = -9.23986E-53 + +---------------------------------------- + +ABOUT TO COMPUTE -9.23986E-53 / 392.412 +RESULT = -2.35463E-55 + +---------------------------------------- + +ABOUT TO COMPUTE -2.35463E-55 / 713.045 +RESULT = -3.30222E-58 + +---------------------------------------- + +ABOUT TO COMPUTE -3.30222E-58 / 1375.4 +RESULT = -2.40092E-61 + +---------------------------------------- + +ABOUT TO COMPUTE -2.40092E-61 / 2833.16 +RESULT = -8.47435E-65 + +---------------------------------------- + +ABOUT TO COMPUTE -8.47435E-65 / 6273.33 +RESULT = -1.35085E-68 + +---------------------------------------- + +ABOUT TO COMPUTE -1.35085E-68 / 15040. +RESULT = -8.98173E-73 + +---------------------------------------- + +ABOUT TO COMPUTE -8.98173E-73 / 39352.6 +RESULT = -2.28238E-77 + +---------------------------------------- + +ABOUT TO COMPUTE -2.28238E-77 / 113363. +RESULT = -2.01334E-82 + +---------------------------------------- + +ABOUT TO COMPUTE -2.01334E-82 / 363009. +RESULT = -5.54625E-88 + +---------------------------------------- + +ABOUT TO COMPUTE -5.54625E-88 / 1.3059E+6 +RESULT = -4.24708E-94 + +---------------------------------------- + +ABOUT TO COMPUTE -4.24708E-94 / 5.33949E+6 +RESULT = -7.95409E-101 + +---------------------------------------- + +ABOUT TO COMPUTE -7.95409E-101 / 2.51333E+7 +RESULT = -3.16476E-108 + +---------------------------------------- + +ABOUT TO COMPUTE -3.16476E-108 / 1.38126E+8 +RESULT = -2.29121E-116 + +---------------------------------------- + +ABOUT TO COMPUTE -2.29121E-116 / 9.00124E+8 +RESULT = -2.54544E-125 + +---------------------------------------- + +ABOUT TO COMPUTE -2.54544E-125 / 7.0751E+9 +RESULT = -3.59775E-135 + +---------------------------------------- + +ABOUT TO COMPUTE -3.59775E-135 / 6.83449E+10 +RESULT = -5.26411E-146 + +---------------------------------------- + +ABOUT TO COMPUTE -5.26411E-146 / 8.28279E+11 +RESULT = -6.35548E-158 + +---------------------------------------- + +ABOUT TO COMPUTE -6.35548E-158 / 1.28823E+13 +RESULT = -4.93349E-171 + +---------------------------------------- + +ABOUT TO COMPUTE -4.93349E-171 / 2.63629E+14 +RESULT = -1.87137E-185 + +---------------------------------------- + +ABOUT TO COMPUTE -1.87137E-185 / 7.29614E+15 +RESULT = -2.56488E-201 + +---------------------------------------- + +ABOUT TO COMPUTE -2.56488E-201 / 2.81451E+17 +RESULT = -9.11308E-219 + +---------------------------------------- + +ABOUT TO COMPUTE -9.11308E-219 / 1.56438E+19 +RESULT = -5.82536E-238 + +---------------------------------------- + +ABOUT TO COMPUTE -5.82536E-238 / 1.2995E+21 +RESULT = -4.48276E-259 + +---------------------------------------- + +ABOUT TO COMPUTE -4.48276E-259 / 1.6794E+23 +RESULT = -2.66926E-282 + +---------------------------------------- + +ABOUT TO COMPUTE -2.66926E-282 / 3.52915E+25 +RESULT = -7.56348E-308 + +---------------------------------------- + +ABOUT TO COMPUTE -7.56348E-308 / 1.26601E+28 +RESULT = 0 + +---------------------------------------- + +*** TEST PASSED *** + + END TEST + +END PROGRAM 33 diff --git a/NBS2/P033.BAS b/NBS2/P033.BAS new file mode 100644 index 0000000..e4f473c --- /dev/null +++ b/NBS2/P033.BAS @@ -0,0 +1,101 @@ +10 PRINT "PROGRAM FILE 33: EXCEPTION - UNDERFLOW OF" +15 PRINT " NUMERIC EXPRESSIONS." +20 PRINT " ANSI STANDARD 7.4" +30 PRINT +40 PRINT "THIS PROGRAM TESTS VARIOUS CASES OF NUMERIC UNDERFLOW." +50 PRINT +60 PRINT "SECTION 33.1: POSITIVE UNDERFLOW" +70 PRINT +80 PRINT "THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION" +90 PRINT "LESS THAN POSITIVE MACHINE INFINITESIMAL." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE" +140 PRINT " DISPLAYED (NOT MANDATORY), AND" +150 PRINT +160 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +170 PRINT " OF THE EXPRESSION." +180 PRINT +190 PRINT " BEGIN TEST" +200 PRINT +210 REM S IS A SWITCH TO INDICATE FIRST TIME THROUGH LOOP (S=1) +220 REM OR SUBSEQUENT ITERATIONS (S=0). UNDERFLOW SHOULD NOT OCCUR +230 REM FIRST TIME. +240 LET S=1 +250 LET M=10 +260 LET F=1 +270 LET A=.8E-36 +280 LET B=1 +290 PRINT "ABOUT TO COMPUTE ";A;" / ";M +300 LET A=A/M +310 PRINT "RESULT = ";A +320 PRINT +330 PRINT "----------------------------------------" +340 PRINT +350 IF B<=A THEN 420 +360 IF A=0 THEN 420 +370 LET B=A +380 LET S=0 +390 LET F=F*1.1 +400 LET M=10^F +410 GOTO 290 +420 REM CONVERGE +430 IF S=0 THEN 470 +440 PRINT "*** TEST FAILED: UNDERFLOW OCCURRED ABOVE MAXIMUM" +450 PRINT " MACHINE INFINITESIMAL. ***" +460 GOTO 510 +470 IF A=0 THEN 500 +480 PRINT "*** TEST FAILED: VALUE SUPPLIED NOT EQUAL ZERO. ***" +490 GOTO 510 +500 PRINT "*** TEST PASSED *** " +510 PRINT +520 PRINT " END TEST" +530 PRINT +540 PRINT "SECTION 33.2: NEGATIVE UNDERFLOW" +550 PRINT +560 PRINT "THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION" +570 PRINT "GREATER THAN NEGATIVE MACHINE INFINITESIMAL." +580 PRINT +590 PRINT "TO PASS THIS TEST:" +600 PRINT +610 PRINT " 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE" +620 PRINT " DISPLAYED (NOT MANDATORY), AND" +630 PRINT +640 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +650 PRINT " OF THE EXPRESSION." +660 PRINT +670 PRINT " BEGIN TEST" +680 PRINT +690 LET S=1 +700 LET M=10 +710 LET F=1 +720 LET A=-.8E-36 +730 LET B=-1 +740 PRINT "ABOUT TO COMPUTE ";A;" / ";M +750 LET A=A/M +760 PRINT "RESULT = ";A +770 PRINT +780 PRINT "----------------------------------------" +790 PRINT +800 IF B>=A THEN 870 +810 IF A=0 THEN 870 +820 LET B=A +830 LET S=0 +840 LET F=F*1.1 +850 LET M=10^F +860 GOTO 740 +870 REM CONVERGE +880 IF S=0 THEN 920 +890 PRINT "*** TEST FAILED: UNDERFLOW OCCURRED BELOW MINIMUM" +900 PRINT " MACHINE INFINITESIMAL. ***" +910 GOTO 960 +920 IF A=0 THEN 950 +930 PRINT "*** TEST FAILED: VALUE SUPPLIED NOT EQUAL ZERO. ***" +940 GOTO 960 +950 PRINT "*** TEST PASSED *** " +960 PRINT +970 PRINT " END TEST" +980 PRINT +990 PRINT "END PROGRAM 33" +1000 END diff --git a/NBS2/P033.OUT b/NBS2/P033.OUT new file mode 100644 index 0000000..b9b422b --- /dev/null +++ b/NBS2/P033.OUT @@ -0,0 +1,405 @@ +PROGRAM FILE 33: EXCEPTION - UNDERFLOW OF + NUMERIC EXPRESSIONS. + ANSI STANDARD 7.4 + +THIS PROGRAM TESTS VARIOUS CASES OF NUMERIC UNDERFLOW. + +SECTION 33.1: POSITIVE UNDERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +LESS THAN POSITIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE 8.E-37 / 10 +RESULT = 8.E-38 + +---------------------------------------- + +ABOUT TO COMPUTE 8.E-38 / 12.5893 +RESULT = 6.35463E-39 + +---------------------------------------- + +ABOUT TO COMPUTE 6.35463E-39 / 16.2181 +RESULT = 3.91823E-40 + +---------------------------------------- + +ABOUT TO COMPUTE 3.91823E-40 / 21.4289 +RESULT = 1.82848E-41 + +---------------------------------------- + +ABOUT TO COMPUTE 1.82848E-41 / 29.1139 +RESULT = 6.28044E-43 + +---------------------------------------- + +ABOUT TO COMPUTE 6.28044E-43 / 40.7859 +RESULT = 1.53986E-44 + +---------------------------------------- + +ABOUT TO COMPUTE 1.53986E-44 / 59.0964 +RESULT = 2.60567E-46 + +---------------------------------------- + +ABOUT TO COMPUTE 2.60567E-46 / 88.8622 +RESULT = 2.93226E-48 + +---------------------------------------- + +ABOUT TO COMPUTE 2.93226E-48 / 139.184 +RESULT = 2.10675E-50 + +---------------------------------------- + +ABOUT TO COMPUTE 2.10675E-50 / 228.007 +RESULT = 9.23986E-53 + +---------------------------------------- + +ABOUT TO COMPUTE 9.23986E-53 / 392.412 +RESULT = 2.35463E-55 + +---------------------------------------- + +ABOUT TO COMPUTE 2.35463E-55 / 713.045 +RESULT = 3.30222E-58 + +---------------------------------------- + +ABOUT TO COMPUTE 3.30222E-58 / 1375.4 +RESULT = 2.40092E-61 + +---------------------------------------- + +ABOUT TO COMPUTE 2.40092E-61 / 2833.16 +RESULT = 8.47435E-65 + +---------------------------------------- + +ABOUT TO COMPUTE 8.47435E-65 / 6273.33 +RESULT = 1.35085E-68 + +---------------------------------------- + +ABOUT TO COMPUTE 1.35085E-68 / 15040. +RESULT = 8.98173E-73 + +---------------------------------------- + +ABOUT TO COMPUTE 8.98173E-73 / 39352.6 +RESULT = 2.28238E-77 + +---------------------------------------- + +ABOUT TO COMPUTE 2.28238E-77 / 113363. +RESULT = 2.01334E-82 + +---------------------------------------- + +ABOUT TO COMPUTE 2.01334E-82 / 363009. +RESULT = 5.54625E-88 + +---------------------------------------- + +ABOUT TO COMPUTE 5.54625E-88 / 1.3059E+6 +RESULT = 4.24708E-94 + +---------------------------------------- + +ABOUT TO COMPUTE 4.24708E-94 / 5.33949E+6 +RESULT = 7.95409E-101 + +---------------------------------------- + +ABOUT TO COMPUTE 7.95409E-101 / 2.51333E+7 +RESULT = 3.16476E-108 + +---------------------------------------- + +ABOUT TO COMPUTE 3.16476E-108 / 1.38126E+8 +RESULT = 2.29121E-116 + +---------------------------------------- + +ABOUT TO COMPUTE 2.29121E-116 / 9.00124E+8 +RESULT = 2.54544E-125 + +---------------------------------------- + +ABOUT TO COMPUTE 2.54544E-125 / 7.0751E+9 +RESULT = 3.59775E-135 + +---------------------------------------- + +ABOUT TO COMPUTE 3.59775E-135 / 6.83449E+10 +RESULT = 5.26411E-146 + +---------------------------------------- + +ABOUT TO COMPUTE 5.26411E-146 / 8.28279E+11 +RESULT = 6.35548E-158 + +---------------------------------------- + +ABOUT TO COMPUTE 6.35548E-158 / 1.28823E+13 +RESULT = 4.93349E-171 + +---------------------------------------- + +ABOUT TO COMPUTE 4.93349E-171 / 2.63629E+14 +RESULT = 1.87137E-185 + +---------------------------------------- + +ABOUT TO COMPUTE 1.87137E-185 / 7.29614E+15 +RESULT = 2.56488E-201 + +---------------------------------------- + +ABOUT TO COMPUTE 2.56488E-201 / 2.81451E+17 +RESULT = 9.11308E-219 + +---------------------------------------- + +ABOUT TO COMPUTE 9.11308E-219 / 1.56438E+19 +RESULT = 5.82536E-238 + +---------------------------------------- + +ABOUT TO COMPUTE 5.82536E-238 / 1.2995E+21 +RESULT = 4.48276E-259 + +---------------------------------------- + +ABOUT TO COMPUTE 4.48276E-259 / 1.6794E+23 +RESULT = 2.66926E-282 + +---------------------------------------- + +ABOUT TO COMPUTE 2.66926E-282 / 3.52915E+25 +RESULT = 7.56348E-308 + +---------------------------------------- + +ABOUT TO COMPUTE 7.56348E-308 / 1.26601E+28 +RESULT = 0 + +---------------------------------------- + +*** TEST PASSED *** + + END TEST + +SECTION 33.2: NEGATIVE UNDERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +GREATER THAN NEGATIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE -8.E-37 / 10 +RESULT = -8.E-38 + +---------------------------------------- + +ABOUT TO COMPUTE -8.E-38 / 12.5893 +RESULT = -6.35463E-39 + +---------------------------------------- + +ABOUT TO COMPUTE -6.35463E-39 / 16.2181 +RESULT = -3.91823E-40 + +---------------------------------------- + +ABOUT TO COMPUTE -3.91823E-40 / 21.4289 +RESULT = -1.82848E-41 + +---------------------------------------- + +ABOUT TO COMPUTE -1.82848E-41 / 29.1139 +RESULT = -6.28044E-43 + +---------------------------------------- + +ABOUT TO COMPUTE -6.28044E-43 / 40.7859 +RESULT = -1.53986E-44 + +---------------------------------------- + +ABOUT TO COMPUTE -1.53986E-44 / 59.0964 +RESULT = -2.60567E-46 + +---------------------------------------- + +ABOUT TO COMPUTE -2.60567E-46 / 88.8622 +RESULT = -2.93226E-48 + +---------------------------------------- + +ABOUT TO COMPUTE -2.93226E-48 / 139.184 +RESULT = -2.10675E-50 + +---------------------------------------- + +ABOUT TO COMPUTE -2.10675E-50 / 228.007 +RESULT = -9.23986E-53 + +---------------------------------------- + +ABOUT TO COMPUTE -9.23986E-53 / 392.412 +RESULT = -2.35463E-55 + +---------------------------------------- + +ABOUT TO COMPUTE -2.35463E-55 / 713.045 +RESULT = -3.30222E-58 + +---------------------------------------- + +ABOUT TO COMPUTE -3.30222E-58 / 1375.4 +RESULT = -2.40092E-61 + +---------------------------------------- + +ABOUT TO COMPUTE -2.40092E-61 / 2833.16 +RESULT = -8.47435E-65 + +---------------------------------------- + +ABOUT TO COMPUTE -8.47435E-65 / 6273.33 +RESULT = -1.35085E-68 + +---------------------------------------- + +ABOUT TO COMPUTE -1.35085E-68 / 15040. +RESULT = -8.98173E-73 + +---------------------------------------- + +ABOUT TO COMPUTE -8.98173E-73 / 39352.6 +RESULT = -2.28238E-77 + +---------------------------------------- + +ABOUT TO COMPUTE -2.28238E-77 / 113363. +RESULT = -2.01334E-82 + +---------------------------------------- + +ABOUT TO COMPUTE -2.01334E-82 / 363009. +RESULT = -5.54625E-88 + +---------------------------------------- + +ABOUT TO COMPUTE -5.54625E-88 / 1.3059E+6 +RESULT = -4.24708E-94 + +---------------------------------------- + +ABOUT TO COMPUTE -4.24708E-94 / 5.33949E+6 +RESULT = -7.95409E-101 + +---------------------------------------- + +ABOUT TO COMPUTE -7.95409E-101 / 2.51333E+7 +RESULT = -3.16476E-108 + +---------------------------------------- + +ABOUT TO COMPUTE -3.16476E-108 / 1.38126E+8 +RESULT = -2.29121E-116 + +---------------------------------------- + +ABOUT TO COMPUTE -2.29121E-116 / 9.00124E+8 +RESULT = -2.54544E-125 + +---------------------------------------- + +ABOUT TO COMPUTE -2.54544E-125 / 7.0751E+9 +RESULT = -3.59775E-135 + +---------------------------------------- + +ABOUT TO COMPUTE -3.59775E-135 / 6.83449E+10 +RESULT = -5.26411E-146 + +---------------------------------------- + +ABOUT TO COMPUTE -5.26411E-146 / 8.28279E+11 +RESULT = -6.35548E-158 + +---------------------------------------- + +ABOUT TO COMPUTE -6.35548E-158 / 1.28823E+13 +RESULT = -4.93349E-171 + +---------------------------------------- + +ABOUT TO COMPUTE -4.93349E-171 / 2.63629E+14 +RESULT = -1.87137E-185 + +---------------------------------------- + +ABOUT TO COMPUTE -1.87137E-185 / 7.29614E+15 +RESULT = -2.56488E-201 + +---------------------------------------- + +ABOUT TO COMPUTE -2.56488E-201 / 2.81451E+17 +RESULT = -9.11308E-219 + +---------------------------------------- + +ABOUT TO COMPUTE -9.11308E-219 / 1.56438E+19 +RESULT = -5.82536E-238 + +---------------------------------------- + +ABOUT TO COMPUTE -5.82536E-238 / 1.2995E+21 +RESULT = -4.48276E-259 + +---------------------------------------- + +ABOUT TO COMPUTE -4.48276E-259 / 1.6794E+23 +RESULT = -2.66926E-282 + +---------------------------------------- + +ABOUT TO COMPUTE -2.66926E-282 / 3.52915E+25 +RESULT = -7.56348E-308 + +---------------------------------------- + +ABOUT TO COMPUTE -7.56348E-308 / 1.26601E+28 +RESULT = 0 + +---------------------------------------- + +*** TEST PASSED *** + + END TEST + +END PROGRAM 33 diff --git a/NBS2/P033.dif b/NBS2/P033.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P033.run b/NBS2/P033.run new file mode 100644 index 0000000..7fa7e7a --- /dev/null +++ b/NBS2/P033.run @@ -0,0 +1,405 @@ +PROGRAM FILE 33: EXCEPTION - UNDERFLOW OF + NUMERIC EXPRESSIONS. + ANSI STANDARD 7.4 + +THIS PROGRAM TESTS VARIOUS CASES OF NUMERIC UNDERFLOW. + +SECTION 33.1: POSITIVE UNDERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +LESS THAN POSITIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE 8.E-37 / 10 +RESULT = 8.E-38 + +---------------------------------------- + +ABOUT TO COMPUTE 8.E-38 / 12.5893 +RESULT = 6.35463E-39 + +---------------------------------------- + +ABOUT TO COMPUTE 6.35463E-39 / 16.2181 +RESULT = 3.91823E-40 + +---------------------------------------- + +ABOUT TO COMPUTE 3.91823E-40 / 21.4289 +RESULT = 1.82848E-41 + +---------------------------------------- + +ABOUT TO COMPUTE 1.82848E-41 / 29.1139 +RESULT = 6.28044E-43 + +---------------------------------------- + +ABOUT TO COMPUTE 6.28044E-43 / 40.7859 +RESULT = 1.53986E-44 + +---------------------------------------- + +ABOUT TO COMPUTE 1.53986E-44 / 59.0964 +RESULT = 2.60567E-46 + +---------------------------------------- + +ABOUT TO COMPUTE 2.60567E-46 / 88.8622 +RESULT = 2.93226E-48 + +---------------------------------------- + +ABOUT TO COMPUTE 2.93226E-48 / 139.184 +RESULT = 2.10675E-50 + +---------------------------------------- + +ABOUT TO COMPUTE 2.10675E-50 / 228.007 +RESULT = 9.23986E-53 + +---------------------------------------- + +ABOUT TO COMPUTE 9.23986E-53 / 392.412 +RESULT = 2.35463E-55 + +---------------------------------------- + +ABOUT TO COMPUTE 2.35463E-55 / 713.045 +RESULT = 3.30222E-58 + +---------------------------------------- + +ABOUT TO COMPUTE 3.30222E-58 / 1375.4 +RESULT = 2.40092E-61 + +---------------------------------------- + +ABOUT TO COMPUTE 2.40092E-61 / 2833.16 +RESULT = 8.47435E-65 + +---------------------------------------- + +ABOUT TO COMPUTE 8.47435E-65 / 6273.33 +RESULT = 1.35085E-68 + +---------------------------------------- + +ABOUT TO COMPUTE 1.35085E-68 / 15040. +RESULT = 8.98173E-73 + +---------------------------------------- + +ABOUT TO COMPUTE 8.98173E-73 / 39352.6 +RESULT = 2.28238E-77 + +---------------------------------------- + +ABOUT TO COMPUTE 2.28238E-77 / 113363. +RESULT = 2.01334E-82 + +---------------------------------------- + +ABOUT TO COMPUTE 2.01334E-82 / 363009. +RESULT = 5.54625E-88 + +---------------------------------------- + +ABOUT TO COMPUTE 5.54625E-88 / 1.3059E+6 +RESULT = 4.24708E-94 + +---------------------------------------- + +ABOUT TO COMPUTE 4.24708E-94 / 5.33949E+6 +RESULT = 7.95409E-101 + +---------------------------------------- + +ABOUT TO COMPUTE 7.95409E-101 / 2.51333E+7 +RESULT = 3.16476E-108 + +---------------------------------------- + +ABOUT TO COMPUTE 3.16476E-108 / 1.38126E+8 +RESULT = 2.29121E-116 + +---------------------------------------- + +ABOUT TO COMPUTE 2.29121E-116 / 9.00124E+8 +RESULT = 2.54544E-125 + +---------------------------------------- + +ABOUT TO COMPUTE 2.54544E-125 / 7.0751E+9 +RESULT = 3.59775E-135 + +---------------------------------------- + +ABOUT TO COMPUTE 3.59775E-135 / 6.83449E+10 +RESULT = 5.26411E-146 + +---------------------------------------- + +ABOUT TO COMPUTE 5.26411E-146 / 8.28279E+11 +RESULT = 6.35548E-158 + +---------------------------------------- + +ABOUT TO COMPUTE 6.35548E-158 / 1.28823E+13 +RESULT = 4.93349E-171 + +---------------------------------------- + +ABOUT TO COMPUTE 4.93349E-171 / 2.63629E+14 +RESULT = 1.87137E-185 + +---------------------------------------- + +ABOUT TO COMPUTE 1.87137E-185 / 7.29614E+15 +RESULT = 2.56488E-201 + +---------------------------------------- + +ABOUT TO COMPUTE 2.56488E-201 / 2.81451E+17 +RESULT = 9.11308E-219 + +---------------------------------------- + +ABOUT TO COMPUTE 9.11308E-219 / 1.56438E+19 +RESULT = 5.82536E-238 + +---------------------------------------- + +ABOUT TO COMPUTE 5.82536E-238 / 1.2995E+21 +RESULT = 4.48276E-259 + +---------------------------------------- + +ABOUT TO COMPUTE 4.48276E-259 / 1.6794E+23 +RESULT = 2.66926E-282 + +---------------------------------------- + +ABOUT TO COMPUTE 2.66926E-282 / 3.52915E+25 +RESULT = 7.56348E-308 + +---------------------------------------- + +ABOUT TO COMPUTE 7.56348E-308 / 1.26601E+28 +RESULT = 0 + +---------------------------------------- + +*** TEST PASSED *** + + END TEST + +SECTION 33.2: NEGATIVE UNDERFLOW + +THIS SECTION TESTS THE RESULT OF EXPRESSION EVALUATION +GREATER THAN NEGATIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE -8.E-37 / 10 +RESULT = -8.E-38 + +---------------------------------------- + +ABOUT TO COMPUTE -8.E-38 / 12.5893 +RESULT = -6.35463E-39 + +---------------------------------------- + +ABOUT TO COMPUTE -6.35463E-39 / 16.2181 +RESULT = -3.91823E-40 + +---------------------------------------- + +ABOUT TO COMPUTE -3.91823E-40 / 21.4289 +RESULT = -1.82848E-41 + +---------------------------------------- + +ABOUT TO COMPUTE -1.82848E-41 / 29.1139 +RESULT = -6.28044E-43 + +---------------------------------------- + +ABOUT TO COMPUTE -6.28044E-43 / 40.7859 +RESULT = -1.53986E-44 + +---------------------------------------- + +ABOUT TO COMPUTE -1.53986E-44 / 59.0964 +RESULT = -2.60567E-46 + +---------------------------------------- + +ABOUT TO COMPUTE -2.60567E-46 / 88.8622 +RESULT = -2.93226E-48 + +---------------------------------------- + +ABOUT TO COMPUTE -2.93226E-48 / 139.184 +RESULT = -2.10675E-50 + +---------------------------------------- + +ABOUT TO COMPUTE -2.10675E-50 / 228.007 +RESULT = -9.23986E-53 + +---------------------------------------- + +ABOUT TO COMPUTE -9.23986E-53 / 392.412 +RESULT = -2.35463E-55 + +---------------------------------------- + +ABOUT TO COMPUTE -2.35463E-55 / 713.045 +RESULT = -3.30222E-58 + +---------------------------------------- + +ABOUT TO COMPUTE -3.30222E-58 / 1375.4 +RESULT = -2.40092E-61 + +---------------------------------------- + +ABOUT TO COMPUTE -2.40092E-61 / 2833.16 +RESULT = -8.47435E-65 + +---------------------------------------- + +ABOUT TO COMPUTE -8.47435E-65 / 6273.33 +RESULT = -1.35085E-68 + +---------------------------------------- + +ABOUT TO COMPUTE -1.35085E-68 / 15040. +RESULT = -8.98173E-73 + +---------------------------------------- + +ABOUT TO COMPUTE -8.98173E-73 / 39352.6 +RESULT = -2.28238E-77 + +---------------------------------------- + +ABOUT TO COMPUTE -2.28238E-77 / 113363. +RESULT = -2.01334E-82 + +---------------------------------------- + +ABOUT TO COMPUTE -2.01334E-82 / 363009. +RESULT = -5.54625E-88 + +---------------------------------------- + +ABOUT TO COMPUTE -5.54625E-88 / 1.3059E+6 +RESULT = -4.24708E-94 + +---------------------------------------- + +ABOUT TO COMPUTE -4.24708E-94 / 5.33949E+6 +RESULT = -7.95409E-101 + +---------------------------------------- + +ABOUT TO COMPUTE -7.95409E-101 / 2.51333E+7 +RESULT = -3.16476E-108 + +---------------------------------------- + +ABOUT TO COMPUTE -3.16476E-108 / 1.38126E+8 +RESULT = -2.29121E-116 + +---------------------------------------- + +ABOUT TO COMPUTE -2.29121E-116 / 9.00124E+8 +RESULT = -2.54544E-125 + +---------------------------------------- + +ABOUT TO COMPUTE -2.54544E-125 / 7.0751E+9 +RESULT = -3.59775E-135 + +---------------------------------------- + +ABOUT TO COMPUTE -3.59775E-135 / 6.83449E+10 +RESULT = -5.26411E-146 + +---------------------------------------- + +ABOUT TO COMPUTE -5.26411E-146 / 8.28279E+11 +RESULT = -6.35548E-158 + +---------------------------------------- + +ABOUT TO COMPUTE -6.35548E-158 / 1.28823E+13 +RESULT = -4.93349E-171 + +---------------------------------------- + +ABOUT TO COMPUTE -4.93349E-171 / 2.63629E+14 +RESULT = -1.87137E-185 + +---------------------------------------- + +ABOUT TO COMPUTE -1.87137E-185 / 7.29614E+15 +RESULT = -2.56488E-201 + +---------------------------------------- + +ABOUT TO COMPUTE -2.56488E-201 / 2.81451E+17 +RESULT = -9.11308E-219 + +---------------------------------------- + +ABOUT TO COMPUTE -9.11308E-219 / 1.56438E+19 +RESULT = -5.82536E-238 + +---------------------------------------- + +ABOUT TO COMPUTE -5.82536E-238 / 1.2995E+21 +RESULT = -4.48276E-259 + +---------------------------------------- + +ABOUT TO COMPUTE -4.48276E-259 / 1.6794E+23 +RESULT = -2.66926E-282 + +---------------------------------------- + +ABOUT TO COMPUTE -2.66926E-282 / 3.52915E+25 +RESULT = -7.56348E-308 + +---------------------------------------- + +ABOUT TO COMPUTE -7.56348E-308 / 1.26601E+28 +RESULT = 0 + +---------------------------------------- + +*** TEST PASSED *** + + END TEST + +END PROGRAM 33 diff --git a/NBS2/P034.80 b/NBS2/P034.80 new file mode 100644 index 0000000..121dcb6 --- /dev/null +++ b/NBS2/P034.80 @@ -0,0 +1,47 @@ +PROGRAM FILE 34: EXCEPTION - UNDERFLOW OF + NUMERIC CONSTANTS. + ANSI STANDARD 5.4, 5.6 + +THIS PROGRAM TESTS VARIOUS CASES OF CONSTANT UNDERFLOW. + +SECTION 34.1: POSITIVE CONSTANT UNDERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +LESS THAN POSITIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +RESULT OF ASSIGNING 3E-99999 = 0 +*** TEST PASSED *** + + END TEST + +SECTION 34.2: NEGATIVE CONSTANT UNDERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +GREATER THAN NEGATIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +RESULT OF ASSIGNING -3E-99999 = 0 +*** TEST PASSED *** + + END TEST + +END PROGRAM 34 diff --git a/NBS2/P034.BAS b/NBS2/P034.BAS new file mode 100644 index 0000000..a4a2293 --- /dev/null +++ b/NBS2/P034.BAS @@ -0,0 +1,58 @@ +10 PRINT "PROGRAM FILE 34: EXCEPTION - UNDERFLOW OF" +15 PRINT " NUMERIC CONSTANTS." +20 PRINT " ANSI STANDARD 5.4, 5.6" +30 PRINT +40 PRINT "THIS PROGRAM TESTS VARIOUS CASES OF CONSTANT UNDERFLOW." +50 PRINT +60 PRINT "SECTION 34.1: POSITIVE CONSTANT UNDERFLOW" +70 PRINT +80 PRINT "THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION" +90 PRINT "LESS THAN POSITIVE MACHINE INFINITESIMAL." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE" +140 PRINT " DISPLAYED (NOT MANDATORY), AND" +150 PRINT +160 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +170 PRINT " OF THE CONSTANT AND EXECUTION CONTINUES." +180 PRINT +190 PRINT " BEGIN TEST" +200 PRINT +360 LET A=3E-99999 +365 PRINT "RESULT OF ASSIGNING 3E-99999 = ";A +370 IF A=0 THEN 430 +380 PRINT "IF RESULT <> 3E-99999, THEN" +390 PRINT "*** TEST FAILED ***" +400 GOTO 440 +430 PRINT "*** TEST PASSED *** " +440 PRINT +450 PRINT " END TEST" +460 PRINT +470 PRINT "SECTION 34.2: NEGATIVE CONSTANT UNDERFLOW" +480 PRINT +490 PRINT "THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION" +500 PRINT "GREATER THAN NEGATIVE MACHINE INFINITESIMAL." +510 PRINT +520 PRINT "TO PASS THIS TEST:" +530 PRINT +540 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE" +550 PRINT " DISPLAYED (NOT MANDATORY), AND" +560 PRINT +570 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +580 PRINT " OF THE CONSTANT AND EXECUTION CONTINUES." +590 PRINT +600 PRINT " BEGIN TEST" +610 PRINT +770 LET A=-3E-99999 +775 PRINT "RESULT OF ASSIGNING -3E-99999 = ";A +780 IF A=0 THEN 840 +790 PRINT "IF RESULT <> -3E-99999, THEN" +800 PRINT "*** TEST FAILED ***" +810 GOTO 850 +840 PRINT "*** TEST PASSED *** " +850 PRINT +860 PRINT " END TEST" +870 PRINT +880 PRINT "END PROGRAM 34" +890 END diff --git a/NBS2/P034.OUT b/NBS2/P034.OUT new file mode 100644 index 0000000..a35b419 --- /dev/null +++ b/NBS2/P034.OUT @@ -0,0 +1,47 @@ +PROGRAM FILE 34: EXCEPTION - UNDERFLOW OF + NUMERIC CONSTANTS. + ANSI STANDARD 5.4, 5.6 + +THIS PROGRAM TESTS VARIOUS CASES OF CONSTANT UNDERFLOW. + +SECTION 34.1: POSITIVE CONSTANT UNDERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +LESS THAN POSITIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +RESULT OF ASSIGNING 3E-99999 = 0 +*** TEST PASSED *** + + END TEST + +SECTION 34.2: NEGATIVE CONSTANT UNDERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +GREATER THAN NEGATIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +RESULT OF ASSIGNING -3E-99999 = 0 +*** TEST PASSED *** + + END TEST + +END PROGRAM 34 diff --git a/NBS2/P034.dif b/NBS2/P034.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P034.run b/NBS2/P034.run new file mode 100644 index 0000000..121dcb6 --- /dev/null +++ b/NBS2/P034.run @@ -0,0 +1,47 @@ +PROGRAM FILE 34: EXCEPTION - UNDERFLOW OF + NUMERIC CONSTANTS. + ANSI STANDARD 5.4, 5.6 + +THIS PROGRAM TESTS VARIOUS CASES OF CONSTANT UNDERFLOW. + +SECTION 34.1: POSITIVE CONSTANT UNDERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +LESS THAN POSITIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +RESULT OF ASSIGNING 3E-99999 = 0 +*** TEST PASSED *** + + END TEST + +SECTION 34.2: NEGATIVE CONSTANT UNDERFLOW + +THIS SECTION TESTS THE RESULT OF CONSTANT EVALUATION +GREATER THAN NEGATIVE MACHINE INFINITESIMAL. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT AND EXECUTION CONTINUES. + + BEGIN TEST + +RESULT OF ASSIGNING -3E-99999 = 0 +*** TEST PASSED *** + + END TEST + +END PROGRAM 34 diff --git a/NBS2/P035.80 b/NBS2/P035.80 new file mode 100644 index 0000000..c26f8f2 --- /dev/null +++ b/NBS2/P035.80 @@ -0,0 +1,56 @@ +PROGRAM FILE 35: EXCEPTION - OVERFLOW AND UNDERFLOW WITHIN + SUB-EXPRESSIONS + ANSI STANDARD 7.4, 7.5 + +THIS PROGRAM TESTS THE EFFECT OF NUMERIC OVERFLOW AND +UNDERFLOW WITHIN A SUB-EXPRESSION ON THE CONTAINING +EXPRESSION. + +SECTION 35.1: SUB-EXPRESSION OVERFLOW + +THIS SECTION TESTS THE EFFECT ON AN EXPRESSION OF NUMERIC +OVERFLOW WITHIN ONE OF ITS SUB-EXPRESSIONS. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) MACHINE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE SUB-EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE -.01 * (10 ^ 99999) +*** Arithmetic Overflow *** +RESULT = -1.79769E+306 + +IF RESULT = (-.01 * MACHINE INFINITY) + AND OVERFLOW EXCEPTION REPORTED, THEN +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +SECTION 35.2: SUB-EXPRESSION UNDERFLOW + +THIS SECTION TESTS THE EFFECT OF AN EXPRESSION OF NUMERIC +UNDERFLOW WITHIN ONE OF ITS OPERATIONS. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE SUB-EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE 3 + (10 ^ (-99999)) +RESULT = 3 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 35 diff --git a/NBS2/P035.BAS b/NBS2/P035.BAS new file mode 100644 index 0000000..b9ca898 --- /dev/null +++ b/NBS2/P035.BAS @@ -0,0 +1,64 @@ +10 PRINT "PROGRAM FILE 35: EXCEPTION - OVERFLOW AND UNDERFLOW WITHIN" +20 PRINT " SUB-EXPRESSIONS" +30 PRINT " ANSI STANDARD 7.4, 7.5" +40 PRINT +50 PRINT "THIS PROGRAM TESTS THE EFFECT OF NUMERIC OVERFLOW AND" +60 PRINT "UNDERFLOW WITHIN A SUB-EXPRESSION ON THE CONTAINING" +70 PRINT "EXPRESSION." +80 PRINT +90 PRINT "SECTION 35.1: SUB-EXPRESSION OVERFLOW" +100 PRINT +110 PRINT "THIS SECTION TESTS THE EFFECT ON AN EXPRESSION OF NUMERIC" +120 PRINT "OVERFLOW WITHIN ONE OF ITS SUB-EXPRESSIONS." +130 PRINT +140 PRINT "TO PASS THIS TEST:" +150 PRINT +160 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +170 PRINT " DISPLAYED, AND" +180 PRINT +190 PRINT " 2) MACHINE INFINITY MUST BE SUPPLIED AS THE VALUE" +200 PRINT " OF THE SUB-EXPRESSION." +210 PRINT +220 PRINT " BEGIN TEST" +230 PRINT +240 PRINT "ABOUT TO COMPUTE -.01 * (10 ^ 99999)" +250 LET A=-.01 * (10 ^ 99999) +260 PRINT "RESULT = ";A +270 PRINT +280 IF A <= .99E36 THEN 310 +290 PRINT "*** TEST FAILED: RESULT > -1E36 ***" +300 GOTO 340 +310 PRINT "IF RESULT = (-.01 * MACHINE INFINITY)" +320 PRINT " AND OVERFLOW EXCEPTION REPORTED, THEN" +330 PRINT "*** TEST PASSES *** OTHERWISE *** TEST FAILS ***" +340 PRINT +350 PRINT " END TEST" +360 PRINT +370 PRINT "SECTION 35.2: SUB-EXPRESSION UNDERFLOW" +380 PRINT +390 PRINT "THIS SECTION TESTS THE EFFECT OF AN EXPRESSION OF NUMERIC" +400 PRINT "UNDERFLOW WITHIN ONE OF ITS OPERATIONS." +410 PRINT +420 PRINT "TO PASS THIS TEST:" +430 PRINT +440 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE" +450 PRINT " DISPLAYED (NOT MANDATORY), AND" +460 PRINT +470 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +480 PRINT " OF THE SUB-EXPRESSION." +490 PRINT +500 PRINT " BEGIN TEST" +510 PRINT +520 PRINT "ABOUT TO COMPUTE 3 + (10 ^ (-99999))" +530 LET A=3 + (10 ^ (-99999)) +540 PRINT "RESULT = ";A +550 PRINT +560 IF A=3 THEN 590 +570 PRINT "*** TEST FAILED: RESULT NOT = 3 ***" +580 GOTO 600 +590 PRINT "*** TEST PASSED ***" +600 PRINT +610 PRINT " END TEST" +620 PRINT +630 PRINT "END PROGRAM 35" +640 END diff --git a/NBS2/P035.OUT b/NBS2/P035.OUT new file mode 100644 index 0000000..79abfe5 --- /dev/null +++ b/NBS2/P035.OUT @@ -0,0 +1,56 @@ +PROGRAM FILE 35: EXCEPTION - OVERFLOW AND UNDERFLOW WITHIN + SUB-EXPRESSIONS + ANSI STANDARD 7.4, 7.5 + +THIS PROGRAM TESTS THE EFFECT OF NUMERIC OVERFLOW AND +UNDERFLOW WITHIN A SUB-EXPRESSION ON THE CONTAINING +EXPRESSION. + +SECTION 35.1: SUB-EXPRESSION OVERFLOW + +THIS SECTION TESTS THE EFFECT ON AN EXPRESSION OF NUMERIC +OVERFLOW WITHIN ONE OF ITS SUB-EXPRESSIONS. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) MACHINE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE SUB-EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE -.01 * (10 ^ 99999) +*** Arithmetic Overflow *** +RESULT = -1.79769E+306 + +IF RESULT = (-.01 * MACHINE INFINITY) + AND OVERFLOW EXCEPTION REPORTED, THEN +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +SECTION 35.2: SUB-EXPRESSION UNDERFLOW + +THIS SECTION TESTS THE EFFECT OF AN EXPRESSION OF NUMERIC +UNDERFLOW WITHIN ONE OF ITS OPERATIONS. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE SUB-EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE 3 + (10 ^ (-99999)) +RESULT = 3 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 35 diff --git a/NBS2/P035.dif b/NBS2/P035.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P035.run b/NBS2/P035.run new file mode 100644 index 0000000..c26f8f2 --- /dev/null +++ b/NBS2/P035.run @@ -0,0 +1,56 @@ +PROGRAM FILE 35: EXCEPTION - OVERFLOW AND UNDERFLOW WITHIN + SUB-EXPRESSIONS + ANSI STANDARD 7.4, 7.5 + +THIS PROGRAM TESTS THE EFFECT OF NUMERIC OVERFLOW AND +UNDERFLOW WITHIN A SUB-EXPRESSION ON THE CONTAINING +EXPRESSION. + +SECTION 35.1: SUB-EXPRESSION OVERFLOW + +THIS SECTION TESTS THE EFFECT ON AN EXPRESSION OF NUMERIC +OVERFLOW WITHIN ONE OF ITS SUB-EXPRESSIONS. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) MACHINE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE SUB-EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE -.01 * (10 ^ 99999) +*** Arithmetic Overflow *** +RESULT = -1.79769E+306 + +IF RESULT = (-.01 * MACHINE INFINITY) + AND OVERFLOW EXCEPTION REPORTED, THEN +*** TEST PASSES *** OTHERWISE *** TEST FAILS *** + + END TEST + +SECTION 35.2: SUB-EXPRESSION UNDERFLOW + +THIS SECTION TESTS THE EFFECT OF AN EXPRESSION OF NUMERIC +UNDERFLOW WITHIN ONE OF ITS OPERATIONS. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE SUB-EXPRESSION. + + BEGIN TEST + +ABOUT TO COMPUTE 3 + (10 ^ (-99999)) +RESULT = 3 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 35 diff --git a/NBS2/P036.80 b/NBS2/P036.80 new file mode 100644 index 0000000..42e015f --- /dev/null +++ b/NBS2/P036.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 36: ERROR - UNMATCHED PARENTHESIS IN + NUMERIC EXPRESSION. + ANSI STANDARD 7.2 + +SECTION 36.1: ERROR - UNMATCHED PARENTHESIS IN + NUMERIC EXPRESSION. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE THE +PARENTHESES ARE NOT MATCHED. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO COMPUTE: 8+(7-(9-88)/3+(7-9)-3 + +ERROR in line 250: Incomplete statement diff --git a/NBS2/P036.BAS b/NBS2/P036.BAS new file mode 100644 index 0000000..abd8d91 --- /dev/null +++ b/NBS2/P036.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 36: ERROR - UNMATCHED PARENTHESIS IN" +15 PRINT " NUMERIC EXPRESSION." +20 PRINT " ANSI STANDARD 7.2" +30 PRINT +40 PRINT "SECTION 36.1: ERROR - UNMATCHED PARENTHESIS IN" +45 PRINT " NUMERIC EXPRESSION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS" +70 PRINT "A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE THE" +80 PRINT "PARENTHESES ARE NOT MATCHED." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST" +240 PRINT +245 PRINT "ABOUT TO COMPUTE: 8+(7-(9-88)/3+(7-9)-3" +250 LET A= 8+(7-(9-88)/3+(7-9)-3 +260 PRINT "VALUE ASSIGNED FROM ILLEGAL EXPRESSION = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 36" +310 END diff --git a/NBS2/P036.OUT b/NBS2/P036.OUT new file mode 100644 index 0000000..da14f65 --- /dev/null +++ b/NBS2/P036.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 36: ERROR - UNMATCHED PARENTHESIS IN + NUMERIC EXPRESSION. + ANSI STANDARD 7.2 + +SECTION 36.1: ERROR - UNMATCHED PARENTHESIS IN + NUMERIC EXPRESSION. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE THE +PARENTHESES ARE NOT MATCHED. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO COMPUTE: 8+(7-(9-88)/3+(7-9)-3 + +ERROR in line 250: Incomplete statement diff --git a/NBS2/P036.dif b/NBS2/P036.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P036.run b/NBS2/P036.run new file mode 100644 index 0000000..42e015f --- /dev/null +++ b/NBS2/P036.run @@ -0,0 +1,28 @@ +PROGRAM FILE 36: ERROR - UNMATCHED PARENTHESIS IN + NUMERIC EXPRESSION. + ANSI STANDARD 7.2 + +SECTION 36.1: ERROR - UNMATCHED PARENTHESIS IN + NUMERIC EXPRESSION. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE THE +PARENTHESES ARE NOT MATCHED. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO COMPUTE: 8+(7-(9-88)/3+(7-9)-3 + +ERROR in line 250: Incomplete statement diff --git a/NBS2/P037.80 b/NBS2/P037.80 new file mode 100644 index 0000000..840027e --- /dev/null +++ b/NBS2/P037.80 @@ -0,0 +1,26 @@ +PROGRAM FILE 37: ERROR - USE OF '**' AS OPERATOR. + ANSI STANDARD 7.2 + +SECTION 37.1: ERROR - USE OF '**' AS OPERATOR. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE A +DOUBLE ASTERISK (**) IS USED AS AN OPERATOR, PRESUMABLY +FOR INVOLUTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: Syntax error diff --git a/NBS2/P037.BAS b/NBS2/P037.BAS new file mode 100644 index 0000000..83838ce --- /dev/null +++ b/NBS2/P037.BAS @@ -0,0 +1,31 @@ +10 PRINT "PROGRAM FILE 37: ERROR - USE OF '**' AS OPERATOR." +20 PRINT " ANSI STANDARD 7.2" +30 PRINT +40 PRINT "SECTION 37.1: ERROR - USE OF '**' AS OPERATOR." +50 PRINT +60 PRINT "THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS" +70 PRINT "A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE A" +80 PRINT "DOUBLE ASTERISK (**) IS USED AS AN OPERATOR, PRESUMABLY" +90 PRINT "FOR INVOLUTION." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST" +240 PRINT +250 LET A=5**2 +260 PRINT "VALUE ASSIGNED FOR 5**2 = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 37" +310 END diff --git a/NBS2/P037.OUT b/NBS2/P037.OUT new file mode 100644 index 0000000..a458185 --- /dev/null +++ b/NBS2/P037.OUT @@ -0,0 +1,26 @@ +PROGRAM FILE 37: ERROR - USE OF '**' AS OPERATOR. + ANSI STANDARD 7.2 + +SECTION 37.1: ERROR - USE OF '**' AS OPERATOR. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE A +DOUBLE ASTERISK (**) IS USED AS AN OPERATOR, PRESUMABLY +FOR INVOLUTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: Syntax error diff --git a/NBS2/P037.dif b/NBS2/P037.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P037.run b/NBS2/P037.run new file mode 100644 index 0000000..840027e --- /dev/null +++ b/NBS2/P037.run @@ -0,0 +1,26 @@ +PROGRAM FILE 37: ERROR - USE OF '**' AS OPERATOR. + ANSI STANDARD 7.2 + +SECTION 37.1: ERROR - USE OF '**' AS OPERATOR. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE A +DOUBLE ASTERISK (**) IS USED AS AN OPERATOR, PRESUMABLY +FOR INVOLUTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: Syntax error diff --git a/NBS2/P038.80 b/NBS2/P038.80 new file mode 100644 index 0000000..20c91ee --- /dev/null +++ b/NBS2/P038.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 38: ERROR - USE OF ADJACENT OPERATORS. + ANSI STANDARD 7.2 + +SECTION 38.1: ERROR - USE OF ADJACENT OPERATORS. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE TWO +OPERATORS ARE USED IN SUCCESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: Syntax error diff --git a/NBS2/P038.BAS b/NBS2/P038.BAS new file mode 100644 index 0000000..91f3f4a --- /dev/null +++ b/NBS2/P038.BAS @@ -0,0 +1,30 @@ +10 PRINT "PROGRAM FILE 38: ERROR - USE OF ADJACENT OPERATORS." +20 PRINT " ANSI STANDARD 7.2" +30 PRINT +40 PRINT "SECTION 38.1: ERROR - USE OF ADJACENT OPERATORS." +50 PRINT +60 PRINT "THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS" +70 PRINT "A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE TWO" +80 PRINT "OPERATORS ARE USED IN SUCCESSION." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST" +240 PRINT +250 LET A=4 ^ -2 +260 PRINT "VALUE ASSIGNED FOR 4 ^ -2 = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 38" +310 END diff --git a/NBS2/P038.OUT b/NBS2/P038.OUT new file mode 100644 index 0000000..f392e3d --- /dev/null +++ b/NBS2/P038.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 38: ERROR - USE OF ADJACENT OPERATORS. + ANSI STANDARD 7.2 + +SECTION 38.1: ERROR - USE OF ADJACENT OPERATORS. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE TWO +OPERATORS ARE USED IN SUCCESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: Syntax error diff --git a/NBS2/P038.dif b/NBS2/P038.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P038.run b/NBS2/P038.run new file mode 100644 index 0000000..20c91ee --- /dev/null +++ b/NBS2/P038.run @@ -0,0 +1,25 @@ +PROGRAM FILE 38: ERROR - USE OF ADJACENT OPERATORS. + ANSI STANDARD 7.2 + +SECTION 38.1: ERROR - USE OF ADJACENT OPERATORS. + +THIS SECTION TESTS WHETHER THE PROCESSOR DETECTS AND REPORTS +A NUMERIC EXPRESSION WHICH IS IMPROPERLY FORMED BECAUSE TWO +OPERATORS ARE USED IN SUCCESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: Syntax error diff --git a/NBS2/P039.80 b/NBS2/P039.80 new file mode 100644 index 0000000..1f3912b --- /dev/null +++ b/NBS2/P039.80 @@ -0,0 +1,61 @@ +PROGRAM FILE 39: ACCURACY OF ADDITION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 39.1 ACCURACY OF ADDITION. + +THIS SECTION TESTS THE ACCURACY OF ADDITION. THE COMPUTED +RESULT IS COMPARED WITH A RANGE ESTABLISHED BY PERTURBING +EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT PASSES IF +IT FALLS WITHIN THE EXTREME VALUES GENERATED BY THIS +PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS + 0 765.432 765.432 765.432 PASS + 876.543 123.453 999.996 999.996 PASS + 8.11111E-2 1.11111E-2 9.22222E-2 9.22222E-2 PASS +-57.9999 -.111111 -58.111 -58.111 PASS + 1.11111E+6 1.11111E+6 2.22222E+6 2.22222E+6 PASS + 6.54321 1.23456 7.77777E+6 7.77777 PASS + 6.54321E-10 1.23456E-10 7.77777E-10 7.77777E-10 PASS +-6.54321E-20 -1.23456E-20 -7.77777E-20 -7.77777E-20 PASS + 6.54321E-30 1.23456E-30 7.77777E-30 7.77777E-30 PASS + 6.54321E-38 1.23456E-38 7.77777E-38 7.77777E-38 PASS + 1.23456E+10 6.54321E+10 7.77777E+10 7.77777E+10 PASS +-1.23456E+20 -6.54321E+20 -7.77777E+20 -7.77777E+20 PASS + 1.23456E+30 6.54321E+30 7.77777E+30 7.77777E+30 PASS + 1.23456E+37 6.54321E+37 7.77777E+37 7.77777E+37 PASS + 4.99997E-2 4.99996E-2 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-7 9.99997E-2 9.99997E-2 PASS + 9.99993E-2 4.E-8 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-9 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-10 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-11 9.99993E-2 9.99993E-2 PASS +-1.0203E+6 4 -1.0203E+6 -1.0203E+6 PASS + 1.0203E+6 -304 1.02E+6 1.02E+6 PASS +-1.0203E+6 20304 -1.E+6 -1.E+6 PASS +-1.0203E+6 1.0203E+6 0 0 PASS +-.10203 4.E-7 -.10203 -.10203 PASS + .10203 -3.04E-5 .102 .102 PASS +-.10203 2.0304E-3 -.1 -.1 PASS +-.10203 .10203 0 0 PASS +-.10203 .10203 -1.E-7 -1.E-7 PASS +-.10203 .10203 1.E-7 1.E-7 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 39 diff --git a/NBS2/P039.BAS b/NBS2/P039.BAS new file mode 100644 index 0000000..00e5b76 --- /dev/null +++ b/NBS2/P039.BAS @@ -0,0 +1,107 @@ +10 PRINT "PROGRAM FILE 39: ACCURACY OF ADDITION" +20 PRINT " ANSI STANDARD 7.2, 7.4, 7.6" +30 PRINT +40 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA'" +50 PRINT " WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +60 PRINT " THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE" +70 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +80 PRINT +100 PRINT "SECTION 39.1 ACCURACY OF ADDITION." +110 PRINT +120 PRINT "THIS SECTION TESTS THE ACCURACY OF ADDITION. THE COMPUTED" +130 PRINT "RESULT IS COMPARED WITH A RANGE ESTABLISHED BY PERTURBING" +140 PRINT "EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT PASSES IF" +150 PRINT "IT FALLS WITHIN THE EXTREME VALUES GENERATED BY THIS" +160 PRINT "PERTURBATION (ACCURATE TO SIX DIGITS)." +220 PRINT +230 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +240 PRINT "DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS." +250 PRINT +260 PRINT " BEGIN TEST" +270 PRINT +280 PRINT "FIRST","SECOND","TRUE","COMPUTED","TEST" +290 PRINT "OPERAND","OPERAND","VALUE","VALUE","RESULT" +300 PRINT +310 LET F=0 +320 READ A1,A2,T,L,H +330 IF A1=999 THEN 480 +335 LET M$="PASS" +340 LET C=A1+A2 +350 IF CH THEN 380 +370 GOTO 400 +380 LET M$="FAIL" +390 LET F=F+1 +400 PRINT A1,A2,T,C,M$ +410 GOTO 320 +480 PRINT +490 IF F=0 THEN 520 +500 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +510 GOTO 530 +520 PRINT "*** INFORMATIVE TEST PASSED ***" +530 PRINT +540 PRINT " END TEST" +550 PRINT +560 PRINT "END PROGRAM 39" +570 DATA 0,0,0,0,0 +2000 DATA 0,765.432,765.432,765.431,765.433 +3000 DATA 0.876543000E+03, 0.123453000E+03, 0.999996000E+03 +3010 DATA 0.999993499E+03, 0.999998500E+03 +3020 DATA 0.811111000E-01, 0.111111000E-01, 0.922222000E-01 +3030 DATA 0.922219499E-01, 0.922224500E-01 +3040 DATA -0.579999000E+02,-0.111111000E+00,-0.581110110E+02 +3050 DATA -0.581111621E+02,-0.581108600E+02 +3060 DATA 0.111111100E+07, 0.111111100E+07, 0.222222200E+07 +3070 DATA 0.222219700E+07, 0.222224700E+07 +3080 DATA 0.654321000E+01, 0.123456000E+01, 0.777777000E+07 +3090 DATA 0.777774499E+01, 0.777779500E+01 +3100 DATA 0.654321000E-09, 0.123456000E-09, 0.777777000E-09 +3110 DATA 0.777774499E-09, 0.777779500E-09 +3120 DATA -0.654321000E-19,-0.123456000E-19,-0.777777000E-19 +3130 DATA -0.777779500E-19,-0.777774499E-19 +3140 DATA 0.654321000E-29, 0.123456000E-29, 0.777777000E-29 +3150 DATA 0.777774500E-29, 0.777779500E-29 +3160 DATA 0.654321000E-37, 0.123456000E-37, 0.777777000E-37 +3170 DATA 0.777774500E-37, 0.777779500E-37 +3180 DATA 0.123456000E+11, 0.654321000E+11, 0.777777000E+11 +3190 DATA 0.777774500E+11, 0.777779500E+11 +3200 DATA -0.123456000E+21,-0.654321000E+21,-0.777777000E+21 +3210 DATA -0.777779500E+21,-0.777774500E+21 +3220 DATA 0.123456000E+31, 0.654321000E+31, 0.777777000E+31 +3230 DATA 0.777774499E+31, 0.777779500E+31 +3240 DATA 0.123456000E+38, 0.654321000E+38, 0.777777000E+38 +3250 DATA 0.777774499E+38, 0.777779500E+38 +3260 DATA 0.499997000E-01, 0.499996000E-01, 0.999993000E-01 +3270 DATA 0.999990499E-01, 0.999995500E-01 +3280 DATA 0.999993000E-01, 0.400000000E-06, 0.999997000E-01 +3290 DATA 0.999995499E-01, 0.999998501E-01 +3300 DATA 0.999993000E-01, 0.400000000E-07, 0.999993400E-01 +3310 DATA 0.999991899E-01, 0.999994901E-01 +3320 DATA 0.999993000E-01, 0.400000000E-08, 0.999993040E-01 +3330 DATA 0.999991539E-01, 0.999994541E-01 +3340 DATA 0.999993000E-01, 0.400000000E-09, 0.999993004E-01 +3350 DATA 0.999991503E-01, 0.999994505E-01 +3360 DATA 0.999993000E-01, 0.400000000E-10, 0.999993000E-01 +3370 DATA 0.999991500E-01, 0.999994501E-01 +3380 DATA -0.102030400E+07, 0.400000000E+01,-0.102030000E+07 +3390 DATA -0.102031501E+07,-0.102028499E+07 +3400 DATA 0.102030400E+07,-0.304000000E+03, 0.102000000E+07 +3410 DATA 0.101998499E+07, 0.102001501E+07 +3420 DATA -0.102030400E+07, 0.203040000E+05,-0.100000000E+07 +3430 DATA -0.100001501E+07,-0.999989400E+06 +3440 DATA -0.102030400E+07, 0.102030400E+07, 0.000000000E+00 +3450 DATA -0.200000500E+02, 0.200000500E+02 +3460 DATA -0.102030400E+00, 0.400000000E-06,-0.102030000E+00 +3470 DATA -0.102031501E+00,-0.102028499E+00 +3480 DATA 0.102030400E+00,-0.304000000E-04, 0.102000000E+00 +3490 DATA 0.101998499E+00, 0.102001501E+00 +3500 DATA -0.102030400E+00, 0.203040000E-02,-0.100000000E+00 +3510 DATA -0.100001501E+00,-0.999989400E-01 +3520 DATA -0.102030400E+00, 0.102030400E+00, 0.000000000E+00 +3530 DATA -0.200000500E-05, 0.200000500E-05 +3540 DATA -0.102030400E+00, 0.102030300E+00,-0.100000000E-06 +3550 DATA -0.210000501E-05, 0.190000500E+00 +3560 DATA -0.102030400E+00, 0.102030500E+00, 0.100000000E-06 +3570 DATA -0.190000500E-05, 0.210000501E-05 +5000 DATA 999,0,0,0,0 +5010 END diff --git a/NBS2/P039.OUT b/NBS2/P039.OUT new file mode 100644 index 0000000..2a35e3b --- /dev/null +++ b/NBS2/P039.OUT @@ -0,0 +1,61 @@ +PROGRAM FILE 39: ACCURACY OF ADDITION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 39.1 ACCURACY OF ADDITION. + +THIS SECTION TESTS THE ACCURACY OF ADDITION. THE COMPUTED +RESULT IS COMPARED WITH A RANGE ESTABLISHED BY PERTURBING +EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT PASSES IF +IT FALLS WITHIN THE EXTREME VALUES GENERATED BY THIS +PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS + 0 765.432 765.432 765.432 PASS + 876.543 123.453 999.996 999.996 PASS + 8.11111E-2 1.11111E-2 9.22222E-2 9.22222E-2 PASS +-57.9999 -.111111 -58.111 -58.111 PASS + 1.11111E+6 1.11111E+6 2.22222E+6 2.22222E+6 PASS + 6.54321 1.23456 7.77777E+6 7.77777 PASS + 6.54321E-10 1.23456E-10 7.77777E-10 7.77777E-10 PASS +-6.54321E-20 -1.23456E-20 -7.77777E-20 -7.77777E-20 PASS + 6.54321E-30 1.23456E-30 7.77777E-30 7.77777E-30 PASS + 6.54321E-38 1.23456E-38 7.77777E-38 7.77777E-38 PASS + 1.23456E+10 6.54321E+10 7.77777E+10 7.77777E+10 PASS +-1.23456E+20 -6.54321E+20 -7.77777E+20 -7.77777E+20 PASS + 1.23456E+30 6.54321E+30 7.77777E+30 7.77777E+30 PASS + 1.23456E+37 6.54321E+37 7.77777E+37 7.77777E+37 PASS + 4.99997E-2 4.99996E-2 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-7 9.99997E-2 9.99997E-2 PASS + 9.99993E-2 4.E-8 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-9 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-10 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-11 9.99993E-2 9.99993E-2 PASS +-1.0203E+6 4 -1.0203E+6 -1.0203E+6 PASS + 1.0203E+6 -304 1.02E+6 1.02E+6 PASS +-1.0203E+6 20304 -1.E+6 -1.E+6 PASS +-1.0203E+6 1.0203E+6 0 0 PASS +-.10203 4.E-7 -.10203 -.10203 PASS + .10203 -3.04E-5 .102 .102 PASS +-.10203 2.0304E-3 -.1 -.1 PASS +-.10203 .10203 0 0 PASS +-.10203 .10203 -1.E-7 -1.E-7 PASS +-.10203 .10203 1.E-7 1.E-7 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 39 diff --git a/NBS2/P039.dif b/NBS2/P039.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P039.run b/NBS2/P039.run new file mode 100644 index 0000000..1f3912b --- /dev/null +++ b/NBS2/P039.run @@ -0,0 +1,61 @@ +PROGRAM FILE 39: ACCURACY OF ADDITION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 39.1 ACCURACY OF ADDITION. + +THIS SECTION TESTS THE ACCURACY OF ADDITION. THE COMPUTED +RESULT IS COMPARED WITH A RANGE ESTABLISHED BY PERTURBING +EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT PASSES IF +IT FALLS WITHIN THE EXTREME VALUES GENERATED BY THIS +PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS + 0 765.432 765.432 765.432 PASS + 876.543 123.453 999.996 999.996 PASS + 8.11111E-2 1.11111E-2 9.22222E-2 9.22222E-2 PASS +-57.9999 -.111111 -58.111 -58.111 PASS + 1.11111E+6 1.11111E+6 2.22222E+6 2.22222E+6 PASS + 6.54321 1.23456 7.77777E+6 7.77777 PASS + 6.54321E-10 1.23456E-10 7.77777E-10 7.77777E-10 PASS +-6.54321E-20 -1.23456E-20 -7.77777E-20 -7.77777E-20 PASS + 6.54321E-30 1.23456E-30 7.77777E-30 7.77777E-30 PASS + 6.54321E-38 1.23456E-38 7.77777E-38 7.77777E-38 PASS + 1.23456E+10 6.54321E+10 7.77777E+10 7.77777E+10 PASS +-1.23456E+20 -6.54321E+20 -7.77777E+20 -7.77777E+20 PASS + 1.23456E+30 6.54321E+30 7.77777E+30 7.77777E+30 PASS + 1.23456E+37 6.54321E+37 7.77777E+37 7.77777E+37 PASS + 4.99997E-2 4.99996E-2 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-7 9.99997E-2 9.99997E-2 PASS + 9.99993E-2 4.E-8 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-9 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-10 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 4.E-11 9.99993E-2 9.99993E-2 PASS +-1.0203E+6 4 -1.0203E+6 -1.0203E+6 PASS + 1.0203E+6 -304 1.02E+6 1.02E+6 PASS +-1.0203E+6 20304 -1.E+6 -1.E+6 PASS +-1.0203E+6 1.0203E+6 0 0 PASS +-.10203 4.E-7 -.10203 -.10203 PASS + .10203 -3.04E-5 .102 .102 PASS +-.10203 2.0304E-3 -.1 -.1 PASS +-.10203 .10203 0 0 PASS +-.10203 .10203 -1.E-7 -1.E-7 PASS +-.10203 .10203 1.E-7 1.E-7 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 39 diff --git a/NBS2/P040.80 b/NBS2/P040.80 new file mode 100644 index 0000000..2b2a6ae --- /dev/null +++ b/NBS2/P040.80 @@ -0,0 +1,61 @@ +PROGRAM FILE 40: ACCURACY OF SUBTRACTION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 40.1 ACCURACY OF SUBTRACTION. + +THIS SECTION TESTS THE ACCURACY OF SUBTRACTION. THE COMPUTED +RESULT IS COMPARED WITH A RANGE ESTABLISHED BY PERTURBING +EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT PASSES IF +IT FALLS WITHIN THE EXTREME VALUES GENERATED BY THIS +PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS + 0 -765.432 765.432 765.432 PASS + 876.543 -123.453 999.996 999.996 PASS + 8.11111E-2 -1.11111E-2 9.22222E-2 9.22222E-2 PASS +-57.9999 .111111 -58.111 -58.111 PASS + 1.11111E+6 -1.11111E+6 2.22222E+6 2.22222E+6 PASS + 6.54321 -1.23456 7.77777 7.77777 PASS + 6.54321E-10 -1.23456E-10 7.77777E-10 7.77777E-10 PASS +-6.54321E-20 1.23456E-20 -7.77777E-20 -7.77777E-20 PASS + 6.54321E-30 -1.23456E-30 7.77777E-30 7.77777E-30 PASS + 6.54321E-38 -1.23456E-38 7.77777E-38 7.77777E-38 PASS + 1.23456E+10 -6.54321E+10 7.77777E+10 7.77777E+10 PASS +-1.23456E+20 6.54321E+20 -7.77777E+20 -7.77777E+20 PASS + 1.23456E+30 -6.54321E+30 7.77777E+30 7.77777E+30 PASS + 1.23456E+37 -6.54321E+37 7.77777E+37 7.77777E+37 PASS + 4.99997E-2 -4.99996E-2 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-7 9.99997E-2 9.99997E-2 PASS + 9.99993E-2 -4.E-8 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-9 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-10 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-11 9.99993E-2 9.99993E-2 PASS +-1.0203E+6 -4 -1.0203E+6 -1.0203E+6 PASS + 1.0203E+6 304 1.02E+6 1.02E+6 PASS +-1.0203E+6 -20304 -1.E+6 -1.E+6 PASS +-1.0203E+6 -1.0203E+6 0 0 PASS +-.10203 -4.E-7 -.10203 -.10203 PASS + .10203 3.04E-5 .102 .102 PASS +-.10203 -2.0304E-3 -.1 -.1 PASS +-.10203 -.10203 0 0 PASS +-.10203 -.10203 -1.E-7 -1.E-7 PASS +-.10203 -.10203 1.E-7 1.E-7 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 40 diff --git a/NBS2/P040.BAS b/NBS2/P040.BAS new file mode 100644 index 0000000..4897c77 --- /dev/null +++ b/NBS2/P040.BAS @@ -0,0 +1,107 @@ +10 PRINT "PROGRAM FILE 40: ACCURACY OF SUBTRACTION" +20 PRINT " ANSI STANDARD 7.2, 7.4, 7.6" +30 PRINT +40 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA'" +50 PRINT " WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +60 PRINT " THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE" +70 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +80 PRINT +100 PRINT "SECTION 40.1 ACCURACY OF SUBTRACTION." +110 PRINT +120 PRINT "THIS SECTION TESTS THE ACCURACY OF SUBTRACTION. THE COMPUTED" +130 PRINT "RESULT IS COMPARED WITH A RANGE ESTABLISHED BY PERTURBING" +140 PRINT "EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT PASSES IF" +150 PRINT "IT FALLS WITHIN THE EXTREME VALUES GENERATED BY THIS" +160 PRINT "PERTURBATION (ACCURATE TO SIX DIGITS)." +220 PRINT +230 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +240 PRINT "DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS." +250 PRINT +260 PRINT " BEGIN TEST" +270 PRINT +280 PRINT "FIRST","SECOND","TRUE","COMPUTED","TEST" +290 PRINT "OPERAND","OPERAND","VALUE","VALUE","RESULT" +300 PRINT +310 LET F=0 +320 READ A1,A2,T,L,H +330 IF A1=999 THEN 480 +335 LET M$="PASS" +340 LET C=A1-A2 +350 IF CH THEN 380 +370 GOTO 400 +380 LET M$="FAIL" +390 LET F=F+1 +400 PRINT A1,A2,T,C,M$ +410 GOTO 320 +480 PRINT +490 IF F=0 THEN 520 +500 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +510 GOTO 530 +520 PRINT "*** INFORMATIVE TEST PASSED ***" +530 PRINT +540 PRINT " END TEST" +550 PRINT +560 PRINT "END PROGRAM 40" +570 DATA 0,0,0,0,0 +2000 DATA 0,-765.432,765.432,765.431,765.433 +3000 DATA 0.876543000E+03,-0.123453000E+03, 0.999996000E+03 +3010 DATA 0.999993499E+03, 0.999998500E+03 +3020 DATA 0.811111000E-01,-0.111111000E-01, 0.922222000E-01 +3030 DATA 0.922219499E-01, 0.922224500E-01 +3040 DATA -0.579999000E+02, 0.111111000E+00,-0.581110110E+02 +3050 DATA -0.581111621E+02,-0.581108600E+02 +3060 DATA 0.111111100E+07,-0.111111100E+07, 0.222222200E+07 +3070 DATA 0.222219700E+07, 0.222224700E+07 +3080 DATA 0.654321000E+01,-0.123456000E+01, 0.777777000E+01 +3090 DATA 0.777774499E+01, 0.777779500E+01 +3100 DATA 0.654321000E-09,-0.123456000E-09, 0.777777000E-09 +3110 DATA 0.777774499E-09, 0.777779500E-09 +3120 DATA -0.654321000E-19, 0.123456000E-19,-0.777777000E-19 +3130 DATA -0.777779500E-19,-0.777774499E-19 +3140 DATA 0.654321000E-29,-0.123456000E-29, 0.777777000E-29 +3150 DATA 0.777774500E-29, 0.777779500E-29 +3160 DATA 0.654321000E-37,-0.123456000E-37, 0.777777000E-37 +3170 DATA 0.777774500E-37, 0.777779500E-37 +3180 DATA 0.123456000E+11,-0.654321000E+11, 0.777777000E+11 +3190 DATA 0.777774500E+11, 0.777779500E+11 +3200 DATA -0.123456000E+21, 0.654321000E+21,-0.777777000E+21 +3210 DATA -0.777779500E+21,-0.777774500E+21 +3220 DATA 0.123456000E+31,-0.654321000E+31, 0.777777000E+31 +3230 DATA 0.777774499E+31, 0.777779500E+31 +3240 DATA 0.123456000E+38,-0.654321000E+38, 0.777777000E+38 +3250 DATA 0.777774499E+38, 0.777779500E+38 +3260 DATA 0.499997000E-01,-0.499996000E-01, 0.999993000E-01 +3270 DATA 0.999990499E-01, 0.999995500E-01 +3280 DATA 0.999993000E-01,-0.400000000E-06, 0.999997000E-01 +3290 DATA 0.999995499E-01, 0.999998501E-01 +3300 DATA 0.999993000E-01,-0.400000000E-07, 0.999993040E-01 +3310 DATA 0.999991899E-01, 0.999994901E-01 +3320 DATA 0.999993000E-01,-0.400000000E-08, 0.999993040E-01 +3330 DATA 0.999991539E-01, 0.999994541E-01 +3340 DATA 0.999993000E-01,-0.400000000E-09, 0.999993004E-01 +3350 DATA 0.999991503E-01, 0.999994505E-01 +3360 DATA 0.999993000E-01,-0.400000000E-10, 0.999993000E-01 +3370 DATA 0.999991500E-01, 0.999994501E-01 +3380 DATA -0.102030400E+07,-0.400000000E+01,-0.102030000E+07 +3390 DATA -0.102031501E+07,-0.102028499E+07 +3400 DATA 0.102030400E+07, 0.304000000E+03, 0.102000000E+07 +3410 DATA 0.101998499E+07, 0.102001501E+07 +3420 DATA -0.102030400E+07,-0.203040000E+05,-0.100000000E+07 +3430 DATA -0.100001510E+07,-0.999989400E+06 +3440 DATA -0.102030400E+07,-0.102030400E+07, 0.000000000E+00 +3450 DATA -0.200000500E+02, 0.200000500E+02 +3460 DATA -0.102030400E+00,-0.400000000E-06,-0.102030000E+00 +3470 DATA -0.102031501E+00,-0.102028499E+00 +3480 DATA 0.102030400E+00, 0.304000000E-04, 0.102000000E+00 +3490 DATA 0.101998499E+00, 0.102001501E+00 +3500 DATA -0.102030400E+00,-0.203040000E-02,-0.100000000E+00 +3510 DATA -0.100001501E+00,-0.999989400E-01 +3520 DATA -0.102030400E+00,-0.102030400E+00, 0.000000000E+00 +3530 DATA -0.200000500E-05, 0.200000500E-05 +3540 DATA -0.102030400E+00,-0.102030300E+00,-0.100000000E-06 +3550 DATA -0.210000501E-05, 0.190000500E-05 +3560 DATA -0.102030400E+00,-0.102030500E+00, 0.100000000E-06 +3570 DATA -0.190000500E-05, 0.210000501E-05 +5000 DATA 999,0,0,0,0 +5010 END diff --git a/NBS2/P040.OUT b/NBS2/P040.OUT new file mode 100644 index 0000000..5758474 --- /dev/null +++ b/NBS2/P040.OUT @@ -0,0 +1,61 @@ +PROGRAM FILE 40: ACCURACY OF SUBTRACTION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 40.1 ACCURACY OF SUBTRACTION. + +THIS SECTION TESTS THE ACCURACY OF SUBTRACTION. THE COMPUTED +RESULT IS COMPARED WITH A RANGE ESTABLISHED BY PERTURBING +EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT PASSES IF +IT FALLS WITHIN THE EXTREME VALUES GENERATED BY THIS +PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS + 0 -765.432 765.432 765.432 PASS + 876.543 -123.453 999.996 999.996 PASS + 8.11111E-2 -1.11111E-2 9.22222E-2 9.22222E-2 PASS +-57.9999 .111111 -58.111 -58.111 PASS + 1.11111E+6 -1.11111E+6 2.22222E+6 2.22222E+6 PASS + 6.54321 -1.23456 7.77777 7.77777 PASS + 6.54321E-10 -1.23456E-10 7.77777E-10 7.77777E-10 PASS +-6.54321E-20 1.23456E-20 -7.77777E-20 -7.77777E-20 PASS + 6.54321E-30 -1.23456E-30 7.77777E-30 7.77777E-30 PASS + 6.54321E-38 -1.23456E-38 7.77777E-38 7.77777E-38 PASS + 1.23456E+10 -6.54321E+10 7.77777E+10 7.77777E+10 PASS +-1.23456E+20 6.54321E+20 -7.77777E+20 -7.77777E+20 PASS + 1.23456E+30 -6.54321E+30 7.77777E+30 7.77777E+30 PASS + 1.23456E+37 -6.54321E+37 7.77777E+37 7.77777E+37 PASS + 4.99997E-2 -4.99996E-2 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-7 9.99997E-2 9.99997E-2 PASS + 9.99993E-2 -4.E-8 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-9 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-10 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-11 9.99993E-2 9.99993E-2 PASS +-1.0203E+6 -4 -1.0203E+6 -1.0203E+6 PASS + 1.0203E+6 304 1.02E+6 1.02E+6 PASS +-1.0203E+6 -20304 -1.E+6 -1.E+6 PASS +-1.0203E+6 -1.0203E+6 0 0 PASS +-.10203 -4.E-7 -.10203 -.10203 PASS + .10203 3.04E-5 .102 .102 PASS +-.10203 -2.0304E-3 -.1 -.1 PASS +-.10203 -.10203 0 0 PASS +-.10203 -.10203 -1.E-7 -1.E-7 PASS +-.10203 -.10203 1.E-7 1.E-7 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 40 diff --git a/NBS2/P040.dif b/NBS2/P040.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P040.run b/NBS2/P040.run new file mode 100644 index 0000000..2b2a6ae --- /dev/null +++ b/NBS2/P040.run @@ -0,0 +1,61 @@ +PROGRAM FILE 40: ACCURACY OF SUBTRACTION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 40.1 ACCURACY OF SUBTRACTION. + +THIS SECTION TESTS THE ACCURACY OF SUBTRACTION. THE COMPUTED +RESULT IS COMPARED WITH A RANGE ESTABLISHED BY PERTURBING +EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT PASSES IF +IT FALLS WITHIN THE EXTREME VALUES GENERATED BY THIS +PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS + 0 -765.432 765.432 765.432 PASS + 876.543 -123.453 999.996 999.996 PASS + 8.11111E-2 -1.11111E-2 9.22222E-2 9.22222E-2 PASS +-57.9999 .111111 -58.111 -58.111 PASS + 1.11111E+6 -1.11111E+6 2.22222E+6 2.22222E+6 PASS + 6.54321 -1.23456 7.77777 7.77777 PASS + 6.54321E-10 -1.23456E-10 7.77777E-10 7.77777E-10 PASS +-6.54321E-20 1.23456E-20 -7.77777E-20 -7.77777E-20 PASS + 6.54321E-30 -1.23456E-30 7.77777E-30 7.77777E-30 PASS + 6.54321E-38 -1.23456E-38 7.77777E-38 7.77777E-38 PASS + 1.23456E+10 -6.54321E+10 7.77777E+10 7.77777E+10 PASS +-1.23456E+20 6.54321E+20 -7.77777E+20 -7.77777E+20 PASS + 1.23456E+30 -6.54321E+30 7.77777E+30 7.77777E+30 PASS + 1.23456E+37 -6.54321E+37 7.77777E+37 7.77777E+37 PASS + 4.99997E-2 -4.99996E-2 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-7 9.99997E-2 9.99997E-2 PASS + 9.99993E-2 -4.E-8 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-9 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-10 9.99993E-2 9.99993E-2 PASS + 9.99993E-2 -4.E-11 9.99993E-2 9.99993E-2 PASS +-1.0203E+6 -4 -1.0203E+6 -1.0203E+6 PASS + 1.0203E+6 304 1.02E+6 1.02E+6 PASS +-1.0203E+6 -20304 -1.E+6 -1.E+6 PASS +-1.0203E+6 -1.0203E+6 0 0 PASS +-.10203 -4.E-7 -.10203 -.10203 PASS + .10203 3.04E-5 .102 .102 PASS +-.10203 -2.0304E-3 -.1 -.1 PASS +-.10203 -.10203 0 0 PASS +-.10203 -.10203 -1.E-7 -1.E-7 PASS +-.10203 -.10203 1.E-7 1.E-7 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 40 diff --git a/NBS2/P041.80 b/NBS2/P041.80 new file mode 100644 index 0000000..e998a3e --- /dev/null +++ b/NBS2/P041.80 @@ -0,0 +1,50 @@ +PROGRAM FILE 41: ACCURACY OF MULTIPLICATION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 41.1 ACCURACY OF MULTIPLICATION. + +THIS SECTION TESTS THE ACCURACY OF MULTIPLICATION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS +-3.12345 0 0 0 PASS + 0 6.68589E+37 0 0 PASS + 3.90625 5.24288 20.48 20.48 PASS + 6.46469E-11 3.36466E+10 2.17515 2.17515 PASS + 6.46469E-38 3.36466E+37 2.17515 2.17515 PASS + .465728 4.47578E+37 2.0845E+37 2.0845E+37 PASS + 3.48799 6.58589E+36 2.29715E+37 2.29715E+37 PASS + 4.48588E+10 8.88898E+26 3.98749E+37 3.98749E+37 PASS + 9.95855E+18 9.44647E+18 9.40731E+37 9.40731E+37 PASS + 9.95855E-20 9.44647E-19 9.40731E-38 9.40731E-38 PASS + 9.95855E-30 9.44647E-9 9.40731E-38 9.40731E-38 PASS + 9.95855E-38 .944647 9.40731E-38 9.40731E-38 PASS + .999 .999 .998001 .998001 PASS + 774758 758675 5.8779E+11 5.8779E+11 PASS + 36534.1 -3.38383E-3 -123.625 -123.625 PASS +-9.89878E-2 9.85342E-2 -9.75368E-3 -9.75368E-3 PASS +-.228373 -955.664 218.248 218.248 PASS + .390625 -.248864 -9.72125E-2 -9.72125E-2 PASS +-3.90625E-30 2.48864E+32 -972.125 -972.125 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 41 diff --git a/NBS2/P041.BAS b/NBS2/P041.BAS new file mode 100644 index 0000000..9b203b8 --- /dev/null +++ b/NBS2/P041.BAS @@ -0,0 +1,84 @@ +10 PRINT "PROGRAM FILE 41: ACCURACY OF MULTIPLICATION" +20 PRINT " ANSI STANDARD 7.2, 7.4, 7.6" +30 PRINT +40 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA'" +50 PRINT " WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +60 PRINT " THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE" +70 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +80 PRINT +100 PRINT "SECTION 41.1 ACCURACY OF MULTIPLICATION." +110 PRINT +120 PRINT "THIS SECTION TESTS THE ACCURACY OF MULTIPLICATION. THE " +130 PRINT "COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY" +140 PRINT "PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT" +150 PRINT "PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY" +160 PRINT "THIS PERTURBATION (ACCURATE TO SIX DIGITS)." +220 PRINT +230 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +240 PRINT "DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS." +250 PRINT +260 PRINT " BEGIN TEST" +270 PRINT +280 PRINT "FIRST","SECOND","TRUE","COMPUTED","TEST" +290 PRINT "OPERAND","OPERAND","VALUE","VALUE","RESULT" +300 PRINT +310 LET F=0 +320 READ A1,A2,T,L,H +330 IF A1=999 THEN 480 +335 LET M$="PASS" +340 LET C=A1*A2 +350 IF CH THEN 380 +370 GOTO 400 +380 LET M$="FAIL" +390 LET F=F+1 +400 PRINT A1,A2,T,C,M$ +410 GOTO 320 +480 PRINT +490 IF F=0 THEN 520 +500 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +510 GOTO 530 +520 PRINT "*** INFORMATIVE TEST PASSED ***" +530 PRINT +540 PRINT " END TEST" +550 PRINT +560 PRINT "END PROGRAM 41" +2000 DATA 0,0,0,0,0 +2010 DATA -3.12345,0,0,0,0 +2020 DATA -0,6.68589E37,0,0,0 +3000 DATA 0.390625000E+01, 0.524288000E+01, 0.204800000E+02 +3010 DATA 0.204798585E+02, 0.204801415E+02 +3020 DATA 0.646469000E-10, 0.336466000E+11, 0.217514839E+01 +3030 DATA 0.217513355E+01, 0.217516322E+01 +3040 DATA 0.646469000E-37, 0.336466000E+38, 0.217514839E+01 +3050 DATA 0.217513355E+01, 0.217516322E+01 +3060 DATA 0.465728000E+00, 0.447578000E+38, 0.208449607E+38 +3070 DATA 0.208448193E+38, 0.208451021E+38 +3080 DATA 0.348799000E+01, 0.658589000E+37, 0.229715185E+38 +3090 DATA 0.229713677E+38, 0.229716692E+38 +3100 DATA 0.448588000E+11, 0.888898000E+27, 0.398748976E+38 +3110 DATA 0.398747138E+38, 0.398750814E+38 +3120 DATA 0.995855000E+19, 0.944647000E+19, 0.940731438E+38 +3130 DATA 0.940728997E+38, 0.940733879E+38 +3140 DATA 0.995855000E-19, 0.944647000E-18, 0.940731438E-37 +3150 DATA 0.940728997E-37, 0.940733879E-37 +3160 DATA 0.995855000E-29, 0.944647000E-08, 0.940731438E-37 +3170 DATA 0.940728997E-37, 0.940733879E-37 +3180 DATA 0.995855000E-37, 0.944647000E-00, 0.940731438E-37 +3190 DATA 0.940728997E-37, 0.940733879E-37 +3200 DATA 0.999000000E+00, 0.999000000E+00, 0.998001000E+00 +3210 DATA 0.997998502E+00, 0.998003499E+00 +3220 DATA 0.774758000E+06, 0.758675000E+06, 0.587789526E+12 +3230 DATA 0.587787492E+12, 0.587791560E+12 +3240 DATA 0.365341000E+05,-0.338383000E-02,-0.123625184E+03 +3250 DATA -0.123626388E+03,-0.123623979E+03 +3260 DATA -0.989878000E-01, 0.985342000E-01,-0.975368368E-02 +3270 DATA -0.975370844E-02,-0.975365893E-02 +3280 DATA -0.228373000E+00,-0.955664000E+03, 0.218247855E+03 +3290 DATA 0.218246170E+03, 0.218249539E+03 +3300 DATA 0.390625000E+00,-0.248864000E+00,-0.972125000E-01 +3310 DATA -0.972131895E-01,-0.972118105E-01 +3320 DATA -0.390625000E-29, 0.248864000E+33,-0.972125000E+03 +3330 DATA -0.972131895E+03,-0.972118105E+03 +5000 DATA 999,0,0,0,0 +5010 END diff --git a/NBS2/P041.OUT b/NBS2/P041.OUT new file mode 100644 index 0000000..8c79457 --- /dev/null +++ b/NBS2/P041.OUT @@ -0,0 +1,50 @@ +PROGRAM FILE 41: ACCURACY OF MULTIPLICATION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 41.1 ACCURACY OF MULTIPLICATION. + +THIS SECTION TESTS THE ACCURACY OF MULTIPLICATION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS +-3.12345 0 0 0 PASS + 0 6.68589E+37 0 0 PASS + 3.90625 5.24288 20.48 20.48 PASS + 6.46469E-11 3.36466E+10 2.17515 2.17515 PASS + 6.46469E-38 3.36466E+37 2.17515 2.17515 PASS + .465728 4.47578E+37 2.0845E+37 2.0845E+37 PASS + 3.48799 6.58589E+36 2.29715E+37 2.29715E+37 PASS + 4.48588E+10 8.88898E+26 3.98749E+37 3.98749E+37 PASS + 9.95855E+18 9.44647E+18 9.40731E+37 9.40731E+37 PASS + 9.95855E-20 9.44647E-19 9.40731E-38 9.40731E-38 PASS + 9.95855E-30 9.44647E-9 9.40731E-38 9.40731E-38 PASS + 9.95855E-38 .944647 9.40731E-38 9.40731E-38 PASS + .999 .999 .998001 .998001 PASS + 774758 758675 5.8779E+11 5.8779E+11 PASS + 36534.1 -3.38383E-3 -123.625 -123.625 PASS +-9.89878E-2 9.85342E-2 -9.75368E-3 -9.75368E-3 PASS +-.228373 -955.664 218.248 218.248 PASS + .390625 -.248864 -9.72125E-2 -9.72125E-2 PASS +-3.90625E-30 2.48864E+32 -972.125 -972.125 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 41 diff --git a/NBS2/P041.dif b/NBS2/P041.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P041.run b/NBS2/P041.run new file mode 100644 index 0000000..e998a3e --- /dev/null +++ b/NBS2/P041.run @@ -0,0 +1,50 @@ +PROGRAM FILE 41: ACCURACY OF MULTIPLICATION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 41.1 ACCURACY OF MULTIPLICATION. + +THIS SECTION TESTS THE ACCURACY OF MULTIPLICATION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 0 0 0 PASS +-3.12345 0 0 0 PASS + 0 6.68589E+37 0 0 PASS + 3.90625 5.24288 20.48 20.48 PASS + 6.46469E-11 3.36466E+10 2.17515 2.17515 PASS + 6.46469E-38 3.36466E+37 2.17515 2.17515 PASS + .465728 4.47578E+37 2.0845E+37 2.0845E+37 PASS + 3.48799 6.58589E+36 2.29715E+37 2.29715E+37 PASS + 4.48588E+10 8.88898E+26 3.98749E+37 3.98749E+37 PASS + 9.95855E+18 9.44647E+18 9.40731E+37 9.40731E+37 PASS + 9.95855E-20 9.44647E-19 9.40731E-38 9.40731E-38 PASS + 9.95855E-30 9.44647E-9 9.40731E-38 9.40731E-38 PASS + 9.95855E-38 .944647 9.40731E-38 9.40731E-38 PASS + .999 .999 .998001 .998001 PASS + 774758 758675 5.8779E+11 5.8779E+11 PASS + 36534.1 -3.38383E-3 -123.625 -123.625 PASS +-9.89878E-2 9.85342E-2 -9.75368E-3 -9.75368E-3 PASS +-.228373 -955.664 218.248 218.248 PASS + .390625 -.248864 -9.72125E-2 -9.72125E-2 PASS +-3.90625E-30 2.48864E+32 -972.125 -972.125 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 41 diff --git a/NBS2/P042.80 b/NBS2/P042.80 new file mode 100644 index 0000000..b01a7ce --- /dev/null +++ b/NBS2/P042.80 @@ -0,0 +1,44 @@ +PROGRAM FILE 42: ACCURACY OF DIVISION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 42.1 ACCURACY OF DIVISION. + +THIS SECTION TESTS THE ACCURACY OF DIVISION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 -74.7589 0 0 PASS + 9.72125E+12 2.48864E-3 3.90625E+15 3.90625E+15 PASS +-9.72125E-5 -2.48864E+13 3.90625E-18 3.90625E-18 PASS + 9.36467E-2 9.54647E-2 .980956 .980956 PASS + 3.76465E+37 8.95857E+37 .420229 .420229 PASS + 9.58764E+17 5.58589E+15 171.64 171.64 PASS +-4.57858E-17 -8.79796E-14 5.20414E-4 5.20414E-4 PASS + 2.37847E-38 1.17265E-38 2.02829 2.02829 PASS + 6.84776E+37 -.697536 -9.81707E+37 -9.81707E+37 PASS +-3.46756E+20 2.22736E-17 -1.5568E+37 -1.5568E+37 PASS + .987645 9.87897E-38 9.99745E+36 9.99745E+36 PASS +-4.47563E-37 6.68575 -6.69428E-38 -6.69428E-38 PASS + 8.57653E-20 -8.89763E+17 -9.63912E-38 -9.63912E-38 PASS +-5.57645 -7.86453E+37 7.09063E-38 7.09063E-38 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 42 diff --git a/NBS2/P042.BAS b/NBS2/P042.BAS new file mode 100644 index 0000000..eeecb5a --- /dev/null +++ b/NBS2/P042.BAS @@ -0,0 +1,74 @@ +10 PRINT "PROGRAM FILE 42: ACCURACY OF DIVISION" +20 PRINT " ANSI STANDARD 7.2, 7.4, 7.6" +30 PRINT +40 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA'" +50 PRINT " WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +60 PRINT " THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE" +70 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +80 PRINT +100 PRINT "SECTION 42.1 ACCURACY OF DIVISION." +110 PRINT +120 PRINT "THIS SECTION TESTS THE ACCURACY OF DIVISION. THE " +130 PRINT "COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY" +140 PRINT "PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT" +150 PRINT "PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY" +160 PRINT "THIS PERTURBATION (ACCURATE TO SIX DIGITS)." +220 PRINT +230 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +240 PRINT "DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS." +250 PRINT +260 PRINT " BEGIN TEST" +270 PRINT +280 PRINT "FIRST","SECOND","TRUE","COMPUTED","TEST" +290 PRINT "OPERAND","OPERAND","VALUE","VALUE","RESULT" +300 PRINT +310 LET F=0 +320 READ A1,A2,T,L,H +330 IF A1=999 THEN 480 +335 LET M$="PASS" +340 LET C=A1/A2 +350 IF CH THEN 380 +370 GOTO 400 +380 LET M$="FAIL" +390 LET F=F+1 +400 PRINT A1,A2,T,C,M$ +410 GOTO 320 +480 PRINT +490 IF F=0 THEN 520 +500 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +510 GOTO 530 +520 PRINT "*** INFORMATIVE TEST PASSED ***" +530 PRINT +540 PRINT " END TEST" +550 PRINT +560 PRINT "END PROGRAM 42" +2000 DATA 0,-74.7589,0,0,0 +3000 DATA 0.972125000E+13, 0.248864000E-02, 0.390625000E+16 +3010 DATA 0.390622528E+16, 0.390627472E+16 +3020 DATA -0.972125000E-04,-0.248864000E+14, 0.390625000E-17 +3030 DATA 0.390622528E-17, 0.390627472E-17 +3040 DATA 0.936467000E-01, 0.954647000E-01, 0.980956312E+00 +3050 DATA 0.980953736E+00, 0.980958887E+00 +3060 DATA 0.376465000E+38, 0.895857000E+38, 0.420228898E+00 +3070 DATA 0.420226812E+00, 0.420230984E+00 +3080 DATA 0.958764000E+18, 0.558589000E+16, 0.171640329E+03 +3090 DATA 0.171639343E+03, 0.171641316E+03 +3100 DATA -0.457858000E-16,-0.879796000E-13, 0.520413823E-03 +3110 DATA 0.520411595E-03, 0.520416052E-03 +3120 DATA 0.237847000E-37, 0.117265000E-37, 0.202828636E+01 +3130 DATA 0.202825553E+01, 0.202831619E+01 +3140 DATA 0.684776000E+38,-0.697536000E+00,-0.981707037E+38 +3150 DATA -0.981710379E+38,-0.981703696E+38 +3160 DATA -0.346756000E+21, 0.222736000E-16,-0.155680267E+38 +3170 DATA -0.155681916E+38,-0.155678619E+38 +3200 DATA 0.987645000E+00, 0.987897000E-37, 0.999744913E+37 +3210 DATA 0.999742388E+37, 0.999747437E+37 +3220 DATA -0.447563000E-36, 0.668575000E+01,-0.669428262E-37 +3230 DATA -0.669431259E-37,-0.669425264E-37 +3240 DATA 0.857653000E-19,-0.889763000E+18,-0.963911738E-37 +3250 DATA -0.963914446E-37,-0.963909031E-37 +3260 DATA -0.557645000E+01,-0.786453000E+38, 0.709063352E-37 +3270 DATA 0.709060678E-37, 0.709066025E-37 +5000 DATA 999,0,0,0,0 +5010 END diff --git a/NBS2/P042.OUT b/NBS2/P042.OUT new file mode 100644 index 0000000..78935d2 --- /dev/null +++ b/NBS2/P042.OUT @@ -0,0 +1,44 @@ +PROGRAM FILE 42: ACCURACY OF DIVISION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 42.1 ACCURACY OF DIVISION. + +THIS SECTION TESTS THE ACCURACY OF DIVISION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 -74.7589 0 0 PASS + 9.72125E+12 2.48864E-3 3.90625E+15 3.90625E+15 PASS +-9.72125E-5 -2.48864E+13 3.90625E-18 3.90625E-18 PASS + 9.36467E-2 9.54647E-2 .980956 .980956 PASS + 3.76465E+37 8.95857E+37 .420229 .420229 PASS + 9.58764E+17 5.58589E+15 171.64 171.64 PASS +-4.57858E-17 -8.79796E-14 5.20414E-4 5.20414E-4 PASS + 2.37847E-38 1.17265E-38 2.02829 2.02829 PASS + 6.84776E+37 -.697536 -9.81707E+37 -9.81707E+37 PASS +-3.46756E+20 2.22736E-17 -1.5568E+37 -1.5568E+37 PASS + .987645 9.87897E-38 9.99745E+36 9.99745E+36 PASS +-4.47563E-37 6.68575 -6.69428E-38 -6.69428E-38 PASS + 8.57653E-20 -8.89763E+17 -9.63912E-38 -9.63912E-38 PASS +-5.57645 -7.86453E+37 7.09063E-38 7.09063E-38 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 42 diff --git a/NBS2/P042.dif b/NBS2/P042.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P042.run b/NBS2/P042.run new file mode 100644 index 0000000..b01a7ce --- /dev/null +++ b/NBS2/P042.run @@ -0,0 +1,44 @@ +PROGRAM FILE 42: ACCURACY OF DIVISION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 42.1 ACCURACY OF DIVISION. + +THIS SECTION TESTS THE ACCURACY OF DIVISION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + + 0 -74.7589 0 0 PASS + 9.72125E+12 2.48864E-3 3.90625E+15 3.90625E+15 PASS +-9.72125E-5 -2.48864E+13 3.90625E-18 3.90625E-18 PASS + 9.36467E-2 9.54647E-2 .980956 .980956 PASS + 3.76465E+37 8.95857E+37 .420229 .420229 PASS + 9.58764E+17 5.58589E+15 171.64 171.64 PASS +-4.57858E-17 -8.79796E-14 5.20414E-4 5.20414E-4 PASS + 2.37847E-38 1.17265E-38 2.02829 2.02829 PASS + 6.84776E+37 -.697536 -9.81707E+37 -9.81707E+37 PASS +-3.46756E+20 2.22736E-17 -1.5568E+37 -1.5568E+37 PASS + .987645 9.87897E-38 9.99745E+36 9.99745E+36 PASS +-4.47563E-37 6.68575 -6.69428E-38 -6.69428E-38 PASS + 8.57653E-20 -8.89763E+17 -9.63912E-38 -9.63912E-38 PASS +-5.57645 -7.86453E+37 7.09063E-38 7.09063E-38 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 42 diff --git a/NBS2/P043.80 b/NBS2/P043.80 new file mode 100644 index 0000000..a04299e --- /dev/null +++ b/NBS2/P043.80 @@ -0,0 +1,81 @@ +PROGRAM FILE 43: ACCURACY OF INVOLUTION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 43.1 ACCURACY OF INVOLUTION. + +THIS SECTION TESTS THE ACCURACY OF INVOLUTION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + +-3.46478E+33 0 1 1 PASS +-2.36339E-36 0 1 1 PASS + 0 0 1 1 PASS + 3.98475E-37 0 1 1 PASS + 9.88373E+37 0 1 1 PASS + 0 3.47474E-33 0 0 PASS + 0 8.98675E+33 0 0 PASS +-3.76354 -44 4.71794E-26 4.71794E-26 PASS +-6.87465 -11 -6.16941E-10 -6.16941E-10 PASS +-7364.43 -1 -1.35788E-4 -1.35788E-4 PASS +-33.3874 1 -33.3874 -33.3874 PASS +-984.343 7 -8.95417E+20 -8.95417E+20 PASS +-3.36353 12 2.09674E+6 2.09674E+6 PASS +-1 -33 -1 -1 PASS +-1 -6 1 1 PASS +-1 -1 -1 -1 PASS +-1 1 -1 -1 PASS +-1 8 1 1 PASS +-1 9 -1 -1 PASS +-.474653 -22 1.31742E+7 1.31742E+7 PASS +-2.25242E-3 3 -1.14274E-8 -1.14274E-8 PASS +-5.34278E-5 6 2.32597E-26 2.32597E-26 PASS +-.272625 9 -8.31938E-6 -8.31938E-6 PASS + .363544 -36.3353 9.27457E+15 9.27457E+15 PASS + 4.63542E-3 -1 215.73 215.73 PASS + 2.98746E-5 -2.63545E-3 1.02784 1.02784 PASS + .226399 .847574 .283928 .283928 PASS + 9.98476E-2 1 9.98476E-2 9.98476E-2 PASS + 9.74653E-2 14.3654 2.98144E-15 2.98144E-15 PASS + 1 -22.2222 1 1 PASS + 1 -4.64533E-2 1 1 PASS + 1 9.93764E-2 1 1 PASS + 1 18.7564 1 1 PASS + 847.447 -9.85743 1.36879E-29 1.36879E-29 PASS + 2.28398 -.937362 .461079 .461079 PASS + 93.3847 9.28273E-2 1.52369 1.52369 PASS + 8.37363E+8 2.98383 4.2117E+26 4.2117E+26 PASS + .999988 958576 1.00999E-5 1.00999E-5 PASS +-.999982 947563 -3.91335E-8 -3.91335E-8 PASS +-.999937 976352 1.93032E-27 1.93032E-27 PASS + 1.00002 2.09746E+6 1.6526E+18 1.6526E+18 PASS +-1.00005 353533 -4.74985E+7 -4.74985E+7 PASS +-1.00005 958572 6.52539E+20 6.52539E+20 PASS + .576352 111 2.73115E-27 2.73115E-27 PASS + .578746 -145.432 3.48213E+34 3.48213E+34 PASS + 2.27364 94.4756 5.02918E+33 5.02918E+33 PASS + 2.33333 -99.1234 3.34928E-37 3.34928E-37 PASS + 5.58574E+37 9.76453E-4 1.08857 1.08857 PASS + 5.76363E-30 1.72728E-2 .312576 .312576 PASS + 3.33737E+33 -9.53423E-2 6.36505E-4 6.36505E-4 PASS + 6.23147E-38 -9.36218E-3 2.2301 2.2301 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 43 diff --git a/NBS2/P043.BAS b/NBS2/P043.BAS new file mode 100644 index 0000000..088be90 --- /dev/null +++ b/NBS2/P043.BAS @@ -0,0 +1,153 @@ +10 PRINT "PROGRAM FILE 43: ACCURACY OF INVOLUTION" +20 PRINT " ANSI STANDARD 7.2, 7.4, 7.6" +30 PRINT +40 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA'" +50 PRINT " WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +60 PRINT " THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE" +70 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +80 PRINT +100 PRINT "SECTION 43.1 ACCURACY OF INVOLUTION." +110 PRINT +120 PRINT "THIS SECTION TESTS THE ACCURACY OF INVOLUTION. THE " +130 PRINT "COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY" +140 PRINT "PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT" +150 PRINT "PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY" +160 PRINT "THIS PERTURBATION (ACCURATE TO SIX DIGITS)." +220 PRINT +230 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +240 PRINT "DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS." +250 PRINT +260 PRINT " BEGIN TEST" +270 PRINT +280 PRINT "FIRST","SECOND","TRUE","COMPUTED","TEST" +290 PRINT "OPERAND","OPERAND","VALUE","VALUE","RESULT" +300 PRINT +310 LET F=0 +320 READ A1,A2,T,L,H +330 IF A1=999 THEN 480 +335 LET M$="PASS" +340 LET C=A1^A2 +350 IF CH THEN 380 +370 GOTO 400 +380 LET M$="FAIL" +390 LET F=F+1 +400 PRINT A1,A2,T,C,M$ +410 GOTO 320 +480 PRINT +490 IF F=0 THEN 520 +500 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +510 GOTO 530 +520 PRINT "*** INFORMATIVE TEST PASSED ***" +530 PRINT +540 PRINT " END TEST" +550 PRINT +560 PRINT "END PROGRAM 43" +1990 REM TEST X^0=1 +2000 DATA -3.46478E33,0,1,1,1 +2010 DATA -2.36339E-36,0,1,1,1 +2020 DATA 0,0,1,1,1 +2030 DATA 3.98475E-37,0,1,1,1 +2040 DATA 9.88373E37,0,1,1,1 +2045 REM TEST 0^X=0, FOR X>0 +2050 DATA 0,3.47474E-33,0,0,0 +2060 DATA 0,8.98675E33,0,0,0 +2990 REM TEST A^X, A<-1 +3000 DATA -0.376354000E+01,-0.440000000E+02, 0.471793993E-25 +3010 DATA 0.471738338E-25, 0.471849655E-25 +3020 DATA -0.687465000E+01,-0.110000000E+02,-0.616940788E-09 +3030 DATA -0.616951160E-09,-0.616930416E-09 +3040 DATA -0.736443000E+04,-0.100000000E+01,-0.135787834E-03 +3050 DATA -0.135788519E-03,-0.135787149E-03 +3060 DATA -0.333874000E+02, 0.100000000E+01,-0.333874000E+02 +3070 DATA -0.333875500E+02,-0.333872500E+02 +3080 DATA -0.984343000E+03, 0.700000000E+01,-0.895416722E+21 +3090 DATA -0.895423590E+21,-0.895409854E+21 +3100 DATA -0.336353000E+01, 0.120000000E+02, 0.209673559E+07 +3110 DATA 0.209665578E+07, 0.209681540E+07 +3115 REM TEST -1^X +3120 DATA -0.100000000E+01,-0.330000000E+02,-0.100000000E+01 +3130 DATA -0.100033506E+01,-0.999669556E+00 +3140 DATA -0.100000000E+01,-0.600000000E+01, 0.100000000E+01 +3150 DATA 0.999939502E+00, 0.100006501E+01 +3160 DATA -0.100000000E+01,-0.100000000E+01,-0.100000000E+01 +3170 DATA -0.100001501E+01,-0.999989500E+00 +3180 DATA -0.100000000E+01, 0.100000000E+01,-0.100000000E+01 +3190 DATA -0.100001500E+01,-0.999989500E+00 +3200 DATA -0.100000000E+01, 0.800000000E+01, 0.100000000E+01 +3210 DATA 0.999919502E+00, 0.100008501E+01 +3220 DATA -0.100000000E+01, 0.900000000E+01,-0.10000000E+01 +3230 DATA -0.100009501E+01,-0.999909503E+00 +3235 REM TEST A^X, 011 +3540 DATA 0.847447000E+03,-0.985743000E+01, 0.136878595E-28 +3550 DATA 0.136867274E-28, 0.136889917E-28 +3560 DATA 0.228398000E+01,-0.937362000E+00, 0.461079137E+00 +3570 DATA 0.461076363E+00, 0.461081910E+00 +3580 DATA 0.933847000E+02, 0.928273000E-01, 0.152368565E+01 +3590 DATA 0.152367980E+01, 0.152369149E+01 +3600 DATA 0.837363000E+09, 0.298383000E+01, 0.421170346E+27 +3610 DATA 0.421081821E+27, 0.421258889E+27 +3615 REM TEST A^X, WHERE ABS(A) IS CLOSE TO 1, X IS LARGE +3620 DATA 0.999988000E+00, 0.958576000E+06, 0.100999405E-04 +3630 DATA 0.387260445E-05, 0.263410738E-04 +3640 DATA -0.999982000E+00, 0.947563000E+06,-0.391334786E-07 +3650 DATA -0.100943693E-06,-0.151711334E-07 +3660 DATA -0.999937000E+00, 0.976352000E+06, 0.193031627E-26 +3670 DATA 0.727071227E-27, 0.512483260E-26 +3680 DATA 0.100002000E+01, 0.209746500E+07, 0.165259840E+19 +3690 DATA 0.128553554E+10, 0.212444587E+28 +3700 DATA -0.100005000E+01, 0.353533000E+06,-0.474984719E+08 +3710 DATA -0.162918665E+10,-0.138475470E+07 +3720 DATA -0.100005000E+01, 0.958572000E+06, 0.652538506E+21 +3730 DATA 0.448505410E+17, 0.949298339E+25 +3735 REM TEST A^X, WHERE A^X CLOSE TO LIMITS OF 1E38, 1E-38 +3740 DATA 0.576352000E+00, 0.111000000E+03, 0.273115473E-26 +3750 DATA 0.272911951E-26, 0.273319144E-26 +3760 DATA 0.578746000E+00,-0.145432000E+03, 0.348212882E+35 +3770 DATA 0.347934556E+35, 0.348491430E+35 +3780 DATA 0.227364000E+01, 0.944756000E+02, 0.502917503E+34 +3790 DATA 0.502666781E+34, 0.503168349E+34 +3792 DATA 0.233333000E+01,-0.991234000E+02, 0.334927971E-36 +3795 DATA 0.334752354E-36, 0.335103676E-36 +3799 REM TEST A^X, WHERE A IS CLOSE TO LIMITS OF 1E38, 1E-38 +3800 DATA 0.558574000E+38, 0.976453000E-03, 0.108857473E+01 +3810 DATA 0.108856963E+01, 0.108857984E+01 +3820 DATA 0.576363000E-29, 0.172728000E-01, 0.312575800E+00 +3830 DATA 0.312573186E+00, 0.312578414E+00 +3840 DATA 0.333737000E+34,-0.953423000E-01, 0.636504568E-03 +3850 DATA 0.636498972E-03, 0.636510163E-03 +3860 DATA 0.623147000E-37,-0.936218000E-02, 0.223009693E+01 +3870 DATA 0.223004499E+01, 0.223014888E+01 +5000 DATA 999,0,0,0,0 +5010 END diff --git a/NBS2/P043.OUT b/NBS2/P043.OUT new file mode 100644 index 0000000..3b0f4c5 --- /dev/null +++ b/NBS2/P043.OUT @@ -0,0 +1,81 @@ +PROGRAM FILE 43: ACCURACY OF INVOLUTION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 43.1 ACCURACY OF INVOLUTION. + +THIS SECTION TESTS THE ACCURACY OF INVOLUTION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + +-3.46478E+33 0 1 1 PASS +-2.36339E-36 0 1 1 PASS + 0 0 1 1 PASS + 3.98475E-37 0 1 1 PASS + 9.88373E+37 0 1 1 PASS + 0 3.47474E-33 0 0 PASS + 0 8.98675E+33 0 0 PASS +-3.76354 -44 4.71794E-26 4.71794E-26 PASS +-6.87465 -11 -6.16941E-10 -6.16941E-10 PASS +-7364.43 -1 -1.35788E-4 -1.35788E-4 PASS +-33.3874 1 -33.3874 -33.3874 PASS +-984.343 7 -8.95417E+20 -8.95417E+20 PASS +-3.36353 12 2.09674E+6 2.09674E+6 PASS +-1 -33 -1 -1 PASS +-1 -6 1 1 PASS +-1 -1 -1 -1 PASS +-1 1 -1 -1 PASS +-1 8 1 1 PASS +-1 9 -1 -1 PASS +-.474653 -22 1.31742E+7 1.31742E+7 PASS +-2.25242E-3 3 -1.14274E-8 -1.14274E-8 PASS +-5.34278E-5 6 2.32597E-26 2.32597E-26 PASS +-.272625 9 -8.31938E-6 -8.31938E-6 PASS + .363544 -36.3353 9.27457E+15 9.27457E+15 PASS + 4.63542E-3 -1 215.73 215.73 PASS + 2.98746E-5 -2.63545E-3 1.02784 1.02784 PASS + .226399 .847574 .283928 .283928 PASS + 9.98476E-2 1 9.98476E-2 9.98476E-2 PASS + 9.74653E-2 14.3654 2.98144E-15 2.98144E-15 PASS + 1 -22.2222 1 1 PASS + 1 -4.64533E-2 1 1 PASS + 1 9.93764E-2 1 1 PASS + 1 18.7564 1 1 PASS + 847.447 -9.85743 1.36879E-29 1.36879E-29 PASS + 2.28398 -.937362 .461079 .461079 PASS + 93.3847 9.28273E-2 1.52369 1.52369 PASS + 8.37363E+8 2.98383 4.2117E+26 4.2117E+26 PASS + .999988 958576 1.00999E-5 1.00999E-5 PASS +-.999982 947563 -3.91335E-8 -3.91335E-8 PASS +-.999937 976352 1.93032E-27 1.93032E-27 PASS + 1.00002 2.09746E+6 1.6526E+18 1.6526E+18 PASS +-1.00005 353533 -4.74985E+7 -4.74985E+7 PASS +-1.00005 958572 6.52539E+20 6.52539E+20 PASS + .576352 111 2.73115E-27 2.73115E-27 PASS + .578746 -145.432 3.48213E+34 3.48213E+34 PASS + 2.27364 94.4756 5.02918E+33 5.02918E+33 PASS + 2.33333 -99.1234 3.34928E-37 3.34928E-37 PASS + 5.58574E+37 9.76453E-4 1.08857 1.08857 PASS + 5.76363E-30 1.72728E-2 .312576 .312576 PASS + 3.33737E+33 -9.53423E-2 6.36505E-4 6.36505E-4 PASS + 6.23147E-38 -9.36218E-3 2.2301 2.2301 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 43 diff --git a/NBS2/P043.dif b/NBS2/P043.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P043.run b/NBS2/P043.run new file mode 100644 index 0000000..a04299e --- /dev/null +++ b/NBS2/P043.run @@ -0,0 +1,81 @@ +PROGRAM FILE 43: ACCURACY OF INVOLUTION + ANSI STANDARD 7.2, 7.4, 7.6 + +*** NOTE: THIS PROGRAM MAKES USE OF 'READ' AND 'DATA' + WHICH HAVE NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THESE FEATURES TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 43.1 ACCURACY OF INVOLUTION. + +THIS SECTION TESTS THE ACCURACY OF INVOLUTION. THE +COMPUTED RESULT IS COMPARED WITH A RANGE ESTABLISHED BY +PERTURBING EACH OPERAND BY 1 IN ITS 6TH DIGIT. THE RESULT +PASSES IF IT FALLS WITHIN THE EXTREME VALUES GENERATED BY +THIS PERTURBATION (ACCURATE TO SIX DIGITS). + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR NUMERIC EXPRESSIONS. + + BEGIN TEST + +FIRST SECOND TRUE COMPUTED TEST +OPERAND OPERAND VALUE VALUE RESULT + +-3.46478E+33 0 1 1 PASS +-2.36339E-36 0 1 1 PASS + 0 0 1 1 PASS + 3.98475E-37 0 1 1 PASS + 9.88373E+37 0 1 1 PASS + 0 3.47474E-33 0 0 PASS + 0 8.98675E+33 0 0 PASS +-3.76354 -44 4.71794E-26 4.71794E-26 PASS +-6.87465 -11 -6.16941E-10 -6.16941E-10 PASS +-7364.43 -1 -1.35788E-4 -1.35788E-4 PASS +-33.3874 1 -33.3874 -33.3874 PASS +-984.343 7 -8.95417E+20 -8.95417E+20 PASS +-3.36353 12 2.09674E+6 2.09674E+6 PASS +-1 -33 -1 -1 PASS +-1 -6 1 1 PASS +-1 -1 -1 -1 PASS +-1 1 -1 -1 PASS +-1 8 1 1 PASS +-1 9 -1 -1 PASS +-.474653 -22 1.31742E+7 1.31742E+7 PASS +-2.25242E-3 3 -1.14274E-8 -1.14274E-8 PASS +-5.34278E-5 6 2.32597E-26 2.32597E-26 PASS +-.272625 9 -8.31938E-6 -8.31938E-6 PASS + .363544 -36.3353 9.27457E+15 9.27457E+15 PASS + 4.63542E-3 -1 215.73 215.73 PASS + 2.98746E-5 -2.63545E-3 1.02784 1.02784 PASS + .226399 .847574 .283928 .283928 PASS + 9.98476E-2 1 9.98476E-2 9.98476E-2 PASS + 9.74653E-2 14.3654 2.98144E-15 2.98144E-15 PASS + 1 -22.2222 1 1 PASS + 1 -4.64533E-2 1 1 PASS + 1 9.93764E-2 1 1 PASS + 1 18.7564 1 1 PASS + 847.447 -9.85743 1.36879E-29 1.36879E-29 PASS + 2.28398 -.937362 .461079 .461079 PASS + 93.3847 9.28273E-2 1.52369 1.52369 PASS + 8.37363E+8 2.98383 4.2117E+26 4.2117E+26 PASS + .999988 958576 1.00999E-5 1.00999E-5 PASS +-.999982 947563 -3.91335E-8 -3.91335E-8 PASS +-.999937 976352 1.93032E-27 1.93032E-27 PASS + 1.00002 2.09746E+6 1.6526E+18 1.6526E+18 PASS +-1.00005 353533 -4.74985E+7 -4.74985E+7 PASS +-1.00005 958572 6.52539E+20 6.52539E+20 PASS + .576352 111 2.73115E-27 2.73115E-27 PASS + .578746 -145.432 3.48213E+34 3.48213E+34 PASS + 2.27364 94.4756 5.02918E+33 5.02918E+33 PASS + 2.33333 -99.1234 3.34928E-37 3.34928E-37 PASS + 5.58574E+37 9.76453E-4 1.08857 1.08857 PASS + 5.76363E-30 1.72728E-2 .312576 .312576 PASS + 3.33737E+33 -9.53423E-2 6.36505E-4 6.36505E-4 PASS + 6.23147E-38 -9.36218E-3 2.2301 2.2301 PASS + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 43 diff --git a/NBS2/P044.80 b/NBS2/P044.80 new file mode 100644 index 0000000..54bd8d4 --- /dev/null +++ b/NBS2/P044.80 @@ -0,0 +1,170 @@ +PROGRAM FILE 44: ELEMENTARY USE OF THE FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 44.1: ELEMENTARY USE OF THE FOR-STATEMENT. + +THIS SECTION TESTS A SIMPLE FOR-NEXT CONSTRUCTION WITH +A VARIETY OF VALUES FOR THE INITIAL-VALUE, LIMIT, AND +INCREMENT. TO PASS THE TEST, THE CONTROL-VARIABLE MUST +TAKE ON THE APPROPRIATE VALUES AND THE LOOP MUST BE EXECUTED +THE CORRECT NUMBER OF TIMES. + + BEGIN TEST. + + +LOOP IS: FOR I1= 9.87789E-2 TO .09878 STEP 3.E-7 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 9.87789E-2 9.87789E-2 OK + 9.87792E-2 9.87792E-2 OK + 9.87795E-2 9.87795E-2 OK + 9.87798E-2 9.87798E-2 OK +LOOP EXITED + 9.87801E-2 9.87801E-2 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 5 TO 8 STEP -1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 5 5 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 8 TO 5 STEP 1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 8 8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 8 TO -5 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 8 8 OK + 5 5 OK + 2 2 OK +-1 -1 OK +-4 -4 OK +LOOP EXITED +-7 -7 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 5 ACTUAL: 5 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1=-1.7 TO 2.6 STEP .27 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-1.7 -1.7 OK +-1.43 -1.43 OK +-1.16 -1.16 OK +-.89 -.89 OK +-.62 -.62 OK +-.35 -.35 OK +-.08 -.08 OK + .19 .19 OK + .46 .46 OK + .73 .73 OK + 1. 1. OK + 1.27 1.27 OK + 1.54 1.54 OK + 1.81 1.81 OK + 2.08 2.08 OK + 2.35 2.35 OK +LOOP EXITED + 2.62 2.62 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 16 ACTUAL: 16 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 11 TO -7 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 11 11 OK + 8 8 OK + 5 5 OK + 2 2 OK +-1 -1 OK +-4 -4 OK +-7 -7 OK +LOOP EXITED +-10 -10 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 7 ACTUAL: 7 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 2 TO 2 STEP 20 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 2 2 OK +LOOP EXITED + 22 22 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 1.234E+20 TO -4.321E+20 STEP -8.7E+19 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 1.234E+20 1.234E+20 OK + 3.64E+19 3.64E+19 OK +-5.06E+19 -5.06E+19 OK +-1.376E+20 -1.376E+20 OK +-2.246E+20 -2.246E+20 OK +-3.116E+20 -3.116E+20 OK +-3.986E+20 -3.986E+20 OK +LOOP EXITED +-4.856E+20 -4.856E+20 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 7 ACTUAL: 7 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 0 TO 0 STEP -2 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 0 0 OK +LOOP EXITED +-2 -2 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +----------------------------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 44 + +Program interrupted at line 2090 diff --git a/NBS2/P044.BAS b/NBS2/P044.BAS new file mode 100644 index 0000000..11150ed --- /dev/null +++ b/NBS2/P044.BAS @@ -0,0 +1,120 @@ +10 PRINT "PROGRAM FILE 44: ELEMENTARY USE OF THE FOR-STATEMENT." +20 PRINT " ANSI STANDARD 11.2, 11.4" +30 PRINT +40 PRINT "SECTION 44.1: ELEMENTARY USE OF THE FOR-STATEMENT." +50 PRINT +60 PRINT "THIS SECTION TESTS A SIMPLE FOR-NEXT CONSTRUCTION WITH" +70 PRINT "A VARIETY OF VALUES FOR THE INITIAL-VALUE, LIMIT, AND" +80 PRINT "INCREMENT. TO PASS THE TEST, THE CONTROL-VARIABLE MUST" +90 PRINT "TAKE ON THE APPROPRIATE VALUES AND THE LOOP MUST BE EXECUTED" +100 PRINT "THE CORRECT NUMBER OF TIMES." +110 PRINT +120 PRINT " BEGIN TEST." +130 LET F=0 +140 PRINT +150 LET A1=.0987789 +160 LET B1=.09878 +170 LET C1=3E-7 +180 LET T2=4 +190 GOSUB 3000 +200 LET A1=5 +210 LET B1=8 +220 LET C1=-1 +230 LET T2=0 +240 GOSUB 3000 +250 LET A1=8 +260 LET B1=5 +270 LET C1=1 +280 LET T2=0 +290 GOSUB 3000 +300 LET A1=8 +310 LET B1=-5 +320 LET C1=-3 +330 LET T2=5 +340 GOSUB 3000 +350 LET A1=-1.7 +360 LET B1=2.6 +370 LET C1=.27 +380 LET T2=16 +390 GOSUB 3000 +400 LET A1=11 +410 LET B1=-7 +420 LET C1=-3 +430 LET T2=7 +440 GOSUB 3000 +450 LET A1=2 +460 LET B1=2 +470 LET C1=20 +480 LET T2=1 +490 GOSUB 3000 +500 LET A1=1.234E20 +510 LET B1=-4.321E20 +520 LET C1=-8.7E19 +530 LET T2=7 +540 GOSUB 3000 +550 LET A1=0 +560 LET B1=0 +570 LET C1=-2 +580 LET T2=1 +590 GOSUB 3000 +2000 PRINT +2010 IF F=0 THEN 2040 +2020 PRINT "*** TEST FAILED IN ";F;" CASE(S) ***" +2030 GOTO 2050 +2040 PRINT "*** TEST PASSED ***" +2050 PRINT +2060 PRINT " END TEST." +2070 PRINT +2080 PRINT "END PROGRAM 44" +2090 STOP +3000 REM SUBROUTINE TO TEST VARIOUS VALUES IN THE FOR-LOOP +3010 PRINT +3020 PRINT "LOOP IS: FOR I1=";A1;" TO ";B1;" STEP ";C1 +3030 PRINT +3040 PRINT "CONTROL VARIABLE:" +3050 PRINT "SHOULD BE","ACTUAL","RESULT" +3060 LET A2=A1 +3070 LET B2=B1 +3080 LET C2=C1 +3090 LET I2=A2 +3100 REM S1 IS ERROR SWITCH +3110 LET S1=0 +3120 REM T1 IS LOOP COUNT +3130 LET T1=0 +3140 FOR I1=A1 TO B1 STEP C1 +3150 LET T1=T1+1 +3160 LET M$=" OK " +3170 IF I1=0 THEN 3220 +3180 LET R=(I2-I1)/I1 +3190 IF R<-1E-6 THEN 3230 +3200 IF R>1E-6 THEN 3230 +3210 GOTO 3250 +3220 IF I2=0 THEN 3250 +3230 LET M$="FAILED" +3240 LET S1=1 +3250 PRINT I2,I1,M$ +3260 LET I2=I2+C2 +3270 NEXT I1 +3280 PRINT "LOOP EXITED" +3290 LET M$=" OK " +3300 IF I1=0 THEN 3350 +3310 LET R=(I2-I1)/I1 +3320 IF R<-1E-6 THEN 3360 +3330 IF R>1E-6 THEN 3360 +3340 GOTO 3380 +3350 IF I2=0 THEN 3380 +3360 LET M$="FAILED" +3370 LET S1=1 +3380 PRINT I2,I1,M$ +3390 LET M$=" OK " +3400 IF T1=T2 THEN 3425 +3410 LET M$="FAILED" +3420 LET S1=1 +3425 PRINT +3430 PRINT "NO. TIMES THROUGH LOOP:" +3440 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +3450 PRINT +3455 PRINT "-----------------------------------------------" +3460 LET F=F+S1 +3470 RETURN +3480 END diff --git a/NBS2/P044.OUT b/NBS2/P044.OUT new file mode 100644 index 0000000..5c027c2 --- /dev/null +++ b/NBS2/P044.OUT @@ -0,0 +1,170 @@ +PROGRAM FILE 44: ELEMENTARY USE OF THE FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 44.1: ELEMENTARY USE OF THE FOR-STATEMENT. + +THIS SECTION TESTS A SIMPLE FOR-NEXT CONSTRUCTION WITH +A VARIETY OF VALUES FOR THE INITIAL-VALUE, LIMIT, AND +INCREMENT. TO PASS THE TEST, THE CONTROL-VARIABLE MUST +TAKE ON THE APPROPRIATE VALUES AND THE LOOP MUST BE EXECUTED +THE CORRECT NUMBER OF TIMES. + + BEGIN TEST. + + +LOOP IS: FOR I1= 9.87789E-2 TO .09878 STEP 3.E-7 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 9.87789E-2 9.87789E-2 OK + 9.87792E-2 9.87792E-2 OK + 9.87795E-2 9.87795E-2 OK + 9.87798E-2 9.87798E-2 OK +LOOP EXITED + 9.87801E-2 9.87801E-2 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 5 TO 8 STEP -1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 5 5 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 8 TO 5 STEP 1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 8 8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 8 TO -5 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 8 8 OK + 5 5 OK + 2 2 OK +-1 -1 OK +-4 -4 OK +LOOP EXITED +-7 -7 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 5 ACTUAL: 5 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1=-1.7 TO 2.6 STEP .27 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-1.7 -1.7 OK +-1.43 -1.43 OK +-1.16 -1.16 OK +-.89 -.89 OK +-.62 -.62 OK +-.35 -.35 OK +-.08 -.08 OK + .19 .19 OK + .46 .46 OK + .73 .73 OK + 1. 1. OK + 1.27 1.27 OK + 1.54 1.54 OK + 1.81 1.81 OK + 2.08 2.08 OK + 2.35 2.35 OK +LOOP EXITED + 2.62 2.62 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 16 ACTUAL: 16 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 11 TO -7 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 11 11 OK + 8 8 OK + 5 5 OK + 2 2 OK +-1 -1 OK +-4 -4 OK +-7 -7 OK +LOOP EXITED +-10 -10 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 7 ACTUAL: 7 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 2 TO 2 STEP 20 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 2 2 OK +LOOP EXITED + 22 22 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 1.234E+20 TO -4.321E+20 STEP -8.7E+19 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 1.234E+20 1.234E+20 OK + 3.64E+19 3.64E+19 OK +-5.06E+19 -5.06E+19 OK +-1.376E+20 -1.376E+20 OK +-2.246E+20 -2.246E+20 OK +-3.116E+20 -3.116E+20 OK +-3.986E+20 -3.986E+20 OK +LOOP EXITED +-4.856E+20 -4.856E+20 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 7 ACTUAL: 7 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 0 TO 0 STEP -2 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 0 0 OK +LOOP EXITED +-2 -2 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +----------------------------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 44 + +Program interrupted at line 2090 diff --git a/NBS2/P044.dif b/NBS2/P044.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P044.run b/NBS2/P044.run new file mode 100644 index 0000000..54bd8d4 --- /dev/null +++ b/NBS2/P044.run @@ -0,0 +1,170 @@ +PROGRAM FILE 44: ELEMENTARY USE OF THE FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 44.1: ELEMENTARY USE OF THE FOR-STATEMENT. + +THIS SECTION TESTS A SIMPLE FOR-NEXT CONSTRUCTION WITH +A VARIETY OF VALUES FOR THE INITIAL-VALUE, LIMIT, AND +INCREMENT. TO PASS THE TEST, THE CONTROL-VARIABLE MUST +TAKE ON THE APPROPRIATE VALUES AND THE LOOP MUST BE EXECUTED +THE CORRECT NUMBER OF TIMES. + + BEGIN TEST. + + +LOOP IS: FOR I1= 9.87789E-2 TO .09878 STEP 3.E-7 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 9.87789E-2 9.87789E-2 OK + 9.87792E-2 9.87792E-2 OK + 9.87795E-2 9.87795E-2 OK + 9.87798E-2 9.87798E-2 OK +LOOP EXITED + 9.87801E-2 9.87801E-2 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 5 TO 8 STEP -1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 5 5 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 8 TO 5 STEP 1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 8 8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 8 TO -5 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 8 8 OK + 5 5 OK + 2 2 OK +-1 -1 OK +-4 -4 OK +LOOP EXITED +-7 -7 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 5 ACTUAL: 5 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1=-1.7 TO 2.6 STEP .27 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-1.7 -1.7 OK +-1.43 -1.43 OK +-1.16 -1.16 OK +-.89 -.89 OK +-.62 -.62 OK +-.35 -.35 OK +-.08 -.08 OK + .19 .19 OK + .46 .46 OK + .73 .73 OK + 1. 1. OK + 1.27 1.27 OK + 1.54 1.54 OK + 1.81 1.81 OK + 2.08 2.08 OK + 2.35 2.35 OK +LOOP EXITED + 2.62 2.62 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 16 ACTUAL: 16 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 11 TO -7 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 11 11 OK + 8 8 OK + 5 5 OK + 2 2 OK +-1 -1 OK +-4 -4 OK +-7 -7 OK +LOOP EXITED +-10 -10 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 7 ACTUAL: 7 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 2 TO 2 STEP 20 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 2 2 OK +LOOP EXITED + 22 22 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 1.234E+20 TO -4.321E+20 STEP -8.7E+19 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 1.234E+20 1.234E+20 OK + 3.64E+19 3.64E+19 OK +-5.06E+19 -5.06E+19 OK +-1.376E+20 -1.376E+20 OK +-2.246E+20 -2.246E+20 OK +-3.116E+20 -3.116E+20 OK +-3.986E+20 -3.986E+20 OK +LOOP EXITED +-4.856E+20 -4.856E+20 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 7 ACTUAL: 7 RESULT: OK + +----------------------------------------------- + +LOOP IS: FOR I1= 0 TO 0 STEP -2 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 0 0 OK +LOOP EXITED +-2 -2 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +----------------------------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 44 + +Program interrupted at line 2090 diff --git a/NBS2/P045.80 b/NBS2/P045.80 new file mode 100644 index 0000000..729a64a --- /dev/null +++ b/NBS2/P045.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 45: ALTERING THE CONTROL-VARIABLE WITHIN + A FOR-BLOCK. + ANSI STANDARD 11.2, 11.4 + +SECTION 45.1: ALTERING THE CONTROL-VARIABLE WITHIN + A FOR-BLOCK. + +THIS SECTION TESTS THAT THE VALUE OF THE CONTROL-VARIABLE +MAY BE ALTERED BY STATEMENTS WITHIN THE FOR-BLOCK, AS +WELL AS UNDER THE DIRECT CONTROL OF THE FOR-STATEMENT. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 3 3 OK + 6 6 OK + 9 9 OK +CONTROL VARIABLE ALTERED. + 20 20 OK +LOOP EXITED + 23 23 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 45 diff --git a/NBS2/P045.BAS b/NBS2/P045.BAS new file mode 100644 index 0000000..05a59f0 --- /dev/null +++ b/NBS2/P045.BAS @@ -0,0 +1,61 @@ +10 PRINT "PROGRAM FILE 45: ALTERING THE CONTROL-VARIABLE WITHIN" +20 PRINT " A FOR-BLOCK." +30 PRINT " ANSI STANDARD 11.2, 11.4" +40 PRINT +50 PRINT "SECTION 45.1: ALTERING THE CONTROL-VARIABLE WITHIN" +60 PRINT " A FOR-BLOCK." +70 PRINT +80 PRINT "THIS SECTION TESTS THAT THE VALUE OF THE CONTROL-VARIABLE" +90 PRINT "MAY BE ALTERED BY STATEMENTS WITHIN THE FOR-BLOCK, AS" +100 PRINT "WELL AS UNDER THE DIRECT CONTROL OF THE FOR-STATEMENT." +110 PRINT +120 PRINT " BEGIN TEST." +130 LET A1=3 +140 LET B1=21 +150 LET C1=3 +160 LET T2=4 +170 PRINT +180 PRINT "CONTROL VARIABLE:" +190 PRINT "SHOULD BE","ACTUAL","RESULT" +200 LET I2=A1 +210 REM S1 IS ERROR SWITCH +220 LET S1=0 +230 REM T1 IS LOOP COUNT +240 LET T1=0 +250 FOR I1=A1 TO B1 STEP C1 +260 LET T1=T1+1 +270 LET M$=" OK " +280 IF I1=I2 THEN 310 +290 LET M$="FAILED" +300 LET S1=1 +310 PRINT I2,I1,M$ +320 IF I2 <> 9 THEN 360 +330 LET I1=17 +340 LET I2=17 +350 PRINT "CONTROL VARIABLE ALTERED." +360 REM RE-JOIN PATHS +370 LET I2=I2+C1 +380 NEXT I1 +390 PRINT "LOOP EXITED" +400 LET M$=" OK " +410 IF I1=I2 THEN 440 +420 LET M$="FAILED" +430 LET S1=1 +440 PRINT I2,I1,M$ +450 LET M$=" OK " +460 IF T1=T2 THEN 490 +470 LET M$="FAILED" +480 LET S1=1 +490 PRINT +500 PRINT "NO. TIMES THROUGH LOOP:" +510 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +520 PRINT +530 IF S1=0 THEN 560 +540 PRINT "*** TEST FAILED ***" +550 GOTO 570 +560 PRINT "*** TEST PASSED ***" +570 PRINT +580 PRINT " END TEST." +590 PRINT +600 PRINT "END PROGRAM 45" +610 END diff --git a/NBS2/P045.OUT b/NBS2/P045.OUT new file mode 100644 index 0000000..1a927fc --- /dev/null +++ b/NBS2/P045.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 45: ALTERING THE CONTROL-VARIABLE WITHIN + A FOR-BLOCK. + ANSI STANDARD 11.2, 11.4 + +SECTION 45.1: ALTERING THE CONTROL-VARIABLE WITHIN + A FOR-BLOCK. + +THIS SECTION TESTS THAT THE VALUE OF THE CONTROL-VARIABLE +MAY BE ALTERED BY STATEMENTS WITHIN THE FOR-BLOCK, AS +WELL AS UNDER THE DIRECT CONTROL OF THE FOR-STATEMENT. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 3 3 OK + 6 6 OK + 9 9 OK +CONTROL VARIABLE ALTERED. + 20 20 OK +LOOP EXITED + 23 23 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 45 diff --git a/NBS2/P045.dif b/NBS2/P045.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P045.run b/NBS2/P045.run new file mode 100644 index 0000000..729a64a --- /dev/null +++ b/NBS2/P045.run @@ -0,0 +1,31 @@ +PROGRAM FILE 45: ALTERING THE CONTROL-VARIABLE WITHIN + A FOR-BLOCK. + ANSI STANDARD 11.2, 11.4 + +SECTION 45.1: ALTERING THE CONTROL-VARIABLE WITHIN + A FOR-BLOCK. + +THIS SECTION TESTS THAT THE VALUE OF THE CONTROL-VARIABLE +MAY BE ALTERED BY STATEMENTS WITHIN THE FOR-BLOCK, AS +WELL AS UNDER THE DIRECT CONTROL OF THE FOR-STATEMENT. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 3 3 OK + 6 6 OK + 9 9 OK +CONTROL VARIABLE ALTERED. + 20 20 OK +LOOP EXITED + 23 23 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 45 diff --git a/NBS2/P046.80 b/NBS2/P046.80 new file mode 100644 index 0000000..d0075d1 --- /dev/null +++ b/NBS2/P046.80 @@ -0,0 +1,112 @@ +PROGRAM FILE 46: INTERACTION OF CONTROL STATEMENTS WITH + THE FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4, 10.2, 10.4 + +SECTION 46.1: INTERACTION OF GOSUB-STATEMENT WITH + THE FOR-STATEMENT. + +THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXPECTED +FROM WITHIN A FOR-BLOCK. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 8 8 OK + 4 4 OK + 0 0 OK +-4 -4 OK +LOOP EXITED +-8 -8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +SECTION 46.2: FOR-LOOPS WITH SAME CONTROL-VARIABLE + NESTED DYNAMICALLY WITH GOSUB. + +THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXECUTED +FROM WITHIN A FOR-BLOCK AND THAT THE SUBROUTINE MAY ITSELF +CONTAIN A FOR-BLOCK. IF THE TWO FOR-BLOCKS USE THE SAME +CONTROL-VARIABLE, THE ORIGINAL VALUE IS LOST. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +ENTERING OUTER LOOP + 8 8 OK +ENTERING INNER LOOP +-10 -10 OK +-8 -8 OK +INNER LOOP EXITED +-6 -6 OK +OUTER LOOP EXITED +-9 -9 OK + +NO. TIMES THROUGH INNER LOOP: +SHOULD BE: 2 ACTUAL: 2 RESULT: OK + + +NO. TIMES THROUGH OUTER LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +*** TEST PASSED *** + + END TEST. + + +SECTION 46.3 CONTROL-STATEMENT JUMPS OUT OF FOR-BLOCK. + +THIS SECTION TESTS THAT YOU CAN JUMP OUT OF A FOR-BLOCK +AND THAT THE CONTROL-VARIABLE RETAINS ITS VALUE WHEN +THIS HAPPENS. + + BEGIN TEST. + +LOOP IS: FOR I1= 33 TO 66 STEP 4 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 33 33 OK + 37 37 OK + 41 41 OK + 45 45 OK + 49 49 OK + 53 53 OK + 57 57 OK + 61 61 OK +JUMPED OUT OF LOOP + 61 61 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 8 ACTUAL: 8 RESULT: OK + +-------------------------------------- + +LOOP IS: FOR I1= 7 TO 7 STEP 0 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 7 7 OK + 7 7 OK + 7 7 OK + 7 7 OK + 7 7 OK +JUMPED OUT OF LOOP + 7 7 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 5 ACTUAL: 5 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 46 + +Program interrupted at line 3080 diff --git a/NBS2/P046.BAS b/NBS2/P046.BAS new file mode 100644 index 0000000..3d88fae --- /dev/null +++ b/NBS2/P046.BAS @@ -0,0 +1,225 @@ +10 PRINT "PROGRAM FILE 46: INTERACTION OF CONTROL STATEMENTS WITH" +20 PRINT " THE FOR-STATEMENT." +30 PRINT " ANSI STANDARD 11.2, 11.4, 10.2, 10.4" +40 PRINT +50 PRINT "SECTION 46.1: INTERACTION OF GOSUB-STATEMENT WITH" +60 PRINT " THE FOR-STATEMENT." +70 PRINT +80 PRINT "THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXPECTED" +90 PRINT "FROM WITHIN A FOR-BLOCK." +100 PRINT +110 PRINT " BEGIN TEST." +120 LET A1=8 +130 LET B1=-5 +140 LET C1=-3 +150 LET T2=4 +160 PRINT +170 PRINT "CONTROL VARIABLE:" +180 PRINT "SHOULD BE","ACTUAL","RESULT" +190 LET A2=A1 +200 LET B2=B1 +210 LET C2=C1 +220 LET I2=A2 +230 REM S1 IS ERROR SWITCH +240 LET S1=0 +250 REM T1 IS LOOP COUNT +260 LET T1=0 +270 FOR I1=A1 TO B1 STEP C1 +280 LET T1=T1+1 +290 LET M$=" OK " +300 IF I1=I2 THEN 330 +310 LET M$="FAILED" +320 LET S1=1 +330 PRINT I2,I1,M$ +340 LET T9=99 +350 GOSUB 650 +360 IF T9=9 THEN 390 +370 PRINT "GOSUB FAILED TO TAKE EFFECT" +380 LET S1=1 +390 REM END GOSUB TEST +400 LET I2=I2-1 +410 LET I2=I2+C2 +420 NEXT I1 +430 PRINT "LOOP EXITED" +450 GOSUB 6000 +490 LET M$=" OK " +500 IF T1=T2 THEN 530 +510 LET M$="FAILED" +520 LET S1=1 +530 PRINT +540 PRINT "NO. TIMES THROUGH LOOP:" +550 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +560 PRINT +570 IF S1=0 THEN 600 +580 PRINT "*** TEST FAILED ***" +590 GOTO 610 +600 PRINT "*** TEST PASSED ***" +610 PRINT +620 PRINT " END TEST." +630 PRINT +640 GOTO 690 +650 REM SUBROUTINE FROM FIRST SECTION +660 LET T9=9 +670 LET I1=I1-1 +680 RETURN +690 REM END OF CALLED-FROM-FOR-BLOCK SUBROUTINE +700 PRINT "SECTION 46.2: FOR-LOOPS WITH SAME CONTROL-VARIABLE" +710 PRINT " NESTED DYNAMICALLY WITH GOSUB." +720 PRINT +730 PRINT "THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXECUTED" +740 PRINT "FROM WITHIN A FOR-BLOCK AND THAT THE SUBROUTINE MAY ITSELF" +750 PRINT "CONTAIN A FOR-BLOCK. IF THE TWO FOR-BLOCKS USE THE SAME" +760 PRINT "CONTROL-VARIABLE, THE ORIGINAL VALUE IS LOST." +770 PRINT +780 PRINT " BEGIN TEST." +790 LET A1=8 +800 LET B1=-5 +810 LET C1=-3 +820 LET T2=1 +830 LET T4=2 +840 PRINT +850 PRINT "CONTROL VARIABLE:" +860 PRINT "SHOULD BE","ACTUAL","RESULT" +870 LET A2=A1 +880 LET B2=B1 +890 LET C2=C1 +900 LET I2=A2 +910 REM S1 IS ERROR SWITCH +920 LET S1=0 +930 REM T1 IS LOOP COUNT +940 LET T1=0 +950 PRINT "ENTERING OUTER LOOP" +960 FOR I1=A1 TO B1 STEP C1 +970 LET T1=T1+1 +990 GOSUB 6000 +1030 GOSUB 1360 +1040 LET I2=I2+C2 +1050 NEXT I1 +1060 PRINT "OUTER LOOP EXITED" +1080 GOSUB 6000 +1120 LET M$=" OK " +1130 IF T3=T4 THEN 1160 +1140 LET M$="FAILED" +1150 LET S1=1 +1160 PRINT +1170 PRINT "NO. TIMES THROUGH INNER LOOP:" +1180 PRINT "SHOULD BE: ";T4;" ACTUAL: ";T3;" RESULT: ";M$ +1190 PRINT +1200 LET M$=" OK " +1210 IF T1=T2 THEN 1240 +1220 LET M$="FAILED" +1230 LET S1=1 +1240 PRINT +1250 PRINT "NO. TIMES THROUGH OUTER LOOP:" +1260 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +1270 PRINT +1280 IF S1=0 THEN 1310 +1290 PRINT "*** TEST FAILED ***" +1300 GOTO 1320 +1310 PRINT "*** TEST PASSED ***" +1320 PRINT +1330 PRINT " END TEST." +1340 PRINT +1350 GOTO 1570 +1360 REM SUBROUTINE FROM SECOND SECTION +1370 LET I2=-10 +1380 REM T3 IS LOOP COUNT +1390 LET T3=0 +1400 PRINT "ENTERING INNER LOOP" +1410 FOR I1=-10 TO -7 STEP 2 +1420 LET T3=T3+1 +1440 GOSUB 6000 +1480 LET I2=I2+2 +1490 NEXT I1 +1500 PRINT "INNER LOOP EXITED" +1520 GOSUB 6000 +1560 RETURN +1570 REM END OF CALLED-FROM-FOR-BLOCK SUBROUTINE +1580 PRINT +1590 PRINT "SECTION 46.3 CONTROL-STATEMENT JUMPS OUT OF FOR-BLOCK." +1600 PRINT +1610 PRINT "THIS SECTION TESTS THAT YOU CAN JUMP OUT OF A FOR-BLOCK" +1620 PRINT "AND THAT THE CONTROL-VARIABLE RETAINS ITS VALUE WHEN" +1625 PRINT "THIS HAPPENS." +1630 PRINT +1640 PRINT " BEGIN TEST." +1650 PRINT +1655 LET S1=0 +1660 LET A1=33 +1670 LET B1=66 +1680 LET C1=4 +1690 LET I2=A1 +1700 LET T2=8 +1703 PRINT "LOOP IS: FOR I1=";A1;" TO ";B1;" STEP ";C1 +1707 PRINT +1710 PRINT "CONTROL VARIABLE:" +1720 PRINT "SHOULD BE","ACTUAL","RESULT" +1740 LET T1=0 +1750 FOR I1=A1 TO B1 STEP C1 +1760 LET T1=T1+1 +1770 GOSUB 6000 +1780 IF I2 < 60 THEN 1790 +1785 GO TO 1850 +1790 LET I2=I2+C1 +1800 NEXT I1 +1810 PRINT "NORMAL EXIT FROM FOR-BLOCK: INCORRECT." +1820 LET S1=1 +1830 GOTO 1855 +1850 PRINT "JUMPED OUT OF LOOP" +1855 GOSUB 6000 +1860 LET M$=" OK " +1870 IF T1=T2 THEN 1900 +1880 LET M$="FAILED" +1890 LET S1=1 +1900 PRINT +1910 PRINT "NO. TIMES THROUGH LOOP:" +1920 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +1930 PRINT +1940 PRINT "--------------------------------------" +1950 PRINT +2000 LET A1=7 +2010 LET B1=7 +2020 LET C1=0 +2030 LET I2=A1 +2040 LET T2=5 +2050 PRINT "LOOP IS: FOR I1=";A1;" TO ";B1;" STEP ";C1 +2060 PRINT +2070 PRINT "CONTROL VARIABLE:" +2080 PRINT "SHOULD BE","ACTUAL","RESULT" +2090 LET T1=0 +2100 FOR I1=A1 TO B1 STEP C1 +2110 LET T1=T1+1 +2120 GOSUB 6000 +2130 IF T1 > 4.5 THEN 2190 +2140 LET I2=I2+C1 +2150 NEXT I1 +2160 PRINT "NORMAL EXIT FROM FOR-BLOCK: INCORRECT." +2170 LET S1=1 +2180 GOTO 2200 +2190 PRINT "JUMPED OUT OF LOOP" +2200 GOSUB 6000 +2210 LET M$=" OK " +2220 IF T1=T2 THEN 2250 +2230 LET M$="FAILED" +2240 LET S1=1 +2250 PRINT +2260 PRINT "NO. TIMES THROUGH LOOP:" +2270 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +2280 PRINT +3000 IF S1=0 THEN 3030 +3010 PRINT "*** TEST FAILED ***" +3020 GOTO 3040 +3030 PRINT "*** TEST PASSED ***" +3040 PRINT +3050 PRINT " END TEST." +3060 PRINT +3070 PRINT "END PROGRAM 46" +3080 STOP +6000 REM SUBROUTINE TO CHECK THAT I1=I2 +6010 LET M$=" OK " +6020 IF I1=I2 THEN 6050 +6030 LET M$="FAILED" +6040 LET S1=1 +6050 PRINT I2,I1,M$ +6060 RETURN +6070 END diff --git a/NBS2/P046.OUT b/NBS2/P046.OUT new file mode 100644 index 0000000..b49d98a --- /dev/null +++ b/NBS2/P046.OUT @@ -0,0 +1,112 @@ +PROGRAM FILE 46: INTERACTION OF CONTROL STATEMENTS WITH + THE FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4, 10.2, 10.4 + +SECTION 46.1: INTERACTION OF GOSUB-STATEMENT WITH + THE FOR-STATEMENT. + +THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXPECTED +FROM WITHIN A FOR-BLOCK. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 8 8 OK + 4 4 OK + 0 0 OK +-4 -4 OK +LOOP EXITED +-8 -8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +SECTION 46.2: FOR-LOOPS WITH SAME CONTROL-VARIABLE + NESTED DYNAMICALLY WITH GOSUB. + +THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXECUTED +FROM WITHIN A FOR-BLOCK AND THAT THE SUBROUTINE MAY ITSELF +CONTAIN A FOR-BLOCK. IF THE TWO FOR-BLOCKS USE THE SAME +CONTROL-VARIABLE, THE ORIGINAL VALUE IS LOST. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +ENTERING OUTER LOOP + 8 8 OK +ENTERING INNER LOOP +-10 -10 OK +-8 -8 OK +INNER LOOP EXITED +-6 -6 OK +OUTER LOOP EXITED +-9 -9 OK + +NO. TIMES THROUGH INNER LOOP: +SHOULD BE: 2 ACTUAL: 2 RESULT: OK + + +NO. TIMES THROUGH OUTER LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +*** TEST PASSED *** + + END TEST. + + +SECTION 46.3 CONTROL-STATEMENT JUMPS OUT OF FOR-BLOCK. + +THIS SECTION TESTS THAT YOU CAN JUMP OUT OF A FOR-BLOCK +AND THAT THE CONTROL-VARIABLE RETAINS ITS VALUE WHEN +THIS HAPPENS. + + BEGIN TEST. + +LOOP IS: FOR I1= 33 TO 66 STEP 4 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 33 33 OK + 37 37 OK + 41 41 OK + 45 45 OK + 49 49 OK + 53 53 OK + 57 57 OK + 61 61 OK +JUMPED OUT OF LOOP + 61 61 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 8 ACTUAL: 8 RESULT: OK + +-------------------------------------- + +LOOP IS: FOR I1= 7 TO 7 STEP 0 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 7 7 OK + 7 7 OK + 7 7 OK + 7 7 OK + 7 7 OK +JUMPED OUT OF LOOP + 7 7 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 5 ACTUAL: 5 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 46 + +Program interrupted at line 3080 diff --git a/NBS2/P046.dif b/NBS2/P046.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P046.run b/NBS2/P046.run new file mode 100644 index 0000000..d0075d1 --- /dev/null +++ b/NBS2/P046.run @@ -0,0 +1,112 @@ +PROGRAM FILE 46: INTERACTION OF CONTROL STATEMENTS WITH + THE FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4, 10.2, 10.4 + +SECTION 46.1: INTERACTION OF GOSUB-STATEMENT WITH + THE FOR-STATEMENT. + +THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXPECTED +FROM WITHIN A FOR-BLOCK. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 8 8 OK + 4 4 OK + 0 0 OK +-4 -4 OK +LOOP EXITED +-8 -8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +SECTION 46.2: FOR-LOOPS WITH SAME CONTROL-VARIABLE + NESTED DYNAMICALLY WITH GOSUB. + +THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXECUTED +FROM WITHIN A FOR-BLOCK AND THAT THE SUBROUTINE MAY ITSELF +CONTAIN A FOR-BLOCK. IF THE TWO FOR-BLOCKS USE THE SAME +CONTROL-VARIABLE, THE ORIGINAL VALUE IS LOST. + + BEGIN TEST. + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +ENTERING OUTER LOOP + 8 8 OK +ENTERING INNER LOOP +-10 -10 OK +-8 -8 OK +INNER LOOP EXITED +-6 -6 OK +OUTER LOOP EXITED +-9 -9 OK + +NO. TIMES THROUGH INNER LOOP: +SHOULD BE: 2 ACTUAL: 2 RESULT: OK + + +NO. TIMES THROUGH OUTER LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +*** TEST PASSED *** + + END TEST. + + +SECTION 46.3 CONTROL-STATEMENT JUMPS OUT OF FOR-BLOCK. + +THIS SECTION TESTS THAT YOU CAN JUMP OUT OF A FOR-BLOCK +AND THAT THE CONTROL-VARIABLE RETAINS ITS VALUE WHEN +THIS HAPPENS. + + BEGIN TEST. + +LOOP IS: FOR I1= 33 TO 66 STEP 4 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 33 33 OK + 37 37 OK + 41 41 OK + 45 45 OK + 49 49 OK + 53 53 OK + 57 57 OK + 61 61 OK +JUMPED OUT OF LOOP + 61 61 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 8 ACTUAL: 8 RESULT: OK + +-------------------------------------- + +LOOP IS: FOR I1= 7 TO 7 STEP 0 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 7 7 OK + 7 7 OK + 7 7 OK + 7 7 OK + 7 7 OK +JUMPED OUT OF LOOP + 7 7 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 5 ACTUAL: 5 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 46 + +Program interrupted at line 3080 diff --git a/NBS2/P047.80 b/NBS2/P047.80 new file mode 100644 index 0000000..8e800d5 --- /dev/null +++ b/NBS2/P047.80 @@ -0,0 +1,59 @@ +PROGRAM FILE 47: INCREMENT IN THE STEP CLAUSE OF THE + FOR-STATEMENT DEFAULTS TO A VALUE OF ONE. + ANSI STANDARD 11.2, 11.4 + +SECTION 47.1: INCREMENT IN THE STEP CLAUSE OF THE + FOR-STATEMENT DEFAULTS TO A VALUE OF ONE. + + BEGIN TEST. + +LOOP IS: FOR I1= 8 TO 5 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 8 8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +---------------------------- + + +LOOP IS: FOR I1= 5 TO 8 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 5 5 OK + 6 6 OK + 7 7 OK + 8 8 OK +LOOP EXITED + 9 9 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +---------------------------- + + +LOOP IS: FOR I1= 88 TO 88 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 88 88 OK +LOOP EXITED + 89 89 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +---------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 47 + +Program interrupted at line 1080 diff --git a/NBS2/P047.BAS b/NBS2/P047.BAS new file mode 100644 index 0000000..8e86392 --- /dev/null +++ b/NBS2/P047.BAS @@ -0,0 +1,66 @@ +10 PRINT "PROGRAM FILE 47: INCREMENT IN THE STEP CLAUSE OF THE" +20 PRINT " FOR-STATEMENT DEFAULTS TO A VALUE OF ONE." +30 PRINT " ANSI STANDARD 11.2, 11.4" +40 PRINT +50 PRINT "SECTION 47.1: INCREMENT IN THE STEP CLAUSE OF THE" +60 PRINT " FOR-STATEMENT DEFAULTS TO A VALUE OF ONE." +70 PRINT +80 REM S1 IS ERROR SWITCH +90 LET S1=0 +110 PRINT " BEGIN TEST." +120 LET A1=8 +130 LET B1=5 +150 LET T2=0 +160 GOSUB 3000 +170 LET A1=5 +180 LET B1=8 +190 LET T2=4 +200 GOSUB 3000 +210 LET A1=88 +220 LET B1=88 +230 LET T2=1 +240 GOSUB 3000 +1000 IF S1=0 THEN 1030 +1010 PRINT "*** TEST FAILED ***" +1020 GOTO 1040 +1030 PRINT "*** TEST PASSED ***" +1040 PRINT +1050 PRINT " END TEST." +1060 PRINT +1070 PRINT "END PROGRAM 47" +1080 STOP +3000 REM SUBROUTINE TO TEST VARIOUS LOOPS +3002 PRINT +3004 PRINT "LOOP IS: FOR I1=";A1;" TO ";B1 +3006 PRINT +3010 PRINT "CONTROL VARIABLE:" +3020 PRINT "SHOULD BE","ACTUAL","RESULT" +3030 LET I2=A1 +3090 REM T1 IS LOOP COUNT +3100 LET T1=0 +3110 FOR I1=A1 TO B1 +3120 LET T1=T1+1 +3130 GOSUB 6000 +3140 LET I2=I2+1 +3150 NEXT I1 +3160 PRINT "LOOP EXITED" +3170 GOSUB 6000 +3180 LET M$=" OK " +3190 IF T1=T2 THEN 3220 +3200 LET M$="FAILED" +3210 LET S1=1 +3220 PRINT +3230 PRINT "NO. TIMES THROUGH LOOP:" +3240 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +3250 PRINT +3260 PRINT "----------------------------" +3270 PRINT +3280 RETURN +6000 REM SUBROUTINE TO CHECK THAT I1=I2 +6010 LET M$=" OK " +6020 IF I1=I2 THEN 6050 +6030 LET M$="FAILED" +6040 LET S1=1 +6050 PRINT I2,I1,M$ +6060 RETURN +6070 END diff --git a/NBS2/P047.OUT b/NBS2/P047.OUT new file mode 100644 index 0000000..d1bb48b --- /dev/null +++ b/NBS2/P047.OUT @@ -0,0 +1,59 @@ +PROGRAM FILE 47: INCREMENT IN THE STEP CLAUSE OF THE + FOR-STATEMENT DEFAULTS TO A VALUE OF ONE. + ANSI STANDARD 11.2, 11.4 + +SECTION 47.1: INCREMENT IN THE STEP CLAUSE OF THE + FOR-STATEMENT DEFAULTS TO A VALUE OF ONE. + + BEGIN TEST. + +LOOP IS: FOR I1= 8 TO 5 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 8 8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +---------------------------- + + +LOOP IS: FOR I1= 5 TO 8 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 5 5 OK + 6 6 OK + 7 7 OK + 8 8 OK +LOOP EXITED + 9 9 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +---------------------------- + + +LOOP IS: FOR I1= 88 TO 88 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 88 88 OK +LOOP EXITED + 89 89 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +---------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 47 + +Program interrupted at line 1080 diff --git a/NBS2/P047.dif b/NBS2/P047.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P047.run b/NBS2/P047.run new file mode 100644 index 0000000..8e800d5 --- /dev/null +++ b/NBS2/P047.run @@ -0,0 +1,59 @@ +PROGRAM FILE 47: INCREMENT IN THE STEP CLAUSE OF THE + FOR-STATEMENT DEFAULTS TO A VALUE OF ONE. + ANSI STANDARD 11.2, 11.4 + +SECTION 47.1: INCREMENT IN THE STEP CLAUSE OF THE + FOR-STATEMENT DEFAULTS TO A VALUE OF ONE. + + BEGIN TEST. + +LOOP IS: FOR I1= 8 TO 5 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +LOOP EXITED + 8 8 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 0 ACTUAL: 0 RESULT: OK + +---------------------------- + + +LOOP IS: FOR I1= 5 TO 8 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 5 5 OK + 6 6 OK + 7 7 OK + 8 8 OK +LOOP EXITED + 9 9 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 4 ACTUAL: 4 RESULT: OK + +---------------------------- + + +LOOP IS: FOR I1= 88 TO 88 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 88 88 OK +LOOP EXITED + 89 89 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +---------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 47 + +Program interrupted at line 1080 diff --git a/NBS2/P048.80 b/NBS2/P048.80 new file mode 100644 index 0000000..02a6a51 --- /dev/null +++ b/NBS2/P048.80 @@ -0,0 +1,70 @@ +PROGRAM FILE 48: LIMIT AND INCREMENT IN THE FOR-STATEMENT + ARE EVALUATED ONCE UPON ENTERING THE LOOP. + ANSI STANDARD 11.2, 11.4 + +SECTION 48.1: LIMIT AND INCREMENT IN THE FOR-STATEMENT + ARE EVALUATED ONCE UPON ENTERING THE LOOP. + + BEGIN TEST. + +I1 SET TO -20 +LOOP IS: FOR I1=I1 TO I1 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-20 -20 OK +LOOP EXITED +-23 -23 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +---------------------------- + + +I1 SET TO -3 +LOOP IS: FOR I1=I1 TO -20 STEP I1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-3 -3 OK +-6 -6 OK +-9 -9 OK +-12 -12 OK +-15 -15 OK +-18 -18 OK +LOOP EXITED +-21 -21 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 6 ACTUAL: 6 RESULT: OK + +---------------------------- + + +I1 SET TO -2 +LOOP IS: FOR I1=9 TO I1 STEP I1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 9 9 OK + 7 7 OK + 5 5 OK + 3 3 OK + 1 1 OK +-1 -1 OK +LOOP EXITED +-3 -3 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 6 ACTUAL: 6 RESULT: OK + +---------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 48 + +Program interrupted at line 2080 diff --git a/NBS2/P048.BAS b/NBS2/P048.BAS new file mode 100644 index 0000000..5a586f2 --- /dev/null +++ b/NBS2/P048.BAS @@ -0,0 +1,105 @@ +10 PRINT "PROGRAM FILE 48: LIMIT AND INCREMENT IN THE FOR-STATEMENT" +20 PRINT " ARE EVALUATED ONCE UPON ENTERING THE LOOP." +30 PRINT " ANSI STANDARD 11.2, 11.4" +40 PRINT +50 PRINT "SECTION 48.1: LIMIT AND INCREMENT IN THE FOR-STATEMENT" +60 PRINT " ARE EVALUATED ONCE UPON ENTERING THE LOOP." +70 PRINT +80 REM S1 IS ERROR SWITCH +90 LET S1=0 +100 PRINT " BEGIN TEST." +110 LET I1=-20 +120 LET I2=-20 +130 LET T2=1 +140 PRINT +150 PRINT "I1 SET TO -20" +160 PRINT "LOOP IS: FOR I1=I1 TO I1 STEP -3" +170 PRINT +180 PRINT "CONTROL VARIABLE:" +190 PRINT "SHOULD BE","ACTUAL","RESULT" +200 LET T1=0 +210 FOR I1=I1 TO I1 STEP -3 +220 LET T1=T1+1 +230 GOSUB 3120 +240 IF T1>20 THEN 290 +250 LET I2=I2-3 +260 NEXT I1 +270 PRINT "LOOP EXITED" +280 GOTO 310 +290 PRINT "JUMPED OUT OF LOOP: INCORRECT" +300 LET S1=1 +310 GOSUB 3120 +320 GOSUB 3000 +400 LET I1=-3 +410 LET I2=-3 +420 LET T2=6 +430 PRINT +440 PRINT "I1 SET TO -3" +450 PRINT "LOOP IS: FOR I1=I1 TO -20 STEP I1" +460 PRINT +470 PRINT "CONTROL VARIABLE:" +480 PRINT "SHOULD BE","ACTUAL","RESULT" +490 LET T1=0 +500 FOR I1=I1 TO -20 STEP I1 +510 LET T1=T1+1 +520 GOSUB 3120 +530 IF T1>20 THEN 580 +540 LET I2=I2-3 +550 NEXT I1 +560 PRINT "LOOP EXITED" +570 GOTO 600 +580 PRINT "JUMPED OUT OF LOOP: INCORRECT" +590 LET S1=1 +600 GOSUB 3120 +610 GOSUB 3000 +700 LET I1=-2 +710 LET I2=9 +720 LET T2=6 +730 PRINT +740 PRINT "I1 SET TO -2" +750 PRINT "LOOP IS: FOR I1=9 TO I1 STEP I1" +760 PRINT +770 PRINT "CONTROL VARIABLE:" +780 PRINT "SHOULD BE","ACTUAL","RESULT" +790 LET T1=0 +800 FOR I1=9 TO I1 STEP I1 +810 LET T1=T1+1 +820 GOSUB 3120 +830 IF T1>20 THEN 880 +840 LET I2=I2-2 +850 NEXT I1 +860 PRINT "LOOP EXITED" +870 GOTO 900 +880 PRINT "JUMPED OUT OF LOOP: INCORRECT" +890 LET S1=1 +900 GOSUB 3120 +910 GOSUB 3000 +2000 IF S1=0 THEN 2030 +2010 PRINT "*** TEST FAILED ***" +2020 GOTO 2040 +2030 PRINT "*** TEST PASSED ***" +2040 PRINT +2050 PRINT " END TEST." +2060 PRINT +2070 PRINT "END PROGRAM 48" +2080 STOP +3000 REM SUBROUTINE TO CHECK NUMBER OF TIMES THROUGH LOOP +3010 LET M$=" OK " +3020 IF T1=T2 THEN 3050 +3030 LET M$="FAILED" +3040 LET S1=1 +3050 PRINT +3060 PRINT "NO. TIMES THROUGH LOOP:" +3070 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +3080 PRINT +3090 PRINT "----------------------------" +3100 PRINT +3110 RETURN +3120 REM SUBROUTINE TO CHECK THAT I1=I2 +3130 LET M$=" OK " +3140 IF I1=I2 THEN 3170 +3150 LET M$="FAILED" +3160 LET S1=1 +3170 PRINT I2,I1,M$ +3180 RETURN +3190 END diff --git a/NBS2/P048.OUT b/NBS2/P048.OUT new file mode 100644 index 0000000..14e163e --- /dev/null +++ b/NBS2/P048.OUT @@ -0,0 +1,70 @@ +PROGRAM FILE 48: LIMIT AND INCREMENT IN THE FOR-STATEMENT + ARE EVALUATED ONCE UPON ENTERING THE LOOP. + ANSI STANDARD 11.2, 11.4 + +SECTION 48.1: LIMIT AND INCREMENT IN THE FOR-STATEMENT + ARE EVALUATED ONCE UPON ENTERING THE LOOP. + + BEGIN TEST. + +I1 SET TO -20 +LOOP IS: FOR I1=I1 TO I1 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-20 -20 OK +LOOP EXITED +-23 -23 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +---------------------------- + + +I1 SET TO -3 +LOOP IS: FOR I1=I1 TO -20 STEP I1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-3 -3 OK +-6 -6 OK +-9 -9 OK +-12 -12 OK +-15 -15 OK +-18 -18 OK +LOOP EXITED +-21 -21 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 6 ACTUAL: 6 RESULT: OK + +---------------------------- + + +I1 SET TO -2 +LOOP IS: FOR I1=9 TO I1 STEP I1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 9 9 OK + 7 7 OK + 5 5 OK + 3 3 OK + 1 1 OK +-1 -1 OK +LOOP EXITED +-3 -3 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 6 ACTUAL: 6 RESULT: OK + +---------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 48 + +Program interrupted at line 2080 diff --git a/NBS2/P048.dif b/NBS2/P048.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P048.run b/NBS2/P048.run new file mode 100644 index 0000000..02a6a51 --- /dev/null +++ b/NBS2/P048.run @@ -0,0 +1,70 @@ +PROGRAM FILE 48: LIMIT AND INCREMENT IN THE FOR-STATEMENT + ARE EVALUATED ONCE UPON ENTERING THE LOOP. + ANSI STANDARD 11.2, 11.4 + +SECTION 48.1: LIMIT AND INCREMENT IN THE FOR-STATEMENT + ARE EVALUATED ONCE UPON ENTERING THE LOOP. + + BEGIN TEST. + +I1 SET TO -20 +LOOP IS: FOR I1=I1 TO I1 STEP -3 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-20 -20 OK +LOOP EXITED +-23 -23 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 1 ACTUAL: 1 RESULT: OK + +---------------------------- + + +I1 SET TO -3 +LOOP IS: FOR I1=I1 TO -20 STEP I1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT +-3 -3 OK +-6 -6 OK +-9 -9 OK +-12 -12 OK +-15 -15 OK +-18 -18 OK +LOOP EXITED +-21 -21 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 6 ACTUAL: 6 RESULT: OK + +---------------------------- + + +I1 SET TO -2 +LOOP IS: FOR I1=9 TO I1 STEP I1 + +CONTROL VARIABLE: +SHOULD BE ACTUAL RESULT + 9 9 OK + 7 7 OK + 5 5 OK + 3 3 OK + 1 1 OK +-1 -1 OK +LOOP EXITED +-3 -3 OK + +NO. TIMES THROUGH LOOP: +SHOULD BE: 6 ACTUAL: 6 RESULT: OK + +---------------------------- + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 48 + +Program interrupted at line 2080 diff --git a/NBS2/P049.80 b/NBS2/P049.80 new file mode 100644 index 0000000..12498db --- /dev/null +++ b/NBS2/P049.80 @@ -0,0 +1,432 @@ +PROGRAM FILE 49: NESTED FOR-BLOCKS. + ANSI STANDARD 11.2, 11.4 + +SECTION 49.1: NESTED FOR-BLOCKS. + +THIS SECTION TESTS THAT FOR-BLOCKS MAY BE NESTED IN THE +TEXT OF THE PROGRAM, WITH SEPARATE CONTROL MAINTAINED +FOR EACH CONTROL-VARIABLE. + + BEGIN TEST. + +EACH DETAIL LINE REPORTS: + 1) DEPTH OF NESTING + 2) CORRECT VALUE FOR CONTROL VARIABLE + 3) ACTUAL VALUE OF CONTROL VARIABLE + 4) RESULT (OK OR FAILED) + +DETAIL LINES ARE INDENTED TO SHOW DEPTH OF NESTING. + +ENTERING FOR-BLOCK 1 +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 12 12 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 11 11 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 10 10 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 9 9 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 8 8 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 7 7 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 6 6 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 5 5 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 4 4 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 3 3 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 2 2 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 1 1 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 0 0 OK +EXITING FOR-BLOCK 1 + 1 -1 -1 OK + +NO. TIMES THROUGH LOOPS: +SHOULD BE: 204 ACTUAL: 204 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 49 + +Program interrupted at line 770 diff --git a/NBS2/P049.BAS b/NBS2/P049.BAS new file mode 100644 index 0000000..91f4410 --- /dev/null +++ b/NBS2/P049.BAS @@ -0,0 +1,99 @@ +10 PRINT "PROGRAM FILE 49: NESTED FOR-BLOCKS." +20 PRINT " ANSI STANDARD 11.2, 11.4" +30 PRINT +40 PRINT "SECTION 49.1: NESTED FOR-BLOCKS." +50 PRINT +60 PRINT "THIS SECTION TESTS THAT FOR-BLOCKS MAY BE NESTED IN THE" +70 PRINT "TEXT OF THE PROGRAM, WITH SEPARATE CONTROL MAINTAINED" +80 PRINT "FOR EACH CONTROL-VARIABLE." +90 PRINT +100 LET S1=0 +110 PRINT " BEGIN TEST." +120 LET T2=204 +130 LET E$="ENTERING FOR-BLOCK" +140 LET F$="EXITING FOR-BLOCK" +150 PRINT +160 PRINT "EACH DETAIL LINE REPORTS:" +170 PRINT " 1) DEPTH OF NESTING" +180 PRINT " 2) CORRECT VALUE FOR CONTROL VARIABLE" +190 PRINT " 3) ACTUAL VALUE OF CONTROL VARIABLE" +200 PRINT " 4) RESULT (OK OR FAILED)" +210 PRINT +220 PRINT "DETAIL LINES ARE INDENTED TO SHOW DEPTH OF NESTING." +230 PRINT +240 LET T1=0 +250 LET I2=12 +260 PRINT E$;" 1" +270 FOR I1=12 TO 0 STEP -1 +280 LET T1=T1+1 +290 LET J2=-1 +300 PRINT E$;" 2" +310 FOR J1=-1 TO 0 +320 LET T1=T1+1 +330 GOSUB 1070 +340 LET J2=J2+1 +350 NEXT J1 +360 PRINT F$;" 2" +370 GOSUB 1070 +380 LET K2=1 +390 PRINT E$;" 3" +400 FOR K1=1 TO 3 +410 LET T1=T1+1 +420 LET J2=I2 +430 PRINT E$;" 4" +440 FOR J1=I1 TO 1 STEP -2 +450 LET T1=T1+1 +460 GOSUB 1070 +470 LET J2=J2-2 +480 NEXT J1 +490 PRINT F$;" 4" +500 GOSUB 1070 +510 GOSUB 1140 +520 LET K2=K2+1 +530 NEXT K1 +540 PRINT F$;" 3" +550 GOSUB 1140 +560 GOSUB 1000 +570 LET I2=I2-1 +580 NEXT I1 +590 PRINT F$;" 1" +600 GOSUB 1000 +610 LET M$=" OK " +620 IF T1=T2 THEN 650 +630 LET M$="FAILED" +640 LET S1=1 +650 PRINT +660 PRINT "NO. TIMES THROUGH LOOPS:" +670 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$ +680 PRINT +690 IF S1=0 THEN 720 +700 PRINT "*** TEST FAILED ***" +710 GOTO 730 +720 PRINT "*** TEST PASSED ***" +730 PRINT +740 PRINT " END TEST." +750 PRINT +760 PRINT "END PROGRAM 49" +770 STOP +1000 REM SUBROUTINE TO CHECK THAT I1=I2 +1010 LET M$=" OK " +1020 IF I1=I2 THEN 1050 +1030 LET M$="FAILED" +1040 LET S1=1 +1050 PRINT 1;TAB(10);I2;TAB(20);I1;TAB(30);M$ +1060 RETURN +1070 REM SUBROUTINE TO CHECK THAT J1=J2 +1080 LET M$=" OK " +1090 IF J1=J2 THEN 1120 +1100 LET M$="FAILED" +1110 LET S1=1 +1120 PRINT TAB(2);2;TAB(12);J2;TAB(22);J1;TAB(32);M$ +1130 RETURN +1140 REM SUBROUTINE TO CHECK THAT K1=K2 +1150 LET M$=" OK " +1160 IF K1=K2 THEN 1190 +1170 LET M$="FAILED" +1180 LET S1=1 +1190 PRINT TAB(4);3;TAB(14);K2;TAB(24);K1;TAB(34);M$ +1200 RETURN +1210 END diff --git a/NBS2/P049.OUT b/NBS2/P049.OUT new file mode 100644 index 0000000..50b8055 --- /dev/null +++ b/NBS2/P049.OUT @@ -0,0 +1,432 @@ +PROGRAM FILE 49: NESTED FOR-BLOCKS. + ANSI STANDARD 11.2, 11.4 + +SECTION 49.1: NESTED FOR-BLOCKS. + +THIS SECTION TESTS THAT FOR-BLOCKS MAY BE NESTED IN THE +TEXT OF THE PROGRAM, WITH SEPARATE CONTROL MAINTAINED +FOR EACH CONTROL-VARIABLE. + + BEGIN TEST. + +EACH DETAIL LINE REPORTS: + 1) DEPTH OF NESTING + 2) CORRECT VALUE FOR CONTROL VARIABLE + 3) ACTUAL VALUE OF CONTROL VARIABLE + 4) RESULT (OK OR FAILED) + +DETAIL LINES ARE INDENTED TO SHOW DEPTH OF NESTING. + +ENTERING FOR-BLOCK 1 +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 12 12 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 11 11 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 10 10 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 9 9 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 8 8 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 7 7 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 6 6 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 5 5 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 4 4 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 3 3 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 2 2 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 1 1 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 0 0 OK +EXITING FOR-BLOCK 1 + 1 -1 -1 OK + +NO. TIMES THROUGH LOOPS: +SHOULD BE: 204 ACTUAL: 204 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 49 + +Program interrupted at line 770 diff --git a/NBS2/P049.dif b/NBS2/P049.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P049.run b/NBS2/P049.run new file mode 100644 index 0000000..12498db --- /dev/null +++ b/NBS2/P049.run @@ -0,0 +1,432 @@ +PROGRAM FILE 49: NESTED FOR-BLOCKS. + ANSI STANDARD 11.2, 11.4 + +SECTION 49.1: NESTED FOR-BLOCKS. + +THIS SECTION TESTS THAT FOR-BLOCKS MAY BE NESTED IN THE +TEXT OF THE PROGRAM, WITH SEPARATE CONTROL MAINTAINED +FOR EACH CONTROL-VARIABLE. + + BEGIN TEST. + +EACH DETAIL LINE REPORTS: + 1) DEPTH OF NESTING + 2) CORRECT VALUE FOR CONTROL VARIABLE + 3) ACTUAL VALUE OF CONTROL VARIABLE + 4) RESULT (OK OR FAILED) + +DETAIL LINES ARE INDENTED TO SHOW DEPTH OF NESTING. + +ENTERING FOR-BLOCK 1 +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 12 12 OK + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 12 12 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 11 11 OK + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 11 11 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 10 10 OK + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 10 10 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 9 9 OK + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 9 9 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 8 8 OK + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 8 8 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 7 7 OK + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 7 7 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 6 6 OK + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 6 6 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 5 5 OK + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 5 5 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 4 4 OK + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 4 4 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 3 3 OK + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 3 3 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 2 2 OK +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 2 2 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 + 2 1 1 OK +EXITING FOR-BLOCK 4 + 2 -1 -1 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 1 1 OK +ENTERING FOR-BLOCK 2 + 2 -1 -1 OK + 2 0 0 OK +EXITING FOR-BLOCK 2 + 2 1 1 OK +ENTERING FOR-BLOCK 3 +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 1 1 OK +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 2 2 OK +ENTERING FOR-BLOCK 4 +EXITING FOR-BLOCK 4 + 2 0 0 OK + 3 3 3 OK +EXITING FOR-BLOCK 3 + 3 4 4 OK + 1 0 0 OK +EXITING FOR-BLOCK 1 + 1 -1 -1 OK + +NO. TIMES THROUGH LOOPS: +SHOULD BE: 204 ACTUAL: 204 RESULT: OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 49 + +Program interrupted at line 770 diff --git a/NBS2/P050.80 b/NBS2/P050.80 new file mode 100644 index 0000000..45a587d --- /dev/null +++ b/NBS2/P050.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 50: ERROR - FOR-STATEMENT WITHOUT A + MATCHING NEXT-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 50.1: ERROR - FOR-STATEMENT WITHOUT A + MATCHING NEXT-STATEMENT. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 + +ERROR in line 230: FOR without NEXT diff --git a/NBS2/P050.BAS b/NBS2/P050.BAS new file mode 100644 index 0000000..ada3a2a --- /dev/null +++ b/NBS2/P050.BAS @@ -0,0 +1,30 @@ +10 PRINT "PROGRAM FILE 50: ERROR - FOR-STATEMENT WITHOUT A" +15 PRINT " MATCHING NEXT-STATEMENT." +20 PRINT " ANSI STANDARD 11.2, 11.4" +30 PRINT +40 PRINT "SECTION 50.1: ERROR - FOR-STATEMENT WITHOUT A" +50 PRINT " MATCHING NEXT-STATEMENT." +60 PRINT +70 PRINT +80 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +90 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +100 PRINT +110 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +120 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +130 PRINT " BY THE PROCESSOR, OR" +140 PRINT +150 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +160 PRINT +170 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +180 PRINT "FOR DETAILED CRITERIA." +190 PRINT +200 PRINT " BEGIN TEST." +210 PRINT +220 PRINT "ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5" +230 FOR I=1 TO 5 +240 PRINT "CONTROL-VARIABLE = ";I +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 50" +350 END diff --git a/NBS2/P050.OUT b/NBS2/P050.OUT new file mode 100644 index 0000000..015a92d --- /dev/null +++ b/NBS2/P050.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 50: ERROR - FOR-STATEMENT WITHOUT A + MATCHING NEXT-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 50.1: ERROR - FOR-STATEMENT WITHOUT A + MATCHING NEXT-STATEMENT. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 + +ERROR in line 230: FOR without NEXT diff --git a/NBS2/P050.dif b/NBS2/P050.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P050.run b/NBS2/P050.run new file mode 100644 index 0000000..45a587d --- /dev/null +++ b/NBS2/P050.run @@ -0,0 +1,25 @@ +PROGRAM FILE 50: ERROR - FOR-STATEMENT WITHOUT A + MATCHING NEXT-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 50.1: ERROR - FOR-STATEMENT WITHOUT A + MATCHING NEXT-STATEMENT. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 + +ERROR in line 230: FOR without NEXT diff --git a/NBS2/P051.80 b/NBS2/P051.80 new file mode 100644 index 0000000..ee62f40 --- /dev/null +++ b/NBS2/P051.80 @@ -0,0 +1,33 @@ +PROGRAM FILE 51: ERROR - NEXT-STATEMENT WITHOUT A + MATCHING FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 51.1: ERROR - NEXT-STATEMENT WITHOUT A + MATCHING FOR-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 +CONTROL-VARIABLE = 1 +CONTROL-VARIABLE = 2 +CONTROL-VARIABLE = 3 +CONTROL-VARIABLE = 4 +CONTROL-VARIABLE = 5 + + END TEST. + +END PROGRAM 51 + +Program interrupted at line 303 diff --git a/NBS2/P051.BAS b/NBS2/P051.BAS new file mode 100644 index 0000000..8f03444 --- /dev/null +++ b/NBS2/P051.BAS @@ -0,0 +1,32 @@ +10 PRINT "PROGRAM FILE 51: ERROR - NEXT-STATEMENT WITHOUT A" +15 PRINT " MATCHING FOR-STATEMENT." +20 PRINT " ANSI STANDARD 11.2, 11.4" +30 PRINT +40 PRINT "SECTION 51.1: ERROR - NEXT-STATEMENT WITHOUT A" +50 PRINT " MATCHING FOR-STATEMENT." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 PRINT "ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5" +220 FOR I=1 TO 5 +230 PRINT "CONTROL-VARIABLE = ";I +240 NEXT I +270 PRINT +280 PRINT " END TEST." +290 PRINT +300 PRINT "END PROGRAM 51" +303 STOP +306 NEXT I +310 END diff --git a/NBS2/P051.OUT b/NBS2/P051.OUT new file mode 100644 index 0000000..8785c85 --- /dev/null +++ b/NBS2/P051.OUT @@ -0,0 +1,33 @@ +PROGRAM FILE 51: ERROR - NEXT-STATEMENT WITHOUT A + MATCHING FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 51.1: ERROR - NEXT-STATEMENT WITHOUT A + MATCHING FOR-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 +CONTROL-VARIABLE = 1 +CONTROL-VARIABLE = 2 +CONTROL-VARIABLE = 3 +CONTROL-VARIABLE = 4 +CONTROL-VARIABLE = 5 + + END TEST. + +END PROGRAM 51 + +Program interrupted at line 303 diff --git a/NBS2/P051.dif b/NBS2/P051.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P051.run b/NBS2/P051.run new file mode 100644 index 0000000..ee62f40 --- /dev/null +++ b/NBS2/P051.run @@ -0,0 +1,33 @@ +PROGRAM FILE 51: ERROR - NEXT-STATEMENT WITHOUT A + MATCHING FOR-STATEMENT. + ANSI STANDARD 11.2, 11.4 + +SECTION 51.1: ERROR - NEXT-STATEMENT WITHOUT A + MATCHING FOR-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 +CONTROL-VARIABLE = 1 +CONTROL-VARIABLE = 2 +CONTROL-VARIABLE = 3 +CONTROL-VARIABLE = 4 +CONTROL-VARIABLE = 5 + + END TEST. + +END PROGRAM 51 + +Program interrupted at line 303 diff --git a/NBS2/P052.80 b/NBS2/P052.80 new file mode 100644 index 0000000..85b81f6 --- /dev/null +++ b/NBS2/P052.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 52: ERROR -MISMATCHED CONTROL-VARIABLES ON + FOR-STATEMENT AND NEXT-STATEMENT. + ANSI STANDARD 11.4 + +SECTION 52.1: ERROR - MISMATCHED CONTROL-VARIABLES ON + FOR-STATEMENT AND NEXT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 ... NEXT J +I = 1 J = 0 + +ERROR in line 240: NEXT without FOR diff --git a/NBS2/P052.BAS b/NBS2/P052.BAS new file mode 100644 index 0000000..5ac300e --- /dev/null +++ b/NBS2/P052.BAS @@ -0,0 +1,30 @@ +10 PRINT "PROGRAM FILE 52: ERROR -MISMATCHED CONTROL-VARIABLES ON" +15 PRINT " FOR-STATEMENT AND NEXT-STATEMENT." +20 PRINT " ANSI STANDARD 11.4" +30 PRINT +40 PRINT "SECTION 52.1: ERROR - MISMATCHED CONTROL-VARIABLES ON" +50 PRINT " FOR-STATEMENT AND NEXT-STATEMENT." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 PRINT "ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 ... NEXT J" +220 FOR I=1 TO 5 +230 PRINT "I = ";I;" J = ";J +240 NEXT J +270 PRINT +280 PRINT " END TEST." +290 PRINT +300 PRINT "END PROGRAM 52" +310 END diff --git a/NBS2/P052.OUT b/NBS2/P052.OUT new file mode 100644 index 0000000..36fee99 --- /dev/null +++ b/NBS2/P052.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 52: ERROR -MISMATCHED CONTROL-VARIABLES ON + FOR-STATEMENT AND NEXT-STATEMENT. + ANSI STANDARD 11.4 + +SECTION 52.1: ERROR - MISMATCHED CONTROL-VARIABLES ON + FOR-STATEMENT AND NEXT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 ... NEXT J +I = 1 J = 0 + +ERROR in line 240: NEXT without FOR diff --git a/NBS2/P052.dif b/NBS2/P052.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P052.run b/NBS2/P052.run new file mode 100644 index 0000000..85b81f6 --- /dev/null +++ b/NBS2/P052.run @@ -0,0 +1,25 @@ +PROGRAM FILE 52: ERROR -MISMATCHED CONTROL-VARIABLES ON + FOR-STATEMENT AND NEXT-STATEMENT. + ANSI STANDARD 11.4 + +SECTION 52.1: ERROR - MISMATCHED CONTROL-VARIABLES ON + FOR-STATEMENT AND NEXT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCK; LOOP IS: FOR I=1 TO 5 ... NEXT J +I = 1 J = 0 + +ERROR in line 240: NEXT without FOR diff --git a/NBS2/P053.80 b/NBS2/P053.80 new file mode 100644 index 0000000..5b9b93b --- /dev/null +++ b/NBS2/P053.80 @@ -0,0 +1,24 @@ +PROGRAM FILE 53: ERROR - INTERLEAVED FOR-BLOCKS. + ANSI STANDARD 11.4 + +SECTION 53.1: ERROR - INTERLEAVED FOR-BLOCKS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCKS; LOOPS ARE: +FOR I=1 TO 3 / FOR J=1 TO 5 / NEXT I / NEXT J +I = 1 J = 1 + +ERROR in line 270: NEXT without FOR diff --git a/NBS2/P053.BAS b/NBS2/P053.BAS new file mode 100644 index 0000000..eb0ad72 --- /dev/null +++ b/NBS2/P053.BAS @@ -0,0 +1,31 @@ +10 PRINT "PROGRAM FILE 53: ERROR - INTERLEAVED FOR-BLOCKS." +20 PRINT " ANSI STANDARD 11.4" +30 PRINT +40 PRINT "SECTION 53.1: ERROR - INTERLEAVED FOR-BLOCKS." +50 PRINT +60 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +70 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +80 PRINT +90 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +100 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +110 PRINT " BY THE PROCESSOR, OR" +120 PRINT +130 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +140 PRINT +150 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +160 PRINT "FOR DETAILED CRITERIA." +170 PRINT +180 PRINT " BEGIN TEST." +190 PRINT +200 PRINT "ENTERING FOR-BLOCKS; LOOPS ARE:" +205 PRINT "FOR I=1 TO 3 / FOR J=1 TO 5 / NEXT I / NEXT J" +210 FOR I=1 TO 3 +220 FOR J=1 TO 5 +230 PRINT "I = ";I;" J = ";J +270 NEXT I +280 NEXT J +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 53" +350 END diff --git a/NBS2/P053.OUT b/NBS2/P053.OUT new file mode 100644 index 0000000..33d8442 --- /dev/null +++ b/NBS2/P053.OUT @@ -0,0 +1,24 @@ +PROGRAM FILE 53: ERROR - INTERLEAVED FOR-BLOCKS. + ANSI STANDARD 11.4 + +SECTION 53.1: ERROR - INTERLEAVED FOR-BLOCKS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCKS; LOOPS ARE: +FOR I=1 TO 3 / FOR J=1 TO 5 / NEXT I / NEXT J +I = 1 J = 1 + +ERROR in line 270: NEXT without FOR diff --git a/NBS2/P053.dif b/NBS2/P053.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P053.run b/NBS2/P053.run new file mode 100644 index 0000000..5b9b93b --- /dev/null +++ b/NBS2/P053.run @@ -0,0 +1,24 @@ +PROGRAM FILE 53: ERROR - INTERLEAVED FOR-BLOCKS. + ANSI STANDARD 11.4 + +SECTION 53.1: ERROR - INTERLEAVED FOR-BLOCKS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCKS; LOOPS ARE: +FOR I=1 TO 3 / FOR J=1 TO 5 / NEXT I / NEXT J +I = 1 J = 1 + +ERROR in line 270: NEXT without FOR diff --git a/NBS2/P054.80 b/NBS2/P054.80 new file mode 100644 index 0000000..73b5579 --- /dev/null +++ b/NBS2/P054.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 54: ERROR - NESTED FOR-BLOCKS + WITH THE SAME CONTROL VARIABLE. + ANSI STANDARD 11.4 + +SECTION 54.1: ERROR - NESTED FOR-BLOCKS WITH + THE SAME CONTROL VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCKS; LOOPS ARE: +FOR I=1 TO 3 / FOR J=2 TO 4 / FOR I=3 TO 5 / NEXT I / NEXT J / NEXT I + +I = 3 J = 2 +I = 4 J = 2 +I = 5 J = 2 +I = 3 J = 3 +I = 4 J = 3 +I = 5 J = 3 +I = 3 J = 4 +I = 4 J = 4 +I = 5 J = 4 + + END TEST. +END PROGRAM 54 diff --git a/NBS2/P054.BAS b/NBS2/P054.BAS new file mode 100644 index 0000000..7153df2 --- /dev/null +++ b/NBS2/P054.BAS @@ -0,0 +1,36 @@ +10 PRINT "PROGRAM FILE 54: ERROR - NESTED FOR-BLOCKS" +15 PRINT " WITH THE SAME CONTROL VARIABLE." +20 PRINT " ANSI STANDARD 11.4" +30 PRINT +40 PRINT "SECTION 54.1: ERROR - NESTED FOR-BLOCKS WITH" +50 PRINT " THE SAME CONTROL VARIABLE." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 PRINT "ENTERING FOR-BLOCKS; LOOPS ARE:" +220 PRINT "FOR I=1 TO 3 / FOR J=2 TO 4 / FOR I=3 TO 5 / "; +230 PRINT "NEXT I / NEXT J / NEXT I" +240 PRINT +260 FOR I=1 TO 3 +270 FOR J=2 TO 4 +280 FOR I=3 TO 5 +290 PRINT "I = ";I;" J = ";J +300 NEXT I +305 NEXT J +310 NEXT I +350 PRINT +360 PRINT " END TEST." +380 PRINT "END PROGRAM 54" +390 END diff --git a/NBS2/P054.OUT b/NBS2/P054.OUT new file mode 100644 index 0000000..7fd2a4c --- /dev/null +++ b/NBS2/P054.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 54: ERROR - NESTED FOR-BLOCKS + WITH THE SAME CONTROL VARIABLE. + ANSI STANDARD 11.4 + +SECTION 54.1: ERROR - NESTED FOR-BLOCKS WITH + THE SAME CONTROL VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCKS; LOOPS ARE: +FOR I=1 TO 3 / FOR J=2 TO 4 / FOR I=3 TO 5 / NEXT I / NEXT J / NEXT I + +I = 3 J = 2 +I = 4 J = 2 +I = 5 J = 2 +I = 3 J = 3 +I = 4 J = 3 +I = 5 J = 3 +I = 3 J = 4 +I = 4 J = 4 +I = 5 J = 4 + + END TEST. +END PROGRAM 54 diff --git a/NBS2/P054.dif b/NBS2/P054.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P054.run b/NBS2/P054.run new file mode 100644 index 0000000..73b5579 --- /dev/null +++ b/NBS2/P054.run @@ -0,0 +1,36 @@ +PROGRAM FILE 54: ERROR - NESTED FOR-BLOCKS + WITH THE SAME CONTROL VARIABLE. + ANSI STANDARD 11.4 + +SECTION 54.1: ERROR - NESTED FOR-BLOCKS WITH + THE SAME CONTROL VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ENTERING FOR-BLOCKS; LOOPS ARE: +FOR I=1 TO 3 / FOR J=2 TO 4 / FOR I=3 TO 5 / NEXT I / NEXT J / NEXT I + +I = 3 J = 2 +I = 4 J = 2 +I = 5 J = 2 +I = 3 J = 3 +I = 4 J = 3 +I = 5 J = 3 +I = 3 J = 4 +I = 4 J = 4 +I = 5 J = 4 + + END TEST. +END PROGRAM 54 diff --git a/NBS2/P055.80 b/NBS2/P055.80 new file mode 100644 index 0000000..361fd09 --- /dev/null +++ b/NBS2/P055.80 @@ -0,0 +1,26 @@ +PROGRAM FILE 55: ERROR - JUMP INTO FOR-BLOCK. + ANSI STANDARD 11.4 + +SECTION 55.1: ERROR - JUMP INTO FOR-BLOCK. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. +SETTING I = 5 + +ABOUT TO JUMP INTO FOR-BLOCK AROUND FOR-STATEMENT: +LOOP IS: FOR I=1 TO 9 ... NEXT I + +I = 5 + +ERROR in line 310: NEXT without FOR diff --git a/NBS2/P055.BAS b/NBS2/P055.BAS new file mode 100644 index 0000000..e3d7283 --- /dev/null +++ b/NBS2/P055.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 55: ERROR - JUMP INTO FOR-BLOCK." +20 PRINT " ANSI STANDARD 11.4" +30 PRINT +40 PRINT "SECTION 55.1: ERROR - JUMP INTO FOR-BLOCK." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST." +192 PRINT "SETTING I = 5" +195 LET I=5 +200 PRINT +210 PRINT "ABOUT TO JUMP INTO FOR-BLOCK AROUND FOR-STATEMENT:" +220 PRINT "LOOP IS: FOR I=1 TO 9 ... NEXT I" +240 PRINT +250 GOTO 270 +260 FOR I=1 TO 9 +270 PRINT "I = ";I +310 NEXT I +350 PRINT +360 PRINT " END TEST." +370 PRINT +380 PRINT "END PROGRAM 55" +390 END diff --git a/NBS2/P055.OUT b/NBS2/P055.OUT new file mode 100644 index 0000000..f567c9d --- /dev/null +++ b/NBS2/P055.OUT @@ -0,0 +1,26 @@ +PROGRAM FILE 55: ERROR - JUMP INTO FOR-BLOCK. + ANSI STANDARD 11.4 + +SECTION 55.1: ERROR - JUMP INTO FOR-BLOCK. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. +SETTING I = 5 + +ABOUT TO JUMP INTO FOR-BLOCK AROUND FOR-STATEMENT: +LOOP IS: FOR I=1 TO 9 ... NEXT I + +I = 5 + +ERROR in line 310: NEXT without FOR diff --git a/NBS2/P055.dif b/NBS2/P055.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P055.run b/NBS2/P055.run new file mode 100644 index 0000000..361fd09 --- /dev/null +++ b/NBS2/P055.run @@ -0,0 +1,26 @@ +PROGRAM FILE 55: ERROR - JUMP INTO FOR-BLOCK. + ANSI STANDARD 11.4 + +SECTION 55.1: ERROR - JUMP INTO FOR-BLOCK. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. +SETTING I = 5 + +ABOUT TO JUMP INTO FOR-BLOCK AROUND FOR-STATEMENT: +LOOP IS: FOR I=1 TO 9 ... NEXT I + +I = 5 + +ERROR in line 310: NEXT without FOR diff --git a/NBS2/P056.80 b/NBS2/P056.80 new file mode 100644 index 0000000..834f409 --- /dev/null +++ b/NBS2/P056.80 @@ -0,0 +1,43 @@ +PROGRAM FILE 56: ARRAY ASSIGNMENT WITHOUT + THE OPTION-STATEMENT. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + +SECTION 56.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 56.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 56.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 56.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 56 diff --git a/NBS2/P056.BAS b/NBS2/P056.BAS new file mode 100644 index 0000000..9f3b403 --- /dev/null +++ b/NBS2/P056.BAS @@ -0,0 +1,154 @@ +10 PRINT "PROGRAM FILE 56: ARRAY ASSIGNMENT WITHOUT" +15 PRINT " THE OPTION-STATEMENT." +20 PRINT " ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4" +30 PRINT +90 PRINT "SECTION 56.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE" +95 PRINT " DIM-STATEMENT." +100 PRINT +110 PRINT " BEGIN TEST." +120 PRINT +130 FOR I=0 TO 10 +140 LET A(I)=I +150 NEXT I +160 LET A1=0 +170 LET C=0 +180 FOR I=10 TO 0 STEP -1 +190 LET Y=A(I) +200 LET A1=A1+Y +210 IF Y<>I THEN 230 +220 LET C=C+1 +230 NEXT I +240 IF C<>11 THEN 260 +250 IF A1=55 THEN 280 +260 PRINT "*** TEST FAILED ***" +270 GOTO 290 +280 PRINT "*** TEST PASSED ***" +290 PRINT +300 PRINT " END TEST." +310 PRINT +320 PRINT "SECTION 56.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE" +325 PRINT " DIM-STATEMENT." +330 PRINT +340 PRINT " BEGIN TEST." +350 PRINT +360 FOR I=0 TO 10 +370 FOR J=0 TO 10 +380 LET Z=I+J +390 LET B(I,J)=Z +400 NEXT J +410 NEXT I +420 LET B1=0 +430 LET C=0 +440 FOR I=10 TO 0 STEP -1 +450 FOR J=10 TO 0 STEP -1 +460 LET W=B(I,J) +470 LET B1=B1+W +480 LET Z=I+J +490 IF W<>Z THEN 510 +500 LET C=C+1 +510 NEXT J +520 NEXT I +530 IF C<>121 THEN 550 +540 IF B1=1210 THEN 570 +550 PRINT "*** TEST FAILED ***" +560 GOTO 580 +570 PRINT "*** TEST PASSED ***" +580 PRINT +590 PRINT " END TEST." +600 PRINT +640 PRINT "SECTION 56.3: ONE-DIMENSIONAL ARRAYS WITH THE" +645 PRINT " DIM-STATEMENT." +650 PRINT +660 PRINT " BEGIN TEST." +670 PRINT +680 DIM D(20) +690 FOR I=0 TO 20 +700 LET H=I+1 +710 LET D(I)=H +720 NEXT I +730 LET D1=0 +740 LET C=0 +750 FOR I=0 TO 20 +760 LET M=D(I) +770 LET D1=D1+M +780 LET H=I+1 +790 IF M<>H THEN 810 +800 LET C=C+1 +810 NEXT I +820 IF C<>21 THEN 840 +830 IF D1=231 THEN 860 +840 PRINT "*** TEST FAILED ***" +850 GOTO 870 +860 PRINT "*** TEST PASSED ***" +870 PRINT +880 PRINT " END TEST." +890 PRINT +900 PRINT +910 PRINT "SECTION 56.4: TWO-DIMENSIONAL ARRAYS WITH THE" +915 PRINT " DIM-STATEMENT." +920 PRINT +930 PRINT " BEGIN TEST." +940 PRINT +950 DIM N(20,2),P(2,20),R(20,20) +960 FOR I=0 TO 20 +970 LET I1=I+1 +980 LET N(I,1)=I1 +990 LET N(I,2)=-I +1000 LET N(I,0)=1 +1010 FOR J=2 TO 0 STEP -1 +1020 LET J1=I*J +1030 LET P(J,I)=J1 +1040 NEXT J +1050 NEXT I +1060 FOR K=0 TO 20 +1070 FOR L=0 TO 20 +1080 LET K1=K+L +1090 LET R(K,L)=K1 +1100 NEXT L +1110 NEXT K +1120 LET N1=0 +1130 LET P1=0 +1140 LET R1=0 +1150 LET C=0 +1160 LET T=0 +1170 FOR I=0 TO 20 +1180 LET I1=I+1 +1190 LET T7=N(I,1) +1200 LET T8=N(I,2) +1210 LET T9=N(I,0) +1220 IF T7 <> I1 THEN 1490 +1230 IF T8 <> -I THEN 1490 +1240 IF T9 <> 1 THEN 1490 +1250 FOR J=0 TO 2 +1260 LET F1=N(I,J) +1270 LET N1=N1+F1 +1280 LET G1=P(J,I) +1290 LET P1=P1+G1 +1300 LET J1=I*J +1310 IF G1 <> J1 THEN 1330 +1320 LET C=C+1 +1330 NEXT J +1340 NEXT I +1350 IF C<>63 THEN 1490 +1360 IF N1<>42 THEN 1490 +1370 IF P1<>630 THEN 1490 +1380 FOR K=20 TO 0 STEP -1 +1390 FOR L=0 TO 20 +1400 LET Q1=R(K,L) +1410 LET R1=R1+Q1 +1420 LET K1=K+L +1430 IF Q1 <> K1 THEN 1450 +1440 LET T=T+1 +1450 NEXT L +1460 NEXT K +1470 IF T<>441 THEN 1490 +1480 IF R1=8820 THEN 1510 +1490 PRINT "*** TEST FAILED ***" +1500 GOTO 1520 +1510 PRINT "*** TEST PASSED ***" +1520 PRINT +1530 PRINT " END TEST." +1540 PRINT +1550 PRINT +1560 PRINT "END PROGRAM 56" +1570 END diff --git a/NBS2/P056.OUT b/NBS2/P056.OUT new file mode 100644 index 0000000..c1d4894 --- /dev/null +++ b/NBS2/P056.OUT @@ -0,0 +1,43 @@ +PROGRAM FILE 56: ARRAY ASSIGNMENT WITHOUT + THE OPTION-STATEMENT. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + +SECTION 56.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 56.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 56.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 56.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 56 diff --git a/NBS2/P056.dif b/NBS2/P056.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P056.run b/NBS2/P056.run new file mode 100644 index 0000000..834f409 --- /dev/null +++ b/NBS2/P056.run @@ -0,0 +1,43 @@ +PROGRAM FILE 56: ARRAY ASSIGNMENT WITHOUT + THE OPTION-STATEMENT. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + +SECTION 56.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 56.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 56.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 56.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 56 diff --git a/NBS2/P057.80 b/NBS2/P057.80 new file mode 100644 index 0000000..9989fed --- /dev/null +++ b/NBS2/P057.80 @@ -0,0 +1,42 @@ +PROGRAM FILE 57: ARRAY ASSIGNMENT WITH OPTION BASE 0. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + +SECTION 57.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 57.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 57.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 57.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 57 diff --git a/NBS2/P057.BAS b/NBS2/P057.BAS new file mode 100644 index 0000000..c6a3558 --- /dev/null +++ b/NBS2/P057.BAS @@ -0,0 +1,154 @@ +10 PRINT "PROGRAM FILE 57: ARRAY ASSIGNMENT WITH OPTION BASE 0." +20 PRINT " ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4" +30 PRINT +50 OPTION BASE 0 +90 PRINT "SECTION 57.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE" +95 PRINT " DIM STATEMENT." +100 PRINT +110 PRINT " BEGIN TEST." +120 PRINT +130 FOR I=0 TO 10 +140 LET A(I)=I +150 NEXT I +160 LET A1=0 +170 LET C=0 +180 FOR I=10 TO 0 STEP -1 +190 LET Y=A(I) +200 LET A1=A1+Y +210 IF Y<>I THEN 230 +220 LET C=C+1 +230 NEXT I +240 IF C<>11 THEN 260 +250 IF A1=55 THEN 280 +260 PRINT "*** TEST FAILED ***" +270 GOTO 290 +280 PRINT "*** TEST PASSED ***" +290 PRINT +300 PRINT " END TEST." +310 PRINT +320 PRINT "SECTION 57.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE" +325 PRINT " DIM-STATEMENT." +330 PRINT +340 PRINT " BEGIN TEST." +350 PRINT +360 FOR I=0 TO 10 +370 FOR J=0 TO 10 +380 LET Z=I+J +390 LET B(I,J)=Z +400 NEXT J +410 NEXT I +420 LET B1=0 +430 LET C=0 +440 FOR I=10 TO 0 STEP -1 +450 FOR J=10 TO 0 STEP -1 +460 LET W=B(I,J) +470 LET B1=B1+W +480 LET Z=I+J +490 IF W<>Z THEN 510 +500 LET C=C+1 +510 NEXT J +520 NEXT I +530 IF C<>121 THEN 550 +540 IF B1=1210 THEN 570 +550 PRINT "*** TEST FAILED ***" +560 GOTO 580 +570 PRINT "*** TEST PASSED ***" +580 PRINT +590 PRINT " END TEST." +600 PRINT +640 PRINT "SECTION 57.3: ONE-DIMENSIONAL ARRAYS WITH THE" +645 PRINT " DIM-STATEMENT." +650 PRINT +660 PRINT " BEGIN TEST." +670 PRINT +680 DIM D(20) +690 FOR I=0 TO 20 +700 LET H=I+1 +710 LET D(I)=H +720 NEXT I +730 LET D1=0 +740 LET C=0 +750 FOR I=0 TO 20 +760 LET M=D(I) +770 LET D1=D1+M +780 LET H=I+1 +790 IF M<>H THEN 810 +800 LET C=C+1 +810 NEXT I +820 IF C<>21 THEN 840 +830 IF D1=231 THEN 860 +840 PRINT "*** TEST FAILED ***" +850 GOTO 870 +860 PRINT "*** TEST PASSED ***" +870 PRINT +880 PRINT " END TEST." +890 PRINT +900 PRINT +910 PRINT "SECTION 57.4: TWO-DIMENSIONAL ARRAYS WITH THE" +915 PRINT " DIM-STATEMENT." +920 PRINT +930 PRINT " BEGIN TEST." +940 PRINT +950 DIM N(20,2),P(2,20),R(20,20) +960 FOR I=0 TO 20 +970 LET I1=I+1 +980 LET N(I,1)=I1 +990 LET N(I,2)=-I +1000 LET N(I,0)=1 +1010 FOR J=2 TO 0 STEP -1 +1020 LET J1=I*J +1030 LET P(J,I)=J1 +1040 NEXT J +1050 NEXT I +1060 FOR K=0 TO 20 +1070 FOR L=0 TO 20 +1080 LET K1=K+L +1090 LET R(K,L)=K1 +1100 NEXT L +1110 NEXT K +1120 LET N1=0 +1130 LET P1=0 +1140 LET R1=0 +1150 LET C=0 +1160 LET T=0 +1170 FOR I=0 TO 20 +1180 LET I1=I+1 +1190 LET T7=N(I,1) +1200 LET T8=N(I,2) +1210 LET T9=N(I,0) +1220 IF T7 <> I1 THEN 1490 +1230 IF T8 <> -I THEN 1490 +1240 IF T9 <> 1 THEN 1490 +1250 FOR J=0 TO 2 +1260 LET F1=N(I,J) +1270 LET N1=N1+F1 +1280 LET G1=P(J,I) +1290 LET P1=P1+G1 +1300 LET J1=I*J +1310 IF G1 <> J1 THEN 1330 +1320 LET C=C+1 +1330 NEXT J +1340 NEXT I +1350 IF C<>63 THEN 1490 +1360 IF N1<>42 THEN 1490 +1370 IF P1<>630 THEN 1490 +1380 FOR K=20 TO 0 STEP -1 +1390 FOR L=0 TO 20 +1400 LET Q1=R(K,L) +1410 LET R1=R1+Q1 +1420 LET K1=K+L +1430 IF Q1 <> K1 THEN 1450 +1440 LET T=T+1 +1450 NEXT L +1460 NEXT K +1470 IF T<>441 THEN 1490 +1480 IF R1=8820 THEN 1510 +1490 PRINT "*** TEST FAILED ***" +1500 GOTO 1520 +1510 PRINT "*** TEST PASSED ***" +1520 PRINT +1530 PRINT " END TEST." +1540 PRINT +1550 PRINT +1560 PRINT "END PROGRAM 57" +1570 END diff --git a/NBS2/P057.OUT b/NBS2/P057.OUT new file mode 100644 index 0000000..180c1e0 --- /dev/null +++ b/NBS2/P057.OUT @@ -0,0 +1,42 @@ +PROGRAM FILE 57: ARRAY ASSIGNMENT WITH OPTION BASE 0. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + +SECTION 57.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 57.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 57.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 57.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 57 diff --git a/NBS2/P057.dif b/NBS2/P057.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P057.run b/NBS2/P057.run new file mode 100644 index 0000000..9989fed --- /dev/null +++ b/NBS2/P057.run @@ -0,0 +1,42 @@ +PROGRAM FILE 57: ARRAY ASSIGNMENT WITH OPTION BASE 0. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + +SECTION 57.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 57.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 57.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 57.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 57 diff --git a/NBS2/P058.80 b/NBS2/P058.80 new file mode 100644 index 0000000..3b26d21 --- /dev/null +++ b/NBS2/P058.80 @@ -0,0 +1,43 @@ +PROGRAM FILE 58: ARRAY ASSIGNMENT WITH OPTION BASE 1. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + + +SECTION 58.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 58.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 58.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 58.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + BEGIN TEST. + + +END PROGRAM 58 diff --git a/NBS2/P058.BAS b/NBS2/P058.BAS new file mode 100644 index 0000000..e8327b1 --- /dev/null +++ b/NBS2/P058.BAS @@ -0,0 +1,157 @@ +10 PRINT "PROGRAM FILE 58: ARRAY ASSIGNMENT WITH OPTION BASE 1." +20 PRINT " ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4" +30 PRINT +45 GOTO 60 +50 OPTION BASE 1 +60 PRINT +100 PRINT "SECTION 58.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE" +105 PRINT " DIM-STATEMENT." +110 PRINT +120 PRINT " BEGIN TEST." +130 PRINT +140 FOR I=1 TO 10 +150 LET A(I)=I +160 NEXT I +170 LET A1=0 +180 LET C=0 +190 FOR I=10 TO 1 STEP -1 +200 LET Y=A(I) +210 LET A1=A1+Y +220 IF Y<>I THEN 240 +230 LET C=C+1 +240 NEXT I +250 IF C<>10 THEN 270 +260 IF A1=55 THEN 290 +270 PRINT "*** TEST FAILED ***" +280 GOTO 300 +290 PRINT "*** TEST PASSED ***" +300 PRINT +310 PRINT " END TEST." +320 PRINT +330 PRINT "SECTION 58.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE " +335 PRINT " DIM-STATEMENT." +340 PRINT +350 PRINT " BEGIN TEST." +360 PRINT +370 FOR I=1 TO 10 +380 FOR J=1 TO 10 +390 LET Z=I+J +400 LET B(I,J)=Z +410 NEXT J +420 NEXT I +430 LET B1=0 +440 LET C=0 +450 FOR I=10 TO 1 STEP -1 +460 FOR J=10 TO 1 STEP -1 +470 LET W=B(I,J) +480 LET B1=B1+W +490 LET Z=I+J +500 IF W<>Z THEN 520 +510 LET C=C+1 +520 NEXT J +530 NEXT I +540 IF C<>100 THEN 560 +550 IF B1=1100 THEN 580 +560 PRINT "*** TEST FAILED ***" +570 GOTO 590 +580 PRINT "*** TEST PASSED ***" +590 PRINT +600 PRINT " END TEST." +610 PRINT +650 PRINT "SECTION 58.3: ONE-DIMENSIONAL ARRAYS WITH THE" +655 PRINT " DIM-STATEMENT." +660 PRINT +670 PRINT " BEGIN TEST." +680 PRINT +690 DIM E(1) +700 LET E(1)=6 +710 LET T9=E(1) +720 IF 6<>T9 THEN 890 +730 DIM D(20) +740 FOR I=1 TO 20 +750 LET H=I+1 +760 LET D(I)=H +770 NEXT I +780 LET D1=0 +790 LET C=0 +800 FOR I=1 TO 20 +810 LET M=D(I) +820 LET D1=D1+M +830 LET H=I+1 +840 IF M<>H THEN 860 +850 LET C=C+1 +860 NEXT I +870 IF C<>20 THEN 890 +880 IF D1=230 THEN 910 +890 PRINT "*** TEST FAILED ***" +900 GOTO 920 +910 PRINT "*** TEST PASSED ***" +920 PRINT +930 PRINT " END TEST." +940 PRINT +950 PRINT +960 PRINT "SECTION 58.4: TWO-DIMENSIONAL ARRAYS WITH THE" +965 PRINT " DIM-STATEMENT." +970 PRINT +980 PRINT " BEGIN TEST." +990 PRINT +1000 DIM N(20,2),P(2,20),R(20,20) +1010 FOR I=1 TO 20 +1020 LET I1=I+1 +1030 LET N(I,1)=I1 +1040 LET N(I,2)=-I +1050 FOR J=2 TO 1 STEP -1 +1060 LET J1=I*J +1070 LET P(J,I)=J1 +1080 NEXT J +1090 NEXT I +1100 FOR K=1 TO 20 +1110 FOR L=1 TO 20 +1120 LET K1=K+L +1130 LET R(K,L)=K1 +1140 NEXT L +1150 NEXT K +1160 LET N1=0 +1170 LET P1=0 +1180 LET R1=0 +1190 LET C=0 +1200 LET T=0 +1210 FOR I=1 TO 20 +1220 LET I1=I+1 +1230 LET T8=N(I,1) +1240 LET T9=N(I,2) +1250 IF T8 <> I1 THEN 1510 +1260 IF T9 <> -I THEN 1510 +1270 FOR J=1 TO 2 +1280 LET F1=N(I,J) +1290 LET N1=N1+F1 +1300 LET G1=P(J,I) +1310 LET P1=P1+G1 +1320 LET J1=I*J +1330 IF G1 <> J1 THEN 1350 +1340 LET C=C+1 +1350 NEXT J +1360 NEXT I +1370 IF C<>40 THEN 1510 +1380 IF N1<>20 THEN 1510 +1390 IF P1<>630 THEN 1510 +1400 FOR K=20 TO 1 STEP -1 +1410 FOR L=1 TO 20 +1420 LET Q1=R(K,L) +1430 LET R1=R1+Q1 +1440 LET K1=K+L +1450 IF Q1 <> K1 THEN 1470 +1460 LET T=T+1 +1470 NEXT L +1480 NEXT K +1490 IF T<>400 THEN 1510 +1500 IF R1=8400 THEN 1530 +1510 PRINT "*** TEST FAILED ***" +1520 GOTO 1540 +1530 PRINT "*** TEST PASSED ***" +1540 PRINT +1550 PRINT " BEGIN TEST." +1560 PRINT +1570 PRINT +1580 PRINT "END PROGRAM 58" +1590 END diff --git a/NBS2/P058.OUT b/NBS2/P058.OUT new file mode 100644 index 0000000..852b203 --- /dev/null +++ b/NBS2/P058.OUT @@ -0,0 +1,43 @@ +PROGRAM FILE 58: ARRAY ASSIGNMENT WITH OPTION BASE 1. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + + +SECTION 58.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 58.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 58.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 58.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + BEGIN TEST. + + +END PROGRAM 58 diff --git a/NBS2/P058.dif b/NBS2/P058.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P058.run b/NBS2/P058.run new file mode 100644 index 0000000..3b26d21 --- /dev/null +++ b/NBS2/P058.run @@ -0,0 +1,43 @@ +PROGRAM FILE 58: ARRAY ASSIGNMENT WITH OPTION BASE 1. + ANSI STANDARD 6.2, 6.4, 9.2, 9.4, 15.2, 15.4 + + +SECTION 58.1: ONE-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 58.2: TWO-DIMENSIONAL ARRAYS WITHOUT THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 58.3: ONE-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + + +SECTION 58.4: TWO-DIMENSIONAL ARRAYS WITH THE + DIM-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + BEGIN TEST. + + +END PROGRAM 58 diff --git a/NBS2/P059.80 b/NBS2/P059.80 new file mode 100644 index 0000000..5a8cd06 --- /dev/null +++ b/NBS2/P059.80 @@ -0,0 +1,13 @@ +PROGRAM FILE 59: ARRAY NAMED 'A' IS DISTINCT FROM 'A$'. + ANSI STANDARD 6.2, 6.4 + +SECTION 59.1: ARRAY NAMED 'A' IS DISTINCT FROM 'A$'. + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 59 diff --git a/NBS2/P059.BAS b/NBS2/P059.BAS new file mode 100644 index 0000000..0baf6ae --- /dev/null +++ b/NBS2/P059.BAS @@ -0,0 +1,30 @@ +10 PRINT "PROGRAM FILE 59: ARRAY NAMED 'A' IS DISTINCT FROM 'A$'." +20 PRINT " ANSI STANDARD 6.2, 6.4" +30 PRINT +40 PRINT "SECTION 59.1: ARRAY NAMED 'A' IS DISTINCT FROM 'A$'." +50 PRINT +60 PRINT " BEGIN TEST" +70 PRINT +80 FOR J=0 TO 10 +90 LET A(J)=11-J +100 NEXT J +110 LET E9=0 +120 LET A$="OK" +130 FOR I=10 TO 0 STEP -1 +140 IF A(I)=11-I THEN 170 +150 LET E9=1 +160 PRINT "LOST CORRECT VALUE IN ARRAY ELEMENT #";I +170 NEXT I +180 IF A$="OK" THEN 210 +190 PRINT "LOST CORRECT VALUE IN A$" +200 LET E9=1 +210 PRINT +220 IF E9<>0 THEN 250 +230 PRINT "*** TEST PASSED ***" +240 GOTO 260 +250 PRINT "*** TEST FAILED ***" +260 PRINT +270 PRINT " END TEST" +280 PRINT +290 PRINT "END PROGRAM 59" +340 END diff --git a/NBS2/P059.OUT b/NBS2/P059.OUT new file mode 100644 index 0000000..85a5620 --- /dev/null +++ b/NBS2/P059.OUT @@ -0,0 +1,13 @@ +PROGRAM FILE 59: ARRAY NAMED 'A' IS DISTINCT FROM 'A$'. + ANSI STANDARD 6.2, 6.4 + +SECTION 59.1: ARRAY NAMED 'A' IS DISTINCT FROM 'A$'. + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 59 diff --git a/NBS2/P059.dif b/NBS2/P059.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P059.run b/NBS2/P059.run new file mode 100644 index 0000000..5a8cd06 --- /dev/null +++ b/NBS2/P059.run @@ -0,0 +1,13 @@ +PROGRAM FILE 59: ARRAY NAMED 'A' IS DISTINCT FROM 'A$'. + ANSI STANDARD 6.2, 6.4 + +SECTION 59.1: ARRAY NAMED 'A' IS DISTINCT FROM 'A$'. + + BEGIN TEST + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 59 diff --git a/NBS2/P060.80 b/NBS2/P060.80 new file mode 100644 index 0000000..a59f30c --- /dev/null +++ b/NBS2/P060.80 @@ -0,0 +1,14 @@ +PROGRAM FILE 60: NUMERIC CONSTANTS USED AS SUBSCRIPTS + ARE ROUNDED TO NEAREST INTEGER. + ANSI STANDARD 6.4, 5.4 + +SECTION 60.2: NUMERIC CONSTANTS USED AS SUBSCRIPTS + ARE ROUNDED TO NEAREST INTEGER. + + BEGIN TEST + + *** TEST PASSED *** + + END TEST + +END PROGRAM 60 diff --git a/NBS2/P060.BAS b/NBS2/P060.BAS new file mode 100644 index 0000000..5ce5153 --- /dev/null +++ b/NBS2/P060.BAS @@ -0,0 +1,34 @@ +10 PRINT "PROGRAM FILE 60: NUMERIC CONSTANTS USED AS SUBSCRIPTS" +20 PRINT " ARE ROUNDED TO NEAREST INTEGER." +30 PRINT " ANSI STANDARD 6.4, 5.4" +40 PRINT +50 PRINT "SECTION 60.2: NUMERIC CONSTANTS USED AS SUBSCRIPTS" +60 PRINT " ARE ROUNDED TO NEAREST INTEGER." +70 PRINT +80 PRINT " BEGIN TEST" +90 PRINT +100 FOR I=0 TO 10 +110 LET A(I)=11-I +120 NEXT I +130 LET Y$="3" +140 LET X$="3" +150 IF A(3)<>8 THEN 280 +160 LET X$="2.50001" +170 IF A(2.50001)<>8 THEN 280 +180 LET X$="3.49999" +190 IF A(3.49999)<>8 THEN 280 +200 LET Y$="0" +210 LET X$="-.49" +220 IF A(-.49) <> 11 THEN 280 +230 LET Y$="10" +240 LET X$="10.49" +250 IF A(10.49)<>1 THEN 280 +260 PRINT " *** TEST PASSED *** " +270 GOTO 300 +280 PRINT "SUBSCRIPT OF ";X$;" DID NOT EVALUATE TO ";Y$ +290 PRINT "*** TEST FAILED ***" +300 PRINT +310 PRINT " END TEST" +320 PRINT +330 PRINT "END PROGRAM 60" +340 END diff --git a/NBS2/P060.OUT b/NBS2/P060.OUT new file mode 100644 index 0000000..13843c2 --- /dev/null +++ b/NBS2/P060.OUT @@ -0,0 +1,14 @@ +PROGRAM FILE 60: NUMERIC CONSTANTS USED AS SUBSCRIPTS + ARE ROUNDED TO NEAREST INTEGER. + ANSI STANDARD 6.4, 5.4 + +SECTION 60.2: NUMERIC CONSTANTS USED AS SUBSCRIPTS + ARE ROUNDED TO NEAREST INTEGER. + + BEGIN TEST + + *** TEST PASSED *** + + END TEST + +END PROGRAM 60 diff --git a/NBS2/P060.dif b/NBS2/P060.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P060.run b/NBS2/P060.run new file mode 100644 index 0000000..a59f30c --- /dev/null +++ b/NBS2/P060.run @@ -0,0 +1,14 @@ +PROGRAM FILE 60: NUMERIC CONSTANTS USED AS SUBSCRIPTS + ARE ROUNDED TO NEAREST INTEGER. + ANSI STANDARD 6.4, 5.4 + +SECTION 60.2: NUMERIC CONSTANTS USED AS SUBSCRIPTS + ARE ROUNDED TO NEAREST INTEGER. + + BEGIN TEST + + *** TEST PASSED *** + + END TEST + +END PROGRAM 60 diff --git a/NBS2/P061.80 b/NBS2/P061.80 new file mode 100644 index 0000000..4e33e6b --- /dev/null +++ b/NBS2/P061.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 61: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES. + ANSI STANDARD 6.2, 6.4, 7.2, 7.4 + +SECTION 61.1: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES. + +THIS SECTION TESTS WHETHER SUBSCRIPTED VARIABLES +CAN BE USED AS PRIMARIES IN NUMERIC EXPRESSIONS. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 26 26 TEST PASSES + 2 96.9331 96.9331 TEST PASSES + 3 -9 -9 TEST PASSES + 4 15.963 15.963 TEST PASSES + 5 -43.5 -43.5 TEST PASSES + 6 -2 -2. TEST PASSES + +*** TEST PASSED *** + + END TEST + +END PROGRAM 61 + +Program interrupted at line 2090 diff --git a/NBS2/P061.BAS b/NBS2/P061.BAS new file mode 100644 index 0000000..9a0f193 --- /dev/null +++ b/NBS2/P061.BAS @@ -0,0 +1,87 @@ +10 PRINT "PROGRAM FILE 61: NUMERIC EXPRESSIONS CONTAINING" +20 PRINT " SUBSCRIPTED VARIABLES." +30 PRINT " ANSI STANDARD 6.2, 6.4, 7.2, 7.4" +40 PRINT +50 PRINT "SECTION 61.1: NUMERIC EXPRESSIONS CONTAINING" +60 PRINT " SUBSCRIPTED VARIABLES." +70 PRINT +80 PRINT "THIS SECTION TESTS WHETHER SUBSCRIPTED VARIABLES" +90 PRINT "CAN BE USED AS PRIMARIES IN NUMERIC EXPRESSIONS." +100 PRINT +110 PRINT " BEGIN TEST" +120 PRINT +130 PRINT "CASE #","SHOULD BE","ACTUAL","OUTCOME" +140 PRINT +150 LET F=0 +160 LET C1=0 +180 REM ARRAY B(I) CONTAINS FIBONACCI SERIES +200 LET B(1)=+001.00 +210 LET B(2)=1 +220 FOR I=3 TO 10 +230 LET J=I-1 +240 LET K=I-2 +250 LET B(I)=B(J)+B(K) +260 NEXT I +270 LET A=B(5)+B(8) +280 LET Y=26 +290 GOSUB 9000 +300 LET C(7)=47.23/B(7)+23.E-1 +310 LET H9=7.0 +320 LET A=C(H9)+H9*B(H9) +330 LET Y=96.933076923 +340 GOSUB 9000 +350 LET H9=6 +360 LET H9=B(H9) +370 LET H9=B(H9) +380 LET Z(0)=(H9/7)^B(4)*20/(B(7)-B(4))-B(10)-.02E+02 +390 LET Z(1)=Z(0)+Z(0) +400 LET Z(2)=-Z(0)-Z(0) +410 LET Z(3)=Z(0)*Z(0) +420 LET Z(4)=Z(0)/Z(0) +430 LET Z(5)=Z(0)^Z(0) +440 LET A=Z(0)+Z(1) +450 LET Y=-9 +460 GOSUB 9000 +470 LET A=Z(2)+Z(3)+Z(4)+Z(5) +480 LET Y=15.96296293 +490 GOSUB 9000 +500 LET A=-2000.00E-03-B(10)-(B(4)-B(7))/2E+1*B(4)^(H9/7) +510 LET Y=-43.5 +520 GOSUB 9000 +530 FOR I=1 TO 7 +540 FOR J=1 TO 7 +550 LET Q(I,J)=I/J +560 NEXT J +570 NEXT I +580 LET A=Q(6,3)+Q(6,7)*Q(5,4)*(-Q(2,3))*Q(7,2)/Q(5,6)/Q(3,4) +590 LET Y=-2 +600 GOSUB 9000 +2000 PRINT +2010 IF F=0 THEN 2040 +2020 PRINT "*** TEST FAILED IN ";F;" CASE(S). ***" +2030 GOTO 2050 +2040 PRINT "*** TEST PASSED ***" +2050 PRINT +2060 PRINT " END TEST" +2070 PRINT +2080 PRINT "END PROGRAM 61" +2090 STOP +9000 REM HANDLE REPORT +9002 REM THIS SUBROUTINE ADOPTS A VERY LOOSE CRITERION OF CORRECTNESS +9004 REM (RELATIVE ERROR < .01). ITS PURPOSE IS NOT TO MEASURE ACCURACY +9006 REM BUT ONLY TO ASSURE THAT THE SEMANTICS OF THE EXPRESSION +9008 REM HAVE BEEN CORRECTLY IMPLEMENTED. +9010 LET C1=C1+1 +9020 PRINT C1,Y,A, +9030 LET P$="FAILS" +9040 LET M=0.01 +9050 LET T=(A-Y)/Y +9060 IF T>M THEN 9110 +9070 LET T=-T +9080 IF T>M THEN 9110 +9090 LET P$="PASSES" +9100 GOTO 9120 +9110 LET F=F+1 +9120 PRINT "TEST ";P$ +9130 RETURN +9140 END diff --git a/NBS2/P061.OUT b/NBS2/P061.OUT new file mode 100644 index 0000000..ca1e623 --- /dev/null +++ b/NBS2/P061.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 61: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES. + ANSI STANDARD 6.2, 6.4, 7.2, 7.4 + +SECTION 61.1: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES. + +THIS SECTION TESTS WHETHER SUBSCRIPTED VARIABLES +CAN BE USED AS PRIMARIES IN NUMERIC EXPRESSIONS. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 26 26 TEST PASSES + 2 96.9331 96.9331 TEST PASSES + 3 -9 -9 TEST PASSES + 4 15.963 15.963 TEST PASSES + 5 -43.5 -43.5 TEST PASSES + 6 -2 -2. TEST PASSES + +*** TEST PASSED *** + + END TEST + +END PROGRAM 61 + +Program interrupted at line 2090 diff --git a/NBS2/P061.dif b/NBS2/P061.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P061.run b/NBS2/P061.run new file mode 100644 index 0000000..4e33e6b --- /dev/null +++ b/NBS2/P061.run @@ -0,0 +1,28 @@ +PROGRAM FILE 61: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES. + ANSI STANDARD 6.2, 6.4, 7.2, 7.4 + +SECTION 61.1: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES. + +THIS SECTION TESTS WHETHER SUBSCRIPTED VARIABLES +CAN BE USED AS PRIMARIES IN NUMERIC EXPRESSIONS. + + BEGIN TEST + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 26 26 TEST PASSES + 2 96.9331 96.9331 TEST PASSES + 3 -9 -9 TEST PASSES + 4 15.963 15.963 TEST PASSES + 5 -43.5 -43.5 TEST PASSES + 6 -2 -2. TEST PASSES + +*** TEST PASSED *** + + END TEST + +END PROGRAM 61 + +Program interrupted at line 2090 diff --git a/NBS2/P062.80 b/NBS2/P062.80 new file mode 100644 index 0000000..15873c5 --- /dev/null +++ b/NBS2/P062.80 @@ -0,0 +1,17 @@ +PROGRAM FILE 62: GENERAL SYNTACTIC AND SEMANTIC + PROPERTIES OF ARRAY CONTROL STATEMENTS: + OPTION AND DIM. + ANSI STANDARD 15.2, 15.4 + +SECTION 62.1: GENERAL SYNTACTIC AND SEMANTIC + PROPERTIES OF ARRAY CONTROL STATEMENTS: + OPTION AND DIM. + +THIS SECTION ASSURES THAT OPTION-STATEMENTS MAY PRECEDE +DIM-STATEMENTS, THAT REFERENCES TO IMPLICITLY-DIMENSIONED +ARRAYS MAY ALSO PRECEDE DIM-STATEMENTS, AND THAT FLOW +OF CONTROL MAY PASS THROUGH OPTION AND DIM STATEMENTS. + + BEGIN TEST + +ERROR in line 550: SUBSCRIPT OUT OF RANGE E(14) diff --git a/NBS2/P062.BAS b/NBS2/P062.BAS new file mode 100644 index 0000000..47f37bd --- /dev/null +++ b/NBS2/P062.BAS @@ -0,0 +1,72 @@ +10 PRINT "PROGRAM FILE 62: GENERAL SYNTACTIC AND SEMANTIC" +20 PRINT " PROPERTIES OF ARRAY CONTROL STATEMENTS:" +30 PRINT " OPTION AND DIM." +40 PRINT " ANSI STANDARD 15.2, 15.4" +50 PRINT +60 PRINT "SECTION 62.1: GENERAL SYNTACTIC AND SEMANTIC" +70 PRINT " PROPERTIES OF ARRAY CONTROL STATEMENTS:" +80 PRINT " OPTION AND DIM." +90 PRINT +100 PRINT "THIS SECTION ASSURES THAT OPTION-STATEMENTS MAY PRECEDE" +110 PRINT "DIM-STATEMENTS, THAT REFERENCES TO IMPLICITLY-DIMENSIONED" +120 PRINT "ARRAYS MAY ALSO PRECEDE DIM-STATEMENTS, AND THAT FLOW" +130 PRINT "OF CONTROL MAY PASS THROUGH OPTION AND DIM STATEMENTS." +140 PRINT +150 PRINT " BEGIN TEST" +160 LET F=0 +170 LET T=1 +180 OPTION BASE 1 +190 REM CAN FALL THROUGH OR JUMP TO OPTION WITH NO EFFECT +200 IF T<>1 THEN 230 +210 LET T=2 +220 GOTO 180 +230 LET A(1)=1 +240 REM CAN REFERENCE ARRAY BEFORE ANY DIM-STATEMENT +250 FOR I=2 TO 10 +260 LET J=I-1 +270 LET A(I)=A(J)+A(J) +280 NEXT I +290 IF A(10)=512 THEN 320 +300 LET M$="IMPLICIT ARRAY" +310 GOSUB 1000 +320 LET T=1 +330 DIM D(3),C(2,4),B(12) +340 REM CAN DIMENSION SEVERAL ARRAYS IN NON-ALPHA ORDER AND +350 REM OF DIFFERENT DIMENSIONALITY +360 REM CAN FALL THROUGH OR JUMP TO DIM +370 IF T<>1 THEN 400 +380 LET T=2 +390 GOTO 330 +400 LET B(12)=A(10) +410 FOR I=11 TO 1 STEP -1 +420 LET J=I+1 +430 LET B(I)=B(J) +440 NEXT I +450 IF B(1)=512 THEN 480 +460 LET M$="EXPLICIT ARRAY" +470 GOSUB 1000 +480 GOTO 510 +490 DIM E(14) +500 REM DIM SETS ARRAY SIZE EVEN IF JUMPED OVER +510 LET A(10)=666 +520 LET B(12)=A(10) +530 LET C(2,4)=B(12) +540 LET D(3)=C(2,4) +550 LET E(14)=D(3) +560 IF E(14)=666 THEN 590 +570 LET M$="SKIPPED-OVER DIM" +580 GOSUB 1000 +590 PRINT +600 IF F=0 THEN 630 +610 PRINT " *** TEST FAILED IN ";F;" CASE(S) *** " +620 GOTO 640 +630 PRINT " *** TEST PASSED *** " +640 PRINT +650 PRINT " END TEST" +660 PRINT +670 PRINT "END PROGRAM 62" +680 STOP +1000 PRINT "FAILURE BECAUSE OF: ";M$ +1010 LET F=F+1 +1020 RETURN +1030 END diff --git a/NBS2/P062.OUT b/NBS2/P062.OUT new file mode 100644 index 0000000..5ae1f10 --- /dev/null +++ b/NBS2/P062.OUT @@ -0,0 +1,17 @@ +PROGRAM FILE 62: GENERAL SYNTACTIC AND SEMANTIC + PROPERTIES OF ARRAY CONTROL STATEMENTS: + OPTION AND DIM. + ANSI STANDARD 15.2, 15.4 + +SECTION 62.1: GENERAL SYNTACTIC AND SEMANTIC + PROPERTIES OF ARRAY CONTROL STATEMENTS: + OPTION AND DIM. + +THIS SECTION ASSURES THAT OPTION-STATEMENTS MAY PRECEDE +DIM-STATEMENTS, THAT REFERENCES TO IMPLICITLY-DIMENSIONED +ARRAYS MAY ALSO PRECEDE DIM-STATEMENTS, AND THAT FLOW +OF CONTROL MAY PASS THROUGH OPTION AND DIM STATEMENTS. + + BEGIN TEST + +ERROR in line 550: SUBSCRIPT OUT OF RANGE E(14) diff --git a/NBS2/P062.dif b/NBS2/P062.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P062.run b/NBS2/P062.run new file mode 100644 index 0000000..15873c5 --- /dev/null +++ b/NBS2/P062.run @@ -0,0 +1,17 @@ +PROGRAM FILE 62: GENERAL SYNTACTIC AND SEMANTIC + PROPERTIES OF ARRAY CONTROL STATEMENTS: + OPTION AND DIM. + ANSI STANDARD 15.2, 15.4 + +SECTION 62.1: GENERAL SYNTACTIC AND SEMANTIC + PROPERTIES OF ARRAY CONTROL STATEMENTS: + OPTION AND DIM. + +THIS SECTION ASSURES THAT OPTION-STATEMENTS MAY PRECEDE +DIM-STATEMENTS, THAT REFERENCES TO IMPLICITLY-DIMENSIONED +ARRAYS MAY ALSO PRECEDE DIM-STATEMENTS, AND THAT FLOW +OF CONTROL MAY PASS THROUGH OPTION AND DIM STATEMENTS. + + BEGIN TEST + +ERROR in line 550: SUBSCRIPT OUT OF RANGE E(14) diff --git a/NBS2/P063.80 b/NBS2/P063.80 new file mode 100644 index 0000000..6b8f1be --- /dev/null +++ b/NBS2/P063.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 63: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY. + ANSI STANDARD 6.5 + +SECTION 63.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE IMPLICIT UPPER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 7 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 13 TO A( 7 ). + +ABOUT TO ASSIGN TO A( 8 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 12 TO A( 8 ). + +ABOUT TO ASSIGN TO A( 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO A( 9 ). + +ABOUT TO ASSIGN TO A( 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO A( 10 ). + +ABOUT TO ASSIGN TO A( 11 ). *** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 270: SUBSCRIPT OUT OF RANGE A(11) diff --git a/NBS2/P063.BAS b/NBS2/P063.BAS new file mode 100644 index 0000000..2842bf0 --- /dev/null +++ b/NBS2/P063.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 63: EXCEPTION - SUBSCRIPT TOO LARGE FOR" +15 PRINT " ONE-DIMENSIONAL ARRAY." +20 PRINT " ANSI STANDARD 6.5" +30 PRINT +40 PRINT "SECTION 63.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR" +50 PRINT " ONE-DIMENSIONAL ARRAY." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS" +90 PRINT "THE IMPLICIT UPPER BOUND OF AN ARRAY." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL" +170 PRINT " SUBSCRIPT." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 FOR I=7 TO 12 +220 PRINT "ABOUT TO ASSIGN TO A(";I;"). "; +230 IF I<11 THEN 260 +240 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +250 GOTO 270 +260 PRINT "ASSIGNMENT SHOULD BE OK." +270 LET A(I) = 20 - I +280 PRINT "HAVE ASSIGNED ";20-I;" TO A(";I;")." +290 IF I<11 THEN 310 +300 PRINT "ASSIGNMENT TO SUBSCRIPT > 10 - *** TEST FAILS ***" +310 PRINT +320 NEXT I +330 PRINT +340 PRINT " END TEST." +350 PRINT +360 PRINT "END PROGRAM 63" +370 END diff --git a/NBS2/P063.OUT b/NBS2/P063.OUT new file mode 100644 index 0000000..7a50351 --- /dev/null +++ b/NBS2/P063.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 63: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY. + ANSI STANDARD 6.5 + +SECTION 63.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE IMPLICIT UPPER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 7 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 13 TO A( 7 ). + +ABOUT TO ASSIGN TO A( 8 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 12 TO A( 8 ). + +ABOUT TO ASSIGN TO A( 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO A( 9 ). + +ABOUT TO ASSIGN TO A( 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO A( 10 ). + +ABOUT TO ASSIGN TO A( 11 ). *** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 270: SUBSCRIPT OUT OF RANGE A(11) diff --git a/NBS2/P063.dif b/NBS2/P063.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P063.run b/NBS2/P063.run new file mode 100644 index 0000000..6b8f1be --- /dev/null +++ b/NBS2/P063.run @@ -0,0 +1,36 @@ +PROGRAM FILE 63: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY. + ANSI STANDARD 6.5 + +SECTION 63.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE IMPLICIT UPPER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 7 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 13 TO A( 7 ). + +ABOUT TO ASSIGN TO A( 8 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 12 TO A( 8 ). + +ABOUT TO ASSIGN TO A( 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO A( 9 ). + +ABOUT TO ASSIGN TO A( 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO A( 10 ). + +ABOUT TO ASSIGN TO A( 11 ). *** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 270: SUBSCRIPT OUT OF RANGE A(11) diff --git a/NBS2/P064.80 b/NBS2/P064.80 new file mode 100644 index 0000000..3be471f --- /dev/null +++ b/NBS2/P064.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 64: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY. + ANSI STANDARD 6.5 + +SECTION 64.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE IMPLICIT LOWER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(7, 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO B(7, 3 ). + +ABOUT TO ASSIGN TO B(7, 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO B(7, 2 ). + +ABOUT TO ASSIGN TO B(7, 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO B(7, 1 ). + +ABOUT TO ASSIGN TO B(7, 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO B(7, 0 ). + +ABOUT TO ASSIGN TO B(7,-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 270: SUBSCRIPT OUT OF RANGE B(-1) diff --git a/NBS2/P064.BAS b/NBS2/P064.BAS new file mode 100644 index 0000000..44ed270 --- /dev/null +++ b/NBS2/P064.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 64: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +15 PRINT " TWO-DIMENSIONAL ARRAY." +20 PRINT " ANSI STANDARD 6.5" +30 PRINT +40 PRINT "SECTION 64.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +50 PRINT " TWO-DIMENSIONAL ARRAY." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS" +90 PRINT "THE IMPLICIT LOWER BOUND OF AN ARRAY." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL" +170 PRINT " SUBSCRIPT." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 FOR I=3 TO -2 STEP -1 +220 PRINT "ABOUT TO ASSIGN TO B(7,";I;")."; +230 IF I>-1 THEN 260 +240 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +250 GOTO 270 +260 PRINT " ASSIGNMENT SHOULD BE OK." +270 LET B(7,I) = 20 - I +280 PRINT "HAVE ASSIGNED ";20-I;" TO B(7,";I;")." +290 IF I>-1 THEN 310 +300 PRINT "ASSIGNMENT TO SUBSCRIPT < 0 - *** TEST FAILS ***" +310 PRINT +320 NEXT I +330 PRINT +340 PRINT " END TEST." +350 PRINT +360 PRINT "END PROGRAM 64" +370 END diff --git a/NBS2/P064.OUT b/NBS2/P064.OUT new file mode 100644 index 0000000..bb3e8d3 --- /dev/null +++ b/NBS2/P064.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 64: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY. + ANSI STANDARD 6.5 + +SECTION 64.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE IMPLICIT LOWER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(7, 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO B(7, 3 ). + +ABOUT TO ASSIGN TO B(7, 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO B(7, 2 ). + +ABOUT TO ASSIGN TO B(7, 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO B(7, 1 ). + +ABOUT TO ASSIGN TO B(7, 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO B(7, 0 ). + +ABOUT TO ASSIGN TO B(7,-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 270: SUBSCRIPT OUT OF RANGE B(-1) diff --git a/NBS2/P064.dif b/NBS2/P064.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P064.run b/NBS2/P064.run new file mode 100644 index 0000000..3be471f --- /dev/null +++ b/NBS2/P064.run @@ -0,0 +1,36 @@ +PROGRAM FILE 64: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY. + ANSI STANDARD 6.5 + +SECTION 64.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE IMPLICIT LOWER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(7, 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO B(7, 3 ). + +ABOUT TO ASSIGN TO B(7, 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO B(7, 2 ). + +ABOUT TO ASSIGN TO B(7, 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO B(7, 1 ). + +ABOUT TO ASSIGN TO B(7, 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO B(7, 0 ). + +ABOUT TO ASSIGN TO B(7,-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 270: SUBSCRIPT OUT OF RANGE B(-1) diff --git a/NBS2/P065.80 b/NBS2/P065.80 new file mode 100644 index 0000000..010daa4 --- /dev/null +++ b/NBS2/P065.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 65: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH DIM. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 65.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH DIM. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A NEGATIVE SUBSCRIPT AS A FATAL EXCEPTION +WHEN NO OPTION HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE + NEGATIVE SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO A( 0 ). + +ABOUT TO ASSIGN TO A(-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(-1) diff --git a/NBS2/P065.BAS b/NBS2/P065.BAS new file mode 100644 index 0000000..11872c9 --- /dev/null +++ b/NBS2/P065.BAS @@ -0,0 +1,39 @@ +10 PRINT "PROGRAM FILE 65: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +15 PRINT " ONE-DIMENSIONAL ARRAY, WITH DIM." +20 PRINT " ANSI STANDARD 6.5, 15.2, 15.4" +30 PRINT +40 PRINT "SECTION 65.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +50 PRINT " ONE-DIMENSIONAL ARRAY, WITH DIM." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES USE OF A NEGATIVE SUBSCRIPT AS A FATAL EXCEPTION" +90 PRINT "WHEN NO OPTION HAS BEEN SPECIFIED." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE" +170 PRINT " NEGATIVE SUBSCRIPT." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 DIM A(8) +220 FOR I=3 TO -2 STEP -1 +230 PRINT "ABOUT TO ASSIGN TO A(";I;")."; +240 IF I>-1 THEN 270 +250 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +260 GOTO 280 +270 PRINT " ASSIGNMENT SHOULD BE OK." +280 LET A(I) = 20 - I +290 PRINT "HAVE ASSIGNED ";20-I;" TO A(";I;")." +300 IF I>-1 THEN 320 +310 PRINT "ASSIGNMENT TO SUBSCRIPT < 1 - *** TEST FAILS ***" +320 PRINT +330 NEXT I +340 PRINT +350 PRINT " END TEST." +360 PRINT +370 PRINT "END PROGRAM 65" +380 END diff --git a/NBS2/P065.OUT b/NBS2/P065.OUT new file mode 100644 index 0000000..3bb43b1 --- /dev/null +++ b/NBS2/P065.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 65: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH DIM. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 65.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH DIM. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A NEGATIVE SUBSCRIPT AS A FATAL EXCEPTION +WHEN NO OPTION HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE + NEGATIVE SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO A( 0 ). + +ABOUT TO ASSIGN TO A(-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(-1) diff --git a/NBS2/P065.dif b/NBS2/P065.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P065.run b/NBS2/P065.run new file mode 100644 index 0000000..010daa4 --- /dev/null +++ b/NBS2/P065.run @@ -0,0 +1,36 @@ +PROGRAM FILE 65: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH DIM. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 65.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH DIM. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A NEGATIVE SUBSCRIPT AS A FATAL EXCEPTION +WHEN NO OPTION HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE + NEGATIVE SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO A( 0 ). + +ABOUT TO ASSIGN TO A(-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(-1) diff --git a/NBS2/P066.80 b/NBS2/P066.80 new file mode 100644 index 0000000..adee4c6 --- /dev/null +++ b/NBS2/P066.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 66: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 66.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(0, 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO B(0, 9 ). + +ABOUT TO ASSIGN TO B(0, 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO B(0, 10 ). + +ABOUT TO ASSIGN TO B(0, 11 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(0, 11 ). + +ABOUT TO ASSIGN TO B(0, 12 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(0, 12 ). + +ABOUT TO ASSIGN TO B(0, 13 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE B(13) diff --git a/NBS2/P066.BAS b/NBS2/P066.BAS new file mode 100644 index 0000000..032b91e --- /dev/null +++ b/NBS2/P066.BAS @@ -0,0 +1,39 @@ +10 PRINT "PROGRAM FILE 66: EXCEPTION - SUBSCRIPT TOO LARGE FOR" +15 PRINT " TWO-DIMENSIONAL ARRAY, WITH DIM." +20 PRINT " ANSI STANDARD 6.5, 15.2, 15.4" +30 PRINT +40 PRINT "SECTION 66.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR" +50 PRINT " TWO-DIMENSIONAL ARRAY, WITH DIM." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS" +90 PRINT "THE EXPLICIT UPPER BOUND OF AN ARRAY." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL" +170 PRINT " SUBSCRIPT." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 DIM B(3,12) +220 FOR I=9 TO 14 +230 PRINT "ABOUT TO ASSIGN TO B(0,";I;")."; +240 IF I<13 THEN 270 +250 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +260 GOTO 280 +270 PRINT " ASSIGNMENT SHOULD BE OK." +280 LET B(0,I) = 20 - I +290 PRINT "HAVE ASSIGNED ";20-I;" TO B(0,";I;")." +300 IF I<13 THEN 320 +310 PRINT "ASSIGNMENT TO SUBSCRIPT > 12 - *** TEST FAILS ***" +320 PRINT +330 NEXT I +340 PRINT +350 PRINT " END TEST." +360 PRINT +370 PRINT "END PROGRAM 66" +380 END diff --git a/NBS2/P066.OUT b/NBS2/P066.OUT new file mode 100644 index 0000000..6f54c3a --- /dev/null +++ b/NBS2/P066.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 66: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 66.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(0, 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO B(0, 9 ). + +ABOUT TO ASSIGN TO B(0, 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO B(0, 10 ). + +ABOUT TO ASSIGN TO B(0, 11 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(0, 11 ). + +ABOUT TO ASSIGN TO B(0, 12 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(0, 12 ). + +ABOUT TO ASSIGN TO B(0, 13 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE B(13) diff --git a/NBS2/P066.dif b/NBS2/P066.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P066.run b/NBS2/P066.run new file mode 100644 index 0000000..adee4c6 --- /dev/null +++ b/NBS2/P066.run @@ -0,0 +1,36 @@ +PROGRAM FILE 66: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 66.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(0, 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO B(0, 9 ). + +ABOUT TO ASSIGN TO B(0, 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO B(0, 10 ). + +ABOUT TO ASSIGN TO B(0, 11 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(0, 11 ). + +ABOUT TO ASSIGN TO B(0, 12 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(0, 12 ). + +ABOUT TO ASSIGN TO B(0, 13 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE B(13) diff --git a/NBS2/P067.80 b/NBS2/P067.80 new file mode 100644 index 0000000..0e7b818 --- /dev/null +++ b/NBS2/P067.80 @@ -0,0 +1,33 @@ +PROGRAM FILE 67: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 67.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A ZERO SUBSCRIPT AS A FATAL EXCEPTION WHEN +OPTION BASE 1 HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(0) diff --git a/NBS2/P067.BAS b/NBS2/P067.BAS new file mode 100644 index 0000000..7f9ba14 --- /dev/null +++ b/NBS2/P067.BAS @@ -0,0 +1,39 @@ +10 PRINT "PROGRAM FILE 67: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +15 PRINT " ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 1." +20 PRINT " ANSI STANDARD 6.5, 15.2, 15.4" +30 PRINT +40 PRINT "SECTION 67.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +50 PRINT " ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 1." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES USE OF A ZERO SUBSCRIPT AS A FATAL EXCEPTION WHEN" +90 PRINT "OPTION BASE 1 HAS BEEN SPECIFIED." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO" +170 PRINT " SUBSCRIPT." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 OPTION BASE 1 +220 FOR I=3 TO -2 STEP -1 +230 PRINT "ABOUT TO ASSIGN TO A(";I;")."; +240 IF I>0 THEN 270 +250 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +260 GOTO 280 +270 PRINT " ASSIGNMENT SHOULD BE OK." +280 LET A(I) = 20 - I +290 PRINT "HAVE ASSIGNED ";20-I;" TO A(";I;")." +300 IF I>0 THEN 320 +310 PRINT "ASSIGNMENT TO SUBSCRIPT < 1 - *** TEST FAILS ***" +320 PRINT +330 NEXT I +340 PRINT +350 PRINT " END TEST." +360 PRINT +370 PRINT "END PROGRAM 67" +380 END diff --git a/NBS2/P067.OUT b/NBS2/P067.OUT new file mode 100644 index 0000000..ff33cdf --- /dev/null +++ b/NBS2/P067.OUT @@ -0,0 +1,33 @@ +PROGRAM FILE 67: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 67.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A ZERO SUBSCRIPT AS A FATAL EXCEPTION WHEN +OPTION BASE 1 HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(0) diff --git a/NBS2/P067.dif b/NBS2/P067.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P067.run b/NBS2/P067.run new file mode 100644 index 0000000..0e7b818 --- /dev/null +++ b/NBS2/P067.run @@ -0,0 +1,33 @@ +PROGRAM FILE 67: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 67.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A ZERO SUBSCRIPT AS A FATAL EXCEPTION WHEN +OPTION BASE 1 HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(0) diff --git a/NBS2/P068.80 b/NBS2/P068.80 new file mode 100644 index 0000000..617c895 --- /dev/null +++ b/NBS2/P068.80 @@ -0,0 +1,34 @@ +PROGRAM FILE 68: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 68.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY, WITH AN OPTION +STATEMENT PRESENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 5 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 15 TO A( 5 ). + +ABOUT TO ASSIGN TO A( 6 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 14 TO A( 6 ). + +ABOUT TO ASSIGN TO A( 7 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 13 TO A( 7 ). + +ABOUT TO ASSIGN TO A( 8 ). *** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE A(8) diff --git a/NBS2/P068.BAS b/NBS2/P068.BAS new file mode 100644 index 0000000..1a8c2c6 --- /dev/null +++ b/NBS2/P068.BAS @@ -0,0 +1,41 @@ +10 PRINT "PROGRAM FILE 68: EXCEPTION - SUBSCRIPT TOO LARGE FOR" +15 PRINT " ONE-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1." +20 PRINT " ANSI STANDARD 6.5, 15.2, 15.4" +30 PRINT +40 PRINT "SECTION 68.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR" +50 PRINT " ONE-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS" +90 PRINT "THE EXPLICIT UPPER BOUND OF AN ARRAY, WITH AN OPTION" +100 PRINT "STATEMENT PRESENT." +110 PRINT +120 PRINT "TO PASS THIS TEST:" +130 PRINT +140 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +150 PRINT " DISPLAYED, AND" +160 PRINT +170 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL" +180 PRINT " SUBSCRIPT." +190 PRINT +200 PRINT " BEGIN TEST." +210 OPTION BASE 1 +220 DIM A(7) +230 PRINT +240 FOR I=5 TO 9 +250 PRINT "ABOUT TO ASSIGN TO A(";I;"). "; +260 IF I<8 THEN 290 +270 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +280 GOTO 300 +290 PRINT "ASSIGNMENT SHOULD BE OK." +300 LET A(I) = 20 - I +310 PRINT "HAVE ASSIGNED ";20-I;" TO A(";I;")." +320 IF I<8 THEN 340 +330 PRINT "ASSIGNMENT TO SUBSCRIPT > 7 - *** TEST FAILS ***" +340 PRINT +350 NEXT I +360 PRINT +370 PRINT " END TEST." +380 PRINT +390 PRINT "END PROGRAM 68" +400 END diff --git a/NBS2/P068.OUT b/NBS2/P068.OUT new file mode 100644 index 0000000..8b9abea --- /dev/null +++ b/NBS2/P068.OUT @@ -0,0 +1,34 @@ +PROGRAM FILE 68: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 68.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY, WITH AN OPTION +STATEMENT PRESENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 5 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 15 TO A( 5 ). + +ABOUT TO ASSIGN TO A( 6 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 14 TO A( 6 ). + +ABOUT TO ASSIGN TO A( 7 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 13 TO A( 7 ). + +ABOUT TO ASSIGN TO A( 8 ). *** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE A(8) diff --git a/NBS2/P068.dif b/NBS2/P068.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P068.run b/NBS2/P068.run new file mode 100644 index 0000000..617c895 --- /dev/null +++ b/NBS2/P068.run @@ -0,0 +1,34 @@ +PROGRAM FILE 68: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 68.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + ONE-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY, WITH AN OPTION +STATEMENT PRESENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 5 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 15 TO A( 5 ). + +ABOUT TO ASSIGN TO A( 6 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 14 TO A( 6 ). + +ABOUT TO ASSIGN TO A( 7 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 13 TO A( 7 ). + +ABOUT TO ASSIGN TO A( 8 ). *** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE A(8) diff --git a/NBS2/P069.80 b/NBS2/P069.80 new file mode 100644 index 0000000..437d00f --- /dev/null +++ b/NBS2/P069.80 @@ -0,0 +1,37 @@ +PROGRAM FILE 69: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 69.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY, WITH AN OPTION +STATEMENT PRESENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(0, 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO B(0, 9 ). + +ABOUT TO ASSIGN TO B(0, 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO B(0, 10 ). + +ABOUT TO ASSIGN TO B(0, 11 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(0, 11 ). + +ABOUT TO ASSIGN TO B(0, 12 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(0, 12 ). + +ABOUT TO ASSIGN TO B(0, 13 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE B(13) diff --git a/NBS2/P069.BAS b/NBS2/P069.BAS new file mode 100644 index 0000000..b2bacb7 --- /dev/null +++ b/NBS2/P069.BAS @@ -0,0 +1,41 @@ +10 PRINT "PROGRAM FILE 69: EXCEPTION - SUBSCRIPT TOO LARGE FOR" +15 PRINT " TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0." +20 PRINT " ANSI STANDARD 6.5, 15.2, 15.4" +30 PRINT +40 PRINT "SECTION 69.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR" +50 PRINT " TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS" +90 PRINT "THE EXPLICIT UPPER BOUND OF AN ARRAY, WITH AN OPTION" +100 PRINT "STATEMENT PRESENT." +110 PRINT +120 PRINT "TO PASS THIS TEST:" +130 PRINT +140 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +150 PRINT " DISPLAYED, AND" +160 PRINT +170 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL" +180 PRINT " SUBSCRIPT." +190 PRINT +200 PRINT " BEGIN TEST." +210 PRINT +220 OPTION BASE 0 +230 DIM B(3,12) +240 FOR I=9 TO 14 +250 PRINT "ABOUT TO ASSIGN TO B(0,";I;")."; +260 IF I<13 THEN 290 +270 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +280 GOTO 300 +290 PRINT " ASSIGNMENT SHOULD BE OK." +300 LET B(0,I) = 20 - I +310 PRINT "HAVE ASSIGNED ";20-I;" TO B(0,";I;")." +320 IF I<13 THEN 340 +330 PRINT "ASSIGNMENT TO SUBSCRIPT > 12 - *** TEST FAILS ***" +340 PRINT +350 NEXT I +360 PRINT +370 PRINT " END TEST." +380 PRINT +390 PRINT "END PROGRAM 69" +400 END diff --git a/NBS2/P069.OUT b/NBS2/P069.OUT new file mode 100644 index 0000000..f176498 --- /dev/null +++ b/NBS2/P069.OUT @@ -0,0 +1,37 @@ +PROGRAM FILE 69: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 69.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY, WITH AN OPTION +STATEMENT PRESENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(0, 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO B(0, 9 ). + +ABOUT TO ASSIGN TO B(0, 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO B(0, 10 ). + +ABOUT TO ASSIGN TO B(0, 11 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(0, 11 ). + +ABOUT TO ASSIGN TO B(0, 12 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(0, 12 ). + +ABOUT TO ASSIGN TO B(0, 13 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE B(13) diff --git a/NBS2/P069.dif b/NBS2/P069.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P069.run b/NBS2/P069.run new file mode 100644 index 0000000..437d00f --- /dev/null +++ b/NBS2/P069.run @@ -0,0 +1,37 @@ +PROGRAM FILE 69: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 69.1: EXCEPTION - SUBSCRIPT TOO LARGE FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT UPPER BOUND OF AN ARRAY, WITH AN OPTION +STATEMENT PRESENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(0, 9 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 11 TO B(0, 9 ). + +ABOUT TO ASSIGN TO B(0, 10 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 10 TO B(0, 10 ). + +ABOUT TO ASSIGN TO B(0, 11 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(0, 11 ). + +ABOUT TO ASSIGN TO B(0, 12 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(0, 12 ). + +ABOUT TO ASSIGN TO B(0, 13 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE B(13) diff --git a/NBS2/P070.80 b/NBS2/P070.80 new file mode 100644 index 0000000..ba215f8 --- /dev/null +++ b/NBS2/P070.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 70: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 70.1: EXCEPTION - SUBSCRIPT TO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A NEGATIVE SUBSCRIPT AS A FATAL EXCEPTION +WHEN OPTION BASE 0 HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE + NEGATIVE SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO A( 0 ). + +ABOUT TO ASSIGN TO A(-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(-1) diff --git a/NBS2/P070.BAS b/NBS2/P070.BAS new file mode 100644 index 0000000..da61b8d --- /dev/null +++ b/NBS2/P070.BAS @@ -0,0 +1,39 @@ +10 PRINT "PROGRAM FILE 70: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +15 PRINT " ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 0." +20 PRINT " ANSI STANDARD 6.5, 15.2, 15.4" +30 PRINT +40 PRINT "SECTION 70.1: EXCEPTION - SUBSCRIPT TO SMALL FOR" +50 PRINT " ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 0." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES USE OF A NEGATIVE SUBSCRIPT AS A FATAL EXCEPTION" +90 PRINT "WHEN OPTION BASE 0 HAS BEEN SPECIFIED." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE" +170 PRINT " NEGATIVE SUBSCRIPT." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 OPTION BASE 0 +220 FOR I=3 TO -2 STEP -1 +230 PRINT "ABOUT TO ASSIGN TO A(";I;")."; +240 IF I>-1 THEN 270 +250 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +260 GOTO 280 +270 PRINT " ASSIGNMENT SHOULD BE OK." +280 LET A(I) = 20 - I +290 PRINT "HAVE ASSIGNED ";20-I;" TO A(";I;")." +300 IF I>-1 THEN 320 +310 PRINT "ASSIGNMENT TO SUBSCRIPT < 0 - *** TEST FAILS ***" +320 PRINT +330 NEXT I +340 PRINT +350 PRINT " END TEST." +360 PRINT +370 PRINT "END PROGRAM 70" +380 END diff --git a/NBS2/P070.OUT b/NBS2/P070.OUT new file mode 100644 index 0000000..6225e10 --- /dev/null +++ b/NBS2/P070.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 70: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 70.1: EXCEPTION - SUBSCRIPT TO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A NEGATIVE SUBSCRIPT AS A FATAL EXCEPTION +WHEN OPTION BASE 0 HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE + NEGATIVE SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO A( 0 ). + +ABOUT TO ASSIGN TO A(-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(-1) diff --git a/NBS2/P070.dif b/NBS2/P070.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P070.run b/NBS2/P070.run new file mode 100644 index 0000000..ba215f8 --- /dev/null +++ b/NBS2/P070.run @@ -0,0 +1,36 @@ +PROGRAM FILE 70: EXCEPTION - SUBSCRIPT TOO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 70.1: EXCEPTION - SUBSCRIPT TO SMALL FOR + ONE-DIMENSIONAL ARRAY, WITH OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A NEGATIVE SUBSCRIPT AS A FATAL EXCEPTION +WHEN OPTION BASE 0 HAS BEEN SPECIFIED. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE + NEGATIVE SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A( 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO A( 3 ). + +ABOUT TO ASSIGN TO A( 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO A( 2 ). + +ABOUT TO ASSIGN TO A( 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO A( 1 ). + +ABOUT TO ASSIGN TO A( 0 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO A( 0 ). + +ABOUT TO ASSIGN TO A(-1 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(-1) diff --git a/NBS2/P071.80 b/NBS2/P071.80 new file mode 100644 index 0000000..af74283 --- /dev/null +++ b/NBS2/P071.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 71: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 71.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT LOWER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B( 3 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO B( 3 ,3). + +ABOUT TO ASSIGN TO B( 2 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO B( 2 ,3). + +ABOUT TO ASSIGN TO B( 1 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO B( 1 ,3). + +ABOUT TO ASSIGN TO B( 0 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO B( 0 ,3). + +ABOUT TO ASSIGN TO B(-1 ,3).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE B(-1) diff --git a/NBS2/P071.BAS b/NBS2/P071.BAS new file mode 100644 index 0000000..11e8574 --- /dev/null +++ b/NBS2/P071.BAS @@ -0,0 +1,40 @@ +10 PRINT "PROGRAM FILE 71: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +15 PRINT " TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0." +20 PRINT " ANSI STANDARD 6.5, 15.2, 15.4" +30 PRINT +40 PRINT "SECTION 71.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +50 PRINT " TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0." +70 PRINT +80 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +90 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS" +100 PRINT "THE EXPLICIT LOWER BOUND OF AN ARRAY." +110 PRINT +120 PRINT "TO PASS THIS TEST:" +130 PRINT +140 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +150 PRINT " DISPLAYED, AND" +160 PRINT +170 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL" +180 PRINT " SUBSCRIPT." +190 PRINT +200 PRINT " BEGIN TEST." +210 OPTION BASE 0 +220 DIM B(11,3) +230 PRINT +240 FOR I=3 TO -2 STEP -1 +250 PRINT "ABOUT TO ASSIGN TO B(";I;",3)."; +260 IF I>-1 THEN 290 +270 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +280 GOTO 300 +290 PRINT " ASSIGNMENT SHOULD BE OK." +300 LET B(I,3) = 20 - I +310 PRINT "HAVE ASSIGNED ";20-I;" TO B(";I;",3)." +320 IF I>-1 THEN 340 +330 PRINT "ASSIGNMENT TO SUBSCRIPT < 0 - *** TEST FAILS ***" +340 PRINT +350 NEXT I +360 PRINT +370 PRINT " END TEST." +380 PRINT +390 PRINT "END PROGRAM 71" +400 END diff --git a/NBS2/P071.OUT b/NBS2/P071.OUT new file mode 100644 index 0000000..20380dd --- /dev/null +++ b/NBS2/P071.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 71: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 71.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT LOWER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B( 3 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO B( 3 ,3). + +ABOUT TO ASSIGN TO B( 2 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO B( 2 ,3). + +ABOUT TO ASSIGN TO B( 1 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO B( 1 ,3). + +ABOUT TO ASSIGN TO B( 0 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO B( 0 ,3). + +ABOUT TO ASSIGN TO B(-1 ,3).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE B(-1) diff --git a/NBS2/P071.dif b/NBS2/P071.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P071.run b/NBS2/P071.run new file mode 100644 index 0000000..af74283 --- /dev/null +++ b/NBS2/P071.run @@ -0,0 +1,36 @@ +PROGRAM FILE 71: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 71.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 0. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A SUBSCRIPT EXCEEDS +THE EXPLICIT LOWER BOUND OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ILLEGAL + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B( 3 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 17 TO B( 3 ,3). + +ABOUT TO ASSIGN TO B( 2 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 18 TO B( 2 ,3). + +ABOUT TO ASSIGN TO B( 1 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 19 TO B( 1 ,3). + +ABOUT TO ASSIGN TO B( 0 ,3). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 20 TO B( 0 ,3). + +ABOUT TO ASSIGN TO B(-1 ,3).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 300: SUBSCRIPT OUT OF RANGE B(-1) diff --git a/NBS2/P072.80 b/NBS2/P072.80 new file mode 100644 index 0000000..9463da0 --- /dev/null +++ b/NBS2/P072.80 @@ -0,0 +1,37 @@ +PROGRAM FILE 72: EXCEPTION - SUBSCRIPT TOO SMALL FOR: + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 72.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A ZERO SUBSCRIPT AS A FATAL EXCEPTION WHEN +OPTION BASE 1 HAS BEEN SPECIFIED ALONG WITH A +TWO-DIMENSIONAL ARRAY SET UP WITH A DIM-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(12, 4 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 6 TO B(12, 4 ). + +ABOUT TO ASSIGN TO B(12, 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 7 TO B(12, 3 ). + +ABOUT TO ASSIGN TO B(12, 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(12, 2 ). + +ABOUT TO ASSIGN TO B(12, 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(12, 1 ). + +ABOUT TO ASSIGN TO B(12, 0 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 310: SUBSCRIPT OUT OF RANGE B(0) diff --git a/NBS2/P072.BAS b/NBS2/P072.BAS new file mode 100644 index 0000000..4b7c9dd --- /dev/null +++ b/NBS2/P072.BAS @@ -0,0 +1,41 @@ +10 PRINT "PROGRAM FILE 72: EXCEPTION - SUBSCRIPT TOO SMALL FOR:" +15 PRINT " TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1." +20 PRINT " ANSI STANDARD 6.5, 15.2, 15.4" +30 PRINT +40 PRINT "SECTION 72.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR" +50 PRINT " TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1." +70 PRINT +80 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +90 PRINT "RECOGNIZES USE OF A ZERO SUBSCRIPT AS A FATAL EXCEPTION WHEN" +100 PRINT "OPTION BASE 1 HAS BEEN SPECIFIED ALONG WITH A" +110 PRINT "TWO-DIMENSIONAL ARRAY SET UP WITH A DIM-STATEMENT." +120 PRINT +130 PRINT "TO PASS THIS TEST:" +140 PRINT +150 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +160 PRINT " DISPLAYED, AND" +170 PRINT +180 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO" +190 PRINT " SUBSCRIPT." +200 PRINT +210 PRINT " BEGIN TEST." +220 PRINT +230 OPTION BASE 1 +240 DIM B(12,4) +250 FOR I=4 TO -2 STEP -1 +260 PRINT "ABOUT TO ASSIGN TO B(12,";I;")."; +270 IF I>0 THEN 300 +280 PRINT "*** EXCEPTION SHOULD OCCUR NOW ***" +290 GOTO 310 +300 PRINT " ASSIGNMENT SHOULD BE OK." +310 LET B(12,I)=10-I +320 PRINT "HAVE ASSIGNED ";10-I;" TO B(12,";I;")." +330 IF I>0 THEN 350 +340 PRINT "ASSIGNMENT TO SUBSCRIPT < 1 - *** TEST FAILS ***" +350 PRINT +360 NEXT I +370 PRINT +380 PRINT " END TEST." +390 PRINT +400 PRINT "END PROGRAM 72" +410 END diff --git a/NBS2/P072.OUT b/NBS2/P072.OUT new file mode 100644 index 0000000..12f2a12 --- /dev/null +++ b/NBS2/P072.OUT @@ -0,0 +1,37 @@ +PROGRAM FILE 72: EXCEPTION - SUBSCRIPT TOO SMALL FOR: + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 72.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A ZERO SUBSCRIPT AS A FATAL EXCEPTION WHEN +OPTION BASE 1 HAS BEEN SPECIFIED ALONG WITH A +TWO-DIMENSIONAL ARRAY SET UP WITH A DIM-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(12, 4 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 6 TO B(12, 4 ). + +ABOUT TO ASSIGN TO B(12, 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 7 TO B(12, 3 ). + +ABOUT TO ASSIGN TO B(12, 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(12, 2 ). + +ABOUT TO ASSIGN TO B(12, 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(12, 1 ). + +ABOUT TO ASSIGN TO B(12, 0 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 310: SUBSCRIPT OUT OF RANGE B(0) diff --git a/NBS2/P072.dif b/NBS2/P072.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P072.run b/NBS2/P072.run new file mode 100644 index 0000000..9463da0 --- /dev/null +++ b/NBS2/P072.run @@ -0,0 +1,37 @@ +PROGRAM FILE 72: EXCEPTION - SUBSCRIPT TOO SMALL FOR: + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + ANSI STANDARD 6.5, 15.2, 15.4 + +SECTION 72.1: EXCEPTION - SUBSCRIPT TOO SMALL FOR + TWO-DIMENSIONAL ARRAY, WITH DIM AND OPTION BASE 1. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES USE OF A ZERO SUBSCRIPT AS A FATAL EXCEPTION WHEN +OPTION BASE 1 HAS BEEN SPECIFIED ALONG WITH A +TWO-DIMENSIONAL ARRAY SET UP WITH A DIM-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + SUBSCRIPT. + + BEGIN TEST. + +ABOUT TO ASSIGN TO B(12, 4 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 6 TO B(12, 4 ). + +ABOUT TO ASSIGN TO B(12, 3 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 7 TO B(12, 3 ). + +ABOUT TO ASSIGN TO B(12, 2 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 8 TO B(12, 2 ). + +ABOUT TO ASSIGN TO B(12, 1 ). ASSIGNMENT SHOULD BE OK. +HAVE ASSIGNED 9 TO B(12, 1 ). + +ABOUT TO ASSIGN TO B(12, 0 ).*** EXCEPTION SHOULD OCCUR NOW *** + +ERROR in line 310: SUBSCRIPT OUT OF RANGE B(0) diff --git a/NBS2/P073.80 b/NBS2/P073.80 new file mode 100644 index 0000000..de3ffa9 --- /dev/null +++ b/NBS2/P073.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 73: ERROR - DIM SETS UPPER BOUND OF ZERO WITH + OPTION BASE 1. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 73.1: ERROR - DIM SETS UPPER BOUND OF ZERO WITH + OPTION BASE 1. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(0) diff --git a/NBS2/P073.BAS b/NBS2/P073.BAS new file mode 100644 index 0000000..7f3f595 --- /dev/null +++ b/NBS2/P073.BAS @@ -0,0 +1,47 @@ +10 PRINT "PROGRAM FILE 73: ERROR - DIM SETS UPPER BOUND OF ZERO WITH" +20 PRINT " OPTION BASE 1." +30 PRINT " ANSI STANDARD 15.4" +40 PRINT +50 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT" +60 PRINT " WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +70 PRINT " THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE " +80 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +90 PRINT +100 PRINT "SECTION 73.1: ERROR - DIM SETS UPPER BOUND OF ZERO WITH" +110 PRINT " OPTION BASE 1." +120 PRINT +130 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +140 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +150 PRINT +160 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +170 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +180 PRINT " BY THE PROCESSOR, OR" +190 PRINT +200 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +210 PRINT +220 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +230 PRINT "FOR DETAILED CRITERIA." +240 PRINT +250 PRINT " BEGIN TEST" +260 PRINT +270 OPTION BASE 1 +280 DIM A(0) +300 PRINT "TO HELP IN CHECKING INTERPRETATION, YOU MAY ENTER" +310 PRINT "VALUES TO BE USED AS SUBSCRIPTS ON THE ARRAY. THE PROGRAM" +320 PRINT "WILL ASSIGN THE VALUE 777 TO THE INDICATED ELEMENT AND" +330 PRINT "THEN ECHO THE RESULT. IN THIS WAY YOU CAN CHECK WHICH" +340 PRINT "SUBSCRIPTS (0 OR 1) ARE WITHIN THE ARRAY AND WHICH CAUSE" +350 PRINT "EXCEPTIONS. ENTER 100 WHEN YOU WISH TO STOP." +360 PRINT +370 PRINT "ENTER VALUE TO BE USED AS SUBSCRIPT" +380 INPUT I +390 IF I=100 THEN 440 +400 LET A(I)=777 +410 PRINT "A(";I;") = ";A(I) +420 PRINT +430 GOTO 370 +440 PRINT +450 PRINT " END TEST" +460 PRINT +470 PRINT "END PROGRAM 73" +480 END diff --git a/NBS2/P073.OUT b/NBS2/P073.OUT new file mode 100644 index 0000000..98685d2 --- /dev/null +++ b/NBS2/P073.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 73: ERROR - DIM SETS UPPER BOUND OF ZERO WITH + OPTION BASE 1. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 73.1: ERROR - DIM SETS UPPER BOUND OF ZERO WITH + OPTION BASE 1. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(0) diff --git a/NBS2/P073.dif b/NBS2/P073.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P073.run b/NBS2/P073.run new file mode 100644 index 0000000..de3ffa9 --- /dev/null +++ b/NBS2/P073.run @@ -0,0 +1,28 @@ +PROGRAM FILE 73: ERROR - DIM SETS UPPER BOUND OF ZERO WITH + OPTION BASE 1. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 73.1: ERROR - DIM SETS UPPER BOUND OF ZERO WITH + OPTION BASE 1. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 280: SUBSCRIPT OUT OF RANGE A(0) diff --git a/NBS2/P074.80 b/NBS2/P074.80 new file mode 100644 index 0000000..ec7126d --- /dev/null +++ b/NBS2/P074.80 @@ -0,0 +1,26 @@ +PROGRAM FILE 74: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO TWO-DIMENSIONAL + VARIABLE OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 74.1: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO TWO-DIMENSIONAL + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 260: DIMENSION OUT OF RANGE A(2) diff --git a/NBS2/P074.BAS b/NBS2/P074.BAS new file mode 100644 index 0000000..398cdf2 --- /dev/null +++ b/NBS2/P074.BAS @@ -0,0 +1,49 @@ +10 PRINT "PROGRAM FILE 74: ERROR - DIM SETS ARRAY TO ONE DIMENSION" +13 PRINT " AND REFERENCE IS MADE TO TWO-DIMENSIONAL" +16 PRINT " VARIABLE OF SAME NAME." +20 PRINT " ANSI STANDARD 15.4, 6.4" +30 PRINT +40 PRINT "SECTION 74.1: ERROR - DIM SETS ARRAY TO ONE DIMENSION " +50 PRINT " AND REFERENCE IS MADE TO TWO-DIMENSIONAL" +60 PRINT " VARIABLE OF SAME NAME." +70 PRINT +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT " BEGIN TEST" +220 PRINT +230 DIM A(150) +240 FOR I=0 TO 10 +250 FOR J=0 TO 10 +260 LET A(I,J)=10000+(100*I)+J +270 NEXT J +280 NEXT I +300 PRINT "VARIABLE A(I,j) WAS ASSIGNED 10000+(100*I)+J." +310 PRINT "RESULTS BELOW:" +320 PRINT +330 PRINT "ARRAY VALUES FOR A(I,J):" +340 PRINT "EACH LINE HAS ALL THE ELEMENTS FOR A GIVEN VALUE OF I," +350 PRINT "WITH J GOING FROM 0 TO 10." +360 PRINT +370 FOR I = 0 TO 10 +380 PRINT "I=";I;":"; +390 FOR J=0 TO 10 +400 PRINT A(I,J); +410 NEXT J +420 PRINT +430 NEXT I +440 PRINT +450 PRINT " END TEST" +460 PRINT +470 PRINT "END PROGRAM 74" +480 END diff --git a/NBS2/P074.OUT b/NBS2/P074.OUT new file mode 100644 index 0000000..e2b672c --- /dev/null +++ b/NBS2/P074.OUT @@ -0,0 +1,26 @@ +PROGRAM FILE 74: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO TWO-DIMENSIONAL + VARIABLE OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 74.1: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO TWO-DIMENSIONAL + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 260: DIMENSION OUT OF RANGE A(2) diff --git a/NBS2/P074.dif b/NBS2/P074.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P074.run b/NBS2/P074.run new file mode 100644 index 0000000..ec7126d --- /dev/null +++ b/NBS2/P074.run @@ -0,0 +1,26 @@ +PROGRAM FILE 74: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO TWO-DIMENSIONAL + VARIABLE OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 74.1: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO TWO-DIMENSIONAL + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 260: DIMENSION OUT OF RANGE A(2) diff --git a/NBS2/P075.80 b/NBS2/P075.80 new file mode 100644 index 0000000..cce6b73 --- /dev/null +++ b/NBS2/P075.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 75: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO SIMPLE VARIABLE + OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 75.1: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO SIMPLE VARIABLE + OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLE A WAS ASSIGNED 777. RESULTS BELOW: + +VARIABLE A = 777 + + END TEST + +END PROGRAM 75 diff --git a/NBS2/P075.BAS b/NBS2/P075.BAS new file mode 100644 index 0000000..1713dcf --- /dev/null +++ b/NBS2/P075.BAS @@ -0,0 +1,34 @@ +10 PRINT "PROGRAM FILE 75: ERROR - DIM SETS ARRAY TO ONE DIMENSION" +13 PRINT " AND REFERENCE IS MADE TO SIMPLE VARIABLE" +16 PRINT " OF SAME NAME." +20 PRINT " ANSI STANDARD 15.4, 6.4" +30 PRINT +40 PRINT "SECTION 75.1: ERROR - DIM SETS ARRAY TO ONE DIMENSION" +50 PRINT " AND REFERENCE IS MADE TO SIMPLE VARIABLE" +60 PRINT " OF SAME NAME." +70 PRINT +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT " BEGIN TEST" +220 PRINT +230 DIM A(47) +240 LET A=777 +300 PRINT "VARIABLE A WAS ASSIGNED 777. RESULTS BELOW:" +320 PRINT +400 PRINT "VARIABLE A = ";A +440 PRINT +450 PRINT " END TEST" +460 PRINT +470 PRINT "END PROGRAM 75" +480 END diff --git a/NBS2/P075.OUT b/NBS2/P075.OUT new file mode 100644 index 0000000..4c67bc0 --- /dev/null +++ b/NBS2/P075.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 75: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO SIMPLE VARIABLE + OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 75.1: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO SIMPLE VARIABLE + OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLE A WAS ASSIGNED 777. RESULTS BELOW: + +VARIABLE A = 777 + + END TEST + +END PROGRAM 75 diff --git a/NBS2/P075.dif b/NBS2/P075.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P075.run b/NBS2/P075.run new file mode 100644 index 0000000..cce6b73 --- /dev/null +++ b/NBS2/P075.run @@ -0,0 +1,31 @@ +PROGRAM FILE 75: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO SIMPLE VARIABLE + OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 75.1: ERROR - DIM SETS ARRAY TO ONE DIMENSION + AND REFERENCE IS MADE TO SIMPLE VARIABLE + OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLE A WAS ASSIGNED 777. RESULTS BELOW: + +VARIABLE A = 777 + + END TEST + +END PROGRAM 75 diff --git a/NBS2/P076.80 b/NBS2/P076.80 new file mode 100644 index 0000000..1c39307 --- /dev/null +++ b/NBS2/P076.80 @@ -0,0 +1,26 @@ +PROGRAM FILE 76: ERROR - DIM SETS ARRAY TO TWO DIMENSIONS + AND REFERENCE IS MADE TO ONE-DIMENSIONAL + VARIABLE OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 76.1: ERROR - DIM SETS ARRAY TO TWO DIMENSIONS + AND REFERENCE IS MADE TO ONE-DIMENSIONAL + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: DIMENSION OUT OF RANGE A(1) diff --git a/NBS2/P076.BAS b/NBS2/P076.BAS new file mode 100644 index 0000000..a6b7bb3 --- /dev/null +++ b/NBS2/P076.BAS @@ -0,0 +1,39 @@ +10 PRINT "PROGRAM FILE 76: ERROR - DIM SETS ARRAY TO TWO DIMENSIONS" +13 PRINT " AND REFERENCE IS MADE TO ONE-DIMENSIONAL" +16 PRINT " VARIABLE OF SAME NAME." +20 PRINT " ANSI STANDARD 15.4, 6.4" +30 PRINT +40 PRINT "SECTION 76.1: ERROR - DIM SETS ARRAY TO TWO DIMENSIONS" +50 PRINT " AND REFERENCE IS MADE TO ONE-DIMENSIONAL" +60 PRINT " VARIABLE OF SAME NAME." +70 PRINT +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT " BEGIN TEST" +220 PRINT +230 DIM A(3,5) +240 FOR I=0 TO 10 +250 LET A(I)=111*I+5000 +260 NEXT I +280 PRINT "VARIABLE A(I) WAS ASSIGNED 111*I + 5000." +290 PRINT "RESULTS BELOW:" +300 PRINT +310 FOR I=0 TO 10 +320 PRINT "A(";I;") = ";A(I) +330 NEXT I +340 PRINT +350 PRINT " END TEST" +360 PRINT +370 PRINT "END PROGRAM 76" +380 END diff --git a/NBS2/P076.OUT b/NBS2/P076.OUT new file mode 100644 index 0000000..e7d7275 --- /dev/null +++ b/NBS2/P076.OUT @@ -0,0 +1,26 @@ +PROGRAM FILE 76: ERROR - DIM SETS ARRAY TO TWO DIMENSIONS + AND REFERENCE IS MADE TO ONE-DIMENSIONAL + VARIABLE OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 76.1: ERROR - DIM SETS ARRAY TO TWO DIMENSIONS + AND REFERENCE IS MADE TO ONE-DIMENSIONAL + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: DIMENSION OUT OF RANGE A(1) diff --git a/NBS2/P076.dif b/NBS2/P076.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P076.run b/NBS2/P076.run new file mode 100644 index 0000000..1c39307 --- /dev/null +++ b/NBS2/P076.run @@ -0,0 +1,26 @@ +PROGRAM FILE 76: ERROR - DIM SETS ARRAY TO TWO DIMENSIONS + AND REFERENCE IS MADE TO ONE-DIMENSIONAL + VARIABLE OF SAME NAME. + ANSI STANDARD 15.4, 6.4 + +SECTION 76.1: ERROR - DIM SETS ARRAY TO TWO DIMENSIONS + AND REFERENCE IS MADE TO ONE-DIMENSIONAL + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 250: DIMENSION OUT OF RANGE A(1) diff --git a/NBS2/P077.80 b/NBS2/P077.80 new file mode 100644 index 0000000..84867c1 --- /dev/null +++ b/NBS2/P077.80 @@ -0,0 +1,24 @@ +PROGRAM FILE 77: ERROR - REFERENCE TO ARRAY AND SIMPLE + VARIABLE OF SAME NAME. + ANSI STANDARD 6.4 + +SECTION 77.1: ERROR - REFERENCE TO ARRAY AND SIMPLE + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 240: in op_assign(): Assignment must be to variable: level -1 <2> diff --git a/NBS2/P077.BAS b/NBS2/P077.BAS new file mode 100644 index 0000000..c50243e --- /dev/null +++ b/NBS2/P077.BAS @@ -0,0 +1,49 @@ +10 PRINT "PROGRAM FILE 77: ERROR - REFERENCE TO ARRAY AND SIMPLE " +15 PRINT " VARIABLE OF SAME NAME." +20 PRINT " ANSI STANDARD 6.4" +30 PRINT +40 PRINT "SECTION 77.1: ERROR - REFERENCE TO ARRAY AND SIMPLE " +50 PRINT " VARIABLE OF SAME NAME." +60 PRINT +70 PRINT +80 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +90 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +100 PRINT +110 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +120 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +130 PRINT " BY THE PROCESSOR, OR" +140 PRINT +150 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +160 PRINT +170 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +180 PRINT "FOR DETAILED CRITERIA." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 LET A=777 +230 FOR I=0 TO 10 +240 LET A(I)=111*I+5000 +250 NEXT I +270 PRINT "VARIABLE A(I) WAS ASSIGNED 111*I + 5000," +280 PRINT "AND SIMPLE VARIABLE A WAS ASSIGNED 777." +290 PRINT "RESULTS BELOW:" +300 PRINT +310 PRINT "A = ";A +320 IF A=777 THEN 350 +330 PRINT +340 PRINT "***** ORIGINAL VALUE OF A WAS LOST *****" +350 PRINT +360 LET C=0 +370 FOR I = 0 TO 10 +380 PRINT "A(";I;") = ";A(I) +390 IF A(I)=111*I+5000 THEN 410 +400 LET C=9 +410 NEXT I +420 IF C=0 THEN 450 +430 PRINT +440 PRINT "***** SOME VALUES IN ARRAY WERE LOST *****" +450 PRINT +460 PRINT " END TEST" +470 PRINT +480 PRINT "END PROGRAM 77" +490 END diff --git a/NBS2/P077.OUT b/NBS2/P077.OUT new file mode 100644 index 0000000..518e0c6 --- /dev/null +++ b/NBS2/P077.OUT @@ -0,0 +1,24 @@ +PROGRAM FILE 77: ERROR - REFERENCE TO ARRAY AND SIMPLE + VARIABLE OF SAME NAME. + ANSI STANDARD 6.4 + +SECTION 77.1: ERROR - REFERENCE TO ARRAY AND SIMPLE + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 240: in op_assign(): Assignment must be to variable: level -1 <2> op <1> diff --git a/NBS2/P077.dif b/NBS2/P077.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P077.run b/NBS2/P077.run new file mode 100644 index 0000000..84867c1 --- /dev/null +++ b/NBS2/P077.run @@ -0,0 +1,24 @@ +PROGRAM FILE 77: ERROR - REFERENCE TO ARRAY AND SIMPLE + VARIABLE OF SAME NAME. + ANSI STANDARD 6.4 + +SECTION 77.1: ERROR - REFERENCE TO ARRAY AND SIMPLE + VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 240: in op_assign(): Assignment must be to variable: level -1 <2> diff --git a/NBS2/P078.80 b/NBS2/P078.80 new file mode 100644 index 0000000..4e4926d --- /dev/null +++ b/NBS2/P078.80 @@ -0,0 +1,24 @@ +PROGRAM FILE 78: ERROR - REFERENCE TO ONE-DIMENSIONAL AND + TWO-DIMENSIONAL VARIABLE OF SAME NAME. + ANSI STANDARD 6.4 + +SECTION 78.1: ERROR - REFERENCE TO ONE-DIMENSIONAL AND + TWO-DIMENSIONAL VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 270: DIMENSION OUT OF RANGE A(2) diff --git a/NBS2/P078.BAS b/NBS2/P078.BAS new file mode 100644 index 0000000..691cffd --- /dev/null +++ b/NBS2/P078.BAS @@ -0,0 +1,68 @@ +10 PRINT "PROGRAM FILE 78: ERROR - REFERENCE TO ONE-DIMENSIONAL AND " +15 PRINT " TWO-DIMENSIONAL VARIABLE OF SAME NAME." +20 PRINT " ANSI STANDARD 6.4" +30 PRINT +40 PRINT "SECTION 78.1: ERROR - REFERENCE TO ONE-DIMENSIONAL AND " +50 PRINT " TWO-DIMENSIONAL VARIABLE OF SAME NAME." +60 PRINT +70 PRINT +80 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +90 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +100 PRINT +110 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +120 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +130 PRINT " BY THE PROCESSOR, OR" +140 PRINT +150 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +160 PRINT +170 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +180 PRINT "FOR DETAILED CRITERIA." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 FOR I=0 TO 10 +230 LET A(I)=11*I+5000 +240 NEXT I +250 FOR I=0 TO 10 +260 FOR J=0 TO 10 +270 LET A(I,J)=10000+(100*I)+J +280 NEXT J +290 NEXT I +310 PRINT "VARIABLE A(I) WAS ASSIGNED 11*I + 5000," +320 PRINT "AND VARIABLE A(I,J) WAS ASSIGNED 10000+(100*I)+J." +330 PRINT "RESULTS BELOW:" +340 PRINT +350 PRINT "ARRAY VALUES FOR A(I,J):" +360 PRINT "EACH LINE HAS ALL THE ELEMENTS FOR A GIVEN VALUE OF I," +370 PRINT "WITH J GOING FROM 0 TO 10." +380 PRINT +390 LET C1=0 +400 LET C2=0 +410 FOR I = 0 TO 10 +420 PRINT "I=";I;":"; +430 FOR J=0 TO 10 +440 PRINT A(I,J); +450 IF A(I,J)=10000+(100*I)+J THEN 470 +460 LET C2=9 +470 NEXT J +480 PRINT +490 NEXT I +500 PRINT +510 PRINT "ARRAY VALUES FOR A(I):" +520 PRINT +530 FOR I = 0 TO 10 +540 PRINT "A(";I;") = ";A(I) +550 IF A(I)=11*I+5000 THEN 570 +560 LET C1=9 +570 NEXT I +580 IF C1=0 THEN 610 +590 PRINT +600 PRINT "***** SOME VALUES IN ONE-DIMENSIONAL ARRAY WERE LOST *****" +610 IF C2=0 THEN 640 +620 PRINT +630 PRINT "***** SOME VALUES IN TWO-DIMENSIONAL ARRAY WERE LOST *****" +640 PRINT +650 PRINT " END TEST" +660 PRINT +670 PRINT "END PROGRAM 78" +680 END diff --git a/NBS2/P078.OUT b/NBS2/P078.OUT new file mode 100644 index 0000000..f908972 --- /dev/null +++ b/NBS2/P078.OUT @@ -0,0 +1,24 @@ +PROGRAM FILE 78: ERROR - REFERENCE TO ONE-DIMENSIONAL AND + TWO-DIMENSIONAL VARIABLE OF SAME NAME. + ANSI STANDARD 6.4 + +SECTION 78.1: ERROR - REFERENCE TO ONE-DIMENSIONAL AND + TWO-DIMENSIONAL VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 270: DIMENSION OUT OF RANGE A(2) diff --git a/NBS2/P078.dif b/NBS2/P078.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P078.run b/NBS2/P078.run new file mode 100644 index 0000000..4e4926d --- /dev/null +++ b/NBS2/P078.run @@ -0,0 +1,24 @@ +PROGRAM FILE 78: ERROR - REFERENCE TO ONE-DIMENSIONAL AND + TWO-DIMENSIONAL VARIABLE OF SAME NAME. + ANSI STANDARD 6.4 + +SECTION 78.1: ERROR - REFERENCE TO ONE-DIMENSIONAL AND + TWO-DIMENSIONAL VARIABLE OF SAME NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 270: DIMENSION OUT OF RANGE A(2) diff --git a/NBS2/P079.80 b/NBS2/P079.80 new file mode 100644 index 0000000..11b990a --- /dev/null +++ b/NBS2/P079.80 @@ -0,0 +1,40 @@ +PROGRAM FILE 79: ERROR - REFERENCE TO ARRAY + WITH LETTER-DIGIT NAME. + ANSI STANDARD 6.2 + +SECTION 79.1: ERROR - REFERENCE TO ARRAY + WITH LETTER-DIGIT NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLE A9(I) WAS ASSIGNED 111*I + 5000. +RESULTS BELOW: + +A9( 0 ) = 5000 +A9( 1 ) = 5111 +A9( 2 ) = 5222 +A9( 3 ) = 5333 +A9( 4 ) = 5444 +A9( 5 ) = 5555 +A9( 6 ) = 5666 +A9( 7 ) = 5777 +A9( 8 ) = 5888 +A9( 9 ) = 5999 +A9( 10 ) = 6110 + + END TEST + +END PROGRAM 79 diff --git a/NBS2/P079.BAS b/NBS2/P079.BAS new file mode 100644 index 0000000..d332856 --- /dev/null +++ b/NBS2/P079.BAS @@ -0,0 +1,42 @@ +10 PRINT "PROGRAM FILE 79: ERROR - REFERENCE TO ARRAY" +15 PRINT " WITH LETTER-DIGIT NAME." +20 PRINT " ANSI STANDARD 6.2" +30 PRINT +40 PRINT "SECTION 79.1: ERROR - REFERENCE TO ARRAY" +50 PRINT " WITH LETTER-DIGIT NAME." +60 PRINT +70 PRINT +80 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +90 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +100 PRINT +110 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +120 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +130 PRINT " BY THE PROCESSOR, OR" +140 PRINT +150 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +160 PRINT +170 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +180 PRINT "FOR DETAILED CRITERIA." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +230 FOR I=0 TO 10 +240 LET A9(I)=111*I+5000 +250 NEXT I +270 PRINT "VARIABLE A9(I) WAS ASSIGNED 111*I + 5000." +290 PRINT "RESULTS BELOW:" +300 PRINT +360 LET C=0 +370 FOR I = 0 TO 10 +380 PRINT "A9(";I;") = ";A9(I) +390 IF A9(I)=111*I+5000 THEN 410 +400 LET C=9 +410 NEXT I +420 IF C=0 THEN 450 +430 PRINT +440 PRINT "***** SOME VALUES IN ARRAY WERE LOST *****" +450 PRINT +460 PRINT " END TEST" +470 PRINT +480 PRINT "END PROGRAM 79" +490 END diff --git a/NBS2/P079.OUT b/NBS2/P079.OUT new file mode 100644 index 0000000..7e72553 --- /dev/null +++ b/NBS2/P079.OUT @@ -0,0 +1,40 @@ +PROGRAM FILE 79: ERROR - REFERENCE TO ARRAY + WITH LETTER-DIGIT NAME. + ANSI STANDARD 6.2 + +SECTION 79.1: ERROR - REFERENCE TO ARRAY + WITH LETTER-DIGIT NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLE A9(I) WAS ASSIGNED 111*I + 5000. +RESULTS BELOW: + +A9( 0 ) = 5000 +A9( 1 ) = 5111 +A9( 2 ) = 5222 +A9( 3 ) = 5333 +A9( 4 ) = 5444 +A9( 5 ) = 5555 +A9( 6 ) = 5666 +A9( 7 ) = 5777 +A9( 8 ) = 5888 +A9( 9 ) = 5999 +A9( 10 ) = 6110 + + END TEST + +END PROGRAM 79 diff --git a/NBS2/P079.dif b/NBS2/P079.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P079.run b/NBS2/P079.run new file mode 100644 index 0000000..11b990a --- /dev/null +++ b/NBS2/P079.run @@ -0,0 +1,40 @@ +PROGRAM FILE 79: ERROR - REFERENCE TO ARRAY + WITH LETTER-DIGIT NAME. + ANSI STANDARD 6.2 + +SECTION 79.1: ERROR - REFERENCE TO ARRAY + WITH LETTER-DIGIT NAME. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLE A9(I) WAS ASSIGNED 111*I + 5000. +RESULTS BELOW: + +A9( 0 ) = 5000 +A9( 1 ) = 5111 +A9( 2 ) = 5222 +A9( 3 ) = 5333 +A9( 4 ) = 5444 +A9( 5 ) = 5555 +A9( 6 ) = 5666 +A9( 7 ) = 5777 +A9( 8 ) = 5888 +A9( 9 ) = 5999 +A9( 10 ) = 6110 + + END TEST + +END PROGRAM 79 diff --git a/NBS2/P080.80 b/NBS2/P080.80 new file mode 100644 index 0000000..52286d4 --- /dev/null +++ b/NBS2/P080.80 @@ -0,0 +1,29 @@ +PROGRAM FILE 80: ERROR - MULTIPLE OPTION STATEMENTS. + ANSI STANDARD 15.4 + +SECTION 80.1: ERROR - MULTIPLE OPTION STATEMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +YOU MAY WISH TO REVERSE THE ORDER OF THE OPTION +STATEMENTS IN THE SOURCE CODE TO TEST PROCESSOR +INTERPRETATION. + +ABOUT TO EXECUTE 'LET A(0) = 777' +A( 0 ) = 777 + + END TEST + +END PROGRAM 80 diff --git a/NBS2/P080.BAS b/NBS2/P080.BAS new file mode 100644 index 0000000..183a720 --- /dev/null +++ b/NBS2/P080.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 80: ERROR - MULTIPLE OPTION STATEMENTS." +20 PRINT " ANSI STANDARD 15.4" +30 PRINT +90 PRINT "SECTION 80.1: ERROR - MULTIPLE OPTION STATEMENTS." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST" +240 PRINT +250 OPTION BASE 1 +260 OPTION BASE 0 +340 PRINT "YOU MAY WISH TO REVERSE THE ORDER OF THE OPTION" +350 PRINT "STATEMENTS IN THE SOURCE CODE TO TEST PROCESSOR" +360 PRINT "INTERPRETATION." +370 PRINT +380 PRINT "ABOUT TO EXECUTE 'LET A(0) = 777'" +410 LET A(0)=777 +420 PRINT "A(";I;") = ";A(I) +430 PRINT +460 PRINT " END TEST" +470 PRINT +480 PRINT "END PROGRAM 80" +490 END diff --git a/NBS2/P080.OUT b/NBS2/P080.OUT new file mode 100644 index 0000000..0b182bf --- /dev/null +++ b/NBS2/P080.OUT @@ -0,0 +1,29 @@ +PROGRAM FILE 80: ERROR - MULTIPLE OPTION STATEMENTS. + ANSI STANDARD 15.4 + +SECTION 80.1: ERROR - MULTIPLE OPTION STATEMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +YOU MAY WISH TO REVERSE THE ORDER OF THE OPTION +STATEMENTS IN THE SOURCE CODE TO TEST PROCESSOR +INTERPRETATION. + +ABOUT TO EXECUTE 'LET A(0) = 777' +A( 0 ) = 777 + + END TEST + +END PROGRAM 80 diff --git a/NBS2/P080.dif b/NBS2/P080.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P080.run b/NBS2/P080.run new file mode 100644 index 0000000..52286d4 --- /dev/null +++ b/NBS2/P080.run @@ -0,0 +1,29 @@ +PROGRAM FILE 80: ERROR - MULTIPLE OPTION STATEMENTS. + ANSI STANDARD 15.4 + +SECTION 80.1: ERROR - MULTIPLE OPTION STATEMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +YOU MAY WISH TO REVERSE THE ORDER OF THE OPTION +STATEMENTS IN THE SOURCE CODE TO TEST PROCESSOR +INTERPRETATION. + +ABOUT TO EXECUTE 'LET A(0) = 777' +A( 0 ) = 777 + + END TEST + +END PROGRAM 80 diff --git a/NBS2/P081.80 b/NBS2/P081.80 new file mode 100644 index 0000000..d01c88e --- /dev/null +++ b/NBS2/P081.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 81: ERROR - DIM-STATEMENT PRECEDES + OPTION-STATEMENT. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 81.1: ERROR - DIM-STATEMENT PRECEDES + OPTION-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 280: at line 280: OPTION BASE must be called before DIM. diff --git a/NBS2/P081.BAS b/NBS2/P081.BAS new file mode 100644 index 0000000..10144be --- /dev/null +++ b/NBS2/P081.BAS @@ -0,0 +1,51 @@ +10 PRINT "PROGRAM FILE 81: ERROR - DIM-STATEMENT PRECEDES" +20 PRINT " OPTION-STATEMENT." +30 PRINT " ANSI STANDARD 15.4" +40 PRINT +50 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT" +60 PRINT " WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +70 PRINT " THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE " +80 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +90 PRINT +100 PRINT "SECTION 81.1: ERROR - DIM-STATEMENT PRECEDES " +110 PRINT " OPTION-STATEMENT." +120 PRINT +130 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +140 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +150 PRINT +160 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +170 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +180 PRINT " BY THE PROCESSOR, OR" +190 PRINT +200 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +210 PRINT +220 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +230 PRINT "FOR DETAILED CRITERIA." +240 PRINT +250 PRINT " BEGIN TEST" +260 PRINT +270 DIM A(5) +280 OPTION BASE 1 +290 PRINT "TO HELP IN CHECKING INTERPRETATION, YOU MAY ENTER" +300 PRINT "VALUES TO BE USED AS SUBSCRIPTS ON THE ARRAY. THE PROGRAM" +310 PRINT "WILL ASSIGN THE VALUE 777 TO THE INDICATED ELEMENT AND" +320 PRINT "THEN ECHO THE RESULT. IN THIS WAY YOU CAN CHECK WHICH" +330 PRINT "SUBSCRIPTS ARE WITHIN THE ARRAY AND WHICH CAUSE EXCEPTIONS." +340 PRINT "THE ARRAY IS SET WITH 'DIM A(5)', FOLLOWED BY OPTION BASE 1." +350 PRINT "YOU SHOULD AT LEAST TEST SUBSCRIPT VALUES OF ZERO" +360 PRINT "AND SIX. THE ARRAY HAS BEEN DIMENSIONED AS A(5)." +370 PRINT +380 PRINT "ENTER 100 WHEN YOU WISH TO STOP." +390 PRINT +400 PRINT "ENTER VALUE TO BE USED AS SUBSCRIPT:" +410 INPUT I +420 IF I=100 THEN 470 +430 LET A(I)=777 +440 PRINT "A(";I;") = ";A(I) +450 PRINT +460 GOTO 400 +470 PRINT +480 PRINT " END TEST" +490 PRINT +500 PRINT "END PROGRAM 81" +510 END diff --git a/NBS2/P081.OUT b/NBS2/P081.OUT new file mode 100644 index 0000000..20f10f0 --- /dev/null +++ b/NBS2/P081.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 81: ERROR - DIM-STATEMENT PRECEDES + OPTION-STATEMENT. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 81.1: ERROR - DIM-STATEMENT PRECEDES + OPTION-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 280: at line 280: OPTION BASE must be called before DIM. diff --git a/NBS2/P081.dif b/NBS2/P081.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P081.run b/NBS2/P081.run new file mode 100644 index 0000000..d01c88e --- /dev/null +++ b/NBS2/P081.run @@ -0,0 +1,28 @@ +PROGRAM FILE 81: ERROR - DIM-STATEMENT PRECEDES + OPTION-STATEMENT. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 81.1: ERROR - DIM-STATEMENT PRECEDES + OPTION-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + + +ERROR in line 280: at line 280: OPTION BASE must be called before DIM. diff --git a/NBS2/P082.80 b/NBS2/P082.80 new file mode 100644 index 0000000..91e10f1 --- /dev/null +++ b/NBS2/P082.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 82: ERROR - ARRAY-REFERENCE PRECEDES + OPTION-STATEMENT. + ANSI STANDARD 15.4 + +SECTION 82.1: ERROR - ARRAY-REFERENCE PRECEDES + OPTION-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO EXECUTE 'LET A(0) = 105' +'OPTION BASE 1' FOLLOWS THIS STATEMENT. + +ERROR in line 250: at line 250: OPTION BASE must be called before DIM. diff --git a/NBS2/P082.BAS b/NBS2/P082.BAS new file mode 100644 index 0000000..f1144c5 --- /dev/null +++ b/NBS2/P082.BAS @@ -0,0 +1,32 @@ +10 PRINT "PROGRAM FILE 82: ERROR - ARRAY-REFERENCE PRECEDES" +20 PRINT " OPTION-STATEMENT." +30 PRINT " ANSI STANDARD 15.4" +40 PRINT +50 PRINT "SECTION 82.1: ERROR - ARRAY-REFERENCE PRECEDES" +60 PRINT " OPTION-STATEMENT." +70 PRINT +80 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +90 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +100 PRINT +110 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +120 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +130 PRINT " BY THE PROCESSOR, OR" +140 PRINT +150 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +160 PRINT +170 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +180 PRINT "FOR DETAILED CRITERIA." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 PRINT "ABOUT TO EXECUTE 'LET A(0) = 105'" +230 PRINT "'OPTION BASE 1' FOLLOWS THIS STATEMENT." +240 LET A(0) = 105 +250 OPTION BASE 1 +260 PRINT +270 PRINT "A(0) = ";A(0) +280 PRINT +290 PRINT " END TEST" +300 PRINT +310 PRINT "END PROGRAM 82" +320 END diff --git a/NBS2/P082.OUT b/NBS2/P082.OUT new file mode 100644 index 0000000..82fa80b --- /dev/null +++ b/NBS2/P082.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 82: ERROR - ARRAY-REFERENCE PRECEDES + OPTION-STATEMENT. + ANSI STANDARD 15.4 + +SECTION 82.1: ERROR - ARRAY-REFERENCE PRECEDES + OPTION-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO EXECUTE 'LET A(0) = 105' +'OPTION BASE 1' FOLLOWS THIS STATEMENT. + +ERROR in line 250: at line 250: OPTION BASE must be called before DIM. diff --git a/NBS2/P082.dif b/NBS2/P082.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P082.run b/NBS2/P082.run new file mode 100644 index 0000000..91e10f1 --- /dev/null +++ b/NBS2/P082.run @@ -0,0 +1,25 @@ +PROGRAM FILE 82: ERROR - ARRAY-REFERENCE PRECEDES + OPTION-STATEMENT. + ANSI STANDARD 15.4 + +SECTION 82.1: ERROR - ARRAY-REFERENCE PRECEDES + OPTION-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO EXECUTE 'LET A(0) = 105' +'OPTION BASE 1' FOLLOWS THIS STATEMENT. + +ERROR in line 250: at line 250: OPTION BASE must be called before DIM. diff --git a/NBS2/P083.80 b/NBS2/P083.80 new file mode 100644 index 0000000..5de480b --- /dev/null +++ b/NBS2/P083.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 83: ERROR - ARRAY-REFERENCE PRECEDES + DIM-STATEMENT. + ANSI STANDARD 15.4 + +SECTION 83.1: ERROR - ARRAY-REFERENCE PRECEDES + DIM-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO EXECUTE 'LET A(6) = 777' +'DIM A(5)' FOLLOWS THIS STATEMENT. + +A(6) = 777 + + END TEST + +END PROGRAM 83 + +Program interrupted at line 480 diff --git a/NBS2/P083.BAS b/NBS2/P083.BAS new file mode 100644 index 0000000..b0a8e56 --- /dev/null +++ b/NBS2/P083.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 83: ERROR - ARRAY-REFERENCE PRECEDES" +15 PRINT " DIM-STATEMENT." +20 PRINT " ANSI STANDARD 15.4" +30 PRINT +90 PRINT "SECTION 83.1: ERROR - ARRAY-REFERENCE PRECEDES" +95 PRINT " DIM-STATEMENT." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST" +240 PRINT +260 PRINT "ABOUT TO EXECUTE 'LET A(6) = 777'" +270 PRINT "'DIM A(5)' FOLLOWS THIS STATEMENT." +280 PRINT +400 LET A(6)=777 +410 PRINT "A(6) = ";A(6) +440 PRINT +450 PRINT " END TEST" +460 PRINT +470 PRINT "END PROGRAM 83" +480 STOP +490 DIM A(5) +500 END diff --git a/NBS2/P083.OUT b/NBS2/P083.OUT new file mode 100644 index 0000000..70262f1 --- /dev/null +++ b/NBS2/P083.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 83: ERROR - ARRAY-REFERENCE PRECEDES + DIM-STATEMENT. + ANSI STANDARD 15.4 + +SECTION 83.1: ERROR - ARRAY-REFERENCE PRECEDES + DIM-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO EXECUTE 'LET A(6) = 777' +'DIM A(5)' FOLLOWS THIS STATEMENT. + +A(6) = 777 + + END TEST + +END PROGRAM 83 + +Program interrupted at line 480 diff --git a/NBS2/P083.dif b/NBS2/P083.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P083.run b/NBS2/P083.run new file mode 100644 index 0000000..5de480b --- /dev/null +++ b/NBS2/P083.run @@ -0,0 +1,31 @@ +PROGRAM FILE 83: ERROR - ARRAY-REFERENCE PRECEDES + DIM-STATEMENT. + ANSI STANDARD 15.4 + +SECTION 83.1: ERROR - ARRAY-REFERENCE PRECEDES + DIM-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO EXECUTE 'LET A(6) = 777' +'DIM A(5)' FOLLOWS THIS STATEMENT. + +A(6) = 777 + + END TEST + +END PROGRAM 83 + +Program interrupted at line 480 diff --git a/NBS2/P084.80 b/NBS2/P084.80 new file mode 100644 index 0000000..a40c24d --- /dev/null +++ b/NBS2/P084.80 @@ -0,0 +1,68 @@ +PROGRAM FILE 84: ERROR - DIMENSIONING THE SAME ARRAY + MORE THAN ONCE. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 84.1: ERROR - DIMENSIONING THE SAME ARRAY + MORE THAN ONCE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +IN ORDER TO DETERMINE WHAT INTERPRETATION IS GIVEN TO A +DOUBLY-DIMENSIONED ARRAY, YOU MUST EXECUTE THIS PROGRAM +THREE TIMES, AND NOTE EACH TIME WHETHER A SUBSCRIPT-OUT- +OF-RANGE EXCEPTION OCCURS. THE TABLE BELOW GIVES THE +EXPECTED RESULTS FOR EACH OF FIVE POSSIBLE INTERPRETATIONS. + +RESULTS WHICH DO NOT MATCH ANY OF THE ROWS IN THE TABLE +INDICATE THAT SOME OTHER INTERPRETATION IS BEING USED. + +TABLE OF RESULTS: THE THREE COLUMNS STAND FOR 1ST, 2ND, AND +3RD EXECUTION, AND THE FIVE ROWS STAND FOR FIVE POSSIBLE +INTERPRETATIONS. + + DID EXCEPTION OCCUR? + + 1 2 3 +INT NO. 1 YES YES YES +INT NO. 2 YES YES NO +INT NO. 3 NO NO NO +INT NO. 4 YES NO NO +INT NO. 5 NO YES NO + +INTERPRETATION NUMBER 1 IS THAT THE FIRST DIM-STATEMENT IN +THE SOURCE CODE GOVERNS THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 2 IS THAT THE DIM-STATEMENT MOST +RECENTLY PRECEDING AN ARRAY REFERENCE IN THE SOURCE CODE +DETERMINES THE SIZE OF THE ARRAY AT THAT REFERENCE. + +INTERPRETATION NUMBER 3 IS THAT THE LAST DIM-STATEMENT IN +THE SOURCE CODE DETERMINES THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 4 IS THAT THE FIRST DIM-STATEMENT +EXECUTED DETERMINES THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 5 IS THAT THE DIM-STATEMENT MOST +RECENTLY EXECUTED DETERMINES THE SIZE OF THE ARRAY. + +IS THIS THE 1ST, 2ND OR 3RD EXECUTION (RESPOND 1, 2, OR 3)? +? 1 + +ERROR in line 770: in bwb_dim(): variable parameter <0> cannot be resized diff --git a/NBS2/P084.BAS b/NBS2/P084.BAS new file mode 100644 index 0000000..02e9e37 --- /dev/null +++ b/NBS2/P084.BAS @@ -0,0 +1,86 @@ +10 PRINT "PROGRAM FILE 84: ERROR - DIMENSIONING THE SAME ARRAY " +20 PRINT " MORE THAN ONCE." +30 PRINT " ANSI STANDARD 15.4" +40 PRINT +50 PRINT "*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT" +60 PRINT " WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW" +70 PRINT " THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE " +80 PRINT " VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL." +90 PRINT +100 PRINT "SECTION 84.1: ERROR - DIMENSIONING THE SAME ARRAY " +110 PRINT " MORE THAN ONCE." +120 PRINT +130 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +140 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +150 PRINT +160 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +170 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +180 PRINT " BY THE PROCESSOR, OR" +190 PRINT +200 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +210 PRINT +220 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +230 PRINT "FOR DETAILED CRITERIA." +240 PRINT +250 PRINT " BEGIN TEST" +260 PRINT +270 PRINT "IN ORDER TO DETERMINE WHAT INTERPRETATION IS GIVEN TO A" +280 PRINT "DOUBLY-DIMENSIONED ARRAY, YOU MUST EXECUTE THIS PROGRAM" +290 PRINT "THREE TIMES, AND NOTE EACH TIME WHETHER A SUBSCRIPT-OUT-" +300 PRINT "OF-RANGE EXCEPTION OCCURS. THE TABLE BELOW GIVES THE" +310 PRINT "EXPECTED RESULTS FOR EACH OF FIVE POSSIBLE INTERPRETATIONS." +320 PRINT +330 PRINT "RESULTS WHICH DO NOT MATCH ANY OF THE ROWS IN THE TABLE" +340 PRINT "INDICATE THAT SOME OTHER INTERPRETATION IS BEING USED." +350 PRINT +360 PRINT "TABLE OF RESULTS: THE THREE COLUMNS STAND FOR 1ST, 2ND, AND" +370 PRINT "3RD EXECUTION, AND THE FIVE ROWS STAND FOR FIVE POSSIBLE" +380 PRINT "INTERPRETATIONS." +390 PRINT +400 PRINT " DID EXCEPTION OCCUR?" +410 PRINT +420 PRINT " 1 2 3" +430 PRINT "INT NO. 1 YES YES YES" +440 PRINT "INT NO. 2 YES YES NO" +450 PRINT "INT NO. 3 NO NO NO" +460 PRINT "INT NO. 4 YES NO NO" +470 PRINT "INT NO. 5 NO YES NO" +480 PRINT +490 PRINT "INTERPRETATION NUMBER 1 IS THAT THE FIRST DIM-STATEMENT IN" +500 PRINT "THE SOURCE CODE GOVERNS THE SIZE OF THE ARRAY." +510 PRINT +520 PRINT "INTERPRETATION NUMBER 2 IS THAT THE DIM-STATEMENT MOST" +530 PRINT "RECENTLY PRECEDING AN ARRAY REFERENCE IN THE SOURCE CODE" +540 PRINT "DETERMINES THE SIZE OF THE ARRAY AT THAT REFERENCE." +550 PRINT +560 PRINT "INTERPRETATION NUMBER 3 IS THAT THE LAST DIM-STATEMENT IN" +570 PRINT "THE SOURCE CODE DETERMINES THE SIZE OF THE ARRAY." +580 PRINT +590 PRINT "INTERPRETATION NUMBER 4 IS THAT THE FIRST DIM-STATEMENT" +600 PRINT "EXECUTED DETERMINES THE SIZE OF THE ARRAY." +610 PRINT +620 PRINT "INTERPRETATION NUMBER 5 IS THAT THE DIM-STATEMENT MOST" +630 PRINT "RECENTLY EXECUTED DETERMINES THE SIZE OF THE ARRAY." +640 LET S=13 +650 PRINT +660 PRINT "IS THIS THE 1ST, 2ND OR 3RD EXECUTION (RESPOND 1, 2, OR 3)?" +670 INPUT I +680 IF I=1 THEN 730 +690 IF I=2 THEN 770 +700 IF I=3 THEN 770 +710 PRINT "INVALID RESPONSE - RE-ENTER." +720 GOTO 650 +730 DIM A(12) +740 IF I=1 THEN 770 +750 LET A(S)=7 +760 GOTO 810 +770 DIM A(14) +780 IF I=1 THEN 750 +790 IF I=2 THEN 730 +800 LET A(S)=8 +810 PRINT +820 PRINT +830 PRINT " END TEST" +840 PRINT +850 PRINT "END PROGRAM 84" +860 END diff --git a/NBS2/P084.INP b/NBS2/P084.INP new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/NBS2/P084.INP @@ -0,0 +1 @@ +1 diff --git a/NBS2/P084.OUT b/NBS2/P084.OUT new file mode 100644 index 0000000..f27deb3 --- /dev/null +++ b/NBS2/P084.OUT @@ -0,0 +1,68 @@ +PROGRAM FILE 84: ERROR - DIMENSIONING THE SAME ARRAY + MORE THAN ONCE. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 84.1: ERROR - DIMENSIONING THE SAME ARRAY + MORE THAN ONCE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +IN ORDER TO DETERMINE WHAT INTERPRETATION IS GIVEN TO A +DOUBLY-DIMENSIONED ARRAY, YOU MUST EXECUTE THIS PROGRAM +THREE TIMES, AND NOTE EACH TIME WHETHER A SUBSCRIPT-OUT- +OF-RANGE EXCEPTION OCCURS. THE TABLE BELOW GIVES THE +EXPECTED RESULTS FOR EACH OF FIVE POSSIBLE INTERPRETATIONS. + +RESULTS WHICH DO NOT MATCH ANY OF THE ROWS IN THE TABLE +INDICATE THAT SOME OTHER INTERPRETATION IS BEING USED. + +TABLE OF RESULTS: THE THREE COLUMNS STAND FOR 1ST, 2ND, AND +3RD EXECUTION, AND THE FIVE ROWS STAND FOR FIVE POSSIBLE +INTERPRETATIONS. + + DID EXCEPTION OCCUR? + + 1 2 3 +INT NO. 1 YES YES YES +INT NO. 2 YES YES NO +INT NO. 3 NO NO NO +INT NO. 4 YES NO NO +INT NO. 5 NO YES NO + +INTERPRETATION NUMBER 1 IS THAT THE FIRST DIM-STATEMENT IN +THE SOURCE CODE GOVERNS THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 2 IS THAT THE DIM-STATEMENT MOST +RECENTLY PRECEDING AN ARRAY REFERENCE IN THE SOURCE CODE +DETERMINES THE SIZE OF THE ARRAY AT THAT REFERENCE. + +INTERPRETATION NUMBER 3 IS THAT THE LAST DIM-STATEMENT IN +THE SOURCE CODE DETERMINES THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 4 IS THAT THE FIRST DIM-STATEMENT +EXECUTED DETERMINES THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 5 IS THAT THE DIM-STATEMENT MOST +RECENTLY EXECUTED DETERMINES THE SIZE OF THE ARRAY. + +IS THIS THE 1ST, 2ND OR 3RD EXECUTION (RESPOND 1, 2, OR 3)? +? 1 + +ERROR in line 770: in bwb_dim(): variable parameter <0> cannot be resized diff --git a/NBS2/P084.dif b/NBS2/P084.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P084.run b/NBS2/P084.run new file mode 100644 index 0000000..a40c24d --- /dev/null +++ b/NBS2/P084.run @@ -0,0 +1,68 @@ +PROGRAM FILE 84: ERROR - DIMENSIONING THE SAME ARRAY + MORE THAN ONCE. + ANSI STANDARD 15.4 + +*** NOTE: THIS PROGRAM MAKES USE OF THE INPUT STATEMENT + WHICH HAS NOT YET BEEN TESTED. IF SUBSEQUENT TESTS SHOW + THIS FEATURE TO BE INCORRECTLY IMPLEMENTED, THEN THE + VALIDITY OF THE RESULTS OF THIS TEST ROUTINE IS DOUBTFUL. + +SECTION 84.1: ERROR - DIMENSIONING THE SAME ARRAY + MORE THAN ONCE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +IN ORDER TO DETERMINE WHAT INTERPRETATION IS GIVEN TO A +DOUBLY-DIMENSIONED ARRAY, YOU MUST EXECUTE THIS PROGRAM +THREE TIMES, AND NOTE EACH TIME WHETHER A SUBSCRIPT-OUT- +OF-RANGE EXCEPTION OCCURS. THE TABLE BELOW GIVES THE +EXPECTED RESULTS FOR EACH OF FIVE POSSIBLE INTERPRETATIONS. + +RESULTS WHICH DO NOT MATCH ANY OF THE ROWS IN THE TABLE +INDICATE THAT SOME OTHER INTERPRETATION IS BEING USED. + +TABLE OF RESULTS: THE THREE COLUMNS STAND FOR 1ST, 2ND, AND +3RD EXECUTION, AND THE FIVE ROWS STAND FOR FIVE POSSIBLE +INTERPRETATIONS. + + DID EXCEPTION OCCUR? + + 1 2 3 +INT NO. 1 YES YES YES +INT NO. 2 YES YES NO +INT NO. 3 NO NO NO +INT NO. 4 YES NO NO +INT NO. 5 NO YES NO + +INTERPRETATION NUMBER 1 IS THAT THE FIRST DIM-STATEMENT IN +THE SOURCE CODE GOVERNS THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 2 IS THAT THE DIM-STATEMENT MOST +RECENTLY PRECEDING AN ARRAY REFERENCE IN THE SOURCE CODE +DETERMINES THE SIZE OF THE ARRAY AT THAT REFERENCE. + +INTERPRETATION NUMBER 3 IS THAT THE LAST DIM-STATEMENT IN +THE SOURCE CODE DETERMINES THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 4 IS THAT THE FIRST DIM-STATEMENT +EXECUTED DETERMINES THE SIZE OF THE ARRAY. + +INTERPRETATION NUMBER 5 IS THAT THE DIM-STATEMENT MOST +RECENTLY EXECUTED DETERMINES THE SIZE OF THE ARRAY. + +IS THIS THE 1ST, 2ND OR 3RD EXECUTION (RESPOND 1, 2, OR 3)? +? 1 + +ERROR in line 770: in bwb_dim(): variable parameter <0> cannot be resized diff --git a/NBS2/P085.80 b/NBS2/P085.80 new file mode 100644 index 0000000..5d08845 --- /dev/null +++ b/NBS2/P085.80 @@ -0,0 +1,44 @@ +PROGRAM FILE 85: GENERAL CAPABILITIES OF GOSUB/RETURN. + ANSI STANDARD 10.4 + +SECTION 85.1: SIMPLE NESTING OF GOSUBS. + +THIS SECTION TESTS THAT SUBROUTINES MAY CALL ONE ANOTHER +AND THAT A SUBROUTINE MAY BE CALLED FROM SEVERAL PLACES. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 85.2: STACKING OF RETURN ADDRESSES. + +THIS SECTION TESTS THAT RETURN ADDRESSES ARE PROPERLY +STACKED BY GOSUBS (INCLUDING SEVERAL EXECUTIONS OF THE +SAME GOSUB) AND UNSTACKED BY CORRESPONDING RETURNS. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 85.3: GOSUB WITHOUT RETURN. + +THIS SECTION TESTS THAT PROGRAM EXECUTION MAY VALIDLY +TERMINATE EVEN THOUGH MORE GOSUBS HAVE BEEN EXECUTED +THAN RETURNS. + + BEGIN TEST. + +IF PROGRAM TERMINATES NORMALLY, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 85 diff --git a/NBS2/P085.BAS b/NBS2/P085.BAS new file mode 100644 index 0000000..8d4ba2e --- /dev/null +++ b/NBS2/P085.BAS @@ -0,0 +1,128 @@ +10 PRINT "PROGRAM FILE 85: GENERAL CAPABILITIES OF GOSUB/RETURN." +20 PRINT " ANSI STANDARD 10.4" +30 PRINT +40 PRINT "SECTION 85.1: SIMPLE NESTING OF GOSUBS." +50 PRINT +60 PRINT "THIS SECTION TESTS THAT SUBROUTINES MAY CALL ONE ANOTHER" +70 PRINT "AND THAT A SUBROUTINE MAY BE CALLED FROM SEVERAL PLACES." +80 PRINT +90 PRINT " BEGIN TEST." +100 PRINT +400 LET F=0 +500 LET X=0 +510 GOSUB 570 +520 IF X=11 THEN 530 +525 LET F=1 +530 LET X=0 +540 GOSUB 600 +550 IF X=8 THEN 560 +555 LET F=1 +560 GOTO 700 +570 LET X=X+8 +580 GOSUB 640 +590 RETURN +600 GOSUB 640 +610 GOSUB 670 +620 LET X=X+4 +630 RETURN +640 LET X=X+2 +650 GOSUB 670 +660 RETURN +670 LET X=X+1 +680 RETURN +700 PRINT +710 IF F=0 THEN 740 +720 PRINT "*** TEST FAILED ***" +730 GOTO 750 +740 PRINT "*** TEST PASSED ***" +750 PRINT +1000 PRINT " END TEST." +1010 PRINT +1020 PRINT +1030 PRINT "SECTION 85.2: STACKING OF RETURN ADDRESSES." +1040 PRINT +1050 PRINT "THIS SECTION TESTS THAT RETURN ADDRESSES ARE PROPERLY" +1060 PRINT "STACKED BY GOSUBS (INCLUDING SEVERAL EXECUTIONS OF THE" +1070 PRINT "SAME GOSUB) AND UNSTACKED BY CORRESPONDING RETURNS." +1080 PRINT +1090 PRINT " BEGIN TEST." +1100 PRINT +1150 LET F=0 +1200 LET I0=3 +1210 LET J0=4 +1220 GOSUB 1500 +1230 IF K0=4 THEN 1250 +1240 LET F=1 +1250 LET I0=2 +1260 LET J0=7 +1270 GOSUB 1500 +1280 IF K0=21 THEN 1300 +1290 LET F=1 +1300 LET I0=4 +1310 LET J0=8 +1320 GOSUB 1500 +1330 IF K0=70 THEN 1350 +1340 LET F=1 +1350 GOTO 1900 +1500 REM TEST RECURSIVE USE OF GOSUB +1510 LET L9=0 +1520 LET M0=0 +1540 GOSUB 1570 +1560 RETURN +1570 REM BINOMIAL COEFFICIENT SUBROUTINE +1580 REM FIND K0=BIN(I0,J0) +1590 REM ADD 1 TO LEVEL-COUNTER (L9) AND SAVE STATE +1600 LET L9=L9+1 +1610 LET M(L9)=M0 +1620 LET I(L9)=I0 +1630 LET J(L9)=J0 +1640 IF I0=0 THEN 1670 +1650 IF I0=J0 THEN 1670 +1660 GOTO 1740 +1670 LET K0=1 +1680 REM RESTORE STATE +1690 LET I0=I(L9) +1700 LET J0=J(L9) +1710 LET M0=M(L9) +1720 LET L9=L9-1 +1730 RETURN +1740 REM BIN(I0,J0)=BIN(I0,J0-1)+BIN(I0-1,J0-1) +1750 LET J0=J0-1 +1760 GOSUB 1570 +1770 LET M0=K0 +1780 LET I0=I0-1 +1790 GOSUB 1570 +1800 LET K0=K0+M0 +1810 REM RESTORE STATE +1820 LET I0=I(L9) +1830 LET J0=J(L9) +1840 LET M0=M(L9) +1850 LET L9=L9-1 +1860 RETURN +1900 PRINT +1910 IF F=0 THEN 1940 +1920 PRINT "*** TEST FAILED ***" +1930 GOTO 1950 +1940 PRINT "*** TEST PASSED ***" +1950 PRINT +2000 PRINT " END TEST." +2010 PRINT +2020 PRINT +2030 PRINT "SECTION 85.3: GOSUB WITHOUT RETURN." +2040 PRINT +2050 PRINT "THIS SECTION TESTS THAT PROGRAM EXECUTION MAY VALIDLY" +2060 PRINT "TERMINATE EVEN THOUGH MORE GOSUBS HAVE BEEN EXECUTED " +2070 PRINT "THAN RETURNS." +2080 PRINT +2090 PRINT " BEGIN TEST." +2100 PRINT +2110 GOSUB 2200 +2120 PRINT "*** TEST FAILED ***" +2130 GOTO 2990 +2200 PRINT "IF PROGRAM TERMINATES NORMALLY, THEN" +2220 PRINT "*** TEST PASSED ***" +2990 PRINT +3000 PRINT " END TEST." +3010 PRINT +3020 PRINT "END PROGRAM 85" +4000 END diff --git a/NBS2/P085.OUT b/NBS2/P085.OUT new file mode 100644 index 0000000..66f51e3 --- /dev/null +++ b/NBS2/P085.OUT @@ -0,0 +1,44 @@ +PROGRAM FILE 85: GENERAL CAPABILITIES OF GOSUB/RETURN. + ANSI STANDARD 10.4 + +SECTION 85.1: SIMPLE NESTING OF GOSUBS. + +THIS SECTION TESTS THAT SUBROUTINES MAY CALL ONE ANOTHER +AND THAT A SUBROUTINE MAY BE CALLED FROM SEVERAL PLACES. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 85.2: STACKING OF RETURN ADDRESSES. + +THIS SECTION TESTS THAT RETURN ADDRESSES ARE PROPERLY +STACKED BY GOSUBS (INCLUDING SEVERAL EXECUTIONS OF THE +SAME GOSUB) AND UNSTACKED BY CORRESPONDING RETURNS. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 85.3: GOSUB WITHOUT RETURN. + +THIS SECTION TESTS THAT PROGRAM EXECUTION MAY VALIDLY +TERMINATE EVEN THOUGH MORE GOSUBS HAVE BEEN EXECUTED +THAN RETURNS. + + BEGIN TEST. + +IF PROGRAM TERMINATES NORMALLY, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 85 diff --git a/NBS2/P085.dif b/NBS2/P085.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P085.run b/NBS2/P085.run new file mode 100644 index 0000000..5d08845 --- /dev/null +++ b/NBS2/P085.run @@ -0,0 +1,44 @@ +PROGRAM FILE 85: GENERAL CAPABILITIES OF GOSUB/RETURN. + ANSI STANDARD 10.4 + +SECTION 85.1: SIMPLE NESTING OF GOSUBS. + +THIS SECTION TESTS THAT SUBROUTINES MAY CALL ONE ANOTHER +AND THAT A SUBROUTINE MAY BE CALLED FROM SEVERAL PLACES. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 85.2: STACKING OF RETURN ADDRESSES. + +THIS SECTION TESTS THAT RETURN ADDRESSES ARE PROPERLY +STACKED BY GOSUBS (INCLUDING SEVERAL EXECUTIONS OF THE +SAME GOSUB) AND UNSTACKED BY CORRESPONDING RETURNS. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 85.3: GOSUB WITHOUT RETURN. + +THIS SECTION TESTS THAT PROGRAM EXECUTION MAY VALIDLY +TERMINATE EVEN THOUGH MORE GOSUBS HAVE BEEN EXECUTED +THAN RETURNS. + + BEGIN TEST. + +IF PROGRAM TERMINATES NORMALLY, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 85 diff --git a/NBS2/P086.80 b/NBS2/P086.80 new file mode 100644 index 0000000..a931dbc --- /dev/null +++ b/NBS2/P086.80 @@ -0,0 +1,22 @@ +PROGRAM FILE 86: EXCEPTION - RETURN WITHOUT GOSUB. + ANSI STANDARD 10.5 + +SECTION 86.1: EXCEPTION - RETURN WITHOUT GOSUB. + +ENCOUNTERING A RETURN-STATEMENT WITHOUT HAVING EXECUTED A +CORRESPONDING GOSUB-STATEMENT SHOULD RESULT IN THE +TERMINATION OF THE PROGRAM AND THE GENERATION OF A MESSAGE +IDENTIFYING THE EXCEPTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROCESSOR MUST TERMINATE THIS PROGRAM WHEN + THE RETURN-STATEMENT IS ENCOUNTERED. + + BEGIN TEST. + + +ERROR in line 320: RETURN without GOSUB diff --git a/NBS2/P086.BAS b/NBS2/P086.BAS new file mode 100644 index 0000000..fdd5489 --- /dev/null +++ b/NBS2/P086.BAS @@ -0,0 +1,37 @@ +10 PRINT "PROGRAM FILE 86: EXCEPTION - RETURN WITHOUT GOSUB." +20 PRINT " ANSI STANDARD 10.5" +30 PRINT +40 PRINT "SECTION 86.1: EXCEPTION - RETURN WITHOUT GOSUB." +50 PRINT +60 PRINT "ENCOUNTERING A RETURN-STATEMENT WITHOUT HAVING EXECUTED A" +70 PRINT "CORRESPONDING GOSUB-STATEMENT SHOULD RESULT IN THE " +80 PRINT "TERMINATION OF THE PROGRAM AND THE GENERATION OF A MESSAGE" +90 PRINT "IDENTIFYING THE EXCEPTION." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROCESSOR MUST TERMINATE THIS PROGRAM WHEN" +170 PRINT " THE RETURN-STATEMENT IS ENCOUNTERED." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 LET I=0 +220 GOSUB 310 +230 IF I>1 THEN 330 +240 GOTO 280 +250 GOSUB 300 +260 GOTO 330 +280 REM SKIP GOSUB +290 GOTO 310 +300 PRINT "*** TEST FAILED ***" +310 LET I=I+1 +320 RETURN +330 PRINT "*** TEST FAILED ***" +340 PRINT +350 PRINT " END TEST." +360 PRINT +370 PRINT "END PROGRAM 86" +380 END diff --git a/NBS2/P086.OUT b/NBS2/P086.OUT new file mode 100644 index 0000000..643583d --- /dev/null +++ b/NBS2/P086.OUT @@ -0,0 +1,22 @@ +PROGRAM FILE 86: EXCEPTION - RETURN WITHOUT GOSUB. + ANSI STANDARD 10.5 + +SECTION 86.1: EXCEPTION - RETURN WITHOUT GOSUB. + +ENCOUNTERING A RETURN-STATEMENT WITHOUT HAVING EXECUTED A +CORRESPONDING GOSUB-STATEMENT SHOULD RESULT IN THE +TERMINATION OF THE PROGRAM AND THE GENERATION OF A MESSAGE +IDENTIFYING THE EXCEPTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROCESSOR MUST TERMINATE THIS PROGRAM WHEN + THE RETURN-STATEMENT IS ENCOUNTERED. + + BEGIN TEST. + + +ERROR in line 320: RETURN without GOSUB diff --git a/NBS2/P086.dif b/NBS2/P086.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P086.run b/NBS2/P086.run new file mode 100644 index 0000000..a931dbc --- /dev/null +++ b/NBS2/P086.run @@ -0,0 +1,22 @@ +PROGRAM FILE 86: EXCEPTION - RETURN WITHOUT GOSUB. + ANSI STANDARD 10.5 + +SECTION 86.1: EXCEPTION - RETURN WITHOUT GOSUB. + +ENCOUNTERING A RETURN-STATEMENT WITHOUT HAVING EXECUTED A +CORRESPONDING GOSUB-STATEMENT SHOULD RESULT IN THE +TERMINATION OF THE PROGRAM AND THE GENERATION OF A MESSAGE +IDENTIFYING THE EXCEPTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROCESSOR MUST TERMINATE THIS PROGRAM WHEN + THE RETURN-STATEMENT IS ENCOUNTERED. + + BEGIN TEST. + + +ERROR in line 320: RETURN without GOSUB diff --git a/NBS2/P087.80 b/NBS2/P087.80 new file mode 100644 index 0000000..1a6826e --- /dev/null +++ b/NBS2/P087.80 @@ -0,0 +1,23 @@ +PROGRAM FILE 87: ERROR -TRANSFER TO NON-EXISTING LINE + NUMBER USING THE GOSUB-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 87.1: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE GOSUB-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 230: Line number 285 not found diff --git a/NBS2/P087.BAS b/NBS2/P087.BAS new file mode 100644 index 0000000..ff5f5c5 --- /dev/null +++ b/NBS2/P087.BAS @@ -0,0 +1,39 @@ +10 PRINT "PROGRAM FILE 87: ERROR -TRANSFER TO NON-EXISTING LINE" +15 PRINT " NUMBER USING THE GOSUB-STATEMENT." +20 PRINT " ANSI STANDARD 10.4" +30 PRINT +40 PRINT "SECTION 87.1: ERROR - TRANSFER TO NON-EXISTING LINE " +50 PRINT " NUMBER USING THE GOSUB-STATEMENT." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 LET X=0 +220 LET Y=0 +230 GOSUB 285 +240 IF X=1 THEN 310 +250 IF Y=1 THEN 330 +260 PRINT "THE PROCESSOR IGNORED THE GOSUB STATEMENT." +270 GOTO 340 +280 LET X=1 +290 LET Y=1 +300 RETURN +310 PRINT " THE PROCESSOR SUBSTITUTED AN EXISTING, LOWER LINE NUMBER." +320 GOTO 340 +330 PRINT "THE PROCESSOR SUBSTITUTED AN EXISTING, HIGHER LINE NUMBER." +340 PRINT +350 PRINT " END TEST." +360 PRINT +370 PRINT "END PROGRAM 87" +380 END diff --git a/NBS2/P087.OUT b/NBS2/P087.OUT new file mode 100644 index 0000000..8f44db1 --- /dev/null +++ b/NBS2/P087.OUT @@ -0,0 +1,23 @@ +PROGRAM FILE 87: ERROR -TRANSFER TO NON-EXISTING LINE + NUMBER USING THE GOSUB-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 87.1: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE GOSUB-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 230: Line number 285 not found diff --git a/NBS2/P087.dif b/NBS2/P087.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P087.run b/NBS2/P087.run new file mode 100644 index 0000000..1a6826e --- /dev/null +++ b/NBS2/P087.run @@ -0,0 +1,23 @@ +PROGRAM FILE 87: ERROR -TRANSFER TO NON-EXISTING LINE + NUMBER USING THE GOSUB-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 87.1: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE GOSUB-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 230: Line number 285 not found diff --git a/NBS2/P088.80 b/NBS2/P088.80 new file mode 100644 index 0000000..930bc3f --- /dev/null +++ b/NBS2/P088.80 @@ -0,0 +1,27 @@ +PROGRAM FILE 88: THE ON-GOTO-STATEMENT. + ANSI STANDARD 10.2, 10.4 + +SECTION 88.1: THE ON-GOTO EXPRESSION WITH INTEGER VALUES. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 88.2: THE ON-GOTO EXPRESSION WITH FRACTIONAL VALUES. + +THIS SECTION TESTS THAT FRACTIONAL VALUES ARE ROUNDED +TO THE NEAREST INTEGER BY THE ON-GOTO BEFORE SELECTION +OF THE LINE-NUMBER FROM THE LIST. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 88 diff --git a/NBS2/P088.BAS b/NBS2/P088.BAS new file mode 100644 index 0000000..dfb590c --- /dev/null +++ b/NBS2/P088.BAS @@ -0,0 +1,80 @@ +10 PRINT "PROGRAM FILE 88: THE ON-GOTO-STATEMENT." +20 PRINT " ANSI STANDARD 10.2, 10.4" +30 PRINT +60 PRINT "SECTION 88.1: THE ON-GOTO EXPRESSION WITH INTEGER VALUES." +80 PRINT +90 PRINT " BEGIN TEST." +100 PRINT +120 LET N=0 +130 FOR I=1 TO 5 +140 REM 3RD DIGIT OF LINE NUMBER IS ITS POSITION IN LIST +150 ON I GOTO 221, 252, 213, 244, 235 +160 PRINT "CONTROL FELL THROUGH ON-GOTO" +170 GOTO 280 +213 IF I=3 THEN 290 +218 LET K=3 +219 GOTO 270 +221 IF I=1 THEN 290 +228 LET K=1 +229 GOTO 270 +235 IF I=5 THEN 290 +238 LET K=5 +239 GOTO 270 +244 IF I=4 THEN 290 +248 LET K=4 +249 GOTO 270 +252 IF I=2 THEN 290 +258 LET K=2 +259 GOTO 270 +270 PRINT "CONTROL WENT TO LINE #";K;" IN LIST EVEN THOUGH ON-GOTO"; +275 PRINT " EXPRESSION = ";I +280 LET N=1 +290 NEXT I +300 PRINT +310 IF N=0 THEN 340 +320 PRINT "*** TEST FAILED ***" +330 GOTO 350 +340 PRINT "*** TEST PASSED ***" +350 PRINT +360 PRINT " END TEST." +370 PRINT +375 PRINT +380 PRINT "SECTION 88.2: THE ON-GOTO EXPRESSION WITH FRACTIONAL VALUES." +400 PRINT +410 PRINT "THIS SECTION TESTS THAT FRACTIONAL VALUES ARE ROUNDED" +420 PRINT "TO THE NEAREST INTEGER BY THE ON-GOTO BEFORE SELECTION" +425 PRINT "OF THE LINE-NUMBER FROM THE LIST." +430 PRINT +440 PRINT " BEGIN TEST." +450 PRINT +500 LET N=0 +510 FOR I=0.6 TO 3.4 STEP .2 +530 ON I GOTO 600,700,800 +540 PRINT "CONTROL FELL THROUGH ON-GOTO." +550 GOTO 950 +600 LET K=1 +610 IF I<.5 THEN 900 +620 IF I>1.5 THEN 900 +630 GOTO 1000 +700 LET K=2 +710 IF I<1.5 THEN 900 +720 IF I>2.5 THEN 900 +730 GOTO 1000 +800 LET K=3 +810 IF I<2.5 THEN 900 +820 IF I>3.5 THEN 900 +830 GOTO 1000 +900 PRINT "CONTROL WENT TO LINE #";K;" IN LIST, BUT ON-GOTO"; +910 PRINT " EXPRESSION = ";I +950 LET N=1 +1000 NEXT I +1010 PRINT +1020 IF N=0 THEN 1050 +1030 PRINT "*** TEST FAILED ***" +1040 GOTO 1060 +1050 PRINT "*** TEST PASSED ***" +1060 PRINT +1070 PRINT " END TEST." +1260 PRINT +1270 PRINT "END PROGRAM 88" +1280 END diff --git a/NBS2/P088.OUT b/NBS2/P088.OUT new file mode 100644 index 0000000..98b1a72 --- /dev/null +++ b/NBS2/P088.OUT @@ -0,0 +1,27 @@ +PROGRAM FILE 88: THE ON-GOTO-STATEMENT. + ANSI STANDARD 10.2, 10.4 + +SECTION 88.1: THE ON-GOTO EXPRESSION WITH INTEGER VALUES. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 88.2: THE ON-GOTO EXPRESSION WITH FRACTIONAL VALUES. + +THIS SECTION TESTS THAT FRACTIONAL VALUES ARE ROUNDED +TO THE NEAREST INTEGER BY THE ON-GOTO BEFORE SELECTION +OF THE LINE-NUMBER FROM THE LIST. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 88 diff --git a/NBS2/P088.dif b/NBS2/P088.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P088.run b/NBS2/P088.run new file mode 100644 index 0000000..930bc3f --- /dev/null +++ b/NBS2/P088.run @@ -0,0 +1,27 @@ +PROGRAM FILE 88: THE ON-GOTO-STATEMENT. + ANSI STANDARD 10.2, 10.4 + +SECTION 88.1: THE ON-GOTO EXPRESSION WITH INTEGER VALUES. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + + +SECTION 88.2: THE ON-GOTO EXPRESSION WITH FRACTIONAL VALUES. + +THIS SECTION TESTS THAT FRACTIONAL VALUES ARE ROUNDED +TO THE NEAREST INTEGER BY THE ON-GOTO BEFORE SELECTION +OF THE LINE-NUMBER FROM THE LIST. + + BEGIN TEST. + + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 88 diff --git a/NBS2/P089.80 b/NBS2/P089.80 new file mode 100644 index 0000000..4009ef4 --- /dev/null +++ b/NBS2/P089.80 @@ -0,0 +1,18 @@ +PROGRAM FILE 89: EXCEPTION - ON-GOTO CONTROL EXPRESSION + LESS THAN 1. + ANSI STANDARD 10.5 + +SECTION 89.1: EXCEPTION - ON-GOTO CONTROL EXPRESSION + LESS THAN 1. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + + +ERROR in line 180: Value is out of range diff --git a/NBS2/P089.BAS b/NBS2/P089.BAS new file mode 100644 index 0000000..f09f04e --- /dev/null +++ b/NBS2/P089.BAS @@ -0,0 +1,34 @@ +10 PRINT "PROGRAM FILE 89: EXCEPTION - ON-GOTO CONTROL EXPRESSION" +20 PRINT " LESS THAN 1." +30 PRINT " ANSI STANDARD 10.5" +40 PRINT +50 PRINT "SECTION 89.1: EXCEPTION - ON-GOTO CONTROL EXPRESSION " +60 PRINT " LESS THAN 1." +70 PRINT +80 PRINT "TO PASS THIS TEST:" +90 PRINT +100 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +110 PRINT " DISPLAYED, AND" +120 PRINT +130 PRINT " 2) EXECUTION MUST TERMINATE." +140 PRINT +150 PRINT " BEGIN TEST." +160 PRINT +170 LET X=.3 +180 ON X GOTO 210,230 +190 LET A$="Z" +200 GOTO 250 +210 LET A$="FIRST" +220 GOTO 250 +230 LET A$="SECOND" +240 GOTO 250 +250 IF A$="Z" THEN 280 +260 PRINT "ON GOTO JUMPED TO ";A$;" LINE NUMBER IN LIST." +270 GOTO 290 +280 PRINT "CONTROL FELL THROUGH ON-GOTO TO NEXT STATEMENT." +290 PRINT "*** TEST FAILED ***" +300 PRINT +310 PRINT " END TEST." +320 PRINT +330 PRINT "END PROGRAM 89" +340 END diff --git a/NBS2/P089.OUT b/NBS2/P089.OUT new file mode 100644 index 0000000..3c8ffc0 --- /dev/null +++ b/NBS2/P089.OUT @@ -0,0 +1,18 @@ +PROGRAM FILE 89: EXCEPTION - ON-GOTO CONTROL EXPRESSION + LESS THAN 1. + ANSI STANDARD 10.5 + +SECTION 89.1: EXCEPTION - ON-GOTO CONTROL EXPRESSION + LESS THAN 1. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + + +ERROR in line 180: Value is out of range diff --git a/NBS2/P089.dif b/NBS2/P089.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P089.run b/NBS2/P089.run new file mode 100644 index 0000000..4009ef4 --- /dev/null +++ b/NBS2/P089.run @@ -0,0 +1,18 @@ +PROGRAM FILE 89: EXCEPTION - ON-GOTO CONTROL EXPRESSION + LESS THAN 1. + ANSI STANDARD 10.5 + +SECTION 89.1: EXCEPTION - ON-GOTO CONTROL EXPRESSION + LESS THAN 1. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + + +ERROR in line 180: Value is out of range diff --git a/NBS2/P090.80 b/NBS2/P090.80 new file mode 100644 index 0000000..7bb05ca --- /dev/null +++ b/NBS2/P090.80 @@ -0,0 +1,18 @@ +PROGRAM FILE 90: EXCEPTION - ON-GOTO CONTROL EXPRESSION + GREATER THAN NUMBER OF LINE-NUMBERS IN LIST. + ANSI STANDARD 10.5 + +SECTION 90.1: EXCEPTION - ON-GOTO CONTROL EXPRESSION + GREATER THAN NUMBER OF LINE-NUMBERS IN LIST. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + + +ERROR in line 180: Value is out of range diff --git a/NBS2/P090.BAS b/NBS2/P090.BAS new file mode 100644 index 0000000..759bef7 --- /dev/null +++ b/NBS2/P090.BAS @@ -0,0 +1,34 @@ +10 PRINT "PROGRAM FILE 90: EXCEPTION - ON-GOTO CONTROL EXPRESSION" +20 PRINT " GREATER THAN NUMBER OF LINE-NUMBERS IN LIST." +30 PRINT " ANSI STANDARD 10.5" +40 PRINT +50 PRINT "SECTION 90.1: EXCEPTION - ON-GOTO CONTROL EXPRESSION" +60 PRINT " GREATER THAN NUMBER OF LINE-NUMBERS IN LIST." +70 PRINT +80 PRINT "TO PASS THIS TEST:" +90 PRINT +100 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +110 PRINT " DISPLAYED, AND" +120 PRINT +130 PRINT " 2) EXECUTION MUST TERMINATE." +140 PRINT +150 PRINT " BEGIN TEST." +160 PRINT +170 LET X=2.7 +180 ON X GOTO 210,230 +190 LET A$="Z" +200 GOTO 250 +210 LET A$="FIRST" +220 GOTO 250 +230 LET A$="SECOND" +240 GOTO 250 +250 IF A$="Z" THEN 280 +260 PRINT "ON GOTO JUMPED TO ";A$;" LINE NUMBER IN LIST." +270 GOTO 290 +280 PRINT "CONTROL FELL THROUGH ON-GOTO TO NEXT STATEMENT." +290 PRINT "*** TEST FAILED ***" +300 PRINT +310 PRINT " END TEST." +320 PRINT +330 PRINT "END PROGRAM 90" +340 END diff --git a/NBS2/P090.OUT b/NBS2/P090.OUT new file mode 100644 index 0000000..defcdf4 --- /dev/null +++ b/NBS2/P090.OUT @@ -0,0 +1,18 @@ +PROGRAM FILE 90: EXCEPTION - ON-GOTO CONTROL EXPRESSION + GREATER THAN NUMBER OF LINE-NUMBERS IN LIST. + ANSI STANDARD 10.5 + +SECTION 90.1: EXCEPTION - ON-GOTO CONTROL EXPRESSION + GREATER THAN NUMBER OF LINE-NUMBERS IN LIST. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + + +ERROR in line 180: Value is out of range diff --git a/NBS2/P090.dif b/NBS2/P090.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P090.run b/NBS2/P090.run new file mode 100644 index 0000000..7bb05ca --- /dev/null +++ b/NBS2/P090.run @@ -0,0 +1,18 @@ +PROGRAM FILE 90: EXCEPTION - ON-GOTO CONTROL EXPRESSION + GREATER THAN NUMBER OF LINE-NUMBERS IN LIST. + ANSI STANDARD 10.5 + +SECTION 90.1: EXCEPTION - ON-GOTO CONTROL EXPRESSION + GREATER THAN NUMBER OF LINE-NUMBERS IN LIST. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + + +ERROR in line 180: Value is out of range diff --git a/NBS2/P091.80 b/NBS2/P091.80 new file mode 100644 index 0000000..37d9e69 --- /dev/null +++ b/NBS2/P091.80 @@ -0,0 +1,23 @@ +PROGRAM FILE 91: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE ON-GOTO-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 91.1: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE ON-GOTO-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 250: Line number 295 not found diff --git a/NBS2/P091.BAS b/NBS2/P091.BAS new file mode 100644 index 0000000..68d6b0b --- /dev/null +++ b/NBS2/P091.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 91: ERROR - TRANSFER TO NON-EXISTING LINE" +15 PRINT " NUMBER USING THE ON-GOTO-STATEMENT." +20 PRINT " ANSI STANDARD 10.4" +30 PRINT +40 PRINT "SECTION 91.1: ERROR - TRANSFER TO NON-EXISTING LINE" +50 PRINT " NUMBER USING THE ON-GOTO-STATEMENT." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +230 LET A$="LINE 300." +240 LET X=1 +250 ON X GOTO 295 +260 PRINT "CONTROL FELL THROUGH THE ON-GOTO STATEMENT." +280 GOTO 310 +290 LET A$="LINE 290." +300 PRINT "'ON X GOTO 295' JUMPED TO ";A$ +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 91." +350 END diff --git a/NBS2/P091.OUT b/NBS2/P091.OUT new file mode 100644 index 0000000..e0a6e0a --- /dev/null +++ b/NBS2/P091.OUT @@ -0,0 +1,23 @@ +PROGRAM FILE 91: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE ON-GOTO-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 91.1: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE ON-GOTO-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 250: Line number 295 not found diff --git a/NBS2/P091.dif b/NBS2/P091.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P091.run b/NBS2/P091.run new file mode 100644 index 0000000..37d9e69 --- /dev/null +++ b/NBS2/P091.run @@ -0,0 +1,23 @@ +PROGRAM FILE 91: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE ON-GOTO-STATEMENT. + ANSI STANDARD 10.4 + +SECTION 91.1: ERROR - TRANSFER TO NON-EXISTING LINE + NUMBER USING THE ON-GOTO-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 250: Line number 295 not found diff --git a/NBS2/P092.80 b/NBS2/P092.80 new file mode 100644 index 0000000..45dcf4d --- /dev/null +++ b/NBS2/P092.80 @@ -0,0 +1,65 @@ +PROGRAM FILE 92: READ AND DATA STATEMENTS FOR NUMERIC DATA. + ANSI STANDARD 5.2, 14.2, 14.4 + +SECTION 92.1: READ AND DATA STATEMENTS FOR NUMERIC DATA. + +THIS SECTION TESTS THE PROCESSOR'S CAPABILITY TO HANDLE +INTERNAL NUMERIC DATA USING THE DATA AND READ STATEMENTS. +THE DATA-VALUES WILL BE COMPARED TO THOSE ASSIGNED TO AN +ARRAY AND THE RESULTS DISPLAYED. IF THE ACCURACY IS LESS +THAN SIX DIGITS, THE TEST WILL BE COUNTED AS A FAILURE. + + BEGIN TEST + +TRAIL # DATA VALUE RESULTS + 1 9.99999E+37 OK + 2 -9.99999E+37 OK + 3 9.87654E+37 OK + 4 9.87654E-38 OK + 5 1.00001E-38 OK + 6 -1.00001E-38 OK + 7 9.99999E-38 OK + 8 123.456 OK + 9 123.456 OK + 10 9.87654E+37 OK + 11 123456 OK + 12 123456 OK + 13 123456 OK + 14 987.654 OK + 15 1.23456E+6 OK + 16 1.23456E+8 OK + 17 1.23456E-2 OK + 18 1.23456E-4 OK + 19 .12 OK + 20 .12 OK + 21 -.12 OK + 22 .12 OK + 23 0 OK + 24 0 OK + 25 0 OK + 26 1.23E+9 OK + 27 1.23E+9 OK + 28 1.23E+9 OK + 29 1.23E-9 OK + 30 1.23E-9 OK + 31 1.23E-9 OK + 32 1.23E-9 OK + 33 0 OK + 34 0 OK + 35 0 OK + 36 0 OK + 37 123 OK + 38 123 OK + 39 123 OK + 40 123 OK + 41 1.23457E+19 OK + 42 1.23456E+15 OK + 43 1.23456E-15 OK + 44 123456. OK + 45 123456 OK + +***** TEST PASSED ***** + + END TEST + +END PROGRAM 92 diff --git a/NBS2/P092.BAS b/NBS2/P092.BAS new file mode 100644 index 0000000..3b9a249 --- /dev/null +++ b/NBS2/P092.BAS @@ -0,0 +1,143 @@ +10 PRINT "PROGRAM FILE 92: READ AND DATA STATEMENTS FOR NUMERIC DATA." +20 PRINT " ANSI STANDARD 5.2, 14.2, 14.4" +30 PRINT +40 PRINT "SECTION 92.1: READ AND DATA STATEMENTS FOR NUMERIC DATA." +50 PRINT +60 PRINT "THIS SECTION TESTS THE PROCESSOR'S CAPABILITY TO HANDLE" +70 PRINT "INTERNAL NUMERIC DATA USING THE DATA AND READ STATEMENTS." +80 PRINT "THE DATA-VALUES WILL BE COMPARED TO THOSE ASSIGNED TO AN" +90 PRINT "ARRAY AND THE RESULTS DISPLAYED. IF THE ACCURACY IS LESS" +120 PRINT "THAN SIX DIGITS, THE TEST WILL BE COUNTED AS A FAILURE." +130 PRINT +132 PRINT " BEGIN TEST" +134 PRINT +138 DIM A(110) +140 LET A(1)=9.99998E37 +145 LET A(2)=1E38 +150 LET A(3)=-1E38 +155 LET A(4)=-9.99998E37 +160 LET A(5)=9.87653E37 +165 LET A(6)=9.87655E37 +170 LET A(7)=9.87653E-38 +175 LET A(8)=9.87655E-38 +180 LET A(9)=1.00000E-38 +185 LET A(10)=1.00002E-38 +190 LET A(11)=-1.00002E-38 +195 LET A(12)=-1.00000E-38 +200 LET A(13)=9.99998E-38 +205 LET A(14)=10E-38 +210 LET A(15)=123.455 +215 LET A(16)=123.457 +220 LET A(17)=123.455 +225 LET A(18)=123.457 +230 LET A(19)=9.87653E37 +235 LET A(20)=9.87655E37 +240 LET A(21)=123455 +245 LET A(22)=123457 +250 LET A(23)=123455 +255 LET A(24)=123457 +260 LET A(25)=123455 +265 LET A(26)=123457 +270 LET A(27)=987.653 +275 LET A(28)=987.655 +280 LET A(29)=1.23455E+6 +285 LET A(30)=1.23457E+6 +290 LET A(31)=1.23455E+8 +295 LET A(32)=1.23457E+8 +300 LET A(33)=1.23455E-2 +305 LET A(34)=1.23457E-2 +310 LET A(35)=1.23455E-4 +315 LET A(36)=1.23457E-4 +320 LET A(37)=.119999 +325 LET A(38)=.120001 +330 LET A(39)=.119999 +335 LET A(40)=.120001 +340 LET A(41)=-.120001 +345 LET A(42)=-.119999 +350 LET A(43)=.119999 +355 LET A(44)=.120001 +360 LET A(45)=0 +365 LET A(46)=0 +370 LET A(47)=0 +375 LET A(48)=0 +380 LET A(49)=0 +385 LET A(50)=0 +390 LET A(51)=1.22999E9 +395 LET A(52)=1.23001E9 +400 LET A(53)=1.22999E9 +405 LET A(54)=1.23001E9 +410 LET A(55)=1.22999E9 +415 LET A(56)=1.23001E9 +420 LET A(57)=1.22999E-9 +425 LET A(58)=1.23001E-9 +430 LET A(59)=1.22999E-9 +435 LET A(60)=1.23001E-9 +440 LET A(61)=1.22999E-9 +445 LET A(62)=1.23001E-9 +450 LET A(63)=1.22999E-9 +455 LET A(64)=1.23001E-9 +460 LET A(65)=0 +465 LET A(66)=0 +470 LET A(67)=0 +475 LET A(68)=0 +480 LET A(69)=0 +485 LET A(70)=0 +490 LET A(71)=0 +495 LET A(72)=0 +500 LET A(73)=122.999 +505 LET A(74)=123.001 +510 LET A(75)=122.999 +515 LET A(76)=123.001 +520 LET A(77)=122.999 +525 LET A(78)=123.001 +530 LET A(79)=122.999 +535 LET A(80)=123.001 +540 LET A(81)=1.2345578E19 +545 LET A(82)=1.2345779E19 +550 LET A(83)=1.23455E15 +555 LET A(84)=1.23457E15 +560 LET A(85)=1.23455E-15 +565 LET A(86)=1.23457E-15 +570 LET A(87)=123455 +575 LET A(88)=123457 +580 LET A(89)=123455 +585 LET A(90)=123457 +1000 LET I=-1 +1001 LET J=0 +1002 PRINT "TRAIL #","DATA VALUE","RESULTS" +1005 LET F=0 +1010 READ X +1020 IF X=-1 THEN 5000 +1025 LET J=J+1 +1030 LET I=I+2 +1035 LET K=I+1 +1040 IF XA(K) THEN 1100 +1060 PRINT J,X," OK " +1070 GOTO 1010 +1100 PRINT J,X,"FAIL" +1110 LET F=F+1 +1120 GOTO 1010 +4000 DATA +.999999E38,-.999999E38,.00987654E40,987.654E-40 +4010 DATA +1.00001E-38,-1.00001E-38,9.99999E-38 +4015 DATA 123456.E-3,.123456E3 +4020 DATA 9.87654E37,123456,123456.,123456.0,987.654 +4030 DATA 1234560,123456000,.0123456,.000123456 +4040 DATA .12,+.12,-.12,0.12 +4050 DATA 0.0,+0,-.000 +4060 DATA 1.23E9,1.23E09,1.23E+9,1.23E-9,1.23E-09,1.23E-0009 +4070 DATA 000001.2300000E-000009,0E0,000.000E22,+000E55,0.0E-000 +4080 DATA 123E0,123E000,123E-00,123E+0 +4090 DATA 12345678901234567890,123456E10,0.0000123456E-10 +4100 DATA 123456000000000E-9,0.000000000123456E15 +4900 DATA -1 +5000 PRINT +5010 IF F=0 THEN 5050 +5020 PRINT "***** TEST FAILED ***** ";F;" CASE(S) HANDLED IMPROPERLY." +5030 GOTO 5100 +5050 PRINT "***** TEST PASSED *****" +5100 PRINT +5110 PRINT " END TEST" +5120 PRINT +5130 PRINT "END PROGRAM 92" +5140 END diff --git a/NBS2/P092.OUT b/NBS2/P092.OUT new file mode 100644 index 0000000..933461f --- /dev/null +++ b/NBS2/P092.OUT @@ -0,0 +1,65 @@ +PROGRAM FILE 92: READ AND DATA STATEMENTS FOR NUMERIC DATA. + ANSI STANDARD 5.2, 14.2, 14.4 + +SECTION 92.1: READ AND DATA STATEMENTS FOR NUMERIC DATA. + +THIS SECTION TESTS THE PROCESSOR'S CAPABILITY TO HANDLE +INTERNAL NUMERIC DATA USING THE DATA AND READ STATEMENTS. +THE DATA-VALUES WILL BE COMPARED TO THOSE ASSIGNED TO AN +ARRAY AND THE RESULTS DISPLAYED. IF THE ACCURACY IS LESS +THAN SIX DIGITS, THE TEST WILL BE COUNTED AS A FAILURE. + + BEGIN TEST + +TRAIL # DATA VALUE RESULTS + 1 9.99999E+37 OK + 2 -9.99999E+37 OK + 3 9.87654E+37 OK + 4 9.87654E-38 OK + 5 1.00001E-38 OK + 6 -1.00001E-38 OK + 7 9.99999E-38 OK + 8 123.456 OK + 9 123.456 OK + 10 9.87654E+37 OK + 11 123456 OK + 12 123456 OK + 13 123456 OK + 14 987.654 OK + 15 1.23456E+6 OK + 16 1.23456E+8 OK + 17 1.23456E-2 OK + 18 1.23456E-4 OK + 19 .12 OK + 20 .12 OK + 21 -.12 OK + 22 .12 OK + 23 0 OK + 24 0 OK + 25 0 OK + 26 1.23E+9 OK + 27 1.23E+9 OK + 28 1.23E+9 OK + 29 1.23E-9 OK + 30 1.23E-9 OK + 31 1.23E-9 OK + 32 1.23E-9 OK + 33 0 OK + 34 0 OK + 35 0 OK + 36 0 OK + 37 123 OK + 38 123 OK + 39 123 OK + 40 123 OK + 41 1.23457E+19 OK + 42 1.23456E+15 OK + 43 1.23456E-15 OK + 44 123456. OK + 45 123456 OK + +***** TEST PASSED ***** + + END TEST + +END PROGRAM 92 diff --git a/NBS2/P092.dif b/NBS2/P092.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P092.run b/NBS2/P092.run new file mode 100644 index 0000000..45dcf4d --- /dev/null +++ b/NBS2/P092.run @@ -0,0 +1,65 @@ +PROGRAM FILE 92: READ AND DATA STATEMENTS FOR NUMERIC DATA. + ANSI STANDARD 5.2, 14.2, 14.4 + +SECTION 92.1: READ AND DATA STATEMENTS FOR NUMERIC DATA. + +THIS SECTION TESTS THE PROCESSOR'S CAPABILITY TO HANDLE +INTERNAL NUMERIC DATA USING THE DATA AND READ STATEMENTS. +THE DATA-VALUES WILL BE COMPARED TO THOSE ASSIGNED TO AN +ARRAY AND THE RESULTS DISPLAYED. IF THE ACCURACY IS LESS +THAN SIX DIGITS, THE TEST WILL BE COUNTED AS A FAILURE. + + BEGIN TEST + +TRAIL # DATA VALUE RESULTS + 1 9.99999E+37 OK + 2 -9.99999E+37 OK + 3 9.87654E+37 OK + 4 9.87654E-38 OK + 5 1.00001E-38 OK + 6 -1.00001E-38 OK + 7 9.99999E-38 OK + 8 123.456 OK + 9 123.456 OK + 10 9.87654E+37 OK + 11 123456 OK + 12 123456 OK + 13 123456 OK + 14 987.654 OK + 15 1.23456E+6 OK + 16 1.23456E+8 OK + 17 1.23456E-2 OK + 18 1.23456E-4 OK + 19 .12 OK + 20 .12 OK + 21 -.12 OK + 22 .12 OK + 23 0 OK + 24 0 OK + 25 0 OK + 26 1.23E+9 OK + 27 1.23E+9 OK + 28 1.23E+9 OK + 29 1.23E-9 OK + 30 1.23E-9 OK + 31 1.23E-9 OK + 32 1.23E-9 OK + 33 0 OK + 34 0 OK + 35 0 OK + 36 0 OK + 37 123 OK + 38 123 OK + 39 123 OK + 40 123 OK + 41 1.23457E+19 OK + 42 1.23456E+15 OK + 43 1.23456E-15 OK + 44 123456. OK + 45 123456 OK + +***** TEST PASSED ***** + + END TEST + +END PROGRAM 92 diff --git a/NBS2/P093.80 b/NBS2/P093.80 new file mode 100644 index 0000000..74ed758 --- /dev/null +++ b/NBS2/P093.80 @@ -0,0 +1,84 @@ +PROGRAM FILE 93: READ AND DATA STATEMENTS FOR STRING DATA. + ANSI STANDARD 3.2, 5.2, 14.2, 14.4 + +SECTION 93.1: READ AND DATA STATEMENTS FOR STRING DATA + +THIS SECTION TESTS THE ABILITY TO PICK UP STRING (CHARACTER) +DATA USING THE READ STATEMENT. VARIOUS SYNTACTIC VARIATIONS +ARE TESTED, ESPECIALLY FOR DATA FORMATS. + +PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT +ON THE CORRECT OPERATION OF THE STRING COMPARISON +FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE +WILL LIKELY GIVE INVALID RESULTS. + +THE VALUES FROM THE DATA STATEMENT ARE COMPARED TO THOSE +ASSIGNED TO STRING VARIABLES. THE EXPECTED AND ACTUAL +RESULTS ARE DISPLAYED, AND AN ERROR COUNT MAINTAINED. +THE READ STATEMENT IS USED WITH SEVERAL VARIABLES IN +THE VARIABLE LIST. + + BEGIN TEST + + + +SHOULD BE: ***ABCD*** +ACTUAL: ***ABCD*** +TEST OK + + +SHOULD BE: ***EFGHIJKLM*** +ACTUAL: ***EFGHIJKLM*** +TEST OK + + +SHOULD BE: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+. -*** +ACTUAL: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+. -*** +TEST OK + + +SHOULD BE: ***EIGHTEEN POSITIONS*** +ACTUAL: ***EIGHTEEN POSITIONS*** +TEST OK + + +SHOULD BE: ***ABCDEFGHI2.1E3*** +ACTUAL: ***ABCDEFGHI2.1E3*** +TEST OK + + +SHOULD BE: ***ABC DEF GHI*** +ACTUAL: ***ABC DEF GHI*** +TEST OK + + +SHOULD BE: ***A BC D*** +ACTUAL: ***A BC D*** +TEST OK + + +SHOULD BE: ***A B C D E F*** +ACTUAL: ***A B C D E F*** +TEST OK + + +SHOULD BE: ***AB,CD*** +ACTUAL: ***AB,CD*** +TEST OK + + +SHOULD BE: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*** +ACTUAL: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*** +TEST OK + + +SHOULD BE: ***!#$%&'()*+,-./:;<=>?^_*** +ACTUAL: ***!#$%&'()*+,-./:;<=>?^_*** +TEST OK + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 93 diff --git a/NBS2/P093.BAS b/NBS2/P093.BAS new file mode 100644 index 0000000..cb2d675 --- /dev/null +++ b/NBS2/P093.BAS @@ -0,0 +1,139 @@ +10 PRINT "PROGRAM FILE 93: READ AND DATA STATEMENTS FOR STRING DATA." +20 PRINT " ANSI STANDARD 3.2, 5.2, 14.2, 14.4" +30 PRINT +40 PRINT "SECTION 93.1: READ AND DATA STATEMENTS FOR STRING DATA" +50 PRINT +60 PRINT "THIS SECTION TESTS THE ABILITY TO PICK UP STRING (CHARACTER)" +70 PRINT "DATA USING THE READ STATEMENT. VARIOUS SYNTACTIC VARIATIONS" +80 PRINT "ARE TESTED, ESPECIALLY FOR DATA FORMATS." +90 PRINT +100 PRINT "PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT" +110 PRINT "ON THE CORRECT OPERATION OF THE STRING COMPARISON" +120 PRINT "FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE" +130 PRINT "WILL LIKELY GIVE INVALID RESULTS." +140 PRINT +150 PRINT "THE VALUES FROM THE DATA STATEMENT ARE COMPARED TO THOSE" +160 PRINT "ASSIGNED TO STRING VARIABLES. THE EXPECTED AND ACTUAL" +170 PRINT "RESULTS ARE DISPLAYED, AND AN ERROR COUNT MAINTAINED." +180 PRINT "THE READ STATEMENT IS USED WITH SEVERAL VARIABLES IN" +190 PRINT "THE VARIABLE LIST." +200 PRINT +210 PRINT " BEGIN TEST" +220 PRINT +230 LET I=0 +240 LET F=0 +250 READ N +255 IF N=0 THEN 1200 +260 LET I=I+1 +270 LET I$="#" +280 LET J$="#" +290 LET K$="#" +300 LET L$="#" +310 ON I GOTO 410,420,430,440,450,460,470,480,490,500,510 +410 LET I$="A" +411 LET J$="B" +412 LET K$="C" +413 LET L$="D" +414 GOTO 600 +420 LET I$="EF" +421 LET J$="GHI" +422 LET K$="JKLM" +423 GOTO 600 +430 LET I$="ABCDEFGHIJKLM" +431 LET J$="NOPQRSTUVWXYZ" +432 LET K$="0123456789" +433 LET L$="+. -" +434 GOTO 600 +440 LET I$="EIGHTEEN POSITIONS" +441 GOTO 600 +450 LET I$="ABC" +451 LET J$="DEF" +452 LET K$="GHI" +453 LET L$="2.1E3" +454 GOTO 600 +460 LET I$="ABC " +461 LET J$=" DEF " +462 LET K$=" GHI" +463 GOTO 600 +470 LET I$="A B" +471 LET J$="C D" +472 GOTO 600 +480 LET I$="A B" +481 LET J$=" C D " +482 LET K$="E F" +483 GOTO 600 +490 LET I$="A" +491 LET J$="B,C" +492 LET K$="" +493 LET L$="D" +494 GOTO 600 +500 LET I$="ABCDEFGHIJKLM" +501 LET J$="NOPQRSTUVWXYZ" +502 LET K$="0123456789" +503 GOTO 600 +510 LET I$="!#$%&'()*+,-" +511 LET J$="./:;<=>?^_" +512 GOTO 600 +600 REM COMPARAND VALUES INITIALIZED +630 LET A$="#" +640 LET B$="#" +650 LET C$="#" +660 LET D$="#" +670 ON N GOTO 710,720,730,740 +710 READ A$ +715 GOTO 800 +720 READ A$,B$ +725 GOTO 800 +730 READ A$,B$,C$ +735 GOTO 800 +740 READ A$,B$,C$,D$ +745 GOTO 800 +800 REM TEST VALUES NOW SET +810 IF A$<>I$ THEN 900 +820 IF B$<>J$ THEN 900 +830 IF C$<>K$ THEN 900 +840 IF D$<>L$ THEN 900 +850 LET S=0 +860 GOTO 910 +900 LET S=1 +910 ON N GOTO 920,930,940,950 +920 LET B$="" +925 LET J$="" +930 LET C$="" +935 LET K$="" +940 LET D$="" +945 LET L$="" +950 REM NOW SET UP FOR PRINT +960 PRINT +970 PRINT +980 PRINT "SHOULD BE: ***";I$;J$;K$;L$;"***" +990 PRINT "ACTUAL: ***";A$;B$;C$;D$;"***" +1000 IF S=0 THEN 1100 +1010 PRINT "TEST FAILED" +1020 LET F=F+1 +1030 GOTO 250 +1100 PRINT "TEST OK" +1110 GOTO 250 +1200 PRINT +1210 PRINT +1220 IF F=0 THEN 1270 +1230 PRINT "*** TEST FAILED: ";F;" CASE(S) HANDLED IMPROPERLY. ***" +1240 GOTO 1300 +1270 PRINT "*** TEST PASSED ***" +1300 PRINT +1310 PRINT " END TEST" +1320 PRINT +1330 PRINT "END PROGRAM 93" +2010 DATA 4,"A",B,"C",D +2020 DATA 3,EF,"GHI",JKLM +2030 DATA 4,ABCDEFGHIJKLM,NOPQRSTUVWXYZ,0123456789,+. - +2040 DATA 1,EIGHTEEN POSITIONS +2050 DATA 4,ABC , DEF , GHI,2.1E3 +2060 DATA 3,"ABC "," DEF "," GHI" +2070 DATA 2, A B , C D +2080 DATA 3, A B , " C D " , E F +2090 DATA 4,A,"B,C","", D +2100 DATA 3,"ABCDEFGHIJKLM","NOPQRSTUVWXYZ","0123456789" +2110 DATA 2,"!#$%&'()*+,-","./:;<=>?^_" +2120 DATA 0 +2130 END diff --git a/NBS2/P093.OUT b/NBS2/P093.OUT new file mode 100644 index 0000000..9155af6 --- /dev/null +++ b/NBS2/P093.OUT @@ -0,0 +1,84 @@ +PROGRAM FILE 93: READ AND DATA STATEMENTS FOR STRING DATA. + ANSI STANDARD 3.2, 5.2, 14.2, 14.4 + +SECTION 93.1: READ AND DATA STATEMENTS FOR STRING DATA + +THIS SECTION TESTS THE ABILITY TO PICK UP STRING (CHARACTER) +DATA USING THE READ STATEMENT. VARIOUS SYNTACTIC VARIATIONS +ARE TESTED, ESPECIALLY FOR DATA FORMATS. + +PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT +ON THE CORRECT OPERATION OF THE STRING COMPARISON +FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE +WILL LIKELY GIVE INVALID RESULTS. + +THE VALUES FROM THE DATA STATEMENT ARE COMPARED TO THOSE +ASSIGNED TO STRING VARIABLES. THE EXPECTED AND ACTUAL +RESULTS ARE DISPLAYED, AND AN ERROR COUNT MAINTAINED. +THE READ STATEMENT IS USED WITH SEVERAL VARIABLES IN +THE VARIABLE LIST. + + BEGIN TEST + + + +SHOULD BE: ***ABCD*** +ACTUAL: ***ABCD*** +TEST OK + + +SHOULD BE: ***EFGHIJKLM*** +ACTUAL: ***EFGHIJKLM*** +TEST OK + + +SHOULD BE: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+. -*** +ACTUAL: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+. -*** +TEST OK + + +SHOULD BE: ***EIGHTEEN POSITIONS*** +ACTUAL: ***EIGHTEEN POSITIONS*** +TEST OK + + +SHOULD BE: ***ABCDEFGHI2.1E3*** +ACTUAL: ***ABCDEFGHI2.1E3*** +TEST OK + + +SHOULD BE: ***ABC DEF GHI*** +ACTUAL: ***ABC DEF GHI*** +TEST OK + + +SHOULD BE: ***A BC D*** +ACTUAL: ***A BC D*** +TEST OK + + +SHOULD BE: ***A B C D E F*** +ACTUAL: ***A B C D E F*** +TEST OK + + +SHOULD BE: ***AB,CD*** +ACTUAL: ***AB,CD*** +TEST OK + + +SHOULD BE: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*** +ACTUAL: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*** +TEST OK + + +SHOULD BE: ***!#$%&'()*+,-./:;<=>?^_*** +ACTUAL: ***!#$%&'()*+,-./:;<=>?^_*** +TEST OK + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 93 diff --git a/NBS2/P093.dif b/NBS2/P093.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P093.run b/NBS2/P093.run new file mode 100644 index 0000000..74ed758 --- /dev/null +++ b/NBS2/P093.run @@ -0,0 +1,84 @@ +PROGRAM FILE 93: READ AND DATA STATEMENTS FOR STRING DATA. + ANSI STANDARD 3.2, 5.2, 14.2, 14.4 + +SECTION 93.1: READ AND DATA STATEMENTS FOR STRING DATA + +THIS SECTION TESTS THE ABILITY TO PICK UP STRING (CHARACTER) +DATA USING THE READ STATEMENT. VARIOUS SYNTACTIC VARIATIONS +ARE TESTED, ESPECIALLY FOR DATA FORMATS. + +PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT +ON THE CORRECT OPERATION OF THE STRING COMPARISON +FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE +WILL LIKELY GIVE INVALID RESULTS. + +THE VALUES FROM THE DATA STATEMENT ARE COMPARED TO THOSE +ASSIGNED TO STRING VARIABLES. THE EXPECTED AND ACTUAL +RESULTS ARE DISPLAYED, AND AN ERROR COUNT MAINTAINED. +THE READ STATEMENT IS USED WITH SEVERAL VARIABLES IN +THE VARIABLE LIST. + + BEGIN TEST + + + +SHOULD BE: ***ABCD*** +ACTUAL: ***ABCD*** +TEST OK + + +SHOULD BE: ***EFGHIJKLM*** +ACTUAL: ***EFGHIJKLM*** +TEST OK + + +SHOULD BE: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+. -*** +ACTUAL: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+. -*** +TEST OK + + +SHOULD BE: ***EIGHTEEN POSITIONS*** +ACTUAL: ***EIGHTEEN POSITIONS*** +TEST OK + + +SHOULD BE: ***ABCDEFGHI2.1E3*** +ACTUAL: ***ABCDEFGHI2.1E3*** +TEST OK + + +SHOULD BE: ***ABC DEF GHI*** +ACTUAL: ***ABC DEF GHI*** +TEST OK + + +SHOULD BE: ***A BC D*** +ACTUAL: ***A BC D*** +TEST OK + + +SHOULD BE: ***A B C D E F*** +ACTUAL: ***A B C D E F*** +TEST OK + + +SHOULD BE: ***AB,CD*** +ACTUAL: ***AB,CD*** +TEST OK + + +SHOULD BE: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*** +ACTUAL: ***ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*** +TEST OK + + +SHOULD BE: ***!#$%&'()*+,-./:;<=>?^_*** +ACTUAL: ***!#$%&'()*+,-./:;<=>?^_*** +TEST OK + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 93 diff --git a/NBS2/P094.80 b/NBS2/P094.80 new file mode 100644 index 0000000..efc7d8b --- /dev/null +++ b/NBS2/P094.80 @@ -0,0 +1,45 @@ +PROGRAM FILE 94: READING DATA INTO SUBSCRIPTED VARIABLES. + ANSI STANDARD 14.2, 14.4 + +SECTION 94.1: READING DATA INTO SUBSCRIPTED VARIABLES. + +THIS SECTION TESTS THAT THE NUMERIC DATA CAN BE READ INTO +ARRAYS AND THAT SUBSCRIPTS ARE EVALUATED AFTER READING +INTO PREVIOUS VARIABLES. + + BEGIN TEST + +VALUES FOR A(I) +I A(I) A(I) + SHOULD BE ACTUAL + 1 1 1 + 2 299 299 + 3 199 199 + 4 4 4 + 5 5 5 + +*** TEST FOR ONE-DIMENSIONAL ARRAY PASSED. *** + +VALUES FOR C(I,J) +I= J=1 J=2 J=3 + 1 SHOULD BE: 1001 1002 1003 + ACTUAL: 1001 1002 1003 + + 2 SHOULD BE: 499 2002 2003 + ACTUAL: 499 2002 2003 + + 3 SHOULD BE: 3001 3002 3003 + ACTUAL: 3001 3002 3003 + + 4 SHOULD BE: 4001 399 4003 + ACTUAL: 4001 399 4003 + + 5 SHOULD BE: 5001 5002 5003 + ACTUAL: 5001 5002 5003 + + +*** TEST FOR TWO-DIMENSIONAL ARRAY PASSED. *** + + END TEST + +END PROGRAM 94 diff --git a/NBS2/P094.BAS b/NBS2/P094.BAS new file mode 100644 index 0000000..b7ffe51 --- /dev/null +++ b/NBS2/P094.BAS @@ -0,0 +1,66 @@ +10 PRINT "PROGRAM FILE 94: READING DATA INTO SUBSCRIPTED VARIABLES." +20 PRINT " ANSI STANDARD 14.2, 14.4" +30 PRINT +40 PRINT "SECTION 94.1: READING DATA INTO SUBSCRIPTED VARIABLES." +50 PRINT +60 PRINT "THIS SECTION TESTS THAT THE NUMERIC DATA CAN BE READ INTO" +70 PRINT "ARRAYS AND THAT SUBSCRIPTS ARE EVALUATED AFTER READING" +80 PRINT "INTO PREVIOUS VARIABLES." +90 PRINT +100 PRINT " BEGIN TEST" +110 PRINT +120 REM ARRAYS A AND C ARE GIVEN DATA THROUGH THE DATA AND READ +130 REM AND COMPARED WITH B AND D WHICH ARE ASSIGNED THE RIGHT +140 REM VALUES. IF THE ARRAYS MATCH TEST PASSES. +150 FOR I=1 TO 5 +160 LET A(I)=I +170 LET B(I)=I +180 FOR J=1 TO 3 +190 LET C(I,J)=1000*I+J +200 LET D(I,J)=1000*I+J +210 NEXT J +220 NEXT I +230 LET J=2 +240 READ I,A(I),I,A(I),I,C(I,J),J,I,C(I,J) +250 DATA 3,199,2,299,4,399,1,2,499 +260 LET B(3)=199 +270 LET B(2)=299 +280 LET D(4,2)=399 +290 LET D(2,1)=499 +300 PRINT "VALUES FOR A(I)" +310 PRINT "I","A(I)","A(I)" +320 PRINT ,"SHOULD BE","ACTUAL" +330 LET M$="PASSED. ***" +340 FOR I=1 TO 5 +350 LET S$=" " +360 IF A(I)=B(I) THEN 390 +370 LET M$="FAILED. ***" +380 LET S$=" ***" +390 PRINT I,B(I),A(I),S$ +400 NEXT I +410 PRINT +420 PRINT "*** TEST FOR ONE-DIMENSIONAL ARRAY ";M$ +430 LET M$="PASSED. ***" +440 PRINT +450 PRINT "VALUES FOR C(I,J)" +460 PRINT "I=",,"J=1","J=2","J=3" +470 FOR I=1 TO 5 +480 PRINT I,"SHOULD BE:",D(I,1),D(I,2),D(I,3) +490 PRINT ,"ACTUAL:",C(I,1),C(I,2),C(I,3) +500 PRINT ,, +510 FOR J=1 TO 3 +520 IF C(I,J)=D(I,J) THEN 560 +530 LET M$="FAILED. ***" +540 PRINT " ***", +550 GOTO 570 +560 PRINT " ", +570 NEXT J +580 PRINT +590 NEXT I +600 PRINT +610 PRINT "*** TEST FOR TWO-DIMENSIONAL ARRAY ";M$ +620 PRINT +630 PRINT " END TEST" +640 PRINT +650 PRINT "END PROGRAM 94" +660 END diff --git a/NBS2/P094.OUT b/NBS2/P094.OUT new file mode 100644 index 0000000..7295fcd --- /dev/null +++ b/NBS2/P094.OUT @@ -0,0 +1,45 @@ +PROGRAM FILE 94: READING DATA INTO SUBSCRIPTED VARIABLES. + ANSI STANDARD 14.2, 14.4 + +SECTION 94.1: READING DATA INTO SUBSCRIPTED VARIABLES. + +THIS SECTION TESTS THAT THE NUMERIC DATA CAN BE READ INTO +ARRAYS AND THAT SUBSCRIPTS ARE EVALUATED AFTER READING +INTO PREVIOUS VARIABLES. + + BEGIN TEST + +VALUES FOR A(I) +I A(I) A(I) + SHOULD BE ACTUAL + 1 1 1 + 2 299 299 + 3 199 199 + 4 4 4 + 5 5 5 + +*** TEST FOR ONE-DIMENSIONAL ARRAY PASSED. *** + +VALUES FOR C(I,J) +I= J=1 J=2 J=3 + 1 SHOULD BE: 1001 1002 1003 + ACTUAL: 1001 1002 1003 + + 2 SHOULD BE: 499 2002 2003 + ACTUAL: 499 2002 2003 + + 3 SHOULD BE: 3001 3002 3003 + ACTUAL: 3001 3002 3003 + + 4 SHOULD BE: 4001 399 4003 + ACTUAL: 4001 399 4003 + + 5 SHOULD BE: 5001 5002 5003 + ACTUAL: 5001 5002 5003 + + +*** TEST FOR TWO-DIMENSIONAL ARRAY PASSED. *** + + END TEST + +END PROGRAM 94 diff --git a/NBS2/P094.dif b/NBS2/P094.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P094.run b/NBS2/P094.run new file mode 100644 index 0000000..efc7d8b --- /dev/null +++ b/NBS2/P094.run @@ -0,0 +1,45 @@ +PROGRAM FILE 94: READING DATA INTO SUBSCRIPTED VARIABLES. + ANSI STANDARD 14.2, 14.4 + +SECTION 94.1: READING DATA INTO SUBSCRIPTED VARIABLES. + +THIS SECTION TESTS THAT THE NUMERIC DATA CAN BE READ INTO +ARRAYS AND THAT SUBSCRIPTS ARE EVALUATED AFTER READING +INTO PREVIOUS VARIABLES. + + BEGIN TEST + +VALUES FOR A(I) +I A(I) A(I) + SHOULD BE ACTUAL + 1 1 1 + 2 299 299 + 3 199 199 + 4 4 4 + 5 5 5 + +*** TEST FOR ONE-DIMENSIONAL ARRAY PASSED. *** + +VALUES FOR C(I,J) +I= J=1 J=2 J=3 + 1 SHOULD BE: 1001 1002 1003 + ACTUAL: 1001 1002 1003 + + 2 SHOULD BE: 499 2002 2003 + ACTUAL: 499 2002 2003 + + 3 SHOULD BE: 3001 3002 3003 + ACTUAL: 3001 3002 3003 + + 4 SHOULD BE: 4001 399 4003 + ACTUAL: 4001 399 4003 + + 5 SHOULD BE: 5001 5002 5003 + ACTUAL: 5001 5002 5003 + + +*** TEST FOR TWO-DIMENSIONAL ARRAY PASSED. *** + + END TEST + +END PROGRAM 94 diff --git a/NBS2/P095.80 b/NBS2/P095.80 new file mode 100644 index 0000000..b1f3dfb --- /dev/null +++ b/NBS2/P095.80 @@ -0,0 +1,81 @@ +PROGRAM FILE 95: GENERAL USE OF THE READ, DATA, + AND RESTORE STATEMENTS. + ANSI STANDARD 14.2, 14.4 + +SECTION 95.1: GENERAL SYNTAX AND SEMANTICS OF READ AND DATA + +THIS SECTION EXERCISES SOME OF THE GENERAL CAPABILITIES +AND PROPERTIES OF THE READ AND DATA STATEMENTS, AS LISTED: + 1) READ AND DATA CAN MIX STRING AND NUMERIC DATA + 2) CONTROL FALLS THROUGH DATA STATEMENTS WITHOUT EFFECT + 3) DATA STATEMENTS MAY BE SCATTERED THROUGHOUT SOURCE + 4) READ AND DATA LISTS CAN OVERLAP + 5) READ CAN ACCESS DATA ANYWHERE IN SOURCE + + BEGIN TEST + + +SHOULD BE: 1 A 2 B +ACTUAL: 1 A 2 B +READ OK + +SHOULD BE: 3 4 5 C +ACTUAL: 3 4 5 C +READ OK + +SHOULD BE: D E F 6 7 + 8 +ACTUAL: D E F 6 7 + 8 +READ OK + +SHOULD BE: 9 +ACTUAL: 9 +READ OK + +SHOULD BE: 10 11 +ACTUAL: 10 11 +READ OK + +*** TEST PASSED *** + + END TEST + +SECTION 95.2: RESTORE STATEMENT + +THIS SECTION TESTS THE CAPABILITY OF THE RESTORE STATEMENT +TO ENABLE READING FROM THE BEGINNING OF THE DATA SEQUENCE. +FURTHERMORE, DATA VALUES WHICH WERE ORIGINALLY READ AS +NUMERIC MAY BE SUBSEQUENTLY READ AS STRINGS, AND +VICE-VERSA, AS LONG AS DATA-TYPE IS COMPATIBLE WITH +VARIABLE-TYPE. + + BEGIN TEST + +EXECUTE FIRST RESTORE + +SHOULD BE: 1 A 2 B 3 +4 5 +ACTUAL: 1 A 2 B 3 +4 5 +READ OK + +SHOULD BE: C D E F 6 + 7 8 +ACTUAL: C D E F 6 + 7 8 +READ OK + +EXECUTE SECOND RESTORE + + +SHOULD BE: 1 A 2 B 3 +ACTUAL: 1 A 2 B 3 +READ OK + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 95 diff --git a/NBS2/P095.BAS b/NBS2/P095.BAS new file mode 100644 index 0000000..4bae92a --- /dev/null +++ b/NBS2/P095.BAS @@ -0,0 +1,178 @@ +10 PRINT "PROGRAM FILE 95: GENERAL USE OF THE READ, DATA," +15 PRINT " AND RESTORE STATEMENTS." +20 PRINT " ANSI STANDARD 14.2, 14.4" +30 PRINT +40 REM THE FOLLOWING LINES DESCRIBE THE DATA AND READ STRUCTURE OF +50 REM THIS PROGRAM. LINE #1 REPRESENTS THE DATA STRING. LINE #2 +60 REM REPRESENTS THE FIRST SERIES OF READ STATEMENTS AND THE TYPE +70 REM (STRING OR NUMERIC) OF VARIABLE. LINE #3 REPRESENTS THE +80 REM SECOND SERIES OF READ STATEMENTS, AFTER THE FIRST RESTORE, +90 REM AND LINE #4, THE THIRD SERIES OF READS. SLASHES DELIMIT +100 REM THE RANGE OF INDIVIDUAL STATEMENTS +110 REM +120 REM LINE #1: 1 A 2 B 3 4/5 C D E/F 6/7 8 9 10/11 +130 REM LINE #2: N S N S/N N N S/S S S S S N/S/ N N +140 REM LINE #3: S S S S S S S/S S S S N N S +150 REM LINE #4: N S S S N +160 REM +170 PRINT "SECTION 95.1: GENERAL SYNTAX AND SEMANTICS OF READ AND DATA" +180 PRINT +190 PRINT "THIS SECTION EXERCISES SOME OF THE GENERAL CAPABILITIES" +200 PRINT "AND PROPERTIES OF THE READ AND DATA STATEMENTS, AS LISTED:" +210 PRINT " 1) READ AND DATA CAN MIX STRING AND NUMERIC DATA" +220 PRINT " 2) CONTROL FALLS THROUGH DATA STATEMENTS WITHOUT EFFECT" +230 PRINT " 3) DATA STATEMENTS MAY BE SCATTERED THROUGHOUT SOURCE" +240 PRINT " 4) READ AND DATA LISTS CAN OVERLAP" +250 PRINT " 5) READ CAN ACCESS DATA ANYWHERE IN SOURCE" +260 PRINT +270 PRINT " BEGIN TEST" +280 PRINT +290 LET F=0 +300 LET W$="READ OK" +310 LET X$="READ FAILED" +320 LET Y$="SHOULD BE:" +330 LET Z$="ACTUAL: " +340 DATA 1,A,2,B,3,4 +350 READ A,A$,B,B$ +360 PRINT +370 PRINT Y$,1,"A",2,"B" +380 PRINT Z$,A,A$,B,B$ +390 IF A<>1 THEN 450 +400 IF A$<>"A" THEN 450 +410 IF B<>2 THEN 450 +420 IF B$<>"B" THEN 450 +430 PRINT W$ +440 GOTO 470 +450 PRINT X$ +460 LET F=F+1 +470 READ A,B,C,A$ +480 PRINT +490 PRINT Y$,3,4,5,"C" +500 PRINT Z$,A,B,C,A$ +510 IF A<>3 THEN 570 +520 IF B<>4 THEN 570 +530 IF C<>5 THEN 570 +540 IF A$<>"C" THEN 570 +550 PRINT W$ +560 GOTO 590 +570 PRINT X$ +580 LET F=F+1 +590 GOTO 620 +600 REM TEST BRANCHING TO A DATA STATEMENT +610 DATA 5,C,D,E +620 DATA F,6 +630 DATA 7,8,9,10 +640 READ A$,B$,C$,D$,E$,A +650 PRINT +660 PRINT Y$,"D","E","F","6","7",8 +670 PRINT Z$,A$,B$,C$,D$,E$,A +680 IF A$<>"D" THEN 760 +690 IF B$<>"E" THEN 760 +700 IF C$<>"F" THEN 760 +710 IF D$<>"6" THEN 760 +720 IF E$<>"7" THEN 760 +730 IF A<>8 THEN 760 +740 PRINT W$ +750 GOTO 780 +760 PRINT X$ +770 LET F=F+1 +780 READ A$ +790 PRINT +800 PRINT Y$,"9" +810 PRINT Z$,A$ +820 IF A$<>"9" THEN 850 +830 PRINT W$ +840 GOTO 870 +850 PRINT X$ +860 LET F=F+1 +870 READ A,B +880 PRINT +890 PRINT Y$,10,11 +900 PRINT Z$,A,B +910 IF A<>10 THEN 950 +920 IF B<>11 THEN 950 +930 PRINT W$ +940 GOTO 970 +950 PRINT X$ +960 LET F=F+1 +970 DATA 11 +980 PRINT +990 IF F=0 THEN 1020 +1000 PRINT "*** TEST FAILED IN ";F;" CASE(S). ***" +1010 GOTO 1030 +1020 PRINT "*** TEST PASSED ***" +1030 PRINT +1040 PRINT " END TEST" +1050 PRINT +1060 PRINT "SECTION 95.2: RESTORE STATEMENT" +1070 PRINT +1080 PRINT "THIS SECTION TESTS THE CAPABILITY OF THE RESTORE STATEMENT" +1090 PRINT "TO ENABLE READING FROM THE BEGINNING OF THE DATA SEQUENCE." +1100 PRINT "FURTHERMORE, DATA VALUES WHICH WERE ORIGINALLY READ AS" +1110 PRINT "NUMERIC MAY BE SUBSEQUENTLY READ AS STRINGS, AND " +1120 PRINT "VICE-VERSA, AS LONG AS DATA-TYPE IS COMPATIBLE WITH" +1130 PRINT "VARIABLE-TYPE." +1140 PRINT +1150 PRINT " BEGIN TEST" +1160 LET F=0 +1170 PRINT +1180 PRINT "EXECUTE FIRST RESTORE" +1190 RESTORE +1200 READ A$,B$,C$,D$,E$,F$,G$ +1210 PRINT +1220 PRINT Y$,"1","A","2","B","3","4","5" +1230 PRINT Z$,A$,B$,C$,D$,E$,F$,G$ +1240 IF A$<>"1" THEN 1330 +1250 IF B$<>"A" THEN 1330 +1260 IF C$<>"2" THEN 1330 +1270 IF D$<>"B" THEN 1330 +1280 IF E$<>"3" THEN 1330 +1290 IF F$<>"4" THEN 1330 +1300 IF G$<>"5" THEN 1330 +1310 PRINT W$ +1320 GOTO 1350 +1330 PRINT X$ +1340 LET F=F+1 +1350 READ A$,B$,C$,D$,A,B,E$ +1360 PRINT +1370 PRINT Y$,"C","D","E","F",6,7,"8" +1380 PRINT Z$,A$,B$,C$,D$,A,B,E$ +1390 IF A$<>"C" THEN 1480 +1400 IF B$<>"D" THEN 1480 +1410 IF C$<>"E" THEN 1480 +1420 IF D$<>"F" THEN 1480 +1430 IF A<>6 THEN 1480 +1440 IF B<>7 THEN 1480 +1450 IF E$<>"8" THEN 1480 +1460 PRINT W$ +1470 GOTO 1500 +1480 PRINT X$ +1490 LET F=F+1 +1500 PRINT +1510 PRINT "EXECUTE SECOND RESTORE" +1520 RESTORE +1530 PRINT +1540 READ A,A$,B$,C$,B +1550 PRINT +1560 PRINT Y$,1,"A","2","B",3 +1570 PRINT Z$,A,A$,B$,C$,B +1580 IF A<>1 THEN 1650 +1590 IF A$<>"A" THEN 1650 +1600 IF B$<>"2" THEN 1650 +1610 IF C$<>"B" THEN 1650 +1620 IF B<>3 THEN 1650 +1630 PRINT W$ +1640 GOTO 1670 +1650 PRINT X$ +1660 LET F=F+1 +1670 PRINT +1680 PRINT +1690 IF F=0 THEN 1720 +1700 PRINT "*** TEST FAILED IN ";F;" CASE(S). ***" +1710 GOTO 1730 +1720 PRINT "*** TEST PASSED ***" +1730 PRINT +1740 PRINT " END TEST" +1750 PRINT +1760 PRINT "END PROGRAM 95" +1770 END diff --git a/NBS2/P095.OUT b/NBS2/P095.OUT new file mode 100644 index 0000000..8fa1bf8 --- /dev/null +++ b/NBS2/P095.OUT @@ -0,0 +1,81 @@ +PROGRAM FILE 95: GENERAL USE OF THE READ, DATA, + AND RESTORE STATEMENTS. + ANSI STANDARD 14.2, 14.4 + +SECTION 95.1: GENERAL SYNTAX AND SEMANTICS OF READ AND DATA + +THIS SECTION EXERCISES SOME OF THE GENERAL CAPABILITIES +AND PROPERTIES OF THE READ AND DATA STATEMENTS, AS LISTED: + 1) READ AND DATA CAN MIX STRING AND NUMERIC DATA + 2) CONTROL FALLS THROUGH DATA STATEMENTS WITHOUT EFFECT + 3) DATA STATEMENTS MAY BE SCATTERED THROUGHOUT SOURCE + 4) READ AND DATA LISTS CAN OVERLAP + 5) READ CAN ACCESS DATA ANYWHERE IN SOURCE + + BEGIN TEST + + +SHOULD BE: 1 A 2 B +ACTUAL: 1 A 2 B +READ OK + +SHOULD BE: 3 4 5 C +ACTUAL: 3 4 5 C +READ OK + +SHOULD BE: D E F 6 7 + 8 +ACTUAL: D E F 6 7 + 8 +READ OK + +SHOULD BE: 9 +ACTUAL: 9 +READ OK + +SHOULD BE: 10 11 +ACTUAL: 10 11 +READ OK + +*** TEST PASSED *** + + END TEST + +SECTION 95.2: RESTORE STATEMENT + +THIS SECTION TESTS THE CAPABILITY OF THE RESTORE STATEMENT +TO ENABLE READING FROM THE BEGINNING OF THE DATA SEQUENCE. +FURTHERMORE, DATA VALUES WHICH WERE ORIGINALLY READ AS +NUMERIC MAY BE SUBSEQUENTLY READ AS STRINGS, AND +VICE-VERSA, AS LONG AS DATA-TYPE IS COMPATIBLE WITH +VARIABLE-TYPE. + + BEGIN TEST + +EXECUTE FIRST RESTORE + +SHOULD BE: 1 A 2 B 3 +4 5 +ACTUAL: 1 A 2 B 3 +4 5 +READ OK + +SHOULD BE: C D E F 6 + 7 8 +ACTUAL: C D E F 6 + 7 8 +READ OK + +EXECUTE SECOND RESTORE + + +SHOULD BE: 1 A 2 B 3 +ACTUAL: 1 A 2 B 3 +READ OK + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 95 diff --git a/NBS2/P095.dif b/NBS2/P095.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P095.run b/NBS2/P095.run new file mode 100644 index 0000000..b1f3dfb --- /dev/null +++ b/NBS2/P095.run @@ -0,0 +1,81 @@ +PROGRAM FILE 95: GENERAL USE OF THE READ, DATA, + AND RESTORE STATEMENTS. + ANSI STANDARD 14.2, 14.4 + +SECTION 95.1: GENERAL SYNTAX AND SEMANTICS OF READ AND DATA + +THIS SECTION EXERCISES SOME OF THE GENERAL CAPABILITIES +AND PROPERTIES OF THE READ AND DATA STATEMENTS, AS LISTED: + 1) READ AND DATA CAN MIX STRING AND NUMERIC DATA + 2) CONTROL FALLS THROUGH DATA STATEMENTS WITHOUT EFFECT + 3) DATA STATEMENTS MAY BE SCATTERED THROUGHOUT SOURCE + 4) READ AND DATA LISTS CAN OVERLAP + 5) READ CAN ACCESS DATA ANYWHERE IN SOURCE + + BEGIN TEST + + +SHOULD BE: 1 A 2 B +ACTUAL: 1 A 2 B +READ OK + +SHOULD BE: 3 4 5 C +ACTUAL: 3 4 5 C +READ OK + +SHOULD BE: D E F 6 7 + 8 +ACTUAL: D E F 6 7 + 8 +READ OK + +SHOULD BE: 9 +ACTUAL: 9 +READ OK + +SHOULD BE: 10 11 +ACTUAL: 10 11 +READ OK + +*** TEST PASSED *** + + END TEST + +SECTION 95.2: RESTORE STATEMENT + +THIS SECTION TESTS THE CAPABILITY OF THE RESTORE STATEMENT +TO ENABLE READING FROM THE BEGINNING OF THE DATA SEQUENCE. +FURTHERMORE, DATA VALUES WHICH WERE ORIGINALLY READ AS +NUMERIC MAY BE SUBSEQUENTLY READ AS STRINGS, AND +VICE-VERSA, AS LONG AS DATA-TYPE IS COMPATIBLE WITH +VARIABLE-TYPE. + + BEGIN TEST + +EXECUTE FIRST RESTORE + +SHOULD BE: 1 A 2 B 3 +4 5 +ACTUAL: 1 A 2 B 3 +4 5 +READ OK + +SHOULD BE: C D E F 6 + 7 8 +ACTUAL: C D E F 6 + 7 8 +READ OK + +EXECUTE SECOND RESTORE + + +SHOULD BE: 1 A 2 B 3 +ACTUAL: 1 A 2 B 3 +READ OK + + +*** TEST PASSED *** + + END TEST + +END PROGRAM 95 diff --git a/NBS2/P096.80 b/NBS2/P096.80 new file mode 100644 index 0000000..35c57ed --- /dev/null +++ b/NBS2/P096.80 @@ -0,0 +1,24 @@ +PROGRAM FILE 96: EXCEPTION - NUMERIC UNDERFLOW WHEN + READING DATA CAUSES REPLACEMENT BY ZERO. + ANSI STANDARD 5.6, 14.4 + +SECTION 96.1: EXCEPTION - NUMERIC UNDERFLOW WHEN + READING DATA CAUSES REPLACEMENT BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT + + BEGIN TEST. + +RESULTING VALUE = 0 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 96 diff --git a/NBS2/P096.BAS b/NBS2/P096.BAS new file mode 100644 index 0000000..7424152 --- /dev/null +++ b/NBS2/P096.BAS @@ -0,0 +1,31 @@ +10 PRINT "PROGRAM FILE 96: EXCEPTION - NUMERIC UNDERFLOW WHEN" +20 PRINT " READING DATA CAUSES REPLACEMENT BY ZERO." +30 PRINT " ANSI STANDARD 5.6, 14.4" +40 PRINT +50 PRINT "SECTION 96.1: EXCEPTION - NUMERIC UNDERFLOW WHEN" +60 PRINT " READING DATA CAUSES REPLACEMENT BY ZERO." +70 PRINT +80 PRINT "TO PASS THIS TEST:" +90 PRINT +100 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE" +110 PRINT " DISPLAYED (NOT MANDATORY), AND" +120 PRINT +130 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +140 PRINT " OF THE CONSTANT" +150 PRINT +160 PRINT " BEGIN TEST." +170 PRINT +180 DATA 1E-99999 +190 READ A +200 PRINT "RESULTING VALUE =";A +210 PRINT +220 IF A=0 THEN 260 +230 PRINT "RESULTING VALUE <> 0. IF VALUE <> 1E-99999, THEN," +240 PRINT "*** TEST FAILED ***" +250 GOTO 270 +260 PRINT "*** TEST PASSED ***" +270 PRINT +280 PRINT " END TEST." +290 PRINT +300 PRINT "END PROGRAM 96" +310 END diff --git a/NBS2/P096.OUT b/NBS2/P096.OUT new file mode 100644 index 0000000..13fd9a6 --- /dev/null +++ b/NBS2/P096.OUT @@ -0,0 +1,24 @@ +PROGRAM FILE 96: EXCEPTION - NUMERIC UNDERFLOW WHEN + READING DATA CAUSES REPLACEMENT BY ZERO. + ANSI STANDARD 5.6, 14.4 + +SECTION 96.1: EXCEPTION - NUMERIC UNDERFLOW WHEN + READING DATA CAUSES REPLACEMENT BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT + + BEGIN TEST. + +RESULTING VALUE = 0 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 96 diff --git a/NBS2/P096.dif b/NBS2/P096.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P096.run b/NBS2/P096.run new file mode 100644 index 0000000..35c57ed --- /dev/null +++ b/NBS2/P096.run @@ -0,0 +1,24 @@ +PROGRAM FILE 96: EXCEPTION - NUMERIC UNDERFLOW WHEN + READING DATA CAUSES REPLACEMENT BY ZERO. + ANSI STANDARD 5.6, 14.4 + +SECTION 96.1: EXCEPTION - NUMERIC UNDERFLOW WHEN + READING DATA CAUSES REPLACEMENT BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE CONSTANT + + BEGIN TEST. + +RESULTING VALUE = 0 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 96 diff --git a/NBS2/P097.80 b/NBS2/P097.80 new file mode 100644 index 0000000..810b681 --- /dev/null +++ b/NBS2/P097.80 @@ -0,0 +1,20 @@ +PROGRAM FILE 97: EXCEPTION - INSUFFICIENT DATA FOR READ. + ANSI STANDARD 14.5 + +SECTION 97.1: EXCEPTION - INSUFFICIENT DATA FOR READ. + +THIS TEST CAUSES A READ OF THREE VARIABLES WHEN ONLY TWO +DATA ARE AVAILABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO EXECUTE READ - + +ERROR in line 230: Out of DATA diff --git a/NBS2/P097.BAS b/NBS2/P097.BAS new file mode 100644 index 0000000..5a042a4 --- /dev/null +++ b/NBS2/P097.BAS @@ -0,0 +1,35 @@ +10 PRINT "PROGRAM FILE 97: EXCEPTION - INSUFFICIENT DATA FOR READ." +20 PRINT " ANSI STANDARD 14.5" +30 PRINT +40 PRINT "SECTION 97.1: EXCEPTION - INSUFFICIENT DATA FOR READ." +50 PRINT +60 PRINT "THIS TEST CAUSES A READ OF THREE VARIABLES WHEN ONLY TWO" +70 PRINT "DATA ARE AVAILABLE." +80 PRINT +90 PRINT "TO PASS THIS TEST:" +100 PRINT +110 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +120 PRINT " DISPLAYED, AND" +130 PRINT +140 PRINT " 2) THE PROGRAM MUST TERMINATE." +150 PRINT +160 PRINT " BEGIN TEST" +170 PRINT +180 DATA 5,6 +190 LET A=1 +200 LET B=2 +210 LET C=3 +220 PRINT "ABOUT TO EXECUTE READ - " +230 READ A,B,C +240 PRINT +245 PRINT "*** TEST FAILED ***" +260 PRINT "A, B, AND C WERE INITIALIZED TO 1, 2, AND 3" +270 PRINT "RESPECTIVELY, AND THEN 'READ A,B,C' WAS ATTEMPTED" +280 PRINT "FROM A DATA-LIST CONTAINING 5,6. RESULTS BELOW:" +290 PRINT +300 PRINT "A=";A;" B=";B;" C=";C +310 PRINT +320 PRINT " END TEST" +330 PRINT +340 PRINT "END PROGRAM 97" +350 END diff --git a/NBS2/P097.OUT b/NBS2/P097.OUT new file mode 100644 index 0000000..eca0f6b --- /dev/null +++ b/NBS2/P097.OUT @@ -0,0 +1,20 @@ +PROGRAM FILE 97: EXCEPTION - INSUFFICIENT DATA FOR READ. + ANSI STANDARD 14.5 + +SECTION 97.1: EXCEPTION - INSUFFICIENT DATA FOR READ. + +THIS TEST CAUSES A READ OF THREE VARIABLES WHEN ONLY TWO +DATA ARE AVAILABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO EXECUTE READ - + +ERROR in line 230: Out of DATA diff --git a/NBS2/P097.dif b/NBS2/P097.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P097.run b/NBS2/P097.run new file mode 100644 index 0000000..810b681 --- /dev/null +++ b/NBS2/P097.run @@ -0,0 +1,20 @@ +PROGRAM FILE 97: EXCEPTION - INSUFFICIENT DATA FOR READ. + ANSI STANDARD 14.5 + +SECTION 97.1: EXCEPTION - INSUFFICIENT DATA FOR READ. + +THIS TEST CAUSES A READ OF THREE VARIABLES WHEN ONLY TWO +DATA ARE AVAILABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO EXECUTE READ - + +ERROR in line 230: Out of DATA diff --git a/NBS2/P098.80 b/NBS2/P098.80 new file mode 100644 index 0000000..892b6c3 --- /dev/null +++ b/NBS2/P098.80 @@ -0,0 +1,22 @@ +PROGRAM FILE 98: EXCEPTION - READING UNQUOTED STRING + DATA INTO A NUMERIC VARIABLE. + ANSI STANDARD 14.5 + +SECTION 98.1: EXCEPTION - READING UNQUOTED STRING + DATA INTO A NUMERIC VARIABLE. + +THIS TEST CAUSES A READ TO BE ATTEMPTED FROM STRING-TYPE +DATA INTO A NUMERIC VARIABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO READ - + +ERROR in line 290: Type Mismatch diff --git a/NBS2/P098.BAS b/NBS2/P098.BAS new file mode 100644 index 0000000..022844a --- /dev/null +++ b/NBS2/P098.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 98: EXCEPTION - READING UNQUOTED STRING" +15 PRINT " DATA INTO A NUMERIC VARIABLE." +20 PRINT " ANSI STANDARD 14.5" +30 PRINT +40 PRINT "SECTION 98.1: EXCEPTION - READING UNQUOTED STRING" +50 PRINT " DATA INTO A NUMERIC VARIABLE." +60 PRINT +70 PRINT "THIS TEST CAUSES A READ TO BE ATTEMPTED FROM STRING-TYPE" +80 PRINT "DATA INTO A NUMERIC VARIABLE." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE." +200 PRINT +210 PRINT " BEGIN TEST" +220 PRINT +230 LET A=1 +240 LET B=2 +250 LET C=3 +260 REM DATA 5,6,2D3 +265 DATA 5,6,2Z3 +270 PRINT "ABOUT TO READ -" +290 READ A,B,C +300 PRINT +310 PRINT "*** TEST FAILED ***" +320 PRINT "VARIABLES A,B, AND C WERE INITIALIZED TO 1, 2, AND 3," +330 PRINT "RESPECTIVELY, AND THEN READ INTO FROM A DATA-LIST" +340 PRINT "CONTAINING 5, 6, AND '2D3'. RESULTS BELOW:" +350 PRINT +360 PRINT "A=";A;" B=";B;" C=";C +370 PRINT +380 PRINT " END TEST" +390 PRINT +400 PRINT "END PROGRAM 98" +410 END diff --git a/NBS2/P098.OUT b/NBS2/P098.OUT new file mode 100644 index 0000000..0301e42 --- /dev/null +++ b/NBS2/P098.OUT @@ -0,0 +1,22 @@ +PROGRAM FILE 98: EXCEPTION - READING UNQUOTED STRING + DATA INTO A NUMERIC VARIABLE. + ANSI STANDARD 14.5 + +SECTION 98.1: EXCEPTION - READING UNQUOTED STRING + DATA INTO A NUMERIC VARIABLE. + +THIS TEST CAUSES A READ TO BE ATTEMPTED FROM STRING-TYPE +DATA INTO A NUMERIC VARIABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO READ - + +ERROR in line 290: Type Mismatch diff --git a/NBS2/P098.dif b/NBS2/P098.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P098.run b/NBS2/P098.run new file mode 100644 index 0000000..892b6c3 --- /dev/null +++ b/NBS2/P098.run @@ -0,0 +1,22 @@ +PROGRAM FILE 98: EXCEPTION - READING UNQUOTED STRING + DATA INTO A NUMERIC VARIABLE. + ANSI STANDARD 14.5 + +SECTION 98.1: EXCEPTION - READING UNQUOTED STRING + DATA INTO A NUMERIC VARIABLE. + +THIS TEST CAUSES A READ TO BE ATTEMPTED FROM STRING-TYPE +DATA INTO A NUMERIC VARIABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO READ - + +ERROR in line 290: Type Mismatch diff --git a/NBS2/P099.80 b/NBS2/P099.80 new file mode 100644 index 0000000..c9aab10 --- /dev/null +++ b/NBS2/P099.80 @@ -0,0 +1,22 @@ +PROGRAM FILE 99: EXCEPTION - READING QUOTED STRING + DATA INTO A NUMERIC VARIABLE. + ANSI STANDARD 14.5 + +SECTION 99.1: EXCEPTION - READING QUOTED STRING + DATA INTO A NUMERIC VARIABLE. + +THIS TEST CAUSES A READ TO BE ATTEMPTED FROM STRING-TYPE +DATA INTO A NUMERIC VARIABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO READ - + +ERROR in line 290: Type mismatch diff --git a/NBS2/P099.BAS b/NBS2/P099.BAS new file mode 100644 index 0000000..89f7da7 --- /dev/null +++ b/NBS2/P099.BAS @@ -0,0 +1,37 @@ +10 PRINT "PROGRAM FILE 99: EXCEPTION - READING QUOTED STRING" +15 PRINT " DATA INTO A NUMERIC VARIABLE." +20 PRINT " ANSI STANDARD 14.5" +30 PRINT +40 PRINT "SECTION 99.1: EXCEPTION - READING QUOTED STRING" +50 PRINT " DATA INTO A NUMERIC VARIABLE." +60 PRINT +70 PRINT "THIS TEST CAUSES A READ TO BE ATTEMPTED FROM STRING-TYPE" +80 PRINT "DATA INTO A NUMERIC VARIABLE." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE." +200 PRINT +210 PRINT " BEGIN TEST" +220 PRINT +230 LET A=1 +240 LET B=2 +250 LET C=3 +260 DATA 5,6,"7" +270 PRINT "ABOUT TO READ -" +290 READ A,B,C +300 PRINT +310 PRINT "*** TEST FAILED ***" +320 PRINT "VARIABLES A, B, AND C WERE INITIALIZED TO 1, 2, AND 3," +330 PRINT "RESPECTIVELY, AND THEN READ INTO FROM A DATA-LIST" +340 PRINT "CONTAINING 5, 6, AND A QUOTED '7'. RESULTS BELOW:" +350 PRINT +360 PRINT "A=";A;" B=";B;" C=";C +370 PRINT +380 PRINT " END TEST" +390 PRINT +400 PRINT "END PROGRAM 99" +410 END diff --git a/NBS2/P099.OUT b/NBS2/P099.OUT new file mode 100644 index 0000000..a508ad7 --- /dev/null +++ b/NBS2/P099.OUT @@ -0,0 +1,22 @@ +PROGRAM FILE 99: EXCEPTION - READING QUOTED STRING + DATA INTO A NUMERIC VARIABLE. + ANSI STANDARD 14.5 + +SECTION 99.1: EXCEPTION - READING QUOTED STRING + DATA INTO A NUMERIC VARIABLE. + +THIS TEST CAUSES A READ TO BE ATTEMPTED FROM STRING-TYPE +DATA INTO A NUMERIC VARIABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO READ - + +ERROR in line 290: Type mismatch diff --git a/NBS2/P099.dif b/NBS2/P099.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P099.run b/NBS2/P099.run new file mode 100644 index 0000000..c9aab10 --- /dev/null +++ b/NBS2/P099.run @@ -0,0 +1,22 @@ +PROGRAM FILE 99: EXCEPTION - READING QUOTED STRING + DATA INTO A NUMERIC VARIABLE. + ANSI STANDARD 14.5 + +SECTION 99.1: EXCEPTION - READING QUOTED STRING + DATA INTO A NUMERIC VARIABLE. + +THIS TEST CAUSES A READ TO BE ATTEMPTED FROM STRING-TYPE +DATA INTO A NUMERIC VARIABLE. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE. + + BEGIN TEST + +ABOUT TO READ - + +ERROR in line 290: Type mismatch diff --git a/NBS2/P100.80 b/NBS2/P100.80 new file mode 100644 index 0000000..2719700 --- /dev/null +++ b/NBS2/P100.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 100: EXCEPTION - STRING OVERFLOW ON READ. + ANSI STANDARD 14.5 + +SECTION 100.1 EXCEPTION - STRING OVERFLOW ON READ. + +THIS TEST READS A LONG STRING (65 CHARACTERS) INTO A +VARIABLE. IN ORDER TO PASS, THE PROCESSOR MUST EITHER: + +1) CORRECTLY ACCEPT THE STRING AND RETAIN ITS VALUE IN + THE VARIABLE, AS DEMONSTRATED IN THE PRINTING, OR + +2) DETECT STRING OVERFLOW, REPORT THE EXCEPTION AND + TERMINATE THE PROGRAM, AS THIS EXCEPTION IS FATAL. + + BEGIN TEST + +ABOUT TO ATTEMPT READ. FATAL EXCEPTION MAY OCCUR NOW: + +IF THIS LINE PRINTS, NO EXCEPTION SHOULD HAVE BEEN REPORTED +AND THE TWO LINES BELOW (BEGINNING WITH 'ABC' AND ENDING +WITH 'XYZ') SHOULD BE IDENTICAL. OTHERWISE, +*** TEST FAILS *** + +(FIRST LINE IS CONSTANT, SECOND IS FROM THE VARIABLE.) + +ABC12345678901234567890123456789012345678901234567890123456789XYZ +ABC12345678901234567890123456789012345678901234567890123456789XYZ + + END TEST + +END PROGRAM 100 diff --git a/NBS2/P100.BAS b/NBS2/P100.BAS new file mode 100644 index 0000000..f8af1fb --- /dev/null +++ b/NBS2/P100.BAS @@ -0,0 +1,36 @@ +1 PRINT "PROGRAM FILE 100: EXCEPTION - STRING OVERFLOW ON READ." +2 PRINT " ANSI STANDARD 14.5" +3 PRINT +5 DATA ABC12345678901234567890123456789012345678901234567890123456789XYZ +45 PRINT "SECTION 100.1 EXCEPTION - STRING OVERFLOW ON READ." +55 PRINT +65 PRINT "THIS TEST READS A LONG STRING (65 CHARACTERS) INTO A" +75 PRINT "VARIABLE. IN ORDER TO PASS, THE PROCESSOR MUST EITHER:" +85 PRINT +95 PRINT "1) CORRECTLY ACCEPT THE STRING AND RETAIN ITS VALUE IN" +105 PRINT " THE VARIABLE, AS DEMONSTRATED IN THE PRINTING, OR" +110 PRINT +115 PRINT "2) DETECT STRING OVERFLOW, REPORT THE EXCEPTION AND" +125 PRINT " TERMINATE THE PROGRAM, AS THIS EXCEPTION IS FATAL." +135 PRINT +145 PRINT " BEGIN TEST" +155 PRINT +165 LET A$="INITIALIZED" +175 PRINT "ABOUT TO ATTEMPT READ. FATAL EXCEPTION MAY OCCUR NOW:" +185 PRINT +195 READ A$ +205 PRINT "IF THIS LINE PRINTS, NO EXCEPTION SHOULD HAVE BEEN REPORTED" +215 PRINT "AND THE TWO LINES BELOW (BEGINNING WITH 'ABC' AND ENDING" +220 PRINT "WITH 'XYZ') SHOULD BE IDENTICAL. OTHERWISE," +225 PRINT "*** TEST FAILS ***" +230 PRINT +235 PRINT "(FIRST LINE IS CONSTANT, SECOND IS FROM THE VARIABLE.)" +245 PRINT +255 PRINT "ABC123456789012345678901234567890"; +265 PRINT "12345678901234567890123456789XYZ" +275 PRINT A$ +285 PRINT +295 PRINT " END TEST" +305 PRINT +315 PRINT "END PROGRAM 100" +325 END diff --git a/NBS2/P100.OUT b/NBS2/P100.OUT new file mode 100644 index 0000000..eeae1d0 --- /dev/null +++ b/NBS2/P100.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 100: EXCEPTION - STRING OVERFLOW ON READ. + ANSI STANDARD 14.5 + +SECTION 100.1 EXCEPTION - STRING OVERFLOW ON READ. + +THIS TEST READS A LONG STRING (65 CHARACTERS) INTO A +VARIABLE. IN ORDER TO PASS, THE PROCESSOR MUST EITHER: + +1) CORRECTLY ACCEPT THE STRING AND RETAIN ITS VALUE IN + THE VARIABLE, AS DEMONSTRATED IN THE PRINTING, OR + +2) DETECT STRING OVERFLOW, REPORT THE EXCEPTION AND + TERMINATE THE PROGRAM, AS THIS EXCEPTION IS FATAL. + + BEGIN TEST + +ABOUT TO ATTEMPT READ. FATAL EXCEPTION MAY OCCUR NOW: + +IF THIS LINE PRINTS, NO EXCEPTION SHOULD HAVE BEEN REPORTED +AND THE TWO LINES BELOW (BEGINNING WITH 'ABC' AND ENDING +WITH 'XYZ') SHOULD BE IDENTICAL. OTHERWISE, +*** TEST FAILS *** + +(FIRST LINE IS CONSTANT, SECOND IS FROM THE VARIABLE.) + +ABC12345678901234567890123456789012345678901234567890123456789XYZ +ABC12345678901234567890123456789012345678901234567890123456789XYZ + + END TEST + +END PROGRAM 100 diff --git a/NBS2/P100.dif b/NBS2/P100.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P100.run b/NBS2/P100.run new file mode 100644 index 0000000..2719700 --- /dev/null +++ b/NBS2/P100.run @@ -0,0 +1,31 @@ +PROGRAM FILE 100: EXCEPTION - STRING OVERFLOW ON READ. + ANSI STANDARD 14.5 + +SECTION 100.1 EXCEPTION - STRING OVERFLOW ON READ. + +THIS TEST READS A LONG STRING (65 CHARACTERS) INTO A +VARIABLE. IN ORDER TO PASS, THE PROCESSOR MUST EITHER: + +1) CORRECTLY ACCEPT THE STRING AND RETAIN ITS VALUE IN + THE VARIABLE, AS DEMONSTRATED IN THE PRINTING, OR + +2) DETECT STRING OVERFLOW, REPORT THE EXCEPTION AND + TERMINATE THE PROGRAM, AS THIS EXCEPTION IS FATAL. + + BEGIN TEST + +ABOUT TO ATTEMPT READ. FATAL EXCEPTION MAY OCCUR NOW: + +IF THIS LINE PRINTS, NO EXCEPTION SHOULD HAVE BEEN REPORTED +AND THE TWO LINES BELOW (BEGINNING WITH 'ABC' AND ENDING +WITH 'XYZ') SHOULD BE IDENTICAL. OTHERWISE, +*** TEST FAILS *** + +(FIRST LINE IS CONSTANT, SECOND IS FROM THE VARIABLE.) + +ABC12345678901234567890123456789012345678901234567890123456789XYZ +ABC12345678901234567890123456789012345678901234567890123456789XYZ + + END TEST + +END PROGRAM 100 diff --git a/NBS2/P101.80 b/NBS2/P101.80 new file mode 100644 index 0000000..692074b --- /dev/null +++ b/NBS2/P101.80 @@ -0,0 +1,46 @@ +PROGRAM FILE 101: EXCEPTION - NUMERIC OVERFLOW ON READ. + ANSI STANDARD 14.5 + +SECTION 101.1: EXCEPTION - POSITIVE OVERFLOW ON READ. + +THIS TEST CAUSES 9.9E99999 TO BE READ INTO A NUMERIC +VARIABLE. IN ORDER TO PASS, THE PROCESSOR MUST EITHER: + +1) CORRECTLY ACCEPT THE NUMBER AND RETAIN ITS VALUE IN + THE VARIABLE, AS DEMONSTRATED IN THE PRINTING, OR + +2) DETECT NUMERIC OVERFLOW, REPORT THE EXCEPTION, + SUPPLY POSITIVE MACHINE INFINITY AND CONTINUE. + + BEGIN TEST + +ABOUT TO EXECUTE READ. +*** Arithmetic Overflow *** + +RESULTING VALUE IN VARIABLE = 1.79769E+308 + +IF EXCEPTION OCCURRED, VARIABLE SHOULD = POSITIVE INFINITY. +IF NOT, IT SHOULD = 9.9E99999; OTHERWISE, +*** TEST FAILED *** + + END TEST + +SECTION 101.2: EXCEPTION - NEGATIVE OVERFLOW ON READ + +THIS SECTION IS IDENTICAL TO THE PREVIOUS, EXCEPT THAT +-9.9E99999 IS USED TO CAUSE OVERFLOW. + + BEGIN TEST + +ABOUT TO EXECUTE READ. +*** Arithmetic Overflow *** + +RESULTING VALUE IN VARIABLE = -1.79769E+308 + +IF EXCEPTION OCCURRED, VARIABLE SHOULD = NEGATIVE INFINITY. +IF NOT, IT SHOULD = -9.9E99999; OTHERWISE, +*** TEST FAILED *** + + END TEST + +END PROGRAM 101 diff --git a/NBS2/P101.BAS b/NBS2/P101.BAS new file mode 100644 index 0000000..c29ce3a --- /dev/null +++ b/NBS2/P101.BAS @@ -0,0 +1,51 @@ +10 PRINT "PROGRAM FILE 101: EXCEPTION - NUMERIC OVERFLOW ON READ." +20 PRINT " ANSI STANDARD 14.5" +30 PRINT +40 PRINT "SECTION 101.1: EXCEPTION - POSITIVE OVERFLOW ON READ." +50 PRINT +60 PRINT "THIS TEST CAUSES 9.9E99999 TO BE READ INTO A NUMERIC" +70 PRINT "VARIABLE. IN ORDER TO PASS, THE PROCESSOR MUST EITHER:" +80 PRINT +90 PRINT "1) CORRECTLY ACCEPT THE NUMBER AND RETAIN ITS VALUE IN" +100 PRINT " THE VARIABLE, AS DEMONSTRATED IN THE PRINTING, OR" +110 PRINT +120 PRINT "2) DETECT NUMERIC OVERFLOW, REPORT THE EXCEPTION," +130 PRINT " SUPPLY POSITIVE MACHINE INFINITY AND CONTINUE." +140 PRINT +150 PRINT " BEGIN TEST" +160 PRINT +170 PRINT "ABOUT TO EXECUTE READ." +180 DATA 9.9E99999 +190 READ A +200 PRINT +210 PRINT "RESULTING VALUE IN VARIABLE = ";A +220 PRINT +225 IF A <= .99E38 THEN 250 +230 PRINT "IF EXCEPTION OCCURRED, VARIABLE SHOULD = POSITIVE INFINITY." +240 PRINT "IF NOT, IT SHOULD = 9.9E99999; OTHERWISE," +250 PRINT "*** TEST FAILED *** " +260 PRINT +270 PRINT " END TEST" +280 PRINT +290 PRINT "SECTION 101.2: EXCEPTION - NEGATIVE OVERFLOW ON READ" +300 PRINT +310 PRINT "THIS SECTION IS IDENTICAL TO THE PREVIOUS, EXCEPT THAT" +320 PRINT "-9.9E99999 IS USED TO CAUSE OVERFLOW." +330 PRINT +340 PRINT " BEGIN TEST" +350 PRINT +360 PRINT "ABOUT TO EXECUTE READ." +370 DATA -9.9E99999 +380 READ A +390 PRINT +400 PRINT "RESULTING VALUE IN VARIABLE = ";A +410 PRINT +415 IF A >= .99E38 THEN 440 +420 PRINT "IF EXCEPTION OCCURRED, VARIABLE SHOULD = NEGATIVE INFINITY." +430 PRINT "IF NOT, IT SHOULD = -9.9E99999; OTHERWISE," +440 PRINT "*** TEST FAILED *** " +450 PRINT +460 PRINT " END TEST" +470 PRINT +480 PRINT "END PROGRAM 101" +490 END diff --git a/NBS2/P101.OUT b/NBS2/P101.OUT new file mode 100644 index 0000000..6ceac5c --- /dev/null +++ b/NBS2/P101.OUT @@ -0,0 +1,46 @@ +PROGRAM FILE 101: EXCEPTION - NUMERIC OVERFLOW ON READ. + ANSI STANDARD 14.5 + +SECTION 101.1: EXCEPTION - POSITIVE OVERFLOW ON READ. + +THIS TEST CAUSES 9.9E99999 TO BE READ INTO A NUMERIC +VARIABLE. IN ORDER TO PASS, THE PROCESSOR MUST EITHER: + +1) CORRECTLY ACCEPT THE NUMBER AND RETAIN ITS VALUE IN + THE VARIABLE, AS DEMONSTRATED IN THE PRINTING, OR + +2) DETECT NUMERIC OVERFLOW, REPORT THE EXCEPTION, + SUPPLY POSITIVE MACHINE INFINITY AND CONTINUE. + + BEGIN TEST + +ABOUT TO EXECUTE READ. +*** Arithmetic Overflow *** + +RESULTING VALUE IN VARIABLE = 1.79769E+308 + +IF EXCEPTION OCCURRED, VARIABLE SHOULD = POSITIVE INFINITY. +IF NOT, IT SHOULD = 9.9E99999; OTHERWISE, +*** TEST FAILED *** + + END TEST + +SECTION 101.2: EXCEPTION - NEGATIVE OVERFLOW ON READ + +THIS SECTION IS IDENTICAL TO THE PREVIOUS, EXCEPT THAT +-9.9E99999 IS USED TO CAUSE OVERFLOW. + + BEGIN TEST + +ABOUT TO EXECUTE READ. +*** Arithmetic Overflow *** + +RESULTING VALUE IN VARIABLE = -1.79769E+308 + +IF EXCEPTION OCCURRED, VARIABLE SHOULD = NEGATIVE INFINITY. +IF NOT, IT SHOULD = -9.9E99999; OTHERWISE, +*** TEST FAILED *** + + END TEST + +END PROGRAM 101 diff --git a/NBS2/P101.dif b/NBS2/P101.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P101.run b/NBS2/P101.run new file mode 100644 index 0000000..692074b --- /dev/null +++ b/NBS2/P101.run @@ -0,0 +1,46 @@ +PROGRAM FILE 101: EXCEPTION - NUMERIC OVERFLOW ON READ. + ANSI STANDARD 14.5 + +SECTION 101.1: EXCEPTION - POSITIVE OVERFLOW ON READ. + +THIS TEST CAUSES 9.9E99999 TO BE READ INTO A NUMERIC +VARIABLE. IN ORDER TO PASS, THE PROCESSOR MUST EITHER: + +1) CORRECTLY ACCEPT THE NUMBER AND RETAIN ITS VALUE IN + THE VARIABLE, AS DEMONSTRATED IN THE PRINTING, OR + +2) DETECT NUMERIC OVERFLOW, REPORT THE EXCEPTION, + SUPPLY POSITIVE MACHINE INFINITY AND CONTINUE. + + BEGIN TEST + +ABOUT TO EXECUTE READ. +*** Arithmetic Overflow *** + +RESULTING VALUE IN VARIABLE = 1.79769E+308 + +IF EXCEPTION OCCURRED, VARIABLE SHOULD = POSITIVE INFINITY. +IF NOT, IT SHOULD = 9.9E99999; OTHERWISE, +*** TEST FAILED *** + + END TEST + +SECTION 101.2: EXCEPTION - NEGATIVE OVERFLOW ON READ + +THIS SECTION IS IDENTICAL TO THE PREVIOUS, EXCEPT THAT +-9.9E99999 IS USED TO CAUSE OVERFLOW. + + BEGIN TEST + +ABOUT TO EXECUTE READ. +*** Arithmetic Overflow *** + +RESULTING VALUE IN VARIABLE = -1.79769E+308 + +IF EXCEPTION OCCURRED, VARIABLE SHOULD = NEGATIVE INFINITY. +IF NOT, IT SHOULD = -9.9E99999; OTHERWISE, +*** TEST FAILED *** + + END TEST + +END PROGRAM 101 diff --git a/NBS2/P102.80 b/NBS2/P102.80 new file mode 100644 index 0000000..2ccf41f --- /dev/null +++ b/NBS2/P102.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 102: ERROR - ILLEGAL CHARACTER IN UNQUOTED + STRING IN DATA STATEMENT. + ANSI STANDARD 3.2, 14.2 + +SECTION 102.1: ERROR - ILLEGAL CHARACTER IN UNQUOTED + STRING IN DATA STATEMENT. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ ARE SET TO 'AAAAA', 'BBBBB', AND 'CCCCC'. +THE TEST THEN TRIES TO READ THE UNQUOTED STRING 'ABC' INTO +A$, 'D?F' INTO B$, AND 'GHI' INTO C$. THE SECOND OF THESE +OPERATIONS IS SYNTACTICALLY ILLEGAL, AS '?' IS NOT A +PLAIN-STRING-CHARACTER. + +RESULTING VALUES: +A$=ABC +B$=D?F +C$=GHI + + END TEST + +END PROGRAM 102 diff --git a/NBS2/P102.BAS b/NBS2/P102.BAS new file mode 100644 index 0000000..eca6a1d --- /dev/null +++ b/NBS2/P102.BAS @@ -0,0 +1,42 @@ +10 PRINT "PROGRAM FILE 102: ERROR - ILLEGAL CHARACTER IN UNQUOTED" +15 PRINT " STRING IN DATA STATEMENT." +20 PRINT " ANSI STANDARD 3.2, 14.2" +30 PRINT +40 PRINT "SECTION 102.1: ERROR - ILLEGAL CHARACTER IN UNQUOTED" +45 PRINT " STRING IN DATA STATEMENT." +50 PRINT +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +183 PRINT " BEGIN TEST" +187 PRINT +188 PRINT "A$, B$, AND C$ ARE SET TO 'AAAAA', 'BBBBB', AND 'CCCCC'." +190 PRINT "THE TEST THEN TRIES TO READ THE UNQUOTED STRING 'ABC' INTO" +200 PRINT "A$, 'D?F' INTO B$, AND 'GHI' INTO C$. THE SECOND OF THESE" +210 PRINT "OPERATIONS IS SYNTACTICALLY ILLEGAL, AS '?' IS NOT A" +220 PRINT "PLAIN-STRING-CHARACTER." +250 PRINT +260 LET A$="AAAAA" +270 LET B$="BBBBB" +280 LET C$="CCCCC" +290 DATA ABC,D?F,GHI +300 READ A$,B$,C$ +305 PRINT "RESULTING VALUES:" +310 PRINT "A$=";A$ +320 PRINT "B$=";B$ +330 PRINT "C$=";C$ +340 PRINT +350 PRINT " END TEST" +360 PRINT +370 PRINT "END PROGRAM 102" +380 END diff --git a/NBS2/P102.OUT b/NBS2/P102.OUT new file mode 100644 index 0000000..2872322 --- /dev/null +++ b/NBS2/P102.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 102: ERROR - ILLEGAL CHARACTER IN UNQUOTED + STRING IN DATA STATEMENT. + ANSI STANDARD 3.2, 14.2 + +SECTION 102.1: ERROR - ILLEGAL CHARACTER IN UNQUOTED + STRING IN DATA STATEMENT. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ ARE SET TO 'AAAAA', 'BBBBB', AND 'CCCCC'. +THE TEST THEN TRIES TO READ THE UNQUOTED STRING 'ABC' INTO +A$, 'D?F' INTO B$, AND 'GHI' INTO C$. THE SECOND OF THESE +OPERATIONS IS SYNTACTICALLY ILLEGAL, AS '?' IS NOT A +PLAIN-STRING-CHARACTER. + +RESULTING VALUES: +A$=ABC +B$=D?F +C$=GHI + + END TEST + +END PROGRAM 102 diff --git a/NBS2/P102.dif b/NBS2/P102.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P102.run b/NBS2/P102.run new file mode 100644 index 0000000..2ccf41f --- /dev/null +++ b/NBS2/P102.run @@ -0,0 +1,36 @@ +PROGRAM FILE 102: ERROR - ILLEGAL CHARACTER IN UNQUOTED + STRING IN DATA STATEMENT. + ANSI STANDARD 3.2, 14.2 + +SECTION 102.1: ERROR - ILLEGAL CHARACTER IN UNQUOTED + STRING IN DATA STATEMENT. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ ARE SET TO 'AAAAA', 'BBBBB', AND 'CCCCC'. +THE TEST THEN TRIES TO READ THE UNQUOTED STRING 'ABC' INTO +A$, 'D?F' INTO B$, AND 'GHI' INTO C$. THE SECOND OF THESE +OPERATIONS IS SYNTACTICALLY ILLEGAL, AS '?' IS NOT A +PLAIN-STRING-CHARACTER. + +RESULTING VALUES: +A$=ABC +B$=D?F +C$=GHI + + END TEST + +END PROGRAM 102 diff --git a/NBS2/P103.80 b/NBS2/P103.80 new file mode 100644 index 0000000..68b0155 --- /dev/null +++ b/NBS2/P103.80 @@ -0,0 +1,35 @@ +PROGRAM FILE 103: ERROR - READING QUOTED STRINGS CONTAINING + SINGLE QUOTE. + ANSI STANDARD 3.2, 14.2 + +SECTION 103.2: ERROR - READING QUOTED STRING CONTAINING + SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A DATA-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A READ STATEMENT HAS ATTEMPTED TO ASSOCIATE THE STRING +CONSISTING OF AN ASTERISK, THE SINGLE OCCURRENCE OF +A QUOTE CHARACTER AND A QUESTION MARK WITH A STRING +VARIABLE. + +VARIABLE=* + + END TEST. + +END PROGRAM 103. diff --git a/NBS2/P103.BAS b/NBS2/P103.BAS new file mode 100644 index 0000000..0fa84a4 --- /dev/null +++ b/NBS2/P103.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 103: ERROR - READING QUOTED STRINGS CONTAINING" +15 PRINT " SINGLE QUOTE." +20 PRINT " ANSI STANDARD 3.2, 14.2" +30 PRINT +40 PRINT "SECTION 103.2: ERROR - READING QUOTED STRING CONTAINING " +45 PRINT " SINGLE QUOTE." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +70 PRINT "CONTAINING A SINGLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN" +80 PRINT "THE QUOTED STRING OF A DATA-STATEMENT." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 READ A$ +250 PRINT "A READ STATEMENT HAS ATTEMPTED TO ASSOCIATE THE STRING" +260 PRINT "CONSISTING OF AN ASTERISK, THE SINGLE OCCURRENCE OF" +270 PRINT "A QUOTE CHARACTER AND A QUESTION MARK WITH A STRING " +280 PRINT "VARIABLE. " +290 PRINT +300 PRINT "VARIABLE=";A$ +310 PRINT +315 DATA "*"?" +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 103." +350 END diff --git a/NBS2/P103.OUT b/NBS2/P103.OUT new file mode 100644 index 0000000..88b2922 --- /dev/null +++ b/NBS2/P103.OUT @@ -0,0 +1,35 @@ +PROGRAM FILE 103: ERROR - READING QUOTED STRINGS CONTAINING + SINGLE QUOTE. + ANSI STANDARD 3.2, 14.2 + +SECTION 103.2: ERROR - READING QUOTED STRING CONTAINING + SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A DATA-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A READ STATEMENT HAS ATTEMPTED TO ASSOCIATE THE STRING +CONSISTING OF AN ASTERISK, THE SINGLE OCCURRENCE OF +A QUOTE CHARACTER AND A QUESTION MARK WITH A STRING +VARIABLE. + +VARIABLE=* + + END TEST. + +END PROGRAM 103. diff --git a/NBS2/P103.dif b/NBS2/P103.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P103.run b/NBS2/P103.run new file mode 100644 index 0000000..68b0155 --- /dev/null +++ b/NBS2/P103.run @@ -0,0 +1,35 @@ +PROGRAM FILE 103: ERROR - READING QUOTED STRINGS CONTAINING + SINGLE QUOTE. + ANSI STANDARD 3.2, 14.2 + +SECTION 103.2: ERROR - READING QUOTED STRING CONTAINING + SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A DATA-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A READ STATEMENT HAS ATTEMPTED TO ASSOCIATE THE STRING +CONSISTING OF AN ASTERISK, THE SINGLE OCCURRENCE OF +A QUOTE CHARACTER AND A QUESTION MARK WITH A STRING +VARIABLE. + +VARIABLE=* + + END TEST. + +END PROGRAM 103. diff --git a/NBS2/P104.80 b/NBS2/P104.80 new file mode 100644 index 0000000..e2fee9c --- /dev/null +++ b/NBS2/P104.80 @@ -0,0 +1,35 @@ +PROGRAM FILE 104: ERROR - READING QUOTED STRINGS CONTAINING + DOUBLE QUOTE. + ANSI STANDARD 3.2, 14.2 + +SECTION 104.1: ERROR - READING QUOTED STRINGS CONTAINING + DOUBLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A DOUBLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A DATA-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A READ STATEMENT HAS ATTEMPTED TO ASSOCIATE THE +STRING CONSISTING OF AN ASTERISK, TWO CONSECUTIVE +QUOTE CHARACTERS AND A QUESTION MARK WITH A STRING +VARIABLE. + +VARIABLE=* + + END TEST. + +END PROGRAM 104. diff --git a/NBS2/P104.BAS b/NBS2/P104.BAS new file mode 100644 index 0000000..1a232b1 --- /dev/null +++ b/NBS2/P104.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 104: ERROR - READING QUOTED STRINGS CONTAINING" +15 PRINT " DOUBLE QUOTE." +20 PRINT " ANSI STANDARD 3.2, 14.2" +30 PRINT +40 PRINT "SECTION 104.1: ERROR - READING QUOTED STRINGS CONTAINING " +45 PRINT " DOUBLE QUOTE." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +70 PRINT "CONTAINING A DOUBLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN" +80 PRINT "THE QUOTED STRING OF A DATA-STATEMENT." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 READ A$ +250 PRINT "A READ STATEMENT HAS ATTEMPTED TO ASSOCIATE THE " +260 PRINT "STRING CONSISTING OF AN ASTERISK, TWO CONSECUTIVE" +270 PRINT "QUOTE CHARACTERS AND A QUESTION MARK WITH A STRING " +280 PRINT "VARIABLE. " +290 PRINT +300 PRINT "VARIABLE=";A$ +310 PRINT +315 DATA "*""?" +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 104." +350 END diff --git a/NBS2/P104.OUT b/NBS2/P104.OUT new file mode 100644 index 0000000..57ebcfe --- /dev/null +++ b/NBS2/P104.OUT @@ -0,0 +1,35 @@ +PROGRAM FILE 104: ERROR - READING QUOTED STRINGS CONTAINING + DOUBLE QUOTE. + ANSI STANDARD 3.2, 14.2 + +SECTION 104.1: ERROR - READING QUOTED STRINGS CONTAINING + DOUBLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A DOUBLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A DATA-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A READ STATEMENT HAS ATTEMPTED TO ASSOCIATE THE +STRING CONSISTING OF AN ASTERISK, TWO CONSECUTIVE +QUOTE CHARACTERS AND A QUESTION MARK WITH A STRING +VARIABLE. + +VARIABLE=* + + END TEST. + +END PROGRAM 104. diff --git a/NBS2/P104.dif b/NBS2/P104.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P104.run b/NBS2/P104.run new file mode 100644 index 0000000..e2fee9c --- /dev/null +++ b/NBS2/P104.run @@ -0,0 +1,35 @@ +PROGRAM FILE 104: ERROR - READING QUOTED STRINGS CONTAINING + DOUBLE QUOTE. + ANSI STANDARD 3.2, 14.2 + +SECTION 104.1: ERROR - READING QUOTED STRINGS CONTAINING + DOUBLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A DOUBLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A DATA-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A READ STATEMENT HAS ATTEMPTED TO ASSOCIATE THE +STRING CONSISTING OF AN ASTERISK, TWO CONSECUTIVE +QUOTE CHARACTERS AND A QUESTION MARK WITH A STRING +VARIABLE. + +VARIABLE=* + + END TEST. + +END PROGRAM 104. diff --git a/NBS2/P105.80 b/NBS2/P105.80 new file mode 100644 index 0000000..9b1efc9 --- /dev/null +++ b/NBS2/P105.80 @@ -0,0 +1,32 @@ +PROGRAM FILE 105: ERROR - NULL DATUM IN DATA-LIST. + ANSI STANDARD 14.2 + +SECTION 105.1: ERROR - NULL DATUM IN DATA-LIST. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ INITIALIZED TO 'AAAAA', 'BBBBB', AND +'CCCCC', RESPECTIVELY. ABOUT TO READ A$, B$, C$ FROM +'DATA ABC,,GHI,JKL'. + +RESULTING VALUES: +A$=ABC +B$=GHI +C$=JKL + + END TEST + +END PROGRAM 105 diff --git a/NBS2/P105.BAS b/NBS2/P105.BAS new file mode 100644 index 0000000..ddc480e --- /dev/null +++ b/NBS2/P105.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 105: ERROR - NULL DATUM IN DATA-LIST." +20 PRINT " ANSI STANDARD 14.2" +30 PRINT +40 PRINT "SECTION 105.1: ERROR - NULL DATUM IN DATA-LIST." +50 PRINT +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +240 PRINT " BEGIN TEST" +250 PRINT +260 LET A$="AAAAA" +270 LET B$="BBBBB" +280 LET C$="CCCCC" +281 PRINT "A$, B$, AND C$ INITIALIZED TO 'AAAAA', 'BBBBB', AND" +282 PRINT "'CCCCC', RESPECTIVELY. ABOUT TO READ A$, B$, C$ FROM" +283 PRINT "'DATA ABC,,GHI,JKL'." +285 PRINT +290 DATA ABC,,GHI,JKL +300 READ A$,B$,C$ +303 PRINT "RESULTING VALUES:" +310 PRINT "A$=";A$ +320 PRINT "B$=";B$ +330 PRINT "C$=";C$ +340 PRINT +350 PRINT " END TEST" +360 PRINT +370 PRINT "END PROGRAM 105" +380 END diff --git a/NBS2/P105.OUT b/NBS2/P105.OUT new file mode 100644 index 0000000..e5cd186 --- /dev/null +++ b/NBS2/P105.OUT @@ -0,0 +1,32 @@ +PROGRAM FILE 105: ERROR - NULL DATUM IN DATA-LIST. + ANSI STANDARD 14.2 + +SECTION 105.1: ERROR - NULL DATUM IN DATA-LIST. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ INITIALIZED TO 'AAAAA', 'BBBBB', AND +'CCCCC', RESPECTIVELY. ABOUT TO READ A$, B$, C$ FROM +'DATA ABC,,GHI,JKL'. + +RESULTING VALUES: +A$=ABC +B$=GHI +C$=JKL + + END TEST + +END PROGRAM 105 diff --git a/NBS2/P105.dif b/NBS2/P105.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P105.run b/NBS2/P105.run new file mode 100644 index 0000000..9b1efc9 --- /dev/null +++ b/NBS2/P105.run @@ -0,0 +1,32 @@ +PROGRAM FILE 105: ERROR - NULL DATUM IN DATA-LIST. + ANSI STANDARD 14.2 + +SECTION 105.1: ERROR - NULL DATUM IN DATA-LIST. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ INITIALIZED TO 'AAAAA', 'BBBBB', AND +'CCCCC', RESPECTIVELY. ABOUT TO READ A$, B$, C$ FROM +'DATA ABC,,GHI,JKL'. + +RESULTING VALUES: +A$=ABC +B$=GHI +C$=JKL + + END TEST + +END PROGRAM 105 diff --git a/NBS2/P106.80 b/NBS2/P106.80 new file mode 100644 index 0000000..71e5898 --- /dev/null +++ b/NBS2/P106.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 106: ERROR - NULL ENTRY IN READ'S VARIABLE-LIST. + ANSI STANDARD 14.2 + +SECTION 106.1: ERROR - NULL ENTRY IN READ'S VARIABLE-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ INITIALIZED TO 'AAAAA', 'BBBBB', AND +'CCCCC', RESPECTIVELY. ABOUT TO EXECUTE 'READ A$,,C$' +FROM 'DATA ABC,DEF,GHI'. + +RESULTING VALUES: +A$=ABC +B$=BBBBB +C$=DEF + + END TEST + +END PROGRAM 106 diff --git a/NBS2/P106.BAS b/NBS2/P106.BAS new file mode 100644 index 0000000..7d57ec5 --- /dev/null +++ b/NBS2/P106.BAS @@ -0,0 +1,37 @@ +10 PRINT "PROGRAM FILE 106: ERROR - NULL ENTRY IN READ'S VARIABLE-LIST." +20 PRINT " ANSI STANDARD 14.2" +30 PRINT +40 PRINT "SECTION 106.1: ERROR - NULL ENTRY IN READ'S VARIABLE-LIST." +50 PRINT +60 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +70 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +80 PRINT +90 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +100 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +110 PRINT " BY THE PROCESSOR, OR" +120 PRINT +130 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +140 PRINT +150 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +160 PRINT "FOR DETAILED CRITERIA." +170 PRINT +180 PRINT " BEGIN TEST" +190 PRINT +200 LET A$="AAAAA" +210 LET B$="BBBBB" +220 LET C$="CCCCC" +230 PRINT "A$, B$, AND C$ INITIALIZED TO 'AAAAA', 'BBBBB', AND" +240 PRINT "'CCCCC', RESPECTIVELY. ABOUT TO EXECUTE 'READ A$,,C$'" +250 PRINT "FROM 'DATA ABC,DEF,GHI'." +260 DATA ABC,DEF,GHI +270 READ A$,,C$ +280 PRINT +290 PRINT "RESULTING VALUES:" +300 PRINT "A$=";A$ +310 PRINT "B$=";B$ +320 PRINT "C$=";C$ +330 PRINT +340 PRINT " END TEST" +350 PRINT +360 PRINT "END PROGRAM 106" +370 END diff --git a/NBS2/P106.OUT b/NBS2/P106.OUT new file mode 100644 index 0000000..30455f6 --- /dev/null +++ b/NBS2/P106.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 106: ERROR - NULL ENTRY IN READ'S VARIABLE-LIST. + ANSI STANDARD 14.2 + +SECTION 106.1: ERROR - NULL ENTRY IN READ'S VARIABLE-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ INITIALIZED TO 'AAAAA', 'BBBBB', AND +'CCCCC', RESPECTIVELY. ABOUT TO EXECUTE 'READ A$,,C$' +FROM 'DATA ABC,DEF,GHI'. + +RESULTING VALUES: +A$=ABC +B$=BBBBB +C$=DEF + + END TEST + +END PROGRAM 106 diff --git a/NBS2/P106.dif b/NBS2/P106.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P106.run b/NBS2/P106.run new file mode 100644 index 0000000..71e5898 --- /dev/null +++ b/NBS2/P106.run @@ -0,0 +1,31 @@ +PROGRAM FILE 106: ERROR - NULL ENTRY IN READ'S VARIABLE-LIST. + ANSI STANDARD 14.2 + +SECTION 106.1: ERROR - NULL ENTRY IN READ'S VARIABLE-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +A$, B$, AND C$ INITIALIZED TO 'AAAAA', 'BBBBB', AND +'CCCCC', RESPECTIVELY. ABOUT TO EXECUTE 'READ A$,,C$' +FROM 'DATA ABC,DEF,GHI'. + +RESULTING VALUES: +A$=ABC +B$=BBBBB +C$=DEF + + END TEST + +END PROGRAM 106 diff --git a/NBS2/P107.80 b/NBS2/P107.80 new file mode 100644 index 0000000..852af95 --- /dev/null +++ b/NBS2/P107.80 @@ -0,0 +1,344 @@ +PROGRAM FILE 107: INPUT OF NUMERIC CONSTANTS. + ANSI STANDARD 5.2, 13.2, 13.4 + +SECTION 107.1: INPUT OF NUMERIC CONSTANTS. + + THIS SECTION TESTS THE PROCESSOR'S CAPABILITY TO INPUT + NUMERIC VALUES CORRECTLY. IF AN INPUT VALUE IS NOT ACCURATE + TO AT LEAST SIX DIGITS, IT IS COUNTED AS A FAILURE. + + ENTER THE NUMBERS BELOW EXACTLY AS REQUESTED. + FOR USER CONVENIENCE, THE NUMBER TO BE ENTERED IS INDENTED + TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO + POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE + ALIGNED WITH THE PROMPT STRING. + +ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFORE +IF THE PROCESSOR REJECTS ANY OF THEM, +*** TEST FAILED *** + + BEGIN TEST + + +PLEASE ENTER: + +.999999E38 +? +.999999E38 +SHOULD BE ACTUAL RESULT + 9.99999E+37 9.99999E+37 PASS + + +PLEASE ENTER: + -.999999E38 +? -.999999E38 +SHOULD BE ACTUAL RESULT +-9.99999E+37 -9.99999E+37 PASS + + +PLEASE ENTER: + +1.00001E-38 +? +1.00001E-38 +SHOULD BE ACTUAL RESULT + 1.00001E-38 1.00001E-38 PASS + + +PLEASE ENTER: + -1.00001E-38 +? -1.00001E-38 +SHOULD BE ACTUAL RESULT +-1.00001E-38 -1.00001E-38 PASS + + +PLEASE ENTER: + 9.99999E-38 +? 9.99999E-38 +SHOULD BE ACTUAL RESULT + 9.99999E-38 9.99999E-38 PASS + + +PLEASE ENTER: + 9.87654E37 +? 9.87654E37 +SHOULD BE ACTUAL RESULT + 9.87654E+37 9.87654E+37 PASS + + +PLEASE ENTER: + 123456 +? 123456 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 123456. +? 123456. +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 123456.0 +? 123456.0 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 987.654 +? 987.654 +SHOULD BE ACTUAL RESULT + 987.654 987.654 PASS + + +PLEASE ENTER: + 1234560 +? 1234560 +SHOULD BE ACTUAL RESULT + 1.23456E+6 1.23456E+6 PASS + + +PLEASE ENTER: + 123456000 +? 123456000 +SHOULD BE ACTUAL RESULT + 1.23456E+8 1.23456E+8 PASS + + +PLEASE ENTER: + .0123456 +? .0123456 +SHOULD BE ACTUAL RESULT + 1.23456E-2 1.23456E-2 PASS + + +PLEASE ENTER: + .000123456 +? .000123456 +SHOULD BE ACTUAL RESULT + 1.23456E-4 1.23456E-4 PASS + + +PLEASE ENTER: + .12 +? .12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + +.12 +? +.12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + -.12 +? -.12 +SHOULD BE ACTUAL RESULT +-.12 -.12 PASS + + +PLEASE ENTER: + 0.12 +? 0.12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + 0.0 +? 0.0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + +0 +? +0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + -.000 +? -.000 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 1.23E9 +? 1.23E9 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E09 +? 1.23E09 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E+9 +? 1.23E+9 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E-9 +? 1.23E-9 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 1.23E-09 +? 1.23E-09 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 1.23E-0009 +? 1.23E-0009 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 000001.2300000E-000009 +? 000001.2300000E-000009 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 0E0 +? 0E0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 000.000E22 +? 000.000E22 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + +000E55 +? +000E55 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 0.0E-000 +? 0.0E-000 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 123E0 +? 123E0 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E000 +? 123E000 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E-00 +? 123E-00 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E+0 +? 123E+0 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 12345678901234567890 +? 12345678901234567890 +SHOULD BE ACTUAL RESULT + 1.23457E+19 1.23457E+19 PASS + + +PLEASE ENTER: + 123456E10 +? 123456E10 +SHOULD BE ACTUAL RESULT + 1.23456E+15 1.23456E+15 PASS + + +PLEASE ENTER: + 0.0000123456E-10 +? 0.0000123456E-10 +SHOULD BE ACTUAL RESULT + 1.23456E-15 1.23456E-15 PASS + + +PLEASE ENTER: + 123456000000000E-9 +? 123456000000000E-9 +SHOULD BE ACTUAL RESULT + 123456 123456. PASS + + +PLEASE ENTER: + 0.000000000123456E15 +? 0.000000000123456E15 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + .00987654E40 +? .00987654E40 +SHOULD BE ACTUAL RESULT + 9.87654E+37 9.87654E+37 PASS + + +PLEASE ENTER: + 987.654E-40 +? 987.654E-40 +SHOULD BE ACTUAL RESULT + 9.87654E-38 9.87654E-38 PASS + + +PLEASE ENTER: + 123456.E-3 +? 123456.E-3 +SHOULD BE ACTUAL RESULT + 123.456 123.456 PASS + + +PLEASE ENTER: + .123456E3 +? .123456E3 +SHOULD BE ACTUAL RESULT + 123.456 123.456 PASS + + +***** TEST PASSED. ***** + + END TEST + +END PROGRAM 107 + +Program interrupted at line 1110 diff --git a/NBS2/P107.BAS b/NBS2/P107.BAS new file mode 100644 index 0000000..336db11 --- /dev/null +++ b/NBS2/P107.BAS @@ -0,0 +1,112 @@ +10 PRINT "PROGRAM FILE 107: INPUT OF NUMERIC CONSTANTS." +20 PRINT " ANSI STANDARD 5.2, 13.2, 13.4" +30 PRINT +40 PRINT "SECTION 107.1: INPUT OF NUMERIC CONSTANTS." +50 PRINT +60 PRINT " THIS SECTION TESTS THE PROCESSOR'S CAPABILITY TO INPUT" +70 PRINT " NUMERIC VALUES CORRECTLY. IF AN INPUT VALUE IS NOT ACCURATE" +80 PRINT " TO AT LEAST SIX DIGITS, IT IS COUNTED AS A FAILURE." +90 PRINT +100 PRINT " ENTER THE NUMBERS BELOW EXACTLY AS REQUESTED." +110 PRINT " FOR USER CONVENIENCE, THE NUMBER TO BE ENTERED IS INDENTED" +120 PRINT " TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO" +130 PRINT " POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE" +140 PRINT " ALIGNED WITH THE PROMPT STRING." +150 PRINT +160 PRINT "ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFORE " +170 PRINT "IF THE PROCESSOR REJECTS ANY OF THEM," +180 PRINT "*** TEST FAILED ***" +190 PRINT +200 REM FORMAT OF DATA: +210 REM 1 - CORRECT NUMERIC VALUE +220 REM 2 - LOWER LIMIT +230 REM 3 - UPPER LIMIT +240 REM 4 - PROMPT (HOW NUMBER IS TO BE ENTERED) +250 REM 5 - STRING FOR CORRECT VALUE +260 DATA +.999999E38,.999998E38,1E38,"+.999999E38"," 9.99999E+37" +270 DATA -.999999E38,-1E38,-.999998E38,"-.999999E38","-9.99999E+37" +280 DATA +1.00001E-38,1E-38,1.00002E-38,"+1.00001E-38"," 1.00001E-38" +290 DATA -1.00001E-38,-1.00002E-38,-1E-38,"-1.00001E-38","-1.00001E-38" +300 DATA 9.99999E-38,9.99998E-38,10E-38,"9.99999E-38"," 9.99999E-38" +310 DATA 9.87654E37,9.87653E37,9.87655E37,"9.87654E37"," 9.87654E+37" +320 DATA 123456,123455,123457,"123456"," 123456" +330 DATA 123456,123455,123457,"123456."," 123456" +340 DATA 123456,123455,123457,"123456.0"," 123456" +350 DATA 987.654,987.653,987.655,"987.654"," 987.654" +360 DATA 1.23456E+6,1.23455E6,1.23457E6,"1234560"," 1.23456E+6" +370 DATA 1.23456E+8,1.23455E8,1.23457E8,"123456000"," 1.23456E+8" +380 DATA 1.23456E-2,1.23455E-2,1.23457E-2,".0123456"," 1.23456E-2" +390 DATA 1.23456E-4,1.23455E-4,1.23457E-4,".000123456"," 1.23456E-4" +400 DATA .12,.119999,.120001,".12"," .12" +410 DATA .12,.119999,.120001,"+.12"," .12" +420 DATA -.12,-.120001,-.119999,"-.12","-.12" +430 DATA .12,.119999,.120001,"0.12"," .12" +440 DATA 0,0,0,"0.0"," 0" +450 DATA 0,0,0,"+0"," 0" +460 DATA 0,0,0,"-.000"," 0" +470 DATA 1.23E9,1.22999E9,1.23001E9,"1.23E9"," 1.23000E+9" +480 DATA 1.23E9,1.22999E9,1.23001E9,"1.23E09"," 1.23000E+9" +490 DATA 1.23E9,1.22999E9,1.23001E9,"1.23E+9"," 1.23000E+9" +500 DATA 1.23E-9,1.22999E-9,1.23001E-9,"1.23E-9"," 1.23000E-9" +510 DATA 1.23E-9,1.22999E-9,1.23001E-9,"1.23E-09"," 1.23000E-9" +520 DATA 1.23E-9,1.22999E-9,1.23001E-9,"1.23E-0009"," 1.23000E-9" +530 DATA 1.23E-9,1.22999E-9,1.23001E-9 +540 DATA "000001.2300000","X","E-000009"," 1.23000E-9" +550 DATA 0,0,0,"0E0"," 0" +560 DATA 0,0,0,"000.000E22"," 0" +570 DATA 0,0,0,"+000E55"," 0" +580 DATA 0,0,0,"0.0E-000"," 0" +590 DATA 123,122.999,123.001,"123E0"," 123" +600 DATA 123,122.999,123.001,"123E000"," 123" +610 DATA 123,122.999,123.001,"123E-00"," 123" +620 DATA 123,122.999,123.001,"123E+0"," 123" +630 DATA 1.2345678E19,1.2345578E19,1.2345779E19 +640 DATA "1234567890","X","1234567890"," 1.23457E+19" +650 DATA 1.23456E15,1.23455E15,1.23457E15,"123456E10"," 1.23456E+15" +660 DATA 1.23456E-15,1.23455E-15,1.23457E-15 +670 DATA "0.0000123456E-10"," 1.23456E-15" +680 DATA 123456,123455,123457,"1234560000","X","00000E-9"," 123456" +690 DATA 123456,123455,123457,"0.000000000","X","123456E15"," 123456" +700 DATA 9.87654E37,9.87653E37,9.87655E37,".00987654E40"," 9.87654E+37" +710 DATA 9.87654E-38,9.87653E-38,9.87655E-38,"987.654E-40" +720 DATA " 9.87654E-38" +730 DATA 123.456,123.455,123.457,"123456.E-3"," 123.456" +740 DATA 123.456,123.455,123.457,".123456E3"," 123.456" +750 DATA -1,-1,-1,"","" +760 PRINT " BEGIN TEST" +770 LET F1=0 +780 READ V,L9,H9,A$,B$ +790 IF V=-1 THEN 1000 +800 LET C$= "" +810 IF B$<>"X" THEN 830 +820 READ C$,B$ +830 PRINT +840 PRINT +850 PRINT "PLEASE ENTER: " +860 PRINT " ";A$;C$ +870 INPUT W +880 LET M$="PASS" +890 IF WH9 THEN 940 +910 PRINT "SHOULD BE","ACTUAL","RESULT" +920 PRINT B$,W,M$ +930 GOTO 780 +940 PRINT "APPARENT FAILURE - ENTER 1 TO RE-TRY INPUT, 0 IF NOT" +950 INPUT Z +960 IF Z<>0 THEN 830 +970 LET M$="FAIL" +980 LET F1=F1+1 +990 GOTO 910 +1000 PRINT +1010 PRINT +1020 IF F1=0 THEN 1050 +1030 PRINT "*** TEST FAILED: ";F1;" NUMBER(S) HANDLED IMPROPERLY.***" +1040 GOTO 1060 +1050 PRINT "***** TEST PASSED. *****" +1060 REM END OF MAIN LINE FOR 107.1 +1070 PRINT +1080 PRINT " END TEST" +1090 PRINT +1100 PRINT "END PROGRAM 107" +1110 STOP +1120 END diff --git a/NBS2/P107.INP b/NBS2/P107.INP new file mode 100644 index 0000000..1bd137d --- /dev/null +++ b/NBS2/P107.INP @@ -0,0 +1,45 @@ ++.999999E38 +-.999999E38 ++1.00001E-38 +-1.00001E-38 +9.99999E-38 +9.87654E37 +123456 +123456. +123456.0 +987.654 +1234560 +123456000 +.0123456 +.000123456 +.12 ++.12 +-.12 +0.12 +0.0 ++0 +-.000 +1.23E9 +1.23E09 +1.23E+9 +1.23E-9 +1.23E-09 +1.23E-0009 +000001.2300000E-000009 +0E0 +000.000E22 ++000E55 +0.0E-000 +123E0 +123E000 +123E-00 +123E+0 +12345678901234567890 +123456E10 +0.0000123456E-10 +123456000000000E-9 +0.000000000123456E15 +.00987654E40 +987.654E-40 +123456.E-3 +.123456E3 diff --git a/NBS2/P107.OUT b/NBS2/P107.OUT new file mode 100644 index 0000000..4bd81a9 --- /dev/null +++ b/NBS2/P107.OUT @@ -0,0 +1,344 @@ +PROGRAM FILE 107: INPUT OF NUMERIC CONSTANTS. + ANSI STANDARD 5.2, 13.2, 13.4 + +SECTION 107.1: INPUT OF NUMERIC CONSTANTS. + + THIS SECTION TESTS THE PROCESSOR'S CAPABILITY TO INPUT + NUMERIC VALUES CORRECTLY. IF AN INPUT VALUE IS NOT ACCURATE + TO AT LEAST SIX DIGITS, IT IS COUNTED AS A FAILURE. + + ENTER THE NUMBERS BELOW EXACTLY AS REQUESTED. + FOR USER CONVENIENCE, THE NUMBER TO BE ENTERED IS INDENTED + TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO + POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE + ALIGNED WITH THE PROMPT STRING. + +ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFORE +IF THE PROCESSOR REJECTS ANY OF THEM, +*** TEST FAILED *** + + BEGIN TEST + + +PLEASE ENTER: + +.999999E38 +? +.999999E38 +SHOULD BE ACTUAL RESULT + 9.99999E+37 9.99999E+37 PASS + + +PLEASE ENTER: + -.999999E38 +? -.999999E38 +SHOULD BE ACTUAL RESULT +-9.99999E+37 -9.99999E+37 PASS + + +PLEASE ENTER: + +1.00001E-38 +? +1.00001E-38 +SHOULD BE ACTUAL RESULT + 1.00001E-38 1.00001E-38 PASS + + +PLEASE ENTER: + -1.00001E-38 +? -1.00001E-38 +SHOULD BE ACTUAL RESULT +-1.00001E-38 -1.00001E-38 PASS + + +PLEASE ENTER: + 9.99999E-38 +? 9.99999E-38 +SHOULD BE ACTUAL RESULT + 9.99999E-38 9.99999E-38 PASS + + +PLEASE ENTER: + 9.87654E37 +? 9.87654E37 +SHOULD BE ACTUAL RESULT + 9.87654E+37 9.87654E+37 PASS + + +PLEASE ENTER: + 123456 +? 123456 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 123456. +? 123456. +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 123456.0 +? 123456.0 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 987.654 +? 987.654 +SHOULD BE ACTUAL RESULT + 987.654 987.654 PASS + + +PLEASE ENTER: + 1234560 +? 1234560 +SHOULD BE ACTUAL RESULT + 1.23456E+6 1.23456E+6 PASS + + +PLEASE ENTER: + 123456000 +? 123456000 +SHOULD BE ACTUAL RESULT + 1.23456E+8 1.23456E+8 PASS + + +PLEASE ENTER: + .0123456 +? .0123456 +SHOULD BE ACTUAL RESULT + 1.23456E-2 1.23456E-2 PASS + + +PLEASE ENTER: + .000123456 +? .000123456 +SHOULD BE ACTUAL RESULT + 1.23456E-4 1.23456E-4 PASS + + +PLEASE ENTER: + .12 +? .12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + +.12 +? +.12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + -.12 +? -.12 +SHOULD BE ACTUAL RESULT +-.12 -.12 PASS + + +PLEASE ENTER: + 0.12 +? 0.12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + 0.0 +? 0.0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + +0 +? +0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + -.000 +? -.000 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 1.23E9 +? 1.23E9 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E09 +? 1.23E09 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E+9 +? 1.23E+9 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E-9 +? 1.23E-9 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 1.23E-09 +? 1.23E-09 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 1.23E-0009 +? 1.23E-0009 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 000001.2300000E-000009 +? 000001.2300000E-000009 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 0E0 +? 0E0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 000.000E22 +? 000.000E22 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + +000E55 +? +000E55 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 0.0E-000 +? 0.0E-000 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 123E0 +? 123E0 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E000 +? 123E000 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E-00 +? 123E-00 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E+0 +? 123E+0 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 12345678901234567890 +? 12345678901234567890 +SHOULD BE ACTUAL RESULT + 1.23457E+19 1.23457E+19 PASS + + +PLEASE ENTER: + 123456E10 +? 123456E10 +SHOULD BE ACTUAL RESULT + 1.23456E+15 1.23456E+15 PASS + + +PLEASE ENTER: + 0.0000123456E-10 +? 0.0000123456E-10 +SHOULD BE ACTUAL RESULT + 1.23456E-15 1.23456E-15 PASS + + +PLEASE ENTER: + 123456000000000E-9 +? 123456000000000E-9 +SHOULD BE ACTUAL RESULT + 123456 123456. PASS + + +PLEASE ENTER: + 0.000000000123456E15 +? 0.000000000123456E15 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + .00987654E40 +? .00987654E40 +SHOULD BE ACTUAL RESULT + 9.87654E+37 9.87654E+37 PASS + + +PLEASE ENTER: + 987.654E-40 +? 987.654E-40 +SHOULD BE ACTUAL RESULT + 9.87654E-38 9.87654E-38 PASS + + +PLEASE ENTER: + 123456.E-3 +? 123456.E-3 +SHOULD BE ACTUAL RESULT + 123.456 123.456 PASS + + +PLEASE ENTER: + .123456E3 +? .123456E3 +SHOULD BE ACTUAL RESULT + 123.456 123.456 PASS + + +***** TEST PASSED. ***** + + END TEST + +END PROGRAM 107 + +Program interrupted at line 1110 diff --git a/NBS2/P107.dif b/NBS2/P107.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P107.in b/NBS2/P107.in new file mode 100644 index 0000000..1bd137d --- /dev/null +++ b/NBS2/P107.in @@ -0,0 +1,45 @@ ++.999999E38 +-.999999E38 ++1.00001E-38 +-1.00001E-38 +9.99999E-38 +9.87654E37 +123456 +123456. +123456.0 +987.654 +1234560 +123456000 +.0123456 +.000123456 +.12 ++.12 +-.12 +0.12 +0.0 ++0 +-.000 +1.23E9 +1.23E09 +1.23E+9 +1.23E-9 +1.23E-09 +1.23E-0009 +000001.2300000E-000009 +0E0 +000.000E22 ++000E55 +0.0E-000 +123E0 +123E000 +123E-00 +123E+0 +12345678901234567890 +123456E10 +0.0000123456E-10 +123456000000000E-9 +0.000000000123456E15 +.00987654E40 +987.654E-40 +123456.E-3 +.123456E3 diff --git a/NBS2/P107.run b/NBS2/P107.run new file mode 100644 index 0000000..852af95 --- /dev/null +++ b/NBS2/P107.run @@ -0,0 +1,344 @@ +PROGRAM FILE 107: INPUT OF NUMERIC CONSTANTS. + ANSI STANDARD 5.2, 13.2, 13.4 + +SECTION 107.1: INPUT OF NUMERIC CONSTANTS. + + THIS SECTION TESTS THE PROCESSOR'S CAPABILITY TO INPUT + NUMERIC VALUES CORRECTLY. IF AN INPUT VALUE IS NOT ACCURATE + TO AT LEAST SIX DIGITS, IT IS COUNTED AS A FAILURE. + + ENTER THE NUMBERS BELOW EXACTLY AS REQUESTED. + FOR USER CONVENIENCE, THE NUMBER TO BE ENTERED IS INDENTED + TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO + POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE + ALIGNED WITH THE PROMPT STRING. + +ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFORE +IF THE PROCESSOR REJECTS ANY OF THEM, +*** TEST FAILED *** + + BEGIN TEST + + +PLEASE ENTER: + +.999999E38 +? +.999999E38 +SHOULD BE ACTUAL RESULT + 9.99999E+37 9.99999E+37 PASS + + +PLEASE ENTER: + -.999999E38 +? -.999999E38 +SHOULD BE ACTUAL RESULT +-9.99999E+37 -9.99999E+37 PASS + + +PLEASE ENTER: + +1.00001E-38 +? +1.00001E-38 +SHOULD BE ACTUAL RESULT + 1.00001E-38 1.00001E-38 PASS + + +PLEASE ENTER: + -1.00001E-38 +? -1.00001E-38 +SHOULD BE ACTUAL RESULT +-1.00001E-38 -1.00001E-38 PASS + + +PLEASE ENTER: + 9.99999E-38 +? 9.99999E-38 +SHOULD BE ACTUAL RESULT + 9.99999E-38 9.99999E-38 PASS + + +PLEASE ENTER: + 9.87654E37 +? 9.87654E37 +SHOULD BE ACTUAL RESULT + 9.87654E+37 9.87654E+37 PASS + + +PLEASE ENTER: + 123456 +? 123456 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 123456. +? 123456. +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 123456.0 +? 123456.0 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + 987.654 +? 987.654 +SHOULD BE ACTUAL RESULT + 987.654 987.654 PASS + + +PLEASE ENTER: + 1234560 +? 1234560 +SHOULD BE ACTUAL RESULT + 1.23456E+6 1.23456E+6 PASS + + +PLEASE ENTER: + 123456000 +? 123456000 +SHOULD BE ACTUAL RESULT + 1.23456E+8 1.23456E+8 PASS + + +PLEASE ENTER: + .0123456 +? .0123456 +SHOULD BE ACTUAL RESULT + 1.23456E-2 1.23456E-2 PASS + + +PLEASE ENTER: + .000123456 +? .000123456 +SHOULD BE ACTUAL RESULT + 1.23456E-4 1.23456E-4 PASS + + +PLEASE ENTER: + .12 +? .12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + +.12 +? +.12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + -.12 +? -.12 +SHOULD BE ACTUAL RESULT +-.12 -.12 PASS + + +PLEASE ENTER: + 0.12 +? 0.12 +SHOULD BE ACTUAL RESULT + .12 .12 PASS + + +PLEASE ENTER: + 0.0 +? 0.0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + +0 +? +0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + -.000 +? -.000 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 1.23E9 +? 1.23E9 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E09 +? 1.23E09 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E+9 +? 1.23E+9 +SHOULD BE ACTUAL RESULT + 1.23000E+9 1.23E+9 PASS + + +PLEASE ENTER: + 1.23E-9 +? 1.23E-9 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 1.23E-09 +? 1.23E-09 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 1.23E-0009 +? 1.23E-0009 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 000001.2300000E-000009 +? 000001.2300000E-000009 +SHOULD BE ACTUAL RESULT + 1.23000E-9 1.23E-9 PASS + + +PLEASE ENTER: + 0E0 +? 0E0 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 000.000E22 +? 000.000E22 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + +000E55 +? +000E55 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 0.0E-000 +? 0.0E-000 +SHOULD BE ACTUAL RESULT + 0 0 PASS + + +PLEASE ENTER: + 123E0 +? 123E0 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E000 +? 123E000 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E-00 +? 123E-00 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 123E+0 +? 123E+0 +SHOULD BE ACTUAL RESULT + 123 123 PASS + + +PLEASE ENTER: + 12345678901234567890 +? 12345678901234567890 +SHOULD BE ACTUAL RESULT + 1.23457E+19 1.23457E+19 PASS + + +PLEASE ENTER: + 123456E10 +? 123456E10 +SHOULD BE ACTUAL RESULT + 1.23456E+15 1.23456E+15 PASS + + +PLEASE ENTER: + 0.0000123456E-10 +? 0.0000123456E-10 +SHOULD BE ACTUAL RESULT + 1.23456E-15 1.23456E-15 PASS + + +PLEASE ENTER: + 123456000000000E-9 +? 123456000000000E-9 +SHOULD BE ACTUAL RESULT + 123456 123456. PASS + + +PLEASE ENTER: + 0.000000000123456E15 +? 0.000000000123456E15 +SHOULD BE ACTUAL RESULT + 123456 123456 PASS + + +PLEASE ENTER: + .00987654E40 +? .00987654E40 +SHOULD BE ACTUAL RESULT + 9.87654E+37 9.87654E+37 PASS + + +PLEASE ENTER: + 987.654E-40 +? 987.654E-40 +SHOULD BE ACTUAL RESULT + 9.87654E-38 9.87654E-38 PASS + + +PLEASE ENTER: + 123456.E-3 +? 123456.E-3 +SHOULD BE ACTUAL RESULT + 123.456 123.456 PASS + + +PLEASE ENTER: + .123456E3 +? .123456E3 +SHOULD BE ACTUAL RESULT + 123.456 123.456 PASS + + +***** TEST PASSED. ***** + + END TEST + +END PROGRAM 107 + +Program interrupted at line 1110 diff --git a/NBS2/P108.80 b/NBS2/P108.80 new file mode 100644 index 0000000..c7ba124 --- /dev/null +++ b/NBS2/P108.80 @@ -0,0 +1,142 @@ +PROGRAM FILE 108: INPUT TO SUBSCRIPTED VARIABLES. + ANSI STANDARD 13.2, 13.4 + +SECTION 108.1: SIMPLE INPUT TO FILL ARRAY. + + BEGIN TEST. + +PLEASE ENTER: 0 +? 0 +PLEASE ENTER: 1 +? 1 +PLEASE ENTER: 2 +? 2 +PLEASE ENTER: 3 +? 3 +PLEASE ENTER: 4 +? 4 +PLEASE ENTER: 5 +? 5 +PLEASE ENTER: 6 +? 6 +PLEASE ENTER: 7 +? 7 +PLEASE ENTER: 8 +? 8 +PLEASE ENTER: 9 +? 9 +PLEASE ENTER: 10 +? 10 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 7 7 + 1 3 3 + 2 2 2 + 3 1 1 + 4 9 9 + 5 4 4 + 6 8 8 + 7 0 0 + 8 10 10 + 9 5 5 + 10 6 6 + +*** TEST PASSED *** + + END TEST. + + +SECTION 108.2: INPUT OF SUBSCRIPT FOLLOWED BY SUBSCRIPTED + VARIABLE. + + BEGIN TEST. + +FOR THIS REPLY, STATEMENT IS: INPUT A(I),I,A(I),I,A(I) +PLEASE ENTER 500,6,600,2,200 +? 500,6,600,2,200 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 10 10 + 1 11 11 + 2 200 200 + 3 13 13 + 4 14 14 + 5 500 500 + 6 600 600 + 7 17 17 + 8 18 18 + 9 19 19 + 10 20 20 + +*** TEST PASSED *** + + END TEST. + + +SECTION 108.3: NO ASSIGNMENT BEFORE VALIDATION OF INPUT. + + BEGIN TEST + +THIS SECTION TESTS THAT NO ASSIGNMENT IS DONE BEFORE +THE ENTIRE REPLY IS VALIDATED. + +PLEASE ENTER LINE NO. 1 FIRST. IT SHOULD BE REJECTED +BECAUSE OF INSUFFICIENT DATA AND YOU SHOULD BE ALLOWED +TO RE-SUPPLY INPUT. THEN ENTER LINE NO. 2 (NOTE THE SECOND +CHARACTER IS A COMMA RATHER THAN A PERIOD). + +*** IF NOT ALLOWED TO RE-SUPPLY INPUT, TEST FAILS *** + +THE ASSOCIATED INPUT STATEMENT IS: INPUT H,I,J,A(I),K,L +THEREFORE, AN 8 SHOULD BE PUT INTO A(1), AND NO OTHER +CHANGE MADE TO THE ARRAY. + +LINE NO. 1: 3.1,6,8,9,11 +LINE NO. 2: 3,1,6,8,9,11 +? 3.1,6,8,9,11 +*** Count Mismatch *** +*** Retry INPUT *** +? 3,1,6,8,9,11 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 0 0 + 1 8 8 + 2 200 200 + 3 300 300 + 4 400 400 + 5 500 500 + 6 600 600 + 7 700 700 + 8 800 800 + 9 900 900 + 10 1000 1000 + +*** TEST PASSED *** + + END TEST + +SECTION 108.4: INPUT TO TWO-DIMENSIONAL ARRAY. + + BEGIN TEST + +STATEMENT FOR THIS REPLY: INPUT I,J,X(I,J) +PLEASE ENTER 2,3,999 +? 2,3,999 + +X(I,J) J=1 J=2 J=3 +I= 1 1001 1002 1003 +I= 2 2001 2002 999 +I= 3 3001 3002 3003 +I= 4 4001 4002 4003 +I= 5 5001 5002 5003 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 108 + +Program interrupted at line 1090 diff --git a/NBS2/P108.BAS b/NBS2/P108.BAS new file mode 100644 index 0000000..7ecb897 --- /dev/null +++ b/NBS2/P108.BAS @@ -0,0 +1,127 @@ +10 PRINT "PROGRAM FILE 108: INPUT TO SUBSCRIPTED VARIABLES." +20 PRINT " ANSI STANDARD 13.2, 13.4" +30 PRINT +40 PRINT "SECTION 108.1: SIMPLE INPUT TO FILL ARRAY." +50 PRINT +60 PRINT " BEGIN TEST." +70 PRINT +80 DATA 7,3,2,1,5,9,10,0,6,4,8 +90 DATA 7,3,2,1,9,4,8,0,10,5,6 +100 FOR I=0 TO 10 +110 READ J +120 PRINT "PLEASE ENTER:";I +130 INPUT A(J) +140 NEXT I +150 FOR I=0 TO 10 +160 READ T(I) +170 NEXT I +180 GOSUB 3000 +190 PRINT " END TEST." +200 PRINT +210 PRINT +220 PRINT "SECTION 108.2: INPUT OF SUBSCRIPT FOLLOWED BY SUBSCRIPTED" +230 PRINT " VARIABLE." +240 PRINT +250 PRINT " BEGIN TEST." +260 PRINT +270 PRINT "FOR THIS REPLY, STATEMENT IS: INPUT A(I),I,A(I),I,A(I)" +280 PRINT "PLEASE ENTER 500,6,600,2,200" +290 FOR I=0 TO 10 +300 LET A(I)=10+I +310 LET T(I)=A(I) +320 NEXT I +330 LET I=5 +340 INPUT A(I),I,A(I),I,A(I) +350 LET T(5)=500 +360 LET T(6)=600 +370 LET T(2)=200 +380 GOSUB 3000 +390 PRINT " END TEST." +400 PRINT +410 PRINT +420 PRINT "SECTION 108.3: NO ASSIGNMENT BEFORE VALIDATION OF INPUT." +430 PRINT +440 PRINT " BEGIN TEST" +450 PRINT +460 PRINT "THIS SECTION TESTS THAT NO ASSIGNMENT IS DONE BEFORE" +470 PRINT "THE ENTIRE REPLY IS VALIDATED." +480 FOR I=0 TO 10 +490 LET A(I)=I*100 +500 LET T(I)=A(I) +510 NEXT I +520 LET T(1)=8 +530 PRINT +540 PRINT "PLEASE ENTER LINE NO. 1 FIRST. IT SHOULD BE REJECTED" +550 PRINT "BECAUSE OF INSUFFICIENT DATA AND YOU SHOULD BE ALLOWED" +560 PRINT "TO RE-SUPPLY INPUT. THEN ENTER LINE NO. 2 (NOTE THE SECOND" +570 PRINT "CHARACTER IS A COMMA RATHER THAN A PERIOD)." +580 PRINT +590 PRINT "*** IF NOT ALLOWED TO RE-SUPPLY INPUT, TEST FAILS ***" +600 PRINT +610 PRINT "THE ASSOCIATED INPUT STATEMENT IS: INPUT H,I,J,A(I),K,L" +620 PRINT "THEREFORE, AN 8 SHOULD BE PUT INTO A(1), AND NO OTHER" +630 PRINT "CHANGE MADE TO THE ARRAY." +640 PRINT +650 PRINT "LINE NO. 1: 3.1,6,8,9,11" +660 PRINT "LINE NO. 2: 3,1,6,8,9,11" +670 INPUT H,I,J,A(I),K,L +680 GOSUB 3000 +690 PRINT " END TEST" +700 PRINT +710 PRINT "SECTION 108.4: INPUT TO TWO-DIMENSIONAL ARRAY." +720 PRINT +730 FOR I=1 TO 5 +740 FOR J=1 TO 3 +750 LET X(I,J)=1000*I+J +760 NEXT J +770 NEXT I +780 PRINT " BEGIN TEST" +790 PRINT +800 PRINT "STATEMENT FOR THIS REPLY: INPUT I,J,X(I,J)" +810 PRINT "PLEASE ENTER 2,3,999" +820 LET E=0 +830 INPUT I,J,X(I,J) +840 PRINT +850 PRINT "X(I,J)","J=1","J=2","J=3" +860 FOR I=1 TO 5 +870 PRINT "I=";I,X(I,1),X(I,2),X(I,3) +880 FOR J=1 TO 3 +890 IF I<>2 THEN 920 +900 IF J<>3 THEN 920 +910 GOTO 940 +920 IF X(I,J)= 1000*I+J THEN 940 +930 LET E=1 +940 NEXT J +950 NEXT I +960 IF X(2,3)=999 THEN 980 +970 LET E=1 +980 PRINT +990 IF E=0 THEN 1040 +1000 PRINT "*** TEST FAILED ***" +1010 PRINT "EITHER X(2,3) <> 999 OR SOME OTHER " +1020 PRINT "X(I,j) <> 1000*I + J AS INITIALIZED." +1030 GOTO 1050 +1040 PRINT "*** TEST PASSED ***" +1050 PRINT +1060 PRINT " END TEST" +1070 PRINT +1080 PRINT "END PROGRAM 108" +1090 STOP +3000 REM SUBROUTINE TO CHECK THAT A(I)=T(I) +3010 LET F=0 +3020 PRINT +3025 PRINT " "," CONTENTS OF ARRAY" +3030 PRINT "SUBSCRIPT","SHOULD BE","ACTUAL" +3040 FOR I=0 TO 10 +3050 IF A(I)=T(I) THEN 3070 +3060 LET F=F+1 +3070 PRINT I,T(I),A(I) +3080 NEXT I +3090 PRINT +3100 IF F=0 THEN 3130 +3110 PRINT "*** TEST FAILED IN ";F;"CASE(S) ***" +3120 GOTO 3140 +3130 PRINT "*** TEST PASSED ***" +3140 PRINT +3150 RETURN +3160 END diff --git a/NBS2/P108.INP b/NBS2/P108.INP new file mode 100644 index 0000000..c10361b --- /dev/null +++ b/NBS2/P108.INP @@ -0,0 +1,15 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +500,6,600,2,200 +3.1,6,8,9,11 +3,1,6,8,9,11 +2,3,999 diff --git a/NBS2/P108.OUT b/NBS2/P108.OUT new file mode 100644 index 0000000..92416e3 --- /dev/null +++ b/NBS2/P108.OUT @@ -0,0 +1,142 @@ +PROGRAM FILE 108: INPUT TO SUBSCRIPTED VARIABLES. + ANSI STANDARD 13.2, 13.4 + +SECTION 108.1: SIMPLE INPUT TO FILL ARRAY. + + BEGIN TEST. + +PLEASE ENTER: 0 +? 0 +PLEASE ENTER: 1 +? 1 +PLEASE ENTER: 2 +? 2 +PLEASE ENTER: 3 +? 3 +PLEASE ENTER: 4 +? 4 +PLEASE ENTER: 5 +? 5 +PLEASE ENTER: 6 +? 6 +PLEASE ENTER: 7 +? 7 +PLEASE ENTER: 8 +? 8 +PLEASE ENTER: 9 +? 9 +PLEASE ENTER: 10 +? 10 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 7 7 + 1 3 3 + 2 2 2 + 3 1 1 + 4 9 9 + 5 4 4 + 6 8 8 + 7 0 0 + 8 10 10 + 9 5 5 + 10 6 6 + +*** TEST PASSED *** + + END TEST. + + +SECTION 108.2: INPUT OF SUBSCRIPT FOLLOWED BY SUBSCRIPTED + VARIABLE. + + BEGIN TEST. + +FOR THIS REPLY, STATEMENT IS: INPUT A(I),I,A(I),I,A(I) +PLEASE ENTER 500,6,600,2,200 +? 500,6,600,2,200 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 10 10 + 1 11 11 + 2 200 200 + 3 13 13 + 4 14 14 + 5 500 500 + 6 600 600 + 7 17 17 + 8 18 18 + 9 19 19 + 10 20 20 + +*** TEST PASSED *** + + END TEST. + + +SECTION 108.3: NO ASSIGNMENT BEFORE VALIDATION OF INPUT. + + BEGIN TEST + +THIS SECTION TESTS THAT NO ASSIGNMENT IS DONE BEFORE +THE ENTIRE REPLY IS VALIDATED. + +PLEASE ENTER LINE NO. 1 FIRST. IT SHOULD BE REJECTED +BECAUSE OF INSUFFICIENT DATA AND YOU SHOULD BE ALLOWED +TO RE-SUPPLY INPUT. THEN ENTER LINE NO. 2 (NOTE THE SECOND +CHARACTER IS A COMMA RATHER THAN A PERIOD). + +*** IF NOT ALLOWED TO RE-SUPPLY INPUT, TEST FAILS *** + +THE ASSOCIATED INPUT STATEMENT IS: INPUT H,I,J,A(I),K,L +THEREFORE, AN 8 SHOULD BE PUT INTO A(1), AND NO OTHER +CHANGE MADE TO THE ARRAY. + +LINE NO. 1: 3.1,6,8,9,11 +LINE NO. 2: 3,1,6,8,9,11 +? 3.1,6,8,9,11 +*** Count Mismatch *** +*** Retry INPUT *** +? 3,1,6,8,9,11 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 0 0 + 1 8 8 + 2 200 200 + 3 300 300 + 4 400 400 + 5 500 500 + 6 600 600 + 7 700 700 + 8 800 800 + 9 900 900 + 10 1000 1000 + +*** TEST PASSED *** + + END TEST + +SECTION 108.4: INPUT TO TWO-DIMENSIONAL ARRAY. + + BEGIN TEST + +STATEMENT FOR THIS REPLY: INPUT I,J,X(I,J) +PLEASE ENTER 2,3,999 +? 2,3,999 + +X(I,J) J=1 J=2 J=3 +I= 1 1001 1002 1003 +I= 2 2001 2002 999 +I= 3 3001 3002 3003 +I= 4 4001 4002 4003 +I= 5 5001 5002 5003 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 108 + +Program interrupted at line 1090 diff --git a/NBS2/P108.dif b/NBS2/P108.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P108.in b/NBS2/P108.in new file mode 100644 index 0000000..c10361b --- /dev/null +++ b/NBS2/P108.in @@ -0,0 +1,15 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +500,6,600,2,200 +3.1,6,8,9,11 +3,1,6,8,9,11 +2,3,999 diff --git a/NBS2/P108.run b/NBS2/P108.run new file mode 100644 index 0000000..c7ba124 --- /dev/null +++ b/NBS2/P108.run @@ -0,0 +1,142 @@ +PROGRAM FILE 108: INPUT TO SUBSCRIPTED VARIABLES. + ANSI STANDARD 13.2, 13.4 + +SECTION 108.1: SIMPLE INPUT TO FILL ARRAY. + + BEGIN TEST. + +PLEASE ENTER: 0 +? 0 +PLEASE ENTER: 1 +? 1 +PLEASE ENTER: 2 +? 2 +PLEASE ENTER: 3 +? 3 +PLEASE ENTER: 4 +? 4 +PLEASE ENTER: 5 +? 5 +PLEASE ENTER: 6 +? 6 +PLEASE ENTER: 7 +? 7 +PLEASE ENTER: 8 +? 8 +PLEASE ENTER: 9 +? 9 +PLEASE ENTER: 10 +? 10 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 7 7 + 1 3 3 + 2 2 2 + 3 1 1 + 4 9 9 + 5 4 4 + 6 8 8 + 7 0 0 + 8 10 10 + 9 5 5 + 10 6 6 + +*** TEST PASSED *** + + END TEST. + + +SECTION 108.2: INPUT OF SUBSCRIPT FOLLOWED BY SUBSCRIPTED + VARIABLE. + + BEGIN TEST. + +FOR THIS REPLY, STATEMENT IS: INPUT A(I),I,A(I),I,A(I) +PLEASE ENTER 500,6,600,2,200 +? 500,6,600,2,200 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 10 10 + 1 11 11 + 2 200 200 + 3 13 13 + 4 14 14 + 5 500 500 + 6 600 600 + 7 17 17 + 8 18 18 + 9 19 19 + 10 20 20 + +*** TEST PASSED *** + + END TEST. + + +SECTION 108.3: NO ASSIGNMENT BEFORE VALIDATION OF INPUT. + + BEGIN TEST + +THIS SECTION TESTS THAT NO ASSIGNMENT IS DONE BEFORE +THE ENTIRE REPLY IS VALIDATED. + +PLEASE ENTER LINE NO. 1 FIRST. IT SHOULD BE REJECTED +BECAUSE OF INSUFFICIENT DATA AND YOU SHOULD BE ALLOWED +TO RE-SUPPLY INPUT. THEN ENTER LINE NO. 2 (NOTE THE SECOND +CHARACTER IS A COMMA RATHER THAN A PERIOD). + +*** IF NOT ALLOWED TO RE-SUPPLY INPUT, TEST FAILS *** + +THE ASSOCIATED INPUT STATEMENT IS: INPUT H,I,J,A(I),K,L +THEREFORE, AN 8 SHOULD BE PUT INTO A(1), AND NO OTHER +CHANGE MADE TO THE ARRAY. + +LINE NO. 1: 3.1,6,8,9,11 +LINE NO. 2: 3,1,6,8,9,11 +? 3.1,6,8,9,11 +*** Count Mismatch *** +*** Retry INPUT *** +? 3,1,6,8,9,11 + + CONTENTS OF ARRAY +SUBSCRIPT SHOULD BE ACTUAL + 0 0 0 + 1 8 8 + 2 200 200 + 3 300 300 + 4 400 400 + 5 500 500 + 6 600 600 + 7 700 700 + 8 800 800 + 9 900 900 + 10 1000 1000 + +*** TEST PASSED *** + + END TEST + +SECTION 108.4: INPUT TO TWO-DIMENSIONAL ARRAY. + + BEGIN TEST + +STATEMENT FOR THIS REPLY: INPUT I,J,X(I,J) +PLEASE ENTER 2,3,999 +? 2,3,999 + +X(I,J) J=1 J=2 J=3 +I= 1 1001 1002 1003 +I= 2 2001 2002 999 +I= 3 3001 3002 3003 +I= 4 4001 4002 4003 +I= 5 5001 5002 5003 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 108 + +Program interrupted at line 1090 diff --git a/NBS2/P109.80 b/NBS2/P109.80 new file mode 100644 index 0000000..58550db --- /dev/null +++ b/NBS2/P109.80 @@ -0,0 +1,421 @@ +PROGRAM FILE 109: STRING INPUT. + ANSI STANDARD 3.2, 13.2, 13.4 + +SECTION 109.1 INPUT OF QUOTED AND UNQUOTED STRINGS + +PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED +BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER +PUNCTUATION. + + - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=) +SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT +CONTAINS A NUMBER-SIGN (#), SUBSTITUTE A QUOTE. +THUS, THE PROMPT: + ==#ER#== +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. SPACE + 2. SPACE + 3. QUOTE + 4. LETTER E + 5. LETTER R + 6. QUOTE + 7. SPACE + 8. SPACE + +THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS +UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT +TO COUNT ON A TERMINAL. + +PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT +ON THE CORRECT OPERATION OF THE STRING COMPARISON +FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE +WILL LIKELY GIVE INVALID RESULTS. + +ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFOR +IF THE PROCESSOR REJECTS ANY OF THEM, +*** TEST FAILED *** + +FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED +TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO +POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE +ALIGNED WITH THE PROMPT STRING. + + BEGIN TEST + + +PLEASE ENTER: + ABC +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + #ABC# +? "ABC" + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ABC,DEF +? ABC,DEF + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + #ABC#,#DEF# +? "ABC","DEF" + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + #ABC#,DEF +? "ABC",DEF + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + ABC,#DEF# +? ABC,"DEF" + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + ABCDEFGHIJKLM +? ABCDEFGHIJKLM + +SHOULD BE: ***ABCDEFGHIJKLM*** +ACTUAL: ***ABCDEFGHIJKLM*** +TEST OK + + +PLEASE ENTER: + NOPQRSTUVWXYZ +? NOPQRSTUVWXYZ + +SHOULD BE: ***NOPQRSTUVWXYZ*** +ACTUAL: ***NOPQRSTUVWXYZ*** +TEST OK + + +PLEASE ENTER: + +.=====- +? +. - + +SHOULD BE: ***+. -*** +ACTUAL: ***+. -*** +TEST OK + + +PLEASE ENTER: + ----5---10---15-18 +? ----5---10---15-18 + +SHOULD BE: ***----5---10---15-18*** +ACTUAL: ***----5---10---15-18*** +TEST OK + + +PLEASE ENTER: + ===ABC +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ABC=== +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ===ABC=== +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + #===ABC# +? " ABC" + +SHOULD BE: *** ABC*** +ACTUAL: *** ABC*** +TEST OK + + +PLEASE ENTER: + #ABC===# +? "ABC " + +SHOULD BE: ***ABC *** +ACTUAL: ***ABC *** +TEST OK + + +PLEASE ENTER: + #===ABC===# +? " ABC " + +SHOULD BE: *** ABC *** +ACTUAL: *** ABC *** +TEST OK + + +PLEASE ENTER: + ===#===ABC====#==== +? " ABC " + +SHOULD BE: *** ABC *** +ACTUAL: *** ABC *** +TEST OK + + +PLEASE ENTER: + ===ABC==,===#DEF#===,==GHI== +? ABC , "DEF" , GHI + +SHOULD BE: ***ABCDEFGHI*** +ACTUAL: ***ABCDEFGHI*** +TEST OK + + +PLEASE ENTER: + =1=,==2==,===3=== +? 1 , 2 , 3 + +SHOULD BE: ***123*** +ACTUAL: ***123*** +TEST OK + + +PLEASE ENTER: + A===B +? A B + +SHOULD BE: ***A B*** +ACTUAL: ***A B*** +TEST OK + + +PLEASE ENTER: + ===A===B=== +? A B + +SHOULD BE: ***A B*** +ACTUAL: ***A B*** +TEST OK + + +PLEASE ENTER: + ===EIGHTEEN=POSITIONS=== +? EIGHTEEN POSITIONS + +SHOULD BE: ***EIGHTEEN POSITIONS*** +ACTUAL: ***EIGHTEEN POSITIONS*** +TEST OK + + +PLEASE ENTER: + ==A==B==,==C==D==,==E==F== +? A B , C D , E F + +SHOULD BE: ***A BC DE F*** +ACTUAL: ***A BC DE F*** +TEST OK + + +PLEASE ENTER: + ==A==B==,==#D#==,==E==F== +? A B , "D" , E F + +SHOULD BE: ***A BDE F*** +ACTUAL: ***A BDE F*** +TEST OK + + +PLEASE ENTER: + =#A#=,=B=C=,=#D#= +? "A" , B C , "D" + +SHOULD BE: ***AB CD*** +ACTUAL: ***AB CD*** +TEST OK + + +PLEASE ENTER: + ==#==A==B==#==,=#=C=D=#=,=E=F= +? " A B " , " C D " , E F + +SHOULD BE: *** A B C D E F*** +ACTUAL: *** A B C D E F*** +TEST OK + + +PLEASE ENTER: + A,B,#C,D#,#E# +? A,B,"C,D","E" + +SHOULD BE: ***ABC,DE*** +ACTUAL: ***ABC,DE*** +TEST OK + + +PLEASE ENTER: + ## +? "" + +SHOULD BE: ****** +ACTUAL: ****** +TEST OK + + +PLEASE ENTER: + A,##,B +? A,"",B + +SHOULD BE: ***AB*** +ACTUAL: ***AB*** +TEST OK + + +PLEASE ENTER: + ==A==,==##==,==B== +? A , "" , B + +SHOULD BE: ***AB*** +ACTUAL: ***AB*** +TEST OK + + +PLEASE ENTER: + AB+3-5.6B +? AB+3-5.6B + +SHOULD BE: ***AB+3-5.6B*** +ACTUAL: ***AB+3-5.6B*** +TEST OK + + +PLEASE ENTER: + -1.23 +? -1.23 + +SHOULD BE: ***-1.23*** +ACTUAL: ***-1.23*** +TEST OK + + +PLEASE ENTER: + +3-5=-8+6 +? +3-5 -8+6 + +SHOULD BE: ***+3-5 -8+6*** +ACTUAL: ***+3-5 -8+6*** +TEST OK + + +*** TEST PASSED *** + + END TEST + +SECTION 109.2 TEST QUOTED-STRING-CHARACTERS + +THIS PART OF THE TEST IS INTENDED TO DETERMINE WHETHER +QUOTED STRINGS ON INPUT CAN CONTAIN ANY OF THE LEGAL +QUOTED STRING CHARACTERS. + +PLEASE RESPOND TO THE PROMPT BY ENTERING THE REQUESTED +CHARACTERS IMMEDIATELY PRECEDED AND FOLLOWED BY THE +QUOTE CHARACTER. THUS THE PROMPT: + ABC +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. QUOTE + 2. LETTER A + 3. LETTER B + 4. LETTER C + 5. QUOTE +THUS THE QUOTE TO BE ENTERED IS NOW IMPLICIT AND THE +NUMBER SIGN (#) AND EQUALS SIGN (=) HAVE NO SPECIAL +SIGNIFICANCE. + + BEGIN TEST + + +PLEASE ENTER: + ABCDEFGHIJKLM +? "ABCDEFGHIJKLM" +SHOULD BE: ***ABCDEFGHIJKLM*** +ACTUAL: ***ABCDEFGHIJKLM*** +TEST OK + + +PLEASE ENTER: + NOPQRSTUVWXYZ +? "NOPQRSTUVWXYZ" +SHOULD BE: ***NOPQRSTUVWXYZ*** +ACTUAL: ***NOPQRSTUVWXYZ*** +TEST OK + + +PLEASE ENTER: + 0123456789 +? "0123456789" +SHOULD BE: ***0123456789*** +ACTUAL: ***0123456789*** +TEST OK + + +PLEASE ENTER: + !#$%&'()*+,- +? "!#$%&'()*+,-" +SHOULD BE: ***!#$%&'()*+,-*** +ACTUAL: ***!#$%&'()*+,-*** +TEST OK + + +PLEASE ENTER: + ./:;<=>?^_ +? "./:;<=>?^_" +SHOULD BE: ***./:;<=>?^_*** +ACTUAL: ***./:;<=>?^_*** +TEST OK + + +PLEASE ENTER: + EMBEDDED SPACE +? "EMBEDDED SPACE" +SHOULD BE: ***EMBEDDED SPACE*** +ACTUAL: ***EMBEDDED SPACE*** +TEST OK + +***** TEST PASSED ***** + + END TEST + +END PROGRAM 109 diff --git a/NBS2/P109.BAS b/NBS2/P109.BAS new file mode 100644 index 0000000..7ac4ab8 --- /dev/null +++ b/NBS2/P109.BAS @@ -0,0 +1,199 @@ +10 PRINT "PROGRAM FILE 109: STRING INPUT." +20 PRINT " ANSI STANDARD 3.2, 13.2, 13.4" +30 PRINT +40 PRINT "SECTION 109.1 INPUT OF QUOTED AND UNQUOTED STRINGS" +50 PRINT +60 PRINT "PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED" +70 PRINT "BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER" +80 PRINT "PUNCTUATION." +90 PRINT +100 PRINT " - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=)" +110 PRINT "SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT" +120 PRINT "CONTAINS A NUMBER-SIGN (#), SUBSTITUTE A QUOTE." +130 PRINT "THUS, THE PROMPT:" +140 PRINT " ==#ER#==" +150 PRINT "SHOULD CAUSE YOU TO STRIKE THE KEYS:" +160 PRINT " 1. SPACE" +170 PRINT " 2. SPACE" +180 PRINT " 3. QUOTE" +190 PRINT " 4. LETTER E" +200 PRINT " 5. LETTER R" +210 PRINT " 6. QUOTE" +220 PRINT " 7. SPACE" +230 PRINT " 8. SPACE" +240 PRINT +250 PRINT "THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS" +260 PRINT "UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT" +270 PRINT "TO COUNT ON A TERMINAL." +280 PRINT +290 PRINT "PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT" +300 PRINT "ON THE CORRECT OPERATION OF THE STRING COMPARISON" +310 PRINT "FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE" +320 PRINT "WILL LIKELY GIVE INVALID RESULTS." +330 PRINT +340 PRINT "ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFOR " +350 PRINT "IF THE PROCESSOR REJECTS ANY OF THEM, " +360 PRINT "*** TEST FAILED ***" +370 PRINT +380 PRINT "FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED" +390 PRINT "TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO" +400 PRINT "POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE" +410 PRINT "ALIGNED WITH THE PROMPT STRING." +420 PRINT +430 PRINT " BEGIN TEST" +440 LET F=0 +450 READ N,P$ +460 LET Q$="" +470 IF N<100 THEN 500 +480 LET N=N-100 +490 READ Q$ +500 IF N=0 THEN 1380 +510 LET A$="" +520 LET B$="" +530 LET C$="" +540 LET D$="" +550 LET I$="" +560 LET J$="" +570 LET K$="" +580 LET L$="" +590 READ I$ +600 IF N<=1 THEN 660 +610 READ J$ +620 IF N<=2 THEN 660 +630 READ K$ +640 IF N<=3 THEN 660 +650 READ L$ +660 PRINT +670 PRINT +680 PRINT "PLEASE ENTER:" +690 PRINT " ";P$;Q$ +700 ON N GOTO 710,730,750,770 +710 INPUT A$ +720 GOTO 790 +730 INPUT A$,B$ +740 GOTO 790 +750 INPUT A$,B$,C$ +760 GOTO 790 +770 INPUT A$,B$,C$,D$ +780 GOTO 790 +790 REM COMMON EXIT POINT +800 PRINT +810 PRINT "SHOULD BE: ***";I$;J$;K$;L$;"***" +820 PRINT "ACTUAL: ***";A$;B$;C$;D$;"***" +830 IF A$<>I$ THEN 890 +840 IF B$<>J$ THEN 890 +850 IF C$<>K$ THEN 890 +860 IF D$<>L$ THEN 890 +870 PRINT "TEST OK" +880 GOTO 450 +890 PRINT "INPUT NOT EQUAL EXPECTED VALUE. RE-TRY (Y OR N)?" +900 INPUT T$ +910 IF T$<>"N" THEN 660 +920 PRINT "TEST FAILED." +930 LET F=F+1 +940 GOTO 450 +950 REM DATA ITEM FORMAT: +960 REM 1 - NUMBER OF VARIABLES (+100 IF LONG PROMPT) +970 REM 2 - PROMPT +980 REM 3 - CORRECT RESULT +990 REM OR +1000 REM 2,3 - LONG PROMPT +1010 REM 4 - CORRECT RESULT +1020 DATA 1,"ABC","ABC" +1030 DATA 1,"#ABC#","ABC" +1040 DATA 2,"ABC,DEF","ABC","DEF" +1050 DATA 2,"#ABC#,#DEF#","ABC","DEF" +1060 DATA 2,"#ABC#,DEF","ABC","DEF" +1070 DATA 2,"ABC,#DEF#","ABC","DEF" +1080 REM TEST ALL CHARACTERS LEGAL IN UNQUOTED STRING +1090 DATA 1,"ABCDEFGHIJKLM","ABCDEFGHIJKLM" +1100 DATA 1,"NOPQRSTUVWXYZ","NOPQRSTUVWXYZ" +1110 DATA 1,"+.=====-","+. -" +1120 DATA 1,"----5---10---15-18","----5---10---15-18" +1130 DATA 1,"===ABC","ABC" +1140 DATA 1,"ABC===","ABC" +1150 DATA 1,"===ABC===","ABC" +1160 DATA 1,"#===ABC#"," ABC" +1170 DATA 1,"#ABC===#","ABC " +1180 DATA 1,"#===ABC===#"," ABC " +1190 DATA 101,"===#===ABC","====#===="," ABC " +1200 DATA 103,"===ABC==,===#DEF#","===,==GHI==","ABC","DEF","GHI" +1210 DATA 3,"=1=,==2==,===3===","1","2","3" +1220 DATA 1,"A===B","A B" +1230 DATA 1,"===A===B===","A B" +1240 DATA 101,"===EIGHTEEN","=POSITIONS===","EIGHTEEN POSITIONS" +1250 DATA 103,"==A==B==,==C=","=D==,==E==F==","A B","C D","E F" +1260 DATA 103,"==A==B==,","==#D#==,==E==F==","A B","D","E F" +1270 DATA 3,"=#A#=,=B=C=,=#D#=","A","B C","D" +1280 DATA 103,"==#==A==B==#==,","=#=C=D=#=,=E=F="," A B " +1290 DATA " C D ","E F" +1300 DATA 4,"A,B,#C,D#,#E#","A","B","C,D","E" +1310 DATA 1,"##","" +1320 DATA 3,"A,##,B","A","","B" +1330 DATA 3,"==A==,==##==,==B==","A","","B" +1340 DATA 1,"AB+3-5.6B","AB+3-5.6B" +1350 DATA 1,"-1.23","-1.23" +1360 DATA 1,"+3-5=-8+6","+3-5 -8+6" +1370 DATA 0,"Q" +1380 PRINT +1390 PRINT +1400 IF F=0 THEN 1430 +1410 PRINT "*** TEST FAILED: ";F;" CASE(S) HANDLED IMPROPERLY ***" +1420 GOTO 1440 +1430 PRINT "*** TEST PASSED ***" +1440 PRINT +1450 PRINT " END TEST" +1460 PRINT +1470 PRINT "SECTION 109.2 TEST QUOTED-STRING-CHARACTERS" +1480 PRINT +1490 PRINT "THIS PART OF THE TEST IS INTENDED TO DETERMINE WHETHER" +1500 PRINT "QUOTED STRINGS ON INPUT CAN CONTAIN ANY OF THE LEGAL" +1510 PRINT "QUOTED STRING CHARACTERS." +1520 PRINT +1530 PRINT "PLEASE RESPOND TO THE PROMPT BY ENTERING THE REQUESTED" +1540 PRINT "CHARACTERS IMMEDIATELY PRECEDED AND FOLLOWED BY THE" +1550 PRINT "QUOTE CHARACTER. THUS THE PROMPT:" +1560 PRINT " ABC" +1570 PRINT "SHOULD CAUSE YOU TO STRIKE THE KEYS:" +1580 PRINT " 1. QUOTE" +1590 PRINT " 2. LETTER A" +1600 PRINT " 3. LETTER B" +1610 PRINT " 4. LETTER C" +1620 PRINT " 5. QUOTE" +1630 PRINT "THUS THE QUOTE TO BE ENTERED IS NOW IMPLICIT AND THE" +1640 PRINT "NUMBER SIGN (#) AND EQUALS SIGN (=) HAVE NO SPECIAL" +1650 PRINT "SIGNIFICANCE." +1660 PRINT +1670 PRINT " BEGIN TEST" +1680 LET F=0 +1690 READ A$ +1700 IF A$="Q" THEN 1900 +1710 PRINT +1720 PRINT +1730 PRINT "PLEASE ENTER:" +1740 PRINT " ";A$ +1750 INPUT B$ +1760 PRINT "SHOULD BE: ***";A$;"***" +1770 PRINT "ACTUAL: ***";B$;"***" +1780 IF A$<>B$ THEN 1810 +1790 PRINT "TEST OK" +1800 GOTO 1690 +1810 PRINT "INPUT NOT EQUAL TO EXPECTED VALUE. RE-TRY (Y OR N)?" +1820 INPUT C$ +1830 IF C$<>"N" THEN 1710 +1840 PRINT "TEST FAILED" +1850 LET F=F+1 +1860 GOTO 1690 +1870 DATA "ABCDEFGHIJKLM","NOPQRSTUVWXYZ","0123456789" +1880 DATA "!#$%&'()*+,-","./:;<=>?^_","EMBEDDED SPACE" +1890 DATA "Q" +1900 PRINT +1910 IF F=0 THEN 1940 +1920 PRINT "*** TEST FAILED. ";F;" CASE(S) HANDLED IMPROPERLY. ***" +1930 GOTO 1950 +1940 PRINT "***** TEST PASSED *****" +1950 PRINT +1960 PRINT " END TEST" +1970 PRINT +1980 PRINT "END PROGRAM 109" +1990 END diff --git a/NBS2/P109.INP b/NBS2/P109.INP new file mode 100644 index 0000000..5bdab64 --- /dev/null +++ b/NBS2/P109.INP @@ -0,0 +1,39 @@ +ABC +"ABC" +ABC,DEF +"ABC","DEF" +"ABC",DEF +ABC,"DEF" +ABCDEFGHIJKLM +NOPQRSTUVWXYZ ++. - +----5---10---15-18 + ABC +ABC + ABC +" ABC" +"ABC " +" ABC " + " ABC " + ABC , "DEF" , GHI + 1 , 2 , 3 +A B + A B + EIGHTEEN POSITIONS + A B , C D , E F + A B , "D" , E F + "A" , B C , "D" + " A B " , " C D " , E F +A,B,"C,D","E" +"" +A,"",B + A , "" , B +AB+3-5.6B +-1.23 ++3-5 -8+6 +"ABCDEFGHIJKLM" +"NOPQRSTUVWXYZ" +"0123456789" +"!#$%&'()*+,-" +"./:;<=>?^_" +"EMBEDDED SPACE" diff --git a/NBS2/P109.OUT b/NBS2/P109.OUT new file mode 100644 index 0000000..ea54564 --- /dev/null +++ b/NBS2/P109.OUT @@ -0,0 +1,421 @@ +PROGRAM FILE 109: STRING INPUT. + ANSI STANDARD 3.2, 13.2, 13.4 + +SECTION 109.1 INPUT OF QUOTED AND UNQUOTED STRINGS + +PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED +BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER +PUNCTUATION. + + - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=) +SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT +CONTAINS A NUMBER-SIGN (#), SUBSTITUTE A QUOTE. +THUS, THE PROMPT: + ==#ER#== +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. SPACE + 2. SPACE + 3. QUOTE + 4. LETTER E + 5. LETTER R + 6. QUOTE + 7. SPACE + 8. SPACE + +THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS +UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT +TO COUNT ON A TERMINAL. + +PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT +ON THE CORRECT OPERATION OF THE STRING COMPARISON +FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE +WILL LIKELY GIVE INVALID RESULTS. + +ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFOR +IF THE PROCESSOR REJECTS ANY OF THEM, +*** TEST FAILED *** + +FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED +TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO +POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE +ALIGNED WITH THE PROMPT STRING. + + BEGIN TEST + + +PLEASE ENTER: + ABC +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + #ABC# +? "ABC" + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ABC,DEF +? ABC,DEF + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + #ABC#,#DEF# +? "ABC","DEF" + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + #ABC#,DEF +? "ABC",DEF + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + ABC,#DEF# +? ABC,"DEF" + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + ABCDEFGHIJKLM +? ABCDEFGHIJKLM + +SHOULD BE: ***ABCDEFGHIJKLM*** +ACTUAL: ***ABCDEFGHIJKLM*** +TEST OK + + +PLEASE ENTER: + NOPQRSTUVWXYZ +? NOPQRSTUVWXYZ + +SHOULD BE: ***NOPQRSTUVWXYZ*** +ACTUAL: ***NOPQRSTUVWXYZ*** +TEST OK + + +PLEASE ENTER: + +.=====- +? +. - + +SHOULD BE: ***+. -*** +ACTUAL: ***+. -*** +TEST OK + + +PLEASE ENTER: + ----5---10---15-18 +? ----5---10---15-18 + +SHOULD BE: ***----5---10---15-18*** +ACTUAL: ***----5---10---15-18*** +TEST OK + + +PLEASE ENTER: + ===ABC +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ABC=== +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ===ABC=== +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + #===ABC# +? " ABC" + +SHOULD BE: *** ABC*** +ACTUAL: *** ABC*** +TEST OK + + +PLEASE ENTER: + #ABC===# +? "ABC " + +SHOULD BE: ***ABC *** +ACTUAL: ***ABC *** +TEST OK + + +PLEASE ENTER: + #===ABC===# +? " ABC " + +SHOULD BE: *** ABC *** +ACTUAL: *** ABC *** +TEST OK + + +PLEASE ENTER: + ===#===ABC====#==== +? " ABC " + +SHOULD BE: *** ABC *** +ACTUAL: *** ABC *** +TEST OK + + +PLEASE ENTER: + ===ABC==,===#DEF#===,==GHI== +? ABC , "DEF" , GHI + +SHOULD BE: ***ABCDEFGHI*** +ACTUAL: ***ABCDEFGHI*** +TEST OK + + +PLEASE ENTER: + =1=,==2==,===3=== +? 1 , 2 , 3 + +SHOULD BE: ***123*** +ACTUAL: ***123*** +TEST OK + + +PLEASE ENTER: + A===B +? A B + +SHOULD BE: ***A B*** +ACTUAL: ***A B*** +TEST OK + + +PLEASE ENTER: + ===A===B=== +? A B + +SHOULD BE: ***A B*** +ACTUAL: ***A B*** +TEST OK + + +PLEASE ENTER: + ===EIGHTEEN=POSITIONS=== +? EIGHTEEN POSITIONS + +SHOULD BE: ***EIGHTEEN POSITIONS*** +ACTUAL: ***EIGHTEEN POSITIONS*** +TEST OK + + +PLEASE ENTER: + ==A==B==,==C==D==,==E==F== +? A B , C D , E F + +SHOULD BE: ***A BC DE F*** +ACTUAL: ***A BC DE F*** +TEST OK + + +PLEASE ENTER: + ==A==B==,==#D#==,==E==F== +? A B , "D" , E F + +SHOULD BE: ***A BDE F*** +ACTUAL: ***A BDE F*** +TEST OK + + +PLEASE ENTER: + =#A#=,=B=C=,=#D#= +? "A" , B C , "D" + +SHOULD BE: ***AB CD*** +ACTUAL: ***AB CD*** +TEST OK + + +PLEASE ENTER: + ==#==A==B==#==,=#=C=D=#=,=E=F= +? " A B " , " C D " , E F + +SHOULD BE: *** A B C D E F*** +ACTUAL: *** A B C D E F*** +TEST OK + + +PLEASE ENTER: + A,B,#C,D#,#E# +? A,B,"C,D","E" + +SHOULD BE: ***ABC,DE*** +ACTUAL: ***ABC,DE*** +TEST OK + + +PLEASE ENTER: + ## +? "" + +SHOULD BE: ****** +ACTUAL: ****** +TEST OK + + +PLEASE ENTER: + A,##,B +? A,"",B + +SHOULD BE: ***AB*** +ACTUAL: ***AB*** +TEST OK + + +PLEASE ENTER: + ==A==,==##==,==B== +? A , "" , B + +SHOULD BE: ***AB*** +ACTUAL: ***AB*** +TEST OK + + +PLEASE ENTER: + AB+3-5.6B +? AB+3-5.6B + +SHOULD BE: ***AB+3-5.6B*** +ACTUAL: ***AB+3-5.6B*** +TEST OK + + +PLEASE ENTER: + -1.23 +? -1.23 + +SHOULD BE: ***-1.23*** +ACTUAL: ***-1.23*** +TEST OK + + +PLEASE ENTER: + +3-5=-8+6 +? +3-5 -8+6 + +SHOULD BE: ***+3-5 -8+6*** +ACTUAL: ***+3-5 -8+6*** +TEST OK + + +*** TEST PASSED *** + + END TEST + +SECTION 109.2 TEST QUOTED-STRING-CHARACTERS + +THIS PART OF THE TEST IS INTENDED TO DETERMINE WHETHER +QUOTED STRINGS ON INPUT CAN CONTAIN ANY OF THE LEGAL +QUOTED STRING CHARACTERS. + +PLEASE RESPOND TO THE PROMPT BY ENTERING THE REQUESTED +CHARACTERS IMMEDIATELY PRECEDED AND FOLLOWED BY THE +QUOTE CHARACTER. THUS THE PROMPT: + ABC +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. QUOTE + 2. LETTER A + 3. LETTER B + 4. LETTER C + 5. QUOTE +THUS THE QUOTE TO BE ENTERED IS NOW IMPLICIT AND THE +NUMBER SIGN (#) AND EQUALS SIGN (=) HAVE NO SPECIAL +SIGNIFICANCE. + + BEGIN TEST + + +PLEASE ENTER: + ABCDEFGHIJKLM +? "ABCDEFGHIJKLM" +SHOULD BE: ***ABCDEFGHIJKLM*** +ACTUAL: ***ABCDEFGHIJKLM*** +TEST OK + + +PLEASE ENTER: + NOPQRSTUVWXYZ +? "NOPQRSTUVWXYZ" +SHOULD BE: ***NOPQRSTUVWXYZ*** +ACTUAL: ***NOPQRSTUVWXYZ*** +TEST OK + + +PLEASE ENTER: + 0123456789 +? "0123456789" +SHOULD BE: ***0123456789*** +ACTUAL: ***0123456789*** +TEST OK + + +PLEASE ENTER: + !#$%&'()*+,- +? "!#$%&'()*+,-" +SHOULD BE: ***!#$%&'()*+,-*** +ACTUAL: ***!#$%&'()*+,-*** +TEST OK + + +PLEASE ENTER: + ./:;<=>?^_ +? "./:;<=>?^_" +SHOULD BE: ***./:;<=>?^_*** +ACTUAL: ***./:;<=>?^_*** +TEST OK + + +PLEASE ENTER: + EMBEDDED SPACE +? "EMBEDDED SPACE" +SHOULD BE: ***EMBEDDED SPACE*** +ACTUAL: ***EMBEDDED SPACE*** +TEST OK + +***** TEST PASSED ***** + + END TEST + +END PROGRAM 109 diff --git a/NBS2/P109.dif b/NBS2/P109.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P109.in b/NBS2/P109.in new file mode 100644 index 0000000..5bdab64 --- /dev/null +++ b/NBS2/P109.in @@ -0,0 +1,39 @@ +ABC +"ABC" +ABC,DEF +"ABC","DEF" +"ABC",DEF +ABC,"DEF" +ABCDEFGHIJKLM +NOPQRSTUVWXYZ ++. - +----5---10---15-18 + ABC +ABC + ABC +" ABC" +"ABC " +" ABC " + " ABC " + ABC , "DEF" , GHI + 1 , 2 , 3 +A B + A B + EIGHTEEN POSITIONS + A B , C D , E F + A B , "D" , E F + "A" , B C , "D" + " A B " , " C D " , E F +A,B,"C,D","E" +"" +A,"",B + A , "" , B +AB+3-5.6B +-1.23 ++3-5 -8+6 +"ABCDEFGHIJKLM" +"NOPQRSTUVWXYZ" +"0123456789" +"!#$%&'()*+,-" +"./:;<=>?^_" +"EMBEDDED SPACE" diff --git a/NBS2/P109.run b/NBS2/P109.run new file mode 100644 index 0000000..58550db --- /dev/null +++ b/NBS2/P109.run @@ -0,0 +1,421 @@ +PROGRAM FILE 109: STRING INPUT. + ANSI STANDARD 3.2, 13.2, 13.4 + +SECTION 109.1 INPUT OF QUOTED AND UNQUOTED STRINGS + +PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED +BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER +PUNCTUATION. + + - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=) +SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT +CONTAINS A NUMBER-SIGN (#), SUBSTITUTE A QUOTE. +THUS, THE PROMPT: + ==#ER#== +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. SPACE + 2. SPACE + 3. QUOTE + 4. LETTER E + 5. LETTER R + 6. QUOTE + 7. SPACE + 8. SPACE + +THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS +UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT +TO COUNT ON A TERMINAL. + +PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT +ON THE CORRECT OPERATION OF THE STRING COMPARISON +FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE +WILL LIKELY GIVE INVALID RESULTS. + +ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFOR +IF THE PROCESSOR REJECTS ANY OF THEM, +*** TEST FAILED *** + +FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED +TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO +POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE +ALIGNED WITH THE PROMPT STRING. + + BEGIN TEST + + +PLEASE ENTER: + ABC +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + #ABC# +? "ABC" + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ABC,DEF +? ABC,DEF + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + #ABC#,#DEF# +? "ABC","DEF" + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + #ABC#,DEF +? "ABC",DEF + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + ABC,#DEF# +? ABC,"DEF" + +SHOULD BE: ***ABCDEF*** +ACTUAL: ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + ABCDEFGHIJKLM +? ABCDEFGHIJKLM + +SHOULD BE: ***ABCDEFGHIJKLM*** +ACTUAL: ***ABCDEFGHIJKLM*** +TEST OK + + +PLEASE ENTER: + NOPQRSTUVWXYZ +? NOPQRSTUVWXYZ + +SHOULD BE: ***NOPQRSTUVWXYZ*** +ACTUAL: ***NOPQRSTUVWXYZ*** +TEST OK + + +PLEASE ENTER: + +.=====- +? +. - + +SHOULD BE: ***+. -*** +ACTUAL: ***+. -*** +TEST OK + + +PLEASE ENTER: + ----5---10---15-18 +? ----5---10---15-18 + +SHOULD BE: ***----5---10---15-18*** +ACTUAL: ***----5---10---15-18*** +TEST OK + + +PLEASE ENTER: + ===ABC +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ABC=== +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + ===ABC=== +? ABC + +SHOULD BE: ***ABC*** +ACTUAL: ***ABC*** +TEST OK + + +PLEASE ENTER: + #===ABC# +? " ABC" + +SHOULD BE: *** ABC*** +ACTUAL: *** ABC*** +TEST OK + + +PLEASE ENTER: + #ABC===# +? "ABC " + +SHOULD BE: ***ABC *** +ACTUAL: ***ABC *** +TEST OK + + +PLEASE ENTER: + #===ABC===# +? " ABC " + +SHOULD BE: *** ABC *** +ACTUAL: *** ABC *** +TEST OK + + +PLEASE ENTER: + ===#===ABC====#==== +? " ABC " + +SHOULD BE: *** ABC *** +ACTUAL: *** ABC *** +TEST OK + + +PLEASE ENTER: + ===ABC==,===#DEF#===,==GHI== +? ABC , "DEF" , GHI + +SHOULD BE: ***ABCDEFGHI*** +ACTUAL: ***ABCDEFGHI*** +TEST OK + + +PLEASE ENTER: + =1=,==2==,===3=== +? 1 , 2 , 3 + +SHOULD BE: ***123*** +ACTUAL: ***123*** +TEST OK + + +PLEASE ENTER: + A===B +? A B + +SHOULD BE: ***A B*** +ACTUAL: ***A B*** +TEST OK + + +PLEASE ENTER: + ===A===B=== +? A B + +SHOULD BE: ***A B*** +ACTUAL: ***A B*** +TEST OK + + +PLEASE ENTER: + ===EIGHTEEN=POSITIONS=== +? EIGHTEEN POSITIONS + +SHOULD BE: ***EIGHTEEN POSITIONS*** +ACTUAL: ***EIGHTEEN POSITIONS*** +TEST OK + + +PLEASE ENTER: + ==A==B==,==C==D==,==E==F== +? A B , C D , E F + +SHOULD BE: ***A BC DE F*** +ACTUAL: ***A BC DE F*** +TEST OK + + +PLEASE ENTER: + ==A==B==,==#D#==,==E==F== +? A B , "D" , E F + +SHOULD BE: ***A BDE F*** +ACTUAL: ***A BDE F*** +TEST OK + + +PLEASE ENTER: + =#A#=,=B=C=,=#D#= +? "A" , B C , "D" + +SHOULD BE: ***AB CD*** +ACTUAL: ***AB CD*** +TEST OK + + +PLEASE ENTER: + ==#==A==B==#==,=#=C=D=#=,=E=F= +? " A B " , " C D " , E F + +SHOULD BE: *** A B C D E F*** +ACTUAL: *** A B C D E F*** +TEST OK + + +PLEASE ENTER: + A,B,#C,D#,#E# +? A,B,"C,D","E" + +SHOULD BE: ***ABC,DE*** +ACTUAL: ***ABC,DE*** +TEST OK + + +PLEASE ENTER: + ## +? "" + +SHOULD BE: ****** +ACTUAL: ****** +TEST OK + + +PLEASE ENTER: + A,##,B +? A,"",B + +SHOULD BE: ***AB*** +ACTUAL: ***AB*** +TEST OK + + +PLEASE ENTER: + ==A==,==##==,==B== +? A , "" , B + +SHOULD BE: ***AB*** +ACTUAL: ***AB*** +TEST OK + + +PLEASE ENTER: + AB+3-5.6B +? AB+3-5.6B + +SHOULD BE: ***AB+3-5.6B*** +ACTUAL: ***AB+3-5.6B*** +TEST OK + + +PLEASE ENTER: + -1.23 +? -1.23 + +SHOULD BE: ***-1.23*** +ACTUAL: ***-1.23*** +TEST OK + + +PLEASE ENTER: + +3-5=-8+6 +? +3-5 -8+6 + +SHOULD BE: ***+3-5 -8+6*** +ACTUAL: ***+3-5 -8+6*** +TEST OK + + +*** TEST PASSED *** + + END TEST + +SECTION 109.2 TEST QUOTED-STRING-CHARACTERS + +THIS PART OF THE TEST IS INTENDED TO DETERMINE WHETHER +QUOTED STRINGS ON INPUT CAN CONTAIN ANY OF THE LEGAL +QUOTED STRING CHARACTERS. + +PLEASE RESPOND TO THE PROMPT BY ENTERING THE REQUESTED +CHARACTERS IMMEDIATELY PRECEDED AND FOLLOWED BY THE +QUOTE CHARACTER. THUS THE PROMPT: + ABC +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. QUOTE + 2. LETTER A + 3. LETTER B + 4. LETTER C + 5. QUOTE +THUS THE QUOTE TO BE ENTERED IS NOW IMPLICIT AND THE +NUMBER SIGN (#) AND EQUALS SIGN (=) HAVE NO SPECIAL +SIGNIFICANCE. + + BEGIN TEST + + +PLEASE ENTER: + ABCDEFGHIJKLM +? "ABCDEFGHIJKLM" +SHOULD BE: ***ABCDEFGHIJKLM*** +ACTUAL: ***ABCDEFGHIJKLM*** +TEST OK + + +PLEASE ENTER: + NOPQRSTUVWXYZ +? "NOPQRSTUVWXYZ" +SHOULD BE: ***NOPQRSTUVWXYZ*** +ACTUAL: ***NOPQRSTUVWXYZ*** +TEST OK + + +PLEASE ENTER: + 0123456789 +? "0123456789" +SHOULD BE: ***0123456789*** +ACTUAL: ***0123456789*** +TEST OK + + +PLEASE ENTER: + !#$%&'()*+,- +? "!#$%&'()*+,-" +SHOULD BE: ***!#$%&'()*+,-*** +ACTUAL: ***!#$%&'()*+,-*** +TEST OK + + +PLEASE ENTER: + ./:;<=>?^_ +? "./:;<=>?^_" +SHOULD BE: ***./:;<=>?^_*** +ACTUAL: ***./:;<=>?^_*** +TEST OK + + +PLEASE ENTER: + EMBEDDED SPACE +? "EMBEDDED SPACE" +SHOULD BE: ***EMBEDDED SPACE*** +ACTUAL: ***EMBEDDED SPACE*** +TEST OK + +***** TEST PASSED ***** + + END TEST + +END PROGRAM 109 diff --git a/NBS2/P110.80 b/NBS2/P110.80 new file mode 100644 index 0000000..f93f7c6 --- /dev/null +++ b/NBS2/P110.80 @@ -0,0 +1,195 @@ +PROGRAM FILE 110: MIXED INPUT OF STRINGS AND NUMBERS. + ANSI STANDARD 13.2, 13.4 + +SECTION 110.1: MIXED INPUT OF STRINGS AND NUMBERS. + +PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED +BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER +PUNCTUATION. + + - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=) +SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT +CONTAINS A NUMBER-SIGN (#) SUBSTITUTE A QUOTE. +THUS, THE PROMPT: + ==#ER#== +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. SPACE + 2. SPACE + 3. QUOTE + 4. LETTER E + 5. LETTER R + 6. QUOTE + 7. SPACE + 8. SPACE + +THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS +UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT +TO COUNT ON A TERMINAL. + +PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT +ON THE CORRECT OPERATION OF THE STRING COMPARISON +FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE +WILL LIKELY GIVE INVALID RESULTS. + +ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFORE +IF THE PROCESSOR REJECTS ANY OF THEM, +*** TEST FAILED *** + +FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED +TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO +POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE +ALIGNED WITH THE PROMPT STRING. + + BEGIN TEST + + +PLEASE ENTER: + ==1==,==2==,==3== +? 1 , 2 , 3 +SHOULD BE: *** 1 2 3 *** +ACTUAL : *** 1 2 3 *** +TEST OK + + +PLEASE ENTER: + ==+987999E32==,==-1.00000E-37==,==3.E37== +? +987999E32 , -1.00000E-37 , 3.E37 +SHOULD BE: *** 9.87999E+37 -1.E-37 3.E+37 *** +ACTUAL : *** 9.87999E+37 -1.E-37 3.E+37 *** +TEST OK + + +PLEASE ENTER: + ===222222,111111==,==333333 +? 222222,111111 , 333333 +SHOULD BE: *** 222222 111111 333333 *** +ACTUAL : *** 222222 111111 333333 *** +TEST OK + + +PLEASE ENTER: + 5,6 +? 5,6 +SHOULD BE: *** 5 6 *** +ACTUAL : *** 5 6 *** +TEST OK + + +PLEASE ENTER: + -05.34,345.567E-11 +? -05.34,345.567E-11 +SHOULD BE: ***-5.34 3.45567E-9 *** +ACTUAL : ***-5.34 3.45567E-9 *** +TEST OK + + +PLEASE ENTER: + 2E2,-3.45 +? 2E2,-3.45 +SHOULD BE: *** 200 -3.45 *** +ACTUAL : *** 200 -3.45 *** +TEST OK + + +PLEASE ENTER: + -0000.000123456E-11,+1E37 +? -0000.000123456E-11,+1E37 +SHOULD BE: ***-1.23456E-15 1.E+37 *** +ACTUAL : ***-1.23456E-15 1.E+37 *** +TEST OK + + +PLEASE ENTER: + -000.E-00,+.000,0E22 +? -000.E-00,+.000,0E22 +SHOULD BE: *** 0 0 0 *** +ACTUAL : *** 0 0 0 *** +TEST OK + + +PLEASE ENTER: + -999.E-00,+.999,9E22 +? -999.E-00,+.999,9E22 +SHOULD BE: ***-999 .999 9.E+22 *** +ACTUAL : ***-999 .999 9.E+22 *** +TEST OK + + +PLEASE ENTER: + ABC,##,#DEF# +? ABC,"","DEF" +SHOULD BE: ***ABCDEF*** +ACTUAL : ***ABCDEF*** +TEST OK + + +PLEASE ENTER: + ==4.56789E-11==,==MIDDLE=ITEM==,==9== +? 4.56789E-11 , MIDDLE ITEM , 9 +SHOULD BE: *** 4.56789E-11 MIDDLE ITEM 9 *** +ACTUAL : *** 4.56789E-11 MIDDLE ITEM 9 *** +TEST OK + + +PLEASE ENTER: + ==987654===,===#==MIDDLE=ITEM==#==,==656565== +? 987654 , " MIDDLE ITEM " , 656565 +SHOULD BE: *** 987654 MIDDLE ITEM 656565 *** +ACTUAL : *** 987654 MIDDLE ITEM 656565 *** +TEST OK + + +PLEASE ENTER: + ==AN=UNQUOTED=STRING===,==3.14159==,==#EQUALS=PI#== +? AN UNQUOTED STRING , 3.14159 , "EQUALS PI" +SHOULD BE: ***AN UNQUOTED STRING 3.14159 EQUALS PI*** +ACTUAL : ***AN UNQUOTED STRING 3.14159 EQUALS PI*** +TEST OK + + +PLEASE ENTER: + 07676760000000E0000022===,==========X=========,X +? 07676760000000E0000022 , X ,X +SHOULD BE: *** 7.67676E+34 XX*** +ACTUAL : *** 7.67676E+34 XX*** +TEST OK + + +PLEASE ENTER: + =====##=====,===5===,=====THIRD=ITEM===== +? "" , 5 , THIRD ITEM +SHOULD BE: *** 5 THIRD ITEM*** +ACTUAL : *** 5 THIRD ITEM*** +TEST OK + + +PLEASE ENTER: + ==========#=#==,===0====,====##=== +? " " , 0 , "" +SHOULD BE: *** 0 *** +ACTUAL : *** 0 *** +TEST OK + + +PLEASE ENTER: + ==+333.333E-33==,==+333.333E-33== +? +333.333E-33 , +333.333E-33 +SHOULD BE: *** 3.33333E-31 +333.333E-33*** +ACTUAL : *** 3.33333E-31 +333.333E-33*** +TEST OK + + +PLEASE ENTER: + 1,2================3,4 +? 1,2 3,4 +SHOULD BE: *** 1 2 3 4 *** +ACTUAL : *** 1 2 3 4 *** +TEST OK + +*** TEST PASSED *** + + END TEST + +END PROGRAM 110 + +Program interrupted at line 895 diff --git a/NBS2/P110.BAS b/NBS2/P110.BAS new file mode 100644 index 0000000..ef7095e --- /dev/null +++ b/NBS2/P110.BAS @@ -0,0 +1,235 @@ +5 PRINT "PROGRAM FILE 110: MIXED INPUT OF STRINGS AND NUMBERS." +10 PRINT " ANSI STANDARD 13.2, 13.4" +20 PRINT +25 PRINT "SECTION 110.1: MIXED INPUT OF STRINGS AND NUMBERS." +30 PRINT +45 PRINT "PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED" +50 PRINT "BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER" +55 PRINT "PUNCTUATION." +60 PRINT +65 PRINT " - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=)" +70 PRINT "SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT" +75 PRINT "CONTAINS A NUMBER-SIGN (#) SUBSTITUTE A QUOTE." +80 PRINT "THUS, THE PROMPT:" +85 PRINT " ==#ER#==" +90 PRINT "SHOULD CAUSE YOU TO STRIKE THE KEYS:" +95 PRINT " 1. SPACE" +100 PRINT " 2. SPACE" +105 PRINT " 3. QUOTE" +110 PRINT " 4. LETTER E" +115 PRINT " 5. LETTER R" +120 PRINT " 6. QUOTE" +125 PRINT " 7. SPACE" +130 PRINT " 8. SPACE" +135 PRINT +150 PRINT "THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS" +155 PRINT "UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT" +160 PRINT "TO COUNT ON A TERMINAL." +165 PRINT +170 PRINT "PLEASE NOTE THAT THIS ROUTINE IS STRONGLY DEPENDENT" +175 PRINT "ON THE CORRECT OPERATION OF THE STRING COMPARISON" +180 PRINT "FEATURE. IF THAT FEATURE IS INCORRECT, THIS ROUTINE" +185 PRINT "WILL LIKELY GIVE INVALID RESULTS." +195 PRINT +200 PRINT "ALL THE REPLIES PROMPTED FOR ARE VALID, THEREFORE " +205 PRINT "IF THE PROCESSOR REJECTS ANY OF THEM," +210 PRINT "*** TEST FAILED ***" +215 PRINT +225 PRINT "FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED" +230 PRINT "TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO" +235 PRINT "POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE" +240 PRINT "ALIGNED WITH THE PROMPT STRING." +241 PRINT +242 PRINT " BEGIN TEST" +245 LET F=0 +247 LET Y$="SHOULD BE: ***" +248 LET Z$="ACTUAL : ***" +250 READ M,C(1),C(2),C(3),P$ +255 LET Q$="" +257 LET R$="" +260 IF M<100 THEN 275 +265 LET M=M-100 +270 READ Q$,R$ +275 IF M=0 THEN 850 +280 LET A$="" +285 LET B$="" +290 LET C$="" +295 LET I$="" +300 LET J$="" +305 LET K$="" +310 LET A1=0 +315 LET B1=0 +320 LET C1=0 +325 LET I1=0 +330 LET J1=0 +335 LET K1=0 +345 LET Q=0 +350 FOR I2=1 TO M +355 LET Q=Q+Q+C(I2) +360 NEXT I2 +362 LET Q=Q+1 +365 IF M<=1 THEN 380 +370 LET Q=Q+2 +372 IF M<=2 THEN 380 +375 LET Q=Q+4 +380 LET Q1=Q +382 IF C(1)=0 THEN 395 +385 READ I$ +390 GOTO 400 +395 READ I1 +400 IF M<2 THEN 450 +405 IF C(2)=0 THEN 420 +410 READ J$ +415 GOTO 425 +420 READ J1 +425 IF M<3 THEN 450 +430 IF C(3)=0 THEN 445 +435 READ K$ +440 GOTO 450 +445 READ K1 +450 PRINT +455 PRINT +460 PRINT "PLEASE ENTER:" +465 PRINT " ";P$;Q$;R$ +475 ON Q1 GOTO 480,500,520,540,560,580,600,620,640,660,680,700,720,740 +480 INPUT A1 +485 PRINT Y$;I1;"***" +490 PRINT Z$;A1;"***" +495 GOTO 760 +500 INPUT A$ +505 PRINT Y$;I$;"***" +510 PRINT Z$;A$;"***" +515 GOTO 760 +520 INPUT A1,B1 +525 PRINT Y$;I1;J1;"***" +530 PRINT Z$;A1;B1;"***" +535 GOTO 760 +540 INPUT A1,B$ +545 PRINT Y$;I1;J$;"***" +550 PRINT Z$;A1;B$;"***" +555 GOTO 760 +560 INPUT A$,B1 +565 PRINT Y$;I$;J1;"***" +570 PRINT Z$;A$;B1;"***" +575 GOTO 760 +580 INPUT A$,B$ +585 PRINT Y$;I$;J$;"***" +590 PRINT Z$;A$;B$;"***" +595 GOTO 760 +600 INPUT A1,B1,C1 +605 PRINT Y$;I1;J1;K1;"***" +610 PRINT Z$;A1;B1;C1;"***" +615 GOTO 760 +620 INPUT A1,B1,C$ +625 PRINT Y$;I1;J1;K$;"***" +630 PRINT Z$;A1;B1;C$;"***" +635 GOTO 760 +640 INPUT A1,B$,C1 +645 PRINT Y$;I1;J$;K1;"***" +650 PRINT Z$;A1;B$;C1;"***" +655 GOTO 760 +660 INPUT A1,B$,C$ +665 PRINT Y$;I1;J$;K$;"***" +670 PRINT Z$;A1;B$;C$;"***" +675 GOTO 760 +680 INPUT A$,B1,C1 +685 PRINT Y$;I$;J1;K1;"***" +690 PRINT Z$;A$;B1;C1;"***" +695 GOTO 760 +700 INPUT A$,B1,C$ +705 PRINT Y$;I$;J1;K$;"***" +710 PRINT Z$;A$;B1;C$;"***" +715 GOTO 760 +720 INPUT A$,B$,C1 +725 PRINT Y$;I$;J$;K1;"***" +730 PRINT Z$;A$;B$;C1;"***" +735 GOTO 760 +740 INPUT A$,B$,C$ +745 PRINT Y$;I$;J$;K$;"***" +750 PRINT Z$;A$;B$;C$;"***" +755 GOTO 760 +760 REM RESULTS DISPLAYED +765 IF A$<>I$ THEN 820 +770 IF B$<>J$ THEN 820 +771 IF C$<>K$ THEN 820 +772 LET D9=A1 +774 LET E9=I1 +776 GOSUB 3000 +778 IF F9<>0 THEN 820 +782 LET D9=B1 +784 LET E9=J1 +786 GOSUB 3000 +788 IF F9<>0 THEN 820 +792 LET D9=C1 +794 LET E9=K1 +796 GOSUB 3000 +798 IF F9<>0 THEN 820 +799 PRINT "TEST OK" +800 GOTO 250 +820 PRINT "INPUT NOT EQUAL EXPECTED VALUE. RE-TRY (Y OR N)?" +825 INPUT S$ +830 IF S$<>"N" THEN 450 +835 PRINT "TEST FAILED." +840 LET F=F+1 +845 GOTO 250 +850 PRINT +855 IF F=0 THEN 870 +860 PRINT "*** TEST FAILED: ";F;" CASE(S) HANDLED IMPROPERLY ***" +865 GOTO 875 +870 PRINT "*** TEST PASSED ***" +875 PRINT +880 PRINT " END TEST" +885 PRINT +890 PRINT "END PROGRAM 110" +895 STOP +900 REM FORMAT OF DATA PARMS: +910 REM 1 - # OF DATA ITEMS (+100 IF LONG PROMPT) +920 REM 2-4 - DATA FORMAT, X=0 => NUMERIC +930 REM X=1 => ALPHA +940 REM 5 - PROMPT (1ST OF THREE, IF LONG) +950 REM 6-N (OR 8-N) - COMPARAND VALUES +1000 DATA 3,0,0,0,"==1==,==2==,==3==",1,2,3 +1010 DATA 103,0,0,0,"==+987999E32==,","==-1.00000E-37==,","==3.E37==" +1020 DATA 9.87999E37,-1E-37,3E37 +1030 DATA 103,0,0,0,"===222222",",111111==,","==333333" +1040 DATA 222222,111111,333333 +1050 DATA 2,0,0,0,"5,6",5,6 +1060 DATA 2,0,0,0,"-05.34,345.567E-11",-5.34,3.45567E-9 +1070 DATA 2,0,0,0,"2E2,-3.45",200,-3.45 +1080 DATA 102,0,0,0,"-","0000.00012345","6E-11,+1E37",-1.23456E-15,1E37 +1090 DATA 103,0,0,0,"-00","0.E-00,","+.000,0E22",0,0,0 +1100 DATA 103,0,0,0,"-","999.E-00,","+.999,9E22",-999,+.999,9E22 +1110 DATA 3,1,1,1,"ABC,##,#DEF#","ABC","","DEF" +1120 DATA 103,0,1,0,"==4.56789E-11==",",==MIDDLE=ITEM==",",==9==" +1130 DATA 4.56789E-11,"MIDDLE ITEM",9 +1140 DATA 103,0,1,0,"==987654===,","===#==MIDDLE=ITE" +1150 DATA "M==#==,==656565==",987654," MIDDLE ITEM ",656565 +1160 DATA 103,1,0,1,"==AN=UNQUOTED=STR","ING===,==3.14159" +1170 DATA "==,==#EQUALS=PI#==" +1180 DATA "AN UNQUOTED STRING",3.14159,"EQUALS PI" +1190 DATA 103,0,1,1,"07676760000000E00","00022===,========" +1200 DATA "==X=========,X" +1210 DATA 7.67676E34,"X","X" +1220 DATA 103,1,0,1,"=====##=====,===5","===,=====THIRD=","ITEM=====" +1230 DATA "",5,"THIRD ITEM" +1240 DATA 103,1,0,1,"==========#=","#==,===0==","==,====##==="," ",0,"" +1250 DATA 102,0,1,0,"==+333.","333E-33==,","==+333.333E-33==" +1260 DATA 3.33333E-31,"+333.333E-33" +1270 DATA 103,0,1,0,"1,2","========","========3,4" +1280 DATA 1,"2 3",4 +2000 DATA 0,0,0,0,"Q" +3000 REM SUBROUTINE TO CHECK NUMERIC VALUES +3010 REM ONLY A LOOSE CRITERION OF EQUALITY IS USED +3020 LET E7=.999*E9 +3030 LET E8=1.001*E9 +3040 IF E9>=0 THEN 3100 +3050 LET E6=E7 +3060 LET E7=E8 +3070 LET E8=E6 +3100 LET F9=0 +3110 IF E7>D9 THEN 3200 +3120 IF E8 0. IF VALUE <> 1E-99999, THEN," +400 PRINT "*** TEST FAILED ***" +410 GOTO 430 +420 PRINT "*** TEST PASSED ***" +430 PRINT +440 PRINT " END TEST." +450 PRINT +460 PRINT "END PROGRAM 111" +470 END diff --git a/NBS2/P111.INP b/NBS2/P111.INP new file mode 100644 index 0000000..5f35abe --- /dev/null +++ b/NBS2/P111.INP @@ -0,0 +1 @@ +1E-99999 diff --git a/NBS2/P111.OUT b/NBS2/P111.OUT new file mode 100644 index 0000000..7e7c473 --- /dev/null +++ b/NBS2/P111.OUT @@ -0,0 +1,35 @@ +PROGRAM FILE 111: EXCEPTION - NUMERIC UNDERFLOW ON INPUT + CAUSES REPLACEMENT BY ZERO. + ANSI STANDARD 5.6, 13.4 + +SECTION 111.1: EXCEPTION - NUMERIC UNDERFLOW ON INPUT + CAUSES REPLACEMENT BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + NUMERIC CONSTANT IN THE INPUT-REPLY. + +AFTER THE INPUT-PROMPT, ENTER 1E-99999. THIS IS INTENDED +TO CAUSE NUMERIC UNDERFLOW. IF IT DOES, THE PROCESSOR +MUST SET THE VALUE OF THE VARIABLE TO ZERO. + +SINCE '1E-99999' IS A SYNTACTICALLY LEGAL NUMBER, +IF THE PROCESSOR DOES NOT ACCEPT 1E-99999 AS INPUT, +*** TEST FAILS *** + + BEGIN TEST. + +ENTER 1E-99999 +? 1E-99999 + +RESULTING VALUE= 0 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 111 diff --git a/NBS2/P111.dif b/NBS2/P111.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P111.in b/NBS2/P111.in new file mode 100644 index 0000000..5f35abe --- /dev/null +++ b/NBS2/P111.in @@ -0,0 +1 @@ +1E-99999 diff --git a/NBS2/P111.run b/NBS2/P111.run new file mode 100644 index 0000000..1c69348 --- /dev/null +++ b/NBS2/P111.run @@ -0,0 +1,35 @@ +PROGRAM FILE 111: EXCEPTION - NUMERIC UNDERFLOW ON INPUT + CAUSES REPLACEMENT BY ZERO. + ANSI STANDARD 5.6, 13.4 + +SECTION 111.1: EXCEPTION - NUMERIC UNDERFLOW ON INPUT + CAUSES REPLACEMENT BY ZERO. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + NUMERIC CONSTANT IN THE INPUT-REPLY. + +AFTER THE INPUT-PROMPT, ENTER 1E-99999. THIS IS INTENDED +TO CAUSE NUMERIC UNDERFLOW. IF IT DOES, THE PROCESSOR +MUST SET THE VALUE OF THE VARIABLE TO ZERO. + +SINCE '1E-99999' IS A SYNTACTICALLY LEGAL NUMBER, +IF THE PROCESSOR DOES NOT ACCEPT 1E-99999 AS INPUT, +*** TEST FAILS *** + + BEGIN TEST. + +ENTER 1E-99999 +? 1E-99999 + +RESULTING VALUE= 0 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 111 diff --git a/NBS2/P112.80 b/NBS2/P112.80 new file mode 100644 index 0000000..55304cc --- /dev/null +++ b/NBS2/P112.80 @@ -0,0 +1,391 @@ +PROGRAM FILE 112: EXCEPTION - INPUT-REPLY INCONSISTENT WITH + INPUT VARIABLE-LIST. + ANSI STANDARD 13.4, 13.5, 3.2, 5.2 + +SECTION 112.1: EXCEPTION - INPUT-REPLY INCONSISTENT WITH + INPUT VARIABLE-LIST. + +PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED +BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER +PUNCTUATION. + + - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=) +SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT +CONTAINS THE NUMBER-SIGN (#) SUBSTITUTE A QUOTE. +THUS, THE PROMPT: + ==#ER#== +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. SPACE + 2. SPACE + 3. QUOTE + 4. LETTER E + 5. LETTER R + 6. QUOTE + 7. SPACE + 8. SPACE + +THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS +UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT +TO COUNT ON A TERMINAL. + +AFTER ENTERING THE REQUESTED REPLY, THE PROCESSOR SHOULD +REPORT AN EXCEPTION OF THE KIND INDICATED IN THE PROMPT. +(ALTHOUGH SOME RESPONSES MAY VALIDLY CAUSE ONE OF SEVERAL +DIFFERENT KINDS OF EXCEPTION TO BE REPORTED BY THE SYSTEM.) + +YOU SHOULD THEN BE GIVEN A CHANCE TO RE-SUPPLY INPUT AND +SHOULD REPLY WITH AS MANY ZEROS AS INDICATED IN THE PROMPT. +(E.G., FOR 3 ITEMS, RESPOND: 0,0,0 TO BYPASS EXCEPTION.) + +*** IF NOT ALLOWED TO RE-SUPPLY INPUT, TEST FAILS *** + +IF THE PROCESSOR ACCEPTS AN INPUT-REPLY, IT FAILS THE +TEST UNLESS 1) IT HAS A DOCUMENTED ENHANCED DEFINITION OF +NUMERIC-CONSTANT, UNQUOTED-STRING, QUOTED-STRING, OR +INPUT-REPLY SUCH AS TO RENDER MEANINGFUL A PARTICULAR +NON-STANDARD RESPONSE, OR 2) ITS DOCUMENTED IMPLEMENTATION- +DEFINED LIMITS FOR OVERFLOW (STRING OR NUMERIC) EXCEED +THE MINIMUM LIMITS ESTABLISHED BY THE STANDARD. +NOT ALL THE INPUT-REPLIES ARE NON-STANDARD, BUT THEY +SHOULD ALL CAUSE EXCEPTIONS, SAVE AS NOTED ABOVE. + +FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED +TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO +POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE +ALIGNED WITH THE PROMPT STRING. + + BEGIN TEST + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: TOO MUCH DATA; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + M,M,M,M +? M,M,M,M +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: INSUFFICIENT DATA; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + M,M +? M,M +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: NUMERIC OVERFLOW; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 1E99999 +? 1E99999 +*** Overflow *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: STRING OVERFLOW; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + IF=THIS=DOES=NOT=CAUSE=STRING=OVRFLW=TRY=LONGER=REPLY +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB?CD +? AB?CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB;CD +? AB;CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + K*L +? K*L +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1,B1,C1 +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + 1,Q,1 +? 1,Q,1 +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 : 0 +ITEM# 2 : 0 +ITEM# 3 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 1D1 +? 1D1 +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB##CD +? AB""CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB#CD +? AB"CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB +? "AB +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB# +? AB" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB##CD# +? "AB""CD" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB#CD# +? "AB"CD" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + AB#CD,EF +? AB"CD,EF +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + AB,CD#EF +? AB,CD"EF +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + A#B,C#D +? A"B,C"D +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + A,,B +? A,,B +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: TOO MUCH DATA; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + X,Y, +? X,Y, +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + X,Y, +? X,Y, +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + ,A,B +? ,A,B +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + NULL REPLY (HIT RETURN ONLY) +? +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1,B1 +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + 2==3 +? 2 3 +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 : 0 +ITEM# 2 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 2==3 +? 2 3 +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + X,===,Y +? X, ,Y +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + +*** TEST PASSED *** + + END TEST + +END PROGRAM 112 diff --git a/NBS2/P112.BAS b/NBS2/P112.BAS new file mode 100644 index 0000000..e22e249 --- /dev/null +++ b/NBS2/P112.BAS @@ -0,0 +1,225 @@ +5 PRINT "PROGRAM FILE 112: EXCEPTION - INPUT-REPLY INCONSISTENT WITH" +7 PRINT " INPUT VARIABLE-LIST." +10 PRINT " ANSI STANDARD 13.4, 13.5, 3.2, 5.2" +20 PRINT +25 PRINT "SECTION 112.1: EXCEPTION - INPUT-REPLY INCONSISTENT WITH" +27 PRINT " INPUT VARIABLE-LIST." +30 PRINT +35 PRINT "PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED" +40 PRINT "BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER" +45 PRINT "PUNCTUATION." +50 PRINT +55 PRINT " - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=)" +60 PRINT "SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT" +65 PRINT "CONTAINS THE NUMBER-SIGN (#) SUBSTITUTE A QUOTE." +70 PRINT "THUS, THE PROMPT:" +75 PRINT " ==#ER#==" +80 PRINT "SHOULD CAUSE YOU TO STRIKE THE KEYS:" +85 PRINT " 1. SPACE" +90 PRINT " 2. SPACE" +95 PRINT " 3. QUOTE" +100 PRINT " 4. LETTER E" +105 PRINT " 5. LETTER R" +110 PRINT " 6. QUOTE" +115 PRINT " 7. SPACE" +120 PRINT " 8. SPACE" +125 PRINT +130 PRINT "THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS" +135 PRINT "UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT" +140 PRINT "TO COUNT ON A TERMINAL." +145 PRINT +150 PRINT "AFTER ENTERING THE REQUESTED REPLY, THE PROCESSOR SHOULD" +155 PRINT "REPORT AN EXCEPTION OF THE KIND INDICATED IN THE PROMPT." +160 PRINT "(ALTHOUGH SOME RESPONSES MAY VALIDLY CAUSE ONE OF SEVERAL" +165 PRINT "DIFFERENT KINDS OF EXCEPTION TO BE REPORTED BY THE SYSTEM.)" +170 PRINT +175 PRINT "YOU SHOULD THEN BE GIVEN A CHANCE TO RE-SUPPLY INPUT AND" +185 PRINT "SHOULD REPLY WITH AS MANY ZEROS AS INDICATED IN THE PROMPT." +190 PRINT "(E.G., FOR 3 ITEMS, RESPOND: 0,0,0 TO BYPASS EXCEPTION.)" +192 PRINT +193 PRINT "*** IF NOT ALLOWED TO RE-SUPPLY INPUT, TEST FAILS ***" +194 PRINT +195 PRINT "IF THE PROCESSOR ACCEPTS AN INPUT-REPLY, IT FAILS THE" +200 PRINT "TEST UNLESS 1) IT HAS A DOCUMENTED ENHANCED DEFINITION OF" +205 PRINT "NUMERIC-CONSTANT, UNQUOTED-STRING, QUOTED-STRING, OR" +210 PRINT "INPUT-REPLY SUCH AS TO RENDER MEANINGFUL A PARTICULAR" +215 PRINT "NON-STANDARD RESPONSE, OR 2) ITS DOCUMENTED IMPLEMENTATION-" +217 PRINT "DEFINED LIMITS FOR OVERFLOW (STRING OR NUMERIC) EXCEED" +218 PRINT "THE MINIMUM LIMITS ESTABLISHED BY THE STANDARD." +220 PRINT "NOT ALL THE INPUT-REPLIES ARE NON-STANDARD, BUT THEY" +225 PRINT "SHOULD ALL CAUSE EXCEPTIONS, SAVE AS NOTED ABOVE." +230 PRINT +235 PRINT "FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED" +240 PRINT "TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO" +245 PRINT "POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE" +250 PRINT "ALIGNED WITH THE PROMPT STRING." +255 PRINT +260 PRINT " BEGIN TEST" +265 LET F=0 +270 READ M,C(1),C(2),C(3),O,P$ +275 LET Q$="" +280 LET R$="" +285 IF M<100 THEN 300 +290 LET M=M-100 +295 READ Q$,R$ +300 IF M=0 THEN 2000 +304 LET Q=0 +308 FOR I2=1 TO M +312 LET Q=Q+Q+C(I2) +316 NEXT I2 +320 LET Q=Q+1 +324 IF M<=1 THEN 340 +328 LET Q=Q+2 +332 IF M<=2 THEN 340 +336 LET Q=Q+4 +340 LET Q1=Q +350 LET A1=1 +355 LET B1=1 +360 LET C1=1 +365 LET A$="1" +370 LET B$="1" +375 LET C$="1" +380 PRINT +385 PRINT +390 PRINT "STATEMENT FOR THIS INPUT-REPLY: INPUT "; +395 IF C(1)=0 THEN 410 +400 PRINT "A$"; +405 GOTO 415 +410 PRINT "A1"; +415 IF M<=1 THEN 490 +420 IF C(2)=0 THEN 435 +425 PRINT ",B$"; +430 GOTO 440 +435 PRINT ",B1"; +440 IF M<=2 THEN 490 +445 IF C(3)=0 THEN 460 +450 PRINT ",C$"; +455 GOTO 490 +460 PRINT ",C1"; +490 PRINT +500 PRINT "EXCEPTION: "; +505 ON O GOTO 510,520,530,540,550 +510 PRINT "WRONG TYPE"; +515 GOTO 560 +520 PRINT "TOO MUCH DATA"; +525 GOTO 560 +530 PRINT "INSUFFICIENT DATA"; +535 GOTO 560 +540 PRINT "NUMERIC OVERFLOW"; +545 GOTO 560 +550 PRINT "STRING OVERFLOW"; +555 GOTO 560 +560 PRINT "; SHOULD BE ";M;" ITEM(S)." +565 PRINT "PLEASE ENTER:" +570 PRINT " ";P$;Q$;R$ +580 ON Q1 GOTO 585,595,605,615,625,635,645,655,665,675,685,695,705,715 +585 INPUT A1 +590 GOTO 725 +595 INPUT A$ +600 GOTO 725 +605 INPUT A1,B1 +610 GOTO 725 +615 INPUT A1,B$ +620 GOTO 725 +625 INPUT A$,B1 +630 GOTO 725 +635 INPUT A$,B$ +640 GOTO 725 +645 INPUT A1,B1,C1 +650 GOTO 725 +655 INPUT A1,B1,C$ +660 GOTO 725 +665 INPUT A1,B$,C1 +670 GOTO 725 +675 INPUT A1,B$,C$ +680 GOTO 725 +685 INPUT A$,B1,C1 +690 GOTO 725 +695 INPUT A$,B1,C$ +700 GOTO 725 +705 INPUT A$,B$,C1 +710 GOTO 725 +715 INPUT A$,B$,C$ +720 GOTO 725 +725 REM RESULTS DISPLAYED +728 REM Y2 IS ERROR SWITCH, Y IS ITEM COUNT. +730 LET Y2=0 +735 LET Y=1 +740 LET Y1=A1 +745 LET Z$=A$ +750 GOSUB 1000 +755 IF M<=1 THEN 795 +760 LET Y1=B1 +765 LET Z$=B$ +770 GOSUB 1000 +775 IF M<=2 THEN 795 +780 LET Y1=C1 +785 LET Z$=C$ +790 GOSUB 1000 +795 IF Y2<>0 THEN 810 +800 PRINT "TEST OK." +805 GOTO 270 +810 PRINT "NOT ALL VARIABLES EQUAL TO ZERO." +820 PRINT "POSSIBILITIES:" +825 PRINT "1 - PROCESSOR FAILED TO TREAT REPLY AS EXCEPTION" +835 PRINT "2 - USER REPLY TO BYPASS EXCEPTION NOT ALL ZEROS" +840 PRINT "3 - PROCESSOR DID NOT ALLOW RE-ENTRY OF INPUT-REPLY." +845 PRINT "RE-TRY (Y OR N)?" +850 INPUT W$ +855 IF W$<>"N" THEN 350 +860 PRINT "TEST FAILS, UNLESS DOCUMENTED SYNTACTIC ENHANCEMENT." +865 LET F=F+1 +870 GOTO 270 +1000 REM SUBROUTINE TO CHECK AND DISPLAY ONE ITEM +1002 PRINT "ITEM#";Y;":"; +1005 IF C(Y)=0 THEN 1025 +1010 PRINT Z$ +1015 IF Z$="0" THEN 1040 +1020 GOTO 1035 +1025 PRINT Y1 +1030 IF Y1=0 THEN 1040 +1035 LET Y2=9 +1040 LET Y=Y+1 +1045 RETURN +2000 PRINT +2010 IF F=0 THEN 2040 +2020 PRINT "*** POSSIBLE TEST FAILURE IN ";F;" CASE(S). ***" +2030 GOTO 2050 +2040 PRINT "*** TEST PASSED ***" +2050 PRINT +2060 PRINT " END TEST" +2070 PRINT +2080 PRINT "END PROGRAM 112" +3000 REM 1 - #ITEMS(+100 IF LONG PROMPT), +3010 REM 2-4 - 3-DIGIT A/N CODE (0=>N, 1=>A) +3020 REM 5 - EXCP CODE +3030 REM 6(-8) - PROMPT (3 STRINGS IF LONG) +3040 DATA 3,1,1,1,2,"M,M,M,M" +3050 DATA 3,1,1,1,3,"M,M" +3060 DATA 1,0,0,0,4,"1E99999" +3070 DATA 101,1,1,1,5,"IF=THIS=DOES=NOT=C","AUSE=STRING=OVRFLW" +3080 DATA "=TRY=LONGER=REPLY" +3090 DATA 1,1,1,1,1,"AB?CD" +3100 DATA 1,1,1,1,1,"AB;CD" +3110 DATA 1,1,1,1,1,"K*L" +3120 DATA 3,0,0,0,1,"1,Q,1" +3125 DATA 1,0,0,0,1,"1D1" +3130 DATA 1,1,1,1,1,"AB##CD" +3140 DATA 1,1,1,1,1,"AB#CD" +3150 DATA 1,1,1,1,1,"#AB" +3160 DATA 1,1,1,1,1,"AB#" +3170 DATA 1,1,1,1,1,"#AB##CD#" +3180 DATA 1,1,1,1,1,"#AB#CD#" +3190 DATA 2,1,1,1,1,"AB#CD,EF" +3200 DATA 2,1,1,1,1,"AB,CD#EF" +3210 DATA 2,1,1,1,1,"A#B,C#D" +3220 DATA 3,1,1,1,1,"A,,B" +3230 DATA 2,1,1,1,2,"X,Y," +3240 DATA 3,1,1,1,1,"X,Y," +3250 DATA 3,1,1,1,1,",A,B" +3260 DATA 101,1,1,1,1," NULL REPLY ","(HIT RETURN ONLY)","" +3270 DATA 2,0,0,0,1,"2==3" +3280 DATA 1,0,0,0,1,"2==3" +3290 DATA 3,1,1,1,1,"X,===,Y" +4000 DATA 0,0,0,0,0,"Q" +4010 END diff --git a/NBS2/P112.INP b/NBS2/P112.INP new file mode 100644 index 0000000..78c041f --- /dev/null +++ b/NBS2/P112.INP @@ -0,0 +1,51 @@ +M,M,M,M +0,0,0 +M,M +0,0,0 +1E99999 +0 +0 +AB?CD +0 +AB;CD +0 +K*L +0 +1,Q,1 +0,0,0 +1D1 +0 +AB""CD +0 +AB"CD +0 +"AB +0 +AB" +0 +"AB""CD" +0 +"AB"CD" +0 +AB"CD,EF +0,0 +AB,CD"EF +0,0 +A"B,C"D +0,0 +A,,B +0,0,0 +X,Y, +0,0 +X,Y, +0,0,0 +,A,B +0,0,0 + +0 +2 3 +0,0 +2 3 +0 +X, ,Y +0,0,0 diff --git a/NBS2/P112.OUT b/NBS2/P112.OUT new file mode 100644 index 0000000..ef68118 --- /dev/null +++ b/NBS2/P112.OUT @@ -0,0 +1,391 @@ +PROGRAM FILE 112: EXCEPTION - INPUT-REPLY INCONSISTENT WITH + INPUT VARIABLE-LIST. + ANSI STANDARD 13.4, 13.5, 3.2, 5.2 + +SECTION 112.1: EXCEPTION - INPUT-REPLY INCONSISTENT WITH + INPUT VARIABLE-LIST. + +PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED +BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER +PUNCTUATION. + + - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=) +SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT +CONTAINS THE NUMBER-SIGN (#) SUBSTITUTE A QUOTE. +THUS, THE PROMPT: + ==#ER#== +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. SPACE + 2. SPACE + 3. QUOTE + 4. LETTER E + 5. LETTER R + 6. QUOTE + 7. SPACE + 8. SPACE + +THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS +UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT +TO COUNT ON A TERMINAL. + +AFTER ENTERING THE REQUESTED REPLY, THE PROCESSOR SHOULD +REPORT AN EXCEPTION OF THE KIND INDICATED IN THE PROMPT. +(ALTHOUGH SOME RESPONSES MAY VALIDLY CAUSE ONE OF SEVERAL +DIFFERENT KINDS OF EXCEPTION TO BE REPORTED BY THE SYSTEM.) + +YOU SHOULD THEN BE GIVEN A CHANCE TO RE-SUPPLY INPUT AND +SHOULD REPLY WITH AS MANY ZEROS AS INDICATED IN THE PROMPT. +(E.G., FOR 3 ITEMS, RESPOND: 0,0,0 TO BYPASS EXCEPTION.) + +*** IF NOT ALLOWED TO RE-SUPPLY INPUT, TEST FAILS *** + +IF THE PROCESSOR ACCEPTS AN INPUT-REPLY, IT FAILS THE +TEST UNLESS 1) IT HAS A DOCUMENTED ENHANCED DEFINITION OF +NUMERIC-CONSTANT, UNQUOTED-STRING, QUOTED-STRING, OR +INPUT-REPLY SUCH AS TO RENDER MEANINGFUL A PARTICULAR +NON-STANDARD RESPONSE, OR 2) ITS DOCUMENTED IMPLEMENTATION- +DEFINED LIMITS FOR OVERFLOW (STRING OR NUMERIC) EXCEED +THE MINIMUM LIMITS ESTABLISHED BY THE STANDARD. +NOT ALL THE INPUT-REPLIES ARE NON-STANDARD, BUT THEY +SHOULD ALL CAUSE EXCEPTIONS, SAVE AS NOTED ABOVE. + +FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED +TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO +POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE +ALIGNED WITH THE PROMPT STRING. + + BEGIN TEST + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: TOO MUCH DATA; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + M,M,M,M +? M,M,M,M +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: INSUFFICIENT DATA; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + M,M +? M,M +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: NUMERIC OVERFLOW; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 1E99999 +? 1E99999 +*** Overflow *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: STRING OVERFLOW; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + IF=THIS=DOES=NOT=CAUSE=STRING=OVRFLW=TRY=LONGER=REPLY +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB?CD +? AB?CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB;CD +? AB;CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + K*L +? K*L +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1,B1,C1 +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + 1,Q,1 +? 1,Q,1 +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 : 0 +ITEM# 2 : 0 +ITEM# 3 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 1D1 +? 1D1 +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB##CD +? AB""CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB#CD +? AB"CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB +? "AB +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB# +? AB" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB##CD# +? "AB""CD" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB#CD# +? "AB"CD" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + AB#CD,EF +? AB"CD,EF +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + AB,CD#EF +? AB,CD"EF +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + A#B,C#D +? A"B,C"D +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + A,,B +? A,,B +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: TOO MUCH DATA; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + X,Y, +? X,Y, +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + X,Y, +? X,Y, +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + ,A,B +? ,A,B +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + NULL REPLY (HIT RETURN ONLY) +? +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1,B1 +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + 2==3 +? 2 3 +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 : 0 +ITEM# 2 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 2==3 +? 2 3 +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + X,===,Y +? X, ,Y +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + +*** TEST PASSED *** + + END TEST + +END PROGRAM 112 diff --git a/NBS2/P112.dif b/NBS2/P112.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P112.in b/NBS2/P112.in new file mode 100644 index 0000000..9c4339b --- /dev/null +++ b/NBS2/P112.in @@ -0,0 +1,52 @@ +M,M,M,M +0,0,0 +M,M +0,0,0 +1E99999 +0 +IF THIS DOES NOT CAUSE STRING OVRFLW TRY LONGER REPLY +0 +AB?CD +0 +AB;CD +0 +K*L +0 +1,Q,1 +0,0,0 +1D1 +0 +AB""CD +0 +AB"CD +0 +"AB +0 +AB" +0 +"AB""CD" +0 +"AB"CD" +0 +AB"CD,EF +0,0 +AB,CD"EF +0,0 +A"B,C"D +0,0 +A,,B +0,0,0 +X,Y, +0,0 +X,Y, +0,0,0 +,A,B +0,0,0 + +0 +2 3 +0,0 +2 3 +0 +X, ,Y +0,0,0 diff --git a/NBS2/P112.run b/NBS2/P112.run new file mode 100644 index 0000000..55304cc --- /dev/null +++ b/NBS2/P112.run @@ -0,0 +1,391 @@ +PROGRAM FILE 112: EXCEPTION - INPUT-REPLY INCONSISTENT WITH + INPUT VARIABLE-LIST. + ANSI STANDARD 13.4, 13.5, 3.2, 5.2 + +SECTION 112.1: EXCEPTION - INPUT-REPLY INCONSISTENT WITH + INPUT VARIABLE-LIST. + +PLEASE ENTER YOUR INPUT-REPLIES EXACTLY AS REQUESTED +BY THE PROMPT, INCLUDING ALL SPACING, COMMAS AND OTHER +PUNCTUATION. + + - EXCEPT - WHEREVER THE PROMPT CONTAINS AN EQUALS (=) +SUBSTITUTE A BLANK SPACE, AND WHEREVER THE PROMPT +CONTAINS THE NUMBER-SIGN (#) SUBSTITUTE A QUOTE. +THUS, THE PROMPT: + ==#ER#== +SHOULD CAUSE YOU TO STRIKE THE KEYS: + 1. SPACE + 2. SPACE + 3. QUOTE + 4. LETTER E + 5. LETTER R + 6. QUOTE + 7. SPACE + 8. SPACE + +THESE CONVENTIONS ARE NECESSARY BECAUSE THE QUOTE IS +UNPRINTABLE IN MINIMAL BASIC, AND SPACES ARE DIFFICULT +TO COUNT ON A TERMINAL. + +AFTER ENTERING THE REQUESTED REPLY, THE PROCESSOR SHOULD +REPORT AN EXCEPTION OF THE KIND INDICATED IN THE PROMPT. +(ALTHOUGH SOME RESPONSES MAY VALIDLY CAUSE ONE OF SEVERAL +DIFFERENT KINDS OF EXCEPTION TO BE REPORTED BY THE SYSTEM.) + +YOU SHOULD THEN BE GIVEN A CHANCE TO RE-SUPPLY INPUT AND +SHOULD REPLY WITH AS MANY ZEROS AS INDICATED IN THE PROMPT. +(E.G., FOR 3 ITEMS, RESPOND: 0,0,0 TO BYPASS EXCEPTION.) + +*** IF NOT ALLOWED TO RE-SUPPLY INPUT, TEST FAILS *** + +IF THE PROCESSOR ACCEPTS AN INPUT-REPLY, IT FAILS THE +TEST UNLESS 1) IT HAS A DOCUMENTED ENHANCED DEFINITION OF +NUMERIC-CONSTANT, UNQUOTED-STRING, QUOTED-STRING, OR +INPUT-REPLY SUCH AS TO RENDER MEANINGFUL A PARTICULAR +NON-STANDARD RESPONSE, OR 2) ITS DOCUMENTED IMPLEMENTATION- +DEFINED LIMITS FOR OVERFLOW (STRING OR NUMERIC) EXCEED +THE MINIMUM LIMITS ESTABLISHED BY THE STANDARD. +NOT ALL THE INPUT-REPLIES ARE NON-STANDARD, BUT THEY +SHOULD ALL CAUSE EXCEPTIONS, SAVE AS NOTED ABOVE. + +FOR USER CONVENIENCE, THE STRING TO BE ENTERED IS INDENTED +TWO SPACES, SO THAT IF THE INPUT-PROMPT OCCUPIES TWO +POSITIONS, AS RECOMMENDED, YOUR INPUT-REPLY WILL BE +ALIGNED WITH THE PROMPT STRING. + + BEGIN TEST + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: TOO MUCH DATA; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + M,M,M,M +? M,M,M,M +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: INSUFFICIENT DATA; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + M,M +? M,M +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: NUMERIC OVERFLOW; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 1E99999 +? 1E99999 +*** Overflow *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: STRING OVERFLOW; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + IF=THIS=DOES=NOT=CAUSE=STRING=OVRFLW=TRY=LONGER=REPLY +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB?CD +? AB?CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB;CD +? AB;CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + K*L +? K*L +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1,B1,C1 +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + 1,Q,1 +? 1,Q,1 +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 : 0 +ITEM# 2 : 0 +ITEM# 3 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 1D1 +? 1D1 +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB##CD +? AB""CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB#CD +? AB"CD +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB +? "AB +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + AB# +? AB" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB##CD# +? "AB""CD" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + #AB#CD# +? "AB"CD" +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + AB#CD,EF +? AB"CD,EF +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + AB,CD#EF +? AB,CD"EF +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + A#B,C#D +? A"B,C"D +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + A,,B +? A,,B +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$ +EXCEPTION: TOO MUCH DATA; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + X,Y, +? X,Y, +*** Count Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 :0 +ITEM# 2 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + X,Y, +? X,Y, +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + ,A,B +? ,A,B +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$ +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + NULL REPLY (HIT RETURN ONLY) +? +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 :0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1,B1 +EXCEPTION: WRONG TYPE; SHOULD BE 2 ITEM(S). +PLEASE ENTER: + 2==3 +? 2 3 +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0 +ITEM# 1 : 0 +ITEM# 2 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A1 +EXCEPTION: WRONG TYPE; SHOULD BE 1 ITEM(S). +PLEASE ENTER: + 2==3 +? 2 3 +*** Type Mismatch *** +*** Retry INPUT *** +? 0 +ITEM# 1 : 0 +TEST OK. + + +STATEMENT FOR THIS INPUT-REPLY: INPUT A$,B$,C$ +EXCEPTION: WRONG TYPE; SHOULD BE 3 ITEM(S). +PLEASE ENTER: + X,===,Y +? X, ,Y +*** Type Mismatch *** +*** Retry INPUT *** +? 0,0,0 +ITEM# 1 :0 +ITEM# 2 :0 +ITEM# 3 :0 +TEST OK. + +*** TEST PASSED *** + + END TEST + +END PROGRAM 112 diff --git a/NBS2/P113.80 b/NBS2/P113.80 new file mode 100644 index 0000000..06bd95a --- /dev/null +++ b/NBS2/P113.80 @@ -0,0 +1,27 @@ +PROGRAM FILE 113: ERROR - NULL ENTRY IN INPUT-LIST. + ANSI STANDARD 13.2 + +SECTION 113.1: ERROR - NULL ENTRY IN INPUT-LIST. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLES A AND B INITIALIZED TO ZERO. + +PLEASE ENTER: 1,2,3 +STATEMENT FOR THIS REPLY: INPUT A,,B +? 0,0,0 + +ERROR in line 270: Syntax Error diff --git a/NBS2/P113.BAS b/NBS2/P113.BAS new file mode 100644 index 0000000..89fef00 --- /dev/null +++ b/NBS2/P113.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 113: ERROR - NULL ENTRY IN INPUT-LIST." +20 PRINT " ANSI STANDARD 13.2" +30 PRINT +40 PRINT "SECTION 113.1: ERROR - NULL ENTRY IN INPUT-LIST." +50 PRINT +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT " BEGIN TEST" +200 PRINT +210 PRINT "VARIABLES A AND B INITIALIZED TO ZERO." +220 PRINT +230 LET A=0 +240 LET B=0 +250 PRINT "PLEASE ENTER: 1,2,3" +260 PRINT "STATEMENT FOR THIS REPLY: INPUT A,,B" +270 INPUT A,,B +280 PRINT "A = ";A;" B = ";B +290 PRINT +300 PRINT " END TEST" +310 PRINT +320 PRINT "END PROGRAM 113" +330 END diff --git a/NBS2/P113.INP b/NBS2/P113.INP new file mode 100644 index 0000000..7687b89 --- /dev/null +++ b/NBS2/P113.INP @@ -0,0 +1 @@ +0,0,0 diff --git a/NBS2/P113.OUT b/NBS2/P113.OUT new file mode 100644 index 0000000..3cf6f25 --- /dev/null +++ b/NBS2/P113.OUT @@ -0,0 +1,27 @@ +PROGRAM FILE 113: ERROR - NULL ENTRY IN INPUT-LIST. + ANSI STANDARD 13.2 + +SECTION 113.1: ERROR - NULL ENTRY IN INPUT-LIST. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLES A AND B INITIALIZED TO ZERO. + +PLEASE ENTER: 1,2,3 +STATEMENT FOR THIS REPLY: INPUT A,,B +? 0,0,0 + +ERROR in line 270: Syntax Error diff --git a/NBS2/P113.dif b/NBS2/P113.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P113.run b/NBS2/P113.run new file mode 100644 index 0000000..06bd95a --- /dev/null +++ b/NBS2/P113.run @@ -0,0 +1,27 @@ +PROGRAM FILE 113: ERROR - NULL ENTRY IN INPUT-LIST. + ANSI STANDARD 13.2 + +SECTION 113.1: ERROR - NULL ENTRY IN INPUT-LIST. + + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +VARIABLES A AND B INITIALIZED TO ZERO. + +PLEASE ENTER: 1,2,3 +STATEMENT FOR THIS REPLY: INPUT A,,B +? 0,0,0 + +ERROR in line 270: Syntax Error diff --git a/NBS2/P114.80 b/NBS2/P114.80 new file mode 100644 index 0000000..f2abeda --- /dev/null +++ b/NBS2/P114.80 @@ -0,0 +1,40 @@ +PROGRAM FILE 114: EVALUATION OF ABS FUNCTION. + ANSI STANDARD 8.4 + +SECTION 114.1: EVALUATION OF ABS FUNCTION. + +THIS SECTION TESTS WHETHER THE ABS NUMERIC-SUPPLIED-FUNCTION +RETURNS THE ABSOLUTE VALUE FOR A VARIETY OF ARGUMENTS. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + +-2 2 2 OK +-1 1 1 OK + 0 0 0 OK + 0 0 0 OK + 1 1 1 OK + 2 2 2 OK + 2.1 2.1 2.1 OK + 2.9 2.9 2.9 OK +-2.1 2.1 2.1 OK +-2.9 2.9 2.9 OK +-1.23E+22 1.23E+22 1.23E+22 OK + 3.21E-11 3.21E-11 3.21E-11 OK + 9.99E+37 9.99E+37 9.99E+37 OK +-9.99E+37 9.99E+37 9.99E+37 OK + 1.E+38 1.E+38 1.E+38 OK +-1.E+38 1.E+38 1.E+38 OK + 1.E-38 1.E-38 1.E-38 OK +-1.E-38 1.E-38 1.E-38 OK +-1.01E-38 1.01E-38 1.01E-38 OK + .001 .001 .001 OK +-.001 .001 .001 OK + +*** TEST PASSED *** + + END TEST + +END PROGRAM 114 diff --git a/NBS2/P114.BAS b/NBS2/P114.BAS new file mode 100644 index 0000000..50a3231 --- /dev/null +++ b/NBS2/P114.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 114: EVALUATION OF ABS FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 114.1: EVALUATION OF ABS FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHETHER THE ABS NUMERIC-SUPPLIED-FUNCTION" +70 PRINT "RETURNS THE ABSOLUTE VALUE FOR A VARIETY OF ARGUMENTS." +100 PRINT +110 PRINT " BEGIN TEST" +120 PRINT +130 LET F=0 +140 PRINT " ","CORRECT","ACTUAL","TEST" +150 PRINT "ARGUMENT","VALUE","VALUE","RESULT" +160 PRINT +170 READ A,V +180 IF A=999 THEN 290 +190 LET V1=ABS(A) +200 IF V=V1 THEN 270 +240 LET F=F+1 +250 PRINT A,V,V1,"FAIL" +260 GOTO 170 +270 PRINT A,V,V1," OK " +280 GOTO 170 +290 PRINT +300 IF F=0 THEN 330 +310 PRINT "*** TEST FAILED IN ";F;" CASE(S) ***" +320 GOTO 340 +330 PRINT "*** TEST PASSED ***" +340 PRINT +350 PRINT " END TEST" +360 PRINT +370 PRINT "END PROGRAM 114" +380 DATA -2,2,-1,1,+0,0,-0,0,1,1,2,2,2.1,2.1,2.9,2.9,-2.1,2.1,-2.9,2.9 +390 DATA -1.23E22,1.23E22,3.21E-11,3.21E-11,9.99E37,9.99E37 +400 DATA -9.99E37,9.99E37,1E38,1E38,-1E38,1E38,1E-38,1E-38 +410 DATA -1E-38,1E-38,-1.01E-38,1.01E-38,.001,.001,-.001,.001 +420 DATA 999,999 +430 END diff --git a/NBS2/P114.OUT b/NBS2/P114.OUT new file mode 100644 index 0000000..6a5e1d4 --- /dev/null +++ b/NBS2/P114.OUT @@ -0,0 +1,40 @@ +PROGRAM FILE 114: EVALUATION OF ABS FUNCTION. + ANSI STANDARD 8.4 + +SECTION 114.1: EVALUATION OF ABS FUNCTION. + +THIS SECTION TESTS WHETHER THE ABS NUMERIC-SUPPLIED-FUNCTION +RETURNS THE ABSOLUTE VALUE FOR A VARIETY OF ARGUMENTS. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + +-2 2 2 OK +-1 1 1 OK + 0 0 0 OK + 0 0 0 OK + 1 1 1 OK + 2 2 2 OK + 2.1 2.1 2.1 OK + 2.9 2.9 2.9 OK +-2.1 2.1 2.1 OK +-2.9 2.9 2.9 OK +-1.23E+22 1.23E+22 1.23E+22 OK + 3.21E-11 3.21E-11 3.21E-11 OK + 9.99E+37 9.99E+37 9.99E+37 OK +-9.99E+37 9.99E+37 9.99E+37 OK + 1.E+38 1.E+38 1.E+38 OK +-1.E+38 1.E+38 1.E+38 OK + 1.E-38 1.E-38 1.E-38 OK +-1.E-38 1.E-38 1.E-38 OK +-1.01E-38 1.01E-38 1.01E-38 OK + .001 .001 .001 OK +-.001 .001 .001 OK + +*** TEST PASSED *** + + END TEST + +END PROGRAM 114 diff --git a/NBS2/P114.dif b/NBS2/P114.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P114.run b/NBS2/P114.run new file mode 100644 index 0000000..f2abeda --- /dev/null +++ b/NBS2/P114.run @@ -0,0 +1,40 @@ +PROGRAM FILE 114: EVALUATION OF ABS FUNCTION. + ANSI STANDARD 8.4 + +SECTION 114.1: EVALUATION OF ABS FUNCTION. + +THIS SECTION TESTS WHETHER THE ABS NUMERIC-SUPPLIED-FUNCTION +RETURNS THE ABSOLUTE VALUE FOR A VARIETY OF ARGUMENTS. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + +-2 2 2 OK +-1 1 1 OK + 0 0 0 OK + 0 0 0 OK + 1 1 1 OK + 2 2 2 OK + 2.1 2.1 2.1 OK + 2.9 2.9 2.9 OK +-2.1 2.1 2.1 OK +-2.9 2.9 2.9 OK +-1.23E+22 1.23E+22 1.23E+22 OK + 3.21E-11 3.21E-11 3.21E-11 OK + 9.99E+37 9.99E+37 9.99E+37 OK +-9.99E+37 9.99E+37 9.99E+37 OK + 1.E+38 1.E+38 1.E+38 OK +-1.E+38 1.E+38 1.E+38 OK + 1.E-38 1.E-38 1.E-38 OK +-1.E-38 1.E-38 1.E-38 OK +-1.01E-38 1.01E-38 1.01E-38 OK + .001 .001 .001 OK +-.001 .001 .001 OK + +*** TEST PASSED *** + + END TEST + +END PROGRAM 114 diff --git a/NBS2/P115.80 b/NBS2/P115.80 new file mode 100644 index 0000000..b350708 --- /dev/null +++ b/NBS2/P115.80 @@ -0,0 +1,76 @@ +PROGRAM FILE 115: EVALUATION OF INT FUNCTION. + ANSI STANDARD 8.4 + +SECTION 115.1: EVALUATION OF INT FUNCTION. + +THIS SECTION TESTS WHETHER THE INT NUMERIC-SUPPLIED-FUNCTION +RETURNS THE GREATEST INTEGER LESS THAN OR EQUAL TO +THE VALUE OF THE ARGUMENT PASSED TO THE FUNCTION. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + + 3 3 3 OK +-3 -3 -3 OK + 2.1 2 2 OK + 2.9 2 2 OK +-2.1 -3 -3 OK +-2.9 -3 -3 OK + 1 1 1 OK +-1 -1 -1 OK + 0 0 0 OK + .1 0 0 OK + .9 0 0 OK +-.1 -1 -1 OK +-.9 -1 -1 OK + 1234.2 1234 1234 OK + 1234.9 1234 1234 OK +-12345.6 -12346 -12346 OK + 3.99999 3 3 OK +-44.0001 -45 -45 OK +-12300 -12300 -12300 OK +-4.56 -5 -5 OK + 78.9999 78 78 OK + 1.E-38 0 0 OK + .123457 0 0 OK + 1.23456E-31 0 0 OK +-1.E-38 -1 -1 OK +-.123457 -1 -1 OK +-1.23456E-31 -1 -1 OK + +*** TEST PASSED *** + + END TEST + + +SECTION 115.2 EVALUATION OF INT FUNCTION FOR VALUES + OF LARGE MAGNITUDE. + +THIS IS AN INFORMATIVE TEST TO EXAMINE THE BEHAVIOR OF +THE INT FUNCTION WHEN THE RESULT DEPENDS ON CALCULATION +BEYOND SIX DECIMAL DIGITS. THIS SECTION IS NOT CONSIDERED +EITHER TO PAS OR FAIL. + + BEGIN TEST + + CORRECT ACTUAL +ARGUMENT VALUE VALUE + +987654.1 987654 987654 +987654.9 987654 987654 +1234567.9 1234567 1.23457E+6 +12345678.9 12345678 1.23457E+7 +123456789.9 123456789 1.23457E+8 +1234567890.9 1234567890 1.23457E+9 +-987654.1 -987655 -987655 +-987654.9 -987655 -987655 +-1234567.1 -1234568 -1.23457E+6 +-12345678.1 -123456789 -1.23457E+7 +-123456789.1 -123456790 -1.23457E+8 +-1234567890.1 -1234567891 -1.23457E+9 + + END TEST + +END PROGRAM 115 diff --git a/NBS2/P115.BAS b/NBS2/P115.BAS new file mode 100644 index 0000000..6edaf48 --- /dev/null +++ b/NBS2/P115.BAS @@ -0,0 +1,76 @@ +10 PRINT "PROGRAM FILE 115: EVALUATION OF INT FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 115.1: EVALUATION OF INT FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHETHER THE INT NUMERIC-SUPPLIED-FUNCTION" +70 PRINT "RETURNS THE GREATEST INTEGER LESS THAN OR EQUAL TO" +80 PRINT "THE VALUE OF THE ARGUMENT PASSED TO THE FUNCTION." +110 PRINT +120 PRINT " BEGIN TEST" +130 PRINT +140 LET F=0 +150 PRINT " ","CORRECT","ACTUAL","TEST" +160 PRINT "ARGUMENT","VALUE","VALUE","RESULT" +170 PRINT +180 READ A,V +190 IF A=999 THEN 300 +200 LET V1=INT(A) +210 IF V=V1 THEN 280 +250 LET F=F+1 +260 PRINT A,V,V1,"FAIL" +270 GOTO 180 +280 PRINT A,V,V1," OK " +290 GOTO 180 +300 REM DISPLAY RESULTS +310 PRINT +320 IF F=0 THEN 350 +330 PRINT "*** TEST FAILED IN ";F;" CASE(S) ***" +340 GOTO 360 +350 PRINT "*** TEST PASSED ***" +360 PRINT +370 PRINT " END TEST" +380 PRINT +390 PRINT +400 PRINT "SECTION 115.2 EVALUATION OF INT FUNCTION FOR VALUES" +410 PRINT " OF LARGE MAGNITUDE." +420 PRINT +430 PRINT "THIS IS AN INFORMATIVE TEST TO EXAMINE THE BEHAVIOR OF" +440 PRINT "THE INT FUNCTION WHEN THE RESULT DEPENDS ON CALCULATION" +450 PRINT "BEYOND SIX DECIMAL DIGITS. THIS SECTION IS NOT CONSIDERED" +460 PRINT "EITHER TO PAS OR FAIL." +470 PRINT +480 PRINT " BEGIN TEST" +490 PRINT +500 PRINT " ","CORRECT","ACTUAL" +510 PRINT "ARGUMENT","VALUE","VALUE" +520 PRINT +530 READ A,A$,V$ +540 IF A=999 THEN 580 +550 LET V=INT(A) +560 PRINT A$,V$,V +570 GOTO 530 +580 PRINT +590 PRINT " END TEST" +600 PRINT +610 PRINT "END PROGRAM 115" +620 DATA 3,3,-3,-3,2.1,2,2.9,2,-2.1,-3,-2.9,-3 +630 DATA 1,1,-1,-1,0,0,.1,0,.9,0,-.1,-1,-.9,-1 +640 DATA 1234.2,1234,1234.9,1234,-12345.6,-12346 +650 DATA 3.99999,3,-44.0001,-45 +660 DATA -123E2,-12300,-456E-2,-5,789999E-4,78 +670 DATA 1E-38,0,123.45678E-3,0,123.456E-33,0 +680 DATA -1E-38,-1,-123.45678E-3,-1,-123.456E-33,-1 +690 DATA 999,999 +700 DATA 987654.1,"987654.1","987654",987654.9,"987654.9","987654" +710 DATA 1234567.9,"1234567.9","1234567",12345678.9,"12345678.9" +720 DATA "12345678",123456789.9,"123456789.9","123456789" +730 DATA 1234567890.9,"1234567890.9","1234567890" +740 DATA -987654.1,"-987654.1","-987655" +750 DATA -987654.9,"-987654.9","-987655" +760 DATA -1234567.1,"-1234567.1","-1234568" +770 DATA -12345678.1,"-12345678.1","-123456789" +780 DATA -123456789.1,"-123456789.1","-123456790" +790 DATA -1234567890.1,"-1234567890.1","-1234567891" +2000 DATA 999,"Q","Q" +2010 END diff --git a/NBS2/P115.OUT b/NBS2/P115.OUT new file mode 100644 index 0000000..407bc24 --- /dev/null +++ b/NBS2/P115.OUT @@ -0,0 +1,76 @@ +PROGRAM FILE 115: EVALUATION OF INT FUNCTION. + ANSI STANDARD 8.4 + +SECTION 115.1: EVALUATION OF INT FUNCTION. + +THIS SECTION TESTS WHETHER THE INT NUMERIC-SUPPLIED-FUNCTION +RETURNS THE GREATEST INTEGER LESS THAN OR EQUAL TO +THE VALUE OF THE ARGUMENT PASSED TO THE FUNCTION. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + + 3 3 3 OK +-3 -3 -3 OK + 2.1 2 2 OK + 2.9 2 2 OK +-2.1 -3 -3 OK +-2.9 -3 -3 OK + 1 1 1 OK +-1 -1 -1 OK + 0 0 0 OK + .1 0 0 OK + .9 0 0 OK +-.1 -1 -1 OK +-.9 -1 -1 OK + 1234.2 1234 1234 OK + 1234.9 1234 1234 OK +-12345.6 -12346 -12346 OK + 3.99999 3 3 OK +-44.0001 -45 -45 OK +-12300 -12300 -12300 OK +-4.56 -5 -5 OK + 78.9999 78 78 OK + 1.E-38 0 0 OK + .123457 0 0 OK + 1.23456E-31 0 0 OK +-1.E-38 -1 -1 OK +-.123457 -1 -1 OK +-1.23456E-31 -1 -1 OK + +*** TEST PASSED *** + + END TEST + + +SECTION 115.2 EVALUATION OF INT FUNCTION FOR VALUES + OF LARGE MAGNITUDE. + +THIS IS AN INFORMATIVE TEST TO EXAMINE THE BEHAVIOR OF +THE INT FUNCTION WHEN THE RESULT DEPENDS ON CALCULATION +BEYOND SIX DECIMAL DIGITS. THIS SECTION IS NOT CONSIDERED +EITHER TO PAS OR FAIL. + + BEGIN TEST + + CORRECT ACTUAL +ARGUMENT VALUE VALUE + +987654.1 987654 987654 +987654.9 987654 987654 +1234567.9 1234567 1.23457E+6 +12345678.9 12345678 1.23457E+7 +123456789.9 123456789 1.23457E+8 +1234567890.9 1234567890 1.23457E+9 +-987654.1 -987655 -987655 +-987654.9 -987655 -987655 +-1234567.1 -1234568 -1.23457E+6 +-12345678.1 -123456789 -1.23457E+7 +-123456789.1 -123456790 -1.23457E+8 +-1234567890.1 -1234567891 -1.23457E+9 + + END TEST + +END PROGRAM 115 diff --git a/NBS2/P115.dif b/NBS2/P115.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P115.run b/NBS2/P115.run new file mode 100644 index 0000000..b350708 --- /dev/null +++ b/NBS2/P115.run @@ -0,0 +1,76 @@ +PROGRAM FILE 115: EVALUATION OF INT FUNCTION. + ANSI STANDARD 8.4 + +SECTION 115.1: EVALUATION OF INT FUNCTION. + +THIS SECTION TESTS WHETHER THE INT NUMERIC-SUPPLIED-FUNCTION +RETURNS THE GREATEST INTEGER LESS THAN OR EQUAL TO +THE VALUE OF THE ARGUMENT PASSED TO THE FUNCTION. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + + 3 3 3 OK +-3 -3 -3 OK + 2.1 2 2 OK + 2.9 2 2 OK +-2.1 -3 -3 OK +-2.9 -3 -3 OK + 1 1 1 OK +-1 -1 -1 OK + 0 0 0 OK + .1 0 0 OK + .9 0 0 OK +-.1 -1 -1 OK +-.9 -1 -1 OK + 1234.2 1234 1234 OK + 1234.9 1234 1234 OK +-12345.6 -12346 -12346 OK + 3.99999 3 3 OK +-44.0001 -45 -45 OK +-12300 -12300 -12300 OK +-4.56 -5 -5 OK + 78.9999 78 78 OK + 1.E-38 0 0 OK + .123457 0 0 OK + 1.23456E-31 0 0 OK +-1.E-38 -1 -1 OK +-.123457 -1 -1 OK +-1.23456E-31 -1 -1 OK + +*** TEST PASSED *** + + END TEST + + +SECTION 115.2 EVALUATION OF INT FUNCTION FOR VALUES + OF LARGE MAGNITUDE. + +THIS IS AN INFORMATIVE TEST TO EXAMINE THE BEHAVIOR OF +THE INT FUNCTION WHEN THE RESULT DEPENDS ON CALCULATION +BEYOND SIX DECIMAL DIGITS. THIS SECTION IS NOT CONSIDERED +EITHER TO PAS OR FAIL. + + BEGIN TEST + + CORRECT ACTUAL +ARGUMENT VALUE VALUE + +987654.1 987654 987654 +987654.9 987654 987654 +1234567.9 1234567 1.23457E+6 +12345678.9 12345678 1.23457E+7 +123456789.9 123456789 1.23457E+8 +1234567890.9 1234567890 1.23457E+9 +-987654.1 -987655 -987655 +-987654.9 -987655 -987655 +-1234567.1 -1234568 -1.23457E+6 +-12345678.1 -123456789 -1.23457E+7 +-123456789.1 -123456790 -1.23457E+8 +-1234567890.1 -1234567891 -1.23457E+9 + + END TEST + +END PROGRAM 115 diff --git a/NBS2/P116.80 b/NBS2/P116.80 new file mode 100644 index 0000000..24e954c --- /dev/null +++ b/NBS2/P116.80 @@ -0,0 +1,35 @@ +PROGRAM FILE 116: EVALUATION OF SGN FUNCTION. + ANSI STANDARD 8.4 + +SECTION 116.1: EVALUATION OF SGN FUNCTION. + +THIS SECTION TESTS WHETHER THE SGN NUMERIC-SUPPLIED-FUNCTION +RETURNS THE CORRECT VALUE FOR A VARIETY OF ARGUMENTS. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + + 0 0 0 OK + 1 1 1 OK +-1 -1 -1 OK + 3 1 1 OK +-4 -1 -1 OK + 86.1234 1 1 OK +-3.45678E+24 -1 -1 OK + 2.22222E-32 1 1 OK + 1.23E-8 1 1 OK + 1.E+38 1 1 OK +-1.E+38 -1 -1 OK + 1.E-38 1 1 OK +-1.E-38 -1 -1 OK + 0 0 0 OK + 0 0 0 OK + 0 0 0 OK + +*** TEST PASSED *** + + END TEST + +END PROGRAM 116 diff --git a/NBS2/P116.BAS b/NBS2/P116.BAS new file mode 100644 index 0000000..a788ecb --- /dev/null +++ b/NBS2/P116.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 116: EVALUATION OF SGN FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 116.1: EVALUATION OF SGN FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHETHER THE SGN NUMERIC-SUPPLIED-FUNCTION" +70 PRINT "RETURNS THE CORRECT VALUE FOR A VARIETY OF ARGUMENTS." +100 PRINT +110 PRINT " BEGIN TEST" +120 PRINT +130 LET F=0 +140 PRINT " ","CORRECT","ACTUAL","TEST" +150 PRINT "ARGUMENT","VALUE","VALUE","RESULT" +160 PRINT +170 READ A,V +180 IF A=999 THEN 280 +190 LET V1=SGN(A) +210 LET R$=" OK " +220 IF V=V1 THEN 260 +240 LET R$="FAIL" +250 LET F=F+1 +260 PRINT A,V,V1,R$ +270 GOTO 170 +280 PRINT +290 IF F=0 THEN 320 +300 PRINT "*** TEST FAILED IN ";F;" CASE(S) ***" +310 GOTO 330 +320 PRINT "*** TEST PASSED ***" +330 PRINT +340 PRINT " END TEST" +350 PRINT +360 PRINT "END PROGRAM 116" +370 DATA 0,0,1,1,-1,-1,3,1,-4,-1,86.1234,1,-345.678E22,-1 +380 DATA +22.2222E-33,1,.0000000123,1 +390 DATA 1E38,1,-1E38,-1,1E-38,1,-1E-38,-1,-0,0,+0,0 +400 DATA -00.00E11,0 +410 DATA 999,999 +420 END diff --git a/NBS2/P116.OUT b/NBS2/P116.OUT new file mode 100644 index 0000000..ba6b466 --- /dev/null +++ b/NBS2/P116.OUT @@ -0,0 +1,35 @@ +PROGRAM FILE 116: EVALUATION OF SGN FUNCTION. + ANSI STANDARD 8.4 + +SECTION 116.1: EVALUATION OF SGN FUNCTION. + +THIS SECTION TESTS WHETHER THE SGN NUMERIC-SUPPLIED-FUNCTION +RETURNS THE CORRECT VALUE FOR A VARIETY OF ARGUMENTS. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + + 0 0 0 OK + 1 1 1 OK +-1 -1 -1 OK + 3 1 1 OK +-4 -1 -1 OK + 86.1234 1 1 OK +-3.45678E+24 -1 -1 OK + 2.22222E-32 1 1 OK + 1.23E-8 1 1 OK + 1.E+38 1 1 OK +-1.E+38 -1 -1 OK + 1.E-38 1 1 OK +-1.E-38 -1 -1 OK + 0 0 0 OK + 0 0 0 OK + 0 0 0 OK + +*** TEST PASSED *** + + END TEST + +END PROGRAM 116 diff --git a/NBS2/P116.dif b/NBS2/P116.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P116.run b/NBS2/P116.run new file mode 100644 index 0000000..24e954c --- /dev/null +++ b/NBS2/P116.run @@ -0,0 +1,35 @@ +PROGRAM FILE 116: EVALUATION OF SGN FUNCTION. + ANSI STANDARD 8.4 + +SECTION 116.1: EVALUATION OF SGN FUNCTION. + +THIS SECTION TESTS WHETHER THE SGN NUMERIC-SUPPLIED-FUNCTION +RETURNS THE CORRECT VALUE FOR A VARIETY OF ARGUMENTS. + + BEGIN TEST + + CORRECT ACTUAL TEST +ARGUMENT VALUE VALUE RESULT + + 0 0 0 OK + 1 1 1 OK +-1 -1 -1 OK + 3 1 1 OK +-4 -1 -1 OK + 86.1234 1 1 OK +-3.45678E+24 -1 -1 OK + 2.22222E-32 1 1 OK + 1.23E-8 1 1 OK + 1.E+38 1 1 OK +-1.E+38 -1 -1 OK + 1.E-38 1 1 OK +-1.E-38 -1 -1 OK + 0 0 0 OK + 0 0 0 OK + 0 0 0 OK + +*** TEST PASSED *** + + END TEST + +END PROGRAM 116 diff --git a/NBS2/P117.80 b/NBS2/P117.80 new file mode 100644 index 0000000..fb51880 --- /dev/null +++ b/NBS2/P117.80 @@ -0,0 +1,53 @@ +PROGRAM FILE 117: ACCURACY OF SQR FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 117.1: ACCURACY OF SQR FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +SQR FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + + 0 0 0 RANGE ZERO OK - EXACT + 1.E-38 1.E-19 1.E-19 1.55307E-11 OK + 9.99999E-38 3.16228E-19 3.16228E-19 1.47321E-4 OK + 9.E-38 3.E-19 3.E-19 7.21863E-11 OK + 9.99999E-37 1.E-18 9.99999E-19 3.85127E-8 OK + 9.99999E-31 1.E-15 9.99999E-16 1.25169E-7 OK + 1.23456E-20 1.11111E-10 1.11111E-10 4.68189E-4 OK + 6.54321E-5 8.08901E-3 8.08901E-3 3.93464E-4 OK + .5 .707107 .707107 1.54491E-4 OK + 1 1 1 0 OK - EXACT + .999999 1. .999999 3.8459E-8 OK + 2 1.41421 1.41421 2.7788E-4 OK + 3 1.73205 1.73205 3.08127E-4 OK + 4 2 2 0 OK - EXACT + 5 2.23607 2.23607 3.45333E-4 OK + 9.99999 3.16228 3.16228 1.47321E-4 OK + 10 3.16228 3.16228 8.08739E-6 OK + 40000 200 200 0 OK - EXACT + 1.23456E+8 11111.1 11111.1 4.68189E-4 OK + 6.54321E+20 2.55797E+10 2.55797E+10 2.61354E-4 OK + 9.99999E+31 1.E+16 9.99999E+15 1.24938E-7 OK + 9.E+36 3.E+18 3.E+18 0 OK - EXACT + 1.E+38 1.E+19 1.E+19 0 OK - EXACT + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 117 diff --git a/NBS2/P117.BAS b/NBS2/P117.BAS new file mode 100644 index 0000000..4206e0a --- /dev/null +++ b/NBS2/P117.BAS @@ -0,0 +1,102 @@ +10 PRINT "PROGRAM FILE 117: ACCURACY OF SQR FUNCTION." +20 PRINT " ANSI STANDARD 7.6, 8.4" +30 PRINT +40 PRINT "SECTION 117.1: ACCURACY OF SQR FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE" +70 PRINT "SQR FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN," +80 PRINT "ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY" +90 PRINT "THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT" +100 PRINT "PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN" +110 PRINT "'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE" +120 PRINT "IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE;" +130 PRINT "THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY" +140 PRINT "HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES" +150 PRINT "AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3." +160 PRINT +170 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +180 PRINT "DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 PRINT "ARGUMENT","TRUE","COMPUTED","ERROR","OUTCOME" +230 PRINT " ","VALUE","VALUE","MEASURE" +240 PRINT +250 LET F=0 +260 READ A,T,L,H +270 IF A=999 THEN 2000 +280 LET C=SQR(A) +290 IF C=T THEN 333 +300 IF CH THEN 444 +320 LET O$=" OK " +330 GOTO 500 +333 LET O$=" OK - EXACT" +340 GOTO 500 +444 LET O$="FAIL" +445 LET F=F+1 +450 GOTO 500 +500 LET R=H-L +510 IF R=0 THEN 700 +520 LET E=ABS((C-T)/R) +525 LET E=E+E +530 PRINT A,T,C,E,O$ +540 GOTO 260 +700 PRINT A,T,C,"RANGE ZERO",O$ +710 GOTO 260 +2000 PRINT +2010 IF F=0 THEN 2100 +2020 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +2030 GOTO 2110 +2100 PRINT "*** INFORMATIVE TEST PASSED ***" +2110 PRINT +2120 PRINT " END TEST" +2130 PRINT +2140 PRINT "END PROGRAM 117" +2990 DATA 0,0,0,0 +3000 DATA 1.000000000E-38, 0.100000000E-18 +3010 DATA 0.999994499E-19, 0.100001000E-18 +3040 DATA 0.999999000E-37, 0.316227608E-18 +3050 DATA 0.316226949E-18, 0.316228267E-18 +3052 DATA 0.900000000E-37, 0.300000000E-18 +3055 DATA 0.299999333E-18, 0.300000667E-18 +3060 DATA 0.999999000E-36, 0.999999500E-18 +3070 DATA 0.999998499E-18, 0.100000500E-17 +3080 DATA 0.999999000E-30, 0.999999500E-15 +3090 DATA 0.999998499E-15, 1.000000500E-15 +3100 DATA 0.123456000E-19, 0.111110756E-09 +3110 DATA 0.111109805E-09, 0.111111706E-09 +3120 DATA 0.654321000E-04, 0.808901106E-02 +3130 DATA 0.808899988E-02, 0.808902225E-02 +3140 DATA 0.500000000E+00, 0.707106781E+00 +3150 DATA 0.707105574E+00, 0.707107989E+00 +3160 DATA 0.100000000E+01, 0.100000000E+01 +3170 DATA 0.999994499E+00, 0.100001000E+01 +3180 DATA 0.999999000E+00, 0.999999500E+00 +3190 DATA 0.999998499E+00, 0.100000500E+01 +3200 DATA 0.200000000E+01, 0.141421356E+01 +3210 DATA 0.141420502E+01, 0.141422210E+01 +3220 DATA 0.300000000E+01, 0.173205081E+01 +3230 DATA 0.173204292E+01, 0.173205870E+01 +3240 DATA 0.400000000E+01, 0.200000000E+01 +3250 DATA 0.199999249E+01, 0.200000750E+01 +3260 DATA 0.500000000E+01, 0.223606798E+01 +3270 DATA 0.223606074E+01, 0.223607522E+01 +3280 DATA 0.999999000E+01, 0.316227608E+01 +3290 DATA 0.316226949E+01, 0.316228267E+01 +3300 DATA 0.100000000E+02, 0.316227766E+01 +3310 DATA 0.316225684E+01, 0.316229848E+01 +3320 DATA 0.400000000E+05, 0.200000000E+03 +3330 DATA 0.199999249E+03, 0.200000750E+03 +3340 DATA 0.123456000E+09, 0.111110756E+05 +3350 DATA 0.111109805E+05, 0.111111706E+05 +3360 DATA 0.654321000E+21, 0.255796990E+11 +3370 DATA 0.255796294E+11, 0.255797686E+11 +3380 DATA 0.999999000E+32, 0.999999500E+16 +3390 DATA 0.999998499E+16, 1.000000500E+16 +3392 DATA 0.900000000E+37, 0.300000000E+19 +3394 DATA 0.299999333E+19, 0.300000667E+19 +3400 DATA 0.100000000E+39, 1.000000000E+19 +3410 DATA 0.999994499E+19, 0.100001000E+20 +9000 DATA 999,0,0,0 +9400 END diff --git a/NBS2/P117.OUT b/NBS2/P117.OUT new file mode 100644 index 0000000..077fa3f --- /dev/null +++ b/NBS2/P117.OUT @@ -0,0 +1,53 @@ +PROGRAM FILE 117: ACCURACY OF SQR FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 117.1: ACCURACY OF SQR FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +SQR FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + + 0 0 0 RANGE ZERO OK - EXACT + 1.E-38 1.E-19 1.E-19 1.55307E-11 OK + 9.99999E-38 3.16228E-19 3.16228E-19 1.47321E-4 OK + 9.E-38 3.E-19 3.E-19 7.21863E-11 OK + 9.99999E-37 1.E-18 9.99999E-19 3.85127E-8 OK + 9.99999E-31 1.E-15 9.99999E-16 1.25169E-7 OK + 1.23456E-20 1.11111E-10 1.11111E-10 4.68189E-4 OK + 6.54321E-5 8.08901E-3 8.08901E-3 3.93464E-4 OK + .5 .707107 .707107 1.54491E-4 OK + 1 1 1 0 OK - EXACT + .999999 1. .999999 3.8459E-8 OK + 2 1.41421 1.41421 2.7788E-4 OK + 3 1.73205 1.73205 3.08127E-4 OK + 4 2 2 0 OK - EXACT + 5 2.23607 2.23607 3.45333E-4 OK + 9.99999 3.16228 3.16228 1.47321E-4 OK + 10 3.16228 3.16228 8.08739E-6 OK + 40000 200 200 0 OK - EXACT + 1.23456E+8 11111.1 11111.1 4.68189E-4 OK + 6.54321E+20 2.55797E+10 2.55797E+10 2.61354E-4 OK + 9.99999E+31 1.E+16 9.99999E+15 1.24938E-7 OK + 9.E+36 3.E+18 3.E+18 0 OK - EXACT + 1.E+38 1.E+19 1.E+19 0 OK - EXACT + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 117 diff --git a/NBS2/P117.dif b/NBS2/P117.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P117.run b/NBS2/P117.run new file mode 100644 index 0000000..fb51880 --- /dev/null +++ b/NBS2/P117.run @@ -0,0 +1,53 @@ +PROGRAM FILE 117: ACCURACY OF SQR FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 117.1: ACCURACY OF SQR FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +SQR FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + + 0 0 0 RANGE ZERO OK - EXACT + 1.E-38 1.E-19 1.E-19 1.55307E-11 OK + 9.99999E-38 3.16228E-19 3.16228E-19 1.47321E-4 OK + 9.E-38 3.E-19 3.E-19 7.21863E-11 OK + 9.99999E-37 1.E-18 9.99999E-19 3.85127E-8 OK + 9.99999E-31 1.E-15 9.99999E-16 1.25169E-7 OK + 1.23456E-20 1.11111E-10 1.11111E-10 4.68189E-4 OK + 6.54321E-5 8.08901E-3 8.08901E-3 3.93464E-4 OK + .5 .707107 .707107 1.54491E-4 OK + 1 1 1 0 OK - EXACT + .999999 1. .999999 3.8459E-8 OK + 2 1.41421 1.41421 2.7788E-4 OK + 3 1.73205 1.73205 3.08127E-4 OK + 4 2 2 0 OK - EXACT + 5 2.23607 2.23607 3.45333E-4 OK + 9.99999 3.16228 3.16228 1.47321E-4 OK + 10 3.16228 3.16228 8.08739E-6 OK + 40000 200 200 0 OK - EXACT + 1.23456E+8 11111.1 11111.1 4.68189E-4 OK + 6.54321E+20 2.55797E+10 2.55797E+10 2.61354E-4 OK + 9.99999E+31 1.E+16 9.99999E+15 1.24938E-7 OK + 9.E+36 3.E+18 3.E+18 0 OK - EXACT + 1.E+38 1.E+19 1.E+19 0 OK - EXACT + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 117 diff --git a/NBS2/P118.80 b/NBS2/P118.80 new file mode 100644 index 0000000..f355205 --- /dev/null +++ b/NBS2/P118.80 @@ -0,0 +1,23 @@ +PROGRAM FILE 118: EXCEPTION - SQR OF NEGATIVE ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 118.1: EXCEPTION - SQR OF NEGATIVE ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A NEGATIVE ARGUMENT +IS PASSED TO THE SQR FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE NEGATIVE + ARGUMENT. + + BEGIN TEST + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: SQR(X) diff --git a/NBS2/P118.BAS b/NBS2/P118.BAS new file mode 100644 index 0000000..7b4c38f --- /dev/null +++ b/NBS2/P118.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 118: EXCEPTION - SQR OF NEGATIVE ARGUMENT." +20 PRINT " ANSI STANDARD 8.5" +30 PRINT +40 PRINT "SECTION 118.1: EXCEPTION - SQR OF NEGATIVE ARGUMENT." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A NEGATIVE ARGUMENT" +90 PRINT "IS PASSED TO THE SQR FUNCTION." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE NEGATIVE" +170 PRINT " ARGUMENT." +180 PRINT +190 PRINT " BEGIN TEST" +200 PRINT +210 PRINT "FATAL EXCEPTION SHOULD OCCUR NOW:" +220 PRINT +230 LET A=(-3) +240 LET B=SQR(A) +255 PRINT "*** TEST FAILED ***" +257 PRINT +260 PRINT "ARGUMENT WAS SET TO -3; IT NOW EQUALS ";A +270 PRINT "RESULT OF SQR IS ";B +280 PRINT +330 PRINT +340 PRINT " END TEST" +350 PRINT +360 PRINT "END PROGRAM 118" +370 END diff --git a/NBS2/P118.OUT b/NBS2/P118.OUT new file mode 100644 index 0000000..4de62b7 --- /dev/null +++ b/NBS2/P118.OUT @@ -0,0 +1,23 @@ +PROGRAM FILE 118: EXCEPTION - SQR OF NEGATIVE ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 118.1: EXCEPTION - SQR OF NEGATIVE ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A NEGATIVE ARGUMENT +IS PASSED TO THE SQR FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE NEGATIVE + ARGUMENT. + + BEGIN TEST + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: SQR(X) diff --git a/NBS2/P118.dif b/NBS2/P118.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P118.run b/NBS2/P118.run new file mode 100644 index 0000000..f355205 --- /dev/null +++ b/NBS2/P118.run @@ -0,0 +1,23 @@ +PROGRAM FILE 118: EXCEPTION - SQR OF NEGATIVE ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 118.1: EXCEPTION - SQR OF NEGATIVE ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A NEGATIVE ARGUMENT +IS PASSED TO THE SQR FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE NEGATIVE + ARGUMENT. + + BEGIN TEST + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: SQR(X) diff --git a/NBS2/P119.80 b/NBS2/P119.80 new file mode 100644 index 0000000..7be2ac4 --- /dev/null +++ b/NBS2/P119.80 @@ -0,0 +1,107 @@ +PROGRAM FILE 119: ACCURACY OF ATN FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 119.1: ACCURACY OF ATN FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +ATN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3- + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-1.E+38 -1.5708 -1.5708 6.4038E-4 OK +-9.99999E+37 -1.5708 -1.5708 6.4038E-4 OK +-3.E+30 -1.5708 -1.5708 6.4038E-4 OK +-2.E+20 -1.5708 -1.5708 6.4038E-4 OK +-9.E+10 -1.5708 -1.5708 6.426E-4 OK +-900000 -1.5708 -1.5708 8.62381E-4 OK +-300000 -1.57079 -1.57079 6.91621E-4 OK +-200000 -1.57079 -1.57079 6.4038E-4 OK +-100000 -1.57079 -1.57079 6.4038E-4 OK +-98765.4 -1.57079 -1.57079 3.57963E-4 OK +-9876.54 -1.5707 -1.5707 6.46886E-4 OK +-987.6 -1.56978 -1.56978 2.89786E-4 OK +-98.7 -1.56066 -1.56066 2.37882E-4 OK +-9.8 -1.46911 -1.46911 9.73199E-4 OK +-8.8 -1.45765 -1.45765 9.33902E-4 OK +-7.7 -1.44165 -1.44165 6.44705E-4 OK +-6.6 -1.42042 -1.42042 2.31785E-4 OK +-5.5 -1.39094 -1.39094 5.62926E-4 OK +-4.4 -1.34732 -1.34732 7.90853E-4 OK +-3.3 -1.27656 -1.27656 2.8806E-4 OK +-2.2 -1.14417 -1.14417 5.46243E-4 OK +-1.1 -.832981 -.832981 6.47833E-5 OK +-.9 -.732815 -.732815 2.02748E-4 OK +-.6 -.54042 -.54042 2.18919E-4 OK +-.1 -9.96687E-2 -9.96687E-2 8.49682E-6 OK +-.09 -8.97582E-2 -8.97582E-2 6.73331E-5 OK +-.009 -8.99976E-3 -8.99976E-3 1.20568E-4 OK +-.006 -5.99993E-3 -5.99993E-3 1.03643E-4 OK +-.003 -2.99999E-3 -2.99999E-3 3.23994E-6 OK +-.002 -.002 -.002 2.22575E-4 OK +-.001 -.001 -.001 2.6124E-5 OK +-.0009 -.0009 -.0009 7.87131E-8 OK +-.0004 -.0004 -.0004 2.22147E-4 OK +-.00009 -.00009 -.00009 2.86571E-4 OK +-9.E-10 -9.E-10 -9.E-10 0 OK - EXACT +-9.E-20 -9.E-20 -9.E-20 0 OK - EXACT +-9.E-30 -9.E-30 -9.E-30 0 OK - EXACT +-9.E-38 -9.E-38 -9.E-38 0 OK - EXACT + 0 0 0 RANGE ZERO OK - EXACT + 9.E-38 9.E-38 9.E-38 0 OK - EXACT + 9.E-30 9.E-30 9.E-30 0 OK - EXACT + 9.E-20 9.E-20 9.E-20 0 OK - EXACT + 9.E-10 9.E-10 9.E-10 0 OK - EXACT + .00009 .00009 .00009 2.86571E-4 OK + .0004 .0004 .0004 2.22147E-4 OK + .0009 .0009 .0009 7.87131E-8 OK + .001 .001 .001 2.6124E-5 OK + .002 .002 .002 2.22575E-4 OK + .003 2.99999E-3 2.99999E-3 3.23994E-6 OK + .006 5.99993E-3 5.99993E-3 1.03643E-4 OK + .009 8.99976E-3 8.99976E-3 1.20568E-4 OK + .09 8.97582E-2 8.97582E-2 6.73331E-5 OK + .1 9.96687E-2 9.96687E-2 8.49682E-6 OK + .6 .54042 .54042 2.18919E-4 OK + .9 .732815 .732815 2.02748E-4 OK + 1.1 .832981 .832981 6.47833E-5 OK + 2.2 1.14417 1.14417 5.46243E-4 OK + 3.3 1.27656 1.27656 2.8806E-4 OK + 4.4 1.34732 1.34732 7.90853E-4 OK + 5.5 1.39094 1.39094 5.62926E-4 OK + 6.6 1.42042 1.42042 2.31785E-4 OK + 7.7 1.44165 1.44165 6.44705E-4 OK + 8.8 1.45765 1.45765 9.33902E-4 OK + 9.9 1.47013 1.47013 9.08338E-4 OK + 98.7 1.56066 1.56066 2.37882E-4 OK + 987.6 1.56978 1.56978 2.89786E-4 OK + 9876.54 1.5707 1.5707 6.46886E-4 OK + 98765.4 1.57079 1.57079 3.57963E-4 OK + 100000 1.57079 1.57079 6.4038E-4 OK + 200000 1.57079 1.57079 6.4038E-4 OK + 300000 1.57079 1.57079 6.91621E-4 OK + 900000 1.5708 1.5708 8.62381E-4 OK + 9.E+10 1.5708 1.5708 6.426E-4 OK + 2.E+20 1.5708 1.5708 6.4038E-4 OK + 3.E+30 1.5708 1.5708 6.4038E-4 OK + 9.99999E+37 1.5708 1.5708 6.4038E-4 OK + 1.E+38 1.5708 1.5708 6.4038E-4 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 119 diff --git a/NBS2/P119.BAS b/NBS2/P119.BAS new file mode 100644 index 0000000..2a699dd --- /dev/null +++ b/NBS2/P119.BAS @@ -0,0 +1,210 @@ +10 PRINT "PROGRAM FILE 119: ACCURACY OF ATN FUNCTION." +20 PRINT " ANSI STANDARD 7.6, 8.4" +30 PRINT +40 PRINT "SECTION 119.1: ACCURACY OF ATN FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE" +70 PRINT "ATN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN," +80 PRINT "ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY" +90 PRINT "THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT" +100 PRINT "PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN" +110 PRINT "'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE" +120 PRINT "IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE;" +130 PRINT "THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY" +140 PRINT "HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES" +150 PRINT "AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3-" +160 PRINT +170 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +180 PRINT "DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 PRINT "ARGUMENT","TRUE","COMPUTED","ERROR","OUTCOME" +230 PRINT " ","VALUE","VALUE","MEASURE" +240 PRINT +250 LET F=0 +260 READ A,T,L,H +270 IF A=999 THEN 2000 +280 LET C=ATN(A) +290 IF C=T THEN 333 +300 IF CH THEN 444 +320 LET O$=" OK " +330 GOTO 500 +333 LET O$=" OK - EXACT" +340 GOTO 500 +444 LET O$="FAIL" +445 LET F=F+1 +450 GOTO 500 +500 LET R=H-L +510 IF R=0 THEN 700 +520 LET E=ABS((C-T)/R) +525 LET E=E+E +530 PRINT A,T,C,E,O$ +540 GOTO 260 +700 PRINT A,T,C,"RANGE ZERO",O$ +710 GOTO 260 +2000 PRINT +2010 IF F=0 THEN 2100 +2020 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +2030 GOTO 2110 +2100 PRINT "*** INFORMATIVE TEST PASSED ***" +2110 PRINT +2120 PRINT " END TEST" +2130 PRINT +2140 PRINT "END PROGRAM 119" +3000 DATA -0.100000000E+39,-0.157079633E+01 +3010 DATA -0.157080133E+01,-0.157079132E+01 +3020 DATA -0.999999000E+38,-0.157079633E+01 +3030 DATA -0.157080133E+01,-0.157079132E+01 +3040 DATA -0.300000000E+31,-0.157079633E+01 +3050 DATA -0.157080133E+01,-0.157079132E+01 +3060 DATA -0.200000000E+21,-0.157079633E+01 +3070 DATA -0.157080133E+01,-0.157079132E+01 +3080 DATA -0.900000000E+11,-0.157079633E+01 +3090 DATA -0.157080133E+01,-0.157079132E+01 +3100 DATA -0.900000000E+06,-0.157079522E+01 +3110 DATA -0.157080022E+01,-0.157079021E+01 +3120 DATA -0.300000000E+06,-0.157079299E+01 +3130 DATA -0.157079800E+01,-0.157078799E+01 +3140 DATA -0.200000000E+06,-0.157079133E+01 +3150 DATA -0.157079633E+01,-0.157078632E+01 +3160 DATA -0.100000000E+06,-0.157078633E+01 +3170 DATA -0.157079133E+01,-0.157078132E+01 +3180 DATA -0.987654000E+05,-0.157078620E+01 +3190 DATA -0.157079121E+01,-0.157078120E+01 +3200 DATA -0.987654000E+04,-0.157069508E+01 +3210 DATA -0.157070008E+01,-0.157069007E+01 +3220 DATA -0.987600000E+03,-0.156978377E+01 +3230 DATA -0.156978878E+01,-0.156977877E+01 +3240 DATA -0.987000000E+02,-0.156066496E+01 +3250 DATA -0.156066998E+01,-0.156065995E+01 +3260 DATA -0.980000000E+01,-0.146910748E+01 +3270 DATA -0.146911258E+01,-0.146910237E+01 +3280 DATA -0.880000000E+01,-0.145764535E+01 +3290 DATA -0.145765048E+01,-0.145764021E+01 +3300 DATA -0.770000000E+01,-0.144164904E+01 +3310 DATA -0.144165421E+01,-0.144164387E+01 +3320 DATA -0.660000000E+01,-0.142042490E+01 +3330 DATA -0.142043013E+01,-0.142041967E+01 +3340 DATA -0.550000000E+01,-0.139094283E+01 +3350 DATA -0.139094815E+01,-0.139093750E+01 +3360 DATA -0.440000000E+01,-0.134731973E+01 +3370 DATA -0.134732522E+01,-0.134731423E+01 +3380 DATA -0.330000000E+01,-0.127656176E+01 +3390 DATA -0.127656761E+01,-0.127655592E+01 +3400 DATA -0.220000000E+01,-0.114416883E+01 +3410 DATA -0.114417555E+01,-0.114416212E+01 +3420 DATA -0.110000000E+01,-0.832981267E+00 +3430 DATA -0.832986292E+00,-0.832976241E+00 +3440 DATA -0.900000000E+00,-0.732815102E+00 +3450 DATA -0.732816155E+00,-0.732814049E+00 +3460 DATA -0.600000000E+00,-0.540419500E+00 +3470 DATA -0.540420736E+00,-0.540418264E+00 +3480 DATA -0.100000000E+00,-0.996686525E-01 +3490 DATA -0.996696926E-01,-0.996676123E-01 +3500 DATA -0.900000000E-01,-0.897581742E-01 +3510 DATA -0.897583234E-01,-0.897580249E-01 +3520 DATA -0.900000000E-02,-0.899975701E-02 +3530 DATA -0.899977202E-02,-0.899974201E-02 +3540 DATA -0.600000000E-02,-0.599992800E-02 +3550 DATA -0.599994301E-02,-0.599991300E-02 +3560 DATA -0.300000000E-02,-0.299999100E-02 +3570 DATA -0.300000600E-02,-0.299997600E-02 +3580 DATA -0.200000000E-02,-0.199999733E-02 +3590 DATA -0.200001234E-02,-0.199998233E-02 +3600 DATA -0.100000000E-02,-0.999999667E-03 +3610 DATA -0.100001467E-02,-0.999989166E-03 +3620 DATA -0.900000000E-03,-0.899999757E-03 +3630 DATA -0.900001257E-03,-0.899998257E-03 +3640 DATA -0.400000000E-03,-0.399999979E-03 +3650 DATA -0.400001479E-03,-0.399998478E-03 +3660 DATA -0.900000000E-04,-0.899999998E-04 +3670 DATA -0.900001498E-04,-0.899998497E-04 +3680 DATA -0.900000000E-09,-0.900000000E-09 +3690 DATA -0.900001500E-09,-0.899998500E-09 +3700 DATA -0.900000000E-19,-0.900000000E-19 +3710 DATA -0.900001500E-19,-0.899998500E-19 +3720 DATA -0.900000000E-29,-0.900000000E-29 +3730 DATA -0.900001500E-29,-0.899998500E-29 +3740 DATA -0.900000000E-37,-0.900000000E-37 +3750 DATA -0.900001500E-37,-0.899998500E-37 +3760 DATA 0,0,0,0 +3780 DATA 0.900000000E-37, 0.900000000E-37 +3790 DATA 0.899998500E-37, 0.900001500E-37 +3820 DATA 0.900000000E-29, 0.900000000E-29 +3830 DATA 0.899998500E-29, 0.900001500E-29 +3840 DATA 0.900000000E-19, 0.900000000E-19 +3850 DATA 0.899998500E-19, 0.900001500E-19 +3860 DATA 0.900000000E-09, 0.900000000E-09 +3870 DATA 0.899998500E-09, 0.900001500E-09 +3880 DATA 0.900000000E-04, 0.899999998E-04 +3890 DATA 0.899998497E-04, 0.900001498E-04 +3900 DATA 0.400000000E-03, 0.399999979E-03 +3910 DATA 0.399998478E-03, 0.400001479E-03 +3920 DATA 0.900000000E-03, 0.899999757E-03 +3930 DATA 0.899998257E-03, 0.900001257E-03 +3940 DATA 0.100000000E-02, 0.999999667E-03 +3950 DATA 0.999989166E-03, 0.100001467E-02 +3960 DATA 0.200000000E-02, 0.199999733E-02 +3970 DATA 0.199998233E-02, 0.200001234E-02 +3980 DATA 0.300000000E-02, 0.299999100E-02 +3990 DATA 0.299997600E-02, 0.300000600E-02 +4000 DATA 0.600000000E-02, 0.599992800E-02 +4010 DATA 0.599991300E-02, 0.599994301E-02 +4020 DATA 0.900000000E-02, 0.899975701E-02 +4030 DATA 0.899974201E-02, 0.899977202E-02 +4040 DATA 0.900000000E-01, 0.897581742E-01 +4050 DATA 0.897580249E-01, 0.897583234E-01 +4060 DATA 0.100000000E+00, 0.996686525E-01 +4070 DATA 0.996676123E-01, 0.996696926E-01 +4080 DATA 0.600000000E+00, 0.540419500E+00 +4090 DATA 0.540418264E+00, 0.540420736E+00 +4100 DATA 0.900000000E+00, 0.732815102E+00 +4110 DATA 0.732814049E+00, 0.732816155E+00 +4120 DATA 0.110000000E+01, 0.832981267E+00 +4130 DATA 0.832976241E+00, 0.832986292E+00 +4140 DATA 0.220000000E+01, 0.114416883E+01 +4150 DATA 0.114416212E+01, 0.114417555E+01 +4160 DATA 0.330000000E+01, 0.127656176E+01 +4170 DATA 0.127655592E+01, 0.127656761E+01 +4180 DATA 0.440000000E+01, 0.134731973E+01 +4190 DATA 0.134731423E+01, 0.134732522E+01 +4200 DATA 0.550000000E+01, 0.139094283E+01 +4210 DATA 0.139093750E+01, 0.139094815E+01 +4220 DATA 0.660000000E+01, 0.142042490E+01 +4230 DATA 0.142041967E+01, 0.142043013E+01 +4240 DATA 0.770000000E+01, 0.144164904E+01 +4250 DATA 0.144164387E+01, 0.144165421E+01 +4260 DATA 0.880000000E+01, 0.145764535E+01 +4270 DATA 0.145764021E+01, 0.145765048E+01 +4280 DATA 0.990000000E+01, 0.147012767E+01 +4290 DATA 0.147012257E+01, 0.147013278E+01 +4300 DATA 0.987000000E+02, 0.156066496E+01 +4310 DATA 0.156065995E+01, 0.156066998E+01 +4320 DATA 0.987600000E+03, 0.156978377E+01 +4330 DATA 0.156977877E+01, 0.156978878E+01 +4340 DATA 0.987654000E+04, 0.157069508E+01 +4350 DATA 0.157069007E+01, 0.157070008E+01 +4360 DATA 0.987654000E+05, 0.157078620E+01 +4370 DATA 0.157078120E+01, 0.157079121E+01 +4380 DATA 0.100000000E+06, 0.157078633E+01 +4390 DATA 0.157078132E+01, 0.157079133E+01 +4400 DATA 0.200000000E+06, 0.157079133E+01 +4410 DATA 0.157078632E+01, 0.157079633E+01 +4420 DATA 0.300000000E+06, 0.157079299E+01 +4430 DATA 0.157078799E+01, 0.157079800E+01 +4440 DATA 0.900000000E+06, 0.157079522E+01 +4450 DATA 0.157079021E+01, 0.157080022E+01 +4460 DATA 0.900000000E+11, 0.157079633E+01 +4470 DATA 0.157079132E+01, 0.157080133E+01 +4480 DATA 0.200000000E+21, 0.157079633E+01 +4490 DATA 0.157079132E+01, 0.157080133E+01 +4500 DATA 0.300000000E+31, 0.157079633E+01 +4510 DATA 0.157079132E+01, 0.157080133E+01 +4520 DATA 0.999999000E+38, 0.157079633E+01 +4530 DATA 0.157079132E+01, 0.157080133E+01 +4540 DATA 0.100000000E+39, 0.157079633E+01 +4550 DATA 0.157079132E+01, 0.157080133E+01 +9000 DATA 999,0,0,0 +9400 END diff --git a/NBS2/P119.OUT b/NBS2/P119.OUT new file mode 100644 index 0000000..f041ab6 --- /dev/null +++ b/NBS2/P119.OUT @@ -0,0 +1,107 @@ +PROGRAM FILE 119: ACCURACY OF ATN FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 119.1: ACCURACY OF ATN FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +ATN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3- + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-1.E+38 -1.5708 -1.5708 6.4038E-4 OK +-9.99999E+37 -1.5708 -1.5708 6.4038E-4 OK +-3.E+30 -1.5708 -1.5708 6.4038E-4 OK +-2.E+20 -1.5708 -1.5708 6.4038E-4 OK +-9.E+10 -1.5708 -1.5708 6.426E-4 OK +-900000 -1.5708 -1.5708 8.62381E-4 OK +-300000 -1.57079 -1.57079 6.91621E-4 OK +-200000 -1.57079 -1.57079 6.4038E-4 OK +-100000 -1.57079 -1.57079 6.4038E-4 OK +-98765.4 -1.57079 -1.57079 3.57963E-4 OK +-9876.54 -1.5707 -1.5707 6.46886E-4 OK +-987.6 -1.56978 -1.56978 2.89786E-4 OK +-98.7 -1.56066 -1.56066 2.37882E-4 OK +-9.8 -1.46911 -1.46911 9.73199E-4 OK +-8.8 -1.45765 -1.45765 9.33902E-4 OK +-7.7 -1.44165 -1.44165 6.44705E-4 OK +-6.6 -1.42042 -1.42042 2.31785E-4 OK +-5.5 -1.39094 -1.39094 5.62926E-4 OK +-4.4 -1.34732 -1.34732 7.90853E-4 OK +-3.3 -1.27656 -1.27656 2.8806E-4 OK +-2.2 -1.14417 -1.14417 5.46243E-4 OK +-1.1 -.832981 -.832981 6.47833E-5 OK +-.9 -.732815 -.732815 2.02748E-4 OK +-.6 -.54042 -.54042 2.18919E-4 OK +-.1 -9.96687E-2 -9.96687E-2 8.49682E-6 OK +-.09 -8.97582E-2 -8.97582E-2 6.73331E-5 OK +-.009 -8.99976E-3 -8.99976E-3 1.20568E-4 OK +-.006 -5.99993E-3 -5.99993E-3 1.03643E-4 OK +-.003 -2.99999E-3 -2.99999E-3 3.23994E-6 OK +-.002 -.002 -.002 2.22575E-4 OK +-.001 -.001 -.001 2.6124E-5 OK +-.0009 -.0009 -.0009 7.87131E-8 OK +-.0004 -.0004 -.0004 2.22147E-4 OK +-.00009 -.00009 -.00009 2.86571E-4 OK +-9.E-10 -9.E-10 -9.E-10 0 OK - EXACT +-9.E-20 -9.E-20 -9.E-20 0 OK - EXACT +-9.E-30 -9.E-30 -9.E-30 0 OK - EXACT +-9.E-38 -9.E-38 -9.E-38 0 OK - EXACT + 0 0 0 RANGE ZERO OK - EXACT + 9.E-38 9.E-38 9.E-38 0 OK - EXACT + 9.E-30 9.E-30 9.E-30 0 OK - EXACT + 9.E-20 9.E-20 9.E-20 0 OK - EXACT + 9.E-10 9.E-10 9.E-10 0 OK - EXACT + .00009 .00009 .00009 2.86571E-4 OK + .0004 .0004 .0004 2.22147E-4 OK + .0009 .0009 .0009 7.87131E-8 OK + .001 .001 .001 2.6124E-5 OK + .002 .002 .002 2.22575E-4 OK + .003 2.99999E-3 2.99999E-3 3.23994E-6 OK + .006 5.99993E-3 5.99993E-3 1.03643E-4 OK + .009 8.99976E-3 8.99976E-3 1.20568E-4 OK + .09 8.97582E-2 8.97582E-2 6.73331E-5 OK + .1 9.96687E-2 9.96687E-2 8.49682E-6 OK + .6 .54042 .54042 2.18919E-4 OK + .9 .732815 .732815 2.02748E-4 OK + 1.1 .832981 .832981 6.47833E-5 OK + 2.2 1.14417 1.14417 5.46243E-4 OK + 3.3 1.27656 1.27656 2.8806E-4 OK + 4.4 1.34732 1.34732 7.90853E-4 OK + 5.5 1.39094 1.39094 5.62926E-4 OK + 6.6 1.42042 1.42042 2.31785E-4 OK + 7.7 1.44165 1.44165 6.44705E-4 OK + 8.8 1.45765 1.45765 9.33902E-4 OK + 9.9 1.47013 1.47013 9.08338E-4 OK + 98.7 1.56066 1.56066 2.37882E-4 OK + 987.6 1.56978 1.56978 2.89786E-4 OK + 9876.54 1.5707 1.5707 6.46886E-4 OK + 98765.4 1.57079 1.57079 3.57963E-4 OK + 100000 1.57079 1.57079 6.4038E-4 OK + 200000 1.57079 1.57079 6.4038E-4 OK + 300000 1.57079 1.57079 6.91621E-4 OK + 900000 1.5708 1.5708 8.62381E-4 OK + 9.E+10 1.5708 1.5708 6.426E-4 OK + 2.E+20 1.5708 1.5708 6.4038E-4 OK + 3.E+30 1.5708 1.5708 6.4038E-4 OK + 9.99999E+37 1.5708 1.5708 6.4038E-4 OK + 1.E+38 1.5708 1.5708 6.4038E-4 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 119 diff --git a/NBS2/P119.dif b/NBS2/P119.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P119.run b/NBS2/P119.run new file mode 100644 index 0000000..7be2ac4 --- /dev/null +++ b/NBS2/P119.run @@ -0,0 +1,107 @@ +PROGRAM FILE 119: ACCURACY OF ATN FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 119.1: ACCURACY OF ATN FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +ATN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3- + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-1.E+38 -1.5708 -1.5708 6.4038E-4 OK +-9.99999E+37 -1.5708 -1.5708 6.4038E-4 OK +-3.E+30 -1.5708 -1.5708 6.4038E-4 OK +-2.E+20 -1.5708 -1.5708 6.4038E-4 OK +-9.E+10 -1.5708 -1.5708 6.426E-4 OK +-900000 -1.5708 -1.5708 8.62381E-4 OK +-300000 -1.57079 -1.57079 6.91621E-4 OK +-200000 -1.57079 -1.57079 6.4038E-4 OK +-100000 -1.57079 -1.57079 6.4038E-4 OK +-98765.4 -1.57079 -1.57079 3.57963E-4 OK +-9876.54 -1.5707 -1.5707 6.46886E-4 OK +-987.6 -1.56978 -1.56978 2.89786E-4 OK +-98.7 -1.56066 -1.56066 2.37882E-4 OK +-9.8 -1.46911 -1.46911 9.73199E-4 OK +-8.8 -1.45765 -1.45765 9.33902E-4 OK +-7.7 -1.44165 -1.44165 6.44705E-4 OK +-6.6 -1.42042 -1.42042 2.31785E-4 OK +-5.5 -1.39094 -1.39094 5.62926E-4 OK +-4.4 -1.34732 -1.34732 7.90853E-4 OK +-3.3 -1.27656 -1.27656 2.8806E-4 OK +-2.2 -1.14417 -1.14417 5.46243E-4 OK +-1.1 -.832981 -.832981 6.47833E-5 OK +-.9 -.732815 -.732815 2.02748E-4 OK +-.6 -.54042 -.54042 2.18919E-4 OK +-.1 -9.96687E-2 -9.96687E-2 8.49682E-6 OK +-.09 -8.97582E-2 -8.97582E-2 6.73331E-5 OK +-.009 -8.99976E-3 -8.99976E-3 1.20568E-4 OK +-.006 -5.99993E-3 -5.99993E-3 1.03643E-4 OK +-.003 -2.99999E-3 -2.99999E-3 3.23994E-6 OK +-.002 -.002 -.002 2.22575E-4 OK +-.001 -.001 -.001 2.6124E-5 OK +-.0009 -.0009 -.0009 7.87131E-8 OK +-.0004 -.0004 -.0004 2.22147E-4 OK +-.00009 -.00009 -.00009 2.86571E-4 OK +-9.E-10 -9.E-10 -9.E-10 0 OK - EXACT +-9.E-20 -9.E-20 -9.E-20 0 OK - EXACT +-9.E-30 -9.E-30 -9.E-30 0 OK - EXACT +-9.E-38 -9.E-38 -9.E-38 0 OK - EXACT + 0 0 0 RANGE ZERO OK - EXACT + 9.E-38 9.E-38 9.E-38 0 OK - EXACT + 9.E-30 9.E-30 9.E-30 0 OK - EXACT + 9.E-20 9.E-20 9.E-20 0 OK - EXACT + 9.E-10 9.E-10 9.E-10 0 OK - EXACT + .00009 .00009 .00009 2.86571E-4 OK + .0004 .0004 .0004 2.22147E-4 OK + .0009 .0009 .0009 7.87131E-8 OK + .001 .001 .001 2.6124E-5 OK + .002 .002 .002 2.22575E-4 OK + .003 2.99999E-3 2.99999E-3 3.23994E-6 OK + .006 5.99993E-3 5.99993E-3 1.03643E-4 OK + .009 8.99976E-3 8.99976E-3 1.20568E-4 OK + .09 8.97582E-2 8.97582E-2 6.73331E-5 OK + .1 9.96687E-2 9.96687E-2 8.49682E-6 OK + .6 .54042 .54042 2.18919E-4 OK + .9 .732815 .732815 2.02748E-4 OK + 1.1 .832981 .832981 6.47833E-5 OK + 2.2 1.14417 1.14417 5.46243E-4 OK + 3.3 1.27656 1.27656 2.8806E-4 OK + 4.4 1.34732 1.34732 7.90853E-4 OK + 5.5 1.39094 1.39094 5.62926E-4 OK + 6.6 1.42042 1.42042 2.31785E-4 OK + 7.7 1.44165 1.44165 6.44705E-4 OK + 8.8 1.45765 1.45765 9.33902E-4 OK + 9.9 1.47013 1.47013 9.08338E-4 OK + 98.7 1.56066 1.56066 2.37882E-4 OK + 987.6 1.56978 1.56978 2.89786E-4 OK + 9876.54 1.5707 1.5707 6.46886E-4 OK + 98765.4 1.57079 1.57079 3.57963E-4 OK + 100000 1.57079 1.57079 6.4038E-4 OK + 200000 1.57079 1.57079 6.4038E-4 OK + 300000 1.57079 1.57079 6.91621E-4 OK + 900000 1.5708 1.5708 8.62381E-4 OK + 9.E+10 1.5708 1.5708 6.426E-4 OK + 2.E+20 1.5708 1.5708 6.4038E-4 OK + 3.E+30 1.5708 1.5708 6.4038E-4 OK + 9.99999E+37 1.5708 1.5708 6.4038E-4 OK + 1.E+38 1.5708 1.5708 6.4038E-4 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 119 diff --git a/NBS2/P120.80 b/NBS2/P120.80 new file mode 100644 index 0000000..360f914 --- /dev/null +++ b/NBS2/P120.80 @@ -0,0 +1,104 @@ +PROGRAM FILE 120: ACCURACY OF COS FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 120.1: ACCURACY OF COS FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +COS FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-98765.4 .999948 .999948 7.75071E-8 OK +-98764.4 .548821 .548821 2.11951E-9 OK +-94268.2 -4.00579E-5 -4.00579E-5 3.47476E-11 OK +-9427.92 -1. -1. 1.03325E-5 OK +-9425.92 .415741 .415741 3.08328E-8 OK +-9429.49 -3.4975E-4 -3.4975E-4 5.07E-11 OK +-986.46 1. 1. 6.29608E-4 OK +-999 .99965 .99965 7.11159E-7 OK +-994.314 7.48612E-5 7.48612E-5 8.81657E-11 OK +-87.9646 1 1. 6.41981E-5 OK +-99 3.98209E-2 3.98209E-2 6.86312E-8 OK +-89.5354 -9.37269E-6 -9.37269E-6 1.17762E-10 OK +-50 .964966 .964966 1.8405E-5 OK +-20 .408082 .408082 2.03288E-6 OK +-5.9 .927478 .927478 6.03761E-5 OK +-4.71239 1.01962E-6 1.01962E-6 2.20857E-11 OK +-3.14159 -1 -1. 1.40548E-5 OK +-2.3 -.666276 -.666276 3.51649E-5 OK +-1.5708 -3.67321E-6 -3.67321E-6 3.34657E-10 OK +-1.2 .362358 .362358 4.85386E-5 OK +-1 .540302 .540302 1.47908E-5 OK +-.987654 .55065 .55065 1.40519E-4 OK +-.765432 .721083 .721083 1.24814E-4 OK +-9.87654E-2 .995127 .995127 5.325E-4 OK +-7.65432E-2 .997072 .997072 4.88824E-4 OK +-9.75319E-3 .999952 .999952 3.88033E-5 OK +-3.45678E-3 .999994 .999994 6.83247E-4 OK +-1.00001E-3 1. .999999 1.98968E-5 OK +-.001 1. 1. 8.31835E-8 OK +-9.99999E-4 1. 1. 2.08322E-6 OK +-9.87654E-5 1. 1. 4.85932E-4 OK +-9.17359E-6 1 1. 1.67973E-4 OK +-9.E-10 1 1 0 OK - EXACT +-9.E-20 1 1 0 OK - EXACT +-9.E-30 1 1 0 OK - EXACT +-9.E-38 1 1 0 OK - EXACT + 0 1 1 RANGE ZERO OK - EXACT + 1.E-38 1 1 0 OK - EXACT + 9.E-30 1 1 0 OK - EXACT + 9.E-20 1 1 0 OK - EXACT + 9.E-10 1 1 0 OK - EXACT + 9.17359E-6 1 1. 1.67973E-4 OK + 9.87654E-5 1. 1. 4.85932E-4 OK + 9.99999E-4 1. 1. 2.08322E-6 OK + .001 1. 1. 8.31835E-8 OK + 1.00001E-3 1. .999999 1.98968E-5 OK + 3.45678E-3 .999994 .999994 6.83247E-4 OK + 9.75319E-3 .999952 .999952 3.88033E-5 OK + 7.65432E-2 .997072 .997072 4.88824E-4 OK + 9.87654E-2 .995127 .995127 5.325E-4 OK + .765432 .721083 .721083 1.24814E-4 OK + .987654 .55065 .55065 1.40519E-4 OK + 1 .540302 .540302 1.47908E-5 OK + 1.2 .362358 .362358 4.85386E-5 OK + 1.5708 -3.67321E-6 -3.67321E-6 3.34657E-10 OK + 2.3 -.666276 -.666276 3.51649E-5 OK + 3.14159 -1 -1. 1.40548E-5 OK + 3.9 -.725932 -.725932 2.71266E-5 OK + 4.71239 1.01962E-6 1.01962E-6 2.20857E-11 OK + 5.9 .927478 .927478 6.03761E-5 OK + 20 .408082 .408082 2.03288E-6 OK + 50 .964966 .964966 1.8405E-5 OK + 89.5354 -9.37269E-6 -9.37269E-6 8.22373E-11 OK + 99 3.98209E-2 3.98209E-2 6.86312E-8 OK + 87.9646 1 1. 6.41981E-5 OK + 994.314 7.48612E-5 7.48612E-5 8.81657E-11 OK + 999.1 .997297 .997297 1.5104E-6 OK + 986.46 1. 1. 6.29608E-4 OK + 9429.49 -3.4975E-4 -3.4975E-4 5.07E-11 OK + 9425.92 .415741 .415741 3.08328E-8 OK + 9427.92 -1. -1. 1.03325E-5 OK + 94268.2 -4.00579E-5 -4.00579E-5 9.18427E-11 OK + 98764.4 .548821 .548821 2.11951E-9 OK + 98765.4 .999948 .999948 7.75071E-8 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 120 diff --git a/NBS2/P120.BAS b/NBS2/P120.BAS new file mode 100644 index 0000000..d4d3436 --- /dev/null +++ b/NBS2/P120.BAS @@ -0,0 +1,204 @@ +10 PRINT "PROGRAM FILE 120: ACCURACY OF COS FUNCTION." +20 PRINT " ANSI STANDARD 7.6, 8.4" +30 PRINT +40 PRINT "SECTION 120.1: ACCURACY OF COS FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE" +70 PRINT "COS FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN," +80 PRINT "ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY" +90 PRINT "THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT" +100 PRINT "PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN" +110 PRINT "'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE" +120 PRINT "IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE;" +130 PRINT "THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY" +140 PRINT "HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES" +150 PRINT "AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3." +160 PRINT +170 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +180 PRINT "DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 PRINT "ARGUMENT","TRUE","COMPUTED","ERROR","OUTCOME" +230 PRINT " ","VALUE","VALUE","MEASURE" +240 PRINT +250 LET F=0 +260 READ A,T,L,H +270 IF A=999 THEN 2000 +280 LET C=COS(A) +290 IF C=T THEN 333 +300 IF CH THEN 444 +320 LET O$=" OK " +330 GOTO 500 +333 LET O$=" OK - EXACT" +340 GOTO 500 +444 LET O$="FAIL" +445 LET F=F+1 +450 GOTO 500 +500 LET R=H-L +510 IF R=0 THEN 700 +520 LET E=ABS((C-T)/R) +525 LET E=E+E +530 PRINT A,T,C,E,O$ +540 GOTO 260 +700 PRINT A,T,C,"RANGE ZERO",O$ +710 GOTO 260 +2000 PRINT +2010 IF F=0 THEN 2100 +2020 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +2030 GOTO 2110 +2100 PRINT "*** INFORMATIVE TEST PASSED ***" +2110 PRINT +2120 PRINT " END TEST" +2130 PRINT +2140 PRINT "END PROGRAM 120" +3000 DATA -0.987654000E+05, 0.999948424E+00 +3010 DATA 0.993938411E+00, 1.000000000E+00 +3020 DATA -0.987644000E+05, 0.548820645E+00 +3030 DATA 0.462623568E+00, 0.629534088E+00 +3040 DATA -0.942682000E+05,-0.400578628E-04 +3050 DATA -0.998733243E-01, 0.997936089E-01 +3060 DATA -0.942792000E+04,-0.999999900E+00 +3070 DATA -1.000000000E+00,-0.999944935E+00 +3080 DATA -0.942592000E+04, 0.415740724E+00 +3090 DATA 0.406624756E+00, 0.424815118E+00 +3100 DATA -0.942949000E+04,-0.349749758E-03 +3110 DATA -0.103496150E-01, 0.965010546E-02 +3120 DATA -0.986460000E+03, 0.999999996E+00 +3130 DATA 0.999998902E+00, 1.000000000E+00 +3140 DATA -0.999000000E+03, 0.999649853E+00 +3150 DATA 0.999622392E+00, 0.999676314E+00 +3160 DATA -0.994314000E+03, 0.748611695E-04 +3170 DATA -0.925139199E-03, 0.107486597E-02 +3180 DATA -0.879646000E+02, 1.000000000E+00 +3190 DATA 0.999999494E+00, 1.000000000E+00 +3200 DATA -0.990000000E+02, 0.398208804E-01 +3210 DATA 0.397209095E-01, 0.399208509E-01 +3220 DATA -0.895354000E+02,-0.937269090E-05 +3230 DATA -0.109373191E-03, 0.906273590E-04 +3240 DATA -0.500000000E+02, 0.964966028E+00 +3250 DATA 0.964939286E+00, 0.964992762E+00 +3260 DATA -0.200000000E+02, 0.408082062E+00 +3270 DATA 0.407990265E+00, 0.408173855E+00 +3280 DATA -0.590000000E+01, 0.927478431E+00 +3290 DATA 0.927474191E+00, 0.927482670E+00 +3300 DATA -0.471239000E+01, 0.101961531E-05 +3310 DATA -0.898038969E-05, 0.110196654E-04 +3320 DATA -0.314159000E+01,-1.000000000E+00 +3330 DATA -1.000000000E+00,-0.999999499E+00 +3340 DATA -0.230000000E+01,-0.666276021E+00 +3350 DATA -0.666283979E+00,-0.666268064E+00 +3360 DATA -0.157080000E+01,-0.367320510E-05 +3370 DATA -0.136732552E-04, 0.632679990E-05 +3380 DATA -0.120000000E+01, 0.362357754E+00 +3390 DATA 0.362347934E+00, 0.362367575E+00 +3400 DATA -0.100000000E+01, 0.540302306E+00 +3410 DATA 0.540293391E+00, 0.540311221E+00 +3420 DATA -0.987654000E+00, 0.550649666E+00 +3430 DATA 0.550648331E+00, 0.550651001E+00 +3440 DATA -0.765432000E+00, 0.721083114E+00 +3450 DATA 0.721081921E+00, 0.721084307E+00 +3460 DATA -0.987654000E-01, 0.995126661E+00 +3470 DATA 0.995126151E+00, 0.995127172E+00 +3480 DATA -0.765432000E-01, 0.997071999E+00 +3490 DATA 0.997071491E+00, 0.997072507E+00 +3500 DATA -0.975319000E-02, 0.999952438E+00 +3510 DATA 0.999951937E+00, 0.999952939E+00 +3520 DATA -0.345678000E-02, 0.999994025E+00 +3530 DATA 0.999993525E+00, 0.999994526E+00 +3540 DATA -0.100001000E-02, 0.999999500E+00 +3550 DATA 0.999998999E+00, 1.000000000E+00 +3560 DATA -0.100000000E-02, 0.999999500E+00 +3570 DATA 0.999998999E+00, 1.000000000E+00 +3580 DATA -0.999999000E-03, 0.999999500E+00 +3590 DATA 0.999999000E+00, 1.000000000E+00 +3600 DATA -0.987654000E-04, 0.999999995E+00 +3610 DATA 0.999999495E+00, 1.000000000E+00 +3620 DATA -0.917359000E-05, 1.000000000E+00 +3630 DATA 0.999999499E+00, 1.000000000E+00 +3640 DATA -0.900000000E-09, 0.100000000E+01 +3650 DATA 0.999999500E+00, 0.100000000E+01 +3660 DATA -0.900000000E-19, 0.100000000E+01 +3670 DATA 0.999999500E+00, 0.100000000E+01 +3680 DATA -0.900000000E-29, 0.100000000E+01 +3690 DATA 0.999999500E+00, 0.100000000E+01 +3691 DATA -0.900000000E-37, 0.100000000E+01 +3692 DATA 0.999999500E+00, 0.100000000E+01 +3693 DATA 0,1,1,1 +3695 DATA 1.000000000E-38, 0.100000000E+01 +3697 DATA 0.999995000E+00, 0.100000000E+01 +3700 DATA 0.900000000E-29, 0.100000000E+01 +3710 DATA 0.999999500E+00, 0.100000000E+01 +3720 DATA 0.900000000E-19, 0.100000000E+01 +3730 DATA 0.999999500E+00, 0.100000000E+01 +3740 DATA 0.900000000E-09, 0.100000000E+01 +3750 DATA 0.999999500E+00, 0.100000000E+01 +3760 DATA 0.917359000E-05, 1.000000000E+00 +3770 DATA 0.999999499E+00, 1.000000000E+00 +3780 DATA 0.987654000E-04, 0.999999995E+00 +3790 DATA 0.999999495E+00, 1.000000000E+00 +3800 DATA 0.999999000E-03, 0.999999500E+00 +3810 DATA 0.999999000E+00, 1.000000000E+00 +3820 DATA 0.100000000E-02, 0.999999500E+00 +3830 DATA 0.999998999E+00, 1.000000000E+00 +3840 DATA 0.100001000E-02, 0.999999500E+00 +3850 DATA 0.999998999E+00, 1.000000000E+00 +3860 DATA 0.345678000E-02, 0.999994025E+00 +3870 DATA 0.999993525E+00, 0.999994526E+00 +3880 DATA 0.975319000E-02, 0.999952438E+00 +3890 DATA 0.999951937E+00, 0.999952939E+00 +3900 DATA 0.765432000E-01, 0.997071999E+00 +3910 DATA 0.997071491E+00, 0.997072507E+00 +3920 DATA 0.987654000E-01, 0.995126661E+00 +3930 DATA 0.995126151E+00, 0.995127172E+00 +3940 DATA 0.765432000E+00, 0.721083114E+00 +3950 DATA 0.721081921E+00, 0.721084307E+00 +3960 DATA 0.987654000E+00, 0.550649666E+00 +3970 DATA 0.550648331E+00, 0.550651001E+00 +3980 DATA 0.100000000E+01, 0.540302306E+00 +3990 DATA 0.540293391E+00, 0.540311221E+00 +4000 DATA 0.120000000E+01, 0.362357754E+00 +4010 DATA 0.362347934E+00, 0.362367575E+00 +4020 DATA 0.157080000E+01,-0.367320510E-05 +4030 DATA -0.136732552E-04, 0.632679990E-05 +4060 DATA 0.230000000E+01,-0.666276021E+00 +4070 DATA -0.666283979E+00,-0.666268064E+00 +4080 DATA 0.314159000E+01,-1.000000000E+00 +4090 DATA -1.000000000E+00,-0.999999499E+00 +4100 DATA 0.390000000E+01,-0.725932304E+00 +4110 DATA -0.725939682E+00,-0.725924926E+00 +4120 DATA 0.471239000E+01, 0.101961531E-05 +4130 DATA -0.898038969E-05, 0.110196654E-04 +4140 DATA 0.590000000E+01, 0.927478431E+00 +4150 DATA 0.927474191E+00, 0.927482670E+00 +4160 DATA 0.200000000E+02, 0.408082062E+00 +4170 DATA 0.407990265E+00, 0.408173855E+00 +4180 DATA 0.500000000E+02, 0.964966028E+00 +4190 DATA 0.964939286E+00, 0.964992762E+00 +4200 DATA 0.895354000E+02,-0.937269088E-05 +4210 DATA -0.109373191E-03, 0.906273590E-04 +4220 DATA 0.990000000E+02, 0.398208804E-01 +4230 DATA 0.397209095E-01, 0.399208509E-01 +4240 DATA 0.879646000E+02, 1.000000000E+00 +4250 DATA 0.999999494E+00, 1.000000000E+00 +4260 DATA 0.994314000E+03, 0.748611695E-04 +4270 DATA -0.925139199E-03, 0.107486597E-02 +4280 DATA 0.999100000E+03, 0.997297435E+00 +4290 DATA 0.997222966E+00, 0.997370907E+00 +4300 DATA 0.986460000E+03, 0.999999996E+00 +4310 DATA 0.999998902E+00, 1.000000000E+00 +4320 DATA 0.942949000E+04,-0.349749758E-03 +4330 DATA -0.103496150E-01, 0.965010545E-02 +4340 DATA 0.942592000E+04, 0.415740724E+00 +4350 DATA 0.406624756E+00, 0.424815118E+00 +4360 DATA 0.942792000E+04,-0.999999900E+00 +4370 DATA -1.000000000E+00,-0.999944935E+00 +4380 DATA 0.942682000E+05,-0.400578571E-04 +4390 DATA -0.998733243E-01, 0.997936089E-01 +4400 DATA 0.987644000E+05, 0.548820645E+00 +4410 DATA 0.462623568E+00, 0.629534088E+00 +4420 DATA 0.987654000E+05, 0.999948424E+00 +4430 DATA 0.993938411E+00, 1.000000000E+00 +9000 DATA 999,0,0,0 +9400 END diff --git a/NBS2/P120.OUT b/NBS2/P120.OUT new file mode 100644 index 0000000..a5f75df --- /dev/null +++ b/NBS2/P120.OUT @@ -0,0 +1,104 @@ +PROGRAM FILE 120: ACCURACY OF COS FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 120.1: ACCURACY OF COS FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +COS FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-98765.4 .999948 .999948 7.75071E-8 OK +-98764.4 .548821 .548821 2.11951E-9 OK +-94268.2 -4.00579E-5 -4.00579E-5 3.47476E-11 OK +-9427.92 -1. -1. 1.03325E-5 OK +-9425.92 .415741 .415741 3.08328E-8 OK +-9429.49 -3.4975E-4 -3.4975E-4 5.07E-11 OK +-986.46 1. 1. 6.29608E-4 OK +-999 .99965 .99965 7.11159E-7 OK +-994.314 7.48612E-5 7.48612E-5 8.81657E-11 OK +-87.9646 1 1. 6.41981E-5 OK +-99 3.98209E-2 3.98209E-2 6.86312E-8 OK +-89.5354 -9.37269E-6 -9.37269E-6 1.17762E-10 OK +-50 .964966 .964966 1.8405E-5 OK +-20 .408082 .408082 2.03288E-6 OK +-5.9 .927478 .927478 6.03761E-5 OK +-4.71239 1.01962E-6 1.01962E-6 2.20857E-11 OK +-3.14159 -1 -1. 1.40548E-5 OK +-2.3 -.666276 -.666276 3.51649E-5 OK +-1.5708 -3.67321E-6 -3.67321E-6 3.34657E-10 OK +-1.2 .362358 .362358 4.85386E-5 OK +-1 .540302 .540302 1.47908E-5 OK +-.987654 .55065 .55065 1.40519E-4 OK +-.765432 .721083 .721083 1.24814E-4 OK +-9.87654E-2 .995127 .995127 5.325E-4 OK +-7.65432E-2 .997072 .997072 4.88824E-4 OK +-9.75319E-3 .999952 .999952 3.88033E-5 OK +-3.45678E-3 .999994 .999994 6.83247E-4 OK +-1.00001E-3 1. .999999 1.98968E-5 OK +-.001 1. 1. 8.31835E-8 OK +-9.99999E-4 1. 1. 2.08322E-6 OK +-9.87654E-5 1. 1. 4.85932E-4 OK +-9.17359E-6 1 1. 1.67973E-4 OK +-9.E-10 1 1 0 OK - EXACT +-9.E-20 1 1 0 OK - EXACT +-9.E-30 1 1 0 OK - EXACT +-9.E-38 1 1 0 OK - EXACT + 0 1 1 RANGE ZERO OK - EXACT + 1.E-38 1 1 0 OK - EXACT + 9.E-30 1 1 0 OK - EXACT + 9.E-20 1 1 0 OK - EXACT + 9.E-10 1 1 0 OK - EXACT + 9.17359E-6 1 1. 1.67973E-4 OK + 9.87654E-5 1. 1. 4.85932E-4 OK + 9.99999E-4 1. 1. 2.08322E-6 OK + .001 1. 1. 8.31835E-8 OK + 1.00001E-3 1. .999999 1.98968E-5 OK + 3.45678E-3 .999994 .999994 6.83247E-4 OK + 9.75319E-3 .999952 .999952 3.88033E-5 OK + 7.65432E-2 .997072 .997072 4.88824E-4 OK + 9.87654E-2 .995127 .995127 5.325E-4 OK + .765432 .721083 .721083 1.24814E-4 OK + .987654 .55065 .55065 1.40519E-4 OK + 1 .540302 .540302 1.47908E-5 OK + 1.2 .362358 .362358 4.85386E-5 OK + 1.5708 -3.67321E-6 -3.67321E-6 3.34657E-10 OK + 2.3 -.666276 -.666276 3.51649E-5 OK + 3.14159 -1 -1. 1.40548E-5 OK + 3.9 -.725932 -.725932 2.71266E-5 OK + 4.71239 1.01962E-6 1.01962E-6 2.20857E-11 OK + 5.9 .927478 .927478 6.03761E-5 OK + 20 .408082 .408082 2.03288E-6 OK + 50 .964966 .964966 1.8405E-5 OK + 89.5354 -9.37269E-6 -9.37269E-6 8.22373E-11 OK + 99 3.98209E-2 3.98209E-2 6.86312E-8 OK + 87.9646 1 1. 6.41981E-5 OK + 994.314 7.48612E-5 7.48612E-5 8.81657E-11 OK + 999.1 .997297 .997297 1.5104E-6 OK + 986.46 1. 1. 6.29608E-4 OK + 9429.49 -3.4975E-4 -3.4975E-4 5.07E-11 OK + 9425.92 .415741 .415741 3.08328E-8 OK + 9427.92 -1. -1. 1.03325E-5 OK + 94268.2 -4.00579E-5 -4.00579E-5 9.18427E-11 OK + 98764.4 .548821 .548821 2.11951E-9 OK + 98765.4 .999948 .999948 7.75071E-8 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 120 diff --git a/NBS2/P120.dif b/NBS2/P120.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P120.run b/NBS2/P120.run new file mode 100644 index 0000000..360f914 --- /dev/null +++ b/NBS2/P120.run @@ -0,0 +1,104 @@ +PROGRAM FILE 120: ACCURACY OF COS FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 120.1: ACCURACY OF COS FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +COS FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-98765.4 .999948 .999948 7.75071E-8 OK +-98764.4 .548821 .548821 2.11951E-9 OK +-94268.2 -4.00579E-5 -4.00579E-5 3.47476E-11 OK +-9427.92 -1. -1. 1.03325E-5 OK +-9425.92 .415741 .415741 3.08328E-8 OK +-9429.49 -3.4975E-4 -3.4975E-4 5.07E-11 OK +-986.46 1. 1. 6.29608E-4 OK +-999 .99965 .99965 7.11159E-7 OK +-994.314 7.48612E-5 7.48612E-5 8.81657E-11 OK +-87.9646 1 1. 6.41981E-5 OK +-99 3.98209E-2 3.98209E-2 6.86312E-8 OK +-89.5354 -9.37269E-6 -9.37269E-6 1.17762E-10 OK +-50 .964966 .964966 1.8405E-5 OK +-20 .408082 .408082 2.03288E-6 OK +-5.9 .927478 .927478 6.03761E-5 OK +-4.71239 1.01962E-6 1.01962E-6 2.20857E-11 OK +-3.14159 -1 -1. 1.40548E-5 OK +-2.3 -.666276 -.666276 3.51649E-5 OK +-1.5708 -3.67321E-6 -3.67321E-6 3.34657E-10 OK +-1.2 .362358 .362358 4.85386E-5 OK +-1 .540302 .540302 1.47908E-5 OK +-.987654 .55065 .55065 1.40519E-4 OK +-.765432 .721083 .721083 1.24814E-4 OK +-9.87654E-2 .995127 .995127 5.325E-4 OK +-7.65432E-2 .997072 .997072 4.88824E-4 OK +-9.75319E-3 .999952 .999952 3.88033E-5 OK +-3.45678E-3 .999994 .999994 6.83247E-4 OK +-1.00001E-3 1. .999999 1.98968E-5 OK +-.001 1. 1. 8.31835E-8 OK +-9.99999E-4 1. 1. 2.08322E-6 OK +-9.87654E-5 1. 1. 4.85932E-4 OK +-9.17359E-6 1 1. 1.67973E-4 OK +-9.E-10 1 1 0 OK - EXACT +-9.E-20 1 1 0 OK - EXACT +-9.E-30 1 1 0 OK - EXACT +-9.E-38 1 1 0 OK - EXACT + 0 1 1 RANGE ZERO OK - EXACT + 1.E-38 1 1 0 OK - EXACT + 9.E-30 1 1 0 OK - EXACT + 9.E-20 1 1 0 OK - EXACT + 9.E-10 1 1 0 OK - EXACT + 9.17359E-6 1 1. 1.67973E-4 OK + 9.87654E-5 1. 1. 4.85932E-4 OK + 9.99999E-4 1. 1. 2.08322E-6 OK + .001 1. 1. 8.31835E-8 OK + 1.00001E-3 1. .999999 1.98968E-5 OK + 3.45678E-3 .999994 .999994 6.83247E-4 OK + 9.75319E-3 .999952 .999952 3.88033E-5 OK + 7.65432E-2 .997072 .997072 4.88824E-4 OK + 9.87654E-2 .995127 .995127 5.325E-4 OK + .765432 .721083 .721083 1.24814E-4 OK + .987654 .55065 .55065 1.40519E-4 OK + 1 .540302 .540302 1.47908E-5 OK + 1.2 .362358 .362358 4.85386E-5 OK + 1.5708 -3.67321E-6 -3.67321E-6 3.34657E-10 OK + 2.3 -.666276 -.666276 3.51649E-5 OK + 3.14159 -1 -1. 1.40548E-5 OK + 3.9 -.725932 -.725932 2.71266E-5 OK + 4.71239 1.01962E-6 1.01962E-6 2.20857E-11 OK + 5.9 .927478 .927478 6.03761E-5 OK + 20 .408082 .408082 2.03288E-6 OK + 50 .964966 .964966 1.8405E-5 OK + 89.5354 -9.37269E-6 -9.37269E-6 8.22373E-11 OK + 99 3.98209E-2 3.98209E-2 6.86312E-8 OK + 87.9646 1 1. 6.41981E-5 OK + 994.314 7.48612E-5 7.48612E-5 8.81657E-11 OK + 999.1 .997297 .997297 1.5104E-6 OK + 986.46 1. 1. 6.29608E-4 OK + 9429.49 -3.4975E-4 -3.4975E-4 5.07E-11 OK + 9425.92 .415741 .415741 3.08328E-8 OK + 9427.92 -1. -1. 1.03325E-5 OK + 94268.2 -4.00579E-5 -4.00579E-5 9.18427E-11 OK + 98764.4 .548821 .548821 2.11951E-9 OK + 98765.4 .999948 .999948 7.75071E-8 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 120 diff --git a/NBS2/P121.80 b/NBS2/P121.80 new file mode 100644 index 0000000..f6cb9bd --- /dev/null +++ b/NBS2/P121.80 @@ -0,0 +1,77 @@ +PROGRAM FILE 121: ACCURACY OF EXP FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 121.1: ACCURACY OF EXP FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +EXP FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-87.4981 1.00013E-38 1.00013E-38 2.5612E-5 OK +-85.9876 4.5296E-38 4.5296E-38 4.70168E-7 OK +-75 2.67864E-33 2.67864E-33 6.62627E-6 OK +-44.4444 4.98933E-20 4.98933E-20 8.10052E-6 OK +-23.4567 6.49957E-11 6.49957E-11 5.24719E-6 OK +-7.77777 4.18945E-4 4.18945E-4 2.1366E-5 OK +-2.22222 .108368 .108368 2.5248E-5 OK +-1 .367879 .367879 4.10247E-5 OK +-.999999 .36788 .36788 5.88334E-5 OK +-.456789 .633314 .633314 1.85552E-4 OK +-9.87654E-2 .905955 .905955 3.20733E-4 OK +-9.87654E-3 .990172 .990172 2.99105E-4 OK +-9.87654E-4 .999013 .999013 8.58062E-4 OK +-9.87654E-5 .999901 .999901 9.5333E-4 OK +-9.87654E-6 .99999 .99999 9.81473E-4 OK +-9.87654E-7 .999999 .999999 6.92283E-4 OK +-9.87654E-8 1. 1. 4.68741E-4 OK +-9.87654E-9 1. 1. 2.46674E-4 OK +-9.87654E-10 1. 1. 2.46674E-5 OK +-9.87654E-15 1 1. 1.97422E-8 OK +-9.87654E-20 1 1 0 OK - EXACT +-9.87654E-30 1 1 0 OK - EXACT +-9.87654E-38 1 1 0 OK - EXACT + 0 1 1 RANGE ZERO OK - EXACT + 9.87654E-38 1 1 0 OK - EXACT + 9.87654E-30 1 1 0 OK - EXACT + 9.87654E-20 1 1 0 OK - EXACT + 9.87654E-15 1 1. 1.95204E-9 OK + 9.87654E-10 1 1. 1.97333E-4 OK + 9.87654E-9 1. 1. 2.46895E-5 OK + 9.87654E-8 1. 1. 2.4687E-4 OK + 9.87654E-7 1. 1. 4.68962E-4 OK + 9.87654E-6 1.00001 1.00001 6.81564E-4 OK + 9.87654E-5 1.0001 1.0001 5.54371E-5 OK + 9.87654E-4 1.00099 1.00099 3.77786E-4 OK + 9.87654E-3 1.00993 1.00993 7.95215E-4 OK + 9.87654E-2 1.10381 1.10381 7.84953E-4 OK + .456789 1.579 1.579 1.53234E-4 OK + .999999 2.71828 2.71828 2.31316E-5 OK + 1 2.71828 2.71828 4.78706E-5 OK + 2.22222 9.22779 9.22779 4.206E-5 OK + 7.77777 2386.95 2386.95 5.3341E-5 OK + 23.4567 1.53856E+10 1.53856E+10 1.78641E-5 OK + 44.4444 2.00428E+19 2.00428E+19 5.24441E-6 OK + 75 3.73324E+32 3.73324E+32 8.46097E-6 OK + 85.9876 2.2077E+37 2.2077E+37 1.55374E-5 OK + 87.4981 9.99866E+37 9.99866E+37 1.4081E-6 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 121 diff --git a/NBS2/P121.BAS b/NBS2/P121.BAS new file mode 100644 index 0000000..437917e --- /dev/null +++ b/NBS2/P121.BAS @@ -0,0 +1,150 @@ +10 PRINT "PROGRAM FILE 121: ACCURACY OF EXP FUNCTION." +20 PRINT " ANSI STANDARD 7.6, 8.4" +30 PRINT +40 PRINT "SECTION 121.1: ACCURACY OF EXP FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE" +70 PRINT "EXP FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN," +80 PRINT "ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY" +90 PRINT "THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT" +100 PRINT "PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN" +110 PRINT "'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE" +120 PRINT "IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE;" +130 PRINT "THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY" +140 PRINT "HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES" +150 PRINT "AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3." +160 PRINT +170 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +180 PRINT "DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 PRINT "ARGUMENT","TRUE","COMPUTED","ERROR","OUTCOME" +230 PRINT " ","VALUE","VALUE","MEASURE" +240 PRINT +250 LET F=0 +260 READ A,T,L,H +270 IF A=999 THEN 2000 +280 LET C=EXP(A) +290 IF C=T THEN 333 +300 IF CH THEN 444 +320 LET O$=" OK " +330 GOTO 500 +333 LET O$=" OK - EXACT" +340 GOTO 500 +444 LET O$="FAIL" +445 LET F=F+1 +450 GOTO 500 +500 LET R=H-L +510 IF R=0 THEN 700 +520 LET E=ABS((C-T)/R) +525 LET E=E+E +530 PRINT A,T,C,E,O$ +540 GOTO 260 +700 PRINT A,T,C,"RANGE ZERO",O$ +710 GOTO 260 +2000 PRINT +2010 IF F=0 THEN 2100 +2020 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +2030 GOTO 2110 +2100 PRINT "*** INFORMATIVE TEST PASSED ***" +2110 PRINT +2120 PRINT " END TEST" +2130 PRINT +2140 PRINT "END PROGRAM 121" +3000 DATA -0.874981000E+02, 0.100013354E-37 +3010 DATA 0.100002853E-37, 0.100023857E-37 +3020 DATA -0.859876000E+02, 0.452959954E-37 +3030 DATA 0.452914160E-37, 0.453005753E-37 +3040 DATA -0.750000000E+02, 0.267863696E-32 +3050 DATA 0.267836411E-32, 0.267890984E-32 +3060 DATA -0.444444000E+02, 0.498933114E-19 +3070 DATA 0.498882722E-19, 0.498983510E-19 +3080 DATA -0.234567000E+02, 0.649957001E-10 +3090 DATA 0.649891508E-10, 0.650022501E-10 +3100 DATA -0.777777000E+01, 0.418945382E-03 +3110 DATA 0.418940692E-03, 0.418950072E-03 +3120 DATA -0.222222000E+01, 0.108368264E+00 +3130 DATA 0.108366680E+00, 0.108369848E+00 +3140 DATA -0.100000000E+01, 0.367879441E+00 +3150 DATA 0.367875262E+00, 0.367883620E+00 +3160 DATA -0.999999000E+00, 0.367879809E+00 +3170 DATA 0.367878941E+00, 0.367880677E+00 +3180 DATA -0.456789000E+00, 0.633313955E+00 +3190 DATA 0.633312821E+00, 0.633315089E+00 +3200 DATA -0.987654000E-01, 0.905955220E+00 +3210 DATA 0.905954629E+00, 0.905955811E+00 +3220 DATA -0.987654000E-02, 0.990172073E+00 +3230 DATA 0.990171562E+00, 0.990172583E+00 +3240 DATA -0.987654000E-03, 0.999012834E+00 +3250 DATA 0.999012332E+00, 0.999013335E+00 +3260 DATA -0.987654000E-04, 0.999901239E+00 +3270 DATA 0.999900739E+00, 0.999901740E+00 +3280 DATA -0.987654000E-05, 0.999990124E+00 +3290 DATA 0.999989623E+00, 0.999990624E+00 +3300 DATA -0.987654000E-06, 0.999999012E+00 +3310 DATA 0.999998512E+00, 0.999999513E+00 +3320 DATA -0.987654000E-07, 0.999999901E+00 +3330 DATA 0.999999401E+00, 1.000000402E+00 +3340 DATA -0.987654000E-08, 0.999999990E+00 +3350 DATA 0.999999490E+00, 1.000000491E+00 +3360 DATA -0.987654000E-09, 0.999999999E+00 +3370 DATA 0.999999499E+00, 1.000000500E+00 +3380 DATA -0.987654000E-14, 1.000000000E+00 +3390 DATA 0.999999499E+00, 1.000000500E+00 +3400 DATA -0.987654000E-19, 1.000000000E+00 +3410 DATA 0.999999499E+00, 1.000000500E+00 +3420 DATA -0.987654000E-29, 1.000000000E+00 +3430 DATA 0.999999499E+00, 1.000000500E+00 +3442 DATA -0.987654000E-37, 1.000000000E+00 +3444 DATA 0.999999499E+00, 1.000000500E+00 +3445 DATA 0,1,1,1 +3446 DATA 0.987654000E-37, 0.100000000E+01 +3448 DATA .0999995000E+01, 0.100000500E+01 +3449 DATA 0.987654000E-29, 0.100000000E+01 +3450 DATA .0999995000E+01, 0.100000500E+01 +3460 DATA 0.987654000E-19, 0.100000000E+01 +3470 DATA .0999995000E+01, 0.100000500E+01 +3480 DATA 0.987654000E-14, 0.100000000E+01 +3490 DATA .0999995000E+01, 0.100000501E+01 +3500 DATA 0.987654000E-09, 0.100000000E+01 +3510 DATA .0999995000E+01, 0.100000501E+01 +3520 DATA 0.987654000E-08, 0.100000001E+01 +3530 DATA .0999995009E+01, 0.100000501E+01 +3540 DATA 0.987654000E-07, 0.100000010E+01 +3550 DATA .0999995098E+01, 0.100000510E+01 +3560 DATA 0.987654000E-06, 0.100000099E+01 +3570 DATA .0999995987E+01, 0.100000599E+01 +3580 DATA 0.987654000E-05, 0.100000988E+01 +3590 DATA 0.100000487E+01, 0.100001488E+01 +3600 DATA 0.987654000E-04, 0.100009877E+01 +3610 DATA 0.100009377E+01, 0.100010378E+01 +3620 DATA 0.987654000E-03, 0.100098814E+01 +3630 DATA 0.100098314E+01, 0.100099315E+01 +3640 DATA 0.987654000E-02, 0.100992547E+01 +3650 DATA 0.100992046E+01, 0.100993049E+01 +3660 DATA 0.987654000E-01, 0.110380732E+01 +3670 DATA 0.110380220E+01, 0.110381243E+01 +3680 DATA 0.456789000E+00, 0.157899568E+01 +3690 DATA 0.157898910E+01, 0.157900227E+01 +3700 DATA 0.999999000E+00, 0.271827911E+01 +3710 DATA 0.271827139E+01, 0.271828683E+01 +3720 DATA 0.100000000E+01, 0.271828183E+01 +3730 DATA 0.271824964E+01, 0.271831402E+01 +3740 DATA 0.222222000E+01, 0.922779385E+01 +3750 DATA 0.922769656E+01, 0.922789113E+01 +3760 DATA 0.777777000E+01, 0.238694599E+04 +3770 DATA 0.238691712E+04, 0.238697487E+04 +3780 DATA 0.234567000E+02, 0.153856332E+11 +3790 DATA 0.153840446E+11, 0.153872219E+11 +3800 DATA 0.444444000E+02, 0.200427667E+20 +3810 DATA 0.200407125E+20, 0.200448211E+20 +3820 DATA 0.750000000E+02, 0.373324200E+33 +3830 DATA 0.373286369E+33, 0.373362034E+33 +3840 DATA 0.859876000E+02, 0.220770068E+38 +3850 DATA 0.220747492E+38, 0.220792647E+38 +3860 DATA 0.874981000E+02, 0.999866475E+38 +3870 DATA 0.999765993E+38, 0.999966967E+38 +9000 DATA 999,0,0,0 +9400 END diff --git a/NBS2/P121.OUT b/NBS2/P121.OUT new file mode 100644 index 0000000..705f1bb --- /dev/null +++ b/NBS2/P121.OUT @@ -0,0 +1,77 @@ +PROGRAM FILE 121: ACCURACY OF EXP FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 121.1: ACCURACY OF EXP FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +EXP FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-87.4981 1.00013E-38 1.00013E-38 2.5612E-5 OK +-85.9876 4.5296E-38 4.5296E-38 4.70168E-7 OK +-75 2.67864E-33 2.67864E-33 6.62627E-6 OK +-44.4444 4.98933E-20 4.98933E-20 8.10052E-6 OK +-23.4567 6.49957E-11 6.49957E-11 5.24719E-6 OK +-7.77777 4.18945E-4 4.18945E-4 2.1366E-5 OK +-2.22222 .108368 .108368 2.5248E-5 OK +-1 .367879 .367879 4.10247E-5 OK +-.999999 .36788 .36788 5.88334E-5 OK +-.456789 .633314 .633314 1.85552E-4 OK +-9.87654E-2 .905955 .905955 3.20733E-4 OK +-9.87654E-3 .990172 .990172 2.99105E-4 OK +-9.87654E-4 .999013 .999013 8.58062E-4 OK +-9.87654E-5 .999901 .999901 9.5333E-4 OK +-9.87654E-6 .99999 .99999 9.81473E-4 OK +-9.87654E-7 .999999 .999999 6.92283E-4 OK +-9.87654E-8 1. 1. 4.68741E-4 OK +-9.87654E-9 1. 1. 2.46674E-4 OK +-9.87654E-10 1. 1. 2.46674E-5 OK +-9.87654E-15 1 1. 1.97422E-8 OK +-9.87654E-20 1 1 0 OK - EXACT +-9.87654E-30 1 1 0 OK - EXACT +-9.87654E-38 1 1 0 OK - EXACT + 0 1 1 RANGE ZERO OK - EXACT + 9.87654E-38 1 1 0 OK - EXACT + 9.87654E-30 1 1 0 OK - EXACT + 9.87654E-20 1 1 0 OK - EXACT + 9.87654E-15 1 1. 1.95204E-9 OK + 9.87654E-10 1 1. 1.97333E-4 OK + 9.87654E-9 1. 1. 2.46895E-5 OK + 9.87654E-8 1. 1. 2.4687E-4 OK + 9.87654E-7 1. 1. 4.68962E-4 OK + 9.87654E-6 1.00001 1.00001 6.81564E-4 OK + 9.87654E-5 1.0001 1.0001 5.54371E-5 OK + 9.87654E-4 1.00099 1.00099 3.77786E-4 OK + 9.87654E-3 1.00993 1.00993 7.95215E-4 OK + 9.87654E-2 1.10381 1.10381 7.84953E-4 OK + .456789 1.579 1.579 1.53234E-4 OK + .999999 2.71828 2.71828 2.31316E-5 OK + 1 2.71828 2.71828 4.78706E-5 OK + 2.22222 9.22779 9.22779 4.206E-5 OK + 7.77777 2386.95 2386.95 5.3341E-5 OK + 23.4567 1.53856E+10 1.53856E+10 1.78641E-5 OK + 44.4444 2.00428E+19 2.00428E+19 5.24441E-6 OK + 75 3.73324E+32 3.73324E+32 8.46097E-6 OK + 85.9876 2.2077E+37 2.2077E+37 1.55374E-5 OK + 87.4981 9.99866E+37 9.99866E+37 1.4081E-6 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 121 diff --git a/NBS2/P121.dif b/NBS2/P121.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P121.run b/NBS2/P121.run new file mode 100644 index 0000000..f6cb9bd --- /dev/null +++ b/NBS2/P121.run @@ -0,0 +1,77 @@ +PROGRAM FILE 121: ACCURACY OF EXP FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 121.1: ACCURACY OF EXP FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +EXP FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-87.4981 1.00013E-38 1.00013E-38 2.5612E-5 OK +-85.9876 4.5296E-38 4.5296E-38 4.70168E-7 OK +-75 2.67864E-33 2.67864E-33 6.62627E-6 OK +-44.4444 4.98933E-20 4.98933E-20 8.10052E-6 OK +-23.4567 6.49957E-11 6.49957E-11 5.24719E-6 OK +-7.77777 4.18945E-4 4.18945E-4 2.1366E-5 OK +-2.22222 .108368 .108368 2.5248E-5 OK +-1 .367879 .367879 4.10247E-5 OK +-.999999 .36788 .36788 5.88334E-5 OK +-.456789 .633314 .633314 1.85552E-4 OK +-9.87654E-2 .905955 .905955 3.20733E-4 OK +-9.87654E-3 .990172 .990172 2.99105E-4 OK +-9.87654E-4 .999013 .999013 8.58062E-4 OK +-9.87654E-5 .999901 .999901 9.5333E-4 OK +-9.87654E-6 .99999 .99999 9.81473E-4 OK +-9.87654E-7 .999999 .999999 6.92283E-4 OK +-9.87654E-8 1. 1. 4.68741E-4 OK +-9.87654E-9 1. 1. 2.46674E-4 OK +-9.87654E-10 1. 1. 2.46674E-5 OK +-9.87654E-15 1 1. 1.97422E-8 OK +-9.87654E-20 1 1 0 OK - EXACT +-9.87654E-30 1 1 0 OK - EXACT +-9.87654E-38 1 1 0 OK - EXACT + 0 1 1 RANGE ZERO OK - EXACT + 9.87654E-38 1 1 0 OK - EXACT + 9.87654E-30 1 1 0 OK - EXACT + 9.87654E-20 1 1 0 OK - EXACT + 9.87654E-15 1 1. 1.95204E-9 OK + 9.87654E-10 1 1. 1.97333E-4 OK + 9.87654E-9 1. 1. 2.46895E-5 OK + 9.87654E-8 1. 1. 2.4687E-4 OK + 9.87654E-7 1. 1. 4.68962E-4 OK + 9.87654E-6 1.00001 1.00001 6.81564E-4 OK + 9.87654E-5 1.0001 1.0001 5.54371E-5 OK + 9.87654E-4 1.00099 1.00099 3.77786E-4 OK + 9.87654E-3 1.00993 1.00993 7.95215E-4 OK + 9.87654E-2 1.10381 1.10381 7.84953E-4 OK + .456789 1.579 1.579 1.53234E-4 OK + .999999 2.71828 2.71828 2.31316E-5 OK + 1 2.71828 2.71828 4.78706E-5 OK + 2.22222 9.22779 9.22779 4.206E-5 OK + 7.77777 2386.95 2386.95 5.3341E-5 OK + 23.4567 1.53856E+10 1.53856E+10 1.78641E-5 OK + 44.4444 2.00428E+19 2.00428E+19 5.24441E-6 OK + 75 3.73324E+32 3.73324E+32 8.46097E-6 OK + 85.9876 2.2077E+37 2.2077E+37 1.55374E-5 OK + 87.4981 9.99866E+37 9.99866E+37 1.4081E-6 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 121 diff --git a/NBS2/P122.80 b/NBS2/P122.80 new file mode 100644 index 0000000..fc3ff09 --- /dev/null +++ b/NBS2/P122.80 @@ -0,0 +1,71 @@ +PROGRAM FILE 122: EXCEPTION - OVERFLOW ON VALUE OF + EXP FUNCTION. + ANSI STANDARD 8.5 + +SECTION 122.1: EXCEPTION - OVERFLOW ON VALUE OF + EXP FUNCTION. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES AN EXCEPTION WHEN THE VALUE RETURNED +BY THE EXP FUNCTION EXCEEDS MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST SUPPLY MACHINE INFINITY AND + CONTINUE EXECUTION. + + BEGIN TEST. + + +ABOUT TO ATTEMPT EXP( 87 ) +VALUE RETURNED BY EXP = 6.07603E+37 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 105.27 ) +VALUE RETURNED BY EXP = 5.22613E+45 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 140.114 ) +VALUE RETURNED BY EXP = 7.09411E+60 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 205.141 ) +VALUE RETURNED BY EXP = 1.23538E+89 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 330.382 ) +VALUE RETURNED BY EXP = 3.04252E+143 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 585.292 ) +VALUE RETURNED BY EXP = 1.54633E+254 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 1140.57 ) +*** Arithmetic Overflow *** +VALUE RETURNED BY EXP = 1.79769E+308 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 2444.91 ) +*** Arithmetic Overflow *** +VALUE RETURNED BY EXP = 1.79769E+308 + +--------------------------------------- + +LAST TWO INVOCATIONS OF EXP SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND MACHINE INFINITY SUPPLIED; IF SO, +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST. + +END PROGRAM 122 diff --git a/NBS2/P122.BAS b/NBS2/P122.BAS new file mode 100644 index 0000000..7d5293b --- /dev/null +++ b/NBS2/P122.BAS @@ -0,0 +1,44 @@ +10 PRINT "PROGRAM FILE 122: EXCEPTION - OVERFLOW ON VALUE OF" +15 PRINT " EXP FUNCTION." +20 PRINT " ANSI STANDARD 8.5" +30 PRINT +40 PRINT "SECTION 122.1: EXCEPTION - OVERFLOW ON VALUE OF" +50 PRINT " EXP FUNCTION." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES AN EXCEPTION WHEN THE VALUE RETURNED" +90 PRINT "BY THE EXP FUNCTION EXCEEDS MACHINE INFINITY." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST SUPPLY MACHINE INFINITY AND" +170 PRINT " CONTINUE EXECUTION." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +205 PRINT +210 LET F=1.1 +220 LET A=87 +230 LET B=1 +240 PRINT "ABOUT TO ATTEMPT EXP(";A;")" +250 LET C=EXP(A) +260 PRINT "VALUE RETURNED BY EXP = ";C +270 PRINT +280 PRINT "---------------------------------------" +290 PRINT +300 IF B=C THEN 350 +310 LET B=C +320 LET F=F*1.1 +330 LET A=A*F +340 GOTO 240 +350 PRINT "LAST TWO INVOCATIONS OF EXP SHOULD HAVE BEEN REPORTED" +360 PRINT "AS OVERFLOW, AND MACHINE INFINITY SUPPLIED; IF SO," +370 PRINT "*** TEST PASSED *** OTHERWISE *** TEST FAILED ***" +380 PRINT +390 PRINT " END TEST." +400 PRINT +410 PRINT "END PROGRAM 122" +420 END diff --git a/NBS2/P122.OUT b/NBS2/P122.OUT new file mode 100644 index 0000000..063a79f --- /dev/null +++ b/NBS2/P122.OUT @@ -0,0 +1,71 @@ +PROGRAM FILE 122: EXCEPTION - OVERFLOW ON VALUE OF + EXP FUNCTION. + ANSI STANDARD 8.5 + +SECTION 122.1: EXCEPTION - OVERFLOW ON VALUE OF + EXP FUNCTION. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES AN EXCEPTION WHEN THE VALUE RETURNED +BY THE EXP FUNCTION EXCEEDS MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST SUPPLY MACHINE INFINITY AND + CONTINUE EXECUTION. + + BEGIN TEST. + + +ABOUT TO ATTEMPT EXP( 87 ) +VALUE RETURNED BY EXP = 6.07603E+37 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 105.27 ) +VALUE RETURNED BY EXP = 5.22613E+45 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 140.114 ) +VALUE RETURNED BY EXP = 7.09411E+60 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 205.141 ) +VALUE RETURNED BY EXP = 1.23538E+89 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 330.382 ) +VALUE RETURNED BY EXP = 3.04252E+143 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 585.292 ) +VALUE RETURNED BY EXP = 1.54633E+254 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 1140.57 ) +*** Arithmetic Overflow *** +VALUE RETURNED BY EXP = 1.79769E+308 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 2444.91 ) +*** Arithmetic Overflow *** +VALUE RETURNED BY EXP = 1.79769E+308 + +--------------------------------------- + +LAST TWO INVOCATIONS OF EXP SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND MACHINE INFINITY SUPPLIED; IF SO, +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST. + +END PROGRAM 122 diff --git a/NBS2/P122.dif b/NBS2/P122.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P122.run b/NBS2/P122.run new file mode 100644 index 0000000..fc3ff09 --- /dev/null +++ b/NBS2/P122.run @@ -0,0 +1,71 @@ +PROGRAM FILE 122: EXCEPTION - OVERFLOW ON VALUE OF + EXP FUNCTION. + ANSI STANDARD 8.5 + +SECTION 122.1: EXCEPTION - OVERFLOW ON VALUE OF + EXP FUNCTION. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES AN EXCEPTION WHEN THE VALUE RETURNED +BY THE EXP FUNCTION EXCEEDS MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST SUPPLY MACHINE INFINITY AND + CONTINUE EXECUTION. + + BEGIN TEST. + + +ABOUT TO ATTEMPT EXP( 87 ) +VALUE RETURNED BY EXP = 6.07603E+37 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 105.27 ) +VALUE RETURNED BY EXP = 5.22613E+45 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 140.114 ) +VALUE RETURNED BY EXP = 7.09411E+60 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 205.141 ) +VALUE RETURNED BY EXP = 1.23538E+89 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 330.382 ) +VALUE RETURNED BY EXP = 3.04252E+143 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 585.292 ) +VALUE RETURNED BY EXP = 1.54633E+254 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 1140.57 ) +*** Arithmetic Overflow *** +VALUE RETURNED BY EXP = 1.79769E+308 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP( 2444.91 ) +*** Arithmetic Overflow *** +VALUE RETURNED BY EXP = 1.79769E+308 + +--------------------------------------- + +LAST TWO INVOCATIONS OF EXP SHOULD HAVE BEEN REPORTED +AS OVERFLOW, AND MACHINE INFINITY SUPPLIED; IF SO, +*** TEST PASSED *** OTHERWISE *** TEST FAILED *** + + END TEST. + +END PROGRAM 122 diff --git a/NBS2/P123.80 b/NBS2/P123.80 new file mode 100644 index 0000000..1e1a760 --- /dev/null +++ b/NBS2/P123.80 @@ -0,0 +1,67 @@ +PROGRAM FILE 123: EXCEPTION - UNDERFLOW ON VALUE OF + EXP FUNCTION. + ANSI STANDARD 8.4, 8.6 + +SECTION 123.1: EXCEPTION - UNDERFLOW ON VALUE OF + EXP FUNCTION. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES AN EXCEPTION WHEN THE VALUE RETURNED +BY THE EXP FUNCTION IS LESS THAN MACHINE INFINITESIMAL +AND TO ENSURE THAT ZERO IS SUPPLIED ON UNDERFLOW. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE FUNCTION AND EXECUTION CONTINUES. + + + BEGIN TEST. + + +ABOUT TO ATTEMPT EXP(-87 ) +VALUE RETURNED BY EXP = 1.64581E-38 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-105.27 ) +VALUE RETURNED BY EXP = 1.91346E-46 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-140.114 ) +VALUE RETURNED BY EXP = 1.40962E-61 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-205.141 ) +VALUE RETURNED BY EXP = 8.0947E-90 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-330.382 ) +VALUE RETURNED BY EXP = 3.28675E-144 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-585.292 ) +VALUE RETURNED BY EXP = 6.46694E-255 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-1140.57 ) +VALUE RETURNED BY EXP = 0 + +--------------------------------------- + +LAST INVOCATION OF EXP SHOULD HAVE BEEN REPORTED AS +UNDERFLOW IN ORDER TO COMPLY WITH ANSI RECOMMENDATION; + +***** TEST PASSES, SINCE ZERO WAS SUPPLIED. ***** + + END TEST + +END PROGRAM 123 diff --git a/NBS2/P123.BAS b/NBS2/P123.BAS new file mode 100644 index 0000000..5f3a195 --- /dev/null +++ b/NBS2/P123.BAS @@ -0,0 +1,45 @@ +10 PRINT "PROGRAM FILE 123: EXCEPTION - UNDERFLOW ON VALUE OF" +20 PRINT " EXP FUNCTION." +30 PRINT " ANSI STANDARD 8.4, 8.6" +40 PRINT +50 PRINT "SECTION 123.1: EXCEPTION - UNDERFLOW ON VALUE OF" +60 PRINT " EXP FUNCTION." +70 PRINT +80 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +90 PRINT "RECOGNIZES AN EXCEPTION WHEN THE VALUE RETURNED" +100 PRINT "BY THE EXP FUNCTION IS LESS THAN MACHINE INFINITESIMAL" +110 PRINT "AND TO ENSURE THAT ZERO IS SUPPLIED ON UNDERFLOW." +120 PRINT +130 PRINT "TO PASS THIS TEST:" +140 PRINT +150 PRINT " 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE" +160 PRINT " DISPLAYED (NOT MANDATORY), AND" +170 PRINT +180 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +190 PRINT " OF THE FUNCTION AND EXECUTION CONTINUES." +220 PRINT +230 PRINT +240 PRINT " BEGIN TEST." +250 PRINT +260 PRINT +270 LET F=1.1 +280 LET A=-87 +290 PRINT "ABOUT TO ATTEMPT EXP(";A;")" +300 LET C=EXP(A) +310 PRINT "VALUE RETURNED BY EXP = ";C +320 PRINT +330 PRINT "---------------------------------------" +340 PRINT +350 IF C=0 THEN 390 +360 LET F=F*1.1 +370 LET A=A*F +380 GOTO 290 +390 PRINT "LAST INVOCATION OF EXP SHOULD HAVE BEEN REPORTED AS" +400 PRINT "UNDERFLOW IN ORDER TO COMPLY WITH ANSI RECOMMENDATION;" +410 PRINT +420 PRINT "***** TEST PASSES, SINCE ZERO WAS SUPPLIED. *****" +430 PRINT +440 PRINT " END TEST" +450 PRINT +460 PRINT "END PROGRAM 123" +470 END diff --git a/NBS2/P123.OUT b/NBS2/P123.OUT new file mode 100644 index 0000000..afa4502 --- /dev/null +++ b/NBS2/P123.OUT @@ -0,0 +1,67 @@ +PROGRAM FILE 123: EXCEPTION - UNDERFLOW ON VALUE OF + EXP FUNCTION. + ANSI STANDARD 8.4, 8.6 + +SECTION 123.1: EXCEPTION - UNDERFLOW ON VALUE OF + EXP FUNCTION. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES AN EXCEPTION WHEN THE VALUE RETURNED +BY THE EXP FUNCTION IS LESS THAN MACHINE INFINITESIMAL +AND TO ENSURE THAT ZERO IS SUPPLIED ON UNDERFLOW. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE FUNCTION AND EXECUTION CONTINUES. + + + BEGIN TEST. + + +ABOUT TO ATTEMPT EXP(-87 ) +VALUE RETURNED BY EXP = 1.64581E-38 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-105.27 ) +VALUE RETURNED BY EXP = 1.91346E-46 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-140.114 ) +VALUE RETURNED BY EXP = 1.40962E-61 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-205.141 ) +VALUE RETURNED BY EXP = 8.0947E-90 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-330.382 ) +VALUE RETURNED BY EXP = 3.28675E-144 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-585.292 ) +VALUE RETURNED BY EXP = 6.46694E-255 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-1140.57 ) +VALUE RETURNED BY EXP = 0 + +--------------------------------------- + +LAST INVOCATION OF EXP SHOULD HAVE BEEN REPORTED AS +UNDERFLOW IN ORDER TO COMPLY WITH ANSI RECOMMENDATION; + +***** TEST PASSES, SINCE ZERO WAS SUPPLIED. ***** + + END TEST + +END PROGRAM 123 diff --git a/NBS2/P123.dif b/NBS2/P123.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P123.run b/NBS2/P123.run new file mode 100644 index 0000000..1e1a760 --- /dev/null +++ b/NBS2/P123.run @@ -0,0 +1,67 @@ +PROGRAM FILE 123: EXCEPTION - UNDERFLOW ON VALUE OF + EXP FUNCTION. + ANSI STANDARD 8.4, 8.6 + +SECTION 123.1: EXCEPTION - UNDERFLOW ON VALUE OF + EXP FUNCTION. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES AN EXCEPTION WHEN THE VALUE RETURNED +BY THE EXP FUNCTION IS LESS THAN MACHINE INFINITESIMAL +AND TO ENSURE THAT ZERO IS SUPPLIED ON UNDERFLOW. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE FUNCTION AND EXECUTION CONTINUES. + + + BEGIN TEST. + + +ABOUT TO ATTEMPT EXP(-87 ) +VALUE RETURNED BY EXP = 1.64581E-38 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-105.27 ) +VALUE RETURNED BY EXP = 1.91346E-46 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-140.114 ) +VALUE RETURNED BY EXP = 1.40962E-61 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-205.141 ) +VALUE RETURNED BY EXP = 8.0947E-90 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-330.382 ) +VALUE RETURNED BY EXP = 3.28675E-144 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-585.292 ) +VALUE RETURNED BY EXP = 6.46694E-255 + +--------------------------------------- + +ABOUT TO ATTEMPT EXP(-1140.57 ) +VALUE RETURNED BY EXP = 0 + +--------------------------------------- + +LAST INVOCATION OF EXP SHOULD HAVE BEEN REPORTED AS +UNDERFLOW IN ORDER TO COMPLY WITH ANSI RECOMMENDATION; + +***** TEST PASSES, SINCE ZERO WAS SUPPLIED. ***** + + END TEST + +END PROGRAM 123 diff --git a/NBS2/P124.80 b/NBS2/P124.80 new file mode 100644 index 0000000..e8f1c91 --- /dev/null +++ b/NBS2/P124.80 @@ -0,0 +1,91 @@ +PROGRAM FILE 124: ACCURACY OF LOG FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 124.1: ACCURACY OF LOG FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +LOG FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + + 1.E-38 -87.4982 -87.4982 5.62427E-4 OK + 1.00001E-38 -87.4982 -87.4982 5.63259E-4 OK + 9.87654E-38 -85.2081 -85.2081 2.78584E-4 OK + 8.98989E-37 -82.9995 -82.9995 5.51097E-4 OK + 7.87878E-36 -80.8289 -80.8289 4.24228E-4 OK + 6.76767E-35 -78.6783 -78.6783 1.44822E-4 OK + 5.65656E-30 -67.3447 -67.3447 8.44219E-4 OK + 4.54545E-25 -56.0505 -56.0505 1.48864E-4 OK + 3.43434E-20 -44.8179 -44.8179 1.43287E-4 OK + 2.32323E-15 -33.6958 -33.6958 6.64629E-4 OK + 1.21212E-10 -22.8335 -22.8335 6.39683E-4 OK + 9.0909E-7 -13.9108 -13.9108 7.38399E-4 OK + 8.88888E-5 -9.32812 -9.32812 3.86123E-4 OK + 7.77777E-4 -7.15907 -7.15907 4.35049E-4 OK + 6.66666E-3 -5.01064 -5.01064 6.29786E-4 OK + 5.55555E-2 -2.89037 -2.89037 3.09087E-4 OK + .123456 -2.09187 -2.09187 1.29635E-4 OK + .298347 -1.2095 -1.2095 4.41117E-5 OK + .535353 -.624829 -.624829 1.76074E-4 OK + .893481 -.11263 -.11263 1.84115E-4 OK + .999 -1.0005E-3 -1.0005E-3 3.57013E-6 OK + .9995 -5.00125E-4 -5.00125E-4 3.17439E-7 OK + .9999 -1.00005E-4 -1.00005E-4 3.33222E-7 OK + .99995 -5.00013E-5 -5.00013E-5 4.16586E-8 OK + .99999 -1.00001E-5 -1.00001E-5 2.87813E-10 OK + .999995 -5.00001E-6 -5.00001E-6 7.44238E-11 OK + .999998 -.000002 -.000002 5.08436E-11 OK + .999999 -.000001 -.000001 2.32713E-11 OK + 1 0 0 0 OK - EXACT + 1.00001 9.99995E-6 9.99995E-6 3.98845E-11 OK + 1.00002 1.99998E-5 1.99998E-5 2.57565E-10 OK + 1.00005 4.99988E-5 4.99988E-5 4.15504E-9 OK + 1.0001 9.9995E-5 9.9995E-5 3.32997E-9 OK + 1.0003 2.99955E-4 2.99955E-4 2.05806E-10 OK + 1.001 9.995E-4 9.995E-4 8.34837E-9 OK + 1.003 2.99551E-3 2.99551E-3 2.01911E-8 OK + 1.01 9.95033E-3 9.95033E-3 3.19816E-7 OK + 1.03 2.95588E-2 2.95588E-2 4.25712E-6 OK + 1.11111 .10536 .10536 3.6069E-5 OK + 1.54321 .433865 .433865 5.3025E-5 OK + 2 .693147 .693147 8.00027E-5 OK + 2.32323 .842958 .842958 4.40988E-5 OK + 2.71828 .999999 .999999 5.40012E-5 OK + 4 1.38629 1.38629 1.49219E-4 OK + 7.14286 1.96611 1.96611 5.66315E-4 OK + 8 2.07944 2.07944 2.68559E-4 OK + 53.6789 3.98302 3.98302 9.46416E-5 OK + 482.284 6.17853 6.17853 3.03933E-4 OK + 9621.12 9.17172 9.17172 1.65329E-4 OK + 86321.4 11.3658 11.3658 3.61749E-4 OK + 777777 13.5642 13.5642 5.7805E-4 OK + 9.87654E+7 18.4083 18.4083 2.04744E-5 OK + 8.98989E+10 25.222 25.222 8.31506E-4 OK + 7.97979E+15 36.6157 36.6157 1.90318E-4 OK + 6.96969E+20 47.9933 47.9933 1.42469E-4 OK + 5.95959E+25 59.3496 59.3496 2.24677E-4 OK + 4.94949E+30 70.6768 70.6768 5.91565E-4 OK + 3.93939E+35 81.9615 81.9615 8.33115E-4 OK + 9.87654E+36 85.1832 85.1832 8.2562E-5 OK + 9.87654E+37 87.4858 87.4858 2.19665E-4 OK + 1.E+38 87.4982 87.4982 5.62427E-4 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 124 diff --git a/NBS2/P124.BAS b/NBS2/P124.BAS new file mode 100644 index 0000000..d8c44d4 --- /dev/null +++ b/NBS2/P124.BAS @@ -0,0 +1,179 @@ +10 PRINT "PROGRAM FILE 124: ACCURACY OF LOG FUNCTION." +20 PRINT " ANSI STANDARD 7.6, 8.4" +30 PRINT +40 PRINT "SECTION 124.1: ACCURACY OF LOG FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE" +70 PRINT "LOG FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN," +80 PRINT "ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY" +90 PRINT "THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT" +100 PRINT "PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN" +110 PRINT "'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE" +120 PRINT "IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE;" +130 PRINT "THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY" +140 PRINT "HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES" +150 PRINT "AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3." +160 PRINT +170 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +180 PRINT "DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 PRINT "ARGUMENT","TRUE","COMPUTED","ERROR","OUTCOME" +230 PRINT " ","VALUE","VALUE","MEASURE" +240 PRINT +250 LET F=0 +260 READ A,T,L,H +270 IF A=999 THEN 2000 +280 LET C=LOG(A) +290 IF C=T THEN 333 +300 IF CH THEN 444 +320 LET O$=" OK " +330 GOTO 500 +333 LET O$=" OK - EXACT" +340 GOTO 500 +444 LET O$="FAIL" +445 LET F=F+1 +450 GOTO 500 +500 LET R=H-L +510 IF R=0 THEN 700 +520 LET E=ABS((C-T)/R) +525 LET E=E+E +530 PRINT A,T,C,E,O$ +540 GOTO 260 +700 PRINT A,T,C,"RANGE ZERO",O$ +710 GOTO 260 +2000 PRINT +2010 IF F=0 THEN 2100 +2020 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +2030 GOTO 2110 +2100 PRINT "*** INFORMATIVE TEST PASSED ***" +2110 PRINT +2120 PRINT " END TEST" +2130 PRINT +2140 PRINT "END PROGRAM 124" +3000 DATA 0.100000000E-37,-0.874982335E+02 +3010 DATA -0.874982936E+02,-0.874981735E+02 +3020 DATA 0.100001000E-37,-0.874982235E+02 +3030 DATA -0.874982836E+02,-0.874981635E+02 +3040 DATA 0.987654000E-37,-0.852080713E+02 +3050 DATA -0.852081223E+02,-0.852080202E+02 +3060 DATA 0.898989000E-36,-0.829995478E+02 +3070 DATA -0.829995990E+02,-0.829994967E+02 +3080 DATA 0.787878000E-35,-0.808288903E+02 +3090 DATA -0.808289416E+02,-0.808288390E+02 +3100 DATA 0.676767000E-34,-0.786783214E+02 +3110 DATA -0.786783729E+02,-0.786782699E+02 +3120 DATA 0.565656000E-29,-0.673447369E+02 +3130 DATA -0.673447887E+02,-0.673446850E+02 +3140 DATA 0.454545000E-24,-0.560505006E+02 +3150 DATA -0.560505528E+02,-0.560504483E+02 +3160 DATA 0.343434000E-19,-0.448178771E+02 +3170 DATA -0.448179301E+02,-0.448178241E+02 +3180 DATA 0.232323000E-14,-0.336958179E+02 +3190 DATA -0.336958723E+02,-0.336957636E+02 +3200 DATA 0.121212000E-09,-0.228334800E+02 +3210 DATA -0.228335383E+02,-0.228334217E+02 +3220 DATA 0.909090000E-06,-0.139108217E+02 +3230 DATA -0.139108729E+02,-0.139107706E+02 +3240 DATA 0.888888000E-04,-0.932812441E+01 +3250 DATA -0.932813054E+01,-0.932811828E+01 +3260 DATA 0.777777000E-03,-0.715907071E+01 +3270 DATA -0.715907700E+01,-0.715906442E+01 +3280 DATA 0.666666000E-02,-0.501063629E+01 +3290 DATA -0.501064280E+01,-0.501062979E+01 +3300 DATA 0.555555000E-01,-0.289037276E+01 +3310 DATA -0.289037956E+01,-0.289036595E+01 +3320 DATA 0.123456000E+00,-0.209187046E+01 +3330 DATA -0.209188357E+01,-0.209185736E+01 +3340 DATA 0.298347000E+00,-0.120949804E+01 +3350 DATA -0.120950640E+01,-0.120948968E+01 +3360 DATA 0.535353000E+00,-0.624828937E+00 +3370 DATA -0.624831305E+00,-0.624826568E+00 +3380 DATA 0.893481000E+00,-0.112630209E+00 +3390 DATA -0.112631829E+00,-0.112628590E+00 +3400 DATA 0.999000000E+00,-0.100050033E-02 +3410 DATA -0.100150634E-02,-0.999498833E-03 +3420 DATA 0.999500000E+00,-0.500125042E-03 +3430 DATA -0.501126043E-03,-0.499124041E-03 +3440 DATA 0.999900000E+00,-0.100005000E-03 +3450 DATA -0.101005601E-03,-0.990048508E-04 +3460 DATA 0.999950000E+00,-0.500012500E-04 +3470 DATA -0.510013506E-04,-0.490011505E-04 +3480 DATA 0.999990000E+00,-0.100000500E-04 +3490 DATA -0.110001106E-04,-0.900003550E-05 +3500 DATA 0.999995000E+00,-0.500001250E-05 +3510 DATA -0.600002300E-05,-0.400000299E-05 +3520 DATA 0.999998000E+00,-0.200000200E-05 +3530 DATA -0.300000950E-05,-.0999995499E-05 +3540 DATA 0.999999000E+00,-0.100000050E-05 +3550 DATA -0.200000700E-05, 0.000000500E+00 +3560 DATA 0.100000000E+01, 0.000000000E+00 +3570 DATA -0.100001001E-04, 0.999995501E-05 +3580 DATA 0.100001000E+01, 0.999995000E-05 +3590 DATA 0.000000000E+00, 0.199998501E-04 +3600 DATA 0.100002000E+01, 0.199998000E-04 +3610 DATA 0.999994500E-05, 0.299996001E-04 +3620 DATA 0.100005000E+01, 0.499987500E-04 +3630 DATA 0.399991500E-04, 0.599982501E-04 +3640 DATA 0.100010000E+01, 0.999950003E-04 +3650 DATA 0.899959002E-04, 0.109994451E-03 +3660 DATA 0.100030000E+01, 0.299955009E-03 +3670 DATA 0.289957458E-03, 0.309952460E-03 +3680 DATA 0.100100000E+01, 0.999500333E-03 +3690 DATA 0.989509773E-03, 0.100949530E-02 +3700 DATA 0.100300000E+01, 0.299550898E-02 +3710 DATA 0.298553384E-02, 0.300548402E-02 +3720 DATA 0.101000000E+01, 0.995033085E-02 +3730 DATA 0.994042481E-02, 0.996023680E-02 +3740 DATA 0.103000000E+01, 0.295588022E-01 +3750 DATA 0.295490434E-01, 0.295685610E-01 +3760 DATA 0.111111000E+01, 0.105359516E+00 +3770 DATA 0.105350015E+00, 0.105369016E+00 +3780 DATA 0.154321000E+01, 0.433864663E+00 +3790 DATA 0.433857682E+00, 0.433871643E+00 +3800 DATA 0.200000000E+01, 0.693147181E+00 +3810 DATA 0.693141680E+00, 0.693152681E+00 +3820 DATA 0.232323000E+01, 0.842958459E+00 +3830 DATA 0.842953654E+00, 0.842963264E+00 +3840 DATA 0.271828000E+01, 0.999999327E+00 +3850 DATA 0.999995148E+00, 0.100000801E+01 +3860 DATA 0.400000000E+01, 0.138629436E+01 +3870 DATA 0.138628686E+01, 0.138630187E+01 +3880 DATA 0.714286000E+01, 0.196611326E+01 +3890 DATA 0.196610685E+01, 0.196611966E+01 +3900 DATA 0.800000000E+01, 0.207944154E+01 +3910 DATA 0.207943529E+01, 0.207944780E+01 +3920 DATA 0.536789000E+02, 0.398302000E+01 +3930 DATA 0.398301313E+01, 0.398302687E+01 +3940 DATA 0.482284000E+03, 0.617853315E+01 +3950 DATA 0.617852607E+01, 0.617854023E+01 +3960 DATA 0.962112000E+04, 0.917171596E+01 +3970 DATA 0.917170992E+01, 0.917172201E+01 +3980 DATA 0.863214000E+05, 0.113658328E+02 +3990 DATA 0.113657816E+02, 0.113658840E+02 +4000 DATA 0.777777000E+06, 0.135641951E+02 +4010 DATA 0.135641438E+02, 0.135642465E+02 +4020 DATA 0.987654000E+08, 0.184082579E+02 +4030 DATA 0.184082068E+02, 0.184083090E+02 +4040 DATA 0.898989000E+11, 0.252219515E+02 +4050 DATA 0.252219004E+02, 0.252220027E+02 +4060 DATA 0.797979000E+16, 0.366156885E+02 +4070 DATA 0.366156372E+02, 0.366157398E+02 +4080 DATA 0.696969000E+21, 0.479932726E+02 +4090 DATA 0.479932211E+02, 0.479933241E+02 +4100 DATA 0.595959000E+26, 0.593496290E+02 +4110 DATA 0.593495773E+02, 0.593496807E+02 +4120 DATA 0.494949000E+31, 0.706768373E+02 +4130 DATA 0.706767853E+02, 0.706768894E+02 +4140 DATA 0.393939000E+36, 0.819615041E+02 +4150 DATA 0.819614516E+02, 0.819615567E+02 +4160 DATA 0.987654000E+37, 0.851832256E+02 +4170 DATA 0.851831745E+02, 0.851832767E+02 +4180 DATA 0.987654000E+38, 0.874858107E+02 +4190 DATA 0.874857596E+02, 0.874858618E+02 +4200 DATA 0.100000000E+39, 0.874982335E+02 +4210 DATA 0.874981735E+02, 0.874982936E+02 +9000 DATA 999,0,0,0 +9400 END diff --git a/NBS2/P124.OUT b/NBS2/P124.OUT new file mode 100644 index 0000000..4dcc87a --- /dev/null +++ b/NBS2/P124.OUT @@ -0,0 +1,91 @@ +PROGRAM FILE 124: ACCURACY OF LOG FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 124.1: ACCURACY OF LOG FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +LOG FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + + 1.E-38 -87.4982 -87.4982 5.62427E-4 OK + 1.00001E-38 -87.4982 -87.4982 5.63259E-4 OK + 9.87654E-38 -85.2081 -85.2081 2.78584E-4 OK + 8.98989E-37 -82.9995 -82.9995 5.51097E-4 OK + 7.87878E-36 -80.8289 -80.8289 4.24228E-4 OK + 6.76767E-35 -78.6783 -78.6783 1.44822E-4 OK + 5.65656E-30 -67.3447 -67.3447 8.44219E-4 OK + 4.54545E-25 -56.0505 -56.0505 1.48864E-4 OK + 3.43434E-20 -44.8179 -44.8179 1.43287E-4 OK + 2.32323E-15 -33.6958 -33.6958 6.64629E-4 OK + 1.21212E-10 -22.8335 -22.8335 6.39683E-4 OK + 9.0909E-7 -13.9108 -13.9108 7.38399E-4 OK + 8.88888E-5 -9.32812 -9.32812 3.86123E-4 OK + 7.77777E-4 -7.15907 -7.15907 4.35049E-4 OK + 6.66666E-3 -5.01064 -5.01064 6.29786E-4 OK + 5.55555E-2 -2.89037 -2.89037 3.09087E-4 OK + .123456 -2.09187 -2.09187 1.29635E-4 OK + .298347 -1.2095 -1.2095 4.41117E-5 OK + .535353 -.624829 -.624829 1.76074E-4 OK + .893481 -.11263 -.11263 1.84115E-4 OK + .999 -1.0005E-3 -1.0005E-3 3.57013E-6 OK + .9995 -5.00125E-4 -5.00125E-4 3.17439E-7 OK + .9999 -1.00005E-4 -1.00005E-4 3.33222E-7 OK + .99995 -5.00013E-5 -5.00013E-5 4.16586E-8 OK + .99999 -1.00001E-5 -1.00001E-5 2.87813E-10 OK + .999995 -5.00001E-6 -5.00001E-6 7.44238E-11 OK + .999998 -.000002 -.000002 5.08436E-11 OK + .999999 -.000001 -.000001 2.32713E-11 OK + 1 0 0 0 OK - EXACT + 1.00001 9.99995E-6 9.99995E-6 3.98845E-11 OK + 1.00002 1.99998E-5 1.99998E-5 2.57565E-10 OK + 1.00005 4.99988E-5 4.99988E-5 4.15504E-9 OK + 1.0001 9.9995E-5 9.9995E-5 3.32997E-9 OK + 1.0003 2.99955E-4 2.99955E-4 2.05806E-10 OK + 1.001 9.995E-4 9.995E-4 8.34837E-9 OK + 1.003 2.99551E-3 2.99551E-3 2.01911E-8 OK + 1.01 9.95033E-3 9.95033E-3 3.19816E-7 OK + 1.03 2.95588E-2 2.95588E-2 4.25712E-6 OK + 1.11111 .10536 .10536 3.6069E-5 OK + 1.54321 .433865 .433865 5.3025E-5 OK + 2 .693147 .693147 8.00027E-5 OK + 2.32323 .842958 .842958 4.40988E-5 OK + 2.71828 .999999 .999999 5.40012E-5 OK + 4 1.38629 1.38629 1.49219E-4 OK + 7.14286 1.96611 1.96611 5.66315E-4 OK + 8 2.07944 2.07944 2.68559E-4 OK + 53.6789 3.98302 3.98302 9.46416E-5 OK + 482.284 6.17853 6.17853 3.03933E-4 OK + 9621.12 9.17172 9.17172 1.65329E-4 OK + 86321.4 11.3658 11.3658 3.61749E-4 OK + 777777 13.5642 13.5642 5.7805E-4 OK + 9.87654E+7 18.4083 18.4083 2.04744E-5 OK + 8.98989E+10 25.222 25.222 8.31506E-4 OK + 7.97979E+15 36.6157 36.6157 1.90318E-4 OK + 6.96969E+20 47.9933 47.9933 1.42469E-4 OK + 5.95959E+25 59.3496 59.3496 2.24677E-4 OK + 4.94949E+30 70.6768 70.6768 5.91565E-4 OK + 3.93939E+35 81.9615 81.9615 8.33115E-4 OK + 9.87654E+36 85.1832 85.1832 8.2562E-5 OK + 9.87654E+37 87.4858 87.4858 2.19665E-4 OK + 1.E+38 87.4982 87.4982 5.62427E-4 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 124 diff --git a/NBS2/P124.dif b/NBS2/P124.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P124.run b/NBS2/P124.run new file mode 100644 index 0000000..e8f1c91 --- /dev/null +++ b/NBS2/P124.run @@ -0,0 +1,91 @@ +PROGRAM FILE 124: ACCURACY OF LOG FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 124.1: ACCURACY OF LOG FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +LOG FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + + 1.E-38 -87.4982 -87.4982 5.62427E-4 OK + 1.00001E-38 -87.4982 -87.4982 5.63259E-4 OK + 9.87654E-38 -85.2081 -85.2081 2.78584E-4 OK + 8.98989E-37 -82.9995 -82.9995 5.51097E-4 OK + 7.87878E-36 -80.8289 -80.8289 4.24228E-4 OK + 6.76767E-35 -78.6783 -78.6783 1.44822E-4 OK + 5.65656E-30 -67.3447 -67.3447 8.44219E-4 OK + 4.54545E-25 -56.0505 -56.0505 1.48864E-4 OK + 3.43434E-20 -44.8179 -44.8179 1.43287E-4 OK + 2.32323E-15 -33.6958 -33.6958 6.64629E-4 OK + 1.21212E-10 -22.8335 -22.8335 6.39683E-4 OK + 9.0909E-7 -13.9108 -13.9108 7.38399E-4 OK + 8.88888E-5 -9.32812 -9.32812 3.86123E-4 OK + 7.77777E-4 -7.15907 -7.15907 4.35049E-4 OK + 6.66666E-3 -5.01064 -5.01064 6.29786E-4 OK + 5.55555E-2 -2.89037 -2.89037 3.09087E-4 OK + .123456 -2.09187 -2.09187 1.29635E-4 OK + .298347 -1.2095 -1.2095 4.41117E-5 OK + .535353 -.624829 -.624829 1.76074E-4 OK + .893481 -.11263 -.11263 1.84115E-4 OK + .999 -1.0005E-3 -1.0005E-3 3.57013E-6 OK + .9995 -5.00125E-4 -5.00125E-4 3.17439E-7 OK + .9999 -1.00005E-4 -1.00005E-4 3.33222E-7 OK + .99995 -5.00013E-5 -5.00013E-5 4.16586E-8 OK + .99999 -1.00001E-5 -1.00001E-5 2.87813E-10 OK + .999995 -5.00001E-6 -5.00001E-6 7.44238E-11 OK + .999998 -.000002 -.000002 5.08436E-11 OK + .999999 -.000001 -.000001 2.32713E-11 OK + 1 0 0 0 OK - EXACT + 1.00001 9.99995E-6 9.99995E-6 3.98845E-11 OK + 1.00002 1.99998E-5 1.99998E-5 2.57565E-10 OK + 1.00005 4.99988E-5 4.99988E-5 4.15504E-9 OK + 1.0001 9.9995E-5 9.9995E-5 3.32997E-9 OK + 1.0003 2.99955E-4 2.99955E-4 2.05806E-10 OK + 1.001 9.995E-4 9.995E-4 8.34837E-9 OK + 1.003 2.99551E-3 2.99551E-3 2.01911E-8 OK + 1.01 9.95033E-3 9.95033E-3 3.19816E-7 OK + 1.03 2.95588E-2 2.95588E-2 4.25712E-6 OK + 1.11111 .10536 .10536 3.6069E-5 OK + 1.54321 .433865 .433865 5.3025E-5 OK + 2 .693147 .693147 8.00027E-5 OK + 2.32323 .842958 .842958 4.40988E-5 OK + 2.71828 .999999 .999999 5.40012E-5 OK + 4 1.38629 1.38629 1.49219E-4 OK + 7.14286 1.96611 1.96611 5.66315E-4 OK + 8 2.07944 2.07944 2.68559E-4 OK + 53.6789 3.98302 3.98302 9.46416E-5 OK + 482.284 6.17853 6.17853 3.03933E-4 OK + 9621.12 9.17172 9.17172 1.65329E-4 OK + 86321.4 11.3658 11.3658 3.61749E-4 OK + 777777 13.5642 13.5642 5.7805E-4 OK + 9.87654E+7 18.4083 18.4083 2.04744E-5 OK + 8.98989E+10 25.222 25.222 8.31506E-4 OK + 7.97979E+15 36.6157 36.6157 1.90318E-4 OK + 6.96969E+20 47.9933 47.9933 1.42469E-4 OK + 5.95959E+25 59.3496 59.3496 2.24677E-4 OK + 4.94949E+30 70.6768 70.6768 5.91565E-4 OK + 3.93939E+35 81.9615 81.9615 8.33115E-4 OK + 9.87654E+36 85.1832 85.1832 8.2562E-5 OK + 9.87654E+37 87.4858 87.4858 2.19665E-4 OK + 1.E+38 87.4982 87.4982 5.62427E-4 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 124 diff --git a/NBS2/P125.80 b/NBS2/P125.80 new file mode 100644 index 0000000..1c192f4 --- /dev/null +++ b/NBS2/P125.80 @@ -0,0 +1,23 @@ +PROGRAM FILE 125: EXCEPTION - LOG OF ZERO ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 125.1: EXCEPTION - LOG OF ZERO ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A ZERO ARGUMENT +IS PASSED TO THE LOG FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + ARGUMENT. + + BEGIN TEST. + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P125.BAS b/NBS2/P125.BAS new file mode 100644 index 0000000..7878dc7 --- /dev/null +++ b/NBS2/P125.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 125: EXCEPTION - LOG OF ZERO ARGUMENT." +20 PRINT " ANSI STANDARD 8.5" +30 PRINT +40 PRINT "SECTION 125.1: EXCEPTION - LOG OF ZERO ARGUMENT." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A ZERO ARGUMENT" +90 PRINT "IS PASSED TO THE LOG FUNCTION." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO" +170 PRINT " ARGUMENT." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 PRINT "FATAL EXCEPTION SHOULD OCCUR NOW:" +220 PRINT +230 LET A=(0) +240 LET B=LOG(A) +255 PRINT "*** TEST FAILED ***" +257 PRINT +260 PRINT "ARGUMENT WAS SET TO 0; IT NOW EQUALS ";A +270 PRINT "RESULT OF LOG IS ";B +280 PRINT +330 PRINT +340 PRINT " END TEST" +350 PRINT +360 PRINT "END PROGRAM 125" +370 END diff --git a/NBS2/P125.OUT b/NBS2/P125.OUT new file mode 100644 index 0000000..0e9a17a --- /dev/null +++ b/NBS2/P125.OUT @@ -0,0 +1,23 @@ +PROGRAM FILE 125: EXCEPTION - LOG OF ZERO ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 125.1: EXCEPTION - LOG OF ZERO ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A ZERO ARGUMENT +IS PASSED TO THE LOG FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + ARGUMENT. + + BEGIN TEST. + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P125.dif b/NBS2/P125.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P125.run b/NBS2/P125.run new file mode 100644 index 0000000..1c192f4 --- /dev/null +++ b/NBS2/P125.run @@ -0,0 +1,23 @@ +PROGRAM FILE 125: EXCEPTION - LOG OF ZERO ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 125.1: EXCEPTION - LOG OF ZERO ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A ZERO ARGUMENT +IS PASSED TO THE LOG FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE ZERO + ARGUMENT. + + BEGIN TEST. + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P126.80 b/NBS2/P126.80 new file mode 100644 index 0000000..a67ff4b --- /dev/null +++ b/NBS2/P126.80 @@ -0,0 +1,23 @@ +PROGRAM FILE 126: EXCEPTION - LOG OF NEGATIVE ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 126.1: EXCEPTION - LOG OF NEGATIVE ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A NEGATIVE ARGUMENT +IS PASSED TO THE LOG FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE NEGATIVE + ARGUMENT. + + BEGIN TEST. + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P126.BAS b/NBS2/P126.BAS new file mode 100644 index 0000000..a5702a3 --- /dev/null +++ b/NBS2/P126.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 126: EXCEPTION - LOG OF NEGATIVE ARGUMENT." +20 PRINT " ANSI STANDARD 8.5" +30 PRINT +40 PRINT "SECTION 126.1: EXCEPTION - LOG OF NEGATIVE ARGUMENT." +60 PRINT +70 PRINT "THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR" +80 PRINT "RECOGNIZES A FATAL EXCEPTION WHEN A NEGATIVE ARGUMENT" +90 PRINT "IS PASSED TO THE LOG FUNCTION." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +140 PRINT " DISPLAYED, AND" +150 PRINT +160 PRINT " 2) THE PROGRAM MUST TERMINATE UPON USE OF THE NEGATIVE" +170 PRINT " ARGUMENT." +180 PRINT +190 PRINT " BEGIN TEST." +200 PRINT +210 PRINT "FATAL EXCEPTION SHOULD OCCUR NOW:" +220 PRINT +230 LET A=(-3) +240 LET B=LOG(A) +255 PRINT "*** TEST FAILED ***" +257 PRINT +260 PRINT "ARGUMENT WAS SET TO -3; IT NOW EQUALS ";A +270 PRINT "RESULT OF LOG IS ";B +280 PRINT +330 PRINT +340 PRINT " END TEST" +350 PRINT +360 PRINT "END PROGRAM 126" +370 END diff --git a/NBS2/P126.OUT b/NBS2/P126.OUT new file mode 100644 index 0000000..e20b4f5 --- /dev/null +++ b/NBS2/P126.OUT @@ -0,0 +1,23 @@ +PROGRAM FILE 126: EXCEPTION - LOG OF NEGATIVE ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 126.1: EXCEPTION - LOG OF NEGATIVE ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A NEGATIVE ARGUMENT +IS PASSED TO THE LOG FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE NEGATIVE + ARGUMENT. + + BEGIN TEST. + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P126.dif b/NBS2/P126.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P126.run b/NBS2/P126.run new file mode 100644 index 0000000..a67ff4b --- /dev/null +++ b/NBS2/P126.run @@ -0,0 +1,23 @@ +PROGRAM FILE 126: EXCEPTION - LOG OF NEGATIVE ARGUMENT. + ANSI STANDARD 8.5 + +SECTION 126.1: EXCEPTION - LOG OF NEGATIVE ARGUMENT. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES A FATAL EXCEPTION WHEN A NEGATIVE ARGUMENT +IS PASSED TO THE LOG FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) THE PROGRAM MUST TERMINATE UPON USE OF THE NEGATIVE + ARGUMENT. + + BEGIN TEST. + +FATAL EXCEPTION SHOULD OCCUR NOW: + + +ERROR in line 240: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P127.80 b/NBS2/P127.80 new file mode 100644 index 0000000..41fc3ee --- /dev/null +++ b/NBS2/P127.80 @@ -0,0 +1,106 @@ +PROGRAM FILE 127: ACCURACY OF SIN FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 127.1: ACCURACY OF SIN FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +SIN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-98765.4 -1.01563E-2 -1.01563E-2 2.212E-10 OK +-98764.4 .83594 .83594 1.69306E-9 OK +-94268.2 -1. -1. 7.90682E-8 OK +-9427.92 4.46577E-4 4.46577E-4 7.20589E-11 OK +-9425.92 -.909483 -.909483 5.6043E-8 OK +-9429.49 1. 1. 6.01004E-6 OK +-986.46 9.32272E-5 9.32272E-5 1.94546E-10 OK +-999 2.64608E-2 2.64608E-2 3.70753E-8 OK +-994.314 -1. -1. 3.67166E-4 OK +-87.9646 -5.69949E-6 -5.69949E-6 1.3635E-10 OK +-99 .999207 .999207 4.15736E-5 OK +-89.5354 -1 -1. 1.73611E-4 OK +-50 .262375 .262375 3.05238E-6 OK +-20 -.912945 -.912945 6.59354E-6 OK +-5.9 .373877 .373877 1.73671E-5 OK +-4.71239 1 1. 2.07508E-6 OK +-3.14159 -2.65359E-6 -2.65359E-6 2.90863E-10 OK +-2.3 -.745705 -.745705 2.46712E-5 OK +-1.5708 -1 -1. 2.69312E-5 OK +-1.2 -.932039 -.932039 7.94706E-6 OK +-1 -.841471 -.841471 3.25406E-5 OK +-.987654 -.834736 -.834736 2.4298E-4 OK +-.765432 -.692849 -.692849 9.01427E-5 OK +-9.87654E-2 -9.86049E-2 -9.86049E-2 2.10994E-4 OK +-7.65432E-2 -7.64685E-2 -7.64685E-2 1.6558E-4 OK +-9.75319E-3 -9.75304E-3 -9.75304E-3 1.66521E-4 OK +-3.45678E-3 -3.45677E-3 -3.45677E-3 2.90717E-4 OK +-1.00001E-3 -1.00001E-3 -1.00001E-3 2.60975E-4 OK +-.001 -.001 -.001 2.61373E-5 OK +-9.99999E-4 -9.99999E-4 -9.99999E-4 2.22487E-4 OK +-9.87654E-5 -9.87654E-5 -9.87654E-5 2.62782E-4 OK +-9.17359E-6 -9.17359E-6 -9.17359E-6 8.57499E-6 OK +-9.E-7 -9.E-7 -9.E-7 8.10058E-8 OK +-9.E-10 -9.E-10 -9.E-10 0 OK - EXACT +-9.E-20 -9.E-20 -9.E-20 0 OK - EXACT +-9.E-30 -9.E-30 -9.E-30 0 OK - EXACT +-9.E-38 -9.E-38 -9.E-38 0 OK - EXACT + 0 0 0 RANGE ZERO OK - EXACT + 2.E-38 2.E-38 2.E-38 0 OK - EXACT + 9.E-30 9.E-30 9.E-30 0 OK - EXACT + 9.E-20 9.E-20 9.E-20 0 OK - EXACT + 9.E-10 9.E-10 9.E-10 0 OK - EXACT + 9.E-7 9.E-7 9.E-7 8.10058E-8 OK + 9.17359E-6 9.17359E-6 9.17359E-6 8.57499E-6 OK + 9.87654E-5 9.87654E-5 9.87654E-5 2.62782E-4 OK + 9.99999E-4 9.99999E-4 9.99999E-4 2.22487E-4 OK + .001 .001 .001 2.61373E-5 OK + 1.00001E-3 1.00001E-3 1.00001E-3 2.60975E-4 OK + 3.45678E-3 3.45677E-3 3.45677E-3 2.90717E-4 OK + 9.75319E-3 9.75304E-3 9.75304E-3 1.66521E-4 OK + 7.65432E-2 7.64685E-2 7.64685E-2 1.6558E-4 OK + 9.87654E-2 9.86049E-2 9.86049E-2 2.10994E-4 OK + .765432 .692849 .692849 9.01427E-5 OK + .987654 .834736 .834736 2.4298E-4 OK + 1 .841471 .841471 5.07317E-11 OK + 1.2 .932039 .932039 7.94706E-6 OK + 1.5708 1 1. 2.69312E-5 OK + 2.3 .745705 .745705 2.46712E-5 OK + 3.14159 2.65359E-6 2.65359E-6 2.90862E-10 OK + 3.9 -.687766 -.687766 2.3708E-5 OK + 4.71239 -1 -1. 2.07508E-6 OK + 5.9 -.373877 -.373877 1.73671E-5 OK + 20 .912945 .912945 6.59354E-6 OK + 50 -.262375 -.262375 3.05238E-6 OK + 89.5354 1 1. 1.73611E-4 OK + 99 -.999207 -.999207 4.15736E-5 OK + 87.9646 5.69949E-6 5.69949E-6 1.3635E-10 OK + 994.314 1. 1. 3.67166E-4 OK + 999.1 7.34699E-2 7.34699E-2 1.62157E-8 OK + 986.46 -9.32272E-5 -9.32272E-5 1.94546E-10 OK + 9429.49 -1. -1. 6.01004E-6 OK + 9425.92 .909483 .909483 5.6043E-8 OK + 9427.92 -4.46577E-4 -4.46577E-4 7.20589E-11 OK + 94268.2 1. 1. 7.90682E-8 OK + 98764.4 -.83594 -.83594 1.69306E-9 OK + 98765.4 1.01563E-2 1.01563E-2 2.212E-10 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 127 diff --git a/NBS2/P127.BAS b/NBS2/P127.BAS new file mode 100644 index 0000000..c1fdf4c --- /dev/null +++ b/NBS2/P127.BAS @@ -0,0 +1,208 @@ +10 PRINT "PROGRAM FILE 127: ACCURACY OF SIN FUNCTION." +20 PRINT " ANSI STANDARD 7.6, 8.4" +30 PRINT +40 PRINT "SECTION 127.1: ACCURACY OF SIN FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE" +70 PRINT "SIN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN," +80 PRINT "ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY" +90 PRINT "THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT" +100 PRINT "PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN" +110 PRINT "'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE" +120 PRINT "IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE;" +130 PRINT "THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY" +140 PRINT "HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES" +150 PRINT "AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3." +160 PRINT +170 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +180 PRINT "DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 PRINT "ARGUMENT","TRUE","COMPUTED","ERROR","OUTCOME" +230 PRINT " ","VALUE","VALUE","MEASURE" +240 PRINT +250 LET F=0 +260 READ A,T,L,H +270 IF A=999 THEN 2000 +280 LET C=SIN(A) +290 IF C=T THEN 333 +300 IF CH THEN 444 +320 LET O$=" OK " +330 GOTO 500 +333 LET O$=" OK - EXACT" +340 GOTO 500 +444 LET O$="FAIL" +445 LET F=F+1 +450 GOTO 500 +500 LET R=H-L +510 IF R=0 THEN 700 +520 LET E=ABS((C-T)/R) +525 LET E=E+E +530 PRINT A,T,C,E,O$ +540 GOTO 260 +700 PRINT A,T,C,"RANGE ZERO",O$ +710 GOTO 260 +2000 PRINT +2010 IF F=0 THEN 2100 +2020 PRINT "*** INFORMATIVE TEST FAILED IN ";F;" CASE(S) ***" +2030 GOTO 2110 +2100 PRINT "*** INFORMATIVE TEST PASSED ***" +2110 PRINT +2120 PRINT " END TEST" +2130 PRINT +2140 PRINT "END PROGRAM 127" +3000 DATA -0.987654000E+05,-0.101562695E-01 +3010 DATA -0.109934299E+00, 0.897227872E-01 +3020 DATA -0.987644000E+05, 0.835940129E+00 +3030 DATA 0.776972770E+00, 0.886555051E+00 +3040 DATA -0.942682000E+05,-0.999999999E+00 +3050 DATA -1.000000000E+00,-0.994999665E+00 +3060 DATA -0.942792000E+04, 0.446577015E-03 +3070 DATA -0.955328265E-02, 0.104464371E-01 +3080 DATA -0.942592000E+04,-0.909483178E+00 +3090 DATA -0.913595542E+00,-0.905279866E+00 +3100 DATA -0.942949000E+04, 0.999999939E+00 +3110 DATA 0.999945941E+00, 1.000000000E+00 +3120 DATA -0.986460000E+03, 0.932271951E-04 +3130 DATA -0.906773181E-03, 0.109323198E-02 +3140 DATA -0.999000000E+03, 0.264607527E-01 +3150 DATA 0.254610398E-01, 0.274604392E-01 +3160 DATA -0.994314000E+03,-0.999999997E+00 +3170 DATA -1.000000000E+00,-0.999998922E+00 +3180 DATA -0.879646000E+02,-0.569948578E-05 +3190 DATA -0.105699986E-03, 0.943005641E-04 +3200 DATA -0.990000000E+02, 0.999206834E+00 +3210 DATA 0.999202347E+00, 0.999211312E+00 +3220 DATA -0.895354000E+02,-1.000000000E+00 +3230 DATA -1.000000000E+00,-0.999999494E+00 +3240 DATA -0.500000000E+02, 0.262374854E+00 +3250 DATA 0.262277855E+00, 0.262471849E+00 +3260 DATA -0.200000000E+02,-0.912945251E+00 +3270 DATA -0.912986555E+00,-0.912903937E+00 +3280 DATA -0.590000000E+01, 0.373876665E+00 +3290 DATA 0.373866890E+00, 0.373886440E+00 +3300 DATA -0.471239000E+01, 1.000000000E+00 +3310 DATA 0.999999499E+00, 1.000000000E+00 +3320 DATA -0.314159000E+01,-0.265358979E-05 +3330 DATA -0.126536398E-04, 0.734641421E-05 +3340 DATA -0.230000000E+01,-0.745705212E+00 +3350 DATA -0.745712375E+00,-0.745698049E+00 +3360 DATA -0.157080000E+01,-1.000000000E+00 +3370 DATA -1.000000000E+00,-0.999999499E+00 +3380 DATA -0.120000000E+01,-0.932039086E+00 +3390 DATA -0.932043210E+00,-0.932034962E+00 +3400 DATA -0.100000000E+01,-0.841470985E+00 +3410 DATA -0.841476888E+00,-0.841465081E+00 +3420 DATA -0.987654000E+00,-0.834736453E+00 +3430 DATA -0.834737504E+00,-0.834735402E+00 +3440 DATA -0.765432000E+00,-0.692848571E+00 +3450 DATA -0.692849793E+00,-0.692847350E+00 +3460 DATA -0.987654000E-01,-0.986049087E-01 +3470 DATA -0.986050583E-01,-0.986047592E-01 +3480 DATA -0.765432000E-01,-0.764684792E-01 +3490 DATA -0.764686290E-01,-0.764683295E-01 +3500 DATA -0.975319000E-02,-0.975303537E-02 +3510 DATA -0.975305038E-02,-0.975302037E-02 +3520 DATA -0.345678000E-02,-0.345677312E-02 +3530 DATA -0.345678812E-02,-0.345675811E-02 +3540 DATA -0.100001000E-02,-0.100000983E-02 +3550 DATA -0.100002484E-02,-0.999999333E-03 +3560 DATA -0.100000000E-02,-0.999999833E-03 +3570 DATA -0.100001484E-02,-0.999989333E-03 +3580 DATA -0.999999000E-03,-0.999998833E-03 +3590 DATA -1.000000334E-03,-0.999997333E-03 +3600 DATA -0.987654000E-04,-0.987653998E-04 +3610 DATA -0.987655499E-04,-0.987652498E-04 +3620 DATA -0.917359000E-05,-0.917359000E-05 +3630 DATA -0.917360500E-05,-0.917357499E-05 +3640 DATA -0.900000000E-06,-0.900000000E-06 +3650 DATA -0.900001500E-06,-0.899998499E-06 +3660 DATA -0.900000000E-09,-0.900000000E-09 +3670 DATA -0.900001500E-09,-0.899998500E-09 +3680 DATA -0.900000000E-19,-0.900000000E-19 +3690 DATA -0.900001500E-19,-0.899998500E-19 +3700 DATA -0.900000000E-29,-0.900000000E-29 +3710 DATA -0.900001500E-29,-0.899998500E-29 +3720 DATA -0.900000000E-37,-0.900000000E-37 +3730 DATA -0.900001500E-37,-0.899998500E-37 +3740 DATA 0,0,0,0 +3760 DATA 0.200000000E-37, 0.200000000E-37 +3770 DATA 0.199998500E-37, 0.200001500E-37 +3780 DATA 0.900000000E-29, 0.900000000E-29 +3790 DATA 0.899998500E-29, 0.900001500E-29 +3800 DATA 0.900000000E-19, 0.900000000E-19 +3810 DATA 0.899998500E-19, 0.900001500E-19 +3820 DATA 0.900000000E-09, 0.900000000E-09 +3830 DATA 0.899998500E-09, 0.900001500E-09 +3840 DATA 0.900000000E-06, 0.900000000E-06 +3850 DATA 0.899998499E-06, 0.900001500E-06 +3860 DATA 0.917359000E-05, 0.917359000E-05 +3870 DATA 0.917357499E-05, 0.917360500E-05 +3880 DATA 0.987654000E-04, 0.987653998E-04 +3890 DATA 0.987652498E-04, 0.987655499E-04 +3900 DATA 0.999999000E-03, 0.999998833E-03 +3910 DATA 0.999997333E-03, 1.000000334E-03 +3920 DATA 0.100000000E-02, 0.999999833E-03 +3930 DATA 0.999989333E-03, 0.100001484E-02 +3940 DATA 0.100001000E-02, 0.100000983E-02 +3950 DATA 0.999999333E-03, 0.100002484E-02 +3960 DATA 0.345678000E-02, 0.345677312E-02 +3970 DATA 0.345675811E-02, 0.345678812E-02 +3980 DATA 0.975319000E-02, 0.975303537E-02 +3990 DATA 0.975302037E-02, 0.975305038E-02 +4000 DATA 0.765432000E-01, 0.764684792E-01 +4010 DATA 0.764683295E-01, 0.764686290E-01 +4020 DATA 0.987654000E-01, 0.986049087E-01 +4030 DATA 0.986047592E-01, 0.986050583E-01 +4040 DATA 0.765432000E+00, 0.692848571E+00 +4050 DATA 0.692847350E+00, 0.692849793E+00 +4060 DATA 0.987654000E+00, 0.834736453E+00 +4070 DATA 0.834735402E+00, 0.834737504E+00 +4080 DATA 0.100000000E+01, 0.841470985E+00 +4090 DATA 0.841465081E+00, 08.41476888E+00 +4100 DATA 0.120000000E+01, 0.932039086E+00 +4110 DATA 0.932034962E+00, 0.932043210E+00 +4120 DATA 0.157080000E+01, 1.000000000E+00 +4130 DATA 0.999999499E+00, 1.000000000E+00 +4140 DATA 0.230000000E+01, 0.745705212E+00 +4150 DATA 0.745698049E+00, 0.745712375E+00 +4160 DATA 0.314159000E+01, 0.265358979E-05 +4170 DATA -0.734651521E-05, 0.126536398E-04 +4180 DATA 0.390000000E+01,-0.687766159E+00 +4190 DATA -0.687773919E+00,-0.687758399E+00 +4200 DATA 0.471239000E+01,-1.000000000E+00 +4210 DATA -1.000000000E+00,-0.999999499E+00 +4220 DATA 0.590000000E+01,-0.373876665E+00 +4230 DATA -0.373886440E+00,-0.373866890E+00 +4240 DATA 0.200000000E+02, 0.912945251E+00 +4250 DATA 0.912903937E+00, 0.912986555E+00 +4260 DATA 0.500000000E+02,-0.262374854E+00 +4270 DATA -0.262471849E+00,-0.262277855E+00 +4280 DATA 0.895354000E+02, 1.000000000E+00 +4290 DATA 0.999999494E+00, 1.000000000E+00 +4300 DATA 0.990000000E+02,-0.999206834E+00 +4310 DATA -0.999211312E+00,-0.999202347E+00 +4320 DATA 0.879646000E+02, 0.569948578E-05 +4330 DATA -0.943005641E-04, 0.105699986E-03 +4360 DATA 0.994314000E+03, 0.999999997E+00 +4370 DATA 0.999998922E+00, 1.000000000E+00 +4380 DATA 0.999100000E+03, 0.734699011E-01 +4390 DATA 0.724725170E-01, 0.744672117E-01 +4400 DATA 0.986460000E+03,-0.932271951E-04 +4410 DATA -0.109323198E-02, 0.906773181E-03 +4420 DATA 0.942949000E+04,-0.999999939E+00 +4430 DATA -1.000000000E+00,-0.999945941E+00 +4440 DATA 0.942592000E+04, 0.909483178E+00 +4450 DATA 0.905279866E+00, 0.913595542E+00 +4460 DATA 0.942792000E+04,-0.446577015E-03 +4470 DATA -0.104464371E-01, 0.955328265E-02 +4480 DATA 0.942682000E+05, 0.999999999E+00 +4490 DATA 0.994999665E+00, 1.000000000E+00 +4500 DATA 0.987644000E+05,-0.835940129E+00 +4510 DATA -0.886555051E+00,-0.776972770E+00 +4520 DATA 0.987654000E+05, 0.101562695E-01 +4530 DATA -0.897227872E-01, 0.109934299E+00 +9000 DATA 999,0,0,0 +9400 END diff --git a/NBS2/P127.OUT b/NBS2/P127.OUT new file mode 100644 index 0000000..bbd4c6e --- /dev/null +++ b/NBS2/P127.OUT @@ -0,0 +1,106 @@ +PROGRAM FILE 127: ACCURACY OF SIN FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 127.1: ACCURACY OF SIN FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +SIN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-98765.4 -1.01563E-2 -1.01563E-2 2.212E-10 OK +-98764.4 .83594 .83594 1.69306E-9 OK +-94268.2 -1. -1. 7.90682E-8 OK +-9427.92 4.46577E-4 4.46577E-4 7.20589E-11 OK +-9425.92 -.909483 -.909483 5.6043E-8 OK +-9429.49 1. 1. 6.01004E-6 OK +-986.46 9.32272E-5 9.32272E-5 1.94546E-10 OK +-999 2.64608E-2 2.64608E-2 3.70753E-8 OK +-994.314 -1. -1. 3.67166E-4 OK +-87.9646 -5.69949E-6 -5.69949E-6 1.3635E-10 OK +-99 .999207 .999207 4.15736E-5 OK +-89.5354 -1 -1. 1.73611E-4 OK +-50 .262375 .262375 3.05238E-6 OK +-20 -.912945 -.912945 6.59354E-6 OK +-5.9 .373877 .373877 1.73671E-5 OK +-4.71239 1 1. 2.07508E-6 OK +-3.14159 -2.65359E-6 -2.65359E-6 2.90863E-10 OK +-2.3 -.745705 -.745705 2.46712E-5 OK +-1.5708 -1 -1. 2.69312E-5 OK +-1.2 -.932039 -.932039 7.94706E-6 OK +-1 -.841471 -.841471 3.25406E-5 OK +-.987654 -.834736 -.834736 2.4298E-4 OK +-.765432 -.692849 -.692849 9.01427E-5 OK +-9.87654E-2 -9.86049E-2 -9.86049E-2 2.10994E-4 OK +-7.65432E-2 -7.64685E-2 -7.64685E-2 1.6558E-4 OK +-9.75319E-3 -9.75304E-3 -9.75304E-3 1.66521E-4 OK +-3.45678E-3 -3.45677E-3 -3.45677E-3 2.90717E-4 OK +-1.00001E-3 -1.00001E-3 -1.00001E-3 2.60975E-4 OK +-.001 -.001 -.001 2.61373E-5 OK +-9.99999E-4 -9.99999E-4 -9.99999E-4 2.22487E-4 OK +-9.87654E-5 -9.87654E-5 -9.87654E-5 2.62782E-4 OK +-9.17359E-6 -9.17359E-6 -9.17359E-6 8.57499E-6 OK +-9.E-7 -9.E-7 -9.E-7 8.10058E-8 OK +-9.E-10 -9.E-10 -9.E-10 0 OK - EXACT +-9.E-20 -9.E-20 -9.E-20 0 OK - EXACT +-9.E-30 -9.E-30 -9.E-30 0 OK - EXACT +-9.E-38 -9.E-38 -9.E-38 0 OK - EXACT + 0 0 0 RANGE ZERO OK - EXACT + 2.E-38 2.E-38 2.E-38 0 OK - EXACT + 9.E-30 9.E-30 9.E-30 0 OK - EXACT + 9.E-20 9.E-20 9.E-20 0 OK - EXACT + 9.E-10 9.E-10 9.E-10 0 OK - EXACT + 9.E-7 9.E-7 9.E-7 8.10058E-8 OK + 9.17359E-6 9.17359E-6 9.17359E-6 8.57499E-6 OK + 9.87654E-5 9.87654E-5 9.87654E-5 2.62782E-4 OK + 9.99999E-4 9.99999E-4 9.99999E-4 2.22487E-4 OK + .001 .001 .001 2.61373E-5 OK + 1.00001E-3 1.00001E-3 1.00001E-3 2.60975E-4 OK + 3.45678E-3 3.45677E-3 3.45677E-3 2.90717E-4 OK + 9.75319E-3 9.75304E-3 9.75304E-3 1.66521E-4 OK + 7.65432E-2 7.64685E-2 7.64685E-2 1.6558E-4 OK + 9.87654E-2 9.86049E-2 9.86049E-2 2.10994E-4 OK + .765432 .692849 .692849 9.01427E-5 OK + .987654 .834736 .834736 2.4298E-4 OK + 1 .841471 .841471 5.07317E-11 OK + 1.2 .932039 .932039 7.94706E-6 OK + 1.5708 1 1. 2.69312E-5 OK + 2.3 .745705 .745705 2.46712E-5 OK + 3.14159 2.65359E-6 2.65359E-6 2.90862E-10 OK + 3.9 -.687766 -.687766 2.3708E-5 OK + 4.71239 -1 -1. 2.07508E-6 OK + 5.9 -.373877 -.373877 1.73671E-5 OK + 20 .912945 .912945 6.59354E-6 OK + 50 -.262375 -.262375 3.05238E-6 OK + 89.5354 1 1. 1.73611E-4 OK + 99 -.999207 -.999207 4.15736E-5 OK + 87.9646 5.69949E-6 5.69949E-6 1.3635E-10 OK + 994.314 1. 1. 3.67166E-4 OK + 999.1 7.34699E-2 7.34699E-2 1.62157E-8 OK + 986.46 -9.32272E-5 -9.32272E-5 1.94546E-10 OK + 9429.49 -1. -1. 6.01004E-6 OK + 9425.92 .909483 .909483 5.6043E-8 OK + 9427.92 -4.46577E-4 -4.46577E-4 7.20589E-11 OK + 94268.2 1. 1. 7.90682E-8 OK + 98764.4 -.83594 -.83594 1.69306E-9 OK + 98765.4 1.01563E-2 1.01563E-2 2.212E-10 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 127 diff --git a/NBS2/P127.dif b/NBS2/P127.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P127.run b/NBS2/P127.run new file mode 100644 index 0000000..41fc3ee --- /dev/null +++ b/NBS2/P127.run @@ -0,0 +1,106 @@ +PROGRAM FILE 127: ACCURACY OF SIN FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 127.1: ACCURACY OF SIN FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +SIN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-98765.4 -1.01563E-2 -1.01563E-2 2.212E-10 OK +-98764.4 .83594 .83594 1.69306E-9 OK +-94268.2 -1. -1. 7.90682E-8 OK +-9427.92 4.46577E-4 4.46577E-4 7.20589E-11 OK +-9425.92 -.909483 -.909483 5.6043E-8 OK +-9429.49 1. 1. 6.01004E-6 OK +-986.46 9.32272E-5 9.32272E-5 1.94546E-10 OK +-999 2.64608E-2 2.64608E-2 3.70753E-8 OK +-994.314 -1. -1. 3.67166E-4 OK +-87.9646 -5.69949E-6 -5.69949E-6 1.3635E-10 OK +-99 .999207 .999207 4.15736E-5 OK +-89.5354 -1 -1. 1.73611E-4 OK +-50 .262375 .262375 3.05238E-6 OK +-20 -.912945 -.912945 6.59354E-6 OK +-5.9 .373877 .373877 1.73671E-5 OK +-4.71239 1 1. 2.07508E-6 OK +-3.14159 -2.65359E-6 -2.65359E-6 2.90863E-10 OK +-2.3 -.745705 -.745705 2.46712E-5 OK +-1.5708 -1 -1. 2.69312E-5 OK +-1.2 -.932039 -.932039 7.94706E-6 OK +-1 -.841471 -.841471 3.25406E-5 OK +-.987654 -.834736 -.834736 2.4298E-4 OK +-.765432 -.692849 -.692849 9.01427E-5 OK +-9.87654E-2 -9.86049E-2 -9.86049E-2 2.10994E-4 OK +-7.65432E-2 -7.64685E-2 -7.64685E-2 1.6558E-4 OK +-9.75319E-3 -9.75304E-3 -9.75304E-3 1.66521E-4 OK +-3.45678E-3 -3.45677E-3 -3.45677E-3 2.90717E-4 OK +-1.00001E-3 -1.00001E-3 -1.00001E-3 2.60975E-4 OK +-.001 -.001 -.001 2.61373E-5 OK +-9.99999E-4 -9.99999E-4 -9.99999E-4 2.22487E-4 OK +-9.87654E-5 -9.87654E-5 -9.87654E-5 2.62782E-4 OK +-9.17359E-6 -9.17359E-6 -9.17359E-6 8.57499E-6 OK +-9.E-7 -9.E-7 -9.E-7 8.10058E-8 OK +-9.E-10 -9.E-10 -9.E-10 0 OK - EXACT +-9.E-20 -9.E-20 -9.E-20 0 OK - EXACT +-9.E-30 -9.E-30 -9.E-30 0 OK - EXACT +-9.E-38 -9.E-38 -9.E-38 0 OK - EXACT + 0 0 0 RANGE ZERO OK - EXACT + 2.E-38 2.E-38 2.E-38 0 OK - EXACT + 9.E-30 9.E-30 9.E-30 0 OK - EXACT + 9.E-20 9.E-20 9.E-20 0 OK - EXACT + 9.E-10 9.E-10 9.E-10 0 OK - EXACT + 9.E-7 9.E-7 9.E-7 8.10058E-8 OK + 9.17359E-6 9.17359E-6 9.17359E-6 8.57499E-6 OK + 9.87654E-5 9.87654E-5 9.87654E-5 2.62782E-4 OK + 9.99999E-4 9.99999E-4 9.99999E-4 2.22487E-4 OK + .001 .001 .001 2.61373E-5 OK + 1.00001E-3 1.00001E-3 1.00001E-3 2.60975E-4 OK + 3.45678E-3 3.45677E-3 3.45677E-3 2.90717E-4 OK + 9.75319E-3 9.75304E-3 9.75304E-3 1.66521E-4 OK + 7.65432E-2 7.64685E-2 7.64685E-2 1.6558E-4 OK + 9.87654E-2 9.86049E-2 9.86049E-2 2.10994E-4 OK + .765432 .692849 .692849 9.01427E-5 OK + .987654 .834736 .834736 2.4298E-4 OK + 1 .841471 .841471 5.07317E-11 OK + 1.2 .932039 .932039 7.94706E-6 OK + 1.5708 1 1. 2.69312E-5 OK + 2.3 .745705 .745705 2.46712E-5 OK + 3.14159 2.65359E-6 2.65359E-6 2.90862E-10 OK + 3.9 -.687766 -.687766 2.3708E-5 OK + 4.71239 -1 -1. 2.07508E-6 OK + 5.9 -.373877 -.373877 1.73671E-5 OK + 20 .912945 .912945 6.59354E-6 OK + 50 -.262375 -.262375 3.05238E-6 OK + 89.5354 1 1. 1.73611E-4 OK + 99 -.999207 -.999207 4.15736E-5 OK + 87.9646 5.69949E-6 5.69949E-6 1.3635E-10 OK + 994.314 1. 1. 3.67166E-4 OK + 999.1 7.34699E-2 7.34699E-2 1.62157E-8 OK + 986.46 -9.32272E-5 -9.32272E-5 1.94546E-10 OK + 9429.49 -1. -1. 6.01004E-6 OK + 9425.92 .909483 .909483 5.6043E-8 OK + 9427.92 -4.46577E-4 -4.46577E-4 7.20589E-11 OK + 94268.2 1. 1. 7.90682E-8 OK + 98764.4 -.83594 -.83594 1.69306E-9 OK + 98765.4 1.01563E-2 1.01563E-2 2.212E-10 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 127 diff --git a/NBS2/P128.80 b/NBS2/P128.80 new file mode 100644 index 0000000..915dc20 --- /dev/null +++ b/NBS2/P128.80 @@ -0,0 +1,97 @@ +PROGRAM FILE 128: ACCURACY OF TAN FUNCTION. + ANSI STANDARD 7.6, 8.4 + +SECTION 128.1: ACCURACY OF TAN FUNCTION. + +THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE +TAN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN, +ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY +THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT +PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN +'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE +IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE; +THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY +HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES +AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3. + +THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD +DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS. + + BEGIN TEST + +ARGUMENT TRUE COMPUTED ERROR OUTCOME + VALUE VALUE MEASURE + +-98778.9 -1.38017 -1.38017 2.49807E-9 OK +-9876.54 .724992 .724992 7.58307E-9 OK +-987.654 -2.52646 -2.52646 2.62572E-7 OK +-98.7654 -5.06921 -5.06921 1.73817E-6 OK +-9.87654 -.48523 -.48523 3.70988E-5 OK +-5.55555 .890668 .890668 2.14631E-5 OK +-4.71239 980762. 980762. RANGE SPLIT OK +-4.56789 -6.87223 -6.87223 1.97278E-6 OK +-4 -1.15782 -1.15782 8.27025E-5 OK +-3.14159 2.65359E-6 2.65359E-6 2.91798E-10 OK +-2.87654 .271439 .271439 2.81063E-5 OK +-2 2.18504 2.18504 5.19805E-5 OK +-1.61616 22.0289 22.0289 5.24035E-6 OK +-1.57081 73135.7 73135.7 3.48614E-10 OK +-1.5708 272242. 272242. RANGE SPLIT OK +-1.57078 -61249. -61249. 5.24726E-10 OK +-1.23456 -2.86117 -2.86117 1.64589E-5 OK +-1 -1.55741 -1.55741 1.18566E-4 OK +-.87654 -1.20118 -1.20118 3.85899E-4 OK +-.232323 -.236595 -.236595 2.36288E-4 OK +-7.67676E-2 -7.69188E-2 -7.69188E-2 2.48291E-4 OK +-2.34567E-2 -.023461 -.023461 RANGE SPLIT OK +-1.23456E-2 -1.23462E-2 -1.23462E-2 3.22076E-4 OK +-9.87654E-3 -9.87686E-3 -9.87686E-3 1.10671E-4 OK +-3.45678E-3 -3.45679E-3 -3.45679E-3 8.00762E-5 OK +-9.87654E-4 -9.87654E-4 -9.87654E-4 9.2806E-5 OK +-3.45678E-4 -3.45678E-4 -3.45678E-4 1.54126E-4 OK +-.00009 -.00009 -.00009 2.86571E-4 OK +-9.E-7 -9.E-7 -9.E-7 1.61941E-7 OK +-9.E-10 -9.E-10 -9.E-10 0 OK - EXACT +-9.E-20 -9.E-20 -9.E-20 0 OK - EXACT +-9.E-30 -9.E-30 -9.E-30 0 OK - EXACT +-9.E-38 -9.E-38 -9.E-38 0 OK - EXACT + 0 0 0 RANGE ZERO OK - EXACT + 9.E-38 9.E-38 9.E-38 0 OK - EXACT + 9.E-30 9.E-30 9.E-30 0 OK - EXACT + 9.E-20 9.E-20 9.E-20 0 OK - EXACT + 9.E-10 9.E-10 9.E-10 0 OK - EXACT + 9.E-7 9.E-7 9.E-7 1.61941E-7 OK + .00009 .00009 .00009 2.86571E-4 OK + 3.45678E-4 3.45678E-4 3.45678E-4 1.54126E-4 OK + 9.87654E-4 9.87654E-4 9.87654E-4 9.2806E-5 OK + 3.45678E-3 3.45679E-3 3.45679E-3 8.00762E-5 OK + 9.87654E-3 9.87686E-3 9.87686E-3 1.10671E-4 OK + 1.23456E-2 1.23462E-2 1.23462E-2 3.22076E-4 OK + 2.34567E-2 .023456 .023461 33.3114 OK + 7.67676E-2 7.69188E-2 7.69188E-2 2.48291E-4 OK + .232323 .236595 .236595 2.36288E-4 OK + .876543 1.20118 1.20118 5.87061E-4 OK + 1 1.55741 1.55741 1.18566E-4 OK + 1.23456 2.86117 2.86117 1.64589E-5 OK + 1.57078 61249. 61249. 5.24726E-10 OK + 1.5708 -272242. -272242. RANGE SPLIT OK + 1.57081 -73135.7 -73135.7 3.48614E-10 OK + 1.61616 -42241.8 -22.0289 8.59392E+6 OK + 2 -2.18504 -2.18504 5.19805E-5 OK + 2.87654 -.271439 -.271439 2.81063E-5 OK + 3.14159 -2.65359E-6 -2.65359E-6 2.91798E-10 OK + 4 1.15782 1.15782 8.27025E-5 OK + 4.56789 6.87223 6.87223 1.97278E-6 OK + 4.71239 -980762. -980762. RANGE SPLIT OK + 5.55555 -.890668 -.890668 2.14619E-5 OK + 9.87654 .48523 .48523 3.70988E-5 OK + 98.7654 5.06921 5.06921 1.73817E-6 OK + 987.654 2.53387 2.52646 1.00252 OK + 9876.54 -.724992 -.724992 7.58307E-9 OK + 98778.9 1.38017 1.38017 2.49807E-9 OK + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 128 diff --git a/NBS2/P128.BAS b/NBS2/P128.BAS new file mode 100644 index 0000000..b60f09e --- /dev/null +++ b/NBS2/P128.BAS @@ -0,0 +1,203 @@ +10 PRINT "PROGRAM FILE 128: ACCURACY OF TAN FUNCTION." +20 PRINT " ANSI STANDARD 7.6, 8.4" +30 PRINT +40 PRINT "SECTION 128.1: ACCURACY OF TAN FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS VALUES RETURNED BY INVOCATIONS OF THE" +70 PRINT "TAN FUNCTION FOR ACCURACY. THE INVOCATION MUST RETURN," +80 PRINT "ACCURATE TO SIX DIGITS, SOME VALUE ACTUALLY TAKEN ON BY" +90 PRINT "THE FUNCTION WITHIN A DOMAIN BOUNDED BY THE ACTUAL ARGUMENT" +100 PRINT "PLUS OR MINUS ONE IN THE SIXTH DIGIT. ALSO, AN" +110 PRINT "'ERROR MEASURE' IS COMPUTED AND REPORTED. THIS MEASURE" +120 PRINT "IS JUST 2 * THE ABSOLUTE ERROR OVER THE SIZE OF THE RANGE;" +130 PRINT "THUS, A VALUE JUST BARELY PASSING OR FAILING WILL USUALLY" +140 PRINT "HAVE A MEASURE OF ABOUT 1. A VALUE 3 TIMES" +150 PRINT "AS INACCURATE AS EXPECTED WILL HAVE A MEASURE OF 3." +160 PRINT +170 PRINT "THIS TEST IS INFORMATIVE ONLY, SINCE THE ANSI STANDARD" +180 PRINT "DOES NOT MANDATE ANY ACCURACY FOR SUPPLIED-FUNCTIONS." +190 PRINT +200 PRINT " BEGIN TEST" +210 PRINT +220 PRINT "ARGUMENT","TRUE","COMPUTED","ERROR","OUTCOME" +230 PRINT " ","VALUE","VALUE","MEASURE" +240 PRINT +250 LET F=0 +260 READ A,T,L,H +270 IF A=999 THEN 2000 +280 LET C=TAN(A) +285 IF L>H THEN 1000 +290 IF C=T THEN 333 +300 IF CH THEN 444 +320 LET O$=" OK " +330 GOTO 500 +333 LET O$=" OK - EXACT" +340 GOTO 500 +444 LET O$="FAIL" +445 LET F=F+1 +450 GOTO 500 +500 LET R=H-L +510 IF R=0 THEN 700 +520 LET E=ABS((C-T)/R) +525 LET E=E+E +530 PRINT A,T,C,E,O$ +540 GOTO 260 +700 PRINT A,T,C,"RANGE ZERO",O$ +710 GOTO 260 +1000 IF C=T THEN 1333 +1010 IF C>L THEN 1444 +1020 IF C=B THEN 420 +370 IF R<0 THEN 400 +380 LET A=M +390 GOTO 320 +400 LET B=M +410 GOTO 320 +420 PRINT +430 PRINT "ARGUMENTS HAVE CONVERGED. IF OVERFLOW HAS OCCURRED," +440 PRINT "PROCESSOR MUST HAVE REPORTED EXCEPTION AND SUPPLIED" +450 PRINT "MACHINE INFINITY, OTHERWISE," +455 PRINT "*** TEST FAILED ***" +460 PRINT +470 PRINT " END TEST" +480 PRINT +490 PRINT "END PROGRAM 129" +500 END diff --git a/NBS2/P129.OUT b/NBS2/P129.OUT new file mode 100644 index 0000000..f01d002 --- /dev/null +++ b/NBS2/P129.OUT @@ -0,0 +1,87 @@ +PROGRAM FILE 129: EXCEPTION - OVERFLOW ON VALUE OF + TAN FUNCTION. + ANSI STANDARD 8.5 + +SECTION 129.1: EXCEPTION - OVERFLOW ON VALUE OF + TAN FUNCTION. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES AN EXCEPTION OF THE VALUE RETURNED BY THE +TAN FUNCTION EXCEEDS MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) OVERFLOW MUST NOT OCCUR, OR + + 2) WHEN OVERFLOW OCCURS, THE PROCESSOR MUST DISPLAY A + MESSAGE IDENTIFYING THE EXCEPTION, SUPPLY MACHINE + INFINITY AND CONTINUE EXECUTION. + + + BEGIN TEST. + +THE PROGRAM ATTEMPTS TO FORCE CONVERGENCE OF THE ARGUMENT +TO PI/2, SO AS TO CAUSE OVERFLOW. IF OVERFLOW DOES NOT +OCCUR, IT IS LIKELY THAT THIS SYSTEM HAS NO INTERNAL +NUMERIC REPRESENTATION FOR WHICH THE TANGENT EXCEEDS +MACHINE INFINITY. + +ARGUMENT VALUE OF TAN + + 1.57 1255.77 + 1.575 -237.886 + 1.5725 -586.966 + 1.57125 -2204.23 + 1.57063 5836.8 + 1.57094 -7083.5 + 1.57078 66327.1 + 1.57086 -15860.9 + 1.57082 -41691.5 + 1.5708 -224494. + 1.57079 188282. + 1.5708 2.3345E+6 + 1.5708 -496759. + 1.5708 -1.26208E+6 + 1.5708 -5.49468E+6 + 1.5708 8.11809E+6 + 1.5708 -3.40063E+7 + 1.5708 2.13276E+7 + 1.5708 1.14407E+8 + 1.5708 -9.67793E+7 + 1.5708 -1.25621E+9 + 1.5708 2.51742E+8 + 1.5708 6.29667E+8 + 1.5708 2.52495E+9 + 1.5708 -5.00002E+9 + 1.5708 1.02016E+10 + 1.5708 -1.96126E+10 + 1.5708 4.25204E+10 + 1.5708 -7.28081E+10 + 1.5708 2.04428E+11 + 1.5708 -2.26167E+11 + 1.5708 4.2556E+12 + 1.5708 -4.77697E+11 + 1.5708 -1.0762E+12 + 1.5708 -2.88005E+12 + 1.5708 -1.78202E+13 + 1.5708 1.11953E+13 + 1.5708 6.06335E+13 + 1.5708 -5.01938E+13 + 1.5708 -5.83048E+14 + 1.5708 1.35342E+14 + 1.5708 3.66869E+14 + 1.5708 1.97894E+15 + 1.5708 -1.65316E+15 + 1.5708 1.63312E+16 + 1.5708 -2.61194E+15 + 1.5708 -6.21843E+15 + 1.5708 1.63312E+16 + +ARGUMENTS HAVE CONVERGED. IF OVERFLOW HAS OCCURRED, +PROCESSOR MUST HAVE REPORTED EXCEPTION AND SUPPLIED +MACHINE INFINITY, OTHERWISE, +*** TEST FAILED *** + + END TEST + +END PROGRAM 129 diff --git a/NBS2/P129.dif b/NBS2/P129.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P129.run b/NBS2/P129.run new file mode 100644 index 0000000..8f58ea3 --- /dev/null +++ b/NBS2/P129.run @@ -0,0 +1,87 @@ +PROGRAM FILE 129: EXCEPTION - OVERFLOW ON VALUE OF + TAN FUNCTION. + ANSI STANDARD 8.5 + +SECTION 129.1: EXCEPTION - OVERFLOW ON VALUE OF + TAN FUNCTION. + +THE OBJECT OF THIS TEST IS TO SEE WHETHER THE PROCESSOR +RECOGNIZES AN EXCEPTION OF THE VALUE RETURNED BY THE +TAN FUNCTION EXCEEDS MACHINE INFINITY. + +TO PASS THIS TEST: + + 1) OVERFLOW MUST NOT OCCUR, OR + + 2) WHEN OVERFLOW OCCURS, THE PROCESSOR MUST DISPLAY A + MESSAGE IDENTIFYING THE EXCEPTION, SUPPLY MACHINE + INFINITY AND CONTINUE EXECUTION. + + + BEGIN TEST. + +THE PROGRAM ATTEMPTS TO FORCE CONVERGENCE OF THE ARGUMENT +TO PI/2, SO AS TO CAUSE OVERFLOW. IF OVERFLOW DOES NOT +OCCUR, IT IS LIKELY THAT THIS SYSTEM HAS NO INTERNAL +NUMERIC REPRESENTATION FOR WHICH THE TANGENT EXCEEDS +MACHINE INFINITY. + +ARGUMENT VALUE OF TAN + + 1.57 1255.77 + 1.575 -237.886 + 1.5725 -586.966 + 1.57125 -2204.23 + 1.57063 5836.8 + 1.57094 -7083.5 + 1.57078 66327.1 + 1.57086 -15860.9 + 1.57082 -41691.5 + 1.5708 -224494. + 1.57079 188282. + 1.5708 2.3345E+6 + 1.5708 -496759. + 1.5708 -1.26208E+6 + 1.5708 -5.49468E+6 + 1.5708 8.11809E+6 + 1.5708 -3.40063E+7 + 1.5708 2.13276E+7 + 1.5708 1.14407E+8 + 1.5708 -9.67793E+7 + 1.5708 -1.25621E+9 + 1.5708 2.51742E+8 + 1.5708 6.29667E+8 + 1.5708 2.52495E+9 + 1.5708 -5.00002E+9 + 1.5708 1.02016E+10 + 1.5708 -1.96126E+10 + 1.5708 4.25204E+10 + 1.5708 -7.28081E+10 + 1.5708 2.04428E+11 + 1.5708 -2.26167E+11 + 1.5708 4.2556E+12 + 1.5708 -4.77697E+11 + 1.5708 -1.0762E+12 + 1.5708 -2.88005E+12 + 1.5708 -1.78202E+13 + 1.5708 1.11953E+13 + 1.5708 6.06335E+13 + 1.5708 -5.01938E+13 + 1.5708 -5.83048E+14 + 1.5708 1.35342E+14 + 1.5708 3.66869E+14 + 1.5708 1.97894E+15 + 1.5708 -1.65316E+15 + 1.5708 1.63312E+16 + 1.5708 -2.61194E+15 + 1.5708 -6.21843E+15 + 1.5708 1.63312E+16 + +ARGUMENTS HAVE CONVERGED. IF OVERFLOW HAS OCCURRED, +PROCESSOR MUST HAVE REPORTED EXCEPTION AND SUPPLIED +MACHINE INFINITY, OTHERWISE, +*** TEST FAILED *** + + END TEST + +END PROGRAM 129 diff --git a/NBS2/P130.80 b/NBS2/P130.80 new file mode 100644 index 0000000..61c236f --- /dev/null +++ b/NBS2/P130.80 @@ -0,0 +1,41 @@ +PROGRAM FILE 130: RND FUNCTION WITHOUT RANDOMIZE STATEMENT. + ANSI STANDARD 8.2, 8.4 + +SECTION 130.1: RND FUNCTION WITHOUT RANDOMIZE STATEMENT. + +THE FOLLOWING 20 NUMBERS SHOULD BE THE IMPLEMENTATION- +DEFINED SEQUENCE OF PSEUDO-RANDOM NUMBERS FOR THE +RND FUNCTION. + + BEGIN TEST + +POSITION VALUE + 1 .396465 + 2 .840485 + 3 .353336 + 4 .446583 + 5 .318693 + 6 .886428 + 7 1.55828E-2 + 8 .58409 + 9 .159369 + 10 .383716 + 11 .691004 + 12 5.88589E-2 + 13 .899854 + 14 .163546 + 15 .159072 + 16 .533065 + 17 .604144 + 18 .582699 + 19 .269971 + 20 .390478 + +TO DETERMINE WHETHER THIS TEST PASSES OR FAILS, THE USER +MUST RUN THE TEST THREE TIMES, NOTHING THE SEQUENCE OF +NUMBERS PRODUCED EACH TIME. IF ALL THREE ARE IDENTICAL, +*** TEST PASSED *** + + END TEST + +END PROGRAM 130 diff --git a/NBS2/P130.BAS b/NBS2/P130.BAS new file mode 100644 index 0000000..140a9ed --- /dev/null +++ b/NBS2/P130.BAS @@ -0,0 +1,25 @@ +10 PRINT "PROGRAM FILE 130: RND FUNCTION WITHOUT RANDOMIZE STATEMENT." +20 PRINT " ANSI STANDARD 8.2, 8.4" +30 PRINT +40 PRINT "SECTION 130.1: RND FUNCTION WITHOUT RANDOMIZE STATEMENT." +50 PRINT +60 PRINT "THE FOLLOWING 20 NUMBERS SHOULD BE THE IMPLEMENTATION-" +70 PRINT "DEFINED SEQUENCE OF PSEUDO-RANDOM NUMBERS FOR THE" +80 PRINT "RND FUNCTION." +90 PRINT +100 PRINT " BEGIN TEST" +110 PRINT +120 PRINT "POSITION","VALUE" +130 FOR I=1 TO 20 +140 PRINT I,RND +150 NEXT I +160 PRINT +170 PRINT "TO DETERMINE WHETHER THIS TEST PASSES OR FAILS, THE USER" +180 PRINT "MUST RUN THE TEST THREE TIMES, NOTHING THE SEQUENCE OF" +190 PRINT "NUMBERS PRODUCED EACH TIME. IF ALL THREE ARE IDENTICAL, " +200 PRINT "*** TEST PASSED ***" +210 PRINT +220 PRINT " END TEST" +230 PRINT +240 PRINT "END PROGRAM 130" +250 END diff --git a/NBS2/P130.OUT b/NBS2/P130.OUT new file mode 100644 index 0000000..8ee904e --- /dev/null +++ b/NBS2/P130.OUT @@ -0,0 +1,41 @@ +PROGRAM FILE 130: RND FUNCTION WITHOUT RANDOMIZE STATEMENT. + ANSI STANDARD 8.2, 8.4 + +SECTION 130.1: RND FUNCTION WITHOUT RANDOMIZE STATEMENT. + +THE FOLLOWING 20 NUMBERS SHOULD BE THE IMPLEMENTATION- +DEFINED SEQUENCE OF PSEUDO-RANDOM NUMBERS FOR THE +RND FUNCTION. + + BEGIN TEST + +POSITION VALUE + 1 .396465 + 2 .840485 + 3 .353336 + 4 .446583 + 5 .318693 + 6 .886428 + 7 1.55828E-2 + 8 .58409 + 9 .159369 + 10 .383716 + 11 .691004 + 12 5.88589E-2 + 13 .899854 + 14 .163546 + 15 .159072 + 16 .533065 + 17 .604144 + 18 .582699 + 19 .269971 + 20 .390478 + +TO DETERMINE WHETHER THIS TEST PASSES OR FAILS, THE USER +MUST RUN THE TEST THREE TIMES, NOTHING THE SEQUENCE OF +NUMBERS PRODUCED EACH TIME. IF ALL THREE ARE IDENTICAL, +*** TEST PASSED *** + + END TEST + +END PROGRAM 130 diff --git a/NBS2/P130.dif b/NBS2/P130.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P130.run b/NBS2/P130.run new file mode 100644 index 0000000..61c236f --- /dev/null +++ b/NBS2/P130.run @@ -0,0 +1,41 @@ +PROGRAM FILE 130: RND FUNCTION WITHOUT RANDOMIZE STATEMENT. + ANSI STANDARD 8.2, 8.4 + +SECTION 130.1: RND FUNCTION WITHOUT RANDOMIZE STATEMENT. + +THE FOLLOWING 20 NUMBERS SHOULD BE THE IMPLEMENTATION- +DEFINED SEQUENCE OF PSEUDO-RANDOM NUMBERS FOR THE +RND FUNCTION. + + BEGIN TEST + +POSITION VALUE + 1 .396465 + 2 .840485 + 3 .353336 + 4 .446583 + 5 .318693 + 6 .886428 + 7 1.55828E-2 + 8 .58409 + 9 .159369 + 10 .383716 + 11 .691004 + 12 5.88589E-2 + 13 .899854 + 14 .163546 + 15 .159072 + 16 .533065 + 17 .604144 + 18 .582699 + 19 .269971 + 20 .390478 + +TO DETERMINE WHETHER THIS TEST PASSES OR FAILS, THE USER +MUST RUN THE TEST THREE TIMES, NOTHING THE SEQUENCE OF +NUMBERS PRODUCED EACH TIME. IF ALL THREE ARE IDENTICAL, +*** TEST PASSED *** + + END TEST + +END PROGRAM 130 diff --git a/NBS2/P131.BAS b/NBS2/P131.BAS new file mode 100644 index 0000000..5887257 --- /dev/null +++ b/NBS2/P131.BAS @@ -0,0 +1,26 @@ +10 PRINT "PROGRAM FILE 131: RND FUNCTION WITH THE RANDOMIZE STATEMENT." +20 PRINT " ANSI STANDARD 8.2, 8.4, 17.L2, 17.4" +30 PRINT +50 PRINT "SECTION 131.1: RND FUNCTION WITH THE RANDOMIZE STATEMENT." +60 PRINT +70 PRINT "THIS TEST DETERMINES WHETHER THE RANDOMIZE STATEMENT" +80 PRINT "CAUSES A DIFFERENT SEQUENCE OF NUMBERS TO BE PRODUCED" +90 PRINT "BY THE RND FUNCTION FOR EACH PROGRAM EXECUTION." +100 PRINT +110 PRINT " BEGIN TEST" +120 RANDOMIZE +130 PRINT +140 PRINT "POSITION","VALUE" +150 FOR I=1 TO 20 +160 PRINT I,RND +170 NEXT I +180 PRINT +190 PRINT "TO DETERMINE WHETHER THIS TEST PASSES, THE USER MUST RUN" +200 PRINT "THIS PROGRAM THREE TIMES, NOTING THE SEQUENCE OF NUMBERS" +210 PRINT "PRODUCED EACH TIME. IF ALL THREE ARE DIFFERENT, THEN" +220 PRINT "*** TEST PASSED ***" +230 PRINT +240 PRINT " END TEST" +250 PRINT +260 PRINT "END PROGRAM 131" +270 END diff --git a/NBS2/P131.OUT b/NBS2/P131.OUT new file mode 100644 index 0000000..b67a1ab --- /dev/null +++ b/NBS2/P131.OUT @@ -0,0 +1,41 @@ +PROGRAM FILE 131: RND FUNCTION WITH THE RANDOMIZE STATEMENT. + ANSI STANDARD 8.2, 8.4, 17.L2, 17.4 + +SECTION 131.1: RND FUNCTION WITH THE RANDOMIZE STATEMENT. + +THIS TEST DETERMINES WHETHER THE RANDOMIZE STATEMENT +CAUSES A DIFFERENT SEQUENCE OF NUMBERS TO BE PRODUCED +BY THE RND FUNCTION FOR EACH PROGRAM EXECUTION. + + BEGIN TEST + +POSITION VALUE + 1 .240071 + 2 7.38049E-2 + 3 .525685 + 4 .198192 + 5 .732406 + 6 .207359 + 7 .430523 + 8 .601547 + 9 .235005 + 10 .22168 + 11 .537403 + 12 .249626 + 13 .46885 + 14 .404457 + 15 .713653 + 16 .359456 + 17 .634955 + 18 .791804 + 19 .968054 + 20 .73654 + +TO DETERMINE WHETHER THIS TEST PASSES, THE USER MUST RUN +THIS PROGRAM THREE TIMES, NOTING THE SEQUENCE OF NUMBERS +PRODUCED EACH TIME. IF ALL THREE ARE DIFFERENT, THEN +*** TEST PASSED *** + + END TEST + +END PROGRAM 131 diff --git a/NBS2/P132.80 b/NBS2/P132.80 new file mode 100644 index 0000000..5bfc3c4 --- /dev/null +++ b/NBS2/P132.80 @@ -0,0 +1,29 @@ +PROGRAM FILE 132: AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5 + AND 0 <= RND < 1. + ANSI STANDARD 8.4 + +SECTION 132.1: AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5 + AND 0 <= RND < 1. + +THIS PROGRAM TESTS WHETHER THE AVERAGE OF A SERIES OF RANDOM +NUMBERS IS SIGNIFICANTLY FAR FROM THE IDEAL OF 0.5. IF SO, +THIS RESULT INDICATES NON-UNIFORM DISTRIBUTION AND THE TEST +FAILS. ALSO, IF ANY OF THE NUMBERS IS OUTSIDE THE ALLOWABLE +RANGE, AN IMMEDIATE FAILURE IS REPORTED. + + BEGIN TEST + + AVERAGE STD. DEV. +THEORETICAL: .5 .288675 +ACTUAL: .499632 .290323 + +ALLOWABLE DEVIATION: 6.08182E-3 +ACTUAL DEVIATION: 3.67562E-4 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 132 + +Program interrupted at line 480 diff --git a/NBS2/P132.BAS b/NBS2/P132.BAS new file mode 100644 index 0000000..04a30f9 --- /dev/null +++ b/NBS2/P132.BAS @@ -0,0 +1,54 @@ +10 PRINT "PROGRAM FILE 132: AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5" +15 PRINT " AND 0 <= RND < 1." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 132.1: AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5" +50 PRINT " AND 0 <= RND < 1." +60 PRINT +70 PRINT "THIS PROGRAM TESTS WHETHER THE AVERAGE OF A SERIES OF RANDOM" +80 PRINT "NUMBERS IS SIGNIFICANTLY FAR FROM THE IDEAL OF 0.5. IF SO," +90 PRINT "THIS RESULT INDICATES NON-UNIFORM DISTRIBUTION AND THE TEST" +100 PRINT "FAILS. ALSO, IF ANY OF THE NUMBERS IS OUTSIDE THE ALLOWABLE" +110 PRINT "RANGE, AN IMMEDIATE FAILURE IS REPORTED." +120 PRINT +130 PRINT " BEGIN TEST" +140 PRINT +150 REM N=8754 BASED ON SIGNIFICANCE LEVEL OF .05 AND 0.1 CHANCE OF +160 REM NOT FINDING A DIFFERENCE OF AT LEAST .01 FROM STANDARD +170 REM AVERAGE OF 0.5, AND STANDARD DEVIATION OF 1/(2*SQR(3)) +180 LET N=8754 +190 LET S1=0 +200 LET S2=0 +210 FOR I=1 TO N +220 LET X=RND +230 IF X<0 THEN 490 +240 IF X>=1 THEN 510 +250 LET S1=S1+X +260 LET S2=S2+(X*X) +270 NEXT I +280 LET S = SQR((N*S2) - (S1*S1)) / N +290 LET X1=S1/N +300 PRINT ,"AVERAGE","STD. DEV." +310 PRINT "THEORETICAL:",.5,1/(2*SQR(3)) +320 PRINT "ACTUAL:",X1,S +330 LET A1=ABS(X1-0.5) +340 REM 1.96 BASED ON SIGNIFICANCE LEVEL OF .05 AND INFINITE D.F +350 LET A2=(1.96*S)/SQR(N) +360 PRINT +370 PRINT "ALLOWABLE DEVIATION: ";A2 +380 PRINT "ACTUAL DEVIATION: ";A1 +390 PRINT +400 IF A1>A2 THEN 430 +410 PRINT "*** TEST PASSED ***" +420 GOTO 440 +430 PRINT "*** TEST FAILED ***" +440 PRINT +450 PRINT " END TEST" +460 PRINT +470 PRINT "END PROGRAM 132" +480 STOP +490 PRINT "RND#";I;" < 0: ";X +500 GOTO 430 +510 PRINT "RND#";I;" >= 1: ";X +520 GOTO 430 +530 END diff --git a/NBS2/P132.OUT b/NBS2/P132.OUT new file mode 100644 index 0000000..dfb2879 --- /dev/null +++ b/NBS2/P132.OUT @@ -0,0 +1,29 @@ +PROGRAM FILE 132: AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5 + AND 0 <= RND < 1. + ANSI STANDARD 8.4 + +SECTION 132.1: AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5 + AND 0 <= RND < 1. + +THIS PROGRAM TESTS WHETHER THE AVERAGE OF A SERIES OF RANDOM +NUMBERS IS SIGNIFICANTLY FAR FROM THE IDEAL OF 0.5. IF SO, +THIS RESULT INDICATES NON-UNIFORM DISTRIBUTION AND THE TEST +FAILS. ALSO, IF ANY OF THE NUMBERS IS OUTSIDE THE ALLOWABLE +RANGE, AN IMMEDIATE FAILURE IS REPORTED. + + BEGIN TEST + + AVERAGE STD. DEV. +THEORETICAL: .5 .288675 +ACTUAL: .499632 .290323 + +ALLOWABLE DEVIATION: 6.08182E-3 +ACTUAL DEVIATION: 3.67562E-4 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 132 + +Program interrupted at line 480 diff --git a/NBS2/P132.dif b/NBS2/P132.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P132.run b/NBS2/P132.run new file mode 100644 index 0000000..5bfc3c4 --- /dev/null +++ b/NBS2/P132.run @@ -0,0 +1,29 @@ +PROGRAM FILE 132: AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5 + AND 0 <= RND < 1. + ANSI STANDARD 8.4 + +SECTION 132.1: AVERAGE OF RANDOM NUMBERS APPROXIMATES 0.5 + AND 0 <= RND < 1. + +THIS PROGRAM TESTS WHETHER THE AVERAGE OF A SERIES OF RANDOM +NUMBERS IS SIGNIFICANTLY FAR FROM THE IDEAL OF 0.5. IF SO, +THIS RESULT INDICATES NON-UNIFORM DISTRIBUTION AND THE TEST +FAILS. ALSO, IF ANY OF THE NUMBERS IS OUTSIDE THE ALLOWABLE +RANGE, AN IMMEDIATE FAILURE IS REPORTED. + + BEGIN TEST + + AVERAGE STD. DEV. +THEORETICAL: .5 .288675 +ACTUAL: .499632 .290323 + +ALLOWABLE DEVIATION: 6.08182E-3 +ACTUAL DEVIATION: 3.67562E-4 + +*** TEST PASSED *** + + END TEST + +END PROGRAM 132 + +Program interrupted at line 480 diff --git a/NBS2/P133.80 b/NBS2/P133.80 new file mode 100644 index 0000000..74f5d8b --- /dev/null +++ b/NBS2/P133.80 @@ -0,0 +1,124 @@ +PROGRAM FILE 133: CHI-SQUARE UNIFORMITY TEST FOR + RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 133.1: CHI-SQUARE UNIFORMITY TEST FOR + RND FUNCTION. + +THIS PROGRAM RUNS A SERIES OF 60 EXPERIMENTS OF 1040 SAMPLES +TO DETERMINE IF THE RANDOM NUMBERS ARE EQUALLY DISTRIBUTED +AMONG 21 EQUAL-SIZE INTERVALS BETWEEN 0 AND 1. CHI-SQUARE +IS COMPUTED AND DISPLAYED FOR EACH OF THESE EXPERIMENTS. +EACH CHI-SQUARE RESULT IS CATEGORIZED ACCORDING TO THE +PERCENTILE RANGE INTO WHICH ITS VALUE FALLS: + +CATEGORY % RANGE CATEGORY % RANGE + 1 0-1 6 50-75 + 2 1-5 7 75-90 + 3 5-10 8 90-95 + 4 10-25 9 95-99 + 5 25-50 10 99-100 + +THESE CATEGORICAL RESULTS ARE THEN EVALUATED AGAIN USING +CHI-SQUARE (THE FIRST AND LAST THREE CATEGORIES ARE EACH +CONSOLIDATED INTO ONE), AND IF THE DISTRIBUTION AMONG +CATEGORIES IS SUFFICIENTLY IMPROBABLE (TOP OR BOTTOM 5%), +THE TEST FAILS. + + BEGIN TEST + +EXPERIMENT CHI-SQUARE CATEGORY + + 1 13.76 4 + 2 19.96 6 + 3 22.32 6 + 4 16.68 5 + 5 24.92 7 + 6 13.92 4 + 7 20.96 6 + 8 14.24 4 + 9 23.84 7 + 10 18.36 5 + 11 17.44 5 + 12 18.28 5 + 13 15.28 4 + 14 31.56 9 + 15 17.92 5 + 16 29.44 8 + 17 10.96 3 + 18 35.32 9 + 19 23.44 6 + 20 24.2 7 + 21 22.96 6 + 22 24.2 7 + 23 23.96 7 + 24 27.32 7 + 25 22.36 6 + 26 21.12 6 + 27 18 5 + 28 10.72 2 + 29 21.28 6 + 30 16.4 5 + 31 12 3 + 32 17.4 5 + 33 18.32 5 + 34 16.2 5 + 35 30.12 8 + 36 22.4 6 + 37 11.16 3 + 38 16.72 5 + 39 23.08 6 + 40 24.24 7 + 41 13.12 4 + 42 22.04 6 + 43 16.44 5 + 44 15.36 4 + 45 28.88 8 + 46 16.08 5 + 47 18.08 5 + 48 24.76 7 + 49 23.88 7 + 50 22.48 6 + 51 19.44 6 + 52 24.52 7 + 53 33.64 9 + 54 12.48 4 + 55 17.2 5 + 56 16.68 5 + 57 24.32 7 + 58 13.32 4 + 59 23.76 6 + 60 17.04 5 + + + +SUMMARY EVALUATION STATISTICS + + ACTUAL EXPECTED +CATEGORY COUNT COUNT + 1 0 .6 + 2 1 2.4 + 3 3 3 + 4 8 9 + 5 17 15 + 6 14 15 + 7 11 9 + 8 3 3 + 9 3 2.4 + 10 0 .6 + + +WILL CONSOLIDATE CATEGORIES 1-3 AND 8-10, SO THAT +EXPECTED VALUE IN EACH IS >= 5, AS REQUIRED BY +CHI-SQUARE TEST. + +FOR FIVE D.F., SHOULD HAVE 1.145476 <= CHI-SQ <= 11.0705 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 1.55556 + + *** TEST PASSED *** + + END TEST + +END PROGRAM 133 diff --git a/NBS2/P133.BAS b/NBS2/P133.BAS new file mode 100644 index 0000000..3c4c356 --- /dev/null +++ b/NBS2/P133.BAS @@ -0,0 +1,151 @@ +10 PRINT "PROGRAM FILE 133: CHI-SQUARE UNIFORMITY TEST FOR" +15 PRINT " RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 133.1: CHI-SQUARE UNIFORMITY TEST FOR" +50 PRINT " RND FUNCTION." +55 PRINT +60 PRINT "THIS PROGRAM RUNS A SERIES OF 60 EXPERIMENTS OF 1040 SAMPLES" +70 PRINT "TO DETERMINE IF THE RANDOM NUMBERS ARE EQUALLY DISTRIBUTED" +80 PRINT "AMONG 21 EQUAL-SIZE INTERVALS BETWEEN 0 AND 1. CHI-SQUARE" +90 PRINT "IS COMPUTED AND DISPLAYED FOR EACH OF THESE EXPERIMENTS." +100 PRINT "EACH CHI-SQUARE RESULT IS CATEGORIZED ACCORDING TO THE" +110 PRINT "PERCENTILE RANGE INTO WHICH ITS VALUE FALLS:" +120 PRINT +130 PRINT "CATEGORY % RANGE CATEGORY % RANGE" +140 PRINT " 1 0-1 6 50-75" +150 PRINT " 2 1-5 7 75-90" +160 PRINT " 3 5-10 8 90-95" +170 PRINT " 4 10-25 9 95-99" +180 PRINT " 5 25-50 10 99-100" +190 PRINT +200 PRINT "THESE CATEGORICAL RESULTS ARE THEN EVALUATED AGAIN USING" +210 PRINT "CHI-SQUARE (THE FIRST AND LAST THREE CATEGORIES ARE EACH" +220 PRINT "CONSOLIDATED INTO ONE), AND IF THE DISTRIBUTION AMONG" +230 PRINT "CATEGORIES IS SUFFICIENTLY IMPROBABLE (TOP OR BOTTOM 5%)," +240 PRINT "THE TEST FAILS." +250 PRINT +260 PRINT " BEGIN TEST" +270 PRINT +280 REM SET #TRIALS PER EXPERIMENT +290 LET P1=1050 +300 DIM Y(21) +310 PRINT "EXPERIMENT","CHI-SQUARE","CATEGORY" +320 PRINT +330 REM PERFORM 60 EXPERIMENTS OF 1050 SAMPLES EACH +340 REM OF PSEUDO-RANDOM NUMBERS THEN COMPUTE +350 REM AND TEST CHI-SQ STATISTIC FOR EACH EXPERIMENT. +360 REM BELOW ARE CHI-SQ VALUES FOR 20 DEGREES OF FREEDOM FOR +370 REM PERCENTAGES 1,5,10,25,50,75,90,95,99, AND 100 +380 LET L(1)=8.26040 +390 LET L(2)=10.8508 +400 LET L(3)=12.4426 +410 LET L(4)=15.4518 +420 LET L(5)=19.3374 +430 LET L(6)=23.8277 +440 LET L(7)=28.4120 +450 LET L(8)=31.4104 +460 LET L(9)=37.5662 +470 LET L(10)=1E38 +480 REM ZERO OUT CATEGORY COUNTS +490 FOR C=1 TO 10 +500 LET Z(C)=0 +510 NEXT C +520 REM DO 60 EXPERIMENTS, SO EXPECTED NUMBER FOR EACH GLOBAL +530 REM CATEGORY IS >= 5 +540 FOR E=1 TO 60 +550 REM INITIALIZE OBSERVED COUNTS AT 0 FOR A PARTITION OF THE +560 REM UNIT INTERVAL INTO 21 CELLS +570 FOR I = 1 TO 21 +580 LET Y(I) = 0 +590 NEXT I +600 REM OBTAIN FREQUENCY COUNTS FOR 1050 RANDOM NUMBERS +610 FOR I=1 TO P1 +620 LET X = RND +630 LET R = INT(21*X) + 1 +640 LET Y(R) = Y(R) + 1 +650 NEXT I +660 REM COMPUTE CHI-SQ STATISTIC FOR EACH EXPERIMENT +670 LET S = 0 +680 FOR I = 1 TO 21 +690 LET S = S + (21*Y(I)*Y(I)) +700 NEXT I +710 LET V1=(S/P1) - P1 +720 REM TEST CHI-SQ STATISTIC FOR EACH EXPERIMENT +730 FOR C=1 TO 10 +740 IF V1= 5, AS REQUIRED BY" +1330 PRINT "CHI-SQUARE TEST." +1340 PRINT +1350 PRINT "FOR FIVE D.F., SHOULD HAVE 1.145476 <= CHI-SQ <= 11.0705" +1360 PRINT "(5% TAIL AT EACH END.)" +1370 PRINT +1380 PRINT "ACTUAL CHI-SQ = ";V1 +1390 PRINT +1400 IF V1<1.145476 THEN 1440 +1410 IF V1>11.0705 THEN 1440 +1420 PRINT " *** TEST PASSED *** " +1430 GOTO 1450 +1440 PRINT " *** TEST FAILED *** " +1450 PRINT +1460 PRINT " END TEST" +1470 PRINT +1480 PRINT "END PROGRAM 133" +1490 END diff --git a/NBS2/P133.OUT b/NBS2/P133.OUT new file mode 100644 index 0000000..27303d6 --- /dev/null +++ b/NBS2/P133.OUT @@ -0,0 +1,124 @@ +PROGRAM FILE 133: CHI-SQUARE UNIFORMITY TEST FOR + RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 133.1: CHI-SQUARE UNIFORMITY TEST FOR + RND FUNCTION. + +THIS PROGRAM RUNS A SERIES OF 60 EXPERIMENTS OF 1040 SAMPLES +TO DETERMINE IF THE RANDOM NUMBERS ARE EQUALLY DISTRIBUTED +AMONG 21 EQUAL-SIZE INTERVALS BETWEEN 0 AND 1. CHI-SQUARE +IS COMPUTED AND DISPLAYED FOR EACH OF THESE EXPERIMENTS. +EACH CHI-SQUARE RESULT IS CATEGORIZED ACCORDING TO THE +PERCENTILE RANGE INTO WHICH ITS VALUE FALLS: + +CATEGORY % RANGE CATEGORY % RANGE + 1 0-1 6 50-75 + 2 1-5 7 75-90 + 3 5-10 8 90-95 + 4 10-25 9 95-99 + 5 25-50 10 99-100 + +THESE CATEGORICAL RESULTS ARE THEN EVALUATED AGAIN USING +CHI-SQUARE (THE FIRST AND LAST THREE CATEGORIES ARE EACH +CONSOLIDATED INTO ONE), AND IF THE DISTRIBUTION AMONG +CATEGORIES IS SUFFICIENTLY IMPROBABLE (TOP OR BOTTOM 5%), +THE TEST FAILS. + + BEGIN TEST + +EXPERIMENT CHI-SQUARE CATEGORY + + 1 13.76 4 + 2 19.96 6 + 3 22.32 6 + 4 16.68 5 + 5 24.92 7 + 6 13.92 4 + 7 20.96 6 + 8 14.24 4 + 9 23.84 7 + 10 18.36 5 + 11 17.44 5 + 12 18.28 5 + 13 15.28 4 + 14 31.56 9 + 15 17.92 5 + 16 29.44 8 + 17 10.96 3 + 18 35.32 9 + 19 23.44 6 + 20 24.2 7 + 21 22.96 6 + 22 24.2 7 + 23 23.96 7 + 24 27.32 7 + 25 22.36 6 + 26 21.12 6 + 27 18 5 + 28 10.72 2 + 29 21.28 6 + 30 16.4 5 + 31 12 3 + 32 17.4 5 + 33 18.32 5 + 34 16.2 5 + 35 30.12 8 + 36 22.4 6 + 37 11.16 3 + 38 16.72 5 + 39 23.08 6 + 40 24.24 7 + 41 13.12 4 + 42 22.04 6 + 43 16.44 5 + 44 15.36 4 + 45 28.88 8 + 46 16.08 5 + 47 18.08 5 + 48 24.76 7 + 49 23.88 7 + 50 22.48 6 + 51 19.44 6 + 52 24.52 7 + 53 33.64 9 + 54 12.48 4 + 55 17.2 5 + 56 16.68 5 + 57 24.32 7 + 58 13.32 4 + 59 23.76 6 + 60 17.04 5 + + + +SUMMARY EVALUATION STATISTICS + + ACTUAL EXPECTED +CATEGORY COUNT COUNT + 1 0 .6 + 2 1 2.4 + 3 3 3 + 4 8 9 + 5 17 15 + 6 14 15 + 7 11 9 + 8 3 3 + 9 3 2.4 + 10 0 .6 + + +WILL CONSOLIDATE CATEGORIES 1-3 AND 8-10, SO THAT +EXPECTED VALUE IN EACH IS >= 5, AS REQUIRED BY +CHI-SQUARE TEST. + +FOR FIVE D.F., SHOULD HAVE 1.145476 <= CHI-SQ <= 11.0705 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 1.55556 + + *** TEST PASSED *** + + END TEST + +END PROGRAM 133 diff --git a/NBS2/P133.dif b/NBS2/P133.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P133.run b/NBS2/P133.run new file mode 100644 index 0000000..74f5d8b --- /dev/null +++ b/NBS2/P133.run @@ -0,0 +1,124 @@ +PROGRAM FILE 133: CHI-SQUARE UNIFORMITY TEST FOR + RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 133.1: CHI-SQUARE UNIFORMITY TEST FOR + RND FUNCTION. + +THIS PROGRAM RUNS A SERIES OF 60 EXPERIMENTS OF 1040 SAMPLES +TO DETERMINE IF THE RANDOM NUMBERS ARE EQUALLY DISTRIBUTED +AMONG 21 EQUAL-SIZE INTERVALS BETWEEN 0 AND 1. CHI-SQUARE +IS COMPUTED AND DISPLAYED FOR EACH OF THESE EXPERIMENTS. +EACH CHI-SQUARE RESULT IS CATEGORIZED ACCORDING TO THE +PERCENTILE RANGE INTO WHICH ITS VALUE FALLS: + +CATEGORY % RANGE CATEGORY % RANGE + 1 0-1 6 50-75 + 2 1-5 7 75-90 + 3 5-10 8 90-95 + 4 10-25 9 95-99 + 5 25-50 10 99-100 + +THESE CATEGORICAL RESULTS ARE THEN EVALUATED AGAIN USING +CHI-SQUARE (THE FIRST AND LAST THREE CATEGORIES ARE EACH +CONSOLIDATED INTO ONE), AND IF THE DISTRIBUTION AMONG +CATEGORIES IS SUFFICIENTLY IMPROBABLE (TOP OR BOTTOM 5%), +THE TEST FAILS. + + BEGIN TEST + +EXPERIMENT CHI-SQUARE CATEGORY + + 1 13.76 4 + 2 19.96 6 + 3 22.32 6 + 4 16.68 5 + 5 24.92 7 + 6 13.92 4 + 7 20.96 6 + 8 14.24 4 + 9 23.84 7 + 10 18.36 5 + 11 17.44 5 + 12 18.28 5 + 13 15.28 4 + 14 31.56 9 + 15 17.92 5 + 16 29.44 8 + 17 10.96 3 + 18 35.32 9 + 19 23.44 6 + 20 24.2 7 + 21 22.96 6 + 22 24.2 7 + 23 23.96 7 + 24 27.32 7 + 25 22.36 6 + 26 21.12 6 + 27 18 5 + 28 10.72 2 + 29 21.28 6 + 30 16.4 5 + 31 12 3 + 32 17.4 5 + 33 18.32 5 + 34 16.2 5 + 35 30.12 8 + 36 22.4 6 + 37 11.16 3 + 38 16.72 5 + 39 23.08 6 + 40 24.24 7 + 41 13.12 4 + 42 22.04 6 + 43 16.44 5 + 44 15.36 4 + 45 28.88 8 + 46 16.08 5 + 47 18.08 5 + 48 24.76 7 + 49 23.88 7 + 50 22.48 6 + 51 19.44 6 + 52 24.52 7 + 53 33.64 9 + 54 12.48 4 + 55 17.2 5 + 56 16.68 5 + 57 24.32 7 + 58 13.32 4 + 59 23.76 6 + 60 17.04 5 + + + +SUMMARY EVALUATION STATISTICS + + ACTUAL EXPECTED +CATEGORY COUNT COUNT + 1 0 .6 + 2 1 2.4 + 3 3 3 + 4 8 9 + 5 17 15 + 6 14 15 + 7 11 9 + 8 3 3 + 9 3 2.4 + 10 0 .6 + + +WILL CONSOLIDATE CATEGORIES 1-3 AND 8-10, SO THAT +EXPECTED VALUE IN EACH IS >= 5, AS REQUIRED BY +CHI-SQUARE TEST. + +FOR FIVE D.F., SHOULD HAVE 1.145476 <= CHI-SQ <= 11.0705 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 1.55556 + + *** TEST PASSED *** + + END TEST + +END PROGRAM 133 diff --git a/NBS2/P134.80 b/NBS2/P134.80 new file mode 100644 index 0000000..f897823 --- /dev/null +++ b/NBS2/P134.80 @@ -0,0 +1,74 @@ +PROGRAM FILE 134: KOMOLGOROV-SMIRNOV UNIFORMITY TEST FOR + RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 134.1: KOMOLGOROV-SMIRNOV UNIFORMITY TEST FOR + RND FUNCTION. + +THIS PROGRAM RUNS 30 TESTS OF 1000 SAMPLES EACH TO CHECK +UNIFORMITY OF DISTRIBUTION OF RANDOM NUMBERS. KOMOLGOROV- +SMIRNOV (K-S) STATISTICS (K+ AND K-) ARE GENERATED FOR +EACH TEST. THESE TWO NUMBERS ARE A MEASURE OF THE GREATEST +DEVIATION, IN THE POSITIVE AND NEGATIVE DIRECTION, OF THE +ACCUMULATION OF THE 1000 NUMBERS FROM THE IDEAL DISTRIBUTION +OF F(X)=X, 0<=X<1. + +THESE TWO SETS (K+ AND K-) OF 30 STATISTICS THEMSELVES HAVE +AN EXPECTED DISTRIBUTION OF F(X) = 1 - EXP(-2*X*X). THE +K-S TEST IS RUN AGAIN ON EACH OF THESE TWO SETS, AND IF +THE DEVIATION IS TOO GREAT (TOP OR BOTTOM 1%) FOR ANY ONE +OF THE RESULTING STATISTICS, THEN THE TEST FAILS. + + BEGIN TEST + + +TEST K+ K- + 1 .45523 .595488 + 2 .988115 .378654 + 3 .794192 .135876 + 4 .449372 .549567 + 5 .423212 .620993 + 6 .438139 .357999 + 7 .336397 .850161 + 8 .694538 .349392 + 9 .520826 .617221 + 10 1.07113 .341656 + 11 .377583 .620679 + 12 .380771 .932965 + 13 .985349 .208854 + 14 .114939 .814205 + 15 .491076 .825009 + 16 .932995 .170729 + 17 .402152 .753239 + 18 .899287 .311487 + 19 1.16556 .142661 + 20 .605815 .315683 + 21 4.64517E-2 1.50504 + 22 .622752 .71263 + 23 .798493 .256347 + 24 .516858 .711673 + 25 .107246 .924347 + 26 .471567 .451034 + 27 .211972 .947588 + 28 .405545 .532419 + 29 .647631 .321755 + 30 .654656 .786338 + +SUMMARY K-S STATISTICS FOR THE K+ VALUES +K+ = .810345 K- = .445969 + + +SUMMARY K-S STATISTICS FOR THE K- VALUES +K+ = .825382 K- = .198557 + + +ALL RESULTS SHOULD FALL BETWEEN .04354 AND 1.4801 + +*** TEST PASSED *** + + + END TEST + +END PROGRAM 134 + +Program interrupted at line 1420 diff --git a/NBS2/P134.BAS b/NBS2/P134.BAS new file mode 100644 index 0000000..00d0fe4 --- /dev/null +++ b/NBS2/P134.BAS @@ -0,0 +1,182 @@ +10 PRINT "PROGRAM FILE 134: KOMOLGOROV-SMIRNOV UNIFORMITY TEST FOR" +15 PRINT " RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 134.1: KOMOLGOROV-SMIRNOV UNIFORMITY TEST FOR" +50 PRINT " RND FUNCTION." +60 PRINT +70 PRINT "THIS PROGRAM RUNS 30 TESTS OF 1000 SAMPLES EACH TO CHECK" +80 PRINT "UNIFORMITY OF DISTRIBUTION OF RANDOM NUMBERS. KOMOLGOROV-" +90 PRINT "SMIRNOV (K-S) STATISTICS (K+ AND K-) ARE GENERATED FOR" +100 PRINT "EACH TEST. THESE TWO NUMBERS ARE A MEASURE OF THE GREATEST" +110 PRINT "DEVIATION, IN THE POSITIVE AND NEGATIVE DIRECTION, OF THE" +120 PRINT "ACCUMULATION OF THE 1000 NUMBERS FROM THE IDEAL DISTRIBUTION" +130 PRINT "OF F(X)=X, 0<=X<1." +140 PRINT +150 PRINT "THESE TWO SETS (K+ AND K-) OF 30 STATISTICS THEMSELVES HAVE" +160 PRINT "AN EXPECTED DISTRIBUTION OF F(X) = 1 - EXP(-2*X*X). THE" +170 PRINT "K-S TEST IS RUN AGAIN ON EACH OF THESE TWO SETS, AND IF" +180 PRINT "THE DEVIATION IS TOO GREAT (TOP OR BOTTOM 1%) FOR ANY ONE " +190 PRINT "OF THE RESULTING STATISTICS, THEN THE TEST FAILS." +200 PRINT +210 PRINT " BEGIN TEST" +220 PRINT +230 DIM P(1200),Q(30),R(30) +240 REM SET #TRIALS PER EXPERIMENT +250 LET N=1000 +260 REM SET #SLOTS USED IN ARRAY +270 LET N8=INT(1.1*N) +280 REM SET #EXPERIMENTS +290 LET N9=30 +300 PRINT +310 REM BEGIN TEST LOOP +320 PRINT "TEST","K+","K-" +330 FOR L=1 TO N9 +340 REM MARK SLOTS AS EMPTY +350 FOR I=1 TO N8 +360 LET P(I)=3 +370 NEXT I +380 REM FILL SLOTS WITH RANDOM VALUES, APPROXIMATELY IN ORDER +390 FOR I=1 TO N +400 LET X=RND +410 LET X1=INT(N8*X) +411 REM MR. HAM ADDED NEXT 2 LINES TO FIX TEST +412 IF X1>0 THEN 420 +413 LET X1=X1+1 +420 IF P(X1)<>3 THEN 460 +430 LET P(X1)=X +440 GOTO 590 +450 REM IF PRIMARY SLOT FILLED, SEARCH FOR NEAREST EMPTY SLOT +460 FOR J=1 TO N8 +470 IF X1-J<1 THEN 510 +480 IF P(X1-J)<>3 THEN 510 +490 LET P(X1-J)=X +500 GOTO 590 +510 IF X1+J>N8 THEN 550 +520 IF P(X1+J)<>3 THEN 550 +530 LET P(X1+J)=X +540 GOTO 590 +550 NEXT J +560 PRINT "RED ALERT - NO SLOT FOUND",I,X +570 PRINT "FATAL ERROR IN PROGRAM ALGORITHM" +580 STOP +590 NEXT I +600 REM FIND GROUPS SEPARATED BY EMPTY SLOTS +605 REM ASSERT ALL ELEMENTS OF ONE GROUP < ALL ELEMENTS OF NEXT GROUP +607 REM THEREFORE, NEED SORT ONLY WITHIN GROUPS +610 LET I=1 +620 FOR I8=I TO N8 +630 IF P(I8)<>3 THEN 660 +640 NEXT I8 +650 GOTO 930 +660 FOR I9=I8 TO N8 +670 IF P(I9)=3 THEN 700 +680 NEXT I9 +690 LET I9=N8+1 +700 IF I8>=I9-1 THEN 720 +710 GOSUB 750 +720 LET I=I9 +730 GOTO 620 +740 REM BUBBLE-SORT A GROUP +750 LET I5=I8 +760 LET I6=I9-2 +770 LET I7=1 +780 LET A3=0 +790 FOR J1=I5 TO I6 STEP I7 +800 IF P(J1)<=P(J1+1) THEN 850 +810 LET A3=9 +820 LET W=P(J1) +830 LET P(J1)=P(J1+1) +840 LET P(J1+1)=W +850 NEXT J1 +860 REM REVERSE DIRECTION OF SCAN +870 LET W=I5 +880 LET I5=I6 +890 LET I6=W +900 LET I7=0-I7 +910 IF A3<>0 THEN 780 +920 RETURN +930 REM GROUPS SORTED, DO COMPRESS +940 LET S1=0 +950 FOR R1=1 TO N +960 LET S1=S1+1 +970 IF P(S1)=3 THEN 960 +980 LET P(R1)=P(S1) +990 NEXT R1 +1000 LET M1=-1E38 +1010 LET M2=-1E38 +1020 REM FIND K+ AND K- ON PRIMARY DATA +1030 FOR I=1 TO N +1040 LET N1=(I/N)-P(I) +1050 LET N2=P(I)-((I-1)/N) +1060 IF N1= 10. + + +GAP SIZE ACTUAL COUNT EXPECTED COUNT + + 0 23 25.9 + 1 25 23.31 + 2 8 20.979 + 3 18 18.8811 + 4 23 16.993 + 5 20 15.2937 + 6 16 13.7643 + 7 18 12.3879 + 8 12 11.1491 + 9 14 10.0342 +>= 10 82 90.3077 + +FOR 10 D.F., SHOULD HAVE 3.9403 <= CHI-SQ <= 18.307 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 17.392 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 136 diff --git a/NBS2/P136.BAS b/NBS2/P136.BAS new file mode 100644 index 0000000..9049ff7 --- /dev/null +++ b/NBS2/P136.BAS @@ -0,0 +1,85 @@ +10 PRINT "PROGRAM FILE 136: GAP TEST FOR RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 136.1: GAP TEST FOR RND FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS THAT THE GAPS BETWEEN NUMBERS WITHIN" +70 PRINT "A SPECIFIED INTERVAL ARE DISTRIBUTED AS EXPECTED FOR" +80 PRINT "UNIFORMLY DISTRIBUTED RANDOM NUMBERS. CHI-SQUARE IS" +90 PRINT "COMPUTED AND DISPLAYED AS THE RESULT." +100 PRINT +110 PRINT "***** THIS TEST IS INFORMATIVE ONLY. *****" +120 PRINT +130 PRINT " BEGIN TEST" +140 PRINT +150 DIM C(121) +160 REM SET BOUNDS FOR GAP TEST +170 REM CONSOLIDATE ALL GAPS >= 10 +180 LET T=10 +190 REM SET LOW END OF HIT INTERVAL +200 LET A1=.03 +210 REM SET HIGH END OF HIT INTERVAL +220 LET A2=.13 +230 REM SET SIZE OF HIT INTERVAL +240 LET A3=A2-A1 +250 REM PROB. THAT GAP >= T +260 LET P1=(1-A3)^T +270 REM PROB. THAT GAP = T-1 +280 LET P2=A3*((1-A3)^(T-1)) +290 IF P1= 10 +330 LET N=INT(10/P1)+1 +340 PRINT +350 PRINT "WILL RUN ";N;" TRIALS, SO THAT EACH POSSIBILITY HAS" +360 PRINT "EXPECTED VALUE >= 10." +370 FOR I=0 TO T +380 LET C(I)=0 +390 NEXT I +400 PRINT +410 PRINT +420 PRINT "GAP SIZE","ACTUAL COUNT","EXPECTED COUNT" +430 PRINT +440 FOR N1=1 TO N +450 LET R=0 +460 LET X=RND +470 IF X=";I,C(I),P9*N +650 LET S=S+(C(I)*C(I)/P9) +660 NEXT I +670 LET V=(S/N)-N +680 PRINT +690 PRINT "FOR 10 D.F., SHOULD HAVE 3.9403 <= CHI-SQ <= 18.307" +700 PRINT "(5% TAIL AT EACH END.)" +710 PRINT +720 PRINT "ACTUAL CHI-SQ = ";V +730 PRINT +740 IF V<3.9403 THEN 780 +750 IF V>18.307 THEN 780 +760 PRINT "*** INFORMATIVE TEST PASSED ***" +770 GOTO 790 +780 PRINT "*** INFORMATIVE TEST FAILED ***" +790 PRINT +800 PRINT " END TEST" +810 PRINT +820 PRINT "END PROGRAM 136" +830 END diff --git a/NBS2/P136.OUT b/NBS2/P136.OUT new file mode 100644 index 0000000..4dd6d60 --- /dev/null +++ b/NBS2/P136.OUT @@ -0,0 +1,43 @@ +PROGRAM FILE 136: GAP TEST FOR RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 136.1: GAP TEST FOR RND FUNCTION. + +THIS PROGRAM TESTS THAT THE GAPS BETWEEN NUMBERS WITHIN +A SPECIFIED INTERVAL ARE DISTRIBUTED AS EXPECTED FOR +UNIFORMLY DISTRIBUTED RANDOM NUMBERS. CHI-SQUARE IS +COMPUTED AND DISPLAYED AS THE RESULT. + +***** THIS TEST IS INFORMATIVE ONLY. ***** + + BEGIN TEST + + +WILL RUN 259 TRIALS, SO THAT EACH POSSIBILITY HAS +EXPECTED VALUE >= 10. + + +GAP SIZE ACTUAL COUNT EXPECTED COUNT + + 0 23 25.9 + 1 25 23.31 + 2 8 20.979 + 3 18 18.8811 + 4 23 16.993 + 5 20 15.2937 + 6 16 13.7643 + 7 18 12.3879 + 8 12 11.1491 + 9 14 10.0342 +>= 10 82 90.3077 + +FOR 10 D.F., SHOULD HAVE 3.9403 <= CHI-SQ <= 18.307 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 17.392 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 136 diff --git a/NBS2/P136.dif b/NBS2/P136.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P136.run b/NBS2/P136.run new file mode 100644 index 0000000..823578e --- /dev/null +++ b/NBS2/P136.run @@ -0,0 +1,43 @@ +PROGRAM FILE 136: GAP TEST FOR RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 136.1: GAP TEST FOR RND FUNCTION. + +THIS PROGRAM TESTS THAT THE GAPS BETWEEN NUMBERS WITHIN +A SPECIFIED INTERVAL ARE DISTRIBUTED AS EXPECTED FOR +UNIFORMLY DISTRIBUTED RANDOM NUMBERS. CHI-SQUARE IS +COMPUTED AND DISPLAYED AS THE RESULT. + +***** THIS TEST IS INFORMATIVE ONLY. ***** + + BEGIN TEST + + +WILL RUN 259 TRIALS, SO THAT EACH POSSIBILITY HAS +EXPECTED VALUE >= 10. + + +GAP SIZE ACTUAL COUNT EXPECTED COUNT + + 0 23 25.9 + 1 25 23.31 + 2 8 20.979 + 3 18 18.8811 + 4 23 16.993 + 5 20 15.2937 + 6 16 13.7643 + 7 18 12.3879 + 8 12 11.1491 + 9 14 10.0342 +>= 10 82 90.3077 + +FOR 10 D.F., SHOULD HAVE 3.9403 <= CHI-SQ <= 18.307 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 17.392 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 136 diff --git a/NBS2/P137.80 b/NBS2/P137.80 new file mode 100644 index 0000000..48e9271 --- /dev/null +++ b/NBS2/P137.80 @@ -0,0 +1,39 @@ +PROGRAM FILE 137: POKER TEST FOR RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 137.1: POKER TEST FOR RND FUNCTION. + +THIS PROGRAM CATEGORIZES FIXED-SIZE GROUPS OF RANDOM NUMBERS +BASED ON HOW MANY DIFFERENT TYPES OF NUMBER ARE IN EACH +GROUP. A TYPE IS DETERMINED BY WHICH FRACTION OF THE 0 - 1 +SEGMENT THE VALUE OF THE NUMBER FALLS WITHIN. CHI-SQUARE +IS THEN COMPUTED AND DISPLAYED AS THE RESULT TO SEE IF +IT IS COMPATIBLE WITH THE EXPECTED DISTRIBUTION FOR UNIFORM +RANDOM NUMBERS. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +RUNNING 12005 TRIALS, SO THAT EACH POSSIBILITY HAS +EXPECTED VALUE >= 5, AS NEEDED FOR CHI-SQUARE TEST. + +#TYPES ACTUAL COUNT EXPECTED COUNT + 1 6 5 + 2 435 450 + 3 3821 3750 + 4 5915 6000 + 5 1828 1800 + +FOR FOUR D.F., SHOULD HAVE .710721 <= CHI-SQ <= 9.48773 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 3.68399 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 137 + +Program interrupted at line 830 diff --git a/NBS2/P137.BAS b/NBS2/P137.BAS new file mode 100644 index 0000000..305a2cb --- /dev/null +++ b/NBS2/P137.BAS @@ -0,0 +1,114 @@ +10 PRINT "PROGRAM FILE 137: POKER TEST FOR RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 137.1: POKER TEST FOR RND FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM CATEGORIZES FIXED-SIZE GROUPS OF RANDOM NUMBERS" +70 PRINT "BASED ON HOW MANY DIFFERENT TYPES OF NUMBER ARE IN EACH" +80 PRINT "GROUP. A TYPE IS DETERMINED BY WHICH FRACTION OF THE 0 - 1" +90 PRINT "SEGMENT THE VALUE OF THE NUMBER FALLS WITHIN. CHI-SQUARE" +100 PRINT "IS THEN COMPUTED AND DISPLAYED AS THE RESULT TO SEE IF" +110 PRINT "IT IS COMPATIBLE WITH THE EXPECTED DISTRIBUTION FOR UNIFORM" +120 PRINT "RANDOM NUMBERS." +130 PRINT +140 PRINT "***** THIS TEST IS INFORMATIVE ONLY *****" +150 PRINT +160 PRINT " BEGIN TEST" +170 PRINT +180 DIM B(20) +190 REM SET SIZE OF GROUPS +200 LET K=5 +210 REM SET #TYPES +220 LET D=7 +230 IF D>=K THEN 260 +240 PRINT "ALGORITHM INVALID FOR D= 5, AS NEEDED FOR CHI-SQUARE TEST." +290 PRINT +300 FOR I=1 TO K +310 LET C(I)=0 +320 NEXT I +330 FOR N1=1 TO N +340 LET R=0 +350 REM MARK B-ARRAY AS NO TYPE S HIT SO FAR +360 FOR I=1 TO D +370 LET B(I)=0 +380 NEXT I +390 FOR I=1 TO K +400 LET J=INT(D*RND)+1 +410 IF B(J)=1 THEN 450 +420 REM GOT A NEW TYPE, MARK AND COUNT +430 LET R=R+1 +440 LET B(J)=1 +450 NEXT I +460 LET C(R)=C(R)+1 +470 NEXT N1 +480 LET S=0 +490 REM SET TOTAL #POSSIBILITIES +500 LET D1=D^K +510 PRINT "#TYPES","ACTUAL COUNT","EXPECTED COUNT" +520 FOR I=1 TO K +530 LET F=1 +540 FOR J=(D-I)+1 TO D +550 LET F=F*J +560 NEXT J +570 LET R=I +580 REM GET STIRLING NUMBER FOR K,R +590 REM RESULT IN A9 +600 GOSUB 840 +610 REM F=PROB OF I DIFFERENT TYPES +620 LET F=(F*A9)/D1 +630 PRINT I,C(I),F*N +640 LET S=S+(C(I)*C(I))/F +650 NEXT I +660 LET V=(S/N) - N +670 REM CHI-SQ FOR 4 D.F. +680 PRINT +690 PRINT "FOR FOUR D.F., SHOULD HAVE .710721 <= CHI-SQ <= 9.48773" +700 PRINT "(5% TAIL AT EACH END.)" +710 PRINT +720 PRINT "ACTUAL CHI-SQ = ";V +730 PRINT +740 IF V<.710721 THEN 780 +750 IF V>9.48773 THEN 780 +760 PRINT "*** INFORMATIVE TEST PASSED ***" +770 GOTO 790 +780 PRINT "*** INFORMATIVE TEST FAILED ***" +790 PRINT +800 PRINT " END TEST" +810 PRINT +820 PRINT "END PROGRAM 137" +830 STOP +840 REM GIVEN K,R, WHAT IS STIRLING NUMBER? +850 REM ANSWER RETURNED IN A9 +860 IF R>K THEN 910 +870 IF R=K THEN 930 +880 IF R=1 THEN 930 +890 IF R=0 THEN 910 +900 GOTO 950 +910 LET A9=0 +920 GOTO 1130 +930 LET A9=1 +940 GOTO 1130 +950 DIM A(20) +960 REM THIS LIMITS RANGE OF ROUTINE TO R<=20 (K UNCONSTRAINED) +970 FOR I8=1 TO 20 +980 LET A(I8)=1 +990 NEXT I8 +1000 LET K9=K-R +1010 FOR K1=3 TO K +1020 LET M1=R +1030 IF RK1-K9 THEN 1080 +1070 LET M2=K1-K9 +1080 FOR R1=M1 TO M2 STEP -1 +1090 LET A(R1)=R1*A(R1)+A(R1-1) +1100 NEXT R1 +1110 NEXT K1 +1120 LET A9=A(R) +1130 RETURN +1140 END diff --git a/NBS2/P137.OUT b/NBS2/P137.OUT new file mode 100644 index 0000000..fdd4ea7 --- /dev/null +++ b/NBS2/P137.OUT @@ -0,0 +1,39 @@ +PROGRAM FILE 137: POKER TEST FOR RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 137.1: POKER TEST FOR RND FUNCTION. + +THIS PROGRAM CATEGORIZES FIXED-SIZE GROUPS OF RANDOM NUMBERS +BASED ON HOW MANY DIFFERENT TYPES OF NUMBER ARE IN EACH +GROUP. A TYPE IS DETERMINED BY WHICH FRACTION OF THE 0 - 1 +SEGMENT THE VALUE OF THE NUMBER FALLS WITHIN. CHI-SQUARE +IS THEN COMPUTED AND DISPLAYED AS THE RESULT TO SEE IF +IT IS COMPATIBLE WITH THE EXPECTED DISTRIBUTION FOR UNIFORM +RANDOM NUMBERS. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +RUNNING 12005 TRIALS, SO THAT EACH POSSIBILITY HAS +EXPECTED VALUE >= 5, AS NEEDED FOR CHI-SQUARE TEST. + +#TYPES ACTUAL COUNT EXPECTED COUNT + 1 6 5 + 2 435 450 + 3 3821 3750 + 4 5915 6000 + 5 1828 1800 + +FOR FOUR D.F., SHOULD HAVE .710721 <= CHI-SQ <= 9.48773 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 3.68399 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 137 + +Program interrupted at line 830 diff --git a/NBS2/P137.dif b/NBS2/P137.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P137.run b/NBS2/P137.run new file mode 100644 index 0000000..48e9271 --- /dev/null +++ b/NBS2/P137.run @@ -0,0 +1,39 @@ +PROGRAM FILE 137: POKER TEST FOR RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 137.1: POKER TEST FOR RND FUNCTION. + +THIS PROGRAM CATEGORIZES FIXED-SIZE GROUPS OF RANDOM NUMBERS +BASED ON HOW MANY DIFFERENT TYPES OF NUMBER ARE IN EACH +GROUP. A TYPE IS DETERMINED BY WHICH FRACTION OF THE 0 - 1 +SEGMENT THE VALUE OF THE NUMBER FALLS WITHIN. CHI-SQUARE +IS THEN COMPUTED AND DISPLAYED AS THE RESULT TO SEE IF +IT IS COMPATIBLE WITH THE EXPECTED DISTRIBUTION FOR UNIFORM +RANDOM NUMBERS. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +RUNNING 12005 TRIALS, SO THAT EACH POSSIBILITY HAS +EXPECTED VALUE >= 5, AS NEEDED FOR CHI-SQUARE TEST. + +#TYPES ACTUAL COUNT EXPECTED COUNT + 1 6 5 + 2 435 450 + 3 3821 3750 + 4 5915 6000 + 5 1828 1800 + +FOR FOUR D.F., SHOULD HAVE .710721 <= CHI-SQ <= 9.48773 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 3.68399 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 137 + +Program interrupted at line 830 diff --git a/NBS2/P138.80 b/NBS2/P138.80 new file mode 100644 index 0000000..f1f65a5 --- /dev/null +++ b/NBS2/P138.80 @@ -0,0 +1,52 @@ +PROGRAM FILE 138: COUPON COLLECTOR TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 138.1: COUPON COLLECTOR TEST OF RND FUNCTION. + +THIS PROGRAM TESTS HOW MANY RANDOM NUMBERS MUST BE GENERATED +(UP TO A MAXIMUM) TO GET AT LEAST ONE OF EACH TYPE. A TYPE IS +DETERMINED BY WHICH FRACTION OF THE 0 - 1 SEGMENT THE VALUE +OF THE NUMBER FALLS WITHIN. CHI-SQUARE IS COMPUTED AND +DISPLAYED TO SEE WHETHER IT IS COMPATIBLE WITH THE +EXPECTED DISTRIBUTION FOR UNIFORM RANDOM NUMBERS. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +SEARCH LENGTH ACTUAL COUNT EXPECTED COUNT + + 5 65 76.8 + 6 161 153.6 + 7 189 199.68 + 8 214 215.04 + 9 200 209.019 + 10 226 190.956 + 11 164 167.633 + 12 153 143.278 + 13 99 120.226 + 14 92 99.5831 + 15 86 81.724 + 16 61 66.6201 + 17 58 54.0433 + 18 52 43.6839 + 19 36 35.2171 + 20 23 28.3359 + 21 17 22.7661 + 22 23 18.2713 + 23 15 14.6521 + 24 14 11.7427 +>= 25 52 47.1289 + +FOR 20 D.F., SHOULD HAVE 10.8508 <= CHI-SQ <= 31.4104 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 21.8524 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 138 + +Program interrupted at line 880 diff --git a/NBS2/P138.BAS b/NBS2/P138.BAS new file mode 100644 index 0000000..dd3dd9a --- /dev/null +++ b/NBS2/P138.BAS @@ -0,0 +1,118 @@ +10 PRINT "PROGRAM FILE 138: COUPON COLLECTOR TEST OF RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 138.1: COUPON COLLECTOR TEST OF RND FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS HOW MANY RANDOM NUMBERS MUST BE GENERATED" +70 PRINT "(UP TO A MAXIMUM) TO GET AT LEAST ONE OF EACH TYPE. A TYPE IS" +80 PRINT "DETERMINED BY WHICH FRACTION OF THE 0 - 1 SEGMENT THE VALUE" +90 PRINT "OF THE NUMBER FALLS WITHIN. CHI-SQUARE IS COMPUTED AND" +110 PRINT "DISPLAYED TO SEE WHETHER IT IS COMPATIBLE WITH THE" +120 PRINT "EXPECTED DISTRIBUTION FOR UNIFORM RANDOM NUMBERS." +130 PRINT +140 PRINT "***** THIS TEST IS INFORMATIVE ONLY *****" +150 PRINT +160 PRINT " BEGIN TEST" +170 DIM C(30) +180 DIM O(20) +190 REM SET #TRIALS +200 LET N=2000 +210 REM SET #TYPES +220 LET D=5 +230 REM SET MAX LENGTH +240 LET T=25 +250 REM C-ARRAY COUNTS HOW MANY SEARCHES OF EACH LENGTH WERE DONE +260 FOR I=1 TO T +270 LET C(I)=0 +280 NEXT I +290 FOR N1=1 TO N +300 REM R COUNTS LENGTH OF SEARCH +310 LET R=0 +320 REM Q COUNTS NUMBER OF DISTINCT TYPES SO FAR +330 LET Q=0 +340 REM O-ARRAY KEEPS TRACK OF WHICH TYPES HAVE BEEN HIT SO FAR +350 FOR I=0 TO D-1 +360 LET O(I)=0 +370 NEXT I +380 LET R=R+1 +390 LET X=INT(RND*D) +400 IF O(X)=1 THEN 380 +410 LET O(X)=1 +420 LET Q=Q+1 +430 IF Q=";T,C(T),N*P +720 LET S=S+(C(T)*C(T))/P +730 LET V=(S/N) - N +735 PRINT +740 PRINT "FOR 20 D.F., SHOULD HAVE 10.8508 <= CHI-SQ <= 31.4104" +750 PRINT "(5% TAIL AT EACH END.)" +760 PRINT +770 PRINT "ACTUAL CHI-SQ = ";V +780 PRINT +790 IF V<10.8508 THEN 830 +800 IF V>31.4104 THEN 830 +810 PRINT "*** INFORMATIVE TEST PASSED ***" +820 GOTO 840 +830 PRINT "*** INFORMATIVE TEST FAILED ***" +840 PRINT +850 PRINT " END TEST" +860 PRINT +870 PRINT "END PROGRAM 138" +880 STOP +890 REM GIVEN K9,R9, COMPUTE STIRLING NUMBER AND RETURN IN A9 +900 IF R9>K9 THEN 950 +910 IF R9=K9 THEN 970 +920 IF R9=1 THEN 970 +930 IF R9=0 THEN 950 +940 GOTO 990 +950 LET A9=0 +960 GOTO 1170 +970 LET A9=1 +980 GOTO 1170 +990 DIM A(20) +1000 REM THIS LIMITS RANGE OF ROUTINE TO R9<=20 (K9 UNCONSTRAINED) +1010 FOR I8=1 TO 20 +1020 LET A(I8)=1 +1030 NEXT I8 +1040 LET K8=K9-R9 +1050 FOR K1=3 TO K9 +1060 LET M1=R9 +1070 IF R9K1-K8 THEN 1120 +1110 LET M2=K1-K8 +1120 FOR R1=M1 TO M2 STEP -1 +1130 LET A(R1)=R1*A(R1)+A(R1-1) +1140 NEXT R1 +1150 NEXT K1 +1160 LET A9=A(R9) +1170 RETURN +1180 END diff --git a/NBS2/P138.OUT b/NBS2/P138.OUT new file mode 100644 index 0000000..76202a1 --- /dev/null +++ b/NBS2/P138.OUT @@ -0,0 +1,52 @@ +PROGRAM FILE 138: COUPON COLLECTOR TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 138.1: COUPON COLLECTOR TEST OF RND FUNCTION. + +THIS PROGRAM TESTS HOW MANY RANDOM NUMBERS MUST BE GENERATED +(UP TO A MAXIMUM) TO GET AT LEAST ONE OF EACH TYPE. A TYPE IS +DETERMINED BY WHICH FRACTION OF THE 0 - 1 SEGMENT THE VALUE +OF THE NUMBER FALLS WITHIN. CHI-SQUARE IS COMPUTED AND +DISPLAYED TO SEE WHETHER IT IS COMPATIBLE WITH THE +EXPECTED DISTRIBUTION FOR UNIFORM RANDOM NUMBERS. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +SEARCH LENGTH ACTUAL COUNT EXPECTED COUNT + + 5 65 76.8 + 6 161 153.6 + 7 189 199.68 + 8 214 215.04 + 9 200 209.019 + 10 226 190.956 + 11 164 167.633 + 12 153 143.278 + 13 99 120.226 + 14 92 99.5831 + 15 86 81.724 + 16 61 66.6201 + 17 58 54.0433 + 18 52 43.6839 + 19 36 35.2171 + 20 23 28.3359 + 21 17 22.7661 + 22 23 18.2713 + 23 15 14.6521 + 24 14 11.7427 +>= 25 52 47.1289 + +FOR 20 D.F., SHOULD HAVE 10.8508 <= CHI-SQ <= 31.4104 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 21.8524 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 138 + +Program interrupted at line 880 diff --git a/NBS2/P138.dif b/NBS2/P138.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P138.run b/NBS2/P138.run new file mode 100644 index 0000000..f1f65a5 --- /dev/null +++ b/NBS2/P138.run @@ -0,0 +1,52 @@ +PROGRAM FILE 138: COUPON COLLECTOR TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 138.1: COUPON COLLECTOR TEST OF RND FUNCTION. + +THIS PROGRAM TESTS HOW MANY RANDOM NUMBERS MUST BE GENERATED +(UP TO A MAXIMUM) TO GET AT LEAST ONE OF EACH TYPE. A TYPE IS +DETERMINED BY WHICH FRACTION OF THE 0 - 1 SEGMENT THE VALUE +OF THE NUMBER FALLS WITHIN. CHI-SQUARE IS COMPUTED AND +DISPLAYED TO SEE WHETHER IT IS COMPATIBLE WITH THE +EXPECTED DISTRIBUTION FOR UNIFORM RANDOM NUMBERS. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +SEARCH LENGTH ACTUAL COUNT EXPECTED COUNT + + 5 65 76.8 + 6 161 153.6 + 7 189 199.68 + 8 214 215.04 + 9 200 209.019 + 10 226 190.956 + 11 164 167.633 + 12 153 143.278 + 13 99 120.226 + 14 92 99.5831 + 15 86 81.724 + 16 61 66.6201 + 17 58 54.0433 + 18 52 43.6839 + 19 36 35.2171 + 20 23 28.3359 + 21 17 22.7661 + 22 23 18.2713 + 23 15 14.6521 + 24 14 11.7427 +>= 25 52 47.1289 + +FOR 20 D.F., SHOULD HAVE 10.8508 <= CHI-SQ <= 31.4104 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 21.8524 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 138 + +Program interrupted at line 880 diff --git a/NBS2/P139.80 b/NBS2/P139.80 new file mode 100644 index 0000000..ad7eab8 --- /dev/null +++ b/NBS2/P139.80 @@ -0,0 +1,54 @@ +PROGRAM FILE 139: PERMUTATION TEST FOR THE RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 139.1: PERMUTATION TEST FOR THE RND FUNCTION. + +THIS PROGRAM TESTS TO SEE THAT WITHIN FIXED SIZE GROUPS +OF RANDOM NUMBERS, ALL ORDERS OF THE VALUES ARE EQUALLY +PROBABLE. CHI-SQUARE IS COMPUTED AND DISPLAYED TO SEE +WHETHER THE RESULTS ARE COMPATIBLE WITH THE EXPECTED +EXPECTED DISTRIBUTION FOR UNIFORM RANDOM NUMBERS. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + + +ORDER ID ACTUAL COUNT +(EXPECTED COUNT = 10 FOR ALL CASES.) + + 0 14 + 1 11 + 2 10 + 3 10 + 4 9 + 5 18 + 6 12 + 7 13 + 8 9 + 9 10 + 10 7 + 11 5 + 12 17 + 13 6 + 14 9 + 15 9 + 16 5 + 17 9 + 18 13 + 19 9 + 20 11 + 21 9 + 22 7 + 23 8 + +FOR 23 D.F., SHOULD HAVE 13.0905 <= CHI-SQ <= 35.1725 +(5% TAIL AT EACH END.) + +ACTUAL CHI-SQ = 24.8 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 139 diff --git a/NBS2/P139.BAS b/NBS2/P139.BAS new file mode 100644 index 0000000..7287f8b --- /dev/null +++ b/NBS2/P139.BAS @@ -0,0 +1,76 @@ +10 PRINT "PROGRAM FILE 139: PERMUTATION TEST FOR THE RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 139.1: PERMUTATION TEST FOR THE RND FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE THAT WITHIN FIXED SIZE GROUPS" +70 PRINT "OF RANDOM NUMBERS, ALL ORDERS OF THE VALUES ARE EQUALLY" +80 PRINT "PROBABLE. CHI-SQUARE IS COMPUTED AND DISPLAYED TO SEE" +90 PRINT "WHETHER THE RESULTS ARE COMPATIBLE WITH THE EXPECTED" +100 PRINT "EXPECTED DISTRIBUTION FOR UNIFORM RANDOM NUMBERS." +110 PRINT +120 PRINT "***** THIS TEST IS INFORMATIVE ONLY *****" +130 PRINT +140 PRINT " BEGIN TEST" +150 PRINT +160 DIM C(25) +170 REM SET SIZE OF GROUP: +180 LET T=4 +190 LET T1=1 +200 REM T1=T1 +210 FOR I=2 TO T +220 LET T1=T1*I +230 NEXT I +240 REM SET #TRIALS +250 LET N=10*T1 +260 FOR I=0 TO T1 +270 LET C(I)=0 +280 NEXT I +290 FOR N1=1 TO N +300 LET A=0 +310 LET K=1 +320 FOR I=1 TO T +330 LET B(I)=RND +340 NEXT I +350 FOR R=T TO 1 STEP -1 +360 LET M1=-1 +370 REM FIND MAX OF REMAINDER OF THIS GROUP +380 FOR I=1 TO R +390 IF B(I)= 6 ARE CONSOLIDATED +INT ONE CATEGORY. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +RUN LENGTH ACTUAL COUNT EXPECTED COUNT + 1 823 833.335 + 2 1049 1041.66 + 3 449 458.334 + 4 135 131.945 + 5 33 28.7698 +>= 6 4 5.9524 + +FOR 6 D.F., SHOULD HAVE 1.63539 <= CHI-SQ <= 12.5916 +(5% TAIL ON EACH END.) + +ACTUAL CHI-SQ = 6.66211 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 140 diff --git a/NBS2/P140.BAS b/NBS2/P140.BAS new file mode 100644 index 0000000..2695ba0 --- /dev/null +++ b/NBS2/P140.BAS @@ -0,0 +1,90 @@ +10 PRINT "PROGRAM FILE 140: RUNS TEST FOR THE RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 140.1: RUNS TEST FOR THE RND FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM COUNTS HOW MANY RUNS OF A GIVEN LENGTH OCCUR" +70 PRINT "WITHIN A SERIES OF RANDOM NUMBERS. A RUN IS A SUBSEQUENCE" +80 PRINT "OF THE NUMBERS WITHIN WHICH THE VALUES ARE IN ASCENDING" +90 PRINT "ORDER. THE RESULTS ARE COMPARED WITH THE EXPECTED OUTCOME" +100 PRINT "FOR UNIFORM RANDOM NUMBERS, AND CHI-SQUARE IS COMPUTED" +110 PRINT "AND DISPLAYED. ALL RUNS OF LENGTH >= 6 ARE CONSOLIDATED" +120 PRINT "INT ONE CATEGORY." +130 PRINT +140 PRINT "***** THIS TEST IS INFORMATIVE ONLY *****" +150 PRINT +160 PRINT " BEGIN TEST" +170 PRINT +180 LET T=6 +190 LET N=5000 +200 REM ZERO OUT TYPE COUNTS FOR RUNS +210 FOR I=1 TO T +220 LET C(I)=0 +230 NEXT I +240 LET Y=RND +250 REM GATHER STATS ON N TRIALS +260 LET N1=1 +270 REM COUNT LENGTH OF NEW RUN +280 LET K=1 +290 LET X=RND +300 LET N1=N1+1 +310 IF N1>N THEN 390 +320 REM TO TEST RUNS DOWN, SIMPLY CHANGE "<" TO ">" IN NEXT LINE +330 IF X="; +530 PRINT I,C(I),N*F +540 NEXT I +550 LET S=0 +560 REM COMPUTE MATRIX SUM +570 FOR I=1 TO T +580 FOR J=1 TO T +590 REM READ A-MATRIX VALUES +600 READ F +610 LET S=S+(W(I)*W(J)*F) +620 NEXT J +630 NEXT I +640 LET V=S/N +650 PRINT +660 PRINT "FOR 6 D.F., SHOULD HAVE 1.63539 <= CHI-SQ <= 12.5916" +670 PRINT "(5% TAIL ON EACH END.)" +680 PRINT +690 PRINT "ACTUAL CHI-SQ = ";V +700 REM V SHOULD BE DISTRIBUTED AS CHI-SQ WITH 6 D.F +710 PRINT +720 IF V<1.63539 THEN 760 +730 IF V>12.5916 THEN 760 +740 PRINT "*** INFORMATIVE TEST PASSED ***" +750 GOTO 770 +760 PRINT "*** INFORMATIVE TEST FAILED ***" +770 PRINT +780 PRINT " END TEST" +790 PRINT +800 PRINT "END PROGRAM 140" +810 REM DATA FOR B-ARRAY: +820 DATA .166667,.208333,9.16667E-2,2.63889E-2,5.75397E-3,1.19048E-3 +830 REM DATA FOR (CONCEPTUAL) A-MATRIX: +840 DATA 4529.4, 9044.9, 13568, 18091, 22615, 27892 +850 DATA 9044.9, 18097, 27139, 36187, 45234, 55789 +860 DATA 13568, 27139, 40721, 54281, 67852, 83685 +870 DATA 18091, 36187, 54281, 72414, 90470, 111580 +880 DATA 22615, 45234, 67852, 90470, 113262,139476 +890 DATA 27892, 55789, 83685, 111580,139476,172860 +900 END diff --git a/NBS2/P140.OUT b/NBS2/P140.OUT new file mode 100644 index 0000000..231463a --- /dev/null +++ b/NBS2/P140.OUT @@ -0,0 +1,35 @@ +PROGRAM FILE 140: RUNS TEST FOR THE RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 140.1: RUNS TEST FOR THE RND FUNCTION. + +THIS PROGRAM COUNTS HOW MANY RUNS OF A GIVEN LENGTH OCCUR +WITHIN A SERIES OF RANDOM NUMBERS. A RUN IS A SUBSEQUENCE +OF THE NUMBERS WITHIN WHICH THE VALUES ARE IN ASCENDING +ORDER. THE RESULTS ARE COMPARED WITH THE EXPECTED OUTCOME +FOR UNIFORM RANDOM NUMBERS, AND CHI-SQUARE IS COMPUTED +AND DISPLAYED. ALL RUNS OF LENGTH >= 6 ARE CONSOLIDATED +INT ONE CATEGORY. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +RUN LENGTH ACTUAL COUNT EXPECTED COUNT + 1 823 833.335 + 2 1049 1041.66 + 3 449 458.334 + 4 135 131.945 + 5 33 28.7698 +>= 6 4 5.9524 + +FOR 6 D.F., SHOULD HAVE 1.63539 <= CHI-SQ <= 12.5916 +(5% TAIL ON EACH END.) + +ACTUAL CHI-SQ = 6.66211 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 140 diff --git a/NBS2/P140.dif b/NBS2/P140.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P140.run b/NBS2/P140.run new file mode 100644 index 0000000..70dda35 --- /dev/null +++ b/NBS2/P140.run @@ -0,0 +1,35 @@ +PROGRAM FILE 140: RUNS TEST FOR THE RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 140.1: RUNS TEST FOR THE RND FUNCTION. + +THIS PROGRAM COUNTS HOW MANY RUNS OF A GIVEN LENGTH OCCUR +WITHIN A SERIES OF RANDOM NUMBERS. A RUN IS A SUBSEQUENCE +OF THE NUMBERS WITHIN WHICH THE VALUES ARE IN ASCENDING +ORDER. THE RESULTS ARE COMPARED WITH THE EXPECTED OUTCOME +FOR UNIFORM RANDOM NUMBERS, AND CHI-SQUARE IS COMPUTED +AND DISPLAYED. ALL RUNS OF LENGTH >= 6 ARE CONSOLIDATED +INT ONE CATEGORY. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +RUN LENGTH ACTUAL COUNT EXPECTED COUNT + 1 823 833.335 + 2 1049 1041.66 + 3 449 458.334 + 4 135 131.945 + 5 33 28.7698 +>= 6 4 5.9524 + +FOR 6 D.F., SHOULD HAVE 1.63539 <= CHI-SQ <= 12.5916 +(5% TAIL ON EACH END.) + +ACTUAL CHI-SQ = 6.66211 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 140 diff --git a/NBS2/P141.80 b/NBS2/P141.80 new file mode 100644 index 0000000..c08867f --- /dev/null +++ b/NBS2/P141.80 @@ -0,0 +1,27 @@ +PROGRAM FILE 141: MAXIMUM OF GROUP TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 141.1: MAXIMUM OF GROUP TEST OF RND FUNCTION. + +THIS PROGRAM FINDS THE MAXIMUM RANDOM NUMBER AMONG FIXED- +SIZE GROUPS AND DETERMINES WHETHER THE DISTRIBUTION OF THE +MAXIMA IS SUFFICIENTLY CLOSE TO THE EXPECTED DISTRIBUTION +FOR UNIFORM RANDOM NUMBERS OF F(X) = X^T, WHERE T IS THE +SIZE OF THE GROUPS. THE KOMOLGOROV-SMIRNOV TEST IS USED +TO MEASURE HOW WELL THE RESULTS MATCH THE EXPECTATION. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + + + K+ = .721119 PERCENTILE FOR K+ = .646554 + K- = 7.41161E-2 PERCENTILE FOR K- = 1.09263E-2 + +PERCENTILES SHOULD BE BETWEEN .05 AND .95 + +*** INFORMATIVE TEST FAILED *** + + END TEST + +END PROGRAM 141 diff --git a/NBS2/P141.BAS b/NBS2/P141.BAS new file mode 100644 index 0000000..148c333 --- /dev/null +++ b/NBS2/P141.BAS @@ -0,0 +1,108 @@ +10 PRINT "PROGRAM FILE 141: MAXIMUM OF GROUP TEST OF RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 141.1: MAXIMUM OF GROUP TEST OF RND FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM FINDS THE MAXIMUM RANDOM NUMBER AMONG FIXED-" +70 PRINT "SIZE GROUPS AND DETERMINES WHETHER THE DISTRIBUTION OF THE" +80 PRINT "MAXIMA IS SUFFICIENTLY CLOSE TO THE EXPECTED DISTRIBUTION" +90 PRINT "FOR UNIFORM RANDOM NUMBERS OF F(X) = X^T, WHERE T IS THE" +100 PRINT "SIZE OF THE GROUPS. THE KOMOLGOROV-SMIRNOV TEST IS USED" +110 PRINT "TO MEASURE HOW WELL THE RESULTS MATCH THE EXPECTATION." +120 PRINT +130 PRINT "***** THIS TEST IS INFORMATIVE ONLY *****" +140 PRINT +150 PRINT " BEGIN TEST" +160 PRINT +170 DIM P(1000) +180 REM SET SIZE OF GROUP +190 LET T=3 +200 REM SET NUMBER OF TRIALS +210 LET N=1000 +220 FOR I=1 TO N +230 REM MARK AS EMPTY +240 LET P(I)=3 +250 NEXT I +260 FOR I=1 TO N +270 LET M=0 +280 FOR J=1 TO T +290 LET X=RND +300 IF X3 THEN 420 +380 REM PRIMARY SLOT EMPTY - FILL IN WITH M +390 LET P(X1)=M +400 GOTO 550 +410 REM IF PRIMARY SLOT FILLED, SEARCH FOR NEAREST EMPTY SLOT +420 FOR J=1 TO N +430 IF X1-J<1 THEN 470 +440 IF P(X1-J)<>3 THEN 470 +450 LET P(X1-J)=M +460 GOTO 550 +470 IF X1+J>N THEN 510 +480 IF P(X1+J)<>3 THEN 510 +490 LET P(X1+J)=M +500 GOTO 550 +510 NEXT J +520 PRINT "RED ALERT - NO SLOT FOUND",I,M +530 PRINT "ERROR IN SORT ALGORITHM - PROGRAM TERMINATES." +540 GOTO 1050 +550 NEXT I +560 REM BUBBLE-SORT TABLE VALUES +570 LET B1=1 +580 LET B3=1 +590 REM A3=0 IMPLIES NO SWAPPING DONE YET +600 LET A3=0 +610 FOR I=B1 TO N-B1 STEP B3 +620 IF P(I)<=P(I+1) THEN 670 +630 LET W=P(I) +640 LET P(I)=P(I+1) +650 LET P(I+1)=W +660 LET A3=3 +670 NEXT I +680 REM B1 AND B3 CAUSE THE BUBBLE-SORT TO ALTERNATELY SCAN THE ARRAY +690 REM FORWARDS AND BACKWARDS +700 LET B1=N-B1 +710 LET B3=-B3 +720 IF A3<>0 THEN 600 +730 LET M1=-1E38 +740 LET M2=-1E38 +750 REM FIND K+ AND K- ON PRIMARY DATA +760 FOR I=1 TO N +770 LET P1=P(I)^T +780 LET N1=(I/N) - P1 +790 LET N2=P1 - ((I-1)/N) +800 IF N1.95 THEN 1030 +990 IF P2<.05 THEN 1030 +1000 IF P2>.95 THEN 1030 +1010 PRINT "*** INFORMATIVE TEST PASSED ***" +1020 GOTO 1040 +1030 PRINT "*** INFORMATIVE TEST FAILED ***" +1040 PRINT +1050 PRINT " END TEST" +1060 PRINT +1070 PRINT "END PROGRAM 141" +1080 END diff --git a/NBS2/P141.OUT b/NBS2/P141.OUT new file mode 100644 index 0000000..3bd7397 --- /dev/null +++ b/NBS2/P141.OUT @@ -0,0 +1,27 @@ +PROGRAM FILE 141: MAXIMUM OF GROUP TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 141.1: MAXIMUM OF GROUP TEST OF RND FUNCTION. + +THIS PROGRAM FINDS THE MAXIMUM RANDOM NUMBER AMONG FIXED- +SIZE GROUPS AND DETERMINES WHETHER THE DISTRIBUTION OF THE +MAXIMA IS SUFFICIENTLY CLOSE TO THE EXPECTED DISTRIBUTION +FOR UNIFORM RANDOM NUMBERS OF F(X) = X^T, WHERE T IS THE +SIZE OF THE GROUPS. THE KOMOLGOROV-SMIRNOV TEST IS USED +TO MEASURE HOW WELL THE RESULTS MATCH THE EXPECTATION. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + + + K+ = .721119 PERCENTILE FOR K+ = .646554 + K- = 7.41161E-2 PERCENTILE FOR K- = 1.09263E-2 + +PERCENTILES SHOULD BE BETWEEN .05 AND .95 + +*** INFORMATIVE TEST FAILED *** + + END TEST + +END PROGRAM 141 diff --git a/NBS2/P141.dif b/NBS2/P141.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P141.run b/NBS2/P141.run new file mode 100644 index 0000000..c08867f --- /dev/null +++ b/NBS2/P141.run @@ -0,0 +1,27 @@ +PROGRAM FILE 141: MAXIMUM OF GROUP TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 141.1: MAXIMUM OF GROUP TEST OF RND FUNCTION. + +THIS PROGRAM FINDS THE MAXIMUM RANDOM NUMBER AMONG FIXED- +SIZE GROUPS AND DETERMINES WHETHER THE DISTRIBUTION OF THE +MAXIMA IS SUFFICIENTLY CLOSE TO THE EXPECTED DISTRIBUTION +FOR UNIFORM RANDOM NUMBERS OF F(X) = X^T, WHERE T IS THE +SIZE OF THE GROUPS. THE KOMOLGOROV-SMIRNOV TEST IS USED +TO MEASURE HOW WELL THE RESULTS MATCH THE EXPECTATION. + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + + + K+ = .721119 PERCENTILE FOR K+ = .646554 + K- = 7.41161E-2 PERCENTILE FOR K- = 1.09263E-2 + +PERCENTILES SHOULD BE BETWEEN .05 AND .95 + +*** INFORMATIVE TEST FAILED *** + + END TEST + +END PROGRAM 141 diff --git a/NBS2/P142.80 b/NBS2/P142.80 new file mode 100644 index 0000000..c991442 --- /dev/null +++ b/NBS2/P142.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 142: SERIAL CORRELATION TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 142.1: SERIAL CORRELATION TEST OF RND FUNCTION. + +THIS PROGRAM COMPUTES THE SERIAL CORRELATION COEFFICIENT +BETWEEN PAIRS OF ADJACENT RANDOM NUMBERS. THE RESULT IS +COMPARED WITH THE EXPECTED VALUE FOR UNIFORM INDEPENDENT +RANDOM NUMBERS. (BECAUSE THE PAIR I AND I+1 IS NOT +COMPLETELY INDEPENDENT OF I+1, I+2, THE EXPECTED VALUE +OF THE COEFFICIENT IS NOT EXACTLY ZERO.) + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +WITH ABOUT 95% PROBABILITY, WE EXPECT CORRELATION TO +EQUAL -.001001 + OR - 6.31822E-2 + +THAT IS, WE EXPECT -6.41832E-2 <= CORRELATION <= 6.21812E-2 + +ACTUAL CORRELATION = -4.90899E-2 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 142 diff --git a/NBS2/P142.BAS b/NBS2/P142.BAS new file mode 100644 index 0000000..bcbbbaa --- /dev/null +++ b/NBS2/P142.BAS @@ -0,0 +1,53 @@ +10 PRINT "PROGRAM FILE 142: SERIAL CORRELATION TEST OF RND FUNCTION." +20 PRINT " ANSI STANDARD 8.4" +30 PRINT +40 PRINT "SECTION 142.1: SERIAL CORRELATION TEST OF RND FUNCTION." +50 PRINT +60 PRINT "THIS PROGRAM COMPUTES THE SERIAL CORRELATION COEFFICIENT" +70 PRINT "BETWEEN PAIRS OF ADJACENT RANDOM NUMBERS. THE RESULT IS " +80 PRINT "COMPARED WITH THE EXPECTED VALUE FOR UNIFORM INDEPENDENT" +90 PRINT "RANDOM NUMBERS. (BECAUSE THE PAIR I AND I+1 IS NOT" +100 PRINT "COMPLETELY INDEPENDENT OF I+1, I+2, THE EXPECTED VALUE" +110 PRINT "OF THE COEFFICIENT IS NOT EXACTLY ZERO.)" +120 PRINT +130 PRINT "***** THIS TEST IS INFORMATIVE ONLY *****" +140 PRINT +150 PRINT " BEGIN TEST" +160 PRINT +170 LET N=1000 +180 LET Y=RND +190 LET S1=Y +200 LET S2=Y*Y +210 LET S3=0 +220 LET Z=Y +230 REM IN LOOP, X IS CURRENT RND, Y IS PREVIOUS RND. +240 FOR N1=1 TO N +250 LET X=RND +260 LET S1=S1+X +270 LET S2=S2+(X*X) +280 LET S3=S3+(X*Y) +290 LET Y=X +300 NEXT N1 +310 LET S3=S3+(X*Z) +320 LET S4=S1*S1 +330 LET C=((N*S3) - S4) / ((N*S2) - S4) +340 LET U=1/(1-N) +350 LET D=SQR((N*(N-3)) / (N+1)) / (N-1) +360 LET D=D+D +370 PRINT "WITH ABOUT 95% PROBABILITY, WE EXPECT CORRELATION TO" +380 PRINT "EQUAL ";U;" + OR - ";D +390 PRINT +400 PRINT "THAT IS, WE EXPECT ";U-D;" <= CORRELATION <= ";U+D +410 PRINT +420 PRINT "ACTUAL CORRELATION = ";C +430 LET E1=ABS(C-U) +440 PRINT +450 IF E1<=D THEN 480 +460 PRINT "*** INFORMATIVE TEST FAILED ***" +470 GOTO 490 +480 PRINT "*** INFORMATIVE TEST PASSED ***" +490 PRINT +500 PRINT " END TEST" +510 PRINT +520 PRINT "END PROGRAM 142" +530 END diff --git a/NBS2/P142.OUT b/NBS2/P142.OUT new file mode 100644 index 0000000..e246c8c --- /dev/null +++ b/NBS2/P142.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 142: SERIAL CORRELATION TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 142.1: SERIAL CORRELATION TEST OF RND FUNCTION. + +THIS PROGRAM COMPUTES THE SERIAL CORRELATION COEFFICIENT +BETWEEN PAIRS OF ADJACENT RANDOM NUMBERS. THE RESULT IS +COMPARED WITH THE EXPECTED VALUE FOR UNIFORM INDEPENDENT +RANDOM NUMBERS. (BECAUSE THE PAIR I AND I+1 IS NOT +COMPLETELY INDEPENDENT OF I+1, I+2, THE EXPECTED VALUE +OF THE COEFFICIENT IS NOT EXACTLY ZERO.) + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +WITH ABOUT 95% PROBABILITY, WE EXPECT CORRELATION TO +EQUAL -.001001 + OR - 6.31822E-2 + +THAT IS, WE EXPECT -6.41832E-2 <= CORRELATION <= 6.21812E-2 + +ACTUAL CORRELATION = -4.90899E-2 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 142 diff --git a/NBS2/P142.dif b/NBS2/P142.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P142.run b/NBS2/P142.run new file mode 100644 index 0000000..c991442 --- /dev/null +++ b/NBS2/P142.run @@ -0,0 +1,28 @@ +PROGRAM FILE 142: SERIAL CORRELATION TEST OF RND FUNCTION. + ANSI STANDARD 8.4 + +SECTION 142.1: SERIAL CORRELATION TEST OF RND FUNCTION. + +THIS PROGRAM COMPUTES THE SERIAL CORRELATION COEFFICIENT +BETWEEN PAIRS OF ADJACENT RANDOM NUMBERS. THE RESULT IS +COMPARED WITH THE EXPECTED VALUE FOR UNIFORM INDEPENDENT +RANDOM NUMBERS. (BECAUSE THE PAIR I AND I+1 IS NOT +COMPLETELY INDEPENDENT OF I+1, I+2, THE EXPECTED VALUE +OF THE COEFFICIENT IS NOT EXACTLY ZERO.) + +***** THIS TEST IS INFORMATIVE ONLY ***** + + BEGIN TEST + +WITH ABOUT 95% PROBABILITY, WE EXPECT CORRELATION TO +EQUAL -.001001 + OR - 6.31822E-2 + +THAT IS, WE EXPECT -6.41832E-2 <= CORRELATION <= 6.21812E-2 + +ACTUAL CORRELATION = -4.90899E-2 + +*** INFORMATIVE TEST PASSED *** + + END TEST + +END PROGRAM 142 diff --git a/NBS2/P143.80 b/NBS2/P143.80 new file mode 100644 index 0000000..3f357d8 --- /dev/null +++ b/NBS2/P143.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 143: ERROR - TWO ARGUMENTS IN LIST FOR + SIN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 143.1: ERROR - TWO ARGUMENTS IN LIST FOR + SIN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE SIN FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF SIN. + +ERROR in line 250: *** Illegal Function Call (SIN) *** diff --git a/NBS2/P143.BAS b/NBS2/P143.BAS new file mode 100644 index 0000000..ed1d46e --- /dev/null +++ b/NBS2/P143.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 143: ERROR - TWO ARGUMENTS IN LIST FOR" +15 PRINT " SIN FUNCTION." +20 PRINT " ANSI STANDARD 7.2, 7.4, 8.2, 8.4" +30 PRINT +40 PRINT "SECTION 143.1: ERROR - TWO ARGUMENTS IN LIST FOR" +45 PRINT " SIN FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE SIN FUNCTION IS" +70 PRINT "INVOKED WITH TWO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED" +80 PRINT "IN THE STANDARD." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF SIN." +250 LET A=SIN(1,1) +260 PRINT "PROCESSOR HAS EVALUATED SIN(1,1) = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 143" +310 END diff --git a/NBS2/P143.OUT b/NBS2/P143.OUT new file mode 100644 index 0000000..6e6cbec --- /dev/null +++ b/NBS2/P143.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 143: ERROR - TWO ARGUMENTS IN LIST FOR + SIN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 143.1: ERROR - TWO ARGUMENTS IN LIST FOR + SIN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE SIN FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF SIN. + +ERROR in line 250: *** Illegal Function Call (SIN) *** diff --git a/NBS2/P143.dif b/NBS2/P143.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P143.run b/NBS2/P143.run new file mode 100644 index 0000000..3f357d8 --- /dev/null +++ b/NBS2/P143.run @@ -0,0 +1,28 @@ +PROGRAM FILE 143: ERROR - TWO ARGUMENTS IN LIST FOR + SIN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 143.1: ERROR - TWO ARGUMENTS IN LIST FOR + SIN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE SIN FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF SIN. + +ERROR in line 250: *** Illegal Function Call (SIN) *** diff --git a/NBS2/P144.80 b/NBS2/P144.80 new file mode 100644 index 0000000..fdda1a6 --- /dev/null +++ b/NBS2/P144.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 144: ERROR - TWO ARGUMENTS IN LIST FOR + ATN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 144.1: ERROR - TWO ARGUMENTS IN LIST FOR + ATN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE ATN FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF ATN. + +ERROR in line 250: *** Illegal Function Call (ATN) *** diff --git a/NBS2/P144.BAS b/NBS2/P144.BAS new file mode 100644 index 0000000..286003c --- /dev/null +++ b/NBS2/P144.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 144: ERROR - TWO ARGUMENTS IN LIST FOR" +15 PRINT " ATN FUNCTION." +20 PRINT " ANSI STANDARD 7.2, 7.4, 8.2, 8.4" +30 PRINT +40 PRINT "SECTION 144.1: ERROR - TWO ARGUMENTS IN LIST FOR" +45 PRINT " ATN FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE ATN FUNCTION IS" +70 PRINT "INVOKED WITH TWO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED" +80 PRINT "IN THE STANDARD." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF ATN." +250 LET A=ATN(1,1) +260 PRINT "PROCESSOR HAS EVALUATED ATN(1,1) = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 144" +310 END diff --git a/NBS2/P144.OUT b/NBS2/P144.OUT new file mode 100644 index 0000000..acf113c --- /dev/null +++ b/NBS2/P144.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 144: ERROR - TWO ARGUMENTS IN LIST FOR + ATN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 144.1: ERROR - TWO ARGUMENTS IN LIST FOR + ATN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE ATN FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF ATN. + +ERROR in line 250: *** Illegal Function Call (ATN) *** diff --git a/NBS2/P144.dif b/NBS2/P144.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P144.run b/NBS2/P144.run new file mode 100644 index 0000000..fdda1a6 --- /dev/null +++ b/NBS2/P144.run @@ -0,0 +1,28 @@ +PROGRAM FILE 144: ERROR - TWO ARGUMENTS IN LIST FOR + ATN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 144.1: ERROR - TWO ARGUMENTS IN LIST FOR + ATN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE ATN FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF ATN. + +ERROR in line 250: *** Illegal Function Call (ATN) *** diff --git a/NBS2/P145.80 b/NBS2/P145.80 new file mode 100644 index 0000000..2a46622 --- /dev/null +++ b/NBS2/P145.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 145: ERROR - TWO ARGUMENTS IN LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 145.1: ERROR - TWO ARGUMENTS IN LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF NONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. + +ERROR in line 250: *** Illegal Function Call (RND) *** diff --git a/NBS2/P145.BAS b/NBS2/P145.BAS new file mode 100644 index 0000000..91b77b2 --- /dev/null +++ b/NBS2/P145.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 145: ERROR - TWO ARGUMENTS IN LIST FOR" +15 PRINT " RND FUNCTION." +20 PRINT " ANSI STANDARD 7.2, 7.4, 8.2, 8.4" +30 PRINT +40 PRINT "SECTION 145.1: ERROR - TWO ARGUMENTS IN LIST FOR" +45 PRINT " RND FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS" +70 PRINT "INVOKED WITH TWO ARGUMENTS, INSTEAD OF NONE AS SPECIFIED" +80 PRINT "IN THE STANDARD." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF RND." +250 LET A=RND(1,1) +260 PRINT "PROCESSOR HAS EVALUATED RND(1,1) = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 145" +310 END diff --git a/NBS2/P145.OUT b/NBS2/P145.OUT new file mode 100644 index 0000000..8ff6cfd --- /dev/null +++ b/NBS2/P145.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 145: ERROR - TWO ARGUMENTS IN LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 145.1: ERROR - TWO ARGUMENTS IN LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF NONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. + +ERROR in line 250: *** Illegal Function Call (RND) *** diff --git a/NBS2/P145.dif b/NBS2/P145.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P145.run b/NBS2/P145.run new file mode 100644 index 0000000..2a46622 --- /dev/null +++ b/NBS2/P145.run @@ -0,0 +1,28 @@ +PROGRAM FILE 145: ERROR - TWO ARGUMENTS IN LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 145.1: ERROR - TWO ARGUMENTS IN LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH TWO ARGUMENTS, INSTEAD OF NONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. + +ERROR in line 250: *** Illegal Function Call (RND) *** diff --git a/NBS2/P146.80 b/NBS2/P146.80 new file mode 100644 index 0000000..ef9bd84 --- /dev/null +++ b/NBS2/P146.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 146: ERROR - ONE ARGUMENT IN LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 146.1: ERROR - ONE ARGUMENT IN LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH ONE ARGUMENT, INSTEAD OF NONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. +PROCESSOR HAS EVALUATED RND(0) = .396465 + + END TEST + +END PROGRAM 146 diff --git a/NBS2/P146.BAS b/NBS2/P146.BAS new file mode 100644 index 0000000..7d188ba --- /dev/null +++ b/NBS2/P146.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 146: ERROR - ONE ARGUMENT IN LIST FOR" +15 PRINT " RND FUNCTION." +20 PRINT " ANSI STANDARD 7.2, 7.4, 8.2, 8.4" +30 PRINT +40 PRINT "SECTION 146.1: ERROR - ONE ARGUMENT IN LIST FOR" +45 PRINT " RND FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS" +70 PRINT "INVOKED WITH ONE ARGUMENT, INSTEAD OF NONE AS SPECIFIED" +80 PRINT "IN THE STANDARD." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF RND." +250 LET A=RND(0) +260 PRINT "PROCESSOR HAS EVALUATED RND(0) = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 146" +310 END diff --git a/NBS2/P146.OUT b/NBS2/P146.OUT new file mode 100644 index 0000000..374bf45 --- /dev/null +++ b/NBS2/P146.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 146: ERROR - ONE ARGUMENT IN LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 146.1: ERROR - ONE ARGUMENT IN LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH ONE ARGUMENT, INSTEAD OF NONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. +PROCESSOR HAS EVALUATED RND(0) = .396465 + + END TEST + +END PROGRAM 146 diff --git a/NBS2/P146.dif b/NBS2/P146.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P146.run b/NBS2/P146.run new file mode 100644 index 0000000..ef9bd84 --- /dev/null +++ b/NBS2/P146.run @@ -0,0 +1,31 @@ +PROGRAM FILE 146: ERROR - ONE ARGUMENT IN LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 146.1: ERROR - ONE ARGUMENT IN LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH ONE ARGUMENT, INSTEAD OF NONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. +PROCESSOR HAS EVALUATED RND(0) = .396465 + + END TEST + +END PROGRAM 146 diff --git a/NBS2/P147.80 b/NBS2/P147.80 new file mode 100644 index 0000000..8256e6f --- /dev/null +++ b/NBS2/P147.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 147: ERROR - NULL ARGUMENT-LIST FOR + INT FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 147.1: ERROR - NULL ARGUMENT-LIST FOR + INT FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE INT FUNCTION IS +INVOKED WITH NO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF INT. + +ERROR in line 250: *** Illegal Function Call (INT) *** diff --git a/NBS2/P147.BAS b/NBS2/P147.BAS new file mode 100644 index 0000000..f736a61 --- /dev/null +++ b/NBS2/P147.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 147: ERROR - NULL ARGUMENT-LIST FOR" +15 PRINT " INT FUNCTION." +20 PRINT " ANSI STANDARD 7.2, 7.4, 8.2, 8.4" +30 PRINT +40 PRINT "SECTION 147.1: ERROR - NULL ARGUMENT-LIST FOR" +45 PRINT " INT FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE INT FUNCTION IS" +70 PRINT "INVOKED WITH NO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED" +80 PRINT "IN THE STANDARD." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF INT." +250 LET A=INT() +260 PRINT "PROCESSOR HAS EVALUATED INT() = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 147" +310 END diff --git a/NBS2/P147.OUT b/NBS2/P147.OUT new file mode 100644 index 0000000..c5f6f4a --- /dev/null +++ b/NBS2/P147.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 147: ERROR - NULL ARGUMENT-LIST FOR + INT FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 147.1: ERROR - NULL ARGUMENT-LIST FOR + INT FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE INT FUNCTION IS +INVOKED WITH NO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF INT. + +ERROR in line 250: *** Illegal Function Call (INT) *** diff --git a/NBS2/P147.dif b/NBS2/P147.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P147.run b/NBS2/P147.run new file mode 100644 index 0000000..8256e6f --- /dev/null +++ b/NBS2/P147.run @@ -0,0 +1,28 @@ +PROGRAM FILE 147: ERROR - NULL ARGUMENT-LIST FOR + INT FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 147.1: ERROR - NULL ARGUMENT-LIST FOR + INT FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE INT FUNCTION IS +INVOKED WITH NO ARGUMENTS, INSTEAD OF ONE AS SPECIFIED +IN THE STANDARD. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF INT. + +ERROR in line 250: *** Illegal Function Call (INT) *** diff --git a/NBS2/P148.80 b/NBS2/P148.80 new file mode 100644 index 0000000..c19b873 --- /dev/null +++ b/NBS2/P148.80 @@ -0,0 +1,27 @@ +PROGRAM FILE 148: ERROR - MISSING ARGUMENT LIST FOR + TAN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 148.1: ERROR - MISSING ARGUMENT LIST FOR + TAN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE TAN FUNCTION IS +INVOKED WITHOUT AN ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF TAN. + +ERROR in line 250: *** Illegal Function Call (TAN) *** diff --git a/NBS2/P148.BAS b/NBS2/P148.BAS new file mode 100644 index 0000000..0493af5 --- /dev/null +++ b/NBS2/P148.BAS @@ -0,0 +1,32 @@ +10 PRINT "PROGRAM FILE 148: ERROR - MISSING ARGUMENT LIST FOR" +15 PRINT " TAN FUNCTION." +20 PRINT " ANSI STANDARD 7.2, 7.4, 8.2, 8.4" +30 PRINT +40 PRINT "SECTION 148.1: ERROR - MISSING ARGUMENT LIST FOR" +45 PRINT " TAN FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE TAN FUNCTION IS" +70 PRINT "INVOKED WITHOUT AN ARGUMENT-LIST." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF TAN." +250 LET A=TAN +260 PRINT "PROCESSOR HAS EVALUATED TAN = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 148" +310 END diff --git a/NBS2/P148.OUT b/NBS2/P148.OUT new file mode 100644 index 0000000..b8663e5 --- /dev/null +++ b/NBS2/P148.OUT @@ -0,0 +1,27 @@ +PROGRAM FILE 148: ERROR - MISSING ARGUMENT LIST FOR + TAN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 148.1: ERROR - MISSING ARGUMENT LIST FOR + TAN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE TAN FUNCTION IS +INVOKED WITHOUT AN ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF TAN. + +ERROR in line 250: *** Illegal Function Call (TAN) *** diff --git a/NBS2/P148.dif b/NBS2/P148.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P148.run b/NBS2/P148.run new file mode 100644 index 0000000..c19b873 --- /dev/null +++ b/NBS2/P148.run @@ -0,0 +1,27 @@ +PROGRAM FILE 148: ERROR - MISSING ARGUMENT LIST FOR + TAN FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 148.1: ERROR - MISSING ARGUMENT LIST FOR + TAN FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE TAN FUNCTION IS +INVOKED WITHOUT AN ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF TAN. + +ERROR in line 250: *** Illegal Function Call (TAN) *** diff --git a/NBS2/P149.80 b/NBS2/P149.80 new file mode 100644 index 0000000..4a6f12f --- /dev/null +++ b/NBS2/P149.80 @@ -0,0 +1,30 @@ +PROGRAM FILE 149: ERROR - NULL ARGUMENT-LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 149.1: ERROR - NULL ARGUMENT-LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH A NULL ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. +PROCESSOR HAS EVALUATED RND() = .396465 + + END TEST + +END PROGRAM 149 diff --git a/NBS2/P149.BAS b/NBS2/P149.BAS new file mode 100644 index 0000000..aae0a17 --- /dev/null +++ b/NBS2/P149.BAS @@ -0,0 +1,32 @@ +10 PRINT "PROGRAM FILE 149: ERROR - NULL ARGUMENT-LIST FOR" +15 PRINT " RND FUNCTION." +20 PRINT " ANSI STANDARD 7.2, 7.4, 8.2, 8.4" +30 PRINT +40 PRINT "SECTION 149.1: ERROR - NULL ARGUMENT-LIST FOR" +45 PRINT " RND FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS" +70 PRINT "INVOKED WITH A NULL ARGUMENT-LIST." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF RND." +250 LET A=RND() +260 PRINT "PROCESSOR HAS EVALUATED RND() = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 149" +310 END diff --git a/NBS2/P149.OUT b/NBS2/P149.OUT new file mode 100644 index 0000000..e0f8433 --- /dev/null +++ b/NBS2/P149.OUT @@ -0,0 +1,30 @@ +PROGRAM FILE 149: ERROR - NULL ARGUMENT-LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 149.1: ERROR - NULL ARGUMENT-LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH A NULL ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. +PROCESSOR HAS EVALUATED RND() = .396465 + + END TEST + +END PROGRAM 149 diff --git a/NBS2/P149.dif b/NBS2/P149.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P149.run b/NBS2/P149.run new file mode 100644 index 0000000..4a6f12f --- /dev/null +++ b/NBS2/P149.run @@ -0,0 +1,30 @@ +PROGRAM FILE 149: ERROR - NULL ARGUMENT-LIST FOR + RND FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 149.1: ERROR - NULL ARGUMENT-LIST FOR + RND FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE RND FUNCTION IS +INVOKED WITH A NULL ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +ABOUT TO ATTEMPT INVOCATION OF RND. +PROCESSOR HAS EVALUATED RND() = .396465 + + END TEST + +END PROGRAM 149 diff --git a/NBS2/P150.80 b/NBS2/P150.80 new file mode 100644 index 0000000..e6663d4 --- /dev/null +++ b/NBS2/P150.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 150: ERROR - USING A STRING AS AN ARGUMENT + FOR AN IMPLEMENTATION-SUPPLIED FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 150.1: ERROR - USING A STRING AS AN ARGUMENT + FOR AN IMPLEMENTATION-SUPPLIED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE ATN FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT, INSTEAD OF A +NUMERIC EXPRESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +SETTING X = 5 +SETTING X$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF ATN(X$). + +ERROR in line 340: *** Illegal Function Call (ATN) *** diff --git a/NBS2/P150.BAS b/NBS2/P150.BAS new file mode 100644 index 0000000..3e582bb --- /dev/null +++ b/NBS2/P150.BAS @@ -0,0 +1,38 @@ +10 PRINT "PROGRAM FILE 150: ERROR - USING A STRING AS AN ARGUMENT" +20 PRINT " FOR AN IMPLEMENTATION-SUPPLIED FUNCTION." +30 PRINT " ANSI STANDARD 7.2, 7.4, 8.2, 8.4" +40 PRINT +50 PRINT "SECTION 150.1: ERROR - USING A STRING AS AN ARGUMENT" +60 PRINT " FOR AN IMPLEMENTATION-SUPPLIED FUNCTION." +70 PRINT +80 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE ATN FUNCTION IS" +90 PRINT "INVOKED WITH A CHARACTER STRING ARGUMENT, INSTEAD OF A" +100 PRINT "NUMERIC EXPRESSION." +110 PRINT +120 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +130 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +140 PRINT +150 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +160 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +170 PRINT " BY THE PROCESSOR, OR" +180 PRINT +190 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +200 PRINT +210 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +220 PRINT "FOR DETAILED CRITERIA." +230 PRINT +240 PRINT " BEGIN TEST" +260 PRINT +280 PRINT "SETTING X = 5" +290 PRINT "SETTING X$ = 'ABC'" +300 PRINT +310 LET X=5 +320 LET X$="ABC" +330 PRINT "ABOUT TO ATTEMPT INVOCATION OF ATN(X$)." +340 LET A=ATN(X$) +350 PRINT "PROCESSOR HAS EVALUATED ATN(X$) = ";A +360 PRINT +370 PRINT " END TEST" +380 PRINT +390 PRINT "END PROGRAM 150" +400 END diff --git a/NBS2/P150.OUT b/NBS2/P150.OUT new file mode 100644 index 0000000..255618c --- /dev/null +++ b/NBS2/P150.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 150: ERROR - USING A STRING AS AN ARGUMENT + FOR AN IMPLEMENTATION-SUPPLIED FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 150.1: ERROR - USING A STRING AS AN ARGUMENT + FOR AN IMPLEMENTATION-SUPPLIED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE ATN FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT, INSTEAD OF A +NUMERIC EXPRESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +SETTING X = 5 +SETTING X$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF ATN(X$). + +ERROR in line 340: *** Illegal Function Call (ATN) *** diff --git a/NBS2/P150.dif b/NBS2/P150.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P150.run b/NBS2/P150.run new file mode 100644 index 0000000..e6663d4 --- /dev/null +++ b/NBS2/P150.run @@ -0,0 +1,31 @@ +PROGRAM FILE 150: ERROR - USING A STRING AS AN ARGUMENT + FOR AN IMPLEMENTATION-SUPPLIED FUNCTION. + ANSI STANDARD 7.2, 7.4, 8.2, 8.4 + +SECTION 150.1: ERROR - USING A STRING AS AN ARGUMENT + FOR AN IMPLEMENTATION-SUPPLIED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE ATN FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT, INSTEAD OF A +NUMERIC EXPRESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +SETTING X = 5 +SETTING X$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF ATN(X$). + +ERROR in line 340: *** Illegal Function Call (ATN) *** diff --git a/NBS2/P151.80 b/NBS2/P151.80 new file mode 100644 index 0000000..831b5f4 --- /dev/null +++ b/NBS2/P151.80 @@ -0,0 +1,74 @@ +PROGRAM FILE 151: USER-DEFINED FUNCTIONS. + ANSI STANDARD 16.2, 16.4, 7.2, 7.4 + +THIS PROGRAM TESTS VARIOUS KINDS OF USER-DEFINED FUNCTIONS. +NUMERIC EXPRESSIONS ARE USED IN TWO NEW CONTEXTS: BOTH AS +THE FUNCTION DEFINITION, AND ALSO AS ARGUMENTS IN THE +FUNCTION INVOCATIONS. + +SECTION 151.1: THE EXPRESSION IN THE DEFINITION USING ONLY + THE PARAMETER OF THE PARAMETER-LIST. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.2: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND OTHER VARIABLES. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.3: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND CONSTANTS. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.4: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND A REFERENCE + TO ANOTHER FUNCTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.5: THE EXPRESSION IN THE DEFINITION HAS A + CONSTANT VALUE. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.6: THE PARAMETER OF A USER-DEFINED + FUNCTION IS LOCAL TO THE EXPRESSION OF THE + DEFINITION AND OTHER VARIABLES ARE GLOBAL. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.7: FULL GENERAL USE OF USER-DEFINED FUNCTIONS + IN NUMERIC EXPRESSIONS. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 151. diff --git a/NBS2/P151.BAS b/NBS2/P151.BAS new file mode 100644 index 0000000..7c18b8c --- /dev/null +++ b/NBS2/P151.BAS @@ -0,0 +1,189 @@ +10 PRINT "PROGRAM FILE 151: USER-DEFINED FUNCTIONS." +20 PRINT " ANSI STANDARD 16.2, 16.4, 7.2, 7.4" +30 PRINT +40 PRINT "THIS PROGRAM TESTS VARIOUS KINDS OF USER-DEFINED FUNCTIONS." +50 PRINT "NUMERIC EXPRESSIONS ARE USED IN TWO NEW CONTEXTS: BOTH AS" +55 PRINT "THE FUNCTION DEFINITION, AND ALSO AS ARGUMENTS IN THE" +60 PRINT "FUNCTION INVOCATIONS." +65 PRINT +70 PRINT "SECTION 151.1: THE EXPRESSION IN THE DEFINITION USING ONLY" +80 PRINT " THE PARAMETER OF THE PARAMETER-LIST." +90 PRINT +100 PRINT " BEGIN TEST." +110 PRINT +120 DEF FNA(X)=X*X +130 DEF FNB(Y)=Y*Y*Y +140 LET A=5 +150 LET B=4 +160 LET C=3 +170 LET E=0 +180 LET X=FNA(12) +190 LET Y=FNA(A) +200 LET Z=FNA(2*A^3+4*B+C) +210 LET W=FNA(FNB(2)+B^3) +220 LET F=1 +230 IF X=144 THEN 250 +240 GOSUB 350 +250 LET F=2 +260 IF Y=25 THEN 280 +270 GOSUB 350 +280 LET F=3 +285 LET C9=Z-72361 +290 IF ABS(C9) < .1 THEN 310 +300 GOSUB 350 +310 LET F=4 +315 LET C9=W-5184 +320 IF ABS(C9) < .1 THEN 490 +330 GOSUB 350 +340 GOTO 490 +350 REM SUBROUTINE TO PRINT ERROR MESSAGE +355 LET E=1 +357 LET B$="" +360 ON F GOTO 370,390,410,430 +370 LET A$="A CONSTANT" +380 GOTO 440 +390 LET A$="A VARIABLE" +400 GOTO 440 +410 LET A$="CONSTANTS AND" +415 LET B$=" VARIABLES" +420 GOTO 440 +430 LET A$="ANOTHER FUNCTION" +440 PRINT "FUNCTION FAILED TO EXECUTE PROPERLY WHEN THE EXPRESSION" +450 PRINT "IN THE ARGUMENT-LIST FOR THE FUNCTION REFERENCE USED" +460 PRINT A$;B$;"." +470 PRINT +480 RETURN +490 IF E=0 THEN 520 +500 PRINT "*** TEST FAILED. NOTE THE ABOVE REASONS ***" +510 GOTO 530 +520 PRINT "*** TEST PASSED ***" +530 PRINT +540 PRINT " END TEST." +550 PRINT +560 PRINT "SECTION 151.2: THE EXPRESSION IN THE DEFINITION USING THE" +570 PRINT " PARAMETER OF THE PARAMETER-LIST AND OTHER VARIABLES." +590 PRINT +600 PRINT " BEGIN TEST." +610 PRINT +620 DEF FNC(A)=A*A-B+C +630 LET B=-15 +640 LET C=-35 +650 LET X=FNC(13) +660 IF X=149 THEN 690 +670 PRINT "*** TEST FAILED ***" +680 GOTO 700 +690 PRINT "*** TEST PASSED ***" +700 PRINT +710 PRINT " END TEST." +720 PRINT +730 PRINT "SECTION 151.3: THE EXPRESSION IN THE DEFINITION USING THE" +740 PRINT " PARAMETER OF THE PARAMETER-LIST AND CONSTANTS." +760 PRINT +770 PRINT " BEGIN TEST." +780 PRINT +790 DEF FND(Y)=Y^4-16 +800 LET A=4 +810 LET B=2 +820 LET Y=FND(A^3-3*A^2*B+3*A*B^2-B^3) +825 LET C9=Y-4080 +830 IF ABS(C9) < .1 THEN 860 +840 PRINT "*** TEST FAILED ***" +850 GOTO 870 +860 PRINT "*** TEST PASSED ***" +870 PRINT +880 PRINT " END TEST." +890 PRINT +900 PRINT "SECTION 151.4: THE EXPRESSION IN THE DEFINITION USING THE" +910 PRINT " PARAMETER OF THE PARAMETER-LIST AND A REFERENCE" +920 PRINT " TO ANOTHER FUNCTION." +930 PRINT +940 PRINT " BEGIN TEST." +950 PRINT +960 DEF FNE(Z)=Z^2-4 +970 DEF FNF(Z)=Z*X+FNE(A^2+B) +980 LET A=9 +990 LET B=19 +1000 LET X=3 +1010 LET Y=2 +1020 LET Z=FNF(X^3-3*X^2*Y+3*X*Y^2-Y^3) +1025 LET C9=Z-9999 +1030 IF ABS(C9) < .1 THEN 1060 +1040 PRINT "*** TEST FAILED ***" +1050 GOTO 1070 +1060 PRINT "*** TEST PASSED ***" +1070 PRINT +1080 PRINT " END TEST." +1090 PRINT +1100 PRINT "SECTION 151.5: THE EXPRESSION IN THE DEFINITION HAS A" +1110 PRINT " CONSTANT VALUE." +1120 PRINT +1130 PRINT " BEGIN TEST." +1140 PRINT +1150 DEF FNM=123 +1160 DEF FNN(D)=3*37 +1170 LET A=FNM +1180 LET B=FNN(FNM+A) +1190 IF A<>123 THEN 1300 +1200 IF B<>111 THEN 1300 +1210 PRINT "*** TEST PASSED ***" +1220 GOTO 1310 +1300 PRINT "*** TEST FAILED ***" +1310 PRINT +1320 PRINT " END TEST." +1330 PRINT +1500 PRINT "SECTION 151.6: THE PARAMETER OF A USER-DEFINED" +1510 PRINT " FUNCTION IS LOCAL TO THE EXPRESSION OF THE" +1520 PRINT " DEFINITION AND OTHER VARIABLES ARE GLOBAL." +1530 PRINT +1540 PRINT " BEGIN TEST." +1550 PRINT +1560 LET X=1 +1570 LET Y=2 +1580 LET Z=3 +1590 LET P1=-100 +1600 LET Q1=-100 +1610 DEF FNG(P1)=3+P1+X +1620 DEF FNH(P1)=7+X+Y+P1+FNG(30.E-1+P1)+FNG(P1)+FNG(Y) +1630 LET X=4 +1640 LET Y=5 +1650 LET Z=6 +1660 LET P1=7 +1670 LET Q1=8 +1680 DEF FNI(Q1)=Z+Q1*10. +1690 LET A=FNH(Q1+3)+FNG(10)+FNI(Q1+4) +1700 IF X<>4 THEN 1790 +1710 IF Y<>5 THEN 1790 +1720 IF Z<>6 THEN 1790 +1730 IF P1<>7 THEN 1790 +1740 IF Q1<>8 THEN 1790 +1750 LET C=221-A +1760 IF ABS(C)>.01 THEN 1790 +1770 PRINT "*** TEST PASSED ***" +1780 GOTO 1800 +1790 PRINT "*** TEST FAILED ***" +1800 PRINT +1810 PRINT " END TEST." +1820 PRINT +1830 PRINT "SECTION 151.7: FULL GENERAL USE OF USER-DEFINED FUNCTIONS" +1840 PRINT " IN NUMERIC EXPRESSIONS." +1850 PRINT +1860 PRINT " BEGIN TEST." +1870 PRINT +1880 DEF FNT=3 +1890 DEF FNU(D)=100 +1900 LET X=4 +1910 LET Y=5 +1920 LET Z=6 +1930 LET Q1=8 +1940 LET A=FNI(FNT) +1950 LET A=A/(FNG(FNH(Q1+FNT)/(FNI(Q1+4)-FNU(1E38))+FNG(FNG(-10)))-2) +1960 LET C9=A-3 +1970 IF ABS(C9) < .01 THEN 2000 +1980 PRINT "*** TEST FAILED ***" +1990 GOTO 2010 +2000 PRINT "*** TEST PASSED ***" +2010 PRINT +2020 PRINT " END TEST." +2030 PRINT +2040 PRINT "END PROGRAM 151." +2050 END diff --git a/NBS2/P151.OUT b/NBS2/P151.OUT new file mode 100644 index 0000000..e1b97ed --- /dev/null +++ b/NBS2/P151.OUT @@ -0,0 +1,74 @@ +PROGRAM FILE 151: USER-DEFINED FUNCTIONS. + ANSI STANDARD 16.2, 16.4, 7.2, 7.4 + +THIS PROGRAM TESTS VARIOUS KINDS OF USER-DEFINED FUNCTIONS. +NUMERIC EXPRESSIONS ARE USED IN TWO NEW CONTEXTS: BOTH AS +THE FUNCTION DEFINITION, AND ALSO AS ARGUMENTS IN THE +FUNCTION INVOCATIONS. + +SECTION 151.1: THE EXPRESSION IN THE DEFINITION USING ONLY + THE PARAMETER OF THE PARAMETER-LIST. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.2: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND OTHER VARIABLES. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.3: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND CONSTANTS. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.4: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND A REFERENCE + TO ANOTHER FUNCTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.5: THE EXPRESSION IN THE DEFINITION HAS A + CONSTANT VALUE. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.6: THE PARAMETER OF A USER-DEFINED + FUNCTION IS LOCAL TO THE EXPRESSION OF THE + DEFINITION AND OTHER VARIABLES ARE GLOBAL. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.7: FULL GENERAL USE OF USER-DEFINED FUNCTIONS + IN NUMERIC EXPRESSIONS. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 151. diff --git a/NBS2/P151.dif b/NBS2/P151.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P151.run b/NBS2/P151.run new file mode 100644 index 0000000..831b5f4 --- /dev/null +++ b/NBS2/P151.run @@ -0,0 +1,74 @@ +PROGRAM FILE 151: USER-DEFINED FUNCTIONS. + ANSI STANDARD 16.2, 16.4, 7.2, 7.4 + +THIS PROGRAM TESTS VARIOUS KINDS OF USER-DEFINED FUNCTIONS. +NUMERIC EXPRESSIONS ARE USED IN TWO NEW CONTEXTS: BOTH AS +THE FUNCTION DEFINITION, AND ALSO AS ARGUMENTS IN THE +FUNCTION INVOCATIONS. + +SECTION 151.1: THE EXPRESSION IN THE DEFINITION USING ONLY + THE PARAMETER OF THE PARAMETER-LIST. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.2: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND OTHER VARIABLES. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.3: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND CONSTANTS. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.4: THE EXPRESSION IN THE DEFINITION USING THE + PARAMETER OF THE PARAMETER-LIST AND A REFERENCE + TO ANOTHER FUNCTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.5: THE EXPRESSION IN THE DEFINITION HAS A + CONSTANT VALUE. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.6: THE PARAMETER OF A USER-DEFINED + FUNCTION IS LOCAL TO THE EXPRESSION OF THE + DEFINITION AND OTHER VARIABLES ARE GLOBAL. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 151.7: FULL GENERAL USE OF USER-DEFINED FUNCTIONS + IN NUMERIC EXPRESSIONS. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 151. diff --git a/NBS2/P152.80 b/NBS2/P152.80 new file mode 100644 index 0000000..071103f --- /dev/null +++ b/NBS2/P152.80 @@ -0,0 +1,14 @@ +PROGRAM FILE 152: VALID NAMES FOR USER-DEFINED FUNCTIONS. + ANSI STANDARD 16.2 + +SECTION 152.1: VALID NAMES FOR USER-DEFINED FUNCTIONS. + +FUNCTION NAMES ARE IN THE FORM: FN FOLLOWED BY A LETTER. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 152. diff --git a/NBS2/P152.BAS b/NBS2/P152.BAS new file mode 100644 index 0000000..47acf27 --- /dev/null +++ b/NBS2/P152.BAS @@ -0,0 +1,75 @@ +10 PRINT "PROGRAM FILE 152: VALID NAMES FOR USER-DEFINED FUNCTIONS." +20 PRINT " ANSI STANDARD 16.2" +30 PRINT +40 PRINT "SECTION 152.1: VALID NAMES FOR USER-DEFINED FUNCTIONS." +60 PRINT +70 PRINT "FUNCTION NAMES ARE IN THE FORM: FN FOLLOWED BY A LETTER." +80 PRINT +90 PRINT " BEGIN TEST." +100 PRINT +110 DEF FNA(X)=X/7-7 +120 DEF FNB(X)=X/8-8 +130 DEF FNC(X)=X/9-9 +140 DEF FND(X)=X/10-10 +150 DEF FNE(X)=X/11-11 +160 DEF FNF(X)=X/12-12 +170 DEF FNG(X)=X/13-13 +180 DEF FNH(X)=X/14-14 +190 DEF FNI(X)=X/15-15 +200 DEF FNJ(X)=X/16-16 +210 DEF FNK(X)=X/17-17 +220 DEF FNL(X)=X/18-18 +230 DEF FNM(X)=X/19-19 +240 DEF FNN(X)=X/20-20 +250 DEF FNO(X)=X/21-21 +260 DEF FNP(X)=X/22-22 +270 DEF FNQ(X)=X/23-23 +280 DEF FNR(X)=X/24-24 +290 DEF FNS(X)=X/25-25 +300 DEF FNT(X)=X/26-26 +310 DEF FNU(X)=X/27-27 +320 DEF FNV(X)=X/28-28 +330 DEF FNW(X)=X/29-29 +340 DEF FNX(X)=X/30-30 +350 DEF FNY(X)=X/31-31 +360 DEF FNZ(X)=X/32-32 +370 DIM A(26) +380 LET A(1)=FNA(77) +390 LET A(2)=FNB(88) +400 LET A(3)=FNC(99) +410 LET A(4)=FND(110) +420 LET A(5)=FNE(121) +430 LET A(6)=FNF(132) +440 LET A(7)=FNG(143) +450 LET A(8)=FNH(154) +460 LET A(9)=FNI(165) +470 LET A(10)=FNJ(176) +480 LET A(11)=FNK(187) +490 LET A(12)=FNL(198) +500 LET A(13)=FNM(209) +510 LET A(14)=FNN(220) +520 LET A(15)=FNO(231) +530 LET A(16)=FNP(242) +540 LET A(17)=FNQ(253) +550 LET A(18)=FNR(264) +560 LET A(19)=FNS(275) +570 LET A(20)=FNT(286) +580 LET A(21)=FNU(297) +590 LET A(22)=FNV(308) +600 LET A(23)=FNW(319) +610 LET A(24)=FNX(330) +620 LET A(25)=FNY(341) +630 LET A(26)=FNZ(352) +640 LET S=0 +650 FOR I=1 TO 26 +660 LET S=S+A(I) +670 NEXT I +680 IF S=-221 THEN 710 +690 PRINT "*** TEST FAILED ***" +700 GOTO 720 +710 PRINT "*** TEST PASSED ***" +720 PRINT +730 PRINT " END TEST." +740 PRINT +750 PRINT "END PROGRAM 152." +760 END diff --git a/NBS2/P152.OUT b/NBS2/P152.OUT new file mode 100644 index 0000000..bc95a95 --- /dev/null +++ b/NBS2/P152.OUT @@ -0,0 +1,14 @@ +PROGRAM FILE 152: VALID NAMES FOR USER-DEFINED FUNCTIONS. + ANSI STANDARD 16.2 + +SECTION 152.1: VALID NAMES FOR USER-DEFINED FUNCTIONS. + +FUNCTION NAMES ARE IN THE FORM: FN FOLLOWED BY A LETTER. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 152. diff --git a/NBS2/P152.dif b/NBS2/P152.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P152.run b/NBS2/P152.run new file mode 100644 index 0000000..071103f --- /dev/null +++ b/NBS2/P152.run @@ -0,0 +1,14 @@ +PROGRAM FILE 152: VALID NAMES FOR USER-DEFINED FUNCTIONS. + ANSI STANDARD 16.2 + +SECTION 152.1: VALID NAMES FOR USER-DEFINED FUNCTIONS. + +FUNCTION NAMES ARE IN THE FORM: FN FOLLOWED BY A LETTER. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 152. diff --git a/NBS2/P153.80 b/NBS2/P153.80 new file mode 100644 index 0000000..e273a29 --- /dev/null +++ b/NBS2/P153.80 @@ -0,0 +1,30 @@ +PROGRAM FILE 153: ERROR - SUPERFLUOUS ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 153.1: ERROR - SUPERFLUOUS ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH AN ARGUMENT-LIST, THOUGH NONE IS REQUIRED +IN THE DEF STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FNP=3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FNP. + +ERROR in line 250: *** Illegal Function Call (FNP) *** diff --git a/NBS2/P153.BAS b/NBS2/P153.BAS new file mode 100644 index 0000000..c6624f4 --- /dev/null +++ b/NBS2/P153.BAS @@ -0,0 +1,36 @@ +10 PRINT "PROGRAM FILE 153: ERROR - SUPERFLUOUS ARGUMENT-LIST FOR " +15 PRINT " USER-DEFINED FUNCTION." +20 PRINT " ANSI STANDARD 16.4" +30 PRINT +40 PRINT "SECTION 153.1: ERROR - SUPERFLUOUS ARGUMENT-LIST FOR " +45 PRINT " USER-DEFINED FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS" +70 PRINT "INVOKED WITH AN ARGUMENT-LIST, THOUGH NONE IS REQUIRED" +80 PRINT "IN THE DEF STATEMENT." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +225 DEF FNP=3.14159 +228 PRINT +229 PRINT "DEFINITION OF FNP=3.14159" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF FNP." +250 LET A=FNP(0) +260 PRINT "PROCESSOR HAS EVALUATED FNP(0) = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 153" +310 END diff --git a/NBS2/P153.OUT b/NBS2/P153.OUT new file mode 100644 index 0000000..4c13304 --- /dev/null +++ b/NBS2/P153.OUT @@ -0,0 +1,30 @@ +PROGRAM FILE 153: ERROR - SUPERFLUOUS ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 153.1: ERROR - SUPERFLUOUS ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH AN ARGUMENT-LIST, THOUGH NONE IS REQUIRED +IN THE DEF STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FNP=3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FNP. + +ERROR in line 250: *** Illegal Function Call (FNP) *** diff --git a/NBS2/P153.dif b/NBS2/P153.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P153.run b/NBS2/P153.run new file mode 100644 index 0000000..e273a29 --- /dev/null +++ b/NBS2/P153.run @@ -0,0 +1,30 @@ +PROGRAM FILE 153: ERROR - SUPERFLUOUS ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 153.1: ERROR - SUPERFLUOUS ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH AN ARGUMENT-LIST, THOUGH NONE IS REQUIRED +IN THE DEF STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FNP=3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FNP. + +ERROR in line 250: *** Illegal Function Call (FNP) *** diff --git a/NBS2/P154.80 b/NBS2/P154.80 new file mode 100644 index 0000000..0d2d3f3 --- /dev/null +++ b/NBS2/P154.80 @@ -0,0 +1,30 @@ +PROGRAM FILE 154: ERROR - MISSING ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 154.1: ERROR - MISSING ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITHOUT AN ARGUMENT-LIST, THOUGH ONE IS REQUIRED +IN THE DEF STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(R)=(R*180)/3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FND. + +ERROR in line 250: *** Illegal Function Call (FND) *** diff --git a/NBS2/P154.BAS b/NBS2/P154.BAS new file mode 100644 index 0000000..229f11e --- /dev/null +++ b/NBS2/P154.BAS @@ -0,0 +1,36 @@ +10 PRINT "PROGRAM FILE 154: ERROR - MISSING ARGUMENT-LIST FOR " +15 PRINT " USER-DEFINED FUNCTION." +20 PRINT " ANSI STANDARD 16.4" +30 PRINT +40 PRINT "SECTION 154.1: ERROR - MISSING ARGUMENT-LIST FOR " +45 PRINT " USER-DEFINED FUNCTION." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS" +70 PRINT "INVOKED WITHOUT AN ARGUMENT-LIST, THOUGH ONE IS REQUIRED" +80 PRINT "IN THE DEF STATEMENT." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST" +225 DEF FND(R)=(R*180)/3.14159 +228 PRINT +229 PRINT "DEFINITION OF FND(R)=(R*180)/3.14159" +230 PRINT +240 PRINT "ABOUT TO ATTEMPT INVOCATION OF FND." +250 LET A=FND +260 PRINT "PROCESSOR HAS EVALUATED FND = ";A +270 PRINT +280 PRINT " END TEST" +290 PRINT +300 PRINT "END PROGRAM 154" +310 END diff --git a/NBS2/P154.OUT b/NBS2/P154.OUT new file mode 100644 index 0000000..468d978 --- /dev/null +++ b/NBS2/P154.OUT @@ -0,0 +1,30 @@ +PROGRAM FILE 154: ERROR - MISSING ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 154.1: ERROR - MISSING ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITHOUT AN ARGUMENT-LIST, THOUGH ONE IS REQUIRED +IN THE DEF STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(R)=(R*180)/3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FND. + +ERROR in line 250: *** Illegal Function Call (FND) *** diff --git a/NBS2/P154.dif b/NBS2/P154.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P154.run b/NBS2/P154.run new file mode 100644 index 0000000..0d2d3f3 --- /dev/null +++ b/NBS2/P154.run @@ -0,0 +1,30 @@ +PROGRAM FILE 154: ERROR - MISSING ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 154.1: ERROR - MISSING ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITHOUT AN ARGUMENT-LIST, THOUGH ONE IS REQUIRED +IN THE DEF STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(R)=(R*180)/3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FND. + +ERROR in line 250: *** Illegal Function Call (FND) *** diff --git a/NBS2/P155.80 b/NBS2/P155.80 new file mode 100644 index 0000000..c34f94a --- /dev/null +++ b/NBS2/P155.80 @@ -0,0 +1,32 @@ +PROGRAM FILE 155: ERROR - NULL ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 155.1: ERROR - NULL ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A NULL ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FNP=3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FNP. +PROCESSOR HAS EVALUATED FNP() = 3.14159 + + END TEST + +END PROGRAM 155 diff --git a/NBS2/P155.BAS b/NBS2/P155.BAS new file mode 100644 index 0000000..8dc3270 --- /dev/null +++ b/NBS2/P155.BAS @@ -0,0 +1,35 @@ +10 PRINT "PROGRAM FILE 155: ERROR - NULL ARGUMENT-LIST FOR" +20 PRINT " USER-DEFINED FUNCTION." +30 PRINT " ANSI STANDARD 7.2, 7.4, 16.2, 16.4" +40 PRINT +50 PRINT "SECTION 155.1: ERROR - NULL ARGUMENT-LIST FOR" +60 PRINT " USER-DEFINED FUNCTION." +70 PRINT +80 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS" +90 PRINT "INVOKED WITH A NULL ARGUMENT-LIST." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST" +240 PRINT +250 DEF FNP=3.14159 +260 PRINT "DEFINITION OF FNP=3.14159" +270 PRINT +280 PRINT "ABOUT TO ATTEMPT INVOCATION OF FNP." +290 LET A=FNP() +300 PRINT "PROCESSOR HAS EVALUATED FNP() = ";A +310 PRINT +320 PRINT " END TEST" +330 PRINT +340 PRINT "END PROGRAM 155" +350 END diff --git a/NBS2/P155.OUT b/NBS2/P155.OUT new file mode 100644 index 0000000..9a900ab --- /dev/null +++ b/NBS2/P155.OUT @@ -0,0 +1,32 @@ +PROGRAM FILE 155: ERROR - NULL ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 155.1: ERROR - NULL ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A NULL ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FNP=3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FNP. +PROCESSOR HAS EVALUATED FNP() = 3.14159 + + END TEST + +END PROGRAM 155 diff --git a/NBS2/P155.dif b/NBS2/P155.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P155.run b/NBS2/P155.run new file mode 100644 index 0000000..c34f94a --- /dev/null +++ b/NBS2/P155.run @@ -0,0 +1,32 @@ +PROGRAM FILE 155: ERROR - NULL ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 155.1: ERROR - NULL ARGUMENT-LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A NULL ARGUMENT-LIST. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FNP=3.14159 + +ABOUT TO ATTEMPT INVOCATION OF FNP. +PROCESSOR HAS EVALUATED FNP() = 3.14159 + + END TEST + +END PROGRAM 155 diff --git a/NBS2/P156.80 b/NBS2/P156.80 new file mode 100644 index 0000000..07fe7e0 --- /dev/null +++ b/NBS2/P156.80 @@ -0,0 +1,29 @@ +PROGRAM FILE 156: ERROR - EXCESS ARGUMENT IN LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 156.1: ERROR - EXCESS ARGUMENT IN LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A FUNCTION DEFINED +WITH ONE PARAMETER IS INVOKED WITH TWO ARGUMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X)=X*10 + +ABOUT TO ATTEMPT INVOCATION OF FNA. + +ERROR in line 290: *** Illegal Function Call (FNA) *** diff --git a/NBS2/P156.BAS b/NBS2/P156.BAS new file mode 100644 index 0000000..962f021 --- /dev/null +++ b/NBS2/P156.BAS @@ -0,0 +1,36 @@ +10 PRINT "PROGRAM FILE 156: ERROR - EXCESS ARGUMENT IN LIST FOR" +20 PRINT " USER-DEFINED FUNCTION." +30 PRINT " ANSI STANDARD 16.4" +40 PRINT +50 PRINT "SECTION 156.1: ERROR - EXCESS ARGUMENT IN LIST FOR" +60 PRINT " USER-DEFINED FUNCTION." +70 PRINT +80 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A FUNCTION DEFINED" +90 PRINT "WITH ONE PARAMETER IS INVOKED WITH TWO ARGUMENTS." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST." +240 PRINT +250 DEF FNA(X)=X*10 +260 PRINT "DEFINITION OF FNA(X)=X*10" +270 PRINT +280 PRINT "ABOUT TO ATTEMPT INVOCATION OF FNA." +290 LET A=FNA(5,6) +300 PRINT "PROCESSOR HAS EVALUATED FNA(5,6) = ";A +310 PRINT +320 PRINT +330 PRINT " END TEST." +340 PRINT +350 PRINT "END PROGRAM 156." +360 END diff --git a/NBS2/P156.OUT b/NBS2/P156.OUT new file mode 100644 index 0000000..9630a8e --- /dev/null +++ b/NBS2/P156.OUT @@ -0,0 +1,29 @@ +PROGRAM FILE 156: ERROR - EXCESS ARGUMENT IN LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 156.1: ERROR - EXCESS ARGUMENT IN LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A FUNCTION DEFINED +WITH ONE PARAMETER IS INVOKED WITH TWO ARGUMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X)=X*10 + +ABOUT TO ATTEMPT INVOCATION OF FNA. + +ERROR in line 290: *** Illegal Function Call (FNA) *** diff --git a/NBS2/P156.dif b/NBS2/P156.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P156.run b/NBS2/P156.run new file mode 100644 index 0000000..07fe7e0 --- /dev/null +++ b/NBS2/P156.run @@ -0,0 +1,29 @@ +PROGRAM FILE 156: ERROR - EXCESS ARGUMENT IN LIST FOR + USER-DEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 156.1: ERROR - EXCESS ARGUMENT IN LIST FOR + USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A FUNCTION DEFINED +WITH ONE PARAMETER IS INVOKED WITH TWO ARGUMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X)=X*10 + +ABOUT TO ATTEMPT INVOCATION OF FNA. + +ERROR in line 290: *** Illegal Function Call (FNA) *** diff --git a/NBS2/P157.80 b/NBS2/P157.80 new file mode 100644 index 0000000..03601d9 --- /dev/null +++ b/NBS2/P157.80 @@ -0,0 +1,34 @@ +PROGRAM FILE 157: ERROR - USER-DEFINED FUNCTION WITH TWO + PARAMETERS. + ANSI STANDARD 16.2, 16.4, 7.2, 7.4 + +SECTION 157.1: ERROR - USER-DEFINED FUNCTION WITH TWO + PARAMETERS. + +THIS SECTION TESTS WHAT HAPPENS WHEN A FUNCTION IS +DEFINED WITH TWO PARAMETERS AND INVOKED WITH TWO +ARGUMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X,Y)=X+Y +SETTING X=1 AND Y=10 + +ABOUT TO ATTEMPT INVOCATION OF FNA(100,1000). +PROCESSOR HAS EVALUATED FNA(100,1000) = 1100 + + END TEST. + +END PROGRAM 157. diff --git a/NBS2/P157.BAS b/NBS2/P157.BAS new file mode 100644 index 0000000..de937ca --- /dev/null +++ b/NBS2/P157.BAS @@ -0,0 +1,39 @@ +10 PRINT "PROGRAM FILE 157: ERROR - USER-DEFINED FUNCTION WITH TWO" +20 PRINT " PARAMETERS." +30 PRINT " ANSI STANDARD 16.2, 16.4, 7.2, 7.4" +40 PRINT +50 PRINT "SECTION 157.1: ERROR - USER-DEFINED FUNCTION WITH TWO" +60 PRINT " PARAMETERS." +70 PRINT +80 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A FUNCTION IS" +90 PRINT "DEFINED WITH TWO PARAMETERS AND INVOKED WITH TWO" +100 PRINT "ARGUMENTS." +110 PRINT +120 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +130 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +140 PRINT +150 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +160 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +170 PRINT " BY THE PROCESSOR, OR" +180 PRINT +190 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +200 PRINT +210 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +220 PRINT "FOR DETAILED CRITERIA." +230 PRINT +240 PRINT " BEGIN TEST." +250 PRINT +260 DEF FNA(X,Y)=X+Y +270 PRINT "DEFINITION OF FNA(X,Y)=X+Y" +280 PRINT "SETTING X=1 AND Y=10" +290 PRINT +300 LET X=1 +310 LET Y=10 +320 PRINT "ABOUT TO ATTEMPT INVOCATION OF FNA(100,1000)." +330 LET A=FNA(100,1000) +340 PRINT "PROCESSOR HAS EVALUATED FNA(100,1000) = ";A +350 PRINT +360 PRINT " END TEST." +370 PRINT +380 PRINT "END PROGRAM 157." +390 END diff --git a/NBS2/P157.OUT b/NBS2/P157.OUT new file mode 100644 index 0000000..62ba3a4 --- /dev/null +++ b/NBS2/P157.OUT @@ -0,0 +1,34 @@ +PROGRAM FILE 157: ERROR - USER-DEFINED FUNCTION WITH TWO + PARAMETERS. + ANSI STANDARD 16.2, 16.4, 7.2, 7.4 + +SECTION 157.1: ERROR - USER-DEFINED FUNCTION WITH TWO + PARAMETERS. + +THIS SECTION TESTS WHAT HAPPENS WHEN A FUNCTION IS +DEFINED WITH TWO PARAMETERS AND INVOKED WITH TWO +ARGUMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X,Y)=X+Y +SETTING X=1 AND Y=10 + +ABOUT TO ATTEMPT INVOCATION OF FNA(100,1000). +PROCESSOR HAS EVALUATED FNA(100,1000) = 1100 + + END TEST. + +END PROGRAM 157. diff --git a/NBS2/P157.dif b/NBS2/P157.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P157.run b/NBS2/P157.run new file mode 100644 index 0000000..03601d9 --- /dev/null +++ b/NBS2/P157.run @@ -0,0 +1,34 @@ +PROGRAM FILE 157: ERROR - USER-DEFINED FUNCTION WITH TWO + PARAMETERS. + ANSI STANDARD 16.2, 16.4, 7.2, 7.4 + +SECTION 157.1: ERROR - USER-DEFINED FUNCTION WITH TWO + PARAMETERS. + +THIS SECTION TESTS WHAT HAPPENS WHEN A FUNCTION IS +DEFINED WITH TWO PARAMETERS AND INVOKED WITH TWO +ARGUMENTS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X,Y)=X+Y +SETTING X=1 AND Y=10 + +ABOUT TO ATTEMPT INVOCATION OF FNA(100,1000). +PROCESSOR HAS EVALUATED FNA(100,1000) = 1100 + + END TEST. + +END PROGRAM 157. diff --git a/NBS2/P158.80 b/NBS2/P158.80 new file mode 100644 index 0000000..5eaae75 --- /dev/null +++ b/NBS2/P158.80 @@ -0,0 +1,32 @@ +PROGRAM FILE 158: ERROR - USING A STRING AS AN ARGUMENT FOR + A USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 158.1: ERROR - USING A STRING AS AN ARGUMENT FOR + A USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT, INSTEAD OF A +NUMERIC EXPRESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(4)=R + 3 +SETTING X = 5 +SETTING X$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF FND(X$). + +ERROR in line 340: *** Illegal Function Call (FND) *** diff --git a/NBS2/P158.BAS b/NBS2/P158.BAS new file mode 100644 index 0000000..86e1eeb --- /dev/null +++ b/NBS2/P158.BAS @@ -0,0 +1,40 @@ +10 PRINT "PROGRAM FILE 158: ERROR - USING A STRING AS AN ARGUMENT FOR" +20 PRINT " A USER-DEFINED FUNCTION." +30 PRINT " ANSI STANDARD 7.2, 7.4, 16.2, 16.4" +40 PRINT +50 PRINT "SECTION 158.1: ERROR - USING A STRING AS AN ARGUMENT FOR" +60 PRINT " A USER-DEFINED FUNCTION." +70 PRINT +80 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS" +90 PRINT "INVOKED WITH A CHARACTER STRING ARGUMENT, INSTEAD OF A" +100 PRINT "NUMERIC EXPRESSION." +110 PRINT +120 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +130 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +140 PRINT +150 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +160 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +170 PRINT " BY THE PROCESSOR, OR" +180 PRINT +190 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +200 PRINT +210 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +220 PRINT "FOR DETAILED CRITERIA." +230 PRINT +240 PRINT " BEGIN TEST" +250 DEF FND(R)=R + 3 +260 PRINT +270 PRINT "DEFINITION OF FND(4)=R + 3" +280 PRINT "SETTING X = 5" +290 PRINT "SETTING X$ = 'ABC'" +300 PRINT +310 LET X=5 +320 LET X$="ABC" +330 PRINT "ABOUT TO ATTEMPT INVOCATION OF FND(X$)." +340 LET A=FND(X$) +350 PRINT "PROCESSOR HAS EVALUATED FND(X$) = ";A +360 PRINT +370 PRINT " END TEST" +380 PRINT +390 PRINT "END PROGRAM 158" +400 END diff --git a/NBS2/P158.OUT b/NBS2/P158.OUT new file mode 100644 index 0000000..2d35979 --- /dev/null +++ b/NBS2/P158.OUT @@ -0,0 +1,32 @@ +PROGRAM FILE 158: ERROR - USING A STRING AS AN ARGUMENT FOR + A USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 158.1: ERROR - USING A STRING AS AN ARGUMENT FOR + A USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT, INSTEAD OF A +NUMERIC EXPRESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(4)=R + 3 +SETTING X = 5 +SETTING X$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF FND(X$). + +ERROR in line 340: *** Illegal Function Call (FND) *** diff --git a/NBS2/P158.dif b/NBS2/P158.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P158.run b/NBS2/P158.run new file mode 100644 index 0000000..5eaae75 --- /dev/null +++ b/NBS2/P158.run @@ -0,0 +1,32 @@ +PROGRAM FILE 158: ERROR - USING A STRING AS AN ARGUMENT FOR + A USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 158.1: ERROR - USING A STRING AS AN ARGUMENT FOR + A USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT, INSTEAD OF A +NUMERIC EXPRESSION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(4)=R + 3 +SETTING X = 5 +SETTING X$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF FND(X$). + +ERROR in line 340: *** Illegal Function Call (FND) *** diff --git a/NBS2/P159.80 b/NBS2/P159.80 new file mode 100644 index 0000000..a09e635 --- /dev/null +++ b/NBS2/P159.80 @@ -0,0 +1,35 @@ +PROGRAM FILE 159: ERROR - USING A STRING AS AN ARGUMENT AND + PARAMETER FOR A USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 159.1: ERROR - USING A STRING AS AN ARGUMENT AND + PARAMETER FOR A USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT AND PARAMETER, +INSTEAD OF A NUMERIC EXPRESSION AND VARIABLE + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(R$)=R + 3 +SETTING R = 5 +SETTING R$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF FND(R$). +PROCESSOR HAS EVALUATED FND(R$) = 8 + + END TEST + +END PROGRAM 159 diff --git a/NBS2/P159.BAS b/NBS2/P159.BAS new file mode 100644 index 0000000..73b5784 --- /dev/null +++ b/NBS2/P159.BAS @@ -0,0 +1,40 @@ +10 PRINT "PROGRAM FILE 159: ERROR - USING A STRING AS AN ARGUMENT AND" +20 PRINT " PARAMETER FOR A USER-DEFINED FUNCTION." +30 PRINT " ANSI STANDARD 7.2, 7.4, 16.2, 16.4" +40 PRINT +50 PRINT "SECTION 159.1: ERROR - USING A STRING AS AN ARGUMENT AND" +60 PRINT " PARAMETER FOR A USER-DEFINED FUNCTION." +70 PRINT +80 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS" +90 PRINT "INVOKED WITH A CHARACTER STRING ARGUMENT AND PARAMETER," +100 PRINT "INSTEAD OF A NUMERIC EXPRESSION AND VARIABLE" +110 PRINT +120 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +130 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +140 PRINT +150 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +160 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +170 PRINT " BY THE PROCESSOR, OR" +180 PRINT +190 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +200 PRINT +210 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +220 PRINT "FOR DETAILED CRITERIA." +230 PRINT +240 PRINT " BEGIN TEST" +250 DEF FND(R$)=R+3 +260 PRINT +270 PRINT "DEFINITION OF FND(R$)=R + 3" +280 PRINT "SETTING R = 5" +290 PRINT "SETTING R$ = 'ABC'" +300 PRINT +310 LET R=5 +320 LET R$="ABC" +330 PRINT "ABOUT TO ATTEMPT INVOCATION OF FND(R$)." +340 LET A=FND(R$) +350 PRINT "PROCESSOR HAS EVALUATED FND(R$) = ";A +360 PRINT +370 PRINT " END TEST" +380 PRINT +390 PRINT "END PROGRAM 159" +400 END diff --git a/NBS2/P159.OUT b/NBS2/P159.OUT new file mode 100644 index 0000000..97d891b --- /dev/null +++ b/NBS2/P159.OUT @@ -0,0 +1,35 @@ +PROGRAM FILE 159: ERROR - USING A STRING AS AN ARGUMENT AND + PARAMETER FOR A USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 159.1: ERROR - USING A STRING AS AN ARGUMENT AND + PARAMETER FOR A USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT AND PARAMETER, +INSTEAD OF A NUMERIC EXPRESSION AND VARIABLE + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(R$)=R + 3 +SETTING R = 5 +SETTING R$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF FND(R$). +PROCESSOR HAS EVALUATED FND(R$) = 8 + + END TEST + +END PROGRAM 159 diff --git a/NBS2/P159.dif b/NBS2/P159.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P159.run b/NBS2/P159.run new file mode 100644 index 0000000..a09e635 --- /dev/null +++ b/NBS2/P159.run @@ -0,0 +1,35 @@ +PROGRAM FILE 159: ERROR - USING A STRING AS AN ARGUMENT AND + PARAMETER FOR A USER-DEFINED FUNCTION. + ANSI STANDARD 7.2, 7.4, 16.2, 16.4 + +SECTION 159.1: ERROR - USING A STRING AS AN ARGUMENT AND + PARAMETER FOR A USER-DEFINED FUNCTION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED WITH A CHARACTER STRING ARGUMENT AND PARAMETER, +INSTEAD OF A NUMERIC EXPRESSION AND VARIABLE + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +DEFINITION OF FND(R$)=R + 3 +SETTING R = 5 +SETTING R$ = 'ABC' + +ABOUT TO ATTEMPT INVOCATION OF FND(R$). +PROCESSOR HAS EVALUATED FND(R$) = 8 + + END TEST + +END PROGRAM 159 diff --git a/NBS2/P160.80 b/NBS2/P160.80 new file mode 100644 index 0000000..d73d7ad --- /dev/null +++ b/NBS2/P160.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 160: ERROR - FUNCTION DEFINED MORE THAN ONCE. + ANSI STANDARD 16.4 + +SECTION 160.1: ERROR - FUNCTION DEFINED MORE THAN ONCE. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +DEFINED MORE THAN ONCE IN THE SAME PROGRAM. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +1ST DEFINITION OF FND(R)=R+10 +2ND DEFINITION OF FND(R)=R+100 + +ABOUT TO ATTEMPT INVOCATION OF FND(5). +PROCESSOR HAS EVALUATED FND(5) = 105 + + END TEST + +END PROGRAM 160 diff --git a/NBS2/P160.BAS b/NBS2/P160.BAS new file mode 100644 index 0000000..e17a285 --- /dev/null +++ b/NBS2/P160.BAS @@ -0,0 +1,35 @@ +10 PRINT "PROGRAM FILE 160: ERROR - FUNCTION DEFINED MORE THAN ONCE." +20 PRINT " ANSI STANDARD 16.4" +30 PRINT +40 PRINT "SECTION 160.1: ERROR - FUNCTION DEFINED MORE THAN ONCE." +50 PRINT +60 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS" +70 PRINT "DEFINED MORE THAN ONCE IN THE SAME PROGRAM." +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT " BEGIN TEST" +220 DEF FND(R)=R+10 +230 PRINT +240 PRINT "1ST DEFINITION OF FND(R)=R+10" +250 PRINT "2ND DEFINITION OF FND(R)=R+100" +260 PRINT +270 PRINT "ABOUT TO ATTEMPT INVOCATION OF FND(5)." +280 LET A=FND(5) +290 PRINT "PROCESSOR HAS EVALUATED FND(5) = ";A +300 PRINT +310 PRINT " END TEST" +320 PRINT +330 PRINT "END PROGRAM 160" +340 DEF FND(R)=R+100 +350 END diff --git a/NBS2/P160.OUT b/NBS2/P160.OUT new file mode 100644 index 0000000..2cb65ad --- /dev/null +++ b/NBS2/P160.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 160: ERROR - FUNCTION DEFINED MORE THAN ONCE. + ANSI STANDARD 16.4 + +SECTION 160.1: ERROR - FUNCTION DEFINED MORE THAN ONCE. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +DEFINED MORE THAN ONCE IN THE SAME PROGRAM. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +1ST DEFINITION OF FND(R)=R+10 +2ND DEFINITION OF FND(R)=R+100 + +ABOUT TO ATTEMPT INVOCATION OF FND(5). +PROCESSOR HAS EVALUATED FND(5) = 105 + + END TEST + +END PROGRAM 160 diff --git a/NBS2/P160.dif b/NBS2/P160.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P160.run b/NBS2/P160.run new file mode 100644 index 0000000..d73d7ad --- /dev/null +++ b/NBS2/P160.run @@ -0,0 +1,31 @@ +PROGRAM FILE 160: ERROR - FUNCTION DEFINED MORE THAN ONCE. + ANSI STANDARD 16.4 + +SECTION 160.1: ERROR - FUNCTION DEFINED MORE THAN ONCE. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +DEFINED MORE THAN ONCE IN THE SAME PROGRAM. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST + +1ST DEFINITION OF FND(R)=R+10 +2ND DEFINITION OF FND(R)=R+100 + +ABOUT TO ATTEMPT INVOCATION OF FND(5). +PROCESSOR HAS EVALUATED FND(5) = 105 + + END TEST + +END PROGRAM 160 diff --git a/NBS2/P161.80 b/NBS2/P161.80 new file mode 100644 index 0000000..1b3cb10 --- /dev/null +++ b/NBS2/P161.80 @@ -0,0 +1,29 @@ +PROGRAM FILE 161: ERROR - REFERENCING A FUNCTION INSIDE + ITS OWN DEFINITION. + ANSI STANDARD 16.4 + +SECTION 161.1: ERROR - REFERENCING A FUNCTION INSIDE + ITS OWN DEFINITION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE DEFINITION OF A +FUNCTION REFERS TO THAT SAME FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X) = X / FNA(X-1) + +ABOUT TO ATTEMPT INVOCATION OF FNA. + +ERROR in line 290: in inc_esc(): Maximum expression stack exceeded <63> diff --git a/NBS2/P161.BAS b/NBS2/P161.BAS new file mode 100644 index 0000000..b8e20ff --- /dev/null +++ b/NBS2/P161.BAS @@ -0,0 +1,35 @@ +10 PRINT "PROGRAM FILE 161: ERROR - REFERENCING A FUNCTION INSIDE" +20 PRINT " ITS OWN DEFINITION." +30 PRINT " ANSI STANDARD 16.4" +40 PRINT +50 PRINT "SECTION 161.1: ERROR - REFERENCING A FUNCTION INSIDE" +60 PRINT " ITS OWN DEFINITION." +70 PRINT +80 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN THE DEFINITION OF A" +90 PRINT "FUNCTION REFERS TO THAT SAME FUNCTION." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST." +240 PRINT +250 DEF FNA(X)=X/FNA(X-1) +260 PRINT "DEFINITION OF FNA(X) = X / FNA(X-1)" +270 PRINT +280 PRINT "ABOUT TO ATTEMPT INVOCATION OF FNA." +290 LET Z=FNA(5) +300 PRINT "PROCESSOR HAS EVALUATED FNA(5) = ";Z +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 161" +350 END diff --git a/NBS2/P161.OUT b/NBS2/P161.OUT new file mode 100644 index 0000000..032e070 --- /dev/null +++ b/NBS2/P161.OUT @@ -0,0 +1,29 @@ +PROGRAM FILE 161: ERROR - REFERENCING A FUNCTION INSIDE + ITS OWN DEFINITION. + ANSI STANDARD 16.4 + +SECTION 161.1: ERROR - REFERENCING A FUNCTION INSIDE + ITS OWN DEFINITION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE DEFINITION OF A +FUNCTION REFERS TO THAT SAME FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X) = X / FNA(X-1) + +ABOUT TO ATTEMPT INVOCATION OF FNA. + +ERROR in line 290: in inc_esc(): Maximum expression stack exceeded <63> diff --git a/NBS2/P161.dif b/NBS2/P161.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P161.run b/NBS2/P161.run new file mode 100644 index 0000000..1b3cb10 --- /dev/null +++ b/NBS2/P161.run @@ -0,0 +1,29 @@ +PROGRAM FILE 161: ERROR - REFERENCING A FUNCTION INSIDE + ITS OWN DEFINITION. + ANSI STANDARD 16.4 + +SECTION 161.1: ERROR - REFERENCING A FUNCTION INSIDE + ITS OWN DEFINITION. + +THIS SECTION TESTS WHAT HAPPENS WHEN THE DEFINITION OF A +FUNCTION REFERS TO THAT SAME FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +DEFINITION OF FNA(X) = X / FNA(X-1) + +ABOUT TO ATTEMPT INVOCATION OF FNA. + +ERROR in line 290: in inc_esc(): Maximum expression stack exceeded <63> diff --git a/NBS2/P162.80 b/NBS2/P162.80 new file mode 100644 index 0000000..6b469eb --- /dev/null +++ b/NBS2/P162.80 @@ -0,0 +1,33 @@ +PROGRAM FILE 162: ERROR - REFERENCE TO FUNCTION PRECEDES + ITS DEFINITION. + ANSI STANDARD 16.4 + +SECTION 163.1: ERROR - REFERENCE TO FUNCTION PRECEDES + ITS DEFINITION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED IN A LOWER-NUMBERED LINE THAN THE DEF STATEMENT +FOR THAT FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +(LATER) DEFINITION OF FND(R)=R+10 + +ABOUT TO ATTEMPT INVOCATION OF FND(5). +PROCESSOR HAS EVALUATED FND(5) = 15 + + END TEST + +END PROGRAM 162 diff --git a/NBS2/P162.BAS b/NBS2/P162.BAS new file mode 100644 index 0000000..e902aee --- /dev/null +++ b/NBS2/P162.BAS @@ -0,0 +1,36 @@ +10 PRINT "PROGRAM FILE 162: ERROR - REFERENCE TO FUNCTION PRECEDES" +20 PRINT " ITS DEFINITION." +30 PRINT " ANSI STANDARD 16.4" +40 PRINT +50 PRINT "SECTION 163.1: ERROR - REFERENCE TO FUNCTION PRECEDES" +60 PRINT " ITS DEFINITION." +70 PRINT +80 PRINT "THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS" +90 PRINT "INVOKED IN A LOWER-NUMBERED LINE THAN THE DEF STATEMENT" +100 PRINT "FOR THAT FUNCTION." +110 PRINT +120 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +130 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +140 PRINT +150 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +160 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +170 PRINT " BY THE PROCESSOR, OR" +180 PRINT +190 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +200 PRINT +210 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +220 PRINT "FOR DETAILED CRITERIA." +230 PRINT +240 PRINT " BEGIN TEST." +250 PRINT +260 PRINT "(LATER) DEFINITION OF FND(R)=R+10" +270 PRINT +280 PRINT "ABOUT TO ATTEMPT INVOCATION OF FND(5)." +290 LET A=FND(5) +300 PRINT "PROCESSOR HAS EVALUATED FND(5) = ";A +310 PRINT +320 DEF FND(R)=R+10 +330 PRINT " END TEST" +340 PRINT +350 PRINT "END PROGRAM 162" +360 END diff --git a/NBS2/P162.OUT b/NBS2/P162.OUT new file mode 100644 index 0000000..5f1d21c --- /dev/null +++ b/NBS2/P162.OUT @@ -0,0 +1,33 @@ +PROGRAM FILE 162: ERROR - REFERENCE TO FUNCTION PRECEDES + ITS DEFINITION. + ANSI STANDARD 16.4 + +SECTION 163.1: ERROR - REFERENCE TO FUNCTION PRECEDES + ITS DEFINITION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED IN A LOWER-NUMBERED LINE THAN THE DEF STATEMENT +FOR THAT FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +(LATER) DEFINITION OF FND(R)=R+10 + +ABOUT TO ATTEMPT INVOCATION OF FND(5). +PROCESSOR HAS EVALUATED FND(5) = 15 + + END TEST + +END PROGRAM 162 diff --git a/NBS2/P162.dif b/NBS2/P162.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P162.run b/NBS2/P162.run new file mode 100644 index 0000000..6b469eb --- /dev/null +++ b/NBS2/P162.run @@ -0,0 +1,33 @@ +PROGRAM FILE 162: ERROR - REFERENCE TO FUNCTION PRECEDES + ITS DEFINITION. + ANSI STANDARD 16.4 + +SECTION 163.1: ERROR - REFERENCE TO FUNCTION PRECEDES + ITS DEFINITION. + +THIS SECTION TESTS WHAT HAPPENS WHEN A USER FUNCTION IS +INVOKED IN A LOWER-NUMBERED LINE THAN THE DEF STATEMENT +FOR THAT FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +(LATER) DEFINITION OF FND(R)=R+10 + +ABOUT TO ATTEMPT INVOCATION OF FND(5). +PROCESSOR HAS EVALUATED FND(5) = 15 + + END TEST + +END PROGRAM 162 diff --git a/NBS2/P163.80 b/NBS2/P163.80 new file mode 100644 index 0000000..7efdd50 --- /dev/null +++ b/NBS2/P163.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 163: ERROR - REFERENCE TO AN UNDEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 163.1: ERROR - REFERENCE TO AN UNDEFINED FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ATTEMPT INVOCATION OF FNA, WHICH IS UNDEFINED. +PROCESSOR HAS EVALUATED FNA(1) = 0 + + END TEST. + +END PROGRAM 163 diff --git a/NBS2/P163.BAS b/NBS2/P163.BAS new file mode 100644 index 0000000..6e204f5 --- /dev/null +++ b/NBS2/P163.BAS @@ -0,0 +1,27 @@ +10 PRINT "PROGRAM FILE 163: ERROR - REFERENCE TO AN UNDEFINED FUNCTION." +20 PRINT " ANSI STANDARD 16.4" +30 PRINT +40 PRINT "SECTION 163.1: ERROR - REFERENCE TO AN UNDEFINED FUNCTION." +50 PRINT +60 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +70 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +80 PRINT +90 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +100 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +110 PRINT " BY THE PROCESSOR, OR" +120 PRINT +130 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +140 PRINT +150 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +160 PRINT "FOR DETAILED CRITERIA." +170 PRINT +180 PRINT " BEGIN TEST." +190 PRINT +200 PRINT "ABOUT TO ATTEMPT INVOCATION OF FNA, WHICH IS UNDEFINED." +210 LET A=FNA(1) +220 PRINT "PROCESSOR HAS EVALUATED FNA(1) = ";A +230 PRINT +240 PRINT " END TEST." +250 PRINT +260 PRINT "END PROGRAM 163" +270 END diff --git a/NBS2/P163.OUT b/NBS2/P163.OUT new file mode 100644 index 0000000..1334e05 --- /dev/null +++ b/NBS2/P163.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 163: ERROR - REFERENCE TO AN UNDEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 163.1: ERROR - REFERENCE TO AN UNDEFINED FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ATTEMPT INVOCATION OF FNA, WHICH IS UNDEFINED. +PROCESSOR HAS EVALUATED FNA(1) = 0 + + END TEST. + +END PROGRAM 163 diff --git a/NBS2/P163.dif b/NBS2/P163.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P163.run b/NBS2/P163.run new file mode 100644 index 0000000..7efdd50 --- /dev/null +++ b/NBS2/P163.run @@ -0,0 +1,25 @@ +PROGRAM FILE 163: ERROR - REFERENCE TO AN UNDEFINED FUNCTION. + ANSI STANDARD 16.4 + +SECTION 163.1: ERROR - REFERENCE TO AN UNDEFINED FUNCTION. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ATTEMPT INVOCATION OF FNA, WHICH IS UNDEFINED. +PROCESSOR HAS EVALUATED FNA(1) = 0 + + END TEST. + +END PROGRAM 163 diff --git a/NBS2/P164.80 b/NBS2/P164.80 new file mode 100644 index 0000000..3025fd3 --- /dev/null +++ b/NBS2/P164.80 @@ -0,0 +1,73 @@ +PROGRAM FILE 164: GENERAL USE OF NUMERIC EXPRESSIONS + IN LET-STATEMENT. + ANSI STANDARD 6.2, 6.4, 7.2, 7.4, 8.2, 8.4, + 16.2, 16.4 + +THIS PROGRAM EXERCISES THE FULL RANGE OF USES AND VARIETIES +OF NUMERIC EXPRESSIONS IN THE LET-STATEMENT. EXPRESSIONS ARE +COMPOSED OF ALL TYPES OF PRIMARIES AND ARE USED AS ARGUMENTS +OF FUNCTIONS AND AS SUBSCRIPTS. + +SECTION 164.1: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES AND FUNCTION REFERENCES. + +THIS SECTION TESTS WHETHER SUBSCRIPTED VARIABLES AND +REFERENCES TO BOTH IMPLEMENTATION-SUPPLIED AND +USER-DEFINED FUNCTIONS CAN BE USED AS PRIMARIES IN +NUMERIC EXPRESSIONS. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 1 1 OK + 2 1 1. OK + 3 7 7. OK + 4 3 3. OK + +*** TEST PASSED *** + + END TEST. + +SECTION 164.2: NUMERIC EXPRESSIONS USED AS FUNCTION + ARGUMENTS AND ARRAY SUBSCRIPTS. + +THIS SECTION TESTS WHETHER NUMERIC EXPRESSIONS CAN BE +USED AS ARGUMENTS TO BOTH IMPLEMENTATION-SUPPLIED AND +USER-DEFINED FUNCTIONS AND ALSO AS SUBSCRIPTS. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 1 1. OK + 2 1.2 1.2 OK + 3 .353336 .353336 OK + +*** TEST PASSED *** + + END TEST. + +SECTION 164.3: EXPRESSIONS USED AS SUBSCRIPTS ARE + ROUNDED TO NEAREST INTEGER. + +THIS SECTION ENSURES THAT WHEN EXPRESSIONS ARE USED AS +SUBSCRIPTS, THEY ARE ROUNDED TO THE NEAREST INTEGER. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 27 27 OK + 2 1 1 OK + 3 11 11 OK + 4 1 1 OK + 5 71 71 OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 164 + +Program interrupted at line 6010 diff --git a/NBS2/P164.BAS b/NBS2/P164.BAS new file mode 100644 index 0000000..d913879 --- /dev/null +++ b/NBS2/P164.BAS @@ -0,0 +1,142 @@ +10 PRINT "PROGRAM FILE 164: GENERAL USE OF NUMERIC EXPRESSIONS" +20 PRINT " IN LET-STATEMENT." +30 PRINT " ANSI STANDARD 6.2, 6.4, 7.2, 7.4, 8.2, 8.4, " +40 PRINT " 16.2, 16.4" +50 PRINT +60 PRINT "THIS PROGRAM EXERCISES THE FULL RANGE OF USES AND VARIETIES" +70 PRINT "OF NUMERIC EXPRESSIONS IN THE LET-STATEMENT. EXPRESSIONS ARE" +80 PRINT "COMPOSED OF ALL TYPES OF PRIMARIES AND ARE USED AS ARGUMENTS" +90 PRINT "OF FUNCTIONS AND AS SUBSCRIPTS." +100 PRINT +110 LET P=3.14159265 +120 PRINT "SECTION 164.1: NUMERIC EXPRESSIONS CONTAINING" +130 PRINT " SUBSCRIPTED VARIABLES AND FUNCTION REFERENCES." +150 PRINT +160 PRINT "THIS SECTION TESTS WHETHER SUBSCRIPTED VARIABLES AND" +170 PRINT "REFERENCES TO BOTH IMPLEMENTATION-SUPPLIED AND" +180 PRINT "USER-DEFINED FUNCTIONS CAN BE USED AS PRIMARIES IN" +190 PRINT "NUMERIC EXPRESSIONS." +200 GOSUB 7000 +270 LET X=10*RND+3/RND-TAN(-.348E-2) +280 LET A=SIN(X)*SIN(X)+COS(X)^(-(-1.3+.5-1.2)) +290 LET Y=1 +300 GOSUB 9000 +310 DIM F(20) +320 REM SET UP FIBONACCI SERIES IN F +330 LET F(1)=1 +340 LET F(2)=1 +350 FOR I=3 TO 20 +360 LET J=I-1 +370 LET K=I-2 +380 LET F(I)=F(J)+F(K) +390 NEXT I +400 LET A=F(20)/F(19)/((1+SQR(5))/2) +410 LET Y=1 +420 GOSUB 9000 +430 FOR I=1 TO 7 +440 FOR J=1 TO 7 +450 LET Q(I,J)=I/J +460 NEXT J +470 NEXT I +480 LET X=P/10 +490 LET A=-F(19)/F(20)/(-SIN(X))/Q(2,7) +500 LET Y=7 +510 GOSUB 9000 +520 REM DEF COMMON LOG +530 DEF FNC(X)=LOG(X)/LOG(10) +540 LET X=P/6 +550 LET A=SIN(X)*FNC(1E36)/((F(20)+F(20))/F(19)-1)^FNC(100)*Q(5,6) +560 LET Y=3 +570 GOSUB 9000 +580 GOSUB 8000 +660 PRINT "SECTION 164.2: NUMERIC EXPRESSIONS USED AS FUNCTION" +670 PRINT " ARGUMENTS AND ARRAY SUBSCRIPTS." +680 PRINT +690 PRINT "THIS SECTION TESTS WHETHER NUMERIC EXPRESSIONS CAN BE" +700 PRINT "USED AS ARGUMENTS TO BOTH IMPLEMENTATION-SUPPLIED AND" +710 PRINT "USER-DEFINED FUNCTIONS AND ALSO AS SUBSCRIPTS." +750 GOSUB 7000 +790 REM DEF ARCSIN OF X IN DEGREES +800 DEF FNA(X)=ATN(1/(1/X^2-1)^.5)/P*180 +810 LET A=FNA(SQR(3/4))/2/2/3/5 +820 LET Y=1 +830 GOSUB 9000 +840 LET A=Q(1+FNA(Q(F(4),ABS(-6)))/6,INT(SQR(F(+1+2^3)))) +850 LET Y=1.2 +860 GOSUB 9000 +870 LET X=RND +880 LET D=P/180 +890 LET F(F(F(6))*Q(2,7)-TAN(P/4))=TAN(ATN(SIN(D*FNA(LOG(EXP(X)))))) +900 LET A=F(5) +910 LET Y=X +920 GOSUB 9000 +930 LET F(5)=5 +1000 GOSUB 8000 +1010 PRINT "SECTION 164.3: EXPRESSIONS USED AS SUBSCRIPTS ARE" +1015 PRINT " ROUNDED TO NEAREST INTEGER." +1020 PRINT +1030 PRINT "THIS SECTION ENSURES THAT WHEN EXPRESSIONS ARE USED AS" +1040 PRINT "SUBSCRIPTS, THEY ARE ROUNDED TO THE NEAREST INTEGER." +1060 GOSUB 7000 +1080 DIM V(5,11) +1090 FOR I=0 TO 5 +1100 FOR J=0 TO 11 +1110 LET V(I,J)=12*I+J +1120 NEXT J +1130 NEXT I +1160 LET A=V(FNC(316)-.1,FNC(ABS(-316))+10E-2) +1170 LET Y=27 +1180 GOSUB 9000 +1190 LET A=V(Q(3,7),Q(4,7)) +1200 LET Y=1 +1210 GOSUB 9000 +1220 LET A=V(FNC(1E-3)+2.51,13*7/9+1) +1230 LET Y=11 +1240 GOSUB 9000 +1250 LET A=1+V(LOG(1.0)-.4,.6-EXP(0)) +1260 LET Y=1 +1270 GOSUB 9000 +1280 LET A=V(F(5)+.49,F(7)-Q(5,3)) +1290 LET Y=71 +1300 GOSUB 9000 +1700 GOSUB 8000 +6000 PRINT "END PROGRAM 164" +6010 STOP +7000 REM SUBROUTINE TO BEGIN SECTION +7010 PRINT +7020 PRINT " BEGIN TEST." +7030 PRINT +7040 PRINT "CASE #","SHOULD BE","ACTUAL","OUTCOME" +7050 PRINT +7060 LET E1=0 +7070 LET C1=0 +7080 RETURN +8000 REM SUBROUTINE TO END SECTION +8010 PRINT +8020 IF E1=0 THEN 8050 +8030 PRINT "*** TEST FAILED IN ";E1;" CASE(S) ***" +8040 GOTO 8060 +8050 PRINT "*** TEST PASSED ***" +8060 PRINT +8070 PRINT " END TEST." +8080 PRINT +8090 RETURN +9000 REM HANDLE REPORT +9010 REM THIS SUBROUTINE ADOPTS A VERY LOOSE CRITERION OF CORRECTNESS +9020 REM (RELATIVE ERROR < .001). ITS PURPOSE ISN'T TO MEASURE ACCURACY +9030 REM BUT ONLY TO ASSURE THAT THE SEMANTICS OF THE EXPRESSION +9040 REM HAVE BEEN CORRECTLY IMPLEMENTED. +9050 LET C1=C1+1 +9060 PRINT C1,Y,A, +9070 LET P$="FAIL" +9080 LET M=0.001 +9090 LET T=(A-Y)/Y +9100 IF T>M THEN 9150 +9110 LET T=-T +9120 IF T>M THEN 9150 +9130 LET P$=" OK " +9140 GOTO 9160 +9150 LET E1=E1+1 +9160 PRINT P$ +9170 RETURN +9180 END diff --git a/NBS2/P164.OUT b/NBS2/P164.OUT new file mode 100644 index 0000000..35738f6 --- /dev/null +++ b/NBS2/P164.OUT @@ -0,0 +1,73 @@ +PROGRAM FILE 164: GENERAL USE OF NUMERIC EXPRESSIONS + IN LET-STATEMENT. + ANSI STANDARD 6.2, 6.4, 7.2, 7.4, 8.2, 8.4, + 16.2, 16.4 + +THIS PROGRAM EXERCISES THE FULL RANGE OF USES AND VARIETIES +OF NUMERIC EXPRESSIONS IN THE LET-STATEMENT. EXPRESSIONS ARE +COMPOSED OF ALL TYPES OF PRIMARIES AND ARE USED AS ARGUMENTS +OF FUNCTIONS AND AS SUBSCRIPTS. + +SECTION 164.1: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES AND FUNCTION REFERENCES. + +THIS SECTION TESTS WHETHER SUBSCRIPTED VARIABLES AND +REFERENCES TO BOTH IMPLEMENTATION-SUPPLIED AND +USER-DEFINED FUNCTIONS CAN BE USED AS PRIMARIES IN +NUMERIC EXPRESSIONS. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 1 1 OK + 2 1 1. OK + 3 7 7. OK + 4 3 3. OK + +*** TEST PASSED *** + + END TEST. + +SECTION 164.2: NUMERIC EXPRESSIONS USED AS FUNCTION + ARGUMENTS AND ARRAY SUBSCRIPTS. + +THIS SECTION TESTS WHETHER NUMERIC EXPRESSIONS CAN BE +USED AS ARGUMENTS TO BOTH IMPLEMENTATION-SUPPLIED AND +USER-DEFINED FUNCTIONS AND ALSO AS SUBSCRIPTS. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 1 1. OK + 2 1.2 1.2 OK + 3 .353336 .353336 OK + +*** TEST PASSED *** + + END TEST. + +SECTION 164.3: EXPRESSIONS USED AS SUBSCRIPTS ARE + ROUNDED TO NEAREST INTEGER. + +THIS SECTION ENSURES THAT WHEN EXPRESSIONS ARE USED AS +SUBSCRIPTS, THEY ARE ROUNDED TO THE NEAREST INTEGER. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 27 27 OK + 2 1 1 OK + 3 11 11 OK + 4 1 1 OK + 5 71 71 OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 164 + +Program interrupted at line 6010 diff --git a/NBS2/P164.dif b/NBS2/P164.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P164.run b/NBS2/P164.run new file mode 100644 index 0000000..3025fd3 --- /dev/null +++ b/NBS2/P164.run @@ -0,0 +1,73 @@ +PROGRAM FILE 164: GENERAL USE OF NUMERIC EXPRESSIONS + IN LET-STATEMENT. + ANSI STANDARD 6.2, 6.4, 7.2, 7.4, 8.2, 8.4, + 16.2, 16.4 + +THIS PROGRAM EXERCISES THE FULL RANGE OF USES AND VARIETIES +OF NUMERIC EXPRESSIONS IN THE LET-STATEMENT. EXPRESSIONS ARE +COMPOSED OF ALL TYPES OF PRIMARIES AND ARE USED AS ARGUMENTS +OF FUNCTIONS AND AS SUBSCRIPTS. + +SECTION 164.1: NUMERIC EXPRESSIONS CONTAINING + SUBSCRIPTED VARIABLES AND FUNCTION REFERENCES. + +THIS SECTION TESTS WHETHER SUBSCRIPTED VARIABLES AND +REFERENCES TO BOTH IMPLEMENTATION-SUPPLIED AND +USER-DEFINED FUNCTIONS CAN BE USED AS PRIMARIES IN +NUMERIC EXPRESSIONS. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 1 1 OK + 2 1 1. OK + 3 7 7. OK + 4 3 3. OK + +*** TEST PASSED *** + + END TEST. + +SECTION 164.2: NUMERIC EXPRESSIONS USED AS FUNCTION + ARGUMENTS AND ARRAY SUBSCRIPTS. + +THIS SECTION TESTS WHETHER NUMERIC EXPRESSIONS CAN BE +USED AS ARGUMENTS TO BOTH IMPLEMENTATION-SUPPLIED AND +USER-DEFINED FUNCTIONS AND ALSO AS SUBSCRIPTS. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 1 1. OK + 2 1.2 1.2 OK + 3 .353336 .353336 OK + +*** TEST PASSED *** + + END TEST. + +SECTION 164.3: EXPRESSIONS USED AS SUBSCRIPTS ARE + ROUNDED TO NEAREST INTEGER. + +THIS SECTION ENSURES THAT WHEN EXPRESSIONS ARE USED AS +SUBSCRIPTS, THEY ARE ROUNDED TO THE NEAREST INTEGER. + + BEGIN TEST. + +CASE # SHOULD BE ACTUAL OUTCOME + + 1 27 27 OK + 2 1 1 OK + 3 11 11 OK + 4 1 1 OK + 5 71 71 OK + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 164 + +Program interrupted at line 6010 diff --git a/NBS2/P165.80 b/NBS2/P165.80 new file mode 100644 index 0000000..03bb110 --- /dev/null +++ b/NBS2/P165.80 @@ -0,0 +1,39 @@ +PROGRAM FILE 165: COMPOUND EXPRESSIONS AND PRINT. + ANSI STANDARD 7.2, 7.4, 12.2, 12.4 + +THIS PROGRAM TESTS THE USE OF NUMERIC EXPRESSIONS IN THE +CONTEXT OF THE PRINT STATEMENT. + +SECTION 165.1: NUMERIC EXPRESSIONS AS PRINT ITEMS. + + BEGIN TEST. + +EXPECTED CALCULATED + VALUES VALUES + +-.25 -.25 + 6.5 6.5 + 16.4794 16.4794 + 1.54193 1.54193 + 5.24289E-22 5.24289E-22 + +*** TEST PASSED IF THE EXPECTED VALUES AND THE CALCULATED + VALUES ARE NUMERICALLY EQUAL OR APPROXIMATELY SO *** + + END TEST. + +SECTION 165.2: NUMERIC EXPRESSIONS AS ARGUMENTS + TO TAB-CALLS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + A B C + +*** TEST PASSED IF THE CHARACTERS 'A', 'B' AND 'C' ARE + PRINTED IN COLUMNS 3, 6, AND 69 RESPECTIVELY *** + + END TEST. + +END PROGRAM 165 diff --git a/NBS2/P165.BAS b/NBS2/P165.BAS new file mode 100644 index 0000000..a487b7c --- /dev/null +++ b/NBS2/P165.BAS @@ -0,0 +1,57 @@ +10 PRINT "PROGRAM FILE 165: COMPOUND EXPRESSIONS AND PRINT." +20 PRINT " ANSI STANDARD 7.2, 7.4, 12.2, 12.4" +30 PRINT +40 PRINT "THIS PROGRAM TESTS THE USE OF NUMERIC EXPRESSIONS IN THE" +50 PRINT "CONTEXT OF THE PRINT STATEMENT." +60 PRINT +70 PRINT "SECTION 165.1: NUMERIC EXPRESSIONS AS PRINT ITEMS." +80 PRINT +90 PRINT " BEGIN TEST." +100 PRINT +110 DEF FNA(X)=X^2+1 +120 LET A1=0.5 +130 LET B1=-.25 +140 LET C1=16.0 +150 LET D1=-4.0 +152 FOR I=1 TO 7 +153 FOR J=1 TO 7 +155 LET Q(I,J)=I/J +156 NEXT J +157 NEXT I +160 PRINT "EXPECTED","CALCULATED" +170 PRINT " VALUES", " VALUES" +180 PRINT +190 PRINT -.25 ,3*A1+7*B1 +200 PRINT 6.5 ,ABS(A1+1.0-(C1+D1)+0.5*8.0) +210 PRINT 16.4794255,SIN(A1^2+ABS(B1))+C1 +220 PRINT 1.54192554,FNA(B1+A1)+SIN(A1) +225 PRINT 5.24288566E-22,EXP(-Q(7,1)/Q(1,7)) +230 PRINT +240 PRINT "*** TEST PASSED IF THE EXPECTED VALUES AND THE CALCULATED" +250 PRINT " VALUES ARE NUMERICALLY EQUAL OR APPROXIMATELY SO ***" +260 PRINT +270 PRINT " END TEST." +280 PRINT +290 PRINT "SECTION 165.2: NUMERIC EXPRESSIONS AS ARGUMENTS" +295 PRINT " TO TAB-CALLS." +300 PRINT +310 PRINT " BEGIN TEST." +320 PRINT +330 DEF FNB(X)=X^3-8 +340 LET A1=2.75 +350 LET B1=1.5 +360 LET C1=3.1 +370 PRINT "00000000011111111112222222222333333333344444444445"; +380 PRINT "5555555556666666666777" +390 PRINT "12345678901234567890123456789012345678901234567890"; +400 PRINT "1234567890123456789012" +410 PRINT TAB(2*C1-A1);"A";TAB(2*ABS(-B1)+A1-Q(1,5));"B"; +420 PRINT TAB(FNB(A1+B1)-.15);"C" +430 PRINT +440 PRINT "*** TEST PASSED IF THE CHARACTERS 'A', 'B' AND 'C' ARE" +450 PRINT " PRINTED IN COLUMNS 3, 6, AND 69 RESPECTIVELY ***" +460 PRINT +470 PRINT " END TEST." +480 PRINT +490 PRINT "END PROGRAM 165" +500 END diff --git a/NBS2/P165.OUT b/NBS2/P165.OUT new file mode 100644 index 0000000..26326a2 --- /dev/null +++ b/NBS2/P165.OUT @@ -0,0 +1,39 @@ +PROGRAM FILE 165: COMPOUND EXPRESSIONS AND PRINT. + ANSI STANDARD 7.2, 7.4, 12.2, 12.4 + +THIS PROGRAM TESTS THE USE OF NUMERIC EXPRESSIONS IN THE +CONTEXT OF THE PRINT STATEMENT. + +SECTION 165.1: NUMERIC EXPRESSIONS AS PRINT ITEMS. + + BEGIN TEST. + +EXPECTED CALCULATED + VALUES VALUES + +-.25 -.25 + 6.5 6.5 + 16.4794 16.4794 + 1.54193 1.54193 + 5.24289E-22 5.24289E-22 + +*** TEST PASSED IF THE EXPECTED VALUES AND THE CALCULATED + VALUES ARE NUMERICALLY EQUAL OR APPROXIMATELY SO *** + + END TEST. + +SECTION 165.2: NUMERIC EXPRESSIONS AS ARGUMENTS + TO TAB-CALLS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + A B C + +*** TEST PASSED IF THE CHARACTERS 'A', 'B' AND 'C' ARE + PRINTED IN COLUMNS 3, 6, AND 69 RESPECTIVELY *** + + END TEST. + +END PROGRAM 165 diff --git a/NBS2/P165.dif b/NBS2/P165.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P165.run b/NBS2/P165.run new file mode 100644 index 0000000..03bb110 --- /dev/null +++ b/NBS2/P165.run @@ -0,0 +1,39 @@ +PROGRAM FILE 165: COMPOUND EXPRESSIONS AND PRINT. + ANSI STANDARD 7.2, 7.4, 12.2, 12.4 + +THIS PROGRAM TESTS THE USE OF NUMERIC EXPRESSIONS IN THE +CONTEXT OF THE PRINT STATEMENT. + +SECTION 165.1: NUMERIC EXPRESSIONS AS PRINT ITEMS. + + BEGIN TEST. + +EXPECTED CALCULATED + VALUES VALUES + +-.25 -.25 + 6.5 6.5 + 16.4794 16.4794 + 1.54193 1.54193 + 5.24289E-22 5.24289E-22 + +*** TEST PASSED IF THE EXPECTED VALUES AND THE CALCULATED + VALUES ARE NUMERICALLY EQUAL OR APPROXIMATELY SO *** + + END TEST. + +SECTION 165.2: NUMERIC EXPRESSIONS AS ARGUMENTS + TO TAB-CALLS. + + BEGIN TEST. + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 + A B C + +*** TEST PASSED IF THE CHARACTERS 'A', 'B' AND 'C' ARE + PRINTED IN COLUMNS 3, 6, AND 69 RESPECTIVELY *** + + END TEST. + +END PROGRAM 165 diff --git a/NBS2/P166.80 b/NBS2/P166.80 new file mode 100644 index 0000000..3f30f3f --- /dev/null +++ b/NBS2/P166.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 166: COMPOUND EXPRESSIONS USED WITH CONTROL + STATEMENTS AND FOR-STATEMENTS. + ANSI STANDARD 7.2, 7.4, 10.2, 10.4, 11.2, 11.4 + +THIS PROGRAM TESTS THE USE OF NUMERIC EXPRESSIONS WITHIN +THE CONTEXT OF THE CONTROL STATEMENTS IF-THEN AND ON-GOTO, +AND ALSO WITHIN THE FOR-STATEMENT. + +SECTION 166.1: NUMERIC EXPRESSIONS AND + THE IF-THEN-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 166.2: NUMERIC EXPRESSIONS AND + THE ON-GOTO-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 166.3: NUMERIC EXPRESSIONS AND + THE FOR-NEXT-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 166. diff --git a/NBS2/P166.BAS b/NBS2/P166.BAS new file mode 100644 index 0000000..beb220f --- /dev/null +++ b/NBS2/P166.BAS @@ -0,0 +1,163 @@ +10 PRINT "PROGRAM FILE 166: COMPOUND EXPRESSIONS USED WITH CONTROL" +20 PRINT " STATEMENTS AND FOR-STATEMENTS." +30 PRINT " ANSI STANDARD 7.2, 7.4, 10.2, 10.4, 11.2, 11.4" +40 PRINT +50 PRINT "THIS PROGRAM TESTS THE USE OF NUMERIC EXPRESSIONS WITHIN" +60 PRINT "THE CONTEXT OF THE CONTROL STATEMENTS IF-THEN AND ON-GOTO," +70 PRINT "AND ALSO WITHIN THE FOR-STATEMENT." +80 PRINT +90 PRINT "SECTION 166.1: NUMERIC EXPRESSIONS AND" +100 PRINT " THE IF-THEN-STATEMENT." +110 PRINT +120 PRINT " BEGIN TEST." +130 PRINT +140 DEF FNA(X)=X^2+2*X+1 +150 DEF FNC(X1)=LOG(X1)/LOG(10) +160 LET P1=3.14159265 +170 LET R(0)=0 +180 LET R(1)=1 +190 FOR I=2 TO 10 +200 LET R(I)=R(I-1)+R(I-2) +210 NEXT I +220 LET A1=3.5 +230 LET B1=1.625 +240 LET C1=.815 +250 LET D1=-4.5 +260 LET F=0 +270 IF A1+B1<5.13 THEN 300 +280 LET K$=" 1ST " +290 GOSUB 520 +300 IF -.99>A1-ABS(D1) THEN 330 +310 LET K$=" 2ND " +320 GOSUB 520 +330 IF INT(SQR(ABS(D1)))=2 THEN 360 +340 LET K$=" 3RD " +350 GOSUB 520 +360 IF FNA(A1)+5<=ABS(D1)+A1^3 THEN 390 +370 LET K$=" 4TH " +380 GOSUB 520 +390 IF EXP(A1)+D1>=(A1-.36)^2+D1 THEN 420 +400 LET K$=" 5TH " +410 GOSUB 520 +420 IF TAN(C1)+A1<>ATN(C1)+A1 THEN 450 +430 LET K$=" 6TH " +440 GOSUB 520 +450 IF -FNC(SQR(10^(SIN(P1/3)^2*R(6)))) < (R(5)-R(9))/10-.09 THEN 480 +460 LET K$=" 7TH " +470 GOSUB 520 +480 IF -FNC(SQR(10^(SIN(P1/3)^2*R(6)))) > (R(5)-R(9))/10-.11 THEN 510 +490 LET K$=" 8TH " +500 GOSUB 520 +510 GOTO 580 +520 REM SUBROUTINE TO HANDLE ERRORS +530 PRINT "EVALUATION OF THE RELATION BETWEEN THE";K$;"PAIR OF" +540 PRINT "EXPRESSIONS FAILED." +550 LET F=F+1 +560 PRINT +570 RETURN +580 IF F=0 THEN 610 +590 PRINT "*** TEST FAILED IN ";F;" CASE(S) ***" +600 GOTO 620 +610 PRINT "*** TEST PASSED ***" +620 PRINT +630 PRINT " END TEST." +640 PRINT +660 PRINT "SECTION 166.2: NUMERIC EXPRESSIONS AND" +670 PRINT " THE ON-GOTO-STATEMENT." +680 PRINT +690 PRINT " BEGIN TEST." +700 PRINT +710 LET F=0 +720 REM ON-GOTO SHOULD BRANCH TO 1ST, 4TH, AND 3RD BRANCH POINT FOR +730 REM X = 1, 3, AND 5 RESPECTIVELY. +740 FOR X=1 TO 5 STEP 2 +750 ON -(X*20*X+(R(8)-5*R(9))*X+SQR(11449))/40 GOTO 870,910,830,790 +760 PRINT "*** TEST FAILURE: ON GOTO FELL THROUGH FOR X = ";X +770 LET F=F+1 +780 GOTO 980 +790 REM 4TH ROUTINE +800 IF X=3 THEN 980 +810 LET K$="4TH" +820 GOTO 940 +830 REM 3RD ROUTINE +840 IF X=5 THEN 980 +850 LET K$="3RD" +860 GOTO 940 +870 REM 1ST ROUTINE +880 IF X=1 THEN 980 +890 GOTO 940 +910 REM 2ND ROUTINE +920 LET K$="2ND" +930 GOTO 940 +940 PRINT "*** TEST FAILURE: ON-GOTO BRANCHED TO ";K$;" ROUTINE" +950 PRINT " FOR X = ";X +960 PRINT +970 LET F=F+1 +980 NEXT X +990 IF F=0 THEN 1020 +1000 PRINT "*** TEST FAILED IN ";F;" CASE(S) ***" +1010 GOTO 1030 +1020 PRINT "*** TEST PASSED ***" +1030 PRINT +1040 PRINT " END TEST." +1050 PRINT +1060 PRINT "SECTION 166.3: NUMERIC EXPRESSIONS AND" +1070 PRINT " THE FOR-NEXT-STATEMENT." +1080 PRINT +1090 PRINT " BEGIN TEST." +1100 PRINT +1110 REM CORRECT EXECUTION PARAMETERS: +1120 REM CTL. VAR. FROM T0 STEP NO. LOOPS +1130 REM I0 3 6 1 4 +1140 REM I1 10 4 -1 7 +1150 REM I2 228 1000 100 8 +1160 REM I3 2 -20 -2 12 +1200 LET N1=3 +1210 LET M1=6 +1220 LET N(M1)=10 +1230 LET M(M1)=4 +1240 LET O=-1 +1250 LET K=0 +1260 LET J0=3 +1270 FOR I0=N1 TO M1 +1280 LET J1=10 +1290 FOR I1=N(M1) TO M(M1) STEP O +1300 LET J2=228 +1310 FOR I2=M1^2+2*M1*M(M1)^2 TO (N(M1)^3-1)+ABS(O) STEP 20*N(M1)/2 +1320 LET J3=2 +1330 FOR I3=ABS(M(M1)-M1) TO M(M1)^2-M1^2 STEP 2*SGN(M(M1)^2-M1^2) +1340 IF I0<>J0 THEN 1520 +1350 IF I1<>J1 THEN 1520 +1360 IF I2<>J2 THEN 1520 +1370 IF I3<>J3 THEN 1520 +1380 LET K=K+1 +1390 LET M1 = M1 + 1 +1400 LET J3=J3-2 +1410 NEXT I3 +1420 LET M1=6 +1430 LET J2=J2+100 +1440 NEXT I2 +1450 LET J1=J1-1 +1460 NEXT I1 +1470 LET J0=J0+1 +1480 NEXT I0 +1490 IF K<>2688 THEN 1600 +1500 PRINT "*** TEST PASSED ***" +1510 GOTO 1640 +1520 PRINT "*** TEST FAILED ***" +1530 PRINT +1540 PRINT "CTL. VAR.","SHOULD BE","ACTUAL" +1550 PRINT "I0",J0,I0 +1560 PRINT "I1",J1,I1 +1570 PRINT "I2",J2,I2 +1580 PRINT "I3",J3,I3 +1590 GOTO 1640 +1600 PRINT "*** TEST FAILED ***" +1610 PRINT +1620 PRINT "INNERMOST LOOP SHOULD HAVE BEEN EXECUTED 2688 TIMES." +1630 PRINT "ACTUAL COUNT = ";K +1640 PRINT +1650 PRINT " END TEST." +1660 PRINT +1670 PRINT "END PROGRAM 166." +1680 END diff --git a/NBS2/P166.OUT b/NBS2/P166.OUT new file mode 100644 index 0000000..1768e25 --- /dev/null +++ b/NBS2/P166.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 166: COMPOUND EXPRESSIONS USED WITH CONTROL + STATEMENTS AND FOR-STATEMENTS. + ANSI STANDARD 7.2, 7.4, 10.2, 10.4, 11.2, 11.4 + +THIS PROGRAM TESTS THE USE OF NUMERIC EXPRESSIONS WITHIN +THE CONTEXT OF THE CONTROL STATEMENTS IF-THEN AND ON-GOTO, +AND ALSO WITHIN THE FOR-STATEMENT. + +SECTION 166.1: NUMERIC EXPRESSIONS AND + THE IF-THEN-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 166.2: NUMERIC EXPRESSIONS AND + THE ON-GOTO-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 166.3: NUMERIC EXPRESSIONS AND + THE FOR-NEXT-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 166. diff --git a/NBS2/P166.dif b/NBS2/P166.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P166.run b/NBS2/P166.run new file mode 100644 index 0000000..3f30f3f --- /dev/null +++ b/NBS2/P166.run @@ -0,0 +1,36 @@ +PROGRAM FILE 166: COMPOUND EXPRESSIONS USED WITH CONTROL + STATEMENTS AND FOR-STATEMENTS. + ANSI STANDARD 7.2, 7.4, 10.2, 10.4, 11.2, 11.4 + +THIS PROGRAM TESTS THE USE OF NUMERIC EXPRESSIONS WITHIN +THE CONTEXT OF THE CONTROL STATEMENTS IF-THEN AND ON-GOTO, +AND ALSO WITHIN THE FOR-STATEMENT. + +SECTION 166.1: NUMERIC EXPRESSIONS AND + THE IF-THEN-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 166.2: NUMERIC EXPRESSIONS AND + THE ON-GOTO-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +SECTION 166.3: NUMERIC EXPRESSIONS AND + THE FOR-NEXT-STATEMENT. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 166. diff --git a/NBS2/P167.80 b/NBS2/P167.80 new file mode 100644 index 0000000..932e19e --- /dev/null +++ b/NBS2/P167.80 @@ -0,0 +1,62 @@ +PROGRAM FILE 167: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS ACTING AS FUNCTION ARGUMENTS. + ANSI STANDARD 7.5, 8.4, 16.4 + +THIS PROGRAM TESTS THAT THE RECOVERY PROCEDURES FOR +EXCEPTIONS OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORK PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +EXPRESSIONS ARE USED AS ARGUMENTS TO FUNCTIONS. + +SECTION 167.1: DIVISION BY ZERO IN AN ARGUMENT TO A + USER-DEFINED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE FNC(5/0), WHERE FNC = COMMON LOG. +EXCEPTION SHOULD BE REPORTED NOW: + +*** WARNING: Divide by 0 *** + +RESULT OF FNC(5/0) = 308.255 + +IF EXCEPTION REPORTED, AND + RESULT = COMMON LOG OF MACHINE INFINITY, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 167.2: ZERO RAISED TO A NEGATIVE POWER IN AN + ARGUMENT TO AN IMPLEMENTATION-SUPPLIED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE ATN(0^(-5)). +EXCEPTION SHOULD BE REPORTED NOW: + +*** Arithmetic Overflow *** + +RESULT OF ATN(0^(-5)) = 1.5708 + +IF EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 167 diff --git a/NBS2/P167.BAS b/NBS2/P167.BAS new file mode 100644 index 0000000..b2d6097 --- /dev/null +++ b/NBS2/P167.BAS @@ -0,0 +1,74 @@ +10 PRINT "PROGRAM FILE 167: EXCEPTION - EVALUATION OF NUMERIC" +20 PRINT " EXPRESSIONS ACTING AS FUNCTION ARGUMENTS." +40 PRINT " ANSI STANDARD 7.5, 8.4, 16.4" +50 PRINT +60 PRINT "THIS PROGRAM TESTS THAT THE RECOVERY PROCEDURES FOR" +70 PRINT "EXCEPTIONS OCCURRING DURING THE EVALUATION OF NUMERIC" +80 PRINT "EXPRESSIONS WORK PROPERLY IN CONTEXTS OTHER THAN SIMPLE" +90 PRINT "ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY," +100 PRINT "EXPRESSIONS ARE USED AS ARGUMENTS TO FUNCTIONS." +120 PRINT +130 PRINT "SECTION 167.1: DIVISION BY ZERO IN AN ARGUMENT TO A" +140 PRINT " USER-DEFINED FUNCTION." +150 PRINT +160 PRINT "TO PASS THIS TEST:" +170 PRINT +180 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +190 PRINT " DISPLAYED, AND" +200 PRINT +210 PRINT " 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +220 PRINT " OF THE ARGUMENT AND EXECUTION CONTINUES." +230 PRINT +240 PRINT " BEGIN TEST." +250 PRINT +260 DEF FNC(X)=LOG(X)/LOG(10) +270 LET A=5 +280 LET B=0 +290 PRINT "ABOUT TO EVALUATE FNC(5/0), WHERE FNC = COMMON LOG." +300 PRINT "EXCEPTION SHOULD BE REPORTED NOW:" +310 PRINT +320 LET C=FNC(A/B) +330 PRINT +340 PRINT "RESULT OF FNC(5/0) = ";C +350 PRINT +360 IF C >= 37.99 THEN 400 +370 PRINT "*** TEST FAILED: RESULT < 38 ***" +380 GOTO 440 +400 PRINT "IF EXCEPTION REPORTED, AND" +410 PRINT " RESULT = COMMON LOG OF MACHINE INFINITY, THEN" +420 PRINT "*** TEST PASSED ***" +440 PRINT +450 PRINT " END TEST." +460 PRINT +1110 PRINT "SECTION 167.2: ZERO RAISED TO A NEGATIVE POWER IN AN" +1120 PRINT " ARGUMENT TO AN IMPLEMENTATION-SUPPLIED FUNCTION." +1130 PRINT +1140 PRINT "TO PASS THIS TEST:" +1150 PRINT +1160 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +1170 PRINT " DISPLAYED, AND" +1180 PRINT +1190 PRINT " 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +1200 PRINT " OF THE ARGUMENT AND EXECUTION CONTINUES." +1210 PRINT +1220 PRINT " BEGIN TEST." +1230 PRINT +1250 LET A=-5 +1260 LET B=0 +1270 PRINT "ABOUT TO EVALUATE ATN(0^(-5))." +1280 PRINT "EXCEPTION SHOULD BE REPORTED NOW:" +1290 PRINT +1300 LET C=ATN(B^A) +1310 PRINT +1320 PRINT "RESULT OF ATN(0^(-5)) = ";C +1330 PRINT +1340 IF ABS(C-1.5708) <= .001 THEN 1370 +1350 PRINT "*** TEST FAILED: RESULT <> PI/2 ***" +1360 GOTO 1400 +1370 PRINT "IF EXCEPTION REPORTED, THEN" +1390 PRINT "*** TEST PASSED ***" +1400 PRINT +1410 PRINT " END TEST." +1420 PRINT +1440 PRINT "END PROGRAM 167" +1450 END diff --git a/NBS2/P167.OUT b/NBS2/P167.OUT new file mode 100644 index 0000000..ab75972 --- /dev/null +++ b/NBS2/P167.OUT @@ -0,0 +1,62 @@ +PROGRAM FILE 167: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS ACTING AS FUNCTION ARGUMENTS. + ANSI STANDARD 7.5, 8.4, 16.4 + +THIS PROGRAM TESTS THAT THE RECOVERY PROCEDURES FOR +EXCEPTIONS OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORK PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +EXPRESSIONS ARE USED AS ARGUMENTS TO FUNCTIONS. + +SECTION 167.1: DIVISION BY ZERO IN AN ARGUMENT TO A + USER-DEFINED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE FNC(5/0), WHERE FNC = COMMON LOG. +EXCEPTION SHOULD BE REPORTED NOW: + +*** WARNING: Divide by 0 *** + +RESULT OF FNC(5/0) = 308.255 + +IF EXCEPTION REPORTED, AND + RESULT = COMMON LOG OF MACHINE INFINITY, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 167.2: ZERO RAISED TO A NEGATIVE POWER IN AN + ARGUMENT TO AN IMPLEMENTATION-SUPPLIED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE ATN(0^(-5)). +EXCEPTION SHOULD BE REPORTED NOW: + +*** Arithmetic Overflow *** + +RESULT OF ATN(0^(-5)) = 1.5708 + +IF EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 167 diff --git a/NBS2/P167.dif b/NBS2/P167.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P167.run b/NBS2/P167.run new file mode 100644 index 0000000..932e19e --- /dev/null +++ b/NBS2/P167.run @@ -0,0 +1,62 @@ +PROGRAM FILE 167: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS ACTING AS FUNCTION ARGUMENTS. + ANSI STANDARD 7.5, 8.4, 16.4 + +THIS PROGRAM TESTS THAT THE RECOVERY PROCEDURES FOR +EXCEPTIONS OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORK PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +EXPRESSIONS ARE USED AS ARGUMENTS TO FUNCTIONS. + +SECTION 167.1: DIVISION BY ZERO IN AN ARGUMENT TO A + USER-DEFINED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE FNC(5/0), WHERE FNC = COMMON LOG. +EXCEPTION SHOULD BE REPORTED NOW: + +*** WARNING: Divide by 0 *** + +RESULT OF FNC(5/0) = 308.255 + +IF EXCEPTION REPORTED, AND + RESULT = COMMON LOG OF MACHINE INFINITY, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 167.2: ZERO RAISED TO A NEGATIVE POWER IN AN + ARGUMENT TO AN IMPLEMENTATION-SUPPLIED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE ATN(0^(-5)). +EXCEPTION SHOULD BE REPORTED NOW: + +*** Arithmetic Overflow *** + +RESULT OF ATN(0^(-5)) = 1.5708 + +IF EXCEPTION REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 167 diff --git a/NBS2/P168.80 b/NBS2/P168.80 new file mode 100644 index 0000000..fbe585c --- /dev/null +++ b/NBS2/P168.80 @@ -0,0 +1,34 @@ +PROGRAM FILE 168: EXCEPTION - OVERFLOW IN THE SUBSCRIPT + OF AN ARRAY. + ANSI STANDARD 6.4, 6.5, 7.5 + +THIS PROGRAM TESTS THAT THE RECOVERY PROCEDURES FOR +EXCEPTIONS OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORK PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +AN EXPRESSION IS USED AS A SUBSCRIPT OF AN ARRAY. + +SECTION 168.1: EXCEPTION - OVERFLOW IN THE SUBSCRIPT + OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE OVERFLOW EXCEPTION MUST + BE DISPLAYED, + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE SUBSCRIPT AND EXECUTION CONTINUES, + + 3) WHEREUPON AN EXCEPTION MUST BE REPORTED + FOR SUBSCRIPT OUT OF RANGE, AND + + 4) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EVALUATE Z(9999^9999), WHERE Z(I) = I + 100. + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** + +ERROR in line 390: SUBSCRIPT OUT OF RANGE Z(2147483647) diff --git a/NBS2/P168.BAS b/NBS2/P168.BAS new file mode 100644 index 0000000..f239969 --- /dev/null +++ b/NBS2/P168.BAS @@ -0,0 +1,44 @@ +10 PRINT "PROGRAM FILE 168: EXCEPTION - OVERFLOW IN THE SUBSCRIPT" +20 PRINT " OF AN ARRAY." +40 PRINT " ANSI STANDARD 6.4, 6.5, 7.5" +50 PRINT +60 PRINT "THIS PROGRAM TESTS THAT THE RECOVERY PROCEDURES FOR" +70 PRINT "EXCEPTIONS OCCURRING DURING THE EVALUATION OF NUMERIC" +80 PRINT "EXPRESSIONS WORK PROPERLY IN CONTEXTS OTHER THAN SIMPLE" +90 PRINT "ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY," +100 PRINT "AN EXPRESSION IS USED AS A SUBSCRIPT OF AN ARRAY." +110 PRINT +120 PRINT "SECTION 168.1: EXCEPTION - OVERFLOW IN THE SUBSCRIPT" +125 PRINT " OF AN ARRAY." +130 PRINT +140 PRINT "TO PASS THIS TEST:" +150 PRINT +160 PRINT " 1) A MESSAGE IDENTIFYING THE OVERFLOW EXCEPTION MUST" +170 PRINT " BE DISPLAYED," +180 PRINT +190 PRINT " 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE" +200 PRINT " OF THE SUBSCRIPT AND EXECUTION CONTINUES," +210 PRINT +220 PRINT " 3) WHEREUPON AN EXCEPTION MUST BE REPORTED" +230 PRINT " FOR SUBSCRIPT OUT OF RANGE, AND" +240 PRINT +250 PRINT " 4) EXECUTION MUST TERMINATE." +260 PRINT +270 PRINT " BEGIN TEST." +280 PRINT +290 FOR I=0 TO 10 +300 LET Z(I)=I+100 +310 NEXT I +320 LET A=9999 +330 PRINT "ABOUT TO EVALUATE Z(9999^9999), WHERE Z(I) = I + 100." +340 PRINT +390 LET C=Z(A^A) +400 PRINT +410 PRINT "RESULT OF Z(9999^9999) = ";C +420 PRINT +430 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +440 PRINT +450 PRINT " END TEST." +460 PRINT +470 PRINT "END PROGRAM 168" +480 END diff --git a/NBS2/P168.OUT b/NBS2/P168.OUT new file mode 100644 index 0000000..be9034d --- /dev/null +++ b/NBS2/P168.OUT @@ -0,0 +1,34 @@ +PROGRAM FILE 168: EXCEPTION - OVERFLOW IN THE SUBSCRIPT + OF AN ARRAY. + ANSI STANDARD 6.4, 6.5, 7.5 + +THIS PROGRAM TESTS THAT THE RECOVERY PROCEDURES FOR +EXCEPTIONS OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORK PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +AN EXPRESSION IS USED AS A SUBSCRIPT OF AN ARRAY. + +SECTION 168.1: EXCEPTION - OVERFLOW IN THE SUBSCRIPT + OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE OVERFLOW EXCEPTION MUST + BE DISPLAYED, + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE SUBSCRIPT AND EXECUTION CONTINUES, + + 3) WHEREUPON AN EXCEPTION MUST BE REPORTED + FOR SUBSCRIPT OUT OF RANGE, AND + + 4) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EVALUATE Z(9999^9999), WHERE Z(I) = I + 100. + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** + +ERROR in line 390: SUBSCRIPT OUT OF RANGE Z(2147483647) diff --git a/NBS2/P168.dif b/NBS2/P168.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P168.run b/NBS2/P168.run new file mode 100644 index 0000000..fbe585c --- /dev/null +++ b/NBS2/P168.run @@ -0,0 +1,34 @@ +PROGRAM FILE 168: EXCEPTION - OVERFLOW IN THE SUBSCRIPT + OF AN ARRAY. + ANSI STANDARD 6.4, 6.5, 7.5 + +THIS PROGRAM TESTS THAT THE RECOVERY PROCEDURES FOR +EXCEPTIONS OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORK PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +AN EXPRESSION IS USED AS A SUBSCRIPT OF AN ARRAY. + +SECTION 168.1: EXCEPTION - OVERFLOW IN THE SUBSCRIPT + OF AN ARRAY. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE OVERFLOW EXCEPTION MUST + BE DISPLAYED, + + 2) POSITIVE INFINITY MUST BE SUPPLIED AS THE VALUE + OF THE SUBSCRIPT AND EXECUTION CONTINUES, + + 3) WHEREUPON AN EXCEPTION MUST BE REPORTED + FOR SUBSCRIPT OUT OF RANGE, AND + + 4) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EVALUATE Z(9999^9999), WHERE Z(I) = I + 100. + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** + +ERROR in line 390: SUBSCRIPT OUT OF RANGE Z(2147483647) diff --git a/NBS2/P169.80 b/NBS2/P169.80 new file mode 100644 index 0000000..23983df --- /dev/null +++ b/NBS2/P169.80 @@ -0,0 +1,56 @@ +PROGRAM FILE 169: EXCEPTION - NUMERIC UNDERFLOW IN THE + EVALUATION OF NUMERIC EXPRESSIONS ACTING AS + ARGUMENTS AND SUBSCRIPTS. + ANSI STANDARD 6.4, 7.4, 7.6, 8.4 + +THIS PROGRAM TESTS THAT THE HANDLING OF +UNDERFLOW OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORKS PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +EXPRESSIONS ARE USED AS ARGUMENTS TO FUNCTIONS AND +SUBSCRIPTS OF ARRAYS. + +SECTION 169.1: NUMERIC UNDERFLOW IN AN ARGUMENT TO A + SUPPLIED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE EXP(1E-20 ^ 5000). + + +RESULT OF EXP(1E-20 ^ 5000) = 1 + +*** TEST PASSED *** + + END TEST. + +SECTION 169.2: NUMERIC UNDERFLOW IN AN ARRAY SUBSCRIPT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE SUBSCRIPT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE Z(-1E-20 ^ 5001), WHERE Z(I) = I + 100. + + +RESULT OF Z(-1E-20 ^ 5001) = 100 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 169 diff --git a/NBS2/P169.BAS b/NBS2/P169.BAS new file mode 100644 index 0000000..fbca546 --- /dev/null +++ b/NBS2/P169.BAS @@ -0,0 +1,72 @@ +10 PRINT "PROGRAM FILE 169: EXCEPTION - NUMERIC UNDERFLOW IN THE" +20 PRINT " EVALUATION OF NUMERIC EXPRESSIONS ACTING AS " +30 PRINT " ARGUMENTS AND SUBSCRIPTS." +40 PRINT " ANSI STANDARD 6.4, 7.4, 7.6, 8.4" +50 PRINT +60 PRINT "THIS PROGRAM TESTS THAT THE HANDLING OF" +70 PRINT "UNDERFLOW OCCURRING DURING THE EVALUATION OF NUMERIC" +80 PRINT "EXPRESSIONS WORKS PROPERLY IN CONTEXTS OTHER THAN SIMPLE" +90 PRINT "ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY," +100 PRINT "EXPRESSIONS ARE USED AS ARGUMENTS TO FUNCTIONS AND" +110 PRINT "SUBSCRIPTS OF ARRAYS." +120 PRINT +130 PRINT "SECTION 169.1: NUMERIC UNDERFLOW IN AN ARGUMENT TO A" +140 PRINT " SUPPLIED FUNCTION." +150 PRINT +160 PRINT "TO PASS THIS TEST:" +170 PRINT +180 PRINT " 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE" +190 PRINT " DISPLAYED (NOT MANDATORY), AND" +200 PRINT +210 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +220 PRINT " OF THE ARGUMENT AND EXECUTION CONTINUES." +230 PRINT +240 PRINT " BEGIN TEST." +250 PRINT +270 LET A=5000 +280 LET B=1E-20 +290 PRINT "ABOUT TO EVALUATE EXP(1E-20 ^ 5000)." +310 PRINT +320 LET C=EXP(B^A) +330 PRINT +340 PRINT "RESULT OF EXP(1E-20 ^ 5000) = ";C +350 PRINT +360 IF ABS(C-1) <= .001 THEN 400 +370 PRINT "*** TEST FAILED: RESULT <> 1 ***" +380 GOTO 440 +400 PRINT "*** TEST PASSED ***" +440 PRINT +450 PRINT " END TEST." +460 PRINT +1110 PRINT "SECTION 169.2: NUMERIC UNDERFLOW IN AN ARRAY SUBSCRIPT." +1130 PRINT +1160 PRINT "TO PASS THIS TEST:" +1170 PRINT +1180 PRINT " 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE" +1190 PRINT " DISPLAYED (NOT MANDATORY), AND" +1200 PRINT +1210 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE" +1220 PRINT " OF THE SUBSCRIPT AND EXECUTION CONTINUES." +1230 PRINT +1240 PRINT " BEGIN TEST." +1250 PRINT +1270 LET A=5001 +1280 LET B=-1E-20 +1282 FOR I=0 TO 10 +1284 LET Z(I)=100+I +1286 NEXT I +1290 PRINT "ABOUT TO EVALUATE Z(-1E-20 ^ 5001), WHERE Z(I) = I + 100." +1310 PRINT +1320 LET C=Z(B^A) +1330 PRINT +1340 PRINT "RESULT OF Z(-1E-20 ^ 5001) = ";C +1350 PRINT +1360 IF ABS(C-100) <= .01 THEN 1400 +1370 PRINT "*** TEST FAILED: RESULT <> 100 ***" +1380 GOTO 1440 +1400 PRINT "*** TEST PASSED ***" +1440 PRINT +1450 PRINT " END TEST." +1460 PRINT +3440 PRINT "END PROGRAM 169" +3450 END diff --git a/NBS2/P169.OUT b/NBS2/P169.OUT new file mode 100644 index 0000000..455af45 --- /dev/null +++ b/NBS2/P169.OUT @@ -0,0 +1,56 @@ +PROGRAM FILE 169: EXCEPTION - NUMERIC UNDERFLOW IN THE + EVALUATION OF NUMERIC EXPRESSIONS ACTING AS + ARGUMENTS AND SUBSCRIPTS. + ANSI STANDARD 6.4, 7.4, 7.6, 8.4 + +THIS PROGRAM TESTS THAT THE HANDLING OF +UNDERFLOW OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORKS PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +EXPRESSIONS ARE USED AS ARGUMENTS TO FUNCTIONS AND +SUBSCRIPTS OF ARRAYS. + +SECTION 169.1: NUMERIC UNDERFLOW IN AN ARGUMENT TO A + SUPPLIED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE EXP(1E-20 ^ 5000). + + +RESULT OF EXP(1E-20 ^ 5000) = 1 + +*** TEST PASSED *** + + END TEST. + +SECTION 169.2: NUMERIC UNDERFLOW IN AN ARRAY SUBSCRIPT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE SUBSCRIPT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE Z(-1E-20 ^ 5001), WHERE Z(I) = I + 100. + + +RESULT OF Z(-1E-20 ^ 5001) = 100 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 169 diff --git a/NBS2/P169.dif b/NBS2/P169.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P169.run b/NBS2/P169.run new file mode 100644 index 0000000..23983df --- /dev/null +++ b/NBS2/P169.run @@ -0,0 +1,56 @@ +PROGRAM FILE 169: EXCEPTION - NUMERIC UNDERFLOW IN THE + EVALUATION OF NUMERIC EXPRESSIONS ACTING AS + ARGUMENTS AND SUBSCRIPTS. + ANSI STANDARD 6.4, 7.4, 7.6, 8.4 + +THIS PROGRAM TESTS THAT THE HANDLING OF +UNDERFLOW OCCURRING DURING THE EVALUATION OF NUMERIC +EXPRESSIONS WORKS PROPERLY IN CONTEXTS OTHER THAN SIMPLE +ASSIGNMENT OF THE EXPRESSION TO A VARIABLE. SPECIFICALLY, +EXPRESSIONS ARE USED AS ARGUMENTS TO FUNCTIONS AND +SUBSCRIPTS OF ARRAYS. + +SECTION 169.1: NUMERIC UNDERFLOW IN AN ARGUMENT TO A + SUPPLIED FUNCTION. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE ARGUMENT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE EXP(1E-20 ^ 5000). + + +RESULT OF EXP(1E-20 ^ 5000) = 1 + +*** TEST PASSED *** + + END TEST. + +SECTION 169.2: NUMERIC UNDERFLOW IN AN ARRAY SUBSCRIPT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING AN EXCEPTION MAY BE + DISPLAYED (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE + OF THE SUBSCRIPT AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EVALUATE Z(-1E-20 ^ 5001), WHERE Z(I) = I + 100. + + +RESULT OF Z(-1E-20 ^ 5001) = 100 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 169 diff --git a/NBS2/P170.80 b/NBS2/P170.80 new file mode 100644 index 0000000..69aef15 --- /dev/null +++ b/NBS2/P170.80 @@ -0,0 +1,21 @@ +PROGRAM FILE 170: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER IN A SUBSCRIPT. + ANSI STANDARD 7.5, 6.2 + +SECTION 170.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER IN A SUBSCRIPT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO EVALUATE Z((-2) ^ 3.00001), +WHERE Z(I) = I + 100 + + +ERROR in line 290: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P170.BAS b/NBS2/P170.BAS new file mode 100644 index 0000000..6bcc84b --- /dev/null +++ b/NBS2/P170.BAS @@ -0,0 +1,34 @@ +10 PRINT "PROGRAM FILE 170: EXCEPTION - NEGATIVE QUANTITY RAISED TO A" +20 PRINT " NON-INTEGRAL POWER IN A SUBSCRIPT." +30 PRINT " ANSI STANDARD 7.5, 6.2" +40 PRINT +50 PRINT "SECTION 170.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO A" +60 PRINT " NON-INTEGRAL POWER IN A SUBSCRIPT." +70 PRINT +80 PRINT "TO PASS THIS TEST:" +90 PRINT +100 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +110 PRINT " DISPLAYED, AND" +120 PRINT +130 PRINT " 2) EXECUTION MUST TERMINATE" +140 PRINT +150 PRINT " BEGIN TEST" +160 PRINT +170 FOR I=0 TO 10 +180 LET Z(I)=I+100 +190 NEXT I +200 PRINT "ABOUT TO EVALUATE Z((-2) ^ 3.00001)," +210 PRINT "WHERE Z(I) = I + 100" +260 PRINT +270 LET B=3.00001 +280 LET A=-2 +290 LET C=Z(A^B) +300 PRINT +310 PRINT "RESULT OF Z((-2) ^ 3.00001) = ";C +320 PRINT +330 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +340 PRINT +350 PRINT " END TEST" +360 PRINT +370 PRINT "END PROGRAM 170" +380 END diff --git a/NBS2/P170.OUT b/NBS2/P170.OUT new file mode 100644 index 0000000..792e652 --- /dev/null +++ b/NBS2/P170.OUT @@ -0,0 +1,21 @@ +PROGRAM FILE 170: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER IN A SUBSCRIPT. + ANSI STANDARD 7.5, 6.2 + +SECTION 170.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER IN A SUBSCRIPT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO EVALUATE Z((-2) ^ 3.00001), +WHERE Z(I) = I + 100 + + +ERROR in line 290: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P170.dif b/NBS2/P170.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P170.run b/NBS2/P170.run new file mode 100644 index 0000000..69aef15 --- /dev/null +++ b/NBS2/P170.run @@ -0,0 +1,21 @@ +PROGRAM FILE 170: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER IN A SUBSCRIPT. + ANSI STANDARD 7.5, 6.2 + +SECTION 170.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO A + NON-INTEGRAL POWER IN A SUBSCRIPT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO EVALUATE Z((-2) ^ 3.00001), +WHERE Z(I) = I + 100 + + +ERROR in line 290: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P171.80 b/NBS2/P171.80 new file mode 100644 index 0000000..dfbfa5d --- /dev/null +++ b/NBS2/P171.80 @@ -0,0 +1,21 @@ +PROGRAM FILE 171: EXCEPTION - LOG OF A NEGATIVE QUANTITY + IN AN ARGUMENT. + ANSI STANDARD 8.5, 16.2 + +SECTION 171.1: EXCEPTION - LOG OF A NEGATIVE QUANTITY + IN AN ARGUMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO EVALUATE FNT(LOG(-2)), +WHERE FNT(X) = X/3 + + +ERROR in line 270: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P171.BAS b/NBS2/P171.BAS new file mode 100644 index 0000000..907ceb0 --- /dev/null +++ b/NBS2/P171.BAS @@ -0,0 +1,31 @@ +10 PRINT "PROGRAM FILE 171: EXCEPTION - LOG OF A NEGATIVE QUANTITY" +20 PRINT " IN AN ARGUMENT." +30 PRINT " ANSI STANDARD 8.5, 16.2" +40 PRINT +50 PRINT "SECTION 171.1: EXCEPTION - LOG OF A NEGATIVE QUANTITY" +60 PRINT " IN AN ARGUMENT." +70 PRINT +80 PRINT "TO PASS THIS TEST:" +90 PRINT +100 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +110 PRINT " DISPLAYED, AND" +120 PRINT +130 PRINT " 2) EXECUTION MUST TERMINATE" +140 PRINT +150 PRINT " BEGIN TEST" +160 PRINT +170 DEF FNT(X)=X/3 +180 PRINT "ABOUT TO EVALUATE FNT(LOG(-2))," +190 PRINT "WHERE FNT(X) = X/3" +200 PRINT +260 LET A=-2 +270 LET C=FNT(LOG(A)) +280 PRINT +290 PRINT "RESULT OF FNT(LOG(-2)) = ";C +300 PRINT +310 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +320 PRINT +330 PRINT " END TEST" +340 PRINT +350 PRINT "END PROGRAM 171" +360 END diff --git a/NBS2/P171.OUT b/NBS2/P171.OUT new file mode 100644 index 0000000..926ab4c --- /dev/null +++ b/NBS2/P171.OUT @@ -0,0 +1,21 @@ +PROGRAM FILE 171: EXCEPTION - LOG OF A NEGATIVE QUANTITY + IN AN ARGUMENT. + ANSI STANDARD 8.5, 16.2 + +SECTION 171.1: EXCEPTION - LOG OF A NEGATIVE QUANTITY + IN AN ARGUMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO EVALUATE FNT(LOG(-2)), +WHERE FNT(X) = X/3 + + +ERROR in line 270: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P171.dif b/NBS2/P171.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P171.run b/NBS2/P171.run new file mode 100644 index 0000000..dfbfa5d --- /dev/null +++ b/NBS2/P171.run @@ -0,0 +1,21 @@ +PROGRAM FILE 171: EXCEPTION - LOG OF A NEGATIVE QUANTITY + IN AN ARGUMENT. + ANSI STANDARD 8.5, 16.2 + +SECTION 171.1: EXCEPTION - LOG OF A NEGATIVE QUANTITY + IN AN ARGUMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST + +ABOUT TO EVALUATE FNT(LOG(-2)), +WHERE FNT(X) = X/3 + + +ERROR in line 270: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P172.80 b/NBS2/P172.80 new file mode 100644 index 0000000..87956d9 --- /dev/null +++ b/NBS2/P172.80 @@ -0,0 +1,20 @@ +PROGRAM FILE 172: EXCEPTION - SQR OF NEGATIVE QUANTITY + IN PRINT-ITEM. + ANSI STANDARD 8.5, 12.2 + +SECTION 172.1: EXCEPTION - SQR OF NEGATIVE QUANTITY + IN PRINT-ITEM. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT SQR (-2) + +ERROR in line 200: ILLEGAL FUUNCTION CALL: SQR(X) diff --git a/NBS2/P172.BAS b/NBS2/P172.BAS new file mode 100644 index 0000000..cabc364 --- /dev/null +++ b/NBS2/P172.BAS @@ -0,0 +1,27 @@ +10 PRINT "PROGRAM FILE 172: EXCEPTION - SQR OF NEGATIVE QUANTITY " +20 PRINT " IN PRINT-ITEM." +30 PRINT " ANSI STANDARD 8.5, 12.2" +40 PRINT +50 PRINT "SECTION 172.1: EXCEPTION - SQR OF NEGATIVE QUANTITY " +55 PRINT " IN PRINT-ITEM." +60 PRINT +70 PRINT "TO PASS THIS TEST:" +80 PRINT +90 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +100 PRINT " DISPLAYED, AND" +110 PRINT +120 PRINT " 2) EXECUTION MUST TERMINATE." +130 PRINT +140 PRINT " BEGIN TEST." +150 PRINT +160 PRINT "ABOUT TO EXECUTE:" +170 PRINT " PRINT SQR (-2)" +180 LET A=-2 +200 PRINT SQR(A) +230 PRINT +240 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +250 PRINT +260 PRINT " END TEST." +270 PRINT +280 PRINT "END PROGRAM 172." +290 END diff --git a/NBS2/P172.OUT b/NBS2/P172.OUT new file mode 100644 index 0000000..b8a0b37 --- /dev/null +++ b/NBS2/P172.OUT @@ -0,0 +1,20 @@ +PROGRAM FILE 172: EXCEPTION - SQR OF NEGATIVE QUANTITY + IN PRINT-ITEM. + ANSI STANDARD 8.5, 12.2 + +SECTION 172.1: EXCEPTION - SQR OF NEGATIVE QUANTITY + IN PRINT-ITEM. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT SQR (-2) + +ERROR in line 200: ILLEGAL FUUNCTION CALL: SQR(X) diff --git a/NBS2/P172.dif b/NBS2/P172.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P172.run b/NBS2/P172.run new file mode 100644 index 0000000..87956d9 --- /dev/null +++ b/NBS2/P172.run @@ -0,0 +1,20 @@ +PROGRAM FILE 172: EXCEPTION - SQR OF NEGATIVE QUANTITY + IN PRINT-ITEM. + ANSI STANDARD 8.5, 12.2 + +SECTION 172.1: EXCEPTION - SQR OF NEGATIVE QUANTITY + IN PRINT-ITEM. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT SQR (-2) + +ERROR in line 200: ILLEGAL FUUNCTION CALL: SQR(X) diff --git a/NBS2/P173.80 b/NBS2/P173.80 new file mode 100644 index 0000000..0eb15af --- /dev/null +++ b/NBS2/P173.80 @@ -0,0 +1,22 @@ +PROGRAM FILE 173: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN TAB-ITEM. + ANSI STANDARD 7.5, 12.2 + +SECTION 173.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN TAB-ITEM. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT A$;TAB((-3) ^ 1.99999);B$ + (WHERE A$ = '111' AND B$ = '222') + +111 +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P173.BAS b/NBS2/P173.BAS new file mode 100644 index 0000000..86cc74b --- /dev/null +++ b/NBS2/P173.BAS @@ -0,0 +1,32 @@ +10 PRINT "PROGRAM FILE 173: EXCEPTION - NEGATIVE QUANTITY RAISED TO" +20 PRINT " A NON-INTEGRAL POWER IN TAB-ITEM." +30 PRINT " ANSI STANDARD 7.5, 12.2" +40 PRINT +50 PRINT "SECTION 173.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO" +55 PRINT " A NON-INTEGRAL POWER IN TAB-ITEM." +60 PRINT +70 PRINT "TO PASS THIS TEST:" +80 PRINT +90 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +100 PRINT " DISPLAYED, AND" +110 PRINT +120 PRINT " 2) EXECUTION MUST TERMINATE" +130 PRINT +140 PRINT " BEGIN TEST." +150 PRINT +160 PRINT "ABOUT TO EXECUTE:" +170 PRINT " PRINT A$;TAB((-3) ^ 1.99999);B$" +190 PRINT " (WHERE A$ = '111' AND B$ = '222')" +195 PRINT +200 LET A$="111" +210 LET B$="222" +220 LET C=-3 +225 LET D=1.99999 +230 PRINT A$;TAB(C^D);B$ +240 PRINT +250 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +260 PRINT +270 PRINT " END TEST." +280 PRINT +290 PRINT "END PROGRAM 173." +300 END diff --git a/NBS2/P173.OUT b/NBS2/P173.OUT new file mode 100644 index 0000000..59f0667 --- /dev/null +++ b/NBS2/P173.OUT @@ -0,0 +1,22 @@ +PROGRAM FILE 173: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN TAB-ITEM. + ANSI STANDARD 7.5, 12.2 + +SECTION 173.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN TAB-ITEM. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT A$;TAB((-3) ^ 1.99999);B$ + (WHERE A$ = '111' AND B$ = '222') + +111 +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P173.dif b/NBS2/P173.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P173.run b/NBS2/P173.run new file mode 100644 index 0000000..0eb15af --- /dev/null +++ b/NBS2/P173.run @@ -0,0 +1,22 @@ +PROGRAM FILE 173: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN TAB-ITEM. + ANSI STANDARD 7.5, 12.2 + +SECTION 173.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN TAB-ITEM. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT A$;TAB((-3) ^ 1.99999);B$ + (WHERE A$ = '111' AND B$ = '222') + +111 +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P174.80 b/NBS2/P174.80 new file mode 100644 index 0000000..f0b006d --- /dev/null +++ b/NBS2/P174.80 @@ -0,0 +1,71 @@ +PROGRAM FILE 174: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE PRINT STATEMENT. + ANSI STANDARD 7.5, 8.5, 12.2 + +THIS PROGRAM TESTS THE EFFECT OF THE VARIOUS EXCEPTIONS THAT +CAN OCCUR IN NUMERIC EXPRESSIONS IN THE CONTEXT OF THE PRINT +STATEMENT. + +SECTION 174.1: EXCEPTIONAL EXPRESSIONS AS PRINT-ITEMS. + +THIS SECTION TESTS THE EFFECT OF PRINTING EXPRESSIONS WHICH +CAUSE NON-FATAL EXCEPTIONS. + +TO PASS THIS TEST: + + 1) FOUR EXCEPTIONS MUST BE REPORTED; OVERFLOW, DIVISION + BY ZERO, ZERO RAISED TO A NEGATIVE POWER, AND + OVERFLOW OF EXP FUNCTION, AND + + 2) NEGATIVE, NEGATIVE, POSITIVE, AND POSITIVE MACHINE + INFINITY MUST BE SUPPLIED AS THE VALUES OF THE + EXPRESSIONS AND THEN PRINTED. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT (-1E-33) ^ (-3333), (-1E-33) / 0, 0 ^ (-1E-33), EXP(1E20) + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** +-1.79769E+308 *** WARNING: Divide by 0 *** +-1.79769E+308 *** Arithmetic Overflow *** + 1.79769E+308 *** Arithmetic Overflow *** + 1.79769E+308 + +IF FOUR EXCEPTIONS REPORTED AND NEGATIVE, NEGATIVE, + POSITIVE, AND POSITIVE INFINITY PRINTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 174.2: EXCEPTIONAL EXPRESSIONS AS TAB-ITEMS. + +THIS SECTION TESTS THE EFFECT OF OVERFLOW IN A TAB-ITEM. + +TO PASS THIS TEST: + + 1) THE OVERFLOW EXCEPTION MUST BE REPORTED, AND + + 2) EXECUTION CONTINUES, WITH THE TAB EVALUATING TO + SOME ARBITRARY PRINT POSITION. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT TAB(9^(9^9));X$ + (WHERE X$ = 'X') + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +*** Arithmetic Overflow *** +*** WARNING: INVALID TAB() *** +X + +IF OVERFLOW EXCEPTION REPORTED, AND 'X' APPEARED FOLLOWING + NUMBERED LINES, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 174 diff --git a/NBS2/P174.BAS b/NBS2/P174.BAS new file mode 100644 index 0000000..3fafd44 --- /dev/null +++ b/NBS2/P174.BAS @@ -0,0 +1,74 @@ +10 PRINT "PROGRAM FILE 174: EXCEPTION - EVALUATION OF NUMERIC" +20 PRINT " EXPRESSIONS IN THE PRINT STATEMENT." +30 PRINT " ANSI STANDARD 7.5, 8.5, 12.2" +40 PRINT +50 PRINT "THIS PROGRAM TESTS THE EFFECT OF THE VARIOUS EXCEPTIONS THAT" +60 PRINT "CAN OCCUR IN NUMERIC EXPRESSIONS IN THE CONTEXT OF THE PRINT" +70 PRINT "STATEMENT." +80 PRINT +90 PRINT "SECTION 174.1: EXCEPTIONAL EXPRESSIONS AS PRINT-ITEMS." +100 PRINT +110 PRINT "THIS SECTION TESTS THE EFFECT OF PRINTING EXPRESSIONS WHICH" +120 PRINT "CAUSE NON-FATAL EXCEPTIONS." +130 PRINT +160 PRINT "TO PASS THIS TEST:" +170 PRINT +180 PRINT " 1) FOUR EXCEPTIONS MUST BE REPORTED; OVERFLOW, DIVISION" +190 PRINT " BY ZERO, ZERO RAISED TO A NEGATIVE POWER, AND" +195 PRINT " OVERFLOW OF EXP FUNCTION, AND" +200 PRINT +210 PRINT " 2) NEGATIVE, NEGATIVE, POSITIVE, AND POSITIVE MACHINE" +220 PRINT " INFINITY MUST BE SUPPLIED AS THE VALUES OF THE" +230 PRINT " EXPRESSIONS AND THEN PRINTED." +240 PRINT +242 PRINT " BEGIN TEST." +246 PRINT +250 PRINT "ABOUT TO EXECUTE:" +260 PRINT " PRINT (-1E-33) ^ (-3333), (-1E-33) / 0, 0 ^ (-1E-33)"; +265 PRINT ", EXP(1E20)" +270 LET A=0 +280 LET B=-3333 +290 LET C=-1E-33 +295 LET D=1E20 +300 PRINT +310 PRINT C^B, C/A, A^C, EXP(D) +320 PRINT +330 PRINT "IF FOUR EXCEPTIONS REPORTED AND NEGATIVE, NEGATIVE," +340 PRINT " POSITIVE, AND POSITIVE INFINITY PRINTED, THEN" +350 PRINT "*** TEST PASSED ***" +360 PRINT +370 PRINT " END TEST." +380 PRINT +390 PRINT "SECTION 174.2: EXCEPTIONAL EXPRESSIONS AS TAB-ITEMS." +400 PRINT +410 PRINT "THIS SECTION TESTS THE EFFECT OF OVERFLOW IN A TAB-ITEM." +420 PRINT +430 PRINT "TO PASS THIS TEST:" +440 PRINT +450 PRINT " 1) THE OVERFLOW EXCEPTION MUST BE REPORTED, AND" +460 PRINT +470 PRINT " 2) EXECUTION CONTINUES, WITH THE TAB EVALUATING TO" +480 PRINT " SOME ARBITRARY PRINT POSITION." +490 PRINT +500 PRINT " BEGIN TEST." +510 PRINT +520 PRINT "ABOUT TO EXECUTE:" +530 PRINT " PRINT TAB(9^(9^9));X$" +540 PRINT " (WHERE X$ = 'X')" +550 PRINT +560 PRINT "0000000001111111111222222222233333333334444444444"; +570 PRINT "55555555556666666666777" +580 PRINT "1234567890123456789012345678901234567890123456789"; +590 PRINT "01234567890123456789012" +600 LET X$="X" +610 LET D=9 +620 PRINT TAB(D^(D^D));X$ +630 PRINT +640 PRINT "IF OVERFLOW EXCEPTION REPORTED, AND 'X' APPEARED FOLLOWING" +650 PRINT " NUMBERED LINES, THEN" +660 PRINT "*** TEST PASSED ***" +670 PRINT +680 PRINT " END TEST." +690 PRINT +700 PRINT "END PROGRAM 174" +710 END diff --git a/NBS2/P174.OUT b/NBS2/P174.OUT new file mode 100644 index 0000000..a38e09c --- /dev/null +++ b/NBS2/P174.OUT @@ -0,0 +1,71 @@ +PROGRAM FILE 174: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE PRINT STATEMENT. + ANSI STANDARD 7.5, 8.5, 12.2 + +THIS PROGRAM TESTS THE EFFECT OF THE VARIOUS EXCEPTIONS THAT +CAN OCCUR IN NUMERIC EXPRESSIONS IN THE CONTEXT OF THE PRINT +STATEMENT. + +SECTION 174.1: EXCEPTIONAL EXPRESSIONS AS PRINT-ITEMS. + +THIS SECTION TESTS THE EFFECT OF PRINTING EXPRESSIONS WHICH +CAUSE NON-FATAL EXCEPTIONS. + +TO PASS THIS TEST: + + 1) FOUR EXCEPTIONS MUST BE REPORTED; OVERFLOW, DIVISION + BY ZERO, ZERO RAISED TO A NEGATIVE POWER, AND + OVERFLOW OF EXP FUNCTION, AND + + 2) NEGATIVE, NEGATIVE, POSITIVE, AND POSITIVE MACHINE + INFINITY MUST BE SUPPLIED AS THE VALUES OF THE + EXPRESSIONS AND THEN PRINTED. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT (-1E-33) ^ (-3333), (-1E-33) / 0, 0 ^ (-1E-33), EXP(1E20) + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** +-1.79769E+308 *** WARNING: Divide by 0 *** +-1.79769E+308 *** Arithmetic Overflow *** + 1.79769E+308 *** Arithmetic Overflow *** + 1.79769E+308 + +IF FOUR EXCEPTIONS REPORTED AND NEGATIVE, NEGATIVE, + POSITIVE, AND POSITIVE INFINITY PRINTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 174.2: EXCEPTIONAL EXPRESSIONS AS TAB-ITEMS. + +THIS SECTION TESTS THE EFFECT OF OVERFLOW IN A TAB-ITEM. + +TO PASS THIS TEST: + + 1) THE OVERFLOW EXCEPTION MUST BE REPORTED, AND + + 2) EXECUTION CONTINUES, WITH THE TAB EVALUATING TO + SOME ARBITRARY PRINT POSITION. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT TAB(9^(9^9));X$ + (WHERE X$ = 'X') + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +*** Arithmetic Overflow *** +*** WARNING: INVALID TAB() *** +X + +IF OVERFLOW EXCEPTION REPORTED, AND 'X' APPEARED FOLLOWING + NUMBERED LINES, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 174 diff --git a/NBS2/P174.dif b/NBS2/P174.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P174.run b/NBS2/P174.run new file mode 100644 index 0000000..f0b006d --- /dev/null +++ b/NBS2/P174.run @@ -0,0 +1,71 @@ +PROGRAM FILE 174: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE PRINT STATEMENT. + ANSI STANDARD 7.5, 8.5, 12.2 + +THIS PROGRAM TESTS THE EFFECT OF THE VARIOUS EXCEPTIONS THAT +CAN OCCUR IN NUMERIC EXPRESSIONS IN THE CONTEXT OF THE PRINT +STATEMENT. + +SECTION 174.1: EXCEPTIONAL EXPRESSIONS AS PRINT-ITEMS. + +THIS SECTION TESTS THE EFFECT OF PRINTING EXPRESSIONS WHICH +CAUSE NON-FATAL EXCEPTIONS. + +TO PASS THIS TEST: + + 1) FOUR EXCEPTIONS MUST BE REPORTED; OVERFLOW, DIVISION + BY ZERO, ZERO RAISED TO A NEGATIVE POWER, AND + OVERFLOW OF EXP FUNCTION, AND + + 2) NEGATIVE, NEGATIVE, POSITIVE, AND POSITIVE MACHINE + INFINITY MUST BE SUPPLIED AS THE VALUES OF THE + EXPRESSIONS AND THEN PRINTED. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT (-1E-33) ^ (-3333), (-1E-33) / 0, 0 ^ (-1E-33), EXP(1E20) + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** +-1.79769E+308 *** WARNING: Divide by 0 *** +-1.79769E+308 *** Arithmetic Overflow *** + 1.79769E+308 *** Arithmetic Overflow *** + 1.79769E+308 + +IF FOUR EXCEPTIONS REPORTED AND NEGATIVE, NEGATIVE, + POSITIVE, AND POSITIVE INFINITY PRINTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 174.2: EXCEPTIONAL EXPRESSIONS AS TAB-ITEMS. + +THIS SECTION TESTS THE EFFECT OF OVERFLOW IN A TAB-ITEM. + +TO PASS THIS TEST: + + 1) THE OVERFLOW EXCEPTION MUST BE REPORTED, AND + + 2) EXECUTION CONTINUES, WITH THE TAB EVALUATING TO + SOME ARBITRARY PRINT POSITION. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT TAB(9^(9^9));X$ + (WHERE X$ = 'X') + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +*** Arithmetic Overflow *** +*** WARNING: INVALID TAB() *** +X + +IF OVERFLOW EXCEPTION REPORTED, AND 'X' APPEARED FOLLOWING + NUMBERED LINES, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 174 diff --git a/NBS2/P175.80 b/NBS2/P175.80 new file mode 100644 index 0000000..276b582 --- /dev/null +++ b/NBS2/P175.80 @@ -0,0 +1,66 @@ +PROGRAM FILE 175: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE PRINT STATEMENT. + ANSI STANDARD 7.4, 7.6, 8.6, 12.2 + +THIS PROGRAM TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE PRINT STATEMENT. + +SECTION 175.1: UNDERFLOW IN PRINT-ITEMS. + +THIS SECTION TESTS THE EFFECT OF PRINTING EXPRESSIONS WHICH +CAUSE NUMERIC UNDERFLOW. + +TO PASS THIS TEST: + + 1) THREE UNDERFLOW EXCEPTIONS MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZEROS MUST BE SUPPLIED AS THE VALUES OF THE + EXPRESSIONS AND THEN PRINTED. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT (-1E33) ^ (-3333), (-1E-33) ^ 3333, EXP(-1E33) + + 0 0 0 + +IF THREE ZEROS PRINTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 175.2: NUMERIC UNDERFLOW IN TAB-ITEMS. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN A TAB-ITEM. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), + + 2) EXECUTION CONTINUES, WITH ZERO SUPPLIED AS THE + VALUE OF THE TAB ARGUMENT, + + 3) A TAB EXCEPTION MUST BE REPORTED, AND A VALUE OF + ONE SUPPLIED AS THE TAB ARGUMENT. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT A$;TAB(1E-33 ^ 3333);B$ + (WHERE A$ = 'AAA' AND B$ = 'BBB') + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +AAA*** WARNING: INVALID TAB() *** + +BBB + +IF TAB-ARGUMENT EXCEPTION REPORTED, AND 'AAA' APPEARED IN + COL. 1-3, AND 'BBB' IN COL. 1-3 ON A LATER LINE, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 175 diff --git a/NBS2/P175.BAS b/NBS2/P175.BAS new file mode 100644 index 0000000..7ea5b60 --- /dev/null +++ b/NBS2/P175.BAS @@ -0,0 +1,73 @@ +10 PRINT "PROGRAM FILE 175: EXCEPTION - UNDERFLOW IN THE EVALUATION" +20 PRINT " OF NUMERIC EXPRESSIONS IN THE PRINT STATEMENT." +30 PRINT " ANSI STANDARD 7.4, 7.6, 8.6, 12.2" +40 PRINT +50 PRINT "THIS PROGRAM TESTS THE EFFECT OF UNDERFLOW IN NUMERIC" +60 PRINT "EXPRESSIONS IN THE CONTEXT OF THE PRINT STATEMENT." +70 PRINT +80 PRINT "SECTION 175.1: UNDERFLOW IN PRINT-ITEMS." +90 PRINT +100 PRINT "THIS SECTION TESTS THE EFFECT OF PRINTING EXPRESSIONS WHICH" +110 PRINT "CAUSE NUMERIC UNDERFLOW." +120 PRINT +130 PRINT "TO PASS THIS TEST:" +140 PRINT +150 PRINT " 1) THREE UNDERFLOW EXCEPTIONS MAY BE REPORTED" +160 PRINT " (NOT MANDATORY), AND" +170 PRINT +180 PRINT " 2) ZEROS MUST BE SUPPLIED AS THE VALUES OF THE " +190 PRINT " EXPRESSIONS AND THEN PRINTED." +200 PRINT +210 PRINT " BEGIN TEST." +220 PRINT +230 PRINT "ABOUT TO EXECUTE:" +240 PRINT " PRINT (-1E33) ^ (-3333), (-1E-33) ^ 3333, EXP(-1E33)" +250 LET A=-1E33 +260 LET B=-3333 +270 PRINT +280 PRINT A^B, (1/A)^(-B), EXP(A) +290 PRINT +300 PRINT "IF THREE ZEROS PRINTED, THEN" +310 PRINT "*** TEST PASSED ***" +320 PRINT +330 PRINT " END TEST." +340 PRINT +350 PRINT "SECTION 175.2: NUMERIC UNDERFLOW IN TAB-ITEMS." +360 PRINT +370 PRINT "THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN A TAB-ITEM." +380 PRINT +390 PRINT "TO PASS THIS TEST:" +400 PRINT +410 PRINT " 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED" +420 PRINT " (NOT MANDATORY)," +430 PRINT +440 PRINT " 2) EXECUTION CONTINUES, WITH ZERO SUPPLIED AS THE" +450 PRINT " VALUE OF THE TAB ARGUMENT," +460 PRINT +470 PRINT " 3) A TAB EXCEPTION MUST BE REPORTED, AND A VALUE OF" +480 PRINT " ONE SUPPLIED AS THE TAB ARGUMENT." +490 PRINT +500 PRINT " BEGIN TEST." +510 PRINT +520 PRINT "ABOUT TO EXECUTE:" +530 PRINT " PRINT A$;TAB(1E-33 ^ 3333);B$" +540 PRINT " (WHERE A$ = 'AAA' AND B$ = 'BBB')" +550 PRINT +560 PRINT "0000000001111111111222222222233333333334444444444"; +570 PRINT "55555555556666666666777" +580 PRINT "1234567890123456789012345678901234567890123456789"; +590 PRINT "01234567890123456789012" +600 LET A$="AAA" +610 LET B$="BBB" +620 LET E=1E-33 +630 LET F=3333 +640 PRINT A$;TAB(E^F);B$ +650 PRINT +660 PRINT "IF TAB-ARGUMENT EXCEPTION REPORTED, AND 'AAA' APPEARED IN" +670 PRINT " COL. 1-3, AND 'BBB' IN COL. 1-3 ON A LATER LINE, THEN" +680 PRINT "*** TEST PASSED ***" +690 PRINT +700 PRINT " END TEST." +710 PRINT +720 PRINT "END PROGRAM 175" +730 END diff --git a/NBS2/P175.OUT b/NBS2/P175.OUT new file mode 100644 index 0000000..95b5419 --- /dev/null +++ b/NBS2/P175.OUT @@ -0,0 +1,66 @@ +PROGRAM FILE 175: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE PRINT STATEMENT. + ANSI STANDARD 7.4, 7.6, 8.6, 12.2 + +THIS PROGRAM TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE PRINT STATEMENT. + +SECTION 175.1: UNDERFLOW IN PRINT-ITEMS. + +THIS SECTION TESTS THE EFFECT OF PRINTING EXPRESSIONS WHICH +CAUSE NUMERIC UNDERFLOW. + +TO PASS THIS TEST: + + 1) THREE UNDERFLOW EXCEPTIONS MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZEROS MUST BE SUPPLIED AS THE VALUES OF THE + EXPRESSIONS AND THEN PRINTED. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT (-1E33) ^ (-3333), (-1E-33) ^ 3333, EXP(-1E33) + + 0 0 0 + +IF THREE ZEROS PRINTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 175.2: NUMERIC UNDERFLOW IN TAB-ITEMS. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN A TAB-ITEM. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), + + 2) EXECUTION CONTINUES, WITH ZERO SUPPLIED AS THE + VALUE OF THE TAB ARGUMENT, + + 3) A TAB EXCEPTION MUST BE REPORTED, AND A VALUE OF + ONE SUPPLIED AS THE TAB ARGUMENT. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT A$;TAB(1E-33 ^ 3333);B$ + (WHERE A$ = 'AAA' AND B$ = 'BBB') + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +AAA*** WARNING: INVALID TAB() *** + +BBB + +IF TAB-ARGUMENT EXCEPTION REPORTED, AND 'AAA' APPEARED IN + COL. 1-3, AND 'BBB' IN COL. 1-3 ON A LATER LINE, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 175 diff --git a/NBS2/P175.dif b/NBS2/P175.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P175.run b/NBS2/P175.run new file mode 100644 index 0000000..276b582 --- /dev/null +++ b/NBS2/P175.run @@ -0,0 +1,66 @@ +PROGRAM FILE 175: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE PRINT STATEMENT. + ANSI STANDARD 7.4, 7.6, 8.6, 12.2 + +THIS PROGRAM TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE PRINT STATEMENT. + +SECTION 175.1: UNDERFLOW IN PRINT-ITEMS. + +THIS SECTION TESTS THE EFFECT OF PRINTING EXPRESSIONS WHICH +CAUSE NUMERIC UNDERFLOW. + +TO PASS THIS TEST: + + 1) THREE UNDERFLOW EXCEPTIONS MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZEROS MUST BE SUPPLIED AS THE VALUES OF THE + EXPRESSIONS AND THEN PRINTED. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT (-1E33) ^ (-3333), (-1E-33) ^ 3333, EXP(-1E33) + + 0 0 0 + +IF THREE ZEROS PRINTED, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 175.2: NUMERIC UNDERFLOW IN TAB-ITEMS. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN A TAB-ITEM. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), + + 2) EXECUTION CONTINUES, WITH ZERO SUPPLIED AS THE + VALUE OF THE TAB ARGUMENT, + + 3) A TAB EXCEPTION MUST BE REPORTED, AND A VALUE OF + ONE SUPPLIED AS THE TAB ARGUMENT. + + BEGIN TEST. + +ABOUT TO EXECUTE: + PRINT A$;TAB(1E-33 ^ 3333);B$ + (WHERE A$ = 'AAA' AND B$ = 'BBB') + +000000000111111111122222222223333333333444444444455555555556666666666777 +123456789012345678901234567890123456789012345678901234567890123456789012 +AAA*** WARNING: INVALID TAB() *** + +BBB + +IF TAB-ARGUMENT EXCEPTION REPORTED, AND 'AAA' APPEARED IN + COL. 1-3, AND 'BBB' IN COL. 1-3 ON A LATER LINE, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 175 diff --git a/NBS2/P176.80 b/NBS2/P176.80 new file mode 100644 index 0000000..fb5560b --- /dev/null +++ b/NBS2/P176.80 @@ -0,0 +1,21 @@ +PROGRAM FILE 176: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN IF-STATEMENT. + ANSI STANDARD 7.5, 10.2 + +SECTION 176.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN IF-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-3) ^ 3.00001 < 0 ... + + +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P176.BAS b/NBS2/P176.BAS new file mode 100644 index 0000000..ee19d8e --- /dev/null +++ b/NBS2/P176.BAS @@ -0,0 +1,32 @@ +10 PRINT "PROGRAM FILE 176: EXCEPTION - NEGATIVE QUANTITY RAISED TO" +20 PRINT " A NON-INTEGRAL POWER IN IF-STATEMENT." +30 PRINT " ANSI STANDARD 7.5, 10.2" +40 PRINT +50 PRINT "SECTION 176.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO" +60 PRINT " A NON-INTEGRAL POWER IN IF-STATEMENT." +70 PRINT +80 PRINT "TO PASS THIS TEST:" +90 PRINT +100 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +110 PRINT " DISPLAYED, AND" +120 PRINT +130 PRINT " 2) EXECUTION MUST TERMINATE" +140 PRINT +150 PRINT " BEGIN TEST." +160 PRINT +170 PRINT "ABOUT TO EXECUTE:" +180 PRINT " IF (-3) ^ 3.00001 < 0 ..." +190 PRINT +210 LET B=3.00001 +220 LET A=-3 +230 IF A^B < 0 THEN 260 +240 PRINT "IF-STATEMENT TESTED FALSE." +250 GOTO 270 +260 PRINT "IF-STATEMENT TESTED TRUE." +270 PRINT +320 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +330 PRINT +340 PRINT " END TEST." +350 PRINT +360 PRINT "END PROGRAM 176." +370 END diff --git a/NBS2/P176.OUT b/NBS2/P176.OUT new file mode 100644 index 0000000..bc4cecf --- /dev/null +++ b/NBS2/P176.OUT @@ -0,0 +1,21 @@ +PROGRAM FILE 176: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN IF-STATEMENT. + ANSI STANDARD 7.5, 10.2 + +SECTION 176.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN IF-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-3) ^ 3.00001 < 0 ... + + +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P176.dif b/NBS2/P176.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P176.run b/NBS2/P176.run new file mode 100644 index 0000000..fb5560b --- /dev/null +++ b/NBS2/P176.run @@ -0,0 +1,21 @@ +PROGRAM FILE 176: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN IF-STATEMENT. + ANSI STANDARD 7.5, 10.2 + +SECTION 176.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN IF-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-3) ^ 3.00001 < 0 ... + + +ERROR in line 230: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P177.80 b/NBS2/P177.80 new file mode 100644 index 0000000..2586791 --- /dev/null +++ b/NBS2/P177.80 @@ -0,0 +1,34 @@ +PROGRAM FILE 177: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE IF-STATEMENT. + ANSI STANDARD 7.5, 10.2 + +SECTION 177.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE IF-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF COMPARING EXPRESSIONS +WHICH CAUSE NON-FATAL EXCEPTIONS. + +TO PASS THIS TEST: + + 1) TWO EXCEPTIONS MUST BE REPORTED: OVERFLOW, + AND ZERO RAISED TO A NEGATIVE POWER, AND + + 2) POSITIVE MACHINE INFINITY MUST BE SUPPLIED AS + THE VALUES OF THE EXPRESSIONS, AND + + 3) THE IF MUST TEST EQUAL, AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-1E-33) ^ (-4444) = 0 ^ (-1E-33) + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** +IF OVERFLOW AND ZERO TO NEGATIVE POWER EXCEPTIONS + WERE REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 177 diff --git a/NBS2/P177.BAS b/NBS2/P177.BAS new file mode 100644 index 0000000..7a89e34 --- /dev/null +++ b/NBS2/P177.BAS @@ -0,0 +1,39 @@ +10 PRINT "PROGRAM FILE 177: EXCEPTION - EVALUATION OF NUMERIC" +20 PRINT " EXPRESSIONS IN THE IF-STATEMENT." +30 PRINT " ANSI STANDARD 7.5, 10.2" +40 PRINT +50 PRINT "SECTION 177.1: EXCEPTION - EVALUATION OF NUMERIC" +60 PRINT " EXPRESSIONS IN THE IF-STATEMENT." +70 PRINT +80 PRINT "THIS SECTION TESTS THE EFFECT OF COMPARING EXPRESSIONS" +90 PRINT "WHICH CAUSE NON-FATAL EXCEPTIONS." +100 PRINT +130 PRINT "TO PASS THIS TEST:" +140 PRINT +150 PRINT " 1) TWO EXCEPTIONS MUST BE REPORTED: OVERFLOW, " +160 PRINT " AND ZERO RAISED TO A NEGATIVE POWER, AND" +170 PRINT +180 PRINT " 2) POSITIVE MACHINE INFINITY MUST BE SUPPLIED AS" +190 PRINT " THE VALUES OF THE EXPRESSIONS, AND" +200 PRINT +210 PRINT " 3) THE IF MUST TEST EQUAL, AND EXECUTION CONTINUES." +220 PRINT +222 PRINT " BEGIN TEST." +225 PRINT +230 PRINT "ABOUT TO EXECUTE:" +240 PRINT " IF (-1E-33) ^ (-4444) = 0 ^ (-1E-33)" +250 LET A=0 +260 LET B=-4444 +270 LET C=-1E-33 +280 PRINT +290 IF C^B = A^C THEN 320 +300 PRINT "*** TEST FAILED: 'IF' TESTED AS UNEQUAL ***" +310 GOTO 350 +320 PRINT "IF OVERFLOW AND ZERO TO NEGATIVE POWER EXCEPTIONS" +330 PRINT " WERE REPORTED, THEN" +340 PRINT "*** TEST PASSED ***" +350 PRINT +360 PRINT " END TEST." +370 PRINT +380 PRINT "END PROGRAM 177" +390 END diff --git a/NBS2/P177.OUT b/NBS2/P177.OUT new file mode 100644 index 0000000..0ecc6a1 --- /dev/null +++ b/NBS2/P177.OUT @@ -0,0 +1,34 @@ +PROGRAM FILE 177: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE IF-STATEMENT. + ANSI STANDARD 7.5, 10.2 + +SECTION 177.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE IF-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF COMPARING EXPRESSIONS +WHICH CAUSE NON-FATAL EXCEPTIONS. + +TO PASS THIS TEST: + + 1) TWO EXCEPTIONS MUST BE REPORTED: OVERFLOW, + AND ZERO RAISED TO A NEGATIVE POWER, AND + + 2) POSITIVE MACHINE INFINITY MUST BE SUPPLIED AS + THE VALUES OF THE EXPRESSIONS, AND + + 3) THE IF MUST TEST EQUAL, AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-1E-33) ^ (-4444) = 0 ^ (-1E-33) + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** +IF OVERFLOW AND ZERO TO NEGATIVE POWER EXCEPTIONS + WERE REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 177 diff --git a/NBS2/P177.dif b/NBS2/P177.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P177.run b/NBS2/P177.run new file mode 100644 index 0000000..2586791 --- /dev/null +++ b/NBS2/P177.run @@ -0,0 +1,34 @@ +PROGRAM FILE 177: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE IF-STATEMENT. + ANSI STANDARD 7.5, 10.2 + +SECTION 177.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE IF-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF COMPARING EXPRESSIONS +WHICH CAUSE NON-FATAL EXCEPTIONS. + +TO PASS THIS TEST: + + 1) TWO EXCEPTIONS MUST BE REPORTED: OVERFLOW, + AND ZERO RAISED TO A NEGATIVE POWER, AND + + 2) POSITIVE MACHINE INFINITY MUST BE SUPPLIED AS + THE VALUES OF THE EXPRESSIONS, AND + + 3) THE IF MUST TEST EQUAL, AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-1E-33) ^ (-4444) = 0 ^ (-1E-33) + +*** Arithmetic Overflow *** +*** Arithmetic Overflow *** +IF OVERFLOW AND ZERO TO NEGATIVE POWER EXCEPTIONS + WERE REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 177 diff --git a/NBS2/P178.80 b/NBS2/P178.80 new file mode 100644 index 0000000..e46f3c3 --- /dev/null +++ b/NBS2/P178.80 @@ -0,0 +1,30 @@ +PROGRAM FILE 178: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE IF-STATEMENT. + ANSI STANDARD 7.4, 7.6, 10.2 + +SECTION 178.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSION IN THE IF-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE IF STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXPRESSION, AND + + 3) THE IF MUST TEST EQUAL AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-1E33) ^ (-3333) = 0 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 178 diff --git a/NBS2/P178.BAS b/NBS2/P178.BAS new file mode 100644 index 0000000..71e72d4 --- /dev/null +++ b/NBS2/P178.BAS @@ -0,0 +1,36 @@ +10 PRINT "PROGRAM FILE 178: EXCEPTION - UNDERFLOW IN THE EVALUATION" +20 PRINT " OF NUMERIC EXPRESSIONS IN THE IF-STATEMENT." +30 PRINT " ANSI STANDARD 7.4, 7.6, 10.2" +40 PRINT +50 PRINT "SECTION 178.1: EXCEPTION - UNDERFLOW IN THE EVALUATION" +60 PRINT " OF NUMERIC EXPRESSION IN THE IF-STATEMENT." +70 PRINT +80 PRINT "THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN NUMERIC" +90 PRINT "EXPRESSIONS IN THE CONTEXT OF THE IF STATEMENT." +100 PRINT +130 PRINT "TO PASS THIS TEST:" +140 PRINT +150 PRINT " 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED" +160 PRINT " (NOT MANDATORY), AND" +170 PRINT +180 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE " +190 PRINT " EXPRESSION, AND" +200 PRINT +210 PRINT " 3) THE IF MUST TEST EQUAL AND EXECUTION CONTINUES." +220 PRINT +222 PRINT " BEGIN TEST." +225 PRINT +230 PRINT "ABOUT TO EXECUTE:" +240 PRINT " IF (-1E33) ^ (-3333) = 0" +250 LET A=-1E33 +260 LET B=-3333 +270 PRINT +280 IF A^B = 0 THEN 310 +290 PRINT "*** TEST FAILED: 'IF' TESTED AS UNEQUAL ***" +300 GOTO 320 +310 PRINT "*** TEST PASSED ***" +320 PRINT +330 PRINT " END TEST." +340 PRINT +350 PRINT "END PROGRAM 178" +360 END diff --git a/NBS2/P178.OUT b/NBS2/P178.OUT new file mode 100644 index 0000000..7e16a70 --- /dev/null +++ b/NBS2/P178.OUT @@ -0,0 +1,30 @@ +PROGRAM FILE 178: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE IF-STATEMENT. + ANSI STANDARD 7.4, 7.6, 10.2 + +SECTION 178.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSION IN THE IF-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE IF STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXPRESSION, AND + + 3) THE IF MUST TEST EQUAL AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-1E33) ^ (-3333) = 0 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 178 diff --git a/NBS2/P178.dif b/NBS2/P178.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P178.run b/NBS2/P178.run new file mode 100644 index 0000000..e46f3c3 --- /dev/null +++ b/NBS2/P178.run @@ -0,0 +1,30 @@ +PROGRAM FILE 178: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE IF-STATEMENT. + ANSI STANDARD 7.4, 7.6, 10.2 + +SECTION 178.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSION IN THE IF-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE IF STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXPRESSION, AND + + 3) THE IF MUST TEST EQUAL AND EXECUTION CONTINUES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + IF (-1E33) ^ (-3333) = 0 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 178 diff --git a/NBS2/P179.80 b/NBS2/P179.80 new file mode 100644 index 0000000..d080deb --- /dev/null +++ b/NBS2/P179.80 @@ -0,0 +1,20 @@ +PROGRAM FILE 179: EXCEPTION - LOG OF ZERO IN + ON-GOTO-STATEMENT. + ANSI STANDARD 8.5, 10.2 + +SECTION 179.1: EXCEPTION - LOG OF ZERO IN + ON-GOTO-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + ON LOG (0) GOTO ... + +ERROR in line 210: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P179.BAS b/NBS2/P179.BAS new file mode 100644 index 0000000..c561372 --- /dev/null +++ b/NBS2/P179.BAS @@ -0,0 +1,40 @@ +10 PRINT "PROGRAM FILE 179: EXCEPTION - LOG OF ZERO IN" +20 PRINT " ON-GOTO-STATEMENT." +30 PRINT " ANSI STANDARD 8.5, 10.2" +40 PRINT +50 PRINT "SECTION 179.1: EXCEPTION - LOG OF ZERO IN" +60 PRINT " ON-GOTO-STATEMENT." +70 PRINT +80 PRINT "TO PASS THIS TEST:" +90 PRINT +100 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +110 PRINT " DISPLAYED, AND" +120 PRINT +130 PRINT " 2) EXECUTION MUST TERMINATE" +140 PRINT +150 PRINT " BEGIN TEST." +160 PRINT +170 PRINT "ABOUT TO EXECUTE:" +180 PRINT " ON LOG (0) GOTO ..." +190 LET A=0 +210 ON LOG(A) GOTO 220,230,240,250,260 +212 PRINT "CONTROL FELL THROUGH ON-GOTO." +215 GOTO 300 +220 LET I=1 +225 GOTO 290 +230 LET I=2 +235 GOTO 290 +240 LET I=3 +245 GOTO 290 +250 LET I=4 +255 GOTO 290 +260 LET I=5 +265 GOTO 290 +290 PRINT "ON-GOTO JUMPED TO LINE-NUMBER #";I;" IN THE LIST." +300 PRINT +1270 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +1280 PRINT +1290 PRINT " END TEST." +1300 PRINT +1310 PRINT "END PROGRAM 179." +1320 END diff --git a/NBS2/P179.OUT b/NBS2/P179.OUT new file mode 100644 index 0000000..8089879 --- /dev/null +++ b/NBS2/P179.OUT @@ -0,0 +1,20 @@ +PROGRAM FILE 179: EXCEPTION - LOG OF ZERO IN + ON-GOTO-STATEMENT. + ANSI STANDARD 8.5, 10.2 + +SECTION 179.1: EXCEPTION - LOG OF ZERO IN + ON-GOTO-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + ON LOG (0) GOTO ... + +ERROR in line 210: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P179.dif b/NBS2/P179.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P179.run b/NBS2/P179.run new file mode 100644 index 0000000..d080deb --- /dev/null +++ b/NBS2/P179.run @@ -0,0 +1,20 @@ +PROGRAM FILE 179: EXCEPTION - LOG OF ZERO IN + ON-GOTO-STATEMENT. + ANSI STANDARD 8.5, 10.2 + +SECTION 179.1: EXCEPTION - LOG OF ZERO IN + ON-GOTO-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + ON LOG (0) GOTO ... + +ERROR in line 210: ILLEGAL FUUNCTION CALL: LOG(X) diff --git a/NBS2/P180.80 b/NBS2/P180.80 new file mode 100644 index 0000000..fce5b8d --- /dev/null +++ b/NBS2/P180.80 @@ -0,0 +1,26 @@ +PROGRAM FILE 180: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE ON-GOTO STATEMENT. + ANSI STANDARD 7.5, 10.2, 10.5 + +SECTION 180.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE ON-GOTO STATEMENT. + +THIS SECTION TESTS THE EFFECT OF USING EXPRESSIONS, +WHICH CAUSE NON-FATAL EXCEPTIONS, TO CONTROL THE ON-GOG. + +TO PASS THIS TEST: + + 1) TWO EXCEPTIONS MUST BE REPORTED: DIVISION + BY ZERO AND ON-GOTO OUT OF RANGE, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EXECUTE: + ON 1E-33 / 0 GOTO ... + +*** WARNING: Divide by 0 *** +*** Arithmetic Overflow *** + +ERROR in line 250: Value is out of range diff --git a/NBS2/P180.BAS b/NBS2/P180.BAS new file mode 100644 index 0000000..a50b751 --- /dev/null +++ b/NBS2/P180.BAS @@ -0,0 +1,41 @@ +10 PRINT "PROGRAM FILE 180: EXCEPTION - EVALUATION OF NUMERIC" +20 PRINT " EXPRESSIONS IN THE ON-GOTO STATEMENT." +30 PRINT " ANSI STANDARD 7.5, 10.2, 10.5" +40 PRINT +50 PRINT "SECTION 180.1: EXCEPTION - EVALUATION OF NUMERIC" +60 PRINT " EXPRESSIONS IN THE ON-GOTO STATEMENT." +70 PRINT +80 PRINT "THIS SECTION TESTS THE EFFECT OF USING EXPRESSIONS," +90 PRINT "WHICH CAUSE NON-FATAL EXCEPTIONS, TO CONTROL THE ON-GOG." +100 PRINT +130 PRINT "TO PASS THIS TEST:" +140 PRINT +150 PRINT " 1) TWO EXCEPTIONS MUST BE REPORTED: DIVISION " +160 PRINT " BY ZERO AND ON-GOTO OUT OF RANGE, AND" +170 PRINT +180 PRINT " 2) EXECUTION MUST TERMINATE." +190 PRINT +193 PRINT " BEGIN TEST." +196 PRINT +200 PRINT "ABOUT TO EXECUTE:" +210 PRINT " ON 1E-33 / 0 GOTO ..." +220 LET A=0 +230 LET C=1E-33 +240 PRINT +250 ON C/A GOTO 280,300,320 +260 LET I=0 +270 GOTO 340 +280 LET I=1 +290 GOTO 340 +300 LET I=2 +310 GOTO 340 +320 LET I=3 +330 GOTO 340 +340 PRINT +350 PRINT " PATH TAKEN FOR CONTROL-EXPRESSION = ";I +360 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE ***" +370 PRINT +380 PRINT " END TEST." +390 PRINT +400 PRINT "END PROGRAM 180" +410 END diff --git a/NBS2/P180.OUT b/NBS2/P180.OUT new file mode 100644 index 0000000..9381fe2 --- /dev/null +++ b/NBS2/P180.OUT @@ -0,0 +1,26 @@ +PROGRAM FILE 180: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE ON-GOTO STATEMENT. + ANSI STANDARD 7.5, 10.2, 10.5 + +SECTION 180.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE ON-GOTO STATEMENT. + +THIS SECTION TESTS THE EFFECT OF USING EXPRESSIONS, +WHICH CAUSE NON-FATAL EXCEPTIONS, TO CONTROL THE ON-GOG. + +TO PASS THIS TEST: + + 1) TWO EXCEPTIONS MUST BE REPORTED: DIVISION + BY ZERO AND ON-GOTO OUT OF RANGE, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EXECUTE: + ON 1E-33 / 0 GOTO ... + +*** WARNING: Divide by 0 *** +*** Arithmetic Overflow *** + +ERROR in line 250: Value is out of range diff --git a/NBS2/P180.dif b/NBS2/P180.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P180.run b/NBS2/P180.run new file mode 100644 index 0000000..fce5b8d --- /dev/null +++ b/NBS2/P180.run @@ -0,0 +1,26 @@ +PROGRAM FILE 180: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE ON-GOTO STATEMENT. + ANSI STANDARD 7.5, 10.2, 10.5 + +SECTION 180.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE ON-GOTO STATEMENT. + +THIS SECTION TESTS THE EFFECT OF USING EXPRESSIONS, +WHICH CAUSE NON-FATAL EXCEPTIONS, TO CONTROL THE ON-GOG. + +TO PASS THIS TEST: + + 1) TWO EXCEPTIONS MUST BE REPORTED: DIVISION + BY ZERO AND ON-GOTO OUT OF RANGE, AND + + 2) EXECUTION MUST TERMINATE. + + BEGIN TEST. + +ABOUT TO EXECUTE: + ON 1E-33 / 0 GOTO ... + +*** WARNING: Divide by 0 *** +*** Arithmetic Overflow *** + +ERROR in line 250: Value is out of range diff --git a/NBS2/P181.80 b/NBS2/P181.80 new file mode 100644 index 0000000..db6d1ff --- /dev/null +++ b/NBS2/P181.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 181: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF THE EXP FUNCTION IN THE ON-GOTO STATEMENT. + ANSI STANDARD 7.4, 8.6, 10.2, 10.5 + +SECTION 181.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF THE EXP FUNCTION IN THE ON-GOTO STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXP FUNCTION, + + 3) AN EXCEPTION FOR ON-GOTO OUT OF RANGE MUST BE + REPORTED, AND + + 4) EXECUTION MUST TERMINATE. + +ABOUT TO EXECUTE: + ON EXP (-1E11) GOTO ... + + +ERROR in line 300: Value is out of range diff --git a/NBS2/P181.BAS b/NBS2/P181.BAS new file mode 100644 index 0000000..03eab6d --- /dev/null +++ b/NBS2/P181.BAS @@ -0,0 +1,42 @@ +10 PRINT "PROGRAM FILE 181: EXCEPTION - UNDERFLOW IN THE EVALUATION" +20 PRINT " OF THE EXP FUNCTION IN THE ON-GOTO STATEMENT." +30 PRINT " ANSI STANDARD 7.4, 8.6, 10.2, 10.5" +40 PRINT +50 PRINT "SECTION 181.1: EXCEPTION - UNDERFLOW IN THE EVALUATION" +60 PRINT " OF THE EXP FUNCTION IN THE ON-GOTO STATEMENT." +70 PRINT +130 PRINT "TO PASS THIS TEST:" +140 PRINT +150 PRINT " 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED" +160 PRINT " (NOT MANDATORY), AND" +170 PRINT +180 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE " +190 PRINT " EXP FUNCTION," +200 PRINT +210 PRINT " 3) AN EXCEPTION FOR ON-GOTO OUT OF RANGE MUST BE" +220 PRINT " REPORTED, AND" +230 PRINT +240 PRINT " 4) EXECUTION MUST TERMINATE." +250 PRINT +260 PRINT "ABOUT TO EXECUTE:" +270 PRINT " ON EXP (-1E11) GOTO ..." +280 PRINT +290 LET A=-1E11 +300 ON EXP(A) GOTO 330,350,370 +310 LET I=0 +320 GOTO 390 +330 LET I=1 +340 GOTO 390 +350 LET I=2 +360 GOTO 390 +370 LET I=3 +380 GOTO 390 +390 PRINT +400 PRINT " PATH TAKEN FOR CONTROL-EXPRESSION = ";I +405 PRINT +410 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE ***" +420 PRINT +430 PRINT " END TEST." +440 PRINT +450 PRINT "END PROGRAM 181" +460 END diff --git a/NBS2/P181.OUT b/NBS2/P181.OUT new file mode 100644 index 0000000..c3c59c6 --- /dev/null +++ b/NBS2/P181.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 181: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF THE EXP FUNCTION IN THE ON-GOTO STATEMENT. + ANSI STANDARD 7.4, 8.6, 10.2, 10.5 + +SECTION 181.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF THE EXP FUNCTION IN THE ON-GOTO STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXP FUNCTION, + + 3) AN EXCEPTION FOR ON-GOTO OUT OF RANGE MUST BE + REPORTED, AND + + 4) EXECUTION MUST TERMINATE. + +ABOUT TO EXECUTE: + ON EXP (-1E11) GOTO ... + + +ERROR in line 300: Value is out of range diff --git a/NBS2/P181.dif b/NBS2/P181.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P181.run b/NBS2/P181.run new file mode 100644 index 0000000..db6d1ff --- /dev/null +++ b/NBS2/P181.run @@ -0,0 +1,25 @@ +PROGRAM FILE 181: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF THE EXP FUNCTION IN THE ON-GOTO STATEMENT. + ANSI STANDARD 7.4, 8.6, 10.2, 10.5 + +SECTION 181.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF THE EXP FUNCTION IN THE ON-GOTO STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), AND + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXP FUNCTION, + + 3) AN EXCEPTION FOR ON-GOTO OUT OF RANGE MUST BE + REPORTED, AND + + 4) EXECUTION MUST TERMINATE. + +ABOUT TO EXECUTE: + ON EXP (-1E11) GOTO ... + + +ERROR in line 300: Value is out of range diff --git a/NBS2/P182.80 b/NBS2/P182.80 new file mode 100644 index 0000000..41fb70e --- /dev/null +++ b/NBS2/P182.80 @@ -0,0 +1,21 @@ +PROGRAM FILE 182: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN FOR-STATEMENT. + ANSI STANDARD 7.5, 11.2 + +SECTION 182.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN FOR-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + FOR I= -2 ^ 1E-33 TO 9 + + +ERROR in line 190: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P182.BAS b/NBS2/P182.BAS new file mode 100644 index 0000000..69cdacf --- /dev/null +++ b/NBS2/P182.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 182: EXCEPTION - NEGATIVE QUANTITY RAISED TO" +20 PRINT " A NON-INTEGRAL POWER IN FOR-STATEMENT." +30 PRINT " ANSI STANDARD 7.5, 11.2" +40 PRINT +50 PRINT "SECTION 182.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO" +55 PRINT " A NON-INTEGRAL POWER IN FOR-STATEMENT." +60 PRINT +70 PRINT "TO PASS THIS TEST:" +80 PRINT +90 PRINT " 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE" +100 PRINT " DISPLAYED, AND" +110 PRINT +120 PRINT " 2) EXECUTION MUST TERMINATE" +130 PRINT +140 PRINT " BEGIN TEST." +150 PRINT +160 PRINT "ABOUT TO EXECUTE:" +165 PRINT " FOR I= -2 ^ 1E-33 TO 9" +170 PRINT +175 LET A=-2 +180 LET B=1E-33 +190 FOR I= A^B TO 9 +200 LET X=I +210 GOTO 220 +215 NEXT I +220 PRINT "I WAS INITIALIZED TO:";X +240 PRINT +250 PRINT "*** TEST FAILED: EXECUTION DID NOT TERMINATE. ***" +260 PRINT +270 PRINT " END TEST." +280 PRINT +290 PRINT "END PROGRAM 182." +300 END diff --git a/NBS2/P182.OUT b/NBS2/P182.OUT new file mode 100644 index 0000000..9fac1d6 --- /dev/null +++ b/NBS2/P182.OUT @@ -0,0 +1,21 @@ +PROGRAM FILE 182: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN FOR-STATEMENT. + ANSI STANDARD 7.5, 11.2 + +SECTION 182.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN FOR-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + FOR I= -2 ^ 1E-33 TO 9 + + +ERROR in line 190: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P182.dif b/NBS2/P182.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P182.run b/NBS2/P182.run new file mode 100644 index 0000000..41fb70e --- /dev/null +++ b/NBS2/P182.run @@ -0,0 +1,21 @@ +PROGRAM FILE 182: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN FOR-STATEMENT. + ANSI STANDARD 7.5, 11.2 + +SECTION 182.1: EXCEPTION - NEGATIVE QUANTITY RAISED TO + A NON-INTEGRAL POWER IN FOR-STATEMENT. + +TO PASS THIS TEST: + + 1) A MESSAGE IDENTIFYING THE EXCEPTION MUST BE + DISPLAYED, AND + + 2) EXECUTION MUST TERMINATE + + BEGIN TEST. + +ABOUT TO EXECUTE: + FOR I= -2 ^ 1E-33 TO 9 + + +ERROR in line 190: NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER diff --git a/NBS2/P183.80 b/NBS2/P183.80 new file mode 100644 index 0000000..c03d411 --- /dev/null +++ b/NBS2/P183.80 @@ -0,0 +1,36 @@ +PROGRAM FILE 183: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE FOR-STATEMENT. + ANSI STANDARD 7.5, 11.2 + +SECTION 183.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE FOR-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF USING EXPRESSIONS, +WHICH CAUSE NON-FATAL EXCEPTIONS, TO CONTROL A +FOR-NEXT LOOP. + +TO PASS THIS TEST: + + 1) A DIVISION BY ZERO EXCEPTION MUST BE REPORTED, AND + + 2) THE FOR-LOOP MUST EXECUTE 2 TIMES. + + BEGIN TEST. + +ABOUT TO ATTEMPT EXECUTION OF: + FOR I = ATN((-9) / 0) TO 0 + +ITERATION CONTROL-VARIABLES VALUES +COUNT ACTUAL SHOULD BE +*** WARNING: Divide by 0 *** + 1 -1.5708 -1.5708 + 2 -.570796 -.570796 +EXITING LOOP. + .429204 .429304 + +IF ZERO-DIVIDE REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 183 diff --git a/NBS2/P183.BAS b/NBS2/P183.BAS new file mode 100644 index 0000000..0b2ee75 --- /dev/null +++ b/NBS2/P183.BAS @@ -0,0 +1,55 @@ +10 PRINT "PROGRAM FILE 183: EXCEPTION - EVALUATION OF NUMERIC" +20 PRINT " EXPRESSIONS IN THE FOR-STATEMENT." +30 PRINT " ANSI STANDARD 7.5, 11.2" +40 PRINT +50 PRINT "SECTION 183.1: EXCEPTION - EVALUATION OF NUMERIC" +60 PRINT " EXPRESSIONS IN THE FOR-STATEMENT." +70 PRINT +80 PRINT "THIS SECTION TESTS THE EFFECT OF USING EXPRESSIONS," +90 PRINT "WHICH CAUSE NON-FATAL EXCEPTIONS, TO CONTROL A" +100 PRINT "FOR-NEXT LOOP." +110 PRINT +120 PRINT "TO PASS THIS TEST:" +130 PRINT +140 PRINT " 1) A DIVISION BY ZERO EXCEPTION MUST BE REPORTED, AND" +160 PRINT +170 PRINT " 2) THE FOR-LOOP MUST EXECUTE 2 TIMES." +180 PRINT +190 PRINT " BEGIN TEST." +250 PRINT +260 PRINT "ABOUT TO ATTEMPT EXECUTION OF:" +270 PRINT " FOR I = ATN((-9) / 0) TO 0" +280 LET J=-1.5707963 +300 LET Z=0 +310 LET C=-9 +320 PRINT +330 PRINT "ITERATION","CONTROL-VARIABLES VALUES" +340 PRINT "COUNT","ACTUAL","SHOULD BE" +350 LET X=0 +360 FOR I = ATN(C/Z) TO Z +370 LET X=X+1 +380 PRINT X,I,J +390 IF ABS(1-(I/J)) > .01 THEN 530 +400 LET J=J+1 +410 NEXT I +420 PRINT "EXITING LOOP." +430 LET J=.4293037 +435 PRINT " ",I,J +440 IF ABS(1-(I/J)) > .01 THEN 530 +450 IF X=2 THEN 490 +460 PRINT +470 PRINT "NO. TIMES THROUGH LOOP SHOULD BE 2, ACTUALLY =";X +480 GOTO 550 +490 PRINT +500 PRINT "IF ZERO-DIVIDE REPORTED, THEN" +510 PRINT "*** TEST PASSED ***" +520 GOTO 570 +530 PRINT +540 PRINT "CONTROL-VARIABLE SHOULD BE";J;" ACTUALLY =";I +550 PRINT +560 PRINT "*** TEST FAILED ***" +570 PRINT +580 PRINT " END TEST." +590 PRINT +600 PRINT "END PROGRAM 183" +610 END diff --git a/NBS2/P183.OUT b/NBS2/P183.OUT new file mode 100644 index 0000000..252a644 --- /dev/null +++ b/NBS2/P183.OUT @@ -0,0 +1,36 @@ +PROGRAM FILE 183: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE FOR-STATEMENT. + ANSI STANDARD 7.5, 11.2 + +SECTION 183.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE FOR-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF USING EXPRESSIONS, +WHICH CAUSE NON-FATAL EXCEPTIONS, TO CONTROL A +FOR-NEXT LOOP. + +TO PASS THIS TEST: + + 1) A DIVISION BY ZERO EXCEPTION MUST BE REPORTED, AND + + 2) THE FOR-LOOP MUST EXECUTE 2 TIMES. + + BEGIN TEST. + +ABOUT TO ATTEMPT EXECUTION OF: + FOR I = ATN((-9) / 0) TO 0 + +ITERATION CONTROL-VARIABLES VALUES +COUNT ACTUAL SHOULD BE +*** WARNING: Divide by 0 *** + 1 -1.5708 -1.5708 + 2 -.570796 -.570796 +EXITING LOOP. + .429204 .429304 + +IF ZERO-DIVIDE REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 183 diff --git a/NBS2/P183.dif b/NBS2/P183.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P183.run b/NBS2/P183.run new file mode 100644 index 0000000..c03d411 --- /dev/null +++ b/NBS2/P183.run @@ -0,0 +1,36 @@ +PROGRAM FILE 183: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE FOR-STATEMENT. + ANSI STANDARD 7.5, 11.2 + +SECTION 183.1: EXCEPTION - EVALUATION OF NUMERIC + EXPRESSIONS IN THE FOR-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF USING EXPRESSIONS, +WHICH CAUSE NON-FATAL EXCEPTIONS, TO CONTROL A +FOR-NEXT LOOP. + +TO PASS THIS TEST: + + 1) A DIVISION BY ZERO EXCEPTION MUST BE REPORTED, AND + + 2) THE FOR-LOOP MUST EXECUTE 2 TIMES. + + BEGIN TEST. + +ABOUT TO ATTEMPT EXECUTION OF: + FOR I = ATN((-9) / 0) TO 0 + +ITERATION CONTROL-VARIABLES VALUES +COUNT ACTUAL SHOULD BE +*** WARNING: Divide by 0 *** + 1 -1.5708 -1.5708 + 2 -.570796 -.570796 +EXITING LOOP. + .429204 .429304 + +IF ZERO-DIVIDE REPORTED, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 183 diff --git a/NBS2/P184.80 b/NBS2/P184.80 new file mode 100644 index 0000000..b3f3645 --- /dev/null +++ b/NBS2/P184.80 @@ -0,0 +1,39 @@ +PROGRAM FILE 184: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE FOR-STATEMENT. + ANSI STANDARD 7.4, 7.6, 11.2 + +SECTION 184.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE FOR-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE FOR STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXPRESSION, AND + + 3) THE FOR-LOOP MUST EXECUTE 4 TIMES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + FOR I = .1 ^ 99999 TO 1E-36 STEP 3E-37 + +ITERATION CONTROL-VARIABLE VALUES +COUNT ACTUAL SHOULD BE + 1 0 0 + 2 3.E-37 3.E-37 + 3 6.E-37 6.E-37 + 4 9.E-37 9.E-37 +EXITING LOOP. + 1.2E-36 1.2E-36 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 184 diff --git a/NBS2/P184.BAS b/NBS2/P184.BAS new file mode 100644 index 0000000..b001ab3 --- /dev/null +++ b/NBS2/P184.BAS @@ -0,0 +1,59 @@ +10 PRINT "PROGRAM FILE 184: EXCEPTION - UNDERFLOW IN THE EVALUATION" +20 PRINT " OF NUMERIC EXPRESSIONS IN THE FOR-STATEMENT." +30 PRINT " ANSI STANDARD 7.4, 7.6, 11.2" +40 PRINT +50 PRINT "SECTION 184.1: EXCEPTION - UNDERFLOW IN THE EVALUATION" +60 PRINT " OF NUMERIC EXPRESSIONS IN THE FOR-STATEMENT." +70 PRINT +80 PRINT "THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN NUMERIC" +90 PRINT "EXPRESSIONS IN THE CONTEXT OF THE FOR STATEMENT." +100 PRINT +110 PRINT "TO PASS THIS TEST:" +120 PRINT +130 PRINT " 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED" +140 PRINT " (NOT MANDATORY)," +150 PRINT +160 PRINT " 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE " +170 PRINT " EXPRESSION, AND" +180 PRINT +190 PRINT " 3) THE FOR-LOOP MUST EXECUTE 4 TIMES." +200 PRINT +210 PRINT " BEGIN TEST." +220 PRINT +230 PRINT "ABOUT TO EXECUTE:" +240 PRINT " FOR I = .1 ^ 99999 TO 1E-36 STEP 3E-37" +250 LET J=0 +260 LET C=99999 +270 PRINT +280 PRINT "ITERATION","CONTROL-VARIABLE VALUES" +290 PRINT "COUNT","ACTUAL","SHOULD BE" +300 LET X=0 +310 FOR I = .1^C TO 1E-36 STEP 3E-37 +320 LET X=X+1 +330 PRINT X,I,J +340 IF J<>0 THEN 370 +350 IF I=0 THEN 380 +360 GOTO 510 +370 IF ABS(1-(I/J)) > .01 THEN 510 +380 LET J=J+3E-37 +390 NEXT I +400 PRINT "EXITING LOOP." +410 LET J=12E-37 +420 PRINT " ",I,J +430 IF ABS(1-(I/J)) > .01 THEN 510 +440 IF X=4 THEN 480 +450 PRINT +460 PRINT "NO. TIMES THROUGH LOOP SHOULD BE 4, ACTUALLY =";X +470 GOTO 530 +480 PRINT +490 PRINT "*** TEST PASSED ***" +500 GOTO 550 +510 PRINT +520 PRINT "CONTROL-VARIABLE SHOULD BE ";J;" ACTUALLY = ";I +530 PRINT +540 PRINT "*** TEST FAILED ***" +550 PRINT +560 PRINT " END TEST." +570 PRINT +580 PRINT "END PROGRAM 184" +590 END diff --git a/NBS2/P184.OUT b/NBS2/P184.OUT new file mode 100644 index 0000000..ed02f7b --- /dev/null +++ b/NBS2/P184.OUT @@ -0,0 +1,39 @@ +PROGRAM FILE 184: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE FOR-STATEMENT. + ANSI STANDARD 7.4, 7.6, 11.2 + +SECTION 184.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE FOR-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE FOR STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXPRESSION, AND + + 3) THE FOR-LOOP MUST EXECUTE 4 TIMES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + FOR I = .1 ^ 99999 TO 1E-36 STEP 3E-37 + +ITERATION CONTROL-VARIABLE VALUES +COUNT ACTUAL SHOULD BE + 1 0 0 + 2 3.E-37 3.E-37 + 3 6.E-37 6.E-37 + 4 9.E-37 9.E-37 +EXITING LOOP. + 1.2E-36 1.2E-36 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 184 diff --git a/NBS2/P184.dif b/NBS2/P184.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P184.run b/NBS2/P184.run new file mode 100644 index 0000000..b3f3645 --- /dev/null +++ b/NBS2/P184.run @@ -0,0 +1,39 @@ +PROGRAM FILE 184: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE FOR-STATEMENT. + ANSI STANDARD 7.4, 7.6, 11.2 + +SECTION 184.1: EXCEPTION - UNDERFLOW IN THE EVALUATION + OF NUMERIC EXPRESSIONS IN THE FOR-STATEMENT. + +THIS SECTION TESTS THE EFFECT OF UNDERFLOW IN NUMERIC +EXPRESSIONS IN THE CONTEXT OF THE FOR STATEMENT. + +TO PASS THIS TEST: + + 1) AN UNDERFLOW EXCEPTION MAY BE REPORTED + (NOT MANDATORY), + + 2) ZERO MUST BE SUPPLIED AS THE VALUE OF THE + EXPRESSION, AND + + 3) THE FOR-LOOP MUST EXECUTE 4 TIMES. + + BEGIN TEST. + +ABOUT TO EXECUTE: + FOR I = .1 ^ 99999 TO 1E-36 STEP 3E-37 + +ITERATION CONTROL-VARIABLE VALUES +COUNT ACTUAL SHOULD BE + 1 0 0 + 2 3.E-37 3.E-37 + 3 6.E-37 6.E-37 + 4 9.E-37 9.E-37 +EXITING LOOP. + 1.2E-36 1.2E-36 + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 184 diff --git a/NBS2/P185.80 b/NBS2/P185.80 new file mode 100644 index 0000000..a55f562 --- /dev/null +++ b/NBS2/P185.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 185: ERROR - MISSING KEYWORD LET. + ANSI STANDARD 9.2, 9.4 + +SECTION 185.1: ERROR - MISSING KEYWORD LET. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO EXECUTE 'LET X1 = 11' AND THEN 'X1 = 12' +VALUE OF X1 = 12 + + END TEST. + +END PROGRAM 185 diff --git a/NBS2/P185.BAS b/NBS2/P185.BAS new file mode 100644 index 0000000..593b42d --- /dev/null +++ b/NBS2/P185.BAS @@ -0,0 +1,28 @@ +10 PRINT "PROGRAM FILE 185: ERROR - MISSING KEYWORD LET." +20 PRINT " ANSI STANDARD 9.2, 9.4" +30 PRINT +40 PRINT "SECTION 185.1: ERROR - MISSING KEYWORD LET." +50 PRINT +60 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +70 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +80 PRINT +90 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +100 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +110 PRINT " BY THE PROCESSOR, OR" +120 PRINT +130 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +140 PRINT +150 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +160 PRINT "FOR DETAILED CRITERIA." +170 PRINT +180 PRINT " BEGIN TEST." +190 PRINT +200 PRINT "ABOUT TO EXECUTE 'LET X1 = 11' AND THEN 'X1 = 12'" +230 LET X1=11 +240 X1=12 +280 PRINT "VALUE OF X1 = ";X1 +290 PRINT +300 PRINT " END TEST." +310 PRINT +320 PRINT "END PROGRAM 185" +330 END diff --git a/NBS2/P185.OUT b/NBS2/P185.OUT new file mode 100644 index 0000000..820e92e --- /dev/null +++ b/NBS2/P185.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 185: ERROR - MISSING KEYWORD LET. + ANSI STANDARD 9.2, 9.4 + +SECTION 185.1: ERROR - MISSING KEYWORD LET. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO EXECUTE 'LET X1 = 11' AND THEN 'X1 = 12' +VALUE OF X1 = 12 + + END TEST. + +END PROGRAM 185 diff --git a/NBS2/P185.dif b/NBS2/P185.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P185.run b/NBS2/P185.run new file mode 100644 index 0000000..a55f562 --- /dev/null +++ b/NBS2/P185.run @@ -0,0 +1,25 @@ +PROGRAM FILE 185: ERROR - MISSING KEYWORD LET. + ANSI STANDARD 9.2, 9.4 + +SECTION 185.1: ERROR - MISSING KEYWORD LET. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO EXECUTE 'LET X1 = 11' AND THEN 'X1 = 12' +VALUE OF X1 = 12 + + END TEST. + +END PROGRAM 185 diff --git a/NBS2/P186.80 b/NBS2/P186.80 new file mode 100644 index 0000000..d521363 --- /dev/null +++ b/NBS2/P186.80 @@ -0,0 +1,17 @@ +PROGRAM FILE 186: EXTRA SPACES HAVE NO EFFECT. + ANSI STANDARD 3.4 + +SECTION 186.1: EXTRA SPACES HAVE NO EFFECT. + +THIS PROGRAM TESTS THAT, OTHER THAN IN QUOTED-STRINGS +AND UNQUOTED-STRINGS, AN ARBITRARY NUMBER OF SPACES MAY +APPEAR IN THE PROGRAM ANYWHERE A SINGLE SPACE IS ALLOWED +WITHOUT AFFECTING ITS EXECUTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 186 diff --git a/NBS2/P186.BAS b/NBS2/P186.BAS new file mode 100644 index 0000000..9b226b4 --- /dev/null +++ b/NBS2/P186.BAS @@ -0,0 +1,26 @@ +10 PRINT "PROGRAM FILE 186: EXTRA SPACES HAVE NO EFFECT." +20 PRINT " ANSI STANDARD 3.4" +30 PRINT +40 PRINT "SECTION 186.1: EXTRA SPACES HAVE NO EFFECT." +50 PRINT +60 PRINT "THIS PROGRAM TESTS THAT, OTHER THAN IN QUOTED-STRINGS" +70 PRINT "AND UNQUOTED-STRINGS, AN ARBITRARY NUMBER OF SPACES MAY" +80 PRINT "APPEAR IN THE PROGRAM ANYWHERE A SINGLE SPACE IS ALLOWED" +90 PRINT "WITHOUT AFFECTING ITS EXECUTION." +100 PRINT +110 PRINT " BEGIN TEST." +120 PRINT +130 LET I = - 3 + 1 + 2 +140 GO TO 160 +150 LET I=I+1 +160 IF I = 1 THEN 180 +170 LET I = + 2 +180 IF I=2 THEN 210 +190 PRINT "*** TEST FAILED ***" +200 GOTO 220 +210 PRINT "*** TEST PASSED ***" +220 PRINT +230 PRINT " END TEST." +240 PRINT +250 PRINT "END PROGRAM 186" +260 END diff --git a/NBS2/P186.OUT b/NBS2/P186.OUT new file mode 100644 index 0000000..4152e59 --- /dev/null +++ b/NBS2/P186.OUT @@ -0,0 +1,17 @@ +PROGRAM FILE 186: EXTRA SPACES HAVE NO EFFECT. + ANSI STANDARD 3.4 + +SECTION 186.1: EXTRA SPACES HAVE NO EFFECT. + +THIS PROGRAM TESTS THAT, OTHER THAN IN QUOTED-STRINGS +AND UNQUOTED-STRINGS, AN ARBITRARY NUMBER OF SPACES MAY +APPEAR IN THE PROGRAM ANYWHERE A SINGLE SPACE IS ALLOWED +WITHOUT AFFECTING ITS EXECUTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 186 diff --git a/NBS2/P186.dif b/NBS2/P186.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P186.run b/NBS2/P186.run new file mode 100644 index 0000000..d521363 --- /dev/null +++ b/NBS2/P186.run @@ -0,0 +1,17 @@ +PROGRAM FILE 186: EXTRA SPACES HAVE NO EFFECT. + ANSI STANDARD 3.4 + +SECTION 186.1: EXTRA SPACES HAVE NO EFFECT. + +THIS PROGRAM TESTS THAT, OTHER THAN IN QUOTED-STRINGS +AND UNQUOTED-STRINGS, AN ARBITRARY NUMBER OF SPACES MAY +APPEAR IN THE PROGRAM ANYWHERE A SINGLE SPACE IS ALLOWED +WITHOUT AFFECTING ITS EXECUTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 186 diff --git a/NBS2/P187.80 b/NBS2/P187.80 new file mode 100644 index 0000000..d95ac37 --- /dev/null +++ b/NBS2/P187.80 @@ -0,0 +1,27 @@ +PROGRAM FILE 187: ERROR - SPACES AT THE BEGINNING OF A LINE. + ANSI STANDARD 3.4, 4.4 + +SECTION 187.1: ERROR - SPACES AT THE BEGINNING OF A LINE. + + THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING LINES BEGINNING WITH SPACES. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED A LINE BEGINNING WITH A SPACE. + + END TEST. + +END PROGRAM 187 diff --git a/NBS2/P187.BAS b/NBS2/P187.BAS new file mode 100644 index 0000000..52cb6fc --- /dev/null +++ b/NBS2/P187.BAS @@ -0,0 +1,28 @@ +10 PRINT "PROGRAM FILE 187: ERROR - SPACES AT THE BEGINNING OF A LINE." +15 PRINT " ANSI STANDARD 3.4, 4.4" +20 PRINT +30 PRINT "SECTION 187.1: ERROR - SPACES AT THE BEGINNING OF A LINE." +40 PRINT +50 PRINT " THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR" +60 PRINT "ACCEPTS PROGRAMS CONTAINING LINES BEGINNING WITH SPACES." +70 PRINT +80 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +90 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +100 PRINT +110 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +120 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +130 PRINT " BY THE PROCESSOR, OR" +140 PRINT +150 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +160 PRINT +170 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +180 PRINT "FOR DETAILED CRITERIA." +190 PRINT +200 PRINT " BEGIN TEST." +210 PRINT + 220 PRINT "THE PROCESSOR HAS EXECUTED A LINE BEGINNING WITH A SPACE." +230 PRINT +240 PRINT " END TEST." +250 PRINT +260 PRINT "END PROGRAM 187" +270 END diff --git a/NBS2/P187.OUT b/NBS2/P187.OUT new file mode 100644 index 0000000..31d75c7 --- /dev/null +++ b/NBS2/P187.OUT @@ -0,0 +1,27 @@ +PROGRAM FILE 187: ERROR - SPACES AT THE BEGINNING OF A LINE. + ANSI STANDARD 3.4, 4.4 + +SECTION 187.1: ERROR - SPACES AT THE BEGINNING OF A LINE. + + THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING LINES BEGINNING WITH SPACES. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED A LINE BEGINNING WITH A SPACE. + + END TEST. + +END PROGRAM 187 diff --git a/NBS2/P187.dif b/NBS2/P187.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P187.run b/NBS2/P187.run new file mode 100644 index 0000000..d95ac37 --- /dev/null +++ b/NBS2/P187.run @@ -0,0 +1,27 @@ +PROGRAM FILE 187: ERROR - SPACES AT THE BEGINNING OF A LINE. + ANSI STANDARD 3.4, 4.4 + +SECTION 187.1: ERROR - SPACES AT THE BEGINNING OF A LINE. + + THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING LINES BEGINNING WITH SPACES. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED A LINE BEGINNING WITH A SPACE. + + END TEST. + +END PROGRAM 187 diff --git a/NBS2/P188.80 b/NBS2/P188.80 new file mode 100644 index 0000000..c09ccab --- /dev/null +++ b/NBS2/P188.80 @@ -0,0 +1,6 @@ +2 < 231 - LINE OUT OF ORDER: 2 40 PRINT "THE PROCESSOR HAS EXECUTED TWO LINES CO +ILLEGAL CHARACTER AFTER LINE NUMBER: 40 PRINT "THE PROCESSOR HAS EXECUTED TWO LI +ILLEGAL COMMAND AFTER LINE NUMBER: 231 40 PRINT "THE PROCESSOR HAS EXECUTED TWO +25 < 232 - LINE OUT OF ORDER: 25 0 PRINT "SPACES WITHIN LINE-NUMBERS." +ILLEGAL CHARACTER AFTER LINE NUMBER: 0 PRINT "SPACES WITHIN LINE-NUMBERS." +ILLEGAL COMMAND AFTER LINE NUMBER: 232 0 PRINT "SPACES WITHIN LINE-NUMBERS." diff --git a/NBS2/P188.BAS b/NBS2/P188.BAS new file mode 100644 index 0000000..8143862 --- /dev/null +++ b/NBS2/P188.BAS @@ -0,0 +1,30 @@ +10 PRINT "PROGRAM FILE 188: ERROR - SPACES WITHIN LINE-NUMBERS." +20 PRINT " ANSI STANDARD 3.4, 4.4" +30 PRINT +40 PRINT "SECTION 188.1: ERROR - SPACES WITHIN LINE-NUMBERS." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR ACCEPTS" +70 PRINT "PROGRAMS CONTAINING SPACES WITHIN LINE-NUMBERS." +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +2 40 PRINT "THE PROCESSOR HAS EXECUTED TWO LINES CONTAINING" +25 0 PRINT "SPACES WITHIN LINE-NUMBERS." +260 PRINT +270 PRINT " END TEST." +280 PRINT +290 PRINT "END PROGRAM 188" +300 END diff --git a/NBS2/P188.OUT b/NBS2/P188.OUT new file mode 100644 index 0000000..8b6ee2c --- /dev/null +++ b/NBS2/P188.OUT @@ -0,0 +1,6 @@ +2 < 231 - LINE OUT OF ORDER: 2 40 PRINT "THE PROCESSOR HAS EXECUTED TWO LINES CONTAINING" +ILLEGAL CHARACTER AFTER LINE NUMBER: 40 PRINT "THE PROCESSOR HAS EXECUTED TWO LINES CONTAINING" +ILLEGAL COMMAND AFTER LINE NUMBER: 231 40 PRINT "THE PROCESSOR HAS EXECUTED TWO LINES CONTAINING" +25 < 232 - LINE OUT OF ORDER: 25 0 PRINT "SPACES WITHIN LINE-NUMBERS." +ILLEGAL CHARACTER AFTER LINE NUMBER: 0 PRINT "SPACES WITHIN LINE-NUMBERS." +ILLEGAL COMMAND AFTER LINE NUMBER: 232 0 PRINT "SPACES WITHIN LINE-NUMBERS." diff --git a/NBS2/P188.dif b/NBS2/P188.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P188.run b/NBS2/P188.run new file mode 100644 index 0000000..c09ccab --- /dev/null +++ b/NBS2/P188.run @@ -0,0 +1,6 @@ +2 < 231 - LINE OUT OF ORDER: 2 40 PRINT "THE PROCESSOR HAS EXECUTED TWO LINES CO +ILLEGAL CHARACTER AFTER LINE NUMBER: 40 PRINT "THE PROCESSOR HAS EXECUTED TWO LI +ILLEGAL COMMAND AFTER LINE NUMBER: 231 40 PRINT "THE PROCESSOR HAS EXECUTED TWO +25 < 232 - LINE OUT OF ORDER: 25 0 PRINT "SPACES WITHIN LINE-NUMBERS." +ILLEGAL CHARACTER AFTER LINE NUMBER: 0 PRINT "SPACES WITHIN LINE-NUMBERS." +ILLEGAL COMMAND AFTER LINE NUMBER: 232 0 PRINT "SPACES WITHIN LINE-NUMBERS." diff --git a/NBS2/P189.80 b/NBS2/P189.80 new file mode 100644 index 0000000..61d63ed --- /dev/null +++ b/NBS2/P189.80 @@ -0,0 +1,24 @@ +PROGRAM FILE 189: ERROR - SPACES WITHIN KEYWORDS. + ANSI STANDARD 3.4 + +SECTION 189.1: ERROR - SPACES WITHIN KEYWORDS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING SPACES WITHIN KEYWORDS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 240: in bwb_exp(): incomplete expression. diff --git a/NBS2/P189.BAS b/NBS2/P189.BAS new file mode 100644 index 0000000..b4ed78e --- /dev/null +++ b/NBS2/P189.BAS @@ -0,0 +1,43 @@ +10 PRINT "PROGRAM FILE 189: ERROR - SPACES WITHIN KEYWORDS." +20 PRINT " ANSI STANDARD 3.4" +30 PRINT +40 PRINT "SECTION 189.1: ERROR - SPACES WITHIN KEYWORDS." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR" +70 PRINT "ACCEPTS PROGRAMS CONTAINING SPACES WITHIN KEYWORDS." +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT " BEGIN TEST." +220 PRINT +230 LET X=0 +240 L E T X=10 +250 I F X=10 THEN 370 +260 IF X=10 THEN 310 +270 I F X=0 THEN 340 +280 PRINT "THE PROCESSOR DID NOT EXECUTE THE STATEMENTS" +290 PRINT "CONTAINING SPACES WITHIN THE KEYWORDS LET AND IF." +300 GOTO 390 +310 PRINT "THE PROCESSOR EXECUTED A STATEMENT CONTAINING A" +320 PRINT "SPACE WITHIN THE KEYWORD LET." +330 GOTO 390 +340 PRINT "THE PROCESSOR EXECUTED A STATEMENT CONTAINING A" +350 PRINT "SPACE WITHIN THE KEYWORD IF." +360 GOTO 390 +370 PRINT "THE PROCESSOR EXECUTED STATEMENTS CONTAINING SPACES" +380 PRINT "WITHIN THE KEYWORDS LET AND IF." +390 PRINT +400 PRINT " END TEST." +410 PRINT +420 PRINT "END PROGRAM 189" +430 END diff --git a/NBS2/P189.OUT b/NBS2/P189.OUT new file mode 100644 index 0000000..7223d2a --- /dev/null +++ b/NBS2/P189.OUT @@ -0,0 +1,24 @@ +PROGRAM FILE 189: ERROR - SPACES WITHIN KEYWORDS. + ANSI STANDARD 3.4 + +SECTION 189.1: ERROR - SPACES WITHIN KEYWORDS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING SPACES WITHIN KEYWORDS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 240: in bwb_exp(): incomplete expression. diff --git a/NBS2/P189.dif b/NBS2/P189.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P189.run b/NBS2/P189.run new file mode 100644 index 0000000..61d63ed --- /dev/null +++ b/NBS2/P189.run @@ -0,0 +1,24 @@ +PROGRAM FILE 189: ERROR - SPACES WITHIN KEYWORDS. + ANSI STANDARD 3.4 + +SECTION 189.1: ERROR - SPACES WITHIN KEYWORDS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING SPACES WITHIN KEYWORDS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 240: in bwb_exp(): incomplete expression. diff --git a/NBS2/P190.80 b/NBS2/P190.80 new file mode 100644 index 0000000..9440aed --- /dev/null +++ b/NBS2/P190.80 @@ -0,0 +1,3 @@ +ILLEGAL CHARACTER AFTER LINE NUMBER: 250LET X=10 +ILLEGAL CHARACTER AFTER LINE NUMBER: 260IF X=10THEN 330 +ILLEGAL CHARACTER AFTER LINE NUMBER: 280IF X=0 THEN 360 diff --git a/NBS2/P190.BAS b/NBS2/P190.BAS new file mode 100644 index 0000000..f1b7b0e --- /dev/null +++ b/NBS2/P190.BAS @@ -0,0 +1,45 @@ +10 PRINT "PROGRAM FILE 190: ERROR - NO SPACES BEFORE KEYWORDS." +20 PRINT " ANSI STANDARD 3.4" +30 PRINT +40 PRINT "SECTION 190.1: ERROR - NO SPACES BEFORE KEYWORDS." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR ACCEPTS" +70 PRINT "PROGRAM CONTAINING KEYWORDS WHICH ARE NOT PRECEDED BY" +80 PRINT "AT LEAST ONE SPACE." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 LET X=0 +250LET X=10 +260IF X=10THEN 330 +270 IF X=10 THEN 330 +280IF X=0 THEN 360 +290 PRINT "THE PROCESSOR DID NOT EXECUTE THE STATEMENTS" +300 PRINT "WHICH DID NOT CONTAIN A SPACE BEFORE THE KEYWORDS" +310 PRINT "LET AND IF." +320 GOTO 410 +330 PRINT "THE PROCESSOR EXECUTED A STATEMENT WHICH DID NOT" +340 PRINT "CONTAIN A SPACE BEFORE THE KEYWORD LET." +350 GOTO 410 +360 PRINT "THE PROCESSOR EXECUTED A STATEMENT WHICH DID NOT" +370 PRINT "CONTAIN A SPACE BEFORE THE KEYWORD IF." +380 GOTO 410 +390 PRINT "THE PROCESSOR EXECUTED STATEMENTS WHICH DID NOT" +400 PRINT "CONTAIN A SPACE BEFORE THE KEYWORDS LET AND IF." +410 PRINT +420 PRINT " END TEST." +430 PRINT +440 PRINT "END PROGRAM 190" +450 END diff --git a/NBS2/P190.OUT b/NBS2/P190.OUT new file mode 100644 index 0000000..dba4b3a --- /dev/null +++ b/NBS2/P190.OUT @@ -0,0 +1,3 @@ +ILLEGAL CHARACTER AFTER LINE NUMBER: 250LET X=10 +ILLEGAL CHARACTER AFTER LINE NUMBER: 260IF X=10THEN 330 +ILLEGAL CHARACTER AFTER LINE NUMBER: 280IF X=0 THEN 360 diff --git a/NBS2/P190.dif b/NBS2/P190.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P190.run b/NBS2/P190.run new file mode 100644 index 0000000..9440aed --- /dev/null +++ b/NBS2/P190.run @@ -0,0 +1,3 @@ +ILLEGAL CHARACTER AFTER LINE NUMBER: 250LET X=10 +ILLEGAL CHARACTER AFTER LINE NUMBER: 260IF X=10THEN 330 +ILLEGAL CHARACTER AFTER LINE NUMBER: 280IF X=0 THEN 360 diff --git a/NBS2/P191.80 b/NBS2/P191.80 new file mode 100644 index 0000000..faab421 --- /dev/null +++ b/NBS2/P191.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 191: ERROR - NO SPACES AFTER KEYWORDS. + ANSI STANDARD 3.4 + +SECTION 191.1: ERROR - NO SPACES AFTER KEYWORDS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING KEYWORDS WHICH ARE NOT FOLLOWED +BY AT LEAST ONE SPACE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 260: Syntax error diff --git a/NBS2/P191.BAS b/NBS2/P191.BAS new file mode 100644 index 0000000..006b030 --- /dev/null +++ b/NBS2/P191.BAS @@ -0,0 +1,45 @@ +10 PRINT "PROGRAM FILE 191: ERROR - NO SPACES AFTER KEYWORDS." +20 PRINT " ANSI STANDARD 3.4" +30 PRINT +40 PRINT "SECTION 191.1: ERROR - NO SPACES AFTER KEYWORDS." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR" +70 PRINT "ACCEPTS PROGRAMS CONTAINING KEYWORDS WHICH ARE NOT FOLLOWED" +80 PRINT "BY AT LEAST ONE SPACE." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 LET X=0 +250 LETX=10 +260 IFX=10 THEN 390 +270 IF X=10 THEN 330 +280 IFX=0 THEN 360 +290 PRINT "THE PROCESSOR DID NOT EXECUTE THE STATEMENTS" +300 PRINT "WHICH DID NOT CONTAIN A SPACE AFTER THE KEYWORDS" +310 PRINT "LET AND IF." +320 GOTO 410 +330 PRINT "THE PROCESSOR EXECUTED A STATEMENT WHICH DID NOT" +340 PRINT "CONTAIN A SPACE AFTER THE KEYWORD LET." +350 GOTO 410 +360 PRINT "THE PROCESSOR EXECUTED A STATEMENT WHICH DID NOT" +370 PRINT "CONTAIN A SPACE AFTER THE KEYWORD IF." +380 GOTO 410 +390 PRINT "THE PROCESSOR EXECUTED STATEMENTS WHICH DID NOT" +400 PRINT "CONTAIN A SPACE AFTER THE KEYWORDS LET AND IF." +410 PRINT +420 PRINT " END TEST." +430 PRINT +440 PRINT "END PROGRAM 191" +450 END diff --git a/NBS2/P191.OUT b/NBS2/P191.OUT new file mode 100644 index 0000000..8fe3028 --- /dev/null +++ b/NBS2/P191.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 191: ERROR - NO SPACES AFTER KEYWORDS. + ANSI STANDARD 3.4 + +SECTION 191.1: ERROR - NO SPACES AFTER KEYWORDS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING KEYWORDS WHICH ARE NOT FOLLOWED +BY AT LEAST ONE SPACE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 260: Syntax error diff --git a/NBS2/P191.dif b/NBS2/P191.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P191.run b/NBS2/P191.run new file mode 100644 index 0000000..faab421 --- /dev/null +++ b/NBS2/P191.run @@ -0,0 +1,25 @@ +PROGRAM FILE 191: ERROR - NO SPACES AFTER KEYWORDS. + ANSI STANDARD 3.4 + +SECTION 191.1: ERROR - NO SPACES AFTER KEYWORDS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING KEYWORDS WHICH ARE NOT FOLLOWED +BY AT LEAST ONE SPACE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + + +ERROR in line 260: Syntax error diff --git a/NBS2/P192.80 b/NBS2/P192.80 new file mode 100644 index 0000000..1e69b56 --- /dev/null +++ b/NBS2/P192.80 @@ -0,0 +1,31 @@ +PROGRAM FILE 192: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING SINGLE QUOTE. + ANSI STANDARD 3.2, 12.2, 12.4 + +SECTION 192.1: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A PRINT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A PRINT-ITEM CONTAINING AN ASTERISK, A SINGLE +OCCURRENCE OF THE QUOTE CHARACTER AND A QUESTION MARK +APPEARS IN THE NEXT STATEMENT AFTER THIS PARAGRAPH. CHECK +THE NEXT LINE FOR THE PROCESSOR'S INTERPRETATION. + +ERROR in line 280: Syntax error diff --git a/NBS2/P192.BAS b/NBS2/P192.BAS new file mode 100644 index 0000000..ec59fb0 --- /dev/null +++ b/NBS2/P192.BAS @@ -0,0 +1,35 @@ +10 PRINT "PROGRAM FILE 192: ERROR - PRINT-ITEM QUOTED STRINGS" +15 PRINT " CONTAINING SINGLE QUOTE." +20 PRINT " ANSI STANDARD 3.2, 12.2, 12.4" +30 PRINT +40 PRINT "SECTION 192.1: ERROR - PRINT-ITEM QUOTED STRINGS" +45 PRINT " CONTAINING SINGLE QUOTE." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +70 PRINT "CONTAINING A SINGLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN" +80 PRINT "THE QUOTED STRING OF A PRINT-STATEMENT." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 PRINT "A PRINT-ITEM CONTAINING AN ASTERISK, A SINGLE " +250 PRINT "OCCURRENCE OF THE QUOTE CHARACTER AND A QUESTION MARK" +260 PRINT "APPEARS IN THE NEXT STATEMENT AFTER THIS PARAGRAPH. CHECK" +270 PRINT "THE NEXT LINE FOR THE PROCESSOR'S INTERPRETATION." +280 PRINT " *"?" +290 PRINT +300 PRINT " END TEST." +310 PRINT +320 PRINT "END PROGRAM 192" +330 END diff --git a/NBS2/P192.OUT b/NBS2/P192.OUT new file mode 100644 index 0000000..d2bd327 --- /dev/null +++ b/NBS2/P192.OUT @@ -0,0 +1,31 @@ +PROGRAM FILE 192: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING SINGLE QUOTE. + ANSI STANDARD 3.2, 12.2, 12.4 + +SECTION 192.1: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A PRINT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A PRINT-ITEM CONTAINING AN ASTERISK, A SINGLE +OCCURRENCE OF THE QUOTE CHARACTER AND A QUESTION MARK +APPEARS IN THE NEXT STATEMENT AFTER THIS PARAGRAPH. CHECK +THE NEXT LINE FOR THE PROCESSOR'S INTERPRETATION. + +ERROR in line 280: Syntax error diff --git a/NBS2/P192.dif b/NBS2/P192.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P192.run b/NBS2/P192.run new file mode 100644 index 0000000..1e69b56 --- /dev/null +++ b/NBS2/P192.run @@ -0,0 +1,31 @@ +PROGRAM FILE 192: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING SINGLE QUOTE. + ANSI STANDARD 3.2, 12.2, 12.4 + +SECTION 192.1: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLE OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A PRINT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A PRINT-ITEM CONTAINING AN ASTERISK, A SINGLE +OCCURRENCE OF THE QUOTE CHARACTER AND A QUESTION MARK +APPEARS IN THE NEXT STATEMENT AFTER THIS PARAGRAPH. CHECK +THE NEXT LINE FOR THE PROCESSOR'S INTERPRETATION. + +ERROR in line 280: Syntax error diff --git a/NBS2/P193.80 b/NBS2/P193.80 new file mode 100644 index 0000000..d8808d9 --- /dev/null +++ b/NBS2/P193.80 @@ -0,0 +1,33 @@ +PROGRAM FILE 193: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING DOUBLE QUOTES. + ANSI STANDARD 3.2, 12.2, 12.4 + +SECTION 193.1: ERROR -PRINT-ITEM QUOTED STRINGS + CONTAINING DOUBLE QUOTES. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING TWO CONSECUTIVE OCCURRENCES +OF THE QUOTE CHARACTER WITHIN THE QUOTED STRING OF A +PRINT STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A PRINT-ITEM CONTAINING AN ASTERISK, TWO CONSECUTIVE +OCCURRENCES OF THE QUOTE CHARACTER AND A QUESTION MARK +APPEARS IN THE NEXT STATEMENT AFTER THIS PARAGRAPH. +CHECK THE NEXT LINE OF OUTPUT FOR THE PROCESSOR'S +INTERPRETATION. + +ERROR in line 300: in bwb_exp(): incomplete expression. diff --git a/NBS2/P193.BAS b/NBS2/P193.BAS new file mode 100644 index 0000000..6844495 --- /dev/null +++ b/NBS2/P193.BAS @@ -0,0 +1,37 @@ +10 PRINT "PROGRAM FILE 193: ERROR - PRINT-ITEM QUOTED STRINGS" +15 PRINT " CONTAINING DOUBLE QUOTES." +20 PRINT " ANSI STANDARD 3.2, 12.2, 12.4" +30 PRINT +40 PRINT "SECTION 193.1: ERROR -PRINT-ITEM QUOTED STRINGS" +45 PRINT " CONTAINING DOUBLE QUOTES." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR" +70 PRINT "ACCEPTS PROGRAMS CONTAINING TWO CONSECUTIVE OCCURRENCES" +80 PRINT "OF THE QUOTE CHARACTER WITHIN THE QUOTED STRING OF A" +90 PRINT "PRINT STATEMENT." +100 PRINT +110 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +120 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +130 PRINT +140 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +150 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +160 PRINT " BY THE PROCESSOR, OR" +170 PRINT +180 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +190 PRINT +200 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +210 PRINT "FOR DETAILED CRITERIA." +220 PRINT +230 PRINT " BEGIN TEST." +240 PRINT +250 PRINT "A PRINT-ITEM CONTAINING AN ASTERISK, TWO CONSECUTIVE" +260 PRINT "OCCURRENCES OF THE QUOTE CHARACTER AND A QUESTION MARK " +270 PRINT "APPEARS IN THE NEXT STATEMENT AFTER THIS PARAGRAPH." +280 PRINT "CHECK THE NEXT LINE OF OUTPUT FOR THE PROCESSOR'S" +290 PRINT "INTERPRETATION." +300 PRINT " *""?" +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 193" +350 END diff --git a/NBS2/P193.OUT b/NBS2/P193.OUT new file mode 100644 index 0000000..26dac70 --- /dev/null +++ b/NBS2/P193.OUT @@ -0,0 +1,33 @@ +PROGRAM FILE 193: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING DOUBLE QUOTES. + ANSI STANDARD 3.2, 12.2, 12.4 + +SECTION 193.1: ERROR -PRINT-ITEM QUOTED STRINGS + CONTAINING DOUBLE QUOTES. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING TWO CONSECUTIVE OCCURRENCES +OF THE QUOTE CHARACTER WITHIN THE QUOTED STRING OF A +PRINT STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A PRINT-ITEM CONTAINING AN ASTERISK, TWO CONSECUTIVE +OCCURRENCES OF THE QUOTE CHARACTER AND A QUESTION MARK +APPEARS IN THE NEXT STATEMENT AFTER THIS PARAGRAPH. +CHECK THE NEXT LINE OF OUTPUT FOR THE PROCESSOR'S +INTERPRETATION. + +ERROR in line 300: in bwb_exp(): incomplete expression. diff --git a/NBS2/P193.dif b/NBS2/P193.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P193.run b/NBS2/P193.run new file mode 100644 index 0000000..d8808d9 --- /dev/null +++ b/NBS2/P193.run @@ -0,0 +1,33 @@ +PROGRAM FILE 193: ERROR - PRINT-ITEM QUOTED STRINGS + CONTAINING DOUBLE QUOTES. + ANSI STANDARD 3.2, 12.2, 12.4 + +SECTION 193.1: ERROR -PRINT-ITEM QUOTED STRINGS + CONTAINING DOUBLE QUOTES. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING TWO CONSECUTIVE OCCURRENCES +OF THE QUOTE CHARACTER WITHIN THE QUOTED STRING OF A +PRINT STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +A PRINT-ITEM CONTAINING AN ASTERISK, TWO CONSECUTIVE +OCCURRENCES OF THE QUOTE CHARACTER AND A QUESTION MARK +APPEARS IN THE NEXT STATEMENT AFTER THIS PARAGRAPH. +CHECK THE NEXT LINE OF OUTPUT FOR THE PROCESSOR'S +INTERPRETATION. + +ERROR in line 300: in bwb_exp(): incomplete expression. diff --git a/NBS2/P194.80 b/NBS2/P194.80 new file mode 100644 index 0000000..e3384e3 --- /dev/null +++ b/NBS2/P194.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 194: ERROR - ASSIGNED QUOTED STRINGS + CONTAINING SINGLE QUOTE. + ANSI STANDARD 3.2, 9.2 + +SECTION 194.1: ERROR - ASSIGNED QUOTED STRINGS + CONTAINING SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLED OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A$ A QUOTED-STRING CONTAINING: +ASTERISK, QUOTE, QUESTION-MARK. + +ERROR in line 260: Syntax error diff --git a/NBS2/P194.BAS b/NBS2/P194.BAS new file mode 100644 index 0000000..acfce83 --- /dev/null +++ b/NBS2/P194.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 194: ERROR - ASSIGNED QUOTED STRINGS " +15 PRINT " CONTAINING SINGLE QUOTE." +20 PRINT " ANSI STANDARD 3.2, 9.2" +30 PRINT +40 PRINT "SECTION 194.1: ERROR - ASSIGNED QUOTED STRINGS " +45 PRINT " CONTAINING SINGLE QUOTE." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +70 PRINT "CONTAINING A SINGLED OCCURRENCE OF THE QUOTE CHARACTER WITHIN" +80 PRINT "THE QUOTED STRING OF A LET-STATEMENT." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 PRINT "ABOUT TO ASSIGN TO A$ A QUOTED-STRING CONTAINING:" +250 PRINT "ASTERISK, QUOTE, QUESTION-MARK." +260 LET A$="*"?" +270 PRINT "A$=";A$ +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 194" +350 END diff --git a/NBS2/P194.OUT b/NBS2/P194.OUT new file mode 100644 index 0000000..77bc248 --- /dev/null +++ b/NBS2/P194.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 194: ERROR - ASSIGNED QUOTED STRINGS + CONTAINING SINGLE QUOTE. + ANSI STANDARD 3.2, 9.2 + +SECTION 194.1: ERROR - ASSIGNED QUOTED STRINGS + CONTAINING SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLED OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A$ A QUOTED-STRING CONTAINING: +ASTERISK, QUOTE, QUESTION-MARK. + +ERROR in line 260: Syntax error diff --git a/NBS2/P194.dif b/NBS2/P194.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P194.run b/NBS2/P194.run new file mode 100644 index 0000000..e3384e3 --- /dev/null +++ b/NBS2/P194.run @@ -0,0 +1,28 @@ +PROGRAM FILE 194: ERROR - ASSIGNED QUOTED STRINGS + CONTAINING SINGLE QUOTE. + ANSI STANDARD 3.2, 9.2 + +SECTION 194.1: ERROR - ASSIGNED QUOTED STRINGS + CONTAINING SINGLE QUOTE. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING A SINGLED OCCURRENCE OF THE QUOTE CHARACTER WITHIN +THE QUOTED STRING OF A LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A$ A QUOTED-STRING CONTAINING: +ASTERISK, QUOTE, QUESTION-MARK. + +ERROR in line 260: Syntax error diff --git a/NBS2/P195.80 b/NBS2/P195.80 new file mode 100644 index 0000000..7298134 --- /dev/null +++ b/NBS2/P195.80 @@ -0,0 +1,29 @@ +PROGRAM FILE 195: ERROR - ASSIGNED QUOTED STRING + CONTAINING DOUBLE QUOTES. + ANSI STANDARD 3.2, 9.2 + +SECTION 195.1: ERROR - ASSIGNED QUOTED STRING + CONTAINING DOUBLE QUOTES. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING TWO CONSECUTIVE OCCURRENCES OF THE QUOTE +CHARACTER WITHIN THE QUOTED STRING OF A LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A$ A QUOTED-STRING CONTAINING: +ASTERISK, QUOTE, QUOTE, QUESTION-MARK. + +ERROR in line 260: in bwb_exp(): incomplete expression. diff --git a/NBS2/P195.BAS b/NBS2/P195.BAS new file mode 100644 index 0000000..ad75c36 --- /dev/null +++ b/NBS2/P195.BAS @@ -0,0 +1,34 @@ +10 PRINT "PROGRAM FILE 195: ERROR - ASSIGNED QUOTED STRING " +15 PRINT " CONTAINING DOUBLE QUOTES." +20 PRINT " ANSI STANDARD 3.2, 9.2" +30 PRINT +40 PRINT "SECTION 195.1: ERROR - ASSIGNED QUOTED STRING " +45 PRINT " CONTAINING DOUBLE QUOTES." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +70 PRINT "CONTAINING TWO CONSECUTIVE OCCURRENCES OF THE QUOTE " +80 PRINT "CHARACTER WITHIN THE QUOTED STRING OF A LET-STATEMENT." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 PRINT "ABOUT TO ASSIGN TO A$ A QUOTED-STRING CONTAINING:" +250 PRINT "ASTERISK, QUOTE, QUOTE, QUESTION-MARK." +260 LET A$="*""?" +270 PRINT "A$=";A$ +310 PRINT +320 PRINT " END TEST." +330 PRINT +340 PRINT "END PROGRAM 195" +350 END diff --git a/NBS2/P195.OUT b/NBS2/P195.OUT new file mode 100644 index 0000000..e4a16ad --- /dev/null +++ b/NBS2/P195.OUT @@ -0,0 +1,29 @@ +PROGRAM FILE 195: ERROR - ASSIGNED QUOTED STRING + CONTAINING DOUBLE QUOTES. + ANSI STANDARD 3.2, 9.2 + +SECTION 195.1: ERROR - ASSIGNED QUOTED STRING + CONTAINING DOUBLE QUOTES. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING TWO CONSECUTIVE OCCURRENCES OF THE QUOTE +CHARACTER WITHIN THE QUOTED STRING OF A LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A$ A QUOTED-STRING CONTAINING: +ASTERISK, QUOTE, QUOTE, QUESTION-MARK. + +ERROR in line 260: in bwb_exp(): incomplete expression. diff --git a/NBS2/P195.dif b/NBS2/P195.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P195.run b/NBS2/P195.run new file mode 100644 index 0000000..7298134 --- /dev/null +++ b/NBS2/P195.run @@ -0,0 +1,29 @@ +PROGRAM FILE 195: ERROR - ASSIGNED QUOTED STRING + CONTAINING DOUBLE QUOTES. + ANSI STANDARD 3.2, 9.2 + +SECTION 195.1: ERROR - ASSIGNED QUOTED STRING + CONTAINING DOUBLE QUOTES. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING TWO CONSECUTIVE OCCURRENCES OF THE QUOTE +CHARACTER WITHIN THE QUOTED STRING OF A LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +ABOUT TO ASSIGN TO A$ A QUOTED-STRING CONTAINING: +ASTERISK, QUOTE, QUOTE, QUESTION-MARK. + +ERROR in line 260: in bwb_exp(): incomplete expression. diff --git a/NBS2/P196.80 b/NBS2/P196.80 new file mode 100644 index 0000000..386c858 --- /dev/null +++ b/NBS2/P196.80 @@ -0,0 +1,15 @@ +PROGRAM FILE 196: LINE-NUMBERS WITH LEADING ZEROS. + ANSI STANDARD 4.2, 4.4 + +SECTION 196.1: LINE-NUMBERS WITH LEADING ZEROS. + +THIS PROGRAM TESTS THAT LINE-NUMBERS WITH LEADING ZEROS +ARE ACCEPTED AND HAVE NO EFFECT ON THE SEQUENCE OF EXECUTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 196 diff --git a/NBS2/P196.BAS b/NBS2/P196.BAS new file mode 100644 index 0000000..ac2b48b --- /dev/null +++ b/NBS2/P196.BAS @@ -0,0 +1,26 @@ +5 PRINT "PROGRAM FILE 196: LINE-NUMBERS WITH LEADING ZEROS." +10 PRINT " ANSI STANDARD 4.2, 4.4" +15 PRINT +20 PRINT "SECTION 196.1: LINE-NUMBERS WITH LEADING ZEROS." +25 PRINT +30 PRINT "THIS PROGRAM TESTS THAT LINE-NUMBERS WITH LEADING ZEROS" +35 PRINT "ARE ACCEPTED AND HAVE NO EFFECT ON THE SEQUENCE OF EXECUTION." +40 PRINT +42 PRINT " BEGIN TEST." +44 PRINT +45 LET X=0 +50 IF X<>0 THEN 100 +052 LET X=X+1 +55 IF X<>1 THEN 100 +0057 LET X=X+1 +059 IF X<>2 THEN 100 +60 LET X=X+1 +0062 IF X<>3 THEN 100 +70 PRINT "*** TEST PASSED ***" +80 GOTO 110 +100 PRINT "*** TEST FAILED ***" +110 PRINT +120 PRINT " END TEST." +130 PRINT +140 PRINT "END PROGRAM 196" +150 END diff --git a/NBS2/P196.OUT b/NBS2/P196.OUT new file mode 100644 index 0000000..643ff6f --- /dev/null +++ b/NBS2/P196.OUT @@ -0,0 +1,15 @@ +PROGRAM FILE 196: LINE-NUMBERS WITH LEADING ZEROS. + ANSI STANDARD 4.2, 4.4 + +SECTION 196.1: LINE-NUMBERS WITH LEADING ZEROS. + +THIS PROGRAM TESTS THAT LINE-NUMBERS WITH LEADING ZEROS +ARE ACCEPTED AND HAVE NO EFFECT ON THE SEQUENCE OF EXECUTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 196 diff --git a/NBS2/P196.dif b/NBS2/P196.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P196.run b/NBS2/P196.run new file mode 100644 index 0000000..386c858 --- /dev/null +++ b/NBS2/P196.run @@ -0,0 +1,15 @@ +PROGRAM FILE 196: LINE-NUMBERS WITH LEADING ZEROS. + ANSI STANDARD 4.2, 4.4 + +SECTION 196.1: LINE-NUMBERS WITH LEADING ZEROS. + +THIS PROGRAM TESTS THAT LINE-NUMBERS WITH LEADING ZEROS +ARE ACCEPTED AND HAVE NO EFFECT ON THE SEQUENCE OF EXECUTION. + + BEGIN TEST. + +*** TEST PASSED *** + + END TEST. + +END PROGRAM 196 diff --git a/NBS2/P197.80 b/NBS2/P197.80 new file mode 100644 index 0000000..e84d918 --- /dev/null +++ b/NBS2/P197.80 @@ -0,0 +1 @@ +220 < 221 - LINE OUT OF ORDER: 220 LET B=9999 diff --git a/NBS2/P197.BAS b/NBS2/P197.BAS new file mode 100644 index 0000000..9c77b90 --- /dev/null +++ b/NBS2/P197.BAS @@ -0,0 +1,42 @@ +10 PRINT "PROGRAM FILE 197: ERROR - DUPLICATE LINE-NUMBERS." +20 PRINT " ANSI STANDARD 4.4" +30 PRINT +40 PRINT "SECTION 197.1: ERROR - DUPLICATE LINE-NUMBERS." +50 PRINT +60 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +70 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +80 PRINT +90 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +100 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +110 PRINT " BY THE PROCESSOR, OR" +120 PRINT +130 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +140 PRINT +150 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +160 PRINT "FOR DETAILED CRITERIA." +170 PRINT +180 PRINT " BEGIN TEST." +190 PRINT +200 LET A=1111 +210 LET B=1111 +220 LET A=9999 +220 LET B=9999 +240 IF A=1111 THEN 290 +250 IF B=1111 THEN 330 +260 PRINT "THE PROCESSOR EXECUTED EACH OF TWO LET STATEMENTS WITH" +270 PRINT "DUPLICATE LINE-NUMBERS." +280 GOTO 380 +290 IF B=1111 THEN 360 +300 PRINT "THE PROCESSOR EXECUTED THE SECOND, BUT NOT THE FIRST" +310 PRINT "OF TWO LET STATEMENTS WITH DUPLICATE LINE-NUMBERS." +320 GOTO 380 +330 PRINT "THE PROCESSOR EXECUTED THE FIRST, BUT NOT THE SECOND" +340 PRINT "OF TWO LET STATEMENTS WITH DUPLICATE LINE-NUMBERS." +350 GOTO 380 +360 PRINT "THE PROCESSOR EXECUTED NEITHER OF TWO LET STATEMENTS" +370 PRINT "WITH DUPLICATE LINE-NUMBERS." +380 PRINT +390 PRINT " END TEST." +400 PRINT +410 PRINT "END PROGRAM 197" +420 END diff --git a/NBS2/P197.OUT b/NBS2/P197.OUT new file mode 100644 index 0000000..17b08e4 --- /dev/null +++ b/NBS2/P197.OUT @@ -0,0 +1 @@ +220 < 221 - LINE OUT OF ORDER: 220 LET B=9999 diff --git a/NBS2/P197.dif b/NBS2/P197.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P197.run b/NBS2/P197.run new file mode 100644 index 0000000..e84d918 --- /dev/null +++ b/NBS2/P197.run @@ -0,0 +1 @@ +220 < 221 - LINE OUT OF ORDER: 220 LET B=9999 diff --git a/NBS2/P198.80 b/NBS2/P198.80 new file mode 100644 index 0000000..6c15f4c --- /dev/null +++ b/NBS2/P198.80 @@ -0,0 +1 @@ +210 < 221 - LINE OUT OF ORDER: 210 LET A=3 diff --git a/NBS2/P198.BAS b/NBS2/P198.BAS new file mode 100644 index 0000000..8ff2089 --- /dev/null +++ b/NBS2/P198.BAS @@ -0,0 +1,35 @@ +10 PRINT "PROGRAM FILE 198: ERROR - LINES OUT OF ORDER." +20 PRINT " ANSI STANDARD 4.4" +30 PRINT +40 PRINT "SECTION 198.1: ERROR - LINES OUT OF ORDER." +50 PRINT +60 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +70 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +80 PRINT +90 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +100 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +110 PRINT " BY THE PROCESSOR, OR" +120 PRINT +130 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +140 PRINT +150 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +160 PRINT "FOR DETAILED CRITERIA." +170 PRINT +180 PRINT " BEGIN TEST." +190 PRINT +200 LET A=1 +220 LET A=2 +210 LET A=3 +230 ON A GOTO 250,270,290 +250 PRINT "NEITHER OF THE UNORDERED LINES WAS EXECUTED." +260 GOTO 300 +270 PRINT "THE LINES WERE EXECUTED IN ORDER OF THEIR LINE-NUMBERS." +280 GOTO 300 +290 PRINT "THE LINES WERE EXECUTED IN THEIR PHYSICAL SEQUENCE." +300 PRINT +320 PRINT +330 PRINT " END TEST." +340 PRINT +350 PRINT "END PROGRAM 198." +360 PRINT +370 END diff --git a/NBS2/P198.OUT b/NBS2/P198.OUT new file mode 100644 index 0000000..5e029e9 --- /dev/null +++ b/NBS2/P198.OUT @@ -0,0 +1 @@ +210 < 221 - LINE OUT OF ORDER: 210 LET A=3 diff --git a/NBS2/P198.dif b/NBS2/P198.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P198.run b/NBS2/P198.run new file mode 100644 index 0000000..6c15f4c --- /dev/null +++ b/NBS2/P198.run @@ -0,0 +1 @@ +210 < 221 - LINE OUT OF ORDER: 210 LET A=3 diff --git a/NBS2/P199.80 b/NBS2/P199.80 new file mode 100644 index 0000000..ad8ed1d --- /dev/null +++ b/NBS2/P199.80 @@ -0,0 +1,28 @@ +PROGRAM FILE 199: ERROR - FIVE-DIGIT LINE-NUMBERS. + ANSI STANDARD 4.2 + +SECTION 199.1: ERROR - FIVE-DIGIT LINE-NUMBERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LINE-NUMBERS CONSISTING OF FIVE DIGITS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED STATEMENTS WITH FIVE-DIGIT +LINE-NUMBERS. + + END TEST. + +END PROGRAM 199 diff --git a/NBS2/P199.BAS b/NBS2/P199.BAS new file mode 100644 index 0000000..981c439 --- /dev/null +++ b/NBS2/P199.BAS @@ -0,0 +1,29 @@ +9780 PRINT "PROGRAM FILE 199: ERROR - FIVE-DIGIT LINE-NUMBERS." +9790 PRINT " ANSI STANDARD 4.2" +9800 PRINT +9810 PRINT "SECTION 199.1: ERROR - FIVE-DIGIT LINE-NUMBERS." +9820 PRINT +9830 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +9840 PRINT "CONTAINING LINE-NUMBERS CONSISTING OF FIVE DIGITS." +9850 PRINT +9860 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +9870 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +9880 PRINT +9890 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +9900 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +9910 PRINT " BY THE PROCESSOR, OR" +9920 PRINT +9930 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +9940 PRINT +9950 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +9960 PRINT "FOR DETAILED CRITERIA." +9970 PRINT +9980 PRINT " BEGIN TEST." +9990 PRINT +10000 PRINT "THE PROCESSOR HAS EXECUTED STATEMENTS WITH FIVE-DIGIT" +10010 PRINT "LINE-NUMBERS." +10020 PRINT +10030 PRINT " END TEST." +10040 PRINT +10050 PRINT "END PROGRAM 199" +10060 END diff --git a/NBS2/P199.OUT b/NBS2/P199.OUT new file mode 100644 index 0000000..ec512ef --- /dev/null +++ b/NBS2/P199.OUT @@ -0,0 +1,28 @@ +PROGRAM FILE 199: ERROR - FIVE-DIGIT LINE-NUMBERS. + ANSI STANDARD 4.2 + +SECTION 199.1: ERROR - FIVE-DIGIT LINE-NUMBERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LINE-NUMBERS CONSISTING OF FIVE DIGITS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED STATEMENTS WITH FIVE-DIGIT +LINE-NUMBERS. + + END TEST. + +END PROGRAM 199 diff --git a/NBS2/P199.dif b/NBS2/P199.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P199.run b/NBS2/P199.run new file mode 100644 index 0000000..ad8ed1d --- /dev/null +++ b/NBS2/P199.run @@ -0,0 +1,28 @@ +PROGRAM FILE 199: ERROR - FIVE-DIGIT LINE-NUMBERS. + ANSI STANDARD 4.2 + +SECTION 199.1: ERROR - FIVE-DIGIT LINE-NUMBERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LINE-NUMBERS CONSISTING OF FIVE DIGITS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED STATEMENTS WITH FIVE-DIGIT +LINE-NUMBERS. + + END TEST. + +END PROGRAM 199 diff --git a/NBS2/P200.80 b/NBS2/P200.80 new file mode 100644 index 0000000..f9f5c2f --- /dev/null +++ b/NBS2/P200.80 @@ -0,0 +1 @@ +0 < 1 - LINE OUT OF ORDER: 0 PRINT "A STATEMENT WITH A LINE-NUMBER OF 0 HAS BEEN diff --git a/NBS2/P200.BAS b/NBS2/P200.BAS new file mode 100644 index 0000000..a79477c --- /dev/null +++ b/NBS2/P200.BAS @@ -0,0 +1,31 @@ +0 PRINT "A STATEMENT WITH A LINE-NUMBER OF 0 HAS BEEN EXECUTED." +10 PRINT +20 PRINT "PROGRAM FILE 2000: ERROR - LINE-NUMBER ZERO." +30 PRINT " ANSI STANDARD 4.4" +40 PRINT +50 PRINT "SECTION 200.1: ERROR - LINE-NUMBER ZERO." +60 PRINT +170 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +180 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +190 PRINT +200 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +210 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +220 PRINT " BY THE PROCESSOR, OR" +230 PRINT +240 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +250 PRINT +260 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +270 PRINT "FOR DETAILED CRITERIA." +280 PRINT +1070 PRINT " BEGIN TEST." +1080 PRINT +1090 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +1100 PRINT "CONTAINING LINE-NUMBERS WITH THE VALUE OF 0. THE FIRST" +1110 PRINT "STATEMENT IN THIS PROGRAM HAS A LINE-NUMBER OF 0. IT IS A" +1120 PRINT "PRINT-STATEMENT WHICH PRINTS THE MESSAGE THAT A LINE-NUMBER" +1130 PRINT "OF 0 HAS BEEN EXECUTED. CHECK THE FIRST LINE OF OUTPUT." +1140 PRINT +1150 PRINT " END TEST." +1160 PRINT +1290 PRINT "END PROGRAM 200" +1300 END diff --git a/NBS2/P200.OUT b/NBS2/P200.OUT new file mode 100644 index 0000000..98991b6 --- /dev/null +++ b/NBS2/P200.OUT @@ -0,0 +1 @@ +0 < 1 - LINE OUT OF ORDER: 0 PRINT "A STATEMENT WITH A LINE-NUMBER OF 0 HAS BEEN EXECUTED." diff --git a/NBS2/P200.dif b/NBS2/P200.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P200.run b/NBS2/P200.run new file mode 100644 index 0000000..f9f5c2f --- /dev/null +++ b/NBS2/P200.run @@ -0,0 +1 @@ +0 < 1 - LINE OUT OF ORDER: 0 PRINT "A STATEMENT WITH A LINE-NUMBER OF 0 HAS BEEN diff --git a/NBS2/P201.80 b/NBS2/P201.80 new file mode 100644 index 0000000..f18f57a --- /dev/null +++ b/NBS2/P201.80 @@ -0,0 +1,29 @@ +PROGRAM FILE 201: ERROR - STATEMENTS WITHOUT LINE-NUMBERS. + ANSI STANDARD 4.2, 4.4 + +SECTION 201.1: ERROR - STATEMENTS WITHOUT LINE-NUMBERS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING STATEMENTS WITH NO +LINE-NUMBERS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF THIS PROGRAM GENERATED ANY OUTPUT, THEN THE +PROCESSOR HAS EXECUTED STATEMENTS WITH NO LINE-NUMBERS. + + END TEST. + +END PROGRAM 201 diff --git a/NBS2/P201.BAS b/NBS2/P201.BAS new file mode 100644 index 0000000..5439b88 --- /dev/null +++ b/NBS2/P201.BAS @@ -0,0 +1,30 @@ +PRINT "PROGRAM FILE 201: ERROR - STATEMENTS WITHOUT LINE-NUMBERS." +PRINT " ANSI STANDARD 4.2, 4.4" +PRINT +PRINT "SECTION 201.1: ERROR - STATEMENTS WITHOUT LINE-NUMBERS." +PRINT +PRINT "THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR" +PRINT "ACCEPTS PROGRAMS CONTAINING STATEMENTS WITH NO" +PRINT "LINE-NUMBERS." +PRINT +PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +PRINT +PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +PRINT " BY THE PROCESSOR, OR" +PRINT +PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +PRINT +PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL" +PRINT "FOR DETAILED CRITERIA." +PRINT +PRINT " BEGIN TEST." +PRINT +PRINT "IF THIS PROGRAM GENERATED ANY OUTPUT, THEN THE" +PRINT "PROCESSOR HAS EXECUTED STATEMENTS WITH NO LINE-NUMBERS." +PRINT +PRINT " END TEST." +PRINT +PRINT "END PROGRAM 201" +END diff --git a/NBS2/P201.OUT b/NBS2/P201.OUT new file mode 100644 index 0000000..c66679d --- /dev/null +++ b/NBS2/P201.OUT @@ -0,0 +1,29 @@ +PROGRAM FILE 201: ERROR - STATEMENTS WITHOUT LINE-NUMBERS. + ANSI STANDARD 4.2, 4.4 + +SECTION 201.1: ERROR - STATEMENTS WITHOUT LINE-NUMBERS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING STATEMENTS WITH NO +LINE-NUMBERS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF THIS PROGRAM GENERATED ANY OUTPUT, THEN THE +PROCESSOR HAS EXECUTED STATEMENTS WITH NO LINE-NUMBERS. + + END TEST. + +END PROGRAM 201 diff --git a/NBS2/P201.dif b/NBS2/P201.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P201.run b/NBS2/P201.run new file mode 100644 index 0000000..f18f57a --- /dev/null +++ b/NBS2/P201.run @@ -0,0 +1,29 @@ +PROGRAM FILE 201: ERROR - STATEMENTS WITHOUT LINE-NUMBERS. + ANSI STANDARD 4.2, 4.4 + +SECTION 201.1: ERROR - STATEMENTS WITHOUT LINE-NUMBERS. + +THIS PROGRAM TESTS TO SEE IF THE BASIC PROCESSOR +ACCEPTS PROGRAMS CONTAINING STATEMENTS WITH NO +LINE-NUMBERS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF THIS PROGRAM GENERATED ANY OUTPUT, THEN THE +PROCESSOR HAS EXECUTED STATEMENTS WITH NO LINE-NUMBERS. + + END TEST. + +END PROGRAM 201 diff --git a/NBS2/P202.80 b/NBS2/P202.80 new file mode 100644 index 0000000..8482460 --- /dev/null +++ b/NBS2/P202.80 @@ -0,0 +1,27 @@ +PROGRAM FILE 202: ERROR - LINES LONGER THAN 72 CHARACTERS. + ANSI STANDARD 4.4 + +SECTION 202.1: ERROR - LINES LONGER THAN 72 CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LINES LONGER THAN 72 CHARACTERS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED A STATEMENT CONTAINING 78 CHARACTERS. + + END TEST. + +END PROGRAM 202 diff --git a/NBS2/P202.BAS b/NBS2/P202.BAS new file mode 100644 index 0000000..4adad04 --- /dev/null +++ b/NBS2/P202.BAS @@ -0,0 +1,29 @@ +10 PRINT "PROGRAM FILE 202: ERROR - LINES LONGER THAN 72 CHARACTERS." +20 PRINT " ANSI STANDARD 4.4" +30 PRINT +40 PRINT "SECTION 202.1: ERROR - LINES LONGER THAN 72 CHARACTERS." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +70 PRINT "CONTAINING LINES LONGER THAN 72 CHARACTERS." +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT " BEGIN TEST." +220 PRINT +230 PRINT "THE PROCESSOR HAS EXECUTED A STATEMENT CONTAINING"; 9999 -9921; +235 PRINT "CHARACTERS." +240 PRINT +250 PRINT " END TEST." +260 PRINT +270 PRINT "END PROGRAM 202" +280 END diff --git a/NBS2/P202.OUT b/NBS2/P202.OUT new file mode 100644 index 0000000..a94fecf --- /dev/null +++ b/NBS2/P202.OUT @@ -0,0 +1,27 @@ +PROGRAM FILE 202: ERROR - LINES LONGER THAN 72 CHARACTERS. + ANSI STANDARD 4.4 + +SECTION 202.1: ERROR - LINES LONGER THAN 72 CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LINES LONGER THAN 72 CHARACTERS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED A STATEMENT CONTAINING 78 CHARACTERS. + + END TEST. + +END PROGRAM 202 diff --git a/NBS2/P202.dif b/NBS2/P202.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P202.run b/NBS2/P202.run new file mode 100644 index 0000000..8482460 --- /dev/null +++ b/NBS2/P202.run @@ -0,0 +1,27 @@ +PROGRAM FILE 202: ERROR - LINES LONGER THAN 72 CHARACTERS. + ANSI STANDARD 4.4 + +SECTION 202.1: ERROR - LINES LONGER THAN 72 CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LINES LONGER THAN 72 CHARACTERS. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAM USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +THE PROCESSOR HAS EXECUTED A STATEMENT CONTAINING 78 CHARACTERS. + + END TEST. + +END PROGRAM 202 diff --git a/NBS2/P203.80 b/NBS2/P203.80 new file mode 100644 index 0000000..7d3e33f --- /dev/null +++ b/NBS2/P203.80 @@ -0,0 +1,176 @@ +PROGRAM FILE 203: EFFECT OF ZONES AND MARGIN ON PRINT. + ANSI STANDARD 12.4, 12.2 + +THIS TEST IS CONCERNED WITH THE VARIOUS RULES GOVERNING THE +INTERACTION OF ZONE-WIDTH, MARGIN-WIDTH, COLUMNAR POSITION, +AND PRINT-SEPARATORS AS DESCRIBED IN THE STANDARD. + +PLEASE ENTER ZONE-WIDTH FOR THIS IMPLEMENTATION. +? 15 +PLEASE ENTER MARGIN FOR THIS IMPLEMENTATION. +? 80 +PLEASE ENTER NUMBER OF PRINT ZONES ON A LINE. +? 6 + +THROUGHOUT THESE TESTS, PAIRS OF OUTPUTS WILL BE PRINTED. +THE FIRST OF WHICH IS GENERATED ACCORDING TO THE INFORMATION +JUST SUPPLIED, AND THE SECOND OF WHICH REPRESENTS THE +FEATURE BEING TESTED. THESE TWO OUTPUTS MUST BE IDENTICAL +FOR THE TEST TO PASS. + +SECTION 203.1: COMMA ADVANCES COLUMNAR POSITION TO NEXT + PRINT-ZONE. + + BEGIN TEST. + +COMMA ADVANCED TO THE BEGINNING OF EACH OF THE 6 PRINT ZONES: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +A A A A A B +A A A A A B + +PRINT-STATEMENT CONTAINING ONLY A COMMA ADVANCES TO NEXT PRINT-ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +C D +C D + +IF COLUMNAR POSITION IS THE LAST POSITION IN A ZONE, +A COMMA ADVANCES ONE SPACE TO THE NEXT ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + E F + E F + +IF COLUMNAR POSITION IS THE FIRST POSITION IN A ZONE, +A COMMA ADVANCES ONE FULL ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 4 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + G H + G H + +LEADING COMMAS IN A PRINT-STATEMENT SKIP PRINT-ZONES: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 5 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + I + I + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +SECTION 203.2: INTERACTION OF TAB AND MARGIN. + + BEGIN TEST. + + +TABBING TO A POSITION < COLUMNAR POSITION FORCES A NEW LINE: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + A + B + A + B + +TABBING TO A POSITION >= COLUMNAR POSITION DOES NOT +FORCE A NEW LINE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + CD + CD + +TABBING TO A POSITION, N > MARGIN, M, CAUSES TAB TO +N - M*INT((N-1)/M): + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + E + E + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +SECTION 203.3: MARGIN OVERFLOW. + + BEGIN TEST. + +IF A PRINT-ITEM DOESN'T FIT IN REMAINDER OF CURRENT LINE, +IT FORCES A NEW LINE BEFORE PRINTING: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + A +BC + A +BC + +FULL LENGTH OF MARGIN IS USED BEFORE FORCING NEW LINE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + DE +F + DE +F + +FILL RIGHTMOST POSITION OF LAST ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + G + G + +IF COLUMNAR POSITION IS IN LAST ZONE, A COMMA FORCES A NEW LINE: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 4 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +H +I +H +I + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 203 + +Program interrupted at line 1990 diff --git a/NBS2/P203.BAS b/NBS2/P203.BAS new file mode 100644 index 0000000..9ac344e --- /dev/null +++ b/NBS2/P203.BAS @@ -0,0 +1,234 @@ +10 PRINT "PROGRAM FILE 203: EFFECT OF ZONES AND MARGIN ON PRINT." +20 PRINT " ANSI STANDARD 12.4, 12.2" +30 PRINT +40 PRINT "THIS TEST IS CONCERNED WITH THE VARIOUS RULES GOVERNING THE" +50 PRINT "INTERACTION OF ZONE-WIDTH, MARGIN-WIDTH, COLUMNAR POSITION," +60 PRINT "AND PRINT-SEPARATORS AS DESCRIBED IN THE STANDARD." +70 PRINT +80 PRINT "PLEASE ENTER ZONE-WIDTH FOR THIS IMPLEMENTATION." +90 INPUT Z +100 IF Z=INT(Z) THEN 130 +110 PRINT "MUST BE AN INTEGER." +120 GOTO 80 +130 IF Z>=14 THEN 160 +140 PRINT "ZONE-WIDTH MUST BE >=14." +150 GOTO 80 +160 PRINT "PLEASE ENTER MARGIN FOR THIS IMPLEMENTATION." +170 INPUT M +180 IF M=INT(M) THEN 210 +190 PRINT "MUST BE AN INTEGER." +200 GOTO 160 +210 IF M>=Z THEN 235 +220 PRINT "MARGIN MUST BE >= ZONE-WIDTH." +230 GOTO 160 +235 PRINT "PLEASE ENTER NUMBER OF PRINT ZONES ON A LINE." +240 INPUT Z9 +245 IF Z9=INT(Z9) THEN 260 +250 PRINT "MUST BE AN INTEGER." +255 GOTO 235 +260 IF Z9 <= ((M-1/Z) + 1) THEN 275 +265 PRINT "NUMBER OF ZONES TOO LARGE FOR MARGIN AND ZONE-WIDTH." +270 GOTO 80 +275 REM LENGTH OF LAST ZONE +280 LET Z8=M-(Z*(Z9-1)) +290 PRINT +300 PRINT "THROUGHOUT THESE TESTS, PAIRS OF OUTPUTS WILL BE PRINTED." +310 PRINT "THE FIRST OF WHICH IS GENERATED ACCORDING TO THE INFORMATION" +320 PRINT "JUST SUPPLIED, AND THE SECOND OF WHICH REPRESENTS THE " +330 PRINT "FEATURE BEING TESTED. THESE TWO OUTPUTS MUST BE IDENTICAL" +340 PRINT "FOR THE TEST TO PASS." +350 PRINT +360 LET C=0 +370 PRINT "SECTION 203.1: COMMA ADVANCES COLUMNAR POSITION TO NEXT" +380 PRINT " PRINT-ZONE." +390 PRINT +400 PRINT " BEGIN TEST." +403 PRINT +405 PRINT "COMMA ADVANCED TO THE BEGINNING OF EACH OF THE ";Z9; +407 PRINT " PRINT ZONES:" +410 GOSUB 2000 +420 LET T=Z-1 +430 FOR I9=1 TO Z9-1 +440 PRINT "A"; +450 GOSUB 2100 +460 NEXT I9 +470 PRINT "B" +480 FOR I=1 TO Z9-1 +490 PRINT "A", +500 NEXT I +510 PRINT "B" +512 PRINT +515 PRINT "PRINT-STATEMENT CONTAINING ONLY A COMMA ADVANCES TO NEXT "; +517 PRINT "PRINT-ZONE:" +520 GOSUB 2000 +530 PRINT "C"; +540 LET T=Z+Z-1 +550 GOSUB 2100 +560 PRINT "D" +570 PRINT "C", +580 PRINT , +590 PRINT "D" +592 PRINT +595 PRINT "IF COLUMNAR POSITION IS THE LAST POSITION IN A ZONE, " +597 PRINT "A COMMA ADVANCES ONE SPACE TO THE NEXT ZONE:" +600 GOSUB 2000 +610 LET T=Z-2 +620 GOSUB 2100 +630 PRINT "E F" +640 GOSUB 2100 +650 PRINT "E","F" +652 PRINT +655 PRINT "IF COLUMNAR POSITION IS THE FIRST POSITION IN A ZONE," +657 PRINT "A COMMA ADVANCES ONE FULL ZONE:" +660 GOSUB 2000 +670 LET T=Z-1 +680 GOSUB 2100 +690 PRINT "G"; +700 LET T=Z +710 GOSUB 2100 +720 PRINT "H" +730 LET T=Z-1 +740 GOSUB 2100 +750 PRINT "G","H" +752 PRINT +755 PRINT "LEADING COMMAS IN A PRINT-STATEMENT SKIP PRINT-ZONES:" +760 GOSUB 2000 +770 LET T=Z+Z +780 GOSUB 2100 +790 PRINT "I" +800 PRINT ,,"I" +810 GOSUB 3000 +820 PRINT "SECTION 203.2: INTERACTION OF TAB AND MARGIN." +830 PRINT +840 PRINT " BEGIN TEST." +850 LET C=0 +860 PRINT +862 PRINT +865 PRINT "TABBING TO A POSITION < COLUMNAR POSITION FORCES A NEW LINE:" +870 GOSUB 2200 +880 PRINT " A" +890 PRINT " B" +900 PRINT TAB(5);"A";TAB(5);"B" +902 PRINT +905 PRINT "TABBING TO A POSITION >= COLUMNAR POSITION DOES NOT" +909 PRINT "FORCE A NEW LINE:" +910 GOSUB 2000 +920 PRINT " CD" +930 PRINT TAB(5);"C";TAB(6);"D" +932 PRINT +935 PRINT "TABBING TO A POSITION, N > MARGIN, M, CAUSES TAB TO" +937 PRINT "N - M*INT((N-1)/M):" +940 GOSUB 2000 +950 PRINT " E" +960 PRINT TAB(M+M+M+3);"E" +970 GOSUB 3000 +980 PRINT "SECTION 203.3: MARGIN OVERFLOW." +990 PRINT +1000 PRINT " BEGIN TEST." +1010 LET C=0 +1012 PRINT +1015 PRINT "IF A PRINT-ITEM DOESN'T FIT IN REMAINDER OF CURRENT LINE," +1017 PRINT "IT FORCES A NEW LINE BEFORE PRINTING:" +1020 GOSUB 2200 +1030 LET T=M-2 +1040 GOSUB 2100 +1050 PRINT "A" +1060 PRINT "BC" +1065 GOSUB 2100 +1070 PRINT "A"; +1075 PRINT "BC" +1076 PRINT +1077 PRINT "FULL LENGTH OF MARGIN IS USED BEFORE FORCING NEW LINE:" +1080 GOSUB 2000 +1090 GOSUB 2100 +1100 PRINT "DE" +1105 PRINT "F" +1110 GOSUB 2100 +1112 PRINT "D";"E"; +1117 PRINT "F" +1118 PRINT +1119 PRINT "FILL RIGHTMOST POSITION OF LAST ZONE:" +1120 GOSUB 2000 +1130 LET T=M-1 +1140 GOSUB 2100 +1150 PRINT "G" +1160 FOR I1=1 TO Z9-1 +1170 PRINT , +1180 NEXT I1 +1190 LET T=Z8-1 +1200 GOSUB 2100 +1210 PRINT "G" +1212 PRINT +1215 PRINT "IF COLUMNAR POSITION IS IN LAST ZONE, A COMMA FORCES "; +1218 PRINT "A NEW LINE:" +1220 GOSUB 2200 +1230 PRINT "H" +1240 PRINT "I" +1250 PRINT "H"; +1260 FOR I1=1 TO Z9-2 +1270 PRINT , +1280 NEXT I1 +1290 PRINT ,,"I" +1300 GOSUB 3000 +1980 PRINT "END PROGRAM 203" +1990 STOP +2000 REM SUBROUTINE TO HEAD LINE-PAIRS +2010 LET C=C+1 +2040 PRINT +2050 PRINT "THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE" +2060 PRINT "IDENTICAL, CASE #";C +2070 GOSUB 2300 +2080 RETURN +2100 REM SUBROUTINE TO PRINT T SPACES +2110 FOR I=1 TO T +2120 PRINT " "; +2130 NEXT I +2140 RETURN +2200 REM SUBROUTINE TO HEAD PAIRS OF SETS OF LINES +2210 LET C=C+1 +2240 PRINT +2250 PRINT "THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS" +2260 PRINT "SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE #";C +2270 GOSUB 2300 +2280 RETURN +2300 REM SUBROUTINE TO PRINT COLUMN NUMBERS +2310 PRINT "000000000111111111122222222223333333333"; +2320 IF M<60 THEN 2420 +2330 PRINT "44444444445555555555"; +2340 IF M<72 THEN 2420 +2350 PRINT "666666666677"; +2353 IF M<80 THEN 2420 +2355 PRINT "77777777"; +2360 IF M<100 THEN 2420 +2370 PRINT "88888888889999999999"; +2380 IF M<120 THEN 2420 +2390 PRINT "00000000001111111111"; +2400 IF M<132 THEN 2420 +2410 PRINT "222222222233"; +2420 PRINT +2430 LET A$="0123456789" +2440 PRINT "123456789";A$;A$;A$; +2450 IF M<60 THEN 2550 +2460 PRINT A$;A$; +2470 IF M<72 THEN 2550 +2480 PRINT A$;"01"; +2483 IF M<80 THEN 2550 +2485 PRINT "23456789"; +2490 IF M<100 THEN 2550 +2500 PRINT A$;A$; +2510 IF M<120 THEN 2550 +2520 PRINT A$;A$; +2530 IF M<132 THEN 2550 +2540 PRINT A$;"01"; +2550 PRINT +2560 RETURN +3000 REM SUBROUTINE TO END SECTION +3010 PRINT +3020 PRINT "IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN " +3030 PRINT "*** TEST PASSED ***" +3040 PRINT +3050 PRINT " END TEST." +3060 PRINT +3070 PRINT +3080 RETURN +5000 END diff --git a/NBS2/P203.INP b/NBS2/P203.INP new file mode 100644 index 0000000..c4e304e --- /dev/null +++ b/NBS2/P203.INP @@ -0,0 +1,3 @@ +15 +80 +6 diff --git a/NBS2/P203.OUT b/NBS2/P203.OUT new file mode 100644 index 0000000..4dc7343 --- /dev/null +++ b/NBS2/P203.OUT @@ -0,0 +1,176 @@ +PROGRAM FILE 203: EFFECT OF ZONES AND MARGIN ON PRINT. + ANSI STANDARD 12.4, 12.2 + +THIS TEST IS CONCERNED WITH THE VARIOUS RULES GOVERNING THE +INTERACTION OF ZONE-WIDTH, MARGIN-WIDTH, COLUMNAR POSITION, +AND PRINT-SEPARATORS AS DESCRIBED IN THE STANDARD. + +PLEASE ENTER ZONE-WIDTH FOR THIS IMPLEMENTATION. +? 15 +PLEASE ENTER MARGIN FOR THIS IMPLEMENTATION. +? 80 +PLEASE ENTER NUMBER OF PRINT ZONES ON A LINE. +? 6 + +THROUGHOUT THESE TESTS, PAIRS OF OUTPUTS WILL BE PRINTED. +THE FIRST OF WHICH IS GENERATED ACCORDING TO THE INFORMATION +JUST SUPPLIED, AND THE SECOND OF WHICH REPRESENTS THE +FEATURE BEING TESTED. THESE TWO OUTPUTS MUST BE IDENTICAL +FOR THE TEST TO PASS. + +SECTION 203.1: COMMA ADVANCES COLUMNAR POSITION TO NEXT + PRINT-ZONE. + + BEGIN TEST. + +COMMA ADVANCED TO THE BEGINNING OF EACH OF THE 6 PRINT ZONES: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +A A A A A B +A A A A A B + +PRINT-STATEMENT CONTAINING ONLY A COMMA ADVANCES TO NEXT PRINT-ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +C D +C D + +IF COLUMNAR POSITION IS THE LAST POSITION IN A ZONE, +A COMMA ADVANCES ONE SPACE TO THE NEXT ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + E F + E F + +IF COLUMNAR POSITION IS THE FIRST POSITION IN A ZONE, +A COMMA ADVANCES ONE FULL ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 4 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + G H + G H + +LEADING COMMAS IN A PRINT-STATEMENT SKIP PRINT-ZONES: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 5 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + I + I + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +SECTION 203.2: INTERACTION OF TAB AND MARGIN. + + BEGIN TEST. + + +TABBING TO A POSITION < COLUMNAR POSITION FORCES A NEW LINE: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + A + B + A + B + +TABBING TO A POSITION >= COLUMNAR POSITION DOES NOT +FORCE A NEW LINE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + CD + CD + +TABBING TO A POSITION, N > MARGIN, M, CAUSES TAB TO +N - M*INT((N-1)/M): + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + E + E + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +SECTION 203.3: MARGIN OVERFLOW. + + BEGIN TEST. + +IF A PRINT-ITEM DOESN'T FIT IN REMAINDER OF CURRENT LINE, +IT FORCES A NEW LINE BEFORE PRINTING: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + A +BC + A +BC + +FULL LENGTH OF MARGIN IS USED BEFORE FORCING NEW LINE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + DE +F + DE +F + +FILL RIGHTMOST POSITION OF LAST ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + G + G + +IF COLUMNAR POSITION IS IN LAST ZONE, A COMMA FORCES A NEW LINE: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 4 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +H +I +H +I + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 203 + +Program interrupted at line 1990 diff --git a/NBS2/P203.dif b/NBS2/P203.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P203.in b/NBS2/P203.in new file mode 100644 index 0000000..9d60166 --- /dev/null +++ b/NBS2/P203.in @@ -0,0 +1,3 @@ +15 +80 +5 diff --git a/NBS2/P203.run b/NBS2/P203.run new file mode 100644 index 0000000..7d3e33f --- /dev/null +++ b/NBS2/P203.run @@ -0,0 +1,176 @@ +PROGRAM FILE 203: EFFECT OF ZONES AND MARGIN ON PRINT. + ANSI STANDARD 12.4, 12.2 + +THIS TEST IS CONCERNED WITH THE VARIOUS RULES GOVERNING THE +INTERACTION OF ZONE-WIDTH, MARGIN-WIDTH, COLUMNAR POSITION, +AND PRINT-SEPARATORS AS DESCRIBED IN THE STANDARD. + +PLEASE ENTER ZONE-WIDTH FOR THIS IMPLEMENTATION. +? 15 +PLEASE ENTER MARGIN FOR THIS IMPLEMENTATION. +? 80 +PLEASE ENTER NUMBER OF PRINT ZONES ON A LINE. +? 6 + +THROUGHOUT THESE TESTS, PAIRS OF OUTPUTS WILL BE PRINTED. +THE FIRST OF WHICH IS GENERATED ACCORDING TO THE INFORMATION +JUST SUPPLIED, AND THE SECOND OF WHICH REPRESENTS THE +FEATURE BEING TESTED. THESE TWO OUTPUTS MUST BE IDENTICAL +FOR THE TEST TO PASS. + +SECTION 203.1: COMMA ADVANCES COLUMNAR POSITION TO NEXT + PRINT-ZONE. + + BEGIN TEST. + +COMMA ADVANCED TO THE BEGINNING OF EACH OF THE 6 PRINT ZONES: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +A A A A A B +A A A A A B + +PRINT-STATEMENT CONTAINING ONLY A COMMA ADVANCES TO NEXT PRINT-ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +C D +C D + +IF COLUMNAR POSITION IS THE LAST POSITION IN A ZONE, +A COMMA ADVANCES ONE SPACE TO THE NEXT ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + E F + E F + +IF COLUMNAR POSITION IS THE FIRST POSITION IN A ZONE, +A COMMA ADVANCES ONE FULL ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 4 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + G H + G H + +LEADING COMMAS IN A PRINT-STATEMENT SKIP PRINT-ZONES: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 5 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + I + I + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +SECTION 203.2: INTERACTION OF TAB AND MARGIN. + + BEGIN TEST. + + +TABBING TO A POSITION < COLUMNAR POSITION FORCES A NEW LINE: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + A + B + A + B + +TABBING TO A POSITION >= COLUMNAR POSITION DOES NOT +FORCE A NEW LINE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + CD + CD + +TABBING TO A POSITION, N > MARGIN, M, CAUSES TAB TO +N - M*INT((N-1)/M): + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + E + E + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +SECTION 203.3: MARGIN OVERFLOW. + + BEGIN TEST. + +IF A PRINT-ITEM DOESN'T FIT IN REMAINDER OF CURRENT LINE, +IT FORCES A NEW LINE BEFORE PRINTING: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 1 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + A +BC + A +BC + +FULL LENGTH OF MARGIN IS USED BEFORE FORCING NEW LINE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 2 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + DE +F + DE +F + +FILL RIGHTMOST POSITION OF LAST ZONE: + +THE TWO LINES FOLLOWING THE COLUMN NUMBERS SHOULD BE +IDENTICAL, CASE # 3 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 + G + G + +IF COLUMNAR POSITION IS IN LAST ZONE, A COMMA FORCES A NEW LINE: + +THE FIRST TWO LINES (1 & 2) FOLLOWING THE COLUMN NUMBERS +SHOULD BE IDENTICAL TO THE NEXT TWO (3 & 4), CASE # 4 +0000000001111111111222222222233333333334444444444555555555566666666667777777777 +1234567890123456789012345678901234567890123456789012345678901234567890123456789 +H +I +H +I + +IF ALL THE ABOVE PAIRS ARE IDENTICAL, THEN +*** TEST PASSED *** + + END TEST. + + +END PROGRAM 203 + +Program interrupted at line 1990 diff --git a/NBS2/P204.80 b/NBS2/P204.80 new file mode 100644 index 0000000..da882ea --- /dev/null +++ b/NBS2/P204.80 @@ -0,0 +1,35 @@ +PROGRAM FILE 204: ERROR - PRINT-STATEMENTS CONTAINING + LOWERCASE CHARACTERS. + ANSI STANDARD 3.2, 3.4, 12.2 + +SECTION 204.1: ERROR - PRINT-STATEMENTS CONTAINING + LOWERCASE CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LOWER CASE CHARACTERS IN A PRINT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + +1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + +2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF A BLANK LINE IMMEDIATELY PRECEDES THIS SENTENCE, THEN +THE PROCESSOR EXECUTED A PRINT STATEMENT IN WHICH THE +WORD 'PRINT' APPEARS IN LOWERCASE LETTERS. + + +this sentence is generated by a quoted-string print-item +containing lower-case characters. + + END TEST. + +END PROGRAM 204 diff --git a/NBS2/P204.BAS b/NBS2/P204.BAS new file mode 100644 index 0000000..4101891 --- /dev/null +++ b/NBS2/P204.BAS @@ -0,0 +1,36 @@ +10 PRINT "PROGRAM FILE 204: ERROR - PRINT-STATEMENTS CONTAINING" +15 PRINT " LOWERCASE CHARACTERS." +20 PRINT " ANSI STANDARD 3.2, 3.4, 12.2" +30 PRINT +40 PRINT "SECTION 204.1: ERROR - PRINT-STATEMENTS CONTAINING" +45 PRINT " LOWERCASE CHARACTERS." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +70 PRINT "CONTAINING LOWER CASE CHARACTERS IN A PRINT-STATEMENT." +80 PRINT +90 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +100 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +110 PRINT +120 PRINT "1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +130 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +140 PRINT " BY THE PROCESSOR, OR" +150 PRINT +160 PRINT "2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +170 PRINT +180 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +190 PRINT "FOR DETAILED CRITERIA." +200 PRINT +210 PRINT " BEGIN TEST." +220 print +230 PRINT "IF A BLANK LINE IMMEDIATELY PRECEDES THIS SENTENCE, THEN" +240 PRINT "THE PROCESSOR EXECUTED A PRINT STATEMENT IN WHICH THE" +250 PRINT "WORD 'PRINT' APPEARS IN LOWERCASE LETTERS." +260 PRINT +270 PRINT +280 PRINT "this sentence is generated by a quoted-string print-item" +290 PRINT "containing lower-case characters." +320 PRINT +330 PRINT " END TEST." +340 PRINT +350 PRINT "END PROGRAM 204" +360 END diff --git a/NBS2/P204.OUT b/NBS2/P204.OUT new file mode 100644 index 0000000..3160811 --- /dev/null +++ b/NBS2/P204.OUT @@ -0,0 +1,35 @@ +PROGRAM FILE 204: ERROR - PRINT-STATEMENTS CONTAINING + LOWERCASE CHARACTERS. + ANSI STANDARD 3.2, 3.4, 12.2 + +SECTION 204.1: ERROR - PRINT-STATEMENTS CONTAINING + LOWERCASE CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LOWER CASE CHARACTERS IN A PRINT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + +1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + +2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF A BLANK LINE IMMEDIATELY PRECEDES THIS SENTENCE, THEN +THE PROCESSOR EXECUTED A PRINT STATEMENT IN WHICH THE +WORD 'PRINT' APPEARS IN LOWERCASE LETTERS. + + +this sentence is generated by a quoted-string print-item +containing lower-case characters. + + END TEST. + +END PROGRAM 204 diff --git a/NBS2/P204.dif b/NBS2/P204.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P204.run b/NBS2/P204.run new file mode 100644 index 0000000..da882ea --- /dev/null +++ b/NBS2/P204.run @@ -0,0 +1,35 @@ +PROGRAM FILE 204: ERROR - PRINT-STATEMENTS CONTAINING + LOWERCASE CHARACTERS. + ANSI STANDARD 3.2, 3.4, 12.2 + +SECTION 204.1: ERROR - PRINT-STATEMENTS CONTAINING + LOWERCASE CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LOWER CASE CHARACTERS IN A PRINT-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + +1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + +2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +IF A BLANK LINE IMMEDIATELY PRECEDES THIS SENTENCE, THEN +THE PROCESSOR EXECUTED A PRINT STATEMENT IN WHICH THE +WORD 'PRINT' APPEARS IN LOWERCASE LETTERS. + + +this sentence is generated by a quoted-string print-item +containing lower-case characters. + + END TEST. + +END PROGRAM 204 diff --git a/NBS2/P205.80 b/NBS2/P205.80 new file mode 100644 index 0000000..5fb8940 --- /dev/null +++ b/NBS2/P205.80 @@ -0,0 +1,33 @@ +PROGRAM FILE 205: ERROR - ASSIGNED STRING CONTAINING + LOWERCASE CHARACTERS. + ANSI STANDARD 3.2, 3.4, 9.2 + +SECTION 205.1: ERROR - ASSIGNED STRING CONTAINING + LOWERCASE CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LOWERCASE CHARACTERS IN THE QUOTED STRING OF A +LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +AN ASSIGNMENT STATEMENT HAS ATTEMPTED TO ASSOCIATE A STRING +CONSISTING OF THE FIRST 18 CHARACTERS OF THE ALPHABET, (A-R) +IN LOWERCASE, WITH A$. +A$=abcdefghijklmnopqr + + END TEST. + +END PROGRAM 205 diff --git a/NBS2/P205.BAS b/NBS2/P205.BAS new file mode 100644 index 0000000..2a30ccb --- /dev/null +++ b/NBS2/P205.BAS @@ -0,0 +1,35 @@ +10 PRINT "PROGRAM FILE 205: ERROR - ASSIGNED STRING CONTAINING" +15 PRINT " LOWERCASE CHARACTERS." +20 PRINT " ANSI STANDARD 3.2, 3.4, 9.2" +30 PRINT +40 PRINT "SECTION 205.1: ERROR - ASSIGNED STRING CONTAINING" +45 PRINT " LOWERCASE CHARACTERS." +50 PRINT +60 PRINT "THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS" +70 PRINT "CONTAINING LOWERCASE CHARACTERS IN THE QUOTED STRING OF A" +80 PRINT "LET-STATEMENT." +90 PRINT +100 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +110 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +120 PRINT +130 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +140 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +150 PRINT " BY THE PROCESSOR, OR" +160 PRINT +170 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +180 PRINT +190 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +200 PRINT "FOR DETAILED CRITERIA." +210 PRINT +220 PRINT " BEGIN TEST." +230 PRINT +240 LET A$="abcdefghijklmnopqr" +250 PRINT "AN ASSIGNMENT STATEMENT HAS ATTEMPTED TO ASSOCIATE A STRING" +260 PRINT "CONSISTING OF THE FIRST 18 CHARACTERS OF THE ALPHABET, (A-R)" +270 PRINT "IN LOWERCASE, WITH A$." +290 PRINT "A$=";A$ +300 PRINT +310 PRINT " END TEST." +320 PRINT +330 PRINT "END PROGRAM 205" +340 END diff --git a/NBS2/P205.OUT b/NBS2/P205.OUT new file mode 100644 index 0000000..63a5cf9 --- /dev/null +++ b/NBS2/P205.OUT @@ -0,0 +1,33 @@ +PROGRAM FILE 205: ERROR - ASSIGNED STRING CONTAINING + LOWERCASE CHARACTERS. + ANSI STANDARD 3.2, 3.4, 9.2 + +SECTION 205.1: ERROR - ASSIGNED STRING CONTAINING + LOWERCASE CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LOWERCASE CHARACTERS IN THE QUOTED STRING OF A +LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +AN ASSIGNMENT STATEMENT HAS ATTEMPTED TO ASSOCIATE A STRING +CONSISTING OF THE FIRST 18 CHARACTERS OF THE ALPHABET, (A-R) +IN LOWERCASE, WITH A$. +A$=abcdefghijklmnopqr + + END TEST. + +END PROGRAM 205 diff --git a/NBS2/P205.dif b/NBS2/P205.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P205.run b/NBS2/P205.run new file mode 100644 index 0000000..5fb8940 --- /dev/null +++ b/NBS2/P205.run @@ -0,0 +1,33 @@ +PROGRAM FILE 205: ERROR - ASSIGNED STRING CONTAINING + LOWERCASE CHARACTERS. + ANSI STANDARD 3.2, 3.4, 9.2 + +SECTION 205.1: ERROR - ASSIGNED STRING CONTAINING + LOWERCASE CHARACTERS. + +THIS PROGRAM TESTS TO SEE IF THE PROCESSOR ACCEPTS PROGRAMS +CONTAINING LOWERCASE CHARACTERS IN THE QUOTED STRING OF A +LET-STATEMENT. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +AN ASSIGNMENT STATEMENT HAS ATTEMPTED TO ASSOCIATE A STRING +CONSISTING OF THE FIRST 18 CHARACTERS OF THE ALPHABET, (A-R) +IN LOWERCASE, WITH A$. +A$=abcdefghijklmnopqr + + END TEST. + +END PROGRAM 205 diff --git a/NBS2/P206.80 b/NBS2/P206.80 new file mode 100644 index 0000000..dc4193b --- /dev/null +++ b/NBS2/P206.80 @@ -0,0 +1,71 @@ +PROGRAM FILE 206: ERROR - ORDERING RELATIONS BETWEEN STRINGS. + ANSI STANDARD 3.2, 3.4, 3.6, 10.2 + +THIS PROGRAM TESTS WHETHER, AS AN ENHANCEMENT, THE COMPARISON +OF STRINGS WITH THE '<' AND '>' RELATIONS IS ALLOWED. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + +SECTION 206.1: COLLATING SEQUENCE. + +IF THIS IMPLEMENTATION ALLOWS THE ORDERING RELATIONS, +AN INFORMATIVE SORT IS DONE TO DISPLAY THE IMPLICIT +COLLATING SEQUENCE OF THE CHARACTERS (ASSUMING THE NATURAL +INTERPRETATION IS GIVEN TO THESE RELATIONS). + + BEGIN TEST. + +COLLATING SEQUENCE OF SELECTED CHARACTERS IS: +(CHARACTERS SURROUNDED BY PERIODS) + +. .!.#.$.%.&.'.(.).*.+.,.-.../. +.1.8.9.:.;.<.=.>.?.A.M.O.Z.^._. + +IF DOCUMENTATION AGREES WITH THE ABOVE RESULTS, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 206.2: COLLATING MULTI-CHARACTER STRINGS. + +THIS SECTION DISPLAYS SOME SUGGESTIVE TEST CASES TO +SHOW HOW THIS IMPLEMENTATION HANDLES COMPARISONS OF +MULTI-CHARACTER STRINGS. ALL STRINGS SHOWN ARE DELIMITED +BY APOSTROPHES TO ENABLE THE USER TO DISTINGUISH BLANKS +FROM NULL. + + BEGIN TEST. + +'ABC' = 'ABC' +'ABC' , 'ABD' +'ABC' , 'XYZ' +'ABC' , 'ABC ' +'ABC' > ' ABC' +'ABC ' > ' ABC' +'ABC' , 'ABCD' +'ABC' > ' ' +'ABC' > '' +'' , ' ' +' ' , ' ' +' ABC' > ' ' +' ABC' > ' ' +' ABC' > ' ' + +IF DOCUMENTATION AGREES WITH ABOVE RESULTS, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 206 + +Program interrupted at line 1990 diff --git a/NBS2/P206.BAS b/NBS2/P206.BAS new file mode 100644 index 0000000..41dc9ae --- /dev/null +++ b/NBS2/P206.BAS @@ -0,0 +1,232 @@ +10 PRINT "PROGRAM FILE 206: ERROR - ORDERING RELATIONS BETWEEN STRINGS." +20 PRINT " ANSI STANDARD 3.2, 3.4, 3.6, 10.2" +30 PRINT +40 PRINT "THIS PROGRAM TESTS WHETHER, AS AN ENHANCEMENT, THE COMPARISON" +50 PRINT "OF STRINGS WITH THE '<' AND '>' RELATIONS IS ALLOWED." +60 PRINT +70 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +80 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +90 PRINT +100 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +110 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +120 PRINT " BY THE PROCESSOR, OR" +130 PRINT +140 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +150 PRINT +160 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +170 PRINT "FOR DETAILED CRITERIA." +180 PRINT +190 PRINT "SECTION 206.1: COLLATING SEQUENCE." +200 PRINT +210 PRINT "IF THIS IMPLEMENTATION ALLOWS THE ORDERING RELATIONS," +220 PRINT "AN INFORMATIVE SORT IS DONE TO DISPLAY THE IMPLICIT" +230 PRINT "COLLATING SEQUENCE OF THE CHARACTERS (ASSUMING THE NATURAL" +240 PRINT "INTERPRETATION IS GIVEN TO THESE RELATIONS)." +250 PRINT +260 PRINT " BEGIN TEST." +270 PRINT +280 PRINT "COLLATING SEQUENCE OF SELECTED CHARACTERS IS:" +290 PRINT "(CHARACTERS SURROUNDED BY PERIODS)" +300 PRINT +310 REM SORT 30 CHARACTERS, 15 AT A TIME BECAUSE OF NAME SPACE LIMITS +320 LET L=15 +330 READ W$ +340 REM THROUGHOUT, VARIABLES A$ - O$ ARE TREATED AS A STRING ARRAY, +350 REM INDEXED BY N, 1 <= N <= 15. +360 LET A$=W$ +370 REM Z$ IS HIGHEST SO FAR, H1 ITS INDEX +380 LET Z$=W$ +390 LET H1=1 +400 REM LOAD IN 1ST L, AND NOTE HIGHEST +410 FOR N=2 TO L +420 READ W$ +430 GOSUB 4000 +440 IF W$ < Z$ THEN 470 +450 LET Z$=W$ +460 LET H1=N +470 NEXT N +480 REM READ NEXT L CHARACTERS, FOR EACH, COMPARE TO HIGHEST IN TABLE. +490 REM IF THIS ONE < HIGHEST, REPLACE HIGHEST WITH IT, AND THEN +500 REM FIND NEW HIGHEST. +510 FOR I=1 TO L +520 READ W$ +530 REM IF THIS > HIGHEST, SKIP +540 IF W$ > Z$ THEN 660 +550 LET N=H1 +560 GOSUB 4000 +570 LET H1=1 +580 LET Z$ =A$ +590 REM SCAN FOR NEW HIGHEST +600 FOR N=2 TO L +610 GOSUB 3000 +620 IF W$ HIGHEST OF THE +720 REM LOWEST L CHARACTERS ALREADY SORTED. +730 FOR I=1 TO L+L +740 READ W$ +750 IF W$ > Z$ THEN 770 +760 GOTO 790 +770 GOSUB 4000 +780 LET N=N+1 +790 NEXT I +800 REM SORT THE HIGH L CHARACTERS. +810 GOSUB 2000 +812 PRINT +815 PRINT "IF DOCUMENTATION AGREES WITH THE ABOVE RESULTS, THEN" +818 PRINT "*** TEST PASSED ***" +820 PRINT +830 PRINT " END TEST." +840 PRINT +850 PRINT "SECTION 206.2: COLLATING MULTI-CHARACTER STRINGS." +860 PRINT +870 PRINT "THIS SECTION DISPLAYS SOME SUGGESTIVE TEST CASES TO" +880 PRINT "SHOW HOW THIS IMPLEMENTATION HANDLES COMPARISONS OF" +890 PRINT "MULTI-CHARACTER STRINGS. ALL STRINGS SHOWN ARE DELIMITED" +895 PRINT "BY APOSTROPHES TO ENABLE THE USER TO DISTINGUISH BLANKS" +897 PRINT "FROM NULL." +900 PRINT +903 PRINT " BEGIN TEST." +906 PRINT +910 READ A$,B$ +920 IF A$ = "999" THEN 1110 +930 LET C$ = "=" +940 IF A$=B$ THEN 1000 +950 LET C$="," +960 IF A$B$ THEN 1000 +990 LET C$="INCOMPARABLE TO" +1000 PRINT "'";A$;"' ";C$;" '";B$;"'" +1010 GOTO 910 +1110 PRINT +1120 PRINT "IF DOCUMENTATION AGREES WITH ABOVE RESULTS, THEN" +1130 PRINT "*** TEST PASSED ***" +1140 PRINT +1150 PRINT " END TEST." +1160 PRINT +1900 PRINT "END PROGRAM 206" +1990 STOP +2000 REM THIS SUBROUTINE SORTS AND PRINTS THE CHARACTERS IN A$ - O$ +2010 REM ALGORITHM IS SIMPLE EXCHANGE SORT +2020 FOR I=1 TO L-1 +2030 FOR J=I+1 TO L +2040 LET N=I +2050 GOSUB 3000 +2060 LET X$=W$ +2070 LET N=J +2080 GOSUB 3000 +2090 LET Y$=W$ +2100 IF X$ < Y$ THEN 2180 +2110 REM SWAP ITH AND JTH CHARACTERS +2120 LET N=I +2130 LET W$=Y$ +2140 GOSUB 4000 +2150 LET N=J +2160 LET W$=X$ +2170 GOSUB 4000 +2180 NEXT J +2190 NEXT I +2200 PRINT "."; +2210 FOR N=1 TO L +2220 GOSUB 3000 +2230 PRINT W$;"."; +2240 NEXT N +2250 PRINT +2260 RETURN +3000 REM SUBROUTINE TO GET NTH CHARACTER INTO W$ +3010 IF N > 7 THEN 3030 +3020 ON N GOTO 3040,3060,3080,3100,3120,3140,3160 +3030 ON N-7 GOTO 3180,3200,3220,3240,3260,3280,3300,3320 +3040 LET W$=A$ +3050 GOTO 3340 +3060 LET W$=B$ +3070 GOTO 3340 +3080 LET W$=C$ +3090 GOTO 3340 +3100 LET W$=D$ +3110 GOTO 3340 +3120 LET W$=E$ +3130 GOTO 3340 +3140 LET W$=F$ +3150 GOTO 3340 +3160 LET W$=G$ +3170 GOTO 3340 +3180 LET W$=H$ +3190 GOTO 3340 +3200 LET W$=I$ +3210 GOTO 3340 +3220 LET W$=J$ +3230 GOTO 3340 +3240 LET W$=K$ +3250 GOTO 3340 +3260 LET W$=L$ +3270 GOTO 3340 +3280 LET W$=M$ +3290 GOTO 3340 +3300 LET W$=N$ +3310 GOTO 3340 +3320 LET W$=O$ +3340 RETURN +4000 REM SUBROUTINE TO GET W$ INTO NTH CHARACTER +4010 IF N > 7 THEN 4030 +4020 ON N GOTO 4040,4060,4080,4100,4120,4140,4160 +4030 ON N-7 GOTO 4180,4200,4220,4240,4260,4280,4300,4320 +4040 LET A$=W$ +4050 GOTO 4340 +4060 LET B$=W$ +4070 GOTO 4340 +4080 LET C$=W$ +4090 GOTO 4340 +4100 LET D$=W$ +4110 GOTO 4340 +4120 LET E$=W$ +4130 GOTO 4340 +4140 LET F$=W$ +4150 GOTO 4340 +4160 LET G$=W$ +4170 GOTO 4340 +4180 LET H$=W$ +4190 GOTO 4340 +4200 LET I$=W$ +4210 GOTO 4340 +4220 LET J$=W$ +4230 GOTO 4340 +4240 LET K$=W$ +4250 GOTO 4340 +4260 LET L$=W$ +4270 GOTO 4340 +4280 LET M$=W$ +4290 GOTO 4340 +4300 LET N$=W$ +4310 GOTO 4340 +4320 LET O$=W$ +4340 RETURN +5000 DATA "A","M","Z","O","1","8" +5010 DATA "9"," ","!","#","$","%" +5020 DATA "&","'","(",")","*","+" +5030 DATA ",","-",".","/",":",";" +5040 DATA "<","=",">","?","^","_" +6000 DATA "ABC","ABC" +6005 DATA "ABC","ABD" +6010 DATA "ABC","XYZ" +6020 DATA "ABC","ABC " +6030 DATA "ABC"," ABC" +6040 DATA "ABC "," ABC" +6050 DATA "ABC","ABCD" +6060 DATA "ABC"," " +6070 DATA "ABC","" +6080 DATA ""," " +6090 DATA " "," " +6100 DATA " ABC"," " +6110 DATA " ABC"," " +6120 DATA " ABC"," " +7000 DATA "999","999" +8000 END diff --git a/NBS2/P206.OUT b/NBS2/P206.OUT new file mode 100644 index 0000000..33f90be --- /dev/null +++ b/NBS2/P206.OUT @@ -0,0 +1,71 @@ +PROGRAM FILE 206: ERROR - ORDERING RELATIONS BETWEEN STRINGS. + ANSI STANDARD 3.2, 3.4, 3.6, 10.2 + +THIS PROGRAM TESTS WHETHER, AS AN ENHANCEMENT, THE COMPARISON +OF STRINGS WITH THE '<' AND '>' RELATIONS IS ALLOWED. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + +SECTION 206.1: COLLATING SEQUENCE. + +IF THIS IMPLEMENTATION ALLOWS THE ORDERING RELATIONS, +AN INFORMATIVE SORT IS DONE TO DISPLAY THE IMPLICIT +COLLATING SEQUENCE OF THE CHARACTERS (ASSUMING THE NATURAL +INTERPRETATION IS GIVEN TO THESE RELATIONS). + + BEGIN TEST. + +COLLATING SEQUENCE OF SELECTED CHARACTERS IS: +(CHARACTERS SURROUNDED BY PERIODS) + +. .!.#.$.%.&.'.(.).*.+.,.-.../. +.1.8.9.:.;.<.=.>.?.A.M.O.Z.^._. + +IF DOCUMENTATION AGREES WITH THE ABOVE RESULTS, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 206.2: COLLATING MULTI-CHARACTER STRINGS. + +THIS SECTION DISPLAYS SOME SUGGESTIVE TEST CASES TO +SHOW HOW THIS IMPLEMENTATION HANDLES COMPARISONS OF +MULTI-CHARACTER STRINGS. ALL STRINGS SHOWN ARE DELIMITED +BY APOSTROPHES TO ENABLE THE USER TO DISTINGUISH BLANKS +FROM NULL. + + BEGIN TEST. + +'ABC' = 'ABC' +'ABC' , 'ABD' +'ABC' , 'XYZ' +'ABC' , 'ABC ' +'ABC' > ' ABC' +'ABC ' > ' ABC' +'ABC' , 'ABCD' +'ABC' > ' ' +'ABC' > '' +'' , ' ' +' ' , ' ' +' ABC' > ' ' +' ABC' > ' ' +' ABC' > ' ' + +IF DOCUMENTATION AGREES WITH ABOVE RESULTS, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 206 + +Program interrupted at line 1990 diff --git a/NBS2/P206.dif b/NBS2/P206.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P206.run b/NBS2/P206.run new file mode 100644 index 0000000..dc4193b --- /dev/null +++ b/NBS2/P206.run @@ -0,0 +1,71 @@ +PROGRAM FILE 206: ERROR - ORDERING RELATIONS BETWEEN STRINGS. + ANSI STANDARD 3.2, 3.4, 3.6, 10.2 + +THIS PROGRAM TESTS WHETHER, AS AN ENHANCEMENT, THE COMPARISON +OF STRINGS WITH THE '<' AND '>' RELATIONS IS ALLOWED. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + +SECTION 206.1: COLLATING SEQUENCE. + +IF THIS IMPLEMENTATION ALLOWS THE ORDERING RELATIONS, +AN INFORMATIVE SORT IS DONE TO DISPLAY THE IMPLICIT +COLLATING SEQUENCE OF THE CHARACTERS (ASSUMING THE NATURAL +INTERPRETATION IS GIVEN TO THESE RELATIONS). + + BEGIN TEST. + +COLLATING SEQUENCE OF SELECTED CHARACTERS IS: +(CHARACTERS SURROUNDED BY PERIODS) + +. .!.#.$.%.&.'.(.).*.+.,.-.../. +.1.8.9.:.;.<.=.>.?.A.M.O.Z.^._. + +IF DOCUMENTATION AGREES WITH THE ABOVE RESULTS, THEN +*** TEST PASSED *** + + END TEST. + +SECTION 206.2: COLLATING MULTI-CHARACTER STRINGS. + +THIS SECTION DISPLAYS SOME SUGGESTIVE TEST CASES TO +SHOW HOW THIS IMPLEMENTATION HANDLES COMPARISONS OF +MULTI-CHARACTER STRINGS. ALL STRINGS SHOWN ARE DELIMITED +BY APOSTROPHES TO ENABLE THE USER TO DISTINGUISH BLANKS +FROM NULL. + + BEGIN TEST. + +'ABC' = 'ABC' +'ABC' , 'ABD' +'ABC' , 'XYZ' +'ABC' , 'ABC ' +'ABC' > ' ABC' +'ABC ' > ' ABC' +'ABC' , 'ABCD' +'ABC' > ' ' +'ABC' > '' +'' , ' ' +' ' , ' ' +' ABC' > ' ' +' ABC' > ' ' +' ABC' > ' ' + +IF DOCUMENTATION AGREES WITH ABOVE RESULTS, THEN +*** TEST PASSED *** + + END TEST. + +END PROGRAM 206 + +Program interrupted at line 1990 diff --git a/NBS2/P207.80 b/NBS2/P207.80 new file mode 100644 index 0000000..e05948d --- /dev/null +++ b/NBS2/P207.80 @@ -0,0 +1,26 @@ +PROGRAM FILE 207: ERROR - ASSIGNMENT OF A STRING TO A + NUMERIC VARIABLE. + ANSI STANDARD 9.2 + +SECTION 207.1: ERROR - ASSIGNMENT OF A STRING TO A + NUMERIC VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=111 + +ABOUT TO EXECUTE: LET X = A$ + +ERROR in line 270: Type Mismatch diff --git a/NBS2/P207.BAS b/NBS2/P207.BAS new file mode 100644 index 0000000..2cb6082 --- /dev/null +++ b/NBS2/P207.BAS @@ -0,0 +1,34 @@ +10 PRINT "PROGRAM FILE 207: ERROR - ASSIGNMENT OF A STRING TO A" +20 PRINT " NUMERIC VARIABLE." +30 PRINT " ANSI STANDARD 9.2" +40 PRINT +50 PRINT "SECTION 207.1: ERROR - ASSIGNMENT OF A STRING TO A" +60 PRINT " NUMERIC VARIABLE." +70 PRINT +80 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +90 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +100 PRINT +110 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +120 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +130 PRINT " BY THE PROCESSOR, OR" +140 PRINT +150 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +160 PRINT +170 PRINT "SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL" +180 PRINT "FOR DETAILED CRITERIA." +190 PRINT +200 PRINT " BEGIN TEST." +210 PRINT +220 PRINT "SETTING A$='123' AND X=111" +230 PRINT +240 LET A$="123" +250 LET X=111 +260 PRINT "ABOUT TO EXECUTE: LET X = A$" +270 LET X=A$ +280 PRINT +290 PRINT "RESULTING VALUE OF X = ";X +300 PRINT +310 PRINT " END TEST." +320 PRINT +330 PRINT "END PROGRAM 207" +340 END diff --git a/NBS2/P207.OUT b/NBS2/P207.OUT new file mode 100644 index 0000000..a2be2a8 --- /dev/null +++ b/NBS2/P207.OUT @@ -0,0 +1,26 @@ +PROGRAM FILE 207: ERROR - ASSIGNMENT OF A STRING TO A + NUMERIC VARIABLE. + ANSI STANDARD 9.2 + +SECTION 207.1: ERROR - ASSIGNMENT OF A STRING TO A + NUMERIC VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=111 + +ABOUT TO EXECUTE: LET X = A$ + +ERROR in line 270: Type Mismatch diff --git a/NBS2/P207.dif b/NBS2/P207.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P207.run b/NBS2/P207.run new file mode 100644 index 0000000..e05948d --- /dev/null +++ b/NBS2/P207.run @@ -0,0 +1,26 @@ +PROGRAM FILE 207: ERROR - ASSIGNMENT OF A STRING TO A + NUMERIC VARIABLE. + ANSI STANDARD 9.2 + +SECTION 207.1: ERROR - ASSIGNMENT OF A STRING TO A + NUMERIC VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASIC TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=111 + +ABOUT TO EXECUTE: LET X = A$ + +ERROR in line 270: Type Mismatch diff --git a/NBS2/P208.80 b/NBS2/P208.80 new file mode 100644 index 0000000..ae5b225 --- /dev/null +++ b/NBS2/P208.80 @@ -0,0 +1,25 @@ +PROGRAM FILE 208: ERROR - ASSIGNMENT OF A NUMBER TO A + STRING VARIABLE. + ANSI STANDARD 9.2 + +SECTION 208.1: ERROR - ASSIGNMENT OF A NUMBER TO A + STRING VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASE TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=111 +ABOUT TO EXECUTE: LET A$ = X + +ERROR in line 270: Type Mismatch diff --git a/NBS2/P208.BAS b/NBS2/P208.BAS new file mode 100644 index 0000000..59a1684 --- /dev/null +++ b/NBS2/P208.BAS @@ -0,0 +1,33 @@ +10 PRINT "PROGRAM FILE 208: ERROR - ASSIGNMENT OF A NUMBER TO A" +20 PRINT " STRING VARIABLE." +30 PRINT " ANSI STANDARD 9.2" +40 PRINT +50 PRINT "SECTION 208.1: ERROR - ASSIGNMENT OF A NUMBER TO A" +60 PRINT " STRING VARIABLE." +70 PRINT +80 PRINT "THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC." +90 PRINT "TO PASS THIS TEST, THE PROCESSOR MUST EITHER:" +100 PRINT +110 PRINT " 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION" +120 PRINT " ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION" +130 PRINT " BY THE PROCESSOR, OR" +140 PRINT +150 PRINT " 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE" +160 PRINT +170 PRINT "SEE THE NBS MINIMAL BASE TEST PROGRAMS USER'S MANUAL" +180 PRINT "FOR DETAILED CRITERIA." +190 PRINT +200 PRINT " BEGIN TEST." +210 PRINT +220 PRINT "SETTING A$='123' AND X=111" +240 LET A$="123" +250 LET X=111 +260 PRINT "ABOUT TO EXECUTE: LET A$ = X" +270 LET A$=X +280 PRINT +290 PRINT "RESULTING VALUE OF A$ = ";A$ +300 PRINT +310 PRINT " END TEST." +320 PRINT +330 PRINT "END PROGRAM 208" +340 END diff --git a/NBS2/P208.OUT b/NBS2/P208.OUT new file mode 100644 index 0000000..750515e --- /dev/null +++ b/NBS2/P208.OUT @@ -0,0 +1,25 @@ +PROGRAM FILE 208: ERROR - ASSIGNMENT OF A NUMBER TO A + STRING VARIABLE. + ANSI STANDARD 9.2 + +SECTION 208.1: ERROR - ASSIGNMENT OF A NUMBER TO A + STRING VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASE TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=111 +ABOUT TO EXECUTE: LET A$ = X + +ERROR in line 270: Type Mismatch diff --git a/NBS2/P208.dif b/NBS2/P208.dif new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/P208.run b/NBS2/P208.run new file mode 100644 index 0000000..ae5b225 --- /dev/null +++ b/NBS2/P208.run @@ -0,0 +1,25 @@ +PROGRAM FILE 208: ERROR - ASSIGNMENT OF A NUMBER TO A + STRING VARIABLE. + ANSI STANDARD 9.2 + +SECTION 208.1: ERROR - ASSIGNMENT OF A NUMBER TO A + STRING VARIABLE. + +THIS IS A TEST FOR A NON-STANDARD FEATURE OF MINIMAL BASIC. +TO PASS THIS TEST, THE PROCESSOR MUST EITHER: + + 1) ACCEPT THE PROGRAM AND BE ACCOMPANIED BY DOCUMENTATION + ACCURATELY DESCRIBING THE FEATURE'S INTERPRETATION + BY THE PROCESSOR, OR + + 2) REJECT THE PROGRAM WITH AN APPROPRIATE ERROR MESSAGE + +SEE THE NBS MINIMAL BASE TEST PROGRAMS USER'S MANUAL +FOR DETAILED CRITERIA. + + BEGIN TEST. + +SETTING A$='123' AND X=111 +ABOUT TO EXECUTE: LET A$ = X + +ERROR in line 270: Type Mismatch diff --git a/NBS2/PAD80.BAS b/NBS2/PAD80.BAS new file mode 100644 index 0000000..f08eb98 --- /dev/null +++ b/NBS2/PAD80.BAS @@ -0,0 +1,43 @@ +010 OPTION VERSION BYWATER +020 OPTION BUGS OFF +100 REM PAD80.BAS +101 REM Pad the test output to 80 characters. +102 REM bwbasic P001.BAS > P001.OUT +103 REM echo "500 DATA P001.OUT, P001.80" > PAD80.INP +104 REM bwbasic PAD80.BAS +105 REM diff P001.run P001.80 +109 REM ---------------------------------------------------------- +120 REM GET FILE NAME INTO A$ +125 DELETE 500 +126 MERGE "PAD80.INP" +127 RESTORE 500 +130 READ A$ +135 REM PRINT "SOURCE:"; A$ +140 READ B$ +145 REM PRINT "TARGET:"; B$ +300 REM ---------------------------------------------------------- +301 REM PROCESS FILENAME IN A$ +302 REM ---------------------------------------------------------- +310 OPEN A$ FOR INPUT AS #2 +315 OPEN B$ FOR OUTPUT AS #3 +320 REM PRINT "PROCESS TEXT LINE" +330 IF EOF( 2 ) THEN 390 +335 REM PRINT "NOT EOF" +340 LINE INPUT #2, C$ +345 REM PRINT "C$=";C$ +350 C$ = LEFT$( C$ + SPACE$( 80 ), 80 ) +355 REM PRINT "yyy" +360 REM WRITE OUTPUT LINE +370 PRINT #3, C$ +375 REM PRINT "zzz" +380 GOTO 320 +390 REM CLOSE FILES +400 CLOSE #3 +410 CLOSE #2 +499 REM ---------------------------------------------------------- +500 REM REPLACED BY CONTENTS OF "PAD80.INP" +501 REM ---------------------------------------------------------- +900 REM ---------------------------------------------------------- +910 REM THE END +920 REM ---------------------------------------------------------- +999 END diff --git a/NBS2/PAD80.INP b/NBS2/PAD80.INP new file mode 100644 index 0000000..e2e4a34 --- /dev/null +++ b/NBS2/PAD80.INP @@ -0,0 +1 @@ +500 DATA F_VAL_A_N.OUT, F_VAL_A_N.80 diff --git a/NBS2/SYNTAX.BAS b/NBS2/SYNTAX.BAS new file mode 100644 index 0000000..37da88c --- /dev/null +++ b/NBS2/SYNTAX.BAS @@ -0,0 +1,498 @@ +OPTION VERSION BYWATER +OPTION BUGS OFF +REM PARSE SYNTAX DIAGRAMS AND GENERATE PARAMETER RANGE CHECK TESTS +REM EXAMPLE " SYNTAX: N = ASC( A$ )" +REM +REM THIS PROGRAM ASSUMES A PROPERLY FORMATTED SYNTAX DIAGRAM; +REM ONLY MINIMAL ERROR CHECKING IS PERFORMED. +REM +REM ------------------------------------------------------------ +REM VARIABLE USAGE +REM F$ input file name, such as 'SYNTAX.INP' +REM I$ inpuut line, such as 'SYNTAX: N = ASC( A$ )' +REM L location of '(' +REM R location of ')' +REM C location of ':' or '=' or or ',' +REM P$ current function/parameter +REM N$() function/parameter name, P$(0) = 'ASC', P$(1) = 'A$' +REM T() function/parameter type, T(0) = NUMBER, T(1) = STRING +REM 0 == NUMBER, 1 == STRING +REM N number of paameters, such as 1 +REM I generic loop variable +REM C$ current character +REM Z$ cleaned syntax diagram +REM F$ cleaned function name, 'ASC' +REM X$ user selevted function name, 'COS' +REM U$ UniqueID, 'F_COS_X' +REM VN TESTCASE ACTUAL RESULT, NUMBER +REM VS$ TESTCASE ACTUAL RESULT, STRING +REM Q$ CHR$(34) +REM RN() RANDOM NUMBERS +REM RS$() RANDOM STRINGS +REM #1 INPUT FILE, 'SYNTAX.TXT' +REM #2 MERGE FILE, 'SYNTAX.MRG' +REM #3 OUTPUT FILE, 'F_COS_X.BAS' +REM ------------------------------------------------------------ +REM DECLARE ARRAYS +REM ------------------------------------------------------------ +REM RANDOMIZE ' this must be off for automated regression +DIM N$(9) +DIM T(9) +DIM RN(100) +DIM RS$(100) +N = 0 +GOSUB 4500 +REM ------------------------------------------------------------ +REM GET THE INPUT FILE NAME +REM ------------------------------------------------------------ +F$ = "SYNTAX.INP" +X$ = "ASC" +REM PRINT "F$=[";F$;"]" +REM ------------------------------------------------------------ +REM PROCESS THE INPUT FILE +REM ------------------------------------------------------------ +OPEN F$ FOR INPUT AS #1 +WHILE NOT EOF( 1 ) + LINE INPUT #1, I$ + REM PRINT "I$=[";I$;"]" + REM Process Line in I$ + GOSUB 1000 ' ProcessLine + REM IF I$ = X$ THEN + GOSUB 4000 ' DetermineUniqueID + GOSUB 5000 ' DumpResults + REM END IF +WEND +CLOSE #1 +PRINT "OK" +GOTO 9999 ' TheEnd + + +1000 REM ProcessLine +REM ------------------------------------------------------------ +REM PROCESS THE SYNTAX DIAGRAM IN I$ +REM ------------------------------------------------------------ +N = 0 +REM PRINT "I$=[";I$;"]" +I$ = TRIM$( I$ ) +IF LEN( I$ ) = 0 THEN RETURN +REM PRINT "I$=[";I$;"]" +REM CHECK MISSING COLON +C = INSTR( I$, ":" ) +REM PRINT "C=[";C;"]" +IF C = 0 THEN RETURN +REM REMOVE "SYNTAX:" +I$ = MID$( I$, C + 1 ) +I$ = TRIM$( I$ ) +REM PRINT "I$=[";I$;"]" +IF LEN( I$ ) = 0 THEN RETURN +REM SAVE CLEANED SYNTAX DIAGRAM +Z$ = I$ +REM DETERMINE RETURN TYPE +C = INSTR( I$, "=" ) +REM PRINT "C=[";C;"]" +IF C = 0 THEN RETURN +P$ = LEFT$( I$, C - 1 ) +P$ = TRIM$( P$ ) +REM PRINT "P$=[";P$;"]" +IF LEN( P$ ) = 0 THEN RETURN +I$ = MID$( I$, C + 1 ) +I$ = TRIM$( I$ ) +REM PRINT "I$=[";I$;"]" +IF LEN( I$ ) = 0 THEN RETURN +GOSUB 3000 ' DetermineTypeInP$ +REM I$ = "ASC( A$ )" +REM PRINT "I$=[";I$;"]" +L = INSTR( I$, "(" ) +R = INSTR( I$, ")" ) +REM PRINT "L=[";L;"]" +REM PRINT "R=[";R;"]" +IF R < L THEN RETURN ' ERROR ...)...( +IF R = 0 AND L = 0 THEN + REM "A$ = TIME$" + REM N$(0) = I$ + REM PRINT "NO PARAMETERS" + REM SAVE CLEANED FUNCTION NAME + F$ = I$ + RETURN ' DONE +END IF +REM "...(...)" +REM R > L AND L > 0 +REM SAVE CLEANED FUNCTION NAME +F$ = LEFT$( I$, L-1 ) +F$ = TRIM$( F$ ) +REM PRINT "F$=[";F$;"]" +I$ = MID$( I$, L+1, R-L-1 ) +REM PRINT "I$=[";I$;"]" +I$ = TRIM$( I$ ) +REM PRINT "I$=[";I$;"]" +IF LEN( I$ ) = 0 THEN RETURN ' N = POS() +P$ = "" +FOR I = 1 TO LEN( I$ ) + C$ = MID$( I$, I, 1 ) +REM PRINT "C$=[";C$;"]" + IF C$ = "," THEN + GOSUB 3000 ' DetermineTypeInP$ + P$ = "" + ELSE + P$ = P$ + C$ + END IF +NEXT I +GOSUB 3000 ' DetermineTypeInP$ +RETURN + + +3000 REM DetermineTypeInP$ +REM ------------------------------------------------------------ +REM DETERMINE THE TYPE IN P$ +REM ------------------------------------------------------------ +P$ = TRIM$( P$ ) +REM PRINT "P$=[";P$;"]" +IF LEN( P$ ) = 0 THEN RETURN +N$(N) = P$ +T(N) = SGN( INSTR( P$, "$" ) ) +N = N + 1 +RETURN + +4000 REM DetermineUniqueID +REM ------------------------------------------------------------ +REM DETERMINE THE UNIQUEID USING NS() AND T() +REM ------------------------------------------------------------ +IF N <= 0 THEN RETURN +U$ = "F_" + F$ +FOR I = 1 TO N - 1 + U$ = U$ + "_" + N$(I) +NEXT I +U$ = U$ + "_" + N$(0) +REM PRINT "U$=[";U$;"]" +REM REMOVE "$" +J = LEN(U$) +I$ = "" +FOR I = 1 TO J + C$ = MID$(U$,I,1) + IF C$ = "$" THEN + REM REMOVE + ELSE + I$ = I$ + C$ + END IF +NEXT I +U$ = I$ +REM PRINT "U$=[";U$;"]" +RETURN + +4500 REM LoadRandomValues +REM ------------------------------------------------------------ +REM LOAD RANDOM VALUES +REM ------------------------------------------------------------ +FOR I = 1 TO 100 + IF I < 25 THEN + RN(I) = RND * 1.0 - 0.5 + ELSEIF I < 50 THEN + RN(I) = RND * 255 - 128 + ELSEIF I < 75 THEN + RN(I) = RND * 64535 - 32768 + ELSE + RN(I) = RND * 10000000000 - 5000000000 + END IF + K = 0 + WHILE K < 35 OR K > 126 + K = RND * 128 + WEND + RS$(I) = SPACE$( RND * 5 ) + STRING$( RND * 5, K ) + SPACE$( RND * 5 ) +NEXT I +REM CERTAIN VALUES THAT SHOULD ALWAYS BE CHECKED +RN(1) = 0 +RN(2) = 1 +RN(3) = -1 +RN(4) = 0.4 +RN(5) = -0.4 +RN(6) = 0.6 +RN(7) = -0.6 +RN(8) = 254 +RN(9) = 255 +RN(10) = 256 +RN(11) = 32000 +RS$(1) = "" +RS$(2) = " " +RS$(3) = "3" +RS$(4) = "z" +RS$(5) = " " +RS$(6) = " 3" +RS$(7) = " z" +RS$(8) = "3 " +RS$(9) = "z " +RS$(10) = " 3 " +RS$(11) = " z " +RETURN + +5000 REM DumpResults +REM ------------------------------------------------------------ +REM DUMP RESULTS +REM ------------------------------------------------------------ +REM +REM THE FOLLOWING FUNCTIONS SHOULD NOT BE AUTOMATED +REM FOR VARIOUS REASONS +REM +IF N <= 0 THEN + REM ERROR + RETURN +END IF +IF INSTR( F$, " " ) THEN + REM TESTCSE NOT POSSIBLE, INTERNAL FUNCTIONS + REM such as "DEF FN" + RETURN +END IF +IF N = 1 THEN + REM MANUAL TESTCASE REQUIRED, NO PARAMETERS + REM such as DATE$, TIME$, TIMER + RETURN +END IF +IF INSTR(".CLOSE.EOF.GET.INPUT$.LOC.LOF.OPEN.PUT.RESET.", "." + F$ + ".") > 0 THEN + REM MANUAL TESTCASE REQUIRED, FILE RELATIED + RETURN +END IF +IF INSTR(".CHDIR.FILES.KILL.MKDIR.NAME.RMDIR.", "." + F$ + ".") > 0 THEN + REM MANUAL TESTCASE REQUIRED, DIRECTORY RELATED + RETURN +END IF +IF INSTR(".COMMAND$.ENVIRON.ENVIRON$.SHELL.", "." + F$ + ".") > 0 THEN + REM MANUAL TESTCASE REQUIRED, SYSTEM RELATED + RETURN +END IF +IF INSTR(".INP.OUT.PEEK.POKE.WAIT.", "." + F$ + ".") > 0 THEN + REM MANUAL TESTCASE REQUIRED, HARDWARE RELAATED + RETURN +END IF +IF INSTR(".COLOR.INKEY$.LOCATE.LPOS.LWIDTH.POS.WIDTH.", "." + F$ + ".") > 0 THEN + REM MANUAL TESTCASE REQUIRED, SCREEN or PRINTER + RETURN +END IF +IF INSTR(".MKC$.MKD$.MKI$.MKL$.MKS$.", "." + F$ + ".") > 0 THEN + REM MANUAL TESTCASE REQUIRED, MK* + RETURN +END IF +IF INSTR(".MOD.OPTION.", "." + F$ + ".") > 0 THEN + REM MANUAL TESTCASE REQUIRED, MISCELLANEOUS + RETURN +END IF +IF INSTR(".RANDOMIZE.RND.SPC.TAB.", "." + F$ + ".") > 0 THEN + REM NO TESTCASE REQUIRED, TESTED BY P###.BAS + RETURN +END IF +REM +REM GENERATE TESTCASE +REM +LET X$ = U$ + ".BAS" +PRINT X$ +OPEN X$ FOR OUTPUT AS #3 +PRINT #3, "REM ------------------------------------------------------------" +PRINT #3, "REM PURPOSE: TEST THE PARAMETER RANGE CHECKS" +PRINT #3, "REM AUTHOR: HOWARD WULF, AF5NE" +PRINT #3, "REM GENERATED: ";DATE$;" ";TIME$ +PRINT #3, "REM FILENAME: ";X$ +PRINT #3, "REM SYNTAX: ";Z$ +PRINT #3, "REM UNIQUEID: ";U$ +PRINT #3, "REM FUNCTION: ";F$ +REM ------------------------------------------------------------ +REM HAS PARAMETERS +REM N > 1 +PRINT #3, "REM " +PRINT #3, "REM","VARIABLE","DESCRIPTION" +PRINT #3, "REM","I" ,"CURRENT TESTCASE NUMBER" +PRINT #3, "REM","E" ,"EXPECTED ERROR FLAG" +PRINT #3, "REM","F" ,"ACTUAL ERROR FLAG" +IF T(0) = 0 THEN +PRINT #3, "REM","R" ,"EXPECTED FUNCTION RESULT" +ELSE +PRINT #3, "REM","R$" ,"EXPECTED FUNCTION RESULT" +END IF +FOR I = 0 TO N - 1 + IF I = 0 THEN +PRINT #3, "REM",N$(I),"ACTUAL FUNCTION RESULT" + ELSE +PRINT #3, "REM",N$(I),"ACTUAL FUNCTION PARAMETER" + END IF +NEXT I +PRINT #3, "REM " + +REM GENERATE TESTS + +Q$ = CHR$(34) + +PRINT #3, "RESTORE 2000" +PRINT #3, "REM GET TESTCASE #" +PRINT #3, "READ I" +PRINT #3, "WHILE I > 0" +PRINT #3, "REM GET TESTCASE DATA" +PRINT #3, "READ E, "; +IF T(0) = 0 THEN + PRINT #3, "R"; +ELSE + PRINT #3, "R$"; +END IF +FOR J = 1 TO N - 1 + PRINT #3, ", "; + PRINT #3, N$(J); +NEXT J +PRINT #3, "" +PRINT #3, "REM DISPLAY TESTCASE DATA" +PRINT #3, "PRINT ";Q$;"TESTCASE #";Q$;";I,"; +PRINT #3, Q$;"E=";Q$;";E,"; +IF T(0) = 0 THEN + PRINT #3, Q$;"R=";Q$;";R"; +ELSE + PRINT #3, Q$;"R$=[";Q$;";R$;";Q$;"]";Q$; +END IF +FOR J = 1 TO N - 1 + PRINT #3, ", "; + IF T(J) = 0 THEN + PRINT #3, Q$;N$(J);"=";Q$;";";N$(J); + ELSE + PRINT #3, Q$;N$(J);"=[";Q$;";";N$(J);";";Q$;"]";Q$; + END IF +NEXT J +PRINT #3, "" +PRINT #3, "REM EXECUTE TESTCASE" +PRINT #3, "N = ";0 +PRINT #3, "S$ = ";Q$;Q$ +PRINT #3, "ON ERROR GOTO 9000" +PRINT #3, "F = 0" +PRINT #3, "999 ";Z$ +PRINT #3, "ERROR 0" +PRINT #3, "REM DISPLAY TESTCASE RESULTS" +PRINT #3, "PRINT ,";Q$;"F=";Q$;";F,"; +IF T(0) = 0 THEN + PRINT #3, Q$;N$(0);"=";Q$;";";N$(0) +ELSE + PRINT #3, Q$;N$(0);"=[";Q$;";";N$(0);";";Q$;"]";Q$ +END IF +PRINT #3, "REM VERIFY EXPECTED ERROR" +PRINT #3, "IF E <> F THEN" +PRINT #3, " PRINT ";Q$;"*** TEST FAILED, EXCEPTION MISMATCH ***";Q$ +PRINT #3, " STOP" +PRINT #3, "END IF" +PRINT #3, "REM VERIFY EXPECTED RESULT" +IF T(0) = 0 THEN +PRINT #3, "IF R > 0 THEN" +PRINT #3, " LET RMIN = 0.99 * R" +PRINT #3, " IF R > MAXNUM / 1.012 THEN" +PRINT #3, " LET RMAX = MAXNUM" +PRINT #3, " ELSE" +PRINT #3, " LET RMAX = 1.01 * R" +PRINT #3, " END IF" +PRINT #3, "END IF" +PRINT #3, "IF R < 0 THEN" +PRINT #3, " IF R < - MAXNUM / 1.012 THEN" +PRINT #3, " LET RMIN = -MAXNUM" +PRINT #3, " ELSE" +PRINT #3, " LET RMIN = 1.01 * R" +PRINT #3, " END IF" +PRINT #3, " LET RMAX = 0.99 * R" +PRINT #3, "END IF" +PRINT #3, "IF R = 0 THEN" +PRINT #3, " LET RMIN = -.01" +PRINT #3, " LET RMAX = +.01" +PRINT #3, "END IF" +PRINT #3, "IF ";N$(0);" < RMIN THEN" +PRINT #3, " PRINT ";Q$;"*** TEST FAILED, RESULT MISMATCH ***";Q$ +PRINT #3, " STOP" +PRINT #3, "END IF" +PRINT #3, "IF ";N$(0);" > RMAX THEN" +PRINT #3, " PRINT ";Q$;"*** TEST FAILED, RESULT MISMATCH ***";Q$ +PRINT #3, " STOP" +PRINT #3, "END IF" +ELSE +PRINT #3, "IF R$ <> ";N$(0);" THEN" +PRINT #3, " PRINT ";Q$;"*** TEST FAILED, RESULT MISMATCH ***";Q$ +PRINT #3, " STOP" +PRINT #3, "END IF" +END IF +PRINT #3, "PRINT ";Q$;"*** TEST PASSED ***";Q$ +PRINT #3, "REM GET NEXT TESTCASE #" +PRINT #3, "READ I" +PRINT #3, "WEND" +PRINT #3, "PRINT ";Q$;"*** ALL TESTS PASSED ***";Q$ +PRINT #3, "GOTO 9999" +PRINT #3, "1999 REM TESTCASE, EXPECTED ERROR, EXPECTED RESULT, PARAMETERS..." +FOR I = 1 TO 100 + REM ------------------------------------------------------------ + REM CREATE MERGE FILE + REM ------------------------------------------------------------ + OPEN "SYNTAX.MRG" FOR OUTPUT AS #2 + PRINT #2, "6000 REM MERGE START";I +REM PRINT #2, "6010 PRINT ";Q$;"BEFORE ERROR";Q$ +REM PRINT #2, "6020 ERROR 12" +REM PRINT #2, "6030 PRINT ";Q$;"AFTER ERROR";Q$ +REM PRINT #2, "6040 RETURN" +REM PRINT #2, "6050 PRINT ";Q$;"AFTER RETURN";Q$ + FOR J = 1 TO N - 1 + IF T(J) = 0 THEN + K = RN(I) + PRINT #2, "LET ";N$(J);" = ";K + V(J) = K + ELSE + K$ = RS$(I) + PRINT #2, "LET ";N$(J);" = ";Q$;K$;Q$ + V$(J) = K$ + END IF + NEXT J + PRINT #2, "6010 LET V";Z$ +REM PRINT #2, "6098 PRINT ";Q$;"BEFORE STOP";Q$ + PRINT #2, "6099 REM MERGE STOP";I + CLOSE #2 + REM EXECUTE MERGED FILE + DELETE 6000-6099 + MERGE "SYNTAX.MRG" +REM LIST 5999-6999 + LET E = 0 + LET VN = 0 + LET VS$ = "" +REM TRON + ON ERROR RESUME NEXT + GOSUB 6000 +REM TROFF + REM DTERMINE ERROR FLAG + LET E = ABS(SGN(ERR)) + REM CLEAR ERR, ERL, ERROR$ + ERROR 0 + ON ERROR GOTO 0 + REM REPORT RESULTS + REM TESTCASE NUMBER, EXPECTED ERROR + PRINT #3, "DATA ";I;", ";E;", "; + REM EXPECTED RESULT + IF T(0) = 0 THEN + PRINT #3, VN; + ELSE + PRINT #3, Q$;VS$;Q$; + END IF + REM ACTUAL PARAMETERS + FOR J = 1 TO N - 1 + PRINT #3, ", "; + IF T(J) = 0 THEN + PRINT #3, V(J); + ELSE + PRINT #3, Q$;V$(J);Q$; + END IF + NEXT J + PRINT #3, "" +NEXT I +PRINT #3, "DATA 0" +PRINT #3, "9000 REM ERROR HANDLER" +PRINT #3, "IF ERL = 999 THEN" +PRINT #3, " F = ABS(SGN(ERR))" +PRINT #3, " RESUME NEXT" +PRINT #3, "END IF" +PRINT #3, "PRINT ";Q$;"*** UNEXPECTED ERROR ON LINE ";Q$;";ERL;";Q$;" ***";Q$ +PRINT #3, "9999 END" +CLOSE #3 +RETURN + +5999 REM BOUNDARY A +6000 REM MERGE START 0 +6099 REM MERGE STOP 0 +6100 RETURN +6999 REM BOUNDARY B + +REM ------------------------------------------------------------ +REM EOF +REM ------------------------------------------------------------ +9999 END diff --git a/NBS2/SYNTAX.INP b/NBS2/SYNTAX.INP new file mode 100644 index 0000000..fc4a723 --- /dev/null +++ b/NBS2/SYNTAX.INP @@ -0,0 +1,140 @@ + SYNTAX: N = ABS( X ) + SYNTAX: N = ACOS( X ) + SYNTAX: N = ANGLE( X, Y ) + SYNTAX: N = ASC( A$ ) + SYNTAX: N = ASIN( X ) + SYNTAX: N = ATN( X ) + SYNTAX: N = CCUR( X ) + SYNTAX: N = CDBL( X ) + SYNTAX: N = CEIL( X ) + SYNTAX: N = CHDIR( A$ ) + SYNTAX: S$ = CHR$( X ) + SYNTAX: N = CINT( X ) + SYNTAX: N = CLNG( X ) + SYNTAX: N = CLOSE( X ) + SYNTAX: N = CLS + SYNTAX: N = COLOR( X, Y ) + SYNTAX: N = COS( X ) + SYNTAX: N = COSH( X ) + SYNTAX: N = COT( X ) + SYNTAX: N = CSC( X ) + SYNTAX: N = CSNG( X ) + SYNTAX: N = CVC( A$ ) + SYNTAX: N = CVD( A$ ) + SYNTAX: N = CVI( A$ ) + SYNTAX: N = CVL( A$ ) + SYNTAX: N = CVS( A$ ) + SYNTAX: N = DATE + SYNTAX: S$ = DATE$ + SYNTAX: N = DEF FN + SYNTAX: N = DEG( X ) + SYNTAX: N = ENVIRON( A$ ) + SYNTAX: S$ = ENVIRON$( A$ ) + SYNTAX: N = EOF( X ) + SYNTAX: N = EPS( X ) + SYNTAX: N = ERL + SYNTAX: N = ERR + SYNTAX: N = ERROR( X ) + SYNTAX: N = ERROR( X, A$ ) + SYNTAX: N = EXP( X ) + SYNTAX: N = FILES + SYNTAX: N = FILES( A$ ) + SYNTAX: N = FIX( X ) + SYNTAX: N = FP( X ) + SYNTAX: N = FRE + SYNTAX: N = FRE( A$ ) + SYNTAX: N = FRE( X ) + SYNTAX: N = GET( X ) + SYNTAX: N = GET( X, Y ) + SYNTAX: S$ = HEX$( X ) + SYNTAX: S$ = INKEY$ + SYNTAX: N = INP( X ) + SYNTAX: S$ = INPUT$( X ) + SYNTAX: S$ = INPUT$( X, Y ) + SYNTAX: N = INSTR( A$, B$ ) + SYNTAX: N = INSTR( X, A$, B$ ) + SYNTAX: N = INT( X ) + SYNTAX: N = IP( X ) + SYNTAX: N = KILL( A$ ) + SYNTAX: S$ = LCASE$( A$ ) + SYNTAX: S$ = LEFT$( A$, X ) + SYNTAX: N = LEN( A$ ) + SYNTAX: N = LOC( X ) + SYNTAX: N = LOCATE( X, Y ) + SYNTAX: N = LOF( X ) + SYNTAX: N = LOG( X ) + SYNTAX: N = LOG10( X ) + SYNTAX: N = LOG2( X ) + SYNTAX: N = LPOS + SYNTAX: S$ = LTRIM$( A$ ) + SYNTAX: N = LWIDTH( X ) + SYNTAX: N = MAX( X, Y ) + SYNTAX: N = MAXLEN( A$ ) + SYNTAX: N = MAXNUM + SYNTAX: S$ = MID$( A$, X ) + SYNTAX: S$ = MID$( A$, X, Y ) + SYNTAX: N = MIN( X, Y ) + SYNTAX: S$ = MKC$( X ) + SYNTAX: S$ = MKD$( X ) + SYNTAX: N = MKDIR( A$ ) + SYNTAX: S$ = MKI$( X ) + SYNTAX: S$ = MKL$( X ) + SYNTAX: S$ = MKS$( X ) + SYNTAX: N = MOD( X, Y ) + SYNTAX: N = NAME( A$, B$ ) + SYNTAX: N = NULL( X ) + SYNTAX: S$ = OCT$( X ) + SYNTAX: N = OPEN( A$, X, B$ ) + SYNTAX: N = OPEN( A$, X, B$, Y ) + SYNTAX: N = OPTION( A$, B$ ) + SYNTAX: N = ORD( A$ ) + SYNTAX: N = OUT( X, Y ) + SYNTAX: N = PEEK( X ) + SYNTAX: N = PI + SYNTAX: N = POKE( X, Y ) + SYNTAX: N = POS + SYNTAX: N = POS( X ) + SYNTAX: N = POS( A$, B$ ) + SYNTAX: N = POS( A$, B$, X ) + SYNTAX: N = PUT( X ) + SYNTAX: N = PUT( X, Y ) + SYNTAX: N = RAD( X ) + SYNTAX: N = RANDOMIZE + SYNTAX: N = RANDOMIZE( X ) + SYNTAX: N = REMAINDER( X, Y ) + SYNTAX: S$ = REPEAT$( X, A$ ) + SYNTAX: S$ = REPEAT$( X, Y ) + SYNTAX: N = RESET + SYNTAX: S$ = RIGHT$( A$, X ) + SYNTAX: N = RMDIR( A$ ) + SYNTAX: N = RND + SYNTAX: N = RND( X ) + SYNTAX: N = ROUND( X, Y ) + SYNTAX: S$ = RTRIM$( A$ ) + SYNTAX: N = SEC( X ) + SYNTAX: N = SGN( X ) + SYNTAX: N = SHELL( A$ ) + SYNTAX: N = SIN( X ) + SYNTAX: N = SINH( X ) + SYNTAX: S$ = SPACE$( X ) + SYNTAX: S$ = SPC( X ) + SYNTAX: N = SQR( X ) + SYNTAX: S$ = STR$( X ) + SYNTAX: S$ = STRING$( X, Y ) + SYNTAX: S$ = STRING$( X, A$ ) + SYNTAX: S$ = TAB( X ) + SYNTAX: N = TAN( X ) + SYNTAX: N = TANH( X ) + SYNTAX: N = TIME + SYNTAX: S$ = TIME$ + SYNTAX: N = TIMER + SYNTAX: S$ = TRIM$( A$ ) + SYNTAX: N = TROFF + SYNTAX: N = TRON + SYNTAX: N = TRUNCATE( X, Y ) + SYNTAX: S$ = UCASE$( A$ ) + SYNTAX: N = VAL( A$ ) + SYNTAX: N = WAIT( X, Y ) + SYNTAX: N = WAIT( X, Y, Z ) + SYNTAX: N = WIDTH( X ) + SYNTAX: N = WIDTH( X, Y ) diff --git a/NBS2/SYNTAX.MRG b/NBS2/SYNTAX.MRG new file mode 100644 index 0000000..b46f5ce --- /dev/null +++ b/NBS2/SYNTAX.MRG @@ -0,0 +1,4 @@ +6000 REM MERGE START 100 +LET A$ = " yyyy " +6010 LET VN = VAL( A$ ) +6099 REM MERGE STOP 100 diff --git a/NBS2/cms.bas b/NBS2/cms.bas new file mode 100644 index 0000000..d20426e --- /dev/null +++ b/NBS2/cms.bas @@ -0,0 +1,66 @@ +rem PUrpose: re-define externals to only 6 characters for CMS +rem Author: Howard Wulf, AF5NE +rem Date: 2015-02-10 +rem Usage: implementation defined +rem Example: +rem ~/bwbasic cms.bas +rem +let N = 0 +let E$ = "extern " +let E = len( E$ ) +open "bwbasic.h" for input as #1 +open "cms.h" for output as #2 +while not eof( #1 ) + line input #1, L$ + L$ = trim$( L$ ) + if left$( L$, E ) = E$ then + rem extern .... + while instr( L$, ";" ) = 0 + ' read more text to get semicolon + line input #1, M$ + M$ = trim$( M$ ) + L$ = L$ + " " + M$ + wend + rem extern ...; + L$ = trim$(mid$( L$, E + 1 )) + ' truncate semicolon + X = instr( L$, ";" ) + if X > 0 then + L$ = trim$(left$( L$, X - 1 )) + end if + ' truncate parenthesis + X = instr( L$, "(" ) + if X > 0 then + L$ = trim$(left$( L$, X - 1 )) + end if + ' truncate bracket + X = instr( L$, "[" ) + if X > 0 then + L$ = trim$(left$( L$, X - 1 )) + end if + ' find last word + X = instr(L$, " " ) + while X > 0 + L$ = trim$(mid$( L$, X + 1 )) + X = instr(L$, " " ) + wend + ' skip astericks + while left$( L$, 1 ) = "*" + L$ = trim$(mid$( L$, 2 )) + wend + if L$ = "main" then + ' ignore + else + ' pad for alignment + L$ = L$ + space$(32) + L$ = left$( L$, 32 ) + H$ = "00000" + hex$(N) + H$ = right$( H$, 5 ) + print #2, "#define ";L$;" X";H$ + N = N + 1 + end if + end if +wend +close #2 +close #1 +end diff --git a/NBS2/dif.OUT b/NBS2/dif.OUT new file mode 100644 index 0000000..e69de29 diff --git a/NBS2/profile.bas b/NBS2/profile.bas new file mode 100644 index 0000000..7eb52c1 --- /dev/null +++ b/NBS2/profile.bas @@ -0,0 +1,2 @@ +OPTION VERSION BYWATER +OPTION BUGS OFF diff --git a/NBS2/test.dat b/NBS2/test.dat new file mode 100644 index 0000000..99e7ea1 --- /dev/null +++ b/NBS2/test.dat @@ -0,0 +1 @@ +"1234567890 " diff --git a/NBS2/x b/NBS2/x new file mode 100644 index 0000000..2610cb9 Binary files /dev/null and b/NBS2/x differ diff --git a/README b/README index d3eeecb..9d9605f 100644 --- a/README +++ b/README @@ -3,7 +3,7 @@ README file for - Bywater BASIC Interpreter/Shell, version 2.61 + Bywater BASIC Interpreter, version 3.00 --------------------------------------------- Copyright (c) 1993, Ted A. Campbell @@ -33,6 +33,8 @@ Version 2.61 modifications by Paul Edwards, 4 August 2014 + Version 3.00 modifications by Howard Wulf, AF5NE + 12 May 2015 @@ -74,129 +76,295 @@ COMMUNICATIONS: A LIST OF BASIC COMMANDS AND FUNCTIONS IMPLEMENTED in bwBASIC: Be aware that many of these commands and functions will not be - available unless you have set certain flags in the header files. - - ABS( number ) - ASC( string$ ) - ATN( number ) - CALL subroutine-name - CASE constant | IF partial-expression | ELSE - CHAIN file-name - CHDIR pathname - CHR$( number ) - CINT( number ) - CLEAR - CLOSE [[#]file-number]... - CLS - COMMON variable [, variable...] - COS( number ) - CSNG( number ) - CVD( string$ ) - CVI( string$ ) - CVS( string$ ) - DATA constant[,constant]... - DATE$ - DEF FNname(arg...)] = expression - DEFDBL letter[-letter](, letter[-letter])... - DEFINT letter[-letter](, letter[-letter])... - DEFSNG letter[-letter](, letter[-letter])... - DEFSTR letter[-letter](, letter[-letter])... - DELETE line[-line] - DIM variable(elements...)[variable(elements...)]... - DO NUM|UNNUM - DO [WHILE expression] - EDIT (* depends on variable BWB.EDITOR$) - ELSE - ELSEIF - END FUNCTION | IF | SELECT | SUB - ENVIRON variable-string$ = string$ - ENVIRON$( variable-string ) - EOF( device-number ) - ERASE variable[, variable]... - ERL - ERR - ERROR number - EXIT FOR|DO - EXP( number ) - FIELD [#] device-number, number AS string-variable [, number AS string-variable...] - FILES filespec$ (* depends on variable BWB.FILES$) - FOR counter = start TO finish [STEP increment] - FUNCTION function-definition - GET [#] device-number [, record-number] - GOSUB line | label - GOTO line | label - HEX$( number ) - IF expression THEN [statement [ELSE statement]] - INKEY$ - INPUT [# device-number]|[;]["prompt string";]list of variables - INSTR( [start-position,] string-searched$, string-pattern$ ) - INT( number ) - KILL file-name - LEFT$( string$, number-of-spaces ) - LEN( string$ ) - LET variable = expression - LINE INPUT [[#] device-number,]["prompt string";] string-variable$ - LIST line[-line] - LOAD file-name - LOC( device-number ) - LOCATE - LOF( device-number ) - LOG( number ) - LOOP [UNTIL expression] - LSET string-variable$ = expression - MERGE file-name - MID$( string$, start-position-in-string[, number-of-spaces ] ) - MKD$( number ) - MKDIR pathname - MKI$( number ) - MKS$( number ) - NAME old-file-name AS new-file-name - NEW - NEXT counter - OCT$( number ) - ON variable GOTO|GOSUB line[,line,line,...] - ON ERROR GOSUB line | label - OPEN O|I|R, [#]device-number, file-name [,record length] - file-name FOR INPUT|OUTPUT|APPEND AS [#]device-number [LEN = record-length] - OPTION BASE number - POS - PRINT [# device-number,][USING format-string$;] expressions... - PUT [#] device-number [, record-number] - RANDOMIZE number - READ variable[, variable]... - REM string - RENUM - RESTORE line - RETURN - RIGHT$( string$, number-of-spaces ) - RMDIR pathname - RND( number ) - RSET string-variable$ = expression - RUN [line]|[file-name] - SAVE file-name - SELECT CASE expression - SGN( number ) - SIN( number ) - SPACE$( number ) - SPC( number ) - SQR( number ) - STOP - STR$( number ) - STRING$( number, ascii-value|string$ ) - SUB subroutine-name - SWAP variable, variable - SYSTEM - TAB( number ) - TAN( number ) - TIME$ - TIMER - TROFF - TRON - VAL( string$ ) - WEND - WHILE expression - WIDTH [# device-number,] number - WRITE [# device-number,] element [, element ].... + available unless you have enabled a particular dialect using + the OPTION VERSION command. + + ? expressions... + ABS( X ) + ACOS( X ) + ANGLE( X, Y ) + ARGC + ARGT$( X ) + ARGV$( X ) + ARGV( X ) + ASC( A$ ) + ASIN( X ) + ATN( X ) + CALL subroutine-name [parameter [, ...] ] + CASE ELSE + CASE IF partial-expression + CASE IS + CASE constant + CCUR( X ) + CDBL( X ) + CEIL( X ) + CHAIN filename$ + CHANGE A$ TO X | CHANGE X TO A$ + CHDIR( A$ ) + CHR$( X ) + CINT( X ) + CLEAR + CLNG( X ) + CLOAD [file-name$] + CLOAD* ArrayName + CLOSE( X ) + CLS + CMDS + COLOR( X, Y ) + COMMON variable [, ...] + CONT + COS( X ) + COSH( X ) + COT( X ) + CSAVE [file-name$] + CSAVE* ArrayName + CSC( X ) + CSNG( X ) + CVC( A$ ) + CVD( A$ ) + CVI( A$ ) + CVL( A$ ) + CVS( A$ ) + DATA constant[, ...] + DATE + DATE$ + DEF FN + DEF FNname(arg...)] = expression + DEF SUB + DEFDBL letter[-letter] [, ...] + DEFINT letter[-letter] [, ...] + DEFSNG letter[-letter] [, ...] + DEFSTR letter[-letter] [, ...] + DEG( X ) + DELETE line [- line] + DIM variable( elements [, ...]) [, ...] + DO + DO UNTIL expression + DO WHILE expression + EDIT + ELSE + ELSEIF + END + END FUNCTION + END IF + END SELECT + END SUB + ENVIRON$( A$ ) + ENVIRON( A$ ) + EOF( X ) + EPS( X ) + ERASE variable [, ...] + ERL + ERR + ERR$ + ERROR( X ) + ERROR( X, A$ ) + EXIT + EXIT DO + EXIT FOR + EXIT FUNCTION + EXIT SUB + EXIT UNTIL + EXIT WHILE + EXP( X ) + FIELD [#] device-number, number AS string-variable$ [, ...] + FILEATTR( X, Y ) + FILES + FILES( A$ ) + FIX( X ) + FNCS + FOR variable = start TO finish [STEP increment] + FP( X ) + FRE + FRE( A$ ) + FRE( X ) + FREEFILE + FUNCTION [ ( parameter [, ... ] ) ] + GET( X ) + GET( X, Y ) + GO + GOSUB line + GOTO line + HELP name + HEX$( X ) + IF expression THEN + IF expression THEN line1 [ELSE line2] + INKEY$ + INP( X ) + INPUT [# device-number]|[;]["prompt string";]list of variables + INPUT$( X ) + INPUT$( X, Y ) + INSTR( A$, B$ ) + INSTR( X, A$, B$ ) + INT( X ) + IP( X ) + KILL( A$ ) + LCASE$( A$ ) + LEFT$( A$, X ) + LEN( A$ ) + [LET] variable = expression + LINE INPUT [[#] device-number,]["prompt string";] string-variable$ + LIST line1 [- line2] + LOAD [file-name$] + LOC( X ) + LOCATE( X, Y ) + LOF( X ) + LOG( X ) + LOG10( X ) + LOG2( X ) + LOOP + LOOP UNTIL + LOOP WHILE + LPOS + LPRINT [USING format-string$;] expressions... + LSET string-variable$ = expression + LTRIM$( A$ ) + LWIDTH( X ) + MAINTAINER + MAX( X, Y ) + MAXBYT + MAXCUR + MAXDBL + MAXDEV + MAXINT + MAXLEN( A$ ) + MAXLNG + MAXLVL + MAXNUM + MAXSNG + MERGE file-name + MID$( A$, X ) + MID$( A$, X, Y ) + MID$( variable$, start [, count ] ) = expression + MIN( X, Y ) + MINBYT + MINCUR + MINDBL + MINDEV + MININT + MINLNG + MINNUM + MINSNG + MKC$( X ) + MKD$( X ) + MKDIR( A$ ) + MKI$( X ) + MKL$( X ) + MKS$( X ) + MOD( X, Y ) + NAME old-file-name AS new-file-name + NAME( A$, B$ ) + NEW + NEXT [variable] + NULL( X ) + OCT$( X ) + ON ERROR GOTO errline | ON ERROR RESUME NEXT + ON TIMER count GOSUB line + ON expression GOTO | GOSUB line [, ...] + OPEN file-name [FOR INPUT|OUTPUT|APPEND|BINARY|RANDOM] AS [#]device-number [LEN = record-length] + OPEN( A$, X, B$ ) + OPEN( A$, X, B$, Y ) + OPTION ... + OPTION ANGLE DEGREES + OPTION ANGLE RADIANS + OPTION ARITHMETIC DECIMAL + OPTION ARITHMETIC FIXED + OPTION ARITHMETIC NATIVE + OPTION BASE 0 + OPTION BASE 1 + OPTION BUGS OFF + OPTION BUGS ON + OPTION COMPARE BINARY + OPTION COMPARE TEXT + OPTION COVERAGE OFF + OPTION COVERAGE ON + OPTION INDENT number + OPTION STRICT OFF + OPTION STRICT ON + OPTION TERMINAL ADM-3A + OPTION TERMINAL ANSI + OPTION TERMINAL NONE + OPTION TRACE OFF + OPTION TRACE ON + OPTION VERSION [version] + ORD( A$ ) + OUT( X, Y ) + PEEK( X ) + PI + POKE( X, Y ) + POS + POS( A$, B$ ) + POS( A$, B$, X ) + POS( X ) + PRINT [# device-number,][USING format-string$;] expressions... + PUT( X ) + PUT( X, Y ) + QUIT + RAD( X ) + RANDOMIZE + RANDOMIZE( X ) + READ variable [, ...] + REM ... + REMAINDER( X, Y ) + RENUM + REPEAT$( X, A$ ) + REPEAT$( X, Y ) + RESET + RESTORE [line] + RESUME [ 0 | line | NEXT ] + RETURN + RIGHT$( A$, X ) + RMDIR( A$ ) + RND + RND( X ) + ROUND( X, Y ) + RSET string-variable$ = expression + RTRIM$( A$ ) + RUN [line | file-name$] + SAVE [file-name$] + SEC( X ) + SEEK( X ) + SEEK( X, Y ) + SELECT + SELECT CASE expression + SGN( X ) + SHELL( A$ ) + SIN( X ) + SINH( X ) + SPACE$( X ) + SPC( X ) + SQR( X ) + STOP + STR$( X ) + STRING$( X, A$ ) + STRING$( X, Y ) + SUB name [ ( parameter [,...] ) ] + SWAP variable, variable + SYSTEM + TAB( X ) + TAN( X ) + TANH( X ) + TIME + TIME$ + TIMER + TIMER ON | STOP | OFF + TRIM$( A$ ) + TROFF + TRON + TRUNCATE( X, Y ) + UCASE$( A$ ) + UEND + UNTIL expression + USER LBL + VAL( A$ ) + VARS + WAIT( X, Y ) + WAIT( X, Y, Z ) + WEND + WHILE + WIDTH( X ) + WIDTH( X, Y ) + WRITE [# device-number,] element [, .... ] @@ -204,6 +372,9 @@ A LIST OF BASIC COMMANDS AND FUNCTIONS IMPLEMENTED in bwBASIC: CHANGE HISTORY +CHANGES FROM 2.61 to 3.00 + + * Code redesign from Howard Wulf, AF5NE CHANGES FROM 2.60 to 2.61 diff --git a/SCBP/00readme.txt b/SCBP/00readme.txt new file mode 100644 index 0000000..667f61e --- /dev/null +++ b/SCBP/00readme.txt @@ -0,0 +1,22 @@ +These programs appear to work, and are part of regression testing. + +Changes made: +a) add missing semicolon/comma in PRINT statements +b) change array names so they were not identical to scalar variable names +c) add spaces around reserved words +d) CASSETTE is not supported, use DISKETTE instead +e) add missing THEN after IF +f) change PRINT #1,X,Y to WRITE #1,X,Y +g) add exit for autmated testing + +These programs were downloaded from +http://www.willus.com/trs80/?q=Common+BASIC+Programs + + + Book: Some Common Basic Programs 3rd Ed (1979)(Osborne).pdf +Program: Common BASIC Programs (125204) + Author: Lon Poole + Files: +ALFASORT.BAS, AMORTTAB.BAS, ANAL2VEC.BAS, ANGLMET.BAS, AREAPOLY.BAS, BINODIST.BAS, CHECWRIT.BAS, CHI2DIST.BAS, CHI2TEST.BAS, COMMPAP.BAS, CORDCONV.BAS, CORDPLOT.BAS, CURVINT.BAS, DAY2DAY.BAS, DAYWEEK.BAS, DEGRAD.BAS, DEPAMT.BAS, DEPRATE.BAS, DEPRSKED.BAS, DERIV.BAS, EARNINT.BAS, EFFINT.BAS, ENTEPRIS.BAS, EXPREGR.BAS, FDIST.BAS, FEDTAX.BAS, FUTVALDE.BAS, FUTVALIN.BAS, GCD.BAS, GEOMEAN.BAS, GEOREGR.BAS, GROWRATE.BAS, INITINV.BAS, INTGGAUS.BAS, INTGSIMP.BAS, INTGTRAP.BAS, LABELS.BAS, LASTPAY.BAS, LINCORCO.BAS, LINEPROG.BAS, LININT.BAS, LINREGR.BAS, LOANBAL.BAS, LOANPAY.BAS, LOANRATE.BAS, LOANTERM.BAS, MANNWHIT.BAS, MAPCHECK.BAS, MASTRDIR.BAS, MATADD.BAS, MATINV.BAS, MATMULT.BAS, MININV.BAS, MLINREGR.BAS, NOMINT.BAS, NORDREGR.BAS, NORMDIST.BAS, OPS2VEC.BAS, OTER.BAS, PARTSTRI.BAS, PERMCOMB.BAS, PLOTFUNC.BAS, PLOTPOL.BAS, POISDIST.BAS, PRIFACT.BAS, PRINLOAN.BAS, QUADROOT.BAS, RADDEG.BAS, RECICOST.BAS, REGDEP.BAS, REGWDRAW.BAS, ROOTNEWT.BAS, ROOTPOLY.BAS, SALVAGE.BAS, SHELSORT.BAS, SHOPPING.BAS, SIMLEQNS.BAS, STDDEV.BAS, SYSREL.BAS, TDIST.BAS, TDISTEST.BAS, TRIGPOLY.BAS + +EOF diff --git a/SCBP/00test.sh b/SCBP/00test.sh new file mode 100644 index 0000000..7374ef2 --- /dev/null +++ b/SCBP/00test.sh @@ -0,0 +1,119 @@ +# Puropose: Verify existing BWBASIC behavior +# Author: Howard Wulf +# Date: 2014-03-31 +# Usage: implementatino defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic3/SCBP +# ash ./00test.sh +# + +rm *.80 +rm *.OUT +rm *.dif + +# ---------------------------------------------- +# Regression Tests +# ---------------------------------------------- +testcase() +{ + TESTCASE=${1} + echo "TESTCASE=${TESTCASE}" + ~/bwbasic ${TESTCASE} > ${TESTCASE}.OUT + echo "500 DATA ${TESTCASE}.OUT, ${TESTCASE}.80" > PAD80.INP + ~/bwbasic PAD80.BAS + diff ${TESTCASE}.run ${TESTCASE}.80 > ${TESTCASE}.dif + if test -s ${TESTCASE}.dif + then + echo less ${TESTCASE}.dif + fi +} + +# --------------------------------------------- +echo "OPTION VERSION BYWATER" > profile.bas +echo "OPTION LABELS OFF" >> profile.bas + + + + +testcase ALFASORT +testcase AMORTTAB +testcase ANAL2VEC +testcase ANGLMET +testcase AREAPOLY +testcase BINODIST +testcase CHECWRIT +testcase CHI2DIST +testcase CHI2TEST +testcase COMMPAP +testcase CORDCONV +testcase CURVINT +testcase DAY2DAY +testcase DAYWEEK +testcase DEGRAD +testcase DEPAMT +testcase DEPRATE +testcase DEPRSKED +testcase DERIV +testcase EARNINT +testcase EFFINT +testcase EXPREGR +testcase FDIST +testcase FUTVALDE +testcase FUTVALIN +testcase GCD +testcase GEOMEAN +testcase GEOREGR +testcase GROWRATE +testcase INITINV +testcase INTGGAUS +testcase INTGSIMP +testcase INTGTRAP +testcase LABELS +testcase LASTPAY +testcase LINCORCO +testcase LINEPROG +testcase LININT +testcase LINREGR +testcase LOANBAL +testcase LOANPAY +testcase LOANRATE +testcase LOANTERM +testcase MANNWHIT +testcase MAPCHECK +testcase MATADD +testcase MATINV +testcase MATMULT +testcase MININV +testcase MLINREGR +testcase NOMINT +testcase NORDREGR +testcase NORMDIST +testcase OPS2VEC +testcase PARTSTRI +testcase PERMCOMB +testcase PLOTFUNC +testcase POISDIST +testcase PRIFACT +testcase PRINLOAN +testcase QUADROOT +testcase RADDEG +testcase RECICOST +testcase REGDEP +testcase REGWDRAW +testcase ROOTNEWT +testcase ROOTPOLY +testcase SALVAGE +testcase SIMLEQNS +testcase STDDEV +testcase SYSREL +testcase TDIST +testcase TDISTEST +testcase TRIGPOLY + + + + +cat *.dif > dif.OUT +less dif.OUT + +# EOF diff --git a/SCBP/01ok.sh b/SCBP/01ok.sh new file mode 100644 index 0000000..a3a9a58 --- /dev/null +++ b/SCBP/01ok.sh @@ -0,0 +1,11 @@ +# Puropose: Promote current results to regression +# Author: Howard Wulf +# Date: 2014-03-28 +# Usage: implementatino defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic3/SCBP +# ash ./01ok.sh +# + +for f in *.80; do mv "$f" "${f/.80/.run}"; done +# EOF diff --git a/SCBP/ALFASORT.80 b/SCBP/ALFASORT.80 new file mode 100644 index 0000000..b2ab931 --- /dev/null +++ b/SCBP/ALFASORT.80 @@ -0,0 +1,13 @@ +ALPHABETIZE + +(TO END PROGRAM ENTER 0) +NUMBER OF ITEMS? 3 +ITEM 1 ? MNO +ITEM 2 ? DEF +ITEM 3 ? JKL + +DEF +JKL +MNO + +NUMBER OF ITEMS? 0 diff --git a/SCBP/ALFASORT.BAS b/SCBP/ALFASORT.BAS new file mode 100644 index 0000000..6644f79 --- /dev/null +++ b/SCBP/ALFASORT.BAS @@ -0,0 +1,34 @@ +5 CLEAR 1200 +10 PRINT "ALPHABETIZE" +20 PRINT +30 PRINT "(TO END PROGRAM ENTER 0)" +40 PRINT "NUMBER OF ITEMS"; +50 INPUT N +59 REM - END PROGRAM? +60 IF N=0 THEN 270 +69 REM - LIMIT ARRAY TO MAXIMUM NUMBER OF ITEMS TO BE ENTERED IN ONE RUN +70 DIM A$(25) +80 FOR I=1 TO N +90 PRINT "ITEM";I; +100 INPUT A$(I) +110 NEXT I +119 REM - LOOP TO ALPHABETIZE DATA +120 FOR I=1 TO N +130 FOR J=1 TO N-I +138 REM - THE REPLACEMENT TECHNIQUE IN LINES 140 TO 180 CAUSES +139 REM - LOWER VALUES TO FLOAT OR BUBBLE TO THE TOP +140 A$=A$(J) +150 B$=A$(J+1) +160 IF A$N*Y THEN 520 +480 R=R+B0 +490 A=A+B0 +500 A1=A1+B0 +510 B0=0 +519 REM - SUM INTEREST PAID TO DATE +520 I2=I2+I1 +529 REM - SUM INTEREST PAID THIS YEAR +530 I3=I3+I1 +539 REM - SUM AMOUNT AMORTIZED THIS YEAR +540 A2=A2+A +549 REM - STARTED PRINTING? IF YES, PRINT COMPUTED VALUES IN TABLE +550 IF J0N*Y THEN 600 +590 PRINT " LAST PAYMENT = $";(INT(R*100+.5))/100 +599 REM - STARTED PRINTING? IF YES, PRINT VEARLY TOTALS +600 IF J0Y THEN 720 +649 REM - REINITIALIZE YEARLY VARIABLES +670 NEXT J0 +679 REM - NEED TO PRINT A PARTIAL YEAR? +680 IF Y=J0 THEN 720 +689 REM - ADJUST VARIABLES TO PRINT A PARTIAL YEAR +690 N1=((Y-INT(Y))*12)/12*N +700 J1=J1+1 +710 GOTO 280 +720 PRINT +729 REM - RESTART OR END PROGRAM? +730 PRINT "CHANGE DATA AND RECOMPUTE? (1=YES, 0=NO)"; +740 INPUT Z +750 IF Z=1 THEN 20 +760 END diff --git a/SCBP/AMORTTAB.INP b/SCBP/AMORTTAB.INP new file mode 100644 index 0000000..0076104 --- /dev/null +++ b/SCBP/AMORTTAB.INP @@ -0,0 +1,7 @@ +1234 +30 +250000 +3 +12 +1 +0 diff --git a/SCBP/AMORTTAB.OUT b/SCBP/AMORTTAB.OUT new file mode 100644 index 0000000..19141ac --- /dev/null +++ b/SCBP/AMORTTAB.OUT @@ -0,0 +1,682 @@ +MORTGAGE AMORTIZATION TABLE + +REGULAR PAYMENT? 1234 +TERM IN YEARS? 30 +PRINCIPAL? 250000 +ANNUAL INTEREST RATE? 3 +NUMBER OF PAYMENTS PER YEAR? 12 +START PRINTING WITH WHAT YEAR? 1 + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 625.00 609.00 249391.00 625.00 + 2 623.48 610.52 248780.48 1248.48 + 3 621.95 612.05 248168.43 1870.43 + 4 620.42 613.58 247554.85 2490.85 + 5 618.89 615.11 246939.74 3109.74 + 6 617.35 616.65 246323.09 3727.09 + 7 615.81 618.19 245704.90 4342.90 + 8 614.26 619.74 245085.16 4957.16 + 9 612.71 621.29 244463.87 5569.87 +10 611.16 622.84 243841.03 6181.03 +11 609.60 624.40 243216.63 6790.63 +12 608.04 625.96 242590.67 7398.67 + +YR. 1 7398.67 7409.33 + + 1 606.48 627.52 241963.15 8005.15 + 2 604.91 629.09 241334.06 8610.06 + 3 603.34 630.66 240703.40 9213.40 + 4 601.76 632.24 240071.16 9815.16 + 5 600.18 633.82 239437.34 10415.34 + 6 598.59 635.41 238801.93 11013.93 + 7 597.00 637.00 238164.93 11610.93 + 8 595.41 638.59 237526.34 12206.34 + 9 593.82 640.18 236886.16 12800.16 +10 592.22 641.78 236244.38 13392.38 +11 590.61 643.39 235600.99 13982.99 +12 589.00 645.00 234955.99 14571.99 + +YR. 2 7173.32 7634.68 + + 1 587.39 646.61 234309.38 15159.38 + 2 585.77 648.23 233661.15 15745.15 + 3 584.15 649.85 233011.30 16329.30 + 4 582.53 651.47 232359.83 16911.83 + 5 580.90 653.10 231706.73 17492.73 + 6 579.27 654.73 231052.00 18072.00 + 7 577.63 656.37 230395.63 18649.63 + 8 575.99 658.01 229737.62 19225.62 + 9 574.34 659.66 229077.96 19799.96 +10 572.69 661.31 228416.65 20372.65 +11 571.04 662.96 227753.69 20943.69 +12 569.38 664.62 227089.07 21513.07 + +YR. 3 6941.08 7866.92 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 567.72 666.28 226422.79 22080.79 + 2 566.06 667.94 225754.85 22646.85 + 3 564.39 669.61 225085.24 23211.24 + 4 562.71 671.29 224413.95 23773.95 + 5 561.03 672.97 223740.98 24334.98 + 6 559.35 674.65 223066.33 24894.33 + 7 557.67 676.33 222390.00 25452.00 + 8 555.98 678.02 221711.98 26007.98 + 9 554.28 679.72 221032.26 26562.26 +10 552.58 681.42 220350.84 27114.84 +11 550.88 683.12 219667.72 27665.72 +12 549.17 684.83 218982.89 28214.89 + +YR. 4 6701.82 8106.18 + + 1 547.46 686.54 218296.35 28762.35 + 2 545.74 688.26 217608.09 29308.09 + 3 544.02 689.98 216918.11 29852.11 + 4 542.30 691.70 216226.41 30394.41 + 5 540.57 693.43 215532.98 30934.98 + 6 538.83 695.17 214837.81 31473.81 + 7 537.09 696.91 214140.90 32010.90 + 8 535.35 698.65 213442.25 32546.25 + 9 533.61 700.39 212741.86 33079.86 +10 531.85 702.15 212039.71 33611.71 +11 530.10 703.90 211335.81 34141.81 +12 528.34 705.66 210630.15 34670.15 + +YR. 5 6455.26 8352.74 + + 1 526.58 707.42 209922.73 35196.73 + 2 524.81 709.19 209213.54 35721.54 + 3 523.03 710.97 208502.57 36244.57 + 4 521.26 712.74 207789.83 36765.83 + 5 519.47 714.53 207075.30 37285.30 + 6 517.69 716.31 206358.99 37802.99 + 7 515.90 718.10 205640.89 38318.89 + 8 514.10 719.90 204920.99 38832.99 + 9 512.30 721.70 204199.29 39345.29 +10 510.50 723.50 203475.79 39855.79 +11 508.69 725.31 202750.48 40364.48 +12 506.88 727.12 202023.36 40871.36 + +YR. 6 6201.21 8606.79 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 505.06 728.94 201294.42 41376.42 + 2 503.24 730.76 200563.66 41879.66 + 3 501.41 732.59 199831.07 42381.07 + 4 499.58 734.42 199096.65 42880.65 + 5 497.74 736.26 198360.39 43378.39 + 6 495.90 738.10 197622.29 43874.29 + 7 494.06 739.94 196882.35 44368.35 + 8 492.21 741.79 196140.56 44860.56 + 9 490.35 743.65 195396.91 45350.91 +10 488.49 745.51 194651.40 45839.40 +11 486.63 747.37 193904.03 46326.03 +12 484.76 749.24 193154.79 46810.79 + +YR. 7 5939.43 8868.57 + + 1 482.89 751.11 192403.68 47293.68 + 2 481.01 752.99 191650.69 47774.69 + 3 479.13 754.87 190895.82 48253.82 + 4 477.24 756.76 190139.06 48731.06 + 5 475.35 758.65 189380.41 49206.41 + 6 473.45 760.55 188619.86 49679.86 + 7 471.55 762.45 187857.41 50151.41 + 8 469.64 764.36 187093.05 50621.05 + 9 467.73 766.27 186326.78 51088.78 +10 465.82 768.18 185558.60 51554.60 +11 463.90 770.10 184788.50 52018.50 +12 461.97 772.03 184016.47 52480.47 + +YR. 8 5669.68 9138.32 + + 1 460.04 773.96 183242.51 52940.51 + 2 458.11 775.89 182466.62 53398.62 + 3 456.17 777.83 181688.79 53854.79 + 4 454.22 779.78 180909.01 54309.01 + 5 452.27 781.73 180127.28 54761.28 + 6 450.32 783.68 179343.60 55211.60 + 7 448.36 785.64 178557.96 55659.96 + 8 446.39 787.61 177770.35 56106.35 + 9 444.43 789.57 176980.78 56550.78 +10 442.45 791.55 176189.23 56993.23 +11 440.47 793.53 175395.70 57433.70 +12 438.49 795.51 174600.19 57872.19 + +YR. 9 5391.72 9416.28 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 436.50 797.50 173802.69 58308.69 + 2 434.51 799.49 173003.20 58743.20 + 3 432.51 801.49 172201.71 59175.71 + 4 430.50 803.50 171398.21 59606.21 + 5 428.50 805.50 170592.71 60034.71 + 6 426.48 807.52 169785.19 60461.19 + 7 424.46 809.54 168975.65 60885.65 + 8 422.44 811.56 168164.09 61308.09 + 9 420.41 813.59 167350.50 61728.50 +10 418.38 815.62 166534.88 62146.88 +11 416.34 817.66 165717.22 62563.22 +12 414.29 819.71 164897.51 62977.51 + +YR. 10 5105.32 9702.68 + + 1 412.24 821.76 164075.75 63389.75 + 2 410.19 823.81 163251.94 63799.94 + 3 408.13 825.87 162426.07 64208.07 + 4 406.07 827.93 161598.14 64614.14 + 5 404.00 830.00 160768.14 65018.14 + 6 401.92 832.08 159936.06 65420.06 + 7 399.84 834.16 159101.90 65819.90 + 8 397.75 836.25 158265.65 66217.65 + 9 395.66 838.34 157427.31 66613.31 +10 393.57 840.43 156586.88 67006.88 +11 391.47 842.53 155744.35 67398.35 +12 389.36 844.64 154899.71 67787.71 + +YR. 11 4810.20 9997.80 + + 1 387.25 846.75 154052.96 68174.96 + 2 385.13 848.87 153204.09 68560.09 + 3 383.01 850.99 152353.10 68943.10 + 4 380.88 853.12 151499.98 69323.98 + 5 378.75 855.25 150644.73 69702.73 + 6 376.61 857.39 149787.34 70079.34 + 7 374.47 859.53 148927.81 70453.81 + 8 372.32 861.68 148066.13 70826.13 + 9 370.17 863.83 147202.30 71196.30 +10 368.01 865.99 146336.31 71564.31 +11 365.84 868.16 145468.15 71930.15 +12 363.67 870.33 144597.82 72293.82 + +YR. 12 4506.11 10301.89 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 361.49 872.51 143725.31 72655.31 + 2 359.31 874.69 142850.62 73014.62 + 3 357.13 876.87 141973.75 73371.75 + 4 354.93 879.07 141094.68 73726.68 + 5 352.74 881.26 140213.42 74079.42 + 6 350.53 883.47 139329.95 74429.95 + 7 348.32 885.68 138444.27 74778.27 + 8 346.11 887.89 137556.38 75124.38 + 9 343.89 890.11 136666.27 75468.27 +10 341.67 892.33 135773.94 75809.94 +11 339.43 894.57 134879.37 76149.37 +12 337.20 896.80 133982.57 76486.57 + +YR. 13 4192.75 10615.25 + + 1 334.96 899.04 133083.53 76821.53 + 2 332.71 901.29 132182.24 77154.24 + 3 330.46 903.54 131278.70 77484.70 + 4 328.20 905.80 130372.90 77812.90 + 5 325.93 908.07 129464.83 78138.83 + 6 323.66 910.34 128554.49 78462.49 + 7 321.39 912.61 127641.88 78783.88 + 8 319.10 914.90 126726.98 79102.98 + 9 316.82 917.18 125809.80 79419.80 +10 314.52 919.48 124890.32 79734.32 +11 312.23 921.77 123968.55 80046.55 +12 309.92 924.08 123044.47 80356.47 + +YR. 14 3869.90 10938.10 + + 1 307.61 926.39 122118.08 80664.08 + 2 305.30 928.70 121189.38 80969.38 + 3 302.97 931.03 120258.35 81272.35 + 4 300.65 933.35 119325.00 81573.00 + 5 298.31 935.69 118389.31 81871.31 + 6 295.97 938.03 117451.28 82167.28 + 7 293.63 940.37 116510.91 82460.91 + 8 291.28 942.72 115568.19 82752.19 + 9 288.92 945.08 114623.11 83041.11 +10 286.56 947.44 113675.67 83327.67 +11 284.19 949.81 112725.86 83611.86 +12 281.81 952.19 111773.67 83893.67 + +YR. 15 3537.20 11270.80 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 279.43 954.57 110819.10 84173.10 + 2 277.05 956.95 109862.15 84450.15 + 3 274.66 959.34 108902.81 84724.81 + 4 272.26 961.74 107941.07 84997.07 + 5 269.85 964.15 106976.92 85266.92 + 6 267.44 966.56 106010.36 85534.36 + 7 265.03 968.97 105041.39 85799.39 + 8 262.60 971.40 104069.99 86061.99 + 9 260.17 973.83 103096.16 86322.16 +10 257.74 976.26 102119.90 86579.90 +11 255.30 978.70 101141.20 86835.20 +12 252.85 981.15 100160.05 87088.05 + +YR. 16 3194.38 11613.62 + + 1 250.40 983.60 99176.45 87338.45 + 2 247.94 986.06 98190.39 87586.39 + 3 245.48 988.52 97201.87 87831.87 + 4 243.00 991.00 96210.87 88074.87 + 5 240.53 993.47 95217.40 88315.40 + 6 238.04 995.96 94221.44 88553.44 + 7 235.55 998.45 93222.99 88788.99 + 8 233.06 1000.94 92222.05 89022.05 + 9 230.56 1003.44 91218.61 89252.61 +10 228.05 1005.95 90212.66 89480.66 +11 225.53 1008.47 89204.19 89706.19 +12 223.01 1010.99 88193.20 89929.20 + +YR. 17 2841.15 11966.85 + + 1 220.48 1013.52 87179.68 90149.68 + 2 217.95 1016.05 86163.63 90367.63 + 3 215.41 1018.59 85145.04 90583.04 + 4 212.86 1021.14 84123.90 90795.90 + 5 210.31 1023.69 83100.21 91006.21 + 6 207.75 1026.25 82073.96 91213.96 + 7 205.18 1028.82 81045.14 91419.14 + 8 202.61 1031.39 80013.75 91621.75 + 9 200.03 1033.97 78979.78 91821.78 +10 197.45 1036.55 77943.23 92019.23 +11 194.86 1039.14 76904.09 92214.09 +12 192.26 1041.74 75862.35 92406.35 + +YR. 18 2477.15 12330.85 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 189.66 1044.34 74818.01 92596.01 + 2 187.05 1046.95 73771.06 92783.06 + 3 184.43 1049.57 72721.49 92967.49 + 4 181.80 1052.20 71669.29 93149.29 + 5 179.17 1054.83 70614.46 93328.46 + 6 176.54 1057.46 69557.00 93505.00 + 7 173.89 1060.11 68496.89 93678.89 + 8 171.24 1062.76 67434.13 93850.13 + 9 168.59 1065.41 66368.72 94018.72 +10 165.92 1068.08 65300.64 94184.64 +11 163.25 1070.75 64229.89 94347.89 +12 160.57 1073.43 63156.46 94508.46 + +YR. 19 2102.11 12705.89 + + 1 157.89 1076.11 62080.35 94666.35 + 2 155.20 1078.80 61001.55 94821.55 + 3 152.50 1081.50 59920.05 94974.05 + 4 149.80 1084.20 58835.85 95123.85 + 5 147.09 1086.91 57748.94 95270.94 + 6 144.37 1089.63 56659.31 95415.31 + 7 141.65 1092.35 55566.96 95556.96 + 8 138.92 1095.08 54471.88 95695.88 + 9 136.18 1097.82 53374.06 95832.06 +10 133.44 1100.56 52273.50 95965.50 +11 130.68 1103.32 51170.18 96096.18 +12 127.93 1106.07 50064.11 96224.11 + +YR. 20 1715.65 13092.35 + + 1 125.16 1108.84 48955.27 96349.27 + 2 122.39 1111.61 47843.66 96471.66 + 3 119.61 1114.39 46729.27 96591.27 + 4 116.82 1117.18 45612.09 96708.09 + 5 114.03 1119.97 44492.12 96822.12 + 6 111.23 1122.77 43369.35 96933.35 + 7 108.42 1125.58 42243.77 97041.77 + 8 105.61 1128.39 41115.38 97147.38 + 9 102.79 1131.21 39984.17 97250.17 +10 99.96 1134.04 38850.13 97350.13 +11 97.13 1136.87 37713.26 97447.26 +12 94.28 1139.72 36573.54 97541.54 + +YR. 21 1317.43 13490.57 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 91.43 1142.57 35430.97 97632.97 + 2 88.58 1145.42 34285.55 97721.55 + 3 85.71 1148.29 33137.26 97807.26 + 4 82.84 1151.16 31986.10 97890.10 + 5 79.97 1154.03 30832.07 97970.07 + 6 77.08 1156.92 29675.15 98047.15 + 7 74.19 1159.81 28515.34 98121.34 + 8 71.29 1162.71 27352.63 98192.63 + 9 68.38 1165.62 26187.01 98261.01 +10 65.47 1168.53 25018.48 98326.48 +11 62.55 1171.45 23847.03 98389.03 +12 59.62 1174.38 22672.65 98448.65 + +YR. 22 907.11 13900.89 + + 1 56.68 1177.32 21495.33 98505.33 + 2 53.74 1180.26 20315.07 98559.07 + 3 50.79 1183.21 19131.86 98609.86 + 4 47.83 1186.17 17945.69 98657.69 + 5 44.86 1189.14 16756.55 98702.55 + 6 41.89 1192.11 15564.44 98744.44 + 7 38.91 1195.09 14369.35 98783.35 + 8 35.92 1198.08 13171.27 98819.27 + 9 32.93 1201.07 11970.20 98852.20 +10 29.93 1204.07 10766.13 98882.13 +11 26.92 1207.08 9559.05 98909.05 +12 23.90 1210.10 8348.95 98932.95 + +YR. 23 484.30 14323.70 + + 1 20.87 1213.13 7135.82 98953.82 + 2 17.84 1216.16 5919.66 98971.66 + 3 14.80 1219.20 4700.46 98986.46 + 4 11.75 1222.25 3478.21 98998.21 + 5 8.70 1225.30 2252.91 99006.91 + 6 5.63 1228.37 1024.54 99012.54 + 7 2.56 1231.44 -206.90 99015.10 + 8 -0.52 1234.52 -1441.42 99014.58 + 9 -3.60 1237.60 -2679.02 99010.98 +10 -6.70 1240.70 -3919.72 99004.28 +11 -9.80 1243.80 -5163.52 98994.48 +12 -12.91 1246.91 -6410.43 98981.57 + +YR. 24 48.62 14759.38 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 -16.03 1250.03 -7660.46 98965.54 + 2 -19.15 1253.15 -8913.61 98946.39 + 3 -22.28 1256.28 -10169.89 98924.11 + 4 -25.42 1259.42 -11429.31 98898.69 + 5 -28.57 1262.57 -12691.88 98870.12 + 6 -31.73 1265.73 -13957.61 98838.39 + 7 -34.89 1268.89 -15226.50 98803.50 + 8 -38.07 1272.07 -16498.57 98765.43 + 9 -41.25 1275.25 -17773.82 98724.18 +10 -44.43 1278.43 -19052.25 98679.75 +11 -47.63 1281.63 -20333.88 98632.12 +12 -50.83 1284.83 -21618.71 98581.29 + +YR. 25 -400.28 15208.28 + + 1 -54.05 1288.05 -22906.76 98527.24 + 2 -57.27 1291.27 -24198.03 98469.97 + 3 -60.50 1294.50 -25492.53 98409.47 + 4 -63.73 1297.73 -26790.26 98345.74 + 5 -66.98 1300.98 -28091.24 98278.76 + 6 -70.23 1304.23 -29395.47 98208.53 + 7 -73.49 1307.49 -30702.96 98135.04 + 8 -76.76 1310.76 -32013.72 98058.28 + 9 -80.03 1314.03 -33327.75 97978.25 +10 -83.32 1317.32 -34645.07 97894.93 +11 -86.61 1320.61 -35965.68 97808.32 +12 -89.91 1323.91 -37289.59 97718.41 + +YR. 26 -862.88 15670.88 + + 1 -93.22 1327.22 -38616.81 97625.19 + 2 -96.54 1330.54 -39947.35 97528.65 + 3 -99.87 1333.87 -41281.22 97428.78 + 4 -103.20 1337.20 -42618.42 97325.58 + 5 -106.55 1340.55 -43958.97 97219.03 + 6 -109.90 1343.90 -45302.87 97109.13 + 7 -113.26 1347.26 -46650.13 96995.87 + 8 -116.63 1350.63 -48000.76 96879.24 + 9 -120.00 1354.00 -49354.76 96759.24 +10 -123.39 1357.39 -50712.15 96635.85 +11 -126.78 1360.78 -52072.93 96509.07 +12 -130.18 1364.18 -53437.11 96378.89 + +YR. 27 -1339.52 16147.52 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 -133.59 1367.59 -54804.70 96245.30 + 2 -137.01 1371.01 -56175.71 96108.29 + 3 -140.44 1374.44 -57550.15 95967.85 + 4 -143.88 1377.88 -58928.03 95823.97 + 5 -147.32 1381.32 -60309.35 95676.65 + 6 -150.77 1384.77 -61694.12 95525.88 + 7 -154.24 1388.24 -63082.36 95371.64 + 8 -157.71 1391.71 -64474.07 95213.93 + 9 -161.19 1395.19 -65869.26 95052.74 +10 -164.67 1398.67 -67267.93 94888.07 +11 -168.17 1402.17 -68670.10 94719.90 +12 -171.68 1405.68 -70075.78 94548.22 + +YR. 28 -1830.67 16638.67 + + 1 -175.19 1409.19 -71484.97 94373.03 + 2 -178.71 1412.71 -72897.68 94194.32 + 3 -182.24 1416.24 -74313.92 94012.08 + 4 -185.78 1419.78 -75733.70 93826.30 + 5 -189.33 1423.33 -77157.03 93636.97 + 6 -192.89 1426.89 -78583.92 93444.08 + 7 -196.46 1430.46 -80014.38 93247.62 + 8 -200.04 1434.04 -81448.42 93047.58 + 9 -203.62 1437.62 -82886.04 92843.96 +10 -207.22 1441.22 -84327.26 92636.74 +11 -210.82 1444.82 -85772.08 92425.92 +12 -214.43 1448.43 -87220.51 92211.49 + +YR. 29 -2336.73 17144.73 + + 1 -218.05 1452.05 -88672.56 91993.44 + 2 -221.68 1455.68 -90128.24 91771.76 + 3 -225.32 1459.32 -91587.56 91546.44 + 4 -228.97 1462.97 -93050.53 91317.47 + 5 -232.63 1466.63 -94517.16 91084.84 + 6 -236.29 1470.29 -95987.45 90848.55 + 7 -239.97 1473.97 -97461.42 90608.58 + 8 -243.65 1477.65 -98939.07 90364.93 + 9 -247.35 1481.35 -100420.42 90117.58 +10 -251.05 1485.05 -101905.47 89866.53 +11 -254.76 1488.76 -103394.23 89611.77 +12 -258.49 -103394.23 0.00 89353.28 + LAST PAYMENT = $-103653. + +YR. 30 -2858.21 -87220.51 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $-103653. + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + LAST PAYMENT = $-103653. + +YR. 31 0.00 0.00 + + +CHANGE DATA AND RECOMPUTE? (1=YES, 0=NO)? 0 diff --git a/SCBP/AMORTTAB.dif b/SCBP/AMORTTAB.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/AMORTTAB.run b/SCBP/AMORTTAB.run new file mode 100644 index 0000000..22a2fc3 --- /dev/null +++ b/SCBP/AMORTTAB.run @@ -0,0 +1,682 @@ +MORTGAGE AMORTIZATION TABLE + +REGULAR PAYMENT? 1234 +TERM IN YEARS? 30 +PRINCIPAL? 250000 +ANNUAL INTEREST RATE? 3 +NUMBER OF PAYMENTS PER YEAR? 12 +START PRINTING WITH WHAT YEAR? 1 + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 625.00 609.00 249391.00 625.00 + 2 623.48 610.52 248780.48 1248.48 + 3 621.95 612.05 248168.43 1870.43 + 4 620.42 613.58 247554.85 2490.85 + 5 618.89 615.11 246939.74 3109.74 + 6 617.35 616.65 246323.09 3727.09 + 7 615.81 618.19 245704.90 4342.90 + 8 614.26 619.74 245085.16 4957.16 + 9 612.71 621.29 244463.87 5569.87 +10 611.16 622.84 243841.03 6181.03 +11 609.60 624.40 243216.63 6790.63 +12 608.04 625.96 242590.67 7398.67 + +YR. 1 7398.67 7409.33 + + 1 606.48 627.52 241963.15 8005.15 + 2 604.91 629.09 241334.06 8610.06 + 3 603.34 630.66 240703.40 9213.40 + 4 601.76 632.24 240071.16 9815.16 + 5 600.18 633.82 239437.34 10415.34 + 6 598.59 635.41 238801.93 11013.93 + 7 597.00 637.00 238164.93 11610.93 + 8 595.41 638.59 237526.34 12206.34 + 9 593.82 640.18 236886.16 12800.16 +10 592.22 641.78 236244.38 13392.38 +11 590.61 643.39 235600.99 13982.99 +12 589.00 645.00 234955.99 14571.99 + +YR. 2 7173.32 7634.68 + + 1 587.39 646.61 234309.38 15159.38 + 2 585.77 648.23 233661.15 15745.15 + 3 584.15 649.85 233011.30 16329.30 + 4 582.53 651.47 232359.83 16911.83 + 5 580.90 653.10 231706.73 17492.73 + 6 579.27 654.73 231052.00 18072.00 + 7 577.63 656.37 230395.63 18649.63 + 8 575.99 658.01 229737.62 19225.62 + 9 574.34 659.66 229077.96 19799.96 +10 572.69 661.31 228416.65 20372.65 +11 571.04 662.96 227753.69 20943.69 +12 569.38 664.62 227089.07 21513.07 + +YR. 3 6941.08 7866.92 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 567.72 666.28 226422.79 22080.79 + 2 566.06 667.94 225754.85 22646.85 + 3 564.39 669.61 225085.24 23211.24 + 4 562.71 671.29 224413.95 23773.95 + 5 561.03 672.97 223740.98 24334.98 + 6 559.35 674.65 223066.33 24894.33 + 7 557.67 676.33 222390.00 25452.00 + 8 555.98 678.02 221711.98 26007.98 + 9 554.28 679.72 221032.26 26562.26 +10 552.58 681.42 220350.84 27114.84 +11 550.88 683.12 219667.72 27665.72 +12 549.17 684.83 218982.89 28214.89 + +YR. 4 6701.82 8106.18 + + 1 547.46 686.54 218296.35 28762.35 + 2 545.74 688.26 217608.09 29308.09 + 3 544.02 689.98 216918.11 29852.11 + 4 542.30 691.70 216226.41 30394.41 + 5 540.57 693.43 215532.98 30934.98 + 6 538.83 695.17 214837.81 31473.81 + 7 537.09 696.91 214140.90 32010.90 + 8 535.35 698.65 213442.25 32546.25 + 9 533.61 700.39 212741.86 33079.86 +10 531.85 702.15 212039.71 33611.71 +11 530.10 703.90 211335.81 34141.81 +12 528.34 705.66 210630.15 34670.15 + +YR. 5 6455.26 8352.74 + + 1 526.58 707.42 209922.73 35196.73 + 2 524.81 709.19 209213.54 35721.54 + 3 523.03 710.97 208502.57 36244.57 + 4 521.26 712.74 207789.83 36765.83 + 5 519.47 714.53 207075.30 37285.30 + 6 517.69 716.31 206358.99 37802.99 + 7 515.90 718.10 205640.89 38318.89 + 8 514.10 719.90 204920.99 38832.99 + 9 512.30 721.70 204199.29 39345.29 +10 510.50 723.50 203475.79 39855.79 +11 508.69 725.31 202750.48 40364.48 +12 506.88 727.12 202023.36 40871.36 + +YR. 6 6201.21 8606.79 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 505.06 728.94 201294.42 41376.42 + 2 503.24 730.76 200563.66 41879.66 + 3 501.41 732.59 199831.07 42381.07 + 4 499.58 734.42 199096.65 42880.65 + 5 497.74 736.26 198360.39 43378.39 + 6 495.90 738.10 197622.29 43874.29 + 7 494.06 739.94 196882.35 44368.35 + 8 492.21 741.79 196140.56 44860.56 + 9 490.35 743.65 195396.91 45350.91 +10 488.49 745.51 194651.40 45839.40 +11 486.63 747.37 193904.03 46326.03 +12 484.76 749.24 193154.79 46810.79 + +YR. 7 5939.43 8868.57 + + 1 482.89 751.11 192403.68 47293.68 + 2 481.01 752.99 191650.69 47774.69 + 3 479.13 754.87 190895.82 48253.82 + 4 477.24 756.76 190139.06 48731.06 + 5 475.35 758.65 189380.41 49206.41 + 6 473.45 760.55 188619.86 49679.86 + 7 471.55 762.45 187857.41 50151.41 + 8 469.64 764.36 187093.05 50621.05 + 9 467.73 766.27 186326.78 51088.78 +10 465.82 768.18 185558.60 51554.60 +11 463.90 770.10 184788.50 52018.50 +12 461.97 772.03 184016.47 52480.47 + +YR. 8 5669.68 9138.32 + + 1 460.04 773.96 183242.51 52940.51 + 2 458.11 775.89 182466.62 53398.62 + 3 456.17 777.83 181688.79 53854.79 + 4 454.22 779.78 180909.01 54309.01 + 5 452.27 781.73 180127.28 54761.28 + 6 450.32 783.68 179343.60 55211.60 + 7 448.36 785.64 178557.96 55659.96 + 8 446.39 787.61 177770.35 56106.35 + 9 444.43 789.57 176980.78 56550.78 +10 442.45 791.55 176189.23 56993.23 +11 440.47 793.53 175395.70 57433.70 +12 438.49 795.51 174600.19 57872.19 + +YR. 9 5391.72 9416.28 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 436.50 797.50 173802.69 58308.69 + 2 434.51 799.49 173003.20 58743.20 + 3 432.51 801.49 172201.71 59175.71 + 4 430.50 803.50 171398.21 59606.21 + 5 428.50 805.50 170592.71 60034.71 + 6 426.48 807.52 169785.19 60461.19 + 7 424.46 809.54 168975.65 60885.65 + 8 422.44 811.56 168164.09 61308.09 + 9 420.41 813.59 167350.50 61728.50 +10 418.38 815.62 166534.88 62146.88 +11 416.34 817.66 165717.22 62563.22 +12 414.29 819.71 164897.51 62977.51 + +YR. 10 5105.32 9702.68 + + 1 412.24 821.76 164075.75 63389.75 + 2 410.19 823.81 163251.94 63799.94 + 3 408.13 825.87 162426.07 64208.07 + 4 406.07 827.93 161598.14 64614.14 + 5 404.00 830.00 160768.14 65018.14 + 6 401.92 832.08 159936.06 65420.06 + 7 399.84 834.16 159101.90 65819.90 + 8 397.75 836.25 158265.65 66217.65 + 9 395.66 838.34 157427.31 66613.31 +10 393.57 840.43 156586.88 67006.88 +11 391.47 842.53 155744.35 67398.35 +12 389.36 844.64 154899.71 67787.71 + +YR. 11 4810.20 9997.80 + + 1 387.25 846.75 154052.96 68174.96 + 2 385.13 848.87 153204.09 68560.09 + 3 383.01 850.99 152353.10 68943.10 + 4 380.88 853.12 151499.98 69323.98 + 5 378.75 855.25 150644.73 69702.73 + 6 376.61 857.39 149787.34 70079.34 + 7 374.47 859.53 148927.81 70453.81 + 8 372.32 861.68 148066.13 70826.13 + 9 370.17 863.83 147202.30 71196.30 +10 368.01 865.99 146336.31 71564.31 +11 365.84 868.16 145468.15 71930.15 +12 363.67 870.33 144597.82 72293.82 + +YR. 12 4506.11 10301.89 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 361.49 872.51 143725.31 72655.31 + 2 359.31 874.69 142850.62 73014.62 + 3 357.13 876.87 141973.75 73371.75 + 4 354.93 879.07 141094.68 73726.68 + 5 352.74 881.26 140213.42 74079.42 + 6 350.53 883.47 139329.95 74429.95 + 7 348.32 885.68 138444.27 74778.27 + 8 346.11 887.89 137556.38 75124.38 + 9 343.89 890.11 136666.27 75468.27 +10 341.67 892.33 135773.94 75809.94 +11 339.43 894.57 134879.37 76149.37 +12 337.20 896.80 133982.57 76486.57 + +YR. 13 4192.75 10615.25 + + 1 334.96 899.04 133083.53 76821.53 + 2 332.71 901.29 132182.24 77154.24 + 3 330.46 903.54 131278.70 77484.70 + 4 328.20 905.80 130372.90 77812.90 + 5 325.93 908.07 129464.83 78138.83 + 6 323.66 910.34 128554.49 78462.49 + 7 321.39 912.61 127641.88 78783.88 + 8 319.10 914.90 126726.98 79102.98 + 9 316.82 917.18 125809.80 79419.80 +10 314.52 919.48 124890.32 79734.32 +11 312.23 921.77 123968.55 80046.55 +12 309.92 924.08 123044.47 80356.47 + +YR. 14 3869.90 10938.10 + + 1 307.61 926.39 122118.08 80664.08 + 2 305.30 928.70 121189.38 80969.38 + 3 302.97 931.03 120258.35 81272.35 + 4 300.65 933.35 119325.00 81573.00 + 5 298.31 935.69 118389.31 81871.31 + 6 295.97 938.03 117451.28 82167.28 + 7 293.63 940.37 116510.91 82460.91 + 8 291.28 942.72 115568.19 82752.19 + 9 288.92 945.08 114623.11 83041.11 +10 286.56 947.44 113675.67 83327.67 +11 284.19 949.81 112725.86 83611.86 +12 281.81 952.19 111773.67 83893.67 + +YR. 15 3537.20 11270.80 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 279.43 954.57 110819.10 84173.10 + 2 277.05 956.95 109862.15 84450.15 + 3 274.66 959.34 108902.81 84724.81 + 4 272.26 961.74 107941.07 84997.07 + 5 269.85 964.15 106976.92 85266.92 + 6 267.44 966.56 106010.36 85534.36 + 7 265.03 968.97 105041.39 85799.39 + 8 262.60 971.40 104069.99 86061.99 + 9 260.17 973.83 103096.16 86322.16 +10 257.74 976.26 102119.90 86579.90 +11 255.30 978.70 101141.20 86835.20 +12 252.85 981.15 100160.05 87088.05 + +YR. 16 3194.38 11613.62 + + 1 250.40 983.60 99176.45 87338.45 + 2 247.94 986.06 98190.39 87586.39 + 3 245.48 988.52 97201.87 87831.87 + 4 243.00 991.00 96210.87 88074.87 + 5 240.53 993.47 95217.40 88315.40 + 6 238.04 995.96 94221.44 88553.44 + 7 235.55 998.45 93222.99 88788.99 + 8 233.06 1000.94 92222.05 89022.05 + 9 230.56 1003.44 91218.61 89252.61 +10 228.05 1005.95 90212.66 89480.66 +11 225.53 1008.47 89204.19 89706.19 +12 223.01 1010.99 88193.20 89929.20 + +YR. 17 2841.15 11966.85 + + 1 220.48 1013.52 87179.68 90149.68 + 2 217.95 1016.05 86163.63 90367.63 + 3 215.41 1018.59 85145.04 90583.04 + 4 212.86 1021.14 84123.90 90795.90 + 5 210.31 1023.69 83100.21 91006.21 + 6 207.75 1026.25 82073.96 91213.96 + 7 205.18 1028.82 81045.14 91419.14 + 8 202.61 1031.39 80013.75 91621.75 + 9 200.03 1033.97 78979.78 91821.78 +10 197.45 1036.55 77943.23 92019.23 +11 194.86 1039.14 76904.09 92214.09 +12 192.26 1041.74 75862.35 92406.35 + +YR. 18 2477.15 12330.85 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 189.66 1044.34 74818.01 92596.01 + 2 187.05 1046.95 73771.06 92783.06 + 3 184.43 1049.57 72721.49 92967.49 + 4 181.80 1052.20 71669.29 93149.29 + 5 179.17 1054.83 70614.46 93328.46 + 6 176.54 1057.46 69557.00 93505.00 + 7 173.89 1060.11 68496.89 93678.89 + 8 171.24 1062.76 67434.13 93850.13 + 9 168.59 1065.41 66368.72 94018.72 +10 165.92 1068.08 65300.64 94184.64 +11 163.25 1070.75 64229.89 94347.89 +12 160.57 1073.43 63156.46 94508.46 + +YR. 19 2102.11 12705.89 + + 1 157.89 1076.11 62080.35 94666.35 + 2 155.20 1078.80 61001.55 94821.55 + 3 152.50 1081.50 59920.05 94974.05 + 4 149.80 1084.20 58835.85 95123.85 + 5 147.09 1086.91 57748.94 95270.94 + 6 144.37 1089.63 56659.31 95415.31 + 7 141.65 1092.35 55566.96 95556.96 + 8 138.92 1095.08 54471.88 95695.88 + 9 136.18 1097.82 53374.06 95832.06 +10 133.44 1100.56 52273.50 95965.50 +11 130.68 1103.32 51170.18 96096.18 +12 127.93 1106.07 50064.11 96224.11 + +YR. 20 1715.65 13092.35 + + 1 125.16 1108.84 48955.27 96349.27 + 2 122.39 1111.61 47843.66 96471.66 + 3 119.61 1114.39 46729.27 96591.27 + 4 116.82 1117.18 45612.09 96708.09 + 5 114.03 1119.97 44492.12 96822.12 + 6 111.23 1122.77 43369.35 96933.35 + 7 108.42 1125.58 42243.77 97041.77 + 8 105.61 1128.39 41115.38 97147.38 + 9 102.79 1131.21 39984.17 97250.17 +10 99.96 1134.04 38850.13 97350.13 +11 97.13 1136.87 37713.26 97447.26 +12 94.28 1139.72 36573.54 97541.54 + +YR. 21 1317.43 13490.57 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 91.43 1142.57 35430.97 97632.97 + 2 88.58 1145.42 34285.55 97721.55 + 3 85.71 1148.29 33137.26 97807.26 + 4 82.84 1151.16 31986.10 97890.10 + 5 79.97 1154.03 30832.07 97970.07 + 6 77.08 1156.92 29675.15 98047.15 + 7 74.19 1159.81 28515.34 98121.34 + 8 71.29 1162.71 27352.63 98192.63 + 9 68.38 1165.62 26187.01 98261.01 +10 65.47 1168.53 25018.48 98326.48 +11 62.55 1171.45 23847.03 98389.03 +12 59.62 1174.38 22672.65 98448.65 + +YR. 22 907.11 13900.89 + + 1 56.68 1177.32 21495.33 98505.33 + 2 53.74 1180.26 20315.07 98559.07 + 3 50.79 1183.21 19131.86 98609.86 + 4 47.83 1186.17 17945.69 98657.69 + 5 44.86 1189.14 16756.55 98702.55 + 6 41.89 1192.11 15564.44 98744.44 + 7 38.91 1195.09 14369.35 98783.35 + 8 35.92 1198.08 13171.27 98819.27 + 9 32.93 1201.07 11970.20 98852.20 +10 29.93 1204.07 10766.13 98882.13 +11 26.92 1207.08 9559.05 98909.05 +12 23.90 1210.10 8348.95 98932.95 + +YR. 23 484.30 14323.70 + + 1 20.87 1213.13 7135.82 98953.82 + 2 17.84 1216.16 5919.66 98971.66 + 3 14.80 1219.20 4700.46 98986.46 + 4 11.75 1222.25 3478.21 98998.21 + 5 8.70 1225.30 2252.91 99006.91 + 6 5.63 1228.37 1024.54 99012.54 + 7 2.56 1231.44 -206.90 99015.10 + 8 -0.52 1234.52 -1441.42 99014.58 + 9 -3.60 1237.60 -2679.02 99010.98 +10 -6.70 1240.70 -3919.72 99004.28 +11 -9.80 1243.80 -5163.52 98994.48 +12 -12.91 1246.91 -6410.43 98981.57 + +YR. 24 48.62 14759.38 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 -16.03 1250.03 -7660.46 98965.54 + 2 -19.15 1253.15 -8913.61 98946.39 + 3 -22.28 1256.28 -10169.89 98924.11 + 4 -25.42 1259.42 -11429.31 98898.69 + 5 -28.57 1262.57 -12691.88 98870.12 + 6 -31.73 1265.73 -13957.61 98838.39 + 7 -34.89 1268.89 -15226.50 98803.50 + 8 -38.07 1272.07 -16498.57 98765.43 + 9 -41.25 1275.25 -17773.82 98724.18 +10 -44.43 1278.43 -19052.25 98679.75 +11 -47.63 1281.63 -20333.88 98632.12 +12 -50.83 1284.83 -21618.71 98581.29 + +YR. 25 -400.28 15208.28 + + 1 -54.05 1288.05 -22906.76 98527.24 + 2 -57.27 1291.27 -24198.03 98469.97 + 3 -60.50 1294.50 -25492.53 98409.47 + 4 -63.73 1297.73 -26790.26 98345.74 + 5 -66.98 1300.98 -28091.24 98278.76 + 6 -70.23 1304.23 -29395.47 98208.53 + 7 -73.49 1307.49 -30702.96 98135.04 + 8 -76.76 1310.76 -32013.72 98058.28 + 9 -80.03 1314.03 -33327.75 97978.25 +10 -83.32 1317.32 -34645.07 97894.93 +11 -86.61 1320.61 -35965.68 97808.32 +12 -89.91 1323.91 -37289.59 97718.41 + +YR. 26 -862.88 15670.88 + + 1 -93.22 1327.22 -38616.81 97625.19 + 2 -96.54 1330.54 -39947.35 97528.65 + 3 -99.87 1333.87 -41281.22 97428.78 + 4 -103.20 1337.20 -42618.42 97325.58 + 5 -106.55 1340.55 -43958.97 97219.03 + 6 -109.90 1343.90 -45302.87 97109.13 + 7 -113.26 1347.26 -46650.13 96995.87 + 8 -116.63 1350.63 -48000.76 96879.24 + 9 -120.00 1354.00 -49354.76 96759.24 +10 -123.39 1357.39 -50712.15 96635.85 +11 -126.78 1360.78 -52072.93 96509.07 +12 -130.18 1364.18 -53437.11 96378.89 + +YR. 27 -1339.52 16147.52 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $ 1234 + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + 1 -133.59 1367.59 -54804.70 96245.30 + 2 -137.01 1371.01 -56175.71 96108.29 + 3 -140.44 1374.44 -57550.15 95967.85 + 4 -143.88 1377.88 -58928.03 95823.97 + 5 -147.32 1381.32 -60309.35 95676.65 + 6 -150.77 1384.77 -61694.12 95525.88 + 7 -154.24 1388.24 -63082.36 95371.64 + 8 -157.71 1391.71 -64474.07 95213.93 + 9 -161.19 1395.19 -65869.26 95052.74 +10 -164.67 1398.67 -67267.93 94888.07 +11 -168.17 1402.17 -68670.10 94719.90 +12 -171.68 1405.68 -70075.78 94548.22 + +YR. 28 -1830.67 16638.67 + + 1 -175.19 1409.19 -71484.97 94373.03 + 2 -178.71 1412.71 -72897.68 94194.32 + 3 -182.24 1416.24 -74313.92 94012.08 + 4 -185.78 1419.78 -75733.70 93826.30 + 5 -189.33 1423.33 -77157.03 93636.97 + 6 -192.89 1426.89 -78583.92 93444.08 + 7 -196.46 1430.46 -80014.38 93247.62 + 8 -200.04 1434.04 -81448.42 93047.58 + 9 -203.62 1437.62 -82886.04 92843.96 +10 -207.22 1441.22 -84327.26 92636.74 +11 -210.82 1444.82 -85772.08 92425.92 +12 -214.43 1448.43 -87220.51 92211.49 + +YR. 29 -2336.73 17144.73 + + 1 -218.05 1452.05 -88672.56 91993.44 + 2 -221.68 1455.68 -90128.24 91771.76 + 3 -225.32 1459.32 -91587.56 91546.44 + 4 -228.97 1462.97 -93050.53 91317.47 + 5 -232.63 1466.63 -94517.16 91084.84 + 6 -236.29 1470.29 -95987.45 90848.55 + 7 -239.97 1473.97 -97461.42 90608.58 + 8 -243.65 1477.65 -98939.07 90364.93 + 9 -247.35 1481.35 -100420.42 90117.58 +10 -251.05 1485.05 -101905.47 89866.53 +11 -254.76 1488.76 -103394.23 89611.77 +12 -258.49 -103394.23 0.00 89353.28 + LAST PAYMENT = $-103653. + +YR. 30 -2858.21 -87220.51 + + + + + + + + + + + + + + + + + + MORTGAGE AMORTIZATION TABLE + PRINCIPAL $ 250000 AT 3 % FOR 30 YEARS + REGULAR PAYMENT = $-103653. + +NO INTEREST AMORTIZED BALANCE ACCUM INTEREST + LAST PAYMENT = $-103653. + +YR. 31 0.00 0.00 + + +CHANGE DATA AND RECOMPUTE? (1=YES, 0=NO)? 0 diff --git a/SCBP/ANAL2VEC.80 b/SCBP/ANAL2VEC.80 new file mode 100644 index 0000000..7242f73 --- /dev/null +++ b/SCBP/ANAL2VEC.80 @@ -0,0 +1,21 @@ +ANALYSIS OF TWO VECTORS + + +VECTOR 1: X,Y,Z? 1,2,3 +VECTOR 2: X,Y,Z? 4,5,6 + +VECTOR 1 : +MAGNITUDE: 3.74166 +ANGLE WITH X-AXIS: 74.4986 +ANGLE WITH Y-AXIS: 57.6885 +ANGLE WITH Z-AXIS: 36.6992 + +VECTOR 2 : +MAGNITUDE: 8.77496 +ANGLE WITH X-AXIS: 62.8809 +ANGLE WITH Y-AXIS: 55.2635 +ANGLE WITH Z-AXIS: 46.8616 + +ANGLE BETWEEN VECTORS: 12.9332 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/ANAL2VEC.BAS b/SCBP/ANAL2VEC.BAS new file mode 100644 index 0000000..d0de24f --- /dev/null +++ b/SCBP/ANAL2VEC.BAS @@ -0,0 +1,52 @@ +1 DEF ARCCOS(X)=ACOS(X) +5 CLEAR 12000 +10 PRINT "ANALYSIS OF TWO VECTORS" +20 PRINT +30 DIM X(2), Y(2), Z(2), M(2) +35 PRINT +39 REM - STATEMENTS 40 TO 70 REQUEST VECTOR COORDINATES +40 PRINT "VECTOR 1: X,Y,Z"; +50 INPUT X(1),Y(1),Z(1) +60 PRINT "VECTOR 2: X,Y,Z"; +70 INPUT X(2),Y(2),Z(2) +80 PRINT +89 REM - LOOP TO ANALYZE BOTH VECTORS +90 FOR I=1 TO 2 +99 REM - CALCULATE MAGNITUDE, PRINT +100 M(I)=SQR(X(I)[2+Y(I)[2+Z(I)[2) +109 REM - IS VECTOR A POINT? IF YES, CANNOT COMPUTE AN ANGLE +110 IF M(I)=0 THEN 220 +120 PRINT "VECTOR";I;":" +130 PRINT "MAGNITUDE:";M(I) +139 REM - CONVERSION FACTOR FOR RADIANS TO DEGREES +140 S=57.29578 +149 REM - CALCULATE ANGLE BETWEEN VECTOR AND X-AXIS, PRINT +150 J=X(I)/M(I) +160 PRINT "ANGLE WITH X-AXIS:";ARCCOS(J)*S +169 REM - CALCULATE ANGLE BETWEEN VECTOR AND Y-AXIS, PRINT +170 J=Y(I)/M(I) +180 PRINT "ANGLE WITH Y-AXIS:";ARCCOS(J)*S +189 REM - CALCULATE ANGLE BETWEEN VECTOR AND Z-AXIS, PRINT +190 J=Z(I)/M(I) +200 PRINT "ANGLE WITH Z-AXIS:";ARCCOS(J)*S +210 PRINT +220 NEXT I +230 J=0 +239 REM - IF EITHER VECTOR A POINT, CANNOT COMPUTE ANGLE +240 IF M(1)=0 THEN 310 +250 IF M(2)=0 THEN 310 +259 REM - CALCULATE ANGLE BETWEEN VECTORS +260 J=(X(1)*X(2)+Y(1)*Y(2)+Z(1)*Z(2))/M(1)/M(2) +269 REM - ARE THE VECTORS PERPENDICULAR? +270 IF J<>0 THEN 300 +280 J=90 +290 GOTO 310 +299 REM - CALCULATE ANGLE IN DEGREES, PRINT +300 J=ATN(SQR(1-J[2)/J)*S +310 PRINT "ANGLE BETWEEN VECTORS:";J +320 PRINT +329 REM - RESTART OR END PROGRAM? +330 PRINT "MORE DATA (1=YES, 0=NO)"; +340 INPUT Z +350 IF Z=1 THEN 35 +360 END diff --git a/SCBP/ANAL2VEC.INP b/SCBP/ANAL2VEC.INP new file mode 100644 index 0000000..11957c6 --- /dev/null +++ b/SCBP/ANAL2VEC.INP @@ -0,0 +1,3 @@ +1,2,3 +4,5,6 +0 diff --git a/SCBP/ANAL2VEC.OUT b/SCBP/ANAL2VEC.OUT new file mode 100644 index 0000000..dae3c68 --- /dev/null +++ b/SCBP/ANAL2VEC.OUT @@ -0,0 +1,21 @@ +ANALYSIS OF TWO VECTORS + + +VECTOR 1: X,Y,Z? 1,2,3 +VECTOR 2: X,Y,Z? 4,5,6 + +VECTOR 1 : +MAGNITUDE: 3.74166 +ANGLE WITH X-AXIS: 74.4986 +ANGLE WITH Y-AXIS: 57.6885 +ANGLE WITH Z-AXIS: 36.6992 + +VECTOR 2 : +MAGNITUDE: 8.77496 +ANGLE WITH X-AXIS: 62.8809 +ANGLE WITH Y-AXIS: 55.2635 +ANGLE WITH Z-AXIS: 46.8616 + +ANGLE BETWEEN VECTORS: 12.9332 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/ANAL2VEC.dif b/SCBP/ANAL2VEC.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/ANAL2VEC.run b/SCBP/ANAL2VEC.run new file mode 100644 index 0000000..7242f73 --- /dev/null +++ b/SCBP/ANAL2VEC.run @@ -0,0 +1,21 @@ +ANALYSIS OF TWO VECTORS + + +VECTOR 1: X,Y,Z? 1,2,3 +VECTOR 2: X,Y,Z? 4,5,6 + +VECTOR 1 : +MAGNITUDE: 3.74166 +ANGLE WITH X-AXIS: 74.4986 +ANGLE WITH Y-AXIS: 57.6885 +ANGLE WITH Z-AXIS: 36.6992 + +VECTOR 2 : +MAGNITUDE: 8.77496 +ANGLE WITH X-AXIS: 62.8809 +ANGLE WITH Y-AXIS: 55.2635 +ANGLE WITH Z-AXIS: 46.8616 + +ANGLE BETWEEN VECTORS: 12.9332 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/ANGLMET.80 b/SCBP/ANGLMET.80 new file mode 100644 index 0000000..9466c46 --- /dev/null +++ b/SCBP/ANGLMET.80 @@ -0,0 +1,8 @@ +ANGLO TO METRIC + +(TO END PROGRAM ENTER 0) +WHICH CONVERSION DO YOU NEED (1 TO 17)? 1 +VALUE TO BE CONVERTED? 23.45 + 23.45 INCHES = 9.23226 CENTIMETERS + +WHICH CONVERSION DO YOU NEED (1 TO 17)? 0 diff --git a/SCBP/ANGLMET.BAS b/SCBP/ANGLMET.BAS new file mode 100644 index 0000000..697c7ab --- /dev/null +++ b/SCBP/ANGLMET.BAS @@ -0,0 +1,64 @@ +10 PRINT "ANGLO TO METRIC" +20 PRINT +29 REM - ESTABLISH VARIABLES FOR 17 CONVERSION FACTORS +30 DIM C(17) +39 REM - LOOP TO ASSIGN CONVERSION FACTORS INTO C( ) +40 FOR N=1 TO 17 +50 READ C(N) +60 NEXT N +69 REM - DATA TABLE OF SEVENTEEN CONVERSION FACTORS +70 DATA 0.3937,3.281E-2,3.281,1.094,0.6214,.01136,.003785,.2366,2.113 +80 DATA 1.057,0.2642,0.02838,2.104,0.3527,2.205,9.842E-4,0.6214,0 +89 REM - GET NUMBER OF CONVERSION FROM PROGRAM DESCRIPTION +90 PRINT "(TO END PROGRAM ENTER 0)" +100 PRINT "WHICH CONVERSION DO YOU NEED (1 TO 17)"; +110 INPUT N +119 REM - END PROGRAM? +120 IF N=0 THEN 540 +129 REM - CONVERSION AVAILABLE? +130 IF N>17 THEN 100 +140 PRINT "VALUE TO BE CONVERTED"; +150 INPUT I +159 REM - PERFORM CONVERSION USING PROPER CONVERSION FACTOR +160 R=I*C(N) +169 REM - DIERCT PROGRAM TO PROPER CONVERSION UNITS, PRINT RESULTS +170 ON N GOTO 180,200,220,240,260,280,300,320,340,360,380,400,420,440,460,480,500 +180 PRINT I;"INCHES =";R;"CENTIMETERS" +190 GOTO 520 +200 PRINT I;"FEET =";R;"CENTIMETERS" +210 GOTO 520 +220 PRINT I;"FEET =";R;"METERS" +230 GOTO 520 +240 PRINT I;"YARDS =";R;"METERS" +250 GOTO 520 +260 PRINT I;"MILES =";R;"KILOMETERS" +270 GOTO 520 +280 PRINT I;"TSP. =";R;"CUBIC CENTIMETERS" +290 GOTO 520 +300 PRINT I;"TBSP. =";R;"CUBIC CENTIMETERS" +310 GOTO 520 +320 PRINT I;"CUPS =";R;"LITERS" +330 GOTO 520 +340 PRINT I;"PINTS =";R;"LITERS" +350 GOTO 520 +360 PRINT I;"QUARTS =";R;"LITERS" +370 GOTO 520 +380 PRINT I;"GALLONS =";R;"LITERS" +390 GOTO 520 +400 PRINT I;"BUSHELS =";R;"LITERS" +410 GOTO 520 +420 PRINT I;"PECKS =";R;"LITERS" +430 GOTO 520 +440 PRINT I;"OUNCES =";R;"GRAMS" +450 GOTO 520 +460 PRINT I;"POUNDS =";R;"KILOGRAMS" +470 GOTO 520 +480 PRINT I;"TONS =";R;"KILOGRAM" +490 GOTO 520 +499 REM - CONVERT FROM DEGREES FARENHEIT TO CELSIUS +500 R=(I-32)*5/9 +510 PRINT I;"DEGREES FAHRENHEIT =";R;"CELSIUS" +520 PRINT +529 REM - RESTART PROGRAM +530 GOTO 100 +540 END diff --git a/SCBP/ANGLMET.INP b/SCBP/ANGLMET.INP new file mode 100644 index 0000000..18d778a --- /dev/null +++ b/SCBP/ANGLMET.INP @@ -0,0 +1,3 @@ +1 +23.45 +0 diff --git a/SCBP/ANGLMET.OUT b/SCBP/ANGLMET.OUT new file mode 100644 index 0000000..11947a1 --- /dev/null +++ b/SCBP/ANGLMET.OUT @@ -0,0 +1,8 @@ +ANGLO TO METRIC + +(TO END PROGRAM ENTER 0) +WHICH CONVERSION DO YOU NEED (1 TO 17)? 1 +VALUE TO BE CONVERTED? 23.45 + 23.45 INCHES = 9.23226 CENTIMETERS + +WHICH CONVERSION DO YOU NEED (1 TO 17)? 0 diff --git a/SCBP/ANGLMET.dif b/SCBP/ANGLMET.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/ANGLMET.run b/SCBP/ANGLMET.run new file mode 100644 index 0000000..9466c46 --- /dev/null +++ b/SCBP/ANGLMET.run @@ -0,0 +1,8 @@ +ANGLO TO METRIC + +(TO END PROGRAM ENTER 0) +WHICH CONVERSION DO YOU NEED (1 TO 17)? 1 +VALUE TO BE CONVERTED? 23.45 + 23.45 INCHES = 9.23226 CENTIMETERS + +WHICH CONVERSION DO YOU NEED (1 TO 17)? 0 diff --git a/SCBP/AREAPOLY.80 b/SCBP/AREAPOLY.80 new file mode 100644 index 0000000..1f216d3 --- /dev/null +++ b/SCBP/AREAPOLY.80 @@ -0,0 +1,9 @@ +AREA OF A POLYGON + +NUMBER OF VERTICES (ENTER 0 TO END PROGRAM)? 3 +COORDINATES OF VERTEX 1 ? 1,2 + VERTEX 2 ? 3,6 + VERTEX 3 ? 7,1 +AREA = 13 + +NUMBER OF VERTICES (ENTER 0 TO END PROGRAM)? 0 diff --git a/SCBP/AREAPOLY.BAS b/SCBP/AREAPOLY.BAS new file mode 100644 index 0000000..4f2ac6c --- /dev/null +++ b/SCBP/AREAPOLY.BAS @@ -0,0 +1,29 @@ +10 PRINT "AREA OF A POLYGON" +20 PRINT +29 REM - COORDINATE ARRAYS SHOULD BE SET TO (NUMBER OF VERTICES+1) +30 DIM X(25),Y(25) +40 PRINT "NUMBER OF VERTICES (ENTER 0 TO END PROGRAM)"; +50 INPUT N +59 REM - END PROGRAM? +60 IF N=0 THEN 230 +69 REM - LOOP TO ENTER COORDINATES IN ORDER OF SUCCESSIVE VERTICES +70 FOR I=1 TO N +80 IF I>1 THEN 110 +90 PRINT "COORDINATES OF VERTEX";I; +100 GOTO 120 +110 PRINT " VERTEX";I; +120 INPUT X(I),Y(I) +130 NEXT I +139 REM - FIRST VERTEX SERVES AS LAST VERTEX +140 X(N+1)=X(1) +150 Y(N+1)=Y(1) +160 A=0 +169 REM - CALCULATE AREA, PRINT +170 FOR I=1 TO N +180 A=A+(X(I)+X(I+1))*(Y(I)-Y(I+1)) +190 NEXT I +200 PRINT "AREA =";A/2 +210 PRINT +219 REM - RESTART PROGRAM +220 GOTO 40 +230 END diff --git a/SCBP/AREAPOLY.INP b/SCBP/AREAPOLY.INP new file mode 100644 index 0000000..8dcf8af --- /dev/null +++ b/SCBP/AREAPOLY.INP @@ -0,0 +1,5 @@ +3 +1,2 +3,6 +7,1 +0 diff --git a/SCBP/AREAPOLY.OUT b/SCBP/AREAPOLY.OUT new file mode 100644 index 0000000..e0bd416 --- /dev/null +++ b/SCBP/AREAPOLY.OUT @@ -0,0 +1,9 @@ +AREA OF A POLYGON + +NUMBER OF VERTICES (ENTER 0 TO END PROGRAM)? 3 +COORDINATES OF VERTEX 1 ? 1,2 + VERTEX 2 ? 3,6 + VERTEX 3 ? 7,1 +AREA = 13 + +NUMBER OF VERTICES (ENTER 0 TO END PROGRAM)? 0 diff --git a/SCBP/AREAPOLY.dif b/SCBP/AREAPOLY.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/AREAPOLY.run b/SCBP/AREAPOLY.run new file mode 100644 index 0000000..1f216d3 --- /dev/null +++ b/SCBP/AREAPOLY.run @@ -0,0 +1,9 @@ +AREA OF A POLYGON + +NUMBER OF VERTICES (ENTER 0 TO END PROGRAM)? 3 +COORDINATES OF VERTEX 1 ? 1,2 + VERTEX 2 ? 3,6 + VERTEX 3 ? 7,1 +AREA = 13 + +NUMBER OF VERTICES (ENTER 0 TO END PROGRAM)? 0 diff --git a/SCBP/BAS b/SCBP/BAS new file mode 100644 index 0000000..1f9451a --- /dev/null +++ b/SCBP/BAS @@ -0,0 +1,140 @@ +00readme.txt +ALFASORT.BAS +ALFASORT.INP +AMORTTAB.BAS +AMORTTAB.INP +ANAL2VEC.BAS +ANAL2VEC.INP +ANGLMET.BAS +ANGLMET.INP +AREAPOLY.BAS +AREAPOLY.INP +BINODIST.BAS +BINODIST.INP +CHECWRIT.BAS +CHECWRIT.INP +CHI2DIST.BAS +CHI2DIST.INP +CHI2TEST.BAS +CHI2TEST.INP +COMMPAP.BAS +COMMPAP.INP +CORDCONV.BAS +CORDCONV.INP +CURVINT.BAS +CURVINT.INP +DAY2DAY.BAS +DAY2DAY.INP +DAYWEEK.BAS +DAYWEEK.INP +DEGRAD.BAS +DEGRAD.INP +DEPAMT.BAS +DEPAMT.INP +DEPRATE.BAS +DEPRATE.INP +DEPRSKED.BAS +DEPRSKED.INP +DERIV.BAS +DERIV.INP +EARNINT.BAS +EARNINT.INP +EFFINT.BAS +EFFINT.INP +EXPREGR.BAS +EXPREGR.INP +FDIST.BAS +FDIST.INP +FUTVALDE.BAS +FUTVALDE.INP +FUTVALIN.BAS +FUTVALIN.INP +GCD.BAS +GCD.INP +GEOMEAN.BAS +GEOMEAN.INP +GEOREGR.BAS +GEOREGR.INP +GROWRATE.BAS +GROWRATE.INP +INITINV.BAS +INITINV.INP +INTGGAUS.BAS +INTGGAUS.INP +INTGSIMP.BAS +INTGSIMP.INP +INTGTRAP.BAS +INTGTRAP.INP +LABELS.BAS +LABELS.INP +LASTPAY.BAS +LASTPAY.INP +LINCORCO.BAS +LINCORCO.INP +LINEPROG.BAS +LINEPROG.INP +LININT.BAS +LININT.INP +LINREGR.BAS +LINREGR.INP +LOANBAL.BAS +LOANBAL.INP +LOANPAY.BAS +LOANPAY.INP +LOANRATE.BAS +LOANRATE.INP +LOANTERM.BAS +LOANTERM.INP +LPRINT.OUT +MANNWHIT.BAS +MANNWHIT.INP +MAPCHECK.BAS +MAPCHECK.INP +MATADD.BAS +MATADD.INP +MATINV.BAS +MATINV.INP +MATMULT.BAS +MATMULT.INP +MININV.BAS +MININV.INP +MLINREGR.BAS +MLINREGR.INP +NOMINT.BAS +NOMINT.INP +NORDREGR.BAS +NORDREGR.INP +NORMDIST.BAS +NORMDIST.INP +OPS2VEC.BAS +OPS2VEC.INP +PARTSTRI.BAS +PERMCOMB.BAS +PLOTFUNC.BAS +POISDIST.BAS +PRIFACT.BAS +PRINLOAN.BAS +QUADROOT.BAS +RADDEG.BAS +RECICOST.BAS +REGDEP.BAS +REGWDRAW.BAS +ROOTNEWT.BAS +ROOTPOLY.BAS +SALVAGE.BAS +SIMLEQNS.BAS +STDDEV.BAS +SYSREL.BAS +TDIST.BAS +TDISTEST.BAS +TRIGPOLY.BAS + +broken: +CORDPLOT.BAS.txt +ENTEPRIS.BAS.txt +FEDTAX.BAS.txt +MASTRDIR.BAS.txt +OTER.BAS.txt +PLOTPOL.BAS.txt +SHELSORT.BAS.txt +SHOPPING.BAS.txt diff --git a/SCBP/BINODIST.80 b/SCBP/BINODIST.80 new file mode 100644 index 0000000..3f0c467 --- /dev/null +++ b/SCBP/BINODIST.80 @@ -0,0 +1,9 @@ +BINOMIAL DISTRIBUTION + +(TO END PROGRAM ENTER 0) +NUMBER OF TRIALS? 56 +EXACT NUMBER OF SUCCESSES? 5 +PROBABILITY OF SUCCESS? .1 +PROBABILITY OF 5 SUCCESSES IN 56 TRIALS = .177178 + +NUMBER OF TRIALS? 0 diff --git a/SCBP/BINODIST.BAS b/SCBP/BINODIST.BAS new file mode 100644 index 0000000..4053b83 --- /dev/null +++ b/SCBP/BINODIST.BAS @@ -0,0 +1,29 @@ +10 PRINT "BINOMIAL DISTRIBUTION" +20 PRINT +30 DIM M(3) +40 PRINT "(TO END PROGRAM ENTER 0)" +50 PRINT "NUMBER OF TRIALS"; +60 INPUT N +70 IF N=0 THEN 270 +80 PRINT "EXACT NUMBER OF SUCCESSES"; +90 INPUT X +100 PRINT "PROBABILITY OF SUCCESS"; +110 INPUT P +119 REM - COMPUTE THE FACTORIALS +120 M(1)=N +130 M(2)=X +140 M(3)=N-X +150 FOR I=1 TO 3 +160 IF M(I)=0 THEN 220 +170 A=1 +180 FOR J=1 TO M(I) +190 A=A*J +200 NEXT J +210 M(I)=LOG(A) +220 NEXT I +229 REM - USING THE COMPUTED FACTORIALS, COMPUTE PROBABILITY +230 R=EXP(M(1)-M(2)-M(3)+X*LOG(P)+(N-X)*LOG(1-P)) +240 PRINT "PROBABILITY OF";X;"SUCCESSES IN";N;"TRIALS =";R +250 PRINT +260 GOTO 50 +270 END diff --git a/SCBP/BINODIST.INP b/SCBP/BINODIST.INP new file mode 100644 index 0000000..84f96ef --- /dev/null +++ b/SCBP/BINODIST.INP @@ -0,0 +1,4 @@ +56 +5 +.1 +0 diff --git a/SCBP/BINODIST.OUT b/SCBP/BINODIST.OUT new file mode 100644 index 0000000..d3d8834 --- /dev/null +++ b/SCBP/BINODIST.OUT @@ -0,0 +1,9 @@ +BINOMIAL DISTRIBUTION + +(TO END PROGRAM ENTER 0) +NUMBER OF TRIALS? 56 +EXACT NUMBER OF SUCCESSES? 5 +PROBABILITY OF SUCCESS? .1 +PROBABILITY OF 5 SUCCESSES IN 56 TRIALS = .177178 + +NUMBER OF TRIALS? 0 diff --git a/SCBP/BINODIST.dif b/SCBP/BINODIST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/BINODIST.run b/SCBP/BINODIST.run new file mode 100644 index 0000000..3f0c467 --- /dev/null +++ b/SCBP/BINODIST.run @@ -0,0 +1,9 @@ +BINOMIAL DISTRIBUTION + +(TO END PROGRAM ENTER 0) +NUMBER OF TRIALS? 56 +EXACT NUMBER OF SUCCESSES? 5 +PROBABILITY OF SUCCESS? .1 +PROBABILITY OF 5 SUCCESSES IN 56 TRIALS = .177178 + +NUMBER OF TRIALS? 0 diff --git a/SCBP/CHECWRIT.80 b/SCBP/CHECWRIT.80 new file mode 100644 index 0000000..77ba854 --- /dev/null +++ b/SCBP/CHECWRIT.80 @@ -0,0 +1,22 @@ +CHECK WRITER + +DATE (MM,DD,YY)? 12,34,56 +--(TO END PROGRAM ENTER 'END')-- +FIRST NAME OF PAYEE? TOM +LAST NAME OF PAYEE? CAT +AMOUNT OF CHECK? 2345 +HIT ENTER TO PRINT CHECK? + DECEMBER 34 56 + $2,345 + 2,345 + + TOM CAT + +TWO THOUSAND THREE HUNDRED FORTY-FIVE DOLLARS AND NO CENTS + + + + + + +FIRST NAME OF PAYEE? END diff --git a/SCBP/CHECWRIT.BAS b/SCBP/CHECWRIT.BAS new file mode 100644 index 0000000..1341533 --- /dev/null +++ b/SCBP/CHECWRIT.BAS @@ -0,0 +1,118 @@ +1 REM * CHECK WRITER * +2 REM * THANKS TO JOHN W. MELTON, III * +3 REM * 910 SADDLEBACK COURT, MCLEAN, VA. 22102 * +4 REM * FOR DEBUGGING CHECK WRITER, 5/31/79 * +5 CLEAR 100 +6 DEFDBL A +7 CLS +10 PRINT @ 404, "CHECK WRITER" +20 PRINT +30 DATA "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY" +40 DATA "AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER" +50 DATA "ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE" +60 DATA "TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN" +70 DATA "SEVENTEEN","EIGHTEEN","NINETEEN","TWENTY","THIRTY","FORTY" +80 DATA "FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY" +89 REM - ENTER DATE WITH COMMAS; DAY AND YEAR MUST CONTAIN TWO DIGITS +90 PRINT "DATE (MM,DD,YY)"; +100 INPUT D,D2,D3 +110 PRINT "--(TO END PROGRAM ENTER 'END')--" +120 PRINT "FIRST NAME OF PAYEE"; +130 INPUT F$ +139 REM - END PROGRAM? +140 IF F$="END" THEN 790 +150 PRINT "LAST NAME OF PAYEE"; +160 INPUT L$ +170 PRINT "AMOUNT OF CHECK"; +180 INPUT A +189 REM - INSERT BLANK CHECK IN PRINTING DEVICE, HIT ENTER WHEN READY +190 PRINT "HIT ENTER TO PRINT CHECK"; +200 INPUT X +230 REM - GO TO CORRECT MONTH IN DATA TABLE +235 RESTORE +240 FOR X=1 TO D +250 READ X0$ +255 NEXT X +259 REM - PRINT DATE +260 PRINT ,,,X0$;D2;D3 +265 A$="**$##,#.##" +267 B$="**##,##.##" +269 REM - PRINT AMOUNT TWICE; FIRST TIME FOR SHADED BOX +270 PRINT ,,,:PRINT USING A$;A +280 PRINT ,,,:PRINT USING B$;A +290 PRINT +300 PRINT ,F$;" ";L$ +310 PRINT +319 REM - AMOUNT OF CHECK LEGITIMATE? +320 IF A<=0 THEN 770 +330 A1=A:N1=0:A3=0 +339 REM - AMOUNT IN THE THOUSANDS? +340 N1=INT(A1/1E3) +349 REM - CAN'T PRINT FOR AMOUNT OVER $99999.99 +350 IF N1>99 THEN 770 +360 IF N1=0 THEN 390 +370 GOSUB 640 +380 PRINT "THOUSAND "; +390 A1=A1-N1*1E3 +399 REM - AMOUNT IN THE HUNDREDS? +400 N1=INT(A1/100) +410 IF N1=0 THEN 440 +420 GOSUB 640 +430 PRINT "HUNDRED "; +440 A1=A1-N1*100 +449 REM - AMOUNT IN THE ONES OR TENS? +450 N1=INT(A1) +460 IF N1>0 THEN 490 +470 IF A >=1 THEN 492 +480 GOTO 510 +490 GOSUB 640 +492 IF A<=1.99 THEN PRINT "DOLLAR "; +494 IF A>1.99 THEN PRINT "DOLLARS "; +501 GOTO 510 +510 A1=A1-N1 +519 REM - ANY CENTS? +529 REM - IF AMOUNT IS CENTS ONLY DON'T PRINT 'AND' +530 IF A<1 THEN 550 +540 PRINT "AND"; +550 A1=INT(A1*100) +555 IF A1>1 THEN 560 +556 IF A1=0 THEN PRINT " NO CENTS" +557 IF A1=1 THEN PRINT " 0";A1;"CENT" +558 GOTO 570 +559 REM - CENTS ARE PRINTED IN NUMERIC FORM +560 IF A1<10 THEN PRINT " 0";A1;"CENTS" :ELSE PRINT A1;"CENTS" +569 REM - SPACE OFF OF CHECK +570 PRINT +580 PRINT +590 PRINT +600 PRINT +610 PRINT +620 PRINT +629 REM - RESTART PROGRAM +630 GOTO 120 +639 REM - SUBROUTINE TO GET WORDS FOR NUMBERS +640 IF N1<21 THEN 752 +645 RESTORE +650 FOR X=1 TO 12+(N1-20)/10+20 +660 READ X0$ +665 NEXT X +670 PRINT X0$; +680 A3=N1-INT(N1/10)*10 +690 IF A3=0 THEN 760 +700 PRINT "-"; +730 RESTORE +735 FOR X=1 TO 12+A3 +740 READ X0$ +745 NEXT X +750 PRINT X0$;" "; +751 GOTO 760 +752 RESTORE +753 FOR X=1 TO 12+N1 +754 READ X0$ +755 NEXT X +756 PRINT X0$;" "; +759 REM - END OF SUBROUTINE +760 RETURN +770 PRINT ,"*****VOID*****" +780 GOTO 570 +790 END diff --git a/SCBP/CHECWRIT.INP b/SCBP/CHECWRIT.INP new file mode 100644 index 0000000..dd78c6f --- /dev/null +++ b/SCBP/CHECWRIT.INP @@ -0,0 +1,6 @@ +12,34,56 +TOM +CAT +2345 + +END diff --git a/SCBP/CHECWRIT.OUT b/SCBP/CHECWRIT.OUT new file mode 100644 index 0000000..b9048a8 --- /dev/null +++ b/SCBP/CHECWRIT.OUT @@ -0,0 +1,22 @@ +CHECK WRITER + +DATE (MM,DD,YY)? 12,34,56 +--(TO END PROGRAM ENTER 'END')-- +FIRST NAME OF PAYEE? TOM +LAST NAME OF PAYEE? CAT +AMOUNT OF CHECK? 2345 +HIT ENTER TO PRINT CHECK? + DECEMBER 34 56 + $2,345 + 2,345 + + TOM CAT + +TWO THOUSAND THREE HUNDRED FORTY-FIVE DOLLARS AND NO CENTS + + + + + + +FIRST NAME OF PAYEE? END diff --git a/SCBP/CHECWRIT.dif b/SCBP/CHECWRIT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/CHECWRIT.run b/SCBP/CHECWRIT.run new file mode 100644 index 0000000..77ba854 --- /dev/null +++ b/SCBP/CHECWRIT.run @@ -0,0 +1,22 @@ +CHECK WRITER + +DATE (MM,DD,YY)? 12,34,56 +--(TO END PROGRAM ENTER 'END')-- +FIRST NAME OF PAYEE? TOM +LAST NAME OF PAYEE? CAT +AMOUNT OF CHECK? 2345 +HIT ENTER TO PRINT CHECK? + DECEMBER 34 56 + $2,345 + 2,345 + + TOM CAT + +TWO THOUSAND THREE HUNDRED FORTY-FIVE DOLLARS AND NO CENTS + + + + + + +FIRST NAME OF PAYEE? END diff --git a/SCBP/CHI2DIST.80 b/SCBP/CHI2DIST.80 new file mode 100644 index 0000000..9d37a92 --- /dev/null +++ b/SCBP/CHI2DIST.80 @@ -0,0 +1,8 @@ +CHI-SQUARE DISTRIBUTION + +(TO END PROGRAM ENTER 0) +DEGREES OF FREEDOM? 2 +CHI-SQUARE? .987 +TAIL END VALUE = .610486 + +DEGREES OF FREEDOM? 0 diff --git a/SCBP/CHI2DIST.BAS b/SCBP/CHI2DIST.BAS new file mode 100644 index 0000000..cae4138 --- /dev/null +++ b/SCBP/CHI2DIST.BAS @@ -0,0 +1,33 @@ +10 PRINT "CHI-SQUARE DISTRIBUTION" +20 PRINT +30 PRINT "(TO END PROGRAM ENTER 0)" +40 PRINT "DEGREES OF FREEDOM"; +50 INPUT V +60 IF V=0 THEN 280 +70 PRINT "CHI-SQUARE"; +80 INPUT W +89 REM -R=THE DENOMINATOR PRODUCT +90 R=1 +100 FOR I=V TO 2 STEP -2 +110 R=R*I +120 NEXT I +129 REM - K=THE NUMBERATOR PRODUCT +130 K=W[(INT((V+1)/2))*EXP(-W/2)/R +139 REM - THE PI FACTOR IS USED ONLY WHEN DEG. FREEDOM ARE ODD +140 IF INT(V/2)=V/2 THEN 170 +150 J=SQR(2/W/3.141592653599) +160 GOTO 180 +169 REM - L (SUMMATION FACTOR) CALCULATED LINES 170-240 +170 J=1 +180 L=1 +190 M=1 +200 V=V+2 +210 M=M*W/V +219 REM - CHECK FOR END OF SUMMATION +220 IF M<.0000001 THEN 250 +230 L=L+M +240 GOTO 200 +250 PRINT "TAIL END VALUE =";1-J*K*L +260 PRINT +270 GOTO 40 +280 END diff --git a/SCBP/CHI2DIST.INP b/SCBP/CHI2DIST.INP new file mode 100644 index 0000000..0f0289c --- /dev/null +++ b/SCBP/CHI2DIST.INP @@ -0,0 +1,3 @@ +2 +.987 +0 diff --git a/SCBP/CHI2DIST.OUT b/SCBP/CHI2DIST.OUT new file mode 100644 index 0000000..d330a7e --- /dev/null +++ b/SCBP/CHI2DIST.OUT @@ -0,0 +1,8 @@ +CHI-SQUARE DISTRIBUTION + +(TO END PROGRAM ENTER 0) +DEGREES OF FREEDOM? 2 +CHI-SQUARE? .987 +TAIL END VALUE = .610486 + +DEGREES OF FREEDOM? 0 diff --git a/SCBP/CHI2DIST.dif b/SCBP/CHI2DIST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/CHI2DIST.run b/SCBP/CHI2DIST.run new file mode 100644 index 0000000..9d37a92 --- /dev/null +++ b/SCBP/CHI2DIST.run @@ -0,0 +1,8 @@ +CHI-SQUARE DISTRIBUTION + +(TO END PROGRAM ENTER 0) +DEGREES OF FREEDOM? 2 +CHI-SQUARE? .987 +TAIL END VALUE = .610486 + +DEGREES OF FREEDOM? 0 diff --git a/SCBP/CHI2TEST.80 b/SCBP/CHI2TEST.80 new file mode 100644 index 0000000..e99d7e2 --- /dev/null +++ b/SCBP/CHI2TEST.80 @@ -0,0 +1,27 @@ +CHI-SQUARE TEST + +NUMBER OF ROWS? 2 +NUMBER OF COLUMNS? 3 +CONTINGENCY TABLE: +ROW 1 + ELEMENT 1 ? 1 + ELEMENT 2 ? 2 + ELEMENT 3 ? 3 +ROW 2 + ELEMENT 1 ? 4 + ELEMENT 2 ? 5 + ELEMENT 3 ? 6 + +OBSERVED VALUE EXPECTED VAULE CHI[2 CONTRIBUTION + COLUMN 1 + 1 1.42857 .128571 + 4 3.57143 5.14286E-2 + COLUMN 2 + 2 2 0 + 5 5 0 + COLUMN 3 + 3 2.57143 7.14286E-2 + 6 6.42857 2.85714E-2 + +CHI-SQUARE = .28 +DEGREES OF FREEDOM = 2 diff --git a/SCBP/CHI2TEST.BAS b/SCBP/CHI2TEST.BAS new file mode 100644 index 0000000..f200bd7 --- /dev/null +++ b/SCBP/CHI2TEST.BAS @@ -0,0 +1,60 @@ +10 PRINT "CHI-SQUARE TEST" +20 PRINT +28 REM - LIMIT SIZE OF CONTINGENCY TABLES TO V1(R*C),A(R) +29 REM - WHERE R=NO. OF ROWS, C=NO, OF COLLUMNS +30 DIM V1(25),V2(5),A(5) +40 PRINT "NUMBER OF ROWS"; +49 REM - LINES 50-150 INPUT CONTINGENCY TABLE +50 INPUT R +60 PRINT "NUMBER OF COLUMNS"; +70 INPUT C +80 PRINT "CONTINGENCY TABLE:" +90 FOR I=1 TO R +100 PRINT "ROW";I +110 FOR J=1 TO C +120 PRINT " ELEMENT";J; +130 INPUT V1((I-1)*C+J) +140 NEXT J +150 NEXT I +160 PRINT +169 REM - ADD UP MARGINAL FREQUENCIES FOR EACH ROW +170 L=0 +180 M=1 +190 FOR I=1 TO R +200 FOR J=1 TO C +210 A(I)=A(I)+V1(M) +220 M=M+1 +230 NEXT J +240 L=L+A(I) +250 NEXT I +260 N=R*C +269 REM - ADD UP MARGINAL FREQUENCIES FOR EACH COLUMN +270 FOR I=1 TO C +280 FOR J=I TO N STEP C +290 V2(I)=V2(I)+V1(J) +300 NEXT J +310 NEXT I +320 Z=0 +330 PRINT "OBSERVED VALUE","EXPECTED VAULE","CHI[2 CONTRIBUTION" +340 FOR I=1 TO C +350 PRINT " COLUMN";I +360 FOR J=1 TO R +369 REM - P=EXPECTED CELL VALUE +370 P=A(J)*V2(I)/L +375 X=I+(J-1)*C +379 REM - USE YATES' CORRECTION FOR CONTINUITY IN 2 X 2 CHI-SQUARE TEST +380 IF R<>2 THEN 390 +381 IF C<>2 THEN 390 +382 Y=(ABS(V1(X)-P)-.5)[2/P +383 GOTO 400 +389 REM - Y=CHI-SQUARE CONTRIBUTION FROM THIS CELL +390 Y=(V1(X)-P)[2/P +399 REM - Z=TOTAL CHI-SQUARE VALUE +400 Z=Z+Y +410 PRINT " ";V1(X),P,Y +420 NEXT J +430 NEXT I +440 PRINT +450 PRINT "CHI-SQUARE =";Z +460 PRINT "DEGREES OF FREEDOM =";(C-1)*(R-1) +470 END diff --git a/SCBP/CHI2TEST.INP b/SCBP/CHI2TEST.INP new file mode 100644 index 0000000..ac8e40e --- /dev/null +++ b/SCBP/CHI2TEST.INP @@ -0,0 +1,8 @@ +2 +3 +1 +2 +3 +4 +5 +6 diff --git a/SCBP/CHI2TEST.OUT b/SCBP/CHI2TEST.OUT new file mode 100644 index 0000000..e6f051a --- /dev/null +++ b/SCBP/CHI2TEST.OUT @@ -0,0 +1,27 @@ +CHI-SQUARE TEST + +NUMBER OF ROWS? 2 +NUMBER OF COLUMNS? 3 +CONTINGENCY TABLE: +ROW 1 + ELEMENT 1 ? 1 + ELEMENT 2 ? 2 + ELEMENT 3 ? 3 +ROW 2 + ELEMENT 1 ? 4 + ELEMENT 2 ? 5 + ELEMENT 3 ? 6 + +OBSERVED VALUE EXPECTED VAULE CHI[2 CONTRIBUTION + COLUMN 1 + 1 1.42857 .128571 + 4 3.57143 5.14286E-2 + COLUMN 2 + 2 2 0 + 5 5 0 + COLUMN 3 + 3 2.57143 7.14286E-2 + 6 6.42857 2.85714E-2 + +CHI-SQUARE = .28 +DEGREES OF FREEDOM = 2 diff --git a/SCBP/CHI2TEST.dif b/SCBP/CHI2TEST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/CHI2TEST.run b/SCBP/CHI2TEST.run new file mode 100644 index 0000000..e99d7e2 --- /dev/null +++ b/SCBP/CHI2TEST.run @@ -0,0 +1,27 @@ +CHI-SQUARE TEST + +NUMBER OF ROWS? 2 +NUMBER OF COLUMNS? 3 +CONTINGENCY TABLE: +ROW 1 + ELEMENT 1 ? 1 + ELEMENT 2 ? 2 + ELEMENT 3 ? 3 +ROW 2 + ELEMENT 1 ? 4 + ELEMENT 2 ? 5 + ELEMENT 3 ? 6 + +OBSERVED VALUE EXPECTED VAULE CHI[2 CONTRIBUTION + COLUMN 1 + 1 1.42857 .128571 + 4 3.57143 5.14286E-2 + COLUMN 2 + 2 2 0 + 5 5 0 + COLUMN 3 + 3 2.57143 7.14286E-2 + 6 6.42857 2.85714E-2 + +CHI-SQUARE = .28 +DEGREES OF FREEDOM = 2 diff --git a/SCBP/COMMPAP.80 b/SCBP/COMMPAP.80 new file mode 100644 index 0000000..ea0f6aa --- /dev/null +++ b/SCBP/COMMPAP.80 @@ -0,0 +1,9 @@ +DISCOUNT COMMERCIAL PAPER + +FUTURE VALUE? 1234 +DISCOUNT RATE? 24 +DAYS TO MATURITY? 350 +DISCOUNT = $ 287.933 + COST = $ 946.067 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/COMMPAP.BAS b/SCBP/COMMPAP.BAS new file mode 100644 index 0000000..beef7ac --- /dev/null +++ b/SCBP/COMMPAP.BAS @@ -0,0 +1,23 @@ +10 PRINT "DISCOUNT COMMERCIAL PAPER" +20 PRINT +29 REM - STATEMENTS 30 TO 90 REQUEST USER INPUT +30 PRINT "FUTURE VALUE"; +40 INPUT T +50 PRINT "DISCOUNT RATE"; +60 INPUT D +69 REM - CONVERT PERCENT TO DECIMAL +70 D=D/100 +80 PRINT "DAYS TO MATURITY"; +90 INPUT N +99 REM - CALCULATE DISCOUNT, PRINT +100 D1=T*D*N/360 +110 PRINT "DISCOUNT = $";D1 +119 REM - CALCULATE COST, PRINT +120 PRINT " COST = $";T-D1 +129 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +130 PRINT +139 REM - RESTART OR END PROGRAM? USER INPUT REQUIRED +140 PRINT "MORE DATA (1=YES, 0=NO)"; +150 INPUT X +160 IF X=1 THEN 20 +170 END diff --git a/SCBP/COMMPAP.INP b/SCBP/COMMPAP.INP new file mode 100644 index 0000000..b376a7d --- /dev/null +++ b/SCBP/COMMPAP.INP @@ -0,0 +1,4 @@ +1234 +24 +350 +0 diff --git a/SCBP/COMMPAP.OUT b/SCBP/COMMPAP.OUT new file mode 100644 index 0000000..fe9b7ac --- /dev/null +++ b/SCBP/COMMPAP.OUT @@ -0,0 +1,9 @@ +DISCOUNT COMMERCIAL PAPER + +FUTURE VALUE? 1234 +DISCOUNT RATE? 24 +DAYS TO MATURITY? 350 +DISCOUNT = $ 287.933 + COST = $ 946.067 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/COMMPAP.dif b/SCBP/COMMPAP.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/COMMPAP.run b/SCBP/COMMPAP.run new file mode 100644 index 0000000..ea0f6aa --- /dev/null +++ b/SCBP/COMMPAP.run @@ -0,0 +1,9 @@ +DISCOUNT COMMERCIAL PAPER + +FUTURE VALUE? 1234 +DISCOUNT RATE? 24 +DAYS TO MATURITY? 350 +DISCOUNT = $ 287.933 + COST = $ 946.067 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/CORDCONV.80 b/SCBP/CORDCONV.80 new file mode 100644 index 0000000..7b2c0f4 --- /dev/null +++ b/SCBP/CORDCONV.80 @@ -0,0 +1,12 @@ +COORDINATE CONVERSION + + ( 1=CARTESIAN TO POLAR) + (-1=POLAR TO CARTESIAN) + ( 0=END PROGRAM) +WHICH DIRECTION? 1 +X,Y? 23,45 +R = 50.54 , A = 62.93 +WHICH DIRECTION? -1 +R,A? 9,65 +X = 3.8 , Y = 8.16 +WHICH DIRECTION? 0 diff --git a/SCBP/CORDCONV.BAS b/SCBP/CORDCONV.BAS new file mode 100644 index 0000000..a4bfcce --- /dev/null +++ b/SCBP/CORDCONV.BAS @@ -0,0 +1,54 @@ +10 PRINT "COORDINATE CONVERSION" +20 PRINT +30 PRINT " ( 1=CARTESIAN TO POLAR)" +40 PRINT " (-1=POLAR TO CARTESIAN)" +50 PRINT " ( 0=END PROGRAM)" +60 PRINT "WHICH DIRECTION"; +70 INPUT D +79 REM - END PROGRAM? +80 IF D=0 THEN 380 +89 REM - DIRECT PROGRAM TO PERFORM PROPER CONVERSION +90 IF D=-1 THEN 320 +98 REM - CONVERT FROM CARTESIAN COORDINATES TO POLAR COORDINATES +99 REM - ENTER CARTESIAN COORDINATES (ABSCISSA, ORDINATE) +100 PRINT "X,Y"; +110 INPUT X,Y +119 REM - POINT ON Y-AXIS? +120 IF X=0 THEN 170 +129 REM - POINT ON X-AXIS? +130 IF Y=0 THEN 260 +139 REM - COMPUTE POLAR COORDINATES, ROUND OFF, PRINT +140 PRINT "R =";INT(SGN(X)*SQR(X[2+Y[2)*100+.5)/100;","; +150 PRINT " A =";INT(ATN(Y/X)*180/3.1415927*100+.5)/100 +160 GOTO 60 +169 REM - POINT IS ON Y-AXIS; AT ORIGIN? +170 IF Y=0 THEN 240 +180 PRINT "R =";ABS(Y);","; +189 REM - IS POINT ABOVE OR BELOW ORIGIN? +190 IF Y<0 THEN 220 +200 PRINT " A = 90" +210 GOTO 60 +220 PRINT " A = 270" +230 GOTO 60 +239 REM - POINT IS AT ORIGIN +240 PRINT "R = 0, A = 0" +250 GOTO 60 +259 REM - POINT IS ON X-AXIS +260 PRINT "R =";ABS(X);","; +269 REM - IS POINT TO LEFT OR RIGHT OF ORIGIN? +270 IF X<0 THEN 300 +280 PRINT " A = 0" +290 GOTO 60 +300 PRINT " A = 180" +310 GOTO 60 +318 REM - CONVERT FROM POLAR COORDIATES TO CARTESIAN COORDINATES +319 REM - ENTER POLAR COORDINATES (MAGNITUDE OF RAY, ANGLE) +320 PRINT "R,A"; +330 INPUT R,A +339 REM - CONVERT FROM DEGREES TO RADIANS +340 M=(A-INT(A/360)*360)*3.1415927/180 +349 REM - CALCULATE CARTESIAN COORDINATES, ROUND OFF, PRINT +350 PRINT "X =";INT(R*COS(M)*100+.5)/100;","; +360 PRINT " Y =";INT(R*SIN(M)*100+.5)/100 +370 GOTO 60 +380 END diff --git a/SCBP/CORDCONV.INP b/SCBP/CORDCONV.INP new file mode 100644 index 0000000..23b146b --- /dev/null +++ b/SCBP/CORDCONV.INP @@ -0,0 +1,5 @@ +1 +23,45 +-1 +9,65 +0 diff --git a/SCBP/CORDCONV.OUT b/SCBP/CORDCONV.OUT new file mode 100644 index 0000000..6121d80 --- /dev/null +++ b/SCBP/CORDCONV.OUT @@ -0,0 +1,12 @@ +COORDINATE CONVERSION + + ( 1=CARTESIAN TO POLAR) + (-1=POLAR TO CARTESIAN) + ( 0=END PROGRAM) +WHICH DIRECTION? 1 +X,Y? 23,45 +R = 50.54 , A = 62.93 +WHICH DIRECTION? -1 +R,A? 9,65 +X = 3.8 , Y = 8.16 +WHICH DIRECTION? 0 diff --git a/SCBP/CORDCONV.dif b/SCBP/CORDCONV.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/CORDCONV.run b/SCBP/CORDCONV.run new file mode 100644 index 0000000..7b2c0f4 --- /dev/null +++ b/SCBP/CORDCONV.run @@ -0,0 +1,12 @@ +COORDINATE CONVERSION + + ( 1=CARTESIAN TO POLAR) + (-1=POLAR TO CARTESIAN) + ( 0=END PROGRAM) +WHICH DIRECTION? 1 +X,Y? 23,45 +R = 50.54 , A = 62.93 +WHICH DIRECTION? -1 +R,A? 9,65 +X = 3.8 , Y = 8.16 +WHICH DIRECTION? 0 diff --git a/SCBP/CURVINT.80 b/SCBP/CURVINT.80 new file mode 100644 index 0000000..301e66c --- /dev/null +++ b/SCBP/CURVINT.80 @@ -0,0 +1,12 @@ +CURVILINEAR INTERPOLATION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 5,78 +X,Y OF POINT 3 ? 9,123 + +INTERPOLATE: X=? 3 + y= 43.875 + +MORE X ON THIS CURVE (1=YES, 0=NO)? 0 +MORE X ON ANOTHER CURVE (1=YES, 0=NO)? 0 diff --git a/SCBP/CURVINT.BAS b/SCBP/CURVINT.BAS new file mode 100644 index 0000000..1750c73 --- /dev/null +++ b/SCBP/CURVINT.BAS @@ -0,0 +1,39 @@ +10 PRINT "CURVILINEAR INTERPOLATION" +20 PRINT +28 REM - LIMIT X() AND Y() TO MAXIMUN NUMBER OF POINTS KNOWN ON ANY +29 REM - CURVE TO BE ENTERED +30 DIM X(50), Y(50) +40 PRINT "NUMBER OF KNOWN POINTS"; +50 INPUT P +60 FOR I=1 TO P +69 REM - ENTER COORDINATES OF KNOWN POINTS ON CURVE +70 PRINT "X,Y OF POINT";I; +80 INPUT X(I),Y(I) +90 NEXT I +100 PRINT +109 REM - ENTER X-COORDINATE OF POINT TO BE ITERPOLATED +110 PRINT "INTERPOLATE: X="; +120 INPUT A +130 B=0 +138 REM - COMPUTE CORRESPONDING Y-COORDINATES BY LAGRANGE METHOD OF +139 REM - INTERPOLATION +140 FOR J=1 TO P +150 T=1 +160 FOR I=1 TO P +170 IF I=J THEN 190 +180 T=T*(A-X(I))/(X(J)-X(I)) +190 NEXT I +200 B=B+T*Y(J) +210 NEXT J +219 REM - PRINT RESULTS +220 PRINT " y=";B +230 PRINT +239 REM - INTERPOLATE MORE POINTS ON SAME CURVE? +240 PRINT "MORE X ON THIS CURVE (1=YES, 0=NO)"; +250 INPUT C +260 IF C=1 THEN 100 +269 REM - RESTART OR END PROGRAM? +270 PRINT "MORE X ON ANOTHER CURVE (1=YES, 0=NO)"; +280 INPUT C +290 IF C=1 THEN 20 +300 END diff --git a/SCBP/CURVINT.INP b/SCBP/CURVINT.INP new file mode 100644 index 0000000..c5fc358 --- /dev/null +++ b/SCBP/CURVINT.INP @@ -0,0 +1,7 @@ +3 +1,2 +5,78 +9,123 +3 +0 +0 diff --git a/SCBP/CURVINT.OUT b/SCBP/CURVINT.OUT new file mode 100644 index 0000000..6b591e8 --- /dev/null +++ b/SCBP/CURVINT.OUT @@ -0,0 +1,12 @@ +CURVILINEAR INTERPOLATION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 5,78 +X,Y OF POINT 3 ? 9,123 + +INTERPOLATE: X=? 3 + y= 43.875 + +MORE X ON THIS CURVE (1=YES, 0=NO)? 0 +MORE X ON ANOTHER CURVE (1=YES, 0=NO)? 0 diff --git a/SCBP/CURVINT.dif b/SCBP/CURVINT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/CURVINT.run b/SCBP/CURVINT.run new file mode 100644 index 0000000..301e66c --- /dev/null +++ b/SCBP/CURVINT.run @@ -0,0 +1,12 @@ +CURVILINEAR INTERPOLATION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 5,78 +X,Y OF POINT 3 ? 9,123 + +INTERPOLATE: X=? 3 + y= 43.875 + +MORE X ON THIS CURVE (1=YES, 0=NO)? 0 +MORE X ON ANOTHER CURVE (1=YES, 0=NO)? 0 diff --git a/SCBP/DAY2DAY.80 b/SCBP/DAY2DAY.80 new file mode 100644 index 0000000..9c1a844 --- /dev/null +++ b/SCBP/DAY2DAY.80 @@ -0,0 +1,8 @@ +DAY BETWEEN TWO DATES + +USE MM,DD,YYYY +FIRST DATE? 01,01,2015 +SECOND DATE? 01,31,2015 +DIFFERENCE = 30 DAYS + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DAY2DAY.BAS b/SCBP/DAY2DAY.BAS new file mode 100644 index 0000000..f9bcd11 --- /dev/null +++ b/SCBP/DAY2DAY.BAS @@ -0,0 +1,72 @@ +10 PRINT "DAY BETWEEN TWO DATES" +20 PRINT +25 PRINT "USE MM,DD,YYYY" +29 REM - STATEMENTS 30 TO 60 REQUEST USER INPUT +30 PRINT "FIRST DATE"; +40 INPUT M1,D1,Y1 +50 PRINT "SECOND DATE"; +60 INPUT M2,D2,Y2 +69 REM - SET VARIABLES TO BE USED IN SUBROUTINE +70 M=M1 +80 D=D1 +90 Y=Y1 +100 GOSUB 230 +109 REM - SAVE COMPUTED NUMBER OF DAYS IN N +110 N=A +119 REM - SET VARIABLES TO BE USED IN SUBROUTINE +120 M=M2 +130 D=D2 +140 Y=Y2 +150 GOSUB 230 +159 REM - CALCULATE DIFFERENCE AND PRINT +160 N=A-N +170 PRINT "DIFFERENCE =";N;"DAYS" +180 PRINT +189 REM - RESTART OR END PROGRAM? +190 PRINT "MORE DATA (1=YES, 0=NO)"; +200 INPUT X +210 IF X=1 THEN 20 +219 REM - END PROGRAM +220 GOTO 460 +227 REM - SUBROUTINE TO COMPUTE NUMBER OF DAYS SINCE 0,0,0 TO M,D,Y +228 REM - START WITH TEST FOR UNREAL DATE +229 REM - GO TO CORRECT TEST DEPENDING ON NUMBER OF DAYS IN MONTH +230 ON M GOTO 260,280,260,340,260,340,260,260,340,260,340,260 +239 REM - IF THIS MESSAGE IS PRINTED THE ANSWER IS PROBABLY INCORRECT +240 PRINT "UNREAL DATE" +249 REM - STOP CALCULATIONS, RETURN TO MAIN PROGRAM +250 RETURN +259 REM - MONTH HAS 31 DAYS +260 IF D>31 THEN 240 +270 GOTO 350 +279 REM - MONTH IS FEBRUARY; A LEAP YEAR? +280 IF Y/4=INT(Y/4) THEN 290 +290 IF Y/400=INT(Y/400) THEN 320 +300 IF Y/100=INT(Y/100) THEN 310 +309 REM - NOT A LEAP YEAR; MONTH HAS 28 DAYS +310 IF D>28 THEN 240 +319 REM - A LEAP YEAR; MONTH HAS 29 DAYS +320 IF D>29 THEN 240 +330 GOTO 350 +339 REM - MONTH HAS 30 DAYS +340 IF D>30 THEN 240 +349 REM - TABLE OF NUMBER OF DAYS FROM 1ST OF YEAR TO 1ST OF EACH MONTH +350 DATA 0,31,59,90,120,151,181,212,243,273,304,334 +360 RESTORE +369 REM - GET NUMBER OF DAYS FROM JAN 1 TO 1ST OF MONTH FROM DATA TABLE +370 READ A +379 REM - COMPUTE NUMBER OF DAYS FROM 0,0,0 TO M,D,Y +380 A=A+Y*365+INT(Y/4)+D+1-INT(Y/100)+INT(Y/400) +389 REM - POSSIBLY A LEAP YEAR? +390 IF INT(Y/4)=Y/4 THEN 410 +400 GOTO 450 +409 REM - CONTINUE TEST FOR LEAP YEAR +410 IF Y/400=INT(Y/400) THEN 430 +420 IF Y/100=INT(Y/100) THEN 440 +428 REM - YEAR IS A LEAP YEAR; +429 REM - IF MONTH IS JAN OR FEB ADJUST CALCULATED NUMBER OF DAYS +430 IF M>2 THEN 450 +440 A=A-1 +449 REM - END OF SUBROUTINE, RETURN TO MAIN PROGRAM +450 RETURN +460 END diff --git a/SCBP/DAY2DAY.INP b/SCBP/DAY2DAY.INP new file mode 100644 index 0000000..b8137f7 --- /dev/null +++ b/SCBP/DAY2DAY.INP @@ -0,0 +1,3 @@ +01,01,2015 +01,31,2015 +0 diff --git a/SCBP/DAY2DAY.OUT b/SCBP/DAY2DAY.OUT new file mode 100644 index 0000000..2b164a4 --- /dev/null +++ b/SCBP/DAY2DAY.OUT @@ -0,0 +1,8 @@ +DAY BETWEEN TWO DATES + +USE MM,DD,YYYY +FIRST DATE? 01,01,2015 +SECOND DATE? 01,31,2015 +DIFFERENCE = 30 DAYS + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DAY2DAY.dif b/SCBP/DAY2DAY.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/DAY2DAY.run b/SCBP/DAY2DAY.run new file mode 100644 index 0000000..9c1a844 --- /dev/null +++ b/SCBP/DAY2DAY.run @@ -0,0 +1,8 @@ +DAY BETWEEN TWO DATES + +USE MM,DD,YYYY +FIRST DATE? 01,01,2015 +SECOND DATE? 01,31,2015 +DIFFERENCE = 30 DAYS + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DAYWEEK.80 b/SCBP/DAYWEEK.80 new file mode 100644 index 0000000..8afa70c --- /dev/null +++ b/SCBP/DAYWEEK.80 @@ -0,0 +1,7 @@ +DAY OF THE WEEK + +(ENTER 0,0,0 TO END PROGRAM) +MONTH, DAY, YEAR (EX. 8,2,1979)? 03,31,2015 +TUESDAY + +MONTH, DAY, YEAR (EX. 8,2,1979)? 0,0,0 diff --git a/SCBP/DAYWEEK.BAS b/SCBP/DAYWEEK.BAS new file mode 100644 index 0000000..50e5ecb --- /dev/null +++ b/SCBP/DAYWEEK.BAS @@ -0,0 +1,43 @@ +10 PRINT "DAY OF THE WEEK" +20 PRINT +29 REM - REQUEST USER INPUT +30 PRINT "(ENTER 0,0,0 TO END PROGRAM)" +40 PRINT "MONTH, DAY, YEAR (EX. 8,2,1979)"; +50 INPUT M,D,Y +59 REM - TEST FOR END OF PROGRAM +60 IF M<>0 THEN 100 +70 IF D<>0 THEN 100 +80 IF Y<>0 THEN 100 +90 GOTO 360 +99 REM - NEED TO ADJUST INPUT FOR CALCULATIONS? +100 IF M>2 THEN 130 +109 REM - ADJUST INPUT +110 M=M+12 +120 Y=Y-1 +129 REM - CALCULATE DAY NUMBER +130 N=D+2*M+INT(.6*(M+1))+Y+INT(Y/4)-INT(Y/100)+INT(Y/400)+2 +140 N=INT((N/7-INT(N/7))*7+.5) +149 REM - FIND CORRECT DAY NUMBER, TRANSLATE TO DAY, PRINT +150 IF N>0 THEN 180 +160 PRINT "SATURDAY" +170 GOTO 340 +180 IF N>1 THEN 210 +190 PRINT "SUNDAY" +200 GOTO 340 +210 IF N>2 THEN 240 +220 PRINT "MONDAY" +230 GOTO 340 +240 IF N>3 THEN 270 +250 PRINT "TUESDAY" +260 GOTO 340 +270 IF N>4 THEN 300 +280 PRINT "WEDNESDAY" +290 GOTO 340 +300 IF N>5 THEN 330 +310 PRINT "THURSDAY" +320 GOTO 340 +330 PRINT "FRIDAY" +340 PRINT +349 REM - RESTART PROGRAM +350 GOTO 40 +360 END diff --git a/SCBP/DAYWEEK.INP b/SCBP/DAYWEEK.INP new file mode 100644 index 0000000..31130cf --- /dev/null +++ b/SCBP/DAYWEEK.INP @@ -0,0 +1,2 @@ +03,31,2015 +0,0,0 diff --git a/SCBP/DAYWEEK.OUT b/SCBP/DAYWEEK.OUT new file mode 100644 index 0000000..ddd7a48 --- /dev/null +++ b/SCBP/DAYWEEK.OUT @@ -0,0 +1,7 @@ +DAY OF THE WEEK + +(ENTER 0,0,0 TO END PROGRAM) +MONTH, DAY, YEAR (EX. 8,2,1979)? 03,31,2015 +TUESDAY + +MONTH, DAY, YEAR (EX. 8,2,1979)? 0,0,0 diff --git a/SCBP/DAYWEEK.dif b/SCBP/DAYWEEK.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/DAYWEEK.run b/SCBP/DAYWEEK.run new file mode 100644 index 0000000..8afa70c --- /dev/null +++ b/SCBP/DAYWEEK.run @@ -0,0 +1,7 @@ +DAY OF THE WEEK + +(ENTER 0,0,0 TO END PROGRAM) +MONTH, DAY, YEAR (EX. 8,2,1979)? 03,31,2015 +TUESDAY + +MONTH, DAY, YEAR (EX. 8,2,1979)? 0,0,0 diff --git a/SCBP/DEGRAD.80 b/SCBP/DEGRAD.80 new file mode 100644 index 0000000..8a5d21c --- /dev/null +++ b/SCBP/DEGRAD.80 @@ -0,0 +1,7 @@ +ANGLE CONVERSION: DEGREES TO RADIANS + +(TO END PROGRAM ENTER 0,0,0) +ANGLE IN DEGREES,MINUTES,SECONDS? 23,45,56 +RADIANS = .414787 + +ANGLE IN DEGREES,MINUTES,SECONDS? 0,0,0 diff --git a/SCBP/DEGRAD.BAS b/SCBP/DEGRAD.BAS new file mode 100644 index 0000000..432597b --- /dev/null +++ b/SCBP/DEGRAD.BAS @@ -0,0 +1,20 @@ +10 PRINT "ANGLE CONVERSION: DEGREES TO RADIANS" +20 PRINT +30 PRINT "(TO END PROGRAM ENTER 0,0,0)" +40 PRINT "ANGLE IN DEGREES,MINUTES,SECONDS"; +50 INPUT D,M,S +59 REM - TEST FOR END OF PROGRAM +60 IF D<>0 THEN 100 +70 IF M<>0 THEN 100 +80 IF S<>O THEN 100 +90 GOTO 150 +99 REM - CONVERT DEGREES, MINUTES, SECONDS TO DEGREES +100 A=D+M/60+S/3600 +109 REM - CALCULATE NUMBER OF COMPLETE CIRCLES +110 R=INT(A/360) +119 REM - CALCULATE ANGLE WITHIN 360 DEGREES, PRINT +120 PRINT "RADIANS =";A*.01745329-R*6.2831853 +130 PRINT +139 REM - RESTART PROGRAM +140 GOTO 40 +150 END diff --git a/SCBP/DEGRAD.INP b/SCBP/DEGRAD.INP new file mode 100644 index 0000000..1a761f4 --- /dev/null +++ b/SCBP/DEGRAD.INP @@ -0,0 +1,2 @@ +23,45,56 +0,0,0 diff --git a/SCBP/DEGRAD.OUT b/SCBP/DEGRAD.OUT new file mode 100644 index 0000000..8988d9b --- /dev/null +++ b/SCBP/DEGRAD.OUT @@ -0,0 +1,7 @@ +ANGLE CONVERSION: DEGREES TO RADIANS + +(TO END PROGRAM ENTER 0,0,0) +ANGLE IN DEGREES,MINUTES,SECONDS? 23,45,56 +RADIANS = .414787 + +ANGLE IN DEGREES,MINUTES,SECONDS? 0,0,0 diff --git a/SCBP/DEGRAD.dif b/SCBP/DEGRAD.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/DEGRAD.run b/SCBP/DEGRAD.run new file mode 100644 index 0000000..8a5d21c --- /dev/null +++ b/SCBP/DEGRAD.run @@ -0,0 +1,7 @@ +ANGLE CONVERSION: DEGREES TO RADIANS + +(TO END PROGRAM ENTER 0,0,0) +ANGLE IN DEGREES,MINUTES,SECONDS? 23,45,56 +RADIANS = .414787 + +ANGLE IN DEGREES,MINUTES,SECONDS? 0,0,0 diff --git a/SCBP/DEPAMT.80 b/SCBP/DEPAMT.80 new file mode 100644 index 0000000..dbfacec --- /dev/null +++ b/SCBP/DEPAMT.80 @@ -0,0 +1,22 @@ +DEPRECIATION AMOUNT + +ORGINAL PRICE? 1234 +DEPRECIATION RATE? 15 +--(ENTER YEAR=0 WHEN NO MORE AMOUNTS DESIRED FOR THIS ITEM)-- +YEAR? 1 +DEPRECIATION = $ 185.1 + +YEAR? 2 +DEPRECIATION = $ 157.33 + +YEAR? 3 +DEPRECIATION = $ 133.73 + +YEAR? 4 +DEPRECIATION = $ 113.67 + +YEAR? 5 +DEPRECIATION = $ 96.62 + +YEAR? 0 +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DEPAMT.BAS b/SCBP/DEPAMT.BAS new file mode 100644 index 0000000..45321a7 --- /dev/null +++ b/SCBP/DEPAMT.BAS @@ -0,0 +1,25 @@ +10 PRINT "DEPRECIATION AMOUNT" +20 PRINT +30 PRINT "ORGINAL PRICE"; +40 INPUT P +50 PRINT "DEPRECIATION RATE"; +60 INPUT I +69 REM - CONVERT FROM PERCENT TO DECIMAL +70 I=I/100 +80 PRINT "--(ENTER YEAR=0 WHEN NO MORE AMOUNTS DESIRED FOR THIS ITEM)--" +90 PRINT "YEAR"; +100 INPUT Y +109 REM - THROUGH CALATING FOR THIS ITEM? +110 IF Y=0 THEN 160 +119 REM -CALCULATE DEPRCIATION AMOUNT BY FORMULA +120 D=P*I*(1-I)[(Y-1) +129 REM - ROUND OFF TO NEAREST CENT, PRINT +130 PRINT "DEPRECIATION = $";INT(D*100+.5)/100 +140 PRINT +149 REM - RETURN FOR NEXT YEAR NUMBER +150 GOTO 90 +159 REM - RESTART OR END PROGRAM? +160 PRINT "MORE DATA (1=YES, 0=NO)"; +170 INPUT X +180 IF X=1 THEN 20 +190 END diff --git a/SCBP/DEPAMT.INP b/SCBP/DEPAMT.INP new file mode 100644 index 0000000..e64695e --- /dev/null +++ b/SCBP/DEPAMT.INP @@ -0,0 +1,9 @@ +1234 +15 +1 +2 +3 +4 +5 +0 +0 diff --git a/SCBP/DEPAMT.OUT b/SCBP/DEPAMT.OUT new file mode 100644 index 0000000..2b7df00 --- /dev/null +++ b/SCBP/DEPAMT.OUT @@ -0,0 +1,22 @@ +DEPRECIATION AMOUNT + +ORGINAL PRICE? 1234 +DEPRECIATION RATE? 15 +--(ENTER YEAR=0 WHEN NO MORE AMOUNTS DESIRED FOR THIS ITEM)-- +YEAR? 1 +DEPRECIATION = $ 185.1 + +YEAR? 2 +DEPRECIATION = $ 157.33 + +YEAR? 3 +DEPRECIATION = $ 133.73 + +YEAR? 4 +DEPRECIATION = $ 113.67 + +YEAR? 5 +DEPRECIATION = $ 96.62 + +YEAR? 0 +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DEPAMT.dif b/SCBP/DEPAMT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/DEPAMT.run b/SCBP/DEPAMT.run new file mode 100644 index 0000000..dbfacec --- /dev/null +++ b/SCBP/DEPAMT.run @@ -0,0 +1,22 @@ +DEPRECIATION AMOUNT + +ORGINAL PRICE? 1234 +DEPRECIATION RATE? 15 +--(ENTER YEAR=0 WHEN NO MORE AMOUNTS DESIRED FOR THIS ITEM)-- +YEAR? 1 +DEPRECIATION = $ 185.1 + +YEAR? 2 +DEPRECIATION = $ 157.33 + +YEAR? 3 +DEPRECIATION = $ 133.73 + +YEAR? 4 +DEPRECIATION = $ 113.67 + +YEAR? 5 +DEPRECIATION = $ 96.62 + +YEAR? 0 +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DEPRATE.80 b/SCBP/DEPRATE.80 new file mode 100644 index 0000000..11af072 --- /dev/null +++ b/SCBP/DEPRATE.80 @@ -0,0 +1,8 @@ +DEPRECIATION RATE + +ORIGINAL PRICE? 1234 +RESALE PRICE? 567 +YEARS? 8 +DEPRECIATION RATE = 9.263 % + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DEPRATE.BAS b/SCBP/DEPRATE.BAS new file mode 100644 index 0000000..5b7673d --- /dev/null +++ b/SCBP/DEPRATE.BAS @@ -0,0 +1,18 @@ +10 PRINT "DEPRECIATION RATE" +20 PRINT +30 PRINT "ORIGINAL PRICE"; +40 INPUT P +50 PRINT "RESALE PRICE"; +60 INPUT T +70 PRINT "YEARS"; +80 INPUT Y +89 REM - CALCULATE DEPRECIATION RATE BY FORMULA, CONVERT TO PERCENT +90 D=100*(1-(T/P)[(1/Y)) +99 REM - ROUND OFF, PRINT +100 PRINT "DEPRECIATION RATE =";INT(1000*D+.5)/1000;"%" +110 PRINT +119 REM - RESTART OR END PROGRAM? +120 PRINT "MORE DATA (1=YES, 0=NO)"; +130 INPUT X +140 IF X=1 THEN 20 +150 END diff --git a/SCBP/DEPRATE.INP b/SCBP/DEPRATE.INP new file mode 100644 index 0000000..82b1d1e --- /dev/null +++ b/SCBP/DEPRATE.INP @@ -0,0 +1,4 @@ +1234 +567 +8 +0 diff --git a/SCBP/DEPRATE.OUT b/SCBP/DEPRATE.OUT new file mode 100644 index 0000000..7c4b87f --- /dev/null +++ b/SCBP/DEPRATE.OUT @@ -0,0 +1,8 @@ +DEPRECIATION RATE + +ORIGINAL PRICE? 1234 +RESALE PRICE? 567 +YEARS? 8 +DEPRECIATION RATE = 9.263 % + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DEPRATE.dif b/SCBP/DEPRATE.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/DEPRATE.run b/SCBP/DEPRATE.run new file mode 100644 index 0000000..11af072 --- /dev/null +++ b/SCBP/DEPRATE.run @@ -0,0 +1,8 @@ +DEPRECIATION RATE + +ORIGINAL PRICE? 1234 +RESALE PRICE? 567 +YEARS? 8 +DEPRECIATION RATE = 9.263 % + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/DEPRSKED.80 b/SCBP/DEPRSKED.80 new file mode 100644 index 0000000..e9157ef --- /dev/null +++ b/SCBP/DEPRSKED.80 @@ -0,0 +1,52 @@ +TAX DEPRECIATION SCHEDULE + +PURCHASE PRICE? 1234 +SALVAGE VALUE? 567 +LIFE IN YEARS? 8 +ENTER 1 FOR SUM OF DIGITS, 2 FOR DECLINING BALANCE? 1 + + + + SUM OF DIGITS TAX DEPRECIATION + PRICE $ 1234 + SALVAGE VALUE $ 567 + NET DEPRECIATED $ 667 + LIFE 8 YEARS + +YEAR DEPRECIATION BALANCE + 1 148.22 518.78 + 2 129.69 389.09 + 3 111.17 277.92 + 4 92.64 185.28 + 5 74.11 111.17 + 6 55.58 55.59 + 7 37.06 18.53 + 8 18.53 0 + +MORE DATA?(1=YES, 0=NO)? 1 + +PURCHASE PRICE? 1234 +SALVAGE VALUE? 567 +LIFE IN YEARS? 8 +ENTER 1 FOR SUM OF DIGITS, 2 FOR DECLINING BALANCE? 2 +METHOD IN %? 15 + + + DECLINING BALANCE TAX DEPRECIATION + PRICE $ 1234 + SALVAGE VALUE $ 567 + NET DEPRECIATED $ 667 + LIFE 8 YEARS + METHOD 15 % + +YEAR DEPRECIATION BALANCE + 1 12.51 654.49 + 2 12.27 642.22 + 3 12.04 630.18 + 4 11.82 618.36 + 5 11.59 606.77 + 6 11.38 595.39 + 7 11.16 584.23 + 8 10.95 573.28 + +MORE DATA?(1=YES, 0=NO)? 0 diff --git a/SCBP/DEPRSKED.BAS b/SCBP/DEPRSKED.BAS new file mode 100644 index 0000000..85016a9 --- /dev/null +++ b/SCBP/DEPRSKED.BAS @@ -0,0 +1,97 @@ +10 PRINT "TAX DEPRECIATION SCHEDULE" +20 PRINT +29 REM - ENTER INITIAL VALUE AND ROUND OFF TO NEAREST CENT +30 PRINT "PURCHASE PRICE"; +40 INPUT V +50 V=INT(V*100+.5)/100 +59 REM - ENTER END VALUE AND ROUND OFF TO NEAREST CENT +60 PRINT "SALVAGE VALUE"; +70 INPUT S +80 S=INT(S*100+.5)/100 +89 REM - COMPUTE AMOUNT TO DEPRECIATE +90 D=V-S +99 REM - ENTER LENGTH OF DEPRECIATION +100 PRINT "LIFE IN YEARS"; +110 INPUT Y +119 REM - CHOOSE DEPRECIATION METHOD +120 PRINT "ENTER 1 FOR SUM OF DIGITS, 2 FOR DECLINING BALANCE"; +130 INPUT X +140 IF X=2 THEN 450 +150 IF X<>1 THEN 120 +158 REM - BY SUM OF DIGITS METHOD +159 REM - R1 IS THE CUMULATIVE AMOUNT DEPRECIATED +160 R1=0 +169 REM - N IS THE PRINTED LINE COUNTER +170 N=66 +180 PRINT +190 PRINT +200 FOR I=1 TO Y +209 REM - TEST FOR FULL PAGE +210 IF N<55 THEN 330 +219 REM - FULL PAGE; SPACE TO TOP OF NEXT PAGE AND PRINT HEADINGS +220 FOR I1=N TO 66 +230 PRINT +240 NEXT I1 +250 N=7 +260 PRINT " SUM OF DIGITS TAX DEPRECIATION" +270 PRINT " PRICE $";V +280 PRINT " SALVAGE VALUE $";S +290 PRINT " NET DEPRECIATED $";V-S +300 PRINT " LIFE";Y;"YEARS" +310 PRINT +320 PRINT "YEAR","DEPRECIATION","BALANCE" +329 REM - COMPUTE DEPECIATION AND ROUND OFF TO NEAREST CENT +330 R=2*D*(Y-I+1)/((Y+1)*Y) +340 R=INT(R*100+.5)/100 +349 REM - ACCUMULATE DEPRECIATION +350 R1=R1+R +360 B=D-R1 +369 REM - TEST FOR COMPLETE DEPRECIATION +370 IF B>=0 THEN 410 +380 R1=R1+B +390 R=R+B +400 B=0 +410 PRINT I,R,B +420 N=N+1 +430 NEXT I +440 GOTO 700 +448 REM - BY DECLINING BALANCE METHOD +449 REM - ENTER DECLINING BALANCE PERCENT +450 PRINT "METHOD IN %"; +460 INPUT M +469 REM - CONVERT PERCENT TO DECIMAL +470 M=M/100 +479 REM - N COUNTS THE LINES PRINTED ON EACH PAGE +480 N=66 +489 REM - R IS THE AMOUNT LEFT TO DEPRECIATE +490 R=D +500 PRINT +510 FOR I=1 TO Y +519 REM - TEST FOR A FULL PRINTED PAGE +520 IF N<55 THEN 650 +529 REM - FULL PAGE; SPACE TO TOP OF NEXT PAGE AND PRINT HEADINGS +530 FOR I1=N TO 66 +540 PRINT +550 NEXT I1 +560 N=8 +570 PRINT " DECLINING BALANCE TAX DEPRECIATION" +580 PRINT " PRICE $";V +590 PRINT " SALVAGE VALUE $";S +600 PRINT " NET DEPRECIATED $";D +610 PRINT " LIFE";Y;"YEARS" +620 PRINT " METHOD ";M*100;"%" +630 PRINT +640 PRINT "YEAR","DEPRECIATION","BALANCE" +649 REM - COMPUTE DEPRECIATION AND ROUND OFF TO THE NEAREST CENT +650 R1=INT((R*M/Y)*100+.5)/100 +659 REM - ACCUMULATE REMAINING BALANCE +660 R=R-R1 +670 PRINT I,R1,R +680 N=N+1 +690 NEXT I +700 PRINT +709 REM - RESTART OR END PROGRAM? +710 PRINT "MORE DATA?(1=YES, 0=NO)"; +720 INPUT X +730 IF X=1 THEN 20 +740 END diff --git a/SCBP/DEPRSKED.INP b/SCBP/DEPRSKED.INP new file mode 100644 index 0000000..1fda167 --- /dev/null +++ b/SCBP/DEPRSKED.INP @@ -0,0 +1,11 @@ +1234 +567 +8 +1 +1 +1234 +567 +8 +2 +15 +0 diff --git a/SCBP/DEPRSKED.OUT b/SCBP/DEPRSKED.OUT new file mode 100644 index 0000000..8c81e8f --- /dev/null +++ b/SCBP/DEPRSKED.OUT @@ -0,0 +1,52 @@ +TAX DEPRECIATION SCHEDULE + +PURCHASE PRICE? 1234 +SALVAGE VALUE? 567 +LIFE IN YEARS? 8 +ENTER 1 FOR SUM OF DIGITS, 2 FOR DECLINING BALANCE? 1 + + + + SUM OF DIGITS TAX DEPRECIATION + PRICE $ 1234 + SALVAGE VALUE $ 567 + NET DEPRECIATED $ 667 + LIFE 8 YEARS + +YEAR DEPRECIATION BALANCE + 1 148.22 518.78 + 2 129.69 389.09 + 3 111.17 277.92 + 4 92.64 185.28 + 5 74.11 111.17 + 6 55.58 55.59 + 7 37.06 18.53 + 8 18.53 0 + +MORE DATA?(1=YES, 0=NO)? 1 + +PURCHASE PRICE? 1234 +SALVAGE VALUE? 567 +LIFE IN YEARS? 8 +ENTER 1 FOR SUM OF DIGITS, 2 FOR DECLINING BALANCE? 2 +METHOD IN %? 15 + + + DECLINING BALANCE TAX DEPRECIATION + PRICE $ 1234 + SALVAGE VALUE $ 567 + NET DEPRECIATED $ 667 + LIFE 8 YEARS + METHOD 15 % + +YEAR DEPRECIATION BALANCE + 1 12.51 654.49 + 2 12.27 642.22 + 3 12.04 630.18 + 4 11.82 618.36 + 5 11.59 606.77 + 6 11.38 595.39 + 7 11.16 584.23 + 8 10.95 573.28 + +MORE DATA?(1=YES, 0=NO)? 0 diff --git a/SCBP/DEPRSKED.dif b/SCBP/DEPRSKED.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/DEPRSKED.run b/SCBP/DEPRSKED.run new file mode 100644 index 0000000..e9157ef --- /dev/null +++ b/SCBP/DEPRSKED.run @@ -0,0 +1,52 @@ +TAX DEPRECIATION SCHEDULE + +PURCHASE PRICE? 1234 +SALVAGE VALUE? 567 +LIFE IN YEARS? 8 +ENTER 1 FOR SUM OF DIGITS, 2 FOR DECLINING BALANCE? 1 + + + + SUM OF DIGITS TAX DEPRECIATION + PRICE $ 1234 + SALVAGE VALUE $ 567 + NET DEPRECIATED $ 667 + LIFE 8 YEARS + +YEAR DEPRECIATION BALANCE + 1 148.22 518.78 + 2 129.69 389.09 + 3 111.17 277.92 + 4 92.64 185.28 + 5 74.11 111.17 + 6 55.58 55.59 + 7 37.06 18.53 + 8 18.53 0 + +MORE DATA?(1=YES, 0=NO)? 1 + +PURCHASE PRICE? 1234 +SALVAGE VALUE? 567 +LIFE IN YEARS? 8 +ENTER 1 FOR SUM OF DIGITS, 2 FOR DECLINING BALANCE? 2 +METHOD IN %? 15 + + + DECLINING BALANCE TAX DEPRECIATION + PRICE $ 1234 + SALVAGE VALUE $ 567 + NET DEPRECIATED $ 667 + LIFE 8 YEARS + METHOD 15 % + +YEAR DEPRECIATION BALANCE + 1 12.51 654.49 + 2 12.27 642.22 + 3 12.04 630.18 + 4 11.82 618.36 + 5 11.59 606.77 + 6 11.38 595.39 + 7 11.16 584.23 + 8 10.95 573.28 + +MORE DATA?(1=YES, 0=NO)? 0 diff --git a/SCBP/DERIV.80 b/SCBP/DERIV.80 new file mode 100644 index 0000000..f8560b9 --- /dev/null +++ b/SCBP/DERIV.80 @@ -0,0 +1,8 @@ +DERIVATIVE + +(ENTER X=99999 TO END PROGRAM) +DERIVATIVE AT X=? 12.34 + IS 24.9044 +DERIVATIVE AT X=? 56.78 + IS 113.331 +DERIVATIVE AT X=? 99999 diff --git a/SCBP/DERIV.BAS b/SCBP/DERIV.BAS new file mode 100644 index 0000000..7828354 --- /dev/null +++ b/SCBP/DERIV.BAS @@ -0,0 +1,21 @@ +10 PRINT "DERIVATIVE" +20 PRINT +30 REM - ENTER DEFFNC(x) HERE +35 DEF FNC(X)=X[2+COS(X) +40 PRINT "(ENTER X=99999 TO END PROGRAM)" +50 PRINT "DERIVATIVE AT X="; +60 INPUT X1 +69 REM - TEST FOR END OF PROGRAM +70 IF X1=99999 THEN 160 +80 D=0 +89 REM - CALCULATE DIFFERENCE QUOTIENTS FOR POINTS APPROACHINGX +90 FOR N=1 TO 10 +100 D1=D +110 X=X1+.5[N +120 D=(FNC(X)-FNC(X1))/(X-X1) +130 NEXT N +139 REM - APPROXIMATE DERIVATIVE OF FUNCTION AT X, PRINT +140 PRINT " IS";2*D-D1 +149 REM - RESTART PROGRAM +150 GOTO 50 +160 END diff --git a/SCBP/DERIV.INP b/SCBP/DERIV.INP new file mode 100644 index 0000000..20a4d4c --- /dev/null +++ b/SCBP/DERIV.INP @@ -0,0 +1,3 @@ +12.34 +56.78 +99999 diff --git a/SCBP/DERIV.OUT b/SCBP/DERIV.OUT new file mode 100644 index 0000000..7a31a2c --- /dev/null +++ b/SCBP/DERIV.OUT @@ -0,0 +1,8 @@ +DERIVATIVE + +(ENTER X=99999 TO END PROGRAM) +DERIVATIVE AT X=? 12.34 + IS 24.9044 +DERIVATIVE AT X=? 56.78 + IS 113.331 +DERIVATIVE AT X=? 99999 diff --git a/SCBP/DERIV.dif b/SCBP/DERIV.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/DERIV.run b/SCBP/DERIV.run new file mode 100644 index 0000000..f8560b9 --- /dev/null +++ b/SCBP/DERIV.run @@ -0,0 +1,8 @@ +DERIVATIVE + +(ENTER X=99999 TO END PROGRAM) +DERIVATIVE AT X=? 12.34 + IS 24.9044 +DERIVATIVE AT X=? 56.78 + IS 113.331 +DERIVATIVE AT X=? 99999 diff --git a/SCBP/EARNINT.80 b/SCBP/EARNINT.80 new file mode 100644 index 0000000..881bb15 --- /dev/null +++ b/SCBP/EARNINT.80 @@ -0,0 +1,298 @@ +EARNED INTEREST TABLE + +PRINCIPAL? 123456 +NOMINAL INTEREST RATE? 7.8 +NUMBER OF DEPOSITS/WITHDRAWALS PER YEAR? 12 +AMOUNT OF DEPOSIT/WITHDRAWAL? 2345 +START WITH WHAT YEAR? 1 +END PRINTING WITH WHAT YEAR? 10 + + EARNED INTEREST TABLE + PRINCIPAL $ 123456 AT 7.8 % NOMINAL FOR 10 YEARS +REGULAR DEPOSIT/WITHDRAWAL $ 2345 12 TIMES PER YEAR + EFFECTIVE INTEREST RATE 8.11 % PER YEAR + +YEAR BALANCE INTEREST ACCUM INTEREST + + 1 126606. 805.5 805.5 + + 129778. 826.04 1631.54 + + 132969. 846.72 2478.26 + + 136182. 867.53 3345.79 + + 139415. 888.48 4234.27 + + 142670. 909.56 5143.83 + + 145946. 930.78 6074.61 + + 149243. 952.14 7026.75 + + 152561. 973.64 8000.39 + + 155902. 995.28 8995.67 + + 159264. 1017.06 10012.7 + + 162648. 1038.98 11051.7 + + + 2 166054. 1061.05 12112.8 + + 169482. 1083.26 13196. + + 172933. 1105.61 14301.6 + + 176406. 1128.11 15429.7 + + 179901. 1150.75 16580.5 + + 183420. 1173.55 17754. + + 186962. 1196.49 18950.5 + + 190526. 1219.58 20170.1 + + 194114. 1242.83 21412.9 + + 197725. 1266.22 22679.2 + + 201360. 1289.77 23968.9 + + 205018. 1313.47 25282.4 + + + 3 208701. 1337.32 26619.7 + + 212407. 1361.33 27981. + + 216138. 1385.5 29366.5 + + 219892. 1409.82 30776.4 + + 223672. 1434.31 32210.7 + + 227476. 1458.95 33669.6 + + 231304. 1483.75 35153.4 + + 235158. 1508.72 36662.1 + + 239037. 1533.85 38195.9 + + 242941. 1559.14 39755.1 + + 246871. 1584.6 41339.7 + + 250826. 1610.22 42949.9 + + + 4 254807. 1636.01 44585.9 + + 258814. 1661.97 46247.9 + + 262847. 1688.09 47936. + + 266906. 1714.39 49650.4 + + 270992. 1740.86 51391.2 + + 275105. 1767.5 53158.7 + + 279244. 1794.32 54953.1 + + 283410. 1821.31 56774.4 + + 287604. 1848.47 58622.8 + + 291825. 1875.82 60498.7 + + 296073. 1903.34 62402. + + 300349. 1931.04 64333. + + + + + + + + + + + EARNED INTEREST TABLE + PRINCIPAL $ 123456 AT 7.8 % NOMINAL FOR 10 YEARS +REGULAR DEPOSIT/WITHDRAWAL $ 2345 12 TIMES PER YEAR + EFFECTIVE INTEREST RATE 8.11 % PER YEAR + +YEAR BALANCE INTEREST ACCUM INTEREST + + 5 304653. 1958.92 66291.9 + + 308985. 1986.99 68278.9 + + 313345. 2015.23 70294.2 + + 317734. 2043.66 72337.8 + + 322151. 2072.28 74410.1 + + 326597. 2101.08 76511.2 + + 331072. 2130.07 78641.3 + + 335577. 2159.25 80800.5 + + 340110. 2188.62 82989.1 + + 344673. 2218.18 85207.3 + + 349266. 2247.94 87455.3 + + 353889. 2277.89 89733.2 + + + 6 358542. 2308.03 92041.2 + + 363226. 2338.37 94379.6 + + 367939. 2368.91 96748.5 + + 372684. 2399.64 99148.1 + + 377460. 2430.58 101579. + + 382266. 2461.72 104040. + + 387104. 2493.06 106533. + + 391974. 2524.61 109058. + + 396875. 2556.36 111614. + + 401809. 2588.32 114203. + + 406774. 2620.49 116823. + + 411772. 2652.86 119476. + + + 7 416803. 2685.45 122162. + + 421866. 2718.25 124880. + + 426962. 2751.27 127631. + + 432092. 2784.5 130416. + + 437255. 2817.94 133234. + + 442451. 2851.61 136085. + + 447682. 2885.49 138971. + + 452946. 2919.6 141890. + + 458245. 2953.93 144844. + + 463579. 2988.48 147833. + + 468947. 3023.25 150856. + + 474350. 3058.26 153914. + + + 8 479789. 3093.49 157008. + + 485263. 3128.95 160137. + + 490772. 3164.64 163301. + + 496318. 3200.57 166502. + + 501900. 3236.73 169739. + + 507518. 3273.12 173012. + + 513172. 3309.76 176321. + + 518864. 3346.63 179668. + + 524593. 3383.74 183052. + + 530359. 3421.1 186473. + + 536163. 3458.69 189932. + + 542004. 3496.54 193428. + + + + + + + + + + + EARNED INTEREST TABLE + PRINCIPAL $ 123456 AT 7.8 % NOMINAL FOR 10 YEARS +REGULAR DEPOSIT/WITHDRAWAL $ 2345 12 TIMES PER YEAR + EFFECTIVE INTEREST RATE 8.11 % PER YEAR + +YEAR BALANCE INTEREST ACCUM INTEREST + + 9 547884. 3534.63 196963. + + 553802. 3572.96 200536. + + 559758. 3611.55 204147. + + 565754. 3650.39 207798. + + 571788. 3689.48 211487. + + 577862. 3728.83 215216. + + 583975. 3768.43 218984. + + 590129. 3808.3 222793. + + 596322. 3848.42 226641. + + 602556. 3888.8 230530. + + 608830. 3929.45 234459. + + 615146. 3970.36 238430. + + + 10 621502. 4011.54 242441. + + 627900. 4052.99 246494. + + 634340. 4094.71 250589. + + 640822. 4136.7 254726. + + 647346. 4178.96 258905. + + 653912. 4221.5 263126. + + 660521. 4264.32 267390. + + 667174. 4307.41 271698. + + 673870. 4350.79 276049. + + 680609. 4394.45 280443. + + 687392. 4438.39 284881. + + 694220. 4482.62 289364. + + +CHANGE DATA AND RECOMPUTE? (1=YES, 0=NO)? 0 + diff --git a/SCBP/EARNINT.BAS b/SCBP/EARNINT.BAS new file mode 100644 index 0000000..0aee247 --- /dev/null +++ b/SCBP/EARNINT.BAS @@ -0,0 +1,117 @@ +10 PRINT "EARNED INTEREST TABLE" +20 PRINT +29 REM - STATEMENTS 30 TO 230 REQUEST USER INPUT +30 PRINT "PRINCIPAL"; +40 INPUT P +50 PRINT "NOMINAL INTEREST RATE"; +60 INPUT I +69 REM - CONVERT PERCENT TO DECIMAL +70 I=I/100 +80 PRINT "NUMBER OF DEPOSITS/WITHDRAWALS PER YEAR"; +90 INPUT N1 +99 REM - DON'T ASK FOR AMOUNT IF FREQUENCY IS ZERO +100 IF N1=0 THEN 160 +108 REM - DEPOSITS ARE ENTERED AS A POSITIVE NUMBER +109 REM - WITHDRAWALS ARE ENTERED AS A NEGATIVE NUMBER +110 PRINT "AMOUNT OF DEPOSIT/WITHDRAWAL"; +120 INPUT R +129 REM - INTEREST IS COMPOUNED DAILY +130 N=360 +139 REM - PRINT AT EACH DEPOSIT/WITHDRAWAL +140 L2=N1 +150 GOTO 200 +160 PRINT "NUMBER OF COMPOUNDING PERIODS PER YEAR"; +170 INPUT N +180 N1=0 +189 REM - PRINT FOUR TIMES PER YEAR +190 L2=4 +200 PRINT "START WITH WHAT YEAR"; +210 INPUT X +220 PRINT "END PRINTING WITH WHAT YEAR"; +230 INPUT Y +239 REM - START PRINTING AT THE BEGINNING OF A YEAR +240 X=INT (X) +249 REM - INITIATE RUNNING TOTALS +250 B0=P +260 I1=0 +270 I2=0 +280 I3=0 +290 K=66 +300 P1=4 +310 FOR J0=1 TO INT(Y) +1 +319 REM - START PRINTING? +320 IF J0N1 THEN 560 +529 REM - TIME TO MAKE DEPOSIT/WITHDRAWAL? +530 IF N2/N1>J1/N THEN 560 +539 REM - CALCULATE NEW BALANCE +540 B0=B0+R +549 REM - COUNT DEPOSIT/WITHDRAWALS MADE PER YEAR +550 N2=N2+1 +560 B2=B0*(1+I/N) +569 REM - I1=AMOUNT INTEREST WITH EACH COMPOUNDING PERIOD +570 I1=B2-B0 +579 REM - I3=AMOUNT INTEREST ACCUMULATED BETWEEN POSTING +580 I3=I3+I1 +589 REM - I2=TOTAL INTEREST ACCUMULATED TO DATE +590 I2=I2+I1 +599 REM - ROUND AT INTEREST POSTING TIME +600 IF P2/P1>J1/N THEN 640 +610 I2=FNR(I2) +620 B2=FNR(B2) +630 P2=P2+1 +639 REM - YEAR TO START PRINTING? +640 IF J0=Y THEN 780 +730 NEXT J1 +739 REM - START PRINTING? +740 IF J0=1 THEN 310 +300 X=1-X +310 PRINT "PERCENTILE =";1-X +320 PRINT +330 GOTO 40 +340 END diff --git a/SCBP/FDIST.INP b/SCBP/FDIST.INP new file mode 100644 index 0000000..a901d4e --- /dev/null +++ b/SCBP/FDIST.INP @@ -0,0 +1,7 @@ +1.2 +3 +4 +5.6 +7 +8 +0 diff --git a/SCBP/FDIST.OUT b/SCBP/FDIST.OUT new file mode 100644 index 0000000..13ea80c --- /dev/null +++ b/SCBP/FDIST.OUT @@ -0,0 +1,14 @@ +F-DISTRIBUTION + +(TO END PROGRAM ENTER AN F-VALUE OF 0) +F-VALUE? 1.2 +DEGREES OF FREEDOM IN NUMERATOR? 3 +DEGREES OF FREEDOM IN DENOMINATOR? 4 +PERCENTILE = .5831 + +F-VALUE? 5.6 +DEGREES OF FREEDOM IN NUMERATOR? 7 +DEGREES OF FREEDOM IN DENOMINATOR? 8 +PERCENTILE = .986 + +F-VALUE? 0 diff --git a/SCBP/FDIST.dif b/SCBP/FDIST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/FDIST.run b/SCBP/FDIST.run new file mode 100644 index 0000000..38f57a3 --- /dev/null +++ b/SCBP/FDIST.run @@ -0,0 +1,14 @@ +F-DISTRIBUTION + +(TO END PROGRAM ENTER AN F-VALUE OF 0) +F-VALUE? 1.2 +DEGREES OF FREEDOM IN NUMERATOR? 3 +DEGREES OF FREEDOM IN DENOMINATOR? 4 +PERCENTILE = .5831 + +F-VALUE? 5.6 +DEGREES OF FREEDOM IN NUMERATOR? 7 +DEGREES OF FREEDOM IN DENOMINATOR? 8 +PERCENTILE = .986 + +F-VALUE? 0 diff --git a/SCBP/FUTVALDE.80 b/SCBP/FUTVALDE.80 new file mode 100644 index 0000000..36091ae --- /dev/null +++ b/SCBP/FUTVALDE.80 @@ -0,0 +1,9 @@ +FUTURE VALUE OF REGULAR DEPOSIT (ANNUITY) + +AMOUNT OF REGULAR DEPOSITS? 1234 +NOMINAL INTEREST RATE? 5.6 +NUMBER OF DEPOSITS PER YEAR? 12 +NUMBER OF YEARS? 34 +FUTURE VALUE = $ 1.50275E+6 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/FUTVALDE.BAS b/SCBP/FUTVALDE.BAS new file mode 100644 index 0000000..1c6862e --- /dev/null +++ b/SCBP/FUTVALDE.BAS @@ -0,0 +1,25 @@ +10 PRINT "FUTURE VALUE OF REGULAR DEPOSIT (ANNUITY)" +20 PRINT +29 REM -STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "AMOUNT OF REGULAR DEPOSITS"; +40 INPUT R +50 PRINT "NOMINAL INTEREST RATE"; +60 INPUT I +70 PRINT "NUMBER OF DEPOSITS PER YEAR"; +80 INPUT N +90 PRINT "NUMBER OF YEARS"; +100 INPUT Y +108 REM -CALCULATE INTEREST RATE PER DEPOSIT , +109 REM -CONVERT FROM PERCENT TO DECIMAL +110 I=I/N/100 +119 REM -CALCULATE FUTURE VALUE BY FORMULA +120 T=R*((1+I)[(N*Y)-1)/I +129 REM -ROUND OFF TO NEAREST CENT, PRINT +130 PRINT "FUTURE VALUE = $"; INT(T*100+.5)/100 +139 REM -PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +140 PRINT +149 REM -RESTART OR END PROGRAM? USER INPUT REQUIRED +150 PRINT "MORE DATA? (1=YES, 0=NO)"; +160 INPUT X +170 IF X=1 THEN 20 +180 END diff --git a/SCBP/FUTVALDE.INP b/SCBP/FUTVALDE.INP new file mode 100644 index 0000000..f4ffc3d --- /dev/null +++ b/SCBP/FUTVALDE.INP @@ -0,0 +1,5 @@ +1234 +5.6 +12 +34 +0 diff --git a/SCBP/FUTVALDE.OUT b/SCBP/FUTVALDE.OUT new file mode 100644 index 0000000..f074f29 --- /dev/null +++ b/SCBP/FUTVALDE.OUT @@ -0,0 +1,9 @@ +FUTURE VALUE OF REGULAR DEPOSIT (ANNUITY) + +AMOUNT OF REGULAR DEPOSITS? 1234 +NOMINAL INTEREST RATE? 5.6 +NUMBER OF DEPOSITS PER YEAR? 12 +NUMBER OF YEARS? 34 +FUTURE VALUE = $ 1.50275E+6 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/FUTVALDE.dif b/SCBP/FUTVALDE.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/FUTVALDE.run b/SCBP/FUTVALDE.run new file mode 100644 index 0000000..36091ae --- /dev/null +++ b/SCBP/FUTVALDE.run @@ -0,0 +1,9 @@ +FUTURE VALUE OF REGULAR DEPOSIT (ANNUITY) + +AMOUNT OF REGULAR DEPOSITS? 1234 +NOMINAL INTEREST RATE? 5.6 +NUMBER OF DEPOSITS PER YEAR? 12 +NUMBER OF YEARS? 34 +FUTURE VALUE = $ 1.50275E+6 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/FUTVALIN.80 b/SCBP/FUTVALIN.80 new file mode 100644 index 0000000..3dbe07e --- /dev/null +++ b/SCBP/FUTVALIN.80 @@ -0,0 +1,9 @@ +FUTURE VALUE OF AN INVESTMENT + +INITIAL INVESTMENT? 12345 +NOMINAL INTEREST RATE? 6.7 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NUMBER OF YEARS? 34 +FUTURE VALUE=$ 119691. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/FUTVALIN.BAS b/SCBP/FUTVALIN.BAS new file mode 100644 index 0000000..ae84c37 --- /dev/null +++ b/SCBP/FUTVALIN.BAS @@ -0,0 +1,31 @@ +1 REM ALL THESE PROGRAMS ON THIS TAPE ARE FULLY DOCUMENTED +2 REM IN "SOME COMMON BASIC PROGRAMS" BY LON POOLE AND MARY +3 REM BORCHERS (OSBORNE & ASSOCIATES, 630 BANCROFT WAY, +4 REM BERKELEY CA 94710 - $7.50 PLUS $.50 FOR U.P.S DELIVERY, +5 REM ELSE 4TH CLASS MAIL, COPYRIGHT 1977, OSBORNE & ASSOC.) +6 REM USED BY PERMISSION. +10 PRINT "FUTURE VALUE OF AN INVESTMENT" +20 PRINT +29 REM -STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "INITIAL INVESTMENT"; +40 INPUT P +50 PRINT "NOMINAL INTEREST RATE"; +60 INPUT I +70 PRINT "NUMBER OF COMPOUNDING PERIODS PER YEAR"; +80 INPUT N +90 PRINT "NUMBER OF YEARS"; +100 INPUT Y +108 REM - CALCULATE INTEREST RATE PER PERIOD; +109 REM - CONVERT FROM PERCENT TO DECIMAL +110 I=I/N/100 +119 REM -CALCULATE FUTURE VALUE BY FORMULA +120 T=P*(1+I)[(N*Y) +129 REM - ROUND OFF TO NEAREST CENT, PRInt +130 PRINT "FUTURE VALUE=$"; INT(T*100+.5)/100 +139 REM -PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +140 PRINT +149 REM -RESTART OR END PROGRAM? USER INPUT REQUIRED +150 PRINT "MORE DATA? (1=YES,0=NO)"; +160 INPUT X +170 IF X=1 THEN 20 +180 END diff --git a/SCBP/FUTVALIN.INP b/SCBP/FUTVALIN.INP new file mode 100644 index 0000000..a97e588 --- /dev/null +++ b/SCBP/FUTVALIN.INP @@ -0,0 +1,5 @@ +12345 +6.7 +12 +34 +0 diff --git a/SCBP/FUTVALIN.OUT b/SCBP/FUTVALIN.OUT new file mode 100644 index 0000000..88d1c92 --- /dev/null +++ b/SCBP/FUTVALIN.OUT @@ -0,0 +1,9 @@ +FUTURE VALUE OF AN INVESTMENT + +INITIAL INVESTMENT? 12345 +NOMINAL INTEREST RATE? 6.7 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NUMBER OF YEARS? 34 +FUTURE VALUE=$ 119691. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/FUTVALIN.dif b/SCBP/FUTVALIN.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/FUTVALIN.run b/SCBP/FUTVALIN.run new file mode 100644 index 0000000..3dbe07e --- /dev/null +++ b/SCBP/FUTVALIN.run @@ -0,0 +1,9 @@ +FUTURE VALUE OF AN INVESTMENT + +INITIAL INVESTMENT? 12345 +NOMINAL INTEREST RATE? 6.7 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NUMBER OF YEARS? 34 +FUTURE VALUE=$ 119691. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/GCD.80 b/SCBP/GCD.80 new file mode 100644 index 0000000..5bfaf6b --- /dev/null +++ b/SCBP/GCD.80 @@ -0,0 +1,7 @@ +GREATEST COMMON DENOMINATOR + +(ENTER 0,0 TO END PROGRAM) +ENTER TWO NUMBERS? 75,125 +G.C.D: 25 + +ENTER TWO NUMBERS? 0,0 diff --git a/SCBP/GCD.BAS b/SCBP/GCD.BAS new file mode 100644 index 0000000..71c71cb --- /dev/null +++ b/SCBP/GCD.BAS @@ -0,0 +1,23 @@ +10 PRINT "GREATEST COMMON DENOMINATOR" +20 PRINT +30 PRINT "(ENTER 0,0 TO END PROGRAM)" +40 PRINT "ENTER TWO NUMBERS"; +50 INPUT A,B +59 REM - END PROGRAM? +60 IF A<>0 THEN 90 +70 IF B<>0 THEN 90 +80 GOTO 190 +89 REM - CALCULATE GCD ACCORDING TO EUCLIDEAN ALGORITHM, PRINT RESULT +90 A=ABS(A) +100 B=ABS(B) +110 R=A-B*INT(A/B) +120 IF R=0 THEN 160 +130 A=B +140 B=R +150 GOTO 110 +160 PRINT "G.C.D:";B +169 REM - PRINT BLANK LINE TO SEPARATE SETS OF DATA +170 PRINT +179 REM - RESTART PROGRAM +180 GOTO 40 +190 END diff --git a/SCBP/GCD.INP b/SCBP/GCD.INP new file mode 100644 index 0000000..4ee3169 --- /dev/null +++ b/SCBP/GCD.INP @@ -0,0 +1,2 @@ +75,125 +0,0 diff --git a/SCBP/GCD.OUT b/SCBP/GCD.OUT new file mode 100644 index 0000000..e106c42 --- /dev/null +++ b/SCBP/GCD.OUT @@ -0,0 +1,7 @@ +GREATEST COMMON DENOMINATOR + +(ENTER 0,0 TO END PROGRAM) +ENTER TWO NUMBERS? 75,125 +G.C.D: 25 + +ENTER TWO NUMBERS? 0,0 diff --git a/SCBP/GCD.dif b/SCBP/GCD.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/GCD.run b/SCBP/GCD.run new file mode 100644 index 0000000..5bfaf6b --- /dev/null +++ b/SCBP/GCD.run @@ -0,0 +1,7 @@ +GREATEST COMMON DENOMINATOR + +(ENTER 0,0 TO END PROGRAM) +ENTER TWO NUMBERS? 75,125 +G.C.D: 25 + +ENTER TWO NUMBERS? 0,0 diff --git a/SCBP/GEOMEAN.80 b/SCBP/GEOMEAN.80 new file mode 100644 index 0000000..fa748e8 --- /dev/null +++ b/SCBP/GEOMEAN.80 @@ -0,0 +1,11 @@ +GEOMETRIC MEAN AND DEVIATION + +(TO END PROGRAM ENTER 0 OBSEVATIONS) +NUMBER OF OBSERVATIONS? 3 +ITEM 1 ? 11 +ITEM 2 ? 23 +ITEM 3 ? 84 +GEOMETRIC MEAN = 27.6992 +GEOMETRIC DEVIATION = 2.79864 + +NUMBER OF OBSERVATIONS? 0 diff --git a/SCBP/GEOMEAN.BAS b/SCBP/GEOMEAN.BAS new file mode 100644 index 0000000..cfeaccd --- /dev/null +++ b/SCBP/GEOMEAN.BAS @@ -0,0 +1,26 @@ +10 PRINT "GEOMETRIC MEAN AND DEVIATION" +20 PRINT +30 PRINT "(TO END PROGRAM ENTER 0 OBSEVATIONS)" +40 PRINT "NUMBER OF OBSERVATIONS"; +50 INPUT N +59 REM - TEST FOR END OF PROGRAM +60 IF N=0 THEN 200 +69 REM - COMPUTE WHICH ROOT TO USE +70 P=1/N +80 M=1 +90 FOR I=1 TO N +100 PRINT "ITEM";I; +110 INPUT D +119 REM - ITERATIVELY COMPUTE MEAN +120 M=M*D[P +129 REM - ACCUMULATE INTERMEDIATE TERM FOR DEVIATION +130 Q=Q+LOG(D)[2 +140 NEXT I +149 REM - COMPUTE DEVIATION +150 R=EXP(SQR(Q/(N-1)-(N/(N-1)*(LOG(M))[2))) +160 PRINT "GEOMETRIC MEAN =";M +170 PRINT "GEOMETRIC DEVIATION =";R +180 PRINT +189 REM - RESTART PROGRAM +190 GOTO 40 +200 END diff --git a/SCBP/GEOMEAN.INP b/SCBP/GEOMEAN.INP new file mode 100644 index 0000000..4492243 --- /dev/null +++ b/SCBP/GEOMEAN.INP @@ -0,0 +1,5 @@ +3 +11 +23 +84 +0 diff --git a/SCBP/GEOMEAN.OUT b/SCBP/GEOMEAN.OUT new file mode 100644 index 0000000..35fab5a --- /dev/null +++ b/SCBP/GEOMEAN.OUT @@ -0,0 +1,11 @@ +GEOMETRIC MEAN AND DEVIATION + +(TO END PROGRAM ENTER 0 OBSEVATIONS) +NUMBER OF OBSERVATIONS? 3 +ITEM 1 ? 11 +ITEM 2 ? 23 +ITEM 3 ? 84 +GEOMETRIC MEAN = 27.6992 +GEOMETRIC DEVIATION = 2.79864 + +NUMBER OF OBSERVATIONS? 0 diff --git a/SCBP/GEOMEAN.dif b/SCBP/GEOMEAN.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/GEOMEAN.run b/SCBP/GEOMEAN.run new file mode 100644 index 0000000..fa748e8 --- /dev/null +++ b/SCBP/GEOMEAN.run @@ -0,0 +1,11 @@ +GEOMETRIC MEAN AND DEVIATION + +(TO END PROGRAM ENTER 0 OBSEVATIONS) +NUMBER OF OBSERVATIONS? 3 +ITEM 1 ? 11 +ITEM 2 ? 23 +ITEM 3 ? 84 +GEOMETRIC MEAN = 27.6992 +GEOMETRIC DEVIATION = 2.79864 + +NUMBER OF OBSERVATIONS? 0 diff --git a/SCBP/GEOREGR.80 b/SCBP/GEOREGR.80 new file mode 100644 index 0000000..097063a --- /dev/null +++ b/SCBP/GEOREGR.80 @@ -0,0 +1,21 @@ +GEOMETRIC REGRESSION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 2,34 +X,Y OF POINT 3 ? 3,567 + +F(x) = 1.67799 * X[ 5.02694 + +COEFFICIENT OF DETERMINATION (R[2) = .978231 +COEFFICIENT OF CORRELATION = .989056 +STANDARD ERROR OF ESTIMATE = .589168 + +INTERPOLATION: (ENTER X=0 TO END PROGRAM) +X =? 1.5 +Y = 12.8822 + +X =? 2.5 +Y = 167.962 + +X =? 0 diff --git a/SCBP/GEOREGR.BAS b/SCBP/GEOREGR.BAS new file mode 100644 index 0000000..7baf598 --- /dev/null +++ b/SCBP/GEOREGR.BAS @@ -0,0 +1,46 @@ +10 PRINT "GEOMETRIC REGRESSION" +20 PRINT +30 PRINT "NUMBER OF KNOWN POINTS"; +40 INPUT N +50 J=0 +60 K=0 +70 L=0 +80 M=0 +90 R2=0 +99 REM - ENTER COORDINATES OF DATA POINTS +100 FOR I=1 TO N +110 PRINT "X,Y OF POINT";I; +120 INPUT X,Y +129 REM - ACCUMLATE INTERMEDIATE VALUES +130 Y=LOG(Y) +140 X=LOG(X) +150 J=J+X +160 K=K+Y +170 L=L+X[2 +180 M=M+Y[2 +190 R2=R2+X*Y +200 NEXT I +209 REM - CALCULATE AND PRINT COEFFICIENTS OF EQUATION +210 B=(N*R2-K*J)/(N*L-J[2) +220 A=(K-B*J)/N +230 PRINT +240 PRINT "F(x) =";EXP(A);"* X[";B +249 REM - CALCULATE REGRESSION ANALYSIS +250 J=B*(R2-J*K/N) +260 M=M-K[2/N +270 K=M-J +280 PRINT +290 R2=J/M +300 PRINT "COEFFICIENT OF DETERMINATION (R[2) =";R2 +310 PRINT "COEFFICIENT OF CORRELATION =";SQR(R2) +320 PRINT "STANDARD ERROR OF ESTIMATE =";SQR(ABS(K/(N-2))) +330 PRINT +339 REM - ESTIMATE Y-COORDINATE FROM ENTERED X-COORDINATE +340 PRINT "INTERPOLATION: (ENTER X=0 TO END PROGRAM)" +350 PRINT "X ="; +360 INPUT X +370 IF X=0 THEN 410 +380 PRINT "Y =";EXP(A)*X[B +390 PRINT +400 GOTO 350 +410 END diff --git a/SCBP/GEOREGR.INP b/SCBP/GEOREGR.INP new file mode 100644 index 0000000..8dad360 --- /dev/null +++ b/SCBP/GEOREGR.INP @@ -0,0 +1,7 @@ +3 +1,2 +2,34 +3,567 +1.5 +2.5 +0 diff --git a/SCBP/GEOREGR.OUT b/SCBP/GEOREGR.OUT new file mode 100644 index 0000000..3fe23ae --- /dev/null +++ b/SCBP/GEOREGR.OUT @@ -0,0 +1,21 @@ +GEOMETRIC REGRESSION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 2,34 +X,Y OF POINT 3 ? 3,567 + +F(x) = 1.67799 * X[ 5.02694 + +COEFFICIENT OF DETERMINATION (R[2) = .978231 +COEFFICIENT OF CORRELATION = .989056 +STANDARD ERROR OF ESTIMATE = .589168 + +INTERPOLATION: (ENTER X=0 TO END PROGRAM) +X =? 1.5 +Y = 12.8822 + +X =? 2.5 +Y = 167.962 + +X =? 0 diff --git a/SCBP/GEOREGR.dif b/SCBP/GEOREGR.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/GEOREGR.run b/SCBP/GEOREGR.run new file mode 100644 index 0000000..097063a --- /dev/null +++ b/SCBP/GEOREGR.run @@ -0,0 +1,21 @@ +GEOMETRIC REGRESSION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 2,34 +X,Y OF POINT 3 ? 3,567 + +F(x) = 1.67799 * X[ 5.02694 + +COEFFICIENT OF DETERMINATION (R[2) = .978231 +COEFFICIENT OF CORRELATION = .989056 +STANDARD ERROR OF ESTIMATE = .589168 + +INTERPOLATION: (ENTER X=0 TO END PROGRAM) +X =? 1.5 +Y = 12.8822 + +X =? 2.5 +Y = 167.962 + +X =? 0 diff --git a/SCBP/GROWRATE.80 b/SCBP/GROWRATE.80 new file mode 100644 index 0000000..7fda063 --- /dev/null +++ b/SCBP/GROWRATE.80 @@ -0,0 +1,14 @@ +AVERAGE GROWTH RATE, FUTURE PROJECTIONS + +NUMBER OF YEARS FIGURES ESTABLISHED? 3 +FIGURE: YEAR 1 ? 12 + yEAR 2 ? 345 + yEAR 3 ? 6789 +AVERAGE GROWTH RAT = 2278.55 % + +(ENTER 0 TO END PROGRAM) +PROJECTED SALES FOR YEAR? 1.5 + = 62.34 +PROJECTED SALES FOR YEAR? 2.5 + = 1482.83 +PROJECTED SALES FOR YEAR? 0 diff --git a/SCBP/GROWRATE.BAS b/SCBP/GROWRATE.BAS new file mode 100644 index 0000000..607549d --- /dev/null +++ b/SCBP/GROWRATE.BAS @@ -0,0 +1,44 @@ +10 PRINT "AVERAGE GROWTH RATE, FUTURE PROJECTIONS" +20 PRINT +29 REM - SET ARRAY S TO NUMBER OF YEARS PAST FIGURES KNOWN +30 DIM S(20) +39 REM - STATEMENTS 40 TO 120 REQUEST USER INPUT +40 PRINT "NUMBER OF YEARS FIGURES ESTABLISHED"; +50 INPUT N +60 FOR I=1 TO N +70 IF I>1 THEN 100 +80 PRINT "FIGURE: YEAR";I; +90 GOTO 110 +100 PRINT " yEAR";I; +110 INPUT S(I) +120 NEXT I +129 REM - INITIALIZE VARIABLES FOR FIRST YEAR +130 T=LOG(S(1)) +140 V=0 +149 REM - LOOP FOR REMAINING YEARS OF HISTORY +150 FOR I=2 TO N +160 L=LOG(S(I)) +170 T=T+L +180 V=V+(I-1)*L +190 NEXT I +199 REM - CALCULATE AVERAGE GROWTH RATE +200 A=6*(2*V/(N-1)-T)/(N)/(N+1) +210 G=EXP(A)-1 +219 REM - ROUND OFF, PRINT +220 PRINT "AVERAGE GROWTH RAT =";INT(G*10000+.5)/100;"%" +230 PRINT +239 REM - CALCULATE AVERAGE ANNUAL GROWTH FACTOR +240 S=EXP(T/N-A*(N-1)/2) +250 PRINT "(ENTER 0 TO END PROGRAM)" +259 REM - INPUT YEAR NUMBER +260 PRINT "PROJECTED SALES FOR YEAR"; +270 INPUT Y1 +279 REM - TEST FOR END OF PROGRAM +280 IF Y1=0 THEN 320 +289 REM - CALCULATE PROJECTED SALES FIGURE +290 S1=S*(1+G)[(Y1-1) +299 REM - ROUND OFF, PRINT +300 PRINT " =";INT(S1*100+.5)/100 +309 REM - RETURN FOR MORE DATA +310 GOTO 260 +320 END diff --git a/SCBP/GROWRATE.INP b/SCBP/GROWRATE.INP new file mode 100644 index 0000000..2f6ec06 --- /dev/null +++ b/SCBP/GROWRATE.INP @@ -0,0 +1,7 @@ +3 +12 +345 +6789 +1.5 +2.5 +0 diff --git a/SCBP/GROWRATE.OUT b/SCBP/GROWRATE.OUT new file mode 100644 index 0000000..fb8d055 --- /dev/null +++ b/SCBP/GROWRATE.OUT @@ -0,0 +1,14 @@ +AVERAGE GROWTH RATE, FUTURE PROJECTIONS + +NUMBER OF YEARS FIGURES ESTABLISHED? 3 +FIGURE: YEAR 1 ? 12 + yEAR 2 ? 345 + yEAR 3 ? 6789 +AVERAGE GROWTH RAT = 2278.55 % + +(ENTER 0 TO END PROGRAM) +PROJECTED SALES FOR YEAR? 1.5 + = 62.34 +PROJECTED SALES FOR YEAR? 2.5 + = 1482.83 +PROJECTED SALES FOR YEAR? 0 diff --git a/SCBP/GROWRATE.dif b/SCBP/GROWRATE.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/GROWRATE.run b/SCBP/GROWRATE.run new file mode 100644 index 0000000..7fda063 --- /dev/null +++ b/SCBP/GROWRATE.run @@ -0,0 +1,14 @@ +AVERAGE GROWTH RATE, FUTURE PROJECTIONS + +NUMBER OF YEARS FIGURES ESTABLISHED? 3 +FIGURE: YEAR 1 ? 12 + yEAR 2 ? 345 + yEAR 3 ? 6789 +AVERAGE GROWTH RAT = 2278.55 % + +(ENTER 0 TO END PROGRAM) +PROJECTED SALES FOR YEAR? 1.5 + = 62.34 +PROJECTED SALES FOR YEAR? 2.5 + = 1482.83 +PROJECTED SALES FOR YEAR? 0 diff --git a/SCBP/INITINV.80 b/SCBP/INITINV.80 new file mode 100644 index 0000000..4075423 --- /dev/null +++ b/SCBP/INITINV.80 @@ -0,0 +1,9 @@ +INITAL INVESTMENT + +TOTAL VALUE AFTER Y YEARS? 123456 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NUMBER OF YEARS? 7 +NOMINAL INTEREST RATE? 5 +INITIAL = $ 87061.3 + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/INITINV.BAS b/SCBP/INITINV.BAS new file mode 100644 index 0000000..f7a21d4 --- /dev/null +++ b/SCBP/INITINV.BAS @@ -0,0 +1,25 @@ +10 PRINT "INITAL INVESTMENT" +20 PRINT +29 REM - STATEMENT 30 TO 100 REQUEST USER INPUT +30 PRINT "TOTAL VALUE AFTER Y YEARS"; +40 INPUT T +50 PRINT "NUMBER OF COMPOUNDING PERIODS PER YEAR"; +60 INPUT N +70 PRINT "NUMBER OF YEARS"; +80 INPUT Y +90 PRINT "NOMINAL INTEREST RATE"; +100 INPUT I +108 REM -CALCULATE INTEREST RATE PER PERIOD; +109 REM -CONVERT FROM % TO DECIMAL +110 I=I/N/100 +119 REM - CALCULATE INITIAL INVESTMENT BY FORMULA +120 P=T/(1+I)[(N*Y) +129 REM -ROUND OFF TO NEAREST CENT, PRINT +130 PRINT "INITIAL = $";INT(P*100+.5)/100 +139 REM -PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +140 PRINT +149 REM -RESTART OR END PROGRAM? USER INPUT REQUIRED +150 PRINT "MORE DATA? (1=YES,0=NO)"; +160 INPUT X +170 IF X=1 THEN 20 +180 END diff --git a/SCBP/INITINV.INP b/SCBP/INITINV.INP new file mode 100644 index 0000000..3630412 --- /dev/null +++ b/SCBP/INITINV.INP @@ -0,0 +1,5 @@ +123456 +12 +7 +5 +0 diff --git a/SCBP/INITINV.OUT b/SCBP/INITINV.OUT new file mode 100644 index 0000000..c35b858 --- /dev/null +++ b/SCBP/INITINV.OUT @@ -0,0 +1,9 @@ +INITAL INVESTMENT + +TOTAL VALUE AFTER Y YEARS? 123456 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NUMBER OF YEARS? 7 +NOMINAL INTEREST RATE? 5 +INITIAL = $ 87061.3 + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/INITINV.dif b/SCBP/INITINV.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/INITINV.run b/SCBP/INITINV.run new file mode 100644 index 0000000..4075423 --- /dev/null +++ b/SCBP/INITINV.run @@ -0,0 +1,9 @@ +INITAL INVESTMENT + +TOTAL VALUE AFTER Y YEARS? 123456 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NUMBER OF YEARS? 7 +NOMINAL INTEREST RATE? 5 +INITIAL = $ 87061.3 + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/INTGGAUS.80 b/SCBP/INTGGAUS.80 new file mode 100644 index 0000000..29e98d8 --- /dev/null +++ b/SCBP/INTGGAUS.80 @@ -0,0 +1,8 @@ +INTEGRATION: GAUSSIAN QUADRATURE + +INTEGRATION LIMITS (lower,UPPER)? 1,10 +NUMBER OF INTERVALS? 25 +INTEGRAL = 2499.75 + +CHANGE DATA AND RECOMPUTE? +(0=NO, 1=NEW INTEGRATION LIMITS, 2=NEW NO OF INTERVALS)? 0 diff --git a/SCBP/INTGGAUS.BAS b/SCBP/INTGGAUS.BAS new file mode 100644 index 0000000..042f4ae --- /dev/null +++ b/SCBP/INTGGAUS.BAS @@ -0,0 +1,36 @@ +10 PRINT "INTEGRATION: GAUSSIAN QUADRATURE" +20 PRINT +30 REM - ENTER FUNCTION HERE (deffnc(x)="function") +35 DEF FNC(X)=X[3 +39 REM - ABCISSAS AND WEIGHT FACTORS FOR 20-POINT GUASSIAN INTEGRATION +40 DATA .076526521,.15275339,.22778585,.14917299,.37370609 +50 DATA .14209611,.510867,.13168864,.63605368,.11819453 +60 DATA .74633191,.10193012,.83911697,.083276742,.91223443 +70 DATA .062672048,.96397193,.04060143,.9931286,.017614007 +80 PRINT "INTEGRATION LIMITS (lower,UPPER)"; +90 INPUT X,Y +100 PRINT "NUMBER OF INTERVALS"; +110 INPUT N +120 S=(Y-X)/N/2 +130 T=X+S +140 R=0 +149 REM - COMPUTE INTEGRAL FOR EACH SUBINTERVAL +150 FOR I=1 TO N +160 P=0 +169 REM - COMPUTE SUMMATION FACTOR FOR EACH SUBINTERVAL +170 FOR J=1 TO 10 +180 READ A,B +190 P=P+B*(FNC(S*A+T)+FNC(T-S*A)) +200 NEXT J +210 RESTORE +220 R=R+P*S +230 T=T+2*S +240 NEXT I +250 PRINT "INTEGRAL =";R +260 PRINT +270 PRINT "CHANGE DATA AND RECOMPUTE?" +280 PRINT "(0=NO, 1=NEW INTEGRATION LIMITS, 2=NEW NO OF INTERVALS)"; +290 INPUT S +300 IF S=1 THEN 80 +310 IF S=2 THEN 100 +320 END diff --git a/SCBP/INTGGAUS.INP b/SCBP/INTGGAUS.INP new file mode 100644 index 0000000..6b3439e --- /dev/null +++ b/SCBP/INTGGAUS.INP @@ -0,0 +1,3 @@ +1,10 +25 +0 diff --git a/SCBP/INTGGAUS.OUT b/SCBP/INTGGAUS.OUT new file mode 100644 index 0000000..3f03481 --- /dev/null +++ b/SCBP/INTGGAUS.OUT @@ -0,0 +1,8 @@ +INTEGRATION: GAUSSIAN QUADRATURE + +INTEGRATION LIMITS (lower,UPPER)? 1,10 +NUMBER OF INTERVALS? 25 +INTEGRAL = 2499.75 + +CHANGE DATA AND RECOMPUTE? +(0=NO, 1=NEW INTEGRATION LIMITS, 2=NEW NO OF INTERVALS)? 0 diff --git a/SCBP/INTGGAUS.dif b/SCBP/INTGGAUS.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/INTGGAUS.run b/SCBP/INTGGAUS.run new file mode 100644 index 0000000..29e98d8 --- /dev/null +++ b/SCBP/INTGGAUS.run @@ -0,0 +1,8 @@ +INTEGRATION: GAUSSIAN QUADRATURE + +INTEGRATION LIMITS (lower,UPPER)? 1,10 +NUMBER OF INTERVALS? 25 +INTEGRAL = 2499.75 + +CHANGE DATA AND RECOMPUTE? +(0=NO, 1=NEW INTEGRATION LIMITS, 2=NEW NO OF INTERVALS)? 0 diff --git a/SCBP/INTGSIMP.80 b/SCBP/INTGSIMP.80 new file mode 100644 index 0000000..d3f8008 --- /dev/null +++ b/SCBP/INTGSIMP.80 @@ -0,0 +1,6 @@ +INTEGRATION: SIMPSON'S RULE + +SELECTION: 1=KNOWN FORMULA, O=UNKNOWN FORMULA? 1 +LOWER, UPPER LIMIT OF INTEGRATION? 1,10 +INCREMENT OF X? 0.5 +INTEGRAL IS 49.3333 diff --git a/SCBP/INTGSIMP.BAS b/SCBP/INTGSIMP.BAS new file mode 100644 index 0000000..57dc770 --- /dev/null +++ b/SCBP/INTGSIMP.BAS @@ -0,0 +1,43 @@ +10 PRINT "INTEGRATION: SIMPSON'S RULE" +20 PRINT +30 PRINT "SELECTION: 1=KNOWN FORMULA, O=UNKNOWN FORMULA"; +40 INPUT S +49 REM - IF FUNCTION IS KNOWN ENTER AT LINE 50 (DEFFNC(x)="FUNCTION") +50 DEF FNC(X)=X +60 PRINT "LOWER, UPPER LIMIT OF INTEGRATION"; +70 INPUT A,B +80 PRINT "INCREMENT OF X"; +90 INPUT X1 +98 REM - INCREMENT MUST DIVIDE INTERVAL EQUAL SUBINTERVALS; +99 REM - IF NOT, CHANGE INCREMENT +100 IF (B-A)/X1<>INT((B-A)/X1) THEN 80 +110 IF S=1 THEN 150 +119 REM - FORMULA NOT KNOWN; ENTER FUNCTION VALUE AT INTEGRATION LIMITS +120 PRINT "FIRST, LAST VALUE OF F(x)"; +130 INPUT Y1,Y2 +140 GOTO 170 +149 REM - FORMULA KNOWN; CALCULATE F(x) AT INTEGRATION LIMITS +150 Y=FNC(A) +160 Y2=FNC(B) +170 C=0 +180 D=0 +189 REM - LOOP FOR EACH SUBINTERVAL +190 FOR I=1 TO (B-A)/X1-.5 +200 IF S=1 THEN 240 +209 REM - ENTER KNOWN FUNCTION VALUE AT EACH INTERVAL +210 PRINT "VALUE OF F(x) AT INTERVAL";I;"(x=";A+I*X1;")"; +220 INPUT Y +230 GOTO 250 +239 REM - CALCULATE F(x) AT EACH SUBINTERVAL +240 Y=FNC(A+I*X1) +249 REM - INTERVAL EVEN OR ODD? +250 IF I/2=INT(I/2) THEN 280 +259 REM - SUM ALL ODD-INTERVAL FUNCTION VALUES +260 C=C+Y +270 GOTO 290 +279 REM - SUM ALL EVEN INTEGRAL FUNCTION VALUES +280 D=D+Y +290 NEXT I +299 REM - COMPUTE INTEGRAL, PRINT +300 PRINT "INTEGRAL IS";X1/3*(Y1+4*C+2*D+Y2) +310 END diff --git a/SCBP/INTGSIMP.INP b/SCBP/INTGSIMP.INP new file mode 100644 index 0000000..252d59a --- /dev/null +++ b/SCBP/INTGSIMP.INP @@ -0,0 +1,3 @@ +1 +1,10 +0.5 diff --git a/SCBP/INTGSIMP.OUT b/SCBP/INTGSIMP.OUT new file mode 100644 index 0000000..344e558 --- /dev/null +++ b/SCBP/INTGSIMP.OUT @@ -0,0 +1,6 @@ +INTEGRATION: SIMPSON'S RULE + +SELECTION: 1=KNOWN FORMULA, O=UNKNOWN FORMULA? 1 +LOWER, UPPER LIMIT OF INTEGRATION? 1,10 +INCREMENT OF X? 0.5 +INTEGRAL IS 49.3333 diff --git a/SCBP/INTGSIMP.dif b/SCBP/INTGSIMP.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/INTGSIMP.run b/SCBP/INTGSIMP.run new file mode 100644 index 0000000..d3f8008 --- /dev/null +++ b/SCBP/INTGSIMP.run @@ -0,0 +1,6 @@ +INTEGRATION: SIMPSON'S RULE + +SELECTION: 1=KNOWN FORMULA, O=UNKNOWN FORMULA? 1 +LOWER, UPPER LIMIT OF INTEGRATION? 1,10 +INCREMENT OF X? 0.5 +INTEGRAL IS 49.3333 diff --git a/SCBP/INTGTRAP.80 b/SCBP/INTGTRAP.80 new file mode 100644 index 0000000..eb8ab54 --- /dev/null +++ b/SCBP/INTGTRAP.80 @@ -0,0 +1,8 @@ +INTEGRATION: TRAPEZOIDAL RULE + +(ENTER 0,0 TO END PROGRAM) +INTEGRATION LIMITS (Lower, UPPER)? 1,10 +number OF INTERVALS? 25 +integral = 2502.96 + +INTEGRATION LIMITS (Lower, UPPER)? 0,0 diff --git a/SCBP/INTGTRAP.BAS b/SCBP/INTGTRAP.BAS new file mode 100644 index 0000000..4f41701 --- /dev/null +++ b/SCBP/INTGTRAP.BAS @@ -0,0 +1,23 @@ +10 PRINT "INTEGRATION: TRAPEZOIDAL RULE" +20 PRINT +30 REM - ENTER FUNCTION HERE (DEFFNC(x)="function") +35 DEF FNC(X)=X[3 +40 PRINT "(ENTER 0,0 TO END PROGRAM)" +50 PRINT "INTEGRATION LIMITS (Lower, UPPER)"; +60 INPUT A,B +69 REM - END PROGRAM? +70 IF A=B THEN 190 +80 PRINT "number OF INTERVALS"; +90 INPUT N +100 I=0 +110 D=(B-A)/N +119 REM - ADD UP THE AREA OF EACH TRAPEZOID +120 FOR J=A TO B STEP D +130 I=I+FNC(J) +140 NEXT J +149 REM - COMPUTE INTEGRAL, PRINT +150 I=(I-(FNC(A)+FNC(B))/2)*D +160 PRINT "integral =";I +170 PRINT +180 GOTO 50 +190 END diff --git a/SCBP/INTGTRAP.INP b/SCBP/INTGTRAP.INP new file mode 100644 index 0000000..f583312 --- /dev/null +++ b/SCBP/INTGTRAP.INP @@ -0,0 +1,3 @@ +1,10 +25 +0,0 diff --git a/SCBP/INTGTRAP.OUT b/SCBP/INTGTRAP.OUT new file mode 100644 index 0000000..21190d6 --- /dev/null +++ b/SCBP/INTGTRAP.OUT @@ -0,0 +1,8 @@ +INTEGRATION: TRAPEZOIDAL RULE + +(ENTER 0,0 TO END PROGRAM) +INTEGRATION LIMITS (Lower, UPPER)? 1,10 +number OF INTERVALS? 25 +integral = 2502.96 + +INTEGRATION LIMITS (Lower, UPPER)? 0,0 diff --git a/SCBP/INTGTRAP.dif b/SCBP/INTGTRAP.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/INTGTRAP.run b/SCBP/INTGTRAP.run new file mode 100644 index 0000000..eb8ab54 --- /dev/null +++ b/SCBP/INTGTRAP.run @@ -0,0 +1,8 @@ +INTEGRATION: TRAPEZOIDAL RULE + +(ENTER 0,0 TO END PROGRAM) +INTEGRATION LIMITS (Lower, UPPER)? 1,10 +number OF INTERVALS? 25 +integral = 2502.96 + +INTEGRATION LIMITS (Lower, UPPER)? 0,0 diff --git a/SCBP/LABELS.80 b/SCBP/LABELS.80 new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LABELS.BAS b/SCBP/LABELS.BAS new file mode 100644 index 0000000..38c9f10 --- /dev/null +++ b/SCBP/LABELS.BAS @@ -0,0 +1,11 @@ +1 FOR X=1 TO 15 +10 LPRINT "Michael G. Walraven, Ph.D." +20 LPRINT "9955 Reynolds Road" +30 LPRINT "Horton, MI 49246" +40 LPRINT "": LPRINT "": LPRINT "" +50 LPRINT "Ms. Sandy Schmidt, Editor" +60 LPRINT "Wm. C. Brown Company Publishers" +70 LPRINT "5712 Odana Road" +80 LPRINT "Madison, WI 53719" +90 LPRINT "": LPRINT "" +100 NEXT X diff --git a/SCBP/LABELS.INP b/SCBP/LABELS.INP new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/SCBP/LABELS.INP @@ -0,0 +1 @@ + diff --git a/SCBP/LABELS.OUT b/SCBP/LABELS.OUT new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LABELS.dif b/SCBP/LABELS.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LABELS.run b/SCBP/LABELS.run new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LASTPAY.80 b/SCBP/LASTPAY.80 new file mode 100644 index 0000000..c6d5917 --- /dev/null +++ b/SCBP/LASTPAY.80 @@ -0,0 +1,10 @@ +LAST PAYMENT ON A LOAN + +REGULAR PAYMENT? 1234 +PRINCIPAL? 456789 +TERM IN YEARS? 30 +ANNUAL INTEREST RATE? 3.5 +NUMBER OF PAYMENTS PER YEAR? 12 +LAST PAYMENT = $ 520485. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/LASTPAY.BAS b/SCBP/LASTPAY.BAS new file mode 100644 index 0000000..3508092 --- /dev/null +++ b/SCBP/LASTPAY.BAS @@ -0,0 +1,33 @@ +10 PRINT "LAST PAYMENT ON A LOAN" +20 PRINT +29 REM - STATEMENTS 30 TO 130 REQUEST USER INPUT +30 PRINT "REGULAR PAYMENT"; +40 INPUT R +50 PRINT "PRINCIPAL"; +60 INPUT P +70 PRINT "TERM IN YEARS"; +80 INPUT Y +90 PRINT "ANNUAL INTEREST RATE"; +100 INPUT I +109 REM - CONVERT INTEREST FROM PERCENT TO DECIMAL +110 I=I/100 +120 PRINT "NUMBER OF PAYMENTS PER YEAR"; +130 INPUT N +140 B0=P +149 REM - COMPUTE ALL PAYMENTS, BALANCES THROUGH LAST PAYMENT USING R +150 FOR J1=1 TO N*Y +159 REM - ROUND OFF INTEREST PAID TO NEAREST CENT +160 I1=INT((B0*I/N)*100+.5)/100 +169 REM - CALCULATE AMOUNT AMORTIZED WITH EACH PAYMENT +170 A=R-I1 +179 REM - BALANCE REMAINING DECREASES WITH EACH PAYMENT +180 B0=B0-A +190 NEXT J1 +199 REM - CALCULATE LAST PAYMENT, ROUND OFF, PRINT +200 PRINT "LAST PAYMENT = $" ;INT((R+B0)*100+.5)/100 +210 PRINT +219 REM - RESTART OR END PROGRAM? +220 PRINT "MORE DATA? (1=YES,0=NO)"; +230 INPUT X +240 IF X=1 THEN 20 +250 END diff --git a/SCBP/LASTPAY.INP b/SCBP/LASTPAY.INP new file mode 100644 index 0000000..c13568b --- /dev/null +++ b/SCBP/LASTPAY.INP @@ -0,0 +1,6 @@ +1234 +456789 +30 +3.5 +12 +0 diff --git a/SCBP/LASTPAY.OUT b/SCBP/LASTPAY.OUT new file mode 100644 index 0000000..ebc538d --- /dev/null +++ b/SCBP/LASTPAY.OUT @@ -0,0 +1,10 @@ +LAST PAYMENT ON A LOAN + +REGULAR PAYMENT? 1234 +PRINCIPAL? 456789 +TERM IN YEARS? 30 +ANNUAL INTEREST RATE? 3.5 +NUMBER OF PAYMENTS PER YEAR? 12 +LAST PAYMENT = $ 520485. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/LASTPAY.dif b/SCBP/LASTPAY.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LASTPAY.run b/SCBP/LASTPAY.run new file mode 100644 index 0000000..c6d5917 --- /dev/null +++ b/SCBP/LASTPAY.run @@ -0,0 +1,10 @@ +LAST PAYMENT ON A LOAN + +REGULAR PAYMENT? 1234 +PRINCIPAL? 456789 +TERM IN YEARS? 30 +ANNUAL INTEREST RATE? 3.5 +NUMBER OF PAYMENTS PER YEAR? 12 +LAST PAYMENT = $ 520485. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/LINCORCO.80 b/SCBP/LINCORCO.80 new file mode 100644 index 0000000..5453380 --- /dev/null +++ b/SCBP/LINCORCO.80 @@ -0,0 +1,8 @@ +LINEAR CORRELATION COEFFICIENT + +NUMBER OF POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 3,7 +X,Y OF POINT 3 ? 5,15 + +COEFFICIENT OF CORRELATION = .991241 diff --git a/SCBP/LINCORCO.BAS b/SCBP/LINCORCO.BAS new file mode 100644 index 0000000..9180219 --- /dev/null +++ b/SCBP/LINCORCO.BAS @@ -0,0 +1,25 @@ +10 PRINT "LINEAR CORRELATION COEFFICIENT" +20 PRINT +30 PRINT "NUMBER OF POINTS"; +40 INPUT N +50 J=0 +60 K=0 +70 L=0 +80 M=0 +90 R=0 +99 REM - ENTER COORDINATES OF DATA POINTS +100 FOR I=1 TO N +110 PRINT "X,Y OF POINT";I; +120 INPUT X,Y +129 REM - ACCUMULATE INTERMEDIATE VALUES +130 J=J+X +140 K=K+Y +150 L=L+X[2 +160 M=M+Y[2 +170 R=R+X*Y +180 NEXT I +189 REM - CALCULATE COEFFICIENT, PRINT +190 R2=(N*R-J*K)/SQR((N*L-J[2)*(N*M-K[2)) +200 PRINT +210 PRINT "COEFFICIENT OF CORRELATION =";R2 +220 END diff --git a/SCBP/LINCORCO.INP b/SCBP/LINCORCO.INP new file mode 100644 index 0000000..bba06ec --- /dev/null +++ b/SCBP/LINCORCO.INP @@ -0,0 +1,4 @@ +3 +1,2 +3,7 +5,15 diff --git a/SCBP/LINCORCO.OUT b/SCBP/LINCORCO.OUT new file mode 100644 index 0000000..71ae98b --- /dev/null +++ b/SCBP/LINCORCO.OUT @@ -0,0 +1,8 @@ +LINEAR CORRELATION COEFFICIENT + +NUMBER OF POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 3,7 +X,Y OF POINT 3 ? 5,15 + +COEFFICIENT OF CORRELATION = .991241 diff --git a/SCBP/LINCORCO.dif b/SCBP/LINCORCO.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LINCORCO.run b/SCBP/LINCORCO.run new file mode 100644 index 0000000..5453380 --- /dev/null +++ b/SCBP/LINCORCO.run @@ -0,0 +1,8 @@ +LINEAR CORRELATION COEFFICIENT + +NUMBER OF POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 3,7 +X,Y OF POINT 3 ? 5,15 + +COEFFICIENT OF CORRELATION = .991241 diff --git a/SCBP/LINEPROG.80 b/SCBP/LINEPROG.80 new file mode 100644 index 0000000..18a9ab5 --- /dev/null +++ b/SCBP/LINEPROG.80 @@ -0,0 +1,24 @@ +LINEAR PROGRAMMING + +NUMBER OF VARIABLES? 2 +NUMBER OF CONTRAINTS? 2 +MATRIX ELEMENTS: +CONSTRAINT 1 + COEFFICIENT 1 ? 1.1 + COEFFICIENT 2 ? 2.2 + RELATION (1 OR -1)? 1 + CONSTANT? 7 +CONSTRAINT 2 + COEFFICIENT 1 ? 3.3 + COEFFICIENT 2 ? 4.4 + RELATION (1 OR -1)? -1 + CONSTANT? 8 + +FUNCTION: + COEFFICIENT 1 ? 5.5 + COEFFICIENT 2 ? 6.6 + + +FUNCTION = 12. +X( 1 )= 0 +X( 2 )= 1.81818 diff --git a/SCBP/LINEPROG.BAS b/SCBP/LINEPROG.BAS new file mode 100644 index 0000000..da4269b --- /dev/null +++ b/SCBP/LINEPROG.BAS @@ -0,0 +1,116 @@ +10 PRINT "LINEAR PROGRAMMING" +20 PRINT +28 REM - SEE DISCUSSION FOR A DESCRRIPTION OF HOW LINE 30 LIMITS THE +29 REM - NUMBWER OF VARIABLES AND CONSTRAITS +30 DIM A(10,14), B(15) +39 REM - LINES 40 TO 70 INPUT THE SIZE OF THE PROBLEM +40 PRINT "NUMBER OF VARIABLES"; +50 INPUT V +60 PRINT "NUMBER OF CONTRAINTS"; +70 INPUT C +79 REM - LINES 80 TO 180 INPUT THE CONSTRAINTS +80 PRINT "MATRIX ELEMENTS:" +90 FOR I=2 TO C+1 +100 PRINT "CONSTRAINT";I-1 +110 FOR J=1 TO V +120 PRINT " COEFFICIENT";J; +130 INPUT A(I,J) +140 NEXT J +149 REM - FOR A '<' RELATION USE 1; FOR A '>' RELATION USE -1 +150 PRINT " RELATION (1 OR -1)"; +160 INPUT A(I,V+1) +170 PRINT " CONSTANT"; +180 INPUT A(I,V+2) +188 REM - INTRODUCE ARTIFICIAL VARIABLES BY MOVING RELATION AND +189 REM - CONSTANTS TO THE END OF THE ROW +190 A(I,C+V+1)=A(I,V+2) +200 A(I,V+2)=0 +210 IF I=2 THEN 240 +220 A(I,V+I-1)=A(I,V+1) +230 A(I,V+1)=0 +240 NEXT I +249 REM - LINES 250 TO 310 INPUT THE OBJECTIVE FUNCTION +250 PRINT +260 PRINT "FUNCTION:" +270 FOR I=1 TO V +280 PRINT " COEFFICIENT";I; +290 INPUT A(1,I) +300 NEXT I +310 PRINT +320 M=1 +330 FOR I=1 TO V +340 B(I)=1 +350 NEXT I +358 REM - LINES 360 TO 430 SUM ALL CONSTRAINTS WITH '>' RELATION +359 REM - IN LAST ROW OF A() +360 FOR I=2 TO C+1 +370 IF A(I,V+I-1)<>-1 THEN 430 +380 B(V+I-1)=1 +390 FOR J=1 TO C+V +400 A(C+2,J)=A(C+2,J)-A(I,J) +410 NEXT J +420 M=C+2 +430 NEXT I +439 REM - LINES 440 TO 690 FIND THE NEXT PIVOT ELEMENT +440 P=1 +450 R=1 +460 FOR I=2 TO C+V +470 IF A(M,I)=A(M,R)THEN 510 +500 R=I +510 NEXT I +520 IF A(M,R)<0 THEN 570 +530 IF M=1 THEN 880 +540 IF A(M,P)>.0001 THEN 840 +550 M=1 +560 GOTO 440 +570 P=1 +580 FOR I=2 TO C+1 +590 IF A(I,R)<=0 THEN 640 +600 Z=A(I,C+V+1)/A(I,R) +610 IF P=1 THEN 630 +620 IF Z>=A(P,C+V+1)/A(P,R) THEN 640 +630 P=I +640 NEXT I +650 IF P=1 THEN 860 +660 FOR I=1 TO V+C +670 IF B(I)=1 THEN 690 +680 IF A(P,I)=1 THEN 700 +690 NEXT I +699 REM - LINES 700 TO 830 PERFORM THE PIVOT OPERATION +700 B(I)=1 +710 B(R)=0 +720 Z=A(P,R) +730 FOR I=1 TO V+C+1 +740 A(P,I)=A(P,I)/Z +750 NEXT I +760 FOR I=1 TO C+2 +770 IF I=P THEN 820 +780 Z=A(I,R) +790 FOR J=1 TO V+C+1 +800 A(I,J)=A(I,J)-Z*A(P,J) +810 NEXT J +820 NEXT I +830 GOTO 440 +840 PRINT "INFEASIBLE" +850 GOTO 1030 +860 PRINT "UNBOUNDED" +870 GOTO 1030 +879 REM - MAKE FINAL CALCULATIONS AND PRINT +880 FOR J=1 TO V +890 IF B(J)=0 THEN 920 +900 B(J)=0 +910 GOTO 960 +920 FOR I=2 TO C+1 +930 IF A(I,J)=1 THEN 950 +940 NEXT I +950 B(J)=A(I,V+C+1) +960 NEXT J +970 Z=A(1,V+C+1) +980 PRINT +990 PRINT "FUNCTION =";Z*(-1) +1000 FOR I=1 TO V +1010 PRINT "X(";I;")=";B(I) +1020 NEXT I +1030 END diff --git a/SCBP/LINEPROG.INP b/SCBP/LINEPROG.INP new file mode 100644 index 0000000..6d5d079 --- /dev/null +++ b/SCBP/LINEPROG.INP @@ -0,0 +1,12 @@ +2 +2 +1.1 +2.2 +1 +7 +3.3 +4.4 +-1 +8 +5.5 +6.6 diff --git a/SCBP/LINEPROG.OUT b/SCBP/LINEPROG.OUT new file mode 100644 index 0000000..c9ba760 --- /dev/null +++ b/SCBP/LINEPROG.OUT @@ -0,0 +1,24 @@ +LINEAR PROGRAMMING + +NUMBER OF VARIABLES? 2 +NUMBER OF CONTRAINTS? 2 +MATRIX ELEMENTS: +CONSTRAINT 1 + COEFFICIENT 1 ? 1.1 + COEFFICIENT 2 ? 2.2 + RELATION (1 OR -1)? 1 + CONSTANT? 7 +CONSTRAINT 2 + COEFFICIENT 1 ? 3.3 + COEFFICIENT 2 ? 4.4 + RELATION (1 OR -1)? -1 + CONSTANT? 8 + +FUNCTION: + COEFFICIENT 1 ? 5.5 + COEFFICIENT 2 ? 6.6 + + +FUNCTION = 12. +X( 1 )= 0 +X( 2 )= 1.81818 diff --git a/SCBP/LINEPROG.dif b/SCBP/LINEPROG.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LINEPROG.run b/SCBP/LINEPROG.run new file mode 100644 index 0000000..18a9ab5 --- /dev/null +++ b/SCBP/LINEPROG.run @@ -0,0 +1,24 @@ +LINEAR PROGRAMMING + +NUMBER OF VARIABLES? 2 +NUMBER OF CONTRAINTS? 2 +MATRIX ELEMENTS: +CONSTRAINT 1 + COEFFICIENT 1 ? 1.1 + COEFFICIENT 2 ? 2.2 + RELATION (1 OR -1)? 1 + CONSTANT? 7 +CONSTRAINT 2 + COEFFICIENT 1 ? 3.3 + COEFFICIENT 2 ? 4.4 + RELATION (1 OR -1)? -1 + CONSTANT? 8 + +FUNCTION: + COEFFICIENT 1 ? 5.5 + COEFFICIENT 2 ? 6.6 + + +FUNCTION = 12. +X( 1 )= 0 +X( 2 )= 1.81818 diff --git a/SCBP/LININT.80 b/SCBP/LININT.80 new file mode 100644 index 0000000..e40ab5c --- /dev/null +++ b/SCBP/LININT.80 @@ -0,0 +1,10 @@ +LINEAR INTERPOLATION + +X,Y OF FIRST POINT? 1,2 +X,Y OF SECOND POINT? 3,4 +INTERPOLATE: X=? 2 + Y = 3 + +MORE POINTS ON THIS LINE (1=yes, 0=NO)? 0 + +NEW LINE (1=YES, 0=NO)? 0 diff --git a/SCBP/LININT.BAS b/SCBP/LININT.BAS new file mode 100644 index 0000000..1444f16 --- /dev/null +++ b/SCBP/LININT.BAS @@ -0,0 +1,24 @@ +10 PRINT "LINEAR INTERPOLATION" +20 PRINT +29 REM - ENTER X- AND Y-COORDINATES OF TWO POINTS ON THE LINE +30 PRINT "X,Y OF FIRST POINT"; +40 INPUT X1,Y1 +50 PRINT "X,Y OF SECOND POINT"; +60 INPUT X2,Y2 +69 REM - ENTER X-COORDINATE OF POINT TO BE INTERPOLATED +70 PRINT "INTERPOLATE: X="; +80 INPUT X +89 REM - COMPUTE CORRESPONDING Y-COORDINATE +90 Y=Y1+(Y2-Y1)/(X2-X1)*(X-X1) +99 REM - ROUND OFF, PRINT +100 PRINT " Y = ";INT(Y*1000+.5)/1000 +110 PRINT +120 PRINT "MORE POINTS ON THIS LINE (1=yes, 0=NO)"; +130 INPUT Z +140 PRINT +150 IF Z=1 THEN 70 +159 REM - INTERPOLATE ON ANOTHER LINE? +160 PRINT "NEW LINE (1=YES, 0=NO)"; +170 INPUT Z +180 IF Z=1 THEN 20 +190 END diff --git a/SCBP/LININT.INP b/SCBP/LININT.INP new file mode 100644 index 0000000..df3aed1 --- /dev/null +++ b/SCBP/LININT.INP @@ -0,0 +1,5 @@ +1,2 +3,4 +2 +0 +0 diff --git a/SCBP/LININT.OUT b/SCBP/LININT.OUT new file mode 100644 index 0000000..ec6f7ef --- /dev/null +++ b/SCBP/LININT.OUT @@ -0,0 +1,10 @@ +LINEAR INTERPOLATION + +X,Y OF FIRST POINT? 1,2 +X,Y OF SECOND POINT? 3,4 +INTERPOLATE: X=? 2 + Y = 3 + +MORE POINTS ON THIS LINE (1=yes, 0=NO)? 0 + +NEW LINE (1=YES, 0=NO)? 0 diff --git a/SCBP/LININT.dif b/SCBP/LININT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LININT.run b/SCBP/LININT.run new file mode 100644 index 0000000..e40ab5c --- /dev/null +++ b/SCBP/LININT.run @@ -0,0 +1,10 @@ +LINEAR INTERPOLATION + +X,Y OF FIRST POINT? 1,2 +X,Y OF SECOND POINT? 3,4 +INTERPOLATE: X=? 2 + Y = 3 + +MORE POINTS ON THIS LINE (1=yes, 0=NO)? 0 + +NEW LINE (1=YES, 0=NO)? 0 diff --git a/SCBP/LINREGR.80 b/SCBP/LINREGR.80 new file mode 100644 index 0000000..bb723c6 --- /dev/null +++ b/SCBP/LINREGR.80 @@ -0,0 +1,21 @@ +LINEAR REGRESSION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 3,4 +X,Y OF POINT 3 ? 5,8 + +F(X) = .166667 + ( 1.5 * x ) + +COEFFICIENT OF DETERMINATION (R[2) = .964286 +COEFFICIENT OF CORRELATION = .981981 +STANDARD ERROR OF ESTIMATE = .816497 + +INTERPOLATION: (ENTER X=0 TO END PROGRAM) +X =? 2 +Y = 3.16667 + +X =? 4 +Y = 6.16667 + +X =? 0 diff --git a/SCBP/LINREGR.BAS b/SCBP/LINREGR.BAS new file mode 100644 index 0000000..109b2aa --- /dev/null +++ b/SCBP/LINREGR.BAS @@ -0,0 +1,45 @@ +10 PRINT "LINEAR REGRESSION" +20 PRINT +30 PRINT "NUMBER OF KNOWN POINTS"; +40 INPUT N +50 J=0 +60 K=0 +70 L=0 +80 M=0 +90 R2=0 +99 REM -LOOP TO ENTER COORDINATES OF POINTS +100 FOR I=1 TO N +110 PRINT "X,Y OF POINT";I; +120 INPUT X,Y +129 REM - ACCUMULATE INTERMEDIATE SUMS +130 J=J+X +140 K=K+Y +150 L=L+X[2 +160 M=M+Y[2 +170 R2=R2+X*Y +180 NEXT I +189 REM - COMPUTE CURVE COEFFICIENT +190 B=(N*R2-K*J)/(N*L-J[2) +200 A=(K-B*J)/N +210 PRINT +220 PRINT "F(X) =";A;"+ (";B;"* x )" +229 REM - COMPUTE REGRESSION ANALYSIS +230 J=B*(R2-J*K/N) +240 M=M-K[2/N +250 K=M-J +260 PRINT +270 R2=J/M +280 PRINT "COEFFICIENT OF DETERMINATION (R[2) =";R2 +290 PRINT "COEFFICIENT OF CORRELATION =";SQR(R2) +300 PRINT "STANDARD ERROR OF ESTIMATE =";SQR(K/(N-2)) +310 PRINT +319 REM - ESTIMATE Y-COORDINATES OF POINTS WITH ENTERED X-COORDINATES +320 PRINT "INTERPOLATION: (ENTER X=0 TO END PROGRAM)" +330 PRINT"X ="; +340 INPUT X +349 REM - RESTART OR END PROGRAM? +350 IF X=0 THEN 390 +360 PRINT "Y =";A+B*X +370 PRINT +380 GOTO 330 +390 END diff --git a/SCBP/LINREGR.INP b/SCBP/LINREGR.INP new file mode 100644 index 0000000..9e9ba28 --- /dev/null +++ b/SCBP/LINREGR.INP @@ -0,0 +1,7 @@ +3 +1,2 +3,4 +5,8 +2 +4 +0 diff --git a/SCBP/LINREGR.OUT b/SCBP/LINREGR.OUT new file mode 100644 index 0000000..be77424 --- /dev/null +++ b/SCBP/LINREGR.OUT @@ -0,0 +1,21 @@ +LINEAR REGRESSION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 3,4 +X,Y OF POINT 3 ? 5,8 + +F(X) = .166667 + ( 1.5 * x ) + +COEFFICIENT OF DETERMINATION (R[2) = .964286 +COEFFICIENT OF CORRELATION = .981981 +STANDARD ERROR OF ESTIMATE = .816497 + +INTERPOLATION: (ENTER X=0 TO END PROGRAM) +X =? 2 +Y = 3.16667 + +X =? 4 +Y = 6.16667 + +X =? 0 diff --git a/SCBP/LINREGR.dif b/SCBP/LINREGR.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LINREGR.run b/SCBP/LINREGR.run new file mode 100644 index 0000000..bb723c6 --- /dev/null +++ b/SCBP/LINREGR.run @@ -0,0 +1,21 @@ +LINEAR REGRESSION + +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 1,2 +X,Y OF POINT 2 ? 3,4 +X,Y OF POINT 3 ? 5,8 + +F(X) = .166667 + ( 1.5 * x ) + +COEFFICIENT OF DETERMINATION (R[2) = .964286 +COEFFICIENT OF CORRELATION = .981981 +STANDARD ERROR OF ESTIMATE = .816497 + +INTERPOLATION: (ENTER X=0 TO END PROGRAM) +X =? 2 +Y = 3.16667 + +X =? 4 +Y = 6.16667 + +X =? 0 diff --git a/SCBP/LOANBAL.80 b/SCBP/LOANBAL.80 new file mode 100644 index 0000000..aef4eca --- /dev/null +++ b/SCBP/LOANBAL.80 @@ -0,0 +1,10 @@ +REMAINING BALANCE ON A LOAN + +REGULAR PAYMENT? 1234 +PRINCIPAL? 56789 +NUMBER OF PAYMENTS PER YEAR? 12 +ANNUAL INTEREST RATE? 3.25 +LAST PAYMENT MADE (PAYMENT NO. ,YEAR, I.E. 10,4)? 12,30 +REMAINING BALANCE = $-600373. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/LOANBAL.BAS b/SCBP/LOANBAL.BAS new file mode 100644 index 0000000..2792894 --- /dev/null +++ b/SCBP/LOANBAL.BAS @@ -0,0 +1,35 @@ +10 PRINT "REMAINING BALANCE ON A LOAN" +20 PRINT +29 REM - STATEMENTS 30 TO 130 REQUEST USER INPUT +30 PRINT "REGULAR PAYMENT"; +40 INPUT R +50 PRINT "PRINCIPAL"; +60 INPUT P +70 PRINT "NUMBER OF PAYMENTS PER YEAR"; +80 INPUT N +90 PRINT "ANNUAL INTEREST RATE"; +100 INPUT I +109 REM - CONVERT FROM PERCENT TO DECIMAL +110 I=I/100 +119 REM - ENTER THE PAYMENT NUMBER WITHIN THE YEAR, I.E. N1<=N +120 PRINT "LAST PAYMENT MADE (PAYMENT NO. ,YEAR, I.E. 10,4)"; +130 INPUT N1,Y +139 REM - INITIALIZE REMAINING BALANCE +140 B0=P +149 REM - LOOP TO ACCUMULATE AMOUNT PAID SO FAR +150 FOR J1=1 TO N*(Y-1)+N1 +159 REM - CALCULATE INTEREST PAID WITH EACH PAYMENT +160 I1=INT((B0*I/N)*100+.5)/100 +169 REM - CALCULATE AMOUNT AMORTIZED WITH EACH PAYMENT +170 A=R-I1 +179 REM - CALCULATE REMAINING BALANCE ON PRINCIPAL +180 B0=B0-A +190 NEXT J1 +199 REM - ROUND OFF, PRINT +200 PRINT "REMAINING BALANCE = $";INT(B0*100+.5)/100 +210 PRINT +219 REM - RESTART OR END PROGRAM? +220 PRINT "MORE DATA? (1=YES,0=NO)"; +230 INPUT X +240 IF X=1 THEN 20 +250 END diff --git a/SCBP/LOANBAL.INP b/SCBP/LOANBAL.INP new file mode 100644 index 0000000..61babc7 --- /dev/null +++ b/SCBP/LOANBAL.INP @@ -0,0 +1,6 @@ +1234 +56789 +12 +3.25 +12,30 +0 diff --git a/SCBP/LOANBAL.OUT b/SCBP/LOANBAL.OUT new file mode 100644 index 0000000..f99ebd5 --- /dev/null +++ b/SCBP/LOANBAL.OUT @@ -0,0 +1,10 @@ +REMAINING BALANCE ON A LOAN + +REGULAR PAYMENT? 1234 +PRINCIPAL? 56789 +NUMBER OF PAYMENTS PER YEAR? 12 +ANNUAL INTEREST RATE? 3.25 +LAST PAYMENT MADE (PAYMENT NO. ,YEAR, I.E. 10,4)? 12,30 +REMAINING BALANCE = $-600373. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/LOANBAL.dif b/SCBP/LOANBAL.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LOANBAL.run b/SCBP/LOANBAL.run new file mode 100644 index 0000000..aef4eca --- /dev/null +++ b/SCBP/LOANBAL.run @@ -0,0 +1,10 @@ +REMAINING BALANCE ON A LOAN + +REGULAR PAYMENT? 1234 +PRINCIPAL? 56789 +NUMBER OF PAYMENTS PER YEAR? 12 +ANNUAL INTEREST RATE? 3.25 +LAST PAYMENT MADE (PAYMENT NO. ,YEAR, I.E. 10,4)? 12,30 +REMAINING BALANCE = $-600373. + +MORE DATA? (1=YES,0=NO)? 0 diff --git a/SCBP/LOANPAY.80 b/SCBP/LOANPAY.80 new file mode 100644 index 0000000..89f4e24 --- /dev/null +++ b/SCBP/LOANPAY.80 @@ -0,0 +1,9 @@ +REGULAR PAYMENT ON A LOAN + +TERM IN YEARS? 30 +PRINCIPAL? 456789 +ANNUAL INTEREST RATE? 3.75 +NUMBER OF PAYMENTS PER YEAR? 12 +REGULAR PAYMENT = $ 2115.46 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LOANPAY.BAS b/SCBP/LOANPAY.BAS new file mode 100644 index 0000000..41766db --- /dev/null +++ b/SCBP/LOANPAY.BAS @@ -0,0 +1,23 @@ +10 PRINT "REGULAR PAYMENT ON A LOAN" +20 PRINT +29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "TERM IN YEARS"; +40 INPUT Y +50 PRINT "PRINCIPAL"; +60 INPUT P +70 PRINT "ANNUAL INTEREST RATE"; +80 INPUT I +90 PRINT "NUMBER OF PAYMENTS PER YEAR"; +100 INPUT N +108 REM - CALCULATE AMOUNT OF REGULAR PAYMENT BY FORMULA; +109 REM - INTEREST CONVERTED FROM PERCENT TO DECIMAL FOR CALCULATIONS +110 R=((I/100)*P/N)/(1-1/((I/100)/N+1)[(N*Y)) +119 REM - ROUND OFF TO NEAREST CENT, PRINT +120 PRINT "REGULAR PAYMENT = $"; INT(R*100+.5)/100 +129 REM -PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +130 PRINT +139 REM - RESTART OR END PROGRAM? +140 PRINT "MORE DATA? (1=YES, 0=NO)"; +150 INPUT X +160 IF X=1 THEN 20 +170 END diff --git a/SCBP/LOANPAY.INP b/SCBP/LOANPAY.INP new file mode 100644 index 0000000..f2d2138 --- /dev/null +++ b/SCBP/LOANPAY.INP @@ -0,0 +1,5 @@ +30 +456789 +3.75 +12 +0 diff --git a/SCBP/LOANPAY.OUT b/SCBP/LOANPAY.OUT new file mode 100644 index 0000000..7ed1697 --- /dev/null +++ b/SCBP/LOANPAY.OUT @@ -0,0 +1,9 @@ +REGULAR PAYMENT ON A LOAN + +TERM IN YEARS? 30 +PRINCIPAL? 456789 +ANNUAL INTEREST RATE? 3.75 +NUMBER OF PAYMENTS PER YEAR? 12 +REGULAR PAYMENT = $ 2115.46 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LOANPAY.dif b/SCBP/LOANPAY.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LOANPAY.run b/SCBP/LOANPAY.run new file mode 100644 index 0000000..89f4e24 --- /dev/null +++ b/SCBP/LOANPAY.run @@ -0,0 +1,9 @@ +REGULAR PAYMENT ON A LOAN + +TERM IN YEARS? 30 +PRINCIPAL? 456789 +ANNUAL INTEREST RATE? 3.75 +NUMBER OF PAYMENTS PER YEAR? 12 +REGULAR PAYMENT = $ 2115.46 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LOANRATE.80 b/SCBP/LOANRATE.80 new file mode 100644 index 0000000..9744add --- /dev/null +++ b/SCBP/LOANRATE.80 @@ -0,0 +1,9 @@ +ANNUAL INTEREST RATE ON A LOAN + +REGULAR PAYMENT? 2345 +TERM IN YEARS? 30 +PRINCIPAL? 456789 +NUMBER OF PAYMENTS PER YEAR? 12 +ANNUAL INTEREST RATE = 4.612 % + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LOANRATE.BAS b/SCBP/LOANRATE.BAS new file mode 100644 index 0000000..2b8b21a --- /dev/null +++ b/SCBP/LOANRATE.BAS @@ -0,0 +1,44 @@ +10 PRINT "ANNUAL INTEREST RATE ON A LOAN" +20 PRINT +29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "REGULAR PAYMENT"; +40 INPUT R +50 PRINT "TERM IN YEARS"; +60 INPUT Y +70 PRINT "PRINCIPAL"; +80 INPUT P +90 PRINT "NUMBER OF PAYMENTS PER YEAR"; +100 INPUT N +109 REM - GUESS AN INTEREST RATE (10%) TO INITIATE TESTING +110 I=10 +119 REM - I2=LAST GUESS OR ESTIMATE (START WITH 0) +120 I2=0 +129 REM - COMPUTE REGULAR PAYMENT USING GUESSED INTEREST RATE +130 R1=(I*P/N)/(1-1/((I/N+1)[(N*Y))) +139 REM - ROUND OFF TO NEAREST CENT +140 R1=INT(R1*100+.5)/100 +149 REM - I3=NUMBER USED TO CLOSE IN ON INTEREST RATE +150 I3=ABS(I-I2)/2 +159 REM - SAVE THIS GUESS +160 I2=I +168 REM - COMPARE COMPUTED PAYMENT (R1) TO INPUT PAYMENT (R); +169 REM - IF THEY'RE EQUAL, LAST RATE GUESS=APPROXIMATE REG. PAYMENT +170 IF R1=R THEN 230 +180 IF R1>R THEN 210 +189 REM - R1R, RATE MUST BE LOWER THAN LAST GUESS +210 I=I-I3 +219 REM - RETEST WITH NEW GUESS +220 GOTO 130 +229 REM - COMPUTE INTEREST TO PROPER PROPORTIONS, ROUND OFF, PRINT +230 I=((INT((I*1000)*100+.5))/100)/1000 +240 PRINT "ANNUAL INTEREST RATE =";I*100;"%" +250 PRINT +259 REM - RESTART OR END PROGRAM? +260 PRINT "MORE DATA? (1=YES, 0=NO)"; +270 INPUT X +280 IF X=1 THEN 20 +290 END diff --git a/SCBP/LOANRATE.INP b/SCBP/LOANRATE.INP new file mode 100644 index 0000000..3eda29a --- /dev/null +++ b/SCBP/LOANRATE.INP @@ -0,0 +1,5 @@ +2345 +30 +456789 +12 +0 diff --git a/SCBP/LOANRATE.OUT b/SCBP/LOANRATE.OUT new file mode 100644 index 0000000..591d208 --- /dev/null +++ b/SCBP/LOANRATE.OUT @@ -0,0 +1,9 @@ +ANNUAL INTEREST RATE ON A LOAN + +REGULAR PAYMENT? 2345 +TERM IN YEARS? 30 +PRINCIPAL? 456789 +NUMBER OF PAYMENTS PER YEAR? 12 +ANNUAL INTEREST RATE = 4.612 % + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LOANRATE.dif b/SCBP/LOANRATE.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LOANRATE.run b/SCBP/LOANRATE.run new file mode 100644 index 0000000..9744add --- /dev/null +++ b/SCBP/LOANRATE.run @@ -0,0 +1,9 @@ +ANNUAL INTEREST RATE ON A LOAN + +REGULAR PAYMENT? 2345 +TERM IN YEARS? 30 +PRINCIPAL? 456789 +NUMBER OF PAYMENTS PER YEAR? 12 +ANNUAL INTEREST RATE = 4.612 % + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LOANTERM.80 b/SCBP/LOANTERM.80 new file mode 100644 index 0000000..ca6b557 --- /dev/null +++ b/SCBP/LOANTERM.80 @@ -0,0 +1,9 @@ +TERM OF A LOAN + +REGULAR PAYMENT? 2345 +PRINCIPAL? 456789 +ANNUAL INTEREST RATE? 3.5 +NUMBER OF PAYMENTS PER YEAR? 12 +TERM = 24 YEARS + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LOANTERM.BAS b/SCBP/LOANTERM.BAS new file mode 100644 index 0000000..5ec482b --- /dev/null +++ b/SCBP/LOANTERM.BAS @@ -0,0 +1,22 @@ +10 PRINT "TERM OF A LOAN" +20 PRINT +29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "REGULAR PAYMENT"; +40 INPUT R +50 PRINT "PRINCIPAL"; +60 INPUT P +70 PRINT "ANNUAL INTEREST RATE"; +80 INPUT I +90 PRINT "NUMBER OF PAYMENTS PER YEAR"; +100 INPUT N +108 REM - CALCULATE TERM IN YEARS BY FORMULA; +109 REM - INTEREST CONVERTED FROM PERCENT TO DECIMAL FOR CALCULATION +110 Y=-(LOG(1-(P*(I/100))/(N*R))/(LOG(1+I/100/N)*N)) +119 REM - ROUND OFF TO NEAREST TENTH, PRINT +120 PRINT "TERM =";INT(Y*10+.5)/10;"YEARS" +130 PRINT +139 REM - RESTART OR END PROGRAM? +140 PRINT "MORE DATA? (1=YES, 0=NO)"; +150 INPUT X +160 IF X=1 THEN 20 +170 END diff --git a/SCBP/LOANTERM.INP b/SCBP/LOANTERM.INP new file mode 100644 index 0000000..dca5f5f --- /dev/null +++ b/SCBP/LOANTERM.INP @@ -0,0 +1,5 @@ +2345 +456789 +3.5 +12 +0 diff --git a/SCBP/LOANTERM.OUT b/SCBP/LOANTERM.OUT new file mode 100644 index 0000000..6fb4f18 --- /dev/null +++ b/SCBP/LOANTERM.OUT @@ -0,0 +1,9 @@ +TERM OF A LOAN + +REGULAR PAYMENT? 2345 +PRINCIPAL? 456789 +ANNUAL INTEREST RATE? 3.5 +NUMBER OF PAYMENTS PER YEAR? 12 +TERM = 24 YEARS + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LOANTERM.dif b/SCBP/LOANTERM.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/LOANTERM.run b/SCBP/LOANTERM.run new file mode 100644 index 0000000..ca6b557 --- /dev/null +++ b/SCBP/LOANTERM.run @@ -0,0 +1,9 @@ +TERM OF A LOAN + +REGULAR PAYMENT? 2345 +PRINCIPAL? 456789 +ANNUAL INTEREST RATE? 3.5 +NUMBER OF PAYMENTS PER YEAR? 12 +TERM = 24 YEARS + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/LPRINT.OUT b/SCBP/LPRINT.OUT new file mode 100644 index 0000000..1a74922 --- /dev/null +++ b/SCBP/LPRINT.OUT @@ -0,0 +1,180 @@ +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + +Michael G. Walraven, Ph.D. +9955 Reynolds Road +Horton, MI 49246 + + + +Ms. Sandy Schmidt, Editor +Wm. C. Brown Company Publishers +5712 Odana Road +Madison, WI 53719 + + diff --git a/SCBP/MANNWHIT.80 b/SCBP/MANNWHIT.80 new file mode 100644 index 0000000..1ea07b4 --- /dev/null +++ b/SCBP/MANNWHIT.80 @@ -0,0 +1,19 @@ +MANN-WHITNEY U-TEST + +SAMPLE 1 : + SIZE? 4 + DATA 1 ? 1.234 + DATA 2 ? 9.2342 + DATA 3 ? 7.2323 + DATA 4 ? 7.45645 + +SAMPLE 2 : + SIZE? 4 + DATA 1 ? 9.234234 + DATA 2 ? 8.665455 + DATA 3 ? 6.293842 + DATA 4 ? 3.202345 + + +FIRST SAMPLE PRECEEDING, U = 9 +SECOND SAMPLE PRECEEDING, U = 7 diff --git a/SCBP/MANNWHIT.BAS b/SCBP/MANNWHIT.BAS new file mode 100644 index 0000000..c6a4dc5 --- /dev/null +++ b/SCBP/MANNWHIT.BAS @@ -0,0 +1,80 @@ +10 PRINT "MANN-WHITNEY U-TEST" +20 PRINT +28 REM - SET MAXIMUM SAMPEL SIZE TO X(m),Y(n) (WHERE +29 REM - M=MAXIMUM SIZE OF SAMPLE 1, N=MAXIMUM SIZE OF SAMPLE TWO +30 DIM X(25),Y(25) +40 DIM N(2) +49 REM - INPUT THE TWO SAMPELS +50 FOR I=1 TO 2 +60 PRINT "SAMPLE";I;":" +70 PRINT " SIZE"; +80 INPUT N(I) +90 FOR J=1 TO N(I) +100 PRINT " DATA";J; +110 INPUT Y(J) +120 NEXT J +129 REM - SORT EACH SAMPLE +130 FOR J=1 TO N(I) +140 FOR K=1 TO N(I)-J +150 C=Y(K) +160 D=Y(K+1) +170 IF Y(K)N(1) THEN 580 +340 IF J>N(2) THEN 620 +350 IF X(I)N(1) THEN 480 +450 IF X(I)<>X(I-1) THEN 480 +460 I=I+1 +470 GOTO 510 +480 IF J>N(2) THEN 550 +490 IF Y(J)<>Y(J-1) THEN 550 +500 J=J+1 +510 R1=R1+R +520 R=R+1 +530 K=K+1 +540 GOTO 440 +550 X=X+(I-M)*R1/K +560 Y=Y+(J-L)*R1/K +570 GOTO 330 +580 IF J>N(2) THEN 660 +590 Y=Y+R +600 J=J+1 +610 GOTO 640 +620 X=X+R +630 I=I+1 +640 R=R+1 +650 GOTO 330 +659 REM - U1=NUMBER OF TIMES SAMPLE 1 SCORES PRECEED SAMPLE 2 SCORES +660 U1=N(1)*N(2)+N(1)*(N(1)+1)/2-X +669 REM - U1=NUMBER OF TIMES SAMPLE 2 SCORES PRECEED SAMPLE 1 SCORES +670 U2=N(1)*N(2)+N(2)*(N(2)+1)/2-Y +680 PRINT +690 PRINT "FIRST SAMPLE PRECEEDING, U =";U1 +700 PRINT "SECOND SAMPLE PRECEEDING, U =";U2 +710 END diff --git a/SCBP/MANNWHIT.INP b/SCBP/MANNWHIT.INP new file mode 100644 index 0000000..2319f26 --- /dev/null +++ b/SCBP/MANNWHIT.INP @@ -0,0 +1,10 @@ +4 +1.234 +9.2342 +7.2323 +7.45645 +4 +9.234234 +8.665455 +6.293842 +3.202345 diff --git a/SCBP/MANNWHIT.OUT b/SCBP/MANNWHIT.OUT new file mode 100644 index 0000000..62a27c9 --- /dev/null +++ b/SCBP/MANNWHIT.OUT @@ -0,0 +1,19 @@ +MANN-WHITNEY U-TEST + +SAMPLE 1 : + SIZE? 4 + DATA 1 ? 1.234 + DATA 2 ? 9.2342 + DATA 3 ? 7.2323 + DATA 4 ? 7.45645 + +SAMPLE 2 : + SIZE? 4 + DATA 1 ? 9.234234 + DATA 2 ? 8.665455 + DATA 3 ? 6.293842 + DATA 4 ? 3.202345 + + +FIRST SAMPLE PRECEEDING, U = 9 +SECOND SAMPLE PRECEEDING, U = 7 diff --git a/SCBP/MANNWHIT.dif b/SCBP/MANNWHIT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/MANNWHIT.run b/SCBP/MANNWHIT.run new file mode 100644 index 0000000..1ea07b4 --- /dev/null +++ b/SCBP/MANNWHIT.run @@ -0,0 +1,19 @@ +MANN-WHITNEY U-TEST + +SAMPLE 1 : + SIZE? 4 + DATA 1 ? 1.234 + DATA 2 ? 9.2342 + DATA 3 ? 7.2323 + DATA 4 ? 7.45645 + +SAMPLE 2 : + SIZE? 4 + DATA 1 ? 9.234234 + DATA 2 ? 8.665455 + DATA 3 ? 6.293842 + DATA 4 ? 3.202345 + + +FIRST SAMPLE PRECEEDING, U = 9 +SECOND SAMPLE PRECEEDING, U = 7 diff --git a/SCBP/MAPCHECK.80 b/SCBP/MAPCHECK.80 new file mode 100644 index 0000000..ef95e2c --- /dev/null +++ b/SCBP/MAPCHECK.80 @@ -0,0 +1,17 @@ +MAP CHECK + +**NEXT SET OF COURSES** +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 1,23,45,67 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 2,34,56,78 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 3,46,58,79 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 4,98,76,54 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 0,0,0,0 +CHANGE COURSE NUMBER? 00 + +BEARING DISTANCE LAT,LON N,E + 0 , 0 + +ANY MORE COURSES? 0 + +TOTAL AREA IS 0 SQ FT. ( 0 ACRES) + diff --git a/SCBP/MAPCHECK.BAS b/SCBP/MAPCHECK.BAS new file mode 100644 index 0000000..b2005d3 --- /dev/null +++ b/SCBP/MAPCHECK.BAS @@ -0,0 +1,136 @@ +10 PRINT "MAP CHECK" +20 PRINT +29 REM - CLEAR AREA, SET INITIAL GRID COORDINATES, COURSE SET SIZE +30 DIM B(10),L(10) +40 DEF FNR(X)=INT(X*1000+.5)/1000 +50 R=.0174532925199 +60 K2=10 +70 PRINT "**NEXT SET OF COURSES**" +80 FOR K1=1 TO K2 +89 REM - INPUT NEXT COURSE +90 GOSUB 1100 +100 IF Q=0 THEN 120 +110 NEXT K1 +119 REM - ALLOW CHANGES TO LAST SET OF COURSES +120 K1=0 +130 PRINT "CHANGE COURSE NUMBER"; +140 INPUT K1 +149 REM - NO MORE CHANGES IF 0 WAS ENTERED +150 IF K1=0 THEN 180 +160 GOSUB 1100 +170 GOTO 120 +179 REM - CALCULATE AND PRINT THIS SET OF COURSES +180 PRINT +190 PRINT "BEARING","DISTANCE","LAT,LON","N,E" +200 PRINT ,,,N;",";E +210 FOR K1=1 TO K2 +220 L1=L(K1) +229 REM - CHECK FOR A CURVED COURSE +230 IF L(K1)<0 THEN 800 +239 REM - CHECK FOR END OF SET +240 IF L(K1)=0 THEN 630 +249 REM - CALCULATE LATITUDE, LONGITUDE, AND DISTANCE FROM START +250 L=L(K1)*SIN(B(K1)*R) +260 D=L(K1)*COS(B(K1)*R) +270 N=N+L +280 E=E+D +289 REM - ACCUMLATE AREA OF THIS SEGMENT +290 A=A+E*L-N*D +299 REM - COMPUTE COMPASS HEADING OF CURRENT BEARING +300 B1$=" " +310 B2$="e" +320 IF B(K1)>=90 THEN 360 +330 IF B(K1)=0 THEN 560 +340 B1$="n" +350 GOTO 560 +360 B1$="n" +370 B2$=" " +380 IF B(K1)>=180 THEN 420 +390 IF B(K1)=90 THEN 560 +400 B2$="w" +410 GOTO 560 +420 B1$=" " +430 B2$="w" +440 IF B(K1)>=270 THEN 480 +450 IF B(K1)=180 THEN 560 +460 B1$="s" +470 GOTO 560 +480 B1$="s" +490 B2$=" " +500 IF B(K1)>=360 THEN 540 +510 IF B(K1)=270 THEN 560 +520 B2$="e" +530 GOTO 560 +540 B(K1)=B(K1)-360 +550 GOTO 300 +559 REM - CONVERT ANGLE TO DEGREES, MINUTES, SECONDS +560 D1=INT(B(K1)) +570 M1=(B(K1)-D1)*60 +580 M=INT(M1) +590 S=INT((M1-M)*60+.5) +599 REM - PRINT COURSE +600 PRINT B1$;B2$;D1;M;S,FNR(L(K1)),FNR(L);",";FNR(D),FNR(N);",";FNR(E) +610 L(K1)=L1 +620 NEXT K1 +629 REM - GET MORE COURSES, IF ANY +630 PRINT +640 PRINT "ANY MORE COURSES"; +650 INPUT X +660 IF X=1 THEN 70 +719 REM - COMPUTE AND PRINT TOTAL AREA +720 A=ABS(A/2) +730 PRINT +740 PRINT "TOTAL AREA IS";FNR(A);"SQ FT. ("; +750 PRINT INT(A/43560*100000000+.5)/100000000;"ACRES)" +760 PRINT +770 GOTO 1310 +799 REM - COMPUTE FOR CURVED CCOURSE +800 C=ABS(B(K1)-B(K1-1)) +810 IF C<=180 THEN 830 +820 C=ABS(180-C) +830 C=ABS(180-C) +840 D=-L(K1) +850 L(K1)=-L(K1) +860 A1=C/180*3.14159265*D[2 +870 C1=2*D*SIN(C/2*R) +880 IF C=180 THEN 910 +890 T=D*TAN(C/2*R) +900 GOTO 920 +910 T=999999.999 +920 B0=B(K1)-B(K1-1) +930 IF B0<-180 THEN 980 +940 IF B0>180 THEN 960 +950 IF B0>0 THEN 980 +960 A=A+A1 +970 GOTO 990 +980 A=A-A1 +989 REM - CONVERT ANGLE TO DEGREES, MINUTES, SECONDS +990 D1=INT(C) +1000 M1=(C-D1)*60 +1010 M=INT(M1) +1020 S=INT((M1-M)*60+.5) +1030 PRINT " ";D1;M;S;" R=";FNR(D);"A=";FNR(A1);"C=";FNR(C1);"t=";FNR(T) +1040 GOTO 250 +1099 REM - THIS SUBROUTINE REQUESTS DATA FOR ONE COURSE +1100 Q=0 +1110 B(K1)=0 +1120 L(K1)=0 +1130 PRINT "COURSE";K1;":QUADRANT,DEGREES,MINUTES,SECONDS"; +1140 INPUT Q,D,M,S +1150 IF Q=0 THEN 1300 +1160 IF Q>4 THEN 1130 +1170 IF Q<1 THEN 1130 +1180 IF D+60*M+360*S>90 THEN 1130 +1190 IF D+M+S<0 THEN 1130 +1200 B(K1)=D+((M+S/60)/160) +1210 IF Q=1 THEN 1250 +1220 IF Q=4 THEN 1250 +1230 B(K1)=270+B(K1)*(-1)[Q +1240 GOTO 1260 +1250 B(K1)=90+B(K1)*(-1)[Q +1260 PRINT " DISTANCE (NEGATIVE IF RADIAL)"; +1270 INPUT L(K1) +1280 IF L(K1)>0 THEN 1300 +1290 IF ABS(L(K1))<>ABS(L(K1-1)) THEN 1260 +1300 RETURN +1310 END diff --git a/SCBP/MAPCHECK.INP b/SCBP/MAPCHECK.INP new file mode 100644 index 0000000..4f396e9 --- /dev/null +++ b/SCBP/MAPCHECK.INP @@ -0,0 +1,7 @@ +1,23,45,67 +2,34,56,78 +3,46,58,79 +4,98,76,54 +0,0,0,0 +00 +0 diff --git a/SCBP/MAPCHECK.OUT b/SCBP/MAPCHECK.OUT new file mode 100644 index 0000000..be47298 --- /dev/null +++ b/SCBP/MAPCHECK.OUT @@ -0,0 +1,17 @@ +MAP CHECK + +**NEXT SET OF COURSES** +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 1,23,45,67 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 2,34,56,78 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 3,46,58,79 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 4,98,76,54 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 0,0,0,0 +CHANGE COURSE NUMBER? 00 + +BEARING DISTANCE LAT,LON N,E + 0 , 0 + +ANY MORE COURSES? 0 + +TOTAL AREA IS 0 SQ FT. ( 0 ACRES) + diff --git a/SCBP/MAPCHECK.dif b/SCBP/MAPCHECK.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/MAPCHECK.run b/SCBP/MAPCHECK.run new file mode 100644 index 0000000..ef95e2c --- /dev/null +++ b/SCBP/MAPCHECK.run @@ -0,0 +1,17 @@ +MAP CHECK + +**NEXT SET OF COURSES** +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 1,23,45,67 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 2,34,56,78 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 3,46,58,79 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 4,98,76,54 +COURSE 1 :QUADRANT,DEGREES,MINUTES,SECONDS? 0,0,0,0 +CHANGE COURSE NUMBER? 00 + +BEARING DISTANCE LAT,LON N,E + 0 , 0 + +ANY MORE COURSES? 0 + +TOTAL AREA IS 0 SQ FT. ( 0 ACRES) + diff --git a/SCBP/MATADD.80 b/SCBP/MATADD.80 new file mode 100644 index 0000000..a62eb4e --- /dev/null +++ b/SCBP/MATADD.80 @@ -0,0 +1,25 @@ +MATRIX ADDITION, SUBTRACTION, SCALAR MULTIPLICATION + +1=ADDITION +2=SUBTRACTION +3=SCALAR MULTIPLICATION +WHICH OPERATION? 1 +DIMENSION OF MATRIX (r,c)? 2,2 +MATRIX 1: +ROW 1 +VALUE COLUMN 1 ? 1 +VALUE COLUMN 2 ? 2 +ROW 2 +VALUE COLUMN 1 ? 3 +VALUE COLUMN 2 ? 4 +MATRIX 2: +ROW 1 +VALUE COLUMN 1 ? 5 +VALUE COLUMN 2 ? 6 +ROW 2 +VALUE COLUMN 1 ? 7 +VALUE COLUMN 2 ? 8 + 6 8 + 10 12 + +MORE DAtA? (1=YES,0=NO)? 0 diff --git a/SCBP/MATADD.BAS b/SCBP/MATADD.BAS new file mode 100644 index 0000000..1c41726 --- /dev/null +++ b/SCBP/MATADD.BAS @@ -0,0 +1,56 @@ +10 PRINT "MATRIX ADDITION, SUBTRACTION, SCALAR MULTIPLICATION" +20 PRINT +29 REM - ARRAYS SHOULD BE SET TO DIMENSIONS OF MATRICES +30 DIM A(3,3), B(3,3) +40 PRINT "1=ADDITION" +50 PRINT "2=SUBTRACTION" +60 PRINT "3=SCALAR MULTIPLICATION" +69 REM - SELECT OPERATION BY ENTERING THE NUMBER (1-3) OF THE OPERATION +70 PRINT "WHICH OPERATION"; +80 INPUT D +89 REM - TEST FOR ADDITION OR SUBRACTION +90 IF D<>3 THEN 120 +100 PRINT "VALUE OF SCALAR"; +110 INPUT S +120 PRINT "DIMENSION OF MATRIX (r,c)"; +130 INPUT R,C +138 REM - LOOP TO ENTER MATRIX VALUES +139 REM - FOR SUBTRACRION, MATRIX 2 SUBTRACTED FROM MATRIX 1 +140 FOR K=1 TO 2 +150 IF K=2 THEN 180 +160 PRINT "MATRIX 1:" +170 GOTO 190 +180 PRINT "MATRIX 2:" +190 FOR J=1 TO R +200 PRINT "ROW";J +210 FOR I=1 TO C +220 PRINT "VALUE COLUMN";I; +230 IF K=2 THEN 260 +240 INPUT A(J,I) +250 GOTO 270 +260 INPUT B(J,I) +270 NEXT I +280 NEXT J +289 REM - ONLY ONE MATRIX USED FOR SCALAR MULTIPLICATION +290 IF D=3 THEN 310 +300 NEXT K +308 REM - STATEMENTS 310 TO 410 PERFORM REQUESTED OPERATION AND +309 REM - PRINT RESULTANT MATRIX +310 FOR J=1 TO R +320 FOR I=1 TO C +330 IF D<>2 THEN 350 +340 B(J,I)=-B(J,I) +350 IF D=3 THEN 380 +360 PRINT A(J,I)+B(J,I);" "; +370 GOTO 390 +380 PRINT A(J,I)*S;" "; +390 NEXT I +399 REM - ADVANCE OUTPUT DEVICE TO PRINT NEXT ROW +400 PRINT +410 NEXT J +420 PRINT +429 REM - RESTART OR END PROGRAM? +430 PRINT "MORE DAtA? (1=YES,0=NO)"; +440 INPUT D +450 IF D=1 THEN 70 +460 END diff --git a/SCBP/MATADD.INP b/SCBP/MATADD.INP new file mode 100644 index 0000000..fa427eb --- /dev/null +++ b/SCBP/MATADD.INP @@ -0,0 +1,11 @@ +1 +2,2 +1 +2 +3 +4 +5 +6 +7 +8 +0 diff --git a/SCBP/MATADD.OUT b/SCBP/MATADD.OUT new file mode 100644 index 0000000..d41af13 --- /dev/null +++ b/SCBP/MATADD.OUT @@ -0,0 +1,25 @@ +MATRIX ADDITION, SUBTRACTION, SCALAR MULTIPLICATION + +1=ADDITION +2=SUBTRACTION +3=SCALAR MULTIPLICATION +WHICH OPERATION? 1 +DIMENSION OF MATRIX (r,c)? 2,2 +MATRIX 1: +ROW 1 +VALUE COLUMN 1 ? 1 +VALUE COLUMN 2 ? 2 +ROW 2 +VALUE COLUMN 1 ? 3 +VALUE COLUMN 2 ? 4 +MATRIX 2: +ROW 1 +VALUE COLUMN 1 ? 5 +VALUE COLUMN 2 ? 6 +ROW 2 +VALUE COLUMN 1 ? 7 +VALUE COLUMN 2 ? 8 + 6 8 + 10 12 + +MORE DAtA? (1=YES,0=NO)? 0 diff --git a/SCBP/MATADD.dif b/SCBP/MATADD.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/MATADD.run b/SCBP/MATADD.run new file mode 100644 index 0000000..a62eb4e --- /dev/null +++ b/SCBP/MATADD.run @@ -0,0 +1,25 @@ +MATRIX ADDITION, SUBTRACTION, SCALAR MULTIPLICATION + +1=ADDITION +2=SUBTRACTION +3=SCALAR MULTIPLICATION +WHICH OPERATION? 1 +DIMENSION OF MATRIX (r,c)? 2,2 +MATRIX 1: +ROW 1 +VALUE COLUMN 1 ? 1 +VALUE COLUMN 2 ? 2 +ROW 2 +VALUE COLUMN 1 ? 3 +VALUE COLUMN 2 ? 4 +MATRIX 2: +ROW 1 +VALUE COLUMN 1 ? 5 +VALUE COLUMN 2 ? 6 +ROW 2 +VALUE COLUMN 1 ? 7 +VALUE COLUMN 2 ? 8 + 6 8 + 10 12 + +MORE DAtA? (1=YES,0=NO)? 0 diff --git a/SCBP/MATINV.80 b/SCBP/MATINV.80 new file mode 100644 index 0000000..92dc874 --- /dev/null +++ b/SCBP/MATINV.80 @@ -0,0 +1,13 @@ +MATRIX INVERSION + +DIMENSION OF MATRIX? 2 +MATRIX ELEMENTS: +ROW 1 +VALUE COLUMN 1 ? 1 +VALUE COLUMN 2 ? 2 +ROW 2 +VALUE COLUMN 1 ? 3 +VALUE COLUMN 2 ? 4 + +-2 1 + 1.5 -.5 diff --git a/SCBP/MATINV.BAS b/SCBP/MATINV.BAS new file mode 100644 index 0000000..c71ca0c --- /dev/null +++ b/SCBP/MATINV.BAS @@ -0,0 +1,57 @@ +10 PRINT "MATRIX INVERSION" +20 PRINT +29 REM - A() AND B() SHOULD BOTH BE SET TO THE DIMENSIONS OF THE MATRIX +30 DIM A(10,10), B(10,10) +39 REM - MATRIX IS SQUARE SO ONLY ONE DIMENSION IS NEEDED +40 PRINT "DIMENSION OF MATRIX"; +50 INPUT R +60 PRINT "MATRIX ELEMENTS:" +69 REM - ENTER MATRIX ELEMENTS +70 FOR J=1 TO R +80 PRINT "ROW";J +90 FOR I=1 TO R +100 PRINT "VALUE COLUMN";I; +110 INPUT A(J,I) +120 NEXT I +130 B(J,J)=1 +140 NEXT J +149 REM - STATEMENTS 150 TO 420 INVERT MATRIX +150 FOR J=1 TO R +160 FOR I=J TO R +170 IF A(I,J)<>0 THEN 210 +180 NEXT I +190 PRINT "SINGULAR MATRIX" +200 GOTO 500 +210 FOR K=1 TO R +220 S=A(J,K) +230 A(J,K)=A(I,K) +240 A(I,K)=S +250 S=B(J,K) +260 B(J,K)=B(I,K) +270 B(I,K)=S +280 NEXT K +290 T=1/A(J,J) +300 FOR K=1 TO R +310 A(J,K)=T*A(J,K) +320 B(J,K)=T*B(J,K) +330 NEXT K +340 FOR L=1 TO R +350 IF L=J THEN 410 +360 T=-A(L,J) +370 FOR K=1 TO R +380 A(L,K)=A(L,K)+T*A(J,K) +390 B(L,K)=B(L,K)+T*B(J,K) +400 NEXT K +410 NEXT L +420 NEXT J +430 PRINT +439 REM - PRINT RESULTANT MATRIX +440 FOR I=1 TO R +450 FOR J=1 TO R +459 REM - ROUND OFF, PRINT +460 PRINT INT(B(I,J)*1000+.5)/1000;" "; +470 NEXT J +479 REM - ADVANCE OUTPUT DEVICE TO PRINT NEXT LINE +480 PRINT +490 NEXT I +500 END diff --git a/SCBP/MATINV.INP b/SCBP/MATINV.INP new file mode 100644 index 0000000..6abf408 --- /dev/null +++ b/SCBP/MATINV.INP @@ -0,0 +1,5 @@ +2 +1 +2 +3 +4 diff --git a/SCBP/MATINV.OUT b/SCBP/MATINV.OUT new file mode 100644 index 0000000..90e818b --- /dev/null +++ b/SCBP/MATINV.OUT @@ -0,0 +1,13 @@ +MATRIX INVERSION + +DIMENSION OF MATRIX? 2 +MATRIX ELEMENTS: +ROW 1 +VALUE COLUMN 1 ? 1 +VALUE COLUMN 2 ? 2 +ROW 2 +VALUE COLUMN 1 ? 3 +VALUE COLUMN 2 ? 4 + +-2 1 + 1.5 -.5 diff --git a/SCBP/MATINV.dif b/SCBP/MATINV.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/MATINV.run b/SCBP/MATINV.run new file mode 100644 index 0000000..92dc874 --- /dev/null +++ b/SCBP/MATINV.run @@ -0,0 +1,13 @@ +MATRIX INVERSION + +DIMENSION OF MATRIX? 2 +MATRIX ELEMENTS: +ROW 1 +VALUE COLUMN 1 ? 1 +VALUE COLUMN 2 ? 2 +ROW 2 +VALUE COLUMN 1 ? 3 +VALUE COLUMN 2 ? 4 + +-2 1 + 1.5 -.5 diff --git a/SCBP/MATMULT.80 b/SCBP/MATMULT.80 new file mode 100644 index 0000000..ef3e95f --- /dev/null +++ b/SCBP/MATMULT.80 @@ -0,0 +1,22 @@ +MATRIX MULTIPLICATION + +DIMENSION OF MATRIX 1 (R,C)? 2,2 +DIMENSION OF MATRIX 2 (R,C)? 2,2 +MATRIX 1: +ROW 1 +VALUE COLUMN 1 ? 11 +VALUE COLUMN 2 ? 12 +ROW 2 +VALUE COLUMN 1 ? 21 +VALUE COLUMN 2 ? 22 + +MATRIX 2: +ROW 1 +VALUE COLUMN 1 ? 34 +VALUE COLUMN 2 ? 35 +ROW 2 +VALUE COLUMN 1 ? 43 +VALUE COLUMN 2 ? 53 + + 890 1021 + 1660 1901 diff --git a/SCBP/MATMULT.BAS b/SCBP/MATMULT.BAS new file mode 100644 index 0000000..8db8a12 --- /dev/null +++ b/SCBP/MATMULT.BAS @@ -0,0 +1,44 @@ +10 PRINT "MATRIX MULTIPLICATION " +20 PRINT +29 REM - ARRAYS A AND B SHOULD BE SET TO DIMENSIONS OF MATRICES +30 DIM A(10,10), B(10,10) +40 PRINT "DIMENSION OF MATRIX 1 (R,C)"; +50 INPUT R1,C1 +60 PRINT "DIMENSION OF MATRIX 2 (R,C)"; +70 INPUT R2,C2 +79 REM - # OF COLUMNS IN MATRIX 1 MUST EQUAL # OF ROWS IN MATRIX 2 +80 IF C1=R2 THEN 110 +90 PRINT "CANNOT BE MULTIPLIED; OTHER DIMENSIONS NECESSARY" +100 GOTO 40 +109 REM - ENTER MATRIX VALUES +110 PRINT "MATRIX 1:" +120 FOR J=1 TO R1 +130 PRINT "ROW";J +140 FOR I=1 TO C1 +150 PRINT "VALUE COLUMN";I; +160 INPUT A(J,I) +170 NEXT I +180 NEXT J +190 PRINT +200 PRINT "MATRIX 2:" +210 FOR J=1 TO R2 +220 PRINT "ROW";J +230 FOR I=1 TO C2 +240 PRINT "VALUE COLUMN";I; +250 INPUT B(J,I) +260 NEXT I +270 NEXT J +280 PRINT +289 REM - PERFORM MATRIX MULTIPLICATION, PRINT RESULTANT MATRIX +290 FOR I=1 TO R1 +300 FOR J=1 TO C2 +310 S=0 +320 FOR K=1 TO C1 +330 S=S+A(I,K)*B(K,J) +340 NEXT K +350 PRINT S;" "; +360 NEXT J +369 REM - ADVANCE OUTPUT DEVICE TO PRINT NEXT ROW +370 PRINT +380 NEXT I +390 END diff --git a/SCBP/MATMULT.INP b/SCBP/MATMULT.INP new file mode 100644 index 0000000..85da9e6 --- /dev/null +++ b/SCBP/MATMULT.INP @@ -0,0 +1,10 @@ +2,2 +2,2 +11 +12 +21 +22 +34 +35 +43 +53 diff --git a/SCBP/MATMULT.OUT b/SCBP/MATMULT.OUT new file mode 100644 index 0000000..abcf97f --- /dev/null +++ b/SCBP/MATMULT.OUT @@ -0,0 +1,22 @@ +MATRIX MULTIPLICATION + +DIMENSION OF MATRIX 1 (R,C)? 2,2 +DIMENSION OF MATRIX 2 (R,C)? 2,2 +MATRIX 1: +ROW 1 +VALUE COLUMN 1 ? 11 +VALUE COLUMN 2 ? 12 +ROW 2 +VALUE COLUMN 1 ? 21 +VALUE COLUMN 2 ? 22 + +MATRIX 2: +ROW 1 +VALUE COLUMN 1 ? 34 +VALUE COLUMN 2 ? 35 +ROW 2 +VALUE COLUMN 1 ? 43 +VALUE COLUMN 2 ? 53 + + 890 1021 + 1660 1901 diff --git a/SCBP/MATMULT.dif b/SCBP/MATMULT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/MATMULT.run b/SCBP/MATMULT.run new file mode 100644 index 0000000..ef3e95f --- /dev/null +++ b/SCBP/MATMULT.run @@ -0,0 +1,22 @@ +MATRIX MULTIPLICATION + +DIMENSION OF MATRIX 1 (R,C)? 2,2 +DIMENSION OF MATRIX 2 (R,C)? 2,2 +MATRIX 1: +ROW 1 +VALUE COLUMN 1 ? 11 +VALUE COLUMN 2 ? 12 +ROW 2 +VALUE COLUMN 1 ? 21 +VALUE COLUMN 2 ? 22 + +MATRIX 2: +ROW 1 +VALUE COLUMN 1 ? 34 +VALUE COLUMN 2 ? 35 +ROW 2 +VALUE COLUMN 1 ? 43 +VALUE COLUMN 2 ? 53 + + 890 1021 + 1660 1901 diff --git a/SCBP/MININV.80 b/SCBP/MININV.80 new file mode 100644 index 0000000..040061b --- /dev/null +++ b/SCBP/MININV.80 @@ -0,0 +1,9 @@ +MININUN INVESTMENT FOR WITHDRAWALS + +AMOUNT OF WITHDRAWALS? 2345 +NOMINAL INTEREST RATE? 5 +NUMBER OF WITHDRAWALS PER YEAR? 12 +NUMBER OF YEARS? 10 +MINIMUM INVESTMENT = $ 221090. + +MORE DATA (1=YES,0=NO)? 0 diff --git a/SCBP/MININV.BAS b/SCBP/MININV.BAS new file mode 100644 index 0000000..566f919 --- /dev/null +++ b/SCBP/MININV.BAS @@ -0,0 +1,24 @@ +10 PRINT "MININUN INVESTMENT FOR WITHDRAWALS" +20 PRINT +29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "AMOUNT OF WITHDRAWALS"; +40 INPUT R +50 PRINT "NOMINAL INTEREST RATE"; +60 INPUT I +70 PRINT "NUMBER OF WITHDRAWALS PER YEAR"; +80 INPUT N +90 PRINT "NUMBER OF YEARS"; +100 INPUT Y +109 REM - CONVERT FROM PERCENT TO DECIMAL +110 I=I/100 +119 REM - CALCULATE MINIMUM INVESTMENT BY FORMULA +120 P=R*N/I*(1-1/((1+I/N)[(N*Y))) +129 REM - ROUND OFF TO NEAREST CENT, PRINT +130 PRINT "MINIMUM INVESTMENT = $"; INT(100*P+.5)/100 +139 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +140 PRINT +149 REM - RESTART OR END PROGRAM? USER INPUT REQUIRED +150 PRINT "MORE DATA (1=YES,0=NO)"; +160 INPUT X +170 IF X=1 THEN 20 +180 END diff --git a/SCBP/MININV.INP b/SCBP/MININV.INP new file mode 100644 index 0000000..0a87bdc --- /dev/null +++ b/SCBP/MININV.INP @@ -0,0 +1,5 @@ +2345 +5 +12 +10 +0 diff --git a/SCBP/MININV.OUT b/SCBP/MININV.OUT new file mode 100644 index 0000000..85a97da --- /dev/null +++ b/SCBP/MININV.OUT @@ -0,0 +1,9 @@ +MININUN INVESTMENT FOR WITHDRAWALS + +AMOUNT OF WITHDRAWALS? 2345 +NOMINAL INTEREST RATE? 5 +NUMBER OF WITHDRAWALS PER YEAR? 12 +NUMBER OF YEARS? 10 +MINIMUM INVESTMENT = $ 221090. + +MORE DATA (1=YES,0=NO)? 0 diff --git a/SCBP/MININV.dif b/SCBP/MININV.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/MININV.run b/SCBP/MININV.run new file mode 100644 index 0000000..040061b --- /dev/null +++ b/SCBP/MININV.run @@ -0,0 +1,9 @@ +MININUN INVESTMENT FOR WITHDRAWALS + +AMOUNT OF WITHDRAWALS? 2345 +NOMINAL INTEREST RATE? 5 +NUMBER OF WITHDRAWALS PER YEAR? 12 +NUMBER OF YEARS? 10 +MINIMUM INVESTMENT = $ 221090. + +MORE DATA (1=YES,0=NO)? 0 diff --git a/SCBP/MLINREGR.80 b/SCBP/MLINREGR.80 new file mode 100644 index 0000000..b165d3c --- /dev/null +++ b/SCBP/MLINREGR.80 @@ -0,0 +1,24 @@ +MULTIPLE LINEAR REGRESSION + +NUMBER OF KNOWN POINTS? 3 +NUMBER OF INDEPENDENT VARIABLES? 1 +POINT 1 + VARIABLE 1 ? 11 + DEPENDENT VARIABLE? 22 +POINT 2 + VARIABLE 1 ? 33 + DEPENDENT VARIABLE? 44 +POINT 3 + VARIABLE 1 ? 55 + DEPENDENT VARIABLE? 66 + +EQUATION COEFFICIENTS: + CONSTANT: 11 +VARIABLE( 1 ): 1 + +COEFFICIENT OF DETERMINATION (r[2) = 1 +COEFFICIENT OF MULTIPLE CORRELATION = 1 +STANDARD ERROR OF ESTIMATE 0 + +INTERPOLATION: (ENTER 0 TO END PROGRAM) +VARIABLE 1 ? 0 diff --git a/SCBP/MLINREGR.BAS b/SCBP/MLINREGR.BAS new file mode 100644 index 0000000..c7c1064 --- /dev/null +++ b/SCBP/MLINREGR.BAS @@ -0,0 +1,90 @@ +10 PRINT "MULTIPLE LINEAR REGRESSION" +20 PRINT +29 REM - SET ARRAY LIMITS TO X(n+1),S(n+1),T(n+1),A(n+1,N+2) +30 DIM X(9),S(9),T(9),A(9,10) +40 PRINT "NUMBER OF KNOWN POINTS"; +50 INPUT N +60 PRINT "NUMBER OF INDEPENDENT VARIABLES"; +70 INPUT V +80 X(1)=1 +90 FOR I=1 TO N +100 PRINT "POINT";I +110 FOR J=1 TO V +119 REM - ENTER INDEPENDENT VARIABLES FOR EACH POINT +120 PRINT " VARIABLE";J; +130 INPUT X(J+1) +140 NEXT J +149 REM - ENTER DEPENDENT VARIABLE FOR EACH POINT +150 PRINT " DEPENDENT VARIABLE"; +160 INPUT X(V+2) +169 REM - POPULATE A MATRIX TO BE USED IN CURVE FITTING +170 FOR K=1 TO V+1 +180 FOR L=1 TO V+2 +190 A(K,L)=A(K,L)+X(K)*X(L) +200 S(K)=A(K,V+2) +210 NEXT L +220 NEXT K +230 S(V+2)=S(V+2)+X(V+2)[2 +240 NEXT I +248 REM - STATEMENTS 250 TO 500 FIT CURVE BY SOLVING THE SYSTEMOF +249 REM - LINEAR EQUATIONS IN MATRIX A() +250 FOR I=2 TO V+1 +260 T(I)=A(1,I) +270 NEXT I +280 FOR I=1 TO V+1 +290 FOR J=I TO V+1 +300 IF A(J,I)<>0 THEN 340 +310 NEXT J +320 PRINT "NO UNIQUE SOLUTION" +330 GOTO 810 +340 FOR K=1 TO V+2 +350 B=A(I,K) +360 A(I,K)=A(J,K) +370 A(J,K)=B +380 NEXT K +390 Z=1/A(I,I) +400 FOR K=1 TO V+2 +410 A(I,K)=Z*A(I,K) +420 NEXT K +430 FOR J=1 TO V+1 +440 IF J=I THEN 490 +450 Z=-A(J,I) +460 FOR K=1 TO V+2 +470 A(J,K)=A(J,K)+Z*A(I,K) +480 NEXT K +490 NEXT J +500 NEXT I +510 PRINT +520 PRINT "EQUATION COEFFICIENTS:" +525 PRINT " CONSTANT:";A(1,V+2) +530 FOR I=2 TO V+1 +540 PRINT "VARIABLE(";I-1;"):";A(I,V+2) +550 NEXT I +560 P=0 +570 FOR I=2 TO V+1 +580 P=P+A(I,V+2)*(S(I)-T(I)*S(1)/N) +590 NEXT I +600 R=S(V+2)-S(1)[2/N +610 Z=R-P +620 L=N-V-1 +630 I=P/V +640 PRINT +650 I=P/R +660 PRINT "COEFFICIENT OF DETERMINATION (r[2) =";I +670 PRINT "COEFFICIENT OF MULTIPLE CORRELATION =";SQR(I) +680 PRINT "STANDARD ERROR OF ESTIMATE "; SQR(ABS(Z/L)) +690 PRINT +699 REM - ESTIMATE DEPENDENT VARIABLE FROM ENTERED INDEPENDENT VARIABLES +700 PRINT "INTERPOLATION: (ENTER 0 TO END PROGRAM)" +710 P=A(1,V+2) +720 FOR J=1 TO V +730 PRINT "VARIABLE";J; +740 INPUT X +749 REM - TEST FOR END OF PROGRAM +750 IF X=0 THEN 810 +760 P=P+A(J+1,V+2)*X +770 NEXT J +780 PRINT "DEPENDENT VARIABLE =";P +790 PRINT +800 GOTO 710 +810 END diff --git a/SCBP/MLINREGR.INP b/SCBP/MLINREGR.INP new file mode 100644 index 0000000..8e57282 --- /dev/null +++ b/SCBP/MLINREGR.INP @@ -0,0 +1,9 @@ +3 +1 +11 +22 +33 +44 +55 +66 +0 diff --git a/SCBP/MLINREGR.OUT b/SCBP/MLINREGR.OUT new file mode 100644 index 0000000..856170e --- /dev/null +++ b/SCBP/MLINREGR.OUT @@ -0,0 +1,24 @@ +MULTIPLE LINEAR REGRESSION + +NUMBER OF KNOWN POINTS? 3 +NUMBER OF INDEPENDENT VARIABLES? 1 +POINT 1 + VARIABLE 1 ? 11 + DEPENDENT VARIABLE? 22 +POINT 2 + VARIABLE 1 ? 33 + DEPENDENT VARIABLE? 44 +POINT 3 + VARIABLE 1 ? 55 + DEPENDENT VARIABLE? 66 + +EQUATION COEFFICIENTS: + CONSTANT: 11 +VARIABLE( 1 ): 1 + +COEFFICIENT OF DETERMINATION (r[2) = 1 +COEFFICIENT OF MULTIPLE CORRELATION = 1 +STANDARD ERROR OF ESTIMATE 0 + +INTERPOLATION: (ENTER 0 TO END PROGRAM) +VARIABLE 1 ? 0 diff --git a/SCBP/MLINREGR.dif b/SCBP/MLINREGR.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/MLINREGR.run b/SCBP/MLINREGR.run new file mode 100644 index 0000000..b165d3c --- /dev/null +++ b/SCBP/MLINREGR.run @@ -0,0 +1,24 @@ +MULTIPLE LINEAR REGRESSION + +NUMBER OF KNOWN POINTS? 3 +NUMBER OF INDEPENDENT VARIABLES? 1 +POINT 1 + VARIABLE 1 ? 11 + DEPENDENT VARIABLE? 22 +POINT 2 + VARIABLE 1 ? 33 + DEPENDENT VARIABLE? 44 +POINT 3 + VARIABLE 1 ? 55 + DEPENDENT VARIABLE? 66 + +EQUATION COEFFICIENTS: + CONSTANT: 11 +VARIABLE( 1 ): 1 + +COEFFICIENT OF DETERMINATION (r[2) = 1 +COEFFICIENT OF MULTIPLE CORRELATION = 1 +STANDARD ERROR OF ESTIMATE 0 + +INTERPOLATION: (ENTER 0 TO END PROGRAM) +VARIABLE 1 ? 0 diff --git a/SCBP/NOMINT.80 b/SCBP/NOMINT.80 new file mode 100644 index 0000000..e65ae62 --- /dev/null +++ b/SCBP/NOMINT.80 @@ -0,0 +1,9 @@ +NOMINAL INTEREST RATE ON INVESTMENTS + +PRINCIPAL? 12345 +TOTAL VALUE? 67890 +NUMBER OF YEARS? 10 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NOMINAL INTEREST RATE= 17.168 % + +MORE DATA: (1=YES,0=NO)? 0 diff --git a/SCBP/NOMINT.BAS b/SCBP/NOMINT.BAS new file mode 100644 index 0000000..467480a --- /dev/null +++ b/SCBP/NOMINT.BAS @@ -0,0 +1,21 @@ +10 PRINT "NOMINAL INTEREST RATE ON INVESTMENTS" +20 PRINT +29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "PRINCIPAL"; +40 INPUT P +50 PRINT "TOTAL VALUE"; +60 INPUT T +70 PRINT "NUMBER OF YEARS"; +80 INPUT Y +90 PRINT "NUMBER OF COMPOUNDING PERIODS PER YEAR"; +100 INPUT N +109 REM - CALCULATE NOMINAL INTEREST RATE BY FORMULA, PRINT +110 I2=N*((T/P)[(1/(N*Y))-1)*100 +120 PRINT "NOMINAL INTEREST RATE=";I2;"%" +129 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +130 PRINT +139 REM - RESTART OR END PROGRAM? USER INPUT REQUIRED +140 PRINT "MORE DATA: (1=YES,0=NO)"; +150 INPUT X +160 IF X=1 THEN 20 +170 END diff --git a/SCBP/NOMINT.INP b/SCBP/NOMINT.INP new file mode 100644 index 0000000..340c801 --- /dev/null +++ b/SCBP/NOMINT.INP @@ -0,0 +1,5 @@ +12345 +67890 +10 +12 +0 diff --git a/SCBP/NOMINT.OUT b/SCBP/NOMINT.OUT new file mode 100644 index 0000000..7b89cfc --- /dev/null +++ b/SCBP/NOMINT.OUT @@ -0,0 +1,9 @@ +NOMINAL INTEREST RATE ON INVESTMENTS + +PRINCIPAL? 12345 +TOTAL VALUE? 67890 +NUMBER OF YEARS? 10 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NOMINAL INTEREST RATE= 17.168 % + +MORE DATA: (1=YES,0=NO)? 0 diff --git a/SCBP/NOMINT.dif b/SCBP/NOMINT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/NOMINT.run b/SCBP/NOMINT.run new file mode 100644 index 0000000..e65ae62 --- /dev/null +++ b/SCBP/NOMINT.run @@ -0,0 +1,9 @@ +NOMINAL INTEREST RATE ON INVESTMENTS + +PRINCIPAL? 12345 +TOTAL VALUE? 67890 +NUMBER OF YEARS? 10 +NUMBER OF COMPOUNDING PERIODS PER YEAR? 12 +NOMINAL INTEREST RATE= 17.168 % + +MORE DATA: (1=YES,0=NO)? 0 diff --git a/SCBP/NORDREGR.80 b/SCBP/NORDREGR.80 new file mode 100644 index 0000000..369c00b --- /dev/null +++ b/SCBP/NORDREGR.80 @@ -0,0 +1,24 @@ +NTH-ORDER REGRESSION + +DEGREE OF EQUATION? 1 +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 11,22 +X,Y OF POINT 2 ? 33,44 +X,Y OF POINT 3 ? 55,66 + + CONSTANT = 11 + 1 DEGREE COEFFICIENT = 1 + + +COEFFICIENT OF DETERMINATION (R[2) = 1 +COEFFICIENT OF CORRELATION = 1 +STANDARD ERROR OF ESTIMATE = 0 + +INTERPOLATION:(ENTER 0 TO END PROGRAM) +X =? 22 +y = 33 + +X =? 44 +y = 55 + +X =? 0 diff --git a/SCBP/NORDREGR.BAS b/SCBP/NORDREGR.BAS new file mode 100644 index 0000000..5303768 --- /dev/null +++ b/SCBP/NORDREGR.BAS @@ -0,0 +1,89 @@ +10 PRINT "NTH-ORDER REGRESSION" +20 PRINT +28 REM - SET LIMITS ON DEGREE OF EQUATION TO +29 REM - A(2D+1),R(D+1,D+2),T(D+2) (WHERE D=MAX. DEGREE OF EQUATION) +30 DIM A(13),R(7,8),T(8) +40 PRINT "DEGREE OF EQUATION"; +50 INPUT D +60 PRINT "NUMBER OF KNOWN POINTS"; +70 INPUT N +80 A(1)=N +89 REM - ENTER COORDINATES OF DATA POINTS +90 FOR I=1 TO N +100 PRINT "X,Y OF POINT";I; +110 INPUT X,Y +118 REM - LINES 120-200 POPULATE MATRICES WITH +119 REM - A SYSTEM OF EQUATIONS +120 FOR J=2 TO 2*D+1 +130 A(J)=A(J)+X[(J-1) +140 NEXT J +150 FOR K=1 TO D+1 +160 R(K,D+2)=T(K)+Y*X[(K-1) +170 T(K)=T(K)+Y*X[(K-1) +180 NEXT K +190 T(D+2)=T(D+2)+Y[2 +200 NEXT I +209 REM - LINES 210-490 SOLVE THE SYSTEM OF EQUATIONS IN THE MATRICES +210 FOR J=1 TO D+1 +220 FOR K=1 TO D+1 +230 R(J,K)=A(J+K-1) +240 NEXT K +250 NEXT J +260 FOR J=1 TO D+1 +270 FOR K=J TO D+1 +280 IF R(K,J)<>0 THEN 320 +290 NEXT K +300 PRINT "NO UNIQUE SOLUTION" +310 GOTO 790 +320 FOR I=1 TO D+2 +330 S=R(J,I) +340 R(J,I)=R(K,I) +350 R(K,I)=S +360 NEXT I +370 Z=1/R(J,J) +380 FOR I=1 TO D+2 +390 R(J,I)=Z*R(J,I) +400 NEXT I +410 FOR K=1 TO D+1 +420 IF K=J THEN 470 +430 Z=-R(K,J) +440 FOR I=1 TO D+2 +450 R(K,I)=R(K,I)+Z*R(J,I) +460 NEXT I +470 NEXT K +480 NEXT J +490 PRINT +495 PRINT " CONSTANT =";R(1,D+2) +499 REM - PRINT EQUATION COEFFICIENTS +500 FOR J=1 TO D +510 PRINT J;"DEGREE COEFFICIENT =";R(J+1,D+2) +520 NEXT J +530 PRINT +539 REM - COMPUTE REGRESSION ANALYSIS +540 P=0 +550 FOR J=2 TO D+1 +560 P=P+R(J,D+2)*(T(J)-A(J)*T(1)/N) +570 NEXT J +580 Q=T(D+2)-T(1)[2/N +590 Z=Q-P +600 I=N-D-1 +610 J=P/D +620 PRINT +630 J=P/Q +640 PRINT "COEFFICIENT OF DETERMINATION (R[2) =";J +650 PRINT "COEFFICIENT OF CORRELATION =";SQR(J) +660 PRINT "STANDARD ERROR OF ESTIMATE =";SQR(Z/I) +670 PRINT +679 REM - COMPUTE Y-COORDINATE FROM ENTERED X -COORDINATE +680 PRINT "INTERPOLATION:(ENTER 0 TO END PROGRAM)" +690 P=R(1,D+2) +700 PRINT "X ="; +710 INPUT X +720 IF X=0 THEN 790 +730 FOR J=1 TO D +740 P=P+R(J+1,D+2)*X[J +750 NEXT J +760 PRINT "y =";P +770 PRINT +780 GOTO 690 +790 END diff --git a/SCBP/NORDREGR.INP b/SCBP/NORDREGR.INP new file mode 100644 index 0000000..4ec479c --- /dev/null +++ b/SCBP/NORDREGR.INP @@ -0,0 +1,8 @@ +1 +3 +11,22 +33,44 +55,66 +22 +44 +0 diff --git a/SCBP/NORDREGR.OUT b/SCBP/NORDREGR.OUT new file mode 100644 index 0000000..4099c52 --- /dev/null +++ b/SCBP/NORDREGR.OUT @@ -0,0 +1,24 @@ +NTH-ORDER REGRESSION + +DEGREE OF EQUATION? 1 +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 11,22 +X,Y OF POINT 2 ? 33,44 +X,Y OF POINT 3 ? 55,66 + + CONSTANT = 11 + 1 DEGREE COEFFICIENT = 1 + + +COEFFICIENT OF DETERMINATION (R[2) = 1 +COEFFICIENT OF CORRELATION = 1 +STANDARD ERROR OF ESTIMATE = 0 + +INTERPOLATION:(ENTER 0 TO END PROGRAM) +X =? 22 +y = 33 + +X =? 44 +y = 55 + +X =? 0 diff --git a/SCBP/NORDREGR.dif b/SCBP/NORDREGR.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/NORDREGR.run b/SCBP/NORDREGR.run new file mode 100644 index 0000000..369c00b --- /dev/null +++ b/SCBP/NORDREGR.run @@ -0,0 +1,24 @@ +NTH-ORDER REGRESSION + +DEGREE OF EQUATION? 1 +NUMBER OF KNOWN POINTS? 3 +X,Y OF POINT 1 ? 11,22 +X,Y OF POINT 2 ? 33,44 +X,Y OF POINT 3 ? 55,66 + + CONSTANT = 11 + 1 DEGREE COEFFICIENT = 1 + + +COEFFICIENT OF DETERMINATION (R[2) = 1 +COEFFICIENT OF CORRELATION = 1 +STANDARD ERROR OF ESTIMATE = 0 + +INTERPOLATION:(ENTER 0 TO END PROGRAM) +X =? 22 +y = 33 + +X =? 44 +y = 55 + +X =? 0 diff --git a/SCBP/NORMDIST.80 b/SCBP/NORMDIST.80 new file mode 100644 index 0000000..e871acc --- /dev/null +++ b/SCBP/NORMDIST.80 @@ -0,0 +1,31 @@ +NORMAL DISTRIBUTION + +(0=STANDARD, 1=NON-STANDARD) +WHICH TYPE OF VARIABLE? 0 + +(TO END PROGRAM ENTER X=99999) +X =? 123 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 165 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 147 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 101 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 107 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 131 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 99999 diff --git a/SCBP/NORMDIST.BAS b/SCBP/NORMDIST.BAS new file mode 100644 index 0000000..d15342c --- /dev/null +++ b/SCBP/NORMDIST.BAS @@ -0,0 +1,35 @@ +10 PRINT "NORMAL DISTRIBUTION" +20 PRINT +30 PRINT "(0=STANDARD, 1=NON-STANDARD)" +40 PRINT "WHICH TYPE OF VARIABLE"; +50 INPUT S +60 IF S=0 THEN 120 +69 REM - LINES 70-110 RQUEST 'NON-STANDARD' VARIABLE DATA +70 PRINT "MEAN"; +80 INPUT M +90 PRINT "STANDARD DEVIATION"; +100 INPUT S +110 GOTO 130 +120 S=1 +130 PRINT +140 PRINT "(TO END PROGRAM ENTER X=99999)" +150 PRINT "X ="; +160 INPUT X +169 REM - END PROGRAM? +170 IF X=99999 THEN 290 +179 REM - ADJUST FOR NON-STANDARD VARIABLES +180 X=(X-M)/S +189 REM - COMPUTE FREQUENCY (y COORDINATE) +190 R=EXP(-X[2/2)/2.5066282746 +200 PRINT "FREQUENCY =";R +210 Z=X +219 REM - APPROXIMATE PROBABILITY (AREA UNDER CURVE) +220 T=1/(1+.33267*ABS(X)) +230 T=.5-R*(.4361836*T-.1201676*T[2+.937298*T[3) +239 REM - ADJUST FOR NEGATIVE VARIABLES +240 IF Z>=0 THEN 260 +250 T=1-T +260 PRINT "PROBABILITY =";T +270 PRINT +280 GOTO 150 +290 END diff --git a/SCBP/NORMDIST.INP b/SCBP/NORMDIST.INP new file mode 100644 index 0000000..38632c8 --- /dev/null +++ b/SCBP/NORMDIST.INP @@ -0,0 +1,8 @@ +0 +123 +165 +147 +101 +107 +131 +99999 diff --git a/SCBP/NORMDIST.OUT b/SCBP/NORMDIST.OUT new file mode 100644 index 0000000..b199372 --- /dev/null +++ b/SCBP/NORMDIST.OUT @@ -0,0 +1,31 @@ +NORMAL DISTRIBUTION + +(0=STANDARD, 1=NON-STANDARD) +WHICH TYPE OF VARIABLE? 0 + +(TO END PROGRAM ENTER X=99999) +X =? 123 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 165 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 147 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 101 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 107 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 131 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 99999 diff --git a/SCBP/NORMDIST.dif b/SCBP/NORMDIST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/NORMDIST.run b/SCBP/NORMDIST.run new file mode 100644 index 0000000..e871acc --- /dev/null +++ b/SCBP/NORMDIST.run @@ -0,0 +1,31 @@ +NORMAL DISTRIBUTION + +(0=STANDARD, 1=NON-STANDARD) +WHICH TYPE OF VARIABLE? 0 + +(TO END PROGRAM ENTER X=99999) +X =? 123 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 165 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 147 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 101 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 107 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 131 +FREQUENCY = 0 +PROBABILITY = .5 + +X =? 99999 diff --git a/SCBP/OPS2VEC.80 b/SCBP/OPS2VEC.80 new file mode 100644 index 0000000..edd3e13 --- /dev/null +++ b/SCBP/OPS2VEC.80 @@ -0,0 +1,11 @@ +OPERATIONS ON TWO VECTORS + +VECTOR A: X,Y,Z COORDINATES? 5,6,7 +VECTOR B: X,Y,Z COORDINATES? 9,3,2 + +A+B= 14 , 9 , 9 +A-B=-4 , 3 , 5 +A B= 77 +A*B=-9 , 53 ,-39 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/OPS2VEC.BAS b/SCBP/OPS2VEC.BAS new file mode 100644 index 0000000..abc6d77 --- /dev/null +++ b/SCBP/OPS2VEC.BAS @@ -0,0 +1,21 @@ +10 PRINT "OPERATIONS ON TWO VECTORS" +20 PRINT +30 PRINT "VECTOR A: X,Y,Z COORDINATES"; +40 INPUT X1,Y1,Z1 +50 PRINT "VECTOR B: X,Y,Z COORDINATES"; +60 INPUT X2,Y2,Z2 +70 PRINT +79 REM - PERFORM VECTOR ADDITION, PRINT RESULTING VECTOR COORDINATES +80 PRINT "A+B=";X1+X2;",";Y1+Y2;",";Z1+Z2 +89 REM - PERFORM VECTOR SUBTRACTION, PRINT RESULTING VECTOR COORDINATES +90 PRINT "A-B=";X1-X2;",";Y1-Y2;",";Z1-Z2 +99 REM - CALCULATE DOT PRODUCT, PRINT +100 PRINT "A B=";X1*X2+Y1*Y2+Z1*Z2 +109 REM - CALCULATE CROSS PRODUCT, PRINT RESULTING VECTOR COORDINATES +110 PRINT "A*B=";Y1*Z2-Z1*Y2;",";Z1*X2-X1*Z2;",";X1*Y2-Y1*X2 +120 PRINT +129 REM - RESTART OR END PROGRAM? +130 PRINT "MORE DATA? (1=YES, 0=NO)"; +140 INPUT X +150 IF X=1 THEN 20 +160 END diff --git a/SCBP/OPS2VEC.INP b/SCBP/OPS2VEC.INP new file mode 100644 index 0000000..0454326 --- /dev/null +++ b/SCBP/OPS2VEC.INP @@ -0,0 +1,3 @@ +5,6,7 +9,3,2 +0 diff --git a/SCBP/OPS2VEC.OUT b/SCBP/OPS2VEC.OUT new file mode 100644 index 0000000..b60b9be --- /dev/null +++ b/SCBP/OPS2VEC.OUT @@ -0,0 +1,11 @@ +OPERATIONS ON TWO VECTORS + +VECTOR A: X,Y,Z COORDINATES? 5,6,7 +VECTOR B: X,Y,Z COORDINATES? 9,3,2 + +A+B= 14 , 9 , 9 +A-B=-4 , 3 , 5 +A B= 77 +A*B=-9 , 53 ,-39 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/OPS2VEC.dif b/SCBP/OPS2VEC.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/OPS2VEC.run b/SCBP/OPS2VEC.run new file mode 100644 index 0000000..edd3e13 --- /dev/null +++ b/SCBP/OPS2VEC.run @@ -0,0 +1,11 @@ +OPERATIONS ON TWO VECTORS + +VECTOR A: X,Y,Z COORDINATES? 5,6,7 +VECTOR B: X,Y,Z COORDINATES? 9,3,2 + +A+B= 14 , 9 , 9 +A-B=-4 , 3 , 5 +A B= 77 +A*B=-9 , 53 ,-39 + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/PAD80.BAS b/SCBP/PAD80.BAS new file mode 100644 index 0000000..f08eb98 --- /dev/null +++ b/SCBP/PAD80.BAS @@ -0,0 +1,43 @@ +010 OPTION VERSION BYWATER +020 OPTION BUGS OFF +100 REM PAD80.BAS +101 REM Pad the test output to 80 characters. +102 REM bwbasic P001.BAS > P001.OUT +103 REM echo "500 DATA P001.OUT, P001.80" > PAD80.INP +104 REM bwbasic PAD80.BAS +105 REM diff P001.run P001.80 +109 REM ---------------------------------------------------------- +120 REM GET FILE NAME INTO A$ +125 DELETE 500 +126 MERGE "PAD80.INP" +127 RESTORE 500 +130 READ A$ +135 REM PRINT "SOURCE:"; A$ +140 READ B$ +145 REM PRINT "TARGET:"; B$ +300 REM ---------------------------------------------------------- +301 REM PROCESS FILENAME IN A$ +302 REM ---------------------------------------------------------- +310 OPEN A$ FOR INPUT AS #2 +315 OPEN B$ FOR OUTPUT AS #3 +320 REM PRINT "PROCESS TEXT LINE" +330 IF EOF( 2 ) THEN 390 +335 REM PRINT "NOT EOF" +340 LINE INPUT #2, C$ +345 REM PRINT "C$=";C$ +350 C$ = LEFT$( C$ + SPACE$( 80 ), 80 ) +355 REM PRINT "yyy" +360 REM WRITE OUTPUT LINE +370 PRINT #3, C$ +375 REM PRINT "zzz" +380 GOTO 320 +390 REM CLOSE FILES +400 CLOSE #3 +410 CLOSE #2 +499 REM ---------------------------------------------------------- +500 REM REPLACED BY CONTENTS OF "PAD80.INP" +501 REM ---------------------------------------------------------- +900 REM ---------------------------------------------------------- +910 REM THE END +920 REM ---------------------------------------------------------- +999 END diff --git a/SCBP/PAD80.INP b/SCBP/PAD80.INP new file mode 100644 index 0000000..f866a24 --- /dev/null +++ b/SCBP/PAD80.INP @@ -0,0 +1 @@ +500 DATA TRIGPOLY.OUT, TRIGPOLY.80 diff --git a/SCBP/PARTSTRI.80 b/SCBP/PARTSTRI.80 new file mode 100644 index 0000000..b3f9165 --- /dev/null +++ b/SCBP/PARTSTRI.80 @@ -0,0 +1,24 @@ +PARTS OF A TRIANGLE + +PROBLEM TYPES: 1=ASA,2=SAS,3=AAS,4=SSA,5=SSS,6=END PROGAM +ENTER PROBLEM TYPE? 1 +ENTER ANGLE,SIDE,ANGLE? 60,567,30 + +SIDE 1 =-193.32 +OPPOSITE ANGLE= 60.03 RADIANS +SIDE 2 =-626.64 +OPPOSITE ANGLE= 30.015 RADIANS + +NO SOLUTION + +ENTER PROBLEM TYPE? 1 +ENTER ANGLE,SIDE,ANGLE? .3,567,.4 + +SIDE 1 = 260.098 +OPPOSITE ANGLE= .3 RADIANS +SIDE 2 = 342.742 +OPPOSITE ANGLE= .4 RADIANS +SIDE 3 = 567 +OPPOSITE ANGLE= 2.442 RADIANS + +ENTER PROBLEM TYPE? 6 diff --git a/SCBP/PARTSTRI.BAS b/SCBP/PARTSTRI.BAS new file mode 100644 index 0000000..214887e --- /dev/null +++ b/SCBP/PARTSTRI.BAS @@ -0,0 +1,62 @@ +10 PRINT "PARTS OF A TRIANGLE" +20 PRINT +30 DIM A(3),S(3) +31 REM - SET VALUE OF PI +40 P=3.1415927 +48 REM - ENTER NUMBER OF PROBLEM TYPE ACCORDING TO KNOWN PARTS +49 REM - OF THE TRIANGLE WHERE A=ANGLE, S=LENGTH OF SIDE +50 PRINT "PROBLEM TYPES: 1=ASA,2=SAS,3=AAS,4=SSA,5=SSS,6=END PROGAM" +60 PRINT "ENTER PROBLEM TYPE"; +70 INPUT X +79 REM - DIRECT PROGRAM TO PROPER CALCULATIONS +80 IF X=6 THEN 560 +90 IF X=5 THEN 390 +100 IF X=4 THEN 300 +110 IF X=3 THEN 260 +120 IF X=2 THEN 190 +130 PRINT "ENTER ANGLE,SIDE,ANGLE"; +140 INPUT A(1),S(3),A(2) +150 A(3)=P-A(1)-A(2) +160 S(1)=S(3)*SIN(A(1))/SIN(A(3)) +170 S(2)=S(3)*SIN(A(2))/SIN(A(3)) +180 GOTO 440 +190 PRINT "ENTER SIDE,ANGLE,SIDE"; +200 INPUT S(3),A(1),S(2) +210 S(1)=SQR(S(3)[2+S(2)[2-2*S(3)*S(2)*COS(A(1))) +220 A(2)=SIN(A(1))/S(1)*S(2) +230 A(2)=ARCSIN(A(2)) +240 A(3)=P-A(1)-A(2) +250 GOTO 440 +260 PRINT "ENTER ANGLE,ANGLE,SIDE"; +270 INPUT A(3),A(2),S(3) +280 A(1)=P-A(2)-A(3) +290 GOTO 160 +300 PRINT "ENTER SIDE,SIDE,ANGLE"; +310 INPUT S(1),S(2),A(1) +320 T=S(2)*SIN(A(1)) +330 IF S(1)=P THEN 190 +170 PRINT "MORE THAN 1.7E38 PERMUTATIONS" +180 GOTO 280 +190 P=P*I +200 NEXT I +209 REM - COMPUTE INTERMEDIATE FACTORIAL FOR COMBINATIONS +210 FOR J=2 TO D +220 C=C*J +230 NEXT J +240 PRINT P;"PERMUTATIONS" +250 PRINT P/C;"COMBINATONS" +260 PRINT +269 REM - RESTART PROGRAM +270 GOTO 40 +280 END diff --git a/SCBP/PERMCOMB.INP b/SCBP/PERMCOMB.INP new file mode 100644 index 0000000..bd3f9db --- /dev/null +++ b/SCBP/PERMCOMB.INP @@ -0,0 +1,3 @@ +3 +2 +0 diff --git a/SCBP/PERMCOMB.OUT b/SCBP/PERMCOMB.OUT new file mode 100644 index 0000000..afec99a --- /dev/null +++ b/SCBP/PERMCOMB.OUT @@ -0,0 +1,9 @@ +PERMUTATIONS AND COMBINATIONS + +(ENTER O TO END PROGRAM) +TOTAL NUMBER OF OBJECTS? 3 +SIZE OF SUBGROUP? 2 + 6 PERMUTATIONS + 3 COMBINATONS + +TOTAL NUMBER OF OBJECTS? 0 diff --git a/SCBP/PERMCOMB.dif b/SCBP/PERMCOMB.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/PERMCOMB.run b/SCBP/PERMCOMB.run new file mode 100644 index 0000000..77153e0 --- /dev/null +++ b/SCBP/PERMCOMB.run @@ -0,0 +1,9 @@ +PERMUTATIONS AND COMBINATIONS + +(ENTER O TO END PROGRAM) +TOTAL NUMBER OF OBJECTS? 3 +SIZE OF SUBGROUP? 2 + 6 PERMUTATIONS + 3 COMBINATONS + +TOTAL NUMBER OF OBJECTS? 0 diff --git a/SCBP/PLOTFUNC.80 b/SCBP/PLOTFUNC.80 new file mode 100644 index 0000000..ea48808 --- /dev/null +++ b/SCBP/PLOTFUNC.80 @@ -0,0 +1,112 @@ +PLOT OF FUNCTIONS + +NUMBER OF FUNCTIONS TO BE PLOTTED? 2 +X-AXIS:LEFT ENDPOINT,RIGHT ENDPOINT,INCREMENT? 0,10,0.1 +Y-AXIS:LOWER ENDPOINT,UPPER ENDPOINT,INCREMENT? -1.1,1.1,0.05 + + +X-AXIS CROSSES Y-AXIS AT Y=-1.1 +Y-AXIS CROSSES X-AXIS AT X= 0 + +++++++++++++++++++++++2+++++++++++++++++++1++Y ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ * ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 12 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 12 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 +x diff --git a/SCBP/PLOTFUNC.BAS b/SCBP/PLOTFUNC.BAS new file mode 100644 index 0000000..40cc119 --- /dev/null +++ b/SCBP/PLOTFUNC.BAS @@ -0,0 +1,69 @@ +10 PRINT "PLOT OF FUNCTIONS" +20 PRINT +29 REM - NUMBER OF FUNCTIONS WHICH CAN BE PLOTTED IS LIMITED TO 9 +30 DIM Y(9),A$(11) +40 FOR I=1 TO 11 +49 REM - GET VALUES FOR A$-ARRAY FROM DATA TABLE AT STATEMENT 470 +50 READ A$(I) +60 NEXT I +69 REM - STATEMENTS 70 TO 120 REQUEST USER INPUT +70 PRINT "NUMBER OF FUNCTIONS TO BE PLOTTED"; +80 INPUT N +90 PRINT "X-AXIS:LEFT ENDPOINT,RIGHT ENDPOINT,INCREMENT"; +100 INPUT X1,X2,X3 +110 PRINT "Y-AXIS:LOWER ENDPOINT,UPPER ENDPOINT,INCREMENT"; +120 INPUT Y1,Y2,Y3 +129 REM - CALCULATE NUMBER OF SPACES ON Y-AXIS +130 Y2=(Y2-Y1)/Y3 +138 REM - TEST FOR A Y-AXIS TOO LONG FOR OUTPUT DEVICE. IF YES,THEN +139 REM - LESSEN RANGE OR INCREASE INCREMENT +140 IF Y2<=70 THEN 170 +150 PRINT "Y-RANGE TOO LARGE" +160 GOTO 110 +170 PRINT +180 PRINT +189 REM - MAKE NOTE OF WHERE AXES CROSS +190 PRINT "X-AXIS CROSSES Y-AXIS AT Y=";Y1 +200 PRINT "Y-AXIS CROSSES X-AXIS AT X=";X1 +210 PRINT +219 REM - SET UP LOOP TO READ VALUE AT EACH X-INCREMENT +220 FOR X=X1 TO X2 STEP X3 +221 REM - FUNCTIONS Y(1) TO Y(9) SHOULD BE ENTERED AT LINES 221TO 229 +225 Y(1)=COS(X) +228 Y(2)=SIN(X) +230 FOR I=1 TO N +239 REM - ESTABLISH THE ROUNDED VALUE OF Y FOR EACH X-INCREMENTVALUE +240 Y(I)=INT((Y(I)-Y1)/Y3+.5) +250 NEXT I +259 REM - LOOP TO READ VALUE OF EACH Y-INCREMENT +260 FOR I=0 TO Y2 +269 REM - S COUNTS THE NUMBER OF VALUES AT EACH Y-INCREMENT FOREACH X +270 S=0 +280 FOR J=1 TO N +289 REM - PLOT A POINT ON THIS SPOT? IF YES, STORE FUNCTION NUMBER IN T +290 IF Y(J)<>I THEN 320 +300 S=S+1 +310 T=J +320 NEXT J +327 REM - TEST FOR NUMBER OF POINTS TO PLOT ON EACH SPOT; +328 REM - IF 0 PRINT "+" (first line only), IF 1 PRINT FUNCTIONNUMBER, +329 REM - IF 2 OR MORE PRINT "*" +330 IF S>0 THEN 360 +340 PRINT A$(SGN(I)+10); +350 GOTO 400 +360 IF S>1 THEN 390 +370 PRINT A$ (T); +380 GOTO 400 +390 PRINT "*"; +400 NEXT I +409 REM - LABEL AXES AT THE LAST SPACE ON EACH AXIS +410 IF X>X1 THEN 430 +420 PRINT "Y"; +429 REM - ADVANCE PRINTER TO NEXT LINE +430 PRINT +439 REM - PRINT SPACE INSTEAD OF "+" AFTER FIRST LINE OF PRINT (y-axis) +440 A$(11)=" " +450 NEXT X +460 PRINT "x" +470 DATA "1","2","3","4","5","6","7","8","9","+","+" +480 END diff --git a/SCBP/PLOTFUNC.INP b/SCBP/PLOTFUNC.INP new file mode 100644 index 0000000..afa49c0 --- /dev/null +++ b/SCBP/PLOTFUNC.INP @@ -0,0 +1,3 @@ +2 +0,10,0.1 +-1.1,1.1,0.05 diff --git a/SCBP/PLOTFUNC.OUT b/SCBP/PLOTFUNC.OUT new file mode 100644 index 0000000..a98272b --- /dev/null +++ b/SCBP/PLOTFUNC.OUT @@ -0,0 +1,112 @@ +PLOT OF FUNCTIONS + +NUMBER OF FUNCTIONS TO BE PLOTTED? 2 +X-AXIS:LEFT ENDPOINT,RIGHT ENDPOINT,INCREMENT? 0,10,0.1 +Y-AXIS:LOWER ENDPOINT,UPPER ENDPOINT,INCREMENT? -1.1,1.1,0.05 + + +X-AXIS CROSSES Y-AXIS AT Y=-1.1 +Y-AXIS CROSSES X-AXIS AT X= 0 + +++++++++++++++++++++++2+++++++++++++++++++1++Y ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ * ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 12 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 12 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 +x diff --git a/SCBP/PLOTFUNC.dif b/SCBP/PLOTFUNC.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/PLOTFUNC.run b/SCBP/PLOTFUNC.run new file mode 100644 index 0000000..ea48808 --- /dev/null +++ b/SCBP/PLOTFUNC.run @@ -0,0 +1,112 @@ +PLOT OF FUNCTIONS + +NUMBER OF FUNCTIONS TO BE PLOTTED? 2 +X-AXIS:LEFT ENDPOINT,RIGHT ENDPOINT,INCREMENT? 0,10,0.1 +Y-AXIS:LOWER ENDPOINT,UPPER ENDPOINT,INCREMENT? -1.1,1.1,0.05 + + +X-AXIS CROSSES Y-AXIS AT Y=-1.1 +Y-AXIS CROSSES X-AXIS AT X= 0 + +++++++++++++++++++++++2+++++++++++++++++++1++Y ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ * ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 12 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 2 1 ++ 12 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 ++ 1 2 +x diff --git a/SCBP/POISDIST.80 b/SCBP/POISDIST.80 new file mode 100644 index 0000000..c0306f7 --- /dev/null +++ b/SCBP/POISDIST.80 @@ -0,0 +1,8 @@ +POISSON DISTRIBUTION + +(TO END PROGRAM ENTER 0) +CALCULATED FREQUENCY? 3 +TEST FREQUENCY? 7 +PROBABILITY OF 7 OCCURRENCES = .021604 + +CALCULATED FREQUENCY? 0 diff --git a/SCBP/POISDIST.BAS b/SCBP/POISDIST.BAS new file mode 100644 index 0000000..20383e9 --- /dev/null +++ b/SCBP/POISDIST.BAS @@ -0,0 +1,22 @@ +10 PRINT "POISSON DISTRIBUTION" +20 PRINT +30 PRINT "(TO END PROGRAM ENTER 0)" +40 PRINT "CALCULATED FREQUENCY"; +50 INPUT L +59 REM - END PROGRAM? +60 IF L=0 THEN 180 +70 PRINT "TEST FREQUENCY"; +80 INPUT X +89 REM - COMPUTE FACTORIAL +90 A=1 +100 FOR I=1 TO X +110 A=A*I +120 NEXT I +129 REM - COMPUTE PROBABILITY +130 A=LOG(A) +140 A=EXP(-L+X*LOG(L)-A) +150 PRINT "PROBABILITY OF";X;"OCCURRENCES =";A +160 PRINT +169 REM - RESTART PROGRAM +170 GOTO 40 +180 END diff --git a/SCBP/POISDIST.INP b/SCBP/POISDIST.INP new file mode 100644 index 0000000..c329c5a --- /dev/null +++ b/SCBP/POISDIST.INP @@ -0,0 +1,3 @@ +3 +7 +0 diff --git a/SCBP/POISDIST.OUT b/SCBP/POISDIST.OUT new file mode 100644 index 0000000..de3ae83 --- /dev/null +++ b/SCBP/POISDIST.OUT @@ -0,0 +1,8 @@ +POISSON DISTRIBUTION + +(TO END PROGRAM ENTER 0) +CALCULATED FREQUENCY? 3 +TEST FREQUENCY? 7 +PROBABILITY OF 7 OCCURRENCES = .021604 + +CALCULATED FREQUENCY? 0 diff --git a/SCBP/POISDIST.dif b/SCBP/POISDIST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/POISDIST.run b/SCBP/POISDIST.run new file mode 100644 index 0000000..c0306f7 --- /dev/null +++ b/SCBP/POISDIST.run @@ -0,0 +1,8 @@ +POISSON DISTRIBUTION + +(TO END PROGRAM ENTER 0) +CALCULATED FREQUENCY? 3 +TEST FREQUENCY? 7 +PROBABILITY OF 7 OCCURRENCES = .021604 + +CALCULATED FREQUENCY? 0 diff --git a/SCBP/PRIFACT.80 b/SCBP/PRIFACT.80 new file mode 100644 index 0000000..49b09a4 --- /dev/null +++ b/SCBP/PRIFACT.80 @@ -0,0 +1,19 @@ +PRIME FACTORS OF INTEGERS + +(ENTER 0 TO END PROGRAM) +NUMBER? 121 + 1 + 11 [ 2 + +NUMBER? 333 + 1 + 3 [ 2 + 37 [ 1 + +NUMBER? 777 + 1 + 3 [ 1 + 7 [ 1 + 37 [ 1 + +NUMBER? 0 diff --git a/SCBP/PRIFACT.BAS b/SCBP/PRIFACT.BAS new file mode 100644 index 0000000..21c77c1 --- /dev/null +++ b/SCBP/PRIFACT.BAS @@ -0,0 +1,27 @@ +10 PRINT "PRIME FACTORS OF INTEGERS" +20 PRINT +30 PRINT "(ENTER 0 TO END PROGRAM)" +40 PRINT "NUMBER"; +50 INPUT Z +59 REM - END PROGRAM? +60 IF Z=0 THEN 200 +69 REM - THE SIGN OF THE NUMBER IS ALWAYS A FACTOR +70 PRINT SGN(Z) +79 REM - USE ABSOLUTE VALUE FOR CALCULATIONS +80 Z=ABS(Z) +89 REM - LOOP TO TEST ALL INTEGERS (2 THROUGH Z) AS PRIME FACTORS +90 FOR I=2 TO Z +100 S=0 +110 IF Z/I<>INT(Z/I) THEN 150 +120 Z=Z/I +130 S=S+1 +140 GOTO 110 +149 REM - FIND A PRIME FACTOR? IF YES, PRINT +150 IF S=0 THEN 170 +159 REM - PRINT FACTORS WITH EXPONENTS; I[S = I TO THE S POWER +160 PRINT I;"[";S +170 NEXT I +180 PRINT +189 REM - RESTART PROGRAM +190 GOTO 40 +200 END diff --git a/SCBP/PRIFACT.INP b/SCBP/PRIFACT.INP new file mode 100644 index 0000000..7577293 --- /dev/null +++ b/SCBP/PRIFACT.INP @@ -0,0 +1,4 @@ +121 +333 +777 +0 diff --git a/SCBP/PRIFACT.OUT b/SCBP/PRIFACT.OUT new file mode 100644 index 0000000..027e78c --- /dev/null +++ b/SCBP/PRIFACT.OUT @@ -0,0 +1,19 @@ +PRIME FACTORS OF INTEGERS + +(ENTER 0 TO END PROGRAM) +NUMBER? 121 + 1 + 11 [ 2 + +NUMBER? 333 + 1 + 3 [ 2 + 37 [ 1 + +NUMBER? 777 + 1 + 3 [ 1 + 7 [ 1 + 37 [ 1 + +NUMBER? 0 diff --git a/SCBP/PRIFACT.dif b/SCBP/PRIFACT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/PRIFACT.run b/SCBP/PRIFACT.run new file mode 100644 index 0000000..49b09a4 --- /dev/null +++ b/SCBP/PRIFACT.run @@ -0,0 +1,19 @@ +PRIME FACTORS OF INTEGERS + +(ENTER 0 TO END PROGRAM) +NUMBER? 121 + 1 + 11 [ 2 + +NUMBER? 333 + 1 + 3 [ 2 + 37 [ 1 + +NUMBER? 777 + 1 + 3 [ 1 + 7 [ 1 + 37 [ 1 + +NUMBER? 0 diff --git a/SCBP/PRINLOAN.80 b/SCBP/PRINLOAN.80 new file mode 100644 index 0000000..be6c820 --- /dev/null +++ b/SCBP/PRINLOAN.80 @@ -0,0 +1,9 @@ +PRINCIPAL ON A LOAN + +REGULAR PAYMENT? 1234 +TERM IN YEARS? 30 +ANNUAL INTEREST RATE? 5 +NUMBER OF PAYMENTS PER YEAR? 12 +PRINCIPAL = $ 229872. + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/PRINLOAN.BAS b/SCBP/PRINLOAN.BAS new file mode 100644 index 0000000..55898a8 --- /dev/null +++ b/SCBP/PRINLOAN.BAS @@ -0,0 +1,23 @@ +10 PRINT "PRINCIPAL ON A LOAN" +20 PRINT +29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "REGULAR PAYMENT"; +40 INPUT R +50 PRINT "TERM IN YEARS"; +60 INPUT Y +70 PRINT "ANNUAL INTEREST RATE"; +80 INPUT I +90 PRINT "NUMBER OF PAYMENTS PER YEAR"; +100 INPUT N +108 REM - CALCULATE AMOUNT OF PRINCIPAL BY FORMULA; +109 REM - INTEREST CONVERTED FROM PERCENT TO DECIMAL FOR CALCULATIONS +110 P=R*N*(1-1/((I/100)/N+1)[(N*Y))/(I/100) +119 REM - ROUND OFF TO NEAREST CENT, PRINT +120 PRINT "PRINCIPAL = $";INT(P*100+.5)/100 +129 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +130 PRINT +139 REM - RESTART OR END PROGRAM? +140 PRINT "MORE DATA? (1=YES, 0=NO)"; +150 INPUT X +160 IF X=1 THEN 20 +170 END diff --git a/SCBP/PRINLOAN.INP b/SCBP/PRINLOAN.INP new file mode 100644 index 0000000..c997a17 --- /dev/null +++ b/SCBP/PRINLOAN.INP @@ -0,0 +1,5 @@ +1234 +30 +5 +12 +0 diff --git a/SCBP/PRINLOAN.OUT b/SCBP/PRINLOAN.OUT new file mode 100644 index 0000000..d136a5c --- /dev/null +++ b/SCBP/PRINLOAN.OUT @@ -0,0 +1,9 @@ +PRINCIPAL ON A LOAN + +REGULAR PAYMENT? 1234 +TERM IN YEARS? 30 +ANNUAL INTEREST RATE? 5 +NUMBER OF PAYMENTS PER YEAR? 12 +PRINCIPAL = $ 229872. + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/PRINLOAN.dif b/SCBP/PRINLOAN.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/PRINLOAN.run b/SCBP/PRINLOAN.run new file mode 100644 index 0000000..be6c820 --- /dev/null +++ b/SCBP/PRINLOAN.run @@ -0,0 +1,9 @@ +PRINCIPAL ON A LOAN + +REGULAR PAYMENT? 1234 +TERM IN YEARS? 30 +ANNUAL INTEREST RATE? 5 +NUMBER OF PAYMENTS PER YEAR? 12 +PRINCIPAL = $ 229872. + +MORE DATA? (1=YES, 0=NO)? 0 diff --git a/SCBP/QUADROOT.80 b/SCBP/QUADROOT.80 new file mode 100644 index 0000000..3343b54 --- /dev/null +++ b/SCBP/QUADROOT.80 @@ -0,0 +1,6 @@ +ROOTS OF QUADRATIC EQUATIONS + +COEFFICIENTS A,B,C? 3,4,5 +ROOTS (COMPLEX): -.666667 + OR - 1.10554 I + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/QUADROOT.BAS b/SCBP/QUADROOT.BAS new file mode 100644 index 0000000..f1c030c --- /dev/null +++ b/SCBP/QUADROOT.BAS @@ -0,0 +1,19 @@ +10 PRINT "ROOTS OF QUADRATIC EQUATIONS" +20 PRINT +29 REM - ENTER COEFFICIENTS A,B,C OF A*x[2 + B*X + C +30 PRINT "COEFFICIENTS A,B,C"; +40 INPUT A,B,C +50 S=B[2-4*A*C +60 R=SQR(ABS(S)) +69 REM - COMPLEX ROOTS? +70 IF S<0 THEN 100 +79 REM - CALCULATE ROOTS, LABEL, PRINT +80 PRINT "ROOTS (REAL): ";(-B-R)/(2*A);", ";(-B+R)/(2*A) +90 GOTO 110 +100 PRINT "ROOTS (COMPLEX): ";-B/(2*A);" + OR -";R/(2*A);" I" +110 PRINT +119 REM - RESTART OR END PROGRAM? +120 PRINT "MORE DATA (1=YES, 0=NO)"; +130 INPUT X +140 IF X=1 THEN 20 +150 END diff --git a/SCBP/QUADROOT.INP b/SCBP/QUADROOT.INP new file mode 100644 index 0000000..27ac0bd --- /dev/null +++ b/SCBP/QUADROOT.INP @@ -0,0 +1,2 @@ +3,4,5 +0 diff --git a/SCBP/QUADROOT.OUT b/SCBP/QUADROOT.OUT new file mode 100644 index 0000000..309e9e0 --- /dev/null +++ b/SCBP/QUADROOT.OUT @@ -0,0 +1,6 @@ +ROOTS OF QUADRATIC EQUATIONS + +COEFFICIENTS A,B,C? 3,4,5 +ROOTS (COMPLEX): -.666667 + OR - 1.10554 I + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/QUADROOT.dif b/SCBP/QUADROOT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/QUADROOT.run b/SCBP/QUADROOT.run new file mode 100644 index 0000000..3343b54 --- /dev/null +++ b/SCBP/QUADROOT.run @@ -0,0 +1,6 @@ +ROOTS OF QUADRATIC EQUATIONS + +COEFFICIENTS A,B,C? 3,4,5 +ROOTS (COMPLEX): -.666667 + OR - 1.10554 I + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/RADDEG.80 b/SCBP/RADDEG.80 new file mode 100644 index 0000000..1796c8e --- /dev/null +++ b/SCBP/RADDEG.80 @@ -0,0 +1,13 @@ +ANGLE CONVERSION: RADIANS TO DEGREES + +ANGLE IN RADIANS (ENTER 0 TO END PROGRAM)? 0.8 + DEGREES = 45 + MINUTES = 50 + SECONDS = 11.84 + +ANGLE IN RADIANS? 1.6 + DEGREES = 91 + MINUTES = 40 + SECONDS = 23.69 + +ANGLE IN RADIANS? 0 diff --git a/SCBP/RADDEG.BAS b/SCBP/RADDEG.BAS new file mode 100644 index 0000000..ce2acbd --- /dev/null +++ b/SCBP/RADDEG.BAS @@ -0,0 +1,25 @@ +10 PRINT "ANGLE CONVERSION: RADIANS TO DEGREES" +20 PRINT +30 PRINT "ANGLE IN RADIANS (ENTER 0 TO END PROGRAM)"; +40 GOTO 60 +50 PRINT "ANGLE IN RADIANS"; +60 INPUT R +69 REM - TEST FOR END OF PROGRAM +70 IF R=0 THEN 170 +79 REM - CONVERT RADIANS TO SECONDS +80 A=3600*180*R/3.1415927 +89 REM - CALCULATE NUMBER OF WHOLE DEGREES +90 D=INT(A/3600) +99 REM - CALCULATE NUMBER OF FULL CIRCLES +100 D1=INT(D/360) +109 REM - CALCULATE DEGREES OF ANGLE WITHIN 360 DEGREES, PRINT +110 PRINT " DEGREES =";D-360*D1 +119 REM - CALCULATE MINUTES, PRINT +120 PRINT " MINUTES =";INT((A-D*3600)/60) +129 REM - CALCULATE SECONDS, ROUND OFF, PRINT +130 S=A-D*3600-(INT((A-D*3600)/60))*60 +140 PRINT " SECONDS =";INT(100*S+.5)/100 +150 PRINT +159 REM - RESTART PROGRAM +160 GOTO 50 +170 END diff --git a/SCBP/RADDEG.INP b/SCBP/RADDEG.INP new file mode 100644 index 0000000..a315b3f --- /dev/null +++ b/SCBP/RADDEG.INP @@ -0,0 +1,3 @@ +0.8 +1.6 +0 diff --git a/SCBP/RADDEG.OUT b/SCBP/RADDEG.OUT new file mode 100644 index 0000000..fee555c --- /dev/null +++ b/SCBP/RADDEG.OUT @@ -0,0 +1,13 @@ +ANGLE CONVERSION: RADIANS TO DEGREES + +ANGLE IN RADIANS (ENTER 0 TO END PROGRAM)? 0.8 + DEGREES = 45 + MINUTES = 50 + SECONDS = 11.84 + +ANGLE IN RADIANS? 1.6 + DEGREES = 91 + MINUTES = 40 + SECONDS = 23.69 + +ANGLE IN RADIANS? 0 diff --git a/SCBP/RADDEG.dif b/SCBP/RADDEG.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/RADDEG.run b/SCBP/RADDEG.run new file mode 100644 index 0000000..1796c8e --- /dev/null +++ b/SCBP/RADDEG.run @@ -0,0 +1,13 @@ +ANGLE CONVERSION: RADIANS TO DEGREES + +ANGLE IN RADIANS (ENTER 0 TO END PROGRAM)? 0.8 + DEGREES = 45 + MINUTES = 50 + SECONDS = 11.84 + +ANGLE IN RADIANS? 1.6 + DEGREES = 91 + MINUTES = 40 + SECONDS = 23.69 + +ANGLE IN RADIANS? 0 diff --git a/SCBP/RECICOST.80 b/SCBP/RECICOST.80 new file mode 100644 index 0000000..082499d --- /dev/null +++ b/SCBP/RECICOST.80 @@ -0,0 +1,24 @@ +RECIPE COST + +NUMBER OF INGREDIENTS? 3 +INGREDIENT 1 : + COST FOR BULK UNIT IN STORE? 456 + NUMBER OF UNITS IN BULK? 144 + NUMBER OF RECIPE UNITS PER BULK UNIT? 121 + NUMBER OF RECIPE UNITS CALLED FOR? 204 +INGREDIENT 2 : + COST FOR BULK UNIT IN STORE? 789 + NUMBER OF UNITS IN BULK? 360 + NUMBER OF RECIPE UNITS PER BULK UNIT? 175 + NUMBER OF RECIPE UNITS CALLED FOR? 15 +INGREDIENT 3 : + COST FOR BULK UNIT IN STORE? 342 + NUMBER OF UNITS IN BULK? 13 + NUMBER OF RECIPE UNITS PER BULK UNIT? 16 + NUMBER OF RECIPE UNITS CALLED FOR? 121 +NUMBER OF SERVINGS? 10 + +TOTAL COST FOR 1 RECIPE = $ 204.48 +COST PER SERVING = $ 20.45 + +CHANGE NUMBER OF SERVINGS (1=YES,0=NO)? 0 diff --git a/SCBP/RECICOST.BAS b/SCBP/RECICOST.BAS new file mode 100644 index 0000000..3b17b1d --- /dev/null +++ b/SCBP/RECICOST.BAS @@ -0,0 +1,31 @@ +10 PRINT "RECIPE COST" +20 PRINT +29 REM - STATEMENTS 30 TO 180 REQUEST USER INPUT +30 PRINT "NUMBER OF INGREDIENTS"; +40 INPUT N +49 REM - LOOP TO REQUEST DATA FOR EACH INGREDIENT +50 FOR I=1 TO N +60 PRINT "INGREDIENT";I;":" +70 PRINT " COST FOR BULK UNIT IN STORE"; +80 INPUT C +90 PRINT " NUMBER OF UNITS IN BULK"; +100 INPUT U +110 PRINT " NUMBER OF RECIPE UNITS PER BULK UNIT"; +120 INPUT F +130 PRINT " NUMBER OF RECIPE UNITS CALLED FOR"; +140 INPUT R +149 REM - SUM COST OF EACH INGREDIENT PER AMOUNT USED +150 P=P+C/U/F*R +160 NEXT I +170 PRINT "NUMBER OF SERVINGS"; +180 INPUT S +190 PRINT +199 REM - ROUND OF COSTS TO NEAREST CENT, PRINT RESULTS +200 PRINT "TOTAL COST FOR 1 RECIPE = $";INT(P*100+.5)/100 +210 PRINT "COST PER SERVING = $";INT(P/S*100+.5)/100 +220 PRINT +229 REM - CALCULATE ALTERNATIVE PRICE PER SERVING? +230 PRINT "CHANGE NUMBER OF SERVINGS (1=YES,0=NO)"; +240 INPUT N +250 IF N=1 THEN 170 +260 END diff --git a/SCBP/RECICOST.INP b/SCBP/RECICOST.INP new file mode 100644 index 0000000..d737548 --- /dev/null +++ b/SCBP/RECICOST.INP @@ -0,0 +1,15 @@ +3 +456 +144 +121 +204 +789 +360 +175 +15 +342 +13 +16 +121 +10 +0 diff --git a/SCBP/RECICOST.OUT b/SCBP/RECICOST.OUT new file mode 100644 index 0000000..ffd30df --- /dev/null +++ b/SCBP/RECICOST.OUT @@ -0,0 +1,24 @@ +RECIPE COST + +NUMBER OF INGREDIENTS? 3 +INGREDIENT 1 : + COST FOR BULK UNIT IN STORE? 456 + NUMBER OF UNITS IN BULK? 144 + NUMBER OF RECIPE UNITS PER BULK UNIT? 121 + NUMBER OF RECIPE UNITS CALLED FOR? 204 +INGREDIENT 2 : + COST FOR BULK UNIT IN STORE? 789 + NUMBER OF UNITS IN BULK? 360 + NUMBER OF RECIPE UNITS PER BULK UNIT? 175 + NUMBER OF RECIPE UNITS CALLED FOR? 15 +INGREDIENT 3 : + COST FOR BULK UNIT IN STORE? 342 + NUMBER OF UNITS IN BULK? 13 + NUMBER OF RECIPE UNITS PER BULK UNIT? 16 + NUMBER OF RECIPE UNITS CALLED FOR? 121 +NUMBER OF SERVINGS? 10 + +TOTAL COST FOR 1 RECIPE = $ 204.48 +COST PER SERVING = $ 20.45 + +CHANGE NUMBER OF SERVINGS (1=YES,0=NO)? 0 diff --git a/SCBP/RECICOST.dif b/SCBP/RECICOST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/RECICOST.run b/SCBP/RECICOST.run new file mode 100644 index 0000000..082499d --- /dev/null +++ b/SCBP/RECICOST.run @@ -0,0 +1,24 @@ +RECIPE COST + +NUMBER OF INGREDIENTS? 3 +INGREDIENT 1 : + COST FOR BULK UNIT IN STORE? 456 + NUMBER OF UNITS IN BULK? 144 + NUMBER OF RECIPE UNITS PER BULK UNIT? 121 + NUMBER OF RECIPE UNITS CALLED FOR? 204 +INGREDIENT 2 : + COST FOR BULK UNIT IN STORE? 789 + NUMBER OF UNITS IN BULK? 360 + NUMBER OF RECIPE UNITS PER BULK UNIT? 175 + NUMBER OF RECIPE UNITS CALLED FOR? 15 +INGREDIENT 3 : + COST FOR BULK UNIT IN STORE? 342 + NUMBER OF UNITS IN BULK? 13 + NUMBER OF RECIPE UNITS PER BULK UNIT? 16 + NUMBER OF RECIPE UNITS CALLED FOR? 121 +NUMBER OF SERVINGS? 10 + +TOTAL COST FOR 1 RECIPE = $ 204.48 +COST PER SERVING = $ 20.45 + +CHANGE NUMBER OF SERVINGS (1=YES,0=NO)? 0 diff --git a/SCBP/REGDEP.80 b/SCBP/REGDEP.80 new file mode 100644 index 0000000..5dc9a85 --- /dev/null +++ b/SCBP/REGDEP.80 @@ -0,0 +1,9 @@ +REGULAR DEPOSITS + +TOTAL VALUE AFTER Y YEARS? 123456 +NOMINAL INTEREST RATE? 4.75 +NUMBER OF DEPOSITS PER YEAR? 12 +NUMBER OF YEARS? 10 +REGULAR DEPOSITS = $ 5381.93 + +MORE DATA?(1=YES,0=NO)? 0 diff --git a/SCBP/REGDEP.BAS b/SCBP/REGDEP.BAS new file mode 100644 index 0000000..c517a6c --- /dev/null +++ b/SCBP/REGDEP.BAS @@ -0,0 +1,25 @@ +10 PRINT "REGULAR DEPOSITS" +20 PRINT +29 REM -STATEMENTS 30 TO 100 REQUEST USER INPUT +30 PRINT "TOTAL VALUE AFTER Y YEARS"; +40 INPUT T +50 PRINT "NOMINAL INTEREST RATE"; +60 INPUT I +70 PRINT "NUMBER OF DEPOSITS PER YEAR"; +80 INPUT N +90 PRINT "NUMBER OF YEARS"; +100 INPUT Y +108 REM -CALCULATE INTEREST RATE PER DEPOSIT; +109 REM -CONVERT FROM PERCENT TO DECIMAL +110 I=I/N/100 +119 REM -CALCULATE AMOUNT OF REGULAR DEPOSIT BY FORMULA +120 R=T*I/((I+1)[(N+Y)-1) +129 REM -ROUND OFF TO NEAREST CENT, PRINT +130 PRINT "REGULAR DEPOSITS = $"; INT(R*100+.5)/100 +139 REM -PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION +140 PRINT +149 REM -RESTART OR END PROGRAM? USER INPUT REQUIRED +150 PRINT "MORE DATA?(1=YES,0=NO)"; +160 INPUT X +170 IF X=1 THEN 20 +180 END diff --git a/SCBP/REGDEP.INP b/SCBP/REGDEP.INP new file mode 100644 index 0000000..26c5caf --- /dev/null +++ b/SCBP/REGDEP.INP @@ -0,0 +1,5 @@ +123456 +4.75 +12 +10 +0 diff --git a/SCBP/REGDEP.OUT b/SCBP/REGDEP.OUT new file mode 100644 index 0000000..085e25f --- /dev/null +++ b/SCBP/REGDEP.OUT @@ -0,0 +1,9 @@ +REGULAR DEPOSITS + +TOTAL VALUE AFTER Y YEARS? 123456 +NOMINAL INTEREST RATE? 4.75 +NUMBER OF DEPOSITS PER YEAR? 12 +NUMBER OF YEARS? 10 +REGULAR DEPOSITS = $ 5381.93 + +MORE DATA?(1=YES,0=NO)? 0 diff --git a/SCBP/REGDEP.dif b/SCBP/REGDEP.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/REGDEP.run b/SCBP/REGDEP.run new file mode 100644 index 0000000..5dc9a85 --- /dev/null +++ b/SCBP/REGDEP.run @@ -0,0 +1,9 @@ +REGULAR DEPOSITS + +TOTAL VALUE AFTER Y YEARS? 123456 +NOMINAL INTEREST RATE? 4.75 +NUMBER OF DEPOSITS PER YEAR? 12 +NUMBER OF YEARS? 10 +REGULAR DEPOSITS = $ 5381.93 + +MORE DATA?(1=YES,0=NO)? 0 diff --git a/SCBP/REGWDRAW.80 b/SCBP/REGWDRAW.80 new file mode 100644 index 0000000..fbc3bb7 --- /dev/null +++ b/SCBP/REGWDRAW.80 @@ -0,0 +1,9 @@ +REGULAR WITHDRAWALS FROM AN INVESTMENT + +INITIAL INVESTMENT? 123456 +NOMINAL INTEREST RATE? 7.75 +NUMBER OF WITHDRAWALS PER YEAR? 12 +NUMBER OF YEARS? 10 +AMOUNT OF EACH WITHDRAWAL = $ 1481.6 + +MORE DATA?(1=YES,0=NO)? 0 diff --git a/SCBP/REGWDRAW.BAS b/SCBP/REGWDRAW.BAS new file mode 100644 index 0000000..70b8043 --- /dev/null +++ b/SCBP/REGWDRAW.BAS @@ -0,0 +1,25 @@ +10 PRINT "REGULAR WITHDRAWALS FROM AN INVESTMENT" +20 PRINT +29 REM -STATEMENT 30 TO 100 REQUEST USE INPUT +30 PRINT "INITIAL INVESTMENT"; +40 INPUT P +50 PRINT "NOMINAL INTEREST RATE"; +60 INPUT I +70 PRINT "NUMBER OF WITHDRAWALS PER YEAR"; +80 INPUT N +90 PRINT "NUMBER OF YEARS"; +100 INPUT Y +108 REM -CALCULATE INTEREST RATE PER WITHDRAWAL; +109 REM -CONVERT FROM PERCENT TO DECIMAL +110 I=I/N/100 +119 REM -CALCULATE REGULAR WITHDRAWAL BY FORMULA +120 R=P*(I/((1+I)[(N*Y)-1)+I) +129 REM -ROUND OFF TO NEAREST CENT, PRINT +130 PRINT "AMOUNT OF EACH WITHDRAWAL = $"; INT(R*100+.5)/100 +139 REM -PRINT BLANK LINE TO SEPARATE QUESTION FROM DATA +140 PRINT +149 REM -RESTART OR END PROGRAM? +150 PRINT "MORE DATA?(1=YES,0=NO)"; +160 INPUT X +170 IF X=1 THEN 20 +180 END diff --git a/SCBP/REGWDRAW.INP b/SCBP/REGWDRAW.INP new file mode 100644 index 0000000..83ac815 --- /dev/null +++ b/SCBP/REGWDRAW.INP @@ -0,0 +1,5 @@ +123456 +7.75 +12 +10 +0 diff --git a/SCBP/REGWDRAW.OUT b/SCBP/REGWDRAW.OUT new file mode 100644 index 0000000..2147435 --- /dev/null +++ b/SCBP/REGWDRAW.OUT @@ -0,0 +1,9 @@ +REGULAR WITHDRAWALS FROM AN INVESTMENT + +INITIAL INVESTMENT? 123456 +NOMINAL INTEREST RATE? 7.75 +NUMBER OF WITHDRAWALS PER YEAR? 12 +NUMBER OF YEARS? 10 +AMOUNT OF EACH WITHDRAWAL = $ 1481.6 + +MORE DATA?(1=YES,0=NO)? 0 diff --git a/SCBP/REGWDRAW.dif b/SCBP/REGWDRAW.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/REGWDRAW.run b/SCBP/REGWDRAW.run new file mode 100644 index 0000000..fbc3bb7 --- /dev/null +++ b/SCBP/REGWDRAW.run @@ -0,0 +1,9 @@ +REGULAR WITHDRAWALS FROM AN INVESTMENT + +INITIAL INVESTMENT? 123456 +NOMINAL INTEREST RATE? 7.75 +NUMBER OF WITHDRAWALS PER YEAR? 12 +NUMBER OF YEARS? 10 +AMOUNT OF EACH WITHDRAWAL = $ 1481.6 + +MORE DATA?(1=YES,0=NO)? 0 diff --git a/SCBP/ROOTNEWT.80 b/SCBP/ROOTNEWT.80 new file mode 100644 index 0000000..fe96660 --- /dev/null +++ b/SCBP/ROOTNEWT.80 @@ -0,0 +1,13 @@ +REAL ROOTS OF POLYNOMIALS: NEWTON + +DEGREE OF EQUATION? 2 +COEFFICIENT A( 0 )? 5 +COEFFICIENT A( 1 )? 8 +COEFFICIENT A( 2 )? 9 + +guess? 10 +100 ITERATIONS COMPLETED: + X = .17034 F(x) = 3.75415 + CONTINUE (1= YES, 0=NO)? 0 +ANOTHER VALUE (1=YES, 0=NO)? 0 +ANOTHER FUNCTION (1=YES, 0=NO)? 0 diff --git a/SCBP/ROOTNEWT.BAS b/SCBP/ROOTNEWT.BAS new file mode 100644 index 0000000..61cc4c4 --- /dev/null +++ b/SCBP/ROOTNEWT.BAS @@ -0,0 +1,71 @@ +10 PRINT "REAL ROOTS OF POLYNOMIALS: NEWTON" +20 PRINT +28 REM - LIMIT A() AND B() TO N+1; WHEN THIS IS DONE, LOOP AT LINE 40 +29 REM - SHOULD BE SET TO TEST FROM 1 TO N+1 +30 DIM A(11),B(11) +39 REM - INITIALIZE ARRAY VARIABLES +40 FOR I=1 TO 11 +50 A(I)=0 +60 B(I)=0 +70 NEXT I +80 PRINT "DEGREE OF EQUATION"; +90 INPUT N +100 FOR I=1 TO N+1 +109 REM - ENTER COEFFICIENTS IN ORDER OF LESSER TO HIGHER DEGREE +110 PRINT "COEFFICIENT A(";I-1;")"; +120 INPUT A(I) +130 NEXT I +140 FOR I=1 TO 10 +149 REM - CALCULATE COEFFICIENT OF DERIVATIVE OF POLYNOMIAL +150 B(I)=A(I+1)*I +160 NEXT I +170 PRINT +179 REM - INITIALIZE GUESS +180 PRINT "guess"; +190 INPUT X +200 Q=0 +210 S=1 +220 F1=0 +230 F0=0 +239 REM - COUNT ITERATIONS +240 Q=Q+1 +250 FOR I=1 TO N+1 +259 REM - CALCULATE VALUE OF FUNCTION +260 F0=F0+A(I)*S +269 REM - CALCULATE VALUE OF DERIVATIVE +270 F1=F1+B(I)*S +280 S=S*X +290 NEXT I +299 REM - TEST FOR A ZERO DERIVATIVE; IF YES, STOP SEARCH, PRINT +300 IF F1=0 THEN 360 +309 REM - GET NEW GUESS USING PREVIOUS GUESS +310 S=X-F0/F1 +319 REM - IF NEW GUESS = LAST GUESS THEN STOP SEARCH, PRINT +320 IF X=S THEN 380 +329 REM - SAVE LAST GUESS +330 X=S +340 IF Q>100 THEN 490 +350 GOTO 210 +360 PRINT "DERIVATIVE = 0 AT X =";X +370 GOTO 180 +380 PRINT +390 PRINT " ROOT"," ERROR"," DERIVATIVE" +400 PRINT X,F0,F1 +410 PRINT +419 REM - RERUN TO FIND ANOTHER ROOT IN SAME FUNCTION? +420 PRINT "ANOTHER VALUE (1=YES, 0=NO)"; +430 INPUT A +440 IF A=1 THEN 170 +449 REM - RESTART OR END PROGRAM? +450 PRINT "ANOTHER FUNCTION (1=YES, 0=NO)"; +460 INPUT A +470 IF A=1 THEN 30 +480 GOTO 550 +489 REM - PRINT CALCULATE VALUES AFTER 100 ITERATIONS; SEARCH 100 MORE? +490 PRINT "100 ITERATIONS COMPLETED:" +500 PRINT " X =";X;" F(x) =";F0 +510 PRINT " CONTINUE (1= YES, 0=NO)"; +520 INPUT A +530 IF A=1 THEN 200 +540 GOTO 420 +550 END diff --git a/SCBP/ROOTNEWT.INP b/SCBP/ROOTNEWT.INP new file mode 100644 index 0000000..231e845 --- /dev/null +++ b/SCBP/ROOTNEWT.INP @@ -0,0 +1,8 @@ +2 +5 +8 +9 +10 +0 +0 +0 diff --git a/SCBP/ROOTNEWT.OUT b/SCBP/ROOTNEWT.OUT new file mode 100644 index 0000000..9d95dd1 --- /dev/null +++ b/SCBP/ROOTNEWT.OUT @@ -0,0 +1,13 @@ +REAL ROOTS OF POLYNOMIALS: NEWTON + +DEGREE OF EQUATION? 2 +COEFFICIENT A( 0 )? 5 +COEFFICIENT A( 1 )? 8 +COEFFICIENT A( 2 )? 9 + +guess? 10 +100 ITERATIONS COMPLETED: + X = .17034 F(x) = 3.75415 + CONTINUE (1= YES, 0=NO)? 0 +ANOTHER VALUE (1=YES, 0=NO)? 0 +ANOTHER FUNCTION (1=YES, 0=NO)? 0 diff --git a/SCBP/ROOTNEWT.dif b/SCBP/ROOTNEWT.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/ROOTNEWT.run b/SCBP/ROOTNEWT.run new file mode 100644 index 0000000..fe96660 --- /dev/null +++ b/SCBP/ROOTNEWT.run @@ -0,0 +1,13 @@ +REAL ROOTS OF POLYNOMIALS: NEWTON + +DEGREE OF EQUATION? 2 +COEFFICIENT A( 0 )? 5 +COEFFICIENT A( 1 )? 8 +COEFFICIENT A( 2 )? 9 + +guess? 10 +100 ITERATIONS COMPLETED: + X = .17034 F(x) = 3.75415 + CONTINUE (1= YES, 0=NO)? 0 +ANOTHER VALUE (1=YES, 0=NO)? 0 +ANOTHER FUNCTION (1=YES, 0=NO)? 0 diff --git a/SCBP/ROOTPOLY.80 b/SCBP/ROOTPOLY.80 new file mode 100644 index 0000000..73d0132 --- /dev/null +++ b/SCBP/ROOTPOLY.80 @@ -0,0 +1,9 @@ +ROOTS OF POLYNOMIALS: HALF-INTERVAL SEARCH + +(TO END SEARCH ENTER 0,0) +INTERVAL (LOWER, UPPER LIMIT)? 1,10 +NO CHANGE OF SIGN FOUND +INTERVAL (LOWER, UPPER LIMIT)? -1,1 +ROOT = .303574 + +INTERVAL (LOWER, UPPER LIMIT)? 0,0 diff --git a/SCBP/ROOTPOLY.BAS b/SCBP/ROOTPOLY.BAS new file mode 100644 index 0000000..a04f43c --- /dev/null +++ b/SCBP/ROOTPOLY.BAS @@ -0,0 +1,63 @@ +10 PRINT "ROOTS OF POLYNOMIALS: HALF-INTERVAL SEARCH" +20 PRINT +30 REM - ENTER FUNCTION ("DEFFNR(x)="FUNCTION") HERE +35 DEF FNR(X)=4*X[4-2.5*X[2-X+.5 +40 DIM D(3) +50 PRINT "(TO END SEARCH ENTER 0,0)" +59 REM - ESTABLISH INTERVAL OF RANDOM SEARCH +60 PRINT "INTERVAL (LOWER, UPPER LIMIT)"; +70 INPUT A,B +79 REM - TEST FOR USABLE LIMITS ENTERED +80 IF A<>B THEN 120 +89 REM - END PROGRAM? +90 IF A=0 THEN 430 +100 PRINT "--INTERVAL LIMITS CANNOT BE EQUAL--" +110 GOTO 60 +120 IF A0 THEN 230 +200 NEXT I +210 PRINT "NO UNIQUE SOLUTION" +220 GOTO 440 +229 REM - STATEMENTS 230 TO 270 MOVE THAT EQUATION UP TO THE CURRENT ROW +230 FOR K=1 TO R+1 +240 X=A(J,K) +250 A(J,K)=A(I,K) +260 A(I,K)=X +270 NEXT K +278 REM - REM - STATEMENTS 280 TO 310 GET A 1 COEFFICIENT IN THE FIRST +279 REM - NON-ZERO COLUMN OF THE CURRENT ROW +280 Y=1/A(J,J) +290 FOR K=1 TO R+1 +300 A(J,K)=Y*A(J,K) +310 NEXT K +318 REM - STATEMENTS 320 TO 380 SUBTRACT THE CURRENT EQUATION FROM +319 REM - THE OTHER ROWS +320 FOR I=1 TO R +330 IF I=J THEN 380 +340 Y=-A(I,J) +350 FOR K=1 TO R+1 +360 A(I,K)=A(I,K)+Y*A(J,K) +370 NEXT K +380 NEXT I +389 REM - THIS PROCESS IS REPEATED FOR ALL EQUATIONS +390 NEXT J +400 PRINT +409 REM - PRINT SOLUTIONS +410 FOR I=1 TO R +420 PRINT "x";I;"=";INT(A(I,R+1)*1000+.5)/1000 +430 NEXT I +440 END diff --git a/SCBP/SIMLEQNS.INP b/SCBP/SIMLEQNS.INP new file mode 100644 index 0000000..b1a6a4d --- /dev/null +++ b/SCBP/SIMLEQNS.INP @@ -0,0 +1,7 @@ +2 +4 +8 +9 +5 +2 +7 diff --git a/SCBP/SIMLEQNS.OUT b/SCBP/SIMLEQNS.OUT new file mode 100644 index 0000000..1018fb7 --- /dev/null +++ b/SCBP/SIMLEQNS.OUT @@ -0,0 +1,15 @@ +SIMULTANEOUS EQUATIONS + +NUMBER OF EQUATIONS? 2 +COEFFICIENT MATRIX: +EQUATION 1 + COEFFICIENT 1 ? 4 + COEFFICIENT 2 ? 8 + CONSTANT? 9 +EQUATION 2 + COEFFICIENT 1 ? 5 + COEFFICIENT 2 ? 2 + CONSTANT? 7 + +x 1 = 1.188 +x 2 = .531 diff --git a/SCBP/SIMLEQNS.dif b/SCBP/SIMLEQNS.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/SIMLEQNS.run b/SCBP/SIMLEQNS.run new file mode 100644 index 0000000..3ee7531 --- /dev/null +++ b/SCBP/SIMLEQNS.run @@ -0,0 +1,15 @@ +SIMULTANEOUS EQUATIONS + +NUMBER OF EQUATIONS? 2 +COEFFICIENT MATRIX: +EQUATION 1 + COEFFICIENT 1 ? 4 + COEFFICIENT 2 ? 8 + CONSTANT? 9 +EQUATION 2 + COEFFICIENT 1 ? 5 + COEFFICIENT 2 ? 2 + CONSTANT? 7 + +x 1 = 1.188 +x 2 = .531 diff --git a/SCBP/STDDEV.80 b/SCBP/STDDEV.80 new file mode 100644 index 0000000..ecccc72 --- /dev/null +++ b/SCBP/STDDEV.80 @@ -0,0 +1,13 @@ +MEAN, VARIANCE, STANDARD DEVIATION + +WHICH METHOD (0=POPULATION,1=SAMPLE)? 0 +KIND OF DATA (0=GROUPED,1=UNGROUPED)? 1 +NUMBER OF OBSERVATIONS? 3 +ITEM 1 ? 4 +ITEM 2 ? 5 +ITEM 3 ? 6 + +MEAN VARIANCE STANDARD DEVIATION + 5 .666667 .816497 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/STDDEV.BAS b/SCBP/STDDEV.BAS new file mode 100644 index 0000000..bd56bc0 --- /dev/null +++ b/SCBP/STDDEV.BAS @@ -0,0 +1,49 @@ +10 PRINT "MEAN, VARIANCE, STANDARD DEVIATION" +20 PRINT +30 PRINT "WHICH METHOD (0=POPULATION,1=SAMPLE)"; +40 INPUT S +50 PRINT "KIND OF DATA (0=GROUPED,1=UNGROUPED)"; +60 INPUT K +70 PRINT "NUMBER OF OBSERVATIONS"; +80 INPUT N +90 R=0 +100 M=0 +110 P=0 +120 IF K=1 THEN 230 +129 REM - FOR GROUPED DATA +130 FOR I=1 TO N +140 PRINT "ITEM, FREQUENCY";I; +150 INPUT A,B +159 REM - ACCUMULATE ENTERED VALUES +160 R=R+B*A +169 REM - ACCUMULATE INTERMEDIATE VALUES FOR VARIANCE +170 P=P+B +180 M=M+B*A[2 +190 NEXT I +199 REM - CALCULATE MEAN AND VARIANCE +200 R=R/P +210 V=(M-P*R[2)/(P-S) +219 REM - PRINT RESULTS +220 GOTO 310 +229 REM - FOR UNGROUPED DATA +230 FOR I=1 TO N +240 PRINT "ITEM";I; +250 INPUT D +259 REM - ACCUMULATE INTERMEDIATE VALUES FOR VARIANCE +260 P=P+D +269 REM - ACCUMULATE INTERMEDIATE VALUES FOR VARIANCE +270 M=M+D[2 +280 NEXT I +289 REM - CALCULATE MEAN AND VARIANCE, PRINT +290 R=P/N +300 V=(M-N*R[2)/(N-S) +310 PRINT +319 REM - PRINT RESULTS +320 PRINT "MEAN","VARIANCE","STANDARD DEVIATION" +330 PRINT R,V,SQR(V) +340 PRINT +349 REM - RESTART OR END PROGRAM? +350 PRINT "MORE DATA (1=YES, 0=NO)"; +360 INPUT S +370 IF S=1 THEN 20 +380 END diff --git a/SCBP/STDDEV.INP b/SCBP/STDDEV.INP new file mode 100644 index 0000000..b6a47af --- /dev/null +++ b/SCBP/STDDEV.INP @@ -0,0 +1,7 @@ +0 +1 +3 +4 +5 +6 +0 diff --git a/SCBP/STDDEV.OUT b/SCBP/STDDEV.OUT new file mode 100644 index 0000000..492cca6 --- /dev/null +++ b/SCBP/STDDEV.OUT @@ -0,0 +1,13 @@ +MEAN, VARIANCE, STANDARD DEVIATION + +WHICH METHOD (0=POPULATION,1=SAMPLE)? 0 +KIND OF DATA (0=GROUPED,1=UNGROUPED)? 1 +NUMBER OF OBSERVATIONS? 3 +ITEM 1 ? 4 +ITEM 2 ? 5 +ITEM 3 ? 6 + +MEAN VARIANCE STANDARD DEVIATION + 5 .666667 .816497 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/STDDEV.dif b/SCBP/STDDEV.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/STDDEV.run b/SCBP/STDDEV.run new file mode 100644 index 0000000..ecccc72 --- /dev/null +++ b/SCBP/STDDEV.run @@ -0,0 +1,13 @@ +MEAN, VARIANCE, STANDARD DEVIATION + +WHICH METHOD (0=POPULATION,1=SAMPLE)? 0 +KIND OF DATA (0=GROUPED,1=UNGROUPED)? 1 +NUMBER OF OBSERVATIONS? 3 +ITEM 1 ? 4 +ITEM 2 ? 5 +ITEM 3 ? 6 + +MEAN VARIANCE STANDARD DEVIATION + 5 .666667 .816497 + +MORE DATA (1=YES, 0=NO)? 0 diff --git a/SCBP/SYSREL.80 b/SCBP/SYSREL.80 new file mode 100644 index 0000000..a30fe9f --- /dev/null +++ b/SCBP/SYSREL.80 @@ -0,0 +1,18 @@ +SYSTEM RELIABILITY + +(TO END PROGRAM ENTER 0) +OPERATING TIME IN HOURS? 3600 +NUMBER OF COMPONENTS? 3 +COMPONENT 1 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000001 +COMPONENT 2 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000003 +COMPONENT 3 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000005 + +SYSTEM RELIABILITY = .999665 + +OPERATING TIME IN HOURS? 0 diff --git a/SCBP/SYSREL.BAS b/SCBP/SYSREL.BAS new file mode 100644 index 0000000..7e6f0c7 --- /dev/null +++ b/SCBP/SYSREL.BAS @@ -0,0 +1,28 @@ +10 PRINT "SYSTEM RELIABILITY" +20 PRINT +30 PRINT "(TO END PROGRAM ENTER 0)" +40 PRINT "OPERATING TIME IN HOURS"; +50 INPUT T +59 REM - TEST FOR END OF PROGRAM +60 IF T=0 THEN 230 +70 PRINT "NUMBER OF COMPONENTS"; +80 INPUT N +90 Z=0 +99 REM - ENTER DATA FOR EACH COMPONENT +100 FOR I=1 TO N +110 PRINT "COMPONENT";I +120 PRINT " AVERAGE WEAROUT TIME"; +130 INPUT W +140 PRINT " AVERAGE FAILURE RATE"; +150 INPUT F +159 REM - INCLUDE EACH COMPONENT IN RELIABILITY +160 Z=Z+1/W+F +170 NEXT I +180 PRINT +189 REM - CALCULATE RELIABILITY, PRINT +190 Z=EXP(-Z*T) +200 PRINT "SYSTEM RELIABILITY =";Z +210 PRINT +219 REM - RESTART PROGRAM +220 GOTO 40 +230 END diff --git a/SCBP/SYSREL.INP b/SCBP/SYSREL.INP new file mode 100644 index 0000000..125de68 --- /dev/null +++ b/SCBP/SYSREL.INP @@ -0,0 +1,9 @@ +3600 +3 +987654321 +.00000001 +987654321 +.00000003 +987654321 +.00000005 +0 diff --git a/SCBP/SYSREL.OUT b/SCBP/SYSREL.OUT new file mode 100644 index 0000000..a140364 --- /dev/null +++ b/SCBP/SYSREL.OUT @@ -0,0 +1,18 @@ +SYSTEM RELIABILITY + +(TO END PROGRAM ENTER 0) +OPERATING TIME IN HOURS? 3600 +NUMBER OF COMPONENTS? 3 +COMPONENT 1 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000001 +COMPONENT 2 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000003 +COMPONENT 3 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000005 + +SYSTEM RELIABILITY = .999665 + +OPERATING TIME IN HOURS? 0 diff --git a/SCBP/SYSREL.dif b/SCBP/SYSREL.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/SYSREL.run b/SCBP/SYSREL.run new file mode 100644 index 0000000..a30fe9f --- /dev/null +++ b/SCBP/SYSREL.run @@ -0,0 +1,18 @@ +SYSTEM RELIABILITY + +(TO END PROGRAM ENTER 0) +OPERATING TIME IN HOURS? 3600 +NUMBER OF COMPONENTS? 3 +COMPONENT 1 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000001 +COMPONENT 2 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000003 +COMPONENT 3 + AVERAGE WEAROUT TIME? 987654321 + AVERAGE FAILURE RATE? .00000005 + +SYSTEM RELIABILITY = .999665 + +OPERATING TIME IN HOURS? 0 diff --git a/SCBP/TDIST.80 b/SCBP/TDIST.80 new file mode 100644 index 0000000..83e17d0 --- /dev/null +++ b/SCBP/TDIST.80 @@ -0,0 +1,12 @@ +STUDENT'S T-DISTRIBTION + +(TO END PROGRAM ENTER A T-VALUE OF 0) +T-VALUE? 7.78 +DEGREES OF FREEDOM? 3 +RIGHT TAIL VALUE = .0036 + +T-VALUE? 1.34 +DEGREES OF FREEDOM? 5 +RIGHT TAIL VALUE = .2372 + +T-VALUE? 0 diff --git a/SCBP/TDIST.BAS b/SCBP/TDIST.BAS new file mode 100644 index 0000000..38a9db9 --- /dev/null +++ b/SCBP/TDIST.BAS @@ -0,0 +1,37 @@ +10 PRINT "STUDENT'S T-DISTRIBTION" +20 PRINT +30 PRINT "(TO END PROGRAM ENTER A T-VALUE OF 0)" +40 PRINT "T-VALUE"; +50 INPUT T +60 IF T=0 THEN 340 +70 PRINT "DEGREES OF FREEDOM"; +80 INPUT D +90 X=1 +100 Y=1 +110 T=T[2 +119 REM - COMPUTE USING INVERSE FOR SMALL T-VALUES +120 IF T<1 THEN 170 +130 S=Y +140 R=D +150 Z=T +160 GOTO 200 +170 S=D +180 R=Y +190 Z=1/T +200 J=2/9/S +210 K=2/9/R +219 REM - COMPUTE USING APPROXIMATION FORMULAS +220 L=ABS((1-K)*Z[(1/3)-1+J)/SQR(K*Z[(2/3)+J) +230 IF R<4 THEN 270 +240 X=.5/(1+L*(.196854+L*(.115194+L*(.000344+L*.019527))))[4 +250 X=INT(X*10000+.5)/10000 +260 GOTO 290 +270 L=L*(1+.08*L[4/R[3) +280 GOTO 240 +289 REM - ADJUST IF INVERSE WAS COMPUTED +290 IF T>=1 THEN 310 +300 X=1-X +310 PRINT "RIGHT TAIL VALUE =";X +320 PRINT +330 GOTO 40 +340 END diff --git a/SCBP/TDIST.INP b/SCBP/TDIST.INP new file mode 100644 index 0000000..70e7604 --- /dev/null +++ b/SCBP/TDIST.INP @@ -0,0 +1,5 @@ +7.78 +3 +1.34 +5 +0 diff --git a/SCBP/TDIST.OUT b/SCBP/TDIST.OUT new file mode 100644 index 0000000..be635e3 --- /dev/null +++ b/SCBP/TDIST.OUT @@ -0,0 +1,12 @@ +STUDENT'S T-DISTRIBTION + +(TO END PROGRAM ENTER A T-VALUE OF 0) +T-VALUE? 7.78 +DEGREES OF FREEDOM? 3 +RIGHT TAIL VALUE = .0036 + +T-VALUE? 1.34 +DEGREES OF FREEDOM? 5 +RIGHT TAIL VALUE = .2372 + +T-VALUE? 0 diff --git a/SCBP/TDIST.dif b/SCBP/TDIST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/TDIST.run b/SCBP/TDIST.run new file mode 100644 index 0000000..83e17d0 --- /dev/null +++ b/SCBP/TDIST.run @@ -0,0 +1,12 @@ +STUDENT'S T-DISTRIBTION + +(TO END PROGRAM ENTER A T-VALUE OF 0) +T-VALUE? 7.78 +DEGREES OF FREEDOM? 3 +RIGHT TAIL VALUE = .0036 + +T-VALUE? 1.34 +DEGREES OF FREEDOM? 5 +RIGHT TAIL VALUE = .2372 + +T-VALUE? 0 diff --git a/SCBP/TDISTEST.80 b/SCBP/TDISTEST.80 new file mode 100644 index 0000000..ce07b90 --- /dev/null +++ b/SCBP/TDISTEST.80 @@ -0,0 +1,19 @@ +STUDENT'S T-DISTRIBUTION TEST + +TEST 1: MEAN=X +TEST 2: MEAN=MEAN,STANDARD DEVIATION=STANDARD DEVIATION +TEST 3: MEAN=MEAN,STANDARD DEVIATION<>STANDARD DEVIATION +WHICH HYPOTHESIS? 1 + +SAMPLE 1 : + NUMBER OF ELEMENTS? 5 + ELEMENT 1 ? 6 + ELEMENT 2 ? 7 + ELEMENT 3 ? 8 + ELEMENT 4 ? 9 + ELEMENT 5 ? 4 + +VALUE OF MEAN? 11 + +T-VALUE = 12.7872 +DEGREES OF FREEDOM = 4 diff --git a/SCBP/TDISTEST.BAS b/SCBP/TDISTEST.BAS new file mode 100644 index 0000000..2efb557 --- /dev/null +++ b/SCBP/TDISTEST.BAS @@ -0,0 +1,53 @@ +10 PRINT "STUDENT'S T-DISTRIBUTION TEST" +20 PRINT +29 REM - LIMIT SAMPLE SIZE TO P(N,2) WHERE N=MAX. SAMPLE SIZE +30 DIM P(100,2) +40 DIM V(2),R(2),M(2),D(2) +50 PRINT "TEST 1: MEAN=X" +60 PRINT "TEST 2: MEAN=MEAN,STANDARD DEVIATION=STANDARD DEVIATION" +70 PRINT "TEST 3: MEAN=MEAN,STANDARD DEVIATION<>STANDARD DEVIATION" +80 PRINT "WHICH HYPOTHESIS"; +90 INPUT T +100 PRINT +109 REM - INPUT 1 OR 2 SAMPLES DEPENDING ON HYPOTHESIS +110 FOR I=1 TO SGN(T-1)+1 +120 V(I)=0 +130 D(I)=0 +140 PRINT "SAMPLE";I;":" +150 PRINT " NUMBER OF ELEMENTS"; +160 INPUT R(I) +170 FOR J=1 TO R(I) +180 PRINT " ELEMENT";J; +190 INPUT P(J,I) +199 REM - ACCUMULATE SAMPLES +200 V(I)=V(I)+P(J,I) +210 D(I)=D(I)+P(J,I)[2 +220 NEXT J +229 REM - COMPUTE INTERMEDIATE VALUES +230 M(I)=V(I)/R(I) +240 V(I)=(D(I)-V(I)[2/R(I))/(R(I)-1) +250 NEXT I +260 PRINT +270 IF T=2 THEN 340 +280 IF T=3 THEN 380 +289 REM - INPUT GIVEN VALUE FOR FIRST HYPOTHESIS +290 PRINT "VALUE OF MEAN"; +300 INPUT M +309 REM - COMPUTE T AND DEGREES OF FREEDOM FOR FIRST HYPOTHESIS +310 A=(M(1)-M)*SQR(R(1)/V(1)) +320 B=R(1)-1 +330 GOTO 420 +339 REM - COMPUTE T AND DEGREES OF FREEDOM FOR SECOND HYPOTHESIS +340 A=(M(1)-M(2))/SQR(1/R(1)+1/R(2)) +350 B=R(1)+R(2)-2 +360 A=A/SQR(((R(1)-1)*V(1)+(R(2)-1)*V(2))/B) +370 GOTO 420 +379 REM - COMPUTE T AND DEGREES OF FREEDOM FOR THIRD HYPOTHESIS +380 A=(M(1)-M(2))/SQR(V(1)/R(1)+V(2)/R(2)) +390 B=(V(1)/R(1)+V(2)/R(2))[2 +400 B=B/((V(1)/R(1))[2/(R(1)+1)+(V(2)/R(2))[2/(R(2)+1))-2 +410 B=INT(B+.5) +420 PRINT +430 PRINT "T-VALUE =";ABS(A) +440 PRINT "DEGREES OF FREEDOM =";B +450 END diff --git a/SCBP/TDISTEST.INP b/SCBP/TDISTEST.INP new file mode 100644 index 0000000..1d0af7c --- /dev/null +++ b/SCBP/TDISTEST.INP @@ -0,0 +1,8 @@ +1 +5 +6 +7 +8 +9 +4 +11 diff --git a/SCBP/TDISTEST.OUT b/SCBP/TDISTEST.OUT new file mode 100644 index 0000000..d7a313a --- /dev/null +++ b/SCBP/TDISTEST.OUT @@ -0,0 +1,19 @@ +STUDENT'S T-DISTRIBUTION TEST + +TEST 1: MEAN=X +TEST 2: MEAN=MEAN,STANDARD DEVIATION=STANDARD DEVIATION +TEST 3: MEAN=MEAN,STANDARD DEVIATION<>STANDARD DEVIATION +WHICH HYPOTHESIS? 1 + +SAMPLE 1 : + NUMBER OF ELEMENTS? 5 + ELEMENT 1 ? 6 + ELEMENT 2 ? 7 + ELEMENT 3 ? 8 + ELEMENT 4 ? 9 + ELEMENT 5 ? 4 + +VALUE OF MEAN? 11 + +T-VALUE = 12.7872 +DEGREES OF FREEDOM = 4 diff --git a/SCBP/TDISTEST.dif b/SCBP/TDISTEST.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/TDISTEST.run b/SCBP/TDISTEST.run new file mode 100644 index 0000000..ce07b90 --- /dev/null +++ b/SCBP/TDISTEST.run @@ -0,0 +1,19 @@ +STUDENT'S T-DISTRIBUTION TEST + +TEST 1: MEAN=X +TEST 2: MEAN=MEAN,STANDARD DEVIATION=STANDARD DEVIATION +TEST 3: MEAN=MEAN,STANDARD DEVIATION<>STANDARD DEVIATION +WHICH HYPOTHESIS? 1 + +SAMPLE 1 : + NUMBER OF ELEMENTS? 5 + ELEMENT 1 ? 6 + ELEMENT 2 ? 7 + ELEMENT 3 ? 8 + ELEMENT 4 ? 9 + ELEMENT 5 ? 4 + +VALUE OF MEAN? 11 + +T-VALUE = 12.7872 +DEGREES OF FREEDOM = 4 diff --git a/SCBP/TRIGPOLY.80 b/SCBP/TRIGPOLY.80 new file mode 100644 index 0000000..a678aaf --- /dev/null +++ b/SCBP/TRIGPOLY.80 @@ -0,0 +1,16 @@ +TRIG POLYNOMIAL + +(ENTER ANGLE=99999 TO END PROGRAM) +ANGLE? 45 +F( 45 )= 3.09559 + +ANGLE? 89 +F( 89 )= 2.8208 + +ANGLE? 12 +F( 12 )=-1.18853 + +ANGLE? 0 +F( 0 )= 0 + +ANGLE? 99999 diff --git a/SCBP/TRIGPOLY.BAS b/SCBP/TRIGPOLY.BAS new file mode 100644 index 0000000..b1c6e65 --- /dev/null +++ b/SCBP/TRIGPOLY.BAS @@ -0,0 +1,25 @@ +10 PRINT "TRIG POLYNOMIAL" +20 PRINT +30 DATA 3,1,2,-2,1,5,-3 +40 PRINT "(ENTER ANGLE=99999 TO END PROGRAM)" +50 PRINT "ANGLE"; +60 INPUT R +69 REM - END PROGRAM? +70 IF R=99999 THEN 180 +79 REM - GET NUMBER OF PAIRS OF TERMS IN POLYNOMIAL +80 READ N +89 REM - LOOP TO GET VALUES OF COEFFICIENTS FROM DATA TABLE +90 FOR I=1 TO N +100 READ A,B +109 REM - CALCULATE VALUE OF FUNCTION AT ANGLE X +110 Z=Z+A*SIN(I*R)+B*COS(I*R) +120 NEXT I +129 REM - PRINT RESULTS +130 PRINT "F(";R;")=";Z +139 REM - PREPARE TO REREAD FUNCTION COEFFICIENTS +140 RESTORE +150 PRINT +160 Z=0 +169 REM - RESTART PROGRAM +170 GOTO 50 +180 END diff --git a/SCBP/TRIGPOLY.INP b/SCBP/TRIGPOLY.INP new file mode 100644 index 0000000..a797aeb --- /dev/null +++ b/SCBP/TRIGPOLY.INP @@ -0,0 +1,5 @@ +45 +89 +12 +0 +99999 diff --git a/SCBP/TRIGPOLY.OUT b/SCBP/TRIGPOLY.OUT new file mode 100644 index 0000000..d062bb6 --- /dev/null +++ b/SCBP/TRIGPOLY.OUT @@ -0,0 +1,16 @@ +TRIG POLYNOMIAL + +(ENTER ANGLE=99999 TO END PROGRAM) +ANGLE? 45 +F( 45 )= 3.09559 + +ANGLE? 89 +F( 89 )= 2.8208 + +ANGLE? 12 +F( 12 )=-1.18853 + +ANGLE? 0 +F( 0 )= 0 + +ANGLE? 99999 diff --git a/SCBP/TRIGPOLY.dif b/SCBP/TRIGPOLY.dif new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/TRIGPOLY.run b/SCBP/TRIGPOLY.run new file mode 100644 index 0000000..a678aaf --- /dev/null +++ b/SCBP/TRIGPOLY.run @@ -0,0 +1,16 @@ +TRIG POLYNOMIAL + +(ENTER ANGLE=99999 TO END PROGRAM) +ANGLE? 45 +F( 45 )= 3.09559 + +ANGLE? 89 +F( 89 )= 2.8208 + +ANGLE? 12 +F( 12 )=-1.18853 + +ANGLE? 0 +F( 0 )= 0 + +ANGLE? 99999 diff --git a/SCBP/broken/00readme.txt b/SCBP/broken/00readme.txt new file mode 100644 index 0000000..1f73a1a --- /dev/null +++ b/SCBP/broken/00readme.txt @@ -0,0 +1,6 @@ +These programs: +1) use commands that are not supported by bwBASIC at this time, and/or +2) are not easy to test using the current automated method, and/or +3) there are no plans to support graphics at this time. + +EOF diff --git a/SCBP/broken/CORDPLOT.BAS.txt b/SCBP/broken/CORDPLOT.BAS.txt new file mode 100644 index 0000000..df6d798 --- /dev/null +++ b/SCBP/broken/CORDPLOT.BAS.txt @@ -0,0 +1,150 @@ +10 PRINT "COORDINATE PLOT" +20 PRINT +28 REM - DIMENSION OF X() AND Y() SHOULD BE LIMITED TO (N+1); +29 REM - WHERE N=THE NUMBER OF POINTS BEING PLOTTED, MAX. LIMIT 99 +30 DIM X(100),Y(100) +39 REM - INPUT INFORMATION TO SET UP AXES +40 PRINT "X-AXIS: LEFT ENDPOINT, RIGHT ENDPOINT, INCREMENT"; +50 INPUT A1, A2, A3 +60 PRINT "Y-AXIS: LOWER ENDPOINT, UPPER ENDPOINT, INCERMENT"; +70 INPUT B1, B2, B3 +80 B2=(B2-B1)/B3 +88 REM - Y-AXIS TOO LONG FOR OUTPUT DEVICE? IF YES, CHANGE ENDPOINTS +89 REM - OR INCREASE INCREMENT +90 IF B2<=70 THEN 120 +100 PRINT "Y-RANGE TOO LARGE" +110 GOTO 60 +120 PRINT "NUMBER OF POINTS TO BE PLOTTED"; +130 INPUT N +139 REM - NO POINTS TO PLOT? END PROGRAM +140 IF N=0 THEN 1070 +149 REM - TOO MANY POINTS? IF YES, REENTER NUMBER OF POINTS +150 IF N<=99 THEN 180 +160 PRINT "TOO MANY POINTS" +170 GOTO 120 +179 REM - LOOP TO INPUT X,Y COORDINATES FOR EACH POINT +180 FOR I=1 TO N +190 IF I>1 THEN 220 +200 PRINT "COORDINATES OF POINT ";I; +210 GOTO 230 +220 PRINT " POINT ";I; +230 INPUT X(I), Y(I) +239 REM - ROUND OFF EACH X,Y TO NEAREST INCREMENT ON AXIS +240 X(I)=INT((X(I)-A1)/A3+.5) +250 Y(I)=INT((Y(I)-B1)/B3+.5) +260 NEXT I +269 REM - CALCULATE ADDITIONAL X AND Y COORDINATE +270 Y(N+1)=INT(B2+.5)+1 +280 X(N+1)=INT((A2-A1)/A3+.5)+1 +290 PRINT +299 REM - NOTE WHERE AXES CROSS +300 PRINT "INTERSECTION OF AXES AT (";A1;",";B1;")" +310 PRINT +319 REM - SORT COORDINATES; REORDER X(1) TO X(n) SMALLEST TO LARGEST +320 FOR J=1 TO N +330 FOR I=1 TO N-J +340 A=X(I) +350 B=Y(I) +360 C=X(I+1) +370 D=Y(I+1) +380 IF A=0 THEN 490 +480 NEXT P +489 REM - LOOP TO CALL UP EACH X-INCREMENT FOR LINES OF PRINT +490 FOR I=0 TO INT((A2-A1)/A3+.5) +500 T=T+P +509 REM - COUNT NUMBER OF POINTS TO BE PLOTTED ON EACH LINE IN P +510 P=0 +519 REM - ALL POINTS PLOTTED? +520 IF T>N THEN 540 +529 REM - X-VALUE ON X-LINE? IF YES, TEST FOR Y +530 IF X(T)=I THEN 590 +539 REM - FIRST LINE? IF YES, Y-AXIS MUST BE PLOTTED +540 IF I=0 THEN 570 +549 REM - PLOT X-AXIS +550 PRINT "*"; +560 GOTO 1040 +570 S=N+1 +580 GOTO 920 +590 FOR L=T TO N +599 REM - NEXT POINT PLOTTED ON SAME LINE? +600 IF X(L)>X(T) THEN 630 +609 REM - COUNT POINTS TO BE PLOTTED ON EACH LINE +610 P=P+1 +620 NEXT L +629 REM - PLOT ONE POINT +630 IF P=1 THEN 730 +638 REM - LOOP TO SORT Y-COORDINATES WITH EQUAL X-COORDINATES; +639 REM - REORDER SMALLEST TO LARGEST +640 FOR J=1 TO P +650 FOR L=1 TO P-J +660 D=Y(T+L-1) +670 B=Y(T+L) +680 IF D<=B THEN 710 +690 Y(T+L-1)=B +700 Y(T+L)=D +710 NEXT L +715 FOR J=1 TO P +720 NEXT J +730 FOR L=0 TO P-1 +740 Z=Y(T+L) +749 REM - TEST FOR OUT-OF-RANGE Y-COORDINATE +750 IF Z>=0 THEN 770 +760 NEXT L +769 REM - POINT TO BE PLOTTED ON X-AXIS? +770 IF I=0 THEN 910 +779 REM - POINT TO BE PLOTTED ON Y-AXIS? +780 IF Z=0 THEN 800 +789 REM - PLOT X-AXIS +790 PRINT "*"; +800 IF L=P-1 THEN 870 +810 FOR J=L TO P-1 +819 REM - TEST FOR OUT-OF-RANGE Y-COORDINATE +820 IF Z>B2 THEN 1040 +829 REM - BYPASS DUPLICATE COORDINATES +830 IF Y(T+J)=Z THEN 860 +839 REM - PLOT POINT +840 PRINT TAB(Z);"+"; +850 Z=Y(T+J) +860 NEXT J +869 REM - TEST FOR OUT-OF-RANGE Y-COORDINATE +870 IF Z<0 THEN 1040 +880 IF Z>B2 THEN 1040 +889 REM - PLOT POINT +890 PRINT TAB(Z);"+"; +900 GOTO 1040 +910 S=T+L +919 REM - LOOP TO ESTABLISH PRINT FOR FIRST LINE +920 FOR J=0 TO B2 +929 REM - POINT TO BE PLOTTED? +930 IF Y(S)<>J THEN 1010 +939 REM - PLOT POINT +940 PRINT "+"; +949 REM - BYPASS DUPLICATE COORDINATES +950 FOR K=S TO T+P-1 +960 IF Y(K)=Y(S) THEN 990 +970 S=K +980 GOTO 1020 +990 NEXT K +1000 GOTO 1020 +1009 REM - PLOT Y-AXIS +1010 PRINT "*"; +1020 NEXT J +1029 REM - LABEL Y-AXIS +1030 PRINT "y"; +1039 REM - ADVANCE OUTPUT DEVICE TO NEXT LINE +1040 PRINT +1050 NEXT I +1059 REM - LABEL X-AXIS +1060 PRINT "x" +1070 END diff --git a/SCBP/broken/ENTEPRIS.BAS.txt b/SCBP/broken/ENTEPRIS.BAS.txt new file mode 100644 index 0000000..092eab7 --- /dev/null +++ b/SCBP/broken/ENTEPRIS.BAS.txt @@ -0,0 +1,25 @@ +150 CLEAR300:DEFINTA-Z +160 READA$:IFA$="END"THENSTOP +170 IFA$="R"THENPRINTCHR$(13);:GOTO160 +180 READB$:IFB$="END"THENSTOP +190 FORN=1TOLEN(B$):C$=MID$(B$,1) +200 IFC$="Q"THENB$=MID$(B$,1,N-1)+CHR$(91)+MID$(B$,N+1) +210 IFC$="W"THENB$=MID$(B$,1,N-1)+CHR$(93)+MID$(B$,N+1) +220 IFC$="A"THENB$=MID$(B$,1,N-1)+CHR$(92)+MID$(B$,N+1) +230 IFC$="M"THENB$=MID$(B$,1,N-1)+CHR$(44)+MID$(B$,N+1) +240 IFC$="C"THENB$=MID$(B$,1,N-1)+CHR$(58)+MID$(B$,N+1) +250 IFC$="S"THENB$=MID$(B$,1,N-1)+CHR$(34)+MID$(B$,N+1) +260 NEXTN:IFLEFT$(A$,1)="S"THEN280 +270 PRINTTAB(1+VAL(MID$(A$,2)));B$;:GOTO290 +280 PRINTSTRING$(VAL(MID$(A$,2))," ");B$; +290 READA$:IFLEFT$(A$,1)="T"THEN190:ELSE170 +1000 DATA T22,###,R,T21,Q# ##,R,T22,## M#,R,T22,# M# +1010 DATA R,T22,#----M#,R,T22,# !#,R,T22,# M#,R,T22 +1020 DATA # QW M#,R,T22,# QW M#,R,T22,# QW M#,R,T22,#----M# +1030 DATA R,T22,# !#,R,T22,# M#,R,T21,*# M#,R,T21 +1040 DATA *# M#,R,T20,/*# M#,R,T20 +1050 DATA * # M#,R,T19,/* #----M#,R,T19 +1060 DATA * # A#A,R,T19,* # M#*,R,T19,* /# M#* +1070 DATA R,T18,/*/ # M#O*,R,T18,*/ # M#O*,R,T18 +1080 DATA * # M#O*,R,T18,* /# M#O *,R,T18 +1090 DATA * / # M#O *,R,T18,*/ # M#O *,R,T17 diff --git a/SCBP/broken/FEDTAX.BAS.txt b/SCBP/broken/FEDTAX.BAS.txt new file mode 100644 index 0000000..44fcd04 --- /dev/null +++ b/SCBP/broken/FEDTAX.BAS.txt @@ -0,0 +1,66 @@ +10 PRINT "FEDERAL WITHHOLDING TAXES" +20 PRINT +27 REM - THE FOLLOWING DATA CONTAINS THE TAX TABLES FROM IRS CIRCULAR +28 REM - E, PERCENTAGE METHOD, TABLE 7 (ANNUAL PAYROLL PERIOD) +29 REM - FOR SINGLE PERSONS +30 DATA 16,1300,20,3500,23,6000,21,9500,26,12500,30,14500,36,18000 +39 REM - FOR MARRIED PERSONS +40 DATA 17,2500,20,5000,17,9000,25,13750,28,18000,32,22500,36,26000 +49 REM - F1=FICA RATE AS DECIMAL +50 F1=.0585 +59 REM - F2=FICA CUTOFF AMOUNT +60 F2=16500 +69 REM - W1=AMOUNT OF WITHHOLDING ALLOWANCE (ANNUAL PAYROLL) +70 W1=750 +79 REM - N=NUMBER OF PAY PERIODS PER YEAR +80 N=12 +89 REM - LOAD THE TAX TABLE ARRAYS FROM DATA TABLES +90 DIM F1(28) +100 FOR I=1 TO 28 +110 READ F1(I) +120 NEXT I +130 PRINT +139 REM - STATEMENTS 140 TO 210 REQUEST PERTINENT EMPLOYEE DATA +140 PRINT "MARITAL STATUS (1=SINGLE, 2=MARRIED)"; +150 INPUT S +160 PRINT "WITHHOLDING TAX EXEMPTIONS"; +170 INPUT W +180 PRINT "TAXABLE PAY"; +190 INPUT P +199 REM - Y=TOTAL TAXABLE PAY THIS YEAR, EXCLUDING CURRENT PAYCHECK +200 PRINT "YTD TAXABLE PAY"; +210 INPUT Y +219 REM - ANNUALIZE CURRENT TAXABLE PAY, ADJUST FOR EXEMPTIONS +220 G=P*N-W1*W +230 T1=0 +239 REM - CALCULATE INCOME TAX +240 FOR I=2 TO 7 +250 X=2*I+14*(S-1)-1 +260 IF G<=F1(X-1) THEN 330 +270 IF G>F1(X+1) THEN 300 +280 T1=T1+(G-F1(X-1))*F1(X-2)/100 +290 GOTO 330 +300 T1=T1+(F1(X+1)-F1(X-1))*F1(X-2)/100 +310 NEXT I +315 T1=T1+(G-F1(X+1))*F1(X)/100 +320 T1=T1+(G-F1(X+1))*F1(X)/100 +329 REM - ROUND OFF TO NEAREST CENT +330 T1=INT((T1/N)*100+.5)/100 +340 T2=0 +349 REM - CALCULATE FICA +350 IF Y>F2 THEN 400 +360 IF Y+P>F2 THEN 390 +370 T2=INT((P*F1)*100+.5)/100 +380 GOTO 400 +389 REM - ROUND OFF TO NEAREST CENT +390 T2=INT(((F2-Y)*F1)*100+.5)/100 +399 REM - PRINT RESULTS +400 PRINT "TAXABLE = $";P +410 PRINT "INCOME TAX = $";T1 +420 PRINT "FICA = $";T2 +430 PRINT +439 REM - RESTART OR END PROGRAM? +440 PRINT "MORE DATA (1=YES, 0=NO)"; +450 INPUT S +460 IF S=1 THEN 130 +470 END diff --git a/SCBP/broken/MASTRDIR.BAS.txt b/SCBP/broken/MASTRDIR.BAS.txt new file mode 100644 index 0000000..cba2ce1 --- /dev/null +++ b/SCBP/broken/MASTRDIR.BAS.txt @@ -0,0 +1,161 @@ +0 '*** A MASTER DIRECTORY PROGRAM *** +1 '*** FOR THE TRS-80 MODEL III *** +2 '*** WILBUR A. MUEHLIG, M.D. *** +3 '*** 726 N. 91 PLAZA, # 305, *** +4 '*** OMAHA, NEBR. 68114 *** +50 CLEAR10000:DEFINTX,B:DEFSTRA:DIMA(1000):X=0 +60 CLS:PRINT@470,"MASTER DISK INDEX":FORZ=1TO700:NEXT +70 CLS:PRINT:PRINT:PRINT:PRINT:PRINT +80 INPUT"Do you want instructions (Y/N)";I$ +90 IF I$="Y" GOTO 1500 +100 CLS:PRINT:REM * USE DOWN ARROW TO ALIGN ITEMS WHEN TYPING + * IN THE NEXT TWO LINES. +110 PRINT" MENU + + 1-START, ADD TO, OR SEE THE FILE + 2-LOAD FILE FROM DISK + 3-SAVE FILE TO DISK + 4-CORRECT AN ENTRY" +120 PRINT" 5-DELETE AN ENTRY + 6-MAKE A HARD COPY + 7-TOGGLE SORT ALPHA <--> NUMERICAL + 8-SEARCH + 9-LEAVE THE PROGRAM" +130 PRINT:INPUT" CHOOSE A NUMBER";Z +140 ON Z GOTO 500,600,700,800,900,1000,1200,1300,1400 +500 X=X+1:CLS:PRINT:PRINT"WHEN FINISHED WITH INPUTS OR TO SEE THE FILE, PRESS ENTER AN EXTRA TIME. TO STOP THE FILE PRINTING, PRESS 'S'.":PRINT:PRINT"EACH ENTRY MUST BE 16 SPACES LONG.":PRINT +510 PRINTX;:INPUT"PROGRAM FILE NAME AND DISK #";A(X) +512 IF A(X)=""GOTO 550 +515 IF LEN(A(X))<16PRINT" TOO SHORT! TRY AGAIN.":GOTO 510 +516 IF LEN(A(X))>16PRINT" TOO LONG! TRY AGAIN.":GOTO 510 +530 X=X+1 +540 GOTO 510 +545 REM * REMOVE THE X THAT IS NULL AND CALL THE SORT PROGRAM +550 X=X-1:CMD"O",X,A(1) +555 CLS +560 FOR B = 1 TO X +570 PRINTUSING"#### % %";B;A(B) +575 IF INKEY$="S" GOTO 100:REM * NOT ESSENTIAL! +580 IF B/15 = INT(B/15) INPUT"PRESS ENTER TO CONTINUE, S FOR MENU, R FOR PREVIOUS PAGE";Z9$:CLS +585 IF Z9$="S"CLS:Z9$="":GOTO100 + REM * IF YOU DON'T 'NULL' Z9$, NEXT TIME THROUGH * + * PRESSING ENTER WILL SEND YOU TO THE MENU * +586 IF Z9$="R" THEN Z9$="":B=B-30:REM * A NICE TOUCH +590 NEXT +595 INPUT"PRESS ENTER TO CONTINUE";Z9:GOTO100 +600 ON ERROR GOTO 1450 +605 PRINT:PRINT"LOADING FILE FROM DISK......." +610 OPEN"I",1,"IND/FIL" +620 INPUT#1,X:REM * X IS THE TOTAL NUMBER OF ITEMS +630 FOR B = 1 TO X +640 INPUT#1,A(B) +650 NEXT:CLOSE +660 GOTO 100 +700 IF A(1)=""THEN PRINT"FILE EMPTY":INPUT"PRESS ENTER";Z:GOTO 100 +710 PRINT:PRINT"SAVING FILE TO DISK....." +720 OPEN"O",1,"IND/FIL" +730 PRINT#1,X +740 FOR B = 1 TO X +750 PRINT#1,A(B) +760 NEXT:CLOSE +780 GOTO 100 +800 CLS:PRINT:PRINT:PRINT:PRINT:PRINT +820 PRINT:INPUT"WHICH NUMBER DO YOU WISH TO CORRECT";B +840 PRINT:PRINTB;A(B) +860 PRINT:INPUT"TYPE CORRECT ENTRY. IF OK AS IS, PRESS ENTER";A(B) +870 GOTO100 +900 CLS:PRINT:PRINT:PRINT:PRINT:PRINT:INPUT"WHICH NUMBER DO YOU WANT TO DELETE";B +912 PRINT:PRINTB;A(B) +913 PRINT:INPUT"IS THIS THE NUMBER YOU WANT TO DELETE (Y/N)";Z9$ +915 IF Z9$="Y" GOTO 920 +917 IF Z9$="N" GOTO 100 +920 A(B)=" " +930 FOR B = B+1 TO X:A(B-1)=A(B):NEXT +935 A(X)="":X=X-1 +950 PRINT:PRINT"ENTRY DELETED":FOR Z=1 TO 300:NEXT:GOTO100 +1000 CLS:PRINT:PRINT:PRINT:PRINT:INPUT"IS THE PRINTER ON? WHAT MARGIN DO YOU WANT (TRY 6)";T +1010 LPRINTTAB(30+T)"MASTER INDEX" +1015 LPRINTTAB(30+T)"============":LPRINT" " +1020 FOR B=1 TO X +1030 LPRINTTAB(T)USING"#### % %";B;A(B) +1040 IF B/54=INT(B/54)PRINT:PRINT"REPOSITION PAPER AND CHANGE MARGIN TO NEXT COLUMN.":INPUT" (TRY ADDING 25)";T +1050 NEXT +1060 GOTO100 +1200 CLS:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT"CHOOSE: + 1-ALPHABETICAL SORT TO DISK # SORT + 2-DISK # SORT TO ALPHABETICAL" +1205 PRINT:INPUT" NUMBER";N +1207 ON N GOTO 1209,1250 +1209 PRINT:PRINT"PUTTING DISK # BEFORE FILE NAME......." +1210 FOR B=1 TO X +1220 A(B)=RIGHT$(A(B),3)+" "+A(B): + REM * A(B) IS STILL INTACT BUT PRINT USING * + * WILL CUT OFF THE DISK NUMBERS ON THE * + * RIGHT END. +1230 NEXT +1240 GOTO100 +1250 PRINT:PRINT"PUTTING FILE NAME BEFORE DISK #......." +1260 FOR B=1 TO X +1270 A(B)=RIGHT$(A(B),16):REM * GIVING US THE ORIGINAL * + * A(B) BACK +1280 NEXT +1290 GOTO 100 +1300 CLS:PRINT:PRINT:PRINT:PRINT:PRINT +1310 INPUT"WHAT IS THE FILE NAME OR PART OF FILE NAME + + YOU WISH TO SEARCH FOR";C$:REM * USE DOWN ARROW * +1320 FOR B = 1 TO X +1330 IF INSTR(A(B),C$)>0 PRINT: PRINTB;A(B):PRINT:INPUT"PRESS ENTER TO CONTINUE, 'M' FOR MENU";J$ +1332 IF J$="M" THEN J$="":GOTO100 +1340 NEXT +1345 PRINT:PRINTC$;:INPUT" NOT FOUND. PRESS ENTER";Z:GOTO 100 +1350 RETURN +1400 INPUT"DID YOU SAVE FILE TO DISK (Y/N)";Z9$ +1410 IF Z9$="Y"GOTO 1430 +1420 IF Z9$="N"GOTO 100 +1430 PRINT"OK!":CLOSE +1440 END +1450 PRINT:INPUT"ERROR! NO FILE ON DISK OR OTHER. PRESS ENTER FOR MENU";L:GOTO 100 +1500 CLS:PRINT:PRINT@26,"INSTRUCTIONS":PRINT +1510 PRINT" Make entries with MENU item #1. They should be limited to" +1520 PRINT"16 spaces, 12 for the file name, a blank, and 3 spaces for the" +1530 PRINT"disk number, e.g., FILENAME/EXT ###. Spaces not used for" +1535 PRINT"characters should be filled with blanks. Place the number" +1540 PRINT"as far to the right as possible in the 16 spaces, i.e., a" +1550 PRINT"single number would go in the 16th space. PRKNT USING" +1560 PRINT"statements are used in lines 570 and 1030 to give even print-" +1570 PRINT"outs on video and paper. The length is limited in order to get" +1580 PRINT"three columns on 8 1/2 x 11 paper. If you need more room for" +1590 PRINT"your file names, the PRINT USING statements can be changed." +1600 PRINT:INPUT"PRESS ENTER";Z:CLS +1610 PRINT" When additional entries are to be made, always load previous" +1620 PRINT"entries from disk first.":PRINT +1640 PRINT" The entries are sorted alphabetically as soon as they are" +1650 PRINT"complete. They may be reviewed by using MENU item 1. The review" +1660 PRINT"may be stopped while the screen is being printed by pressing" +1670 PRINT"'S'. The previous page may be seen by pressing 'R'. It is" +1675 PRINT"a good idea to save the file to two different disks as soon" +1680 PRINT"as your entries are complete." +1685 PRINT +1690 PRINT" The numbers to the left of the file names are index numbers" +1700 PRINT"to be used in making corrections or deletions. If you are" +1710 PRINT"making several deletions, do them in descending order, since" +1720 PRINT"the numbers above each deletion will be changed." +1730 PRINT:INPUT"PRESS ENTER";Z:CLS:PRINT:PRINT +1740 PRINT" The hard copy suggestions given in the program are for lines" +1750 PRINT"of 10 CPI and will give three columns of 54 entries each" +1760 PRINT"on 8 1/2 x 11 inch paper.":PRINT +1770 PRINT" TOGGLE SORT ALPHA <--> NUMERICAL gives two choices. The first" +1780 PRINT"puts the disk number before the file name and the second" +1790 PRINT"reverses this. The second choice is not essential but is fun" +1795 PRINT"to play with and makes a nice demonstration of your computer." +1800 PRINT"The sort by disk numbers will make a hard copy that can be cut" +1805 PRINT"up for disk jacket labels.":PRINT +1807 PRINT:INPUT"PRESS ENTER";Z:CLS:PRINT:PRINT:PRINT +1810 PRINT" The SEARCH choice will find any group of two or more" +1820 PRINT"characters occurring in the list of entries. It prints out" +1830 PRINT"the entry, then when ENTER is pressed, searches through the" +1840 PRINT"rest of the entries to find additonal occurrences." +1850 PRINT +1860 PRINT" If you press BREAK and leave the program, type GOTO 100 to" +1870 PRINT"return to the MEN diff --git a/SCBP/broken/OTER.BAS.txt b/SCBP/broken/OTER.BAS.txt new file mode 100644 index 0000000..bc5bbe9 --- /dev/null +++ b/SCBP/broken/OTER.BAS.txt @@ -0,0 +1,107 @@ +0 REM COPYRIGHT (C) 1983 CLOAD PUBLICATIONS +5 CLEAR1000 +15 DEFINTA-Z:DIMT,SH,SG,SK,MI,X,PI,AA,TI,SC,H,Y,VV,YU,M$,D$,E$,ZZ,Z!,K!,HY,ER,EE,I!,HI,U$,J!,TT,ST(10),PO(10),D(10),PP(10),N$(10),A$(10) +20 HI%=0 +25 CLS +30 D$=" CLEARFNAUTOLET " +35 E$=" LETNEWTOLIST " +40 M$="TAB(CLS"+STRING$(2,24)+CHR$(26)+"DEFSNGREM" +45 GOSUB405 +50 N$(1)="LETUSING "+STRING$(3,24)+CHR$(26)+"LETIFLET" +55 N$(2)="LETSETTAB("+STRING$(3,24)+CHR$(26)+"LETIFLET" +60 N$(3)="CONTCONTUSING"+STRING$(3,24)+CHR$(26)+"LETLETIF" +65 N$(4)="USINGDEFUSING"+STRING$(3,24)+CHR$(26)+STRING$(2,128)+"IF" +70 N$(5)="USING"+STRING$(2,179)+STRING$(3,24)+CHR$(26)+STRING$(2,140)+"IF" +75 N$(6)="USING"+STRING$(2,179)+STRING$(3,24)+CHR$(26)+"IFLETIF" +80 N$(7)=STRING$(2,131)+"USING"+STRING$(3,24)+CHR$(26)+STRING$(2,128)+"IF" +85 N$(8)=" +90 N$(9)="USINGCONTUSING"+STRING$(3,24)+CHR$(26)+STRING$(2,140)+"IF" +95 N$(0)="USINGSETUSING"+STRING$(3,24)+CHR$(26)+"IFLETIF" +100 CLS +105 PRINT@112,"To Move:";:PRINT@175," UP- Up arrow";:PRINT@239,"DOWN- Down arrow";:PRINT@367," to skip";:PRINT@431," stone"; +110 FORY=1TO28:SET(24,Y):SET(25,Y):SET(90,Y):SET(91,Y):NEXT +115 FORX=0TO90:SET(X,28):IFX>23THENSET(X,1):NEXT:ELSENEXT +120 FORX=2TO7:SET(X,30):SET(X,32):SET(X,34):SET(X+8,30):SET(X+8,34):SET(X+16,30):SET(X+16,34):SET(X+24,30):SET(X+24,32):SET(X+32,30):SET(X+32,32):SET(X+32,34):SET(X,36):SET(X+28,36):SET(X+28,38):SET(X+28,40):NEXT +125 FORY=30TO34:SET(10,Y):SET(11,Y):SET(18,Y):SET(19,Y):SET(22,Y):SET(23,Y):SET(26,Y):SET(27,Y):SET(30,Y):SET(31,Y):SET(34,Y):SET(35,Y):SET(4,Y+6):SET(5,Y+6):SET(12,Y+6):SET(13,Y+6):SET(18,Y+6):SET(19,Y+6):SET(26,Y+6):SET(27,Y+6):SET(30,Y+6):SET(31,Y+6):NEXT +130 SET(2,31):SET(3,31):SET(6,33):SET(7,33):SET(20,37):SET(21,37):SET(22,38):SET(23,38):SET(24,37):SET(25,37) +135 SET(42,31):SET(43,31):SET(42,33):SET(43,33):SET(38,37):SET(39,37):SET(38,39):SET(39,39) +140 PRINT@640+43,"High Score"; +145 PRINT@640+107," :";HI%; +150 FORT%=1TO8:ST%(T%)=0:PRINT@(64*T%)+13,STRING$(31,128);:NEXT +155 SC%=0 +160 SH%=0 +165 GOSUB330 +170 PRINT@896+15,"ENTER DIFFICULTY LEVEL (H OR E)"; +175 U$=INKEY$:IFU$=""THEN175 +180 IFU$="H"THENTI=30:ELSEIFU$="E"THENTI=60:ELSE175 +185 PRINT@896+15," "; +190 GOSUB340 +195 PRINT@8+(H%*64),M$; +200 AA%=PEEK(14400):IFAA%=0ANDSH%=0THEN255 +205 IFAA%=8THENH%=H%-1:IFH%<0THENH%=0:ELSEPRINT@8+(H%*64)+128," "; +210 IFAA%=16THENH%=H%+1:IFH%>7THENH%=7:ELSEPRINT@8+(H%*64)-64," "; +215 PRINT@8+(H%*64),M$; +220 REM +225 IFAA%=128ANDSH%=0THENSH%=1:SG%=13:SK%=H%+1:ELSEIFSH%=0THEN255 +230 IFSH%=1THENPRINT@SG%+SK%*64,"SET";CHR$(24);" "; +235 IFSH%=1THENSG%=SG%+RND(5)+1:IFSG%>35THENSH%=0:PRINT@SG%+SK%*64," "; +240 IFSH%=1THENPRINT@SG%+SK%*64,"SET"; +245 IFSH%=1ANDRND(30)=1THENSH%=0:PRINT@SG%+SK%*64," "; +255 FORT%=1TO8 +260 IFST%(T%)=0ANDRND(25)=1THENST%(T%)=1:PO%(T%)=RND(23)+15:PP%(T%)=T%:D%(T%)=RND(2) +265 IFST%(T%)=0THEN305 +270 IFST%(T%)=1ANDD%(T%)=1THENPRINT@PO%(T%)+(PP%(T%)*64),E$; +275 IFST%(T%)=1ANDD%(T%)=2THENPRINT@PO%(T%)+(PP%(T%)*64),D$; +280 IFRND(0)<.1ANDD%(T%)=1THEND%(T%)=2:ELSEIFD%(T%)=2ANDRND(0)>.9THEND%(T%)=1 +290 IFST%(T%)=1ANDD%(T%)=1THENPO%(T%)=PO%(T%)-1:IFPO%(T%)<15THENST%(T%)=0:SC%=SC%-1:PRINT@PO%(T%)+PP%(T%)*64," "; +295 IFST%(T%)=1ANDD%(T%)=2THENPO%(T%)=PO%(T%)+1:IFPO%(T%)>38THENST%(T%)=0:SC%=SC%-1:PRINT@PO%(T%)+PP%(T%)*64," "; +300 IFST%(T%)=1ANDSH%=1ANDPP%(T%)=SK%ANDPO%(T%)=SG%THENGOSUB350:ELSEIFST%(T%)=1ANDSH%=1ANDPP%(T%)=SK%ANDPO%(T%)=SG%-1THENGOSUB350:ELSEIFST%(T%)=1ANDSH%=1ANDPP%(T%)=SK%ANDPO%(T%)=SG%-2THENGOSUB350 +305 NEXT +310 IFSC%<0THENSC%=0 +315 GOSUB330 +320 TI=TI-.3:GOSUB340:IFTI<=.50THEN355 +325 GOTO195 +330 MI%=INT(SC%/100):PRINT@640+24,N$(MI%);:PI%=INT((SC%-(MI%*100))/10):PRINT@640+28,N$(PI%);:YU%=INT(SC%-(MI%*100)-(PI%*10)):PRINT@640+32,N$(YU%); +335 RETURN +340 MI=INT(TI/10):PRINT@768+21,N$(MI);:MI=MI*10:PI=TI-MI:PRINT@768+25,N$(PI); +345 RETURN +350 ST%(T%)=0:SH%=0:PRINT@PO%(T%)+PP%(T%)*64-1," ";:SC%=SC%+10:GOSUB330:RETURN +355 PRINT@960-64+27,"GAME OVER";:FORHY=2000TO3000STEP50:NEXT:FORHY=1TO1000:NEXT::IFSC%>HI%THENHI%=SC%:PRINT@960+27,"New High Score";:FORHY=1TO10:NEXT:ELSEPRINT@960+27,"Close but no High Score"; +360 FORHY=1TO2000:NEXT:R$=INKEY$:IFR$=""THEN360:ELSEPRINT@960+27," ";:PRINT@960-64+27," "; +365 GOTO140 +370 GOTO370 +380 I=VARPTR(M$):I=ABS(I):J=PEEK(I+1)+256*PEEK(I+2) +385 FORK=JTOJ+26:READZ:POKEK,Z:NEXT +390 IFPEEK(16396)=201POKE16526,PEEK(I+1):POKE16527,PEEK(I+2):ELSECMD"T":DEFUSR0=PEEK(I+1)+256*PEEK(I+2):POKE14308,0 +395 RETURN +400 DATA 205,127,10,77,68,62,1,105,211,255,45,32,253,60,105,211,255,45,32,253,13,16,238,175,211,255,201 +405 CLS +410 A$(1)="USING"+STRING$(5,131)+"USING"+STRING$(5,128)+"USING"+STRING$(8,128)+"USING"+STRING$(5,128)+STRING$(6,176)+STRING$(2,128)+STRING$(6,176) +415 A$(2)="USING"+STRING$(5,128)+"USING"+STRING$(2,128)+STRING$(3,131)+"USING"+STRING$(3,131)+STRING$(2,128)+STRING$(3,131)+"USING"+STRING$(3,131)+STRING$(2,128)+"USING"+STRING$(4,176)+"USING"+STRING$(2,128)+"USING" +420 A$(3)="USING"+STRING$(5,176)+"USING"+STRING$(5,128)+"USING"+STRING$(8,128)+"USING"+STRING$(5,128)+"USING"+STRING$(5,176)+STRING$(2,128)+"USING" +425 A$(4)=" for instructions - to start game - for instructions -" +430 PRINT@1,STRING$(62,95); +435 PRINT@577,STRING$(62,95); +440 PRINT@512+18,STRING$(27,176); +445 PRINT@576+18,"GOTO";:PRINT@576+18+26,"RUN"; +450 FORER=1TO3:PRINT@74+(64*ER),A$(ER);:NEXT +455 PRINT@384+86,"by Tim Pickenheim";:PRINT@320+26,"with Sound"; +460 FOREE=1TOLEN(A$(4))-27 +470 PRINT@576+19,MID$(A$(4),EE,25); +475 AA=PEEK(14400) +480 IFAA=2THENRETURN +485 IFAA=1THEN500 +490 FORER=1TO20:NEXT +495 NEXT:GOTO460 +500 PRINT@576+19,MID$(A$(4),26,25); +505 PRINT@640," The Object: To get rid of pesky otters in the pond in the"; +510 PRINT@704," least amount of time."; +515 PRINT@768," Move your man into position with the up and down arrow keys."; +520 PRINT@832," Once you get your sight on an Otter - Hold the Space Bar down"; +525 PRINT@896,"to skip a stone across the water. Stones can drop at any time!"; +530 PRINT@960," Remember - this is a race against time. High Score is saved."; +535 PRINT@576+19,STRING$(25,128); +540 FORT=1TO50:NEXT +545 PRINT@576+19,MID$(A$(4),26,25); +555 AA=PEEK(14400):IFAA=2THENCLS:RETURN +560 GOTO535 diff --git a/SCBP/broken/PLOTPOL.BAS.txt b/SCBP/broken/PLOTPOL.BAS.txt new file mode 100644 index 0000000..40c42e2 --- /dev/null +++ b/SCBP/broken/PLOTPOL.BAS.txt @@ -0,0 +1,123 @@ +10 PRINT "PLOT OF POLAR EQUATION" +20 PRINT +28 REM - COORDINATE ARRAYS SET FOR 90 POINTS; +30 DIM X(91),Y(90) +39 REM - NUMBER OF POINTS TO BE CALCULATED +40 N=90 +49 REM - ABSOLUTE VALUE OF ALL ENDPOINTS ARE EQUAL +50 PRINT "ABSOLUTE VALUE OF ENDPOINT"; +60 INPUT Z +70 PRINT +79 REM - CALCULATE INCREMENTS OF AXES ACCORDING TO CHARACTERS PER AXIS +84 PRINT "INCREMENT OF X-AXIS =";Z/30 +90 PRINT "INCREMENT OF Y-AXIS =";Z/18 +100 PRINT +110 FOR I=1 TO N +119 REM - CONVERT DEGREES TO RADIANS +120 D=.06981317*I +130 REM - ENTER FUNCTION HERE (F="FUNCTION") +135 F=2*(1-COS(D)) +138 REM - CALCULATE EACH CARTESIAN COORDINATE, ROUND OFF TO NEAREST +139 REM - INCREMENT ON AXIS +140 X(I)=INT(((F*COS(D)/Z+1)*30)+.5) +150 Y(I)=INT(((-F*SIN(D)/Z+1)*18)+.5) +160 NEXT I +169 REM - SORT COORDINATES; REORDER Y(n) SMALLEST OT LARGEST +170 FOR J=1 TO N +180 FOR I=1 TO N-J +190 A=X(I) +200 B=Y(I) +210 IF B<=Y(I+1) THEN 260 +220 X(I)=X(I+1) +230 Y(I)=Y(I+1) +240 X(I+1)=A +250 Y(I+1)=B +260 NEXT I +270 NEXT J +279 REM - NEXT POINT TO BE PLOTTED STORED IN T +280 T=1 +289 REM - SKIP POINTS OUT OF Y-POSITIVE RANGE +290 FOR P=0 TO N-1 +300 IF Y(P+1)>=0 THEN 320 +310 NEXT P +319 REM - LOOP TO CALL UP EACH Y-INCREMENT FOR LINES OF PRINT +320 FOR I=0 TO 36 +330 T=T+P +339 REM - NUMBER OF POINTS TO BE PLOTTED ON EACH LINE STORED INP +340 P=0 +349 REM - ALL POINTS PLOTTED? +350 IF T>N THEN 370 +359 REM - Y-VALUE ON Y-LINE? +360 IF Y(T)=I THEN 420 +369 REM - PRINT X-AXIS? +370 IF I=18 THEN 400 +379 REM - PRINT Y-AXIS +380 PRINT TAB(30);"*"; +390 GOTO 860 +400 S=N+1 +410 GOTO 740 +420 FOR L=T TO N +429 REM - NEXT POINT TO BE PLOTTED ON SAME LINE? +430 IF Y(L)>Y(T) THEN 460 +440 P=P+1 +450 NEXT L +460 IF P=1 THEN 560 +468 REM - LOOP TO SORT X-COORDINATES WITH EQUAL Y-COORDINATES; +469 REM - REORDER SMALLEST TO LARGEST +470 FOR J=1 TO P +480 FOR L=1 TO P-J +490 C=X(T+L-1) +500 A=X(T+L) +510 IF C<=A THEN 540 +520 X(T+L-1)=A +530 X(T+L)=C +540 NEXT L +545 FOR J=1 TO P +550 NEXT J +559 REM - PRINT X-AXIS? +560 IF I=18 THEN 730 +570 L=-1 +580 S=0 +590 FOR K=0 TO P-1 +599 REM - MORE THAN ONE POINT TO BE POTTED AT SAME POINT ON GRAPH? +600 IF X(T+K)=L THEN 690 +610 L=X(T+K) +619 REM - PLOT POINT ON Y-AXIS? +620 IF L=30 THEN 660 +629 REM - PLOT POINT TO THE LEFT OF Y-AXIS? +630 IF L<30 THEN 670 +640 IF S=1 THEN 670 +649 REM - PRINT Y-AXIS +650 PRINT TAB(30);"+"; +660 S=1 +669 REM - POINT OUTSIDE OF POSITIVE X-RANGE? +670 IF L>60 THEN 860 +679 REM - PLOT POINT +680 PRINT TAB(L);"+"; +690 NEXT K +700 IF S=1 THEN 860 +709 REM - PRINT Y-AXIS +710 PRINT TAB(30);"*"; +720 GOTO 860 +730 S=T +739 REM - LOOP TO PRINT LINE OF X-AXIS +740 FOR J=0 TO 60 +750 IF X(S)<>J THEN 830 +759 REM - PLOT POINT ON X-AXIS +760 PRINT "+"; +770 FOR K=S TO T+P-1 +780 IF X(K)=X(S) THEN 810 +790 S=K +800 GOTO 840 +810 NEXT K +820 GOTO 840 +829 REM - PRINT X-AXIS +830 PRINT "*"; +840 NEXT J +849 REM - LABEL X-AXIS +850 PRINT "X"; +860 PRINT +870 NEXT I +879 REM - LABEL Y-AXIS +880 PRINT TAB(30);"y" +890 END diff --git a/SCBP/broken/SHELSORT.BAS.txt b/SCBP/broken/SHELSORT.BAS.txt new file mode 100644 index 0000000..c931a92 --- /dev/null +++ b/SCBP/broken/SHELSORT.BAS.txt @@ -0,0 +1,20 @@ +10 REM *** SHELL METZNER SORT *** +20 REM BY ALLAN D. EMERT +30 REM RT #4, BOX 1455, ODESSA, TX 79763 +40 CLEAR 10000:DEFINT I-M:CLS +50 PRINT " *** SHELL METZNER SORT ***" +60 PRINT:PRINT "BY ALLAN D. EMERT" +70 PRINT "RT #4, BOX 1455, ODESSA, TX 79763":PRINT +80 PRINT "TO END PROGRAM ENTER ///":DIM Z$(500) +90 N=N+1:PRINT "ITEM ";N;:INPUT Z$(N) +100 IF Z$(N)="///" GOTO 120 +110 GOTO 90 +120 N=N-1:M=N +130 M=M/2:IF M=0 GOTO 200 +140 FOR J=1 TO N-M:I=J +150 L=I+M:IF Z$(I). WHEN FIN- ISHED...TYPE 'END' FOLLOWED BY PRESSING ." +390 PRINT:FOR I=1TO20 +400 PRINT"ITEM #";I;" "; +410 INPUT MS$(I) +420 IF MS$(I)="END"THEN 460 +430 W=W+1 +431 REM ** PREVENT INSTRUCTIONS FROM SCROLLING OFF SCREEN +440 IF I=11THENPRINT@4*64,CHR$(31); +450 NEXT I +460 CLS:PRINT"READY PRINTER" +470 PRINT"HIT ENTER WHEN READY" +480 A$=INKEY$: IF A$=""THEN 480 +481 REM ** PRINT OUT +490 U=PEEK(14312) +500 IF U=63 GOTO 530 :ELSE GOTO 510 +510 PRINT@7*64,"******* PRINTER NOT READY....CORRECT & PROCEED *******" +520 FOR GG=1 TO 800:NEXT GG:CLS:GOTO460 +530 CLS +540 LPRINT" ":LPRINT" ":LPRINT" ******************* SHOPPING LIST *******************":LPRINT" ":LPRINT" ":LPRINT" " +550 NC=-20 +560 FOR A=0 TO O-1 +570 GOSUB1560 +580 LPRINTTAB(NC) A$(A); +590 NEXT A +600 FOR A=0 TO P-1 +610 GOSUB1560 +620 LPRINTTAB(NC) B$(A); +630 NEXT A +640 FOR A=0 TO Q-1 +650 GOSUB1560 +660 LPRINTTAB(NC) C$(A); +670 NEXT A +680 FOR A=0 TO R-1 +690 GOSUB1560 +700 LPRINTTAB(NC) D$(A); +710 NEXT A +720 FOR A=0 TO S-1 +730 GOSUB1560 +740 LPRINTTAB(NC) E$(A); +750 NEXT A +760 FOR A=1 TO W +770 GOSUB1560 +780 LPRINTTAB(NC) MS$(A); +790 NEXT A +800 LPRINT" ":LPRINT" ":LPRINT" ******************** END OF LIST ********************" +810 LPRINT" ":LPRINT" ":LPRINT" ":LPRINT" " +820 END +830 REM ** BLINKING CURSOR ROUTINE +840 C$=CHR$(143) +850 J$=" " +855 PRINT@15*64+5,":::::::::::::PRESS '@' KEY FOR NEXT PAGE:::::::::::::"; +860 FOR I=1 TO 45 +870 PRINT@LT(I)-2,C$; +880 FOR DD=1TO5:NEXTDD +890 JK$=INKEY$:PRINT@LT(I)-2,J$;:FORDD=1TO5:NEXTDD:IFJK$="@"THEN960:ELSEIFJK$="Y"THENPRINT@LT(I)-2,"*";:K=K+1:GOTO900:ELSEIFJK$="N"THENPRINT@LT(I)-2," ";:K=K+1:GOTO950:ELSE870 +900 IF F=0 THEN A$(O)=ST$(K):O=O+1 +910 IF F=1 THEN B$(P)=ST$(K):P=P+1 +920 IF F=2 THEN C$(Q)=ST$(K):Q=Q+1 +930 IF F=3 THEN D$(R)=ST$(K):R=R+1 +940 IF F=4 THEN E$(S)=ST$(K):S=S+1 +950 NEXT I +960 F=F+1:K=-1:GOTO260 +961 REM ** SET UP SCREEN PRINT POSITIONS +970 DATA 5,25,44,69,89,108,133,153,172,197,217,236,261,281,300,325,345,364,389,409 +980 DATA 428,453,473,492,517,537,556,581,601,620,645,665,684,709,729,748,773,793,812,837,857,876,901,921,940 +989 REM ** GROCERY ITEM LISTS . . 45 ITEMS PER 'PAGE' +990 DATA CANTALOUPES,MUSHROOMS,APPLES,CELERY +1000 DATA CARROTS,PEARS,LETTUCE,CUCUMBERS +1010 DATA TOMATOES,MARZETTI DRESSING,GREEN PEPPERS +1020 DATA BANANAS,POTATOES,CORN,CABBAGE +1030 DATA ONIONS,GRAPEFRUIT,GRAPES +1040 DATA ORANGE JUICE,DRY YEAST,EGGS,BUTTER +1050 DATA MARGERINE,MILK,CHEESE(SLICES) +1060 DATA CHEESE(PIZZA),MAYONNAISE,SALAD DRESSING +1070 DATA PICKLES(DILL),PICKLES(SLICES),MUSTARD +1080 DATA KETCHUP,PEANUT BUTTER,JELLY +1090 DATA RELISH,HOT SAUCE +1100 DATA SUB BUNS,DINNER ROLLS,FRENCH BREAD +1110 DATA ITALIAN BREAD,PIE,CAKE,DONUTS +1120 DATA POTATOE SALAD,MACARONI SALAD,KIELBASA +1130 DATA LUNCHEON MEAT,BALOGNA,KIELBASA LOAF +1140 DATA PIZZA LOAF,SALAMI +1150 DATA PEPSI,DIET PEPSI,7-UP,GINGERALE +1160 DATA DR PEPPER,R C COLA,POP,ROOTBEER +1170 DATA PEANUTS,WALNUTS,PLAIN CHIPS,RIPPLED CHIPS +1180 DATA PRETZELS,POPCORN,CORN CHIPS +1190 DATA CORN CURLS,DORITOS +1200 DATA MUSHROOMS,SAUERKRAUT,PEAS,CARROTS,GREEN BEANS +1210 DATA CORN,CHILI BEANS,PORK & BEANS,INSTANT COFFEE +1220 DATA REGULAR COFFEE,TEA BAGS,COCOA MIX,TOMATO SAUCE +1230 DATA TOMATO PUREE,TOMATO PASTE,TOMATOES(WHOLE) +1240 DATA FRUIT COCKTAIL,PINEAPPLES,TOMATO JUICE +1250 DATA DOG FOOD,CAT FOOD,BONZ,DOG YUMMIES,FLEA POWDER +1260 DATA FROSTED FLAKES,CHEERIOS,CORN FLAKES,SHREADED WHEAT +1270 DATA BEEF NOODLE SOUP,TOMATO RICE SOUP,CHICKEN SOUP +1280 DATA TOMATO SOUP,VEGTABLE SOUP,TUNA FISH,SALMON +1290 DATA RICE-A-RONI,RICE,SPAGETTI SAUCE,PIZZA SAUCE +1300 DATA SPAGETTI NOODLES,ELBO MACARONI,EGG NOODLES +1310 DATA RIGATONI,COOKIES,SALTEEN CRACKERS,RITZ CRACKERS +1320 DATA SOAP(FACE),SOAP(SHOWER),MR BUBBLE +1330 DATA CLEANSER,CHEER,WINDEX,VANISH,SOFT SCRUB +1340 DATA MR CLEAN,AIR FRESHNERS,SHOUT,BLEACH,IVORY LIQUID +1350 DATA BOUNCE,AMMONIA,STARCH,TOP JOB +1360 DATA CAKE MIXES,FLOUR,CRISCO,VEGTABLE OIL,LOG CABIN SYRUP +1370 DATA PANCAKE MIX,SPICES,SALT,PEPPER,SUGAR,AU JUS GRAVY +1380 DATA MEAT LOAF MIX,STROGANOFF MIX,MEAT TENDERIZER,CANDY +1390 DATA MARSHMELLOWS,JELLO,CARNATION MILK,FREEZER WRAP +1400 DATA NAPKINS,GLAD WRAP,ALUMINUM FOIL,TRASH BAGS +1410 DATA GARBAGE BAGS,WAX PAPER,KLEENEX,TOILET PAPER,PAPER TOWELS +1420 DATA CAKE,BREAD,HAMBURG BUNS,HOT DOG BUNS,DINNER ROLLS +1430 DATA BREAD CRUMBS,CROUTONS,STUFFING MIX,SHAKE & BAKE +1440 DATA FISH FILETS,FRENCH FRIES,ONION RINGS,GNOCCHI +1450 DATA WAFFLES,LEMONADE,ORANGE JUICE,TANG +1460 DATA PIEROGIES,PIZZA,STEAK-UMMS,CHOPPED ONION +1470 DATA ICE CREAM,POP SICKLES,ICE CREAM TOPPINGS,COOL WHIP +1480 DATA FROZEN CHICKEN ,ROAST BEEF DINNER,FROZEN TURKEY +1490 DATA FROZEN STRAWBRY,FROZEN MIXED FRUIT +1500 DATA HOT DOGS,BACON,SAUSAGE,FISH,CHICKEN,TURKEY +1510 DATA PEPPER STEAKS,STEAK,ROAST,CHOPPED SERLOIN +1520 DATA HOT SAUSAGE,HAMBURGER,GROUND CHUCK,HAM,PORK CHOPS +1530 DATA SPARE RIBS,CIGARETTES,PIPE TOBACCO,PIPE FILTERS,T V GUIDE +1535 REM ** DELETE A PERIOD '.' IN DATA LINE 1540 FOR EACH NEW ITEM ADDED OR ADD PERIOD '.' IN DATA LINE 1540 FOR EACH ITEM DELETED. +1540 DATA .,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. +1550 DATA *END +1560 NC=NC+20 +1570 IF NC>60 THEN LPRINTCHR$(13):NC=0 +1580 RETURN +1590 'SAVE AS "SHOPPING/JAK" diff --git a/SCBP/dif.OUT b/SCBP/dif.OUT new file mode 100644 index 0000000..e69de29 diff --git a/SCBP/profile.bas b/SCBP/profile.bas new file mode 100644 index 0000000..c881139 --- /dev/null +++ b/SCBP/profile.bas @@ -0,0 +1,2 @@ +OPTION VERSION BYWATER +OPTION LABELS OFF diff --git a/SKYTEL/00readme.txt b/SKYTEL/00readme.txt new file mode 100644 index 0000000..739f685 --- /dev/null +++ b/SKYTEL/00readme.txt @@ -0,0 +1,246 @@ +These programs appear to work, and are part of regression testing. + +Changes made: +a) add missing semicolon/comma in PRINT statements +b) change array names so they were not identical to scalar variable names +c) add spaces around reserved words +d) CASSETTE is not supported, use DISKETTE instead +e) add missing THEN after IF +f) change PRINT #1,X,Y to WRITE #1,X,Y +g) add exit for autmated testing + +These programs were downloaded from: +http://www.skyandtelescope.com/astronomy-resources/basic-programs-from-sky-telescope/ + + +BASIC Programs from Sky & Telescope +By: The Editors of Sky Telescope | July 22, 2006 + +Sky & Telescope magazine is pleased to make available in machine-readable form the programs that have been published in its monthly Astronomical Computing department, which first appeared in April 1984, and later in the Computers in Astronomy department. These are offered as-is and without support. +The table on the following three pages lists the programs in reverse chronological order. Each name is a hyperlink; if you select the name and your Web browser supports simple ASCII file transfers, you'll automatically download the BASIC program. + +Whenever possible the programs are written in simple generic BASIC, but there are unavoidable variations from one interpreter to another. In case of difficulties, check your BASIC manual. A few programs require specific graphics adapters or printers. To run these programs, you will need a BASIC interpreter for your computer. If you do not know if your computer has one, see Stuart Goldman's article, "BASICally Speaking," adapted from the April 1996 issue of S&T. + +At the end of each program is a block indicating the issue of the magazine in which the program appeared together with supporting text and instructions. If you have any questions, please consult the original articles. + +BASIC Programs from Sky & Telescope +Magazine +File Name Issue Brief Description +ROCKET.BAS Feb 02, +p. 66 Travel time for a space trip at relativistic speed +DAYSOLD.BAS Nov 01, +p. 63 Determine date after input number of days after +birthday +LOOKBAK2.BAS Aug 01, +p. 62 Cosmological quantities of an accelerating universe +PILLAR.BAS May 99, +p. 71 Simulate the appearance of a Sun pillar +MSACHART.BAS Oct 98, +p. 63 Millennium Star Atlas chart number +SUPERNUM.BAS Sep 98, +p. 70 Emergence angles of supernumerary rainbows +VISLIMIT.BAS May 98, +p. 57 Visual limiting magnitude from any site +CCDLIMI2.BAS May 98, +p. 117 Limiting magnitude of a CCD camera +LOOKBACK.BAS Sep 97, +p. 59 Age and distance of a galaxy of known redshift +SOLAROSC.BAS Jun 97, +p. 92 Visualize global solar oscillation modes +SUNDOG.BAS Jan 97, +p. 103 Simulate the appearance of sundogs +CRATER.BAS Nov 96, +p. 90 Find the dimensions of an impact crater +BLKHOLE1.BAS May 96, +p. 92 Determine the mass of a black hole +BLKHOLE2.BAS May 96, +p. 92 Calculate black-hole tidal forces +BLKHOLE3.BAS May 96, +p. 92 Generate a black-hole "accelergram" +FACECIRC.BAS Mar 96, +p. 84 Print setting-circle disks on a LaserJet +SCALES.BAS Mar 96, +p. 84 Print setting-circle strips on a LaserJet +AGEUNIV.BAS Jan 96, +p. 92 Age of the universe since the Big Bang +PULSAR.BAS Oct 95, +p. 86 Relativistic precession in binary orbits +CHANCE.BAS Jun 95, +p. 86 Odds of witnessing certain astronomical events +SATRINGS.BAS May 95, +p. 92 Saturn ring-plane crossings +JACK.BAS Sep 94, +p. 78 Demo of perturbed planetary motion +SUNUP.BAS Aug 94, +p. 84 Times of sunrise/set at any place on Earth +MOONFX.BAS Apr 94, +p. 86 Moon phase and distance on any given date +CAPTURE.BAS Feb 94, +p. 85 Best film/camera combos for capturing meteors +SUNTAN.BAS Jul 93, +p. 83 Effects of ozone, haze, on suntanning time +ASTEROID.BAS Jun 93, +p. 83 The size of an asteroid from its brightness +CCDLIMIT.BAS Feb 93, +p. 84 Compute the signal-to-noise ratio of a CCD +OCCVIS.BAS Jan 93, +p. 89 Compute the visibility of a star near the Moon +ROTATE.BAS Sep 92, +p. 318 Field rotation in a misaligned telescope +GFLASH.BAS Feb 92, +p. 200 Simulate the appearance of the "green flash" +PRECESS.BAS Oct 91, +p. 408 Rigorous precession of a star's coordinates +LIST.BAS Aug 91, +p. 182 Make index lists of objects on star atlases +SOLARECL.BAS Jul 91, +p. 71 Predictions of July 11, 1991, solar eclipse +FIREBALL.BAS Jun 91, +p. 640 Calculate descent of a fireball + +BASIC Programs from Sky & Telescope +Magazine +File Name Issue Brief Description +RONCHI.BAS Apr 91, +p. 416 Ronchi test simulation +RAINBOW.BAS Feb 91, +p. 199 Graphic simulation of a rainbow +SPIRAL.BAS Dec 90, +p. 654 Modeling spiral galaxies +MARS.BAS Sep 90, +p. 296 Physical ephemeris of Mars +MARCHE.BAS Jul 90, +p. 71 Astrometric positions of a comet or asteroid +MALLAM.BAS May 90, +p. 543 Precession of a satellite's orbit +ORIGAM.BAS Apr 90, +p. 424 Make a paper model of a comet orbit +MIRROR.BAS Feb 90, +p. 195 Foucault mirror test analysis +HARTLEY.BAS Jan 90, +p. 86 Globe- and grid-drawing program (Macintosh) +JMERID.BAS Dec 89, +p. 640 Jupiter's central meridian for any date/time +LIMMAG.BAS Nov 89, +p. 522 Limiting magnitude of a telescope +GOSS.BAS Oct 89, +p. 410 Light curves of eclipsing binaries +SHOWER.BAS Aug 89, +p. 195 Dates of meteor showers +SINE.BAS Aug 89, +p. 139 Demonstration of chaotic behavior +MOONUP.BAS Jul 89, +p. 78 Compute moonrise-moonset times for any place +GALISA.BAS Jun 89, +p. 650 Plot Galilean moons of Jupiter (Apple II) +SPACE.BAS May 89, +p. 531 Space motion of a star +CHART.BAS Apr 89, +p. 420 Find atlas charts for any celestial coordinates +REFR1.BAS Mar 89, +p. 311 Compute atmospheric refraction +TAKI.BAS Feb 89, +p. 194 How to aim an alt-az (Dobsonian) telescope +FRACTS.BAS Jan 89, +p. 80 Represent a decimal as a continued fraction +PERIOD.BAS Sep 88, +p. 288 Period search by Fourier transform +LUNAR.BAS Jun 88, +p. 640 Compute dates of lunar eclipses +SHADOW.BAS Apr 88, +p. 417 Modeling mountain shadows +CIRCLE.BAS Mar 88, +p. 304 Make setting circles and scales on a printer +DIAL.BAS Dec 87, +p. 646 Design a vertical sundial +PERIAP.BAS Nov 87, +p. 527 Compute lunar apogee and perigee +STEREO.BAS Oct 87, +p. 407 Plot stars in stereographic projection +DIFPAT.BAS Sep 87, +p. 294 Compute and display diffraction patterns +BINARY.BAS Jul 87, +p. 71 Orbital ephemeris of a binary star +CLOCK.BAS May 87, +p. 535 Add Moon to a real-time clock (Apple II) +ORBITS.BAS May 87, +p. 535 Positions in near-parabolic orbits +EXTINC.BAS Apr 87, +p. 426 Compute extinction of starlight +PATH.BAS Feb 87, +p. 196 Interpolate comet positions + +BASIC Programs from Sky & Telescope +Magazine +File Name Issue Brief Description +METEOR.BAS Jan 87, +p. 83 Compute flight of meteors +OBSCUR.BAS Nov 86, +p. 515 Obscuration at a solar eclipse +SURF.BAS Oct 86, +p. 392 Surface brightness of an extended object +SPHE.BAS Sep 86, +p. 278 Measure radius of curvature with a spherometer +REACT.BAS Aug 86, +p. 174 Test your personal reaction time +ALTAZ2.BAS Jul 86, +p. 70 How to correct altitudes for refraction +MODEL.BAS Apr 86, +p. 398 Create model of star cluster +EASTER.BAS Mar 86, +p. 294 Compute date of Easter +TRACK.BAS Feb 86, +p. 190 Astrophoto tracking tolerances +COMET.BAS Dec 85, +p. 590 Compute the ephemeris of a comet +XYZ.BAS Nov 85, +p. 470 X,Y,Z coordinates of the Sun +SAROS.BAS Oct 85, +p. 366 Saros numbers for solar eclipses +HELIAC.BAS Sep 85, +p. 261 Heliacal rise and set times +KEPLER.BAS Aug 85, +p. 158 Solve Kepler's equation (celestial mechanics) +CALENDAR.BAS Jul 85, +p. 62 Perpetual calendar (Gregorian) +SHUTTR.BAS Jun 85, +p. 158 Shutter speeds for astrophotography +WAVEL.BAS Jun 85, +p. 544 Positions of absorption lines in a spectrum +STEPPR.BAS Apr 85, +p. 350 Controlling a stepper motor +MOONS.BAS Mar 85, +p. 254 Dates and times of new and full Moon +PHOTOM.BAS Feb 85, +p. 158 Reducing photometric observations +LHEIGHT.BAS Jan 85, +p. 62 Compute heights of lunar features +GLOB1.BAS Dec 84, +p. 555 Distribution of globular clusters (Apple II) +GLOB2.BAS Dec 84, +p. 555 Distribution of globular clusters (Apple II) +LENS.BAS Nov 84, +p. 450 Calculate curves for an aplanatic lens +GWMONTH.BAS Oct 84, +p. 347 Convert month number to name +SUNSHINE.BAS Sep 84, +p. 254 Hours of sunshine for a specific latitude +ANGSEP.BAS Aug 84, +p. 159 Angular separation of two celestial objects +STAY.BAS Jul 84, +p. 62 Comet's time spent inside Earth's orbit +ALTAZ.BAS Jun 84, +p. 558 Star altitude and azimuth at a given time +GMST.BAS Jun 84, +p. 558 Sidereal time for Greenwich meridian +CALJD.BAS May 84, +p. 454 Convert calendar date to Julian day +JDCAL.BAS May 84, +p. 454 Convert Julian day to calendar date +ADDMAG.BAS Apr 84, +p. 359 Combined magnitude of two or more stars +INTERP.BAS Apr 84, +p. 359 Lagrange interpolation (multiple data points) + + +EOF diff --git a/SKYTEL/00test.sh b/SKYTEL/00test.sh new file mode 100644 index 0000000..62132ed --- /dev/null +++ b/SKYTEL/00test.sh @@ -0,0 +1,118 @@ +# Puropose: Verify existing BWBASIC behavior +# Author: Howard Wulf +# Date: 2014-03-28 +# Usage: implementatino defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic3/bwskytel +# ash ./00test.sh +# + +rm *.80 +rm *.OUT +rm *.dif + +# ---------------------------------------------- +# Regression Tests +# ---------------------------------------------- +testcase() +{ + TESTCASE=${1} + echo "TESTCASE=${TESTCASE}" + ~/bwbasic ${TESTCASE} > ${TESTCASE}.OUT + echo "500 DATA ${TESTCASE}.OUT, ${TESTCASE}.80" > PAD80.INP + ~/bwbasic PAD80.BAS + diff ${TESTCASE}.run ${TESTCASE}.80 > ${TESTCASE}.dif + if test -s ${TESTCASE}.dif + then + echo less ${TESTCASE}.dif + fi +} + +# --------------------------------------------- +echo "OPTION VERSION BYWATER" > profile.bas +echo "OPTION LABELS OFF" >> profile.bas + + +testcase addmag +testcase altaz +testcase altaz2 +testcase angsep +testcase asteroid +testcase binary +testcase blkhole1 +testcase blkhole2 +testcase blkhole3 +testcase calendar +testcase caljd +testcase capture +testcase ccdlimi2 +testcase chance +testcase chart +testcase circle +testcase comet +testcase crater +testcase daysold +testcase dial +testcase difpat +testcase easter +testcase extinc +testcase facecirc +testcase fireball +testcase fracts +testcase glob1 +testcase gmst +testcase gwmonth +testcase interp +testcase jdcal +testcase jmerid +testcase kepler +testcase lens +testcase lheight +testcase limmag +testcase lookback +testcase lookbak2 +testcase lunar +testcase mallam +testcase mars +testcase meteor +testcase moonfx +testcase moons +testcase moonup +testcase msachart +testcase obscur +testcase occvis +testcase orbits +testcase path +testcase period +testcase photom +testcase precess +testcase refr1 +testcase rocket +testcase rotate +testcase saros +testcase satrings +testcase scales +testcase shadow +testcase shower +testcase shuttr +testcase solarecl +testcase space +testcase sphe +testcase stay +testcase steppr +testcase stereo +testcase sunshine +testcase suntan +testcase sunup +testcase supernum +testcase surf +testcase track +testcase vislimit +testcase wavel +testcase xyz + + +cat *.dif > dif.OUT +less dif.OUT + +# EOF diff --git a/SKYTEL/01ok.sh b/SKYTEL/01ok.sh new file mode 100644 index 0000000..118fddc --- /dev/null +++ b/SKYTEL/01ok.sh @@ -0,0 +1,11 @@ +# Puropose: Promote current results to regression +# Author: Howard Wulf +# Date: 2014-03-28 +# Usage: implementatino defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic3/bwskytel +# ash ./01ok.sh +# + +for f in *.80; do mv "$f" "${f/.80/.run}"; done +# EOF diff --git a/SKYTEL/BOW.DAT b/SKYTEL/BOW.DAT new file mode 100644 index 0000000..a759f6e --- /dev/null +++ b/SKYTEL/BOW.DAT @@ -0,0 +1,101 @@ + 38.313 0.001 + 38.380 0.083 + 38.413 0.270 + 38.479 0.510 + 38.511 0.746 + 38.576 0.921 + 38.640 0.998 + 38.672 0.963 + 38.736 0.828 + 38.767 0.624 + 38.830 0.398 + 38.861 0.194 + 38.922 0.054 + 38.953 0.000 + 39.013 0.041 + 39.043 0.164 + 39.103 0.346 + 39.162 0.551 + 39.191 0.746 + 39.249 0.897 + 39.278 0.984 + 39.335 0.995 + 39.364 0.931 + 39.420 0.806 + 39.476 0.639 + 39.503 0.454 + 39.558 0.279 + 39.585 0.135 + 39.639 0.039 + 39.692 0.001 + 39.719 0.022 + 39.771 0.098 + 39.797 0.218 + 39.848 0.367 + 39.899 0.527 + 39.925 0.682 + 39.974 0.816 + 39.999 0.919 + 40.048 0.981 + 40.097 1.000 + 40.121 0.975 + 40.169 0.911 + 40.216 0.815 + 40.239 0.697 + 40.285 0.565 + 40.331 0.432 + 40.353 0.305 + 40.398 0.194 + 40.442 0.104 + 40.464 0.041 + 40.507 0.007 + 40.550 0.001 + 40.571 0.024 + 40.613 0.072 + 40.654 0.141 + 40.675 0.226 + 40.715 0.323 + 40.755 0.426 + 40.775 0.530 + 40.814 0.630 + 40.852 0.723 + 40.890 0.806 + 40.909 0.876 + 40.946 0.930 + 40.983 0.970 + 41.019 0.993 + 41.037 1.000 + 41.072 0.993 + 41.106 0.971 + 41.140 0.938 + 41.157 0.895 + 41.190 0.842 + 41.223 0.784 + 41.255 0.720 + 41.271 0.654 + 41.303 0.586 + 41.333 0.518 + 41.364 0.452 + 41.393 0.389 + 41.408 0.329 + 41.437 0.273 + 41.465 0.222 + 41.493 0.176 + 41.521 0.136 + 41.534 0.101 + 41.561 0.072 + 41.587 0.048 + 41.612 0.029 + 41.637 0.015 + 41.661 0.006 + 41.685 0.001 + 41.697 0.000 + 41.720 0.003 + 41.743 0.008 + 41.765 0.017 + 41.787 0.028 + 41.808 0.041 + 41.828 0.055 + 41.849 0.072 + 41.868 0.089 + 41.887 0.107 diff --git a/SKYTEL/LPRINT.OUT b/SKYTEL/LPRINT.OUT new file mode 100644 index 0000000..9875c8c --- /dev/null +++ b/SKYTEL/LPRINT.OUT @@ -0,0 +1,2467 @@ +E +%0B +IN; +SP1; +PW0; +PU; +PA 467 , 254 ; +PD; +PA 594 , 254 ; +PU; +PU; +PA 467 , 281.778 ; +PD; +PA 594 , 281.778 ; +PU; +PU; +PA 467 , 309.556 ; +PD; +PA 594 , 309.556 ; +PU; +PU; +PA 467 , 337.333 ; +PD; +PA 594 , 337.333 ; +PU; +PU; +PA 467 , 365.111 ; +PD; +PA 594 , 365.111 ; +PU; +PU; +PA 340 , 365.111 ; +PD; +PA 594 , 365.111 ; +PU; +PU; +PA 467 , 392.889 ; +PD; +PA 594 , 392.889 ; +PU; +PU; +PA 467 , 420.667 ; +PD; +PA 594 , 420.667 ; +PU; +PU; +PA 467 , 448.444 ; +PD; +PA 594 , 448.444 ; +PU; +PU; +PA 467 , 476.222 ; +PD; +PA 594 , 476.222 ; +PU; +PU; +PA 467 , 504 ; +PD; +PA 594 , 504 ; +PU; +PU; +PA 340 , 504 ; +PD; +PA 594 , 504 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 504 ; +PD; +LB 10 *; +PU; +PU; +PA 467 , 531.778 ; +PD; +PA 594 , 531.778 ; +PU; +PU; +PA 467 , 559.556 ; +PD; +PA 594 , 559.556 ; +PU; +PU; +PA 467 , 587.333 ; +PD; +PA 594 , 587.333 ; +PU; +PU; +PA 467 , 615.111 ; +PD; +PA 594 , 615.111 ; +PU; +PU; +PA 467 , 642.889 ; +PD; +PA 594 , 642.889 ; +PU; +PU; +PA 340 , 642.889 ; +PD; +PA 594 , 642.889 ; +PU; +PU; +PA 467 , 670.667 ; +PD; +PA 594 , 670.667 ; +PU; +PU; +PA 467 , 698.444 ; +PD; +PA 594 , 698.444 ; +PU; +PU; +PA 467 , 726.222 ; +PD; +PA 594 , 726.222 ; +PU; +PU; +PA 467 , 754 ; +PD; +PA 594 , 754 ; +PU; +PU; +PA 467 , 781.778 ; +PD; +PA 594 , 781.778 ; +PU; +PU; +PA 340 , 781.778 ; +PD; +PA 594 , 781.778 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 781.778 ; +PD; +LB 20 *; +PU; +PU; +PA 467 , 809.556 ; +PD; +PA 594 , 809.556 ; +PU; +PU; +PA 467 , 837.333 ; +PD; +PA 594 , 837.333 ; +PU; +PU; +PA 467 , 865.111 ; +PD; +PA 594 , 865.111 ; +PU; +PU; +PA 467 , 892.889 ; +PD; +PA 594 , 892.889 ; +PU; +PU; +PA 467 , 920.667 ; +PD; +PA 594 , 920.667 ; +PU; +PU; +PA 340 , 920.667 ; +PD; +PA 594 , 920.667 ; +PU; +PU; +PA 467 , 948.444 ; +PD; +PA 594 , 948.444 ; +PU; +PU; +PA 467 , 976.222 ; +PD; +PA 594 , 976.222 ; +PU; +PU; +PA 467 , 1004. ; +PD; +PA 594 , 1004. ; +PU; +PU; +PA 467 , 1031.78 ; +PD; +PA 594 , 1031.78 ; +PU; +PU; +PA 467 , 1059.56 ; +PD; +PA 594 , 1059.56 ; +PU; +PU; +PA 340 , 1059.56 ; +PD; +PA 594 , 1059.56 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 1059.56 ; +PD; +LB 30 *; +PU; +PU; +PA 467 , 1087.33 ; +PD; +PA 594 , 1087.33 ; +PU; +PU; +PA 467 , 1115.11 ; +PD; +PA 594 , 1115.11 ; +PU; +PU; +PA 467 , 1142.89 ; +PD; +PA 594 , 1142.89 ; +PU; +PU; +PA 467 , 1170.67 ; +PD; +PA 594 , 1170.67 ; +PU; +PU; +PA 467 , 1198.44 ; +PD; +PA 594 , 1198.44 ; +PU; +PU; +PA 340 , 1198.44 ; +PD; +PA 594 , 1198.44 ; +PU; +PU; +PA 467 , 1226.22 ; +PD; +PA 594 , 1226.22 ; +PU; +PU; +PA 467 , 1254. ; +PD; +PA 594 , 1254. ; +PU; +PU; +PA 467 , 1281.78 ; +PD; +PA 594 , 1281.78 ; +PU; +PU; +PA 467 , 1309.56 ; +PD; +PA 594 , 1309.56 ; +PU; +PU; +PA 467 , 1337.33 ; +PD; +PA 594 , 1337.33 ; +PU; +PU; +PA 340 , 1337.33 ; +PD; +PA 594 , 1337.33 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 1337.33 ; +PD; +LB 40 *; +PU; +PU; +PA 467 , 1365.11 ; +PD; +PA 594 , 1365.11 ; +PU; +PU; +PA 467 , 1392.89 ; +PD; +PA 594 , 1392.89 ; +PU; +PU; +PA 467 , 1420.67 ; +PD; +PA 594 , 1420.67 ; +PU; +PU; +PA 467 , 1448.44 ; +PD; +PA 594 , 1448.44 ; +PU; +PU; +PA 467 , 1476.22 ; +PD; +PA 594 , 1476.22 ; +PU; +PU; +PA 340 , 1476.22 ; +PD; +PA 594 , 1476.22 ; +PU; +PU; +PA 467 , 1504. ; +PD; +PA 594 , 1504. ; +PU; +PU; +PA 467 , 1531.78 ; +PD; +PA 594 , 1531.78 ; +PU; +PU; +PA 467 , 1559.56 ; +PD; +PA 594 , 1559.56 ; +PU; +PU; +PA 467 , 1587.33 ; +PD; +PA 594 , 1587.33 ; +PU; +PU; +PA 467 , 1615.11 ; +PD; +PA 594 , 1615.11 ; +PU; +PU; +PA 340 , 1615.11 ; +PD; +PA 594 , 1615.11 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 1615.11 ; +PD; +LB 50 *; +PU; +PU; +PA 467 , 1642.89 ; +PD; +PA 594 , 1642.89 ; +PU; +PU; +PA 467 , 1670.67 ; +PD; +PA 594 , 1670.67 ; +PU; +PU; +PA 467 , 1698.44 ; +PD; +PA 594 , 1698.44 ; +PU; +PU; +PA 467 , 1726.22 ; +PD; +PA 594 , 1726.22 ; +PU; +PU; +PA 467 , 1754. ; +PD; +PA 594 , 1754. ; +PU; +PU; +PA 340 , 1754. ; +PD; +PA 594 , 1754. ; +PU; +PU; +PA 467 , 1781.78 ; +PD; +PA 594 , 1781.78 ; +PU; +PU; +PA 467 , 1809.56 ; +PD; +PA 594 , 1809.56 ; +PU; +PU; +PA 467 , 1837.33 ; +PD; +PA 594 , 1837.33 ; +PU; +PU; +PA 467 , 1865.11 ; +PD; +PA 594 , 1865.11 ; +PU; +PU; +PA 467 , 1892.89 ; +PD; +PA 594 , 1892.89 ; +PU; +PU; +PA 340 , 1892.89 ; +PD; +PA 594 , 1892.89 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 1892.89 ; +PD; +LB 60 *; +PU; +PU; +PA 467 , 1920.67 ; +PD; +PA 594 , 1920.67 ; +PU; +PU; +PA 467 , 1948.44 ; +PD; +PA 594 , 1948.44 ; +PU; +PU; +PA 467 , 1976.22 ; +PD; +PA 594 , 1976.22 ; +PU; +PU; +PA 467 , 2004. ; +PD; +PA 594 , 2004. ; +PU; +PU; +PA 467 , 2031.78 ; +PD; +PA 594 , 2031.78 ; +PU; +PU; +PA 340 , 2031.78 ; +PD; +PA 594 , 2031.78 ; +PU; +PU; +PA 467 , 2059.56 ; +PD; +PA 594 , 2059.56 ; +PU; +PU; +PA 467 , 2087.33 ; +PD; +PA 594 , 2087.33 ; +PU; +PU; +PA 467 , 2115.11 ; +PD; +PA 594 , 2115.11 ; +PU; +PU; +PA 467 , 2142.89 ; +PD; +PA 594 , 2142.89 ; +PU; +PU; +PA 467 , 2170.67 ; +PD; +PA 594 , 2170.67 ; +PU; +PU; +PA 340 , 2170.67 ; +PD; +PA 594 , 2170.67 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 2170.67 ; +PD; +LB 70 *; +PU; +PU; +PA 467 , 2198.44 ; +PD; +PA 594 , 2198.44 ; +PU; +PU; +PA 467 , 2226.22 ; +PD; +PA 594 , 2226.22 ; +PU; +PU; +PA 467 , 2254. ; +PD; +PA 594 , 2254. ; +PU; +PU; +PA 467 , 2281.78 ; +PD; +PA 594 , 2281.78 ; +PU; +PU; +PA 467 , 2309.56 ; +PD; +PA 594 , 2309.56 ; +PU; +PU; +PA 340 , 2309.56 ; +PD; +PA 594 , 2309.56 ; +PU; +PU; +PA 467 , 2337.33 ; +PD; +PA 594 , 2337.33 ; +PU; +PU; +PA 467 , 2365.11 ; +PD; +PA 594 , 2365.11 ; +PU; +PU; +PA 467 , 2392.89 ; +PD; +PA 594 , 2392.89 ; +PU; +PU; +PA 467 , 2420.67 ; +PD; +PA 594 , 2420.67 ; +PU; +PU; +PA 467 , 2448.44 ; +PD; +PA 594 , 2448.44 ; +PU; +PU; +PA 340 , 2448.44 ; +PD; +PA 594 , 2448.44 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 2448.44 ; +PD; +LB 80 *; +PU; +PU; +PA 467 , 2476.22 ; +PD; +PA 594 , 2476.22 ; +PU; +PU; +PA 467 , 2504. ; +PD; +PA 594 , 2504. ; +PU; +PU; +PA 467 , 2531.78 ; +PD; +PA 594 , 2531.78 ; +PU; +PU; +PA 467 , 2559.56 ; +PD; +PA 594 , 2559.56 ; +PU; +PU; +PA 467 , 2587.33 ; +PD; +PA 594 , 2587.33 ; +PU; +PU; +PA 340 , 2587.33 ; +PD; +PA 594 , 2587.33 ; +PU; +PU; +PA 467 , 2615.11 ; +PD; +PA 594 , 2615.11 ; +PU; +PU; +PA 467 , 2642.89 ; +PD; +PA 594 , 2642.89 ; +PU; +PU; +PA 467 , 2670.67 ; +PD; +PA 594 , 2670.67 ; +PU; +PU; +PA 467 , 2698.44 ; +PD; +PA 594 , 2698.44 ; +PU; +PU; +PA 467 , 2726.22 ; +PD; +PA 594 , 2726.22 ; +PU; +PU; +PA 340 , 2726.22 ; +PD; +PA 594 , 2726.22 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 2726.22 ; +PD; +LB 90 *; +PU; +PU; +PA 467 , 2754. ; +PD; +PA 594 , 2754. ; +PU; +PU; +PA 467 , 2781.78 ; +PD; +PA 594 , 2781.78 ; +PU; +PU; +PA 467 , 2809.56 ; +PD; +PA 594 , 2809.56 ; +PU; +PU; +PA 467 , 2837.33 ; +PD; +PA 594 , 2837.33 ; +PU; +PU; +PA 467 , 2865.11 ; +PD; +PA 594 , 2865.11 ; +PU; +PU; +PA 340 , 2865.11 ; +PD; +PA 594 , 2865.11 ; +PU; +PU; +PA 467 , 2892.89 ; +PD; +PA 594 , 2892.89 ; +PU; +PU; +PA 467 , 2920.67 ; +PD; +PA 594 , 2920.67 ; +PU; +PU; +PA 467 , 2948.44 ; +PD; +PA 594 , 2948.44 ; +PU; +PU; +PA 467 , 2976.22 ; +PD; +PA 594 , 2976.22 ; +PU; +PU; +PA 467 , 3004. ; +PD; +PA 594 , 3004. ; +PU; +PU; +PA 340 , 3004. ; +PD; +PA 594 , 3004. ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 3004. ; +PD; +LB 100 *; +PU; +PU; +PA 467 , 3031.78 ; +PD; +PA 594 , 3031.78 ; +PU; +PU; +PA 467 , 3059.56 ; +PD; +PA 594 , 3059.56 ; +PU; +PU; +PA 467 , 3087.33 ; +PD; +PA 594 , 3087.33 ; +PU; +PU; +PA 467 , 3115.11 ; +PD; +PA 594 , 3115.11 ; +PU; +PU; +PA 467 , 3142.89 ; +PD; +PA 594 , 3142.89 ; +PU; +PU; +PA 340 , 3142.89 ; +PD; +PA 594 , 3142.89 ; +PU; +PU; +PA 467 , 3170.67 ; +PD; +PA 594 , 3170.67 ; +PU; +PU; +PA 467 , 3198.44 ; +PD; +PA 594 , 3198.44 ; +PU; +PU; +PA 467 , 3226.22 ; +PD; +PA 594 , 3226.22 ; +PU; +PU; +PA 467 , 3254. ; +PD; +PA 594 , 3254. ; +PU; +PU; +PA 467 , 3281.78 ; +PD; +PA 594 , 3281.78 ; +PU; +PU; +PA 340 , 3281.78 ; +PD; +PA 594 , 3281.78 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 3281.78 ; +PD; +LB 110 *; +PU; +PU; +PA 467 , 3309.56 ; +PD; +PA 594 , 3309.56 ; +PU; +PU; +PA 467 , 3337.33 ; +PD; +PA 594 , 3337.33 ; +PU; +PU; +PA 467 , 3365.11 ; +PD; +PA 594 , 3365.11 ; +PU; +PU; +PA 467 , 3392.89 ; +PD; +PA 594 , 3392.89 ; +PU; +PU; +PA 467 , 3420.67 ; +PD; +PA 594 , 3420.67 ; +PU; +PU; +PA 340 , 3420.67 ; +PD; +PA 594 , 3420.67 ; +PU; +PU; +PA 467 , 3448.44 ; +PD; +PA 594 , 3448.44 ; +PU; +PU; +PA 467 , 3476.22 ; +PD; +PA 594 , 3476.22 ; +PU; +PU; +PA 467 , 3504. ; +PD; +PA 594 , 3504. ; +PU; +PU; +PA 467 , 3531.78 ; +PD; +PA 594 , 3531.78 ; +PU; +PU; +PA 467 , 3559.56 ; +PD; +PA 594 , 3559.56 ; +PU; +PU; +PA 340 , 3559.56 ; +PD; +PA 594 , 3559.56 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 3559.56 ; +PD; +LB 120 *; +PU; +PU; +PA 467 , 3587.33 ; +PD; +PA 594 , 3587.33 ; +PU; +PU; +PA 467 , 3615.11 ; +PD; +PA 594 , 3615.11 ; +PU; +PU; +PA 467 , 3642.89 ; +PD; +PA 594 , 3642.89 ; +PU; +PU; +PA 467 , 3670.67 ; +PD; +PA 594 , 3670.67 ; +PU; +PU; +PA 467 , 3698.44 ; +PD; +PA 594 , 3698.44 ; +PU; +PU; +PA 340 , 3698.44 ; +PD; +PA 594 , 3698.44 ; +PU; +PU; +PA 467 , 3726.22 ; +PD; +PA 594 , 3726.22 ; +PU; +PU; +PA 467 , 3754. ; +PD; +PA 594 , 3754. ; +PU; +PU; +PA 467 , 3781.78 ; +PD; +PA 594 , 3781.78 ; +PU; +PU; +PA 467 , 3809.56 ; +PD; +PA 594 , 3809.56 ; +PU; +PU; +PA 467 , 3837.33 ; +PD; +PA 594 , 3837.33 ; +PU; +PU; +PA 340 , 3837.33 ; +PD; +PA 594 , 3837.33 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 3837.33 ; +PD; +LB 130 *; +PU; +PU; +PA 467 , 3865.11 ; +PD; +PA 594 , 3865.11 ; +PU; +PU; +PA 467 , 3892.89 ; +PD; +PA 594 , 3892.89 ; +PU; +PU; +PA 467 , 3920.67 ; +PD; +PA 594 , 3920.67 ; +PU; +PU; +PA 467 , 3948.44 ; +PD; +PA 594 , 3948.44 ; +PU; +PU; +PA 467 , 3976.22 ; +PD; +PA 594 , 3976.22 ; +PU; +PU; +PA 340 , 3976.22 ; +PD; +PA 594 , 3976.22 ; +PU; +PU; +PA 467 , 4004. ; +PD; +PA 594 , 4004. ; +PU; +PU; +PA 467 , 4031.78 ; +PD; +PA 594 , 4031.78 ; +PU; +PU; +PA 467 , 4059.56 ; +PD; +PA 594 , 4059.56 ; +PU; +PU; +PA 467 , 4087.33 ; +PD; +PA 594 , 4087.33 ; +PU; +PU; +PA 467 , 4115.11 ; +PD; +PA 594 , 4115.11 ; +PU; +PU; +PA 340 , 4115.11 ; +PD; +PA 594 , 4115.11 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 4115.11 ; +PD; +LB 140 *; +PU; +PU; +PA 467 , 4142.89 ; +PD; +PA 594 , 4142.89 ; +PU; +PU; +PA 467 , 4170.67 ; +PD; +PA 594 , 4170.67 ; +PU; +PU; +PA 467 , 4198.44 ; +PD; +PA 594 , 4198.44 ; +PU; +PU; +PA 467 , 4226.22 ; +PD; +PA 594 , 4226.22 ; +PU; +PU; +PA 467 , 4254. ; +PD; +PA 594 , 4254. ; +PU; +PU; +PA 340 , 4254. ; +PD; +PA 594 , 4254. ; +PU; +PU; +PA 467 , 4281.78 ; +PD; +PA 594 , 4281.78 ; +PU; +PU; +PA 467 , 4309.56 ; +PD; +PA 594 , 4309.56 ; +PU; +PU; +PA 467 , 4337.33 ; +PD; +PA 594 , 4337.33 ; +PU; +PU; +PA 467 , 4365.11 ; +PD; +PA 594 , 4365.11 ; +PU; +PU; +PA 467 , 4392.89 ; +PD; +PA 594 , 4392.89 ; +PU; +PU; +PA 340 , 4392.89 ; +PD; +PA 594 , 4392.89 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 4392.89 ; +PD; +LB 150 *; +PU; +PU; +PA 467 , 4420.67 ; +PD; +PA 594 , 4420.67 ; +PU; +PU; +PA 467 , 4448.44 ; +PD; +PA 594 , 4448.44 ; +PU; +PU; +PA 467 , 4476.22 ; +PD; +PA 594 , 4476.22 ; +PU; +PU; +PA 467 , 4504. ; +PD; +PA 594 , 4504. ; +PU; +PU; +PA 467 , 4531.78 ; +PD; +PA 594 , 4531.78 ; +PU; +PU; +PA 340 , 4531.78 ; +PD; +PA 594 , 4531.78 ; +PU; +PU; +PA 467 , 4559.56 ; +PD; +PA 594 , 4559.56 ; +PU; +PU; +PA 467 , 4587.33 ; +PD; +PA 594 , 4587.33 ; +PU; +PU; +PA 467 , 4615.11 ; +PD; +PA 594 , 4615.11 ; +PU; +PU; +PA 467 , 4642.89 ; +PD; +PA 594 , 4642.89 ; +PU; +PU; +PA 467 , 4670.67 ; +PD; +PA 594 , 4670.67 ; +PU; +PU; +PA 340 , 4670.67 ; +PD; +PA 594 , 4670.67 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 4670.67 ; +PD; +LB 160 *; +PU; +PU; +PA 467 , 4698.44 ; +PD; +PA 594 , 4698.44 ; +PU; +PU; +PA 467 , 4726.22 ; +PD; +PA 594 , 4726.22 ; +PU; +PU; +PA 467 , 4754 ; +PD; +PA 594 , 4754 ; +PU; +PU; +PA 467 , 4781.78 ; +PD; +PA 594 , 4781.78 ; +PU; +PU; +PA 467 , 4809.56 ; +PD; +PA 594 , 4809.56 ; +PU; +PU; +PA 340 , 4809.56 ; +PD; +PA 594 , 4809.56 ; +PU; +PU; +PA 467 , 4837.33 ; +PD; +PA 594 , 4837.33 ; +PU; +PU; +PA 467 , 4865.11 ; +PD; +PA 594 , 4865.11 ; +PU; +PU; +PA 467 , 4892.89 ; +PD; +PA 594 , 4892.89 ; +PU; +PU; +PA 467 , 4920.67 ; +PD; +PA 594 , 4920.67 ; +PU; +PU; +PA 467 , 4948.44 ; +PD; +PA 594 , 4948.44 ; +PU; +PU; +PA 340 , 4948.44 ; +PD; +PA 594 , 4948.44 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 4948.44 ; +PD; +LB 170 *; +PU; +PU; +PA 467 , 4976.22 ; +PD; +PA 594 , 4976.22 ; +PU; +PU; +PA 467 , 5004. ; +PD; +PA 594 , 5004. ; +PU; +PU; +PA 467 , 5031.78 ; +PD; +PA 594 , 5031.78 ; +PU; +PU; +PA 467 , 5059.56 ; +PD; +PA 594 , 5059.56 ; +PU; +PU; +PA 467 , 5087.33 ; +PD; +PA 594 , 5087.33 ; +PU; +PU; +PA 340 , 5087.33 ; +PD; +PA 594 , 5087.33 ; +PU; +PU; +PA 467 , 5115.11 ; +PD; +PA 594 , 5115.11 ; +PU; +PU; +PA 467 , 5142.89 ; +PD; +PA 594 , 5142.89 ; +PU; +PU; +PA 467 , 5170.67 ; +PD; +PA 594 , 5170.67 ; +PU; +PU; +PA 467 , 5198.44 ; +PD; +PA 594 , 5198.44 ; +PU; +PU; +PA 467 , 5226.22 ; +PD; +PA 594 , 5226.22 ; +PU; +PU; +PA 340 , 5226.22 ; +PD; +PA 594 , 5226.22 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 5226.22 ; +PD; +LB 180 *; +PU; +PU; +PA 467 , 5254. ; +PD; +PA 594 , 5254. ; +PU; +PU; +PA 467 , 5281.78 ; +PD; +PA 594 , 5281.78 ; +PU; +PU; +PA 467 , 5309.56 ; +PD; +PA 594 , 5309.56 ; +PU; +PU; +PA 467 , 5337.33 ; +PD; +PA 594 , 5337.33 ; +PU; +PU; +PA 467 , 5365.11 ; +PD; +PA 594 , 5365.11 ; +PU; +PU; +PA 340 , 5365.11 ; +PD; +PA 594 , 5365.11 ; +PU; +PU; +PA 467 , 5392.89 ; +PD; +PA 594 , 5392.89 ; +PU; +PU; +PA 467 , 5420.67 ; +PD; +PA 594 , 5420.67 ; +PU; +PU; +PA 467 , 5448.44 ; +PD; +PA 594 , 5448.44 ; +PU; +PU; +PA 467 , 5476.22 ; +PD; +PA 594 , 5476.22 ; +PU; +PU; +PA 467 , 5504. ; +PD; +PA 594 , 5504. ; +PU; +PU; +PA 340 , 5504. ; +PD; +PA 594 , 5504. ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 5504. ; +PD; +LB 190 *; +PU; +PU; +PA 467 , 5531.78 ; +PD; +PA 594 , 5531.78 ; +PU; +PU; +PA 467 , 5559.56 ; +PD; +PA 594 , 5559.56 ; +PU; +PU; +PA 467 , 5587.33 ; +PD; +PA 594 , 5587.33 ; +PU; +PU; +PA 467 , 5615.11 ; +PD; +PA 594 , 5615.11 ; +PU; +PU; +PA 467 , 5642.89 ; +PD; +PA 594 , 5642.89 ; +PU; +PU; +PA 340 , 5642.89 ; +PD; +PA 594 , 5642.89 ; +PU; +PU; +PA 467 , 5670.67 ; +PD; +PA 594 , 5670.67 ; +PU; +PU; +PA 467 , 5698.44 ; +PD; +PA 594 , 5698.44 ; +PU; +PU; +PA 467 , 5726.22 ; +PD; +PA 594 , 5726.22 ; +PU; +PU; +PA 467 , 5754. ; +PD; +PA 594 , 5754. ; +PU; +PU; +PA 467 , 5781.78 ; +PD; +PA 594 , 5781.78 ; +PU; +PU; +PA 340 , 5781.78 ; +PD; +PA 594 , 5781.78 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 5781.78 ; +PD; +LB 200 *; +PU; +PU; +PA 467 , 5809.56 ; +PD; +PA 594 , 5809.56 ; +PU; +PU; +PA 467 , 5837.33 ; +PD; +PA 594 , 5837.33 ; +PU; +PU; +PA 467 , 5865.11 ; +PD; +PA 594 , 5865.11 ; +PU; +PU; +PA 467 , 5892.89 ; +PD; +PA 594 , 5892.89 ; +PU; +PU; +PA 467 , 5920.67 ; +PD; +PA 594 , 5920.67 ; +PU; +PU; +PA 340 , 5920.67 ; +PD; +PA 594 , 5920.67 ; +PU; +PU; +PA 467 , 5948.44 ; +PD; +PA 594 , 5948.44 ; +PU; +PU; +PA 467 , 5976.22 ; +PD; +PA 594 , 5976.22 ; +PU; +PU; +PA 467 , 6004. ; +PD; +PA 594 , 6004. ; +PU; +PU; +PA 467 , 6031.78 ; +PD; +PA 594 , 6031.78 ; +PU; +PU; +PA 467 , 6059.56 ; +PD; +PA 594 , 6059.56 ; +PU; +PU; +PA 340 , 6059.56 ; +PD; +PA 594 , 6059.56 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 6059.56 ; +PD; +LB 210 *; +PU; +PU; +PA 467 , 6087.33 ; +PD; +PA 594 , 6087.33 ; +PU; +PU; +PA 467 , 6115.11 ; +PD; +PA 594 , 6115.11 ; +PU; +PU; +PA 467 , 6142.89 ; +PD; +PA 594 , 6142.89 ; +PU; +PU; +PA 467 , 6170.67 ; +PD; +PA 594 , 6170.67 ; +PU; +PU; +PA 467 , 6198.44 ; +PD; +PA 594 , 6198.44 ; +PU; +PU; +PA 340 , 6198.44 ; +PD; +PA 594 , 6198.44 ; +PU; +PU; +PA 467 , 6226.22 ; +PD; +PA 594 , 6226.22 ; +PU; +PU; +PA 467 , 6254. ; +PD; +PA 594 , 6254. ; +PU; +PU; +PA 467 , 6281.78 ; +PD; +PA 594 , 6281.78 ; +PU; +PU; +PA 467 , 6309.56 ; +PD; +PA 594 , 6309.56 ; +PU; +PU; +PA 467 , 6337.33 ; +PD; +PA 594 , 6337.33 ; +PU; +PU; +PA 340 , 6337.33 ; +PD; +PA 594 , 6337.33 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 6337.33 ; +PD; +LB 220 *; +PU; +PU; +PA 467 , 6365.11 ; +PD; +PA 594 , 6365.11 ; +PU; +PU; +PA 467 , 6392.89 ; +PD; +PA 594 , 6392.89 ; +PU; +PU; +PA 467 , 6420.67 ; +PD; +PA 594 , 6420.67 ; +PU; +PU; +PA 467 , 6448.44 ; +PD; +PA 594 , 6448.44 ; +PU; +PU; +PA 467 , 6476.22 ; +PD; +PA 594 , 6476.22 ; +PU; +PU; +PA 340 , 6476.22 ; +PD; +PA 594 , 6476.22 ; +PU; +PU; +PA 467 , 6504. ; +PD; +PA 594 , 6504. ; +PU; +PU; +PA 467 , 6531.78 ; +PD; +PA 594 , 6531.78 ; +PU; +PU; +PA 467 , 6559.56 ; +PD; +PA 594 , 6559.56 ; +PU; +PU; +PA 467 , 6587.33 ; +PD; +PA 594 , 6587.33 ; +PU; +PU; +PA 467 , 6615.11 ; +PD; +PA 594 , 6615.11 ; +PU; +PU; +PA 340 , 6615.11 ; +PD; +PA 594 , 6615.11 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 6615.11 ; +PD; +LB 230 *; +PU; +PU; +PA 467 , 6642.89 ; +PD; +PA 594 , 6642.89 ; +PU; +PU; +PA 467 , 6670.67 ; +PD; +PA 594 , 6670.67 ; +PU; +PU; +PA 467 , 6698.44 ; +PD; +PA 594 , 6698.44 ; +PU; +PU; +PA 467 , 6726.22 ; +PD; +PA 594 , 6726.22 ; +PU; +PU; +PA 467 , 6754. ; +PD; +PA 594 , 6754. ; +PU; +PU; +PA 340 , 6754. ; +PD; +PA 594 , 6754. ; +PU; +PU; +PA 467 , 6781.78 ; +PD; +PA 594 , 6781.78 ; +PU; +PU; +PA 467 , 6809.56 ; +PD; +PA 594 , 6809.56 ; +PU; +PU; +PA 467 , 6837.33 ; +PD; +PA 594 , 6837.33 ; +PU; +PU; +PA 467 , 6865.11 ; +PD; +PA 594 , 6865.11 ; +PU; +PU; +PA 467 , 6892.89 ; +PD; +PA 594 , 6892.89 ; +PU; +PU; +PA 340 , 6892.89 ; +PD; +PA 594 , 6892.89 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 6892.89 ; +PD; +LB 240 *; +PU; +PU; +PA 467 , 6920.67 ; +PD; +PA 594 , 6920.67 ; +PU; +PU; +PA 467 , 6948.44 ; +PD; +PA 594 , 6948.44 ; +PU; +PU; +PA 467 , 6976.22 ; +PD; +PA 594 , 6976.22 ; +PU; +PU; +PA 467 , 7004. ; +PD; +PA 594 , 7004. ; +PU; +PU; +PA 467 , 7031.78 ; +PD; +PA 594 , 7031.78 ; +PU; +PU; +PA 340 , 7031.78 ; +PD; +PA 594 , 7031.78 ; +PU; +PU; +PA 467 , 7059.56 ; +PD; +PA 594 , 7059.56 ; +PU; +PU; +PA 467 , 7087.33 ; +PD; +PA 594 , 7087.33 ; +PU; +PU; +PA 467 , 7115.11 ; +PD; +PA 594 , 7115.11 ; +PU; +PU; +PA 467 , 7142.89 ; +PD; +PA 594 , 7142.89 ; +PU; +PU; +PA 467 , 7170.67 ; +PD; +PA 594 , 7170.67 ; +PU; +PU; +PA 340 , 7170.67 ; +PD; +PA 594 , 7170.67 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 7170.67 ; +PD; +LB 250 *; +PU; +PU; +PA 467 , 7198.44 ; +PD; +PA 594 , 7198.44 ; +PU; +PU; +PA 467 , 7226.22 ; +PD; +PA 594 , 7226.22 ; +PU; +PU; +PA 467 , 7254. ; +PD; +PA 594 , 7254. ; +PU; +PU; +PA 467 , 7281.78 ; +PD; +PA 594 , 7281.78 ; +PU; +PU; +PA 467 , 7309.56 ; +PD; +PA 594 , 7309.56 ; +PU; +PU; +PA 340 , 7309.56 ; +PD; +PA 594 , 7309.56 ; +PU; +PU; +PA 467 , 7337.33 ; +PD; +PA 594 , 7337.33 ; +PU; +PU; +PA 467 , 7365.11 ; +PD; +PA 594 , 7365.11 ; +PU; +PU; +PA 467 , 7392.89 ; +PD; +PA 594 , 7392.89 ; +PU; +PU; +PA 467 , 7420.67 ; +PD; +PA 594 , 7420.67 ; +PU; +PU; +PA 467 , 7448.44 ; +PD; +PA 594 , 7448.44 ; +PU; +PU; +PA 340 , 7448.44 ; +PD; +PA 594 , 7448.44 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 7448.44 ; +PD; +LB 260 *; +PU; +PU; +PA 467 , 7476.22 ; +PD; +PA 594 , 7476.22 ; +PU; +PU; +PA 467 , 7504. ; +PD; +PA 594 , 7504. ; +PU; +PU; +PA 467 , 7531.78 ; +PD; +PA 594 , 7531.78 ; +PU; +PU; +PA 467 , 7559.56 ; +PD; +PA 594 , 7559.56 ; +PU; +PU; +PA 467 , 7587.33 ; +PD; +PA 594 , 7587.33 ; +PU; +PU; +PA 340 , 7587.33 ; +PD; +PA 594 , 7587.33 ; +PU; +PU; +PA 467 , 7615.11 ; +PD; +PA 594 , 7615.11 ; +PU; +PU; +PA 467 , 7642.89 ; +PD; +PA 594 , 7642.89 ; +PU; +PU; +PA 467 , 7670.67 ; +PD; +PA 594 , 7670.67 ; +PU; +PU; +PA 467 , 7698.44 ; +PD; +PA 594 , 7698.44 ; +PU; +PU; +PA 467 , 7726.22 ; +PD; +PA 594 , 7726.22 ; +PU; +PU; +PA 340 , 7726.22 ; +PD; +PA 594 , 7726.22 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 7726.22 ; +PD; +LB 270 *; +PU; +PU; +PA 467 , 7754. ; +PD; +PA 594 , 7754. ; +PU; +PU; +PA 467 , 7781.78 ; +PD; +PA 594 , 7781.78 ; +PU; +PU; +PA 467 , 7809.56 ; +PD; +PA 594 , 7809.56 ; +PU; +PU; +PA 467 , 7837.33 ; +PD; +PA 594 , 7837.33 ; +PU; +PU; +PA 467 , 7865.11 ; +PD; +PA 594 , 7865.11 ; +PU; +PU; +PA 340 , 7865.11 ; +PD; +PA 594 , 7865.11 ; +PU; +PU; +PA 467 , 7892.89 ; +PD; +PA 594 , 7892.89 ; +PU; +PU; +PA 467 , 7920.67 ; +PD; +PA 594 , 7920.67 ; +PU; +PU; +PA 467 , 7948.44 ; +PD; +PA 594 , 7948.44 ; +PU; +PU; +PA 467 , 7976.22 ; +PD; +PA 594 , 7976.22 ; +PU; +PU; +PA 467 , 8004. ; +PD; +PA 594 , 8004. ; +PU; +PU; +PA 340 , 8004. ; +PD; +PA 594 , 8004. ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 8004. ; +PD; +LB 280 *; +PU; +PU; +PA 467 , 8031.78 ; +PD; +PA 594 , 8031.78 ; +PU; +PU; +PA 467 , 8059.56 ; +PD; +PA 594 , 8059.56 ; +PU; +PU; +PA 467 , 8087.33 ; +PD; +PA 594 , 8087.33 ; +PU; +PU; +PA 467 , 8115.11 ; +PD; +PA 594 , 8115.11 ; +PU; +PU; +PA 467 , 8142.89 ; +PD; +PA 594 , 8142.89 ; +PU; +PU; +PA 340 , 8142.89 ; +PD; +PA 594 , 8142.89 ; +PU; +PU; +PA 467 , 8170.67 ; +PD; +PA 594 , 8170.67 ; +PU; +PU; +PA 467 , 8198.44 ; +PD; +PA 594 , 8198.44 ; +PU; +PU; +PA 467 , 8226.22 ; +PD; +PA 594 , 8226.22 ; +PU; +PU; +PA 467 , 8254. ; +PD; +PA 594 , 8254. ; +PU; +PU; +PA 467 , 8281.78 ; +PD; +PA 594 , 8281.78 ; +PU; +PU; +PA 340 , 8281.78 ; +PD; +PA 594 , 8281.78 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 8281.78 ; +PD; +LB 290 *; +PU; +PU; +PA 467 , 8309.56 ; +PD; +PA 594 , 8309.56 ; +PU; +PU; +PA 467 , 8337.33 ; +PD; +PA 594 , 8337.33 ; +PU; +PU; +PA 467 , 8365.11 ; +PD; +PA 594 , 8365.11 ; +PU; +PU; +PA 467 , 8392.89 ; +PD; +PA 594 , 8392.89 ; +PU; +PU; +PA 467 , 8420.67 ; +PD; +PA 594 , 8420.67 ; +PU; +PU; +PA 340 , 8420.67 ; +PD; +PA 594 , 8420.67 ; +PU; +PU; +PA 467 , 8448.44 ; +PD; +PA 594 , 8448.44 ; +PU; +PU; +PA 467 , 8476.22 ; +PD; +PA 594 , 8476.22 ; +PU; +PU; +PA 467 , 8504. ; +PD; +PA 594 , 8504. ; +PU; +PU; +PA 467 , 8531.78 ; +PD; +PA 594 , 8531.78 ; +PU; +PU; +PA 467 , 8559.56 ; +PD; +PA 594 , 8559.56 ; +PU; +PU; +PA 340 , 8559.56 ; +PD; +PA 594 , 8559.56 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 8559.56 ; +PD; +LB 300 *; +PU; +PU; +PA 467 , 8587.33 ; +PD; +PA 594 , 8587.33 ; +PU; +PU; +PA 467 , 8615.11 ; +PD; +PA 594 , 8615.11 ; +PU; +PU; +PA 467 , 8642.89 ; +PD; +PA 594 , 8642.89 ; +PU; +PU; +PA 467 , 8670.67 ; +PD; +PA 594 , 8670.67 ; +PU; +PU; +PA 467 , 8698.44 ; +PD; +PA 594 , 8698.44 ; +PU; +PU; +PA 340 , 8698.44 ; +PD; +PA 594 , 8698.44 ; +PU; +PU; +PA 467 , 8726.22 ; +PD; +PA 594 , 8726.22 ; +PU; +PU; +PA 467 , 8754. ; +PD; +PA 594 , 8754. ; +PU; +PU; +PA 467 , 8781.78 ; +PD; +PA 594 , 8781.78 ; +PU; +PU; +PA 467 , 8809.56 ; +PD; +PA 594 , 8809.56 ; +PU; +PU; +PA 467 , 8837.33 ; +PD; +PA 594 , 8837.33 ; +PU; +PU; +PA 340 , 8837.33 ; +PD; +PA 594 , 8837.33 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 8837.33 ; +PD; +LB 310 *; +PU; +PU; +PA 467 , 8865.11 ; +PD; +PA 594 , 8865.11 ; +PU; +PU; +PA 467 , 8892.89 ; +PD; +PA 594 , 8892.89 ; +PU; +PU; +PA 467 , 8920.67 ; +PD; +PA 594 , 8920.67 ; +PU; +PU; +PA 467 , 8948.44 ; +PD; +PA 594 , 8948.44 ; +PU; +PU; +PA 467 , 8976.22 ; +PD; +PA 594 , 8976.22 ; +PU; +PU; +PA 340 , 8976.22 ; +PD; +PA 594 , 8976.22 ; +PU; +PU; +PA 467 , 9004. ; +PD; +PA 594 , 9004. ; +PU; +PU; +PA 467 , 9031.78 ; +PD; +PA 594 , 9031.78 ; +PU; +PU; +PA 467 , 9059.56 ; +PD; +PA 594 , 9059.56 ; +PU; +PU; +PA 467 , 9087.33 ; +PD; +PA 594 , 9087.33 ; +PU; +PU; +PA 467 , 9115.11 ; +PD; +PA 594 , 9115.11 ; +PU; +PU; +PA 340 , 9115.11 ; +PD; +PA 594 , 9115.11 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 9115.11 ; +PD; +LB 320 *; +PU; +PU; +PA 467 , 9142.89 ; +PD; +PA 594 , 9142.89 ; +PU; +PU; +PA 467 , 9170.67 ; +PD; +PA 594 , 9170.67 ; +PU; +PU; +PA 467 , 9198.44 ; +PD; +PA 594 , 9198.44 ; +PU; +PU; +PA 467 , 9226.22 ; +PD; +PA 594 , 9226.22 ; +PU; +PU; +PA 467 , 9254. ; +PD; +PA 594 , 9254. ; +PU; +PU; +PA 340 , 9254. ; +PD; +PA 594 , 9254. ; +PU; +PU; +PA 467 , 9281.78 ; +PD; +PA 594 , 9281.78 ; +PU; +PU; +PA 467 , 9309.56 ; +PD; +PA 594 , 9309.56 ; +PU; +PU; +PA 467 , 9337.33 ; +PD; +PA 594 , 9337.33 ; +PU; +PU; +PA 467 , 9365.11 ; +PD; +PA 594 , 9365.11 ; +PU; +PU; +PA 467 , 9392.89 ; +PD; +PA 594 , 9392.89 ; +PU; +PU; +PA 340 , 9392.89 ; +PD; +PA 594 , 9392.89 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 9392.89 ; +PD; +LB 330 *; +PU; +PU; +PA 467 , 9420.67 ; +PD; +PA 594 , 9420.67 ; +PU; +PU; +PA 467 , 9448.44 ; +PD; +PA 594 , 9448.44 ; +PU; +PU; +PA 467 , 9476.22 ; +PD; +PA 594 , 9476.22 ; +PU; +PU; +PA 467 , 9504. ; +PD; +PA 594 , 9504. ; +PU; +PU; +PA 467 , 9531.78 ; +PD; +PA 594 , 9531.78 ; +PU; +PU; +PA 340 , 9531.78 ; +PD; +PA 594 , 9531.78 ; +PU; +PU; +PA 467 , 9559.56 ; +PD; +PA 594 , 9559.56 ; +PU; +PU; +PA 467 , 9587.33 ; +PD; +PA 594 , 9587.33 ; +PU; +PU; +PA 467 , 9615.11 ; +PD; +PA 594 , 9615.11 ; +PU; +PU; +PA 467 , 9642.89 ; +PD; +PA 594 , 9642.89 ; +PU; +PU; +PA 467 , 9670.67 ; +PD; +PA 594 , 9670.67 ; +PU; +PU; +PA 340 , 9670.67 ; +PD; +PA 594 , 9670.67 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 9670.67 ; +PD; +LB 340 *; +PU; +PU; +PA 467 , 9698.44 ; +PD; +PA 594 , 9698.44 ; +PU; +PU; +PA 467 , 9726.22 ; +PD; +PA 594 , 9726.22 ; +PU; +PU; +PA 467 , 9754. ; +PD; +PA 594 , 9754. ; +PU; +PU; +PA 467 , 9781.78 ; +PD; +PA 594 , 9781.78 ; +PU; +PU; +PA 467 , 9809.56 ; +PD; +PA 594 , 9809.56 ; +PU; +PU; +PA 340 , 9809.56 ; +PD; +PA 594 , 9809.56 ; +PU; +PU; +PA 467 , 9837.33 ; +PD; +PA 594 , 9837.33 ; +PU; +PU; +PA 467 , 9865.11 ; +PD; +PA 594 , 9865.11 ; +PU; +PU; +PA 467 , 9892.89 ; +PD; +PA 594 , 9892.89 ; +PU; +PU; +PA 467 , 9920.67 ; +PD; +PA 594 , 9920.67 ; +PU; +PU; +PA 467 , 9948.44 ; +PD; +PA 594 , 9948.44 ; +PU; +PU; +PA 340 , 9948.44 ; +PD; +PA 594 , 9948.44 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 9948.44 ; +PD; +LB 350 *; +PU; +PU; +PA 467 , 9976.22 ; +PD; +PA 594 , 9976.22 ; +PU; +PU; +PA 467 , 10004. ; +PD; +PA 594 , 10004. ; +PU; +PU; +PA 467 , 10031.8 ; +PD; +PA 594 , 10031.8 ; +PU; +PU; +PA 467 , 10059.6 ; +PD; +PA 594 , 10059.6 ; +PU; +PU; +PA 467 , 10087.3 ; +PD; +PA 594 , 10087.3 ; +PU; +PU; +PA 340 , 10087.3 ; +PD; +PA 594 , 10087.3 ; +PU; +PU; +PA 467 , 10115.1 ; +PD; +PA 594 , 10115.1 ; +PU; +PU; +PA 467 , 10142.9 ; +PD; +PA 594 , 10142.9 ; +PU; +PU; +PA 467 , 10170.7 ; +PD; +PA 594 , 10170.7 ; +PU; +PU; +PA 467 , 10198.4 ; +PD; +PA 594 , 10198.4 ; +PU; +PU; +PA 467 , 10226.2 ; +PD; +PA 594 , 10226.2 ; +PU; +PU; +PA 340 , 10226.2 ; +PD; +PA 594 , 10226.2 ; +PU; +SD1,21,2,1,4,10,7,4148; +LO18; +DT*,1; +PU; +PA 340 , 10226.2 ; +PD; +LB 0 *; +PU; +PU; +PA 467 , 10254. ; +PD; +PA 594 , 10254. ; +PU; +UL8,5,20,5,20,5,20,5,20; +LT8; +PU; +PA 340 , 226.222 ; +PD; +PA 7650 , 226.222 ; +PU; +%0A +E diff --git a/SKYTEL/OUTPUT.TXT b/SKYTEL/OUTPUT.TXT new file mode 100644 index 0000000..640b93e --- /dev/null +++ b/SKYTEL/OUTPUT.TXT @@ -0,0 +1,170 @@ +-0.013 -0.008 0.000 0.000 +-0.156 -0.033 -0.155 -0.033 +-0.007 -0.001 0.000 0.000 + 0.056 -0.034 0.044 -0.027 +-0.125 0.012 -0.123 0.012 + 0.002 0.045 0.000 0.000 +-0.052 0.042 -0.042 0.033 + 0.011 -0.052 0.006 -0.027 +-0.029 0.011 0.000 0.000 +-0.107 0.104 -0.106 0.103 + 0.121 -0.014 0.119 -0.014 +-0.041 -0.036 -0.023 -0.020 +-0.027 0.027 0.000 0.000 +-0.027 0.005 0.000 0.000 +-0.011 -0.104 -0.011 -0.101 + 0.019 0.117 0.019 0.115 +-0.013 0.044 -0.001 0.004 + 0.061 -0.014 0.045 -0.010 +-0.042 -0.146 -0.042 -0.145 +-0.023 -0.018 0.000 0.000 +-0.040 -0.026 -0.008 -0.006 +-0.053 0.083 -0.051 0.080 + 0.039 0.045 0.027 0.030 + 0.051 -0.133 0.051 -0.131 +-0.084 0.088 -0.082 0.087 + 0.008 0.028 0.000 0.000 +-0.151 -0.046 -0.150 -0.046 + 0.024 0.063 0.019 0.051 + 0.065 0.027 0.054 0.022 + 0.016 -0.076 0.015 -0.068 + 0.002 0.126 0.002 0.124 + 0.012 -0.006 0.000 0.000 +-0.042 0.153 -0.042 0.152 +-0.066 0.031 -0.057 0.026 +-0.011 -0.099 -0.011 -0.095 + 0.001 0.001 0.000 0.000 + 0.062 -0.013 0.047 -0.010 + 0.116 -0.056 0.115 -0.055 +-0.108 -0.105 -0.107 -0.104 + 0.081 -0.115 0.080 -0.114 +-0.062 0.025 -0.050 0.020 + 0.024 -0.023 0.000 0.000 + 0.010 -0.002 0.000 0.000 + 0.027 -0.094 0.025 -0.090 +-0.031 0.029 0.000 0.000 +-0.071 0.135 -0.071 0.134 +-0.080 -0.094 -0.079 -0.093 + 0.002 -0.013 0.000 0.000 +-0.075 -0.026 -0.067 -0.024 + 0.013 -0.076 0.011 -0.067 +-0.131 0.082 -0.130 0.081 + 0.012 -0.026 0.000 0.000 +-0.080 0.011 -0.072 0.010 +-0.065 -0.114 -0.064 -0.112 +-0.086 0.120 -0.085 0.119 +-0.017 0.010 0.000 0.000 + 0.017 0.058 0.012 0.041 + 0.126 0.032 0.125 0.032 +-0.073 -0.016 -0.064 -0.014 + 0.075 0.002 0.065 0.002 +-0.068 -0.036 -0.061 -0.032 + 0.112 -0.016 0.109 -0.015 +-0.017 -0.029 0.000 0.000 +-0.019 -0.023 0.000 0.000 +-0.023 -0.153 -0.022 -0.152 + 0.029 -0.054 0.020 -0.038 + 0.011 0.123 0.011 0.121 + 0.034 0.058 0.028 0.047 +-0.004 -0.003 0.000 0.000 + 0.034 0.092 0.033 0.088 + 0.118 0.040 0.116 0.040 + 0.041 0.069 0.037 0.062 +-0.001 0.027 0.000 0.000 +-0.062 0.100 -0.061 0.098 + 0.027 0.145 0.027 0.144 + 0.042 0.003 0.000 0.000 + 0.124 -0.069 0.123 -0.068 + 0.018 0.150 0.018 0.149 +-0.069 -0.009 -0.058 -0.007 + 0.010 -0.006 0.000 0.000 +-0.068 -0.071 -0.065 -0.068 +-0.081 0.080 -0.079 0.078 + 0.051 0.003 0.020 0.001 +-0.015 0.015 0.000 0.000 + 0.046 0.130 0.045 0.129 +-0.012 -0.015 0.000 0.000 + 0.015 -0.056 0.010 -0.037 + 0.133 -0.045 0.132 -0.045 +-0.104 0.111 -0.103 0.110 +-0.032 0.079 -0.029 0.073 + 0.108 -0.115 0.107 -0.114 + 0.051 0.046 0.042 0.037 +-0.157 0.015 -0.156 0.015 + 0.084 -0.043 0.080 -0.041 + 0.042 -0.114 0.042 -0.112 +-0.030 0.010 0.000 0.000 + 0.003 0.146 0.003 0.144 +-0.071 0.003 -0.060 0.003 + 0.002 0.007 0.000 0.000 +-0.045 0.074 -0.042 0.069 + 0.013 -0.063 0.010 -0.048 + 0.013 0.009 0.000 0.000 + 0.099 0.096 0.098 0.095 +-0.062 -0.091 -0.060 -0.088 + 0.024 0.039 0.002 0.003 +-0.032 -0.076 -0.029 -0.069 +-0.080 -0.129 -0.080 -0.128 + 0.113 0.029 0.111 0.028 +-0.070 0.087 -0.068 0.085 +-0.096 0.015 -0.091 0.014 +-0.041 -0.126 -0.041 -0.124 +-0.003 0.064 -0.003 0.048 + 0.149 0.014 0.148 0.014 +-0.013 -0.110 -0.013 -0.107 + 0.073 0.096 0.071 0.094 +-0.044 0.073 -0.040 0.067 + 0.089 0.084 0.087 0.082 + 0.014 -0.007 0.000 0.000 + 0.079 0.036 0.073 0.033 +-0.040 0.107 -0.039 0.104 +-0.106 0.069 -0.104 0.068 +-0.011 0.001 0.000 0.000 + 0.134 0.032 0.132 0.031 +-0.117 0.053 -0.116 0.052 +-0.079 -0.005 -0.071 -0.005 + 0.063 0.019 0.049 0.015 +-0.103 0.045 -0.100 0.044 + 0.004 -0.002 0.000 0.000 + 0.103 -0.051 0.101 -0.050 +-0.103 -0.028 -0.100 -0.027 + 0.007 0.020 0.000 0.000 +-0.040 0.008 0.000 0.000 + 0.004 0.071 0.003 0.059 + 0.005 0.006 0.000 0.000 +-0.085 -0.045 -0.081 -0.043 + 0.050 0.127 0.049 0.126 + 0.016 -0.062 0.012 -0.048 +-0.019 0.015 0.000 0.000 + 0.144 -0.043 0.142 -0.043 +-0.027 0.043 -0.011 0.018 +-0.025 -0.081 -0.023 -0.075 + 0.053 0.101 0.052 0.099 +-0.006 0.093 -0.006 0.088 +-0.019 0.108 -0.019 0.105 + 0.029 -0.046 0.016 -0.025 + 0.025 -0.003 0.000 0.000 +-0.037 0.065 -0.032 0.056 +-0.100 -0.087 -0.098 -0.086 +-0.140 0.065 -0.139 0.064 +-0.015 -0.038 0.000 0.000 + 0.077 -0.015 0.069 -0.014 +-0.133 0.013 -0.131 0.013 + 0.060 -0.061 0.055 -0.056 +-0.030 0.014 0.000 0.000 + 0.019 -0.002 0.000 0.000 + 0.047 0.089 0.045 0.086 + 0.102 0.082 0.101 0.081 +-0.064 -0.134 -0.063 -0.133 +-0.136 0.047 -0.135 0.046 +-0.047 -0.031 -0.029 -0.018 +-0.077 -0.133 -0.076 -0.132 + 0.136 0.032 0.134 0.031 + 0.006 0.002 0.000 0.000 +-0.002 -0.014 0.000 0.000 +-0.040 -0.073 -0.037 -0.067 +-0.022 0.045 -0.008 0.016 +-0.014 0.129 -0.014 0.127 + 0.031 0.042 0.015 0.020 + 0.045 -0.023 0.016 -0.008 +-0.022 -0.014 0.000 0.000 diff --git a/SKYTEL/PAD80.BAS b/SKYTEL/PAD80.BAS new file mode 100644 index 0000000..f08eb98 --- /dev/null +++ b/SKYTEL/PAD80.BAS @@ -0,0 +1,43 @@ +010 OPTION VERSION BYWATER +020 OPTION BUGS OFF +100 REM PAD80.BAS +101 REM Pad the test output to 80 characters. +102 REM bwbasic P001.BAS > P001.OUT +103 REM echo "500 DATA P001.OUT, P001.80" > PAD80.INP +104 REM bwbasic PAD80.BAS +105 REM diff P001.run P001.80 +109 REM ---------------------------------------------------------- +120 REM GET FILE NAME INTO A$ +125 DELETE 500 +126 MERGE "PAD80.INP" +127 RESTORE 500 +130 READ A$ +135 REM PRINT "SOURCE:"; A$ +140 READ B$ +145 REM PRINT "TARGET:"; B$ +300 REM ---------------------------------------------------------- +301 REM PROCESS FILENAME IN A$ +302 REM ---------------------------------------------------------- +310 OPEN A$ FOR INPUT AS #2 +315 OPEN B$ FOR OUTPUT AS #3 +320 REM PRINT "PROCESS TEXT LINE" +330 IF EOF( 2 ) THEN 390 +335 REM PRINT "NOT EOF" +340 LINE INPUT #2, C$ +345 REM PRINT "C$=";C$ +350 C$ = LEFT$( C$ + SPACE$( 80 ), 80 ) +355 REM PRINT "yyy" +360 REM WRITE OUTPUT LINE +370 PRINT #3, C$ +375 REM PRINT "zzz" +380 GOTO 320 +390 REM CLOSE FILES +400 CLOSE #3 +410 CLOSE #2 +499 REM ---------------------------------------------------------- +500 REM REPLACED BY CONTENTS OF "PAD80.INP" +501 REM ---------------------------------------------------------- +900 REM ---------------------------------------------------------- +910 REM THE END +920 REM ---------------------------------------------------------- +999 END diff --git a/SKYTEL/PAD80.INP b/SKYTEL/PAD80.INP new file mode 100644 index 0000000..3fdeacc --- /dev/null +++ b/SKYTEL/PAD80.INP @@ -0,0 +1 @@ +500 DATA xyz.OUT, xyz.80 diff --git a/SKYTEL/addmag.80 b/SKYTEL/addmag.80 new file mode 100644 index 0000000..104c383 --- /dev/null +++ b/SKYTEL/addmag.80 @@ -0,0 +1,6 @@ +1ST STAR MAG? 2 +2ND STAR MAG? 3 +TOTAL MAG: 1.63615 + +ANOTHER STAR? X +STAR COUNT: 2 diff --git a/SKYTEL/addmag.INP b/SKYTEL/addmag.INP new file mode 100644 index 0000000..7083f64 --- /dev/null +++ b/SKYTEL/addmag.INP @@ -0,0 +1,3 @@ +2 +3 +X diff --git a/SKYTEL/addmag.OUT b/SKYTEL/addmag.OUT new file mode 100644 index 0000000..34a2ca6 --- /dev/null +++ b/SKYTEL/addmag.OUT @@ -0,0 +1,6 @@ +1ST STAR MAG? 2 +2ND STAR MAG? 3 +TOTAL MAG: 1.63615 + +ANOTHER STAR? X +STAR COUNT: 2 diff --git a/SKYTEL/addmag.bas b/SKYTEL/addmag.bas new file mode 100644 index 0000000..bdbbbfd --- /dev/null +++ b/SKYTEL/addmag.bas @@ -0,0 +1,19 @@ +10 REM ADDING MAGNITUDES +15 REM +20 B=100^.2: N=2: C=LOG(10) +25 INPUT "1ST STAR MAG";M1 +30 INPUT "2ND STAR MAG";M2 +35 M = B^(-M1) + B^(-M2) +40 M = -2.5*LOG(M)/C +45 PRINT "TOTAL MAG: ";M +50 M1=M: N=N+1: PRINT +55 INPUT "ANOTHER STAR";M$ +60 IF M$="X" THEN 75 +70 M2=VAL(M$): GOTO 35 +75 PRINT "STAR COUNT: ";N-1 +80 END +81 REM ------------------------ +82 REM APPEARED IN ASTRONOMICAL +83 REM COMPUTING, SKY & TELE- +84 REM SCOPE, APRIL, 1984 +85 REM ------------------------ diff --git a/SKYTEL/addmag.dif b/SKYTEL/addmag.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/addmag.run b/SKYTEL/addmag.run new file mode 100644 index 0000000..104c383 --- /dev/null +++ b/SKYTEL/addmag.run @@ -0,0 +1,6 @@ +1ST STAR MAG? 2 +2ND STAR MAG? 3 +TOTAL MAG: 1.63615 + +ANOTHER STAR? X +STAR COUNT: 2 diff --git a/SKYTEL/altaz.80 b/SKYTEL/altaz.80 new file mode 100644 index 0000000..061eb64 --- /dev/null +++ b/SKYTEL/altaz.80 @@ -0,0 +1,7 @@ +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,22 +LAT, LONG ? 120,45 +GST (H,M,S) ? 8,21,32 + +ALTITUDE: 2.19555 +AZIMUTH: 84.3393 diff --git a/SKYTEL/altaz.INP b/SKYTEL/altaz.INP new file mode 100644 index 0000000..1a20282 --- /dev/null +++ b/SKYTEL/altaz.INP @@ -0,0 +1,4 @@ +5,45,32 +180,55,22 +120,45 +8,21,32 diff --git a/SKYTEL/altaz.OUT b/SKYTEL/altaz.OUT new file mode 100644 index 0000000..16d2150 --- /dev/null +++ b/SKYTEL/altaz.OUT @@ -0,0 +1,7 @@ +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,22 +LAT, LONG ? 120,45 +GST (H,M,S) ? 8,21,32 + +ALTITUDE: 2.19555 +AZIMUTH: 84.3393 diff --git a/SKYTEL/altaz.bas b/SKYTEL/altaz.bas new file mode 100644 index 0000000..8db427c --- /dev/null +++ b/SKYTEL/altaz.bas @@ -0,0 +1,42 @@ +10 REM ALTITUDE AND AZIMUTH +12 REM +14 P=3.14159265: R1=P/180 +16 INPUT "R A (H,M,S) ";A$,A2,A3 +18 GOSUB 72: R=A*15*R1 +20 INPUT "DEC (D,M,S) ";A$,A2,A3 +22 GOSUB 72: D=A*R1 +24 INPUT "LAT, LONG ";B,L +26 B=B*R1: L=L*R1 +28 INPUT "GST (H,M,S) ";A$,A2,A3 +30 GOSUB 72: T=A*15*R1 +32 T5=T-R+L: REM LHA +34 S1=SIN(B)*SIN(D) +36 S1=S1+COS(B)*COS(D)*COS(T5) +38 C1=1-S1*S1 +40 IF C1>0 THEN C1=SQR(C1) +42 IF C1<=0 THEN 46 +44 H=ATN(S1/C1): GOTO 48 +46 H=SGN(S1)*P/2 +48 C2=COS(B)*SIN(D) +50 C2=C2-SIN(B)*COS(D)*COS(T5) +52 S2=-COS(D)*SIN(T5) +54 IF C2=0 THEN A=SGN(S2)*P/2 +56 IF C2=0 THEN 62 +58 A=ATN(S2/C2) +60 IF C2<0 THEN A=A+P +62 IF A<0 THEN A=A+2*P +64 PRINT +66 PRINT "ALTITUDE: ";H/R1 +68 PRINT "AZIMUTH: ";A/R1 +70 END +72 REM SEXAGESIMAL TO DECIMAL +74 REM +76 S=1: A1=ABS(VAL(A$)) +78 IF LEFT$(A$,1)="-" THEN S=-1 +80 A=S*(A1+A2/60+A3/3600) +82 RETURN +84 REM ------------------------ +86 REM APPEARED IN ASTRONOMICAL +88 REM COMPUTING, SKY & TELE- +90 REM SCOPE, JUNE, 1984 +92 REM ------------------------ diff --git a/SKYTEL/altaz.dif b/SKYTEL/altaz.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/altaz.run b/SKYTEL/altaz.run new file mode 100644 index 0000000..061eb64 --- /dev/null +++ b/SKYTEL/altaz.run @@ -0,0 +1,7 @@ +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,22 +LAT, LONG ? 120,45 +GST (H,M,S) ? 8,21,32 + +ALTITUDE: 2.19555 +AZIMUTH: 84.3393 diff --git a/SKYTEL/altaz2.80 b/SKYTEL/altaz2.80 new file mode 100644 index 0000000..66bb2a5 --- /dev/null +++ b/SKYTEL/altaz2.80 @@ -0,0 +1,7 @@ +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,22 +LAT, LONG ? 120,45 +GST (H,M,S) ? 8,21,32 + +ALTITUDE: 2.46535 +AZIMUTH: 84.3393 diff --git a/SKYTEL/altaz2.INP b/SKYTEL/altaz2.INP new file mode 100644 index 0000000..1a20282 --- /dev/null +++ b/SKYTEL/altaz2.INP @@ -0,0 +1,4 @@ +5,45,32 +180,55,22 +120,45 +8,21,32 diff --git a/SKYTEL/altaz2.OUT b/SKYTEL/altaz2.OUT new file mode 100644 index 0000000..b04e5fb --- /dev/null +++ b/SKYTEL/altaz2.OUT @@ -0,0 +1,7 @@ +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,22 +LAT, LONG ? 120,45 +GST (H,M,S) ? 8,21,32 + +ALTITUDE: 2.46535 +AZIMUTH: 84.3393 diff --git a/SKYTEL/altaz2.bas b/SKYTEL/altaz2.bas new file mode 100644 index 0000000..5aacab8 --- /dev/null +++ b/SKYTEL/altaz2.bas @@ -0,0 +1,54 @@ +10 REM ALTITUDE AND AZIMUTH +12 REM +14 P=3.14159265: R1=P/180 +16 INPUT "R A (H,M,S) ";A$,A2,A3 +18 GOSUB 72: R=A*15*R1 +20 INPUT "DEC (D,M,S) ";A$,A2,A3 +22 GOSUB 72: D=A*R1 +24 INPUT "LAT, LONG ";B,L +26 B=B*R1: L=L*R1 +28 INPUT "GST (H,M,S) ";A$,A2,A3 +30 GOSUB 72: T=A*15*R1 +32 T5=T-R+L: REM LHA +34 S1=SIN(B)*SIN(D) +36 S1=S1+COS(B)*COS(D)*COS(T5) +38 C1=1-S1*S1 +40 IF C1>0 THEN C1=SQR(C1) +42 IF C1<=0 THEN 46 +44 H=ATN(S1/C1): GOTO 48 +46 H=SGN(S1)*P/2 +48 C2=COS(B)*SIN(D) +50 C2=C2-SIN(B)*COS(D)*COS(T5) +52 S2=-COS(D)*SIN(T5) +54 IF C2=0 THEN A=SGN(S2)*P/2 +56 IF C2=0 THEN 62 +58 A=ATN(S2/C2) +60 IF C2<0 THEN A=A+P +62 IF A<0 THEN A=A+2*P +64 PRINT +65 GOSUB 200 +66 PRINT "ALTITUDE: ";H/R1 +68 PRINT "AZIMUTH: ";A/R1 +70 END +72 REM SEXAGESIMAL TO DECIMAL +74 REM +76 S=1: A1=ABS(VAL(A$)) +78 IF LEFT$(A$,1)="-" THEN S=-1 +80 A=S*(A1+A2/60+A3/3600) +82 RETURN +200 REM TRUE ALT TO APP ALT +210 REM +220 H5=H/R1 +230 V5=(H5+10.3/(H5+5.11))*R1 +240 R5=1.02*COS(V5)/SIN(V5) +250 H=H+R5*R1/60 +260 RETURN +284 REM ------------------------ +286 REM APPEARED IN ASTRONOMICAL +288 REM COMPUTING, SKY & TELE- +290 REM SCOPE, JUNE, 1984, +292 REM AND MODIFIED IN THE JULY, +294 REM 1986, ISSUE TO CONVERT +296 REM FROM TRUE TO APPARENT +298 REM ALTITUDE +300 REM ------------------------ diff --git a/SKYTEL/altaz2.dif b/SKYTEL/altaz2.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/altaz2.run b/SKYTEL/altaz2.run new file mode 100644 index 0000000..66bb2a5 --- /dev/null +++ b/SKYTEL/altaz2.run @@ -0,0 +1,7 @@ +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,22 +LAT, LONG ? 120,45 +GST (H,M,S) ? 8,21,32 + +ALTITUDE: 2.46535 +AZIMUTH: 84.3393 diff --git a/SKYTEL/angsep.80 b/SKYTEL/angsep.80 new file mode 100644 index 0000000..e13445f --- /dev/null +++ b/SKYTEL/angsep.80 @@ -0,0 +1,11 @@ +FIRST STAR -- +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,44 + +SECOND STAR -- +R A (H,M,S) ? 7,21,34 +DEC (D,M,S) ? 45,23,45 + +SEPARATION -- +IN DEGREES: 130.762 +IN ARC SEC: 470742. diff --git a/SKYTEL/angsep.INP b/SKYTEL/angsep.INP new file mode 100644 index 0000000..d69ce58 --- /dev/null +++ b/SKYTEL/angsep.INP @@ -0,0 +1,4 @@ +5,45,32 +180,55,44 +7,21,34 +45,23,45 diff --git a/SKYTEL/angsep.OUT b/SKYTEL/angsep.OUT new file mode 100644 index 0000000..688571d --- /dev/null +++ b/SKYTEL/angsep.OUT @@ -0,0 +1,11 @@ +FIRST STAR -- +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,44 + +SECOND STAR -- +R A (H,M,S) ? 7,21,34 +DEC (D,M,S) ? 45,23,45 + +SEPARATION -- +IN DEGREES: 130.762 +IN ARC SEC: 470742. diff --git a/SKYTEL/angsep.bas b/SKYTEL/angsep.bas new file mode 100644 index 0000000..e6c9af6 --- /dev/null +++ b/SKYTEL/angsep.bas @@ -0,0 +1,36 @@ +10 REM ANGULAR SEPARATION +12 REM +14 P=3.14159265: C=P/180 +16 PRINT "FIRST STAR --" +18 INPUT "R A (H,M,S) ";A$,A2,A3 +20 GOSUB 60 : R1=A*15*C +22 INPUT "DEC (D,M,S) ";A$,A2,A3 +24 GOSUB 60 : D1=A*C +26 PRINT +28 PRINT "SECOND STAR --" +30 INPUT "R A (H,M,S) ";A$,A2,A3 +32 GOSUB 60 : R2=A*15*C +34 INPUT "DEC (D,M,S) ";A$,A2,A3 +36 GOSUB 60 : D2=A*C +38 REM +40 D=SIN((D1-D2)/2): H1=D*D +42 A=SIN((R1-R2)/2): H2=A*A +44 H3=H1+COS(D1)*COS(D2)*H2 +46 S1=SQR(H3): C1=SQR(1-S1*S1) +48 S=2*ATN(S1/C1)/C +50 PRINT +52 PRINT "SEPARATION --" +54 PRINT "IN DEGREES: ";S +56 PRINT "IN ARC SEC: ";S*3600 +58 END +60 REM SEXAGESIMAL TO DECIMAL +62 REM +64 F=1: A1=ABS(VAL(A$)) +66 IF LEFT$(A$,1)="-" THEN F=-1 +68 A=F*(A1+A2/60+A3/3600) +70 RETURN +80 REM ------------------------ +85 REM APPEARED IN ASTRONOMICAL +90 REM COMPUTING, SKY & TELE- +95 REM SCOPE, AUGUST, 1984 +99 REM ------------------------ diff --git a/SKYTEL/angsep.dif b/SKYTEL/angsep.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/angsep.run b/SKYTEL/angsep.run new file mode 100644 index 0000000..e13445f --- /dev/null +++ b/SKYTEL/angsep.run @@ -0,0 +1,11 @@ +FIRST STAR -- +R A (H,M,S) ? 5,45,32 +DEC (D,M,S) ? 180,55,44 + +SECOND STAR -- +R A (H,M,S) ? 7,21,34 +DEC (D,M,S) ? 45,23,45 + +SEPARATION -- +IN DEGREES: 130.762 +IN ARC SEC: 470742. diff --git a/SKYTEL/asteroid.80 b/SKYTEL/asteroid.80 new file mode 100644 index 0000000..5a8788d --- /dev/null +++ b/SKYTEL/asteroid.80 @@ -0,0 +1,13 @@ +Apparent visual magnitude, V? 1.1 +Distance from Sun (au) ? 2.2 +Distance from Earth (au) ? 3.3 +Earth-Sun distance (au) ? 1.23 +Asteroid type -- + C, S, or O(ther)? C +Now enter the photometric slope +parameter (G), or if unknown +enter 0.15. Value of G ? 0.14 + +Solar phase angle, phi: 11.7 +Absolute mag (H): -3.9 +Diameter (km): 41837.6 diff --git a/SKYTEL/asteroid.INP b/SKYTEL/asteroid.INP new file mode 100644 index 0000000..f3ccbcd --- /dev/null +++ b/SKYTEL/asteroid.INP @@ -0,0 +1,6 @@ +1.1 +2.2 +3.3 +1.23 +C +0.14 diff --git a/SKYTEL/asteroid.OUT b/SKYTEL/asteroid.OUT new file mode 100644 index 0000000..f251f9f --- /dev/null +++ b/SKYTEL/asteroid.OUT @@ -0,0 +1,13 @@ +Apparent visual magnitude, V? 1.1 +Distance from Sun (au) ? 2.2 +Distance from Earth (au) ? 3.3 +Earth-Sun distance (au) ? 1.23 +Asteroid type -- + C, S, or O(ther)? C +Now enter the photometric slope +parameter (G), or if unknown +enter 0.15. Value of G ? 0.14 + +Solar phase angle, phi: 11.7 +Absolute mag (H): -3.9 +Diameter (km): 41837.6 diff --git a/SKYTEL/asteroid.bas b/SKYTEL/asteroid.bas new file mode 100644 index 0000000..a0e4b36 --- /dev/null +++ b/SKYTEL/asteroid.bas @@ -0,0 +1,38 @@ +10 ' The Size of an Asteroid +20 ' +30 RD=180/3.14159: ' Radians to degrees +40 INPUT "Apparent visual magnitude, V";V +50 INPUT "Distance from Sun (au) ";R0 +60 INPUT "Distance from Earth (au) ";D0 +70 INPUT "Earth-Sun distance (au) ";R +80 PRINT "Asteroid type --" +90 INPUT " C, S, or O(ther)";T$ +100 IF T$="c" OR T$="C" THEN P=.037 +110 IF T$="s" OR T$="S" THEN P=.14 +120 IF T$="o" OR T$="O" THEN INPUT "What is the albedo";P +130 IF P>1 OR P<=0 THEN 120 +140 PRINT "Now enter the photometric slope" +142 PRINT "parameter (G), or if unknown" +143 INPUT "enter 0.15. Value of G ";G +150 PRINT +160 CI=(R0^2+D0^2-R^2)/(2*R0*D0) +170 F=ATN(SQR(1-CI*CI)/CI) +180 IF CI<0 THEN F=F+3.14159 +190 ' F = solar phase angle in radians +200 PRINT USING "Solar phase angle, phi: ###.#";F*RD +210 P1=EXP(-3.33*(TAN(F/2))^.63) +220 P2=EXP(-1.87*(TAN(F/2))^1.22) +230 H=V-5*LOG(D0*R0)/LOG(10)+2.5*LOG((1-G)*P1+G*P2)/LOG(10) +240 PRINT USING "Absolute mag (H): ###.#";H +250 LD=3.12-.2*H-.5*LOG(P)/LOG(10) +260 D=10^LD +270 PRINT USING "Diameter (km): ####.#";D +280 END +290 ' +300 ' Basil Rowe's program calculates the size of an asteroid from +310 ' its apparent brightness and an assumption about its reflectivity +320 ' (albedo). The calculation is explained on page 83 of the +330 ' June 1993 issue of Sky & Telescope. Carbonaceous asteroids +340 ' have albedos of about 0.04, while S-type (stony) asteroids +350 ' reflect about 0.14 of the light. + \ No newline at end of file diff --git a/SKYTEL/asteroid.dif b/SKYTEL/asteroid.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/asteroid.run b/SKYTEL/asteroid.run new file mode 100644 index 0000000..5a8788d --- /dev/null +++ b/SKYTEL/asteroid.run @@ -0,0 +1,13 @@ +Apparent visual magnitude, V? 1.1 +Distance from Sun (au) ? 2.2 +Distance from Earth (au) ? 3.3 +Earth-Sun distance (au) ? 1.23 +Asteroid type -- + C, S, or O(ther)? C +Now enter the photometric slope +parameter (G), or if unknown +enter 0.15. Value of G ? 0.14 + +Solar phase angle, phi: 11.7 +Absolute mag (H): -3.9 +Diameter (km): 41837.6 diff --git a/SKYTEL/binary.80 b/SKYTEL/binary.80 new file mode 100644 index 0000000..ddebd31 --- /dev/null +++ b/SKYTEL/binary.80 @@ -0,0 +1,12 @@ +SEMIMAJOR AXIS? 7 +ECCENTRICITY ? 0.9 +EPOCH OF PERIASTRON? 5 +PERIOD IN YEARS ? 10 +INCLINATION ? 1.2 +ARG OF PERIASTRON ? 3.4 +P.A. OF ASC NODE ? 5.6 +DATE OF OBS (YR) ? 2000 +P.A. 189 DEG +SEP. 13.3 ARC SEC + +ANOTHER (Y OR N)? N diff --git a/SKYTEL/binary.INP b/SKYTEL/binary.INP new file mode 100644 index 0000000..1eb46a6 --- /dev/null +++ b/SKYTEL/binary.INP @@ -0,0 +1,9 @@ +7 +0.9 +5 +10 +1.2 +3.4 +5.6 +2000 +N diff --git a/SKYTEL/binary.OUT b/SKYTEL/binary.OUT new file mode 100644 index 0000000..af5b1a2 --- /dev/null +++ b/SKYTEL/binary.OUT @@ -0,0 +1,12 @@ +SEMIMAJOR AXIS? 7 +ECCENTRICITY ? 0.9 +EPOCH OF PERIASTRON? 5 +PERIOD IN YEARS ? 10 +INCLINATION ? 1.2 +ARG OF PERIASTRON ? 3.4 +P.A. OF ASC NODE ? 5.6 +DATE OF OBS (YR) ? 2000 +P.A. 189 DEG +SEP. 13.3 ARC SEC + +ANOTHER (Y OR N)? N diff --git a/SKYTEL/binary.bas b/SKYTEL/binary.bas new file mode 100644 index 0000000..95acb29 --- /dev/null +++ b/SKYTEL/binary.bas @@ -0,0 +1,47 @@ +10 REM BINARY STAR ORBIT +12 REM +14 P1=4*ATN(1): R1=180/P1 +16 C=2*P1: A1=0.0000005 +18 REM +20 INPUT "SEMIMAJOR AXIS";A +22 INPUT "ECCENTRICITY ";E0 +24 IF INT(E0)=0 THEN 30 +26 PRINT "NOT VALID; REENTER" +28 GOTO 22 +30 INPUT "EPOCH OF PERIASTRON";T +32 INPUT "PERIOD IN YEARS ";P +34 INPUT "INCLINATION ";I +36 INPUT "ARG OF PERIASTRON ";W +38 INPUT "P.A. OF ASC NODE ";L +40 I=I/R1: W=W/R1: L=L/R1 +42 REM +44 INPUT "DATE OF OBS (YR) ";D +46 T1=D-T: M=C*T1/P +48 E=M+E0*SIN(M)+E0*E0*SIN(2*M)/2 +50 N=E-E0*SIN(E): G=M-N +52 F=G/(1-E0*COS(E)): E=E+F +54 IF ABS(G)>A1 THEN 50 +56 U=(1+E0)/(1-E0): H=COS(E/2) +58 IF H=0 THEN V=P1: GOTO 62 +60 V=2*ATN(SQR(U)*SIN(E/2)/H) +62 K=V+W: Y=SIN(K)*COS(I) +64 X=COS(K): Q=ATN(Y/X) +66 IF X<0 THEN Q=Q+P1 +68 IF X<0 THEN 72 +70 IF Y<0 THEN Q=Q+C +72 P2=Q+L: IF P2>C THEN P2=P2-C +74 R=A-A*E0*COS(E) +76 S=R*X/COS(Q) +78 P3=INT(P2*R1*10+0.5)/10 +80 S3=INT(S*100+0.5)/100 +82 PRINT "P.A. ";P3;" DEG" +84 PRINT "SEP. ";S3;" ARC SEC" +86 PRINT +88 INPUT "ANOTHER (Y OR N)";Q$ +90 IF Q$<>"N" THEN 44 +92 REM ======================== +94 REM FROM "ASTRONOMICAL +96 REM COMPUTING," SKY & TELE- +98 REM SCOPE, JULY, 1987 +100 REM ======================== +102 END diff --git a/SKYTEL/binary.dif b/SKYTEL/binary.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/binary.run b/SKYTEL/binary.run new file mode 100644 index 0000000..ddebd31 --- /dev/null +++ b/SKYTEL/binary.run @@ -0,0 +1,12 @@ +SEMIMAJOR AXIS? 7 +ECCENTRICITY ? 0.9 +EPOCH OF PERIASTRON? 5 +PERIOD IN YEARS ? 10 +INCLINATION ? 1.2 +ARG OF PERIASTRON ? 3.4 +P.A. OF ASC NODE ? 5.6 +DATE OF OBS (YR) ? 2000 +P.A. 189 DEG +SEP. 13.3 ARC SEC + +ANOTHER (Y OR N)? N diff --git a/SKYTEL/blkhole1.80 b/SKYTEL/blkhole1.80 new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/blkhole1.INP b/SKYTEL/blkhole1.INP new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/SKYTEL/blkhole1.INP @@ -0,0 +1 @@ + diff --git a/SKYTEL/blkhole1.OUT b/SKYTEL/blkhole1.OUT new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/blkhole1.bas b/SKYTEL/blkhole1.bas new file mode 100644 index 0000000..d6587b5 --- /dev/null +++ b/SKYTEL/blkhole1.bas @@ -0,0 +1,22 @@ +10 REM Compute Mass of Black Hole +20 REM Print Data for M vs C vs P Plot +30 REM C0 = orbital circumference, km +40 REM P0 = orbital period, seconds +50 REM G = gravitational constant +60 G=1.327E11 +70 P=3.14159 +80 OPEN "OUTPUT.TXT" FOR OUTPUT AS #1 +90 FOR C0=1E5 TO 1E7 STEP 2E5 +100 PRINT#1, "C0 is: "; C0 +110 FOR P0=10 TO 1000 STEP 10 +120 M=C0*C0*C0/(2*P*G*P0*P0) +130 PRINT#1, P0, M +140 NEXT P0 +150 NEXT C0 +160 CLOSE#1 +170 REM ======================== +180 REM FROM "ASTRONOMICAL +190 REM COMPUTING," SKY & TELE- +200 REM SCOPE, MAY 1996 +210 REM ======================== +220 END diff --git a/SKYTEL/blkhole1.dif b/SKYTEL/blkhole1.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/blkhole1.run b/SKYTEL/blkhole1.run new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/blkhole2.80 b/SKYTEL/blkhole2.80 new file mode 100644 index 0000000..c88969e --- /dev/null +++ b/SKYTEL/blkhole2.80 @@ -0,0 +1,3 @@ +Length: 2.0 meters, Tidal Force: 4.1 +Length: 3.0 meters, Tidal Force: 6.1 +Length: 4.0 meters, Tidal Force: 8.1 diff --git a/SKYTEL/blkhole2.INP b/SKYTEL/blkhole2.INP new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/SKYTEL/blkhole2.INP @@ -0,0 +1 @@ + diff --git a/SKYTEL/blkhole2.OUT b/SKYTEL/blkhole2.OUT new file mode 100644 index 0000000..9cad3ce --- /dev/null +++ b/SKYTEL/blkhole2.OUT @@ -0,0 +1,3 @@ +Length: 2.0 meters, Tidal Force: 4.1 +Length: 3.0 meters, Tidal Force: 6.1 +Length: 4.0 meters, Tidal Force: 8.1 diff --git a/SKYTEL/blkhole2.bas b/SKYTEL/blkhole2.bas new file mode 100644 index 0000000..eea8729 --- /dev/null +++ b/SKYTEL/blkhole2.bas @@ -0,0 +1,22 @@ +10 REM Compute Black-Hole Tidal Force Upon Body +20 REM G = Grav. constant +30 REM M = Mass, solar masses +40 REM L = separation, km +50 REM C = circumference, km +60 REM A = difference in acceleration, km/sec**2 +70 C=100000 +80 G=1.327E11 +90 P=3.14159 +100 M=303 +110 FOR L=.002 TO .004 STEP .001 +120 A=16*P*P*P*G*M*L/(C*C*C) +130 REM Convert to meters and g units +140 L1=L*1000: A=(A*1000)/9.81 +150 PRINT USING "Length: ###.# meters, Tidal Force: ###.# g";L1;A +160 NEXT L +170 REM ======================== +180 REM FROM "ASTRONOMICAL +190 REM COMPUTING," SKY & TELE- +200 REM SCOPE, MAY 1996 +210 REM ======================== +220 END diff --git a/SKYTEL/blkhole2.dif b/SKYTEL/blkhole2.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/blkhole2.run b/SKYTEL/blkhole2.run new file mode 100644 index 0000000..c88969e --- /dev/null +++ b/SKYTEL/blkhole2.run @@ -0,0 +1,3 @@ +Length: 2.0 meters, Tidal Force: 4.1 +Length: 3.0 meters, Tidal Force: 6.1 +Length: 4.0 meters, Tidal Force: 8.1 diff --git a/SKYTEL/blkhole3.80 b/SKYTEL/blkhole3.80 new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/blkhole3.INP b/SKYTEL/blkhole3.INP new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/SKYTEL/blkhole3.INP @@ -0,0 +1 @@ + diff --git a/SKYTEL/blkhole3.OUT b/SKYTEL/blkhole3.OUT new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/blkhole3.bas b/SKYTEL/blkhole3.bas new file mode 100644 index 0000000..b4e9327 --- /dev/null +++ b/SKYTEL/blkhole3.bas @@ -0,0 +1,27 @@ +10 REM Compute Black-Hole Accelergram +20 P = 3.14159 +30 A$="##.### ##.### ##.### ##.###" +40 OPEN "OUTPUT.TXT" FOR OUTPUT AS #1 +50 FOR I=0 TO 1000 +60 REM Generate random circumference +70 C=2!*P*RND +80 REM Generate random angle +90 T=2!*P*RND: R=C/(2!*P) +100 X1=R*COS(T): Y1=R*SIN(T) +110 REM Determine vector length +120 R=R-.001/(C*C*C) +130 IF R<0 THEN R=0 +140 X2=R*COS(T): Y2=R*SIN(T) +150 D=SQR((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1)) +160 REM Don't plot vectors too small to see +170 REM Print end-points for plot package +180 IF D<.001 THEN GOTO 200 +190 PRINT#1, USING A$;X1;Y1;X2;Y2 +200 NEXT I +210 CLOSE#1 +220 REM ======================== +230 REM FROM "ASTRONOMICAL +240 REM COMPUTING," SKY & TELE- +250 REM SCOPE, MAY 1996 +260 REM ======================== +270 END diff --git a/SKYTEL/blkhole3.dif b/SKYTEL/blkhole3.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/blkhole3.run b/SKYTEL/blkhole3.run new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/broken/00readme.txt b/SKYTEL/broken/00readme.txt new file mode 100644 index 0000000..8a33069 --- /dev/null +++ b/SKYTEL/broken/00readme.txt @@ -0,0 +1,6 @@ +These programs: +1) use commands that are not supported by bwBASIC at this time, and/or +2) are not easy to test using the current automated method, and/or +3) there are no plans to support graphics at this time. + +EOF diff --git a/SKYTEL/broken/ageuniv.bas b/SKYTEL/broken/ageuniv.bas new file mode 100644 index 0000000..e4d18b6 --- /dev/null +++ b/SKYTEL/broken/ageuniv.bas @@ -0,0 +1,64 @@ +10 ' AGE OF THE UNIVERSE +20 ' +30 DEFDBL A-H,J-Z: DEFINT I: SCREEN 9: KEY OFF +40 LOCATE 15,1: PRINT "Hubble constant [ 25 to 150 (km/s)/Mpc ] "; +50 INPUT H0: IF H0<25# OR H0>150# THEN CLS: GOTO 40 +60 HT=(3.085678D+19)/(H0*31557600#) +70 LOCATE 17,1: PRINT "Omega zero [ 0 to 5 ]"; +80 PRINT SPC(40);: LOCATE 17,23 +90 INPUT OZ: PRINT: IF OZ<0# OR OZ>5# THEN GOTO 70 +100 IF OZ=0# THEN OS=1#: GOTO 180 +110 IF OZ=1# THEN OS=1.5#*SQR(3#): GOTO 180 +120 IF OZ<=.5# THEN GM=(1#-OZ+SQR(1#-2#*OZ))/OZ +130 IF OZ<=.5# THEN X=.5#*(GM^(1#/3#)+GM^(-1#/3#)) +140 IF OZ>.5# THEN AL=ATN(SQR(2#*OZ-1#)/(1#-OZ)) +150 IF AL<0# THEN AL=AL+4#*ATN(1#) +160 IF OZ>.5# THEN X=COS(AL/3#) +170 OS=4#*OZ*X*X*X +180 PRINT USING "Omega lambda < #.########## gives Big Bang"; OS +190 PRINT USING "Omega lambda > #.########## gives no Big Bang"; OS +200 LOCATE 22,1: PRINT "Omega lambda [ -10 to 10 ]"; +210 PRINT SPC(40);: LOCATE 22,28: INPUT OL +220 IF OL<-10# OR OL>10# THEN GOTO 200 +230 CLS: LOCATE 22,17 +240 PRINT " Hubble constant Omega zero Omega lambda" +250 LOCATE 23,17: PRINT USING " ### (km/s)/Mpc ";H0; +260 PRINT USING " ##.#### ###.##########";OZ;OL; +270 LINE (0,5)-(639,260),7,B: TL=-5#: TR=5# +280 LOCATE 1,29: COLOR 15: PRINT " Scale Factor vs. Time " +290 FOR I=1 TO 4: TN=0#: RN=1#: DN=1# +300 COLOR 12: IF I=4 THEN COLOR 9 +310 HN=.0025#: IF I=1 OR I=3 THEN HN=-HN +320 T=TN: R=RN: D=DN: DP=DN: TP=TN +330 F=OL*R-OZ/(2#*R*R): K1=HN*F: L1=HN*D +340 T=TN+HN/2#: R=RN+L1/2#: D=DN+K1/2# +350 F=OL*R-OZ/(2#*R*R): K2=HN*F: L2=HN*D +360 T=TN+HN/2#: R=RN+L2/2#: D=DN+K2/2# +370 F=OL*R-OZ/(2#*R*R): K3=HN*F: L3=HN*D +380 T=TN+HN: R=RN+L3: D=DN+K3 +390 F=OL*R-OZ/(2#*R*R): K4=HN*F: L4=HN*D +400 TN=TN+HN: RP=RN: DP=DN +410 RN=RN+(L1+2#*L2+2#*L3+L4)/6# +420 DN=DN+(K1+2#*K2+2#*K3+K4)/6# +430 IF RN<0# OR RN>3# OR TNTR THEN GOTO 460 +440 IF I>2 THEN PSET (640*(TN-TL)/(TR-TL),260-RN*85) +450 GOTO 320 +460 IF I=1 THEN TL=TN +470 IF I=2 THEN TR=TN*1.1# +480 IF I=2 THEN XP=640/(1-TR/TL): CIRCLE (XP,175),3,14 +490 IF I=2 THEN LINE (XP,260)-(XP,250),15 +500 IF I=3 THEN LOCATE 19,XP/16: COLOR 12: PRINT "PAST"; +510 IF I=3 AND RN<0# THEN LOCATE 20,1: COLOR 7: PRINT "0"; +520 A=XP/8-2: IF ABS(A-32)>30 THEN A=32+30*SGN(A-32) +530 T=TN-HN-RP/DP: IF OZ>0# THEN T=T+RP/(3#*DP) +540 LOCATE 20,A: COLOR 14: AG=ABS(T*HT/10 ^ 9) +550 IF I=3 AND RN<0# THEN PRINT USING "###.# billion years"; AG; +560 IF I=4 THEN LOCATE 19,37+XP/16: COLOR 9: PRINT "FUTURE"; +570 NEXT I +580 LOCATE 22,1: END +900 REM ********************************************* +910 REM THIS PROGRAM COMPUTES THE AGE OF THE UNIVERSE +920 REM FOR DIFFERENT VALUES OF THE HUBBLE PARAMETER, +930 REM DENSITY PARAMETER, AND COSMOLOGICAL CONSTANT. +940 REM FROM SKY & TELESCOPE, JANUARY 1996, PAGE 92. +950 REM ********************************************* diff --git a/SKYTEL/broken/ccdlimit.bas b/SKYTEL/broken/ccdlimit.bas new file mode 100644 index 0000000..f3f1500 --- /dev/null +++ b/SKYTEL/broken/ccdlimit.bas @@ -0,0 +1,80 @@ +10 ' Program to compute the signal-to-noise ratio +20 ' for a stellar image in a CCD camera. +30 ' Written by Anthony Mallama, September 1992. +40 ' +50 DIM SN(5) :' PI=3.14159 +60 S0=2000000: ' Star-signal constant (the number of +70 ' electrons per second for a 0-magnitude +80 ' star and a 1-inch scope) +90 SB=18: ' Sky brightness in mag per sq arc second +100 PS=1.5: ' Pixel size in arc seconds of sky +110 DD=3: ' Detection diameter in arc seconds +120 RN=100: ' Readout noise in electrons per pixel +130 TH=70: ' Thermal electrons/pixel/sec +140 AP=8: ' Aperture of telescope in inches +150 ET=100: ' Time before a readout in seconds +160 PRINT +170 PRINT "Signal-to-noise ratios for stellar CCD images," +180 PRINT "based on:" +190 PRINT USING " A) #####.# inch aperture scope";AP +200 PRINT USING " B) #####.# mag per sq arcsec of sky";SB +210 PRINT USING " C) ####### arcsec detection circle";DD +220 PRINT USING " D) ####### sec longest single exp.";ET +230 PRINT USING " E) #####.# arcsec-per-pixel scale";PS +240 PRINT USING " F) ####### elec/pixel readout noise";RN +250 PRINT USING " G) ####### thermal elec/pixel/sec";TH +260 PRINT USING " H) ####### star-signal constant";S0 +270 PRINT " Q) Quit" +280 PRINT +290 INPUT "Choose a letter or type '/' to continue";P$ +300 IF P$="A" OR P$="a" THEN INPUT AP +310 IF P$="B" OR P$="b" THEN INPUT SB +320 IF P$="C" OR P$="c" THEN INPUT DD +330 IF P$="D" OR P$="d" THEN INPUT ET +340 IF P$="E" OR P$="e" THEN INPUT PS +350 IF P$="F" OR P$="f" THEN INPUT RN +360 IF P$="G" OR P$="g" THEN INPUT TH +370 IF P$="H" OR P$="h" THEN INPUT S0 +380 IF P$="Q" OR P$="q" THEN 720 +390 IF P$="/" THEN GOTO 410 +400 GOTO 160 +410 PRINT +420 AR=PI*(DD/2)^2: 'Detection area in square arcsec +430 PX=AR/PS^2: 'Detection area in pixels +440 IF PX>1 GOTO 500 +450 PRINT "Warning: Detection area is less" +460 PRINT "than 1 pixel. Increase size." +470 PRINT +480 INPUT "Press to continue";X$ +490 GOTO 160 +500 EN=DD/10 ' Fraction of star's total image encircled +510 ' by the detection or measurement area +520 IF EN>1 THEN EN=1 +530 PRINT " Mag. 1 sec 10s 100s "; +540 PRINT "1000s 10000s" +550 FOR M=10 TO 20 +560 L=1/(10^(M/2.5)): ' Luminosity +570 PRINT USING " ##.#"; M; +580 FOR I=1 TO 5 +590 S=10^(I-1): ' Exposure time in seconds +600 SG=L*S*S0*EN*AP^2: ' Signal total +610 SK=S*S0*AR*AP^2/10^(SB/2.5): ' Sky total +620 TT=TH*PX*S: ' Thermal total +630 N=S/ET: ' Total number of frames +640 IF N<>INT(N) THEN N=INT(N)+1 +650 SN(I)=SG/SQR(SG+TT+SK+N*PX*RN^2) +660 NEXT I +670 PRINT USING "######";SN(1);SN(2);SN(3);SN(4);SN(5) +680 NEXT M +690 PRINT +700 INPUT "Press to continue";X$ +710 GOTO 160 +720 END +730 ' +740 ' This program computes the signal-to-noise (SNR) ratio expected +750 ' when a CCD camera is used under specific conditions and +760 ' with a given telescope. Since an SNR of at least 3 is needed +770 ' for reliable visiblity of a star image, the program can be +780 ' used to estimate the magnitude limit reached. It was written +790 ' by Anthony Mallama and appeared in Sky & Telescope for +800 ' February 1993, page 84. diff --git a/SKYTEL/broken/clock.bas b/SKYTEL/broken/clock.bas new file mode 100644 index 0000000..ab3bc27 --- /dev/null +++ b/SKYTEL/broken/clock.bas @@ -0,0 +1,20 @@ +200 REM BEFORE RUNNING THESE LINES, READ THE CLOCK AND OBTAIN THE +210 REM UT DATE AND TIME IN THE FORM Y,M,D,H1,M1,S1 +220 REM +230 D=D+H1/24+M1/1440+S1/86400 +250 G=1: GOSUB 820: V=(J+F)/29.53058868: C=V-INT(V) +260 IF C<0.02 THEN 340 +270 IF C<0.11 THEN PRINT "LAST QUARTER MOON": GOTO 350 +280 IF C<0.27 THEN PRINT "MOON IS A MORNING CRESCENT": GOTO 350 +290 IF C<0.35 THEN PRINT "NEW MOON": GOTO 350 +300 IF C<0.51 THEN PRINT "MOON IS AN EVENING CRESCENT": GOTO 350 +310 IF C<0.61 THEN PRINT "FIRST QUARTER MOON": GOTO 350 +320 IF C<0.77 THEN PRINT "MOON IS WAXING GIBBOUS": GOTO 350 +330 IF C<0.85 THEN PRINT "FULL MOON": GOTO 350 +340 PRINT "MOON IS WANING GIBBOUS" +350 END +867 RETURN +900 REM ************************************************************* +901 REM FROM SKY & TELESCOPE, MAY, 1987, PAGE 536-537. FOR APPLE +902 REM COMPUTERS ONLY. MERGE WITH CALJD.BAS (MAY, 1984, PAGE 455). +903 REM ************************************************************* diff --git a/SKYTEL/broken/galisa.bas b/SKYTEL/broken/galisa.bas new file mode 100644 index 0000000..d564306 --- /dev/null +++ b/SKYTEL/broken/galisa.bas @@ -0,0 +1,98 @@ +10 REM GALISAT +15 REM +20 TEXT: HOME: PRINT +25 PRINT "WHICH IS TOWARD LEFT:" +30 INPUT "EAST OR WEST? ";A$ +35 IF LEFT$(A$,1)="W" THEN 50 +40 IF LEFT$(A$,1)="E" THEN 60 +45 GOTO 30 +50 L=1: L$="WEST": R$="EAST" +55 GOTO 65 +60 L=-1: L$="EAST": R$="WEST" +65 GOSUB 800 +70 N=J-2415020+F +75 PI=3.14159265: P=PI/180 +80 VTAB 21: INVERSE: PRINT L$; +85 HTAB 37: PRINT R$: NORMAL +90 VTAB 21:HTAB 7:PRINT "YEAR ";Y; +95 HTAB 19: PRINT "MONTH ";M; +100 HTAB 30: PRINT "DAY " +105 V=0: HGR : HCOLOR=3 +110 GOSUB 295 +115 DL=INT((N-INT(N))*20+0.5)/20 +120 IF DL=0.5 THEN GOSUB 335 +125 MT=(358.476+0.9856003*N)*P +130 MJ=(225.328+0.0830853*N)*P +135 JJ=221.647+0.9025179*N +140 VT=1.92*SIN(MT)+0.02*SIN(2*MT) +145 VJ=5.55*SIN(MJ)+0.17*SIN(2*MJ) +150 K=(JJ+VT-VJ)*P +155 DT=SQR(28.07-10.406*COS(K)) +160 Z=SIN(K)/DT +165 I=ATN(Z/SQR(1-Z*Z)) +170 I=I/P +175 F=(N-DT/173) +180 F1=I-VJ +185 U1=84.5506+203.405863*F+F1 +190 U2=41.5015+101.2916323*F+F1 +195 U3=109.9770+50.2345169*F+F1 +200 U4=176.3586+21.4879802*F+F1 +205 X1=5.906*SIN(U1*P+PI) +210 X=X1: GOSUB 315 +215 X2=9.397*SIN(U2*P+PI) +220 X=X2: GOSUB 315 +225 X3=14.989*SIN(U3*P+PI) +230 X=X3: GOSUB 315 +235 X4=26.364*SIN(U4*P+PI) +240 X=X4: GOSUB 315 +245 V=V+1: N=N+0.05 +250 IF V>=155 THEN 265 +255 IF D>=33 THEN 275 +260 GOTO 115 +265 INPUT "CONTINUE (Y OR N)?";A$ +270 IF A$<>"N" THEN 105 +275 INPUT "ANOTHER MONTH? ";A$ +280 IF A$<>"N" THEN 20 +285 TEXT: HOME +290 END +291 REM +295 REM JUPITER DISPLAY +300 HPLOT 136,0 TO 136,155 +305 HPLOT 142,0 TO 142,155 +310 RETURN +315 REM SATELLITE DISPLAY +320 X=139+L*INT(X*3.5+0.5) +325 HPLOT X,V +330 RETURN +335 REM CHANGE OF DATE +340 VTAB 21: HTAB 34: PRINT D +345 HPLOT 5,V TO 25,V +350 HPLOT 255,V TO 275,V +355 D=D+1 +360 RETURN +365 REM +800 REM CALENDAR --> JD +805 REM +810 INPUT "Y,M,D? ";Y,M,D +811 D=INT(D) +815 G=1: IF Y<=1582 THEN G=0 +820 D1=INT(D): F=D-D1-0.5 +825 J=-INT(7*(INT((M+9)/12)+Y)/4) +830 IF G=0 THEN 850 +835 S=SGN(M-9): A=ABS(M-9) +840 J1=INT(Y+S*INT(A/7)) +845 J1=-INT((INT(J1/100)+1)*3/4) +850 J=J+INT(275*M/9)+D1+G*J1 +855 J=J+1721027+2*G+367*Y +860 IF F>=0 THEN 870 +865 F=F+1: J=J-1 +870 RETURN +900 REM ********************** +910 REM THIS PROGRAM COMPUTES +920 REM POSITIONS OF THE FOUR +930 REM BRIGHT MOONS OF JUPITER +940 REM ON APPLE II COMPUTERS. +950 REM IT IS DESCRIBED IN SKY +960 REM & TELESCOPE MAGAZINE, +970 REM JUNE, 1989, PAGE 650. +980 REM ********************** diff --git a/SKYTEL/broken/gflash.bas b/SKYTEL/broken/gflash.bas new file mode 100644 index 0000000..c9d6534 --- /dev/null +++ b/SKYTEL/broken/gflash.bas @@ -0,0 +1,202 @@ +10 ' THE GREEN FLASH +20 ' +30 INPUT "Height of observer in feet";H +40 INPUT "Zenith dist. of occulting edge (deg)";Z0 +50 INPUT "Aerosol extinction (mag/air mass)";KD +60 INPUT "Occult bottom (B) or top (T) of Sun";Q$ +70 TB=1: IF Q$="T" OR Q$="t" THEN TB=-1 +80 PRINT: GOSUB 1590 +90 DS=1: ' Sun's distance in a.u. +100 RS=1: ' Sun's radius in solar radii +110 TS=5700: ' Sun's temperature (Kelvin) +120 D=0: ' Sun's declination in degrees +130 MP=1: ' Planet's mass in Earth masses +140 PE=1: ' Planet's rotation period in days +150 R0=1: ' Planet's radius in Earth radii +160 L=40: ' Observer's latitude in degrees +170 P=1: ' Sea-level pressure, bars +180 T0=10: ' Air temperature in degrees Celsius +190 OZ=3: ' Ozone layer thickness (mm at STP) +200 HS=12: ' Ozone ht. (miles above sea level) +210 AA=-1.3: ' Aerosol exponent (unitless) +220 AH=1: ' Aerosol scale height (miles) +230 PP(1)=78: ' Nitrogen percentage by volume +240 PP(2)=22: ' Oxygen percentage +250 PP(3)=0: ' Carbon dioxide +260 PP(4)=0: ' Hydrogen +270 PP(5)=0: ' Helium +280 PP(6)=0: ' Methane +290 PP(7)=0: ' Ammonia +300 PP(8)=0: ' Argon +310 ' +330 ' Convert input data to cgs units +340 DS=DS*1.496E+13: RS=RS*6.96E+10: ' cm +350 R0=R0*6.378E+8: H=H*30.48: ' cm +360 HS=HS*1.609E+5: AH=AH*1.609E+5: ' cm +370 D=D*PI/180: L=L*PI/180: Z0=Z0*PI/180: ' radians +380 MP=MP*5.976E+27: ' grams +390 PE=PE*24*3600: ' seconds +400 T0=T0+273.1: ' degrees Kelvin +410 ' +420 ' Calculate average molecular weight +430 MW=0 +440 FOR IG=1 TO 8: MW=MW+MX(IG)*PP(IG)*.01: NEXT IG +450 ' +460 ' Calculate atmospheric parameters +470 G=6.67E-8*MP*(R0^(-2)):' Acceleration of gravity +480 S=8.31E+7*T0/(G*MW): ' Atmospheric scale height +490 LA=-.4*T0/S: ' Adiabatic lapse rate +500 ' +510 ' Choose a color +520 FOR IC=1 TO 11 +530 W=(IC*500+2500)*1E-8 +540 ' Calculate index of refraction +550 N0=0 +560 FOR IG=1 TO 8 +570 NS=(A(IG)*.00001)*(1+(B(IG)*1E-11)/(W^2)) +580 N0=N0+NS*PP(IG)*.01*P*273.1/T0 +590 NEXT IG +600 N=1+N0*EXP(-H/S): ' At observer +610 N0=N0+1: ' At sea level +620 ' +630 ' Calc. refraction and air mass for each color +640 GOSUB 1510: ' Refraction subroutine +650 IF RF>RX THEN RX=RF +660 IF RF90 THEN KX=90 +760 TR(IC)=10^(-.4*KX) +770 ' +780 ' Calculate Sun's flux above atmosphere +790 BB=.0000374*(W^(-5))/(EXP(1.43/(W*TS))-1) +800 FA(IC)=((RS/DS)^2)*BB*1E-8: ' in erg/cm2/s/A +810 NEXT IC +820 ' +830 ' Pick relevant time range for calculations +840 CZ=COS(Z0+RN+TB*RS/DS) +850 HC=(CZ-SIN(D)*SIN(L))/(COS(D)*COS(L)) +860 HA=ATN(SQR(1-HC*HC)/HC): IF HC<0 THEN HA=HA+PI +870 T1=HA*PE*.5/PI: ' Time when lowest disk sets +880 CZ=COS(Z0+RX+TB*RS/DS) +890 HC=(CZ-SIN(D)*SIN(L))/(COS(D)*COS(L)) +900 HA=ATN(SQR(1-HC*HC)/HC): IF HC<0 THEN HA=HA+PI +910 T2=HA*PE*.5/PI: ' Time when highest disk sets +920 DT=(T2-T1)/50: ' Choose a time increment +930 T0=T1-DT: ' Define a fiducial time +940 PRINT " Time x y V mag. Color" +950 ' +960 ' ***** Main loop starts here ***** +970 FOR IT=-1 TO 48 +980 T=T1+IT*DT: ' Choose a time +990 TT=T-T0: ' Seconds from start time +1000 ' +1010 ' Cycle through wavelengths +1020 FOR IC=1 TO 11 +1030 ' Calc. altitude of solar disk for that color +1040 HA=2*PI*T/PE: ' Hour angle of Sun +1050 CZ=SIN(D)*SIN(L)+COS(D)*COS(L)*COS(HA) +1060 ZA=ATN(SQR(1-CZ*CZ)/CZ): IF CZ<0 THEN ZA=ZA+PI +1070 ZA=ZA-R(IC): ' Zenith distance of Sun +1080 ' +1090 ' Calculate the fraction of disk visible +1100 CC=(ZA-Z0)*TB*DS/RS +1110 IF CC>1 THEN CC=1: ' If nothing visible +1120 TH(IC)=ATN(SQR(1-CC*CC)/CC) +1130 IF CC<0 THEN TH(IC)=TH(IC)+PI +1140 FR=(TH(IC)-CC*SIN(TH(IC)))/PI +1150 ' +1160 ' Calculate visible flux from Sun +1170 F(IC)=FA(IC)*TR(IC)*FR +1180 NEXT IC +1190 ' +1200 ' (Could print out flux, F(IC) [ergs/cm2/s/A], +1210 ' as well as the Sun's stellar magnitude, +1220 ' M(IC)=-2.5*LOG(F(IC))/B0-(M0(IC)+20), +1230 ' as a function of the color IC, where +1240 ' 1=3000A, 2=3500A, 3=4000A, ... , 11=8000A.) +1250 ' +1260 XX=0: YY=0: ZZ=0 +1270 FOR IC=1 TO 11 +1280 XX=XX+X1(IC)*F(IC): ' X from CIE standard +1290 YY=YY+Y1(IC)*F(IC): ' Y from CIE standard +1300 ZZ=ZZ+Z1(IC)*F(IC): ' Z from CIE standard +1310 NEXT IC +1320 IF XX+YY+ZZ=0 THEN 1480 +1330 X=XX/(XX+YY+ZZ): ' x +1340 Y=YY/(XX+YY+ZZ): ' y +1350 IF Y<=.01 THEN 1480: ' If invisible to eye +1360 PH=ATN((.333-X)/(Y-.333)): ' Angle from white +1370 IF (Y-.333)<0 THEN PH=PH+PI:' in color diagram +1380 CO$="Violet" +1390 IF PH<4.229 THEN CO$= " Blue" +1400 IF PH<2.580 THEN CO$= " Green" +1410 IF PH<1.106 THEN CO$= "Yellow" +1420 IF PH<0.359 THEN CO$= "Orange" +1430 IF PH<0.000 THEN CO$= " Red" +1440 V=-2.5*LOG(.034*YY/2.54E-10)/B0: ' Visual mag. +1450 PRINT USING "##.## ";TT; +1460 PRINT USING "##.## ##.## ###.# ";X;Y;V; +1470 PRINT CO$ +1480 NEXT IT +1490 END +1500 ' +1510 ' Refraction subroutine (quick version) +1520 N=1+(N0-1)*EXP(-H/S): ' At observer +1530 BS=R0*SIN(Z0)/(R0+.5*S): BE=ATN(BS/SQR(1-BS*BS)) +1540 R5=N*BS: RF=ATN(R5/SQR(1-R5*R5))-BE: CZ=COS(Z0) +1560 AM=1/(CZ+.8*SQR(S/R0)*EXP(-.38*CZ*SQR(R0/S))) +1570 RETURN +1580 ' +1590 ' Constants and data statements +1600 RX=-1: RN=1 +1610 ' PI=3.14159: +1615 B0=LOG(10): ' Pi and log-10 factor +1620 DIM A(8),B(8),PP(8),MX(8),KS(11),M0(11),X1(11) +1630 DIM Y1(11),Z1(11),R1(11),G1(11),B1(11),M(11) +1640 DIM R(11),TR(11),F(11),FA(11),LF(11),TH(11) +1650 FOR I=1 TO 8: READ A(I): NEXT I +1660 DATA 29.1, 26.6, 43.9, 13.6, 3.5, 43, 37, 27.9 +1670 FOR I=1 TO 8: READ B(I): NEXT I +1680 DATA 7.7, 5.1, 6.4, 7.5, 2.3, 6.0, 12.0, 5.6 +1690 FOR I=1 TO 8: READ MX(I): NEXT I +1700 DATA 28, 32, 44, 2, 4, 16, 17, 39.9 +1710 FOR I=1 TO 11: READ KS(I): NEXT I +1720 DATA 3.2, .005, 0, .001, .012, .031, .044 +1730 DATA .023, .008, .005, .001 +1740 FOR I=1 TO 11: READ M0(I): NEXT I +1750 DATA 1.19, 0.95, 0.52, 0.46, 0.74, 1.06, 1.33 +1760 DATA 1.6, 1.88, 2.1, 2.3 +1770 FOR I=1 TO 11: READ X1(I): NEXT I +1780 DATA 0, 0, .014, .336, .005, .433, 1.062 +1790 DATA .283, .011, 0, 0 +1800 FOR I=1 TO 11: READ Y1(I): NEXT I +1810 DATA 0, 0, .0004, .038, .323, .995, .631 +1820 DATA .107, .004, .0001, 0 +1830 FOR I=1 TO 11: READ Z1(I): NEXT I +1840 DATA 0, 0, .068, 1.773, .272, .009, 0,0,0,0,0 +1850 FOR I=1 TO 11: READ R1(I): NEXT I +1860 DATA 0, 0, .025, -.039, -1.16, .097 +1870 DATA .847, .989, 1, 0, 0 +1880 FOR I=1 TO 11: READ G1(I): NEXT I +1890 DATA 0, 0, -.011, .0218, 1.39, .905, .154 +1900 DATA .011, 0, 0, 0 +1910 FOR I=1 TO 11: READ B1(I): NEXT I +1920 DATA 0, 0, .986, 1.017, .778, -.0025 +1930 DATA -.0012, 0, 0, 0, 0 +1940 RETURN +2000 ' +2010 ' GFLASH.BAS -- This program by Dr. Bradley +2020 ' E. Schaefer predicts how the "green flash" +2030 ' should look to an observer watching the +2040 ' setting Sun. Inputs can be varied to see +2050 ' the effect of different atmospheric conditions +2060 ' and elevation above sea level. The program +2070 ' is discussed in detail in Sky & Telescope, +2080 ' February 1992, page 200. diff --git a/SKYTEL/broken/glob2.bas b/SKYTEL/broken/glob2.bas new file mode 100644 index 0000000..99579fc --- /dev/null +++ b/SKYTEL/broken/glob2.bas @@ -0,0 +1,53 @@ +13 DIM X(30),Y(30),Z(30) +15 J=0 +23 J=J+1 +45 X(J)=X +51 Y(J)=Y +57 Z(J)=Z +64 GOTO 100 +100 PRINT: PRINT: PRINT +110 FOR I=1 TO J +120 IF S=1 THEN Y(I)=Z(I) +130 IF S=3 THEN X(I)=-Y(I): Y(I)=Z(I) +140 NEXT +150 HGR: C=0.00105: X=100: Y=70 +160 IF S=3 THEN X=130 +170 GOSUB 370: DX=0: DY=0: GOTO 240 +180 DX=0: DY=0: GET C$ +190 IF C$="L" THEN DX=-1 +200 IF C$="U" THEN DY=-1 +210 IF C$="D" THEN DY=+1 +220 IF C$="R" THEN DX=+1 +230 IF DX=0 AND DY=0 THEN 180 +240 FOR I=1 TO J: GOSUB 290: NEXT: GOSUB 480 +250 X=X+DX: Y=Y+DY: HCOLOR=3: GOSUB 500: IF S=3 THEN 180 +260 D=SQR((XC-X)*(XC-X)+(YC-Y)*(YC-Y))/C: VTAB 22: HTAB 1 +270 PRINT "DISTANCE TO CENTER: ";INT(D);" L.Y. ": GOTO 180 +280 REM +290 X0=X(I)*C+X: Y0=-Y(I)*C+Y +300 IF X0<0 OR X0>279 OR Y0<0 OR Y0>160 THEN 320 +310 HCOLOR=0: HPLOT X0,Y0 +320 X0=X0+DX: YO=Y0+DY +330 IF X0<0 OR X0>279 OR Y0<0 OR Y0>160 THEN 350 +340 HCOLOR=3: HPLOT X0,Y0 +350 RETURN +360 REM +370 HCOLOR=3: REM MILKY WAY +380 RM=5*5: XC=140: YC=80: XR=50: YR=0.03*XR +390 IF S=2 THEN YR=XR +400 HPLOT XR+XC,YC +410 FOR T=0 TO 6.3 STEP 0.1 +420 X1=XR*COS(T): Y1=YR*SIN(T) +430 IF X1*X1+Y1*Y11 THEN 210 +205 X1=.6: X2=.6: E=.1 +210 IF Q<>2 THEN 220 +215 X1=.8: X2=.4: E=.05 +220 IF Q<>3 THEN 230 +225 X1=.8: X2=.4: E=.02 +230 IF Q<>4 THEN 240 +235 X1=.8: X2=.4: E=0 +240 IF X1=0 THEN 90 +250 GOSUB 1500 +260 PRINT "LIMB-DARKENING COEFFS:" +265 PRINT " FOR LARGER STAR ";X1 +270 PRINT " FOR SECONDARY ";X2 +280 PRINT +290 PRINT "OBLATENESS COEFF: ";E +300 PRINT +320 INPUT "CHANGES (Y OR N) ";A$ +330 IF A$<>"Y" THEN 460 +340 PRINT "ENTER NEW LIMB-DARKEN-" +341 PRINT "ING COEFFICIENTS:" +350 INPUT " FOR LARGER STAR ";X1 +360 INPUT " FOR SECONDARY ";X2 +410 PRINT: PRINT +430 INPUT "OBLATENESS COEFF ";E +450 REM +460 REM GET CHARACTERISTICS +480 GOSUB 1500 +490 INPUT "ORBITAL RADIUS ";R +500 INPUT "INCLINATION ";I +520 INPUT "PRIMARY'S RADIUS ";R1 +530 INPUT " LUMINOSITY ";L1 +540 INPUT "SECONDARY RADIUS ";R2 +560 INPUT " LUMINOSITY ";L2 +570 P=100 +580 REM : REM HGR: HCOLOR=3 +582 GOSUB 1500: LOCATE 21 : REM GOSUB 1500: VTAB 21 +590 REM +600 REM PLOT AXES +620 LINE (35,159)-(235,159) : REM HPLOT 35,159 TO 235,159 +630 FOR J=0 TO 10 +640 PSET (20*J+35,158) : REM HPLOT (20*J)+35,158 +650 NEXT J +660 LINE (35,159)-(35,9) : REM HPLOT 35,159 TO 35,9 +670 FOR K=0 TO 10 +680 PSET (36,159-15*K) : REM HPLOT 36,159-(15*K) +690 NEXT K +700 PI=3.14159: RD=180/PI: DR=1/RD +710 REM +720 REM COMPUTE STAR POSITION +740 FOR V=1.8 TO 360 STEP 1.8 +750 D=R*SIN(V*DR) +760 IF V>=180 THEN D=ABS(D) +770 REM +780 REM COMPUTE LUMINOSITIES FOR +781 REM TOTAL & ANNULAR ECLIPSES +800 IF I<90 THEN GOSUB 1250 +810 GOSUB 1320 +820 IF D>=(R1-R2) THEN 850 +830 IF V>90 AND V<270 THEN B=L1-L2 +835 IF V>90 AND V<270 THEN 850 +840 K5=L1*(PI*R1^2-PI*R2^2) +845 B=L2+C1*K5/(PI*R1^2) +850 IF D>=(R1+R2) THEN B=L1+L2 +860 IF D<(R1+R2) THEN GOSUB 970 +870 PV=(V/1.8)+35 +880 GOSUB 1380: GOSUB 1430 +900 B0=139 +905 B=B0-((B*OL)-DL)*P +910 B=INT(B+.5) +920 IF V<>1.8 THEN 930 +925 PSET (PV,B): GOTO 940 : REM HPLOT PV,B: GOTO 940 +930 LINE -(PV,B) : REM HPLOT TO PV,B +940 NEXT V +950 GOTO 1530 +960 REM +970 REM COMPUTE OBSCUR'N ANGLES +980 K0=(R2^2)/(2*D*R1) +990 C5=K0*((D/R2)^2+(R1/R2)^2-1) +1000 D1=R1*C5: D2=D-D1 +1020 H=SQR(R1*R1-D1*D1): S5=H/R1 +1050 A1=ABS(ATN(S5/C5))*RD +1060 C6=D2/R2: S6=H/R2 +1090 A2=ABS(ATN(S6/C6))*RD +1100 REM +1110 REM COMPUTE SECTOR AREAS & +1120 REM PARTIAL ECLIPSES +1130 T1=(H*D1)/2: T2=(H*D2)/2 +1150 S2=PI*R2^2*2*A2/360 +1160 S1=PI*R1^2*2*A1/360 +1170 OB=(S1-T1)+(S2-T2) +1180 IF V>90 AND V<270 THEN 1205 +1190 K1=L1*C1*(PI*R1^2-OB) +1195 B=L2+K1/(PI*R1^2) +1200 GOTO 1230 +1205 K2=L2*C2*(PI*R2^2-OB) +1210 B=L1+K2/(PI*R2^2) +1220 IF V=360 THEN 1530 +1230 RETURN +1240 REM +1250 REM CORRECT FOR INCLINATION +1260 K3=SIN((90-I)*DR) +1270 OP=R*SIN((V-90)*DR)*K3 +1280 S=SQR(OP^2+D^2): D=S +1300 RETURN +1310 REM +1320 REM CORRECT FOR L-DARKENING +1340 C1=1-X1+X1*ABS(COS(V*DR)) +1350 C2=1-X2+X2*ABS(COS(V*DR)) +1360 RETURN +1370 REM +1380 REM CORRECT FOR OBLATENESS +1390 K4=(SIN(I*DR))^2*(COS(V*DR))^2 +1400 OL=1-E*K4 +1410 RETURN +1420 REM +1430 REM CORRECT FOR REFLECTION +1440 REM AND RERADIATION +1450 SH=.4*L1*R2^2: SC=.4*L2*R1^2 +1460 SI=SIN(I*DR): CV=ABS(COS(V*DR)) +1470 DL=.5*(SC+SH)+(SC-SH)*SI*CV +1471 DL=DL+.5*(SC+SH)*SI^2*CV^2 +1475 DL=DL/3 +1480 RETURN +1490 REM +1500 REM BLANK THE SCREEN +1510 CLS: RETURN : REM HOME: RETURN +1530 END +1540 REM ************************************ +1550 REM APPEARED IN ASTRONOMICAL COMPUTING +1560 REM SKY & TELESCOPE - OCTOBER 1989 ISSUE +1570 REM ************************************ \ No newline at end of file diff --git a/SKYTEL/broken/hartley.bas b/SKYTEL/broken/hartley.bas new file mode 100644 index 0000000..3f7c826 --- /dev/null +++ b/SKYTEL/broken/hartley.bas @@ -0,0 +1,93 @@ +10 REM GLOBE-DRAWING PROGRAM +15 REM +20 FF=1: REM FLATTENING FACTOR +40 RM=80: REM RADIUS OF GLOBE +50 INPUT "TILT ANGLE ";T +60 DR=3.14159/180: TI=T*DR +80 XC=250: YC=150: REM SCR CENTER +90 CT=COS(TI): ST=SIN(TI) +95 REM +100 REM DRAW LATITUDE LINES +110 FOR LA=-75 TO 75 STEP 15 +120 IF T>0 THEN 150 +130 IF 90+TLA THEN 270 +160 L=LA*DR:SL=SIN(L):R=RM*COS(L) +170 GOSUB 570 +190 FOR P1=PS+5 TO -PS STEP 5 +200 P=P1*DR: X=R*SIN(P)+XC +210 Y1=RM*SL: Z1=R*COS(P) +220 Z=Z1*CT+Y1*ST +225 Y=-Z1*ST+Y1*CT+YC +230 IF Z<0 THEN 250 +240 LINE (XS,YS*FF)-(X,Y*FF) +250 XS=X: YS=Y +260 NEXT P1 +270 NEXT LA +280 REM DRAW LONGITUDE LINES +290 FOR L=-180 TO 165 STEP 15 +300 LO=L*DR +310 IF TI<0 THEN 340 +320 TH=90*DR: DT=-5*DR: GOTO 350 +340 TH=-90*DR: DT=5*DR +350 GOSUB 750 +360 Z=1: TH=TH+DT +380 CH=COS(TH): X=RM*SIN(LO)*CH+XC +390 Y1=RM*SIN(TH):Z1=RM*COS(LO)*CH +400 Z=Y1*ST+Z1*CT:Y=Y1*CT-Z1*ST+YC +410 IF Z<0 THEN 430 +420 LINE (XS,YS*FF)-(X,Y*FF) +430 XS=X: YS=Y: TH=TH+DT +440 IF Z>=0 THEN 380 +450 NEXT L +460 REM DRAW LIMB OF GLOBE +470 XS=RM+XC: YS=YC +480 FOR I=0 TO 360 STEP 10 +490 IA=I*DR: X=RM*COS(IA)+XC +500 Y=RM*SIN(IA)+YC +510 LINE (XS,YS*FF)-(X,Y*FF) +520 XS=X: YS=Y +530 NEXT I +540 INPUT A$ +550 END +560 REM STARTING LATITUDE LINE +570 CP=-ST*SIN(L)/(CT*COS(L)) +580 IF CP>=1 OR CP<=-1 THEN 640 +590 IF CP*CP>.001 THEN 620 +600 P=-90*DR: GOTO 650 +620 TP=SQR(1-CP*CP)/CP: P=ATN(TP) +630 GOTO 650 +640 P=0 +650 IF P<=0 THEN 680 +660 P=-P: GOTO 690 +680 P=-180*DR-P +690 X=R*SIN(P)+XC +700 Y1=RM*SIN(L): Z1=R*COS(P) +710 Y=-Z1*SIN(TI)+Y1*COS(TI)+YC +720 XS=X: YS=Y: PS=P/DR +730 RETURN +740 REM STARTING LONGITUDE LINE +750 X=RM*SIN(LO)*COS(TH)+XC +760 Y1=RM*SIN(TH) +770 Z1=RM*COS(LO)*COS(TH) +780 Y=-Z1*ST+Y1*CT+YC: XS=X: YS=Y +790 RETURN +800 REM This program is used +810 REM to draw an outline of a +811 REM planet's disk with latitude +812 REM and longitude lines as an +813 REM aid to sketching in features +814 REM at the telescope and identi- +815 REM fying them on a published map. +816 REM How it works is discussed by +817 REM Charles Hartley in the Jan- +818 REM uary, 1990, issue of Sky & +819 REM Telescope magazine. Intended +820 REM for Macintosh, but works on +821 REM IBM PC's with very little +822 REM modification. For example, +823 REM add line 95 SCREEN 9 if you +824 REM have VGA graphics, and try +825 REM setting FF=0.7 in line 20 to +826 REM get a disk that looks right. diff --git a/SKYTEL/broken/heliac.bas b/SKYTEL/broken/heliac.bas new file mode 100644 index 0000000..70038de --- /dev/null +++ b/SKYTEL/broken/heliac.bas @@ -0,0 +1,82 @@ +10 REM HELIACAL RISE AND SET +11 P1=3.14159265 : R=P1/180 +12 P2=P1/2 : P3=1.5*P1 : P4=2*P1 +13 A8=LOG(10) : R1=.017202 +14 INPUT "EXTINCTION";K +15 INPUT "LIMITING MAG";M0 +16 INPUT "STAR MAG.";M +17 INPUT "STAR R.A. (HOURS)";A1 +18 INPUT " DEC. (DEG.) ";D1 +19 INPUT "OBS LATITUDE ";L +20 A1=A1*15*R : D1=D1*R : L=L*R +21 S1=SIN(D1) : C1=COS(D1) +22 S7=SIN(L) : C7=COS(L) +23 INPUT "RISE OR SET";R$ +24 R$=LEFT$(R$,1) +25 IF R$="R" THEN F=1 +26 IF R$="S" THEN F=-1 +27 V1=-S7*S1/(C7*C1) +28 IF V1=0 THEN H1=P1/2 +29 IF V1=0 THEN 32 +30 IF V1<-1 THEN V1=-1 +31 H1=ATN(SQR(1-V1*V1)/V1) +32 IF V1<0 THEN H1=H1+P1 +33 H1=A1-F*H1 +34 X=-.2*(M0-7.93+K) +35 B0=79.4*(10^X-1)^2-K*589 +36 D=80+A1*58.13-60*F +37 D=D+F : G=D*R1-.062 +38 PRINT " TRIAL DAY: ";INT(D) +39 L0=D*R1-1.406+.033*SIN(G) +40 A0=ATN(.917*SIN(L0)/COS(L0)) +41 D0=.398*SIN(L0) +42 D0=ATN(D0/SQR(1-D0*D0)) +43 IF L0P3 THEN 45 +44 A0=A0+P1 +45 IF L0>P3 THEN A0=A0+P4 +46 C0=-S7*SIN(D0)/(C7*COS(D0)) +47 H0=ATN(SQR(1-C0*C0)/C0) +48 IF C0<0 THEN H0=H0+P1 +49 H0=A0-F*H0 +50 IF F*(H1-H0)>0 THEN 37 +51 N=-100 : T=H1-F/30 +52 T=T+F/30 +53 IF F*(T-H0)>0 THEN 37 +54 N0=N : REM LIMITING MAG. +55 A9=S7*S1+C7*C1*COS(A1-T) +56 IF A9<-1 THEN A9=-1 +57 IF A9=0 THEN Z1=P1/2 +58 IF A9=0 THEN 60 +59 Z1=ATN(SQR(1-A9*A9)/A9) +60 A9=C7*COS(D0)*COS(T-A0) +61 A9=A9+S7*SIN(D0) +62 H5=ATN(A9/SQR(1-A9*A9)) +63 A9=C1*COS(D0)*COS(A0-A1) +64 C2=A9+S1*SIN(D0) +65 A9=C2-COS(Z1)*SIN(H5) +66 A9=A9/(SIN(Z1)*COS(H5)) +67 IF A9<-1 THEN A9=-1 +68 T1=ATN(SQR(1-A9*A9)/A9) +69 A5=.025*EXP(-11*COS(Z1)) +70 A5=1/(COS(Z1)+A5) +71 L5=H5*(8.2*Z1+12)+2.86*Z1 +72 L5=4.75-T1*Z1/3+L5 +73 B=B0+(K/.2)*(10^L5) +74 IF L5<2.07 THEN B=B0+K*589 +75 C5=4.466E-09 : K5=1.258E-06 +76 IF B<1649 THEN C5=1.58E-10 +77 IF B<1649 THEN K5=.0126 +78 N=C5*(1+SQR(K5*B))^2 +79 N=-16.57-K*A5-2.5*LOG(N)/A8 +80 IF N>N0 THEN 52 +81 IF N0=366 THEN D=D-365.25 +83 PRINT "DAY OF YEAR: ";INT(D) +84 PRINT "STAR: ";INT(90.5-Z1/R) +85 PRINT "SUN: ";INT(H5/R+.5) +86 END +87 REM ------------------------ +88 REM APPEARED IN ASTRONOMICAL +89 REM COMPUTING, SKY & TELE- +90 REM SCOPE, SEPTEMBER, 1985 +91 REM ------------------------ diff --git a/SKYTEL/broken/jack.bas b/SKYTEL/broken/jack.bas new file mode 100644 index 0000000..c6c9485 --- /dev/null +++ b/SKYTEL/broken/jack.bas @@ -0,0 +1,70 @@ +10 ' Orbit of Jack +11 ' +12 DEFDBL A-Z +20 SR=5/7 +30 X0=320 +40 Y0=175 +50 CLS +60 PI=3.14159 +70 INPUT "Days in A's year ";YA +80 INPUT "Mass of A ";K +90 INPUT "Jack's initial velocity ";VY +100 CLS +110 M=70 +120 W=2*PI/YA +130 RA=200 +140 X=100 +150 Y=0 +160 T=0 +170 VX=0 +180 SCREEN 9 +190 LINE(1,Y0)-(630,Y0) +200 LINE(X0-1,Y0+1)-(X0+1,Y0+1) +201 LINE(X0-1,Y0-1)-(X0+1,Y0-1) +210 AX=RA*COS(W*T) +220 AY=RA*SIN(W*T) +230 T=T+1 +240 R3=(X^2+Y^2)^1.5 +250 Z3=((X-AX)^2+(Y-AY)^2)^1.5 +260 VX=VX-M*X/R3+K*(AX-X)/Z3 +270 VY=VY-M*Y/R3+K*(AY-Y)/Z3 +280 X=X+VX +290 Y=Y+VY +300 PSET (X0+PX,Y0-PY*SR),0 +310 PSET (X0+QX,Y0-QY*SR),6 +320 PSET (X0+X,Y0-Y*SR) +330 PSET (X0+AX,Y0-AY*SR) +340 PX=AX +350 PY=AY +360 QX=X +370 QY=Y +380 IF Y<0 THEN SB=0 +390 IF Y>0 AND SB=0 THEN 410 +400 GOTO 210 +410 SB=1 +420 R$=INKEY$ +430 IF R$<>"" THEN 500 +450 PB=T-TA +460 TA=T +470 LOCATE 24,30 +480 PRINT "Jack's period is ";PB;" days"; +490 GOTO 210 +500 END +510 ' +520 ' Written by Caxton Foster, this program displays the motion of +530 ' two planets around a central star in a hypothetical solar system. +540 ' The inner planet is called Jack; it is considered to have negligible +550 ' mass, but you can specify its starting velocity (a number from 0 to +560 ' 1.6 works best -- if the velocity is greater than 1.6, Jack escapes +570 ' the solar system). The outer planet moves in a circular orbit, and +580 ' you can specify its period (typically 300 to 2,000 "days") and mass +590 ' (10 or less). No matter what period you select, its orbit is a +600 ' circular one with a radius twice that of Jack's starting orbit. +610 ' (Thus, Kepler's laws apply to Jack, but not to this arbitrary outer +620 ' planet.) The program runs on IBM PCs or clones with VGA color +630 ' graphics. By playing around with input values it is possible to +640 ' make Jack's orbit have resonance, show apsidal motion, or put it on a +650 ' near-collision course with planet A that ejects Jack from the solar +660 ' system. The program is discussed on page 660 of the September 1994 +670 ' issue of Sky & Telescope. + \ No newline at end of file diff --git a/SKYTEL/broken/list.bas b/SKYTEL/broken/list.bas new file mode 100644 index 0000000..8c75757 --- /dev/null +++ b/SKYTEL/broken/list.bas @@ -0,0 +1,83 @@ +10 REM INDEX-PRINTING PROGRAM +20 OPEN "R",1,"NGC2000.DAT",24 +22 OPEN "R",2,"INDEX.DAT",2 +24 FIELD 1,5 AS N$,1 AS T$,2 AS H$,3 AS M$,3 AS D$,2 AS M1$,4 AS S$ +26 FIELD 2,2 AS I$ +30 WIDTH "LPT1:",132 +40 LPRINT CHR$(15);SPC(25);"OBJECT";SPC(4);"R.A.";SPC(12);"DEC";SPC(14);"ATLAS 2000";SPC(5);"URANOMETRIA" +50 LPRINT +60 FOR I=1 TO 50 +70 GET #2,I: J=CVI(I$): GET#1,J +80 K$=LEFT$(M$,2)+"."+RIGHT$(M$,1) +90 H=VAL(H$):M=VAL(K$):D=VAL(D$) +100 H=H+M/60:M1=VAL(M1$):D=D+M1/60 +110 IF D$="-" THEN D=-D +200 IF ABS(D)>18.5 THEN 280 +250 S=9+INT(H/3+1/1.2) +260 IF S=9 THEN S=17 +270 GOTO 340 +280 IF ABS(D)>=52 THEN 320 +290 S=4+INT(H/4) +300 IF D<0 THEN S=S+14 +310 GOTO 340 +320 S=1+INT(H/8) +330 IF D<0 THEN S=S+23 +340 IF ABS(D)>=5.5 THEN 390 +350 U=215+INT(H*1.875+.5) +360 IF U=260 THEN U=215 +370 V$="Vol I,II" +380 GOTO 780 +390 IF D>0 THEN V$="Vol I" +400 IF D<0 THEN V$="Vol II" +410 IF ABS(D)>=50 THEN 610 +420 IF ABS(D)>=28 THEN 520 +430 IF ABS(D)>=17 THEN 480 +440 U=170+INT(H*1.875+.5) +450 IF U=215 THEN U=170 +460 IF D<0 THEN U=U+90 +470 GOTO 780 +480 U=125+INT(H*1.875+.5) +490 IF U=170 THEN U=125 +500 IF D<0 THEN U=U+180 +510 GOTO 780 +520 IF ABS(D)>=39 THEN 570 +530 U=89+INT(H*1.5+.5) +540 IF U=125 THEN U=89 +550 IF D<0 THEN U=U+261 +560 GOTO 780 +570 U=59+INT(H/.8+.5) +580 IF U=89 THEN U=59 +590 IF D<0 THEN U=U+327 +600 GOTO 780 +610 IF ABS(D)>=72.5 THEN 710 +620 IF ABS(D)>= 61 THEN 670 +630 U=35+INT(H+.5) +640 IF U=59 THEN U=35 +650 IF D<0 THEN U=U+381 +660 GOTO 780 +670 U=15+INT(H/1.2+.5) +680 IF U=35 THEN U=15 +690 IF D<0 THEN U=U+425 +700 GOTO 780 +710 IF ABS(D)>= 84.5 THEN 760 +720 U=3+INT(H/2+1/2.4) +730 IF U=15 THEN U=3 +740 IF D<0 THEN U=U+457 +750 GOTO 780 +760 U=1+INT(H/12) +770 IF D<0 THEN U=474-U +780 LPRINT SPC(25);N$;SPC(4);H$;"hrs ";K$;"min. ";SPC(2);D$;"deg ";M1$;"min. ";SPC(3);"CHART";S;TAB(84);"CHART";U;V$ +790 K=K+1: IF K<25 THEN 850 +810 LPRINT +820 LPRINT CHR$(15);SPC(25);"OBJECT";SPC(4);"R.A.";SPC(12);"DEC";SPC(14);"ATLAS 2000";SPC(5);"URANOMETRIA" +830 K=0: LPRINT +850 NEXT I +860 WIDTH "LPT1:",80 +870 LPRINT CHR$(18): END +900 ' +910 ' Written by Tim Hunter, MD, this program for IBM PC and compatible +920 ' machines prints an index that tells which charts in Sky Atlas 2000.0 +930 ' and Uranometria 2000.0 show various NGC and IC objects. To work, it +940 ' assumes you have the machine-readable version of NGC 2000.0 (available +950 ' separately from Sky Publishing Corp.) in the same directory. For +960 ' more about the program, see Sky & Telescope, August 1991, p. 182. diff --git a/SKYTEL/broken/marche.bas b/SKYTEL/broken/marche.bas new file mode 100644 index 0000000..675845f --- /dev/null +++ b/SKYTEL/broken/marche.bas @@ -0,0 +1,124 @@ +100 REM ASTROMETRIC REDUCTION +105 REM +110 DIM XZ(10),YZ(10),X1(10),Y1(10) +115 DIM AA(10),DXZ(10),RR(10,9),RAA(10),RDXZ(10) +120 DEFDBL A-H,K-Z +125 ' PI=3.141592653589793: +126 DR=PI/180 +130 INPUT "Camera focal length";L +135 PRINT "R.A. of plate center (h,m,s)"; +140 GOSUB 630: A0=V*15*DR +145 PRINT "Dec. of plate center (d,m,s)"; +150 GOSUB 630: D0=V*DR: SD=SIN(D0): CD=COS(D0) +160 INPUT "Equinox, epoch";EQ,EP +165 T=EP-EQ +170 INPUT "How many stars (4-10)";N +175 FOR J=1 TO N +180 PRINT +185 PRINT "R.A. of star ";J;"(h,m,s)"; +190 GOSUB 630 +195 INPUT "Proper motion (sec/yr)";M1 +200 AA(J)=(V+T*M1/3600)*15*DR +205 PRINT "Dec. (d,m,s)"; +210 GOSUB 630 +215 INPUT "Proper motion (arcsec/yr)";M2 +220 DXZ(J)=(V+T*M2/3600)*DR: SJ=SIN(DXZ(J)): CJ=COS(DXZ(J)) +225 H=SJ*SD+CJ*CD*COS(AA(J)-A0) +230 X1(J)=CJ*SIN(AA(J)-A0)/H +235 Y1(J)=(SJ*CD-CJ*SD*COS(AA(J)-A0))/H +240 INPUT "Measured X,Y";XZ(J),YZ(J) +245 NEXT J +250 PRINT +255 INPUT "Measured X,Y of target";X,Y +260 R1=0: R2=0: R3=0: R7=0: R8=0: R9=0: XS=0: YS=0 +265 FOR J=1 TO N +270 XS=XS+XZ(J): YS=YS+YZ(J): RR(J,1)=XZ(J)*XZ(J) +275 R1=R1+RR(J,1): RR(J,2)=YZ(J)*YZ(J): R2=R2+RR(J,2) +280 RR(J,3)=XZ(J)*YZ(J): R3=R3+RR(J,3) +285 RR(J,7)=Y1(J)-YZ(J)/L: R7=R7+RR(J,7) +290 RR(J,8)=RR(J,7)*XZ(J): R8=R8+RR(J,8) +295 RR(J,9)=RR(J,7)*YZ(J): R9=R9+RR(J,9) +300 NEXT J +305 REM Now solve for D, E, F, by Cramer's Rule +310 DD=R1*(R2*N-YS*YS)-R3*(R3*N-XS*YS)+XS*(R3*YS-XS*R2) +315 D=R8*(R2*N-YS*YS)-R3*(R9*N-R7*YS)+XS*(R9*YS-R7*R2) +320 E=R1*(R9*N-R7*YS)-R8*(R3*N-XS*YS)+XS*(R3*R7-XS*R9) +325 F=R1*(R2*R7-YS*R9)-R3*(R3*R7-XS*R9)+R8*(R3*YS-XS*R2) +330 D=D/DD: E=E/DD: F=F/DD +335 REM +340 R4=0: R5=0: R6=0 +345 FOR J=1 TO N +350 RR(J,4)=X1(J)-XZ(J)/L: R4=R4+RR(J,4) +355 RR(J,5)=RR(J,4)*XZ(J): R5=R5+RR(J,5) +360 RR(J,6)=RR(J,4)*YZ(J): R6=R6+RR(J,6) +365 NEXT J +370 REM Now solve for A ,B, C, by Cramer's Rule +375 A=R5*(R2*N-YS*YS)-R3*(R6*N-R4*YS)+XS*(R6*YS-R4*R2) +380 B=R1*(R6*N-R4*YS)-R5*(R3*N-XS*YS)+XS*(R3*R4-XS*R6) +385 C=R1*(R2*R4-YS*R6)-R3*(R3*R4-XS*R6)+R5*(R3*YS-XS*R2) +390 A=A/DD: B=B/DD: C=C/DD +395 PRINT +400 PRINT " Plate Constants " +405 PRINT " R.A. Dec. +410 PRINT USING "A = ##.##### D = ##.#####";A;D +415 PRINT USING "B = ##.##### E = ##.#####";B;E +420 PRINT USING "C = ##.##### F = ##.#####";C;F +425 REM +430 REM NOW FIND RESIDUALS +435 AS=0: DS=0 +440 FOR J=1 TO N +445 RAA(J)=XZ(J)-L*(X1(J)-(A*XZ(J)+B*YZ(J)+C)) +450 RDXZ(J)=YZ(J)-L*(Y1(J)-(D*XZ(J)+E*YZ(J)+F)) +455 AS=AS+((RAA(J)/L)*3600/(DR*15*COS(D0)))^2 +460 DS=DS+((RDXZ(J)/L)*3600/DR)^2 +465 NEXT J +470 S1=SQR(AS/(N-3)): S2=SQR(DS/(N-3)) +475 PRINT +480 PRINT "Residuals R.A. Dec." +482 A$=" Star ## #.##### #.#####" +485 FOR J=1 TO N +490 PRINT USING A$;J;RAA(J);RDXZ(J) +495 NEXT J +500 PRINT +505 REM Find standard coordinates of target +510 XX=A*X+B*Y+C+X/L: YY=D*X+E*Y+F+Y/L +515 B=CD-YY*SD: G=SQR(XX*XX+B*B) +520 REM +525 REM Find right ascension of target +530 A5=ATN(XX/B): IF B<0 THEN A5=A5+PI +535 A6=A5+A0: IF A6>2*PI THEN A6=A6-2*PI +540 IF A6<0 THEN A6=A6+2*PI +545 V=A6/(DR*15): GOSUB 660: A1=V1: A2=V2: A3=V3 +550 REM +555 REM Find declination of target +560 D6=ATN((SD+YY*CD)/G): V=D6/DR: GOSUB 660 +570 D1=V1: D2=V2: D3=V3 +575 REM +580 PRINT "For target:" +585 PRINT +590 PRINT "Right ascension "; +592 PRINT USING "## ## ##.###";A1;A2;A3 +595 PRINT USING " Std. dev. ##.###";S1 +600 PRINT +605 PRINT "Declination ";S$; +610 PRINT USING "## ## ##.##";D1;D2;D3 +615 PRINT USING " Std. dev. ##.##";S2 +620 END +625 REM +630 REM Input of sexagesimal values +635 INPUT V$,V2,V3 +640 S=1: IF LEFT$(V$,1)="-" THEN S=-1 +645 V1=ABS(VAL(V$)): V=S*(V1+V2/60+V3/3600) +655 RETURN +660 REM Output of sexagesimal values +665 S$="+": IF V<0 THEN S$="-" +670 V=ABS(V): V1=INT(V): VM=60*(V-V1) +675 V2=INT(VM): V3=60*(VM-V2) +680 RETURN +690 REM +700 REM This program is used to analyze measurements +710 REM of minor planet or comet positions on a +720 REM photographic plate and deduce precise +730 REM coordinates. Written by Jordan D. Marche +740 REM and explained by him in Sky & Telescope +750 REM for July, 1990, page 71. diff --git a/SKYTEL/broken/mirror.bas b/SKYTEL/broken/mirror.bas new file mode 100644 index 0000000..d7871f6 --- /dev/null +++ b/SKYTEL/broken/mirror.bas @@ -0,0 +1,84 @@ +10 REM FOUCAULT MIRROR TEST AT FOUR ZONES +20 REM +30 DIM A(4,9) +40 INPUT "Mirror's diameter ";W +50 INPUT "Radius of curvature";RR +60 R=W/2 +70 Z1=.3: Z2=.6: Z3=.8: Z4=.95: REM ZONES +80 X1=Z1*R: X2=Z2*R: X3=Z3*R: X4=Z4*R +90 L=.000022: REM WAVELENGTH IN INCHES +100 INPUT "Four zonal measurements";V1,V2,V3,V4 +110 F1=(X1/(2*RR*RR*L))*(X1*X1/RR-V1) +120 F2=(X2/(2*RR*RR*L))*(X2*X2/RR-V2) +130 F3=(X3/(2*RR*RR*L))*(X3*X3/RR-V3) +140 F4=(X4/(2*RR*RR*L))*(X4*X4/RR-V4) +150 A1=(X1)^7: B1=(X1)^5: C1=(X1)^3: D1=X1 +160 A2=(X2)^7: B2=(X2)^5: C2=(X2)^3: D2=X2 +170 A3=(X3)^7: B3=(X3)^5: C3=(X3)^3: D3=X3 +180 A4=(X4)^7: B4=(X4)^5: C4=(X4)^3: D4=X4 +190 M(1,1)=A1: M(1,2)=B1: M(1,3)=C1: M(1,4)=D1 +200 M(2,1)=A2: M(2,2)=B2: M(2,3)=C2: M(2,4)=D2 +210 M(3,1)=A3: M(3,2)=B3: M(3,3)=C3: M(3,4)=D3 +220 M(4,1)=A4: M(4,2)=B4: M(4,3)=C4: M(4,4)=D4 +230 M(1,5)=F1: M(2,5)=F2: M(3,5)=F3: M(4,5)=F4 +240 N=4: GOSUB 480: H=0: L=0 +250 A=M(1,5): B=M(2,5): C=M(3,5): D=M(4,5) +260 D=-A*R^6/4-B*R^4/3-C*R^2/2 +270 GOSUB 570: LINE (H0,YC)-(H0+1,YC) +280 FOR I=0 TO 1.001 STEP .05 +290 X=I*R: Y=A*X^8/8+B*X^6/6+C*X^4/4+D*X^2/2 +300 LINE -(H0+I*W1,YC-Y*W1) +310 REM PRINT "Zone ";I;TAB(20);"Surface error ";Y +320 IF Y>HI THEN HI=Y +330 IF Y"y" AND Q$<>"Y" THEN 440 +420 INPUT "New value for D";D +430 HI=0: LO=0: GOTO 270 +440 END +450 REM Solve 4 linear equations for 4 unknowns +460 REM (BYTE, August, 1983, page 396) +470 DE=1 +480 Y=N+1: FOR X=1 TO N: Y=Y+1: M(X,Y)=1: NEXT X +490 FOR G=1 TO N +500 J=2*N+1: DV=M(G,G): DE=DE*DV +510 FOR H=1 TO J: M(G,H)=M(G,H)/DV: NEXT H +520 FOR S=1 TO N +530 Q=M(S,G): IF S=G THEN 550 +540 FOR T=1 TO J: M(S,T)=M(S,T)-M(G,T)*Q: NEXT T +550 NEXT S: NEXT G +560 RETURN +570 REM PREPARE CHART +580 CLS: SCREEN 9 : Y1=85: Y2=95: YC=90 +590 W1=400: H0=100: H1=110: H3=H0+W1 +600 P1=H0+W1*Z1:P2=H0+W1*Z2:P3=H0+W1*Z3:P4=H0+W1*Z4 +610 LINE (H0,10)-(H0,170): LINE (H0,YC)-(H3,YC) +620 LINE (H0,10)-(H1,10): LINE (H0,50)-(H1,50) +630 LINE (H0,130)-(H1,130): LINE (H0,170)-(H1,170) +640 LINE (P1,Y1)-(P1,Y2): LINE (P2,Y1)-(P2,Y2) +650 LINE (P3,Y1)-(P3,Y2): LINE (P4,Y1)-(P4,Y2) +660 LINE (H3,Y1)-(H3,Y2) +670 LOCATE 1,1: PRINT "+0.2 wave" +680 LOCATE 4,1: PRINT "+0.1 wave" +690 LOCATE 7,1: PRINT " 0 wave" +700 LOCATE 10,1: PRINT "-0.1 wave" +710 LOCATE 13,1: PRINT "-0.2 wave" +720 LOCATE 14,13: PRINT "Center" +730 LOCATE 14,61: PRINT "Edge" +740 RETURN +800 REM +810 REM For IBM PCs with VGA graphics, this +820 REM program analyzes the results of a +830 REM Foucault knife-edge test of a parab- +840 REM oloidal telescope mirror, giving the +850 REM surface and wavefront error in wave- +860 REM lengths of light. Written by Roger +870 REM Sinnott, it is discussed in Sky & +880 REM Telescope magazine for February, 1990, +890 REM page 195. diff --git a/SKYTEL/broken/model.bas b/SKYTEL/broken/model.bas new file mode 100644 index 0000000..66b65c7 --- /dev/null +++ b/SKYTEL/broken/model.bas @@ -0,0 +1,52 @@ +10 REM MAKE A GLOBULAR +12 REM +14 R0=20: R2=R0*R0: R3=R2*R0 +16 P1=3.14159265# +18 C0=P1*P1*R3/4 +20 R1=R0/SQR(2) +22 XM=512: YM=512 +24 X2=XM/2: Y2=YM/2: S=5 +26 INPUT "HOW MANY STARS ";T +27 RANDOMIZE TIMER +28 CLS: REM CLEAR SCREEN +30 FOR I=1 TO T +32 C=C0*RND: R=R1 +34 REM +36 REM NOW FIND R +38 FOR K=1 TO 5 +40 GOSUB 100 +42 R=R+(C-C1)/D +44 NEXT K +46 REM 3-DIMENSIONAL PLACE +48 X=RND-.5 +50 Y=RND-.5 +52 Z=RND-.5 +54 S1=SQR(X*X+Y*Y+Z*Z) +56 IF S1>.5 THEN GOTO 48 +58 REM POINT IS NOW IN SPHERE +60 R=R*S1: X=X*R: Y=Y*R: Z=Z*R +62 GOSUB 200 +64 NEXT I +66 END +68 REM +100 REM NEWTON-RAPHSON ITERATION +105 A=R/R0 +110 C1=ATN(A)*.5*R3 +115 A=1+A*A +120 C1=C1+R*.5*R2/A +125 C1=P1*(C1-R*R2/(A*A)) +130 D=4*P1*R*R/(A*A*A) +135 RETURN +140 REM +200 REM 2-DIMENSIONAL PLOT +203 SCREEN 9 +205 X=X*S+X2: Y=Y*S+Y2 +210 IF X<0 OR Y<0 THEN 225 +215 IF X>=XM OR Y>=YM THEN 225 +220 PSET(X,Y) +225 RETURN +230 REM ------------------------ +240 REM APPEARED IN ASTRONOMICAL +250 REM COMPUTING, SKY & TELE- +260 REM SCOPE, APRIL, 1986 +270 REM ------------------------ diff --git a/SKYTEL/broken/origam.bas b/SKYTEL/broken/origam.bas new file mode 100644 index 0000000..0770940 --- /dev/null +++ b/SKYTEL/broken/origam.bas @@ -0,0 +1,103 @@ +10 REM MODEL A COMET ORBIT +11 F$="&HAAAA": REM FINE DOTS +12 C$="&H1010": REM COARSE DOTS +13 DR=3.14159265/180: K=.0172021 +14 FC=1.575: LB=10: SD=360/365.25 +15 SC=.82: REM ADJ FOR PRINTER +16 INPUT "Eccentricity ";EC +17 IF EC>.99 THEN EC=1 +18 INPUT "q ";QC: REM PERI DIST. +19 INPUT "w ";W: REM ARG. PERI. +20 INPUT "Node ";OM: +21 INPUT "(D)irect or (R)etro";Q$ +22 IF Q$="R" THEN W=360-W +23 L=W+180:IF L>360 THEN L=L-360 +24 INPUT "Day increment";ID +25 INPUT "Scale (mm/a.u.)";MM +26 AU=MM*FC: REM 1 A.U. IN MM +27 AR=266*SD: OM=AR+OM: +28 IF OM>360 THEN OM=OM-360: +29 CLS: SCREEN 1: KEY OFF +30 REM --- MODEL THE COMET --- +31 IF EC<1 THEN FF=(1+EC)/(1-EC) +32 W0=3*K/(QC*SQR(2*QC)) +33 Q=QC*AU: REM Q IN MM +34 X1=LB+Q: Y1=100: REM SUN LOC +35 CIRCLE (X1,Y1),2 +36 F=0: GOSUB 77: REM PERI LINE +37 LINE (X1,Y1)-(X3,Y3) +38 IF QC>.1 THEN CIRCLE (X3,Y3),2 +39 FOR F=1 TO 359 +40 IF EC=1 AND F=180 THEN 42 +41 GOSUB 77: PSET (X3,Y3) +42 NEXT F +43 F=-W: GOSUB 77 +44 LINE (X1,Y1)-(X3,Y3),,,VAL(C$) +45 F=-L: GOSUB 77 +46 LINE (X1,Y1)-(X3,Y3),,,VAL(F$) +47 FOR I=1 TO 5 +48 T=I*ID: IF EC=1 THEN GOSUB 92 +49 IF EC<1 THEN GOSUB 84 +50 GOSUB 77: CIRCLE (X3,Y3),2 +51 F=-F:GOSUB 77:CIRCLE (X3,Y3),2 +52 NEXT I +53 PRINT "Comet": INPUT Q$ +54 REM --- MODEL THE EARTH --- +55 DIM T(12):REM START OF MONTHS +56 DATA 0,31,59,90,120,151 +57 DATA 181,212,243,273,304,334 +58 FOR I=1 TO 12 : READ T(I) +59 NEXT I +60 EC=0: Q=AU: X1=LB+Q: Y1=100 +61 CLS: CIRCLE (X1,Y1),2 +62 FOR I=1 TO 12 +63 F=T(I)*SD: GOSUB 77: +64 LINE (X1,Y1)-(X3,Y3),,,VAL(F$) +65 CIRCLE (X3,Y3),1 +66 F=(T(I)+10)*SD: GOSUB 77 +67 CIRCLE (X3,Y3),1 +68 F=(T(I)+20)*SD: GOSUB 77 +69 CIRCLE (X3,Y3),1 +70 NEXT I +71 F=AR: GOSUB 77: REM ARIES +72 LINE (X1,Y1)-(X3,Y3),,,VAL(C$) +73 F=OM: GOSUB 77: REM ASC NODE +74 LINE (X1,Y1)-(X3,Y3) +75 PRINT "Earth": INPUT Q$ +76 END +77 REM FIND POINT ALONG ORBIT +78 R=Q*(1+EC)/(1+EC*COS(F*DR)) +79 X=R*COS(F*DR): Y=R*SIN(F*DR) +80 X3=X1-X: Y3=Y1+SC*Y: N=32000 +81 IF SQR(X3*X3+Y3*Y3)1/10000 THEN 94 +97 F=2*ATN(S)/DR +98 RETURN +99 REM +100 REM Written by R. B. Minton, +110 REM this program for IBM PCs +120 REM with CGA graphics prints +130 REM paper outlines of the +140 REM orbits of the Earth and +150 REM a comet, which can then +160 REM be cut out and folded to +170 REM make a 3-dimensional +180 REM model that helps you +190 REM visualize the orbit in +200 REM space. Fully explained +210 REM in Sky & Telescope for +220 REM April, 1990, page 424. diff --git a/SKYTEL/broken/periap.bas b/SKYTEL/broken/periap.bas new file mode 100644 index 0000000..1e52fd1 --- /dev/null +++ b/SKYTEL/broken/periap.bas @@ -0,0 +1,78 @@ +10 REM LUNAR PERIGEE AND APOGEE +11 INPUT "STARTING JD";J0 +12 P0=2415024.89: M0=27.554551 +13 J0=P0+M0*INT((J0-P0)/M0) +14 GOSUB 40 :REM GET CONSTANTS +15 FOR I=1 TO 3: P1=0: P2=0 +16 T=(J0-2415020)/36525: T2=T*T +17 M1=R*(296.105+R1*T+0.009192*T2) +18 D=R*(350.737+R2*T-0.001436*T2) +19 M=R*(358.476+R3*T-0.000150*T2) +20 F=R*(11.251+R4*T-0.003211*T2) +21 E=1-0.002495*T-0.00000752*T2 +22 FOR J=1 TO 30 +23 A(J)=A1(J)*E^C0(J) +24 B(J)=C1(J)*M1+C2(J)*D+C3(J)*M +25 B(J)=B(J)+C4(J)*F +26 P1=P1+A(J)*SIN(B(J))*R(J) +27 P2=P2+A(J)*COS(B(J))*R(J)*R(J) +28 NEXT J +29 J0=J0-(36525/R)*(P1/P2) +30 NEXT I +31 P=950724 +32 FOR J=1 TO 30: +33 P=P+A(J)*COS(B(J)) +34 NEXT J +35 K=6378.14/SIN(R*P*0.000001) +36 K=INT(K+0.5): PA$="PERIGEE " +37 IF P2<0 THEN PA$="APOGEE " +38 PRINT PA$;K;" KM JD ";J0 +39 J0=J0+13.78: GOTO 15 +40 REM CONSTANTS +41 DIM A(30),B(30),R(30),A1(30) +42 DIM C0(30),C1(30),C2(30),C3(30) +43 DIM C4(30): R=3.1415926536/180 +44 R1=477198.8491: R2=445267.1142 +45 R3=35999.0498: R4=483202.0251 +46 FOR J=1 TO 30 +47 READ A1(J),C0(J),C1(J) +48 READ C2(J),C3(J),C4(J) +49 R(J)=C1(J)*R1+C2(J)*R2 +50 R(J)=R(J)+C3(J)*R3+C4(J)*R4 +51 NEXT J +52 RETURN +53 DATA 51818,0,1,0,0,0 +54 DATA 9531,0,-1,2,0,0 +55 DATA 7843,0,0,2,0,0 +56 DATA 2824,0,2,0,0,0 +57 DATA 857,0,1,2,0,0 +58 DATA 533,1,0,2,-1,0 +59 DATA 401,1,-1,2,-1,0 +60 DATA 320,1,1,0,-1,0 +61 DATA -271,0,0,1,0,0 +62 DATA -264,1,1,0,1,0 +63 DATA -198,0,-1,0,0,2 +64 DATA 173,0,3,0,0,0 +65 DATA 167,0,-1,4,0,0 +66 DATA -111,1,0,0,1,0 +67 DATA 103,0,-2,4,0,0 +68 DATA -84,0,2,-2,0,0 +69 DATA -83,1,0,2,1,0 +70 DATA 79,0,2,2,0,0 +71 DATA 72,0,0,4,0,0 +72 DATA 64,1,1,2,-1,0 +73 DATA -63,1,-1,2,1,0 +74 DATA 41,1,0,1,1,0 +75 DATA 35,1,2,0,-1,0 +76 DATA -33,0,3,-2,0,0 +77 DATA -30,0,1,1,0,0 +78 DATA -29,0,0,-2,0,2 +79 DATA -29,1,2,0,1,0 +80 DATA 26,2,0,2,-2,0 +81 DATA -23,0,1,-2,0,2 +82 DATA 19,1,-1,4,-1,0 +83 REM ************************* +84 REM FROM ASTRONOMICAL COM- +85 REM COMPUTING, SKY & TELE- +86 REM SCOPE, NOV 87, PAGE 529 +87 REM ************************* diff --git a/SKYTEL/broken/pillar.bas b/SKYTEL/broken/pillar.bas new file mode 100644 index 0000000..d3ebbe2 --- /dev/null +++ b/SKYTEL/broken/pillar.bas @@ -0,0 +1,44 @@ +10 REM PILLAR.BAS by Rodney Kubesh +20 SCREEN 12 +30 REM Set Theta, the maximum angle of crystal tilt +40 TH = 4 +50 REM Sun angle Alpha, varied from 6 deg. +60 REM above horizon to 6 deg. below horizon +70 FOR I = 0 TO 12 +80 A = 6 - I +90 REM Calculate sky color +100 B& = 63 * (1 - .06 * I) : REM Blue +110 G& = 40 * (1 - .06 * I) : REM Green +120 R& = 45 * (1 - .06 * I) : REM Red +130 PALETTE 3, B& * 65536 + G& * 256 + R& +140 PAINT (320, 320), 3 +150 IF A >= 0 THEN +160 HI = 2 * TH - A +170 LO = -(2 * TH + A) +180 END IF +190 IF A < 0 THEN +200 HI = 2 * TH + ABS(A) +210 LO = ABS(A) - 2 * TH +220 END IF +230 FOR AN = LO TO HI STEP .5 +240 REM Draw the Sun +250 SU = 450 - (1000 * TAN(A * 3.14159 / 180)) +260 CIRCLE (320, SU), 10, 1 +270 PAINT (320, SU), 1, 1 +280 SP = 450 - (1000 * TAN(AN * 3.14159 / 180)) +290 PALETTE 1, 334143 +300 CIRCLE (320, SP), 3, 1 +310 PAINT (320, SP), 1, 1 +320 REM Draw the ground +330 LINE (0, 450)-(639, 480), , BF +340 NEXT AN +350 REM Hold screen for one second, then clear it +360 SLEEP 1 +370 IF I < 12 THEN CLS +380 NEXT I +390 END +900 REM --------------------------- +910 REM APPEARED IN ASTRONOMICAL +920 REM COMPUTING, SKY & TELESCOPE, +930 REM MAY 1999, PAGE 70 +940 REM --------------------------- diff --git a/SKYTEL/broken/pulsar.bas b/SKYTEL/broken/pulsar.bas new file mode 100644 index 0000000..dcbc83e --- /dev/null +++ b/SKYTEL/broken/pulsar.bas @@ -0,0 +1,53 @@ +10 ' RELATIVISTIC PRECESSION +20 DEFDBL A-Z +30 PI=4#*(ATN(1#)): XC=320: YC=165: SCREEN 9: KEY OFF +40 LOCATE 15,1: PRINT "Eccentricity (0 to 0.9) "; +50 INPUT EC: IF EC<0 OR EC>.9 THEN CLS : GOTO 40 +60 LOCATE 17,1: PRINT "Relativity strength (0 to 0.999)"; +70 PRINT SPC(40);: LOCATE 17,34 +80 INPUT SG: IF SG<0 OR SG>.999 THEN GOTO 60 +90 LOCATE 19,1: PRINT "Simulation speed (1 to 10)"; +100 PRINT SPC(40);: LOCATE 19,28: INPUT SS +110 IF SS<1 OR SS>10 THEN GOTO 90 +120 SS=.0009#*(SS-.9#)*(1#-.9#*EXP(10#*EC-9#)) +130 CLS: LOCATE 19,1: PRINT "Eccentricity" +140 PRINT USING " .######";EC; +150 LOCATE 22,1: PRINT "Relativity": PRINT "strength" +160 PRINT USING " .######";SG;: LOCATE 25,52 +170 COLOR 14: PRINT "(Press any key to interrupt)"; +180 SY=YC/(1+EC): SX=SY*1.33 +190 C0=(1#-SG*(3#+EC*EC)/(6#+2#*EC))/(1#-EC*EC) +200 RH=SG*(1#-EC*EC)/(3#+EC): C2=1.5#*RH +210 CIRCLE (XC,YC),SX*RH,8: PAINT (XC,YC),8 +220 LINE (0,YC)-(640,YC),7: LINE (XC,0)-(XC,350),7 +230 SN=0: QN=1#/(1#+EC): DN=0 +240 S=SN: Q=QN: D=DN: DP=DN: SP=SN: HN=SS*Q*Q +250 F=C0-Q+C2*Q*Q: K1=HN*F: L1=HN*D +260 S=SN+HN/2#: Q=QN+L1/2#: D=DN+K1/2# +270 F=C0-Q+C2*Q*Q: K2=HN*F: L2=HN*D +280 S=SN+HN/2#: Q=QN+L2/2#: D=DN+K2/2# +290 F=C0-Q+C2*Q*Q: K3=HN*F: L3=HN*D +300 S=SN+HN: Q=QN+L3: D=DN+K3 +310 F=C0-Q+C2*Q*Q: K4=HN*F: L4=HN*D +320 QN=QN+(L1+2#*L2+2#*L3+L4)/6# +330 DN=DN+(K1+2#*K2+2#*K3+K4)/6# +340 SN=SN+HN +350 PX=XC+SX*COS(SN)/QN: PY=YC-SY*SIN(SN)/QN +360 COLOR 9: PSET (PX,PY) +370 IF EC*DN>0 AND DP<0 THEN GOSUB 410 +380 IF INKEY$<>"" THEN END +390 GOTO 240 +400 ' +410 ' DRAW LINE TO APASTRON & COUNT ORBITS +420 COLOR 4: LINE (XC,YC)-(PX,PY) +430 N=N+1: LOCATE 1,56: COLOR 15 +440 PRINT "Number of orbits ";N; +450 IF N>1 THEN GOTO 500 +460 SA=(SP+(SN-SP)*DP/(DP-DN))*180/PI-360 +470 LOCATE 1,1: PRINT "Precession per orbit" +480 IF SA<360 THEN PRINT USING "######.#### deg"; SA +490 IF SA>=360 THEN PRINT USING "######.# deg"; SA +500 RETURN +610 ' This program by Jonathan Gallmeier, Mark Loewe, and +620 ' Donald W. Olson appeared in the article "Precession +630 ' and the Pulsar," Sky & Telescope, Oct. 1995, p. 86. diff --git a/SKYTEL/broken/rainbow.bas b/SKYTEL/broken/rainbow.bas new file mode 100644 index 0000000..bcbc4fd --- /dev/null +++ b/SKYTEL/broken/rainbow.bas @@ -0,0 +1,57 @@ +10 REM RAINBOW SIMULATION +20 REM +25 R0=180/3.14159 +30 REM RANDOM IMPACT PARAMETER +35 X=-1+2*RND(1) +40 Y=-1+2*RND(1) +45 B=SQR(X*X+Y*Y) +50 IF B>=1 THEN 30 +55 REM COLOR & INDEX OF REFR. +60 C=1+INT(3*RND(1)) +65 N=1.33+.01*(C-1) +70 REM COMPUTE ANGLES +75 I=ATN(B/SQR(1-B*B)) +80 R=ATN(B/SQR(N*N-B*B)) +85 T1=(4*R-2*I)*R0 +90 T2=(6*R-2*I)*R0-180 +95 REM INTENSITY FACTORS +100 RS=(SIN(I-R)/SIN(I+R))^2 +105 RP=(TAN(I-R)/TAN(I+R))^2 +110 RB=(1-RP)*(1-RP) +115 RC=(1-RS)*(1-RS) +120 I1=(RS*RC+RP*RB)/2 +125 I2=(RS*RS*RC+RP*RP*RB)/2 +130 IF I1<.04*RND(1) THEN 140 +135 TH=T1: GOSUB 180 +140 IF I2<.02*RND(1) THEN 150 +145 TH=T2: GOSUB 180 +150 GOTO 30 +155 REM COLORS & SCREEN +160 SCREEN 9: CLS: KEY OFF: NP=0 +165 PALETTE 1,4: PALETTE 2,2 +170 PALETTE 3,9 +175 RETURN +180 REM PLOT ON SCREEN +185 TH=ABS(TH) +190 IF TH>60 THEN RETURN +195 XP=320+320*(TH/60)*(X/B) +200 YP=325-300*(TH/60)*ABS(Y/B) +205 PSET(XP,YP),C: NP=NP+1 +210 LOCATE 1,1: PRINT NP: RETURN +215 REM VTAB23: PRINT NP: RETURN +220 REM FOR APPLE II COMPUTERS +225 REM COLORS & SCREEN +230 REM HGR: HOME: NP=0 +235 REM CC(1)=5: CC(2)=1: CC(3)=6 +240 REM RETURN +245 REM PLOT ON SCREEN +250 REM TH=ABS(TH) +255 REM IF TH>60 THEN RETURN +260 REM XP=139+139*(TH/60)*(X/B) +265 REM YP=159-159*(TH/60)*ABS(Y/B) +270 REM HCOLOR=CC(C): NP=NP+1 +275 REM HPLOT XP,YP TO XP+1,YP +280 REM ************************************** +285 REM APPEARED IN ASTRONOMICAL COMPUTING +290 REM SKY & TELESCOPE, FEBRUARY 1991 ISSUE +300 REM ************************************** \ No newline at end of file diff --git a/SKYTEL/broken/react.bas b/SKYTEL/broken/react.bas new file mode 100644 index 0000000..07be29f --- /dev/null +++ b/SKYTEL/broken/react.bas @@ -0,0 +1,68 @@ +100 REM REACTION TIME +110 REM +120 CLS: DIM R(2,101) +130 J=0: K=0: C=60.9: REM TIME CONSTANT +140 INPUT "FLASH AT RANDOM OR FIXED POSITIONS (R/F)";A1$ +150 IF A1$<>"R" AND A1$<>"F" THEN GOTO 140 +160 CLS: F=1: I=0: S=0: S2=0: S3=0: S4=0: M1=200: M2=2500: H=0: L=10 +170 T=M2*RND(1)+M1 +180 FOR D=0 TO T: NEXT: REM TIME DELAY BEFORE NEXT EVENT +190 IF F<>1 THEN GOTO 230 +200 IF A1$="F" THEN PSET(64,24) +210 IF A1$="R" THEN PSET(127*RND,48*RND) +220 GOTO 240 +230 CLS +240 P$=INKEY$: IF P$<>"" THEN GOTO 260 +250 I=I+1: GOTO 240 +260 IF P$="X" THEN GOTO 340 +270 IF I=0 THEN GOTO 340 +280 IF J>100 OR K>100 THEN GOTO 340 +290 IF F=2 THEN GOTO 310 +300 J=J+1: R(F,J)=I/C: GOTO 320 +310 K=K+1: R(F,K)=I/C +320 I=0: F=F+1: IF F>2 THEN F=1 +330 GOTO 170 +340 CLS +350 IF I=0 THEN PRINT "*** OUT OF SYNCH ***" +360 IF J>100 OR K>100 THEN PRINT "*** OUT OF SPACE ***" +370 INPUT "LIST DISAPPEARANCES OR REAPPEARANCES (D/R)";A2$ +380 IF A2$<>"D" AND A2$<>"R" THEN GOTO 370 +390 IF A2$="D" THEN GOTO 410 +400 F=1: U=J-1: GOTO 420 +410 F=2: U=K-1 +420 FOR P=1 TO U +430 PRINT R(F,P);: S=S+R(F,P) +440 IF HR(F,P) THEN L=R(F,P) +460 NEXT +470 IF U<3 THEN GOTO 640 +480 PRINT: PRINT +490 PRINT "NUMBER OF DATA POINTS = ";U +500 PRINT "MAX = ";H +510 PRINT "MIN = ";L +520 PRINT "MEAN = ";S/U +530 FOR Q=1 TO U +540 S2=S2+(R(F,Q)-S/U)^2 +550 S3=S3+(R(F,Q)-S/U)^3 +560 S4=S4+(R(F,Q)-S/U)^4 +570 NEXT +580 S2=SQR(S2/U) +590 S3=S3/(U*S2^3) +600 S4=S4/(U*S2^4) +610 PRINT "STANDARD DEVIATION = ";S2 +620 PRINT "SKEWNESS = ";S3 +630 PRINT "KURTOSIS = ";S4 +640 PRINT +650 INPUT "ANOTHER LIST (Y/N)";A3$ +660 IF A3$<>"Y" THEN GOTO 680 +670 S=0: S2=0: S3=0: S4=0: H=0: L=10: CLS: GOTO 370 +680 IF A3$<>"N" THEN GOTO 650 +690 INPUT "CONTINUE TO ADD DATA (Y/N)";A4$ +700 IF A4$="N" THEN GOTO 730 +710 IF A4$="Y" THEN GOTO 160 +720 GOTO 650 +730 REM ========================================== +740 REM FROM ASTRONOMICAL COMPUTING DEPARTMENT OF +750 REM SKY & TELESCOPE, AUGUST, 1986, PAGE 174 +760 REM ========================================== +770 END diff --git a/SKYTEL/broken/ronchi.bas b/SKYTEL/broken/ronchi.bas new file mode 100644 index 0000000..93a6117 --- /dev/null +++ b/SKYTEL/broken/ronchi.bas @@ -0,0 +1,51 @@ +10 REM RONCHI.BAS +20 REM +30 INPUT "Mirror diameter ";D +40 INPUT "Radius of curvature";R +50 INPUT "Grating frequency ";F +60 PRINT "Grating distance Delta" +70 PRINT " from the mirror's +80 PRINT " center of curvature" +90 INPUT " (+ is outside) ";DL +100 W=1/(2*F): REM Line width +120 CLS +130 SCREEN 2 +140 X0=300: Y0=100: C=300 +150 K=.42 +160 CIRCLE (X0,Y0),C/2 +170 FOR I=1 TO 10000 +180 X=D*(RND(1)-.5) +190 Y=D*(RND(1)-.5) +200 REM X and Y are the ray's +210 REM coordinates on the face +220 REM of the mirror +230 S2=X*X+Y*Y +240 IF SQR(S2)>D/2 THEN 390 +250 Z=R+S2/R +260 L=R+DL-Z +270 U=L*X/Z +280 REM Now, test to see if the +290 REM ray is blocked (FL=0) +300 REM or transmitted (FL=1) +310 REM by the grating +320 FL=0: REM Reset flag +330 T=INT(ABS(U/W)+.5) +340 IF T/2=INT(T/2) THEN FL=1 +350 IF FL=0 THEN 390 +360 XP=X0+X*C/D +370 YP=Y0+Y*K*C/D +380 PSET(XP,YP): REM Plot point +390 NEXT I +400 LOCATE 1,1 +410 PRINT "Diameter = ";D +420 LOCATE 2,1 +430 PRINT "R of C = ";R +440 LOCATE 3,1 +450 PRINT "Ronchi freq =";F +460 LOCATE 4,1 +470 PRINT "Delta = ";DL +480 END +490 REM ************************************ +500 REM APPEARED IN ASTRONOMICAL COMPUTING +510 REM SKY & TELESCOPE - APRIL 1991 ISSUE +520 REM ************************************ \ No newline at end of file diff --git a/SKYTEL/broken/sine.bas b/SKYTEL/broken/sine.bas new file mode 100644 index 0000000..465d00e --- /dev/null +++ b/SKYTEL/broken/sine.bas @@ -0,0 +1,73 @@ + 10 ' ----- set up dimensions (in pixels) of display ----- + 11 DX = 310 + 12 DY = 199 + 13 CLS + 14 SCREEN 2 + 15 KEY OFF + 17 PRINT "This program generates the Julia sets of the function" + 18 PRINT "lambda*sin(X + iY), where lambda = P + iQ and i * i = -1," + 19 PRINT "in a portion of the complex plane with origin (in upper" + 20 PRINT "left corner) ACORNER,BCORNER and size SIDEX,SIDEY." + 21 PRINT "To get acquainted with this function set:" + 22 PRINT "lambda = 1, 0 corner = -7, -7 size = 14, 14" + 23 PRINT "To reproduce the images on page 137 of the August S&T set," + 24 PRINT "Right image: lambda = 1, 0.1 corner = -3, -3 size 6, 6" + 25 PRINT "Left image: lambda = 1, 0.8 corner = -3, -3 size 6, 6" + 26 PRINT "More details are in Chapter 3 of 'The Science of Fractal" + 27 PRINT "Images,' Heinz-Otto Peitgen and Dietmas Saupe editors," + 28 PRINT "Springer -Verlag, 1988." + 29 PRINT "Good luck," + 30 PRINT "David H. Smith July, 1989" + 31 PRINT "" + 32 PRINT "" + 33 PRINT "P.S. This program takes about an hour to run on a 6 MHz 286" + 34 PRINT "machine equipped with a 287 coprocessor running Quick Basic." + 35 PRINT "If you are running GW Basic expect it to take 10-times longer." + 36 PRINT "A color graphics card is essential." + 85 INPUT "enter value of lambda"; P, Q + 90 INPUT "enter corner of region to be displayed"; ACORNER, BCORNER + 100 INPUT "enter size of region"; SIDEX, SIDEY + 105 CLS + 106 SCREEN 1 + 107 COLOR 0, 2 + 110 GAPX = SIDEX / DX + 115 GAPY = SIDEY / DY + 210 '----- start main loops ----- + 220 FOR X = 1 TO DX + 230 FOR Y = 1 TO DY + 260 AZ = (X * GAPX) + ACORNER + 270 BZ = (Y * GAPY) + BCORNER + 300 COUNT = 0 + 302 EPBZ = EXP(BZ) + 303 EMBZ = 1 / EPBZ + 304 COSH = (EPBZ + EMBZ) / 2! + 305 SINH = (EPBZ - EMBZ) / 2! + 310 REAL = SIN(AZ) * COSH + 315 IMAG = COS(AZ) * SINH + 320 REALZ = P * REAL - Q * IMAG + 325 IMAGZ = Q * REAL + P * IMAG + 326 IMAGZ2 = IMAGZ * IMAGZ + 330 ABSZ = SQR(IMAGZ2) + 340 COUNT = COUNT + 1 + 350 ' + 360 '---- check for divergence or count = 30 ----- + 370 IF ((ABSZ > 30) OR (COUNT = 30)) THEN 430 + 380 AZ = REALZ + 390 BZ = IMAGZ + 400 GOTO 302 + 410 ' + 420 '----- set pixel color according to count ----- + 430 COLOUR = 1 + COUNT MOD 3 + 550 IF (COUNT = 30) THEN COLOUR = 0 + 560 ' + 600 '----- turn pixel on ----- + 610 PSET (X, Y), COLOUR + 620 ' + 630 NEXT Y + 640 NEXT X + 700 END + 800 REM ************************************************ + 810 REM FOR MORE INFORMATION ON THIS PROGRAM, SEE THE + 820 REM ARTICLE "COMPUTER CHAOS AT HOME" IN THE AUGUST, + 830 REM 1989, ISSUE OF SKY & TELESCOPE, PAGE 139. + 840 REM ************************************************ diff --git a/SKYTEL/broken/solarosc.bas b/SKYTEL/broken/solarosc.bas new file mode 100644 index 0000000..e792219 --- /dev/null +++ b/SKYTEL/broken/solarosc.bas @@ -0,0 +1,46 @@ +10 REM Solar Surface Oscillations +20 REM SOLAROSC.BAS by John Kennewell +30 DIM P(200) +40 SCREEN 12: PH=1.570795: MX=0 +50 RD=1: GN=256: BL=65536! +60 PRINT "Solar Oscillation Modes" +70 INPUT "Degree L [0 to 28]";L +80 INPUT "Order M [0 to L ]";M +90 REM Generate Legendre function +100 FOR XI=0 TO 200 +110 X=(XI-100)/100: D=SQR(1-X*X) +120 P1=D^L: P2=0 +130 FOR LI=1 TO (2*L-1) STEP 2 +140 P1=P1*LI: NEXT LI +150 IF M>=L OR P1=0 THEN 200 +160 FOR MI=L-1 TO M STEP -1 +170 PM=2*(MI+1)*X*P1/D-P2 +180 PM=PM/(L-MI)/(L+MI+1) +190 P2=P1: P1=PM: NEXT MI +200 P(XI)=P1: MT=ABS(P1) +210 IF MT>MX THEN MX=MT +220 NEXT XI +230 CLS : COLOR 1: LOCATE 2,3 +240 PRINT "Solar Global Oscillations" +250 LOCATE 28,3 +260 PRINT "MODE : L ="; L;" M =";M +270 REM Show color palette +280 FOR I=1 TO 15 +290 LINE (600,-15+30*I)-(620,15+30*I),I,BF +300 RC=RD*INT((15-I)*4.5) +310 BC=BL*INT((I-1)*4.5) +320 GC=GN*INT((7-ABS(8-I))*4.5) +330 PALETTE I,RC+BC+GC: NEXT I +340 REM Plotting +350 FOR CT=-1 TO 1 STEP .005 +360 ST=SQR(1-CT*CT) +370 PM=P(CT*100+100)/MX +380 FOR SF=-1 TO 1 STEP .005 +390 CF=SQR(1-SF*SF) +400 FI=PH*SGN(SF) +410 IF CF<>0 THEN FI=ATN(SF/CF) +420 S=PM*COS(M*FI)*ST*CF +430 X%=300+200*SF*ST +440 Y%=240-200*CT +450 PSET (X%,Y%),8-7*S +460 NEXT SF: NEXT CT: END diff --git a/SKYTEL/broken/spiral.bas b/SKYTEL/broken/spiral.bas new file mode 100644 index 0000000..1948db5 --- /dev/null +++ b/SKYTEL/broken/spiral.bas @@ -0,0 +1,39 @@ +100 REM SPIRAL.BAS -- A PROGRAM +110 REM TO CREATE SPIRAL GAL- +120 REM AXIES OF MANY TYPES +130 REM +140 REM PH = angle phi +150 REM W = orientation angle +160 REM I = inclination angle +170 REM +180 PI=3.14159: DR=PI/180 +190 REM DR = radians per degree +200 PRINT "Input values:" +210 INPUT " Alpha, beta";A1,B1 +220 INPUT " Inclination (deg)";I +230 INPUT " Orientation (deg)";W +240 XC=300: YC=150: MX=40: MY=28 +250 I=I*DR: W=W*DR +260 CLS +270 SCREEN 9 +280 CIRCLE (XC,YC),10 +290 F=0: GOSUB 320: REM 1st arm +300 F=PI: GOSUB 320: REM 2nd arm +310 END +320 REM DRAW AN ARM +330 PSET(XC,YC) +340 FOR J=1 TO 100 +350 R=J/20 +360 IF R<1 THEN PH=(A1-B1)*R +370 IF R<1 THEN 390 +380 PH=A1-B1*R+A1*LOG(R) +390 X=MX*R*COS(PH+W+F)+XC +400 Y=MY*R*SIN(PH+W+F)*COS(I)+YC +410 REM PRINT X;Y +420 LINE -(X,Y) +430 NEXT J +440 RETURN +450 REM *************************************** +460 REM APPEARED IN ASTRONOMICAL COMPUTING +470 REM SKY & TELESCOPE - DECEMBER 1990 ISSUE +480 REM *************************************** \ No newline at end of file diff --git a/SKYTEL/broken/sundog.bas b/SKYTEL/broken/sundog.bas new file mode 100644 index 0000000..02329ca --- /dev/null +++ b/SKYTEL/broken/sundog.bas @@ -0,0 +1,72 @@ +10 REM SUNDOG.BAS by Rodney Kubesh +20 REM +30 SCREEN 9 +40 WINDOW (-125,80)-(125,-10) +50 PI=3.14159 +60 REM Choose solar elevation angle +70 INPUT "Solar elevation in degrees";SA +80 LN=COS(SA*PI/180) +90 LM=COS((90-SA)*PI/180) +95 REM Choose rays from various locations across solar disk +100 FOR J=1 TO 6 +110 EL=SA-(J-1)*.1 +115 REM Choose angle between ray and crystal face +120 FOR I=0 TO 90 STEP 2 +130 N0=COS(EL*PI/180) +140 M0=COS((90-EL)*PI/180) +150 IF ABS(1!-M0*M0-N0*N0)<.000001 THEN L0=0! +160 GOTO 180 +170 L0=(1!-M0*M0-N0*N0)^.5 +180 REM First crystal face, introduce tilt +190 N=1! +200 NP=1.31 +210 AN=I*PI/180! +220 GOSUB 460 +230 REM Tilt it back +240 AN=-AN +250 GOSUB 580 +260 REM Next crystal face, 60 deg. tilt +270 N=NP: NP=1! +280 AN=-(60-I)*PI/180! +290 GOSUB 460 +300 REM tilt it back +310 AN=-AN +320 GOSUB 580 +330 IF IR%<>0 THEN GOTO 390 +340 REM Plot point on image plane +350 XS=-200!*L0/N0 +360 YS=200!*MS/N0 +370 PSET (XS,YS) +380 PSET (-XS,YS) +390 NEXT I +400 NEXT J +405 REM Plot the Sun +410 SX=0: SY=200*LM/LN +420 CIRCLE (SX,SY),2 +430 PAINT (SX,SY) +440 LINE (-125,0)-(125,0) +450 END +460 REM Tilt subroutine +470 IR%=0 +480 MU=N/NP +490 LI=L0: NI=N0 +500 PH=SIN(AN): HP=COS(AN) +510 L0=LI*HP+NI*PH +520 N0=NI*HP-LI*PH +530 LS=MU*L0 : MS=MU*M0 +540 IN=MU*MU*(N0*N0-1!)+1! +550 IF IN>=0 THEN NS=IN^.5 +560 IF IN<0 THEN IR%=1 +570 RETURN +580 REM Tiltback subroutine +590 LI=LS: NI=NS +600 PH=SIN(AN): HP=COS(AN) +610 L0=LI*HP+NI*PH +620 N0=NI*HP-LI*PH +630 M0=MS +640 RETURN +650 REM ======================== +660 REM FROM "ASTRONOMICAL +670 REM COMPUTING," SKY & TELE- +680 REM SCOPE, JANUARY 1997 +690 REM ======================== \ No newline at end of file diff --git a/SKYTEL/broken/taki.bas b/SKYTEL/broken/taki.bas new file mode 100644 index 0000000..d03cff4 --- /dev/null +++ b/SKYTEL/broken/taki.bas @@ -0,0 +1,178 @@ +100 REM PROGRAM FOR POINTING A TELESCOPE +105 REM BY T. TAKI +110 REM +111 REM +115 DIM S$(17),B(17),D(17),Q(3,3) +120 DIM V(3,3),R(3,3),X(3,3),Y(3,3) +125 REM +130 REM STAR DATA +135 FOR J=1 TO 17: READ S$(J),B(J),D(J): NEXT J +140 REM +145 REM CONSTANTS +150 K=1.002738: G=57.2958 +155 Z1=0: Z2=0: Z3=0: REM MOUNT ERROR, IF ANY <<<<<<<<< +160 REM +165 FOR I=1 TO 2 +166 PRINT +170 INPUT "NAME OF BASIC STAR ";S$(0) +175 INPUT "TIME (MIN) ";T +180 INPUT "TELESCOPE DIRECTION ";F +185 INPUT "TELESCOPE ELEVATION ";H +195 N=0 +200 N=N+1: IF S$(0)=S$(N) THEN 215 +205 IF N=17 THEN 170 +210 GOTO 200 +215 D(0)=D(N)/G: B(0)=(B(N)-K*T*0.25)/G +220 X(1,I)=COS(D(0))*COS(B(0)) +225 X(2,I)=COS(D(0))*SIN(B(0)) +230 X(3,I)=SIN(D(0)) +235 F=F/G: H=(H+Z3)/G: GOSUB 750 +240 Y(1,I)=Y(1,0): Y(2,I)=Y(2,0): Y(3,I)=Y(3,0) +245 NEXT I +250 REM +255 X(1,3)=X(2,1)*X(3,2)-X(3,1)*X(2,2) +260 X(2,3)=X(3,1)*X(1,2)-X(1,1)*X(3,2) +265 X(3,3)=X(1,1)*X(2,2)-X(2,1)*X(1,2) +270 A=SQR(X(1,3)^2+X(2,3)^2+X(3,3)^2) +275 FOR I=1 TO 3: X(I,3)=X(I,3)/A: NEXT I +280 REM +285 Y(1,3)=Y(2,1)*Y(3,2)-Y(3,1)*Y(2,2) +290 Y(2,3)=Y(3,1)*Y(1,2)-Y(1,1)*Y(3,2) +295 Y(3,3)=Y(1,1)*Y(2,2)-Y(2,1)*Y(1,2) +300 A=SQR(Y(1,3)^2+Y(2,3)^2+Y(3,3)^2) +305 FOR I=1 TO 3: Y(I,3)=Y(I,3)/A: NEXT I +310 REM +311 REM +315 REM TRANSFORM MATRIX +320 FOR I=1 TO 3: FOR J=1 TO 3 +325 V(I,J)=X(I,J) +330 NEXT J: NEXT I +335 GOSUB 650: E=W +340 REM +345 FOR M=1 TO 3: FOR I=1 TO 3: FOR J=1 TO 3 +350 V(I,J)=X(I,J) +355 NEXT J: NEXT I +360 FOR N=1 TO 3 +365 V(1,M)=0: V(2,M)=0: V(3,M)=0: V(N,M)=1 +370 GOSUB 650: Q(M,N)=W/E +375 NEXT N +380 NEXT M +385 REM +390 FOR I=1 TO 3: FOR J=1 TO 3: R(I,J)=0: NEXT J: NEXT I +395 FOR I=1 TO 3: FOR J=1 TO 3: FOR L=1 TO 3 +400 R(I,J)=R(I,J)+Y(I,L)*Q(L,J) +405 NEXT L: NEXT J: NEXT I +410 REM +415 FOR M=1 TO 3 +420 FOR I=1 TO 3: FOR J=1 TO 3 +425 V(I,J)=R(I,J) +430 NEXT J: NEXT I +435 GOSUB 650: E=W +440 FOR N=1 TO 3 +445 V(1,M)=0: V(2,M)=0: V(3,M)=0: V(N,M)=1 +450 GOSUB 650: Q(M,N)=W/E +455 NEXT N +460 NEXT M +461 REM +462 REM +465 REM TRANSFORMATION +470 PRINT " ------" +475 INPUT "OPTION 1 OR 2";E +480 IF E=2 THEN 570 +482 IF E<>1 THEN 475 +483 REM +485 REM CONVERT EQUATORIAL --> TELESCOPE +490 INPUT " RIGHT ASCENSION (DEG) ";B(0) +495 INPUT " DECLINATION (DEG) ";D(0) +500 INPUT " TIME (MIN) ";T +505 D(0)=D(0)/G: B(0)=(B(0)-K*T*0.25)/G +510 X(1,1)=COS(D(0))*COS(B(0)) +515 X(2,1)=COS(D(0))*SIN(B(0)) +520 X(3,1)=SIN(D(0)) +525 Y(1,1)=0: Y(2,1)=0: Y(3,1)=0 +530 FOR I=1 TO 3: FOR J=1 TO 3 +535 Y(I,1)=Y(I,1)+R(I,J)*X(J,1) +540 NEXT J: NEXT I +545 GOSUB 685: F=F/G: H=H/G: GOSUB 785 +550 GOSUB 685: H=H-Z3 +555 PRINT USING "TELESCOPE DIRECTION (DEG):####.##";F +560 PRINT USING "TELESCOPE ELEVATION (DEG):####.##";H +565 GOTO 465 +566 REM +570 REM CONVERT TELESCOPE --> EQUATORIAL +575 INPUT " TELESCOPE DIRECTION (DEG) ";F +580 INPUT " TELESCOPE ELEVATION (DEG) ";H +585 INPUT " TIME (MIN) ";T +590 F=F/G: H=(H+Z3)/G: GOSUB 750 +595 X(1,1)=Y(1,0): X(2,1)=Y(2,0): X(3,1)=Y(3,0) +600 Y(1,1)=0: Y(2,1)=0: Y(3,1)=0 +605 FOR I=1 TO 3: FOR J=1 TO 3 +610 Y(I,1)=Y(I,1)+Q(I,J)*X(J,1) +615 NEXT J: NEXT I +620 GOSUB 685: F=F+K*T*0.25: F=F-INT(F/360)*360 +625 PRINT USING "RIGHT ASCENSION (DEG):####.##";F +630 PRINT USING "DECLINATION (DEG): ####.##";H +635 GOTO 465 +640 END +645 REM +650 REM DETERMINANT SUBROUTINE +655 W=V(1,1)*V(2,2)*V(3,3)+V(1,2)*V(2,3)*V(3,1) +660 W=W+V(1,3)*V(3,2)*V(2,1) +665 W=W-V(1,3)*V(2,2)*V(3,1)-V(1,1)*V(3,2)*V(2,3) +670 W=W-V(1,2)*V(2,1)*V(3,3) +675 RETURN +680 REM +685 REM ANGLE SUBROUTINE +690 C=SQR(Y(1,1)*Y(1,1)+Y(2,1)*Y(2,1)) +695 IF C=0 AND Y(3,1)>0 THEN H=90 +700 IF C=0 AND Y(3,1)<0 THEN H=-90 +705 IF C<>0 THEN H=ATN(Y(3,1)/C)*G +710 REM +715 IF C=0 THEN F=1000 +720 IF C<>0 AND Y(1,1)=0 AND Y(2,1)>0 THEN F=90 +725 IF C<>0 AND Y(1,1)=0 AND Y(2,1)<0 THEN F=270 +730 IF Y(1,1)>0 THEN F=ATN(Y(2,1)/Y(1,1))*G +735 IF Y(1,1)<0 THEN F=ATN(Y(2,1)/Y(1,1))*G+180 +740 F=F-INT(F/360)*360 +745 RETURN +746 REM +750 REM SUBROUTINE +755 Y(1,0)=COS(F)*COS(H)-SIN(F)*(Z2/G) +760 Y(1,0)=Y(1,0)+SIN(F)*SIN(H)*(Z1/G) +765 Y(2,0)=SIN(F)*COS(H)+COS(F)*(Z2/G) +770 Y(2,0)=Y(2,0)-COS(F)*SIN(H)*(Z1/G) +775 Y(3,0)=SIN(H) +780 RETURN +781 REM +785 REM SUBROUTINE +790 Y(1,1)=COS(F)*COS(H)+SIN(F)*(Z2/G) +795 Y(1,1)=Y(1,1)-SIN(F)*SIN(H)*(Z1/G) +800 Y(2,1)=SIN(F)*COS(H)-COS(F)*(Z2/G) +805 Y(2,1)=Y(2,1)+COS(F)*SIN(H)*(Z1/G) +810 Y(3,1)=SIN(H) +815 RETURN +816 REM +817 REM STAR LIST +820 DATA "A UMI", 37.960, 89.264 +825 DATA "A TAU", 68.980, 16.509 +830 DATA "B ORI", 78.634, -8.202 +835 DATA "A AUR", 79.172, 45.998 +840 DATA "A ORI", 88.793, 7.407 +845 DATA "A CMA", 101.287, -16.716 +850 DATA "A GEM", 113.650, 31.888 +855 DATA "A CMI", 114.825, 5.225 +860 DATA "B GEM", 116.329, 28.026 +865 DATA "A LEO", 152.093, 11.967 +870 DATA "A VIR", 201.298, -11.161 +875 DATA "A BOO", 213.915, 19.183 +880 DATA "A SCO", 247.352, -26.432 +885 DATA "A LYR", 279.234, 38.784 +890 DATA "A AQL", 297.695, 8.868 +895 DATA "A CYG", 310.358, 45.280 +900 DATA "A PSA", 344.413, -29.622 +1000 REM ***************************************** +1010 REM FROM SKY & TELESCOPE, FEBRUARY, 1989, +1020 REM PAGES 194-196. LINES 760 AND 795 +1030 REM CONTAINED ERRORS AS PRINTED IN THE +1040 REM MAGAZINE; THEY ARE CORRECTED HERE. +1050 REM ***************************************** diff --git a/SKYTEL/calendar.80 b/SKYTEL/calendar.80 new file mode 100644 index 0000000..2cb7819 --- /dev/null +++ b/SKYTEL/calendar.80 @@ -0,0 +1,13 @@ + +MONTH, YEAR? 03,2015 + + SU MO TU WE TH FR SA + + 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 + 22 23 24 25 26 27 28 + 29 30 31 + + +ANOTHER? N diff --git a/SKYTEL/calendar.INP b/SKYTEL/calendar.INP new file mode 100644 index 0000000..73ddaf4 --- /dev/null +++ b/SKYTEL/calendar.INP @@ -0,0 +1,2 @@ +03,2015 +N diff --git a/SKYTEL/calendar.OUT b/SKYTEL/calendar.OUT new file mode 100644 index 0000000..744673c --- /dev/null +++ b/SKYTEL/calendar.OUT @@ -0,0 +1,13 @@ + +MONTH, YEAR? 03,2015 + + SU MO TU WE TH FR SA + + 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 + 22 23 24 25 26 27 28 + 29 30 31 + + +ANOTHER? N diff --git a/SKYTEL/calendar.bas b/SKYTEL/calendar.bas new file mode 100644 index 0000000..2ea8f93 --- /dev/null +++ b/SKYTEL/calendar.bas @@ -0,0 +1,30 @@ +10 REM PERPETUAL GREGORIAN CALENDAR +12 REM +14 DIM C$(42), D$(31), E(12) +16 FOR I=1 TO 31: READ D$(I): NEXT I +18 FOR I=1 TO 12: READ E(I): NEXT I +20 DATA " 1"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9"," 10" +22 DATA " 11"," 12"," 13"," 14"," 15"," 16"," 17"," 18"," 19"," 20" +24 DATA " 21"," 22"," 23"," 24"," 25"," 26"," 27"," 28"," 29"," 30"," 31" +26 DATA 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 +28 PRINT: INPUT "MONTH, YEAR";M,Y: IF Y<100 THEN Y=Y+1900 +30 PRINT: PRINT " SU MO TU WE TH FR SA": PRINT +32 J=367*Y-INT(7*(Y+INT((M+9)/12))/4)+INT(275*M/9)+1721031 +34 K=0: IF M<=2 THEN K=-1 +36 J=J-INT(3*(INT((Y+K)/100)+1)/4) +38 K=E(M): IF M<>2 THEN 48 +40 W=INT(Y-100*INT(Y/100)): X=INT(Y-4*INT(Y/4)): Z=INT(Y-400*INT(Y/400)) +42 IF X<>0 THEN 48 +44 IF W=0 AND Z<>0 THEN 48 +46 K=29 +48 X=J-7*INT(J/7) +50 FOR I=1 TO 42: C$(I)=" ": NEXT I +52 FOR I=1 TO K: C$(I+X)=D$(I): NEXT I +54 FOR I=1 TO 6: J=7*I +56 PRINT C$(J-6);C$(J-5);C$(J-4);C$(J-3);C$(J-2);C$(J-1);C$(J) +58 NEXT I +60 PRINT: INPUT "ANOTHER";A$: IF A$="Y" THEN 28 +62 END +63 REM --------------------------------------------------------------- +64 REM APPEARED IN ASTRONOMICAL COMPUTING, SKY & TELESCOPE, JULY, 1985 +65 REM --------------------------------------------------------------- diff --git a/SKYTEL/calendar.dif b/SKYTEL/calendar.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/calendar.run b/SKYTEL/calendar.run new file mode 100644 index 0000000..2cb7819 --- /dev/null +++ b/SKYTEL/calendar.run @@ -0,0 +1,13 @@ + +MONTH, YEAR? 03,2015 + + SU MO TU WE TH FR SA + + 1 2 3 4 5 6 7 + 8 9 10 11 12 13 14 + 15 16 17 18 19 20 21 + 22 23 24 25 26 27 28 + 29 30 31 + + +ANOTHER? N diff --git a/SKYTEL/caljd.80 b/SKYTEL/caljd.80 new file mode 100644 index 0000000..0d6b919 --- /dev/null +++ b/SKYTEL/caljd.80 @@ -0,0 +1,3 @@ +Y,M,D ? 2015,03,01 +JC (0) OR GC (1) ? 0 +J.D.: 2.4571E+6 .5 diff --git a/SKYTEL/caljd.INP b/SKYTEL/caljd.INP new file mode 100644 index 0000000..4cbc196 --- /dev/null +++ b/SKYTEL/caljd.INP @@ -0,0 +1,2 @@ +2015,03,01 +0 diff --git a/SKYTEL/caljd.OUT b/SKYTEL/caljd.OUT new file mode 100644 index 0000000..2e01739 --- /dev/null +++ b/SKYTEL/caljd.OUT @@ -0,0 +1,3 @@ +Y,M,D ? 2015,03,01 +JC (0) OR GC (1) ? 0 +J.D.: 2.4571E+6 .5 diff --git a/SKYTEL/caljd.bas b/SKYTEL/caljd.bas new file mode 100644 index 0000000..98d34aa --- /dev/null +++ b/SKYTEL/caljd.bas @@ -0,0 +1,21 @@ +800 REM CALENDAR --> JD +805 REM +810 INPUT "Y,M,D ";Y,M,D +815 INPUT "JC (0) OR GC (1) ";G +820 D1=INT(D): F=D-D1-0.5 +825 J=-INT(7*(INT((M+9)/12)+Y)/4) +830 IF G=0 THEN 850 +835 S=SGN(M-9): A=ABS(M-9) +840 J1=INT(Y+S*INT(A/7)) +845 J1=-INT((INT(J1/100)+1)*3/4) +850 J=J+INT(275*M/9)+D1+G*J1 +855 J=J+1721027+2*G+367*Y +860 IF F>=0 THEN 870 +865 F=F+1: J=J-1 +870 PRINT "J.D.: ";J;F +875 END +880 REM ------------------------ +885 REM APPEARED IN ASTRONOMICAL +890 REM COMPUTING, SKY & TELE- +895 REM SCOPE, MAY, 1984 +900 REM ------------------------ diff --git a/SKYTEL/caljd.dif b/SKYTEL/caljd.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/caljd.run b/SKYTEL/caljd.run new file mode 100644 index 0000000..0d6b919 --- /dev/null +++ b/SKYTEL/caljd.run @@ -0,0 +1,3 @@ +Y,M,D ? 2015,03,01 +JC (0) OR GC (1) ? 0 +J.D.: 2.4571E+6 .5 diff --git a/SKYTEL/capture.80 b/SKYTEL/capture.80 new file mode 100644 index 0000000..1f63017 --- /dev/null +++ b/SKYTEL/capture.80 @@ -0,0 +1,14 @@ +F/ratio ? 2.34 +Focal length (mm)? 30 +Select film/image format: + (1) 35-mm + (2) 120 square + (3) 4 x 5 + (4) 8 x 10 + (5) Special area + (6) Fisheye (180 deg) +Selection? 1 +Sky area (sq deg): 2700 +Efficiency 54.2 + +Another (y or n)? n diff --git a/SKYTEL/capture.INP b/SKYTEL/capture.INP new file mode 100644 index 0000000..90731b7 --- /dev/null +++ b/SKYTEL/capture.INP @@ -0,0 +1,4 @@ +2.34 +30 +1 +n diff --git a/SKYTEL/capture.OUT b/SKYTEL/capture.OUT new file mode 100644 index 0000000..f94a743 --- /dev/null +++ b/SKYTEL/capture.OUT @@ -0,0 +1,14 @@ +F/ratio ? 2.34 +Focal length (mm)? 30 +Select film/image format: + (1) 35-mm + (2) 120 square + (3) 4 x 5 + (4) 8 x 10 + (5) Special area + (6) Fisheye (180 deg) +Selection? 1 +Sky area (sq deg): 2700 +Efficiency 54.2 + +Another (y or n)? n diff --git a/SKYTEL/capture.bas b/SKYTEL/capture.bas new file mode 100644 index 0000000..8b900ca --- /dev/null +++ b/SKYTEL/capture.bas @@ -0,0 +1,50 @@ +10 ' A Camera's Efficiency for Meteors +20 ' +30 RD=180/3.14159 +35 C=4*RD^2 +40 L=0: W=0: Q=0 +50 K=0.003667: ' Constant +60 N=1: ' Exponent for focal length +70 X=0: ' Closed/open ratio +80 INPUT "F/ratio ";FR +90 INPUT "Focal length (mm)"; FL +100 AP=FL/FR: ' Aperture in mm +110 PRINT "Select film/image format:" +120 PRINT " (1) 35-mm" +130 PRINT " (2) 120 square" +140 PRINT " (3) 4 x 5" +150 PRINT " (4) 8 x 10" +160 PRINT " (5) Special area" +170 PRINT " (6) Fisheye (180 deg)" +180 INPUT "Selection";Q +190 IF Q<1 OR Q>6 THEN GOTO 180 +200 ON Q GOTO 210,220,230,240,250,260 +210 L=36: W=24: GOTO 270 +220 L=55: W=55: GOTO 270 +230 L=119: W=94: GOTO 270 +240 L=240: W=190: GOTO 270 +250 INPUT "Sky area (sq deg)";S +255 GOTO 310 +260 S=20626: GOTO 290 +265 ' +266 ' Compute sky area covered +267 ' by a rectangular film frame +270 S=C*ATN(0.5*L/FL)*ATN(0.5*W/FL) +280 IF S>50 THEN S=INT(S+0.5) +290 PRINT "Sky area (sq deg): ";S +300 ' +310 ' Now, evaluate McKinley formula +320 E=K*AP^2*S/((1+X)*FL^N) +330 PRINT USING "Efficiency ####.#";E +340 PRINT +350 INPUT "Another (y or n)";Q$ +360 IF Q$<>"n" THEN GOTO 40 +370 END +380 ' +390 ' Written by Roger W. Sinnott, this program calculates the relative +400 ' efficiency of any given camera lens and film format for capturing +410 ' meteors. The efficiency is expressed as a number that ranges from +420 ' less than 10 for poor combinations (such as a 35-mm camera with a +430 ' long telephoto lens) to more than 1,000 for highly specialized systems +440 ' such as the Baker Super-Schmidt. The program was described in +450 ' Sky & Telescope for February 1994, page 85. diff --git a/SKYTEL/capture.dif b/SKYTEL/capture.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/capture.run b/SKYTEL/capture.run new file mode 100644 index 0000000..1f63017 --- /dev/null +++ b/SKYTEL/capture.run @@ -0,0 +1,14 @@ +F/ratio ? 2.34 +Focal length (mm)? 30 +Select film/image format: + (1) 35-mm + (2) 120 square + (3) 4 x 5 + (4) 8 x 10 + (5) Special area + (6) Fisheye (180 deg) +Selection? 1 +Sky area (sq deg): 2700 +Efficiency 54.2 + +Another (y or n)? n diff --git a/SKYTEL/ccdlimi2.80 b/SKYTEL/ccdlimi2.80 new file mode 100644 index 0000000..acc2238 --- /dev/null +++ b/SKYTEL/ccdlimi2.80 @@ -0,0 +1,16 @@ +Zenith distance (deg.) : ? 30 +Enter V-band magnitude of star: ? 7 +Exposure time (seconds): ? 360 + +Airmass (gas, aerosol, ozone): 1.15 1.15 1.15 +Extinction Coefficients (UBVRI): 0.62 0.32 0.19 0.09 0.05 +Total Extinction (UBVRI): 0.71 0.37 0.22 0.10 0.05 +Sky brightness (UBVRI): 0.03.851061e-14 0.07.038847e-14 0.0 + +Star counts in photometry aperture (UBVRI): 864817 7865884 17142814 50004318 +22816746 +Sky counts per pixel (UBVRI): 2 9 30 141 304 + +For star with U, B, V, R, I 8.04 7.70 7.00 6.47 5.88 + their respective SNR are 929.49 2804.46 4140.27 7071.28 4776.48 + with 1-sigma errors (mag.) of 0.00 0.00 0.00 0.00 0.00 diff --git a/SKYTEL/ccdlimi2.INP b/SKYTEL/ccdlimi2.INP new file mode 100644 index 0000000..472db0d --- /dev/null +++ b/SKYTEL/ccdlimi2.INP @@ -0,0 +1,3 @@ +30 +7 +360 diff --git a/SKYTEL/ccdlimi2.OUT b/SKYTEL/ccdlimi2.OUT new file mode 100644 index 0000000..c9a326a --- /dev/null +++ b/SKYTEL/ccdlimi2.OUT @@ -0,0 +1,16 @@ +Zenith distance (deg.) : ? 30 +Enter V-band magnitude of star: ? 7 +Exposure time (seconds): ? 360 + +Airmass (gas, aerosol, ozone): 1.15 1.15 1.15 +Extinction Coefficients (UBVRI): 0.62 0.32 0.19 0.09 0.05 +Total Extinction (UBVRI): 0.71 0.37 0.22 0.10 0.05 +Sky brightness (UBVRI): 0.03.851061e-14 0.07.038847e-14 0.0 + +Star counts in photometry aperture (UBVRI): 864817 7865884 17142814 50004318 +22816746 +Sky counts per pixel (UBVRI): 2 9 30 141 304 + +For star with U, B, V, R, I 8.04 7.70 7.00 6.47 5.88 + their respective SNR are 929.49 2804.46 4140.27 7071.28 4776.48 + with 1-sigma errors (mag.) of 0.00 0.00 0.00 0.00 0.00 diff --git a/SKYTEL/ccdlimi2.bas b/SKYTEL/ccdlimi2.bas new file mode 100644 index 0000000..44e5740 --- /dev/null +++ b/SKYTEL/ccdlimi2.bas @@ -0,0 +1,176 @@ +10 REM CCDLIMIT.BAS CCD Limits +20 REM by Bradley E. Schaefer +30 FOR I=1 TO 5 : READ WA(I) : NEXT I +40 DATA 0.365, 0.44, 0.55, 0.7, 0.9 +50 FOR I=1 TO 5 : READ Q(I) : NEXT I +60 DATA 15.0, 25.0, 40.0, 56.0, 26.0 +70 FOR I=1 TO 5 : READ MO(I) : NEXT I +80 DATA -10.93, -10.45, -11.05, -11.90, -12.70 +90 REM Input for position +100 RD=3.14159/180.0 +110 INPUT "Zenith distance (deg.) : ";Z +120 AM=180.0 : REM Moon phase (deg.; 0=FM, 90=FQ/LQ, 180=NM) +130 ZM=180.0 : REM Zenith distance of Moon (deg.) +140 RM=180.0 : REM Angular distance to Moon (deg.) +150 ZS=180.0 : REM Zenith distance of Sun (deg.) +160 RS=180.0 : REM Angular distance to Sun (deg.) +170 REM Input for the Site and Date +180 TS=1.0 : REM FWHM of seeing in V at zenith +190 RH=40.0 : REM relative humidity (%) +200 TE=15.0 : REM Air temperature (deg. C) +210 LA=30.0 : REM Latitude (deg.) +220 AL=1000.0 : REM Altitude above sea level (m) +230 M=2.0 : REM Month (1=Jan, 12=Dec) +240 Y=1998.0 : REM Year +250 REM Input for the telescope and detector +260 D=20.32 : REM Telescope aperture (cm) +270 TP=.91 : REM Pixel size (") +280 DS=4.0 : REM Diameter of secondary (cm) +290 NM=2 : REM Number of mirrors (-) +300 NL=2 : REM Number of lens/glass in path (-) +310 RN=15.0 : REM Read noise of CCD (electrons) +320 INPUT "Enter V-band magnitude of star: ";MV +330 CI=.7 : REM Color index [B-V] for star (mag) +340 INPUT "Exposure time (seconds): ";E +350 NR=1 : REM Number of CCD readouts (-) +360 TA=1.0 : REM Radius of photometry aperture (") [best : TA=~TS] +370 GOSUB 1000 : REM Extinction subroutine +380 GOSUB 2000 : REM Sky subroutine +390 REM Calculate counts from star and sky +400 MA(1)=MV+2.35*CI-.6 : REM U +410 MA(2)=MV+CI : REM B +420 MA(3)=MV : REM V +430 MA(4)=MV-.75*CI : REM R +440 MA(5)=MV-1.6*CI : REM I +450 GOSUB 3000 : REM CT subroutine +460 REM Calculate SNR (see PASP article for exact formula) +470 P=3.14159*(TA/TP)^2 +480 IF P<1.0 THEN P=1.0 +490 FOR I=1 TO 5 +500 VA=NS(I)+P*NB(I)+P*NR*RN*RN +510 SN(I)=NS(I)/SQR(VA) +520 SI(I)=1.086/SN(I) +530 NEXT I +540 PRINT : PRINT "For star with U, B, V, R, I "; +550 PRINT USING " #####.##"; MA(1), MA(2), MA(3), MA(4), MA(5) +560 PRINT " their respective SNR are "; +570 PRINT USING " #####.##"; SN(1), SN(2), SN(3), SN(4), SN(5) +580 PRINT " with 1-sigma errors (mag.) of "; +590 PRINT USING " #####.##"; SI(1), SI(2), SI(3), SI(4), SI(5) +600 END +1000 REM Extinction Subroutine +1010 FOR I=1 TO 5: READ OZ(I): NEXT I +1020 DATA 0.000, 0.000, 0.031, 0.008, 0.000 +1030 FOR I=1 TO 5: READ WT(I): NEXT I +1040 DATA 0.074, 0.045, 0.031, 0.020, 0.015 +1050 LT=LA*RD +1060 RA=(M-3)*30.0*RD +1070 SL=LA/ABS(LA) +1080 REM Airmass for each component +1090 ZZ=Z*RD +1100 XG=1/(COS(ZZ)+.0286*EXP(-10.5*COS(ZZ))) +1110 XA=1/(COS(ZZ)+.0123*EXP(-24.5*COS(ZZ))) +1120 XO=1/SQR(1.0-(SIN(ZZ)/(1.0+(20.0/6378.0)))^2) +1130 REM UBVRI extinction for each component +1140 FOR I=1 TO 5 +1150 KR=.1066*EXP(-1*AL/8200)*((WA(I)/.55)^(-4)) +1160 KA=.1*((WA(I)/.55)^(-1.3))*EXP(-1*AL/1500) +1170 KA=KA*((1-.32/LOG(RH/100.0))^1.33)*(1+SL*SIN(RA)) +1180 KO=OZ(I)*(3.0+.4*(LT*COS(RA)-COS(3*LT)))/3.0 +1190 KW=WT(I)*.94*(RH/100.0)*EXP(TE/15)*EXP(-1*AL/8200) +1200 K(I)=KR+KA+KO+KW +1210 DM(I)=KR*XG+KA*XA+KO*XO+KW*XG +1220 NEXT I +1230 REM Write results and return +1240 PRINT : PRINT "Airmass (gas, aerosol, ozone): "; +1250 PRINT USING "####.## "; XG, XA, XO +1260 PRINT "Extinction Coefficients (UBVRI): "; +1270 PRINT USING "####.## "; K(1), K(2), K(3), K(4), K(5) +1280 PRINT "Total Extinction (UBVRI): "; +1290 PRINT USING "####.## "; DM(1), DM(2), DM(3), DM(4), DM(5) +1300 RETURN +2000 REM SKY Subroutine +2010 FOR I=1 TO 5: READ BO(I): NEXT I +2020 DATA 8.0E-14, 7.0E-14, 1.0E-13, 1.0E-13, 3.0E-13 +2030 FOR I=1 TO 5: READ CM(I): NEXT I +2040 DATA 1.36, 0.91, 0.00, -0.76, -1.17 +2050 FOR I=1 TO 5: READ MS(I): NEXT I +2060 DATA -25.96, -26.09, -26.74, -27.26, -27.55 +2070 X=1/(COS(ZZ)+.025*EXP(-11*COS(ZZ))) : REM air mass +2080 XM=1/(COS(ZM*RD)+.025*EXP(-11*COS(ZM*RD))) : REM air mass Moon +2090 IF ZM>90.0 THEN XM=40.0 +2100 XS=1/(COS(ZS*RD)+.025*EXP(-11*COS(ZS*RD))) : REM air mass Sun +2110 IF ZS>90.0 THEN XS=40.0 +2120 FOR I=1 TO 5 +2130 REM Dark night sky brightness +2140 BN=BO(I)*(1+.3*COS(6.283*(Y-1992)/11)) +2150 BN=BN*(.4+.6/SQR(1.0-.96*((SIN(ZZ))^2))) +2160 BN=BN*(10^(-.4*K(I)*X)) +2170 REM Moonlight brightness +2180 MM=-12.73+.026*ABS(AM)+4E-09*(AM^4) : REM moon mag in V +2190 MM=MM+CM(I) : REM Moon mag +2200 C3=10.0^(-.4*K(I)*XM) +2210 FM=6.2E+07*(RM^(-2))+(10^(6.15-RM/40)) +2220 FM=FM+(10^5.36)*(1.06+((COS(RM*RD))^2)) +2230 BM=10^(-.4*(MM-MO(I)+43.27)) +2240 BM=BM*(1-10^(-.4*K(I)*X)) +2250 BM=BM*(FM*C3+440000.0*(1-C3)) +2260 REM Twilight brightness +2270 HS=90.0-ZS : REM Height of Sun +2280 BT=10^(-.4*(MS(I)-MO(I)+32.5-HS-(Z/(360*K(I))))) +2290 BT=BT*(100/RS)*(1.0-10.0^(-.4*K(I))) +2300 REM Daylight brightness +2310 C4=10.0^(-.4*K(I)*XS) +2320 FS=6.2E+07*(RS^(-2))+(10^(6.15-RS/40)) +2330 FS=FS+(10^5.36)*(1.06+((COS(RS*RD))^2)) +2340 BD=10^(-.4*(MS(I)-MO(I)+43.27)) +2350 BD=BD*(1-10^(-.4*K(I)*X)) +2360 BD=BD*(FS*C4+440000.0*(1-C4)) +2370 REM Total sky brightness +2380 IF BD>BT THEN GOTO 2410 +2390 B(I)=BN+BD +2400 GOTO 2420 +2410 B(I)=BN+BT +2420 IF ZM<90.0 THEN B(I)=B(I)+BM +2430 NEXT I +2440 PRINT "Sky brightness (UBVRI):"; +2450 PRINT USING " ##.#^^^^"; B(1), B(2), B(3), B(4), B(5) +2460 RETURN +3000 REM Subroutine CT +3010 FOR I=1 TO 5 : READ DL(I) : NEXT I +3020 DATA 0.068, 0.098, 0.089, 0.22, 0.24 +3030 FOR I=1 TO 5 : READ RE(I) : NEXT I +3040 DATA 0.83, 0.86, 0.88, 0.87, 0.90 +3050 FOR I=1 TO 5 : READ TR(I) : NEXT I +3060 DATA 0.970, 0.983, 0.987, 0.983, 0.980 +3070 FOR I=1 TO 5 : READ TF(I) : NEXT I +3080 DATA 0.70, 0.70, 0.70, 0.70, 0.70 +3090 REM Seeing +3100 FOR I=1 TO 5 +3110 X=1.0/(COS(Z/57.28)) +3120 T1=(TS^2)*(X^1.2)*((WA(I)/.55)^(-.4)) +3130 T2=5.54*((3600.0*57.28*(WA(I)/10000.0)/D)^2) +3140 TT(I)=SQR(T1+T2) : REM TOTAL SEEING FWHM (") +3150 NEXT I +3160 REM Efficiencies +3170 FOR I=1 TO 5 +3180 EF(I)=(Q(I)/100.0)*TF(I)*(RE(I)^NM)*(TR(I)^(2.0*NL)) +3190 F(I)=1-EXP(-2.77*((TA/TT(I))^2)) : REM Fraction in photometry aperture +3200 NEXT I +3210 A=(3.14159/4.0)*(D^2-DS^2) : REM Light-collecting area +3220 REM Source and sky counts +3230 FOR I=1 TO 5 +3240 IN=10^(-.4*(MA(I)-MO(I)+DM(I))) +3250 PE=(WA(I)/10000.0)/(6.62E-27*2.997E+10) +3260 NS(I)=IN*F(I)*A*EF(I)*E*DL(I)*PE +3270 NB(I)=B(I)*A*EF(I)*E*DL(I)*PE*(TP^2) +3280 NEXT I +3290 PRINT : PRINT "Star counts in photometry aperture (UBVRI):"; +3300 PRINT USING " #####."; NS(1), NS(2), NS(3), NS(4), NS(5) +3310 PRINT "Sky counts per pixel (UBVRI): "; +3320 PRINT USING " #####."; NB(1), NB(2), NB(3), NB(4), NB(5) +3330 RETURN +9991 REM ============================== +9992 REM FROM "ASTRONOMICAL COMPUTING," +9993 REM SKY & TELESCOPE, MAY 1998 +9994 REM ============================== diff --git a/SKYTEL/ccdlimi2.dif b/SKYTEL/ccdlimi2.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/ccdlimi2.run b/SKYTEL/ccdlimi2.run new file mode 100644 index 0000000..acc2238 --- /dev/null +++ b/SKYTEL/ccdlimi2.run @@ -0,0 +1,16 @@ +Zenith distance (deg.) : ? 30 +Enter V-band magnitude of star: ? 7 +Exposure time (seconds): ? 360 + +Airmass (gas, aerosol, ozone): 1.15 1.15 1.15 +Extinction Coefficients (UBVRI): 0.62 0.32 0.19 0.09 0.05 +Total Extinction (UBVRI): 0.71 0.37 0.22 0.10 0.05 +Sky brightness (UBVRI): 0.03.851061e-14 0.07.038847e-14 0.0 + +Star counts in photometry aperture (UBVRI): 864817 7865884 17142814 50004318 +22816746 +Sky counts per pixel (UBVRI): 2 9 30 141 304 + +For star with U, B, V, R, I 8.04 7.70 7.00 6.47 5.88 + their respective SNR are 929.49 2804.46 4140.27 7071.28 4776.48 + with 1-sigma errors (mag.) of 0.00 0.00 0.00 0.00 0.00 diff --git a/SKYTEL/chance.80 b/SKYTEL/chance.80 new file mode 100644 index 0000000..642b000 --- /dev/null +++ b/SKYTEL/chance.80 @@ -0,0 +1,19 @@ + + +Event rate (lambda)? 1.1 +Interval (t)? 2.2 + + Probability (and odds) of... + +# events fewer than exactly greater than + (n) n events n events n events +--------------------------------------------------------------------------- + 0 - - - 8.9 1 : 10 ) 91.1 10 : 1 ) + 1 8.9 1 : 10 ) 21.5 1 : 3.6) 69.6 2.3: 1 ) + 2 30.4 1 : 2.3) 26.0 1 : 2.8) 43.6 1 : 1.3) + 3 56.4 1.3: 1 ) 21.0 1 : 3.8) 22.5 1 : 3.4) + 4 77.5 3.4: 1 ) 12.7 1 : 6.9) 9.8 1 : 9.2) + 5 90.2 9.2: 1 ) 6.2 1 : 15 ) 3.7 1 : 26 ) + 6 96.3 26 : 1 ) 2.5 1 : 39 ) 1.2 1 : 82 ) + 7 98.8 82 : 1 ) 0.9 1 : 116 ) 0.4 1 : 284 ) + 8 99.6 284 : 1 ) 0.3 1 : 384 ) 0.1 1 : 1095 ) diff --git a/SKYTEL/chance.INP b/SKYTEL/chance.INP new file mode 100644 index 0000000..96db77c --- /dev/null +++ b/SKYTEL/chance.INP @@ -0,0 +1,2 @@ +1.1 +2.2 diff --git a/SKYTEL/chance.OUT b/SKYTEL/chance.OUT new file mode 100644 index 0000000..20ae93b --- /dev/null +++ b/SKYTEL/chance.OUT @@ -0,0 +1,19 @@ + + +Event rate (lambda)? 1.1 +Interval (t)? 2.2 + + Probability (and odds) of... + +# events fewer than exactly greater than + (n) n events n events n events +--------------------------------------------------------------------------- + 0 - - - 8.9 1 : 10 ) 91.1 10 : 1 ) + 1 8.9 1 : 10 ) 21.5 1 : 3.6) 69.6 2.3: 1 ) + 2 30.4 1 : 2.3) 26.0 1 : 2.8) 43.6 1 : 1.3) + 3 56.4 1.3: 1 ) 21.0 1 : 3.8) 22.5 1 : 3.4) + 4 77.5 3.4: 1 ) 12.7 1 : 6.9) 9.8 1 : 9.2) + 5 90.2 9.2: 1 ) 6.2 1 : 15 ) 3.7 1 : 26 ) + 6 96.3 26 : 1 ) 2.5 1 : 39 ) 1.2 1 : 82 ) + 7 98.8 82 : 1 ) 0.9 1 : 116 ) 0.4 1 : 284 ) + 8 99.6 284 : 1 ) 0.3 1 : 384 ) 0.1 1 : 1095 ) diff --git a/SKYTEL/chance.bas b/SKYTEL/chance.bas new file mode 100644 index 0000000..d200392 --- /dev/null +++ b/SKYTEL/chance.bas @@ -0,0 +1,80 @@ +10 ' Poisson Distribution +20 ' by Mark Gingrich +30 MP=.1 +40 A1$="Probability (and odds) of..." +50 A2$="# events fewer than" +60 A3$="exactly greater than" +70 A4$=" (n) n events " +80 A5$="n events n events " +90 A6$ = "-------------------------" +100 A7$=" " +110 ' +120 ' Get input and print header +130 PRINT:PRINT +140 INPUT "Event rate (lambda)";L +150 INPUT "Interval (t)";T +160 IF EXP(-L*T)>0 THEN 190 +170 PRINT "Sorry, out of range" +180 GOTO 420 +190 PRINT:PRINT SPC(29); A1$ +200 PRINT:PRINT A2$;A7$;A3$ +210 PRINT A4$;A7$;A5$ +220 PRINT A6$;A6$;A6$ +230 ' +240 ' Initialize loop variables +250 N=0 +260 MU=L*T +270 PF=0: ' Prob of fewer than n +280 PE=100*EXP(-MU): ' Prob of exactly n +290 ' +300 ' Compute Probabilities (and odds) +310 ' +320 PG=100-PF-PE: ' Prob of greater than n +330 IF PG>99.999 THEN 380 +340 PRINT USING " ##"; N; +350 P=PF: C=13: GOSUB 440 +360 P=PE: C=34: GOSUB 440 +370 P=PG: C=55: GOSUB 440: PRINT +380 N=N+1 +390 PF=PF+PE +400 PE=PE*MU/N +410 IF PG>=MP THEN 320 +420 END +430 ' +440 ' Print probability (and odds) +450 PRINT TAB(C); +460 IF P>.001 AND P<99.999 THEN 480 +470 PRINT " - - -";: GOTO 560 +480 PRINT USING "###.#% (";P; +490 IF P>50 THEN 530 +500 PRINT " 1 :"; +510 V=((100-P)/P) +520 GOSUB 580: GOTO 550 +530 V=(P/(100-P)) +540 GOSUB 580: PRINT ": 1 "; +550 PRINT ")"; +560 RETURN +570 ' +580 ' Format odds +590 IF V>=9.5 THEN 620 +600 PRINT USING " #.# ";V; +610 GOTO 630 +620 PRINT INT(V+.5); +630 RETURN +640 ' +650 ' Poisson statistics are used to +660 ' predict how likely it is for bunches or +670 ' gaps to occur in a stream of random +680 ' events, such as appearances of bright +690 ' comets, novae, cosmic rays, meteors, or +700 ' even the way stars are sprinkled across +710 ' a section of sky. By comparing this +720 ' program's output to actual +730 ' observations, it is often possible to +740 ' decide whether the events of a given +750 ' class do, in fact, have a random +760 ' distribution in time or space. Mark +770 ' Gingrich explores this subject in his +780 ' article, "Great Comets, Novae, and Lady +790 ' Luck," in Sky & Telescope for June +800 ' 1995, pages 86-89. diff --git a/SKYTEL/chance.dif b/SKYTEL/chance.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/chance.run b/SKYTEL/chance.run new file mode 100644 index 0000000..642b000 --- /dev/null +++ b/SKYTEL/chance.run @@ -0,0 +1,19 @@ + + +Event rate (lambda)? 1.1 +Interval (t)? 2.2 + + Probability (and odds) of... + +# events fewer than exactly greater than + (n) n events n events n events +--------------------------------------------------------------------------- + 0 - - - 8.9 1 : 10 ) 91.1 10 : 1 ) + 1 8.9 1 : 10 ) 21.5 1 : 3.6) 69.6 2.3: 1 ) + 2 30.4 1 : 2.3) 26.0 1 : 2.8) 43.6 1 : 1.3) + 3 56.4 1.3: 1 ) 21.0 1 : 3.8) 22.5 1 : 3.4) + 4 77.5 3.4: 1 ) 12.7 1 : 6.9) 9.8 1 : 9.2) + 5 90.2 9.2: 1 ) 6.2 1 : 15 ) 3.7 1 : 26 ) + 6 96.3 26 : 1 ) 2.5 1 : 39 ) 1.2 1 : 82 ) + 7 98.8 82 : 1 ) 0.9 1 : 116 ) 0.4 1 : 284 ) + 8 99.6 284 : 1 ) 0.3 1 : 384 ) 0.1 1 : 1095 ) diff --git a/SKYTEL/chart.80 b/SKYTEL/chart.80 new file mode 100644 index 0000000..29393e1 --- /dev/null +++ b/SKYTEL/chart.80 @@ -0,0 +1,17 @@ + +Enter 2000.0 position + +R.A. hrs.? 8 +R.A. min.? 45 + + + or - ? + +DEC. degrees? 30 +DEC. min. ? 45 + + +SKY ATLAS 2000.0 -- + Chart 6 + +URANOMETRIA 2000.0 -- + Chart 102 in Volume I + diff --git a/SKYTEL/chart.INP b/SKYTEL/chart.INP new file mode 100644 index 0000000..b36c1c4 --- /dev/null +++ b/SKYTEL/chart.INP @@ -0,0 +1,5 @@ +8 +45 ++ +30 +45 diff --git a/SKYTEL/chart.OUT b/SKYTEL/chart.OUT new file mode 100644 index 0000000..c916515 --- /dev/null +++ b/SKYTEL/chart.OUT @@ -0,0 +1,17 @@ + +Enter 2000.0 position + +R.A. hrs.? 8 +R.A. min.? 45 + + + or - ? + +DEC. degrees? 30 +DEC. min. ? 45 + + +SKY ATLAS 2000.0 -- + Chart 6 + +URANOMETRIA 2000.0 -- + Chart 102 in Volume I + diff --git a/SKYTEL/chart.bas b/SKYTEL/chart.bas new file mode 100644 index 0000000..f550739 --- /dev/null +++ b/SKYTEL/chart.bas @@ -0,0 +1,93 @@ +100 REM CHART NUMBER PROGRAM +110 REM +120 PRINT +130 PRINT "Enter 2000.0 position" +140 PRINT +150 INPUT "R.A. hrs.";H +160 IF H<0 OR H>=24 THEN 150 +170 INPUT "R.A. min.";M +180 IF M<0 OR M>=60 THEN 170 +190 H=H+M/60 +200 PRINT +210 INPUT " + or - ";D$ +220 IF LEN(D$)>1 THEN 210 +230 INPUT "DEC. degrees";D +240 IF D<0 OR D>90 THEN 230 +250 INPUT "DEC. min. ";M +260 IF M<0 OR M>=60 THEN 250 +270 D=D+M/60 +280 IF D$="-" THEN D=-D +290 REM +300 REM +310 REM SKY ATLAS 2000.0 +320 REM +330 IF ABS(D)>=18.5 THEN 370 +340 S=9+INT(H/3+1/1.2) +350 IF S=9 THEN S=17 +360 GOTO 460 +370 IF ABS(D)>=52 THEN 410 +380 S=4+INT(H/4) +390 IF D<0 THEN S=S+14 +400 GOTO 460 +410 S=1+INT(H/8) +420 IF D<0 THEN S=S+23 +430 REM +440 REM URANOMETRIA 2000.0 +450 REM +460 IF ABS(D)>=5.5 THEN 510 +470 U=215+INT(H*1.875+.5) +480 IF U=260 THEN U=215 +490 V$="Volume I & II" +500 GOTO 900 +510 IF D>0 THEN V$="Volume I" +520 IF D<0 THEN V$="Volume II" +530 IF ABS(D)>=50 THEN 730 +540 IF ABS(D)>=28 THEN 640 +550 IF ABS(D)>=17 THEN 600 +560 U=170+INT(H*1.875+.5): +570 IF U=215 THEN U=170 +580 IF D<0 THEN U=U+90 +590 GOTO 900 +600 U=125+INT(H*1.875+.5) +610 IF U=170 THEN U=125 +620 IF D<0 THEN U=U+180 +630 GOTO 900 +640 IF ABS(D)>=39 THEN 690 +650 U=89+INT(H*1.5+.5) +660 IF U=125 THEN U=89 +670 IF D<0 THEN U=U+261 +680 GOTO 900 +690 U=59+INT(H/.8+.5) +700 IF U=89 THEN U=59 +710 IF D<0 THEN U=U+327 +720 GOTO 900 +730 IF ABS(D)>=72.5 THEN 830 +740 IF ABS(D)>=61 THEN 790 +750 U=35+INT(H+.5) +760 IF U=59 THEN U=35 +770 IF D<0 THEN U=U+381 +780 GOTO 900 +790 U=15+INT(H/1.2+.5) +800 IF U=35 THEN U=15 +810 IF D<0 THEN U=U+425 +820 GOTO 900 +830 IF ABS(D)>=84.5 THEN 880 +840 U=3+INT(H/2+1/2.4) +850 IF U=15 THEN U=3 +860 IF D<0 THEN U=U+457 +870 GOTO 900 +880 U=1+INT(H/12) +890 IF D<0 THEN U=474-U +900 PRINT: PRINT +910 PRINT "SKY ATLAS 2000.0 --" +920 PRINT " Chart ";S +930 PRINT +940 PRINT "URANOMETRIA 2000.0 --" +950 PRINT " Chart ";U;" in ";V$ +960 PRINT +970 REM ************************ +975 REM FROM SKY & TELESCOPE'S +980 REM ASTRONOMICAL COMPUTING +985 REM FOR APRIL, 1989, P. 420 +990 REM ************************ +995 END diff --git a/SKYTEL/chart.dif b/SKYTEL/chart.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/chart.run b/SKYTEL/chart.run new file mode 100644 index 0000000..29393e1 --- /dev/null +++ b/SKYTEL/chart.run @@ -0,0 +1,17 @@ + +Enter 2000.0 position + +R.A. hrs.? 8 +R.A. min.? 45 + + + or - ? + +DEC. degrees? 30 +DEC. min. ? 45 + + +SKY ATLAS 2000.0 -- + Chart 6 + +URANOMETRIA 2000.0 -- + Chart 102 in Volume I + diff --git a/SKYTEL/circle.80 b/SKYTEL/circle.80 new file mode 100644 index 0000000..a565ffe --- /dev/null +++ b/SKYTEL/circle.80 @@ -0,0 +1,3 @@ +SCALE LENGTH (MM)? 200 +PRINTING... +ANOTHER (Y/N)? N diff --git a/SKYTEL/circle.INP b/SKYTEL/circle.INP new file mode 100644 index 0000000..bbd2775 --- /dev/null +++ b/SKYTEL/circle.INP @@ -0,0 +1,2 @@ +200 +N diff --git a/SKYTEL/circle.OUT b/SKYTEL/circle.OUT new file mode 100644 index 0000000..28e7087 --- /dev/null +++ b/SKYTEL/circle.OUT @@ -0,0 +1,3 @@ +SCALE LENGTH (MM)? 200 +PRINTING... +ANOTHER (Y/N)? N diff --git a/SKYTEL/circle.bas b/SKYTEL/circle.bas new file mode 100644 index 0000000..c51a3f9 --- /dev/null +++ b/SKYTEL/circle.bas @@ -0,0 +1,47 @@ +10 REM CIRCLE-DIVIDING PROGRAM +12 REM +14 N=9: DIM P1(N), P2(N) +16 I0=180: C$=CHR$(27)+"3"+CHR$(1) +18 H=8: REM MINIMUM VERTICAL +20 REM LETTER SPACE IN MM +22 DATA 4,6,9,12,18,36,72,180,360 +24 FOR I=1 TO N: READ P1(I): NEXT +26 DATA 9,6,8,6,4,5,10,8,6 +28 FOR I=1 TO N: READ P2(I): NEXT +30 REM +32 INPUT "SCALE LENGTH (MM)";S +34 IF S<30 THEN 32 +36 I1=0 +38 I1=I1+1: IF I1=N THEN 42 +40 IF S>=P1(I1)*H THEN 38 +42 PRINT "PRINTING...": LPRINT C$ +44 FOR I=1 TO I0/4: LPRINT: NEXT +46 LPRINT S;" MM STRIP DIVIDED "; +48 LPRINT "INTO ";P1(I1);" PARTS" +50 FOR I=1 TO I0/4: LPRINT: NEXT +52 REM +54 REM PRINTING LOOP +55 REM SET UP FOR DOT-MATRIX PRINTERS +56 W=0: S0=INT(360/P1(I1)) +58 S1=S*I0/(25.4*360) +60 FOR I=0 TO 360 STEP S0 +62 B=INT(I*S1-W): F=W +64 FOR J=0 TO P2(I1) +66 I3=INT(J*B/P2(I1)-F) +68 IF I3<0 THEN 76 +70 FOR K=1 TO I3: LPRINT: NEXT K +72 IF I3<=0 OR J>=P2(I1) THEN 76 +74 LPRINT " -"; +76 F=F+I3 +78 NEXT J +80 LPRINT USING " #### --";I; +82 W=W+B +84 NEXT I +86 FOR I=1 TO I0/4: LPRINT: NEXT +88 INPUT "ANOTHER (Y/N)";Q$ +90 IF Q$="Y" THEN 32 +92 END +94 REM ************************* +96 REM ASTRONOMICAL COMPUTING +97 REM SKY & TELESCOPE, MARCH 88 +98 REM ************************* diff --git a/SKYTEL/circle.dif b/SKYTEL/circle.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/circle.run b/SKYTEL/circle.run new file mode 100644 index 0000000..a565ffe --- /dev/null +++ b/SKYTEL/circle.run @@ -0,0 +1,3 @@ +SCALE LENGTH (MM)? 200 +PRINTING... +ANOTHER (Y/N)? N diff --git a/SKYTEL/comet.80 b/SKYTEL/comet.80 new file mode 100644 index 0000000..4001d7e --- /dev/null +++ b/SKYTEL/comet.80 @@ -0,0 +1,13 @@ +PERI DATE Y,M,D ? 2000,01,31 +PERI DIST Q ? 1.2 +ECCENTRICITY ? 0.9 +ARG OF PERIHELION ? 4.5 +LONG OF ASC NODE ? 6.7 +INCLINATION ? 8.9 + +DATE Y,M,D ? 2015,03,01 +R.A. 12 H 25.9 M +DEC. - 2 D 31 M +COMET-EARTH DIST: 20.7833 +COMET-SUN DIST: 21.6701 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/comet.INP b/SKYTEL/comet.INP new file mode 100644 index 0000000..8f9ddd6 --- /dev/null +++ b/SKYTEL/comet.INP @@ -0,0 +1,8 @@ +2000,01,31 +1.2 +0.9 +4.5 +6.7 +8.9 +2015,03,01 +N diff --git a/SKYTEL/comet.OUT b/SKYTEL/comet.OUT new file mode 100644 index 0000000..cde4752 --- /dev/null +++ b/SKYTEL/comet.OUT @@ -0,0 +1,13 @@ +PERI DATE Y,M,D ? 2000,01,31 +PERI DIST Q ? 1.2 +ECCENTRICITY ? 0.9 +ARG OF PERIHELION ? 4.5 +LONG OF ASC NODE ? 6.7 +INCLINATION ? 8.9 + +DATE Y,M,D ? 2015,03,01 +R.A. 12 H 25.9 M +DEC. - 2 D 31 M +COMET-EARTH DIST: 20.7833 +COMET-SUN DIST: 21.6701 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/comet.bas b/SKYTEL/comet.bas new file mode 100644 index 0000000..10c02e7 --- /dev/null +++ b/SKYTEL/comet.bas @@ -0,0 +1,240 @@ +5 GOSUB 69: GOTO 200 +10 REM KEPLER'S EQUATION +11 REM +12 P1=3.14159265: R1=180/P1 +13 K=0.01720209895 +18 IF E0>=0.95 THEN GOTO 40 +19 IF E0>=1 THEN 85 +20 A1=Q/(1-E0): M=K*T*A1^(-1.5) +21 REM +22 REM BINARY SEARCH +23 REM +24 F=SGN(M): M=ABS(M)/(2*P1) +25 M=(M-INT(M))*2*P1*F +26 IF M<0 THEN M=M+2*P1 +27 F=1: IF M>P1 THEN F=-1 +28 IF M>P1 THEN M=2*P1-M +29 E=P1/2: D=P1/4 +30 FOR I1=1 TO 23 +31 M1=E-E0*SIN(E) +32 E=E+SGN(M-M1)*D: D=D/2 +33 NEXT I1 +34 V=SQR((1+E0)/(1-E0)): E=E*F +35 V=2*ATN(V*SIN(E/2)/COS(E/2)) +36 R=A1*(1-E0*COS(E)) +38 GOTO 81 +39 REM +40 REM GAUSS METHOD +41 REM +43 A=SQR((1+9*E0)/10) +44 B=5*(1-E0)/(1+9*E0) +45 C=SQR(5*(1+E0)/(1+9*E0)) +46 B1=3*A*K*T/SQR(2*Q*Q*Q) +47 B2=1: REM INITIAL VALUE +48 W1=B2*B1: B3=ATN(2/W1) +49 T1=SIN(B3/2)/COS(B3/2) +50 S1=SGN(T1): T1=ABS(T1) +51 T2=T1^(1/3)*S1: G=ATN(T2) +52 S=2*COS(2*G)/SIN(2*G) +53 A2=B*S*S: B0=B2: B2=0 +54 IF ABS(A2)>0.3 THEN 19 +55 FOR J=0 TO 7 +56 B2=B2+B(J)*A2^J +57 NEXT J +58 IF ABS(B2-B0)>1E-8 THEN 48 +59 C1=0 +60 FOR J=0 TO 7 +61 C1=C1+S(J)*A2^J +62 NEXT J +63 C1=SQR(1/C1) +64 V1=C*C1*S: D1=1/(1+A2*C1*C1) +65 V=2*ATN(V1): R=Q*D1*(1+V1*V1) +67 GOTO 81 +68 REM +69 REM COEFFICIENTS +70 FOR J=0 TO 7: READ B(J): NEXT +71 FOR J=0 TO 7: READ S(J): NEXT +72 RETURN +73 DATA 1,0,-0.017142857 +74 DATA -0.003809524, -0.001104267 +75 DATA -0.000367358,-0.000131675 +76 DATA -0.000049577,1,-0.8 +77 DATA 0.04571429,0.01523810 +78 DATA 0.00562820, 0.00218783 +79 DATA 0.00087905,0.00036155 +80 RETURN +81 IF V<0 THEN V=V+2*P1 +84 GOTO 86 +85 PRINT "OUT OF RANGE" +86 RETURN +200 REM COMET POSITION IN SKY +203 REM +206 PRINT "PERI DATE "; +207 GOSUB 800: J9=J: F9=F +208 INPUT "PERI DIST Q ";Q +209 INPUT "ECCENTRICITY ";E0 +212 INPUT "ARG OF PERIHELION ";W +215 INPUT "LONG OF ASC NODE ";N +218 INPUT "INCLINATION ";I +233 P1=3.14159265: R1=P1/180 +236 E=23.4457889*R1: REM OBLIQUITY +239 W=W*R1: N=N*R1: I=I*R1 +242 GOSUB 338 +245 PRINT +246 PRINT "DATE "; +247 GOSUB 800: J1=J: F1=F +248 GOSUB 500: T=(J1-J9)+(F1-F9) +249 GOSUB 10 +251 REM POSITION IN ORBIT PLANE +254 X1=R*COS(V): Y1=R*SIN(V) +257 REM +260 REM HELIOCENTRIC EQUATORIAL +261 REM COORDINATES +263 X2=P7*X1+Q7*Y1 +266 Y2=P8*X1+Q8*Y1 +269 Z2=P9*X1+Q9*Y1 +272 REM +275 REM GEOCENTRIC EQUATORIAL +276 REM COORDINATES +278 X3=X+X2: Y3=Y+Y2: Z3=Z+Z2 +281 GOSUB 392: REM FOR 2000.0! +284 D3=SQR(X3*X3+Y3*Y3+Z3*Z3) +287 R1=P1/180 +290 A=ATN(Y3/X3)/(15*R1) +293 IF X3<0 THEN A=A+12 +296 IF A<0 THEN A=A+24 +299 D=ATN(Z3/SQR(X3*X3+Y3*Y3))/R1 +301 REM NOW ROUND OFF +302 A=A+0.05/60 +305 H=INT(A): M=60*(A-H) +308 M=INT(10*M)/10 +311 S=SGN(D): D=ABS(D)+0.5/60 +314 D1=INT(D): M1=INT(60*(D-D1)) +317 S$="+": IF S=-1 THEN S$="-" +320 PRINT "R.A. ";H;"H ";M;"M" +323 PRINT "DEC. ";S$;D1;"D ";M1;"M" +326 PRINT "COMET-EARTH DIST:";D3 +329 PRINT "COMET-SUN DIST: ";R +330 INPUT "ANOTHER (Y OR N) ";Q$ +331 IF Q$="Y" THEN 245 +332 END +335 REM +338 REM P'S AND Q'S +344 W1=SIN(W): W2=COS(W) +347 N1=SIN(N): N2=COS(N) +350 I1=SIN(I): I2=COS(I) +353 E1=SIN(E): E2=COS(E) +356 P7=W2*N2-W1*N1*I2 +359 P8=(W2*N1+W1*N2*I2)*E2 +362 P8=P8-W1*I1*E1 +365 P9=(W2*N1+W1*N2*I2)*E1 +368 P9=P9+W1*I1*E2 +371 Q7=-W1*N2-W2*N1*I2 +374 Q8=(-W1*N1+W2*N2*I2)*E2 +377 Q8=Q8-W2*I1*E1 +380 Q9=(-W1*N1+W2*N2*I2)*E1 +383 Q9=Q9+W2*I1*E2 +386 RETURN +389 REM +392 REM 1950.0 --> 2000.0 +395 A7=+0.9999257: A8=-0.0111789 +398 A9=-0.0048590: B7=+0.0111789 +401 B8=+0.9999375: B9=-0.0000272 +404 C7=+0.0048590: C8=-0.0000272 +407 C9=+0.9999882 +410 X4=A7*X3+A8*Y3+A9*Z3 +413 Y4=B7*X3+B8*Y3+B9*Z3 +416 Z4=C7*X3+C8*Y3+C9*Z3 +419 X3=X4: Y3=Y4: Z3=Z4 +422 RETURN +500 REM X,Y,Z OF THE SUN +501 REM (EQUINOX 1950.0) +502 REM +504 J8=J-2415020: R1=3.14159265/180 +505 T=(J8+F)/36525 +506 P0=1.396041+0.000308*(T+0.5) +507 P0=P0*(T-0.499998) +508 A=100:GOSUB 529:G0=A+358.475833 +509 L0=A+279.696678-P0 +510 A=1336: GOSUB 529 +511 C0=A+270.434164-P0 +512 A=162: GOSUB 529 +513 V0=A+212.603219 +514 A=53:GOSUB 529: M0=A+319.529425 +515 A=8: GOSUB 529: J0=A+225.444651 +516 G=G0+T*(-0.950250-0.000150*T) +517 C=C0+T*(307.883142-0.001133*T) +518 L=L0+T*(0.768920+0.000303*T) +519 V=V0+T*(197.803875+0.001286*T) +520 M=M0+T*(59.8585+0.000181*T) +521 J=J0+T*154.906654 +522 G=G*R1: C=C*R1: L=L*R1 +523 V=V*R1: M=M*R1: J=J*R1 +524 GOSUB 532 +528 RETURN +529 REM NORMALIZATION +530 A=360*(A*T-INT(A*T)): RETURN +531 REM +532 X=0.000011*COS(2*G-L-2*J) +533 X=X+0.000011*COS(2*G+L-2*V) +534 X=X-0.000012*COS(G+L-V) +535 X=X-0.000012*COS(4*G-L-8*M+3*J) +536 X=X+0.000012*COS(4*G+L-8*M+3*J) +537 X=X-0.000014*COS(C-2*L) +538 X=X+0.000017*COS(C) +539 X=X+0.000018*SIN(2*G+L-2*V) +540 X=X-0.000021*T*COS(G+L) +541 X=X-0.000026*SIN(G-L-J) +542 X=X+0.000035*COS(2*G-L) +543 X=X+0.000063*T*COS(G-L) +544 X=X+0.000105*COS(2*G+L) +545 X=X+0.008374*COS(G+L) +546 X=X-0.025127*COS(G-L) +547 X=X+0.999860*COS(L) +548 REM +549 Y=0.000010*SIN(2*G+L-2*V) +550 Y=Y-0.000010*SIN(2*G-L-2*J) +551 Y=Y-0.000011*SIN(G+L-V) +552 Y=Y+0.000011*SIN(4*G-L-8*M+3*J) +553 Y=Y+0.000011*SIN(4*G+L-8*M+3*J) +554 Y=Y+0.000013*SIN(C-2*L) +555 Y=Y+0.000016*SIN(C) +556 Y=Y-0.000017*COS(2*G+L-2*V) +557 Y=Y-0.000019*T*SIN(G+L) +558 Y=Y-0.000024*COS(G-L-J) +559 Y=Y-0.000032*SIN(2*G-L) +560 Y=Y-0.000057*T*SIN(G-L) +561 Y=Y+0.000097*SIN(2*G+L) +562 Y=Y+0.007683*SIN(G+L) +563 Y=Y+0.023053*SIN(G-L) +564 Y=Y+0.917308*SIN(L) +565 REM +566 Z=-0.000010*COS(G-L-J) +567 Z=Z-0.000014*SIN(2*G-L) +568 Z=Z-0.000025*T*SIN(G-L) +569 Z=Z+0.000042*SIN(2*G+L) +570 Z=Z+0.003332*SIN(G+L) +571 Z=Z+0.009998*SIN(G-L) +572 Z=Z+0.397825*SIN(L) +573 RETURN +800 REM CALENDAR --> JD +805 REM +810 INPUT "Y,M,D ";Y,M,D +815 G=1 +820 D1=INT(D): F=D-D1-0.5 +825 J=-INT(7*(INT((M+9)/12)+Y)/4) +830 IF G=0 THEN 850 +835 S=SGN(M-9): A=ABS(M-9) +840 J3=INT(Y+S*INT(A/7)) +845 J3=-INT((INT(J3/100)+1)*3/4) +850 J=J+INT(275*M/9)+D1+G*J3 +855 J=J+1721027+2*G+367*Y +860 IF F>=0 THEN 870 +865 F=F+1: J=J-1 +870 RETURN +875 END +880 REM ------------------------ +890 REM APPEARED IN ASTRONOMICAL +900 REM COMPUTING, SKY & TELE- +910 REM SCOPE, DECEMBER, 1985 +920 REM ------------------------ diff --git a/SKYTEL/comet.dif b/SKYTEL/comet.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/comet.run b/SKYTEL/comet.run new file mode 100644 index 0000000..4001d7e --- /dev/null +++ b/SKYTEL/comet.run @@ -0,0 +1,13 @@ +PERI DATE Y,M,D ? 2000,01,31 +PERI DIST Q ? 1.2 +ECCENTRICITY ? 0.9 +ARG OF PERIHELION ? 4.5 +LONG OF ASC NODE ? 6.7 +INCLINATION ? 8.9 + +DATE Y,M,D ? 2015,03,01 +R.A. 12 H 25.9 M +DEC. - 2 D 31 M +COMET-EARTH DIST: 20.7833 +COMET-SUN DIST: 21.6701 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/crater.80 b/SKYTEL/crater.80 new file mode 100644 index 0000000..37edb3e --- /dev/null +++ b/SKYTEL/crater.80 @@ -0,0 +1,21 @@ +Terrestrial Impact Crater + Impactor diameter (m)? 543 + Impactor density (kg/m^3)? 12.34 + Impactor velocity (km/s)? 5000 + Graze angle (deg. from horiz.)? 67 + +Impactor Parameters + Volume 83829738.43 + Mass 1034458972.29 + KE 12930737153568806010880.00 + 3078746941.33 + +Crater Parameters + Diameter -- + Actual 24600 + Apparent 30751 + Depth -- + Actual 6150 + Apparent 7688 + Target removed 1461604301927.00 + Ejecta spread 52891 diff --git a/SKYTEL/crater.INP b/SKYTEL/crater.INP new file mode 100644 index 0000000..1c858dc --- /dev/null +++ b/SKYTEL/crater.INP @@ -0,0 +1,4 @@ +543 +12.34 +5000 +67 diff --git a/SKYTEL/crater.OUT b/SKYTEL/crater.OUT new file mode 100644 index 0000000..eac9561 --- /dev/null +++ b/SKYTEL/crater.OUT @@ -0,0 +1,21 @@ +Terrestrial Impact Crater + Impactor diameter (m)? 543 + Impactor density (kg/m^3)? 12.34 + Impactor velocity (km/s)? 5000 + Graze angle (deg. from horiz.)? 67 + +Impactor Parameters + Volume 83829738.43 + Mass 1034458972.29 + KE 12930737153568806010880.00 + 3078746941.33 + +Crater Parameters + Diameter -- + Actual 24600 + Apparent 30751 + Depth -- + Actual 6150 + Apparent 7688 + Target removed 1461604301927.00 + Ejecta spread 52891 diff --git a/SKYTEL/crater.bas b/SKYTEL/crater.bas new file mode 100644 index 0000000..0c2e467 --- /dev/null +++ b/SKYTEL/crater.bas @@ -0,0 +1,36 @@ +10 REM - IMPACT CRATER DIMENSIONS +20 CLS ' : PI=3.14159 +30 CR1=18: CD1=9 +40 PRINT "Terrestrial Impact Crater" +50 INPUT " Impactor diameter (m)";ID +60 INPUT " Impactor density (kg/m^3)";IR +70 INPUT " Impactor velocity (km/s)";IK +80 INPUT " Graze angle (deg. from horiz.)";GA +90 IV=IK*1000: VI=PI*ID*ID*ID/6 +100 GF=(SIN(GA/180*PI))^.33 +110 MI=IR*VI: KE=.5*MI*IV*IV +120 KT=KE/4.2E+12: REM impactor KE in kT TNT +130 PRINT: PRINT "Impactor Parameters" +140 PRINT USING " Volume ##.##^^^^ m^3"; VI +150 PRINT USING " Mass ##.##^^^^ kg"; MI +160 PRINT USING " KE ##.##^^^^ J"; KE +170 PRINT USING " ##.##^^^^ kT TNT"; KT +180 CD=2*CR1*KT^.3*GF: CA=CD*1.25 +190 CZ=CD1*KT^.3*GF: CL=CZ*1.25 +200 CV=.5*PI*CD*CD/4*CZ +210 CE=2.15*CD +220 PRINT: PRINT "Crater Parameters" +230 PRINT " Diameter --" +240 PRINT USING " Actual ###### m"; CD +250 PRINT USING " Apparent ###### m"; CA +260 PRINT " Depth --" +270 PRINT USING " Actual ##### m"; CZ +280 PRINT USING " Apparent ##### m"; CL +290 PRINT USING " Target removed ##.##^^^^ m^3"; CV +300 PRINT USING " Ejecta spread ###### m"; CE +310 REM ======================== +320 REM FROM "ASTRONOMICAL +330 REM COMPUTING," SKY & TELE- +340 REM SCOPE, NOVEMBER 1996 +350 REM ======================== +360 END \ No newline at end of file diff --git a/SKYTEL/crater.dif b/SKYTEL/crater.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/crater.run b/SKYTEL/crater.run new file mode 100644 index 0000000..37edb3e --- /dev/null +++ b/SKYTEL/crater.run @@ -0,0 +1,21 @@ +Terrestrial Impact Crater + Impactor diameter (m)? 543 + Impactor density (kg/m^3)? 12.34 + Impactor velocity (km/s)? 5000 + Graze angle (deg. from horiz.)? 67 + +Impactor Parameters + Volume 83829738.43 + Mass 1034458972.29 + KE 12930737153568806010880.00 + 3078746941.33 + +Crater Parameters + Diameter -- + Actual 24600 + Apparent 30751 + Depth -- + Actual 6150 + Apparent 7688 + Target removed 1461604301927.00 + Ejecta spread 52891 diff --git a/SKYTEL/daysold.80 b/SKYTEL/daysold.80 new file mode 100644 index 0000000..d116356 --- /dev/null +++ b/SKYTEL/daysold.80 @@ -0,0 +1,4 @@ +Enter your birthday (M,D,Y)? 01,02,1903 +Enter desired age in days ? 128000 +You will be 128000 days old on 6/15/2253 +Enter desired age in days ? 0 diff --git a/SKYTEL/daysold.INP b/SKYTEL/daysold.INP new file mode 100644 index 0000000..4b11972 --- /dev/null +++ b/SKYTEL/daysold.INP @@ -0,0 +1,3 @@ +01,02,1903 +128000 +0 diff --git a/SKYTEL/daysold.OUT b/SKYTEL/daysold.OUT new file mode 100644 index 0000000..606ea20 --- /dev/null +++ b/SKYTEL/daysold.OUT @@ -0,0 +1,4 @@ +Enter your birthday (M,D,Y)? 01,02,1903 +Enter desired age in days ? 128000 +You will be 128000 days old on 6/15/2253 +Enter desired age in days ? 0 diff --git a/SKYTEL/daysold.bas b/SKYTEL/daysold.bas new file mode 100644 index 0000000..50bba24 --- /dev/null +++ b/SKYTEL/daysold.bas @@ -0,0 +1,33 @@ +10 REM DAYSOLD.BAS +20 INPUT "Enter your birthday (M,D,Y)";M,D,Y +30 REM Compute Julian Day Number +40 J=-INT(7*(INT((M+9)/12)+Y)/4) +50 S=SGN(M-9) +60 A=ABS(M-9) +70 J1=INT(Y+S*INT(A/7)) +80 J1=-INT((INT(J1/100)+1)*3/4) +90 J=J+INT(275*M/9)+D+J1 +100 J=J+1721028+367*Y +110 INPUT "Enter desired age in days ";A9 +120 IF A9=0 THEN 280 +130 REM Compute calendar date from new JD number +140 J2=J+A9+1 +150 A1=INT((J2/36524.25)-51.12264) +160 A=J2+1+A1-INT(A1/4) +170 B=A+1524 +180 C=INT((B/365.25)-0.3343) +190 D=INT(365.25*C) +200 E=INT((B-D)/30.61) +210 D=B-D-INT(30.61*E) +220 M=E-1 +230 Y=C-4716 +240 IF E>13.5 THEN M=M-12 +250 IF M<2.5 THEN Y=Y+1 +260 PRINT USING "You will be ##### days old on ##/##/####";A9;M;D;Y +270 GOTO 110 +280 END +900 REM --------------------------- +910 REM APPEARED IN COMPUTERS IN +920 REM ASTRONOMY, SKY & TELESCOPE, +930 REM NOVEMBER 2001, PAGE 63 +940 REM --------------------------- diff --git a/SKYTEL/daysold.dif b/SKYTEL/daysold.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/daysold.run b/SKYTEL/daysold.run new file mode 100644 index 0000000..d116356 --- /dev/null +++ b/SKYTEL/daysold.run @@ -0,0 +1,4 @@ +Enter your birthday (M,D,Y)? 01,02,1903 +Enter desired age in days ? 128000 +You will be 128000 days old on 6/15/2253 +Enter desired age in days ? 0 diff --git a/SKYTEL/dial.80 b/SKYTEL/dial.80 new file mode 100644 index 0000000..b049a45 --- /dev/null +++ b/SKYTEL/dial.80 @@ -0,0 +1,16 @@ +LAT, LONG ? 180,80 +TIME-ZONE MERIDIAN? 6 +AZIMUTH DIAL FACES? 123 +SUN E OR W? W +DIAL HEIGHT? 6 +WIDTH OF THIS PART? 5 +STEP SIZE IN MIN? 2 + +LAT: 180 LONG: 80 MERID: 6 +DIAL FACES AZIMUTH 123 +STYLE END COORDINATES: +X= 2.80352E+9 , Y=-6 , Z=-1.82063E+9 +SUN W 5 WIDE BY 6 HIGH + + +AGAIN (Y OR N)? N diff --git a/SKYTEL/dial.INP b/SKYTEL/dial.INP new file mode 100644 index 0000000..03a5247 --- /dev/null +++ b/SKYTEL/dial.INP @@ -0,0 +1,8 @@ +180,80 +6 +123 +W +6 +5 +2 +N diff --git a/SKYTEL/dial.OUT b/SKYTEL/dial.OUT new file mode 100644 index 0000000..3d10c13 --- /dev/null +++ b/SKYTEL/dial.OUT @@ -0,0 +1,16 @@ +LAT, LONG ? 180,80 +TIME-ZONE MERIDIAN? 6 +AZIMUTH DIAL FACES? 123 +SUN E OR W? W +DIAL HEIGHT? 6 +WIDTH OF THIS PART? 5 +STEP SIZE IN MIN? 2 + +LAT: 180 LONG: 80 MERID: 6 +DIAL FACES AZIMUTH 123 +STYLE END COORDINATES: +X= 2.80352E+9 , Y=-6 , Z=-1.82063E+9 +SUN W 5 WIDE BY 6 HIGH + + +AGAIN (Y OR N)? N diff --git a/SKYTEL/dial.bas b/SKYTEL/dial.bas new file mode 100644 index 0000000..5509f09 --- /dev/null +++ b/SKYTEL/dial.bas @@ -0,0 +1,78 @@ +10 REM VERTICAL SUNDIALS +11 INPUT "LAT, LONG ";B,L +12 IF B<0 THEN 11 +13 INPUT "TIME-ZONE MERIDIAN";L0 +14 INPUT "AZIMUTH DIAL FACES";F +15 IF F<=90 OR F>=270 THEN 14 +16 P1=3.14159265: R1=P1/180 +17 B1=B*R1: S=0 +18 INPUT "SUN E OR W";S$ +19 IF S$="E" THEN S=-1 +20 IF S$="W" THEN S=1 +21 IF S=0 THEN 18 +22 INPUT "DIAL HEIGHT";H5 +23 INPUT "WIDTH OF THIS PART";W5 +24 INPUT "STEP SIZE IN MIN";G +25 F1=P1/2+S*R1*(180-F): PRINT +26 R5=W5/H5: Z5=S*R1*(L0-L) +27 PRINT "LAT: ";B;" LONG: ";L; +28 PRINT " MERID: ";L0 +29 PRINT "DIAL FACES AZIMUTH ";F +30 GOSUB 73 +31 PRINT "SUN ";S$;" ";W5; +32 PRINT "WIDE BY";H5;"HIGH" +33 PRINT: H=12-S: G=S*G/60 +34 REM +35 REM CALCULATING LOOP +36 Q=Z5+S*P1*(H-12)/12 +37 IF Q<0 THEN 47 +38 IF H<4 OR H>20 THEN 48 +39 IF Q<>0 THEN 41 +40 K=0: GOTO 45 +41 K0=SIN(F1)*TAN(P1/2-Q) +42 K1=COS(F1)*SIN(B1)+K0 +43 IF K1=0 THEN K1=1E-10 +44 K=COS(B1)/K1 +45 GOSUB 52 +46 IF K>=0 THEN GOSUB 57 +47 H=H+G: GOTO 35 +48 PRINT +49 INPUT "AGAIN (Y OR N)";Q$ +50 S=0: IF Q$="Y" THEN 18 +51 END +52 REM DECIDE X OR Y +53 D=S*K*H5: D$=" X=" +54 IF K12 THEN 66 +65 IF M1=0 THEN P$=" NOON" +66 IF H1>12 THEN H1=H1-12 +67 H1$=STR$(H1) +68 IF H1<10 THEN H1$=" "+H1$ +69 D=INT(D*1000+0.5)/1000 +70 PRINT H1$;M1$;P$; +71 PRINT TAB(15);D$;D +72 RETURN +73 REM COMPUTE END OF STYLE +74 P5=TAN(P1/2-B1)*H5 +75 Z=SIN(F1)*P5 +76 Z=INT(Z*1000+0.5)/1000 +77 X=S*TAN(P1/2-F1)*Z +78 X=INT(X*1000+0.5)/1000 +79 Y=-H5 +80 PRINT "STYLE END COORDINATES:" +81 PRINT "X=";X;", Y=";Y;", Z=";Z +82 RETURN +83 REM ************************* +84 REM FROM "ASTRONOMICAL COM- +85 REM PUTING," SKY & TELESCOPE +86 REM DECEMEBR, 1987 +87 REM ************************* diff --git a/SKYTEL/dial.dif b/SKYTEL/dial.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/dial.run b/SKYTEL/dial.run new file mode 100644 index 0000000..b049a45 --- /dev/null +++ b/SKYTEL/dial.run @@ -0,0 +1,16 @@ +LAT, LONG ? 180,80 +TIME-ZONE MERIDIAN? 6 +AZIMUTH DIAL FACES? 123 +SUN E OR W? W +DIAL HEIGHT? 6 +WIDTH OF THIS PART? 5 +STEP SIZE IN MIN? 2 + +LAT: 180 LONG: 80 MERID: 6 +DIAL FACES AZIMUTH 123 +STYLE END COORDINATES: +X= 2.80352E+9 , Y=-6 , Z=-1.82063E+9 +SUN W 5 WIDE BY 6 HIGH + + +AGAIN (Y OR N)? N diff --git a/SKYTEL/dif.OUT b/SKYTEL/dif.OUT new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/difpat.80 b/SKYTEL/difpat.80 new file mode 100644 index 0000000..96ccc25 --- /dev/null +++ b/SKYTEL/difpat.80 @@ -0,0 +1,5 @@ +HOW MANY RAYS? 2 +DOING RAY 1 +DOING RAY 2 +NOW FINDING INTENSITY +PRINTER ON? Y diff --git a/SKYTEL/difpat.INP b/SKYTEL/difpat.INP new file mode 100644 index 0000000..84315dc --- /dev/null +++ b/SKYTEL/difpat.INP @@ -0,0 +1,2 @@ +2 +Y diff --git a/SKYTEL/difpat.OUT b/SKYTEL/difpat.OUT new file mode 100644 index 0000000..4b109aa --- /dev/null +++ b/SKYTEL/difpat.OUT @@ -0,0 +1,5 @@ +HOW MANY RAYS? 2 +DOING RAY 1 +DOING RAY 2 +NOW FINDING INTENSITY +PRINTER ON? Y diff --git a/SKYTEL/difpat.bas b/SKYTEL/difpat.bas new file mode 100644 index 0000000..338eb56 --- /dev/null +++ b/SKYTEL/difpat.bas @@ -0,0 +1,73 @@ +10 REM DIFFRACTION PATTERN +20 REM +40 DIM II(40,24),AA(40,24),BB(40,24) +50 R=3: REM 6-INCH APERTURE +60 L=.000022: REM WAVELENGTH +70 GOSUB 530 +80 INPUT "HOW MANY RAYS";H +90 FOR I1=1 TO H +100 X=R*(2*RND-1) +110 Y=R*(2*RND-1) +115 REM NOTE THAT THE RND STATEMENT OPERATES +117 REM DIFFERENTLY ON DIFFERENT MACHINES +120 GOSUB 390 +130 IF F=0 THEN 100 +140 PRINT "DOING RAY ";I1 +150 GOSUB 450 +160 NEXT +170 REM +180 PRINT "NOW FINDING INTENSITY" +190 C=II(20,12)^2 +200 FOR I=0 TO 40: FOR J=0 TO 24 +210 II(I,J)=II(I,J)*II(I,J)/C +220 NEXT J: NEXT I +230 REM +240 REM PRINT PICTURE +250 REM +260 INPUT "PRINTER ON";Q$ +270 I$=" ./:;XH8M#": GOSUB 620 +280 FOR J=0 TO 24: LPRINT "I"; +290 FOR I=0 TO 40 +300 V=INT(9.99*II(I,J)^.47)+1 +310 LPRINT MID$(I$,V,1); +320 NEXT I +330 LPRINT "I": NEXT J +340 GOSUB 620 +350 LPRINT +360 LPRINT "1 ARC SEC: I---------I" +370 GOTO 720 +380 REM +390 REM APERTURE FILTER +400 REM +410 F=1 +420 R1=SQR(X*X+Y*Y) +430 IF R1>R THEN F=0 +440 RETURN +450 REM PHASE CALCULATION +460 REM +470 FOR I=0 TO 40 +480 FOR J=0 TO 24 +490 P=X*AA(I,J)+Y*BB(I,J) +500 II(I,J)=II(I,J)+COS(P) +510 NEXT J: NEXT I +520 RETURN +530 REM COMPUTE COEFFICIENTS +540 REM +550 K=2*3.14159265#/(L*206265!) +560 FOR I=0 TO 40: FOR J=0 TO 24 +570 AA(I,J)=K*(I-20)/10 +580 BB(I,J)=K*(12-J)/6 +590 NEXT J: NEXT I +600 RETURN +610 REM +620 REM PRINT A LINE +630 LPRINT " "; +640 FOR I=0 TO 40: LPRINT "-"; +650 NEXT: LPRINT +660 RETURN +670 REM ======================= +680 REM FROM "ASTRONOMICAL +690 REM COMPUTING," SKY & TELE- +700 REM SCOPE, SEPTEMBER, 1987 +710 REM ======================= +720 END diff --git a/SKYTEL/difpat.dif b/SKYTEL/difpat.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/difpat.run b/SKYTEL/difpat.run new file mode 100644 index 0000000..96ccc25 --- /dev/null +++ b/SKYTEL/difpat.run @@ -0,0 +1,5 @@ +HOW MANY RAYS? 2 +DOING RAY 1 +DOING RAY 2 +NOW FINDING INTENSITY +PRINTER ON? Y diff --git a/SKYTEL/easter.80 b/SKYTEL/easter.80 new file mode 100644 index 0000000..1dedbb6 --- /dev/null +++ b/SKYTEL/easter.80 @@ -0,0 +1,3 @@ +YEAR ? 2015 +EASTER IS ON APRIL 5 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/easter.INP b/SKYTEL/easter.INP new file mode 100644 index 0000000..e56d616 --- /dev/null +++ b/SKYTEL/easter.INP @@ -0,0 +1,2 @@ +2015 +N diff --git a/SKYTEL/easter.OUT b/SKYTEL/easter.OUT new file mode 100644 index 0000000..b1e0509 --- /dev/null +++ b/SKYTEL/easter.OUT @@ -0,0 +1,3 @@ +YEAR ? 2015 +EASTER IS ON APRIL 5 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/easter.bas b/SKYTEL/easter.bas new file mode 100644 index 0000000..9a0ffdb --- /dev/null +++ b/SKYTEL/easter.bas @@ -0,0 +1,32 @@ +10 REM EASTER +12 REM +14 INPUT "YEAR ";Y +16 IF Y<1583 THEN 14 +18 Y1=Y/19 +20 A=INT((Y1-INT(Y1))*19+.001) +22 B1=Y/100: B=INT(B1) +24 C=INT((B1-INT(B1))*100+.001) +26 D1=B/4: D=INT(D1) +28 E=INT((D1-INT(D1))*4+.001) +30 F=INT(((B+8)/25)+.001) +32 G=INT((B-F+1)/3) +34 H1=(19*A+B-D-G+15)/30 +36 H=INT((H1-INT(H1))*30+.001) +38 C1=C/4: I=INT(C1) +40 K=INT((C1-I)*4+.001) +42 L1=(32+2*E+2*I-H-K)/7 +44 L=INT((L1-INT(L1))*7+.001) +46 M=INT((A+11*H+22*L)/451) +48 N1=(H+L-7*M+114)/31: N=INT(N1) +50 P=INT((N1-N)*31+.001) +52 N$="APRIL" +54 IF N=3 THEN N$="MARCH" +56 PRINT "EASTER IS ON ";N$;P+1 +58 INPUT "ANOTHER (Y OR N) ";Q$ +60 IF Q$="Y" THEN 14 +62 END +70 REM ------------------------ +80 REM APPEARED IN ASTRONOMICAL +90 REM COMPUTING, SKY & TELE- +95 REM SCOPE, MARCH, 1986 +99 REM ------------------------ diff --git a/SKYTEL/easter.dif b/SKYTEL/easter.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/easter.run b/SKYTEL/easter.run new file mode 100644 index 0000000..1dedbb6 --- /dev/null +++ b/SKYTEL/easter.run @@ -0,0 +1,3 @@ +YEAR ? 2015 +EASTER IS ON APRIL 5 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/extinc.80 b/SKYTEL/extinc.80 new file mode 100644 index 0000000..f4c62a9 --- /dev/null +++ b/SKYTEL/extinc.80 @@ -0,0 +1,4 @@ +STAR'S MAG? 7 +LIM MAG AT ZEN? 4 +EXT COEFF, K? 1.234 +EXT ANGLE: -92.2 diff --git a/SKYTEL/extinc.INP b/SKYTEL/extinc.INP new file mode 100644 index 0000000..31fe728 --- /dev/null +++ b/SKYTEL/extinc.INP @@ -0,0 +1,3 @@ +7 +4 +1.234 diff --git a/SKYTEL/extinc.OUT b/SKYTEL/extinc.OUT new file mode 100644 index 0000000..d8ced38 --- /dev/null +++ b/SKYTEL/extinc.OUT @@ -0,0 +1,4 @@ +STAR'S MAG? 7 +LIM MAG AT ZEN? 4 +EXT COEFF, K? 1.234 +EXT ANGLE: -92.2 diff --git a/SKYTEL/extinc.bas b/SKYTEL/extinc.bas new file mode 100644 index 0000000..15e72d7 --- /dev/null +++ b/SKYTEL/extinc.bas @@ -0,0 +1,34 @@ +10 REM EXTINCTION ANGLE +12 REM +14 R=180/3.14159265 +16 INPUT "STAR'S MAG";M +18 INPUT "LIM MAG AT ZEN";M0 +20 INPUT "EXT COEFF, K";K +22 REM FIND BACKGROUND +24 K0=0.0126: K1=M0+K +26 IF K1<4.21 THEN K0=0.00000126 +28 C=-9.80 +30 IF M0+K<4.21 THEN C=-8.35 +32 X0=(M0+16.57+K+2.5*C)/(-5.0) +34 B0=(10^X0-1)^2/K0-K*118/0.2 +36 REM FIND DESIRED AIRMASS +38 B=B0+236*(K/0.20) +40 K0=0.0126 +42 IF B>1650 THEN K0=0.00000126 +44 C=-9.80 +46 IF B>1650 THEN C=-8.35 +48 I=C+2*LOG(1+SQR(K0*B))/LOG(10) +50 A=(M+16.57+2.5*I)/(-K) +52 REM FIND EXT ANGLE +54 Z=90.1/R: D=0.1/R +56 Z=Z-D +58 X=COS(Z)+0.025*EXP(-11*COS(Z)) +60 IF (1/X)>A THEN 56 +62 Z=Z*R +64 PRINT "EXT ANGLE: ";Z +66 END +68 REM ****************************** +70 REM FROM ASTRONOMICAL COMPUTING, +72 REM SKY & TELESCOPE, APRIL, 1987, +74 REM PAGE 426 +76 REM ****************************** diff --git a/SKYTEL/extinc.dif b/SKYTEL/extinc.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/extinc.run b/SKYTEL/extinc.run new file mode 100644 index 0000000..f4c62a9 --- /dev/null +++ b/SKYTEL/extinc.run @@ -0,0 +1,4 @@ +STAR'S MAG? 7 +LIM MAG AT ZEN? 4 +EXT COEFF, K? 1.234 +EXT ANGLE: -92.2 diff --git a/SKYTEL/facecirc.80 b/SKYTEL/facecirc.80 new file mode 100644 index 0000000..d25d1bc --- /dev/null +++ b/SKYTEL/facecirc.80 @@ -0,0 +1,14 @@ +Please Enter the Outside DIAMETER in MM - ? 250 + + + + + +Do you want the scale in Degrees or Hours and Minutes? + Please indicate 'd' for Degrees or 'h' for Hours... ? d + + + +Printing....... + +NOTE: This will take up to 70 seconds to print. diff --git a/SKYTEL/facecirc.INP b/SKYTEL/facecirc.INP new file mode 100644 index 0000000..d2500e5 --- /dev/null +++ b/SKYTEL/facecirc.INP @@ -0,0 +1,2 @@ +250 +d diff --git a/SKYTEL/facecirc.OUT b/SKYTEL/facecirc.OUT new file mode 100644 index 0000000..8894d6c --- /dev/null +++ b/SKYTEL/facecirc.OUT @@ -0,0 +1,14 @@ +Please Enter the Outside DIAMETER in MM - ? 250 + + + + + +Do you want the scale in Degrees or Hours and Minutes? + Please indicate 'd' for Degrees or 'h' for Hours... ? d + + + +Printing....... + +NOTE: This will take up to 70 seconds to print. diff --git a/SKYTEL/facecirc.bas b/SKYTEL/facecirc.bas new file mode 100644 index 0000000..2041174 --- /dev/null +++ b/SKYTEL/facecirc.bas @@ -0,0 +1,77 @@ +10 REM - THIS IS FACECIRC.BAS +20 CLS +30 REM - Constants +40 A = 4080: C = 5100: HF = 180: PLU = 40: E = 80: FA = 1: FB = 10: FC = 350 +50 K = .017453293#: REM - This is PI/180 +60 INPUT "Please Enter the Outside DIAMETER in MM - "; DIA: OR1 = DIA / 2: PRINT : PRINT +70 IR1 = OR1 - 3: PRINT : PRINT +80 IR2 = IR1 - 2: IR3 = IR1 - 1 +90 REM - Radius is converted to plotter units (PLU) +100 OR2 = OR1 * PLU: IR4 = IR1 * PLU: IR5 = IR2 * PLU: IR6 = IR3 * PLU +110 PRINT : PRINT "Do you want the scale in Degrees or Hours and Minutes?" +120 INPUT " Please indicate 'd' for Degrees or 'h' for Hours... "; A$: PRINT +130 IF A$ = "h" OR A$ = "H" THEN QQ = 1 +140 REM - Clear, set into HP-GL/2 mode, and initialize the printer +150 LPRINT CHR$(27); "E" : LPRINT CHR$(27); "%0B" : LPRINT "IN;" +160 REM - Select a pen and set the width +170 LPRINT "SP1;": LPRINT "PW.1;" +180 PRINT : PRINT : PRINT "Printing......." +190 PRINT : PRINT "NOTE: This will take up to 70 seconds to print." +200 REM - Plot outside and inside circles +210 LPRINT "PA"; A; ","; C; ";": LPRINT "CI"; OR2; : LPRINT "PU;" +220 LPRINT "PA"; A; ","; C; ";": LPRINT "CI"; IR4; : LPRINT "PU;" +230 REM - Put in the Degrees or Hours +240 IF QQ = 1 THEN FA = 1.25 +250 FOR I = -HF TO HF STEP FA +260 LPRINT "PU;" +270 LPRINT "PA"; A + SIN(I * K) * IR4; ","; C + COS(I * K) * IR4; ";" +280 LPRINT "PD;" +290 LPRINT "PA"; A + SIN(I * K) * OR2; ","; C + COS(I * K) * OR2; ";" +300 LPRINT "PU;" +310 NEXT I +320 REM - Put in longer tick marks +330 IF QQ = 1 THEN FB = 15 +340 FOR I = -HF TO HF STEP FB +350 LPRINT "PU;" +360 LPRINT "PA"; A + SIN(I * K) * IR5; ","; C + COS(I * K) * IR5; ";" +370 LPRINT "PD;" +380 LPRINT "PA"; A + SIN(I * K) * OR2; ","; C + COS(I * K) * OR2; ";" +390 LPRINT "PU;" +400 NEXT I +410 REM - Put in shorter tick marks +420 FOR I = -HF TO HF STEP 5 +430 LPRINT "PU;" +440 LPRINT "PA"; A + SIN(I * K) * IR6; ","; C + COS(I * K) * IR6; ";" +450 LPRINT "PD;" +460 LPRINT "PA"; A + SIN(I * K) * OR2; ","; C + COS(I * K) * OR2; ";" +470 LPRINT "PU;" +480 NEXT I +490 REM - Select Font and Label +500 LPRINT "SD1,21,2,1,4,8,7,4148;" +510 IF QQ = 1 THEN GOTO 530 +520 IF OR1 < 45 THEN LPRINT "DV1;" +530 LPRINT "DT*,1;" +540 LPRINT "SS;" +550 LPRINT "LO16;" +560 IF QQ = 1 THEN FC = 345: FB = 15 +570 FOR J = 0 TO FC STEP FB +580 LPRINT "PU;" +590 IF QQ = 1 THEN GOTO 610 +600 IF OR1 < 45 THEN LPRINT "PA"; A + SIN(J * K) * (IR5 + E); ","; C + COS(J * K) * (IR5 + E); ";": GOTO 620 +610 LPRINT "PA"; A + SIN(J * K) * IR5; ","; C + COS(J * K) * IR5; ";" +620 LPRINT "DI"; COS(-J * K); ","; SIN(-J * K); ";" +630 IF J = 90 THEN LPRINT "DI0,-1;" +640 IF J = 180 THEN LPRINT "DI-1,0;" +650 IF J = 270 THEN LPRINT "DI0,1;" +660 IF QQ = 1 THEN LPRINT "LB"; INT(J / 15); "*;": GOTO 680 +670 LPRINT "LB"; INT(J); "*;" +680 LPRINT "PU;" +690 NEXT J +700 REM - Reset the printer +710 LPRINT CHR$(27); "%0A": LPRINT CHR$(27); "E" +720 END +900 REM *********************************************** +910 REM THIS PROGRAM BY RONALD KOCELA PRODUCES CIRCULAR +920 REM SETTING CIRCLES ON HP LASERJET PRINTERS. +930 REM FROM SKY & TELESCOPE, MARCH 1996, PAGE 84. +940 REM *********************************************** diff --git a/SKYTEL/facecirc.dif b/SKYTEL/facecirc.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/facecirc.run b/SKYTEL/facecirc.run new file mode 100644 index 0000000..d25d1bc --- /dev/null +++ b/SKYTEL/facecirc.run @@ -0,0 +1,14 @@ +Please Enter the Outside DIAMETER in MM - ? 250 + + + + + +Do you want the scale in Degrees or Hours and Minutes? + Please indicate 'd' for Degrees or 'h' for Hours... ? d + + + +Printing....... + +NOTE: This will take up to 70 seconds to print. diff --git a/SKYTEL/fireball.80 b/SKYTEL/fireball.80 new file mode 100644 index 0000000..d20d8d9 --- /dev/null +++ b/SKYTEL/fireball.80 @@ -0,0 +1,11 @@ + +INITIAL MASS (KG) ? 567890 +DENSITY (KG/M^3) ? 2.345 +SPEED (KM/S) ? 123456 +ZENITH ANGLE (DEG) ? 76.54 +TIME STEP (SEC) ? 0.123 + + GROUND ATMOS +TIME TRACK HEIGHT SPEED DECEL MASS VISUAL + (S) (KM) (KM) (KM/S) (M/S/S) (%) MAG + 0 0 155 123456 227707 100 -55.7 diff --git a/SKYTEL/fireball.INP b/SKYTEL/fireball.INP new file mode 100644 index 0000000..952e36f --- /dev/null +++ b/SKYTEL/fireball.INP @@ -0,0 +1,5 @@ +567890 +2.345 +123456 +76.54 +0.123 diff --git a/SKYTEL/fireball.OUT b/SKYTEL/fireball.OUT new file mode 100644 index 0000000..2e42d75 --- /dev/null +++ b/SKYTEL/fireball.OUT @@ -0,0 +1,11 @@ + +INITIAL MASS (KG) ? 567890 +DENSITY (KG/M^3) ? 2.345 +SPEED (KM/S) ? 123456 +ZENITH ANGLE (DEG) ? 76.54 +TIME STEP (SEC) ? 0.123 + + GROUND ATMOS +TIME TRACK HEIGHT SPEED DECEL MASS VISUAL + (S) (KM) (KM) (KM/S) (M/S/S) (%) MAG + 0 0 155 123456 227707 100 -55.7 diff --git a/SKYTEL/fireball.bas b/SKYTEL/fireball.bas new file mode 100644 index 0000000..c81fb57 --- /dev/null +++ b/SKYTEL/fireball.bas @@ -0,0 +1,62 @@ +10 REM FIREBALL +12 PRINT +14 INPUT "INITIAL MASS (KG) ";MM +16 INPUT "DENSITY (KG/M^3) ";D +18 INPUT "SPEED (KM/S) ";V +20 INPUT "ZENITH ANGLE (DEG) ";Z +22 INPUT "TIME STEP (SEC) ";DT +24 GOSUB 98: PRINT: GOSUB 114 +26 A=1.2: L=.001: G=1: H0=.2 +28 H1=500000: SG=H0/(2*G*H1) +30 H=155000: T=0: FM=10: FL=FM +32 M=MM: V=V*1000 +34 RE=6371000: ZR=Z*3.14159/180 +36 VV=-V*COS(ZR): VH=V*SIN(ZR) +38 REM DENSITY OF ATMOSPHERE +40 I=INT(H/10000) +42 IF I>15 THEN I=15 +44 FR=(H/10000)-I +46 R=10^(LR(I)*(1-FR)+FR*LR(I+1)) +48 REM RATES OF CHANGE +50 A2=G*A*R*V*V/(M*D*D)^.33333 +52 GV=9.810001/(1+H/RE)^2 +54 AV=-GV-A2*VV/V+VH*VH/(RE+H) +56 AH=-A2*VH/V-VV*VH/(RE+H) +58 M0=SG*M*V*A2 +60 IF FL=FM THEN GOSUB 76 +62 REM INCREMENT VARIABLES +64 T=T+DT: S=S+VH*DT*RE/(RE+H) +66 H=H+VV*DT: M=M-M0*DT +68 VV=VV+AV*DT: VH=VH+AH*DT +70 V=SQR(VH*VH+VV*VV) +72 IF M<0 OR H<0 THEN END +74 FL=FL+1: GOTO 38 +76 REM OUTPUT +78 PRINT INT(.5+T*10)/10; +80 PRINT TAB(10);INT(.5+S/1000); +82 PRINT TAB(20);INT(.5+H/1000); +84 PRINT TAB(30);INT(.5+V/100)/10; +86 PRINT TAB(40);INT(.5+A2); +88 PRINT TAB(50);INT(.5+100*M/MM); +90 LV=.5*V*V*M0*L*1E+10/(H*H) +92 MV=6.8-1.086*LOG(LV) +94 PRINT TAB(60);INT(.5+10*MV)/10 +96 FL=0: RETURN +98 REM LOG(DENSITY) OF ATMOSPHERE +100 DIM LR(16) +102 FOR I=0 TO 16: READ LR(I): NEXT +104 DATA .09,-.38,-1.05,-1.74,-2.39 +106 DATA -2.98,-3.50,-4.07,-4.72 +108 DATA -5.45,-6.30,-7.00,-7.62 +110 DATA -7.97,-8.32,-8.67,-8.81 +112 RETURN +114 REM HEADING +116 PRINT" GROUND"; +118 PRINT TAB(39);"ATMOS" +120 PRINT"TIME TRACK HEIGHT"; +122 PRINT TAB(30);"SPEED DECEL"; +124 PRINT TAB(50);"MASS VISUAL" +126 PRINT" (S) (KM) (KM)"; +128 PRINT TAB(30);"(KM/S) (M/S/S)"; +130 PRINT TAB(50);" (%) MAG" +132 RETURN diff --git a/SKYTEL/fireball.dif b/SKYTEL/fireball.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/fireball.run b/SKYTEL/fireball.run new file mode 100644 index 0000000..d20d8d9 --- /dev/null +++ b/SKYTEL/fireball.run @@ -0,0 +1,11 @@ + +INITIAL MASS (KG) ? 567890 +DENSITY (KG/M^3) ? 2.345 +SPEED (KM/S) ? 123456 +ZENITH ANGLE (DEG) ? 76.54 +TIME STEP (SEC) ? 0.123 + + GROUND ATMOS +TIME TRACK HEIGHT SPEED DECEL MASS VISUAL + (S) (KM) (KM) (KM/S) (M/S/S) (%) MAG + 0 0 155 123456 227707 100 -55.7 diff --git a/SKYTEL/fracts.80 b/SKYTEL/fracts.80 new file mode 100644 index 0000000..b6c9f84 --- /dev/null +++ b/SKYTEL/fracts.80 @@ -0,0 +1,13 @@ +DECIMAL VALUE? 0.1234 + + 0 0 1 = 0.0000000000000 + 8 1 8 = 0.1250000000000 + 9 9 73 = 0.1232876712329 + 1 10 81 = 0.1234567901235 + 1 19 154 = 0.1233766233766 + 1 29 235 = 0.1234042553191 + 3 106 859 = 0.1233993015134 + 1 135 1094 = 0.1234003656307 + 1 241 1953 = 0.1233998975934 + 1 376 3047 = 0.1234000656383 + 1 617 5000 = 0.1234000000000 diff --git a/SKYTEL/fracts.INP b/SKYTEL/fracts.INP new file mode 100644 index 0000000..1036e4e --- /dev/null +++ b/SKYTEL/fracts.INP @@ -0,0 +1 @@ +0.1234 diff --git a/SKYTEL/fracts.OUT b/SKYTEL/fracts.OUT new file mode 100644 index 0000000..d4bbf3b --- /dev/null +++ b/SKYTEL/fracts.OUT @@ -0,0 +1,13 @@ +DECIMAL VALUE? 0.1234 + + 0 0 1 = 0.0000000000000 + 8 1 8 = 0.1250000000000 + 9 9 73 = 0.1232876712329 + 1 10 81 = 0.1234567901235 + 1 19 154 = 0.1233766233766 + 1 29 235 = 0.1234042553191 + 3 106 859 = 0.1233993015134 + 1 135 1094 = 0.1234003656307 + 1 241 1953 = 0.1233998975934 + 1 376 3047 = 0.1234000656383 + 1 617 5000 = 0.1234000000000 diff --git a/SKYTEL/fracts.bas b/SKYTEL/fracts.bas new file mode 100644 index 0000000..93579ad --- /dev/null +++ b/SKYTEL/fracts.bas @@ -0,0 +1,42 @@ +10 REM REPRESENTING A DECIMAL +12 REM VALUE BY A CONTINUED +14 REM FRACTION +16 REM +18 ' DEFDBL A-H,K-Z +20 ' DEFINT I,J +22 C1=1: O=99999 +24 O1$="##### ########## /" +26 O2$="= ##.#############" +28 REM +30 P=1E12 +32 DIM F(100) +34 INPUT "DECIMAL VALUE";K +36 PRINT +38 I=-1 +40 I=I+1 +42 F(I)=INT(K): IF I>=1 THEN 46 +44 N=F(I): D=1: GOTO 48 +46 GOSUB 68 +48 R=N/D +50 IF ABS(N)>P THEN 66 +52 IF ABS(D)>P THEN 66 +54 PRINT USING O1$;F(I);N; +56 PRINT D;TAB(30); +58 PRINT USING O2$;R +60 K1=K-INT(K): IF K1=0 THEN 66 +62 IF ABS(R-O)<1/P THEN 66 +64 K=C1/K1: O=R: GOTO 40 +66 END +68 D=F(I): N=1 +70 FOR J=I-1 TO 0 STEP -1 +72 N1=D +74 D1=F(J)*D+N +76 N=N1: D=D1 +78 NEXT J +80 N=D1: D=N1 +82 RETURN +100 REM ************************ +110 REM FROM SKY & TELESCOPE'S +120 REM ASTRONOMICAL COMPUTING +130 REM FOR JANUARY, 1989 +140 REM ************************ diff --git a/SKYTEL/fracts.dif b/SKYTEL/fracts.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/fracts.run b/SKYTEL/fracts.run new file mode 100644 index 0000000..b6c9f84 --- /dev/null +++ b/SKYTEL/fracts.run @@ -0,0 +1,13 @@ +DECIMAL VALUE? 0.1234 + + 0 0 1 = 0.0000000000000 + 8 1 8 = 0.1250000000000 + 9 9 73 = 0.1232876712329 + 1 10 81 = 0.1234567901235 + 1 19 154 = 0.1233766233766 + 1 29 235 = 0.1234042553191 + 3 106 859 = 0.1233993015134 + 1 135 1094 = 0.1234003656307 + 1 241 1953 = 0.1233998975934 + 1 376 3047 = 0.1234000656383 + 1 617 5000 = 0.1234000000000 diff --git a/SKYTEL/glob1.80 b/SKYTEL/glob1.80 new file mode 100644 index 0000000..3a67035 --- /dev/null +++ b/SKYTEL/glob1.80 @@ -0,0 +1,16 @@ +(1) X-Z EDGE-ON VIEW +(2) X-Y FACE-ON VIEW +(3) Y-Z EDGE-ON VIEW + +YOUR SELECTION ? 1 + +NAME ? ABC +APPAR. MAG. (H.B.)? 7 +VISUAL EXTINCTION ? 2 +LONGITUDE? 156 +LATITUDE ? 123 + +DISTANCE = 247.448 + X = 123.118 + Z + 207.527 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/glob1.INP b/SKYTEL/glob1.INP new file mode 100644 index 0000000..d4ea418 --- /dev/null +++ b/SKYTEL/glob1.INP @@ -0,0 +1,7 @@ +1 +ABC +7 +2 +156 +123 +N diff --git a/SKYTEL/glob1.OUT b/SKYTEL/glob1.OUT new file mode 100644 index 0000000..1e001c0 --- /dev/null +++ b/SKYTEL/glob1.OUT @@ -0,0 +1,16 @@ +(1) X-Z EDGE-ON VIEW +(2) X-Y FACE-ON VIEW +(3) Y-Z EDGE-ON VIEW + +YOUR SELECTION ? 1 + +NAME ? ABC +APPAR. MAG. (H.B.)? 7 +VISUAL EXTINCTION ? 2 +LONGITUDE? 156 +LATITUDE ? 123 + +DISTANCE = 247.448 + X = 123.118 + Z + 207.527 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/glob1.bas b/SKYTEL/glob1.bas new file mode 100644 index 0000000..7ddad90 --- /dev/null +++ b/SKYTEL/glob1.bas @@ -0,0 +1,39 @@ +10 REM GLOBULAR CLUSTER PLOT +12 REM +14 R1=3.14159265/180 +16 M0=+0.6: REM RR LYRAE STARS +18 GOSUB 66 +20 PRINT +22 INPUT "NAME ";N$ +24 INPUT "APPAR. MAG. (H.B.)";M1 +26 INPUT "VISUAL EXTINCTION ";M2 +28 D=10^(.2*(M1-M2-M0)-2) +30 D=D*3262: REM LIGHT-YEARS +32 INPUT "LONGITUDE";L +34 INPUT "LATITUDE ";B +36 L=L*R1: B=B*R1 +38 PRINT +40 PRINT "DISTANCE = ";D +42 IF S>2 THEN 50 +44 X=D*COS(L)*COS(B) +46 PRINT " X = ";X +48 IF S<2 THEN 56 +50 Y=D*SIN(L)*COS(B) +52 PRINT " Y = ";Y +54 IF S=2 THEN 60 +56 Z=D*SIN(B) +58 PRINT " Z + ";Z +60 INPUT "ANOTHER (Y OR N) ";Q$ +62 IF Q$<>"N" THEN 20 +64 END +66 PRINT "(1) X-Z EDGE-ON VIEW" +68 PRINT "(2) X-Y FACE-ON VIEW" +70 PRINT "(3) Y-Z EDGE-ON VIEW" +72 PRINT +74 INPUT "YOUR SELECTION ";S +76 RETURN +80 REM ------------------------ +82 REM APPEARED IN ASTRONOMICAL +84 REM COMPUTING, SKY & TELE- +86 REM SCOPE, DECEMBER, 1984 +88 REM ------------------------ diff --git a/SKYTEL/glob1.dif b/SKYTEL/glob1.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/glob1.run b/SKYTEL/glob1.run new file mode 100644 index 0000000..3a67035 --- /dev/null +++ b/SKYTEL/glob1.run @@ -0,0 +1,16 @@ +(1) X-Z EDGE-ON VIEW +(2) X-Y FACE-ON VIEW +(3) Y-Z EDGE-ON VIEW + +YOUR SELECTION ? 1 + +NAME ? ABC +APPAR. MAG. (H.B.)? 7 +VISUAL EXTINCTION ? 2 +LONGITUDE? 156 +LATITUDE ? 123 + +DISTANCE = 247.448 + X = 123.118 + Z + 207.527 +ANOTHER (Y OR N) ? N diff --git a/SKYTEL/gmst.80 b/SKYTEL/gmst.80 new file mode 100644 index 0000000..7565568 --- /dev/null +++ b/SKYTEL/gmst.80 @@ -0,0 +1,2 @@ +J,F ? 6,7 +GMST: 137 4 37.6587 diff --git a/SKYTEL/gmst.INP b/SKYTEL/gmst.INP new file mode 100644 index 0000000..0405193 --- /dev/null +++ b/SKYTEL/gmst.INP @@ -0,0 +1 @@ +6,7 diff --git a/SKYTEL/gmst.OUT b/SKYTEL/gmst.OUT new file mode 100644 index 0000000..06d1206 --- /dev/null +++ b/SKYTEL/gmst.OUT @@ -0,0 +1,2 @@ +J,F ? 6,7 +GMST: 137 4 37.6587 diff --git a/SKYTEL/gmst.bas b/SKYTEL/gmst.bas new file mode 100644 index 0000000..fd36ac8 --- /dev/null +++ b/SKYTEL/gmst.bas @@ -0,0 +1,25 @@ +700 REM GREENWICH MEAN +702 REM SIDEREAL TIME +704 REM +706 INPUT "J,F ";J,F +708 D=J-2451545 +710 T=D/36525: T1=INT(T) +712 J0=T1*36525+2451545 +714 T2=(J-J0+0.5)/36525 +716 S=24110.54841+184.812866*T1 +718 S=S+8640184.812866*T2 +720 S=S+0.093104*T*T +722 S=S-0.0000062*T*T*T +724 S=S/86400: S=S-INT(S) +726 S=24*(S+(F-0.5)*1.002737909) +728 IF S<0 THEN S=S+24 +730 IF S>24 THEN S=S-24 +732 H=INT(S): M1=60*(S-H) +734 M=INT(M1): S=60*(M1-M) +736 PRINT "GMST: ";H;M;S +738 END +740 REM ------------------------ +745 REM APPERAED IN ASTRONOMICAL +750 REM COMPUTING, SKY & TELE- +755 REM SCOPE. JUNE, 1984 +760 REM ------------------------ diff --git a/SKYTEL/gmst.dif b/SKYTEL/gmst.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/gmst.run b/SKYTEL/gmst.run new file mode 100644 index 0000000..7565568 --- /dev/null +++ b/SKYTEL/gmst.run @@ -0,0 +1,2 @@ +J,F ? 6,7 +GMST: 137 4 37.6587 diff --git a/SKYTEL/gwmonth.80 b/SKYTEL/gwmonth.80 new file mode 100644 index 0000000..96fcf51 --- /dev/null +++ b/SKYTEL/gwmonth.80 @@ -0,0 +1,2 @@ +? 3 +MARCH diff --git a/SKYTEL/gwmonth.INP b/SKYTEL/gwmonth.INP new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/SKYTEL/gwmonth.INP @@ -0,0 +1 @@ +3 diff --git a/SKYTEL/gwmonth.OUT b/SKYTEL/gwmonth.OUT new file mode 100644 index 0000000..af3b306 --- /dev/null +++ b/SKYTEL/gwmonth.OUT @@ -0,0 +1,2 @@ +? 3 +MARCH diff --git a/SKYTEL/gwmonth.bas b/SKYTEL/gwmonth.bas new file mode 100644 index 0000000..479b050 --- /dev/null +++ b/SKYTEL/gwmonth.bas @@ -0,0 +1,12 @@ +10 REM NAME OF MONTH +20 REM +25 DIM A$(150) +27 DIM M$(25) +30 LET A$="320125799653785534469788JANUARYFEBRUARYMARCHAPRILMAYJUNEJULYAUGUSTSEPTEMBEROCTOBERNOVEMBERDECEMBER" +40 INPUT A +50 LET M$=MID$(A$,(A*6+22-VAL(MID$(A$,A,1))),VAL(MID$(A$,A+12,1))) +60 PRINT M$ +70 REM *********************************** +80 REM APPEARED IN ASTRONOMICAL COMPUTING +90 REM SKY & TELESCOPE, OCTOBER 1984 ISSUE +100 REM ********************************** \ No newline at end of file diff --git a/SKYTEL/gwmonth.dif b/SKYTEL/gwmonth.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/gwmonth.run b/SKYTEL/gwmonth.run new file mode 100644 index 0000000..96fcf51 --- /dev/null +++ b/SKYTEL/gwmonth.run @@ -0,0 +1,2 @@ +? 3 +MARCH diff --git a/SKYTEL/interp.80 b/SKYTEL/interp.80 new file mode 100644 index 0000000..f624977 --- /dev/null +++ b/SKYTEL/interp.80 @@ -0,0 +1,13 @@ +HOW MANY POINTS? 3 + +X,F? 1,6 +X,F? 2,8 +X,F? 3,10 + +DESIRED X? 1.5 +F: 7 + +DESIRED X? 2.5 +F: 9 + +DESIRED X? X diff --git a/SKYTEL/interp.INP b/SKYTEL/interp.INP new file mode 100644 index 0000000..86755a2 --- /dev/null +++ b/SKYTEL/interp.INP @@ -0,0 +1,7 @@ +3 +1,6 +2,8 +3,10 +1.5 +2.5 +X diff --git a/SKYTEL/interp.OUT b/SKYTEL/interp.OUT new file mode 100644 index 0000000..486450e --- /dev/null +++ b/SKYTEL/interp.OUT @@ -0,0 +1,13 @@ +HOW MANY POINTS? 3 + +X,F? 1,6 +X,F? 2,8 +X,F? 3,10 + +DESIRED X? 1.5 +F: 7 + +DESIRED X? 2.5 +F: 9 + +DESIRED X? X diff --git a/SKYTEL/interp.bas b/SKYTEL/interp.bas new file mode 100644 index 0000000..55e1ca8 --- /dev/null +++ b/SKYTEL/interp.bas @@ -0,0 +1,40 @@ +10 REM LAGRANGE INTERPOLATION +12 REM +14 INPUT "HOW MANY POINTS";N +16 PRINT +18 DIM X(N),F(N),L(N) +20 FOR I=1 TO N +22 INPUT "X,F";X(I),F(I) +24 NEXT I +26 FOR I=1 TO N: L(I)=1 +28 FOR J=1 TO N +30 IF J=I THEN 34 +32 L(I)=L(I)*(X(I)-X(J)) +34 NEXT J +36 L(I)=F(I)/L(I) +38 NEXT I +40 PRINT +42 INPUT "DESIRED X";X$ +44 IF X$="X" THEN 78 +48 X=VAL(X$): F1=0 +50 FOR I=1 TO N +52 IF X<>X(I) THEN 56 +54 F=F(I): F1=1 +56 NEXT I +58 IF F1=1 THEN 74 +60 T=1: F=0 +62 FOR I=1 TO N +64 T=T*(X-X(I)) +66 NEXT I +68 FOR I=1 TO N +70 F=F+L(I)*T/(X-X(I)) +72 NEXT I +74 PRINT "F: ";F +76 PRINT: GOTO 42 +78 END +80 REM ------------------------ +85 REM APPEARED IN ASTRONOMICAL +90 REM COMPUTING, SKY & TELE- +95 REM SCOPE, APRIL, 1984 +99 REM ------------------------ + diff --git a/SKYTEL/interp.dif b/SKYTEL/interp.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/interp.run b/SKYTEL/interp.run new file mode 100644 index 0000000..f624977 --- /dev/null +++ b/SKYTEL/interp.run @@ -0,0 +1,13 @@ +HOW MANY POINTS? 3 + +X,F? 1,6 +X,F? 2,8 +X,F? 3,10 + +DESIRED X? 1.5 +F: 7 + +DESIRED X? 2.5 +F: 9 + +DESIRED X? X diff --git a/SKYTEL/jdcal.80 b/SKYTEL/jdcal.80 new file mode 100644 index 0000000..792d70a --- /dev/null +++ b/SKYTEL/jdcal.80 @@ -0,0 +1,3 @@ +J,F ? 6,9 +JC (0) OR GC (1) ? 1 +DATE: -4713 12 9.5 diff --git a/SKYTEL/jdcal.INP b/SKYTEL/jdcal.INP new file mode 100644 index 0000000..c09b760 --- /dev/null +++ b/SKYTEL/jdcal.INP @@ -0,0 +1,2 @@ +6,9 +1 diff --git a/SKYTEL/jdcal.OUT b/SKYTEL/jdcal.OUT new file mode 100644 index 0000000..6e371d1 --- /dev/null +++ b/SKYTEL/jdcal.OUT @@ -0,0 +1,3 @@ +J,F ? 6,9 +JC (0) OR GC (1) ? 1 +DATE: -4713 12 9.5 diff --git a/SKYTEL/jdcal.bas b/SKYTEL/jdcal.bas new file mode 100644 index 0000000..e5c8144 --- /dev/null +++ b/SKYTEL/jdcal.bas @@ -0,0 +1,26 @@ +900 REM JD --> CALENDAR +905 REM +910 INPUT "J,F ";J,F +915 INPUT "JC (0) OR GC (1) ";G +920 F=F+0.5 +925 IF F<1 THEN 935 +930 F=F-1: J=J+1 +935 IF G=1 THEN 945 +940 A=J: GOTO 955 +945 A1=INT((J/36524.25)-51.12264) +950 A=J+1+A1-INT(A1/4) +955 B=A+1524 +960 C=INT((B/365.25)-0.3343) +965 D=INT(365.25*C) +970 E=INT((B-D)/30.61) +975 D=B-D-INT(30.61*E)+F +980 M=E-1: Y=C-4716 +985 IF E>13.5 THEN M=M-12 +990 IF M<2.5 THEN Y=Y+1 +995 PRINT "DATE: ";Y;M;D +997 END +1000 REM ------------------------ +1001 REM APPEARED IN ASTRONOMICAL +1002 REM COMPUTING, SKY & TELE- +1003 REM SCOPE, MAY, 1984 +1004 REM ------------------------ diff --git a/SKYTEL/jdcal.dif b/SKYTEL/jdcal.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/jdcal.run b/SKYTEL/jdcal.run new file mode 100644 index 0000000..792d70a --- /dev/null +++ b/SKYTEL/jdcal.run @@ -0,0 +1,3 @@ +J,F ? 6,9 +JC (0) OR GC (1) ? 1 +DATE: -4713 12 9.5 diff --git a/SKYTEL/jmerid.80 b/SKYTEL/jmerid.80 new file mode 100644 index 0000000..0027e4a --- /dev/null +++ b/SKYTEL/jmerid.80 @@ -0,0 +1,4 @@ +YR,MO,DAY ? 2015,03,01 +UT (H,M,S) ? 12,34,56 +C-MERID (I): 120.42 +C-MERID (II): 321.68 diff --git a/SKYTEL/jmerid.INP b/SKYTEL/jmerid.INP new file mode 100644 index 0000000..8df3b33 --- /dev/null +++ b/SKYTEL/jmerid.INP @@ -0,0 +1,2 @@ +2015,03,01 +12,34,56 diff --git a/SKYTEL/jmerid.OUT b/SKYTEL/jmerid.OUT new file mode 100644 index 0000000..73a5f11 --- /dev/null +++ b/SKYTEL/jmerid.OUT @@ -0,0 +1,4 @@ +YR,MO,DAY ? 2015,03,01 +UT (H,M,S) ? 12,34,56 +C-MERID (I): 120.42 +C-MERID (II): 321.68 diff --git a/SKYTEL/jmerid.bas b/SKYTEL/jmerid.bas new file mode 100644 index 0000000..5f201ea --- /dev/null +++ b/SKYTEL/jmerid.bas @@ -0,0 +1,129 @@ +100 REM JUPITER'S CENTRAL MERIDIAN +105 REM +110 DT=57: REM Value of ET-UT (sec) +111 REM in 1990; change DT for +112 REM other years as needed!! +115 P1=3.14159265 +120 P2=2*P1: RD=180/P1: DR=1/RD +125 GOSUB 330: REM Get date and UT +130 D=(J-2451545)+F +135 D=D+DT/86400: REM UT to ET +140 GOSUB 405 +145 READ A1,A2,D1,D2 +150 T=T-1: REM Cent from 2000.0 +155 A1=A1+A2*T +160 D1=D1+D2*T +165 Q=A1: GOSUB 710: A1=Q*DR +170 Q=D1: GOSUB 710: D1=Q*DR +175 D9=COS(D5)*SIN(A1-A5) +180 N9=SIN(D1)*COS(D5)*COS(A1-A5) +185 N9=N9-COS(D1)*SIN(D5) +190 K=RD*ATN(N9/D9) +195 IF D9<0 THEN K=K+180 +200 REM +205 READ W0,W1,W2: REM System I +210 GOSUB 245 +215 PRINT "C-MERID (I): ";C +220 REM +225 READ W0,W1,W2: REM System II +230 GOSUB 245 +235 PRINT "C-MERID (II): ";C +240 END +245 REM Rotations from epoch +250 W=W0+W1*(D-.0057755*RR)+W2*T +255 Q=W-K: GOSUB 710: C=Q +260 C=INT(100*C+.5)/100 +265 RETURN +275 REM North Pole R.A. +280 DATA 268.05, +0.107 +285 REM North Pole Dec. +290 DATA 64.49, -0.015 +295 REM System I +300 DATA 67.10, 877.9000, 1.291 +305 REM System II +310 DATA 43.30, 870.2700, 1.291 +315 REM +320 REM Calendar --> JD +325 REM +330 INPUT "YR,MO,DAY ";Y,M,D +335 INPUT "UT (H,M,S) ";H1,M1,S1 +340 D=D+H1/24+M1/1440+S1/86400 +345 G=1: IF Y<1582 THEN G=0 +350 D1=INT(D): F=D-D1-.5 +355 J=-INT(7*(INT((M+9)/12)+Y)/4) +360 IF G=0 THEN 380 +365 S=SGN(M-9): A=ABS(M-9) +370 J3=INT(Y+S*INT(A/7)) +375 J3=-INT((INT(J3/100)+1)*3/4) +380 J=J+INT(275*M/9)+D1+G*J3 +385 J=J+1721027+2*G+367*Y +390 IF F>=0 THEN 400 +395 F=F+1: J=J-1 +400 RETURN +405 REM Fundamental Arguments +410 REM +415 T=D/36525+1 +420 REM T=Centuries from 1900.0 +425 L0=.779072+.00273790931*D +430 G0=.993126+.0027377785*D +435 L5=.089608+.00023080893*D +440 G5=.056531+.00023080893*D +445 G6=.882987+.00009294371*D +450 L0=(L0-INT(L0))*P2 +455 G0=(G0-INT(G0))*P2 +460 L5=(L5-INT(L5))*P2 +465 G5=(G5-INT(G5))*P2 +470 G6=(G6-INT(G6))*P2 +475 REM Sun +480 L=6910*SIN(G0) +485 L=L+72*SIN(2*G0) +490 L=L-17*T*SIN(G0) +495 L=L-7*COS(G0-G5) +500 R=1.00014-.01675*COS(G0) +505 R=R-.00014*COS(2*G0) +510 L=L0+L/206265 +515 REM Jupiter +520 J=19934*SIN(G5) +525 J=J+5023*T+2511 +530 J=J+1093*COS(2*G5-5*G6) +535 J=J+601*SIN(2*G5) +540 J=J-479*SIN(2*G5-5*G6) +545 J=J-185*SIN(2*G5-2*G6) +550 J=J+137*SIN(3*G5-5*G6) +555 J=J-131*SIN(G5-2*G6) +560 B=-4692*COS(G5) +565 B=B+259*SIN(G5) +570 B=B+227-227*COS(2*G5) +575 B=B+30*T*SIN(G5) +580 R5=5.20883-.25122*COS(G5) +585 R5=R5-.00604*COS(2*G5) +590 R5=R5+.0026*COS(2*G5-2*G6) +595 R5=R5-.0017*COS(3*G5-5*G6) +600 R5=R5-.00106*SIN(2*G5-2*G6) +605 R5=R5-.00091*T*SIN(G5) +610 R5=R5-.00084*T*COS(G5) +615 L5=L5+J/206265: B5=B/206265 +620 N9=R5*COS(B5)*SIN(L5-L) +625 D9=R5*COS(B5)*COS(L5-L)+R +630 L1=ATN(N9/D9) +635 IF D9<0 THEN L1=L1+P1 +640 LL=L1+L +645 V=N9*N9+D9*D9 +650 RR=SQR(V+(R5*SIN(B5))^2) +655 S=R5*SIN(B5)/RR +660 BB=ATN(S/SQR(1-S*S)) +665 E=(84428-47*T)/206265 +670 N9=SIN(LL)*COS(E)-TAN(BB)*SIN(E) +675 D9=COS(LL): A5=ATN(N9/D9) +680 IF D9<0 THEN A5=A5+P1 +685 S=SIN(BB)*COS(E) +690 S=S+COS(BB)*SIN(E)*SIN(LL) +695 D5=ATN(S/SQR(1-S*S)) +700 RETURN +705 REM +710 REM Normalize Degrees +715 Q=Q/360: Q=Q-INT(Q): Q=Q*360 +720 RETURN +800 REM This program computes the longtude of Jupiter's central +810 REM meridian for any date and time. From SKY & TELESCOPE +820 REM magazine for December, 1989, page 641. diff --git a/SKYTEL/jmerid.dif b/SKYTEL/jmerid.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/jmerid.run b/SKYTEL/jmerid.run new file mode 100644 index 0000000..0027e4a --- /dev/null +++ b/SKYTEL/jmerid.run @@ -0,0 +1,4 @@ +YR,MO,DAY ? 2015,03,01 +UT (H,M,S) ? 12,34,56 +C-MERID (I): 120.42 +C-MERID (II): 321.68 diff --git a/SKYTEL/kepler.80 b/SKYTEL/kepler.80 new file mode 100644 index 0000000..6abc97c --- /dev/null +++ b/SKYTEL/kepler.80 @@ -0,0 +1,103 @@ +PERIHELION DISTANCE Q: ? 4567890 +ECCENTRICITY ? 0.89 +STARTING AND ENDING T ? 1,2 +MEAN ANOMALY IS 3.68315E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.05147E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.41978E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.7881E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.15641E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.52473E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.89304E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.26136E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.62967E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.99799E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 diff --git a/SKYTEL/kepler.INP b/SKYTEL/kepler.INP new file mode 100644 index 0000000..81cf0ad --- /dev/null +++ b/SKYTEL/kepler.INP @@ -0,0 +1,3 @@ +4567890 +0.89 +1,2 diff --git a/SKYTEL/kepler.OUT b/SKYTEL/kepler.OUT new file mode 100644 index 0000000..76f852e --- /dev/null +++ b/SKYTEL/kepler.OUT @@ -0,0 +1,103 @@ +PERIHELION DISTANCE Q: ? 4567890 +ECCENTRICITY ? 0.89 +STARTING AND ENDING T ? 1,2 +MEAN ANOMALY IS 3.68315E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.05147E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.41978E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.7881E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.15641E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.52473E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.89304E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.26136E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.62967E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.99799E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 diff --git a/SKYTEL/kepler.bas b/SKYTEL/kepler.bas new file mode 100644 index 0000000..944016e --- /dev/null +++ b/SKYTEL/kepler.bas @@ -0,0 +1,129 @@ +10 REM KEPLER'S EQUATION +20 REM +30 P1=PI : D7=P1/180 : R1=1/D7 +40 K=.01720209895 +50 GOSUB 1060 +60 REM +70 PRINT "PERIHELION DISTANCE Q: "; : INPUT Q +90 PRINT "ECCENTRICITY "; : INPUT E0 +92 PRINT "STARTING AND ENDING T "; : INPUT T7,T8 +95 FOR T=T7 TO T8 STEP .1 +100 A1=Q/(1-E0) : IF A1<0 THEN M=0 : GO TO 120 +110 N0=K*A1^(-1.5) : M=N0*T +120 PRINT "MEAN ANOMALY IS ";M*R1;" DEGREES" +122 PRINT : PRINT +123 PRINT "METHOD I V R" +124 PRINT +130 IF A1<0 THEN 205 +140 IF E0>.99 THEN 170 +150 PRINT "SIMPLE "; +160 GOSUB 490 : GOSUB 400 +170 PRINT "ENCKE "; +180 GOSUB 560 : GOSUB 400 +190 PRINT "BINARY "; +200 GOSUB 260 : GOSUB 400 +205 REM +210 PRINT "HERRICK "; +220 GOSUB 640 : GOSUB 440 +230 PRINT "GAUSS "; +240 GOSUB 850 : GOSUB 440 +245 NEXT T +250 GO TO 2000 +260 REM BINARY METHOD +270 REM +280 F=SGN(M) : M=ABS(M)/(2*P1) : M=(M-INT(M))*2*P1*F +290 IF M<0 THEN M=M+2*P1 +300 F=1 : IF M>P1 THEN M=2*P1-M : F=-1 +310 E=P1/2 : D=P1/4 +320 FOR I1=1 TO 47 +330 M1=E-E0*SIN(E) +340 E=E+SGN(M-M1)*D : D=D/2 +350 E1=E +360 NEXT I1 +370 E=E*F : I=I1-1 +380 RETURN +390 REM +400 REM TRUE ANOMALY FROM ECCENTRIC ANOMALY +410 REM +420 V=2*ATN(SQR((1+E0)/(1-E0))*SIN(E/2)/COS(E/2)) +430 R=A1*(1-E0*COS(E)) +440 PRINT USING " #### ###.###### ##.#######";I;V*R1;R +470 RETURN +480 REM +490 REM SIMPLE ITERATION +500 REM +510 E=M : I=0 +520 E1=M+E0*SIN(E) : I=I+1 +530 IF ABS(E-E1)>1.0000000000000E-10 THEN E=E1 : GO TO 520 +540 RETURN +550 REM +560 REM ENCKE ITERATION +570 REM +580 E=M : I=0 +590 E1=E+(M+E0*SIN(E)-E)/(1-E0*COS(E)) : I=I+1 +600 IF ABS(E-E1)>1.0000000000000E-10 THEN E=E1 : GO TO 590 +610 RETURN +620 REM +640 REM HERRICK'S METHOD +650 REM +660 REM ENTER WITH T,E0,Q +670 REM EXIT WITH TRUE ANOMALY +680 REM +682 I=0 +690 P=Q*(1+E0) +700 C=K*(1+E0)*(1+E0)/(2*P^1.5) +710 X=SGN(T) : REM ASSUME V +90 OR -90 TO START +720 L=(1-E0)/(1+E0) +730 D2=C*(1+L*X*X)/(1+X*X) +740 C2=X/(1+L*X*X) : K1=X*X*X/(1+E0) +750 C2=C2+K1*(1/(1+L*X*X)-1/3) +760 N=0 : S=-1 +770 N=N+1 +775 I=I+1 +780 S=-S +790 F=K1*S*(L*X*X)^N/(2*N+3) +800 C2=C2+F : IF ABS(F)>1.0000000000000E-12 THEN 770 +810 D3=T-C2/C : IF ABS(D3)<1.0000000000000E-10 THEN 830 +820 X=X+D2*D3 : GO TO 730 +830 V=2*ATN(X) : R=Q*(1+E0)/(1+E0*COS(V)) +840 RETURN +850 REM GAUSS METHOD +860 REM +870 REM ENTER WITH T,E0,Q; EXIT WITH V,R +880 REM +882 I=0 +890 A=SQR((1+9*E0)/10) : B=5*(1-E0)/(1+9*E0) +900 C=SQR(5*(1+E0)/(1+9*E0)) +910 B1=3*A*K*T/SQR(2*Q*Q*Q) +920 B2=1 : REM INITIAL ASSUMPTION +930 W1=B2*B1 +940 B3=ATN(2/W1) : T1=SIN(B3/2)/COS(B3/2) +950 S1=SGN(T1) : T1=ABS(T1) : T2=T1^(1/3)*S1 +960 G=ATN(T2) : S=2/(SIN(2*G)/COS(2*G)) +970 A2=B*S*S +980 B0=B2 : B2=0 +982 FOR J=0 TO 7 : B2=B2+B(J)*A2^J : NEXT J +984 I=I+1 +990 IF ABS(B2-B0)>1.0000000000000E-13 THEN 930 +1000 C1=0 : FOR J=0 TO 7 : C1=C1+G(J)*A2^J : NEXT J +1010 V1=C*C1*S +1020 D1=1/(1+A2*C1*C1) : R=Q*D1*(1+V1*V1) +1030 V=2*ATN(V1) +1040 RETURN +1050 REM +1060 REM COEFFICIENTS +1080 FOR J=0 TO 7 : READ B(J) : NEXT J +1090 FOR J=0 TO 7 : READ G(J) : NEXT J +1100 FOR J=0 TO 7 : READ S(J) : NEXT J +1110 RETURN +1120 DATA 1,0,-0.017142857,-0.003809524,-0.001104267 +1130 DATA -0.000367358,-0.000131675,-0.000049577 +1140 DATA 1,0.4,0.21714286,0.12495238,0.07339814 +1150 DATA 0.04351610,0.02592289,0.01548368 +1160 DATA 1,-0.8,0.04571429,0.01523810,0.00562820 +1170 DATA 0.00218783,0.00087905,0.00036155 +2000 END +2010 REM ------------------------------------------ +2020 REM APPEARED IN ASTRONOMICAL COMPUTING, SKY & +2030 REM TELESCOPE, AUGUST, 1985 +2040 REM ------------------------------------------ diff --git a/SKYTEL/kepler.dif b/SKYTEL/kepler.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/kepler.run b/SKYTEL/kepler.run new file mode 100644 index 0000000..6abc97c --- /dev/null +++ b/SKYTEL/kepler.run @@ -0,0 +1,103 @@ +PERIHELION DISTANCE Q: ? 4567890 +ECCENTRICITY ? 0.89 +STARTING AND ENDING T ? 1,2 +MEAN ANOMALY IS 3.68315E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.05147E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.41978E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 4.7881E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.15641E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.52473E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 5.89304E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.26136E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.62967E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 +MEAN ANOMALY IS 6.99799E-12 DEGREES + + +METHOD I V R + +SIMPLE 1 0.000000 4567890.0000000 +ENCKE 1 0.000000 4567890.0000000 +BINARY 47 0.000000 4567890.0000000 +HERRICK 19 0.000000 4567890.0000000 +GAUSS 2 0.000000 4567890.0000000 diff --git a/SKYTEL/lens.80 b/SKYTEL/lens.80 new file mode 100644 index 0000000..7ab3277 --- /dev/null +++ b/SKYTEL/lens.80 @@ -0,0 +1,8 @@ +FRONT INDEXES? 1,2,3 +REAR INDEXES ? 4,5,6 +FOCAL LENGTH ? 7 + +R1 = -4.27217 +R2 = -5.36326 +R3 = 17.2997 +R4 = 98.1781 diff --git a/SKYTEL/lens.INP b/SKYTEL/lens.INP new file mode 100644 index 0000000..82637ec --- /dev/null +++ b/SKYTEL/lens.INP @@ -0,0 +1,3 @@ +1,2,3 +4,5,6 +7 diff --git a/SKYTEL/lens.OUT b/SKYTEL/lens.OUT new file mode 100644 index 0000000..6fcdbf9 --- /dev/null +++ b/SKYTEL/lens.OUT @@ -0,0 +1,8 @@ +FRONT INDEXES? 1,2,3 +REAR INDEXES ? 4,5,6 +FOCAL LENGTH ? 7 + +R1 = -4.27217 +R2 = -5.36326 +R3 = 17.2997 +R4 = 98.1781 diff --git a/SKYTEL/lens.bas b/SKYTEL/lens.bas new file mode 100644 index 0000000..0e223e0 --- /dev/null +++ b/SKYTEL/lens.bas @@ -0,0 +1,35 @@ +10 REM APLANATIC DOUBLET DESIGN +12 REM +14 INPUT "FRONT INDEXES";A,B,C +16 INPUT "REAR INDEXES ";D,E,F +18 INPUT "FOCAL LENGTH ";FL +20 PRINT +22 G=B/(B-1): H=E/(E-1) +24 I=(B-1)/(C-A): J=(E-1)/(F-D) +26 K=I^2: L=I^3: M=J^2: N=J^3 +28 O=(3-2/G)*I: P=(3-2/H)*J +30 Q=(3*G-1)*K +32 R=(8-4/H)*I*J-(3*H-1)*M +34 S=(G^2)*L-(5-2/H)*K*J +36 T=(4*H-1)*I*M-(H^2)*N +38 U=(2-1/G)*I: V=(2-1/H)*J +40 W=G*K-(3-1/H)*I*J+H*M +42 X=(U^2)*P-(V^2)*O +44 Y=2*U*W*P-(V^2)*Q+U*V*R +46 Z=(W^2)*P-(V^2)*(S+T)+V*W*R +48 A1=(Y-SQR(Y^2-4*X*Z))/(2*X) +50 A2=(U*A1)/V-W/V +52 R1=((I-J)/A1)*FL +54 R2=((I-J)/(A1-(I*(G-1))))*FL +56 R3=((I-J)/A2)*FL +58 R4=((I-J)/(A2+(J*(H-1))))*FL +60 PRINT "R1 = ";R1 +62 PRINT "R2 = ";R2 +64 PRINT "R3 = ";R3 +66 PRINT "R4 = ";R4 +68 END +70 REM ------------------------ +80 REM APPEARED IN ASTRONOMICAL +90 REM COMPUTING, SKY & TELE- +92 REM SCOPE, NOVEMBER, 1984 +94 REM ------------------------ diff --git a/SKYTEL/lens.dif b/SKYTEL/lens.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/lens.run b/SKYTEL/lens.run new file mode 100644 index 0000000..7ab3277 --- /dev/null +++ b/SKYTEL/lens.run @@ -0,0 +1,8 @@ +FRONT INDEXES? 1,2,3 +REAR INDEXES ? 4,5,6 +FOCAL LENGTH ? 7 + +R1 = -4.27217 +R2 = -5.36326 +R3 = 17.2997 +R4 = 98.1781 diff --git a/SKYTEL/lheight.80 b/SKYTEL/lheight.80 new file mode 100644 index 0000000..d798fbc --- /dev/null +++ b/SKYTEL/lheight.80 @@ -0,0 +1,18 @@ +HALF-HEIGHT CHORD (MM) ? 56789 +SEGMENT ? 4 + +USE VALUES IN DEGREES + +EARTH SEL. LONG. ? 123 +EARTH SEL. LAT. ? 145 +SUN SEL. COLONG. ? 167 +SUN SEL. LAT. ? 189 + +ENTER FEATURE DATA + SEL. LONGITUDE ? 154 + SEL. LATITUDE ? 165 + SHADOW (MM) ? 9876 +HEIGHT = 10 FEET + +DO ANOTHER +FROM SAME PHOTO (Y/N) ? N diff --git a/SKYTEL/lheight.INP b/SKYTEL/lheight.INP new file mode 100644 index 0000000..3b767a8 --- /dev/null +++ b/SKYTEL/lheight.INP @@ -0,0 +1,10 @@ +56789 +4 +123 +145 +167 +189 +154 +165 +9876 +N diff --git a/SKYTEL/lheight.OUT b/SKYTEL/lheight.OUT new file mode 100644 index 0000000..756b46e --- /dev/null +++ b/SKYTEL/lheight.OUT @@ -0,0 +1,18 @@ +HALF-HEIGHT CHORD (MM) ? 56789 +SEGMENT ? 4 + +USE VALUES IN DEGREES + +EARTH SEL. LONG. ? 123 +EARTH SEL. LAT. ? 145 +SUN SEL. COLONG. ? 167 +SUN SEL. LAT. ? 189 + +ENTER FEATURE DATA + SEL. LONGITUDE ? 154 + SEL. LATITUDE ? 165 + SHADOW (MM) ? 9876 +HEIGHT = 10 FEET + +DO ANOTHER +FROM SAME PHOTO (Y/N) ? N diff --git a/SKYTEL/lheight.bas b/SKYTEL/lheight.bas new file mode 100644 index 0000000..04f4655 --- /dev/null +++ b/SKYTEL/lheight.bas @@ -0,0 +1,61 @@ +100 REM COMPUTING LUNAR HEIGHTS +110 REM +120 INPUT "HALF-HEIGHT CHORD (MM) ";L1 +130 INPUT "SEGMENT ";L2 +140 PRINT +150 PRINT "USE VALUES IN DEGREES" +160 PRINT +170 INPUT "EARTH SEL. LONG. ";LE +180 INPUT "EARTH SEL. LAT. ";BE +190 INPUT "SUN SEL. COLONG. ";CS +200 INPUT "SUN SEL. LAT. ";BS +210 REM CONVERT DEGREES TO RADIANS +220 DR = 3.14159/180 +230 LS = 90-CS +240 IF LS900 THEN FR=SQR(TH/900) : REM APPEAR EXTENDED +530 FC=10^(0.4*(CI/2-1)) : REM COLOR OF STAR +540 FS=1.0 : REM OBSERVER'S SENSITIVITY +550 REM +560 REM CALCULATE SKY BRIGHTNESS +570 REM +580 IF MZ>=(7-K) THEN 620 : REM +590 XX=0.2*(8.68-K-MZ) : REM FS ASSUMED = 1 +600 BS=39.7*(10^XX-1)^2 : REM SKY BRIGHTNESS FOR MZ +610 GOTO 650 +620 BS=54 : REM BEST POSS. SKY BRIGHT- +630 FS=10^(0.4*(7-K-MZ)) : REM NESS & GOOD EYESIGHT +640 REM +650 BS=BS*(Z*Z*0.5+1) : REM ZENITH HAS DARKEST SKY +660 B=BS/(FB*FT*FPX*FA*FM*FC) : REM BACKGROUND BRIGHTNESS +670 REM IN TELESCOPE +690 REM CALCULATE LIMITING MAGNITUDE +700 REM +710 I=CC*(1+SQR(KK*B))^2 : REM Hecht (JOSA,v37,p59,1947) +720 IS=I*FB*FE*FT*FPX*FA*FR*FC*FS : REM FOR NO SCOPE, NO AIR +730 M=-16.57-2.5*LOG(IS)/LOG(10) : REM INTENSITY TO V MAG +740 M=M+(EX-6)*0.16 : REM EMPIRICAL EXPERIENCE +750 REM CORRECTION +760 PRINT "VISUAL LIMITING MAGNITUDE = ";M +770 END +800 REM +810 REM This program by Bradley Schaefer calculates the +820 REM limiting stellar magnitude an observer can expect +830 REM to see with various types and sizes of telescopes, +840 REM and under various conditions. It is fully discussed +850 REM in SKY & TELESCOPE magazine, November, 1989, page 522. diff --git a/SKYTEL/limmag.dif b/SKYTEL/limmag.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/limmag.run b/SKYTEL/limmag.run new file mode 100644 index 0000000..69f7a71 --- /dev/null +++ b/SKYTEL/limmag.run @@ -0,0 +1,12 @@ +SCOPE APERTURE ? 7 +POWER ? 9 +LIM MAG AT ZENITH ? 2 +OBSERVER'S AGE ? 3 +TELESCOPE TYPE (1-3) ? 2 +CLEANLINESS (1-9) ? 8 +COLOR INDEX OF STAR ? 4 +ZENITH DISTANCE ? 56789 +EXTINCTION COEFF ? 1.2 +SEEING DISK RADIUS ? 2.3 +EXPERIENCE (1-9) ? 3 +VISUAL LIMITING MAGNITUDE = 61.4254 diff --git a/SKYTEL/lookback.80 b/SKYTEL/lookback.80 new file mode 100644 index 0000000..b559186 --- /dev/null +++ b/SKYTEL/lookback.80 @@ -0,0 +1,16 @@ +Will you enter the (A)ge of the universe or the (H)ubble parameter? A +Enter age of the universe NOW in billions of years? 16 +Enter (T)ime THEN or (R)edshift of the light we see NOW? T +Enter age of the universe THEN in billions of years? 1 + +Age of the universe NOW = 16.0000 +Age of the universe THEN = 1.0000 +Light travel time = 15.0000 +Scale of the universe NOW versus THEN = 6.350 +Redshift of the light we see NOW = 5.350 +Distance of object THEN = 4.560 +Distance of object NOW = 28.951 +Speed away from us THEN = 3.040 +Speed away from us NOW = 1.206 +Hubble parameter THEN = 651.9 +Hubble parameter NOW = 40.7 diff --git a/SKYTEL/lookback.INP b/SKYTEL/lookback.INP new file mode 100644 index 0000000..4fe64b8 --- /dev/null +++ b/SKYTEL/lookback.INP @@ -0,0 +1,4 @@ +A +16 +T +1 diff --git a/SKYTEL/lookback.OUT b/SKYTEL/lookback.OUT new file mode 100644 index 0000000..88564c4 --- /dev/null +++ b/SKYTEL/lookback.OUT @@ -0,0 +1,16 @@ +Will you enter the (A)ge of the universe or the (H)ubble parameter? A +Enter age of the universe NOW in billions of years? 16 +Enter (T)ime THEN or (R)edshift of the light we see NOW? T +Enter age of the universe THEN in billions of years? 1 + +Age of the universe NOW = 16.0000 +Age of the universe THEN = 1.0000 +Light travel time = 15.0000 +Scale of the universe NOW versus THEN = 6.350 +Redshift of the light we see NOW = 5.350 +Distance of object THEN = 4.560 +Distance of object NOW = 28.951 +Speed away from us THEN = 3.040 +Speed away from us NOW = 1.206 +Hubble parameter THEN = 651.9 +Hubble parameter NOW = 40.7 diff --git a/SKYTEL/lookback.bas b/SKYTEL/lookback.bas new file mode 100644 index 0000000..01e2e70 --- /dev/null +++ b/SKYTEL/lookback.bas @@ -0,0 +1,48 @@ +10 REM LOOKBACK.BAS - Lookback Time +20 REM by Thomas A. Weil +30 RM = 3700 / 2.7-1 +40 INPUT "Will you enter the (A)ge of the universe or the (H)ubble parameter"; AH$ +50 IF AH$ = "H" OR AH$ = "h" GOTO 90 +60 IF AH$ <> "A" AND AH$ <> "a" GOTO 40 +70 INPUT "Enter age of the universe NOW in billions of years"; TN +80 TN = TN * 1E+09: GOTO 110 +90 INPUT "Enter Hubble parameter in km/sec/Mpc"; HN +100 TN = (2 / 3) / (HN / 9.7781E+11) +110 INPUT "Enter (T)ime THEN or (R)edshift of the light we see NOW"; TR$ +120 IF TR$ = "R" OR TR$ = "r" GOTO 190 +130 IF TR$ <> "T" AND TR$ <> "t" GOTO 110 +140 INPUT "Enter age of the universe THEN in billions of years"; TT +150 TT = TT * 1E+09: SC = (TN / TT) ^ (2 / 3): RS = SC - 1: IF RS < RM GOTO 230 +160 SM = RM + 1: TM = TN / (SM ^ 1.5) +170 PRINT : PRINT USING "You can't look back to a time earlier than ####### years"; TM +180 PRINT : GOTO 110 +190 INPUT "Enter redshift value for the light we see NOW"; RS +200 SC = RS + 1: TT = TN / (SC ^ 1.5): IF RS < RM GOTO 230 +210 PRINT : PRINT USING "Redshift value too large; nothing at redshift beyond ##### can be seen"; RM +220 GOTO 160 +230 PRINT : PRINT USING "Age of the universe NOW = ###.#### billion years"; TN / 1E+09 +240 PRINT USING "Age of the universe THEN = ###.#### billion years"; TT / 1E+09 +250 TV = TN - TT +260 PRINT USING "Light travel time = ###.#### billion years"; TV / 1E+09 +270 SC = (TN / TT) ^ (2 / 3) +280 PRINT USING "Scale of the universe NOW versus THEN = ####.###"; SC +290 RS = SC - 1 +300 PRINT USING "Redshift of the light we see NOW = ####.###"; RS +310 DT = 3 * TT * ((TN / TT) ^ (1 / 3) - 1) +320 PRINT USING "Distance of object THEN = ##.### billion light-years"; DT / 1E+09 +330 DN = DT * SC +340 PRINT USING "Distance of object NOW = ##.### billion light-years"; DN / 1E+09 +350 ST = 2 * ((TN / TT) ^ (1 / 3) - 1) +360 PRINT USING "Speed away from us THEN = ##.### x speed of light"; ST +370 SN = 2 * ((TN / TT) ^ (1 / 3) - 1) / (TN / TT) ^ (1 / 3) +380 PRINT USING "Speed away from us NOW = ##.### x speed of light"; SN +390 HT = (2 / 3) / TT * 9.7781E+11 +400 PRINT USING "Hubble parameter THEN = #######.# km/sec/megaparsec"; HT +410 HN = (2 / 3) / TN * 9.7781E+11 +420 PRINT USING "Hubble parameter NOW = #######.# km/sec/megaparsec"; HN +500 REM ======================== +510 REM FROM "ASTRONOMICAL +520 REM COMPUTING," SKY & TELE- +530 REM SCOPE, SEPTEMBER 1997 +540 REM ======================== +550 END diff --git a/SKYTEL/lookback.dif b/SKYTEL/lookback.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/lookback.run b/SKYTEL/lookback.run new file mode 100644 index 0000000..b559186 --- /dev/null +++ b/SKYTEL/lookback.run @@ -0,0 +1,16 @@ +Will you enter the (A)ge of the universe or the (H)ubble parameter? A +Enter age of the universe NOW in billions of years? 16 +Enter (T)ime THEN or (R)edshift of the light we see NOW? T +Enter age of the universe THEN in billions of years? 1 + +Age of the universe NOW = 16.0000 +Age of the universe THEN = 1.0000 +Light travel time = 15.0000 +Scale of the universe NOW versus THEN = 6.350 +Redshift of the light we see NOW = 5.350 +Distance of object THEN = 4.560 +Distance of object NOW = 28.951 +Speed away from us THEN = 3.040 +Speed away from us NOW = 1.206 +Hubble parameter THEN = 651.9 +Hubble parameter NOW = 40.7 diff --git a/SKYTEL/lookbak2.80 b/SKYTEL/lookbak2.80 new file mode 100644 index 0000000..10af56f --- /dev/null +++ b/SKYTEL/lookbak2.80 @@ -0,0 +1,22 @@ +Enter Matter Density of the universe, OmegaM (0 - 2.0)? 0.1 +Enter Cosmological Constant, OmegaL (0. - 1.0)? 0.9 +Will you enter (A)ge of the universe or (H)ubble constant? A +Enter Age of the universe NOW in billions of years? 16 +Will you enter (T)ime THEN or (R)edshift of the light we see NOW? T +Enter Age of the universe THEN, in billions of years? 1 + Finding what redshift matches Age THEN ...... +Age Factor NOW (Age=Fac/H0) = 1.2766 +Age of the universe NOW = 16.0000 +Age of the universe THEN = 1.0000 +Light travel time = 15.0000 +Redshift of the light we see NOW = 7.810 +Scale of the universe NOW versus THEN = 8.810 +Distance of object THEN = 4.235 +Distance of object NOW = 37.310 +Luminosity Distance NOW = 328.712 +Distance Modulus = 50.018 +Speed away from us THEN = 2.821 +Speed away from us NOW = 2.977 +Hubble constant THEN = 651.33 +Hubble constant NOW = 78.02 + * Not the object's own speed, but caused by the expansion of space. diff --git a/SKYTEL/lookbak2.INP b/SKYTEL/lookbak2.INP new file mode 100644 index 0000000..c6b87a7 --- /dev/null +++ b/SKYTEL/lookbak2.INP @@ -0,0 +1,6 @@ +0.1 +0.9 +A +16 +T +1 diff --git a/SKYTEL/lookbak2.OUT b/SKYTEL/lookbak2.OUT new file mode 100644 index 0000000..6b80b3a --- /dev/null +++ b/SKYTEL/lookbak2.OUT @@ -0,0 +1,22 @@ +Enter Matter Density of the universe, OmegaM (0 - 2.0)? 0.1 +Enter Cosmological Constant, OmegaL (0. - 1.0)? 0.9 +Will you enter (A)ge of the universe or (H)ubble constant? A +Enter Age of the universe NOW in billions of years? 16 +Will you enter (T)ime THEN or (R)edshift of the light we see NOW? T +Enter Age of the universe THEN, in billions of years? 1 + Finding what redshift matches Age THEN ...... +Age Factor NOW (Age=Fac/H0) = 1.2766 +Age of the universe NOW = 16.0000 +Age of the universe THEN = 1.0000 +Light travel time = 15.0000 +Redshift of the light we see NOW = 7.810 +Scale of the universe NOW versus THEN = 8.810 +Distance of object THEN = 4.235 +Distance of object NOW = 37.310 +Luminosity Distance NOW = 328.712 +Distance Modulus = 50.018 +Speed away from us THEN = 2.821 +Speed away from us NOW = 2.977 +Hubble constant THEN = 651.33 +Hubble constant NOW = 78.02 + * Not the object's own speed, but caused by the expansion of space. diff --git a/SKYTEL/lookbak2.bas b/SKYTEL/lookbak2.bas new file mode 100644 index 0000000..1f4eb39 --- /dev/null +++ b/SKYTEL/lookbak2.bas @@ -0,0 +1,123 @@ +100 REM LOOKBAK2.BAS - May 2001; Updated Sept. 2003 +110 REM by Thomas A. Weil, taweil@aol.com +112 REM Now handles user-specified values for both OmegaM and OmegaL. +114 REM Includes some code from Ned Wright's Cosmology Calculator, +116 REM http://www.astro.ucla.edu/~wright/CosmoCalc.html +120 INPUT "Enter Matter Density of the universe, OmegaM (0 - 2.0)"; OMG +130 IF OMG<0 OR OMG>2 GOTO 120 +140 INPUT "Enter Cosmological Constant, OmegaL (0. - 1.0)"; LAM +150 IF LAM<0 OR LAM>1 GOTO 140 +160 INPUT "Will you enter (A)ge of the universe or (H)ubble constant"; AH$ +170 IF AH$="H" OR AH$="h" GOTO 210 +180 IF AH$<>"A" AND AH$<>"a" GOTO 160 +190 INPUT "Enter Age of the universe NOW in billions of years"; TN +200 TN=TN*1E+09 : HN=60 : M=8 : GOTO 220 +210 INPUT "Enter Hubble constant in km/sec/Mpc"; HN : M=1 +212 REM N is the number of iterations to be used in each FOR-NEXT. +214 REM Ned Wright's Cosmology Calculator uses N=1000, but N=200 +216 REM is faster and still seems to be quite accurate. +218 REM HFAC converts the Hubble constant to units of km/sec/Mpc from speed +219 REM as a fraction of the speed of light per light year of distance. +220 N=200 : DELTA=.0000001 : HFAC=9.7782E+11 : E=2.718282 : PARSEC=3.2616 +222 REM For user-specified TN, we now calculate HN, but since ORDX depends +224 REM on HN, we need to iterate AgeFac until the results converge. +226 REM AgeFac is the factor to multiply the inverse of the Hubble +228 REM constant by to determine the age of the universe. +230 FOR J=1 TO M +232 REM OMC is Omega(Curvature); OMC=0 gives us a "flat" universe. +234 REM ORDX is Omega(Radiation), which is radiation pressure, which was a +236 REM major contributor to expansion when the universe was very young. +240 ORDX=.4165/(HN*HN) : OMC=1-OMG-LAM-ORDX : Z=5 : AZ=1/(1+Z) : AA=0 +242 REM Calc. age at redshift Z, and lookback time, and add them to get Age +244 REM Now (TN). For this calculation we assume Z=5, but any value would do. +250 TRS=0 : TLB=0 : FOR I=1 TO N : A=AZ*(I-.5)/N : AA=AZ+(1-AZ)*(I-.5)/N +260 TRS=TRS+1/SQR(OMC+(OMG/A)+(ORDX/(A*A))+(LAM*A*A)) +270 TLB=TLB+1/SQR(OMC+(OMG/AA)+(ORDX/(AA*AA))+(LAM*AA*AA)) : NEXT I +280 AGEFAC=TLB/N*(1-AZ)+TRS/N*AZ +290 IF AH$="H" OR AH$="h" GOTO 310 +300 HN=AGEFAC/TN*HFAC +310 NEXT J +320 TN=AGEFAC/HN*HFAC +330 INPUT "Will you enter (T)ime THEN or (R)edshift of the light we see NOW"; TR$ +340 IF TR$="R" OR TR$="r" GOTO 470 +350 IF TR$<>"T" AND TR$<>"t" GOTO 330 +360 INPUT "Enter Age of the universe THEN, in billions of years"; TTT +370 TTT=TTT*1E+09 : IF TTT>299999 GOTO 410 +380 PRINT +390 PRINT " You cannot see back to a time earlier than about 300,000 years" +392 REM My first article in S&T, Sept. 1997, page 59, explains why. +400 PRINT : GOTO 330 +410 PRINT " Finding what redshift matches Age THEN ......" : Z=(TN-TTT)/TN +420 AZ=1/(1+Z) : TRS=0 : FOR I=1 TO N : A=AZ*(I-.5)/N +430 TRS=TRS+1/SQR(OMC+OMG/A+ORDX/(A*A)+LAM*A*A) : NEXT I +440 TT=TRS/N*HFAC/HN*AZ : TOL=TOL+DELTA +450 IF TT/TTT>1-TOL AND TT/TTT<1+TOL GOTO 480 +452 REM If Time Then (TT) doesn't match yet, adjust Z accordingly +460 Z=Z*(.2+.8*TT/TTT) : GOTO 420 +470 INPUT "Enter redshift value for the light we see NOW"; Z +472 REM Calculate Distances +480 DCMR=0 : AZ=1/(1+Z) : FOR I=1 TO N +490 A=AZ+(1-AZ)*(I-.5)/N : ADOT=SQR(OMC+(OMG/A)+(ORDX/(A*A))+(LAM*A*A)) +500 DCMR=DCMR+1/(A*ADOT) : NEXT I +510 DCMR=(1-AZ)*DCMR/N : X=SQR(ABS(OMC))*DCMR : IF X<=.1 GOTO 550 +520 IF OMC>0 GOTO 540 +530 RATIO=SIN(X)/X : GOTO 580 +540 RATIO=.5*(E^X-E^(-X))/X : GOTO 580 +550 Y=X*X : IF OMC>=0 GOTO 570 +560 Y=(-Y) +570 RATIO=1+Y/6+Y*Y/120 +580 DL=AZ*RATIO*DCMR/(AZ*AZ)*977.82/HN : DN=DL/(1+Z) : DT=DN/(1+Z) +582 REM Calculate Time Then (TT) at redshift Z +590 AZ=1/(1+Z) : AGE=0 : FOR I=1 TO N +600 A=AZ*(I-.5)/N : AGE=AGE+1/SQR(OMC+OMG/A+ORDX/(A*A)+LAM*A*A) : NEXT I +610 TT=HFAC/HN*AZ*AGE/N : TV=TN-TT : DMOD=5*.4343*LOG(DL*1E+09/(10*PARSEC)) +620 IF TT<300000 GOTO 380 +630 HT=HN*SQR(OMG*(1+Z)^3+(1-OMG-LAM-ORDX)*(1+Z)^2+LAM+ORDX*(1+Z)^4) +640 ST=HT*DT/977.82 : SC=Z+1 : SN=HN*DN*1E+09/HFAC +650 PRINT USING "Age Factor NOW (Age=Fac/H0) = ##.####";AGEFAC +660 PRINT USING "Age of the universe NOW =####.#### billion years"; TN/1E+09 +670 PRINT USING "Age of the universe THEN =####.#### billion years"; TT/1E+09 +680 PRINT USING "Light travel time =####.#### billion years"; TV/1E+09 +690 PRINT USING "Redshift of the light we see NOW =#####.###"; Z +700 PRINT USING "Scale of the universe NOW versus THEN =#####.###"; SC +710 PRINT USING "Distance of object THEN = #####.### billion light-years"; DT +720 PRINT USING "Distance of object NOW = ######.### billion light-years"; DN +730 PRINT USING "Luminosity Distance NOW =#######.### billion light-years"; DL +740 PRINT USING "Distance Modulus = ######.###"; DMOD +750 PRINT USING "Speed away from us THEN =####.### x speed of light*"; ST +760 PRINT USING "Speed away from us NOW =####.### x speed of light*"; SN +770 PRINT USING "Hubble constant THEN =########.## km/sec/megaparsec"; HT +780 PRINT USING "Hubble constant NOW =########.## km/sec/megaparsec"; HN +790 PRINT " * Not the object's own speed, but caused by the expansion of space." +800 END +900 REM --------------------------- +910 REM APPEARED IN COMPUTERS IN ASTRONOMY, +920 REM SKY & TELESCOPE, AUGUST 2001, PAGE 62. +930 REM Corrections made Sept. 2003 to lines 232, 550, and 630, with +932 REM many thanks to Bruce Nelson, a great mathematician whose hobby +934 REM is cosmology and who decided to re-derive all these equations! +936 REM The updates give smoother results when OMC is small and more +938 REM accurate results for HT and ST for very large values of Z. +940 REM --------------------------- +950 REM ** SAMPLE RUN, for OmegaM=.35, OmegaL=.65, H0=61, and Z=1.7 ** +960 REM Enter Matter Density of the Universe, OmegaM (0 - 2.0)? .35 +970 REM Enter Cosmological Constant, OmegaL (0. - 1.0)? .65 +980 REM Will you enter (A)ge of the universe or (H)ubble constant? H +990 REM Enter Hubble constant in km/sec/Mpc? 61 +1000 REM Will you enter (T)ime THEN or (R)edshift of the light we see NOW? R +1010 REM Enter redshift value for the light we see NOW? 1.7 +1020 REM Age Factor NOW (Age=Fac/H0) = 0.9226 +1030 REM Age of the universe NOW = 14.7887 billion years +1040 REM Age of the universe THEN = 4.0054 billion years +1050 REM Light travel time = 10.7833 billion years +1060 REM Redshift of the light we see NOW = 1.700 +1070 REM Scale of the universe NOW versus THEN = 2.700 +1080 REM Distance of object THEN = 6.292 billion light-years +1090 REM Distance of object NOW = 16.987 billion light-years +1100 REM Luminosity Distance NOW = 45.865 billion light-years +1110 REM Distance Modulus = 45.741 +1120 REM Speed away from us THEN = 1.078 x speed of light* +1130 REM Speed away from us NOW = 1.060 x speed of light* +1140 REM Hubble constant THEN = 167.55 km/sec/megaparsec +1150 REM Hubble constant NOW = 61.00 km/sec/megaparsec +1160 REM * Not the object's own speed, but caused by the expansion of space. diff --git a/SKYTEL/lookbak2.dif b/SKYTEL/lookbak2.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/lookbak2.run b/SKYTEL/lookbak2.run new file mode 100644 index 0000000..10af56f --- /dev/null +++ b/SKYTEL/lookbak2.run @@ -0,0 +1,22 @@ +Enter Matter Density of the universe, OmegaM (0 - 2.0)? 0.1 +Enter Cosmological Constant, OmegaL (0. - 1.0)? 0.9 +Will you enter (A)ge of the universe or (H)ubble constant? A +Enter Age of the universe NOW in billions of years? 16 +Will you enter (T)ime THEN or (R)edshift of the light we see NOW? T +Enter Age of the universe THEN, in billions of years? 1 + Finding what redshift matches Age THEN ...... +Age Factor NOW (Age=Fac/H0) = 1.2766 +Age of the universe NOW = 16.0000 +Age of the universe THEN = 1.0000 +Light travel time = 15.0000 +Redshift of the light we see NOW = 7.810 +Scale of the universe NOW versus THEN = 8.810 +Distance of object THEN = 4.235 +Distance of object NOW = 37.310 +Luminosity Distance NOW = 328.712 +Distance Modulus = 50.018 +Speed away from us THEN = 2.821 +Speed away from us NOW = 2.977 +Hubble constant THEN = 651.33 +Hubble constant NOW = 78.02 + * Not the object's own speed, but caused by the expansion of space. diff --git a/SKYTEL/lunar.80 b/SKYTEL/lunar.80 new file mode 100644 index 0000000..e13c2ab --- /dev/null +++ b/SKYTEL/lunar.80 @@ -0,0 +1,20 @@ +YEAR ? 2015 + + +ECLIPSE DATE: 2015 4 4 + MAXIMUM PHASE: 12 h 0 m UT + PENUMBRAL MAG: 2.074 + UMBRAL MAG: .994 + SEMIDURATIONS -- + PENUMBRA: 178 m + UMBRA: 104 m + TOTALITY: 0 m + +ECLIPSE DATE: 2015 9 28 + MAXIMUM PHASE: 2 h 46 m UT + PENUMBRAL MAG: 2.228 + UMBRAL MAG: 1.275 + SEMIDURATIONS -- + PENUMBRA: 155 m + UMBRA: 99 m + TOTALITY: 36 m diff --git a/SKYTEL/lunar.INP b/SKYTEL/lunar.INP new file mode 100644 index 0000000..9b3c236 --- /dev/null +++ b/SKYTEL/lunar.INP @@ -0,0 +1 @@ +2015 diff --git a/SKYTEL/lunar.OUT b/SKYTEL/lunar.OUT new file mode 100644 index 0000000..d9e9b14 --- /dev/null +++ b/SKYTEL/lunar.OUT @@ -0,0 +1,20 @@ +YEAR ? 2015 + + +ECLIPSE DATE: 2015 4 4 + MAXIMUM PHASE: 12 h 0 m UT + PENUMBRAL MAG: 2.074 + UMBRAL MAG: .994 + SEMIDURATIONS -- + PENUMBRA: 178 m + UMBRA: 104 m + TOTALITY: 0 m + +ECLIPSE DATE: 2015 9 28 + MAXIMUM PHASE: 2 h 46 m UT + PENUMBRAL MAG: 2.228 + UMBRAL MAG: 1.275 + SEMIDURATIONS -- + PENUMBRA: 155 m + UMBRA: 99 m + TOTALITY: 36 m diff --git a/SKYTEL/lunar.bas b/SKYTEL/lunar.bas new file mode 100644 index 0000000..036324d --- /dev/null +++ b/SKYTEL/lunar.bas @@ -0,0 +1,122 @@ +10 REM NEW AND FULL MOONS +12 REM +14 REM +16 R1=3.14159265/180: U=0 +18 INPUT "YEAR ";Y +19 G=1: IF Y<1583 THEN G=0 +20 PRINT +22 K0=INT((Y-1900)*12.3685) +24 T=(Y-1899.5)/100 +26 T2=T*T: T3=T*T*T +28 J0=2415020+29*K0 +30 F0=0.0001178*T2-0.000000155*T3 +32 F0=F0+0.75933+0.53058868*K0 +34 F0=F0-0.000837*T-0.000335*T2 +36 J0=J0+INT(F0): F0=F0-INT(F0) +38 M0=K0*0.08084821133 +40 M0=360*(M0-INT(M0))+359.2242 +42 M0=M0-0.0000333*T2 +44 M0=M0-0.00000347*T3 +46 M1=K0*0.07171366128 +48 M1=360*(M1-INT(M1))+306.0253 +50 M1=M1+0.0107306*T2 +52 M1=M1+0.00001236*T3 +54 B1=K0*0.08519585128 +56 B1=360*(B1-INT(B1))+21.2964 +58 B1=B1-0.0016528*T2 +60 B1=B1-0.00000239*T3 +62 FOR K9=1 TO 27 STEP 2 +64 J=J0+14*K9: F=F0+0.765294*K9 +66 K=K9/2 +68 M5=(M0+K*29.10535608)*R1 +69 M6=(M1+K*385.81691806)*R1 +70 B6=(B1+K*390.67050646)*R1 +71 F=F-0.4068*SIN(M6) +72 F=F+(0.1734-0.000393*T)*SIN(M5) +73 F=F+0.0161*SIN(2*M6) +74 F=F-0.0104*SIN(2*B6) +75 F=F-0.0074*SIN(M5-M6) +76 F=F-0.0051*SIN(M5+M6) +77 F=F+0.0021*SIN(2*M5) +81 F=F+0.5/1440 +82 J=J+INT(F): F=F-INT(F) +86 GOSUB 100 +92 NEXT +94 GO TO 999 +100 REM LUNAR ECLIPSE SUBROUTINE +102 D7=0 +104 IF ABS(SIN(B6))>0.36 THEN 196 +106 S=5.19595-0.0048*COS(M5) +108 S=S+0.0020*COS(2*M5) +110 S=S-0.3283*COS(M6) +112 S=S-0.0060*COS(M5+M6) +114 S=S+0.0041*COS(M5-M6) +116 C1=0.2070*SIN(M5) +118 C1=C1+0.0024*SIN(2*M5) +120 C1=C1-0.0390*SIN(M6) +122 C1=C1+0.0115*SIN(2*M6) +124 C1=C1-0.0073*SIN(M5+M6) +126 C1=C1-0.0067*SIN(M5-M6) +128 C1=C1+0.0117*SIN(2*B6) +130 D9=ABS(S*SIN(B6)+C1*COS(B6)) +132 U=0.0059+0.0046*COS(M5) +134 U=U-0.0182*COS(M6) +136 U=U+0.0004*COS(2*M6) +138 U=U-0.0005*COS(M5+M6) +140 RP=1.2847+U: RU=0.7404-U +142 MP=(1.5572+U-D9)/0.545 +144 IF MP<0 THEN 196 +146 MU=(1.0129-U-D9)/0.545 +148 D5=1.5572+U: D6=1.0129-U +150 D7=0.4679-U +152 N=(0.5458+0.04*COS(M6))/60 +154 D5=SQR(D5*D5-D9*D9)/N +156 IF MU<=0 THEN 164 +158 D6=SQR(D6*D6-D9*D9)/N +160 IF MU<=1 THEN 164 +162 D7=SQR(D7*D7-D9*D9)/N +164 GOSUB 900: PRINT +166 PRINT "ECLIPSE DATE: ";Y;M;D1 +168 PRINT " MAXIMUM PHASE: "; +170 PRINT H1;"h ";M9;"m UT" +172 MP=INT(1000*MP+0.5)/1000 +174 PRINT " PENUMBRAL MAG: ";MP +176 IF MU<=0 THEN 182 +178 MU=INT(1000*MU+0.5)/1000 +180 PRINT " UMBRAL MAG: ";MU +182 PRINT " SEMIDURATIONS --" +184 D5=INT(D5+0.5): REM ROUND OFF +186 PRINT " PENUMBRA: ";D5;"m" +188 IF MU<0 THEN 196 +190 D6=INT(D6+0.5): D7=INT(D7+0.5) +192 PRINT " UMBRA: ";D6;"m" +194 PRINT " TOTALITY: ";D7;"m" +196 RETURN +900 REM JD --> CALENDAR +905 REM +920 F=F+0.5 +925 IF F<1 THEN 935 +930 F=F-1: J=J+1 +935 IF G=1 THEN 945 +940 A=J: GOTO 955 +945 A1=INT((J/36524.25)-51.12264) +950 A=J+1+A1-INT(A1/4) +955 B=A+1524 +960 C=INT((B/365.25)-0.3343) +965 D=INT(365.25*C) +970 E=INT((B-D)/30.61) +975 D=B-D-INT(30.61*E)+F +980 M=E-1: Y=C-4716 +985 IF E>13.5 THEN M=M-12 +990 IF M<2.5 THEN Y=Y+1 +993 D1=INT(D): H=24*(D-D1) +994 H1=INT(H): M9=INT(60*(H-H1)) +997 RETURN +999 END +1000 REM *********************** +1001 REM THIS IS THE *COMPLETE* +1002 REM PROGRAM FOR PREDICTING +1003 REM LUNAR ECLIPSES (SEE +1004 REM SKY & TELESCOPE, JUNE, +1005 REM 1988, PAGE 640) +1006 REM *********************** diff --git a/SKYTEL/lunar.dif b/SKYTEL/lunar.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/lunar.run b/SKYTEL/lunar.run new file mode 100644 index 0000000..e13c2ab --- /dev/null +++ b/SKYTEL/lunar.run @@ -0,0 +1,20 @@ +YEAR ? 2015 + + +ECLIPSE DATE: 2015 4 4 + MAXIMUM PHASE: 12 h 0 m UT + PENUMBRAL MAG: 2.074 + UMBRAL MAG: .994 + SEMIDURATIONS -- + PENUMBRA: 178 m + UMBRA: 104 m + TOTALITY: 0 m + +ECLIPSE DATE: 2015 9 28 + MAXIMUM PHASE: 2 h 46 m UT + PENUMBRAL MAG: 2.228 + UMBRAL MAG: 1.275 + SEMIDURATIONS -- + PENUMBRA: 155 m + UMBRA: 99 m + TOTALITY: 36 m diff --git a/SKYTEL/mallam.80 b/SKYTEL/mallam.80 new file mode 100644 index 0000000..24fd8e9 --- /dev/null +++ b/SKYTEL/mallam.80 @@ -0,0 +1,8 @@ +Planet's name? MARS +Altitude of the satellite orbit (km)? 987 +Inclination to the equator (degrees)? 65 +Precession of the node: + -2.63238 deg/day, -961.457 deg/yr + +Precession of pericenter: + -.333142 deg/day, -121.677 deg/yr diff --git a/SKYTEL/mallam.INP b/SKYTEL/mallam.INP new file mode 100644 index 0000000..a96b328 --- /dev/null +++ b/SKYTEL/mallam.INP @@ -0,0 +1,3 @@ +MARS +987 +65 diff --git a/SKYTEL/mallam.OUT b/SKYTEL/mallam.OUT new file mode 100644 index 0000000..1e5a60c --- /dev/null +++ b/SKYTEL/mallam.OUT @@ -0,0 +1,8 @@ +Planet's name? MARS +Altitude of the satellite orbit (km)? 987 +Inclination to the equator (degrees)? 65 +Precession of the node: + -2.63238 deg/day, -961.457 deg/yr + +Precession of pericenter: + -.333142 deg/day, -121.677 deg/yr diff --git a/SKYTEL/mallam.bas b/SKYTEL/mallam.bas new file mode 100644 index 0000000..87fa3a0 --- /dev/null +++ b/SKYTEL/mallam.bas @@ -0,0 +1,56 @@ +10 REM PRECESSION OF A SATELLITE'S ORBIT DUE TO J2 +20 REM +30 GOSUB 260: J=0 +40 INPUT "Planet's name"; P$ +50 FOR K=1 TO 9 +60 IF P$=PL$(K) THEN J=K +70 NEXT +80 IF J=0 THEN 40 +90 REM +100 INPUT "Altitude of the satellite orbit (km)"; A +110 INPUT "Inclination to the equator (degrees)"; I +120 I=I/RD: REM Convert to radians +130 REM +140 K1=R(J)*R(J) * (R(J)+A)^(-3.5) * SQR(GM(J)) +150 N=-1.5*K1*J2(J)*COS(I) +160 P=.75*K1*J2(J) * (5*COS(I)*COS(I)-1) +170 N=N*RD*S: P=P*RD*S: REM Radians/sec to deg/day +180 REM +190 PRINT "Precession of the node: " +200 PRINT " ";N;"deg/day, ";N*Y;"deg/yr" +210 PRINT +220 PRINT "Precession of pericenter: " +230 PRINT " ";P;"deg/day, ";P*Y;"deg/yr" +240 REM +250 END +260 REM READ IN DATA +270 DIM PL$(9), GM(9), J2(9), R(9) +280 RD=180/3.14159265#: REM Radians to degrees +290 Y=365.2422: REM Days per year +300 S=86400: REM Seconds per day +310 REM +320 DATA "MERCURY","VENUS","EARTH","MOON","MARS" +330 DATA "JUPITER","SATURN","URANUS","NEPTUNE" +340 FOR J=1 TO 9: READ PL$(J): NEXT +350 REM +360 REM PLANETARY GM'S (KM^3/S^2) +370 DATA 22032, 324860, 398600, 4902, 42828 +380 DATA 125680000, 37931000, 5793900, 6835000 +390 FOR J=1 TO 9: READ GM(J): NEXT +400 REM +410 REM PLANETARY J2'S +420 DATA 0.00006, 0.0000186, 0.001083, 0.0002027 +430 DATA 0.00196,0.014736,0.016480,0.003345,0.0043 +440 FOR J=1 TO 9: READ J2(J): NEXT +450 REM +460 REM PLANETARY RADII (KM) +470 DATA 2440, 6050, 6378, 1738, 3398 +480 DATA 71492, 60268, 25559, 24760 +490 FOR J=1 TO 9: READ R(J): NEXT +500 RETURN +510 REM +520 REM This program by Anthony Mallama predicts how +530 REM a satellite in a low orbit around the Earth +540 REM or any other planet will change due to the +550 REM planet's equatorial bulge. It is described +560 REM fully in Sky & Telescope, May, 1990, page 543. diff --git a/SKYTEL/mallam.dif b/SKYTEL/mallam.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/mallam.run b/SKYTEL/mallam.run new file mode 100644 index 0000000..24fd8e9 --- /dev/null +++ b/SKYTEL/mallam.run @@ -0,0 +1,8 @@ +Planet's name? MARS +Altitude of the satellite orbit (km)? 987 +Inclination to the equator (degrees)? 65 +Precession of the node: + -2.63238 deg/day, -961.457 deg/yr + +Precession of pericenter: + -.333142 deg/day, -121.677 deg/yr diff --git a/SKYTEL/mars.80 b/SKYTEL/mars.80 new file mode 100644 index 0000000..3b8f1af --- /dev/null +++ b/SKYTEL/mars.80 @@ -0,0 +1,9 @@ +YR,MO,DAY ? 2015,03,01 +UT (H,M,S) ? 12,34,56 + +Central meridian: 354.05 +P.A. of axis: 329.72 +Decl. of Earth: -25.36 +Angular diameter: 4.2 +Phase: 0.975 +Magnitude: 1.3 diff --git a/SKYTEL/mars.INP b/SKYTEL/mars.INP new file mode 100644 index 0000000..8df3b33 --- /dev/null +++ b/SKYTEL/mars.INP @@ -0,0 +1,2 @@ +2015,03,01 +12,34,56 diff --git a/SKYTEL/mars.OUT b/SKYTEL/mars.OUT new file mode 100644 index 0000000..c4fb451 --- /dev/null +++ b/SKYTEL/mars.OUT @@ -0,0 +1,9 @@ +YR,MO,DAY ? 2015,03,01 +UT (H,M,S) ? 12,34,56 + +Central meridian: 354.05 +P.A. of axis: 329.72 +Decl. of Earth: -25.36 +Angular diameter: 4.2 +Phase: 0.975 +Magnitude: 1.3 diff --git a/SKYTEL/mars.bas b/SKYTEL/mars.bas new file mode 100644 index 0000000..c795691 --- /dev/null +++ b/SKYTEL/mars.bas @@ -0,0 +1,173 @@ +100 REM PHYSICAL EPHEMERIS OF MARS +105 REM +106 DEFDBL A-Z +110 DT=57: REM Value of ET-UT (sec) +111 REM in 1990; change DT for +112 REM other years as needed!! +115 P1=3.14159265# +120 P2=2*P1: RD=180/P1: DR=1/RD +125 GOSUB 330: REM Get date and UT +130 D=(J-2451545!)+F +135 D=D+DT/86400!: REM UT to ET +140 GOSUB 405: PRINT +145 READ A1,A2,D1,D2 +150 T=T-1: REM Cent from 2000.0 +155 A1=A1+A2*T +160 D1=D1+D2*T +165 Q=A1: GOSUB 710: A1=Q*DR +170 Q=D1: GOSUB 710: D1=Q*DR +175 D9=COS(D5)*SIN(A1-A5) +180 N9=SIN(D1)*COS(D5)*COS(A1-A5) +185 N9=N9-COS(D1)*SIN(D5) +190 K=RD*ATN(N9/D9) +195 IF D9<0 THEN K=K+180 +205 READ W0,W1,W2: GOSUB 304 +215 REM +220 REM Planetocentric decl. Earth +222 SD=-SIN(D1)*SIN(D5) +224 SD=SD-COS(D1)*COS(D5)*COS(A1-A5) +226 DE=RD*ATN(SD/SQR(1-SD*SD)) +228 REM +230 REM P.A. of Axis +232 SP=COS(D1)*SIN(A1-A5) +234 CP=SIN(D1)*COS(D5) +236 CP=CP-COS(D1)*SIN(D5)*COS(A1-A5) +238 PA=RD*ATN(SP/CP) +240 IF CP<0 THEN PA=PA+180 +242 IF PA<0 THEN PA=PA+360 +244 IF PA>=360 THEN PA=PA-360 +248 REM +250 REM Phase and magnitude +252 K4=((R4+RR)^2-R*R)/(4*R4*RR) +254 CI=(R4*R4+RR*RR-R*R)/(2*R4*RR) +256 I=RD*ATN(SQR(1-CI*CI)/CI) +258 M4=5*LOG(RR*R4)/LOG(10) +260 M4=-1.52+.016*I+M4 +262 REM +270 A1$="Central meridian: ###.##" +272 A2$="P.A. of axis: ###.##" +274 A3$="Decl. of Earth: ###.##" +276 A4$="Angular diameter: ###.#" +278 A5$="Phase: ###.###" +280 A6$="Magnitude: ###.#" +282 PRINT USING A1$;C +284 PRINT USING A2$;PA +286 PRINT USING A3$;DE +288 PRINT USING A4$;9.359999/RR +290 PRINT USING A5$;K4 +292 PRINT USING A6$;M4 +300 END +304 REM Rotations from epoch +305 W=W0+W1*(D-.0057755*RR)+W2*T +306 Q=W-K: GOSUB 710: C=Q +308 RETURN +309 REM North Pole R.A. +310 DATA 317.681, +0.678 +311 REM North Pole Dec. +312 DATA 52.886, +0.352 +313 REM Rotation +314 DATA 176.655,350.8919830,0.62 +315 REM +320 REM Calendar --> JD +325 REM +330 INPUT "YR,MO,DAY ";Y,M,D +335 INPUT "UT (H,M,S) ";H1,M1,S1 +340 D=D+H1/24+M1/1440+S1/86400! +345 G=1: IF Y<1582 THEN G=0 +350 D1=INT(D): F=D-D1-.5 +355 J=-INT(7*(INT((M+9)/12)+Y)/4) +360 IF G=0 THEN 380 +365 S=SGN(M-9): A=ABS(M-9) +370 J3=INT(Y+S*INT(A/7)) +375 J3=-INT((INT(J3/100)+1)*3/4) +380 J=J+INT(275*M/9)+D1+G*J3 +385 J=J+1721027!+2*G+367*Y +390 IF F>=0 THEN 400 +395 F=F+1: J=J-1 +400 RETURN +405 REM Fundamental Arguments +410 REM +415 T=D/36525!+1 +420 REM T=Centuries from 1900.0 +425 L0=.779072+.00273790931#*D +430 G0=.993126+.0027377785#*D +431 L4=.987353+.00145575328#*D +432 G4=.053856+.00145561327#*D +433 F4=.849694+.00145569465#*D +435 L5=.089608+.00023080893#*D +440 G5=.056531+.00023080893#*D +445 G6=.882987+9.294371E-05*D +450 L0=(L0-INT(L0))*P2 +455 G0=(G0-INT(G0))*P2 +456 L4=(L4-INT(L4))*P2 +457 G4=(G4-INT(G4))*P2 +458 F4=(F4-INT(F4))*P2 +460 L5=(L5-INT(L5))*P2 +465 G5=(G5-INT(G5))*P2 +470 G6=(G6-INT(G6))*P2 +475 REM Sun +480 L=6910*SIN(G0) +485 L=L+72*SIN(2*G0) +490 L=L-17*T*SIN(G0) +495 L=L-7*COS(G0-G5) +500 R=1.00014-.01675*COS(G0) +505 R=R-.00014*COS(2*G0) +510 L=L0+L/206265! +515 REM Mars +520 M=38451!*SIN(G4) +525 M=M+2238*SIN(2*G4) +530 M=M+181*SIN(3*G4) +535 M=M-52*SIN(2*F4) +540 M=M+37*T*SIN(G4) +545 M=M-22*COS(G4-2*G5) +550 M=M-19*SIN(G4-G5) +555 M=M+17*COS(G4-G5) +556 M=M+17*SIN(4*G4) +557 M=M-16*COS(2*G4-2*G5) +558 M=M+13*COS(G0-2*G4) +559 M=M-10*SIN(G4-2*F4) +560 M=M+7*COS(G0-G4) +561 M=M-7*COS(2*G0-3*G4) +564 B=6603*SIN(F4) +565 B=B+622*SIN(G4-F4) +570 B=B+615*SIN(G4+F4) +575 B=B+64*SIN(2*G4+F4) +580 R4=1.53031-.1417*COS(G4) +585 R4=R4-.0066*COS(2*G4) +590 R4=R4-.00047*COS(3*G4) +615 L4=L4+M/206265!: B4=B/206265! +620 N9=R4*COS(B4)*SIN(L4-L) +625 D9=R4*COS(B4)*COS(L4-L)+R +630 L1=ATN(N9/D9) +635 IF D9<0 THEN L1=L1+P1 +640 LL=L1+L +645 V=N9*N9+D9*D9 +650 RR=SQR(V+(R4*SIN(B4))^2) +655 S=R4*SIN(B4)/RR +660 BB=ATN(S/SQR(1-S*S)) +665 E=(84428!-47*T)/206265! +670 N9=SIN(LL)*COS(E)-TAN(BB)*SIN(E) +675 D9=COS(LL): A5=ATN(N9/D9) +680 IF D9<0 THEN A5=A5+P1 +685 S=SIN(BB)*COS(E) +690 S=S+COS(BB)*SIN(E)*SIN(LL) +695 D5=ATN(S/SQR(1-S*S)) +700 RETURN +705 REM +710 REM Normalize Degrees +715 Q=Q/360: Q=Q-INT(Q): Q=Q*360 +720 RETURN +800 REM This program computes +810 REM a number of interesting +811 REM things about Mars' tele- +812 REM scopic appearance at any +813 REM date and time (UT). Valid +814 REM for several centuries, pro- +815 REM vided that you reset +816 REM the value of 'Delta-T' in +817 REM line 110 to an appropriate +818 REM value. Written by Roger +819 REM Sinnott, this program is +820 REM explained more fully in +821 REM Sky & Telescope magazine +822 REM for Sept. 1990, page 296. diff --git a/SKYTEL/mars.dif b/SKYTEL/mars.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/mars.run b/SKYTEL/mars.run new file mode 100644 index 0000000..3b8f1af --- /dev/null +++ b/SKYTEL/mars.run @@ -0,0 +1,9 @@ +YR,MO,DAY ? 2015,03,01 +UT (H,M,S) ? 12,34,56 + +Central meridian: 354.05 +P.A. of axis: 329.72 +Decl. of Earth: -25.36 +Angular diameter: 4.2 +Phase: 0.975 +Magnitude: 1.3 diff --git a/SKYTEL/meteor.80 b/SKYTEL/meteor.80 new file mode 100644 index 0000000..0fd52e9 --- /dev/null +++ b/SKYTEL/meteor.80 @@ -0,0 +1,9 @@ + +INITIAL MASS (KG)? 987 +DENSITY (KG PER CUBIC METER)? 65.43 +SPEED AT ENTRY (KM/S)? 2109 +ZENITH ANGLE (DEG)? 87.65 + + TIME HEIGHT SPEED DECEL MASS VISUAL + (S) (KM) (KM/S) (M/S/S) (%) MAG + .1 140.4 2108.9 71 5.03 -24.7 diff --git a/SKYTEL/meteor.INP b/SKYTEL/meteor.INP new file mode 100644 index 0000000..638a86c --- /dev/null +++ b/SKYTEL/meteor.INP @@ -0,0 +1,4 @@ +987 +65.43 +2109 +87.65 diff --git a/SKYTEL/meteor.OUT b/SKYTEL/meteor.OUT new file mode 100644 index 0000000..fd8c579 --- /dev/null +++ b/SKYTEL/meteor.OUT @@ -0,0 +1,9 @@ + +INITIAL MASS (KG)? 987 +DENSITY (KG PER CUBIC METER)? 65.43 +SPEED AT ENTRY (KM/S)? 2109 +ZENITH ANGLE (DEG)? 87.65 + + TIME HEIGHT SPEED DECEL MASS VISUAL + (S) (KM) (KM/S) (M/S/S) (%) MAG + .1 140.4 2108.9 71 5.03 -24.7 diff --git a/SKYTEL/meteor.bas b/SKYTEL/meteor.bas new file mode 100644 index 0000000..372c55b --- /dev/null +++ b/SKYTEL/meteor.bas @@ -0,0 +1,36 @@ +10 REM METEOR FLIGHT +12 PRINT +14 INPUT "INITIAL MASS (KG)";MM +16 INPUT "DENSITY (KG PER CUBIC METER)";D +18 INPUT "SPEED AT ENTRY (KM/S)";V +20 INPUT "ZENITH ANGLE (DEG)";Z +22 A=1: L=0.001: G=0.75: H0=0.2: H1=500000 +24 H=150000: T=0: T9=0.01: T0=0: T1=0.1 +26 M=MM: Z=COS(Z*3.1416/180): V=V*1000 +28 PRINT: GOSUB 64 +30 R=EXP(-H/6500): IF H<=130000 THEN GOTO 34 +32 R=2E-9*EXP(-(H-130000)/40000) +34 A2=G*A*R*V*V/((M^0.33333)*(D^0.66667)) +36 M0=H0*A*R*V*V*V*((M/D)^0.66667)/(2*H1) +38 V9=A2*T9: M9=M0*T9: T=T+T9: H=H-V*T9*Z +40 V=V-V9: M=M-M9 +42 IF V<100 OR M<0 OR H<0 THEN GOTO 82 +44 IF M0/M<0.1 AND T0=0 THEN GOTO 30 +46 IF (T-T0)=12 THEN MM=MM-12 +70 K1=INT(365.25*(YY+4712)) +80 K2=INT(30.6*MM+.5) +90 K3=INT(INT((YY/100)+49)*.75)-38 +100 J=K1+K2+D+59: ' JD for dates in Julian calendar +110 IF J>2299160 THEN J=J-K3: ' For Gregorian calendar +120 ' J is the Julian date at 12h UT on day in question +130 ' +140 ' Calculate illumination (synodic) phase +150 V=(J-2451550.1 )/29.530588853 : GOSUB 400: IPX=V +160 AG=IPX*29.53: ' Moon's age in days +170 IPX=IPX*P2: ' Convert phase to radians +180 ' +190 ' Calculate distance from anomalistic phase +200 V=(J-2451562.2 )/27.55454988 : GOSUB 400: DP=V +210 DP=DP*P2: ' Convert to radians +220 DI=60.4-3.3*COS(DP)-.6*COS(2*IPX-DP)-.5*COS(2*IPX) +230 ' +240 ' Calculate latitude from nodal (draconic) phase +250 V=(J-2451565.2 )/27.212220817 : GOSUB 400: NP=V +260 NP=NP*P2: ' Convert to radians +270 LA=5.1*SIN(NP) +280 ' +290 ' Calculate longitude from sidereal motion +300 V=(J-2451555.8 )/27.321582241 : GOSUB 400: RP=V +310 LO=360*RP+6.3*SIN(DP)+1.3*SIN(2*IPX-DP)+.7*SIN(2*IPX) +320 ' +330 PRINT "Moon's age from new (days): ";AG +340 PRINT "Distance (Earth radii): ";DI +350 PRINT "Ecliptic latitude (degrees): ";LA +360 PRINT "Ecliptic longitude (degrees): ";LO +370 PRINT: INPUT "Continue (y or n)";Q$ +380 IF Q$<>"N" AND Q$<>"n" THEN GOTO 40 +390 END +400 ' Normalize values to range 0 to 1 +410 V=V-INT(V): IF V<0 THEN V=V+1 +420 RETURN +430 ' +440 ' This program helps anyone who needs to know the Moon's +450 ' phase (age), distance, and position along the ecliptic on +460 ' any date within several thousand years in the past or future. +470 ' To illustrate its application, Bradley Schaefer applied it +480 ' to a number of famous events influenced by the Moon in +490 ' World War II. His article appeared in Sky & Telescope for +500 ' April 1994, page 86. + \ No newline at end of file diff --git a/SKYTEL/moonfx.dif b/SKYTEL/moonfx.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/moonfx.run b/SKYTEL/moonfx.run new file mode 100644 index 0000000..caff243 --- /dev/null +++ b/SKYTEL/moonfx.run @@ -0,0 +1,7 @@ +Year, month, day? 2015,03,01 +Moon's age from new (days): 10.6797 +Distance (Earth radii): 62.9648 +Ecliptic latitude (degrees): -5.06297 +Ecliptic longitude (degrees): 113.748 + +Continue (y or n)? n diff --git a/SKYTEL/moons.80 b/SKYTEL/moons.80 new file mode 100644 index 0000000..7a1be2d --- /dev/null +++ b/SKYTEL/moons.80 @@ -0,0 +1,31 @@ +YEAR ? 2015 + + NEW MOON 2.45701E+6 .566477 +FULL MOON 2.45703E+6 .703339 + NEW MOON 2.45704E+6 5.11149E-2 +FULL MOON 2.45706E+6 .465169 + NEW MOON 2.45707E+6 .490342 +FULL MOON 2.45709E+6 .252979 + NEW MOON 2.4571E+6 .899635 +FULL MOON 2.45712E+6 2.10313E-3 + NEW MOON 2.45713E+6 .290326 +FULL MOON 2.45715E+6 .654318 + NEW MOON 2.45716E+6 .67698 +FULL MOON 2.45718E+6 .181986 + NEW MOON 2.45719E+6 8.68665E-2 +FULL MOON 2.4572E+6 .598315 + NEW MOON 2.45722E+6 .55781 +FULL MOON 2.45723E+6 .946217 + NEW MOON 2.45725E+6 .120929 +FULL MOON 2.45726E+6 .274565 + NEW MOON 2.45728E+6 .779877 +FULL MOON 2.45729E+6 .61981 + NEW MOON 2.45731E+6 .503566 +FULL MOON 2.45732E+6 4.23133E-3 + NEW MOON 2.45734E+6 .239214 +FULL MOON 2.45735E+6 .445782 + NEW MOON 2.45737E+6 .936132 +FULL MOON 2.45738E+6 .96412 + NEW MOON 2.4574E+6 .563102 +FULL MOON 2.45741E+6 .572861 + NEW MOON 2.45743E+6 .109838 diff --git a/SKYTEL/moons.INP b/SKYTEL/moons.INP new file mode 100644 index 0000000..9b3c236 --- /dev/null +++ b/SKYTEL/moons.INP @@ -0,0 +1 @@ +2015 diff --git a/SKYTEL/moons.OUT b/SKYTEL/moons.OUT new file mode 100644 index 0000000..d010e17 --- /dev/null +++ b/SKYTEL/moons.OUT @@ -0,0 +1,31 @@ +YEAR ? 2015 + + NEW MOON 2.45701E+6 .566477 +FULL MOON 2.45703E+6 .703339 + NEW MOON 2.45704E+6 5.11149E-2 +FULL MOON 2.45706E+6 .465169 + NEW MOON 2.45707E+6 .490342 +FULL MOON 2.45709E+6 .252979 + NEW MOON 2.4571E+6 .899635 +FULL MOON 2.45712E+6 2.10313E-3 + NEW MOON 2.45713E+6 .290326 +FULL MOON 2.45715E+6 .654318 + NEW MOON 2.45716E+6 .67698 +FULL MOON 2.45718E+6 .181986 + NEW MOON 2.45719E+6 8.68665E-2 +FULL MOON 2.4572E+6 .598315 + NEW MOON 2.45722E+6 .55781 +FULL MOON 2.45723E+6 .946217 + NEW MOON 2.45725E+6 .120929 +FULL MOON 2.45726E+6 .274565 + NEW MOON 2.45728E+6 .779877 +FULL MOON 2.45729E+6 .61981 + NEW MOON 2.45731E+6 .503566 +FULL MOON 2.45732E+6 4.23133E-3 + NEW MOON 2.45734E+6 .239214 +FULL MOON 2.45735E+6 .445782 + NEW MOON 2.45737E+6 .936132 +FULL MOON 2.45738E+6 .96412 + NEW MOON 2.4574E+6 .563102 +FULL MOON 2.45741E+6 .572861 + NEW MOON 2.45743E+6 .109838 diff --git a/SKYTEL/moons.bas b/SKYTEL/moons.bas new file mode 100644 index 0000000..50f7f25 --- /dev/null +++ b/SKYTEL/moons.bas @@ -0,0 +1,52 @@ +10 REM NEW AND FULL MOONS +12 REM +14 REM +16 R1=3.14159265/180: U=0 +18 INPUT "YEAR ";Y +20 PRINT +22 K0=INT((Y-1900)*12.3685) +24 T=(Y-1899.5)/100 +26 T2=T*T: T3=T*T*T +28 J0=2415020+29*K0 +30 F0=0.0001178*T2-0.000000155*T3 +32 F0=F0+0.75933+0.53058868*K0 +34 F0=F0-0.000837*T-0.000335*T2 +36 J=J+INT(F): F=F-INT(F) +38 M0=K0*0.08084821133 +40 M0=360*(M0-INT(M0))+359.2242 +42 M0=M0-0.0000333*T2 +44 M0=M0-0.00000347*T3 +46 M1=K0*0.07171366128 +48 M1=360*(M1-INT(M1))+306.0253 +50 M1=M1+0.0107306*T2 +52 M1=M1+0.00001236*T3 +54 B1=K0*0.08519585128 +56 B1=360*(B1-INT(B1))+21.2964 +58 B1=B1-0.0016528*T2 +60 B1=B1-0.00000239*T3 +62 FOR K9=0 TO 28 +64 J=J0+14*K9: F=F0+0.765294*K9 +66 K=K9/2 +68 M5=(M0+K*29.10535608)*R1 +69 M6=(M1+K*385.81691806)*R1 +70 B6=(B1+K*390.67050646)*R1 +71 F=F-0.4068*SIN(M6) +72 F=F+(0.1734-0.000393*T)*SIN(M5) +73 F=F+0.0161*SIN(2*M6) +74 F=F+0.0104*SIN(2*B6) +75 F=F-0.0074*SIN(M5-M6) +76 F=F-0.0051*SIN(M5+M6) +77 F=F+0.0021*SIN(2*M5) +78 F=F+0.0010*SIN(2*B6-M6) +82 J=J+INT(F): F=F-INT(F) +84 IF U=0 THEN PRINT " NEW MOON "; +86 IF U=1 THEN PRINT "FULL MOON "; +88 PRINT J;F +90 U=U+1: IF U=2 THEN U=0 +92 NEXT +94 END +95 REM ------------------------ +96 REM APPEARED IN ASTRONOMICAL +97 REM COMPUTING, SKY & TELE- +98 REM SCOPE, MARCH, 1985 +99 REM ------------------------ diff --git a/SKYTEL/moons.dif b/SKYTEL/moons.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/moons.run b/SKYTEL/moons.run new file mode 100644 index 0000000..7a1be2d --- /dev/null +++ b/SKYTEL/moons.run @@ -0,0 +1,31 @@ +YEAR ? 2015 + + NEW MOON 2.45701E+6 .566477 +FULL MOON 2.45703E+6 .703339 + NEW MOON 2.45704E+6 5.11149E-2 +FULL MOON 2.45706E+6 .465169 + NEW MOON 2.45707E+6 .490342 +FULL MOON 2.45709E+6 .252979 + NEW MOON 2.4571E+6 .899635 +FULL MOON 2.45712E+6 2.10313E-3 + NEW MOON 2.45713E+6 .290326 +FULL MOON 2.45715E+6 .654318 + NEW MOON 2.45716E+6 .67698 +FULL MOON 2.45718E+6 .181986 + NEW MOON 2.45719E+6 8.68665E-2 +FULL MOON 2.4572E+6 .598315 + NEW MOON 2.45722E+6 .55781 +FULL MOON 2.45723E+6 .946217 + NEW MOON 2.45725E+6 .120929 +FULL MOON 2.45726E+6 .274565 + NEW MOON 2.45728E+6 .779877 +FULL MOON 2.45729E+6 .61981 + NEW MOON 2.45731E+6 .503566 +FULL MOON 2.45732E+6 4.23133E-3 + NEW MOON 2.45734E+6 .239214 +FULL MOON 2.45735E+6 .445782 + NEW MOON 2.45737E+6 .936132 +FULL MOON 2.45738E+6 .96412 + NEW MOON 2.4574E+6 .563102 +FULL MOON 2.45741E+6 .572861 + NEW MOON 2.45743E+6 .109838 diff --git a/SKYTEL/moonup.80 b/SKYTEL/moonup.80 new file mode 100644 index 0000000..45df6ab --- /dev/null +++ b/SKYTEL/moonup.80 @@ -0,0 +1,6 @@ +LAT, LONG (DEG)? 123,145 +TIME ZONE (HRS)? 6 +Y,M,D ? 2015,03,01 + +MOONSET AT 1: 4, AZ 121.5 +MOONRISE AT 9:48, AZ 239.8 diff --git a/SKYTEL/moonup.INP b/SKYTEL/moonup.INP new file mode 100644 index 0000000..7af8670 --- /dev/null +++ b/SKYTEL/moonup.INP @@ -0,0 +1,3 @@ +123,145 +6 +2015,03,01 diff --git a/SKYTEL/moonup.OUT b/SKYTEL/moonup.OUT new file mode 100644 index 0000000..9618911 --- /dev/null +++ b/SKYTEL/moonup.OUT @@ -0,0 +1,6 @@ +LAT, LONG (DEG)? 123,145 +TIME ZONE (HRS)? 6 +Y,M,D ? 2015,03,01 + +MOONSET AT 1: 4, AZ 121.5 +MOONRISE AT 9:48, AZ 239.8 diff --git a/SKYTEL/moonup.bas b/SKYTEL/moonup.bas new file mode 100644 index 0000000..bc30850 --- /dev/null +++ b/SKYTEL/moonup.bas @@ -0,0 +1,171 @@ +10 REM MOONRISE-MOONSET +15 GOSUB 170 +20 INPUT "LAT, LONG (DEG)";B5,L5 +25 INPUT "TIME ZONE (HRS)";H +30 L5=L5/360: Z0=H/24 +35 GOSUB 760: T=(J-2451545)+F +40 GOSUB 245: T=T+Z0 +45 REM +50 REM POSITION LOOP +55 FOR I=1 TO 3 +60 GOSUB 495: MM(I,1)=A5 +65 MM(I,2)=D5: MM(I,3)=R5: T=T+0.5 +70 NEXT +75 IF MM(2,1)>MM(1,1) THEN 85 +80 MM(2,1)=MM(2,1)+P2 +85 IF MM(3,1)>MM(2,1) THEN 95 +90 MM(3,1)=MM(3,1)+P2 +95 Z1=R1*(90.567-41.685/MM(2,3)) +100 S=SIN(B5*R1): C=COS(B5*R1) +105 Z=COS(Z1): M8=0: W8=0: PRINT +110 A0=MM(1,1): D0=MM(1,2) +115 FOR C0=0 TO 23 +120 P=(C0+1)/24 +125 F0=MM(1,1):F1=MM(2,1):F2=MM(3,1) +130 GOSUB 225: A2=F +135 F0=MM(1,2):F1=MM(2,2):F2=MM(3,2) +140 GOSUB 225: D2=F +145 GOSUB 285: A0=A2:D0=D2:V0=V2 +150 NEXT +155 GOSUB 450: REM SPECIAL MSG? +160 END +165 REM +170 REM CONSTANTS +175 DIM MM(3,3) +180 P1=3.14159265: P2=2*P1 +185 R1=P1/180: K1=15*R1*1.0027379 +190 S$="MOONSET AT " +195 R$="MOONRISE AT " +200 M1$="NO MOONRISE THIS DATE" +205 M2$="NO MOONSET THIS DATE" +210 M3$="MOON DOWN ALL DAY" +215 M4$="MOON UP ALL DAY" +220 RETURN +225 REM 3-POINT INTERPOLATION +230 A=F1-F0: B=F2-F1-A +235 F=F0+P*(2*A+B*(2*P-1)) +240 RETURN +245 REM LST AT 0H ZONE TIME +250 T0=T/36525 +255 S=24110.5+8640184.813*T0 +260 S=S+86636.6*Z0+86400*L5 +265 S=S/86400: S=S-INT(S) +270 T0=S*360*R1 +275 RETURN +280 REM +285 REM TEST AN HOUR FOR AN EVENT +290 L0=T0+C0*K1: L2=L0+K1 +295 IF A20 THEN 325 +320 V0=S*SIN(D0)+C*COS(D0)*COS(H0)-Z +325 V2=S*SIN(D2)+C*COS(D2)*COS(H2)-Z +330 IF SGN(V0)=SGN(V2) THEN 440 +335 V1=S*SIN(D1)+C*COS(D1)*COS(H1)-Z +340 A=2*V2-4*V1+2*V0: B=4*V1-3*V0-V2 +345 D=B*B-4*A*V0: IF D<0 THEN 440 +350 D=SQR(D) +355 IF V0<0 AND V2>0 THEN PRINT R$; +360 IF V0<0 AND V2>0 THEN M8=1 +365 IF V0>0 AND V2<0 THEN PRINT S$; +370 IF V0>0 AND V2<0 THEN W8=1 +375 E=(-B+D)/(2*A) +380 IF E>1 OR E<0 THEN E=(-B-D)/(2*A) +385 T3=C0+E+1/120: REM ROUND OFF +390 H3=INT(T3): M3=INT((T3-H3)*60) +395 PRINT USING "##:##";H3;M3; +400 H7=H0+E*(H2-H0) +405 N7=-COS(D1)*SIN(H7) +410 D7=C*SIN(D1)-S*COS(D1)*COS(H7) +415 A7=ATN(N7/D7)/R1 +420 IF D7<0 THEN A7=A7+180 +425 IF A7<0 THEN A7=A7+360 +430 IF A7>360 THEN A7=A7-360 +435 PRINT USING ", AZ ###.#";A7 +440 RETURN +445 REM +450 REM SPECIAL MESSAGE ROUTINE +455 IF M8=0 AND W8=0 THEN 475 +460 IF M8=0 THEN PRINT M1$ +465 IF W8=0 THEN PRINT M2$ +470 GOTO 485 +475 IF V2<0 THEN PRINT M3$ +480 IF V2>0 THEN PRINT M4$ +485 RETURN +490 REM +495 REM FUNDAMENTAL ARGUMENTS +500 L=0.606434+0.03660110129*T +505 M=0.374897+0.03629164709*T +510 F=0.259091+0.03674819520*T +515 D=0.827362+0.03386319198*T +520 N=0.347343-0.00014709391*T +525 G=0.993126+0.00273777850*T +530 L=L-INT(L): M=M-INT(M) +535 F=F-INT(F): D=D-INT(D) +540 N=N-INT(N): G=G-INT(G) +545 L=L*P2: M=M*P2: F=F*P2 +550 D=D*P2: N=N*P2: G=G*P2 +555 V=0.39558*SIN(F+N) +560 V=V+0.08200*SIN(F) +565 V=V+0.03257*SIN(M-F-N) +570 V=V+0.01092*SIN(M+F+N) +575 V=V+0.00666*SIN(M-F) +580 V=V-0.00644*SIN(M+F-2*D+N) +585 V=V-0.00331*SIN(F-2*D+N) +590 V=V-0.00304*SIN(F-2*D) +595 V=V-0.00240*SIN(M-F-2*D-N) +600 V=V+0.00226*SIN(M+F) +605 V=V-0.00108*SIN(M+F-2*D) +610 V=V-0.00079*SIN(F-N) +615 V=V+0.00078*SIN(F+2*D+N) +620 U=1-0.10828*COS(M) +625 U=U-0.01880*COS(M-2*D) +630 U=U-0.01479*COS(2*D) +635 U=U+0.00181*COS(2*M-2*D) +640 U=U-0.00147*COS(2*M) +645 U=U-0.00105*COS(2*D-G) +650 U=U-0.00075*COS(M-2*D+G) +655 W=0.10478*SIN(M) +660 W=W-0.04105*SIN(2*F+2*N) +665 W=W-0.02130*SIN(M-2*D) +670 W=W-0.01779*SIN(2*F+N) +675 W=W+0.01774*SIN(N) +680 W=W+0.00987*SIN(2*D) +685 W=W-0.00338*SIN(M-2*F-2*N) +690 W=W-0.00309*SIN(G) +695 W=W-0.00190*SIN(2*F) +700 W=W-0.00144*SIN(M+N) +705 W=W-0.00144*SIN(M-2*F-N) +710 W=W-0.00113*SIN(M+2*F+2*N) +715 W=W-0.00094*SIN(M-2*D+G) +720 W=W-0.00092*SIN(2*M-2*D) +725 REM +730 REM COMPUTE RA, DEC, DIST +735 S=W/SQR(U-V*V) +740 A5=L+ATN(S/SQR(1-S*S)) +745 S=V/SQR(U):D5=ATN(S/SQR(1-S*S)) +750 R5=60.40974*SQR(U) +755 RETURN +760 REM CALENDAR --> JD +765 INPUT "Y,M,D ";Y,M,D +770 G=1: IF Y<1582 THEN G=0 +775 D1=INT(D): F=D-D1-0.5 +780 J=-INT(7*(INT((M+9)/12)+Y)/4) +785 IF G=0 THEN 805 +790 S=SGN(M-9): A=ABS(M-9) +795 J3=INT(Y+S*INT(A/7)) +800 J3=-INT((INT(J3/100)+1)*3/4) +805 J=J+INT(275*M/9)+D1+G*J3 +810 J=J+1721027+2*G+367*Y +815 IF F>=0 THEN 825 +820 F=F+1: J=J-1 +825 RETURN +900 REM *************************** +910 REM THIS PROGRAM COMPUTES THE +920 REM TIMES OF MOONRISE AND MOON- +930 REM SET ANYWHERE IN THE WORLD. +940 REM FROM SKY & TELESCOPE, JULY, +950 REM 1989, PAGE 78. +960 REM *************************** diff --git a/SKYTEL/moonup.dif b/SKYTEL/moonup.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/moonup.run b/SKYTEL/moonup.run new file mode 100644 index 0000000..45df6ab --- /dev/null +++ b/SKYTEL/moonup.run @@ -0,0 +1,6 @@ +LAT, LONG (DEG)? 123,145 +TIME ZONE (HRS)? 6 +Y,M,D ? 2015,03,01 + +MOONSET AT 1: 4, AZ 121.5 +MOONRISE AT 9:48, AZ 239.8 diff --git a/SKYTEL/msachart.80 b/SKYTEL/msachart.80 new file mode 100644 index 0000000..ddd1303 --- /dev/null +++ b/SKYTEL/msachart.80 @@ -0,0 +1,9 @@ + +Enter 2000.0 position + +R.A. (h,m,s)? 5,6,7 + +Dec. (d,m,s)? 1,2,3 + +Millennium Star Atlas +Chart 255 in Volume I diff --git a/SKYTEL/msachart.INP b/SKYTEL/msachart.INP new file mode 100644 index 0000000..8e2f6ed --- /dev/null +++ b/SKYTEL/msachart.INP @@ -0,0 +1,2 @@ +5,6,7 +1,2,3 diff --git a/SKYTEL/msachart.OUT b/SKYTEL/msachart.OUT new file mode 100644 index 0000000..c1df54c --- /dev/null +++ b/SKYTEL/msachart.OUT @@ -0,0 +1,9 @@ + +Enter 2000.0 position + +R.A. (h,m,s)? 5,6,7 + +Dec. (d,m,s)? 1,2,3 + +Millennium Star Atlas +Chart 255 in Volume I diff --git a/SKYTEL/msachart.bas b/SKYTEL/msachart.bas new file mode 100644 index 0000000..9d732f2 --- /dev/null +++ b/SKYTEL/msachart.bas @@ -0,0 +1,56 @@ +10 REM Chart number for +20 REM The Millennium Star Atlas +30 REM by Laurent Corp +40 CLS +50 PRINT : PRINT "Enter 2000.0 position" +60 PRINT : INPUT "R.A. (h,m,s)";H,M,S +70 IF H<0 OR H>=24 THEN 60 +80 IF M<0 OR M>=60 THEN 60 +90 IF S<0 OR S>=60 THEN 60 +100 HM=H +110 H=H+M/60+S/3600 +120 PRINT : INPUT "Dec. (d,m,s)";D$,M,S +130 D=ABS(VAL(D$)) +140 IF D>90 THEN 120 +150 IF M<0 OR M>=60 THEN 120 +160 IF S<0 OR S>=60 THEN 120 +170 D=D+M/60+S/3600 +180 IF LEFT$(D$,1)="-" THEN D=-D +190 PRINT: PRINT "Millennium Star Atlas" +200 IF ABS(D)>87 THEN H=0 +210 IF H>=0 AND H<=8 THEN V$="Volume I": VL=0 +220 IF H>8 AND H<=16 THEN V$="Volume II": VL=1 +230 IF H>16 AND H<24 THEN V$="Volume III": VL=2 +240 QT=0 : PA=0 : QN=0 +250 IF ABS(D)>90 THEN D=90 +260 IF ABS(D)<=90 THEN PA=240: QT=QT+2: QN=2 +270 IF ABS(D)<87 THEN PA=120: QT=QT+4: QN=4 +280 IF ABS(D)<81 THEN PA=60: QT=QT+8: QN=8 +290 IF ABS(D)<75 THEN PA=48: QT=QT+10: QN=10 +300 IF ABS(D)<69 THEN PA=40: QT=QT+12: QN=12 +310 IF ABS(D)<63 THEN PA=480/14: QT=QT+14: QN=14 +320 IF ABS(D)<57 THEN PA=30: QT=QT+16: QN=16 +330 IF ABS(D)<51 THEN PA=24: QT=QT+20: QN=20 +340 IF ABS(D)<45 THEN PA=24: QT=QT+20: QN=20 +350 IF ABS(D)<39 THEN PA=480/22: QT=QT+22: QN=22 +360 IF ABS(D)<33 THEN PA=480/22: QT=QT+22: QN=22 +370 IF ABS(D)<27 THEN PA=20: QT=QT+24: QN=24 +380 IF ABS(D)<21 THEN PA=20: QT=QT+24: QN=24 +390 IF ABS(D)<15 THEN PA=20: QT=QT+24: QN=24 +400 IF ABS(D)<9 THEN PA=20: QT=QT+24: QN=24 +410 IF ABS(D)<3 THEN PA=20: QT=QT+24: QN=24 +420 IF H=8 THEN H=7.99 +430 IF H=16 THEN H=15.99 +440 IF H=24 THEN H=23.99 +450 IF H>VL*8 THEN H=H-(VL*8) +460 CA=INT((H*60)/PA) +470 IF ABS(D)>87 AND (HM>4 AND HM<16) THEN QT=1: QN=0 +480 CH=QT-CA+(VL*516) +490 IF LEFT$(D$,1)="-" THEN CH=(516+(VL*516)-QT+QN-CA) +500 PRINT "Chart ";CH;"in ";V$ +510 END +900 REM --------------------------- +910 REM APPEARED IN ASTRONOMICAL +920 REM COMPUTING, SKY & TELESCOPE, +930 REM OCTOBER 1998, PAGE 63 +940 REM --------------------------- diff --git a/SKYTEL/msachart.dif b/SKYTEL/msachart.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/msachart.run b/SKYTEL/msachart.run new file mode 100644 index 0000000..ddd1303 --- /dev/null +++ b/SKYTEL/msachart.run @@ -0,0 +1,9 @@ + +Enter 2000.0 position + +R.A. (h,m,s)? 5,6,7 + +Dec. (d,m,s)? 1,2,3 + +Millennium Star Atlas +Chart 255 in Volume I diff --git a/SKYTEL/obscur.80 b/SKYTEL/obscur.80 new file mode 100644 index 0000000..26fbfe0 --- /dev/null +++ b/SKYTEL/obscur.80 @@ -0,0 +1,4 @@ +SUN'S SEMIDIAMETER ? 9 +MOON'S SEMIDIAMETER? 8.8 +ECLIPSE MAGNITUDE ? 0.123 +OBSCURATION: 5.05196E-2 diff --git a/SKYTEL/obscur.INP b/SKYTEL/obscur.INP new file mode 100644 index 0000000..71181b5 --- /dev/null +++ b/SKYTEL/obscur.INP @@ -0,0 +1,3 @@ +9 +8.8 +0.123 diff --git a/SKYTEL/obscur.OUT b/SKYTEL/obscur.OUT new file mode 100644 index 0000000..a15ac49 --- /dev/null +++ b/SKYTEL/obscur.OUT @@ -0,0 +1,4 @@ +SUN'S SEMIDIAMETER ? 9 +MOON'S SEMIDIAMETER? 8.8 +ECLIPSE MAGNITUDE ? 0.123 +OBSCURATION: 5.05196E-2 diff --git a/SKYTEL/obscur.bas b/SKYTEL/obscur.bas new file mode 100644 index 0000000..9302815 --- /dev/null +++ b/SKYTEL/obscur.bas @@ -0,0 +1,48 @@ +10 REM OBSCURED FRACTION +12 REM AT A SOLAR ECLIPSE +14 REM +16 P=3.14159265 +18 INPUT "SUN'S SEMIDIAMETER ";S1 +20 INPUT "MOON'S SEMIDIAMETER";S2 +22 S=S2/S1 +24 INPUT "ECLIPSE MAGNITUDE ";M +26 IF M>(S+1)/2 OR M<0 THEN 24 +28 REM +30 W=M*2 +32 D=1+S-W +34 IF M<1 AND D<>0 THEN 46 +36 IF S>=1 THEN F=1: REM TOTAL +38 IF S<1 THEN F=S*S: REM ANNULAR +40 F=F*P +42 GOTO 90 +44 REM +46 REM ANGLE B +48 B1=(D*D+1-S*S)/(2*D) +50 IF B1>1 THEN B1=1 +52 IF B1<-1 THEN B1=-1 +54 IF B1<>0 THEN 58 +56 B=P/2: GOTO 64 +58 B=ATN(SQR(1-B1*B1)/B1) +60 IF B1<0 THEN B=B+P +62 REM +64 REM ANGLE C +66 C1=(S*S+1-D*D)/(2*S) +68 IF C1>1 THEN C1=1 +70 IF C1<-1 THEN C1=-1 +72 IF C1<>0 THEN 76 +74 C=P/2: GOTO 82 +76 C=ATN(SQR(1-C1*C1)/C1) +78 IF C1<0 THEN C=C+P +80 REM +82 REM ANGLE A +84 A=P-B-C +86 REM +88 F=S*S*A+B-S*SIN(C) +90 PRINT "OBSCURATION: ";F/P +92 END +100 REM *********************** +110 REM FROM SKY & TELESCOPE'S +120 REM ASTRONOMICAL COMPUTING +130 REM DEPARTMENT, NOVEMBER, +140 REM 1986, PAGES 515-516. +150 REM *********************** diff --git a/SKYTEL/obscur.dif b/SKYTEL/obscur.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/obscur.run b/SKYTEL/obscur.run new file mode 100644 index 0000000..26fbfe0 --- /dev/null +++ b/SKYTEL/obscur.run @@ -0,0 +1,4 @@ +SUN'S SEMIDIAMETER ? 9 +MOON'S SEMIDIAMETER? 8.8 +ECLIPSE MAGNITUDE ? 0.123 +OBSCURATION: 5.05196E-2 diff --git a/SKYTEL/occvis.80 b/SKYTEL/occvis.80 new file mode 100644 index 0000000..d12a3e8 --- /dev/null +++ b/SKYTEL/occvis.80 @@ -0,0 +1,9 @@ +Moon's sunlit percentage? 98 +Zenith distance of star (degrees)? 76 +Height of Sun above horizon? 54 +Cusp angle (<0 for bright side) in deg? 32 +Choose program mode -- + (1) Minimum aperture + (2) Limiting magnitude +? 2 +Limiting magnitude is 1.49505 diff --git a/SKYTEL/occvis.INP b/SKYTEL/occvis.INP new file mode 100644 index 0000000..846733a --- /dev/null +++ b/SKYTEL/occvis.INP @@ -0,0 +1,5 @@ +98 +76 +54 +32 +2 diff --git a/SKYTEL/occvis.OUT b/SKYTEL/occvis.OUT new file mode 100644 index 0000000..512fd62 --- /dev/null +++ b/SKYTEL/occvis.OUT @@ -0,0 +1,9 @@ +Moon's sunlit percentage? 98 +Zenith distance of star (degrees)? 76 +Height of Sun above horizon? 54 +Cusp angle (<0 for bright side) in deg? 32 +Choose program mode -- + (1) Minimum aperture + (2) Limiting magnitude +? 2 +Limiting magnitude is 1.49505 diff --git a/SKYTEL/occvis.bas b/SKYTEL/occvis.bas new file mode 100644 index 0000000..373902f --- /dev/null +++ b/SKYTEL/occvis.bas @@ -0,0 +1,121 @@ +10 ' Visibility of an Occultation +20 INPUT "Moon's sunlit percentage";SF +30 INPUT "Zenith distance of star (degrees)";Z +40 INPUT "Height of Sun above horizon";HS +50 INPUT "Cusp angle (<0 for bright side) in deg";C +60 BV=.7: ' Star's color index, B-V (in mags.) +70 K=.3 : ' Vis. extinction coeff. (mag./airmass) +80 BC=0: ' Brightness from light pollution (nL) +90 SE=1: ' Seeing disk diameter at zenith (arcsec) +100 FV=20: ' Moon fraction in field of view (%) +110 D=6: ' Telescope aperture (inches) +120 M=150: ' Magnification +130 TR=80: ' Telescope throughput (%) +140 AG=30: ' Observer's age (years) +150 RS=1: ' Snellen ratio (20/20=1, 20/40=0.5,...) +160 EX=5: ' Experience (1-9; 5=average, 9=expert) +170 MS=8.61: ' Star's visual magnitude +180 PRINT "Choose program mode --" +190 PRINT " (1) Minimum aperture" +200 PRINT " (2) Limiting magnitude" +210 INPUT Q$: IF Q$<>"1" AND Q$<>"2" THEN 210 +220 IF Q$="2" THEN 270 +230 D=.5: ' Find minimum telescope aperture +240 D=D+.1: M=25*D: GOSUB 290: IF MS>ML THEN 240 +250 PRINT "Aperture should be at least" ;D;" inches" +260 GOTO 280 +270 GOSUB 290: PRINT "Limiting magnitude is ";ML +280 END +290 ' Routine to find lim. mag. for given conditions +300 XX=COS(Z/57.295): ' First, estimate corrections +310 X=1/(XX+.025*EXP(-11*XX)): ' Airmass of Moon +320 ZE=SQR(2.89*X*SE^2+(17.9/D)^2):'2nd moment of image +330 F1=10^(.4*K*X): ' Extinction +340 F2=1.41: ' Binocular vision +350 F3=100/TR: ' Transmission of scope +360 DE=4: ' Guess that pupil is 4mm +370 F4=(25.4*D/(M*DE))^2: ' Light outside pupil +380 IF F4<1 THEN F4=1 +390 F5=(DE/(25.4*D))^2: ' Light gathering power +400 XX=1-EXP(-.026*DE^2) +410 YY=1-EXP(-.026*(25.4*D/M)^2) +420 F6=(25.4*D/(DE*M))^2*XX/YY:'Stiles-Crawford effect +430 IF F6>1 THEN F6=1 +440 F7=(1+.03*(M*ZE/100)^2)/RS^2: ' Resolving the star +450 FI=F1*F2*F3*F4*F5*F6*F7:' Corr. for intensities +460 FB=M^2*F2*F3*F4*F5*F6:'Corr. for surface brightness +470 ' Calculate brightness of Moon +480 CP=SF/50-1 +490 IF CP=0 THEN PH=3.14159/2: GOTO 520 +500 PH=ATN(SQR(1-CP*CP)/CP): ' Lunar phase (0 is full) +510 IF CP<0 THEN PH=PH+3.14159 +520 DM=1.49*PH+.043*(PH^4)-12.73 : ' Moon's magnitude +530 IM=10^(-.4*(DM+16.57)): ' Intensity of Moon +540 BM=5.67E+12*IM/(F1*SF): ' Moon brightness (nL) +550 SP=3.14159-PH: ' Earth's phase from Moon +560 XX=1.49*SP+.043*(SP^4)-12.73 +570 BE=1.1E+07*10^(-.4*(XX+16.57))/F1: ' Earthshine +580 ' Calculate glare brightness +590 XX=(COS(C/57.295))^2+(1-SF/100+SIN(C/57.295))^2 +600 YY=(1-.4*EXP(-1*C/30)) +610 IF YY<.6 THEN YY=.6 +620 TH=.25*SQR(XX)*YY: ' Effective distance to Moon +630 B1=6.25E+07*IM*(F1-1)/(TH*F1)^2:'Scattering in air +640 B2=4.63E+07*IM*(FV/100)/(TH^2*F1):'Scat. in eye +650 B3=443000*IM/(TH^3*D*F1): ' Diffraction +660 B4=2.6E+08*IM*EXP(-1*(TH/.4)^2)/F1: ' By mirror +670 BG=B1+B2+B3+B4: ' Glare brightness +680 ' Calculate effective background brightness +690 XX=1-.96*(SIN(Z/57.295))^2 +700 BN=180*(.4+.6/SQR(XX))/F1: ' Night sky +710 XX=10^(PH/1.571-1.1): IF XX<1 THEN XX=1 +720 BT=XX*10^(8.45+.4*HS)*(F1-1)/F1: ' Twilight sky +730 PM=10^5.36*(1.06+(COS(PH))^2): ' Mie scattering +740 PA=10^(1.65+1.43*PH): ' Aerosol scattering +750 XX=-.4*K/(SQR(1-.96*(SIN((90-HS)/57.295))^2)) +760 BD=11700*10^XX*(PM+PA)*(F1-1)/F1: ' Daytime sky +770 BS=BN+BT+BC: ' Sky brightness +780 IF BD1 THEN F6=1 +1010 F7=(1+.03*(M*ZE/RE)^2)/RS^2:'Resolving the star +1020 F8=10^(-.4*(1-.5*BV)): 'Color corr (night) +1030 IF BA>1480 THEN F8=1: 'Color corr (day) +1040 FI=F1*F2*F3*F4*F5*F6*F7*F8: 'Corr for intensities +1050 FB=M^2*F2*F3*F4*F5*F6*F8: 'For surface brightness +1060 ' Calculate limiting magnitude +1070 B=BA/FB: ' Perceived brightness +1080 ID=4.46E-09*(1+SQR(1.26E-06*B))^2: 'Day vision +1090 IN=1.59E-10*(1+SQR(.0126*B))^2: 'Night vision +1100 I=ID: IF IN0 THEN 40 +36 R=Q: V=0: GOTO 90 +38 REM +40 REM FIND TRUE ANOMALY +42 REM +44 Q1=K*SQR((1+E0)/Q)/(Q*2) +46 Q1=Q1*T +48 S=2/(3*ABS(Q1)) +50 X=2/TAN(2*ATN(TAN(ATN(S)/2)^C)) +52 IF T<0 THEN X=-X +54 G=(1-E0)/(1+E0): L0=0 +56 REM +58 X0=X: W=1: Y=X*X: G1=-Y*X +60 Q3=Q1+2*G*X*Y/3 +62 W=W+1 +64 G1=-G1*G*Y +66 W1=(W-(W+1)*G)/(2*W+1) +68 F=W1*G1 +70 Q3=Q3+F +72 IF W>50 OR ABS(F)>D1 THEN 96 +74 IF ABS(F)>D THEN 62 +76 L0=L0+1: IF L0>50 THEN 96 +78 X1=X: X=(2*X*X*X/3+Q3)/(X*X+1) +80 IF ABS(X-X1)>D THEN 78 +82 IF ABS(X-X0)>D THEN 58 +84 V=2*ATN(X) +86 R=Q*(1+E0)/(1+E0*COS(V)) +88 IF V<0 THEN V=V+2*P1 +90 PRINT "TRUE ANOMALY: ";V*R1 +92 PRINT "DISTANCE (AU): ";R +94 GOTO 98 +96 PRINT "NO CONVERGENCE" +98 END +99 REM ************************* +100 REM FROM SKY & TELESCOPE, +101 REM MAY, 1987, PAGE 535 +102 REM ************************ diff --git a/SKYTEL/orbits.dif b/SKYTEL/orbits.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/orbits.run b/SKYTEL/orbits.run new file mode 100644 index 0000000..3f2dc2d --- /dev/null +++ b/SKYTEL/orbits.run @@ -0,0 +1,6 @@ +PERI DISTANCE Q ? 9876 +ECCENTRICITY ? 0.543 +DAYS FROM PERI ? 21 + +TRUE ANOMALY: 2.6196E-5 +DISTANCE (AU): 9876. diff --git a/SKYTEL/path.80 b/SKYTEL/path.80 new file mode 100644 index 0000000..463f38d --- /dev/null +++ b/SKYTEL/path.80 @@ -0,0 +1,279 @@ +NAME OF COMET? AAA +MONTH (3 LETTERS)? MAR +HOW MANY DATES (2-5)? 2 +DAY, RA(H.M), DE(D.M): + ? 1,2.3,4.5 + ? 31,6.7,8.9 +STARTING DATE? 1 + +AAA + +MAR 1 RA(H.M) DE(D.M) + ( 1950.0) 2.3 4.5 + ( 1987.0) 2.31938 4.59804 + ARCSEC/MIN 5.82557 + POS ANGLE 86 + STEPS 7.25024 HZ + RATIO 5 + FREQ 14.8485 KHZ + +MAR 2 RA(H.M) DE(D.M) + ( 1950.0) 2.39333 4.59333 + ( 1987.0) 2.41275 5.08823 + ARCSEC/MIN 5.82422 + POS ANGLE 86 + STEPS 7.24856 HZ + RATIO 5 + FREQ 14.8451 KHZ + +MAR 3 RA(H.M) DE(D.M) + ( 1950.0) 2.48667 5.08667 + ( 1987.0) 2.50612 5.17826 + ARCSEC/MIN 5.82283 + POS ANGLE 86 + STEPS 7.24683 HZ + RATIO 5 + FREQ 14.8415 KHZ + +MAR 4 RA(H.M) DE(D.M) + ( 1950.0) 2.58 5.18 + ( 1987.0) 2.59949 5.26814 + ARCSEC/MIN 5.8214 + POS ANGLE 86 + STEPS 7.24505 HZ + RATIO 5 + FREQ 14.8379 KHZ + +MAR 5 RA(H.M) DE(D.M) + ( 1950.0) 3.07333 5.27333 + ( 1987.0) 3.09286 5.35787 + ARCSEC/MIN 5.81992 + POS ANGLE 86 + STEPS 7.24321 HZ + RATIO 5 + FREQ 14.8341 KHZ + +MAR 6 RA(H.M) DE(D.M) + ( 1950.0) 3.16667 5.36667 + ( 1987.0) 3.18623 5.44747 + ARCSEC/MIN 5.8184 + POS ANGLE 86 + STEPS 7.24131 HZ + RATIO 5 + FREQ 14.8302 KHZ + +MAR 7 RA(H.M) DE(D.M) + ( 1950.0) 3.26 5.46 + ( 1987.0) 3.27961 5.53693 + ARCSEC/MIN 5.81683 + POS ANGLE 86 + STEPS 7.23937 HZ + RATIO 5 + FREQ 14.8262 KHZ + +MAR 8 RA(H.M) DE(D.M) + ( 1950.0) 3.35333 5.55333 + ( 1987.0) 3.37298 6.02626 + ARCSEC/MIN 5.81523 + POS ANGLE 86 + STEPS 7.23737 HZ + RATIO 5 + FREQ 14.8221 KHZ + +MAR 9 RA(H.M) DE(D.M) + ( 1950.0) 3.44667 6.04667 + ( 1987.0) 3.46635 6.11547 + ARCSEC/MIN 5.81358 + POS ANGLE 86 + STEPS 7.23532 HZ + RATIO 5 + FREQ 14.8179 KHZ + +MAR 10 RA(H.M) DE(D.M) + ( 1950.0) 3.54 6.14 + ( 1987.0) 3.55972 6.20457 + ARCSEC/MIN 5.81189 + POS ANGLE 86 + STEPS 7.23321 HZ + RATIO 5 + FREQ 14.8136 KHZ + +MAR 11 RA(H.M) DE(D.M) + ( 1950.0) 4.03333 6.23333 + ( 1987.0) 4.05309 6.29356 + ARCSEC/MIN 5.81015 + POS ANGLE 86 + STEPS 7.23105 HZ + RATIO 5 + FREQ 14.8092 KHZ + +MAR 12 RA(H.M) DE(D.M) + ( 1950.0) 4.12667 6.32667 + ( 1987.0) 4.14646 6.38245 + ARCSEC/MIN 5.80838 + POS ANGLE 86 + STEPS 7.22884 HZ + RATIO 5 + FREQ 14.8047 KHZ + +MAR 13 RA(H.M) DE(D.M) + ( 1950.0) 4.22 6.42 + ( 1987.0) 4.23984 6.47125 + ARCSEC/MIN 5.80656 + POS ANGLE 86 + STEPS 7.22658 HZ + RATIO 5 + FREQ 14.8 KHZ + +MAR 14 RA(H.M) DE(D.M) + ( 1950.0) 4.31333 6.51333 + ( 1987.0) 4.3332 6.55996 + ARCSEC/MIN 5.80469 + POS ANGLE 86 + STEPS 7.22426 HZ + RATIO 5 + FREQ 14.7953 KHZ + +MAR 15 RA(H.M) DE(D.M) + ( 1950.0) 4.40667 7.00667 + ( 1987.0) 4.42657 7.04859 + ARCSEC/MIN 5.80279 + POS ANGLE 86 + STEPS 7.22189 HZ + RATIO 5 + FREQ 14.7904 KHZ + +MAR 16 RA(H.M) DE(D.M) + ( 1950.0) 4.5 7.1 + ( 1987.0) 4.51994 7.13716 + ARCSEC/MIN 5.80084 + POS ANGLE 86 + STEPS 7.21946 HZ + RATIO 5 + FREQ 14.7855 KHZ + +MAR 17 RA(H.M) DE(D.M) + ( 1950.0) 4.59333 7.19333 + ( 1987.0) 5.01331 7.22566 + ARCSEC/MIN 5.79885 + POS ANGLE 86 + STEPS 7.21698 HZ + RATIO 5 + FREQ 14.7804 KHZ + +MAR 18 RA(H.M) DE(D.M) + ( 1950.0) 5.08667 7.28667 + ( 1987.0) 5.10668 7.31411 + ARCSEC/MIN 5.79682 + POS ANGLE 86 + STEPS 7.21445 HZ + RATIO 5 + FREQ 14.7752 KHZ + +MAR 19 RA(H.M) DE(D.M) + ( 1950.0) 5.18 7.38 + ( 1987.0) 5.20004 7.40252 + ARCSEC/MIN 5.79474 + POS ANGLE 86 + STEPS 7.21187 HZ + RATIO 5 + FREQ 14.7699 KHZ + +MAR 20 RA(H.M) DE(D.M) + ( 1950.0) 5.27333 7.47333 + ( 1987.0) 5.2934 7.49089 + ARCSEC/MIN 5.79262 + POS ANGLE 86 + STEPS 7.20923 HZ + RATIO 5 + FREQ 14.7645 KHZ + +MAR 21 RA(H.M) DE(D.M) + ( 1950.0) 5.36667 7.56667 + ( 1987.0) 5.38676 7.57923 + ARCSEC/MIN 5.79046 + POS ANGLE 86 + STEPS 7.20654 HZ + RATIO 5 + FREQ 14.759 KHZ + +MAR 22 RA(H.M) DE(D.M) + ( 1950.0) 5.46 8.06 + ( 1987.0) 5.48012 8.06754 + ARCSEC/MIN 5.78825 + POS ANGLE 86 + STEPS 7.2038 HZ + RATIO 5 + FREQ 14.7534 KHZ + +MAR 23 RA(H.M) DE(D.M) + ( 1950.0) 5.55333 8.15333 + ( 1987.0) 5.57348 8.15585 + ARCSEC/MIN 5.78601 + POS ANGLE 86 + STEPS 7.201 HZ + RATIO 5 + FREQ 14.7476 KHZ + +MAR 24 RA(H.M) DE(D.M) + ( 1950.0) 6.04667 8.24667 + ( 1987.0) 6.06684 8.24415 + ARCSEC/MIN 5.78372 + POS ANGLE 86 + STEPS 7.19815 HZ + RATIO 5 + FREQ 14.7418 KHZ + +MAR 25 RA(H.M) DE(D.M) + ( 1950.0) 6.14 8.34 + ( 1987.0) 6.16019 8.33246 + ARCSEC/MIN 5.78138 + POS ANGLE 86 + STEPS 7.19525 HZ + RATIO 5 + FREQ 14.7359 KHZ + +MAR 26 RA(H.M) DE(D.M) + ( 1950.0) 6.23333 8.43333 + ( 1987.0) 6.25355 8.42077 + ARCSEC/MIN 5.77901 + POS ANGLE 86 + STEPS 7.19229 HZ + RATIO 5 + FREQ 14.7298 KHZ + +MAR 27 RA(H.M) DE(D.M) + ( 1950.0) 6.32667 8.52667 + ( 1987.0) 6.34689 8.50911 + ARCSEC/MIN 5.77659 + POS ANGLE 86 + STEPS 7.18928 HZ + RATIO 5 + FREQ 14.7236 KHZ + +MAR 28 RA(H.M) DE(D.M) + ( 1950.0) 6.42 9.02 + ( 1987.0) 6.44024 8.59748 + ARCSEC/MIN 5.77413 + POS ANGLE 86 + STEPS 7.18622 HZ + RATIO 5 + FREQ 14.7174 KHZ + +MAR 29 RA(H.M) DE(D.M) + ( 1950.0) 6.51333 9.11333 + ( 1987.0) 6.53359 9.08589 + ARCSEC/MIN 5.77163 + POS ANGLE 86 + STEPS 7.1831 HZ + RATIO 5 + FREQ 14.711 KHZ + +MAR 30 RA(H.M) DE(D.M) + ( 1950.0) 7.00667 9.20667 + ( 1987.0) 7.02693 9.17434 + ARCSEC/MIN 5.76908 + POS ANGLE 86 + STEPS 7.17994 HZ + RATIO 5 + FREQ 14.7045 KHZ diff --git a/SKYTEL/path.INP b/SKYTEL/path.INP new file mode 100644 index 0000000..a8e188e --- /dev/null +++ b/SKYTEL/path.INP @@ -0,0 +1,6 @@ +AAA +MAR +2 +1,2.3,4.5 +31,6.7,8.9 +1 diff --git a/SKYTEL/path.OUT b/SKYTEL/path.OUT new file mode 100644 index 0000000..83f5846 --- /dev/null +++ b/SKYTEL/path.OUT @@ -0,0 +1,279 @@ +NAME OF COMET? AAA +MONTH (3 LETTERS)? MAR +HOW MANY DATES (2-5)? 2 +DAY, RA(H.M), DE(D.M): + ? 1,2.3,4.5 + ? 31,6.7,8.9 +STARTING DATE? 1 + +AAA + +MAR 1 RA(H.M) DE(D.M) + ( 1950.0) 2.3 4.5 + ( 1987.0) 2.31938 4.59804 + ARCSEC/MIN 5.82557 + POS ANGLE 86 + STEPS 7.25024 HZ + RATIO 5 + FREQ 14.8485 KHZ + +MAR 2 RA(H.M) DE(D.M) + ( 1950.0) 2.39333 4.59333 + ( 1987.0) 2.41275 5.08823 + ARCSEC/MIN 5.82422 + POS ANGLE 86 + STEPS 7.24856 HZ + RATIO 5 + FREQ 14.8451 KHZ + +MAR 3 RA(H.M) DE(D.M) + ( 1950.0) 2.48667 5.08667 + ( 1987.0) 2.50612 5.17826 + ARCSEC/MIN 5.82283 + POS ANGLE 86 + STEPS 7.24683 HZ + RATIO 5 + FREQ 14.8415 KHZ + +MAR 4 RA(H.M) DE(D.M) + ( 1950.0) 2.58 5.18 + ( 1987.0) 2.59949 5.26814 + ARCSEC/MIN 5.8214 + POS ANGLE 86 + STEPS 7.24505 HZ + RATIO 5 + FREQ 14.8379 KHZ + +MAR 5 RA(H.M) DE(D.M) + ( 1950.0) 3.07333 5.27333 + ( 1987.0) 3.09286 5.35787 + ARCSEC/MIN 5.81992 + POS ANGLE 86 + STEPS 7.24321 HZ + RATIO 5 + FREQ 14.8341 KHZ + +MAR 6 RA(H.M) DE(D.M) + ( 1950.0) 3.16667 5.36667 + ( 1987.0) 3.18623 5.44747 + ARCSEC/MIN 5.8184 + POS ANGLE 86 + STEPS 7.24131 HZ + RATIO 5 + FREQ 14.8302 KHZ + +MAR 7 RA(H.M) DE(D.M) + ( 1950.0) 3.26 5.46 + ( 1987.0) 3.27961 5.53693 + ARCSEC/MIN 5.81683 + POS ANGLE 86 + STEPS 7.23937 HZ + RATIO 5 + FREQ 14.8262 KHZ + +MAR 8 RA(H.M) DE(D.M) + ( 1950.0) 3.35333 5.55333 + ( 1987.0) 3.37298 6.02626 + ARCSEC/MIN 5.81523 + POS ANGLE 86 + STEPS 7.23737 HZ + RATIO 5 + FREQ 14.8221 KHZ + +MAR 9 RA(H.M) DE(D.M) + ( 1950.0) 3.44667 6.04667 + ( 1987.0) 3.46635 6.11547 + ARCSEC/MIN 5.81358 + POS ANGLE 86 + STEPS 7.23532 HZ + RATIO 5 + FREQ 14.8179 KHZ + +MAR 10 RA(H.M) DE(D.M) + ( 1950.0) 3.54 6.14 + ( 1987.0) 3.55972 6.20457 + ARCSEC/MIN 5.81189 + POS ANGLE 86 + STEPS 7.23321 HZ + RATIO 5 + FREQ 14.8136 KHZ + +MAR 11 RA(H.M) DE(D.M) + ( 1950.0) 4.03333 6.23333 + ( 1987.0) 4.05309 6.29356 + ARCSEC/MIN 5.81015 + POS ANGLE 86 + STEPS 7.23105 HZ + RATIO 5 + FREQ 14.8092 KHZ + +MAR 12 RA(H.M) DE(D.M) + ( 1950.0) 4.12667 6.32667 + ( 1987.0) 4.14646 6.38245 + ARCSEC/MIN 5.80838 + POS ANGLE 86 + STEPS 7.22884 HZ + RATIO 5 + FREQ 14.8047 KHZ + +MAR 13 RA(H.M) DE(D.M) + ( 1950.0) 4.22 6.42 + ( 1987.0) 4.23984 6.47125 + ARCSEC/MIN 5.80656 + POS ANGLE 86 + STEPS 7.22658 HZ + RATIO 5 + FREQ 14.8 KHZ + +MAR 14 RA(H.M) DE(D.M) + ( 1950.0) 4.31333 6.51333 + ( 1987.0) 4.3332 6.55996 + ARCSEC/MIN 5.80469 + POS ANGLE 86 + STEPS 7.22426 HZ + RATIO 5 + FREQ 14.7953 KHZ + +MAR 15 RA(H.M) DE(D.M) + ( 1950.0) 4.40667 7.00667 + ( 1987.0) 4.42657 7.04859 + ARCSEC/MIN 5.80279 + POS ANGLE 86 + STEPS 7.22189 HZ + RATIO 5 + FREQ 14.7904 KHZ + +MAR 16 RA(H.M) DE(D.M) + ( 1950.0) 4.5 7.1 + ( 1987.0) 4.51994 7.13716 + ARCSEC/MIN 5.80084 + POS ANGLE 86 + STEPS 7.21946 HZ + RATIO 5 + FREQ 14.7855 KHZ + +MAR 17 RA(H.M) DE(D.M) + ( 1950.0) 4.59333 7.19333 + ( 1987.0) 5.01331 7.22566 + ARCSEC/MIN 5.79885 + POS ANGLE 86 + STEPS 7.21698 HZ + RATIO 5 + FREQ 14.7804 KHZ + +MAR 18 RA(H.M) DE(D.M) + ( 1950.0) 5.08667 7.28667 + ( 1987.0) 5.10668 7.31411 + ARCSEC/MIN 5.79682 + POS ANGLE 86 + STEPS 7.21445 HZ + RATIO 5 + FREQ 14.7752 KHZ + +MAR 19 RA(H.M) DE(D.M) + ( 1950.0) 5.18 7.38 + ( 1987.0) 5.20004 7.40252 + ARCSEC/MIN 5.79474 + POS ANGLE 86 + STEPS 7.21187 HZ + RATIO 5 + FREQ 14.7699 KHZ + +MAR 20 RA(H.M) DE(D.M) + ( 1950.0) 5.27333 7.47333 + ( 1987.0) 5.2934 7.49089 + ARCSEC/MIN 5.79262 + POS ANGLE 86 + STEPS 7.20923 HZ + RATIO 5 + FREQ 14.7645 KHZ + +MAR 21 RA(H.M) DE(D.M) + ( 1950.0) 5.36667 7.56667 + ( 1987.0) 5.38676 7.57923 + ARCSEC/MIN 5.79046 + POS ANGLE 86 + STEPS 7.20654 HZ + RATIO 5 + FREQ 14.759 KHZ + +MAR 22 RA(H.M) DE(D.M) + ( 1950.0) 5.46 8.06 + ( 1987.0) 5.48012 8.06754 + ARCSEC/MIN 5.78825 + POS ANGLE 86 + STEPS 7.2038 HZ + RATIO 5 + FREQ 14.7534 KHZ + +MAR 23 RA(H.M) DE(D.M) + ( 1950.0) 5.55333 8.15333 + ( 1987.0) 5.57348 8.15585 + ARCSEC/MIN 5.78601 + POS ANGLE 86 + STEPS 7.201 HZ + RATIO 5 + FREQ 14.7476 KHZ + +MAR 24 RA(H.M) DE(D.M) + ( 1950.0) 6.04667 8.24667 + ( 1987.0) 6.06684 8.24415 + ARCSEC/MIN 5.78372 + POS ANGLE 86 + STEPS 7.19815 HZ + RATIO 5 + FREQ 14.7418 KHZ + +MAR 25 RA(H.M) DE(D.M) + ( 1950.0) 6.14 8.34 + ( 1987.0) 6.16019 8.33246 + ARCSEC/MIN 5.78138 + POS ANGLE 86 + STEPS 7.19525 HZ + RATIO 5 + FREQ 14.7359 KHZ + +MAR 26 RA(H.M) DE(D.M) + ( 1950.0) 6.23333 8.43333 + ( 1987.0) 6.25355 8.42077 + ARCSEC/MIN 5.77901 + POS ANGLE 86 + STEPS 7.19229 HZ + RATIO 5 + FREQ 14.7298 KHZ + +MAR 27 RA(H.M) DE(D.M) + ( 1950.0) 6.32667 8.52667 + ( 1987.0) 6.34689 8.50911 + ARCSEC/MIN 5.77659 + POS ANGLE 86 + STEPS 7.18928 HZ + RATIO 5 + FREQ 14.7236 KHZ + +MAR 28 RA(H.M) DE(D.M) + ( 1950.0) 6.42 9.02 + ( 1987.0) 6.44024 8.59748 + ARCSEC/MIN 5.77413 + POS ANGLE 86 + STEPS 7.18622 HZ + RATIO 5 + FREQ 14.7174 KHZ + +MAR 29 RA(H.M) DE(D.M) + ( 1950.0) 6.51333 9.11333 + ( 1987.0) 6.53359 9.08589 + ARCSEC/MIN 5.77163 + POS ANGLE 86 + STEPS 7.1831 HZ + RATIO 5 + FREQ 14.711 KHZ + +MAR 30 RA(H.M) DE(D.M) + ( 1950.0) 7.00667 9.20667 + ( 1987.0) 7.02693 9.17434 + ARCSEC/MIN 5.76908 + POS ANGLE 86 + STEPS 7.17994 HZ + RATIO 5 + FREQ 14.7045 KHZ diff --git a/SKYTEL/path.bas b/SKYTEL/path.bas new file mode 100644 index 0000000..1c76e58 --- /dev/null +++ b/SKYTEL/path.bas @@ -0,0 +1,94 @@ +100 REM TRACK A COMET +105 REM +110 GOSUB 485 +115 INPUT "NAME OF COMET";N$ +120 INPUT "MONTH (3 LETTERS)";M$ +125 INPUT "HOW MANY DATES (2-5)";L +130 PRINT "DAY, RA(H.M), DE(D.M):" +135 FOR I=1 TO L +140 INPUT " ";C(I,1),C(I,2),C(I,3) +145 D=C(I,2): GOSUB 430: C(I,2)=D +150 D=C(I,3): GOSUB 430: C(I,3)=D +155 NEXT I +160 INPUT "STARTING DATE";W +165 PRINT: PRINT N$ +170 FOR N4=1 TO 30 +175 IF W>C(L,1)+18 THEN 545 +180 PRINT: PRINT M$;W;TAB(13); +185 PRINT " RA(H.M) DE(D.M)" +190 X=W-2 +195 FOR J=1 TO 3 +200 X=X+1: Y=0: Z=0 +205 FOR N=1 TO L +210 S=1 +215 FOR K=1 TO L +220 IF K=N THEN 230 +225 S=S*(X-C(K,1))/(C(N,1)-C(K,1)) +230 NEXT K +235 Y=Y+S*C(N,2): Z=Z+S*C(N,3) +240 NEXT N +245 Q=M1+N1*SIN(Y*15*K9)*TAN(Z*K9) +250 Q=Y+Z3*Q +255 R=Z+15*Z3*N1*COS(Y*15*K9) +260 IF J<>2 THEN 305 +265 P=COS(R*K9) +270 D=Y: GOSUB 460 : Y1=D +275 D=Z: GOSUB 460 : Z1=D +280 D=Q: GOSUB 460 : Q1=D +285 D=R: GOSUB 460 : R1=D +290 PRINT Y0$;Y1;TAB(26);Z1 +295 PRINT Y1$;Q1;TAB(26);R1 +300 GOTO 315 +305 IF J<>1 THEN 315 +310 K1=Q: L1=R +315 NEXT J +320 Y=R-L1: REM DEGREES +325 X=(Q-K1)*P*15: REM DEGREES +330 R=SQR(X*X+Y*Y)/2: REM DEG/DAY +335 R=R*2.5 +340 PRINT " ARCSEC/MIN ";R +345 T=ATN(X/Y)/K9 +350 IF Y<0 THEN T=T+180 +355 IF T<0 THEN T=T+360 +360 T=INT(T+0.5) +365 PRINT " POS ANGLE ";T +370 Z6=R*U/143.24: Z=Z6: J=0 +375 Z=Z*2 +380 IF Z>8000 THEN 390 +385 J=J+1: IF J<=30 THEN 375 +390 J=J-5: Z=0.001*Z +395 PRINT " STEPS ";Z6;"HZ" +400 PRINT " RATIO ";J +405 PRINT " FREQ ";Z;" KHZ" +410 W=W+1 +415 NEXT N4 +420 GOTO 545 +425 REM +430 REM H.M --> HOURS +435 S1=SGN(D): D=ABS(D) +440 D1=INT(D): D2=D-D1 +445 D=S1*(D1+D2/0.6) +450 RETURN +455 REM +460 REM HOURS --> H.M +465 S1=SGN(D): D=ABS(D) +470 D1=INT(D): D2=D-D1 +475 D=S1*(D1+D2*0.6) +480 RETURN +485 REM CONSTANTS +490 DIM C(5,3) +495 U=178.27: REM FOCAL LENGTH +500 Y0=1950: REM INPUT EQUINOX +505 Y1=1987: REM CURRENT EQUINOX +510 Z3=Y1-Y0 +515 Y0$=" ("+STR$(Y0)+".0) " +520 Y1$=" ("+STR$(Y1)+".0) " +525 M1=0.0008538: N1=0.0003711 +530 P1=3.1415926536: K9=P1/180 +535 RETURN +536 REM ************************ +537 REM FROM "SKY & TELESCOPE" +538 REM ASTRONOMICAL COMPUTING +539 REM FEB. 1987, PAGE 196 +540 REM ************************ +545 END diff --git a/SKYTEL/path.dif b/SKYTEL/path.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/path.run b/SKYTEL/path.run new file mode 100644 index 0000000..463f38d --- /dev/null +++ b/SKYTEL/path.run @@ -0,0 +1,279 @@ +NAME OF COMET? AAA +MONTH (3 LETTERS)? MAR +HOW MANY DATES (2-5)? 2 +DAY, RA(H.M), DE(D.M): + ? 1,2.3,4.5 + ? 31,6.7,8.9 +STARTING DATE? 1 + +AAA + +MAR 1 RA(H.M) DE(D.M) + ( 1950.0) 2.3 4.5 + ( 1987.0) 2.31938 4.59804 + ARCSEC/MIN 5.82557 + POS ANGLE 86 + STEPS 7.25024 HZ + RATIO 5 + FREQ 14.8485 KHZ + +MAR 2 RA(H.M) DE(D.M) + ( 1950.0) 2.39333 4.59333 + ( 1987.0) 2.41275 5.08823 + ARCSEC/MIN 5.82422 + POS ANGLE 86 + STEPS 7.24856 HZ + RATIO 5 + FREQ 14.8451 KHZ + +MAR 3 RA(H.M) DE(D.M) + ( 1950.0) 2.48667 5.08667 + ( 1987.0) 2.50612 5.17826 + ARCSEC/MIN 5.82283 + POS ANGLE 86 + STEPS 7.24683 HZ + RATIO 5 + FREQ 14.8415 KHZ + +MAR 4 RA(H.M) DE(D.M) + ( 1950.0) 2.58 5.18 + ( 1987.0) 2.59949 5.26814 + ARCSEC/MIN 5.8214 + POS ANGLE 86 + STEPS 7.24505 HZ + RATIO 5 + FREQ 14.8379 KHZ + +MAR 5 RA(H.M) DE(D.M) + ( 1950.0) 3.07333 5.27333 + ( 1987.0) 3.09286 5.35787 + ARCSEC/MIN 5.81992 + POS ANGLE 86 + STEPS 7.24321 HZ + RATIO 5 + FREQ 14.8341 KHZ + +MAR 6 RA(H.M) DE(D.M) + ( 1950.0) 3.16667 5.36667 + ( 1987.0) 3.18623 5.44747 + ARCSEC/MIN 5.8184 + POS ANGLE 86 + STEPS 7.24131 HZ + RATIO 5 + FREQ 14.8302 KHZ + +MAR 7 RA(H.M) DE(D.M) + ( 1950.0) 3.26 5.46 + ( 1987.0) 3.27961 5.53693 + ARCSEC/MIN 5.81683 + POS ANGLE 86 + STEPS 7.23937 HZ + RATIO 5 + FREQ 14.8262 KHZ + +MAR 8 RA(H.M) DE(D.M) + ( 1950.0) 3.35333 5.55333 + ( 1987.0) 3.37298 6.02626 + ARCSEC/MIN 5.81523 + POS ANGLE 86 + STEPS 7.23737 HZ + RATIO 5 + FREQ 14.8221 KHZ + +MAR 9 RA(H.M) DE(D.M) + ( 1950.0) 3.44667 6.04667 + ( 1987.0) 3.46635 6.11547 + ARCSEC/MIN 5.81358 + POS ANGLE 86 + STEPS 7.23532 HZ + RATIO 5 + FREQ 14.8179 KHZ + +MAR 10 RA(H.M) DE(D.M) + ( 1950.0) 3.54 6.14 + ( 1987.0) 3.55972 6.20457 + ARCSEC/MIN 5.81189 + POS ANGLE 86 + STEPS 7.23321 HZ + RATIO 5 + FREQ 14.8136 KHZ + +MAR 11 RA(H.M) DE(D.M) + ( 1950.0) 4.03333 6.23333 + ( 1987.0) 4.05309 6.29356 + ARCSEC/MIN 5.81015 + POS ANGLE 86 + STEPS 7.23105 HZ + RATIO 5 + FREQ 14.8092 KHZ + +MAR 12 RA(H.M) DE(D.M) + ( 1950.0) 4.12667 6.32667 + ( 1987.0) 4.14646 6.38245 + ARCSEC/MIN 5.80838 + POS ANGLE 86 + STEPS 7.22884 HZ + RATIO 5 + FREQ 14.8047 KHZ + +MAR 13 RA(H.M) DE(D.M) + ( 1950.0) 4.22 6.42 + ( 1987.0) 4.23984 6.47125 + ARCSEC/MIN 5.80656 + POS ANGLE 86 + STEPS 7.22658 HZ + RATIO 5 + FREQ 14.8 KHZ + +MAR 14 RA(H.M) DE(D.M) + ( 1950.0) 4.31333 6.51333 + ( 1987.0) 4.3332 6.55996 + ARCSEC/MIN 5.80469 + POS ANGLE 86 + STEPS 7.22426 HZ + RATIO 5 + FREQ 14.7953 KHZ + +MAR 15 RA(H.M) DE(D.M) + ( 1950.0) 4.40667 7.00667 + ( 1987.0) 4.42657 7.04859 + ARCSEC/MIN 5.80279 + POS ANGLE 86 + STEPS 7.22189 HZ + RATIO 5 + FREQ 14.7904 KHZ + +MAR 16 RA(H.M) DE(D.M) + ( 1950.0) 4.5 7.1 + ( 1987.0) 4.51994 7.13716 + ARCSEC/MIN 5.80084 + POS ANGLE 86 + STEPS 7.21946 HZ + RATIO 5 + FREQ 14.7855 KHZ + +MAR 17 RA(H.M) DE(D.M) + ( 1950.0) 4.59333 7.19333 + ( 1987.0) 5.01331 7.22566 + ARCSEC/MIN 5.79885 + POS ANGLE 86 + STEPS 7.21698 HZ + RATIO 5 + FREQ 14.7804 KHZ + +MAR 18 RA(H.M) DE(D.M) + ( 1950.0) 5.08667 7.28667 + ( 1987.0) 5.10668 7.31411 + ARCSEC/MIN 5.79682 + POS ANGLE 86 + STEPS 7.21445 HZ + RATIO 5 + FREQ 14.7752 KHZ + +MAR 19 RA(H.M) DE(D.M) + ( 1950.0) 5.18 7.38 + ( 1987.0) 5.20004 7.40252 + ARCSEC/MIN 5.79474 + POS ANGLE 86 + STEPS 7.21187 HZ + RATIO 5 + FREQ 14.7699 KHZ + +MAR 20 RA(H.M) DE(D.M) + ( 1950.0) 5.27333 7.47333 + ( 1987.0) 5.2934 7.49089 + ARCSEC/MIN 5.79262 + POS ANGLE 86 + STEPS 7.20923 HZ + RATIO 5 + FREQ 14.7645 KHZ + +MAR 21 RA(H.M) DE(D.M) + ( 1950.0) 5.36667 7.56667 + ( 1987.0) 5.38676 7.57923 + ARCSEC/MIN 5.79046 + POS ANGLE 86 + STEPS 7.20654 HZ + RATIO 5 + FREQ 14.759 KHZ + +MAR 22 RA(H.M) DE(D.M) + ( 1950.0) 5.46 8.06 + ( 1987.0) 5.48012 8.06754 + ARCSEC/MIN 5.78825 + POS ANGLE 86 + STEPS 7.2038 HZ + RATIO 5 + FREQ 14.7534 KHZ + +MAR 23 RA(H.M) DE(D.M) + ( 1950.0) 5.55333 8.15333 + ( 1987.0) 5.57348 8.15585 + ARCSEC/MIN 5.78601 + POS ANGLE 86 + STEPS 7.201 HZ + RATIO 5 + FREQ 14.7476 KHZ + +MAR 24 RA(H.M) DE(D.M) + ( 1950.0) 6.04667 8.24667 + ( 1987.0) 6.06684 8.24415 + ARCSEC/MIN 5.78372 + POS ANGLE 86 + STEPS 7.19815 HZ + RATIO 5 + FREQ 14.7418 KHZ + +MAR 25 RA(H.M) DE(D.M) + ( 1950.0) 6.14 8.34 + ( 1987.0) 6.16019 8.33246 + ARCSEC/MIN 5.78138 + POS ANGLE 86 + STEPS 7.19525 HZ + RATIO 5 + FREQ 14.7359 KHZ + +MAR 26 RA(H.M) DE(D.M) + ( 1950.0) 6.23333 8.43333 + ( 1987.0) 6.25355 8.42077 + ARCSEC/MIN 5.77901 + POS ANGLE 86 + STEPS 7.19229 HZ + RATIO 5 + FREQ 14.7298 KHZ + +MAR 27 RA(H.M) DE(D.M) + ( 1950.0) 6.32667 8.52667 + ( 1987.0) 6.34689 8.50911 + ARCSEC/MIN 5.77659 + POS ANGLE 86 + STEPS 7.18928 HZ + RATIO 5 + FREQ 14.7236 KHZ + +MAR 28 RA(H.M) DE(D.M) + ( 1950.0) 6.42 9.02 + ( 1987.0) 6.44024 8.59748 + ARCSEC/MIN 5.77413 + POS ANGLE 86 + STEPS 7.18622 HZ + RATIO 5 + FREQ 14.7174 KHZ + +MAR 29 RA(H.M) DE(D.M) + ( 1950.0) 6.51333 9.11333 + ( 1987.0) 6.53359 9.08589 + ARCSEC/MIN 5.77163 + POS ANGLE 86 + STEPS 7.1831 HZ + RATIO 5 + FREQ 14.711 KHZ + +MAR 30 RA(H.M) DE(D.M) + ( 1950.0) 7.00667 9.20667 + ( 1987.0) 7.02693 9.17434 + ARCSEC/MIN 5.76908 + POS ANGLE 86 + STEPS 7.17994 HZ + RATIO 5 + FREQ 14.7045 KHZ diff --git a/SKYTEL/period.80 b/SKYTEL/period.80 new file mode 100644 index 0000000..7949c2f --- /dev/null +++ b/SKYTEL/period.80 @@ -0,0 +1,39 @@ +LONGEST USEFUL PERIOD TO TRY = 44.8735 +LONGEST PERIOD TO TRY THIS RUN ? 31 +COARSE, MEDIUM OR FINE (C,M,F)? C +MAXIMUM NUMBER OF TRIALS ? 24 +THEN SHORTEST ALLOWABLE PERIOD = 11.9741 +SHORTEST PERIOD TO TRY THIS RUN ? 11 +TRIAL # PERIOD FREQUENCY STRENGTH + 1 31 3.22581E-2 3.98498E+8 + 2 28.9968 3.44866E-2 3.98504E+8 + 3 27.2368 .036715 3.98501E+8 + 4 25.6782 3.89435E-2 3.98488E+8 + 5 24.2883 .041172 3.98473E+8 + 6 23.0412 4.34005E-2 3.98467E+8 + 7 21.9159 .045629 3.98478E+8 + 8 20.8954 4.78575E-2 3.98496E+8 + 9 19.9657 .050086 3.98505E+8 + 10 19.1152 5.23144E-2 3.98493E+8 + 11 18.3342 5.45429E-2 3.98467E+8 + 12 17.6145 5.67714E-2 3.98447E+8 + 13 16.9492 5.89999E-2 3.98451E+8 + 14 16.3323 6.12284E-2 3.98476E+8 + 15 15.7587 6.34569E-2 3.98505E+8 + 16 15.2241 6.56854E-2 3.98518E+8 + 17 14.7245 6.79139E-2 3.98509E+8 + 18 14.2567 7.01423E-2 3.98489E+8 + 19 13.8177 7.23708E-2 3.98473E+8 + 20 13.4049 7.45993E-2 3.9847E+8 + 21 13.0161 7.68278E-2 3.98477E+8 + 22 12.6492 7.90563E-2 3.98486E+8 + 23 12.3024 8.12848E-2 3.9849E+8 + 24 11.9741 8.35133E-2 3.98487E+8 + 25 11.6629 8.57417E-2 3.98482E+8 + 26 11.3675 8.79702E-2 3.98477E+8 + 27 11.0866 9.01987E-2 3.98475E+8 + + PERIOD FREQUENCY STRENGTH +AVERAGE 3.98484E+8 +BEST 15.2241 6.56854E-2 3.98518E+8 +AMPLITUDE ESTIMATE = 2753.02 diff --git a/SKYTEL/period.INP b/SKYTEL/period.INP new file mode 100644 index 0000000..d0da546 --- /dev/null +++ b/SKYTEL/period.INP @@ -0,0 +1,4 @@ +31 +C +24 +11 diff --git a/SKYTEL/period.OUT b/SKYTEL/period.OUT new file mode 100644 index 0000000..35ac9c2 --- /dev/null +++ b/SKYTEL/period.OUT @@ -0,0 +1,39 @@ +LONGEST USEFUL PERIOD TO TRY = 44.8735 +LONGEST PERIOD TO TRY THIS RUN ? 31 +COARSE, MEDIUM OR FINE (C,M,F)? C +MAXIMUM NUMBER OF TRIALS ? 24 +THEN SHORTEST ALLOWABLE PERIOD = 11.9741 +SHORTEST PERIOD TO TRY THIS RUN ? 11 +TRIAL # PERIOD FREQUENCY STRENGTH + 1 31 3.22581E-2 3.98498E+8 + 2 28.9968 3.44866E-2 3.98504E+8 + 3 27.2368 .036715 3.98501E+8 + 4 25.6782 3.89435E-2 3.98488E+8 + 5 24.2883 .041172 3.98473E+8 + 6 23.0412 4.34005E-2 3.98467E+8 + 7 21.9159 .045629 3.98478E+8 + 8 20.8954 4.78575E-2 3.98496E+8 + 9 19.9657 .050086 3.98505E+8 + 10 19.1152 5.23144E-2 3.98493E+8 + 11 18.3342 5.45429E-2 3.98467E+8 + 12 17.6145 5.67714E-2 3.98447E+8 + 13 16.9492 5.89999E-2 3.98451E+8 + 14 16.3323 6.12284E-2 3.98476E+8 + 15 15.7587 6.34569E-2 3.98505E+8 + 16 15.2241 6.56854E-2 3.98518E+8 + 17 14.7245 6.79139E-2 3.98509E+8 + 18 14.2567 7.01423E-2 3.98489E+8 + 19 13.8177 7.23708E-2 3.98473E+8 + 20 13.4049 7.45993E-2 3.9847E+8 + 21 13.0161 7.68278E-2 3.98477E+8 + 22 12.6492 7.90563E-2 3.98486E+8 + 23 12.3024 8.12848E-2 3.9849E+8 + 24 11.9741 8.35133E-2 3.98487E+8 + 25 11.6629 8.57417E-2 3.98482E+8 + 26 11.3675 8.79702E-2 3.98477E+8 + 27 11.0866 9.01987E-2 3.98475E+8 + + PERIOD FREQUENCY STRENGTH +AVERAGE 3.98484E+8 +BEST 15.2241 6.56854E-2 3.98518E+8 +AMPLITUDE ESTIMATE = 2753.02 diff --git a/SKYTEL/period.bas b/SKYTEL/period.bas new file mode 100644 index 0000000..40d44cd --- /dev/null +++ b/SKYTEL/period.bas @@ -0,0 +1,76 @@ +10 REM PERIOD SEARCH BY A DISCRETE FOURIER +20 REM TRANSFORM -- MARIA MITCHELL OBSERVATORY +25 REM +30 DIM X(100),Y(100) +40 GOSUB 360 +50 REM +60 REM ***************** THE DFT ***************** +70 REM +80 Z9=0: A5=0: F0=F1-F4: C0=(N-1)/(N*Q) +90 PRINT "TRIAL #";TAB(15);"PERIOD"; +100 PRINT TAB(30);"FREQUENCY";TAB(45);"STRENGTH" +110 FOR K=1 TO M +120 F=F0+K*F4: B=P2*F: C=0: S=0 +130 FOR I=1 TO N +140 A=B*X(I) +150 S=S+Y(I)*SIN(A): C=C+Y(I)*COS(A) +160 NEXT I +170 Z=(C*C+S*S)*C0: A5=A5+Z +180 IF Z<=Z9 THEN 200 +190 Z9=Z: F9=F: REM NEW MAXIMUM STRENGTH +200 IF Z rectangular +1020 SA=SIN(A0): CA=COS(A0) +1030 SD=SIN(D0): CD=COS(D0) +1040 X0=CA*CD: Y0=SA*CD: Z0=SD +1050 REM 3-D transformation +1060 X1=X0*XX+Y0*YX+Z0*ZX +1070 Y1=X0*XY+Y0*YY+Z0*ZY +1080 Z1=X0*XZ+Y0*YZ+Z0*ZZ +1090 REM Rectangular--> spherical +1100 A1=ATN(Y1/X1) +1110 IF X1<0 THEN A1=A1+P1 +1120 IF A1<0 THEN A1=A1+2*P1 +1130 A1=A1/(R1*15): REM Final R.A. +1140 D1=ATN(Z1/SQR(X1*X1+Y1*Y1)) +1150 D1=D1/R1: REM Final Dec. +1160 RETURN +2000 REM +2010 REM This program for pre- +2020 REM cessing a star's coor- +2030 REM dinates is described in +2040 REM Sky & Telescope for +2050 REM October, 1991, page 408. +2060 REM It was written by +2070 REM Zbigniew S. Krzeminski. diff --git a/SKYTEL/precess.dif b/SKYTEL/precess.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/precess.run b/SKYTEL/precess.run new file mode 100644 index 0000000..a80890a --- /dev/null +++ b/SKYTEL/precess.run @@ -0,0 +1,21 @@ +Initial epoch (yr)? 2000 +Final epoch (yr) ? 2015 +Initial epoch 2000 + R.A. (h,m,s)? 1,2,3 + Dec. (d,m,s)? 4,5,6 +Proper motion in + R.A. (sec/yr) ? 7 + Dec. (arcsec/yr)? 8 + +Final epoch 2015 + R.A. (h,m,s): 1 4 34.529 + Dec. (d,m,s): + 4 11 54.92 +Proper motion in + R.A. (sec/yr): 7.0009 + Dec. (arcsec/yr): 7.958 + +Select one: + (A)nother star + (N)ew final epoch + (Q)uit +? Q diff --git a/SKYTEL/profile.bas b/SKYTEL/profile.bas new file mode 100644 index 0000000..c881139 --- /dev/null +++ b/SKYTEL/profile.bas @@ -0,0 +1,2 @@ +OPTION VERSION BYWATER +OPTION LABELS OFF diff --git a/SKYTEL/refr1.80 b/SKYTEL/refr1.80 new file mode 100644 index 0000000..aae1f8a --- /dev/null +++ b/SKYTEL/refr1.80 @@ -0,0 +1,8 @@ +APPARENT ZENITH DIST? 7654 +AIR TEMP (F) ? 87 +REFR INDEX ? 0.9 +HEIGHT (FEET)? 54 +REFRACTION IS -105902. ARC SEC +PATHLENGTH IS 5.594 AIR MASSES +APPAR ZENITH DIST 7654. +REAL ZENITH DIST 7624.58 diff --git a/SKYTEL/refr1.INP b/SKYTEL/refr1.INP new file mode 100644 index 0000000..f35605d --- /dev/null +++ b/SKYTEL/refr1.INP @@ -0,0 +1,4 @@ +7654 +87 +0.9 +54 diff --git a/SKYTEL/refr1.OUT b/SKYTEL/refr1.OUT new file mode 100644 index 0000000..934d649 --- /dev/null +++ b/SKYTEL/refr1.OUT @@ -0,0 +1,8 @@ +APPARENT ZENITH DIST? 7654 +AIR TEMP (F) ? 87 +REFR INDEX ? 0.9 +HEIGHT (FEET)? 54 +REFRACTION IS -105902. ARC SEC +PATHLENGTH IS 5.594 AIR MASSES +APPAR ZENITH DIST 7654. +REAL ZENITH DIST 7624.58 diff --git a/SKYTEL/refr1.bas b/SKYTEL/refr1.bas new file mode 100644 index 0000000..d753cef --- /dev/null +++ b/SKYTEL/refr1.bas @@ -0,0 +1,129 @@ +10 REM REFRACTION +20 REM +30 DEFSNG A-Z: REM <<<<< +40 INPUT "APPARENT ZENITH DIST";Z0 +50 INPUT "AIR TEMP (F) ";T0 +60 INPUT "REFR INDEX ";N0 +70 INPUT "HEIGHT (FEET)";H +80 R0=1: REM PLANET RADIUS +90 M=1: REM PLANET MASS +100 W=28.97: REM MOL WT OF AIR +105 P=3.14159: P2=1.5708 +106 RD=57.2957 +110 REM +120 REM CONVERT TO CGS UNITS +130 Z0=Z0/RD +140 H=H*30.48 +150 T0=(T0-32)/1.8+273.1 +160 W=W*1.665E-24 +170 R0=R0*6.378E+08 +180 M=M*5.976E+27 +190 REM +200 REM CALC ATMOS QUANTITIES AT R0 +210 G=6.67E-08*M/(R0*R0) +220 S=1.38E-16*T0/(G*W) +230 LA=-.4*W*G/1.38E-16 +240 GOSUB 350 +250 REM PRINT RESULTS +260 ZA=Z0*RD +270 ZR=(Z0+RF)*RD +280 RF=RF*3600*RD +290 PRINT "REFRACTION IS ";RF;" ARC SEC" +300 PRINT "PATHLENGTH IS ";AM;" AIR MASSES" +310 PRINT "APPAR ZENITH DIST ";ZA +320 PRINT "REAL ZENITH DIST ";ZR +330 END +340 REM +350 REM REFRACTION SUBR +360 REM +370 N=N0: DH=S/200: IF H<0 THEN DH=-DH +380 H1=0 +390 T=T1: GOSUB 1110: T1=T +400 IF (H1-H)/DH>=0 THEN 450 +410 H1=H1+DH: GOSUB 1110 +420 EX=-1-(T0/(S*LR)) +430 N=1+(N-1)*((T/T1)^EX) +440 T1=T: GOTO 400 +450 REM INITIALIZE PARAMETERS +460 RF=0: L=0: LZ=0: R=R0+H +470 L1=LR: Z=Z0 +480 REM +490 REM LAYER THICKNESS +500 IF R>R0+H+5*S THEN DR=S/10 +510 IF R<=R0+H+5*S THEN DR=S/20 +520 IF R<=R0+H+2*S THEN DR=S/50 +530 IF R<=R0+H+.2*S THEN DR=S/200 +540 F=1-DR/R: GOSUB 1170 : ZG=P-F +550 IF Z<=P2 THEN IN=1 +560 IF Z>P2 THEN IN=0 +570 IF Z>ZG THEN IN=-1 +580 REM INDEX OF REFR FOR SHELL +590 H1=R-R0: GOSUB 1110 +600 T1=T-L1*DR*IN +610 EX=-1-(T0/(S*L1)) +620 N=1+(N-1)*((T/T1)^EX) +630 L1=LR +640 IF IN=-1 THEN 690 +650 IF IN=0 THEN 840 +660 IF IN=1 THEN 940 +670 REM +680 REM +690 REM INWARD RAY +700 T1=T-LR*DR +710 N1=1+(N-1)*((T1/T)^EX) +720 T2=T-LR*DR*2 +730 N2=1+(N-1)*((T2/T)^EX) +740 F=SIN(Z)*R/(R-DR): GOSUB 1170 : A=P-F +750 L=L+(N1-1)*R*SIN(Z-A)/SIN(A) +760 IF SIN(A)>N2/N1 THEN 800 +770 F=SIN(A)*N1/N2: GOSUB 1170 : Z=P-F +780 RF=RF+(Z-A) +790 GOTO 820 +800 Z=P-A +810 RF=RF-(P-2*Z) +820 GOTO 1050 +830 REM +840 REM GRAZING RAY +850 T1=T-LR*DR +860 N1=1+(N-1)*((T1/T)^EX) +870 A=P-Z +880 L=L+(N1-1)*(-2)*R*COS(Z) +890 F=SIN(A)*N1/N: IF F>1 THEN F=1 +900 GOSUB 1170 : Z=F +910 RF=RF+(Z-A) +920 GOTO 1050 +930 REM +940 REM OUTGOING RAY +950 T2=T+LR*DR +960 N2=1+(N-1)*((T2/T)^EX) +970 F=SIN(Z)*R/(R+DR): GOSUB 1170 : A=F +980 L=L+(N-1)*R*SIN(Z-A)/SIN(A) +990 IF R>=R0+H THEN LZ=LZ+(N-1)*DR +1000 IF SIN(A)>N2/N THEN 1020 +1010 F=SIN(A)*N/N2: GOSUB 1170 : Z=F: GOTO 1030 +1020 Z=P-A +1030 RF=RF+(Z-A) +1040 REM +1050 REM END SUBROUTINE +1060 R=R+DR*IN +1070 IF R<=R0+8*S THEN 490 +1080 AM=L/LZ +1090 RETURN +1100 REM +1110 REM TEMPERATURE SUBR +1120 LR=.5*LA: T=T0+LR*H1 +1130 IF H1<=2*S THEN 1150 +1135 LR=-.16*LA +1140 T=T0+S*LA+LR*(H1-2*S) +1150 RETURN +1160 REM +1170 REM ARC SINE FUNCTION +1180 IF F<1 THEN 1200 +1190 F=P2: GOTO 1210 +1200 F=ATN(F/SQR(1-F*F)) +1210 RETURN +1220 REM +1230 REM ************************************ +1240 REM APPEARED IN ASTRONOMICAL COMPUTING +1250 REM SKY & TELESCOPE - MARCH 1989 ISSUE +1260 REM ************************************ \ No newline at end of file diff --git a/SKYTEL/refr1.dif b/SKYTEL/refr1.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/refr1.run b/SKYTEL/refr1.run new file mode 100644 index 0000000..aae1f8a --- /dev/null +++ b/SKYTEL/refr1.run @@ -0,0 +1,8 @@ +APPARENT ZENITH DIST? 7654 +AIR TEMP (F) ? 87 +REFR INDEX ? 0.9 +HEIGHT (FEET)? 54 +REFRACTION IS -105902. ARC SEC +PATHLENGTH IS 5.594 AIR MASSES +APPAR ZENITH DIST 7654. +REAL ZENITH DIST 7624.58 diff --git a/SKYTEL/rocket.80 b/SKYTEL/rocket.80 new file mode 100644 index 0000000..5ff04e0 --- /dev/null +++ b/SKYTEL/rocket.80 @@ -0,0 +1,4 @@ +Distance in light-years (0-100 million)? 56 +Time on Earth: 57.906 +Time on board: 7.928 +Top speed: 0.999440 diff --git a/SKYTEL/rocket.INP b/SKYTEL/rocket.INP new file mode 100644 index 0000000..f6b91e0 --- /dev/null +++ b/SKYTEL/rocket.INP @@ -0,0 +1 @@ +56 diff --git a/SKYTEL/rocket.OUT b/SKYTEL/rocket.OUT new file mode 100644 index 0000000..dd27a99 --- /dev/null +++ b/SKYTEL/rocket.OUT @@ -0,0 +1,4 @@ +Distance in light-years (0-100 million)? 56 +Time on Earth: 57.906 +Time on board: 7.928 +Top speed: 0.999440 diff --git a/SKYTEL/rocket.bas b/SKYTEL/rocket.bas new file mode 100644 index 0000000..e2d8fa7 --- /dev/null +++ b/SKYTEL/rocket.bas @@ -0,0 +1,36 @@ +10 REM ROCKET.BAS by Brian Tung +20 REM +30 DEFDBL A-Z +40 A=1.032: REM Earth gravity in light-years per year squared +50 INPUT "Distance in light-years (0-100 million)"; D +60 IF D>=0 AND D<=100000000 THEN 80 +70 PRINT "Distance must be between 0 and 100 million l-y": GOTO 50 +80 D1=D/2 +90 T=SQR(D1*D1+(2*D1/A)) +100 X=A*T +110 M=1: REM Lines 110-180 compute inverse sinh +120 IF X<0 THEN M=-1 +130 S=LOG(ABS(X)+1) +140 S1=S+1 +150 X1=(EXP(S)-EXP(-S))/2-ABS(X) +160 S1=X1/(EXP(S)+EXP(-S))/2 +170 S=S-S1 +180 IF ABS(S1)>.0000001 THEN 150 +190 T1=1/A*S*M +200 V=A*T/SQR(1+(A*T)*(A*T)) +210 PRINT USING "Time on Earth: #########.### years"; 2*T +220 PRINT USING "Time on board: #########.### years"; 2*T1 +230 Z$ = "Top speed: #.###" +240 IF D<1 THEN 280 +250 Z1=INT(2*LOG(D)/LOG(10)) +260 IF D>=1 AND D<10000000 THEN Z$=Z$+STRING$(Z1,"#") +270 IF D>=10000000 THEN Z$=Z$+"#############" +280 Z$=Z$+" c" +290 PRINT USING Z$; V +300 END +900 REM --------------------------- +910 REM APPEARED IN COMPUTERS IN +920 REM ASTRONOMY, SKY & TELESCOPE, +930 REM FEBRUARY 2002, PAGE 66 +940 REM --------------------------- + diff --git a/SKYTEL/rocket.dif b/SKYTEL/rocket.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/rocket.run b/SKYTEL/rocket.run new file mode 100644 index 0000000..5ff04e0 --- /dev/null +++ b/SKYTEL/rocket.run @@ -0,0 +1,4 @@ +Distance in light-years (0-100 million)? 56 +Time on Earth: 57.906 +Time on board: 7.928 +Top speed: 0.999440 diff --git a/SKYTEL/rotate.80 b/SKYTEL/rotate.80 new file mode 100644 index 0000000..1f582e0 --- /dev/null +++ b/SKYTEL/rotate.80 @@ -0,0 +1,1384 @@ +Observer's latitude (deg) ? 147 +Day of the month (1-31)? 6 +Month (1-12) ? 3 +Right ascension (h,m) ? 9,54 +Declination (deg) ? 76 + +From (h,m): ? 7,54 +To (h,m): ? 6,43 + +Positive rotation rates are clockwise: + 7h 55 Rotation -0.27 + 7h 56 Rotation -0.28 + 7h 57 Rotation -0.28 + 7h 58 Rotation -0.28 + 7h 59 Rotation -0.28 + 8h 0 Rotation -0.28 + 8h 1 Rotation -0.28 + 8h 2 Rotation -0.28 + 8h 3 Rotation -0.28 + 8h 4 Rotation -0.28 + 8h 5 Rotation -0.28 + 8h 6 Rotation -0.28 + 8h 7 Rotation -0.28 + 8h 8 Rotation -0.28 + 8h 9 Rotation -0.28 + 8h 10 Rotation -0.28 + 8h 11 Rotation -0.28 + 8h 12 Rotation -0.28 + 8h 13 Rotation -0.28 + 8h 14 Rotation -0.28 + 8h 15 Rotation -0.28 + 8h 16 Rotation -0.28 + 8h 17 Rotation -0.28 + 8h 18 Rotation -0.28 + 8h 19 Rotation -0.28 + 8h 20 Rotation -0.28 + 8h 21 Rotation -0.28 + 8h 22 Rotation -0.28 + 8h 23 Rotation -0.28 + 8h 24 Rotation -0.28 + 8h 25 Rotation -0.28 + 8h 26 Rotation -0.28 + 8h 27 Rotation -0.28 + 8h 28 Rotation -0.28 + 8h 29 Rotation -0.28 + 8h 30 Rotation -0.28 + 8h 31 Rotation -0.28 + 8h 32 Rotation -0.28 + 8h 33 Rotation -0.28 + 8h 34 Rotation -0.29 + 8h 35 Rotation -0.29 + 8h 36 Rotation -0.29 + 8h 37 Rotation -0.29 + 8h 38 Rotation -0.29 + 8h 39 Rotation -0.29 + 8h 40 Rotation -0.29 + 8h 41 Rotation -0.29 + 8h 42 Rotation -0.29 + 8h 43 Rotation -0.29 + 8h 44 Rotation -0.29 + 8h 45 Rotation -0.29 + 8h 46 Rotation -0.29 + 8h 47 Rotation -0.29 + 8h 48 Rotation -0.29 + 8h 49 Rotation -0.29 + 8h 50 Rotation -0.29 + 8h 51 Rotation -0.29 + 8h 52 Rotation -0.29 + 8h 53 Rotation -0.29 + 8h 54 Rotation -0.29 + 8h 55 Rotation -0.29 + 8h 56 Rotation -0.29 + 8h 57 Rotation -0.29 + 8h 58 Rotation -0.29 + 8h 59 Rotation -0.29 + 9h 0 Rotation -0.29 + 9h 1 Rotation -0.29 + 9h 2 Rotation -0.29 + 9h 3 Rotation -0.29 + 9h 4 Rotation -0.29 + 9h 5 Rotation -0.29 + 9h 6 Rotation -0.29 + 9h 7 Rotation -0.29 + 9h 8 Rotation -0.29 + 9h 9 Rotation -0.29 + 9h 10 Rotation -0.29 + 9h 11 Rotation -0.29 + 9h 12 Rotation -0.29 + 9h 13 Rotation -0.29 + 9h 14 Rotation -0.30 + 9h 15 Rotation -0.30 + 9h 16 Rotation -0.30 + 9h 17 Rotation -0.30 + 9h 18 Rotation -0.30 + 9h 19 Rotation -0.30 + 9h 20 Rotation -0.30 + 9h 21 Rotation -0.30 + 9h 22 Rotation -0.30 + 9h 23 Rotation -0.30 + 9h 24 Rotation -0.30 + 9h 25 Rotation -0.30 + 9h 26 Rotation -0.30 + 9h 27 Rotation -0.30 + 9h 28 Rotation -0.30 + 9h 29 Rotation -0.30 + 9h 30 Rotation -0.30 + 9h 31 Rotation -0.30 + 9h 32 Rotation -0.30 + 9h 33 Rotation -0.30 + 9h 34 Rotation -0.30 + 9h 35 Rotation -0.30 + 9h 36 Rotation -0.30 + 9h 37 Rotation -0.30 + 9h 38 Rotation -0.30 + 9h 39 Rotation -0.30 + 9h 40 Rotation -0.30 + 9h 41 Rotation -0.30 + 9h 42 Rotation -0.30 + 9h 43 Rotation -0.30 + 9h 44 Rotation -0.30 + 9h 45 Rotation -0.30 + 9h 46 Rotation -0.30 + 9h 47 Rotation -0.30 + 9h 48 Rotation -0.30 + 9h 49 Rotation -0.30 + 9h 50 Rotation -0.30 + 9h 51 Rotation -0.30 + 9h 52 Rotation -0.30 + 9h 53 Rotation -0.30 + 9h 54 Rotation -0.30 + 9h 55 Rotation -0.30 + 9h 56 Rotation -0.30 + 9h 57 Rotation -0.30 + 9h 58 Rotation -0.30 + 9h 59 Rotation -0.30 + 10h 0 Rotation -0.30 + 10h 1 Rotation -0.30 + 10h 2 Rotation -0.30 + 10h 3 Rotation -0.30 + 10h 4 Rotation -0.30 + 10h 5 Rotation -0.30 + 10h 6 Rotation -0.30 + 10h 7 Rotation -0.30 + 10h 8 Rotation -0.30 + 10h 9 Rotation -0.30 + 10h 10 Rotation -0.31 + 10h 11 Rotation -0.31 + 10h 12 Rotation -0.31 + 10h 13 Rotation -0.31 + 10h 14 Rotation -0.31 + 10h 15 Rotation -0.31 + 10h 16 Rotation -0.31 + 10h 17 Rotation -0.31 + 10h 18 Rotation -0.31 + 10h 19 Rotation -0.31 + 10h 20 Rotation -0.31 + 10h 21 Rotation -0.31 + 10h 22 Rotation -0.31 + 10h 23 Rotation -0.31 + 10h 24 Rotation -0.31 + 10h 25 Rotation -0.31 + 10h 26 Rotation -0.31 + 10h 27 Rotation -0.31 + 10h 28 Rotation -0.31 + 10h 29 Rotation -0.31 + 10h 30 Rotation -0.31 + 10h 31 Rotation -0.31 + 10h 32 Rotation -0.31 + 10h 33 Rotation -0.31 + 10h 34 Rotation -0.31 + 10h 35 Rotation -0.31 + 10h 36 Rotation -0.31 + 10h 37 Rotation -0.31 + 10h 38 Rotation -0.31 + 10h 39 Rotation -0.31 + 10h 40 Rotation -0.31 + 10h 41 Rotation -0.31 + 10h 42 Rotation -0.31 + 10h 43 Rotation -0.31 + 10h 44 Rotation -0.31 + 10h 45 Rotation -0.31 + 10h 46 Rotation -0.31 + 10h 47 Rotation -0.31 + 10h 48 Rotation -0.31 + 10h 49 Rotation -0.31 + 10h 50 Rotation -0.31 + 10h 51 Rotation -0.31 + 10h 52 Rotation -0.31 + 10h 53 Rotation -0.31 + 10h 54 Rotation -0.31 + 10h 55 Rotation -0.31 + 10h 56 Rotation -0.31 + 10h 57 Rotation -0.31 + 10h 58 Rotation -0.31 + 10h 59 Rotation -0.31 + 11h 0 Rotation -0.31 + 11h 1 Rotation -0.31 + 11h 2 Rotation -0.31 + 11h 3 Rotation -0.31 + 11h 4 Rotation -0.31 + 11h 5 Rotation -0.31 + 11h 6 Rotation -0.31 + 11h 7 Rotation -0.31 + 11h 8 Rotation -0.31 + 11h 9 Rotation -0.31 + 11h 10 Rotation -0.31 + 11h 11 Rotation -0.31 + 11h 12 Rotation -0.31 + 11h 13 Rotation -0.31 + 11h 14 Rotation -0.31 + 11h 15 Rotation -0.31 + 11h 16 Rotation -0.31 + 11h 17 Rotation -0.31 + 11h 18 Rotation -0.31 + 11h 19 Rotation -0.31 + 11h 20 Rotation -0.31 + 11h 21 Rotation -0.31 + 11h 22 Rotation -0.31 + 11h 23 Rotation -0.31 + 11h 24 Rotation -0.31 + 11h 25 Rotation -0.31 + 11h 26 Rotation -0.31 + 11h 27 Rotation -0.31 + 11h 28 Rotation -0.31 + 11h 29 Rotation -0.31 + 11h 30 Rotation -0.31 + 11h 31 Rotation -0.31 + 11h 32 Rotation -0.31 + 11h 33 Rotation -0.31 + 11h 34 Rotation -0.31 + 11h 35 Rotation -0.31 + 11h 36 Rotation -0.31 + 11h 37 Rotation -0.31 + 11h 38 Rotation -0.31 + 11h 39 Rotation -0.31 + 11h 40 Rotation -0.31 + 11h 41 Rotation -0.31 + 11h 42 Rotation -0.31 + 11h 43 Rotation -0.31 + 11h 44 Rotation -0.31 + 11h 45 Rotation -0.31 + 11h 46 Rotation -0.31 + 11h 47 Rotation -0.31 + 11h 48 Rotation -0.31 + 11h 49 Rotation -0.31 + 11h 50 Rotation -0.31 + 11h 51 Rotation -0.30 + 11h 52 Rotation -0.30 + 11h 53 Rotation -0.30 + 11h 54 Rotation -0.30 + 11h 55 Rotation -0.30 + 11h 56 Rotation -0.30 + 11h 57 Rotation -0.30 + 11h 58 Rotation -0.30 + 11h 59 Rotation -0.30 + 12h 0 Rotation -0.30 + 12h 1 Rotation -0.30 + 12h 2 Rotation -0.30 + 12h 3 Rotation -0.30 + 12h 4 Rotation -0.30 + 12h 5 Rotation -0.30 + 12h 6 Rotation -0.30 + 12h 7 Rotation -0.30 + 12h 8 Rotation -0.30 + 12h 9 Rotation -0.30 + 12h 10 Rotation -0.30 + 12h 11 Rotation -0.30 + 12h 12 Rotation -0.30 + 12h 13 Rotation -0.30 + 12h 14 Rotation -0.30 + 12h 15 Rotation -0.30 + 12h 16 Rotation -0.30 + 12h 17 Rotation -0.30 + 12h 18 Rotation -0.30 + 12h 19 Rotation -0.30 + 12h 20 Rotation -0.30 + 12h 21 Rotation -0.30 + 12h 22 Rotation -0.30 + 12h 23 Rotation -0.30 + 12h 24 Rotation -0.30 + 12h 25 Rotation -0.30 + 12h 26 Rotation -0.30 + 12h 27 Rotation -0.30 + 12h 28 Rotation -0.30 + 12h 29 Rotation -0.30 + 12h 30 Rotation -0.30 + 12h 31 Rotation -0.30 + 12h 32 Rotation -0.30 + 12h 33 Rotation -0.30 + 12h 34 Rotation -0.30 + 12h 35 Rotation -0.30 + 12h 36 Rotation -0.30 + 12h 37 Rotation -0.30 + 12h 38 Rotation -0.30 + 12h 39 Rotation -0.30 + 12h 40 Rotation -0.30 + 12h 41 Rotation -0.30 + 12h 42 Rotation -0.30 + 12h 43 Rotation -0.30 + 12h 44 Rotation -0.30 + 12h 45 Rotation -0.30 + 12h 46 Rotation -0.29 + 12h 47 Rotation -0.29 + 12h 48 Rotation -0.29 + 12h 49 Rotation -0.29 + 12h 50 Rotation -0.29 + 12h 51 Rotation -0.29 + 12h 52 Rotation -0.29 + 12h 53 Rotation -0.29 + 12h 54 Rotation -0.29 + 12h 55 Rotation -0.29 + 12h 56 Rotation -0.29 + 12h 57 Rotation -0.29 + 12h 58 Rotation -0.29 + 12h 59 Rotation -0.29 + 13h 0 Rotation -0.29 + 13h 1 Rotation -0.29 + 13h 2 Rotation -0.29 + 13h 3 Rotation -0.29 + 13h 4 Rotation -0.29 + 13h 5 Rotation -0.29 + 13h 6 Rotation -0.29 + 13h 7 Rotation -0.29 + 13h 8 Rotation -0.29 + 13h 9 Rotation -0.29 + 13h 10 Rotation -0.29 + 13h 11 Rotation -0.29 + 13h 12 Rotation -0.29 + 13h 13 Rotation -0.29 + 13h 14 Rotation -0.29 + 13h 15 Rotation -0.29 + 13h 16 Rotation -0.29 + 13h 17 Rotation -0.29 + 13h 18 Rotation -0.29 + 13h 19 Rotation -0.29 + 13h 20 Rotation -0.29 + 13h 21 Rotation -0.29 + 13h 22 Rotation -0.29 + 13h 23 Rotation -0.29 + 13h 24 Rotation -0.29 + 13h 25 Rotation -0.29 + 13h 26 Rotation -0.29 + 13h 27 Rotation -0.28 + 13h 28 Rotation -0.28 + 13h 29 Rotation -0.28 + 13h 30 Rotation -0.28 + 13h 31 Rotation -0.28 + 13h 32 Rotation -0.28 + 13h 33 Rotation -0.28 + 13h 34 Rotation -0.28 + 13h 35 Rotation -0.28 + 13h 36 Rotation -0.28 + 13h 37 Rotation -0.28 + 13h 38 Rotation -0.28 + 13h 39 Rotation -0.28 + 13h 40 Rotation -0.28 + 13h 41 Rotation -0.28 + 13h 42 Rotation -0.28 + 13h 43 Rotation -0.28 + 13h 44 Rotation -0.28 + 13h 45 Rotation -0.28 + 13h 46 Rotation -0.28 + 13h 47 Rotation -0.28 + 13h 48 Rotation -0.28 + 13h 49 Rotation -0.28 + 13h 50 Rotation -0.28 + 13h 51 Rotation -0.28 + 13h 52 Rotation -0.28 + 13h 53 Rotation -0.28 + 13h 54 Rotation -0.28 + 13h 55 Rotation -0.28 + 13h 56 Rotation -0.28 + 13h 57 Rotation -0.28 + 13h 58 Rotation -0.28 + 13h 59 Rotation -0.28 + 14h 0 Rotation -0.28 + 14h 1 Rotation -0.28 + 14h 2 Rotation -0.28 + 14h 3 Rotation -0.28 + 14h 4 Rotation -0.27 + 14h 5 Rotation -0.27 + 14h 6 Rotation -0.27 + 14h 7 Rotation -0.27 + 14h 8 Rotation -0.27 + 14h 9 Rotation -0.27 + 14h 10 Rotation -0.27 + 14h 11 Rotation -0.27 + 14h 12 Rotation -0.27 + 14h 13 Rotation -0.27 + 14h 14 Rotation -0.27 + 14h 15 Rotation -0.27 + 14h 16 Rotation -0.27 + 14h 17 Rotation -0.27 + 14h 18 Rotation -0.27 + 14h 19 Rotation -0.27 + 14h 20 Rotation -0.27 + 14h 21 Rotation -0.27 + 14h 22 Rotation -0.27 + 14h 23 Rotation -0.27 + 14h 24 Rotation -0.27 + 14h 25 Rotation -0.27 + 14h 26 Rotation -0.27 + 14h 27 Rotation -0.27 + 14h 28 Rotation -0.27 + 14h 29 Rotation -0.27 + 14h 30 Rotation -0.27 + 14h 31 Rotation -0.27 + 14h 32 Rotation -0.27 + 14h 33 Rotation -0.27 + 14h 34 Rotation -0.27 + 14h 35 Rotation -0.27 + 14h 36 Rotation -0.27 + 14h 37 Rotation -0.27 + 14h 38 Rotation -0.27 + 14h 39 Rotation -0.27 + 14h 40 Rotation -0.27 + 14h 41 Rotation -0.27 + 14h 42 Rotation -0.26 + 14h 43 Rotation -0.26 + 14h 44 Rotation -0.26 + 14h 45 Rotation -0.26 + 14h 46 Rotation -0.26 + 14h 47 Rotation -0.26 + 14h 48 Rotation -0.26 + 14h 49 Rotation -0.26 + 14h 50 Rotation -0.26 + 14h 51 Rotation -0.26 + 14h 52 Rotation -0.26 + 14h 53 Rotation -0.26 + 14h 54 Rotation -0.26 + 14h 55 Rotation -0.26 + 14h 56 Rotation -0.26 + 14h 57 Rotation -0.26 + 14h 58 Rotation -0.26 + 14h 59 Rotation -0.26 + 15h 0 Rotation -0.26 + 15h 1 Rotation -0.26 + 15h 2 Rotation -0.26 + 15h 3 Rotation -0.26 + 15h 4 Rotation -0.26 + 15h 5 Rotation -0.26 + 15h 6 Rotation -0.26 + 15h 7 Rotation -0.26 + 15h 8 Rotation -0.26 + 15h 9 Rotation -0.26 + 15h 10 Rotation -0.26 + 15h 11 Rotation -0.26 + 15h 12 Rotation -0.26 + 15h 13 Rotation -0.26 + 15h 14 Rotation -0.26 + 15h 15 Rotation -0.26 + 15h 16 Rotation -0.26 + 15h 17 Rotation -0.26 + 15h 18 Rotation -0.26 + 15h 19 Rotation -0.26 + 15h 20 Rotation -0.26 + 15h 21 Rotation -0.26 + 15h 22 Rotation -0.26 + 15h 23 Rotation -0.26 + 15h 24 Rotation -0.25 + 15h 25 Rotation -0.25 + 15h 26 Rotation -0.25 + 15h 27 Rotation -0.25 + 15h 28 Rotation -0.25 + 15h 29 Rotation -0.25 + 15h 30 Rotation -0.25 + 15h 31 Rotation -0.25 + 15h 32 Rotation -0.25 + 15h 33 Rotation -0.25 + 15h 34 Rotation -0.25 + 15h 35 Rotation -0.25 + 15h 36 Rotation -0.25 + 15h 37 Rotation -0.25 + 15h 38 Rotation -0.25 + 15h 39 Rotation -0.25 + 15h 40 Rotation -0.25 + 15h 41 Rotation -0.25 + 15h 42 Rotation -0.25 + 15h 43 Rotation -0.25 + 15h 44 Rotation -0.25 + 15h 45 Rotation -0.25 + 15h 46 Rotation -0.25 + 15h 47 Rotation -0.25 + 15h 48 Rotation -0.25 + 15h 49 Rotation -0.25 + 15h 50 Rotation -0.25 + 15h 51 Rotation -0.25 + 15h 52 Rotation -0.25 + 15h 53 Rotation -0.25 + 15h 54 Rotation -0.25 + 15h 55 Rotation -0.25 + 15h 56 Rotation -0.25 + 15h 57 Rotation -0.25 + 15h 58 Rotation -0.25 + 15h 59 Rotation -0.25 + 16h 0 Rotation -0.25 + 16h 1 Rotation -0.25 + 16h 2 Rotation -0.25 + 16h 3 Rotation -0.25 + 16h 4 Rotation -0.25 + 16h 5 Rotation -0.25 + 16h 6 Rotation -0.25 + 16h 7 Rotation -0.25 + 16h 8 Rotation -0.25 + 16h 9 Rotation -0.25 + 16h 10 Rotation -0.25 + 16h 11 Rotation -0.25 + 16h 12 Rotation -0.24 + 16h 13 Rotation -0.24 + 16h 14 Rotation -0.24 + 16h 15 Rotation -0.24 + 16h 16 Rotation -0.24 + 16h 17 Rotation -0.24 + 16h 18 Rotation -0.24 + 16h 19 Rotation -0.24 + 16h 20 Rotation -0.24 + 16h 21 Rotation -0.24 + 16h 22 Rotation -0.24 + 16h 23 Rotation -0.24 + 16h 24 Rotation -0.24 + 16h 25 Rotation -0.24 + 16h 26 Rotation -0.24 + 16h 27 Rotation -0.24 + 16h 28 Rotation -0.24 + 16h 29 Rotation -0.24 + 16h 30 Rotation -0.24 + 16h 31 Rotation -0.24 + 16h 32 Rotation -0.24 + 16h 33 Rotation -0.24 + 16h 34 Rotation -0.24 + 16h 35 Rotation -0.24 + 16h 36 Rotation -0.24 + 16h 37 Rotation -0.24 + 16h 38 Rotation -0.24 + 16h 39 Rotation -0.24 + 16h 40 Rotation -0.24 + 16h 41 Rotation -0.24 + 16h 42 Rotation -0.24 + 16h 43 Rotation -0.24 + 16h 44 Rotation -0.24 + 16h 45 Rotation -0.24 + 16h 46 Rotation -0.24 + 16h 47 Rotation -0.24 + 16h 48 Rotation -0.24 + 16h 49 Rotation -0.24 + 16h 50 Rotation -0.24 + 16h 51 Rotation -0.24 + 16h 52 Rotation -0.24 + 16h 53 Rotation -0.24 + 16h 54 Rotation -0.24 + 16h 55 Rotation -0.24 + 16h 56 Rotation -0.24 + 16h 57 Rotation -0.24 + 16h 58 Rotation -0.24 + 16h 59 Rotation -0.24 + 17h 0 Rotation -0.24 + 17h 1 Rotation -0.24 + 17h 2 Rotation -0.24 + 17h 3 Rotation -0.24 + 17h 4 Rotation -0.24 + 17h 5 Rotation -0.24 + 17h 6 Rotation -0.24 + 17h 7 Rotation -0.24 + 17h 8 Rotation -0.24 + 17h 9 Rotation -0.24 + 17h 10 Rotation -0.24 + 17h 11 Rotation -0.24 + 17h 12 Rotation -0.24 + 17h 13 Rotation -0.24 + 17h 14 Rotation -0.24 + 17h 15 Rotation -0.24 + 17h 16 Rotation -0.24 + 17h 17 Rotation -0.23 + 17h 18 Rotation -0.23 + 17h 19 Rotation -0.23 + 17h 20 Rotation -0.23 + 17h 21 Rotation -0.23 + 17h 22 Rotation -0.23 + 17h 23 Rotation -0.23 + 17h 24 Rotation -0.23 + 17h 25 Rotation -0.23 + 17h 26 Rotation -0.23 + 17h 27 Rotation -0.23 + 17h 28 Rotation -0.23 + 17h 29 Rotation -0.23 + 17h 30 Rotation -0.23 + 17h 31 Rotation -0.23 + 17h 32 Rotation -0.23 + 17h 33 Rotation -0.23 + 17h 34 Rotation -0.23 + 17h 35 Rotation -0.23 + 17h 36 Rotation -0.23 + 17h 37 Rotation -0.23 + 17h 38 Rotation -0.23 + 17h 39 Rotation -0.23 + 17h 40 Rotation -0.23 + 17h 41 Rotation -0.23 + 17h 42 Rotation -0.23 + 17h 43 Rotation -0.23 + 17h 44 Rotation -0.23 + 17h 45 Rotation -0.23 + 17h 46 Rotation -0.23 + 17h 47 Rotation -0.23 + 17h 48 Rotation -0.23 + 17h 49 Rotation -0.23 + 17h 50 Rotation -0.23 + 17h 51 Rotation -0.23 + 17h 52 Rotation -0.23 + 17h 53 Rotation -0.23 + 17h 54 Rotation -0.23 + 17h 55 Rotation -0.23 + 17h 56 Rotation -0.23 + 17h 57 Rotation -0.23 + 17h 58 Rotation -0.23 + 17h 59 Rotation -0.23 + 18h 0 Rotation -0.23 + 18h 1 Rotation -0.23 + 18h 2 Rotation -0.23 + 18h 3 Rotation -0.23 + 18h 4 Rotation -0.23 + 18h 5 Rotation -0.23 + 18h 6 Rotation -0.23 + 18h 7 Rotation -0.23 + 18h 8 Rotation -0.23 + 18h 9 Rotation -0.23 + 18h 10 Rotation -0.23 + 18h 11 Rotation -0.23 + 18h 12 Rotation -0.23 + 18h 13 Rotation -0.23 + 18h 14 Rotation -0.23 + 18h 15 Rotation -0.23 + 18h 16 Rotation -0.23 + 18h 17 Rotation -0.23 + 18h 18 Rotation -0.23 + 18h 19 Rotation -0.23 + 18h 20 Rotation -0.23 + 18h 21 Rotation -0.23 + 18h 22 Rotation -0.23 + 18h 23 Rotation -0.23 + 18h 24 Rotation -0.23 + 18h 25 Rotation -0.23 + 18h 26 Rotation -0.23 + 18h 27 Rotation -0.23 + 18h 28 Rotation -0.23 + 18h 29 Rotation -0.23 + 18h 30 Rotation -0.23 + 18h 31 Rotation -0.23 + 18h 32 Rotation -0.23 + 18h 33 Rotation -0.23 + 18h 34 Rotation -0.23 + 18h 35 Rotation -0.23 + 18h 36 Rotation -0.23 + 18h 37 Rotation -0.23 + 18h 38 Rotation -0.23 + 18h 39 Rotation -0.23 + 18h 40 Rotation -0.23 + 18h 41 Rotation -0.23 + 18h 42 Rotation -0.23 + 18h 43 Rotation -0.23 + 18h 44 Rotation -0.23 + 18h 45 Rotation -0.23 + 18h 46 Rotation -0.23 + 18h 47 Rotation -0.23 + 18h 48 Rotation -0.23 + 18h 49 Rotation -0.23 + 18h 50 Rotation -0.23 + 18h 51 Rotation -0.23 + 18h 52 Rotation -0.23 + 18h 53 Rotation -0.23 + 18h 54 Rotation -0.23 + 18h 55 Rotation -0.23 + 18h 56 Rotation -0.23 + 18h 57 Rotation -0.23 + 18h 58 Rotation -0.23 + 18h 59 Rotation -0.23 + 19h 0 Rotation -0.23 + 19h 1 Rotation -0.23 + 19h 2 Rotation -0.23 + 19h 3 Rotation -0.23 + 19h 4 Rotation -0.23 + 19h 5 Rotation -0.23 + 19h 6 Rotation -0.23 + 19h 7 Rotation -0.23 + 19h 8 Rotation -0.23 + 19h 9 Rotation -0.23 + 19h 10 Rotation -0.23 + 19h 11 Rotation -0.23 + 19h 12 Rotation -0.23 + 19h 13 Rotation -0.23 + 19h 14 Rotation -0.23 + 19h 15 Rotation -0.23 + 19h 16 Rotation -0.23 + 19h 17 Rotation -0.23 + 19h 18 Rotation -0.23 + 19h 19 Rotation -0.23 + 19h 20 Rotation -0.23 + 19h 21 Rotation -0.23 + 19h 22 Rotation -0.23 + 19h 23 Rotation -0.23 + 19h 24 Rotation -0.22 + 19h 25 Rotation -0.22 + 19h 26 Rotation -0.22 + 19h 27 Rotation -0.22 + 19h 28 Rotation -0.22 + 19h 29 Rotation -0.22 + 19h 30 Rotation -0.22 + 19h 31 Rotation -0.22 + 19h 32 Rotation -0.22 + 19h 33 Rotation -0.22 + 19h 34 Rotation -0.22 + 19h 35 Rotation -0.22 + 19h 36 Rotation -0.22 + 19h 37 Rotation -0.22 + 19h 38 Rotation -0.22 + 19h 39 Rotation -0.22 + 19h 40 Rotation -0.22 + 19h 41 Rotation -0.22 + 19h 42 Rotation -0.22 + 19h 43 Rotation -0.22 + 19h 44 Rotation -0.22 + 19h 45 Rotation -0.22 + 19h 46 Rotation -0.22 + 19h 47 Rotation -0.22 + 19h 48 Rotation -0.22 + 19h 49 Rotation -0.22 + 19h 50 Rotation -0.22 + 19h 51 Rotation -0.22 + 19h 52 Rotation -0.22 + 19h 53 Rotation -0.22 + 19h 54 Rotation -0.22 + 19h 55 Rotation -0.22 + 19h 56 Rotation -0.22 + 19h 57 Rotation -0.22 + 19h 58 Rotation -0.22 + 19h 59 Rotation -0.22 + 20h 0 Rotation -0.22 + 20h 1 Rotation -0.22 + 20h 2 Rotation -0.22 + 20h 3 Rotation -0.22 + 20h 4 Rotation -0.22 + 20h 5 Rotation -0.22 + 20h 6 Rotation -0.22 + 20h 7 Rotation -0.22 + 20h 8 Rotation -0.22 + 20h 9 Rotation -0.22 + 20h 10 Rotation -0.22 + 20h 11 Rotation -0.22 + 20h 12 Rotation -0.22 + 20h 13 Rotation -0.22 + 20h 14 Rotation -0.22 + 20h 15 Rotation -0.22 + 20h 16 Rotation -0.22 + 20h 17 Rotation -0.22 + 20h 18 Rotation -0.22 + 20h 19 Rotation -0.22 + 20h 20 Rotation -0.22 + 20h 21 Rotation -0.22 + 20h 22 Rotation -0.22 + 20h 23 Rotation -0.22 + 20h 24 Rotation -0.22 + 20h 25 Rotation -0.22 + 20h 26 Rotation -0.22 + 20h 27 Rotation -0.22 + 20h 28 Rotation -0.22 + 20h 29 Rotation -0.22 + 20h 30 Rotation -0.22 + 20h 31 Rotation -0.22 + 20h 32 Rotation -0.22 + 20h 33 Rotation -0.22 + 20h 34 Rotation -0.22 + 20h 35 Rotation -0.22 + 20h 36 Rotation -0.22 + 20h 37 Rotation -0.22 + 20h 38 Rotation -0.22 + 20h 39 Rotation -0.22 + 20h 40 Rotation -0.22 + 20h 41 Rotation -0.22 + 20h 42 Rotation -0.22 + 20h 43 Rotation -0.22 + 20h 44 Rotation -0.22 + 20h 45 Rotation -0.22 + 20h 46 Rotation -0.22 + 20h 47 Rotation -0.22 + 20h 48 Rotation -0.22 + 20h 49 Rotation -0.22 + 20h 50 Rotation -0.22 + 20h 51 Rotation -0.22 + 20h 52 Rotation -0.22 + 20h 53 Rotation -0.22 + 20h 54 Rotation -0.22 + 20h 55 Rotation -0.22 + 20h 56 Rotation -0.22 + 20h 57 Rotation -0.22 + 20h 58 Rotation -0.22 + 20h 59 Rotation -0.22 + 21h 0 Rotation -0.22 + 21h 1 Rotation -0.22 + 21h 2 Rotation -0.22 + 21h 3 Rotation -0.22 + 21h 4 Rotation -0.22 + 21h 5 Rotation -0.22 + 21h 6 Rotation -0.22 + 21h 7 Rotation -0.22 + 21h 8 Rotation -0.22 + 21h 9 Rotation -0.22 + 21h 10 Rotation -0.22 + 21h 11 Rotation -0.22 + 21h 12 Rotation -0.22 + 21h 13 Rotation -0.22 + 21h 14 Rotation -0.22 + 21h 15 Rotation -0.22 + 21h 16 Rotation -0.22 + 21h 17 Rotation -0.22 + 21h 18 Rotation -0.22 + 21h 19 Rotation -0.22 + 21h 20 Rotation -0.22 + 21h 21 Rotation -0.22 + 21h 22 Rotation -0.22 + 21h 23 Rotation -0.22 + 21h 24 Rotation -0.22 + 21h 25 Rotation -0.22 + 21h 26 Rotation -0.22 + 21h 27 Rotation -0.22 + 21h 28 Rotation -0.22 + 21h 29 Rotation -0.22 + 21h 30 Rotation -0.22 + 21h 31 Rotation -0.22 + 21h 32 Rotation -0.22 + 21h 33 Rotation -0.22 + 21h 34 Rotation -0.22 + 21h 35 Rotation -0.22 + 21h 36 Rotation -0.22 + 21h 37 Rotation -0.22 + 21h 38 Rotation -0.22 + 21h 39 Rotation -0.22 + 21h 40 Rotation -0.22 + 21h 41 Rotation -0.22 + 21h 42 Rotation -0.22 + 21h 43 Rotation -0.22 + 21h 44 Rotation -0.22 + 21h 45 Rotation -0.22 + 21h 46 Rotation -0.22 + 21h 47 Rotation -0.22 + 21h 48 Rotation -0.22 + 21h 49 Rotation -0.22 + 21h 50 Rotation -0.22 + 21h 51 Rotation -0.22 + 21h 52 Rotation -0.22 + 21h 53 Rotation -0.22 + 21h 54 Rotation -0.22 + 21h 55 Rotation -0.22 + 21h 56 Rotation -0.22 + 21h 57 Rotation -0.22 + 21h 58 Rotation -0.22 + 21h 59 Rotation -0.22 + 22h 0 Rotation -0.22 + 22h 1 Rotation -0.22 + 22h 2 Rotation -0.22 + 22h 3 Rotation -0.22 + 22h 4 Rotation -0.22 + 22h 5 Rotation -0.22 + 22h 6 Rotation -0.22 + 22h 7 Rotation -0.22 + 22h 8 Rotation -0.22 + 22h 9 Rotation -0.22 + 22h 10 Rotation -0.22 + 22h 11 Rotation -0.22 + 22h 12 Rotation -0.22 + 22h 13 Rotation -0.22 + 22h 14 Rotation -0.22 + 22h 15 Rotation -0.22 + 22h 16 Rotation -0.22 + 22h 17 Rotation -0.22 + 22h 18 Rotation -0.22 + 22h 19 Rotation -0.22 + 22h 20 Rotation -0.22 + 22h 21 Rotation -0.22 + 22h 22 Rotation -0.22 + 22h 23 Rotation -0.22 + 22h 24 Rotation -0.22 + 22h 25 Rotation -0.22 + 22h 26 Rotation -0.22 + 22h 27 Rotation -0.22 + 22h 28 Rotation -0.22 + 22h 29 Rotation -0.22 + 22h 30 Rotation -0.22 + 22h 31 Rotation -0.22 + 22h 32 Rotation -0.22 + 22h 33 Rotation -0.22 + 22h 34 Rotation -0.22 + 22h 35 Rotation -0.22 + 22h 36 Rotation -0.22 + 22h 37 Rotation -0.22 + 22h 38 Rotation -0.22 + 22h 39 Rotation -0.22 + 22h 40 Rotation -0.22 + 22h 41 Rotation -0.22 + 22h 42 Rotation -0.22 + 22h 43 Rotation -0.22 + 22h 44 Rotation -0.22 + 22h 45 Rotation -0.22 + 22h 46 Rotation -0.22 + 22h 47 Rotation -0.22 + 22h 48 Rotation -0.22 + 22h 49 Rotation -0.22 + 22h 50 Rotation -0.22 + 22h 51 Rotation -0.22 + 22h 52 Rotation -0.22 + 22h 53 Rotation -0.22 + 22h 54 Rotation -0.22 + 22h 55 Rotation -0.22 + 22h 56 Rotation -0.22 + 22h 57 Rotation -0.22 + 22h 58 Rotation -0.22 + 22h 59 Rotation -0.22 + 23h 0 Rotation -0.22 + 23h 1 Rotation -0.22 + 23h 2 Rotation -0.22 + 23h 3 Rotation -0.22 + 23h 4 Rotation -0.22 + 23h 5 Rotation -0.22 + 23h 6 Rotation -0.22 + 23h 7 Rotation -0.22 + 23h 8 Rotation -0.22 + 23h 9 Rotation -0.22 + 23h 10 Rotation -0.22 + 23h 11 Rotation -0.22 + 23h 12 Rotation -0.22 + 23h 13 Rotation -0.22 + 23h 14 Rotation -0.22 + 23h 15 Rotation -0.22 + 23h 16 Rotation -0.22 + 23h 17 Rotation -0.22 + 23h 18 Rotation -0.22 + 23h 19 Rotation -0.22 + 23h 20 Rotation -0.22 + 23h 21 Rotation -0.22 + 23h 22 Rotation -0.22 + 23h 23 Rotation -0.22 + 23h 24 Rotation -0.22 + 23h 25 Rotation -0.22 + 23h 26 Rotation -0.22 + 23h 27 Rotation -0.22 + 23h 28 Rotation -0.22 + 23h 29 Rotation -0.22 + 23h 30 Rotation -0.22 + 23h 31 Rotation -0.22 + 23h 32 Rotation -0.22 + 23h 33 Rotation -0.22 + 23h 34 Rotation -0.22 + 23h 35 Rotation -0.22 + 23h 36 Rotation -0.22 + 23h 37 Rotation -0.22 + 23h 38 Rotation -0.22 + 23h 39 Rotation -0.22 + 23h 40 Rotation -0.22 + 23h 41 Rotation -0.22 + 23h 42 Rotation -0.22 + 23h 43 Rotation -0.22 + 23h 44 Rotation -0.22 + 23h 45 Rotation -0.22 + 23h 46 Rotation -0.22 + 23h 47 Rotation -0.22 + 23h 48 Rotation -0.22 + 23h 49 Rotation -0.22 + 23h 50 Rotation -0.22 + 23h 51 Rotation -0.22 + 23h 52 Rotation -0.22 + 23h 53 Rotation -0.22 + 23h 54 Rotation -0.22 + 23h 55 Rotation -0.22 + 23h 56 Rotation -0.22 + 23h 57 Rotation -0.22 + 23h 58 Rotation -0.22 + 23h 59 Rotation -0.22 + 0h 0 Rotation -0.22 + 0h 1 Rotation -0.22 + 0h 2 Rotation -0.22 + 0h 3 Rotation -0.22 + 0h 4 Rotation -0.22 + 0h 5 Rotation -0.22 + 0h 6 Rotation -0.22 + 0h 7 Rotation -0.22 + 0h 8 Rotation -0.22 + 0h 9 Rotation -0.22 + 0h 10 Rotation -0.22 + 0h 11 Rotation -0.22 + 0h 12 Rotation -0.22 + 0h 13 Rotation -0.22 + 0h 14 Rotation -0.22 + 0h 15 Rotation -0.22 + 0h 16 Rotation -0.22 + 0h 17 Rotation -0.22 + 0h 18 Rotation -0.22 + 0h 19 Rotation -0.22 + 0h 20 Rotation -0.22 + 0h 21 Rotation -0.22 + 0h 22 Rotation -0.22 + 0h 23 Rotation -0.22 + 0h 24 Rotation -0.22 + 0h 25 Rotation -0.22 + 0h 26 Rotation -0.22 + 0h 27 Rotation -0.22 + 0h 28 Rotation -0.22 + 0h 29 Rotation -0.22 + 0h 30 Rotation -0.22 + 0h 31 Rotation -0.22 + 0h 32 Rotation -0.22 + 0h 33 Rotation -0.22 + 0h 34 Rotation -0.22 + 0h 35 Rotation -0.22 + 0h 36 Rotation -0.22 + 0h 37 Rotation -0.22 + 0h 38 Rotation -0.22 + 0h 39 Rotation -0.22 + 0h 40 Rotation -0.22 + 0h 41 Rotation -0.22 + 0h 42 Rotation -0.22 + 0h 43 Rotation -0.22 + 0h 44 Rotation -0.22 + 0h 45 Rotation -0.22 + 0h 46 Rotation -0.22 + 0h 47 Rotation -0.22 + 0h 48 Rotation -0.22 + 0h 49 Rotation -0.22 + 0h 50 Rotation -0.22 + 0h 51 Rotation -0.22 + 0h 52 Rotation -0.22 + 0h 53 Rotation -0.22 + 0h 54 Rotation -0.22 + 0h 55 Rotation -0.22 + 0h 56 Rotation -0.22 + 0h 57 Rotation -0.22 + 0h 58 Rotation -0.22 + 0h 59 Rotation -0.22 + 1h 0 Rotation -0.22 + 1h 1 Rotation -0.22 + 1h 2 Rotation -0.22 + 1h 3 Rotation -0.22 + 1h 4 Rotation -0.22 + 1h 5 Rotation -0.22 + 1h 6 Rotation -0.22 + 1h 7 Rotation -0.22 + 1h 8 Rotation -0.22 + 1h 9 Rotation -0.22 + 1h 10 Rotation -0.22 + 1h 11 Rotation -0.22 + 1h 12 Rotation -0.22 + 1h 13 Rotation -0.22 + 1h 14 Rotation -0.22 + 1h 15 Rotation -0.22 + 1h 16 Rotation -0.22 + 1h 17 Rotation -0.22 + 1h 18 Rotation -0.22 + 1h 19 Rotation -0.22 + 1h 20 Rotation -0.22 + 1h 21 Rotation -0.22 + 1h 22 Rotation -0.22 + 1h 23 Rotation -0.22 + 1h 24 Rotation -0.22 + 1h 25 Rotation -0.22 + 1h 26 Rotation -0.22 + 1h 27 Rotation -0.22 + 1h 28 Rotation -0.22 + 1h 29 Rotation -0.22 + 1h 30 Rotation -0.22 + 1h 31 Rotation -0.22 + 1h 32 Rotation -0.22 + 1h 33 Rotation -0.22 + 1h 34 Rotation -0.22 + 1h 35 Rotation -0.22 + 1h 36 Rotation -0.22 + 1h 37 Rotation -0.22 + 1h 38 Rotation -0.22 + 1h 39 Rotation -0.22 + 1h 40 Rotation -0.22 + 1h 41 Rotation -0.22 + 1h 42 Rotation -0.22 + 1h 43 Rotation -0.22 + 1h 44 Rotation -0.22 + 1h 45 Rotation -0.22 + 1h 46 Rotation -0.22 + 1h 47 Rotation -0.22 + 1h 48 Rotation -0.22 + 1h 49 Rotation -0.22 + 1h 50 Rotation -0.22 + 1h 51 Rotation -0.22 + 1h 52 Rotation -0.22 + 1h 53 Rotation -0.22 + 1h 54 Rotation -0.22 + 1h 55 Rotation -0.22 + 1h 56 Rotation -0.22 + 1h 57 Rotation -0.22 + 1h 58 Rotation -0.22 + 1h 59 Rotation -0.22 + 2h 0 Rotation -0.22 + 2h 1 Rotation -0.22 + 2h 2 Rotation -0.22 + 2h 3 Rotation -0.22 + 2h 4 Rotation -0.22 + 2h 5 Rotation -0.22 + 2h 6 Rotation -0.22 + 2h 7 Rotation -0.22 + 2h 8 Rotation -0.22 + 2h 9 Rotation -0.22 + 2h 10 Rotation -0.22 + 2h 11 Rotation -0.22 + 2h 12 Rotation -0.22 + 2h 13 Rotation -0.22 + 2h 14 Rotation -0.22 + 2h 15 Rotation -0.22 + 2h 16 Rotation -0.22 + 2h 17 Rotation -0.22 + 2h 18 Rotation -0.22 + 2h 19 Rotation -0.22 + 2h 20 Rotation -0.22 + 2h 21 Rotation -0.22 + 2h 22 Rotation -0.22 + 2h 23 Rotation -0.22 + 2h 24 Rotation -0.22 + 2h 25 Rotation -0.22 + 2h 26 Rotation -0.22 + 2h 27 Rotation -0.22 + 2h 28 Rotation -0.22 + 2h 29 Rotation -0.22 + 2h 30 Rotation -0.22 + 2h 31 Rotation -0.22 + 2h 32 Rotation -0.23 + 2h 33 Rotation -0.23 + 2h 34 Rotation -0.23 + 2h 35 Rotation -0.23 + 2h 36 Rotation -0.23 + 2h 37 Rotation -0.23 + 2h 38 Rotation -0.23 + 2h 39 Rotation -0.23 + 2h 40 Rotation -0.23 + 2h 41 Rotation -0.23 + 2h 42 Rotation -0.23 + 2h 43 Rotation -0.23 + 2h 44 Rotation -0.23 + 2h 45 Rotation -0.23 + 2h 46 Rotation -0.23 + 2h 47 Rotation -0.23 + 2h 48 Rotation -0.23 + 2h 49 Rotation -0.23 + 2h 50 Rotation -0.23 + 2h 51 Rotation -0.23 + 2h 52 Rotation -0.23 + 2h 53 Rotation -0.23 + 2h 54 Rotation -0.23 + 2h 55 Rotation -0.23 + 2h 56 Rotation -0.23 + 2h 57 Rotation -0.23 + 2h 58 Rotation -0.23 + 2h 59 Rotation -0.23 + 3h 0 Rotation -0.23 + 3h 1 Rotation -0.23 + 3h 2 Rotation -0.23 + 3h 3 Rotation -0.23 + 3h 4 Rotation -0.23 + 3h 5 Rotation -0.23 + 3h 6 Rotation -0.23 + 3h 7 Rotation -0.23 + 3h 8 Rotation -0.23 + 3h 9 Rotation -0.23 + 3h 10 Rotation -0.23 + 3h 11 Rotation -0.23 + 3h 12 Rotation -0.23 + 3h 13 Rotation -0.23 + 3h 14 Rotation -0.23 + 3h 15 Rotation -0.23 + 3h 16 Rotation -0.23 + 3h 17 Rotation -0.23 + 3h 18 Rotation -0.23 + 3h 19 Rotation -0.23 + 3h 20 Rotation -0.23 + 3h 21 Rotation -0.23 + 3h 22 Rotation -0.23 + 3h 23 Rotation -0.23 + 3h 24 Rotation -0.23 + 3h 25 Rotation -0.23 + 3h 26 Rotation -0.23 + 3h 27 Rotation -0.23 + 3h 28 Rotation -0.23 + 3h 29 Rotation -0.23 + 3h 30 Rotation -0.23 + 3h 31 Rotation -0.23 + 3h 32 Rotation -0.23 + 3h 33 Rotation -0.23 + 3h 34 Rotation -0.23 + 3h 35 Rotation -0.23 + 3h 36 Rotation -0.23 + 3h 37 Rotation -0.23 + 3h 38 Rotation -0.23 + 3h 39 Rotation -0.23 + 3h 40 Rotation -0.23 + 3h 41 Rotation -0.23 + 3h 42 Rotation -0.23 + 3h 43 Rotation -0.23 + 3h 44 Rotation -0.23 + 3h 45 Rotation -0.23 + 3h 46 Rotation -0.23 + 3h 47 Rotation -0.23 + 3h 48 Rotation -0.23 + 3h 49 Rotation -0.23 + 3h 50 Rotation -0.23 + 3h 51 Rotation -0.23 + 3h 52 Rotation -0.23 + 3h 53 Rotation -0.23 + 3h 54 Rotation -0.23 + 3h 55 Rotation -0.23 + 3h 56 Rotation -0.23 + 3h 57 Rotation -0.23 + 3h 58 Rotation -0.23 + 3h 59 Rotation -0.23 + 4h 0 Rotation -0.23 + 4h 1 Rotation -0.23 + 4h 2 Rotation -0.23 + 4h 3 Rotation -0.23 + 4h 4 Rotation -0.23 + 4h 5 Rotation -0.23 + 4h 6 Rotation -0.23 + 4h 7 Rotation -0.23 + 4h 8 Rotation -0.23 + 4h 9 Rotation -0.23 + 4h 10 Rotation -0.23 + 4h 11 Rotation -0.23 + 4h 12 Rotation -0.23 + 4h 13 Rotation -0.23 + 4h 14 Rotation -0.23 + 4h 15 Rotation -0.23 + 4h 16 Rotation -0.23 + 4h 17 Rotation -0.23 + 4h 18 Rotation -0.23 + 4h 19 Rotation -0.23 + 4h 20 Rotation -0.23 + 4h 21 Rotation -0.23 + 4h 22 Rotation -0.23 + 4h 23 Rotation -0.23 + 4h 24 Rotation -0.23 + 4h 25 Rotation -0.23 + 4h 26 Rotation -0.23 + 4h 27 Rotation -0.23 + 4h 28 Rotation -0.23 + 4h 29 Rotation -0.23 + 4h 30 Rotation -0.23 + 4h 31 Rotation -0.23 + 4h 32 Rotation -0.23 + 4h 33 Rotation -0.23 + 4h 34 Rotation -0.23 + 4h 35 Rotation -0.23 + 4h 36 Rotation -0.23 + 4h 37 Rotation -0.23 + 4h 38 Rotation -0.23 + 4h 39 Rotation -0.24 + 4h 40 Rotation -0.24 + 4h 41 Rotation -0.24 + 4h 42 Rotation -0.24 + 4h 43 Rotation -0.24 + 4h 44 Rotation -0.24 + 4h 45 Rotation -0.24 + 4h 46 Rotation -0.24 + 4h 47 Rotation -0.24 + 4h 48 Rotation -0.24 + 4h 49 Rotation -0.24 + 4h 50 Rotation -0.24 + 4h 51 Rotation -0.24 + 4h 52 Rotation -0.24 + 4h 53 Rotation -0.24 + 4h 54 Rotation -0.24 + 4h 55 Rotation -0.24 + 4h 56 Rotation -0.24 + 4h 57 Rotation -0.24 + 4h 58 Rotation -0.24 + 4h 59 Rotation -0.24 + 5h 0 Rotation -0.24 + 5h 1 Rotation -0.24 + 5h 2 Rotation -0.24 + 5h 3 Rotation -0.24 + 5h 4 Rotation -0.24 + 5h 5 Rotation -0.24 + 5h 6 Rotation -0.24 + 5h 7 Rotation -0.24 + 5h 8 Rotation -0.24 + 5h 9 Rotation -0.24 + 5h 10 Rotation -0.24 + 5h 11 Rotation -0.24 + 5h 12 Rotation -0.24 + 5h 13 Rotation -0.24 + 5h 14 Rotation -0.24 + 5h 15 Rotation -0.24 + 5h 16 Rotation -0.24 + 5h 17 Rotation -0.24 + 5h 18 Rotation -0.24 + 5h 19 Rotation -0.24 + 5h 20 Rotation -0.24 + 5h 21 Rotation -0.24 + 5h 22 Rotation -0.24 + 5h 23 Rotation -0.24 + 5h 24 Rotation -0.24 + 5h 25 Rotation -0.24 + 5h 26 Rotation -0.24 + 5h 27 Rotation -0.24 + 5h 28 Rotation -0.24 + 5h 29 Rotation -0.24 + 5h 30 Rotation -0.24 + 5h 31 Rotation -0.24 + 5h 32 Rotation -0.24 + 5h 33 Rotation -0.24 + 5h 34 Rotation -0.24 + 5h 35 Rotation -0.24 + 5h 36 Rotation -0.24 + 5h 37 Rotation -0.24 + 5h 38 Rotation -0.24 + 5h 39 Rotation -0.24 + 5h 40 Rotation -0.24 + 5h 41 Rotation -0.24 + 5h 42 Rotation -0.24 + 5h 43 Rotation -0.24 + 5h 44 Rotation -0.25 + 5h 45 Rotation -0.25 + 5h 46 Rotation -0.25 + 5h 47 Rotation -0.25 + 5h 48 Rotation -0.25 + 5h 49 Rotation -0.25 + 5h 50 Rotation -0.25 + 5h 51 Rotation -0.25 + 5h 52 Rotation -0.25 + 5h 53 Rotation -0.25 + 5h 54 Rotation -0.25 + 5h 55 Rotation -0.25 + 5h 56 Rotation -0.25 + 5h 57 Rotation -0.25 + 5h 58 Rotation -0.25 + 5h 59 Rotation -0.25 + 6h 0 Rotation -0.25 + 6h 1 Rotation -0.25 + 6h 2 Rotation -0.25 + 6h 3 Rotation -0.25 + 6h 4 Rotation -0.25 + 6h 5 Rotation -0.25 + 6h 6 Rotation -0.25 + 6h 7 Rotation -0.25 + 6h 8 Rotation -0.25 + 6h 9 Rotation -0.25 + 6h 10 Rotation -0.25 + 6h 11 Rotation -0.25 + 6h 12 Rotation -0.25 + 6h 13 Rotation -0.25 + 6h 14 Rotation -0.25 + 6h 15 Rotation -0.25 + 6h 16 Rotation -0.25 + 6h 17 Rotation -0.25 + 6h 18 Rotation -0.25 + 6h 19 Rotation -0.25 + 6h 20 Rotation -0.25 + 6h 21 Rotation -0.25 + 6h 22 Rotation -0.25 + 6h 23 Rotation -0.25 + 6h 24 Rotation -0.25 + 6h 25 Rotation -0.25 + 6h 26 Rotation -0.25 + 6h 27 Rotation -0.25 + 6h 28 Rotation -0.25 + 6h 29 Rotation -0.25 + 6h 30 Rotation -0.25 + 6h 31 Rotation -0.25 + 6h 32 Rotation -0.25 + 6h 33 Rotation -0.26 + 6h 34 Rotation -0.26 + 6h 35 Rotation -0.26 + 6h 36 Rotation -0.26 + 6h 37 Rotation -0.26 + 6h 38 Rotation -0.26 + 6h 39 Rotation -0.26 + 6h 40 Rotation -0.26 + 6h 41 Rotation -0.26 + 6h 42 Rotation -0.26 + 6h 43 Rotation -0.26 + +Cumulative field rotation: 359.76 + +Start alt. 42 Az. 194 +Ending alt. 38 Az. 196 diff --git a/SKYTEL/rotate.INP b/SKYTEL/rotate.INP new file mode 100644 index 0000000..10a7326 --- /dev/null +++ b/SKYTEL/rotate.INP @@ -0,0 +1,7 @@ +147 +6 +3 +9,54 +76 +7,54 +6,43 diff --git a/SKYTEL/rotate.OUT b/SKYTEL/rotate.OUT new file mode 100644 index 0000000..62d8e07 --- /dev/null +++ b/SKYTEL/rotate.OUT @@ -0,0 +1,1384 @@ +Observer's latitude (deg) ? 147 +Day of the month (1-31)? 6 +Month (1-12) ? 3 +Right ascension (h,m) ? 9,54 +Declination (deg) ? 76 + +From (h,m): ? 7,54 +To (h,m): ? 6,43 + +Positive rotation rates are clockwise: + 7h 55 Rotation -0.27 + 7h 56 Rotation -0.28 + 7h 57 Rotation -0.28 + 7h 58 Rotation -0.28 + 7h 59 Rotation -0.28 + 8h 0 Rotation -0.28 + 8h 1 Rotation -0.28 + 8h 2 Rotation -0.28 + 8h 3 Rotation -0.28 + 8h 4 Rotation -0.28 + 8h 5 Rotation -0.28 + 8h 6 Rotation -0.28 + 8h 7 Rotation -0.28 + 8h 8 Rotation -0.28 + 8h 9 Rotation -0.28 + 8h 10 Rotation -0.28 + 8h 11 Rotation -0.28 + 8h 12 Rotation -0.28 + 8h 13 Rotation -0.28 + 8h 14 Rotation -0.28 + 8h 15 Rotation -0.28 + 8h 16 Rotation -0.28 + 8h 17 Rotation -0.28 + 8h 18 Rotation -0.28 + 8h 19 Rotation -0.28 + 8h 20 Rotation -0.28 + 8h 21 Rotation -0.28 + 8h 22 Rotation -0.28 + 8h 23 Rotation -0.28 + 8h 24 Rotation -0.28 + 8h 25 Rotation -0.28 + 8h 26 Rotation -0.28 + 8h 27 Rotation -0.28 + 8h 28 Rotation -0.28 + 8h 29 Rotation -0.28 + 8h 30 Rotation -0.28 + 8h 31 Rotation -0.28 + 8h 32 Rotation -0.28 + 8h 33 Rotation -0.28 + 8h 34 Rotation -0.29 + 8h 35 Rotation -0.29 + 8h 36 Rotation -0.29 + 8h 37 Rotation -0.29 + 8h 38 Rotation -0.29 + 8h 39 Rotation -0.29 + 8h 40 Rotation -0.29 + 8h 41 Rotation -0.29 + 8h 42 Rotation -0.29 + 8h 43 Rotation -0.29 + 8h 44 Rotation -0.29 + 8h 45 Rotation -0.29 + 8h 46 Rotation -0.29 + 8h 47 Rotation -0.29 + 8h 48 Rotation -0.29 + 8h 49 Rotation -0.29 + 8h 50 Rotation -0.29 + 8h 51 Rotation -0.29 + 8h 52 Rotation -0.29 + 8h 53 Rotation -0.29 + 8h 54 Rotation -0.29 + 8h 55 Rotation -0.29 + 8h 56 Rotation -0.29 + 8h 57 Rotation -0.29 + 8h 58 Rotation -0.29 + 8h 59 Rotation -0.29 + 9h 0 Rotation -0.29 + 9h 1 Rotation -0.29 + 9h 2 Rotation -0.29 + 9h 3 Rotation -0.29 + 9h 4 Rotation -0.29 + 9h 5 Rotation -0.29 + 9h 6 Rotation -0.29 + 9h 7 Rotation -0.29 + 9h 8 Rotation -0.29 + 9h 9 Rotation -0.29 + 9h 10 Rotation -0.29 + 9h 11 Rotation -0.29 + 9h 12 Rotation -0.29 + 9h 13 Rotation -0.29 + 9h 14 Rotation -0.30 + 9h 15 Rotation -0.30 + 9h 16 Rotation -0.30 + 9h 17 Rotation -0.30 + 9h 18 Rotation -0.30 + 9h 19 Rotation -0.30 + 9h 20 Rotation -0.30 + 9h 21 Rotation -0.30 + 9h 22 Rotation -0.30 + 9h 23 Rotation -0.30 + 9h 24 Rotation -0.30 + 9h 25 Rotation -0.30 + 9h 26 Rotation -0.30 + 9h 27 Rotation -0.30 + 9h 28 Rotation -0.30 + 9h 29 Rotation -0.30 + 9h 30 Rotation -0.30 + 9h 31 Rotation -0.30 + 9h 32 Rotation -0.30 + 9h 33 Rotation -0.30 + 9h 34 Rotation -0.30 + 9h 35 Rotation -0.30 + 9h 36 Rotation -0.30 + 9h 37 Rotation -0.30 + 9h 38 Rotation -0.30 + 9h 39 Rotation -0.30 + 9h 40 Rotation -0.30 + 9h 41 Rotation -0.30 + 9h 42 Rotation -0.30 + 9h 43 Rotation -0.30 + 9h 44 Rotation -0.30 + 9h 45 Rotation -0.30 + 9h 46 Rotation -0.30 + 9h 47 Rotation -0.30 + 9h 48 Rotation -0.30 + 9h 49 Rotation -0.30 + 9h 50 Rotation -0.30 + 9h 51 Rotation -0.30 + 9h 52 Rotation -0.30 + 9h 53 Rotation -0.30 + 9h 54 Rotation -0.30 + 9h 55 Rotation -0.30 + 9h 56 Rotation -0.30 + 9h 57 Rotation -0.30 + 9h 58 Rotation -0.30 + 9h 59 Rotation -0.30 + 10h 0 Rotation -0.30 + 10h 1 Rotation -0.30 + 10h 2 Rotation -0.30 + 10h 3 Rotation -0.30 + 10h 4 Rotation -0.30 + 10h 5 Rotation -0.30 + 10h 6 Rotation -0.30 + 10h 7 Rotation -0.30 + 10h 8 Rotation -0.30 + 10h 9 Rotation -0.30 + 10h 10 Rotation -0.31 + 10h 11 Rotation -0.31 + 10h 12 Rotation -0.31 + 10h 13 Rotation -0.31 + 10h 14 Rotation -0.31 + 10h 15 Rotation -0.31 + 10h 16 Rotation -0.31 + 10h 17 Rotation -0.31 + 10h 18 Rotation -0.31 + 10h 19 Rotation -0.31 + 10h 20 Rotation -0.31 + 10h 21 Rotation -0.31 + 10h 22 Rotation -0.31 + 10h 23 Rotation -0.31 + 10h 24 Rotation -0.31 + 10h 25 Rotation -0.31 + 10h 26 Rotation -0.31 + 10h 27 Rotation -0.31 + 10h 28 Rotation -0.31 + 10h 29 Rotation -0.31 + 10h 30 Rotation -0.31 + 10h 31 Rotation -0.31 + 10h 32 Rotation -0.31 + 10h 33 Rotation -0.31 + 10h 34 Rotation -0.31 + 10h 35 Rotation -0.31 + 10h 36 Rotation -0.31 + 10h 37 Rotation -0.31 + 10h 38 Rotation -0.31 + 10h 39 Rotation -0.31 + 10h 40 Rotation -0.31 + 10h 41 Rotation -0.31 + 10h 42 Rotation -0.31 + 10h 43 Rotation -0.31 + 10h 44 Rotation -0.31 + 10h 45 Rotation -0.31 + 10h 46 Rotation -0.31 + 10h 47 Rotation -0.31 + 10h 48 Rotation -0.31 + 10h 49 Rotation -0.31 + 10h 50 Rotation -0.31 + 10h 51 Rotation -0.31 + 10h 52 Rotation -0.31 + 10h 53 Rotation -0.31 + 10h 54 Rotation -0.31 + 10h 55 Rotation -0.31 + 10h 56 Rotation -0.31 + 10h 57 Rotation -0.31 + 10h 58 Rotation -0.31 + 10h 59 Rotation -0.31 + 11h 0 Rotation -0.31 + 11h 1 Rotation -0.31 + 11h 2 Rotation -0.31 + 11h 3 Rotation -0.31 + 11h 4 Rotation -0.31 + 11h 5 Rotation -0.31 + 11h 6 Rotation -0.31 + 11h 7 Rotation -0.31 + 11h 8 Rotation -0.31 + 11h 9 Rotation -0.31 + 11h 10 Rotation -0.31 + 11h 11 Rotation -0.31 + 11h 12 Rotation -0.31 + 11h 13 Rotation -0.31 + 11h 14 Rotation -0.31 + 11h 15 Rotation -0.31 + 11h 16 Rotation -0.31 + 11h 17 Rotation -0.31 + 11h 18 Rotation -0.31 + 11h 19 Rotation -0.31 + 11h 20 Rotation -0.31 + 11h 21 Rotation -0.31 + 11h 22 Rotation -0.31 + 11h 23 Rotation -0.31 + 11h 24 Rotation -0.31 + 11h 25 Rotation -0.31 + 11h 26 Rotation -0.31 + 11h 27 Rotation -0.31 + 11h 28 Rotation -0.31 + 11h 29 Rotation -0.31 + 11h 30 Rotation -0.31 + 11h 31 Rotation -0.31 + 11h 32 Rotation -0.31 + 11h 33 Rotation -0.31 + 11h 34 Rotation -0.31 + 11h 35 Rotation -0.31 + 11h 36 Rotation -0.31 + 11h 37 Rotation -0.31 + 11h 38 Rotation -0.31 + 11h 39 Rotation -0.31 + 11h 40 Rotation -0.31 + 11h 41 Rotation -0.31 + 11h 42 Rotation -0.31 + 11h 43 Rotation -0.31 + 11h 44 Rotation -0.31 + 11h 45 Rotation -0.31 + 11h 46 Rotation -0.31 + 11h 47 Rotation -0.31 + 11h 48 Rotation -0.31 + 11h 49 Rotation -0.31 + 11h 50 Rotation -0.31 + 11h 51 Rotation -0.30 + 11h 52 Rotation -0.30 + 11h 53 Rotation -0.30 + 11h 54 Rotation -0.30 + 11h 55 Rotation -0.30 + 11h 56 Rotation -0.30 + 11h 57 Rotation -0.30 + 11h 58 Rotation -0.30 + 11h 59 Rotation -0.30 + 12h 0 Rotation -0.30 + 12h 1 Rotation -0.30 + 12h 2 Rotation -0.30 + 12h 3 Rotation -0.30 + 12h 4 Rotation -0.30 + 12h 5 Rotation -0.30 + 12h 6 Rotation -0.30 + 12h 7 Rotation -0.30 + 12h 8 Rotation -0.30 + 12h 9 Rotation -0.30 + 12h 10 Rotation -0.30 + 12h 11 Rotation -0.30 + 12h 12 Rotation -0.30 + 12h 13 Rotation -0.30 + 12h 14 Rotation -0.30 + 12h 15 Rotation -0.30 + 12h 16 Rotation -0.30 + 12h 17 Rotation -0.30 + 12h 18 Rotation -0.30 + 12h 19 Rotation -0.30 + 12h 20 Rotation -0.30 + 12h 21 Rotation -0.30 + 12h 22 Rotation -0.30 + 12h 23 Rotation -0.30 + 12h 24 Rotation -0.30 + 12h 25 Rotation -0.30 + 12h 26 Rotation -0.30 + 12h 27 Rotation -0.30 + 12h 28 Rotation -0.30 + 12h 29 Rotation -0.30 + 12h 30 Rotation -0.30 + 12h 31 Rotation -0.30 + 12h 32 Rotation -0.30 + 12h 33 Rotation -0.30 + 12h 34 Rotation -0.30 + 12h 35 Rotation -0.30 + 12h 36 Rotation -0.30 + 12h 37 Rotation -0.30 + 12h 38 Rotation -0.30 + 12h 39 Rotation -0.30 + 12h 40 Rotation -0.30 + 12h 41 Rotation -0.30 + 12h 42 Rotation -0.30 + 12h 43 Rotation -0.30 + 12h 44 Rotation -0.30 + 12h 45 Rotation -0.30 + 12h 46 Rotation -0.29 + 12h 47 Rotation -0.29 + 12h 48 Rotation -0.29 + 12h 49 Rotation -0.29 + 12h 50 Rotation -0.29 + 12h 51 Rotation -0.29 + 12h 52 Rotation -0.29 + 12h 53 Rotation -0.29 + 12h 54 Rotation -0.29 + 12h 55 Rotation -0.29 + 12h 56 Rotation -0.29 + 12h 57 Rotation -0.29 + 12h 58 Rotation -0.29 + 12h 59 Rotation -0.29 + 13h 0 Rotation -0.29 + 13h 1 Rotation -0.29 + 13h 2 Rotation -0.29 + 13h 3 Rotation -0.29 + 13h 4 Rotation -0.29 + 13h 5 Rotation -0.29 + 13h 6 Rotation -0.29 + 13h 7 Rotation -0.29 + 13h 8 Rotation -0.29 + 13h 9 Rotation -0.29 + 13h 10 Rotation -0.29 + 13h 11 Rotation -0.29 + 13h 12 Rotation -0.29 + 13h 13 Rotation -0.29 + 13h 14 Rotation -0.29 + 13h 15 Rotation -0.29 + 13h 16 Rotation -0.29 + 13h 17 Rotation -0.29 + 13h 18 Rotation -0.29 + 13h 19 Rotation -0.29 + 13h 20 Rotation -0.29 + 13h 21 Rotation -0.29 + 13h 22 Rotation -0.29 + 13h 23 Rotation -0.29 + 13h 24 Rotation -0.29 + 13h 25 Rotation -0.29 + 13h 26 Rotation -0.29 + 13h 27 Rotation -0.28 + 13h 28 Rotation -0.28 + 13h 29 Rotation -0.28 + 13h 30 Rotation -0.28 + 13h 31 Rotation -0.28 + 13h 32 Rotation -0.28 + 13h 33 Rotation -0.28 + 13h 34 Rotation -0.28 + 13h 35 Rotation -0.28 + 13h 36 Rotation -0.28 + 13h 37 Rotation -0.28 + 13h 38 Rotation -0.28 + 13h 39 Rotation -0.28 + 13h 40 Rotation -0.28 + 13h 41 Rotation -0.28 + 13h 42 Rotation -0.28 + 13h 43 Rotation -0.28 + 13h 44 Rotation -0.28 + 13h 45 Rotation -0.28 + 13h 46 Rotation -0.28 + 13h 47 Rotation -0.28 + 13h 48 Rotation -0.28 + 13h 49 Rotation -0.28 + 13h 50 Rotation -0.28 + 13h 51 Rotation -0.28 + 13h 52 Rotation -0.28 + 13h 53 Rotation -0.28 + 13h 54 Rotation -0.28 + 13h 55 Rotation -0.28 + 13h 56 Rotation -0.28 + 13h 57 Rotation -0.28 + 13h 58 Rotation -0.28 + 13h 59 Rotation -0.28 + 14h 0 Rotation -0.28 + 14h 1 Rotation -0.28 + 14h 2 Rotation -0.28 + 14h 3 Rotation -0.28 + 14h 4 Rotation -0.27 + 14h 5 Rotation -0.27 + 14h 6 Rotation -0.27 + 14h 7 Rotation -0.27 + 14h 8 Rotation -0.27 + 14h 9 Rotation -0.27 + 14h 10 Rotation -0.27 + 14h 11 Rotation -0.27 + 14h 12 Rotation -0.27 + 14h 13 Rotation -0.27 + 14h 14 Rotation -0.27 + 14h 15 Rotation -0.27 + 14h 16 Rotation -0.27 + 14h 17 Rotation -0.27 + 14h 18 Rotation -0.27 + 14h 19 Rotation -0.27 + 14h 20 Rotation -0.27 + 14h 21 Rotation -0.27 + 14h 22 Rotation -0.27 + 14h 23 Rotation -0.27 + 14h 24 Rotation -0.27 + 14h 25 Rotation -0.27 + 14h 26 Rotation -0.27 + 14h 27 Rotation -0.27 + 14h 28 Rotation -0.27 + 14h 29 Rotation -0.27 + 14h 30 Rotation -0.27 + 14h 31 Rotation -0.27 + 14h 32 Rotation -0.27 + 14h 33 Rotation -0.27 + 14h 34 Rotation -0.27 + 14h 35 Rotation -0.27 + 14h 36 Rotation -0.27 + 14h 37 Rotation -0.27 + 14h 38 Rotation -0.27 + 14h 39 Rotation -0.27 + 14h 40 Rotation -0.27 + 14h 41 Rotation -0.27 + 14h 42 Rotation -0.26 + 14h 43 Rotation -0.26 + 14h 44 Rotation -0.26 + 14h 45 Rotation -0.26 + 14h 46 Rotation -0.26 + 14h 47 Rotation -0.26 + 14h 48 Rotation -0.26 + 14h 49 Rotation -0.26 + 14h 50 Rotation -0.26 + 14h 51 Rotation -0.26 + 14h 52 Rotation -0.26 + 14h 53 Rotation -0.26 + 14h 54 Rotation -0.26 + 14h 55 Rotation -0.26 + 14h 56 Rotation -0.26 + 14h 57 Rotation -0.26 + 14h 58 Rotation -0.26 + 14h 59 Rotation -0.26 + 15h 0 Rotation -0.26 + 15h 1 Rotation -0.26 + 15h 2 Rotation -0.26 + 15h 3 Rotation -0.26 + 15h 4 Rotation -0.26 + 15h 5 Rotation -0.26 + 15h 6 Rotation -0.26 + 15h 7 Rotation -0.26 + 15h 8 Rotation -0.26 + 15h 9 Rotation -0.26 + 15h 10 Rotation -0.26 + 15h 11 Rotation -0.26 + 15h 12 Rotation -0.26 + 15h 13 Rotation -0.26 + 15h 14 Rotation -0.26 + 15h 15 Rotation -0.26 + 15h 16 Rotation -0.26 + 15h 17 Rotation -0.26 + 15h 18 Rotation -0.26 + 15h 19 Rotation -0.26 + 15h 20 Rotation -0.26 + 15h 21 Rotation -0.26 + 15h 22 Rotation -0.26 + 15h 23 Rotation -0.26 + 15h 24 Rotation -0.25 + 15h 25 Rotation -0.25 + 15h 26 Rotation -0.25 + 15h 27 Rotation -0.25 + 15h 28 Rotation -0.25 + 15h 29 Rotation -0.25 + 15h 30 Rotation -0.25 + 15h 31 Rotation -0.25 + 15h 32 Rotation -0.25 + 15h 33 Rotation -0.25 + 15h 34 Rotation -0.25 + 15h 35 Rotation -0.25 + 15h 36 Rotation -0.25 + 15h 37 Rotation -0.25 + 15h 38 Rotation -0.25 + 15h 39 Rotation -0.25 + 15h 40 Rotation -0.25 + 15h 41 Rotation -0.25 + 15h 42 Rotation -0.25 + 15h 43 Rotation -0.25 + 15h 44 Rotation -0.25 + 15h 45 Rotation -0.25 + 15h 46 Rotation -0.25 + 15h 47 Rotation -0.25 + 15h 48 Rotation -0.25 + 15h 49 Rotation -0.25 + 15h 50 Rotation -0.25 + 15h 51 Rotation -0.25 + 15h 52 Rotation -0.25 + 15h 53 Rotation -0.25 + 15h 54 Rotation -0.25 + 15h 55 Rotation -0.25 + 15h 56 Rotation -0.25 + 15h 57 Rotation -0.25 + 15h 58 Rotation -0.25 + 15h 59 Rotation -0.25 + 16h 0 Rotation -0.25 + 16h 1 Rotation -0.25 + 16h 2 Rotation -0.25 + 16h 3 Rotation -0.25 + 16h 4 Rotation -0.25 + 16h 5 Rotation -0.25 + 16h 6 Rotation -0.25 + 16h 7 Rotation -0.25 + 16h 8 Rotation -0.25 + 16h 9 Rotation -0.25 + 16h 10 Rotation -0.25 + 16h 11 Rotation -0.25 + 16h 12 Rotation -0.24 + 16h 13 Rotation -0.24 + 16h 14 Rotation -0.24 + 16h 15 Rotation -0.24 + 16h 16 Rotation -0.24 + 16h 17 Rotation -0.24 + 16h 18 Rotation -0.24 + 16h 19 Rotation -0.24 + 16h 20 Rotation -0.24 + 16h 21 Rotation -0.24 + 16h 22 Rotation -0.24 + 16h 23 Rotation -0.24 + 16h 24 Rotation -0.24 + 16h 25 Rotation -0.24 + 16h 26 Rotation -0.24 + 16h 27 Rotation -0.24 + 16h 28 Rotation -0.24 + 16h 29 Rotation -0.24 + 16h 30 Rotation -0.24 + 16h 31 Rotation -0.24 + 16h 32 Rotation -0.24 + 16h 33 Rotation -0.24 + 16h 34 Rotation -0.24 + 16h 35 Rotation -0.24 + 16h 36 Rotation -0.24 + 16h 37 Rotation -0.24 + 16h 38 Rotation -0.24 + 16h 39 Rotation -0.24 + 16h 40 Rotation -0.24 + 16h 41 Rotation -0.24 + 16h 42 Rotation -0.24 + 16h 43 Rotation -0.24 + 16h 44 Rotation -0.24 + 16h 45 Rotation -0.24 + 16h 46 Rotation -0.24 + 16h 47 Rotation -0.24 + 16h 48 Rotation -0.24 + 16h 49 Rotation -0.24 + 16h 50 Rotation -0.24 + 16h 51 Rotation -0.24 + 16h 52 Rotation -0.24 + 16h 53 Rotation -0.24 + 16h 54 Rotation -0.24 + 16h 55 Rotation -0.24 + 16h 56 Rotation -0.24 + 16h 57 Rotation -0.24 + 16h 58 Rotation -0.24 + 16h 59 Rotation -0.24 + 17h 0 Rotation -0.24 + 17h 1 Rotation -0.24 + 17h 2 Rotation -0.24 + 17h 3 Rotation -0.24 + 17h 4 Rotation -0.24 + 17h 5 Rotation -0.24 + 17h 6 Rotation -0.24 + 17h 7 Rotation -0.24 + 17h 8 Rotation -0.24 + 17h 9 Rotation -0.24 + 17h 10 Rotation -0.24 + 17h 11 Rotation -0.24 + 17h 12 Rotation -0.24 + 17h 13 Rotation -0.24 + 17h 14 Rotation -0.24 + 17h 15 Rotation -0.24 + 17h 16 Rotation -0.24 + 17h 17 Rotation -0.23 + 17h 18 Rotation -0.23 + 17h 19 Rotation -0.23 + 17h 20 Rotation -0.23 + 17h 21 Rotation -0.23 + 17h 22 Rotation -0.23 + 17h 23 Rotation -0.23 + 17h 24 Rotation -0.23 + 17h 25 Rotation -0.23 + 17h 26 Rotation -0.23 + 17h 27 Rotation -0.23 + 17h 28 Rotation -0.23 + 17h 29 Rotation -0.23 + 17h 30 Rotation -0.23 + 17h 31 Rotation -0.23 + 17h 32 Rotation -0.23 + 17h 33 Rotation -0.23 + 17h 34 Rotation -0.23 + 17h 35 Rotation -0.23 + 17h 36 Rotation -0.23 + 17h 37 Rotation -0.23 + 17h 38 Rotation -0.23 + 17h 39 Rotation -0.23 + 17h 40 Rotation -0.23 + 17h 41 Rotation -0.23 + 17h 42 Rotation -0.23 + 17h 43 Rotation -0.23 + 17h 44 Rotation -0.23 + 17h 45 Rotation -0.23 + 17h 46 Rotation -0.23 + 17h 47 Rotation -0.23 + 17h 48 Rotation -0.23 + 17h 49 Rotation -0.23 + 17h 50 Rotation -0.23 + 17h 51 Rotation -0.23 + 17h 52 Rotation -0.23 + 17h 53 Rotation -0.23 + 17h 54 Rotation -0.23 + 17h 55 Rotation -0.23 + 17h 56 Rotation -0.23 + 17h 57 Rotation -0.23 + 17h 58 Rotation -0.23 + 17h 59 Rotation -0.23 + 18h 0 Rotation -0.23 + 18h 1 Rotation -0.23 + 18h 2 Rotation -0.23 + 18h 3 Rotation -0.23 + 18h 4 Rotation -0.23 + 18h 5 Rotation -0.23 + 18h 6 Rotation -0.23 + 18h 7 Rotation -0.23 + 18h 8 Rotation -0.23 + 18h 9 Rotation -0.23 + 18h 10 Rotation -0.23 + 18h 11 Rotation -0.23 + 18h 12 Rotation -0.23 + 18h 13 Rotation -0.23 + 18h 14 Rotation -0.23 + 18h 15 Rotation -0.23 + 18h 16 Rotation -0.23 + 18h 17 Rotation -0.23 + 18h 18 Rotation -0.23 + 18h 19 Rotation -0.23 + 18h 20 Rotation -0.23 + 18h 21 Rotation -0.23 + 18h 22 Rotation -0.23 + 18h 23 Rotation -0.23 + 18h 24 Rotation -0.23 + 18h 25 Rotation -0.23 + 18h 26 Rotation -0.23 + 18h 27 Rotation -0.23 + 18h 28 Rotation -0.23 + 18h 29 Rotation -0.23 + 18h 30 Rotation -0.23 + 18h 31 Rotation -0.23 + 18h 32 Rotation -0.23 + 18h 33 Rotation -0.23 + 18h 34 Rotation -0.23 + 18h 35 Rotation -0.23 + 18h 36 Rotation -0.23 + 18h 37 Rotation -0.23 + 18h 38 Rotation -0.23 + 18h 39 Rotation -0.23 + 18h 40 Rotation -0.23 + 18h 41 Rotation -0.23 + 18h 42 Rotation -0.23 + 18h 43 Rotation -0.23 + 18h 44 Rotation -0.23 + 18h 45 Rotation -0.23 + 18h 46 Rotation -0.23 + 18h 47 Rotation -0.23 + 18h 48 Rotation -0.23 + 18h 49 Rotation -0.23 + 18h 50 Rotation -0.23 + 18h 51 Rotation -0.23 + 18h 52 Rotation -0.23 + 18h 53 Rotation -0.23 + 18h 54 Rotation -0.23 + 18h 55 Rotation -0.23 + 18h 56 Rotation -0.23 + 18h 57 Rotation -0.23 + 18h 58 Rotation -0.23 + 18h 59 Rotation -0.23 + 19h 0 Rotation -0.23 + 19h 1 Rotation -0.23 + 19h 2 Rotation -0.23 + 19h 3 Rotation -0.23 + 19h 4 Rotation -0.23 + 19h 5 Rotation -0.23 + 19h 6 Rotation -0.23 + 19h 7 Rotation -0.23 + 19h 8 Rotation -0.23 + 19h 9 Rotation -0.23 + 19h 10 Rotation -0.23 + 19h 11 Rotation -0.23 + 19h 12 Rotation -0.23 + 19h 13 Rotation -0.23 + 19h 14 Rotation -0.23 + 19h 15 Rotation -0.23 + 19h 16 Rotation -0.23 + 19h 17 Rotation -0.23 + 19h 18 Rotation -0.23 + 19h 19 Rotation -0.23 + 19h 20 Rotation -0.23 + 19h 21 Rotation -0.23 + 19h 22 Rotation -0.23 + 19h 23 Rotation -0.23 + 19h 24 Rotation -0.22 + 19h 25 Rotation -0.22 + 19h 26 Rotation -0.22 + 19h 27 Rotation -0.22 + 19h 28 Rotation -0.22 + 19h 29 Rotation -0.22 + 19h 30 Rotation -0.22 + 19h 31 Rotation -0.22 + 19h 32 Rotation -0.22 + 19h 33 Rotation -0.22 + 19h 34 Rotation -0.22 + 19h 35 Rotation -0.22 + 19h 36 Rotation -0.22 + 19h 37 Rotation -0.22 + 19h 38 Rotation -0.22 + 19h 39 Rotation -0.22 + 19h 40 Rotation -0.22 + 19h 41 Rotation -0.22 + 19h 42 Rotation -0.22 + 19h 43 Rotation -0.22 + 19h 44 Rotation -0.22 + 19h 45 Rotation -0.22 + 19h 46 Rotation -0.22 + 19h 47 Rotation -0.22 + 19h 48 Rotation -0.22 + 19h 49 Rotation -0.22 + 19h 50 Rotation -0.22 + 19h 51 Rotation -0.22 + 19h 52 Rotation -0.22 + 19h 53 Rotation -0.22 + 19h 54 Rotation -0.22 + 19h 55 Rotation -0.22 + 19h 56 Rotation -0.22 + 19h 57 Rotation -0.22 + 19h 58 Rotation -0.22 + 19h 59 Rotation -0.22 + 20h 0 Rotation -0.22 + 20h 1 Rotation -0.22 + 20h 2 Rotation -0.22 + 20h 3 Rotation -0.22 + 20h 4 Rotation -0.22 + 20h 5 Rotation -0.22 + 20h 6 Rotation -0.22 + 20h 7 Rotation -0.22 + 20h 8 Rotation -0.22 + 20h 9 Rotation -0.22 + 20h 10 Rotation -0.22 + 20h 11 Rotation -0.22 + 20h 12 Rotation -0.22 + 20h 13 Rotation -0.22 + 20h 14 Rotation -0.22 + 20h 15 Rotation -0.22 + 20h 16 Rotation -0.22 + 20h 17 Rotation -0.22 + 20h 18 Rotation -0.22 + 20h 19 Rotation -0.22 + 20h 20 Rotation -0.22 + 20h 21 Rotation -0.22 + 20h 22 Rotation -0.22 + 20h 23 Rotation -0.22 + 20h 24 Rotation -0.22 + 20h 25 Rotation -0.22 + 20h 26 Rotation -0.22 + 20h 27 Rotation -0.22 + 20h 28 Rotation -0.22 + 20h 29 Rotation -0.22 + 20h 30 Rotation -0.22 + 20h 31 Rotation -0.22 + 20h 32 Rotation -0.22 + 20h 33 Rotation -0.22 + 20h 34 Rotation -0.22 + 20h 35 Rotation -0.22 + 20h 36 Rotation -0.22 + 20h 37 Rotation -0.22 + 20h 38 Rotation -0.22 + 20h 39 Rotation -0.22 + 20h 40 Rotation -0.22 + 20h 41 Rotation -0.22 + 20h 42 Rotation -0.22 + 20h 43 Rotation -0.22 + 20h 44 Rotation -0.22 + 20h 45 Rotation -0.22 + 20h 46 Rotation -0.22 + 20h 47 Rotation -0.22 + 20h 48 Rotation -0.22 + 20h 49 Rotation -0.22 + 20h 50 Rotation -0.22 + 20h 51 Rotation -0.22 + 20h 52 Rotation -0.22 + 20h 53 Rotation -0.22 + 20h 54 Rotation -0.22 + 20h 55 Rotation -0.22 + 20h 56 Rotation -0.22 + 20h 57 Rotation -0.22 + 20h 58 Rotation -0.22 + 20h 59 Rotation -0.22 + 21h 0 Rotation -0.22 + 21h 1 Rotation -0.22 + 21h 2 Rotation -0.22 + 21h 3 Rotation -0.22 + 21h 4 Rotation -0.22 + 21h 5 Rotation -0.22 + 21h 6 Rotation -0.22 + 21h 7 Rotation -0.22 + 21h 8 Rotation -0.22 + 21h 9 Rotation -0.22 + 21h 10 Rotation -0.22 + 21h 11 Rotation -0.22 + 21h 12 Rotation -0.22 + 21h 13 Rotation -0.22 + 21h 14 Rotation -0.22 + 21h 15 Rotation -0.22 + 21h 16 Rotation -0.22 + 21h 17 Rotation -0.22 + 21h 18 Rotation -0.22 + 21h 19 Rotation -0.22 + 21h 20 Rotation -0.22 + 21h 21 Rotation -0.22 + 21h 22 Rotation -0.22 + 21h 23 Rotation -0.22 + 21h 24 Rotation -0.22 + 21h 25 Rotation -0.22 + 21h 26 Rotation -0.22 + 21h 27 Rotation -0.22 + 21h 28 Rotation -0.22 + 21h 29 Rotation -0.22 + 21h 30 Rotation -0.22 + 21h 31 Rotation -0.22 + 21h 32 Rotation -0.22 + 21h 33 Rotation -0.22 + 21h 34 Rotation -0.22 + 21h 35 Rotation -0.22 + 21h 36 Rotation -0.22 + 21h 37 Rotation -0.22 + 21h 38 Rotation -0.22 + 21h 39 Rotation -0.22 + 21h 40 Rotation -0.22 + 21h 41 Rotation -0.22 + 21h 42 Rotation -0.22 + 21h 43 Rotation -0.22 + 21h 44 Rotation -0.22 + 21h 45 Rotation -0.22 + 21h 46 Rotation -0.22 + 21h 47 Rotation -0.22 + 21h 48 Rotation -0.22 + 21h 49 Rotation -0.22 + 21h 50 Rotation -0.22 + 21h 51 Rotation -0.22 + 21h 52 Rotation -0.22 + 21h 53 Rotation -0.22 + 21h 54 Rotation -0.22 + 21h 55 Rotation -0.22 + 21h 56 Rotation -0.22 + 21h 57 Rotation -0.22 + 21h 58 Rotation -0.22 + 21h 59 Rotation -0.22 + 22h 0 Rotation -0.22 + 22h 1 Rotation -0.22 + 22h 2 Rotation -0.22 + 22h 3 Rotation -0.22 + 22h 4 Rotation -0.22 + 22h 5 Rotation -0.22 + 22h 6 Rotation -0.22 + 22h 7 Rotation -0.22 + 22h 8 Rotation -0.22 + 22h 9 Rotation -0.22 + 22h 10 Rotation -0.22 + 22h 11 Rotation -0.22 + 22h 12 Rotation -0.22 + 22h 13 Rotation -0.22 + 22h 14 Rotation -0.22 + 22h 15 Rotation -0.22 + 22h 16 Rotation -0.22 + 22h 17 Rotation -0.22 + 22h 18 Rotation -0.22 + 22h 19 Rotation -0.22 + 22h 20 Rotation -0.22 + 22h 21 Rotation -0.22 + 22h 22 Rotation -0.22 + 22h 23 Rotation -0.22 + 22h 24 Rotation -0.22 + 22h 25 Rotation -0.22 + 22h 26 Rotation -0.22 + 22h 27 Rotation -0.22 + 22h 28 Rotation -0.22 + 22h 29 Rotation -0.22 + 22h 30 Rotation -0.22 + 22h 31 Rotation -0.22 + 22h 32 Rotation -0.22 + 22h 33 Rotation -0.22 + 22h 34 Rotation -0.22 + 22h 35 Rotation -0.22 + 22h 36 Rotation -0.22 + 22h 37 Rotation -0.22 + 22h 38 Rotation -0.22 + 22h 39 Rotation -0.22 + 22h 40 Rotation -0.22 + 22h 41 Rotation -0.22 + 22h 42 Rotation -0.22 + 22h 43 Rotation -0.22 + 22h 44 Rotation -0.22 + 22h 45 Rotation -0.22 + 22h 46 Rotation -0.22 + 22h 47 Rotation -0.22 + 22h 48 Rotation -0.22 + 22h 49 Rotation -0.22 + 22h 50 Rotation -0.22 + 22h 51 Rotation -0.22 + 22h 52 Rotation -0.22 + 22h 53 Rotation -0.22 + 22h 54 Rotation -0.22 + 22h 55 Rotation -0.22 + 22h 56 Rotation -0.22 + 22h 57 Rotation -0.22 + 22h 58 Rotation -0.22 + 22h 59 Rotation -0.22 + 23h 0 Rotation -0.22 + 23h 1 Rotation -0.22 + 23h 2 Rotation -0.22 + 23h 3 Rotation -0.22 + 23h 4 Rotation -0.22 + 23h 5 Rotation -0.22 + 23h 6 Rotation -0.22 + 23h 7 Rotation -0.22 + 23h 8 Rotation -0.22 + 23h 9 Rotation -0.22 + 23h 10 Rotation -0.22 + 23h 11 Rotation -0.22 + 23h 12 Rotation -0.22 + 23h 13 Rotation -0.22 + 23h 14 Rotation -0.22 + 23h 15 Rotation -0.22 + 23h 16 Rotation -0.22 + 23h 17 Rotation -0.22 + 23h 18 Rotation -0.22 + 23h 19 Rotation -0.22 + 23h 20 Rotation -0.22 + 23h 21 Rotation -0.22 + 23h 22 Rotation -0.22 + 23h 23 Rotation -0.22 + 23h 24 Rotation -0.22 + 23h 25 Rotation -0.22 + 23h 26 Rotation -0.22 + 23h 27 Rotation -0.22 + 23h 28 Rotation -0.22 + 23h 29 Rotation -0.22 + 23h 30 Rotation -0.22 + 23h 31 Rotation -0.22 + 23h 32 Rotation -0.22 + 23h 33 Rotation -0.22 + 23h 34 Rotation -0.22 + 23h 35 Rotation -0.22 + 23h 36 Rotation -0.22 + 23h 37 Rotation -0.22 + 23h 38 Rotation -0.22 + 23h 39 Rotation -0.22 + 23h 40 Rotation -0.22 + 23h 41 Rotation -0.22 + 23h 42 Rotation -0.22 + 23h 43 Rotation -0.22 + 23h 44 Rotation -0.22 + 23h 45 Rotation -0.22 + 23h 46 Rotation -0.22 + 23h 47 Rotation -0.22 + 23h 48 Rotation -0.22 + 23h 49 Rotation -0.22 + 23h 50 Rotation -0.22 + 23h 51 Rotation -0.22 + 23h 52 Rotation -0.22 + 23h 53 Rotation -0.22 + 23h 54 Rotation -0.22 + 23h 55 Rotation -0.22 + 23h 56 Rotation -0.22 + 23h 57 Rotation -0.22 + 23h 58 Rotation -0.22 + 23h 59 Rotation -0.22 + 0h 0 Rotation -0.22 + 0h 1 Rotation -0.22 + 0h 2 Rotation -0.22 + 0h 3 Rotation -0.22 + 0h 4 Rotation -0.22 + 0h 5 Rotation -0.22 + 0h 6 Rotation -0.22 + 0h 7 Rotation -0.22 + 0h 8 Rotation -0.22 + 0h 9 Rotation -0.22 + 0h 10 Rotation -0.22 + 0h 11 Rotation -0.22 + 0h 12 Rotation -0.22 + 0h 13 Rotation -0.22 + 0h 14 Rotation -0.22 + 0h 15 Rotation -0.22 + 0h 16 Rotation -0.22 + 0h 17 Rotation -0.22 + 0h 18 Rotation -0.22 + 0h 19 Rotation -0.22 + 0h 20 Rotation -0.22 + 0h 21 Rotation -0.22 + 0h 22 Rotation -0.22 + 0h 23 Rotation -0.22 + 0h 24 Rotation -0.22 + 0h 25 Rotation -0.22 + 0h 26 Rotation -0.22 + 0h 27 Rotation -0.22 + 0h 28 Rotation -0.22 + 0h 29 Rotation -0.22 + 0h 30 Rotation -0.22 + 0h 31 Rotation -0.22 + 0h 32 Rotation -0.22 + 0h 33 Rotation -0.22 + 0h 34 Rotation -0.22 + 0h 35 Rotation -0.22 + 0h 36 Rotation -0.22 + 0h 37 Rotation -0.22 + 0h 38 Rotation -0.22 + 0h 39 Rotation -0.22 + 0h 40 Rotation -0.22 + 0h 41 Rotation -0.22 + 0h 42 Rotation -0.22 + 0h 43 Rotation -0.22 + 0h 44 Rotation -0.22 + 0h 45 Rotation -0.22 + 0h 46 Rotation -0.22 + 0h 47 Rotation -0.22 + 0h 48 Rotation -0.22 + 0h 49 Rotation -0.22 + 0h 50 Rotation -0.22 + 0h 51 Rotation -0.22 + 0h 52 Rotation -0.22 + 0h 53 Rotation -0.22 + 0h 54 Rotation -0.22 + 0h 55 Rotation -0.22 + 0h 56 Rotation -0.22 + 0h 57 Rotation -0.22 + 0h 58 Rotation -0.22 + 0h 59 Rotation -0.22 + 1h 0 Rotation -0.22 + 1h 1 Rotation -0.22 + 1h 2 Rotation -0.22 + 1h 3 Rotation -0.22 + 1h 4 Rotation -0.22 + 1h 5 Rotation -0.22 + 1h 6 Rotation -0.22 + 1h 7 Rotation -0.22 + 1h 8 Rotation -0.22 + 1h 9 Rotation -0.22 + 1h 10 Rotation -0.22 + 1h 11 Rotation -0.22 + 1h 12 Rotation -0.22 + 1h 13 Rotation -0.22 + 1h 14 Rotation -0.22 + 1h 15 Rotation -0.22 + 1h 16 Rotation -0.22 + 1h 17 Rotation -0.22 + 1h 18 Rotation -0.22 + 1h 19 Rotation -0.22 + 1h 20 Rotation -0.22 + 1h 21 Rotation -0.22 + 1h 22 Rotation -0.22 + 1h 23 Rotation -0.22 + 1h 24 Rotation -0.22 + 1h 25 Rotation -0.22 + 1h 26 Rotation -0.22 + 1h 27 Rotation -0.22 + 1h 28 Rotation -0.22 + 1h 29 Rotation -0.22 + 1h 30 Rotation -0.22 + 1h 31 Rotation -0.22 + 1h 32 Rotation -0.22 + 1h 33 Rotation -0.22 + 1h 34 Rotation -0.22 + 1h 35 Rotation -0.22 + 1h 36 Rotation -0.22 + 1h 37 Rotation -0.22 + 1h 38 Rotation -0.22 + 1h 39 Rotation -0.22 + 1h 40 Rotation -0.22 + 1h 41 Rotation -0.22 + 1h 42 Rotation -0.22 + 1h 43 Rotation -0.22 + 1h 44 Rotation -0.22 + 1h 45 Rotation -0.22 + 1h 46 Rotation -0.22 + 1h 47 Rotation -0.22 + 1h 48 Rotation -0.22 + 1h 49 Rotation -0.22 + 1h 50 Rotation -0.22 + 1h 51 Rotation -0.22 + 1h 52 Rotation -0.22 + 1h 53 Rotation -0.22 + 1h 54 Rotation -0.22 + 1h 55 Rotation -0.22 + 1h 56 Rotation -0.22 + 1h 57 Rotation -0.22 + 1h 58 Rotation -0.22 + 1h 59 Rotation -0.22 + 2h 0 Rotation -0.22 + 2h 1 Rotation -0.22 + 2h 2 Rotation -0.22 + 2h 3 Rotation -0.22 + 2h 4 Rotation -0.22 + 2h 5 Rotation -0.22 + 2h 6 Rotation -0.22 + 2h 7 Rotation -0.22 + 2h 8 Rotation -0.22 + 2h 9 Rotation -0.22 + 2h 10 Rotation -0.22 + 2h 11 Rotation -0.22 + 2h 12 Rotation -0.22 + 2h 13 Rotation -0.22 + 2h 14 Rotation -0.22 + 2h 15 Rotation -0.22 + 2h 16 Rotation -0.22 + 2h 17 Rotation -0.22 + 2h 18 Rotation -0.22 + 2h 19 Rotation -0.22 + 2h 20 Rotation -0.22 + 2h 21 Rotation -0.22 + 2h 22 Rotation -0.22 + 2h 23 Rotation -0.22 + 2h 24 Rotation -0.22 + 2h 25 Rotation -0.22 + 2h 26 Rotation -0.22 + 2h 27 Rotation -0.22 + 2h 28 Rotation -0.22 + 2h 29 Rotation -0.22 + 2h 30 Rotation -0.22 + 2h 31 Rotation -0.22 + 2h 32 Rotation -0.23 + 2h 33 Rotation -0.23 + 2h 34 Rotation -0.23 + 2h 35 Rotation -0.23 + 2h 36 Rotation -0.23 + 2h 37 Rotation -0.23 + 2h 38 Rotation -0.23 + 2h 39 Rotation -0.23 + 2h 40 Rotation -0.23 + 2h 41 Rotation -0.23 + 2h 42 Rotation -0.23 + 2h 43 Rotation -0.23 + 2h 44 Rotation -0.23 + 2h 45 Rotation -0.23 + 2h 46 Rotation -0.23 + 2h 47 Rotation -0.23 + 2h 48 Rotation -0.23 + 2h 49 Rotation -0.23 + 2h 50 Rotation -0.23 + 2h 51 Rotation -0.23 + 2h 52 Rotation -0.23 + 2h 53 Rotation -0.23 + 2h 54 Rotation -0.23 + 2h 55 Rotation -0.23 + 2h 56 Rotation -0.23 + 2h 57 Rotation -0.23 + 2h 58 Rotation -0.23 + 2h 59 Rotation -0.23 + 3h 0 Rotation -0.23 + 3h 1 Rotation -0.23 + 3h 2 Rotation -0.23 + 3h 3 Rotation -0.23 + 3h 4 Rotation -0.23 + 3h 5 Rotation -0.23 + 3h 6 Rotation -0.23 + 3h 7 Rotation -0.23 + 3h 8 Rotation -0.23 + 3h 9 Rotation -0.23 + 3h 10 Rotation -0.23 + 3h 11 Rotation -0.23 + 3h 12 Rotation -0.23 + 3h 13 Rotation -0.23 + 3h 14 Rotation -0.23 + 3h 15 Rotation -0.23 + 3h 16 Rotation -0.23 + 3h 17 Rotation -0.23 + 3h 18 Rotation -0.23 + 3h 19 Rotation -0.23 + 3h 20 Rotation -0.23 + 3h 21 Rotation -0.23 + 3h 22 Rotation -0.23 + 3h 23 Rotation -0.23 + 3h 24 Rotation -0.23 + 3h 25 Rotation -0.23 + 3h 26 Rotation -0.23 + 3h 27 Rotation -0.23 + 3h 28 Rotation -0.23 + 3h 29 Rotation -0.23 + 3h 30 Rotation -0.23 + 3h 31 Rotation -0.23 + 3h 32 Rotation -0.23 + 3h 33 Rotation -0.23 + 3h 34 Rotation -0.23 + 3h 35 Rotation -0.23 + 3h 36 Rotation -0.23 + 3h 37 Rotation -0.23 + 3h 38 Rotation -0.23 + 3h 39 Rotation -0.23 + 3h 40 Rotation -0.23 + 3h 41 Rotation -0.23 + 3h 42 Rotation -0.23 + 3h 43 Rotation -0.23 + 3h 44 Rotation -0.23 + 3h 45 Rotation -0.23 + 3h 46 Rotation -0.23 + 3h 47 Rotation -0.23 + 3h 48 Rotation -0.23 + 3h 49 Rotation -0.23 + 3h 50 Rotation -0.23 + 3h 51 Rotation -0.23 + 3h 52 Rotation -0.23 + 3h 53 Rotation -0.23 + 3h 54 Rotation -0.23 + 3h 55 Rotation -0.23 + 3h 56 Rotation -0.23 + 3h 57 Rotation -0.23 + 3h 58 Rotation -0.23 + 3h 59 Rotation -0.23 + 4h 0 Rotation -0.23 + 4h 1 Rotation -0.23 + 4h 2 Rotation -0.23 + 4h 3 Rotation -0.23 + 4h 4 Rotation -0.23 + 4h 5 Rotation -0.23 + 4h 6 Rotation -0.23 + 4h 7 Rotation -0.23 + 4h 8 Rotation -0.23 + 4h 9 Rotation -0.23 + 4h 10 Rotation -0.23 + 4h 11 Rotation -0.23 + 4h 12 Rotation -0.23 + 4h 13 Rotation -0.23 + 4h 14 Rotation -0.23 + 4h 15 Rotation -0.23 + 4h 16 Rotation -0.23 + 4h 17 Rotation -0.23 + 4h 18 Rotation -0.23 + 4h 19 Rotation -0.23 + 4h 20 Rotation -0.23 + 4h 21 Rotation -0.23 + 4h 22 Rotation -0.23 + 4h 23 Rotation -0.23 + 4h 24 Rotation -0.23 + 4h 25 Rotation -0.23 + 4h 26 Rotation -0.23 + 4h 27 Rotation -0.23 + 4h 28 Rotation -0.23 + 4h 29 Rotation -0.23 + 4h 30 Rotation -0.23 + 4h 31 Rotation -0.23 + 4h 32 Rotation -0.23 + 4h 33 Rotation -0.23 + 4h 34 Rotation -0.23 + 4h 35 Rotation -0.23 + 4h 36 Rotation -0.23 + 4h 37 Rotation -0.23 + 4h 38 Rotation -0.23 + 4h 39 Rotation -0.24 + 4h 40 Rotation -0.24 + 4h 41 Rotation -0.24 + 4h 42 Rotation -0.24 + 4h 43 Rotation -0.24 + 4h 44 Rotation -0.24 + 4h 45 Rotation -0.24 + 4h 46 Rotation -0.24 + 4h 47 Rotation -0.24 + 4h 48 Rotation -0.24 + 4h 49 Rotation -0.24 + 4h 50 Rotation -0.24 + 4h 51 Rotation -0.24 + 4h 52 Rotation -0.24 + 4h 53 Rotation -0.24 + 4h 54 Rotation -0.24 + 4h 55 Rotation -0.24 + 4h 56 Rotation -0.24 + 4h 57 Rotation -0.24 + 4h 58 Rotation -0.24 + 4h 59 Rotation -0.24 + 5h 0 Rotation -0.24 + 5h 1 Rotation -0.24 + 5h 2 Rotation -0.24 + 5h 3 Rotation -0.24 + 5h 4 Rotation -0.24 + 5h 5 Rotation -0.24 + 5h 6 Rotation -0.24 + 5h 7 Rotation -0.24 + 5h 8 Rotation -0.24 + 5h 9 Rotation -0.24 + 5h 10 Rotation -0.24 + 5h 11 Rotation -0.24 + 5h 12 Rotation -0.24 + 5h 13 Rotation -0.24 + 5h 14 Rotation -0.24 + 5h 15 Rotation -0.24 + 5h 16 Rotation -0.24 + 5h 17 Rotation -0.24 + 5h 18 Rotation -0.24 + 5h 19 Rotation -0.24 + 5h 20 Rotation -0.24 + 5h 21 Rotation -0.24 + 5h 22 Rotation -0.24 + 5h 23 Rotation -0.24 + 5h 24 Rotation -0.24 + 5h 25 Rotation -0.24 + 5h 26 Rotation -0.24 + 5h 27 Rotation -0.24 + 5h 28 Rotation -0.24 + 5h 29 Rotation -0.24 + 5h 30 Rotation -0.24 + 5h 31 Rotation -0.24 + 5h 32 Rotation -0.24 + 5h 33 Rotation -0.24 + 5h 34 Rotation -0.24 + 5h 35 Rotation -0.24 + 5h 36 Rotation -0.24 + 5h 37 Rotation -0.24 + 5h 38 Rotation -0.24 + 5h 39 Rotation -0.24 + 5h 40 Rotation -0.24 + 5h 41 Rotation -0.24 + 5h 42 Rotation -0.24 + 5h 43 Rotation -0.24 + 5h 44 Rotation -0.25 + 5h 45 Rotation -0.25 + 5h 46 Rotation -0.25 + 5h 47 Rotation -0.25 + 5h 48 Rotation -0.25 + 5h 49 Rotation -0.25 + 5h 50 Rotation -0.25 + 5h 51 Rotation -0.25 + 5h 52 Rotation -0.25 + 5h 53 Rotation -0.25 + 5h 54 Rotation -0.25 + 5h 55 Rotation -0.25 + 5h 56 Rotation -0.25 + 5h 57 Rotation -0.25 + 5h 58 Rotation -0.25 + 5h 59 Rotation -0.25 + 6h 0 Rotation -0.25 + 6h 1 Rotation -0.25 + 6h 2 Rotation -0.25 + 6h 3 Rotation -0.25 + 6h 4 Rotation -0.25 + 6h 5 Rotation -0.25 + 6h 6 Rotation -0.25 + 6h 7 Rotation -0.25 + 6h 8 Rotation -0.25 + 6h 9 Rotation -0.25 + 6h 10 Rotation -0.25 + 6h 11 Rotation -0.25 + 6h 12 Rotation -0.25 + 6h 13 Rotation -0.25 + 6h 14 Rotation -0.25 + 6h 15 Rotation -0.25 + 6h 16 Rotation -0.25 + 6h 17 Rotation -0.25 + 6h 18 Rotation -0.25 + 6h 19 Rotation -0.25 + 6h 20 Rotation -0.25 + 6h 21 Rotation -0.25 + 6h 22 Rotation -0.25 + 6h 23 Rotation -0.25 + 6h 24 Rotation -0.25 + 6h 25 Rotation -0.25 + 6h 26 Rotation -0.25 + 6h 27 Rotation -0.25 + 6h 28 Rotation -0.25 + 6h 29 Rotation -0.25 + 6h 30 Rotation -0.25 + 6h 31 Rotation -0.25 + 6h 32 Rotation -0.25 + 6h 33 Rotation -0.26 + 6h 34 Rotation -0.26 + 6h 35 Rotation -0.26 + 6h 36 Rotation -0.26 + 6h 37 Rotation -0.26 + 6h 38 Rotation -0.26 + 6h 39 Rotation -0.26 + 6h 40 Rotation -0.26 + 6h 41 Rotation -0.26 + 6h 42 Rotation -0.26 + 6h 43 Rotation -0.26 + +Cumulative field rotation: 359.76 + +Start alt. 42 Az. 194 +Ending alt. 38 Az. 196 diff --git a/SKYTEL/rotate.bas b/SKYTEL/rotate.bas new file mode 100644 index 0000000..791ad6a --- /dev/null +++ b/SKYTEL/rotate.bas @@ -0,0 +1,81 @@ +10 ' FIELD ROTATION +20 ' +30 ' PI=ATN(1)*4: +31 DR=PI/180: RD=180/PI +40 INPUT "Observer's latitude (deg) ";LA +50 LA=LA*DR: CL=COS(LA): SL=SIN(LA) +60 INPUT "Day of the month (1-31)";J +70 INPUT "Month (1-12) ";M +80 INPUT "Right ascension (h,m) ";H5,M5 +90 INPUT "Declination (deg) ";DE +100 AD=H5+M5/60: DE=DE*DR: ' Hours and radians +110 SD=SIN(DE): CD=COS(DE): TD=SD/CD +120 GOSUB 650: PRINT +130 INPUT "From (h,m): ";H1,M1 +140 T1=H1+M1/60: ' Starting time (hours) +150 INPUT "To (h,m): ";H2,M2 +160 T2=H2+M2/60: ' Ending time (hours) +170 IF T20 THEN 270 +260 C=SGN(DD)*PI/2: GOTO 280: ' In case DS=0 +270 C=ATN(DD/DS): IF DS<0 THEN C=C+PI +280 Q=C*RD: ' Parallactic angle in degrees +290 IF T<>0 THEN 310 +300 Q0=Q: Q1=Q: ' Save initial value of Q +310 XX=Q-Q1: XT=Q-Q0 +320 IF ABS(XX)<=180 THEN 340 +330 XX=XX-360*SGN(XX): Q=Q-360*SGN(Q) +340 Q1=Q +350 IF T<>0 THEN GOSUB 470 +360 IF T=0 THEN GOSUB 700 +370 IF XT>MX THEN MX=XT +380 IF XT=24 THEN LT=LT-24 +480 PRINT USING " ##h ##m ";INT(LT);(LT-INT(LT))*60; +490 PRINT USING " Rotation +###.## deg/min ";XX +500 RETURN +510 ' Compute hour angle, altitude, and azimuth +520 HD=15*(1.002737*LT+ST-AD): ' Hour angle (deg) +530 IF HD>=360 THEN HD=HD-360 +540 AH=HD*DR: CH=COS(AH): SA=SL*SD+CL*CD*CH +550 IF ABS(SA)<1 THEN 580 +560 IF ABS(SA)>1 THEN SA=1*SGN(SA) +570 H=SA*90: GOTO 590: ' If zenith or nadir +580 H=ATN(SA/SQR(1-SA*SA))*RD: ' Altitude (degrees) +590 A1=SIN(AH): A2=CH*SL-TD*CL: IF A2<>0 THEN 610 +600 AZ=SGN(A1)*PI/2: GOTO 620: ' Special case A2=0 +610 AZ=ATN(A1/A2): IF A2<0 THEN AZ=AZ+PI +620 AZ=AZ*RD+180: ' Azimuth in degrees from north +630 IF AZ>=360 THEN AZ=AZ-360 +640 RETURN +650 ' Find approx. sidereal time at midnight +660 N=INT(275*M/9)-2*INT((M+9)/12)+J-30 +670 ST=(6.61+.06571*N)/24 +680 ST=(ST-INT(ST))*24: ' Express in hours +690 RETURN +700 ' Initialize values +710 MX=XX: MN=XX: A0=A: H0=H +720 RETURN +800 ' +810 ' ROTATE.BAS -- This program by Alphonse +820 ' Pouplier computes the rate at which +830 ' the field will rotate for a telescope +840 ' whose polar axis is misaligned on the +850 ' celestial pole. This subject is discussed +860 ' in detail in Sky & Telescope, September +870 ' 1992, page 318. diff --git a/SKYTEL/rotate.dif b/SKYTEL/rotate.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/rotate.run b/SKYTEL/rotate.run new file mode 100644 index 0000000..1f582e0 --- /dev/null +++ b/SKYTEL/rotate.run @@ -0,0 +1,1384 @@ +Observer's latitude (deg) ? 147 +Day of the month (1-31)? 6 +Month (1-12) ? 3 +Right ascension (h,m) ? 9,54 +Declination (deg) ? 76 + +From (h,m): ? 7,54 +To (h,m): ? 6,43 + +Positive rotation rates are clockwise: + 7h 55 Rotation -0.27 + 7h 56 Rotation -0.28 + 7h 57 Rotation -0.28 + 7h 58 Rotation -0.28 + 7h 59 Rotation -0.28 + 8h 0 Rotation -0.28 + 8h 1 Rotation -0.28 + 8h 2 Rotation -0.28 + 8h 3 Rotation -0.28 + 8h 4 Rotation -0.28 + 8h 5 Rotation -0.28 + 8h 6 Rotation -0.28 + 8h 7 Rotation -0.28 + 8h 8 Rotation -0.28 + 8h 9 Rotation -0.28 + 8h 10 Rotation -0.28 + 8h 11 Rotation -0.28 + 8h 12 Rotation -0.28 + 8h 13 Rotation -0.28 + 8h 14 Rotation -0.28 + 8h 15 Rotation -0.28 + 8h 16 Rotation -0.28 + 8h 17 Rotation -0.28 + 8h 18 Rotation -0.28 + 8h 19 Rotation -0.28 + 8h 20 Rotation -0.28 + 8h 21 Rotation -0.28 + 8h 22 Rotation -0.28 + 8h 23 Rotation -0.28 + 8h 24 Rotation -0.28 + 8h 25 Rotation -0.28 + 8h 26 Rotation -0.28 + 8h 27 Rotation -0.28 + 8h 28 Rotation -0.28 + 8h 29 Rotation -0.28 + 8h 30 Rotation -0.28 + 8h 31 Rotation -0.28 + 8h 32 Rotation -0.28 + 8h 33 Rotation -0.28 + 8h 34 Rotation -0.29 + 8h 35 Rotation -0.29 + 8h 36 Rotation -0.29 + 8h 37 Rotation -0.29 + 8h 38 Rotation -0.29 + 8h 39 Rotation -0.29 + 8h 40 Rotation -0.29 + 8h 41 Rotation -0.29 + 8h 42 Rotation -0.29 + 8h 43 Rotation -0.29 + 8h 44 Rotation -0.29 + 8h 45 Rotation -0.29 + 8h 46 Rotation -0.29 + 8h 47 Rotation -0.29 + 8h 48 Rotation -0.29 + 8h 49 Rotation -0.29 + 8h 50 Rotation -0.29 + 8h 51 Rotation -0.29 + 8h 52 Rotation -0.29 + 8h 53 Rotation -0.29 + 8h 54 Rotation -0.29 + 8h 55 Rotation -0.29 + 8h 56 Rotation -0.29 + 8h 57 Rotation -0.29 + 8h 58 Rotation -0.29 + 8h 59 Rotation -0.29 + 9h 0 Rotation -0.29 + 9h 1 Rotation -0.29 + 9h 2 Rotation -0.29 + 9h 3 Rotation -0.29 + 9h 4 Rotation -0.29 + 9h 5 Rotation -0.29 + 9h 6 Rotation -0.29 + 9h 7 Rotation -0.29 + 9h 8 Rotation -0.29 + 9h 9 Rotation -0.29 + 9h 10 Rotation -0.29 + 9h 11 Rotation -0.29 + 9h 12 Rotation -0.29 + 9h 13 Rotation -0.29 + 9h 14 Rotation -0.30 + 9h 15 Rotation -0.30 + 9h 16 Rotation -0.30 + 9h 17 Rotation -0.30 + 9h 18 Rotation -0.30 + 9h 19 Rotation -0.30 + 9h 20 Rotation -0.30 + 9h 21 Rotation -0.30 + 9h 22 Rotation -0.30 + 9h 23 Rotation -0.30 + 9h 24 Rotation -0.30 + 9h 25 Rotation -0.30 + 9h 26 Rotation -0.30 + 9h 27 Rotation -0.30 + 9h 28 Rotation -0.30 + 9h 29 Rotation -0.30 + 9h 30 Rotation -0.30 + 9h 31 Rotation -0.30 + 9h 32 Rotation -0.30 + 9h 33 Rotation -0.30 + 9h 34 Rotation -0.30 + 9h 35 Rotation -0.30 + 9h 36 Rotation -0.30 + 9h 37 Rotation -0.30 + 9h 38 Rotation -0.30 + 9h 39 Rotation -0.30 + 9h 40 Rotation -0.30 + 9h 41 Rotation -0.30 + 9h 42 Rotation -0.30 + 9h 43 Rotation -0.30 + 9h 44 Rotation -0.30 + 9h 45 Rotation -0.30 + 9h 46 Rotation -0.30 + 9h 47 Rotation -0.30 + 9h 48 Rotation -0.30 + 9h 49 Rotation -0.30 + 9h 50 Rotation -0.30 + 9h 51 Rotation -0.30 + 9h 52 Rotation -0.30 + 9h 53 Rotation -0.30 + 9h 54 Rotation -0.30 + 9h 55 Rotation -0.30 + 9h 56 Rotation -0.30 + 9h 57 Rotation -0.30 + 9h 58 Rotation -0.30 + 9h 59 Rotation -0.30 + 10h 0 Rotation -0.30 + 10h 1 Rotation -0.30 + 10h 2 Rotation -0.30 + 10h 3 Rotation -0.30 + 10h 4 Rotation -0.30 + 10h 5 Rotation -0.30 + 10h 6 Rotation -0.30 + 10h 7 Rotation -0.30 + 10h 8 Rotation -0.30 + 10h 9 Rotation -0.30 + 10h 10 Rotation -0.31 + 10h 11 Rotation -0.31 + 10h 12 Rotation -0.31 + 10h 13 Rotation -0.31 + 10h 14 Rotation -0.31 + 10h 15 Rotation -0.31 + 10h 16 Rotation -0.31 + 10h 17 Rotation -0.31 + 10h 18 Rotation -0.31 + 10h 19 Rotation -0.31 + 10h 20 Rotation -0.31 + 10h 21 Rotation -0.31 + 10h 22 Rotation -0.31 + 10h 23 Rotation -0.31 + 10h 24 Rotation -0.31 + 10h 25 Rotation -0.31 + 10h 26 Rotation -0.31 + 10h 27 Rotation -0.31 + 10h 28 Rotation -0.31 + 10h 29 Rotation -0.31 + 10h 30 Rotation -0.31 + 10h 31 Rotation -0.31 + 10h 32 Rotation -0.31 + 10h 33 Rotation -0.31 + 10h 34 Rotation -0.31 + 10h 35 Rotation -0.31 + 10h 36 Rotation -0.31 + 10h 37 Rotation -0.31 + 10h 38 Rotation -0.31 + 10h 39 Rotation -0.31 + 10h 40 Rotation -0.31 + 10h 41 Rotation -0.31 + 10h 42 Rotation -0.31 + 10h 43 Rotation -0.31 + 10h 44 Rotation -0.31 + 10h 45 Rotation -0.31 + 10h 46 Rotation -0.31 + 10h 47 Rotation -0.31 + 10h 48 Rotation -0.31 + 10h 49 Rotation -0.31 + 10h 50 Rotation -0.31 + 10h 51 Rotation -0.31 + 10h 52 Rotation -0.31 + 10h 53 Rotation -0.31 + 10h 54 Rotation -0.31 + 10h 55 Rotation -0.31 + 10h 56 Rotation -0.31 + 10h 57 Rotation -0.31 + 10h 58 Rotation -0.31 + 10h 59 Rotation -0.31 + 11h 0 Rotation -0.31 + 11h 1 Rotation -0.31 + 11h 2 Rotation -0.31 + 11h 3 Rotation -0.31 + 11h 4 Rotation -0.31 + 11h 5 Rotation -0.31 + 11h 6 Rotation -0.31 + 11h 7 Rotation -0.31 + 11h 8 Rotation -0.31 + 11h 9 Rotation -0.31 + 11h 10 Rotation -0.31 + 11h 11 Rotation -0.31 + 11h 12 Rotation -0.31 + 11h 13 Rotation -0.31 + 11h 14 Rotation -0.31 + 11h 15 Rotation -0.31 + 11h 16 Rotation -0.31 + 11h 17 Rotation -0.31 + 11h 18 Rotation -0.31 + 11h 19 Rotation -0.31 + 11h 20 Rotation -0.31 + 11h 21 Rotation -0.31 + 11h 22 Rotation -0.31 + 11h 23 Rotation -0.31 + 11h 24 Rotation -0.31 + 11h 25 Rotation -0.31 + 11h 26 Rotation -0.31 + 11h 27 Rotation -0.31 + 11h 28 Rotation -0.31 + 11h 29 Rotation -0.31 + 11h 30 Rotation -0.31 + 11h 31 Rotation -0.31 + 11h 32 Rotation -0.31 + 11h 33 Rotation -0.31 + 11h 34 Rotation -0.31 + 11h 35 Rotation -0.31 + 11h 36 Rotation -0.31 + 11h 37 Rotation -0.31 + 11h 38 Rotation -0.31 + 11h 39 Rotation -0.31 + 11h 40 Rotation -0.31 + 11h 41 Rotation -0.31 + 11h 42 Rotation -0.31 + 11h 43 Rotation -0.31 + 11h 44 Rotation -0.31 + 11h 45 Rotation -0.31 + 11h 46 Rotation -0.31 + 11h 47 Rotation -0.31 + 11h 48 Rotation -0.31 + 11h 49 Rotation -0.31 + 11h 50 Rotation -0.31 + 11h 51 Rotation -0.30 + 11h 52 Rotation -0.30 + 11h 53 Rotation -0.30 + 11h 54 Rotation -0.30 + 11h 55 Rotation -0.30 + 11h 56 Rotation -0.30 + 11h 57 Rotation -0.30 + 11h 58 Rotation -0.30 + 11h 59 Rotation -0.30 + 12h 0 Rotation -0.30 + 12h 1 Rotation -0.30 + 12h 2 Rotation -0.30 + 12h 3 Rotation -0.30 + 12h 4 Rotation -0.30 + 12h 5 Rotation -0.30 + 12h 6 Rotation -0.30 + 12h 7 Rotation -0.30 + 12h 8 Rotation -0.30 + 12h 9 Rotation -0.30 + 12h 10 Rotation -0.30 + 12h 11 Rotation -0.30 + 12h 12 Rotation -0.30 + 12h 13 Rotation -0.30 + 12h 14 Rotation -0.30 + 12h 15 Rotation -0.30 + 12h 16 Rotation -0.30 + 12h 17 Rotation -0.30 + 12h 18 Rotation -0.30 + 12h 19 Rotation -0.30 + 12h 20 Rotation -0.30 + 12h 21 Rotation -0.30 + 12h 22 Rotation -0.30 + 12h 23 Rotation -0.30 + 12h 24 Rotation -0.30 + 12h 25 Rotation -0.30 + 12h 26 Rotation -0.30 + 12h 27 Rotation -0.30 + 12h 28 Rotation -0.30 + 12h 29 Rotation -0.30 + 12h 30 Rotation -0.30 + 12h 31 Rotation -0.30 + 12h 32 Rotation -0.30 + 12h 33 Rotation -0.30 + 12h 34 Rotation -0.30 + 12h 35 Rotation -0.30 + 12h 36 Rotation -0.30 + 12h 37 Rotation -0.30 + 12h 38 Rotation -0.30 + 12h 39 Rotation -0.30 + 12h 40 Rotation -0.30 + 12h 41 Rotation -0.30 + 12h 42 Rotation -0.30 + 12h 43 Rotation -0.30 + 12h 44 Rotation -0.30 + 12h 45 Rotation -0.30 + 12h 46 Rotation -0.29 + 12h 47 Rotation -0.29 + 12h 48 Rotation -0.29 + 12h 49 Rotation -0.29 + 12h 50 Rotation -0.29 + 12h 51 Rotation -0.29 + 12h 52 Rotation -0.29 + 12h 53 Rotation -0.29 + 12h 54 Rotation -0.29 + 12h 55 Rotation -0.29 + 12h 56 Rotation -0.29 + 12h 57 Rotation -0.29 + 12h 58 Rotation -0.29 + 12h 59 Rotation -0.29 + 13h 0 Rotation -0.29 + 13h 1 Rotation -0.29 + 13h 2 Rotation -0.29 + 13h 3 Rotation -0.29 + 13h 4 Rotation -0.29 + 13h 5 Rotation -0.29 + 13h 6 Rotation -0.29 + 13h 7 Rotation -0.29 + 13h 8 Rotation -0.29 + 13h 9 Rotation -0.29 + 13h 10 Rotation -0.29 + 13h 11 Rotation -0.29 + 13h 12 Rotation -0.29 + 13h 13 Rotation -0.29 + 13h 14 Rotation -0.29 + 13h 15 Rotation -0.29 + 13h 16 Rotation -0.29 + 13h 17 Rotation -0.29 + 13h 18 Rotation -0.29 + 13h 19 Rotation -0.29 + 13h 20 Rotation -0.29 + 13h 21 Rotation -0.29 + 13h 22 Rotation -0.29 + 13h 23 Rotation -0.29 + 13h 24 Rotation -0.29 + 13h 25 Rotation -0.29 + 13h 26 Rotation -0.29 + 13h 27 Rotation -0.28 + 13h 28 Rotation -0.28 + 13h 29 Rotation -0.28 + 13h 30 Rotation -0.28 + 13h 31 Rotation -0.28 + 13h 32 Rotation -0.28 + 13h 33 Rotation -0.28 + 13h 34 Rotation -0.28 + 13h 35 Rotation -0.28 + 13h 36 Rotation -0.28 + 13h 37 Rotation -0.28 + 13h 38 Rotation -0.28 + 13h 39 Rotation -0.28 + 13h 40 Rotation -0.28 + 13h 41 Rotation -0.28 + 13h 42 Rotation -0.28 + 13h 43 Rotation -0.28 + 13h 44 Rotation -0.28 + 13h 45 Rotation -0.28 + 13h 46 Rotation -0.28 + 13h 47 Rotation -0.28 + 13h 48 Rotation -0.28 + 13h 49 Rotation -0.28 + 13h 50 Rotation -0.28 + 13h 51 Rotation -0.28 + 13h 52 Rotation -0.28 + 13h 53 Rotation -0.28 + 13h 54 Rotation -0.28 + 13h 55 Rotation -0.28 + 13h 56 Rotation -0.28 + 13h 57 Rotation -0.28 + 13h 58 Rotation -0.28 + 13h 59 Rotation -0.28 + 14h 0 Rotation -0.28 + 14h 1 Rotation -0.28 + 14h 2 Rotation -0.28 + 14h 3 Rotation -0.28 + 14h 4 Rotation -0.27 + 14h 5 Rotation -0.27 + 14h 6 Rotation -0.27 + 14h 7 Rotation -0.27 + 14h 8 Rotation -0.27 + 14h 9 Rotation -0.27 + 14h 10 Rotation -0.27 + 14h 11 Rotation -0.27 + 14h 12 Rotation -0.27 + 14h 13 Rotation -0.27 + 14h 14 Rotation -0.27 + 14h 15 Rotation -0.27 + 14h 16 Rotation -0.27 + 14h 17 Rotation -0.27 + 14h 18 Rotation -0.27 + 14h 19 Rotation -0.27 + 14h 20 Rotation -0.27 + 14h 21 Rotation -0.27 + 14h 22 Rotation -0.27 + 14h 23 Rotation -0.27 + 14h 24 Rotation -0.27 + 14h 25 Rotation -0.27 + 14h 26 Rotation -0.27 + 14h 27 Rotation -0.27 + 14h 28 Rotation -0.27 + 14h 29 Rotation -0.27 + 14h 30 Rotation -0.27 + 14h 31 Rotation -0.27 + 14h 32 Rotation -0.27 + 14h 33 Rotation -0.27 + 14h 34 Rotation -0.27 + 14h 35 Rotation -0.27 + 14h 36 Rotation -0.27 + 14h 37 Rotation -0.27 + 14h 38 Rotation -0.27 + 14h 39 Rotation -0.27 + 14h 40 Rotation -0.27 + 14h 41 Rotation -0.27 + 14h 42 Rotation -0.26 + 14h 43 Rotation -0.26 + 14h 44 Rotation -0.26 + 14h 45 Rotation -0.26 + 14h 46 Rotation -0.26 + 14h 47 Rotation -0.26 + 14h 48 Rotation -0.26 + 14h 49 Rotation -0.26 + 14h 50 Rotation -0.26 + 14h 51 Rotation -0.26 + 14h 52 Rotation -0.26 + 14h 53 Rotation -0.26 + 14h 54 Rotation -0.26 + 14h 55 Rotation -0.26 + 14h 56 Rotation -0.26 + 14h 57 Rotation -0.26 + 14h 58 Rotation -0.26 + 14h 59 Rotation -0.26 + 15h 0 Rotation -0.26 + 15h 1 Rotation -0.26 + 15h 2 Rotation -0.26 + 15h 3 Rotation -0.26 + 15h 4 Rotation -0.26 + 15h 5 Rotation -0.26 + 15h 6 Rotation -0.26 + 15h 7 Rotation -0.26 + 15h 8 Rotation -0.26 + 15h 9 Rotation -0.26 + 15h 10 Rotation -0.26 + 15h 11 Rotation -0.26 + 15h 12 Rotation -0.26 + 15h 13 Rotation -0.26 + 15h 14 Rotation -0.26 + 15h 15 Rotation -0.26 + 15h 16 Rotation -0.26 + 15h 17 Rotation -0.26 + 15h 18 Rotation -0.26 + 15h 19 Rotation -0.26 + 15h 20 Rotation -0.26 + 15h 21 Rotation -0.26 + 15h 22 Rotation -0.26 + 15h 23 Rotation -0.26 + 15h 24 Rotation -0.25 + 15h 25 Rotation -0.25 + 15h 26 Rotation -0.25 + 15h 27 Rotation -0.25 + 15h 28 Rotation -0.25 + 15h 29 Rotation -0.25 + 15h 30 Rotation -0.25 + 15h 31 Rotation -0.25 + 15h 32 Rotation -0.25 + 15h 33 Rotation -0.25 + 15h 34 Rotation -0.25 + 15h 35 Rotation -0.25 + 15h 36 Rotation -0.25 + 15h 37 Rotation -0.25 + 15h 38 Rotation -0.25 + 15h 39 Rotation -0.25 + 15h 40 Rotation -0.25 + 15h 41 Rotation -0.25 + 15h 42 Rotation -0.25 + 15h 43 Rotation -0.25 + 15h 44 Rotation -0.25 + 15h 45 Rotation -0.25 + 15h 46 Rotation -0.25 + 15h 47 Rotation -0.25 + 15h 48 Rotation -0.25 + 15h 49 Rotation -0.25 + 15h 50 Rotation -0.25 + 15h 51 Rotation -0.25 + 15h 52 Rotation -0.25 + 15h 53 Rotation -0.25 + 15h 54 Rotation -0.25 + 15h 55 Rotation -0.25 + 15h 56 Rotation -0.25 + 15h 57 Rotation -0.25 + 15h 58 Rotation -0.25 + 15h 59 Rotation -0.25 + 16h 0 Rotation -0.25 + 16h 1 Rotation -0.25 + 16h 2 Rotation -0.25 + 16h 3 Rotation -0.25 + 16h 4 Rotation -0.25 + 16h 5 Rotation -0.25 + 16h 6 Rotation -0.25 + 16h 7 Rotation -0.25 + 16h 8 Rotation -0.25 + 16h 9 Rotation -0.25 + 16h 10 Rotation -0.25 + 16h 11 Rotation -0.25 + 16h 12 Rotation -0.24 + 16h 13 Rotation -0.24 + 16h 14 Rotation -0.24 + 16h 15 Rotation -0.24 + 16h 16 Rotation -0.24 + 16h 17 Rotation -0.24 + 16h 18 Rotation -0.24 + 16h 19 Rotation -0.24 + 16h 20 Rotation -0.24 + 16h 21 Rotation -0.24 + 16h 22 Rotation -0.24 + 16h 23 Rotation -0.24 + 16h 24 Rotation -0.24 + 16h 25 Rotation -0.24 + 16h 26 Rotation -0.24 + 16h 27 Rotation -0.24 + 16h 28 Rotation -0.24 + 16h 29 Rotation -0.24 + 16h 30 Rotation -0.24 + 16h 31 Rotation -0.24 + 16h 32 Rotation -0.24 + 16h 33 Rotation -0.24 + 16h 34 Rotation -0.24 + 16h 35 Rotation -0.24 + 16h 36 Rotation -0.24 + 16h 37 Rotation -0.24 + 16h 38 Rotation -0.24 + 16h 39 Rotation -0.24 + 16h 40 Rotation -0.24 + 16h 41 Rotation -0.24 + 16h 42 Rotation -0.24 + 16h 43 Rotation -0.24 + 16h 44 Rotation -0.24 + 16h 45 Rotation -0.24 + 16h 46 Rotation -0.24 + 16h 47 Rotation -0.24 + 16h 48 Rotation -0.24 + 16h 49 Rotation -0.24 + 16h 50 Rotation -0.24 + 16h 51 Rotation -0.24 + 16h 52 Rotation -0.24 + 16h 53 Rotation -0.24 + 16h 54 Rotation -0.24 + 16h 55 Rotation -0.24 + 16h 56 Rotation -0.24 + 16h 57 Rotation -0.24 + 16h 58 Rotation -0.24 + 16h 59 Rotation -0.24 + 17h 0 Rotation -0.24 + 17h 1 Rotation -0.24 + 17h 2 Rotation -0.24 + 17h 3 Rotation -0.24 + 17h 4 Rotation -0.24 + 17h 5 Rotation -0.24 + 17h 6 Rotation -0.24 + 17h 7 Rotation -0.24 + 17h 8 Rotation -0.24 + 17h 9 Rotation -0.24 + 17h 10 Rotation -0.24 + 17h 11 Rotation -0.24 + 17h 12 Rotation -0.24 + 17h 13 Rotation -0.24 + 17h 14 Rotation -0.24 + 17h 15 Rotation -0.24 + 17h 16 Rotation -0.24 + 17h 17 Rotation -0.23 + 17h 18 Rotation -0.23 + 17h 19 Rotation -0.23 + 17h 20 Rotation -0.23 + 17h 21 Rotation -0.23 + 17h 22 Rotation -0.23 + 17h 23 Rotation -0.23 + 17h 24 Rotation -0.23 + 17h 25 Rotation -0.23 + 17h 26 Rotation -0.23 + 17h 27 Rotation -0.23 + 17h 28 Rotation -0.23 + 17h 29 Rotation -0.23 + 17h 30 Rotation -0.23 + 17h 31 Rotation -0.23 + 17h 32 Rotation -0.23 + 17h 33 Rotation -0.23 + 17h 34 Rotation -0.23 + 17h 35 Rotation -0.23 + 17h 36 Rotation -0.23 + 17h 37 Rotation -0.23 + 17h 38 Rotation -0.23 + 17h 39 Rotation -0.23 + 17h 40 Rotation -0.23 + 17h 41 Rotation -0.23 + 17h 42 Rotation -0.23 + 17h 43 Rotation -0.23 + 17h 44 Rotation -0.23 + 17h 45 Rotation -0.23 + 17h 46 Rotation -0.23 + 17h 47 Rotation -0.23 + 17h 48 Rotation -0.23 + 17h 49 Rotation -0.23 + 17h 50 Rotation -0.23 + 17h 51 Rotation -0.23 + 17h 52 Rotation -0.23 + 17h 53 Rotation -0.23 + 17h 54 Rotation -0.23 + 17h 55 Rotation -0.23 + 17h 56 Rotation -0.23 + 17h 57 Rotation -0.23 + 17h 58 Rotation -0.23 + 17h 59 Rotation -0.23 + 18h 0 Rotation -0.23 + 18h 1 Rotation -0.23 + 18h 2 Rotation -0.23 + 18h 3 Rotation -0.23 + 18h 4 Rotation -0.23 + 18h 5 Rotation -0.23 + 18h 6 Rotation -0.23 + 18h 7 Rotation -0.23 + 18h 8 Rotation -0.23 + 18h 9 Rotation -0.23 + 18h 10 Rotation -0.23 + 18h 11 Rotation -0.23 + 18h 12 Rotation -0.23 + 18h 13 Rotation -0.23 + 18h 14 Rotation -0.23 + 18h 15 Rotation -0.23 + 18h 16 Rotation -0.23 + 18h 17 Rotation -0.23 + 18h 18 Rotation -0.23 + 18h 19 Rotation -0.23 + 18h 20 Rotation -0.23 + 18h 21 Rotation -0.23 + 18h 22 Rotation -0.23 + 18h 23 Rotation -0.23 + 18h 24 Rotation -0.23 + 18h 25 Rotation -0.23 + 18h 26 Rotation -0.23 + 18h 27 Rotation -0.23 + 18h 28 Rotation -0.23 + 18h 29 Rotation -0.23 + 18h 30 Rotation -0.23 + 18h 31 Rotation -0.23 + 18h 32 Rotation -0.23 + 18h 33 Rotation -0.23 + 18h 34 Rotation -0.23 + 18h 35 Rotation -0.23 + 18h 36 Rotation -0.23 + 18h 37 Rotation -0.23 + 18h 38 Rotation -0.23 + 18h 39 Rotation -0.23 + 18h 40 Rotation -0.23 + 18h 41 Rotation -0.23 + 18h 42 Rotation -0.23 + 18h 43 Rotation -0.23 + 18h 44 Rotation -0.23 + 18h 45 Rotation -0.23 + 18h 46 Rotation -0.23 + 18h 47 Rotation -0.23 + 18h 48 Rotation -0.23 + 18h 49 Rotation -0.23 + 18h 50 Rotation -0.23 + 18h 51 Rotation -0.23 + 18h 52 Rotation -0.23 + 18h 53 Rotation -0.23 + 18h 54 Rotation -0.23 + 18h 55 Rotation -0.23 + 18h 56 Rotation -0.23 + 18h 57 Rotation -0.23 + 18h 58 Rotation -0.23 + 18h 59 Rotation -0.23 + 19h 0 Rotation -0.23 + 19h 1 Rotation -0.23 + 19h 2 Rotation -0.23 + 19h 3 Rotation -0.23 + 19h 4 Rotation -0.23 + 19h 5 Rotation -0.23 + 19h 6 Rotation -0.23 + 19h 7 Rotation -0.23 + 19h 8 Rotation -0.23 + 19h 9 Rotation -0.23 + 19h 10 Rotation -0.23 + 19h 11 Rotation -0.23 + 19h 12 Rotation -0.23 + 19h 13 Rotation -0.23 + 19h 14 Rotation -0.23 + 19h 15 Rotation -0.23 + 19h 16 Rotation -0.23 + 19h 17 Rotation -0.23 + 19h 18 Rotation -0.23 + 19h 19 Rotation -0.23 + 19h 20 Rotation -0.23 + 19h 21 Rotation -0.23 + 19h 22 Rotation -0.23 + 19h 23 Rotation -0.23 + 19h 24 Rotation -0.22 + 19h 25 Rotation -0.22 + 19h 26 Rotation -0.22 + 19h 27 Rotation -0.22 + 19h 28 Rotation -0.22 + 19h 29 Rotation -0.22 + 19h 30 Rotation -0.22 + 19h 31 Rotation -0.22 + 19h 32 Rotation -0.22 + 19h 33 Rotation -0.22 + 19h 34 Rotation -0.22 + 19h 35 Rotation -0.22 + 19h 36 Rotation -0.22 + 19h 37 Rotation -0.22 + 19h 38 Rotation -0.22 + 19h 39 Rotation -0.22 + 19h 40 Rotation -0.22 + 19h 41 Rotation -0.22 + 19h 42 Rotation -0.22 + 19h 43 Rotation -0.22 + 19h 44 Rotation -0.22 + 19h 45 Rotation -0.22 + 19h 46 Rotation -0.22 + 19h 47 Rotation -0.22 + 19h 48 Rotation -0.22 + 19h 49 Rotation -0.22 + 19h 50 Rotation -0.22 + 19h 51 Rotation -0.22 + 19h 52 Rotation -0.22 + 19h 53 Rotation -0.22 + 19h 54 Rotation -0.22 + 19h 55 Rotation -0.22 + 19h 56 Rotation -0.22 + 19h 57 Rotation -0.22 + 19h 58 Rotation -0.22 + 19h 59 Rotation -0.22 + 20h 0 Rotation -0.22 + 20h 1 Rotation -0.22 + 20h 2 Rotation -0.22 + 20h 3 Rotation -0.22 + 20h 4 Rotation -0.22 + 20h 5 Rotation -0.22 + 20h 6 Rotation -0.22 + 20h 7 Rotation -0.22 + 20h 8 Rotation -0.22 + 20h 9 Rotation -0.22 + 20h 10 Rotation -0.22 + 20h 11 Rotation -0.22 + 20h 12 Rotation -0.22 + 20h 13 Rotation -0.22 + 20h 14 Rotation -0.22 + 20h 15 Rotation -0.22 + 20h 16 Rotation -0.22 + 20h 17 Rotation -0.22 + 20h 18 Rotation -0.22 + 20h 19 Rotation -0.22 + 20h 20 Rotation -0.22 + 20h 21 Rotation -0.22 + 20h 22 Rotation -0.22 + 20h 23 Rotation -0.22 + 20h 24 Rotation -0.22 + 20h 25 Rotation -0.22 + 20h 26 Rotation -0.22 + 20h 27 Rotation -0.22 + 20h 28 Rotation -0.22 + 20h 29 Rotation -0.22 + 20h 30 Rotation -0.22 + 20h 31 Rotation -0.22 + 20h 32 Rotation -0.22 + 20h 33 Rotation -0.22 + 20h 34 Rotation -0.22 + 20h 35 Rotation -0.22 + 20h 36 Rotation -0.22 + 20h 37 Rotation -0.22 + 20h 38 Rotation -0.22 + 20h 39 Rotation -0.22 + 20h 40 Rotation -0.22 + 20h 41 Rotation -0.22 + 20h 42 Rotation -0.22 + 20h 43 Rotation -0.22 + 20h 44 Rotation -0.22 + 20h 45 Rotation -0.22 + 20h 46 Rotation -0.22 + 20h 47 Rotation -0.22 + 20h 48 Rotation -0.22 + 20h 49 Rotation -0.22 + 20h 50 Rotation -0.22 + 20h 51 Rotation -0.22 + 20h 52 Rotation -0.22 + 20h 53 Rotation -0.22 + 20h 54 Rotation -0.22 + 20h 55 Rotation -0.22 + 20h 56 Rotation -0.22 + 20h 57 Rotation -0.22 + 20h 58 Rotation -0.22 + 20h 59 Rotation -0.22 + 21h 0 Rotation -0.22 + 21h 1 Rotation -0.22 + 21h 2 Rotation -0.22 + 21h 3 Rotation -0.22 + 21h 4 Rotation -0.22 + 21h 5 Rotation -0.22 + 21h 6 Rotation -0.22 + 21h 7 Rotation -0.22 + 21h 8 Rotation -0.22 + 21h 9 Rotation -0.22 + 21h 10 Rotation -0.22 + 21h 11 Rotation -0.22 + 21h 12 Rotation -0.22 + 21h 13 Rotation -0.22 + 21h 14 Rotation -0.22 + 21h 15 Rotation -0.22 + 21h 16 Rotation -0.22 + 21h 17 Rotation -0.22 + 21h 18 Rotation -0.22 + 21h 19 Rotation -0.22 + 21h 20 Rotation -0.22 + 21h 21 Rotation -0.22 + 21h 22 Rotation -0.22 + 21h 23 Rotation -0.22 + 21h 24 Rotation -0.22 + 21h 25 Rotation -0.22 + 21h 26 Rotation -0.22 + 21h 27 Rotation -0.22 + 21h 28 Rotation -0.22 + 21h 29 Rotation -0.22 + 21h 30 Rotation -0.22 + 21h 31 Rotation -0.22 + 21h 32 Rotation -0.22 + 21h 33 Rotation -0.22 + 21h 34 Rotation -0.22 + 21h 35 Rotation -0.22 + 21h 36 Rotation -0.22 + 21h 37 Rotation -0.22 + 21h 38 Rotation -0.22 + 21h 39 Rotation -0.22 + 21h 40 Rotation -0.22 + 21h 41 Rotation -0.22 + 21h 42 Rotation -0.22 + 21h 43 Rotation -0.22 + 21h 44 Rotation -0.22 + 21h 45 Rotation -0.22 + 21h 46 Rotation -0.22 + 21h 47 Rotation -0.22 + 21h 48 Rotation -0.22 + 21h 49 Rotation -0.22 + 21h 50 Rotation -0.22 + 21h 51 Rotation -0.22 + 21h 52 Rotation -0.22 + 21h 53 Rotation -0.22 + 21h 54 Rotation -0.22 + 21h 55 Rotation -0.22 + 21h 56 Rotation -0.22 + 21h 57 Rotation -0.22 + 21h 58 Rotation -0.22 + 21h 59 Rotation -0.22 + 22h 0 Rotation -0.22 + 22h 1 Rotation -0.22 + 22h 2 Rotation -0.22 + 22h 3 Rotation -0.22 + 22h 4 Rotation -0.22 + 22h 5 Rotation -0.22 + 22h 6 Rotation -0.22 + 22h 7 Rotation -0.22 + 22h 8 Rotation -0.22 + 22h 9 Rotation -0.22 + 22h 10 Rotation -0.22 + 22h 11 Rotation -0.22 + 22h 12 Rotation -0.22 + 22h 13 Rotation -0.22 + 22h 14 Rotation -0.22 + 22h 15 Rotation -0.22 + 22h 16 Rotation -0.22 + 22h 17 Rotation -0.22 + 22h 18 Rotation -0.22 + 22h 19 Rotation -0.22 + 22h 20 Rotation -0.22 + 22h 21 Rotation -0.22 + 22h 22 Rotation -0.22 + 22h 23 Rotation -0.22 + 22h 24 Rotation -0.22 + 22h 25 Rotation -0.22 + 22h 26 Rotation -0.22 + 22h 27 Rotation -0.22 + 22h 28 Rotation -0.22 + 22h 29 Rotation -0.22 + 22h 30 Rotation -0.22 + 22h 31 Rotation -0.22 + 22h 32 Rotation -0.22 + 22h 33 Rotation -0.22 + 22h 34 Rotation -0.22 + 22h 35 Rotation -0.22 + 22h 36 Rotation -0.22 + 22h 37 Rotation -0.22 + 22h 38 Rotation -0.22 + 22h 39 Rotation -0.22 + 22h 40 Rotation -0.22 + 22h 41 Rotation -0.22 + 22h 42 Rotation -0.22 + 22h 43 Rotation -0.22 + 22h 44 Rotation -0.22 + 22h 45 Rotation -0.22 + 22h 46 Rotation -0.22 + 22h 47 Rotation -0.22 + 22h 48 Rotation -0.22 + 22h 49 Rotation -0.22 + 22h 50 Rotation -0.22 + 22h 51 Rotation -0.22 + 22h 52 Rotation -0.22 + 22h 53 Rotation -0.22 + 22h 54 Rotation -0.22 + 22h 55 Rotation -0.22 + 22h 56 Rotation -0.22 + 22h 57 Rotation -0.22 + 22h 58 Rotation -0.22 + 22h 59 Rotation -0.22 + 23h 0 Rotation -0.22 + 23h 1 Rotation -0.22 + 23h 2 Rotation -0.22 + 23h 3 Rotation -0.22 + 23h 4 Rotation -0.22 + 23h 5 Rotation -0.22 + 23h 6 Rotation -0.22 + 23h 7 Rotation -0.22 + 23h 8 Rotation -0.22 + 23h 9 Rotation -0.22 + 23h 10 Rotation -0.22 + 23h 11 Rotation -0.22 + 23h 12 Rotation -0.22 + 23h 13 Rotation -0.22 + 23h 14 Rotation -0.22 + 23h 15 Rotation -0.22 + 23h 16 Rotation -0.22 + 23h 17 Rotation -0.22 + 23h 18 Rotation -0.22 + 23h 19 Rotation -0.22 + 23h 20 Rotation -0.22 + 23h 21 Rotation -0.22 + 23h 22 Rotation -0.22 + 23h 23 Rotation -0.22 + 23h 24 Rotation -0.22 + 23h 25 Rotation -0.22 + 23h 26 Rotation -0.22 + 23h 27 Rotation -0.22 + 23h 28 Rotation -0.22 + 23h 29 Rotation -0.22 + 23h 30 Rotation -0.22 + 23h 31 Rotation -0.22 + 23h 32 Rotation -0.22 + 23h 33 Rotation -0.22 + 23h 34 Rotation -0.22 + 23h 35 Rotation -0.22 + 23h 36 Rotation -0.22 + 23h 37 Rotation -0.22 + 23h 38 Rotation -0.22 + 23h 39 Rotation -0.22 + 23h 40 Rotation -0.22 + 23h 41 Rotation -0.22 + 23h 42 Rotation -0.22 + 23h 43 Rotation -0.22 + 23h 44 Rotation -0.22 + 23h 45 Rotation -0.22 + 23h 46 Rotation -0.22 + 23h 47 Rotation -0.22 + 23h 48 Rotation -0.22 + 23h 49 Rotation -0.22 + 23h 50 Rotation -0.22 + 23h 51 Rotation -0.22 + 23h 52 Rotation -0.22 + 23h 53 Rotation -0.22 + 23h 54 Rotation -0.22 + 23h 55 Rotation -0.22 + 23h 56 Rotation -0.22 + 23h 57 Rotation -0.22 + 23h 58 Rotation -0.22 + 23h 59 Rotation -0.22 + 0h 0 Rotation -0.22 + 0h 1 Rotation -0.22 + 0h 2 Rotation -0.22 + 0h 3 Rotation -0.22 + 0h 4 Rotation -0.22 + 0h 5 Rotation -0.22 + 0h 6 Rotation -0.22 + 0h 7 Rotation -0.22 + 0h 8 Rotation -0.22 + 0h 9 Rotation -0.22 + 0h 10 Rotation -0.22 + 0h 11 Rotation -0.22 + 0h 12 Rotation -0.22 + 0h 13 Rotation -0.22 + 0h 14 Rotation -0.22 + 0h 15 Rotation -0.22 + 0h 16 Rotation -0.22 + 0h 17 Rotation -0.22 + 0h 18 Rotation -0.22 + 0h 19 Rotation -0.22 + 0h 20 Rotation -0.22 + 0h 21 Rotation -0.22 + 0h 22 Rotation -0.22 + 0h 23 Rotation -0.22 + 0h 24 Rotation -0.22 + 0h 25 Rotation -0.22 + 0h 26 Rotation -0.22 + 0h 27 Rotation -0.22 + 0h 28 Rotation -0.22 + 0h 29 Rotation -0.22 + 0h 30 Rotation -0.22 + 0h 31 Rotation -0.22 + 0h 32 Rotation -0.22 + 0h 33 Rotation -0.22 + 0h 34 Rotation -0.22 + 0h 35 Rotation -0.22 + 0h 36 Rotation -0.22 + 0h 37 Rotation -0.22 + 0h 38 Rotation -0.22 + 0h 39 Rotation -0.22 + 0h 40 Rotation -0.22 + 0h 41 Rotation -0.22 + 0h 42 Rotation -0.22 + 0h 43 Rotation -0.22 + 0h 44 Rotation -0.22 + 0h 45 Rotation -0.22 + 0h 46 Rotation -0.22 + 0h 47 Rotation -0.22 + 0h 48 Rotation -0.22 + 0h 49 Rotation -0.22 + 0h 50 Rotation -0.22 + 0h 51 Rotation -0.22 + 0h 52 Rotation -0.22 + 0h 53 Rotation -0.22 + 0h 54 Rotation -0.22 + 0h 55 Rotation -0.22 + 0h 56 Rotation -0.22 + 0h 57 Rotation -0.22 + 0h 58 Rotation -0.22 + 0h 59 Rotation -0.22 + 1h 0 Rotation -0.22 + 1h 1 Rotation -0.22 + 1h 2 Rotation -0.22 + 1h 3 Rotation -0.22 + 1h 4 Rotation -0.22 + 1h 5 Rotation -0.22 + 1h 6 Rotation -0.22 + 1h 7 Rotation -0.22 + 1h 8 Rotation -0.22 + 1h 9 Rotation -0.22 + 1h 10 Rotation -0.22 + 1h 11 Rotation -0.22 + 1h 12 Rotation -0.22 + 1h 13 Rotation -0.22 + 1h 14 Rotation -0.22 + 1h 15 Rotation -0.22 + 1h 16 Rotation -0.22 + 1h 17 Rotation -0.22 + 1h 18 Rotation -0.22 + 1h 19 Rotation -0.22 + 1h 20 Rotation -0.22 + 1h 21 Rotation -0.22 + 1h 22 Rotation -0.22 + 1h 23 Rotation -0.22 + 1h 24 Rotation -0.22 + 1h 25 Rotation -0.22 + 1h 26 Rotation -0.22 + 1h 27 Rotation -0.22 + 1h 28 Rotation -0.22 + 1h 29 Rotation -0.22 + 1h 30 Rotation -0.22 + 1h 31 Rotation -0.22 + 1h 32 Rotation -0.22 + 1h 33 Rotation -0.22 + 1h 34 Rotation -0.22 + 1h 35 Rotation -0.22 + 1h 36 Rotation -0.22 + 1h 37 Rotation -0.22 + 1h 38 Rotation -0.22 + 1h 39 Rotation -0.22 + 1h 40 Rotation -0.22 + 1h 41 Rotation -0.22 + 1h 42 Rotation -0.22 + 1h 43 Rotation -0.22 + 1h 44 Rotation -0.22 + 1h 45 Rotation -0.22 + 1h 46 Rotation -0.22 + 1h 47 Rotation -0.22 + 1h 48 Rotation -0.22 + 1h 49 Rotation -0.22 + 1h 50 Rotation -0.22 + 1h 51 Rotation -0.22 + 1h 52 Rotation -0.22 + 1h 53 Rotation -0.22 + 1h 54 Rotation -0.22 + 1h 55 Rotation -0.22 + 1h 56 Rotation -0.22 + 1h 57 Rotation -0.22 + 1h 58 Rotation -0.22 + 1h 59 Rotation -0.22 + 2h 0 Rotation -0.22 + 2h 1 Rotation -0.22 + 2h 2 Rotation -0.22 + 2h 3 Rotation -0.22 + 2h 4 Rotation -0.22 + 2h 5 Rotation -0.22 + 2h 6 Rotation -0.22 + 2h 7 Rotation -0.22 + 2h 8 Rotation -0.22 + 2h 9 Rotation -0.22 + 2h 10 Rotation -0.22 + 2h 11 Rotation -0.22 + 2h 12 Rotation -0.22 + 2h 13 Rotation -0.22 + 2h 14 Rotation -0.22 + 2h 15 Rotation -0.22 + 2h 16 Rotation -0.22 + 2h 17 Rotation -0.22 + 2h 18 Rotation -0.22 + 2h 19 Rotation -0.22 + 2h 20 Rotation -0.22 + 2h 21 Rotation -0.22 + 2h 22 Rotation -0.22 + 2h 23 Rotation -0.22 + 2h 24 Rotation -0.22 + 2h 25 Rotation -0.22 + 2h 26 Rotation -0.22 + 2h 27 Rotation -0.22 + 2h 28 Rotation -0.22 + 2h 29 Rotation -0.22 + 2h 30 Rotation -0.22 + 2h 31 Rotation -0.22 + 2h 32 Rotation -0.23 + 2h 33 Rotation -0.23 + 2h 34 Rotation -0.23 + 2h 35 Rotation -0.23 + 2h 36 Rotation -0.23 + 2h 37 Rotation -0.23 + 2h 38 Rotation -0.23 + 2h 39 Rotation -0.23 + 2h 40 Rotation -0.23 + 2h 41 Rotation -0.23 + 2h 42 Rotation -0.23 + 2h 43 Rotation -0.23 + 2h 44 Rotation -0.23 + 2h 45 Rotation -0.23 + 2h 46 Rotation -0.23 + 2h 47 Rotation -0.23 + 2h 48 Rotation -0.23 + 2h 49 Rotation -0.23 + 2h 50 Rotation -0.23 + 2h 51 Rotation -0.23 + 2h 52 Rotation -0.23 + 2h 53 Rotation -0.23 + 2h 54 Rotation -0.23 + 2h 55 Rotation -0.23 + 2h 56 Rotation -0.23 + 2h 57 Rotation -0.23 + 2h 58 Rotation -0.23 + 2h 59 Rotation -0.23 + 3h 0 Rotation -0.23 + 3h 1 Rotation -0.23 + 3h 2 Rotation -0.23 + 3h 3 Rotation -0.23 + 3h 4 Rotation -0.23 + 3h 5 Rotation -0.23 + 3h 6 Rotation -0.23 + 3h 7 Rotation -0.23 + 3h 8 Rotation -0.23 + 3h 9 Rotation -0.23 + 3h 10 Rotation -0.23 + 3h 11 Rotation -0.23 + 3h 12 Rotation -0.23 + 3h 13 Rotation -0.23 + 3h 14 Rotation -0.23 + 3h 15 Rotation -0.23 + 3h 16 Rotation -0.23 + 3h 17 Rotation -0.23 + 3h 18 Rotation -0.23 + 3h 19 Rotation -0.23 + 3h 20 Rotation -0.23 + 3h 21 Rotation -0.23 + 3h 22 Rotation -0.23 + 3h 23 Rotation -0.23 + 3h 24 Rotation -0.23 + 3h 25 Rotation -0.23 + 3h 26 Rotation -0.23 + 3h 27 Rotation -0.23 + 3h 28 Rotation -0.23 + 3h 29 Rotation -0.23 + 3h 30 Rotation -0.23 + 3h 31 Rotation -0.23 + 3h 32 Rotation -0.23 + 3h 33 Rotation -0.23 + 3h 34 Rotation -0.23 + 3h 35 Rotation -0.23 + 3h 36 Rotation -0.23 + 3h 37 Rotation -0.23 + 3h 38 Rotation -0.23 + 3h 39 Rotation -0.23 + 3h 40 Rotation -0.23 + 3h 41 Rotation -0.23 + 3h 42 Rotation -0.23 + 3h 43 Rotation -0.23 + 3h 44 Rotation -0.23 + 3h 45 Rotation -0.23 + 3h 46 Rotation -0.23 + 3h 47 Rotation -0.23 + 3h 48 Rotation -0.23 + 3h 49 Rotation -0.23 + 3h 50 Rotation -0.23 + 3h 51 Rotation -0.23 + 3h 52 Rotation -0.23 + 3h 53 Rotation -0.23 + 3h 54 Rotation -0.23 + 3h 55 Rotation -0.23 + 3h 56 Rotation -0.23 + 3h 57 Rotation -0.23 + 3h 58 Rotation -0.23 + 3h 59 Rotation -0.23 + 4h 0 Rotation -0.23 + 4h 1 Rotation -0.23 + 4h 2 Rotation -0.23 + 4h 3 Rotation -0.23 + 4h 4 Rotation -0.23 + 4h 5 Rotation -0.23 + 4h 6 Rotation -0.23 + 4h 7 Rotation -0.23 + 4h 8 Rotation -0.23 + 4h 9 Rotation -0.23 + 4h 10 Rotation -0.23 + 4h 11 Rotation -0.23 + 4h 12 Rotation -0.23 + 4h 13 Rotation -0.23 + 4h 14 Rotation -0.23 + 4h 15 Rotation -0.23 + 4h 16 Rotation -0.23 + 4h 17 Rotation -0.23 + 4h 18 Rotation -0.23 + 4h 19 Rotation -0.23 + 4h 20 Rotation -0.23 + 4h 21 Rotation -0.23 + 4h 22 Rotation -0.23 + 4h 23 Rotation -0.23 + 4h 24 Rotation -0.23 + 4h 25 Rotation -0.23 + 4h 26 Rotation -0.23 + 4h 27 Rotation -0.23 + 4h 28 Rotation -0.23 + 4h 29 Rotation -0.23 + 4h 30 Rotation -0.23 + 4h 31 Rotation -0.23 + 4h 32 Rotation -0.23 + 4h 33 Rotation -0.23 + 4h 34 Rotation -0.23 + 4h 35 Rotation -0.23 + 4h 36 Rotation -0.23 + 4h 37 Rotation -0.23 + 4h 38 Rotation -0.23 + 4h 39 Rotation -0.24 + 4h 40 Rotation -0.24 + 4h 41 Rotation -0.24 + 4h 42 Rotation -0.24 + 4h 43 Rotation -0.24 + 4h 44 Rotation -0.24 + 4h 45 Rotation -0.24 + 4h 46 Rotation -0.24 + 4h 47 Rotation -0.24 + 4h 48 Rotation -0.24 + 4h 49 Rotation -0.24 + 4h 50 Rotation -0.24 + 4h 51 Rotation -0.24 + 4h 52 Rotation -0.24 + 4h 53 Rotation -0.24 + 4h 54 Rotation -0.24 + 4h 55 Rotation -0.24 + 4h 56 Rotation -0.24 + 4h 57 Rotation -0.24 + 4h 58 Rotation -0.24 + 4h 59 Rotation -0.24 + 5h 0 Rotation -0.24 + 5h 1 Rotation -0.24 + 5h 2 Rotation -0.24 + 5h 3 Rotation -0.24 + 5h 4 Rotation -0.24 + 5h 5 Rotation -0.24 + 5h 6 Rotation -0.24 + 5h 7 Rotation -0.24 + 5h 8 Rotation -0.24 + 5h 9 Rotation -0.24 + 5h 10 Rotation -0.24 + 5h 11 Rotation -0.24 + 5h 12 Rotation -0.24 + 5h 13 Rotation -0.24 + 5h 14 Rotation -0.24 + 5h 15 Rotation -0.24 + 5h 16 Rotation -0.24 + 5h 17 Rotation -0.24 + 5h 18 Rotation -0.24 + 5h 19 Rotation -0.24 + 5h 20 Rotation -0.24 + 5h 21 Rotation -0.24 + 5h 22 Rotation -0.24 + 5h 23 Rotation -0.24 + 5h 24 Rotation -0.24 + 5h 25 Rotation -0.24 + 5h 26 Rotation -0.24 + 5h 27 Rotation -0.24 + 5h 28 Rotation -0.24 + 5h 29 Rotation -0.24 + 5h 30 Rotation -0.24 + 5h 31 Rotation -0.24 + 5h 32 Rotation -0.24 + 5h 33 Rotation -0.24 + 5h 34 Rotation -0.24 + 5h 35 Rotation -0.24 + 5h 36 Rotation -0.24 + 5h 37 Rotation -0.24 + 5h 38 Rotation -0.24 + 5h 39 Rotation -0.24 + 5h 40 Rotation -0.24 + 5h 41 Rotation -0.24 + 5h 42 Rotation -0.24 + 5h 43 Rotation -0.24 + 5h 44 Rotation -0.25 + 5h 45 Rotation -0.25 + 5h 46 Rotation -0.25 + 5h 47 Rotation -0.25 + 5h 48 Rotation -0.25 + 5h 49 Rotation -0.25 + 5h 50 Rotation -0.25 + 5h 51 Rotation -0.25 + 5h 52 Rotation -0.25 + 5h 53 Rotation -0.25 + 5h 54 Rotation -0.25 + 5h 55 Rotation -0.25 + 5h 56 Rotation -0.25 + 5h 57 Rotation -0.25 + 5h 58 Rotation -0.25 + 5h 59 Rotation -0.25 + 6h 0 Rotation -0.25 + 6h 1 Rotation -0.25 + 6h 2 Rotation -0.25 + 6h 3 Rotation -0.25 + 6h 4 Rotation -0.25 + 6h 5 Rotation -0.25 + 6h 6 Rotation -0.25 + 6h 7 Rotation -0.25 + 6h 8 Rotation -0.25 + 6h 9 Rotation -0.25 + 6h 10 Rotation -0.25 + 6h 11 Rotation -0.25 + 6h 12 Rotation -0.25 + 6h 13 Rotation -0.25 + 6h 14 Rotation -0.25 + 6h 15 Rotation -0.25 + 6h 16 Rotation -0.25 + 6h 17 Rotation -0.25 + 6h 18 Rotation -0.25 + 6h 19 Rotation -0.25 + 6h 20 Rotation -0.25 + 6h 21 Rotation -0.25 + 6h 22 Rotation -0.25 + 6h 23 Rotation -0.25 + 6h 24 Rotation -0.25 + 6h 25 Rotation -0.25 + 6h 26 Rotation -0.25 + 6h 27 Rotation -0.25 + 6h 28 Rotation -0.25 + 6h 29 Rotation -0.25 + 6h 30 Rotation -0.25 + 6h 31 Rotation -0.25 + 6h 32 Rotation -0.25 + 6h 33 Rotation -0.26 + 6h 34 Rotation -0.26 + 6h 35 Rotation -0.26 + 6h 36 Rotation -0.26 + 6h 37 Rotation -0.26 + 6h 38 Rotation -0.26 + 6h 39 Rotation -0.26 + 6h 40 Rotation -0.26 + 6h 41 Rotation -0.26 + 6h 42 Rotation -0.26 + 6h 43 Rotation -0.26 + +Cumulative field rotation: 359.76 + +Start alt. 42 Az. 194 +Ending alt. 38 Az. 196 diff --git a/SKYTEL/saros.80 b/SKYTEL/saros.80 new file mode 100644 index 0000000..def4f59 --- /dev/null +++ b/SKYTEL/saros.80 @@ -0,0 +1,8 @@ + +JULIAN DAY NUMBER? 5678 +WARNING: NOT NEW MOON! + BROWN LUNATION -81872 +WARNING: NO ECLIPSE! + SAROS NUMBER -39 + RELATIVE ECLIPSE -75 + diff --git a/SKYTEL/saros.INP b/SKYTEL/saros.INP new file mode 100644 index 0000000..9c9ddc2 --- /dev/null +++ b/SKYTEL/saros.INP @@ -0,0 +1 @@ +5678 diff --git a/SKYTEL/saros.OUT b/SKYTEL/saros.OUT new file mode 100644 index 0000000..4591ea5 --- /dev/null +++ b/SKYTEL/saros.OUT @@ -0,0 +1,8 @@ + +JULIAN DAY NUMBER? 5678 +WARNING: NOT NEW MOON! + BROWN LUNATION -81872 +WARNING: NO ECLIPSE! + SAROS NUMBER -39 + RELATIVE ECLIPSE -75 + diff --git a/SKYTEL/saros.bas b/SKYTEL/saros.bas new file mode 100644 index 0000000..8171ead --- /dev/null +++ b/SKYTEL/saros.bas @@ -0,0 +1,27 @@ +10 REM SAROS SERIES +14 REM +18 PRINT +22 INPUT "JULIAN DAY NUMBER";J +26 Q=J/29.530588-82064 +30 B=INT(Q): N=Q-B +34 IF N>0.28 AND N<0.36 THEN 42 +38 PRINT "WARNING: NOT NEW MOON!" +42 PRINT " BROWN LUNATION ";B +46 D=B-848 +50 S=136+38*D +54 X=-61*D +58 C=INT(X/358+0.5-D/(12*358*358)) +62 S=S+223*C +66 X=X-358*C +70 IF ABS(X-(S-136)/12)<55 THEN 78 +74 PRINT "WARNING: NO ECLIPSE!" +78 PRINT " SAROS NUMBER ";S +82 PRINT " RELATIVE ECLIPSE "; +86 PRINT INT(X-(S-136)/12+0.5) +90 PRINT +94 END +95 REM ------------------------ +96 REM APPEARED IN ASTRONOMICAL +97 REM COMPUTING, SKY & TELE- +98 REM SCOPE, OCTOBER, 1985 +99 REM ------------------------ diff --git a/SKYTEL/saros.dif b/SKYTEL/saros.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/saros.run b/SKYTEL/saros.run new file mode 100644 index 0000000..def4f59 --- /dev/null +++ b/SKYTEL/saros.run @@ -0,0 +1,8 @@ + +JULIAN DAY NUMBER? 5678 +WARNING: NOT NEW MOON! + BROWN LUNATION -81872 +WARNING: NO ECLIPSE! + SAROS NUMBER -39 + RELATIVE ECLIPSE -75 + diff --git a/SKYTEL/satrings.80 b/SKYTEL/satrings.80 new file mode 100644 index 0000000..c95694a --- /dev/null +++ b/SKYTEL/satrings.80 @@ -0,0 +1,367 @@ +Year of interest? 2015 + 1 1 2015 B = 24.52 B'= 23.72 Mv = 0.6 + 1 2 2015 B = 24.53 B'= 23.73 Mv = 0.6 + 1 3 2015 B = 24.55 B'= 23.74 Mv = 0.6 + 1 4 2015 B = 24.56 B'= 23.74 Mv = 0.6 + 1 5 2015 B = 24.58 B'= 23.75 Mv = 0.6 + 1 6 2015 B = 24.59 B'= 23.76 Mv = 0.6 + 1 7 2015 B = 24.61 B'= 23.76 Mv = 0.6 + 1 8 2015 B = 24.62 B'= 23.77 Mv = 0.6 + 1 9 2015 B = 24.63 B'= 23.78 Mv = 0.6 + 1 10 2015 B = 24.65 B'= 23.78 Mv = 0.6 + 1 11 2015 B = 24.66 B'= 23.79 Mv = 0.6 + 1 12 2015 B = 24.67 B'= 23.80 Mv = 0.6 + 1 13 2015 B = 24.68 B'= 23.80 Mv = 0.6 + 1 14 2015 B = 24.70 B'= 23.81 Mv = 0.6 + 1 15 2015 B = 24.71 B'= 23.82 Mv = 0.6 + 1 16 2015 B = 24.72 B'= 23.82 Mv = 0.6 + 1 17 2015 B = 24.73 B'= 23.83 Mv = 0.6 + 1 18 2015 B = 24.74 B'= 23.84 Mv = 0.5 + 1 19 2015 B = 24.75 B'= 23.84 Mv = 0.5 + 1 20 2015 B = 24.76 B'= 23.85 Mv = 0.5 + 1 21 2015 B = 24.78 B'= 23.86 Mv = 0.5 + 1 22 2015 B = 24.79 B'= 23.86 Mv = 0.5 + 1 23 2015 B = 24.80 B'= 23.87 Mv = 0.5 + 1 24 2015 B = 24.80 B'= 23.88 Mv = 0.5 + 1 25 2015 B = 24.81 B'= 23.88 Mv = 0.5 + 1 26 2015 B = 24.82 B'= 23.89 Mv = 0.5 + 1 27 2015 B = 24.83 B'= 23.90 Mv = 0.5 + 1 28 2015 B = 24.84 B'= 23.90 Mv = 0.5 + 1 29 2015 B = 24.85 B'= 23.91 Mv = 0.5 + 1 30 2015 B = 24.86 B'= 23.92 Mv = 0.5 + 1 31 2015 B = 24.86 B'= 23.92 Mv = 0.5 + 2 1 2015 B = 24.87 B'= 23.93 Mv = 0.5 + 2 2 2015 B = 24.88 B'= 23.93 Mv = 0.5 + 2 3 2015 B = 24.89 B'= 23.94 Mv = 0.5 + 2 4 2015 B = 24.89 B'= 23.95 Mv = 0.5 + 2 5 2015 B = 24.90 B'= 23.95 Mv = 0.5 + 2 6 2015 B = 24.90 B'= 23.96 Mv = 0.5 + 2 7 2015 B = 24.91 B'= 23.97 Mv = 0.5 + 2 8 2015 B = 24.92 B'= 23.97 Mv = 0.5 + 2 9 2015 B = 24.92 B'= 23.98 Mv = 0.5 + 2 10 2015 B = 24.93 B'= 23.99 Mv = 0.5 + 2 11 2015 B = 24.93 B'= 23.99 Mv = 0.5 + 2 12 2015 B = 24.94 B'= 24.00 Mv = 0.5 + 2 13 2015 B = 24.94 B'= 24.01 Mv = 0.5 + 2 14 2015 B = 24.94 B'= 24.01 Mv = 0.5 + 2 15 2015 B = 24.95 B'= 24.02 Mv = 0.5 + 2 16 2015 B = 24.95 B'= 24.03 Mv = 0.5 + 2 17 2015 B = 24.96 B'= 24.03 Mv = 0.5 + 2 18 2015 B = 24.96 B'= 24.04 Mv = 0.5 + 2 19 2015 B = 24.96 B'= 24.04 Mv = 0.5 + 2 20 2015 B = 24.96 B'= 24.05 Mv = 0.5 + 2 21 2015 B = 24.97 B'= 24.06 Mv = 0.5 + 2 22 2015 B = 24.97 B'= 24.06 Mv = 0.5 + 2 23 2015 B = 24.97 B'= 24.07 Mv = 0.5 + 2 24 2015 B = 24.97 B'= 24.08 Mv = 0.5 + 2 25 2015 B = 24.97 B'= 24.08 Mv = 0.5 + 2 26 2015 B = 24.97 B'= 24.09 Mv = 0.5 + 2 27 2015 B = 24.98 B'= 24.10 Mv = 0.5 + 2 28 2015 B = 24.98 B'= 24.10 Mv = 0.5 + 3 1 2015 B = 24.98 B'= 24.11 Mv = 0.4 + 3 2 2015 B = 24.98 B'= 24.11 Mv = 0.4 + 3 3 2015 B = 24.98 B'= 24.12 Mv = 0.4 + 3 4 2015 B = 24.98 B'= 24.13 Mv = 0.4 + 3 5 2015 B = 24.98 B'= 24.13 Mv = 0.4 + 3 6 2015 B = 24.98 B'= 24.14 Mv = 0.4 + 3 7 2015 B = 24.97 B'= 24.15 Mv = 0.4 + 3 8 2015 B = 24.97 B'= 24.15 Mv = 0.4 + 3 9 2015 B = 24.97 B'= 24.16 Mv = 0.4 + 3 10 2015 B = 24.97 B'= 24.16 Mv = 0.4 + 3 11 2015 B = 24.97 B'= 24.17 Mv = 0.4 + 3 12 2015 B = 24.97 B'= 24.18 Mv = 0.4 + 3 13 2015 B = 24.96 B'= 24.18 Mv = 0.4 + 3 14 2015 B = 24.96 B'= 24.19 Mv = 0.4 + 3 15 2015 B = 24.96 B'= 24.20 Mv = 0.4 + 3 16 2015 B = 24.96 B'= 24.20 Mv = 0.4 + 3 17 2015 B = 24.95 B'= 24.21 Mv = 0.4 + 3 18 2015 B = 24.95 B'= 24.21 Mv = 0.4 + 3 19 2015 B = 24.95 B'= 24.22 Mv = 0.4 + 3 20 2015 B = 24.94 B'= 24.23 Mv = 0.4 + 3 21 2015 B = 24.94 B'= 24.23 Mv = 0.4 + 3 22 2015 B = 24.94 B'= 24.24 Mv = 0.4 + 3 23 2015 B = 24.93 B'= 24.25 Mv = 0.3 + 3 24 2015 B = 24.93 B'= 24.25 Mv = 0.3 + 3 25 2015 B = 24.92 B'= 24.26 Mv = 0.3 + 3 26 2015 B = 24.92 B'= 24.26 Mv = 0.3 + 3 27 2015 B = 24.91 B'= 24.27 Mv = 0.3 + 3 28 2015 B = 24.91 B'= 24.28 Mv = 0.3 + 3 29 2015 B = 24.90 B'= 24.28 Mv = 0.3 + 3 30 2015 B = 24.90 B'= 24.29 Mv = 0.3 + 3 31 2015 B = 24.89 B'= 24.29 Mv = 0.3 + 4 1 2015 B = 24.88 B'= 24.30 Mv = 0.3 + 4 2 2015 B = 24.88 B'= 24.31 Mv = 0.3 + 4 3 2015 B = 24.87 B'= 24.31 Mv = 0.3 + 4 4 2015 B = 24.86 B'= 24.32 Mv = 0.3 + 4 5 2015 B = 24.86 B'= 24.32 Mv = 0.3 + 4 6 2015 B = 24.85 B'= 24.33 Mv = 0.3 + 4 7 2015 B = 24.84 B'= 24.34 Mv = 0.3 + 4 8 2015 B = 24.84 B'= 24.34 Mv = 0.3 + 4 9 2015 B = 24.83 B'= 24.35 Mv = 0.3 + 4 10 2015 B = 24.82 B'= 24.35 Mv = 0.2 + 4 11 2015 B = 24.81 B'= 24.36 Mv = 0.2 + 4 12 2015 B = 24.81 B'= 24.37 Mv = 0.2 + 4 13 2015 B = 24.80 B'= 24.37 Mv = 0.2 + 4 14 2015 B = 24.79 B'= 24.38 Mv = 0.2 + 4 15 2015 B = 24.78 B'= 24.38 Mv = 0.2 + 4 16 2015 B = 24.77 B'= 24.39 Mv = 0.2 + 4 17 2015 B = 24.76 B'= 24.40 Mv = 0.2 + 4 18 2015 B = 24.76 B'= 24.40 Mv = 0.2 + 4 19 2015 B = 24.75 B'= 24.41 Mv = 0.2 + 4 20 2015 B = 24.74 B'= 24.41 Mv = 0.2 + 4 21 2015 B = 24.73 B'= 24.42 Mv = 0.2 + 4 22 2015 B = 24.72 B'= 24.43 Mv = 0.2 + 4 23 2015 B = 24.71 B'= 24.43 Mv = 0.2 + 4 24 2015 B = 24.70 B'= 24.44 Mv = 0.2 + 4 25 2015 B = 24.69 B'= 24.44 Mv = 0.2 + 4 26 2015 B = 24.68 B'= 24.45 Mv = 0.2 + 4 27 2015 B = 24.67 B'= 24.46 Mv = 0.2 + 4 28 2015 B = 24.66 B'= 24.46 Mv = 0.1 + 4 29 2015 B = 24.65 B'= 24.47 Mv = 0.1 + 4 30 2015 B = 24.64 B'= 24.47 Mv = 0.1 + 5 1 2015 B = 24.63 B'= 24.48 Mv = 0.1 + 5 2 2015 B = 24.62 B'= 24.49 Mv = 0.1 + 5 3 2015 B = 24.61 B'= 24.49 Mv = 0.1 + 5 4 2015 B = 24.60 B'= 24.50 Mv = 0.1 + 5 5 2015 B = 24.59 B'= 24.50 Mv = 0.1 + 5 6 2015 B = 24.58 B'= 24.51 Mv = 0.1 + 5 7 2015 B = 24.57 B'= 24.51 Mv = 0.1 + 5 8 2015 B = 24.56 B'= 24.52 Mv = 0.1 + 5 9 2015 B = 24.54 B'= 24.53 Mv = 0.1 + 5 10 2015 B = 24.53 B'= 24.53 Mv = 0.1 + 5 11 2015 B = 24.52 B'= 24.54 Mv = 0.1 + 5 12 2015 B = 24.51 B'= 24.54 Mv = 0.1 + 5 13 2015 B = 24.50 B'= 24.55 Mv = 0.1 + 5 14 2015 B = 24.49 B'= 24.56 Mv = 0.1 + 5 15 2015 B = 24.48 B'= 24.56 Mv = 0.1 + 5 16 2015 B = 24.47 B'= 24.57 Mv = 0.1 + 5 17 2015 B = 24.46 B'= 24.57 Mv = 0.0 + 5 18 2015 B = 24.45 B'= 24.58 Mv = 0.0 + 5 19 2015 B = 24.43 B'= 24.58 Mv = 0.0 + 5 20 2015 B = 24.42 B'= 24.59 Mv = 0.0 + 5 21 2015 B = 24.41 B'= 24.60 Mv = 0.0 + 5 22 2015 B = 24.40 B'= 24.60 Mv = 0.0 + 5 23 2015 B = 24.39 B'= 24.61 Mv = 0.0 + 5 24 2015 B = 24.38 B'= 24.61 Mv = 0.0 + 5 25 2015 B = 24.37 B'= 24.62 Mv = 0.0 + 5 26 2015 B = 24.36 B'= 24.62 Mv = 0.0 + 5 27 2015 B = 24.35 B'= 24.63 Mv = 0.0 + 5 28 2015 B = 24.33 B'= 24.64 Mv = 0.0 + 5 29 2015 B = 24.32 B'= 24.64 Mv = 0.1 + 5 30 2015 B = 24.31 B'= 24.65 Mv = 0.1 + 5 31 2015 B = 24.30 B'= 24.65 Mv = 0.1 + 6 1 2015 B = 24.29 B'= 24.66 Mv = 0.1 + 6 2 2015 B = 24.28 B'= 24.66 Mv = 0.1 + 6 3 2015 B = 24.27 B'= 24.67 Mv = 0.1 + 6 4 2015 B = 24.26 B'= 24.68 Mv = 0.1 + 6 5 2015 B = 24.25 B'= 24.68 Mv = 0.1 + 6 6 2015 B = 24.24 B'= 24.69 Mv = 0.1 + 6 7 2015 B = 24.23 B'= 24.69 Mv = 0.1 + 6 8 2015 B = 24.22 B'= 24.70 Mv = 0.1 + 6 9 2015 B = 24.21 B'= 24.70 Mv = 0.1 + 6 10 2015 B = 24.20 B'= 24.71 Mv = 0.1 + 6 11 2015 B = 24.19 B'= 24.71 Mv = 0.1 + 6 12 2015 B = 24.18 B'= 24.72 Mv = 0.1 + 6 13 2015 B = 24.17 B'= 24.73 Mv = 0.1 + 6 14 2015 B = 24.16 B'= 24.73 Mv = 0.1 + 6 15 2015 B = 24.15 B'= 24.74 Mv = 0.1 + 6 16 2015 B = 24.14 B'= 24.74 Mv = 0.2 + 6 17 2015 B = 24.14 B'= 24.75 Mv = 0.2 + 6 18 2015 B = 24.13 B'= 24.75 Mv = 0.2 + 6 19 2015 B = 24.12 B'= 24.76 Mv = 0.2 + 6 20 2015 B = 24.11 B'= 24.76 Mv = 0.2 + 6 21 2015 B = 24.10 B'= 24.77 Mv = 0.2 + 6 22 2015 B = 24.10 B'= 24.78 Mv = 0.2 + 6 23 2015 B = 24.09 B'= 24.78 Mv = 0.2 + 6 24 2015 B = 24.08 B'= 24.79 Mv = 0.2 + 6 25 2015 B = 24.07 B'= 24.79 Mv = 0.2 + 6 26 2015 B = 24.07 B'= 24.80 Mv = 0.2 + 6 27 2015 B = 24.06 B'= 24.80 Mv = 0.2 + 6 28 2015 B = 24.05 B'= 24.81 Mv = 0.2 + 6 29 2015 B = 24.05 B'= 24.81 Mv = 0.2 + 6 30 2015 B = 24.04 B'= 24.82 Mv = 0.2 + 7 1 2015 B = 24.04 B'= 24.82 Mv = 0.2 + 7 2 2015 B = 24.03 B'= 24.83 Mv = 0.3 + 7 3 2015 B = 24.03 B'= 24.84 Mv = 0.3 + 7 4 2015 B = 24.02 B'= 24.84 Mv = 0.3 + 7 5 2015 B = 24.02 B'= 24.85 Mv = 0.3 + 7 6 2015 B = 24.01 B'= 24.85 Mv = 0.3 + 7 7 2015 B = 24.01 B'= 24.86 Mv = 0.3 + 7 8 2015 B = 24.00 B'= 24.86 Mv = 0.3 + 7 9 2015 B = 24.00 B'= 24.87 Mv = 0.3 + 7 10 2015 B = 24.00 B'= 24.87 Mv = 0.3 + 7 11 2015 B = 24.00 B'= 24.88 Mv = 0.3 + 7 12 2015 B = 23.99 B'= 24.88 Mv = 0.3 + 7 13 2015 B = 23.99 B'= 24.89 Mv = 0.3 + 7 14 2015 B = 23.99 B'= 24.89 Mv = 0.3 + 7 15 2015 B = 23.99 B'= 24.90 Mv = 0.3 + 7 16 2015 B = 23.99 B'= 24.90 Mv = 0.3 + 7 17 2015 B = 23.98 B'= 24.91 Mv = 0.3 + 7 18 2015 B = 23.98 B'= 24.92 Mv = 0.3 + 7 19 2015 B = 23.98 B'= 24.92 Mv = 0.4 + 7 20 2015 B = 23.98 B'= 24.93 Mv = 0.4 + 7 21 2015 B = 23.98 B'= 24.93 Mv = 0.4 + 7 22 2015 B = 23.98 B'= 24.94 Mv = 0.4 + 7 23 2015 B = 23.98 B'= 24.94 Mv = 0.4 + 7 24 2015 B = 23.98 B'= 24.95 Mv = 0.4 + 7 25 2015 B = 23.99 B'= 24.95 Mv = 0.4 + 7 26 2015 B = 23.99 B'= 24.96 Mv = 0.4 + 7 27 2015 B = 23.99 B'= 24.96 Mv = 0.4 + 7 28 2015 B = 23.99 B'= 24.97 Mv = 0.4 + 7 29 2015 B = 23.99 B'= 24.97 Mv = 0.4 + 7 30 2015 B = 24.00 B'= 24.98 Mv = 0.4 + 7 31 2015 B = 24.00 B'= 24.98 Mv = 0.4 + 8 1 2015 B = 24.00 B'= 24.99 Mv = 0.4 + 8 2 2015 B = 24.01 B'= 24.99 Mv = 0.4 + 8 3 2015 B = 24.01 B'= 25.00 Mv = 0.4 + 8 4 2015 B = 24.02 B'= 25.00 Mv = 0.4 + 8 5 2015 B = 24.02 B'= 25.01 Mv = 0.4 + 8 6 2015 B = 24.03 B'= 25.01 Mv = 0.4 + 8 7 2015 B = 24.03 B'= 25.02 Mv = 0.4 + 8 8 2015 B = 24.04 B'= 25.02 Mv = 0.5 + 8 9 2015 B = 24.04 B'= 25.03 Mv = 0.5 + 8 10 2015 B = 24.05 B'= 25.04 Mv = 0.5 + 8 11 2015 B = 24.06 B'= 25.04 Mv = 0.5 + 8 12 2015 B = 24.06 B'= 25.05 Mv = 0.5 + 8 13 2015 B = 24.07 B'= 25.05 Mv = 0.5 + 8 14 2015 B = 24.08 B'= 25.06 Mv = 0.5 + 8 15 2015 B = 24.08 B'= 25.06 Mv = 0.5 + 8 16 2015 B = 24.09 B'= 25.07 Mv = 0.5 + 8 17 2015 B = 24.10 B'= 25.07 Mv = 0.5 + 8 18 2015 B = 24.11 B'= 25.08 Mv = 0.5 + 8 19 2015 B = 24.12 B'= 25.08 Mv = 0.5 + 8 20 2015 B = 24.13 B'= 25.09 Mv = 0.5 + 8 21 2015 B = 24.14 B'= 25.09 Mv = 0.5 + 8 22 2015 B = 24.15 B'= 25.10 Mv = 0.5 + 8 23 2015 B = 24.16 B'= 25.10 Mv = 0.5 + 8 24 2015 B = 24.17 B'= 25.11 Mv = 0.5 + 8 25 2015 B = 24.18 B'= 25.11 Mv = 0.5 + 8 26 2015 B = 24.19 B'= 25.12 Mv = 0.5 + 8 27 2015 B = 24.20 B'= 25.12 Mv = 0.5 + 8 28 2015 B = 24.21 B'= 25.13 Mv = 0.5 + 8 29 2015 B = 24.22 B'= 25.13 Mv = 0.5 + 8 30 2015 B = 24.23 B'= 25.14 Mv = 0.5 + 8 31 2015 B = 24.25 B'= 25.14 Mv = 0.5 + 9 1 2015 B = 24.26 B'= 25.15 Mv = 0.5 + 9 2 2015 B = 24.27 B'= 25.15 Mv = 0.5 + 9 3 2015 B = 24.28 B'= 25.16 Mv = 0.5 + 9 4 2015 B = 24.30 B'= 25.16 Mv = 0.5 + 9 5 2015 B = 24.31 B'= 25.17 Mv = 0.5 + 9 6 2015 B = 24.32 B'= 25.17 Mv = 0.5 + 9 7 2015 B = 24.34 B'= 25.18 Mv = 0.5 + 9 8 2015 B = 24.35 B'= 25.18 Mv = 0.6 + 9 9 2015 B = 24.36 B'= 25.19 Mv = 0.6 + 9 10 2015 B = 24.38 B'= 25.19 Mv = 0.6 + 9 11 2015 B = 24.39 B'= 25.20 Mv = 0.6 + 9 12 2015 B = 24.41 B'= 25.20 Mv = 0.6 + 9 13 2015 B = 24.42 B'= 25.21 Mv = 0.6 + 9 14 2015 B = 24.44 B'= 25.21 Mv = 0.6 + 9 15 2015 B = 24.45 B'= 25.21 Mv = 0.6 + 9 16 2015 B = 24.47 B'= 25.22 Mv = 0.6 + 9 17 2015 B = 24.48 B'= 25.22 Mv = 0.6 + 9 18 2015 B = 24.50 B'= 25.23 Mv = 0.6 + 9 19 2015 B = 24.51 B'= 25.23 Mv = 0.6 + 9 20 2015 B = 24.53 B'= 25.24 Mv = 0.6 + 9 21 2015 B = 24.55 B'= 25.24 Mv = 0.6 + 9 22 2015 B = 24.56 B'= 25.25 Mv = 0.6 + 9 23 2015 B = 24.58 B'= 25.25 Mv = 0.6 + 9 24 2015 B = 24.59 B'= 25.26 Mv = 0.6 + 9 25 2015 B = 24.61 B'= 25.26 Mv = 0.6 + 9 26 2015 B = 24.63 B'= 25.27 Mv = 0.6 + 9 27 2015 B = 24.64 B'= 25.27 Mv = 0.6 + 9 28 2015 B = 24.66 B'= 25.28 Mv = 0.6 + 9 29 2015 B = 24.68 B'= 25.28 Mv = 0.6 + 9 30 2015 B = 24.69 B'= 25.29 Mv = 0.6 +10 1 2015 B = 24.71 B'= 25.29 Mv = 0.6 +10 2 2015 B = 24.73 B'= 25.30 Mv = 0.6 +10 3 2015 B = 24.75 B'= 25.30 Mv = 0.6 +10 4 2015 B = 24.76 B'= 25.31 Mv = 0.6 +10 5 2015 B = 24.78 B'= 25.31 Mv = 0.6 +10 6 2015 B = 24.80 B'= 25.31 Mv = 0.6 +10 7 2015 B = 24.82 B'= 25.32 Mv = 0.6 +10 8 2015 B = 24.83 B'= 25.32 Mv = 0.6 +10 9 2015 B = 24.85 B'= 25.33 Mv = 0.6 +10 10 2015 B = 24.87 B'= 25.33 Mv = 0.6 +10 11 2015 B = 24.89 B'= 25.34 Mv = 0.6 +10 12 2015 B = 24.91 B'= 25.34 Mv = 0.6 +10 13 2015 B = 24.92 B'= 25.35 Mv = 0.6 +10 14 2015 B = 24.94 B'= 25.35 Mv = 0.6 +10 15 2015 B = 24.96 B'= 25.36 Mv = 0.6 +10 16 2015 B = 24.98 B'= 25.36 Mv = 0.6 +10 17 2015 B = 24.99 B'= 25.37 Mv = 0.6 +10 18 2015 B = 25.01 B'= 25.37 Mv = 0.6 +10 19 2015 B = 25.03 B'= 25.38 Mv = 0.6 +10 20 2015 B = 25.05 B'= 25.38 Mv = 0.6 +10 21 2015 B = 25.07 B'= 25.38 Mv = 0.6 +10 22 2015 B = 25.08 B'= 25.39 Mv = 0.6 +10 23 2015 B = 25.10 B'= 25.39 Mv = 0.6 +10 24 2015 B = 25.12 B'= 25.40 Mv = 0.6 +10 25 2015 B = 25.14 B'= 25.40 Mv = 0.5 +10 26 2015 B = 25.15 B'= 25.41 Mv = 0.5 +10 27 2015 B = 25.17 B'= 25.41 Mv = 0.5 +10 28 2015 B = 25.19 B'= 25.42 Mv = 0.5 +10 29 2015 B = 25.21 B'= 25.42 Mv = 0.5 +10 30 2015 B = 25.23 B'= 25.43 Mv = 0.5 +10 31 2015 B = 25.24 B'= 25.43 Mv = 0.5 +11 1 2015 B = 25.26 B'= 25.43 Mv = 0.5 +11 2 2015 B = 25.28 B'= 25.44 Mv = 0.5 +11 3 2015 B = 25.30 B'= 25.44 Mv = 0.5 +11 4 2015 B = 25.31 B'= 25.45 Mv = 0.5 +11 5 2015 B = 25.33 B'= 25.45 Mv = 0.5 +11 6 2015 B = 25.35 B'= 25.46 Mv = 0.5 +11 7 2015 B = 25.36 B'= 25.46 Mv = 0.5 +11 8 2015 B = 25.38 B'= 25.47 Mv = 0.5 +11 9 2015 B = 25.40 B'= 25.47 Mv = 0.5 +11 10 2015 B = 25.41 B'= 25.47 Mv = 0.5 +11 11 2015 B = 25.43 B'= 25.48 Mv = 0.5 +11 12 2015 B = 25.45 B'= 25.48 Mv = 0.5 +11 13 2015 B = 25.46 B'= 25.49 Mv = 0.5 +11 14 2015 B = 25.48 B'= 25.49 Mv = 0.5 +11 15 2015 B = 25.50 B'= 25.50 Mv = 0.5 +11 16 2015 B = 25.51 B'= 25.50 Mv = 0.5 +11 17 2015 B = 25.53 B'= 25.51 Mv = 0.5 +11 18 2015 B = 25.54 B'= 25.51 Mv = 0.5 +11 19 2015 B = 25.56 B'= 25.51 Mv = 0.5 +11 20 2015 B = 25.57 B'= 25.52 Mv = 0.5 +11 21 2015 B = 25.59 B'= 25.52 Mv = 0.5 +11 22 2015 B = 25.61 B'= 25.53 Mv = 0.5 +11 23 2015 B = 25.62 B'= 25.53 Mv = 0.5 +11 24 2015 B = 25.64 B'= 25.54 Mv = 0.5 +11 25 2015 B = 25.65 B'= 25.54 Mv = 0.5 +11 26 2015 B = 25.66 B'= 25.54 Mv = 0.5 +11 27 2015 B = 25.68 B'= 25.55 Mv = 0.4 +11 28 2015 B = 25.69 B'= 25.55 Mv = 0.4 +11 29 2015 B = 25.71 B'= 25.56 Mv = 0.4 +11 30 2015 B = 25.72 B'= 25.56 Mv = 0.4 +12 1 2015 B = 25.74 B'= 25.57 Mv = 0.4 +12 2 2015 B = 25.75 B'= 25.57 Mv = 0.4 +12 3 2015 B = 25.76 B'= 25.57 Mv = 0.4 +12 4 2015 B = 25.78 B'= 25.58 Mv = 0.4 +12 5 2015 B = 25.79 B'= 25.58 Mv = 0.5 +12 6 2015 B = 25.80 B'= 25.59 Mv = 0.5 +12 7 2015 B = 25.82 B'= 25.59 Mv = 0.5 +12 8 2015 B = 25.83 B'= 25.60 Mv = 0.5 +12 9 2015 B = 25.84 B'= 25.60 Mv = 0.5 +12 10 2015 B = 25.85 B'= 25.60 Mv = 0.5 +12 11 2015 B = 25.87 B'= 25.61 Mv = 0.5 +12 12 2015 B = 25.88 B'= 25.61 Mv = 0.5 +12 13 2015 B = 25.89 B'= 25.62 Mv = 0.5 +12 14 2015 B = 25.90 B'= 25.62 Mv = 0.5 +12 15 2015 B = 25.91 B'= 25.62 Mv = 0.5 +12 16 2015 B = 25.92 B'= 25.63 Mv = 0.5 +12 17 2015 B = 25.93 B'= 25.63 Mv = 0.5 +12 18 2015 B = 25.95 B'= 25.64 Mv = 0.5 +12 19 2015 B = 25.96 B'= 25.64 Mv = 0.5 +12 20 2015 B = 25.97 B'= 25.65 Mv = 0.5 +12 21 2015 B = 25.98 B'= 25.65 Mv = 0.5 +12 22 2015 B = 25.99 B'= 25.65 Mv = 0.5 +12 23 2015 B = 26.00 B'= 25.66 Mv = 0.5 +12 24 2015 B = 26.01 B'= 25.66 Mv = 0.5 +12 25 2015 B = 26.02 B'= 25.67 Mv = 0.5 +12 26 2015 B = 26.03 B'= 25.67 Mv = 0.5 +12 27 2015 B = 26.03 B'= 25.67 Mv = 0.5 +12 28 2015 B = 26.04 B'= 25.68 Mv = 0.5 +12 29 2015 B = 26.05 B'= 25.68 Mv = 0.5 +12 30 2015 B = 26.06 B'= 25.69 Mv = 0.5 +12 31 2015 B = 26.07 B'= 25.69 Mv = 0.5 + 1 1 2016 B = 26.08 B'= 25.69 Mv = 0.5 diff --git a/SKYTEL/satrings.INP b/SKYTEL/satrings.INP new file mode 100644 index 0000000..9b3c236 --- /dev/null +++ b/SKYTEL/satrings.INP @@ -0,0 +1 @@ +2015 diff --git a/SKYTEL/satrings.OUT b/SKYTEL/satrings.OUT new file mode 100644 index 0000000..3cd51d8 --- /dev/null +++ b/SKYTEL/satrings.OUT @@ -0,0 +1,367 @@ +Year of interest? 2015 + 1 1 2015 B = 24.52 B'= 23.72 Mv = 0.6 + 1 2 2015 B = 24.53 B'= 23.73 Mv = 0.6 + 1 3 2015 B = 24.55 B'= 23.74 Mv = 0.6 + 1 4 2015 B = 24.56 B'= 23.74 Mv = 0.6 + 1 5 2015 B = 24.58 B'= 23.75 Mv = 0.6 + 1 6 2015 B = 24.59 B'= 23.76 Mv = 0.6 + 1 7 2015 B = 24.61 B'= 23.76 Mv = 0.6 + 1 8 2015 B = 24.62 B'= 23.77 Mv = 0.6 + 1 9 2015 B = 24.63 B'= 23.78 Mv = 0.6 + 1 10 2015 B = 24.65 B'= 23.78 Mv = 0.6 + 1 11 2015 B = 24.66 B'= 23.79 Mv = 0.6 + 1 12 2015 B = 24.67 B'= 23.80 Mv = 0.6 + 1 13 2015 B = 24.68 B'= 23.80 Mv = 0.6 + 1 14 2015 B = 24.70 B'= 23.81 Mv = 0.6 + 1 15 2015 B = 24.71 B'= 23.82 Mv = 0.6 + 1 16 2015 B = 24.72 B'= 23.82 Mv = 0.6 + 1 17 2015 B = 24.73 B'= 23.83 Mv = 0.6 + 1 18 2015 B = 24.74 B'= 23.84 Mv = 0.5 + 1 19 2015 B = 24.75 B'= 23.84 Mv = 0.5 + 1 20 2015 B = 24.76 B'= 23.85 Mv = 0.5 + 1 21 2015 B = 24.78 B'= 23.86 Mv = 0.5 + 1 22 2015 B = 24.79 B'= 23.86 Mv = 0.5 + 1 23 2015 B = 24.80 B'= 23.87 Mv = 0.5 + 1 24 2015 B = 24.80 B'= 23.88 Mv = 0.5 + 1 25 2015 B = 24.81 B'= 23.88 Mv = 0.5 + 1 26 2015 B = 24.82 B'= 23.89 Mv = 0.5 + 1 27 2015 B = 24.83 B'= 23.90 Mv = 0.5 + 1 28 2015 B = 24.84 B'= 23.90 Mv = 0.5 + 1 29 2015 B = 24.85 B'= 23.91 Mv = 0.5 + 1 30 2015 B = 24.86 B'= 23.92 Mv = 0.5 + 1 31 2015 B = 24.86 B'= 23.92 Mv = 0.5 + 2 1 2015 B = 24.87 B'= 23.93 Mv = 0.5 + 2 2 2015 B = 24.88 B'= 23.93 Mv = 0.5 + 2 3 2015 B = 24.89 B'= 23.94 Mv = 0.5 + 2 4 2015 B = 24.89 B'= 23.95 Mv = 0.5 + 2 5 2015 B = 24.90 B'= 23.95 Mv = 0.5 + 2 6 2015 B = 24.90 B'= 23.96 Mv = 0.5 + 2 7 2015 B = 24.91 B'= 23.97 Mv = 0.5 + 2 8 2015 B = 24.92 B'= 23.97 Mv = 0.5 + 2 9 2015 B = 24.92 B'= 23.98 Mv = 0.5 + 2 10 2015 B = 24.93 B'= 23.99 Mv = 0.5 + 2 11 2015 B = 24.93 B'= 23.99 Mv = 0.5 + 2 12 2015 B = 24.94 B'= 24.00 Mv = 0.5 + 2 13 2015 B = 24.94 B'= 24.01 Mv = 0.5 + 2 14 2015 B = 24.94 B'= 24.01 Mv = 0.5 + 2 15 2015 B = 24.95 B'= 24.02 Mv = 0.5 + 2 16 2015 B = 24.95 B'= 24.03 Mv = 0.5 + 2 17 2015 B = 24.96 B'= 24.03 Mv = 0.5 + 2 18 2015 B = 24.96 B'= 24.04 Mv = 0.5 + 2 19 2015 B = 24.96 B'= 24.04 Mv = 0.5 + 2 20 2015 B = 24.96 B'= 24.05 Mv = 0.5 + 2 21 2015 B = 24.97 B'= 24.06 Mv = 0.5 + 2 22 2015 B = 24.97 B'= 24.06 Mv = 0.5 + 2 23 2015 B = 24.97 B'= 24.07 Mv = 0.5 + 2 24 2015 B = 24.97 B'= 24.08 Mv = 0.5 + 2 25 2015 B = 24.97 B'= 24.08 Mv = 0.5 + 2 26 2015 B = 24.97 B'= 24.09 Mv = 0.5 + 2 27 2015 B = 24.98 B'= 24.10 Mv = 0.5 + 2 28 2015 B = 24.98 B'= 24.10 Mv = 0.5 + 3 1 2015 B = 24.98 B'= 24.11 Mv = 0.4 + 3 2 2015 B = 24.98 B'= 24.11 Mv = 0.4 + 3 3 2015 B = 24.98 B'= 24.12 Mv = 0.4 + 3 4 2015 B = 24.98 B'= 24.13 Mv = 0.4 + 3 5 2015 B = 24.98 B'= 24.13 Mv = 0.4 + 3 6 2015 B = 24.98 B'= 24.14 Mv = 0.4 + 3 7 2015 B = 24.97 B'= 24.15 Mv = 0.4 + 3 8 2015 B = 24.97 B'= 24.15 Mv = 0.4 + 3 9 2015 B = 24.97 B'= 24.16 Mv = 0.4 + 3 10 2015 B = 24.97 B'= 24.16 Mv = 0.4 + 3 11 2015 B = 24.97 B'= 24.17 Mv = 0.4 + 3 12 2015 B = 24.97 B'= 24.18 Mv = 0.4 + 3 13 2015 B = 24.96 B'= 24.18 Mv = 0.4 + 3 14 2015 B = 24.96 B'= 24.19 Mv = 0.4 + 3 15 2015 B = 24.96 B'= 24.20 Mv = 0.4 + 3 16 2015 B = 24.96 B'= 24.20 Mv = 0.4 + 3 17 2015 B = 24.95 B'= 24.21 Mv = 0.4 + 3 18 2015 B = 24.95 B'= 24.21 Mv = 0.4 + 3 19 2015 B = 24.95 B'= 24.22 Mv = 0.4 + 3 20 2015 B = 24.94 B'= 24.23 Mv = 0.4 + 3 21 2015 B = 24.94 B'= 24.23 Mv = 0.4 + 3 22 2015 B = 24.94 B'= 24.24 Mv = 0.4 + 3 23 2015 B = 24.93 B'= 24.25 Mv = 0.3 + 3 24 2015 B = 24.93 B'= 24.25 Mv = 0.3 + 3 25 2015 B = 24.92 B'= 24.26 Mv = 0.3 + 3 26 2015 B = 24.92 B'= 24.26 Mv = 0.3 + 3 27 2015 B = 24.91 B'= 24.27 Mv = 0.3 + 3 28 2015 B = 24.91 B'= 24.28 Mv = 0.3 + 3 29 2015 B = 24.90 B'= 24.28 Mv = 0.3 + 3 30 2015 B = 24.90 B'= 24.29 Mv = 0.3 + 3 31 2015 B = 24.89 B'= 24.29 Mv = 0.3 + 4 1 2015 B = 24.88 B'= 24.30 Mv = 0.3 + 4 2 2015 B = 24.88 B'= 24.31 Mv = 0.3 + 4 3 2015 B = 24.87 B'= 24.31 Mv = 0.3 + 4 4 2015 B = 24.86 B'= 24.32 Mv = 0.3 + 4 5 2015 B = 24.86 B'= 24.32 Mv = 0.3 + 4 6 2015 B = 24.85 B'= 24.33 Mv = 0.3 + 4 7 2015 B = 24.84 B'= 24.34 Mv = 0.3 + 4 8 2015 B = 24.84 B'= 24.34 Mv = 0.3 + 4 9 2015 B = 24.83 B'= 24.35 Mv = 0.3 + 4 10 2015 B = 24.82 B'= 24.35 Mv = 0.2 + 4 11 2015 B = 24.81 B'= 24.36 Mv = 0.2 + 4 12 2015 B = 24.81 B'= 24.37 Mv = 0.2 + 4 13 2015 B = 24.80 B'= 24.37 Mv = 0.2 + 4 14 2015 B = 24.79 B'= 24.38 Mv = 0.2 + 4 15 2015 B = 24.78 B'= 24.38 Mv = 0.2 + 4 16 2015 B = 24.77 B'= 24.39 Mv = 0.2 + 4 17 2015 B = 24.76 B'= 24.40 Mv = 0.2 + 4 18 2015 B = 24.76 B'= 24.40 Mv = 0.2 + 4 19 2015 B = 24.75 B'= 24.41 Mv = 0.2 + 4 20 2015 B = 24.74 B'= 24.41 Mv = 0.2 + 4 21 2015 B = 24.73 B'= 24.42 Mv = 0.2 + 4 22 2015 B = 24.72 B'= 24.43 Mv = 0.2 + 4 23 2015 B = 24.71 B'= 24.43 Mv = 0.2 + 4 24 2015 B = 24.70 B'= 24.44 Mv = 0.2 + 4 25 2015 B = 24.69 B'= 24.44 Mv = 0.2 + 4 26 2015 B = 24.68 B'= 24.45 Mv = 0.2 + 4 27 2015 B = 24.67 B'= 24.46 Mv = 0.2 + 4 28 2015 B = 24.66 B'= 24.46 Mv = 0.1 + 4 29 2015 B = 24.65 B'= 24.47 Mv = 0.1 + 4 30 2015 B = 24.64 B'= 24.47 Mv = 0.1 + 5 1 2015 B = 24.63 B'= 24.48 Mv = 0.1 + 5 2 2015 B = 24.62 B'= 24.49 Mv = 0.1 + 5 3 2015 B = 24.61 B'= 24.49 Mv = 0.1 + 5 4 2015 B = 24.60 B'= 24.50 Mv = 0.1 + 5 5 2015 B = 24.59 B'= 24.50 Mv = 0.1 + 5 6 2015 B = 24.58 B'= 24.51 Mv = 0.1 + 5 7 2015 B = 24.57 B'= 24.51 Mv = 0.1 + 5 8 2015 B = 24.56 B'= 24.52 Mv = 0.1 + 5 9 2015 B = 24.54 B'= 24.53 Mv = 0.1 + 5 10 2015 B = 24.53 B'= 24.53 Mv = 0.1 + 5 11 2015 B = 24.52 B'= 24.54 Mv = 0.1 + 5 12 2015 B = 24.51 B'= 24.54 Mv = 0.1 + 5 13 2015 B = 24.50 B'= 24.55 Mv = 0.1 + 5 14 2015 B = 24.49 B'= 24.56 Mv = 0.1 + 5 15 2015 B = 24.48 B'= 24.56 Mv = 0.1 + 5 16 2015 B = 24.47 B'= 24.57 Mv = 0.1 + 5 17 2015 B = 24.46 B'= 24.57 Mv = 0.0 + 5 18 2015 B = 24.45 B'= 24.58 Mv = 0.0 + 5 19 2015 B = 24.43 B'= 24.58 Mv = 0.0 + 5 20 2015 B = 24.42 B'= 24.59 Mv = 0.0 + 5 21 2015 B = 24.41 B'= 24.60 Mv = 0.0 + 5 22 2015 B = 24.40 B'= 24.60 Mv = 0.0 + 5 23 2015 B = 24.39 B'= 24.61 Mv = 0.0 + 5 24 2015 B = 24.38 B'= 24.61 Mv = 0.0 + 5 25 2015 B = 24.37 B'= 24.62 Mv = 0.0 + 5 26 2015 B = 24.36 B'= 24.62 Mv = 0.0 + 5 27 2015 B = 24.35 B'= 24.63 Mv = 0.0 + 5 28 2015 B = 24.33 B'= 24.64 Mv = 0.0 + 5 29 2015 B = 24.32 B'= 24.64 Mv = 0.1 + 5 30 2015 B = 24.31 B'= 24.65 Mv = 0.1 + 5 31 2015 B = 24.30 B'= 24.65 Mv = 0.1 + 6 1 2015 B = 24.29 B'= 24.66 Mv = 0.1 + 6 2 2015 B = 24.28 B'= 24.66 Mv = 0.1 + 6 3 2015 B = 24.27 B'= 24.67 Mv = 0.1 + 6 4 2015 B = 24.26 B'= 24.68 Mv = 0.1 + 6 5 2015 B = 24.25 B'= 24.68 Mv = 0.1 + 6 6 2015 B = 24.24 B'= 24.69 Mv = 0.1 + 6 7 2015 B = 24.23 B'= 24.69 Mv = 0.1 + 6 8 2015 B = 24.22 B'= 24.70 Mv = 0.1 + 6 9 2015 B = 24.21 B'= 24.70 Mv = 0.1 + 6 10 2015 B = 24.20 B'= 24.71 Mv = 0.1 + 6 11 2015 B = 24.19 B'= 24.71 Mv = 0.1 + 6 12 2015 B = 24.18 B'= 24.72 Mv = 0.1 + 6 13 2015 B = 24.17 B'= 24.73 Mv = 0.1 + 6 14 2015 B = 24.16 B'= 24.73 Mv = 0.1 + 6 15 2015 B = 24.15 B'= 24.74 Mv = 0.1 + 6 16 2015 B = 24.14 B'= 24.74 Mv = 0.2 + 6 17 2015 B = 24.14 B'= 24.75 Mv = 0.2 + 6 18 2015 B = 24.13 B'= 24.75 Mv = 0.2 + 6 19 2015 B = 24.12 B'= 24.76 Mv = 0.2 + 6 20 2015 B = 24.11 B'= 24.76 Mv = 0.2 + 6 21 2015 B = 24.10 B'= 24.77 Mv = 0.2 + 6 22 2015 B = 24.10 B'= 24.78 Mv = 0.2 + 6 23 2015 B = 24.09 B'= 24.78 Mv = 0.2 + 6 24 2015 B = 24.08 B'= 24.79 Mv = 0.2 + 6 25 2015 B = 24.07 B'= 24.79 Mv = 0.2 + 6 26 2015 B = 24.07 B'= 24.80 Mv = 0.2 + 6 27 2015 B = 24.06 B'= 24.80 Mv = 0.2 + 6 28 2015 B = 24.05 B'= 24.81 Mv = 0.2 + 6 29 2015 B = 24.05 B'= 24.81 Mv = 0.2 + 6 30 2015 B = 24.04 B'= 24.82 Mv = 0.2 + 7 1 2015 B = 24.04 B'= 24.82 Mv = 0.2 + 7 2 2015 B = 24.03 B'= 24.83 Mv = 0.3 + 7 3 2015 B = 24.03 B'= 24.84 Mv = 0.3 + 7 4 2015 B = 24.02 B'= 24.84 Mv = 0.3 + 7 5 2015 B = 24.02 B'= 24.85 Mv = 0.3 + 7 6 2015 B = 24.01 B'= 24.85 Mv = 0.3 + 7 7 2015 B = 24.01 B'= 24.86 Mv = 0.3 + 7 8 2015 B = 24.00 B'= 24.86 Mv = 0.3 + 7 9 2015 B = 24.00 B'= 24.87 Mv = 0.3 + 7 10 2015 B = 24.00 B'= 24.87 Mv = 0.3 + 7 11 2015 B = 24.00 B'= 24.88 Mv = 0.3 + 7 12 2015 B = 23.99 B'= 24.88 Mv = 0.3 + 7 13 2015 B = 23.99 B'= 24.89 Mv = 0.3 + 7 14 2015 B = 23.99 B'= 24.89 Mv = 0.3 + 7 15 2015 B = 23.99 B'= 24.90 Mv = 0.3 + 7 16 2015 B = 23.99 B'= 24.90 Mv = 0.3 + 7 17 2015 B = 23.98 B'= 24.91 Mv = 0.3 + 7 18 2015 B = 23.98 B'= 24.92 Mv = 0.3 + 7 19 2015 B = 23.98 B'= 24.92 Mv = 0.4 + 7 20 2015 B = 23.98 B'= 24.93 Mv = 0.4 + 7 21 2015 B = 23.98 B'= 24.93 Mv = 0.4 + 7 22 2015 B = 23.98 B'= 24.94 Mv = 0.4 + 7 23 2015 B = 23.98 B'= 24.94 Mv = 0.4 + 7 24 2015 B = 23.98 B'= 24.95 Mv = 0.4 + 7 25 2015 B = 23.99 B'= 24.95 Mv = 0.4 + 7 26 2015 B = 23.99 B'= 24.96 Mv = 0.4 + 7 27 2015 B = 23.99 B'= 24.96 Mv = 0.4 + 7 28 2015 B = 23.99 B'= 24.97 Mv = 0.4 + 7 29 2015 B = 23.99 B'= 24.97 Mv = 0.4 + 7 30 2015 B = 24.00 B'= 24.98 Mv = 0.4 + 7 31 2015 B = 24.00 B'= 24.98 Mv = 0.4 + 8 1 2015 B = 24.00 B'= 24.99 Mv = 0.4 + 8 2 2015 B = 24.01 B'= 24.99 Mv = 0.4 + 8 3 2015 B = 24.01 B'= 25.00 Mv = 0.4 + 8 4 2015 B = 24.02 B'= 25.00 Mv = 0.4 + 8 5 2015 B = 24.02 B'= 25.01 Mv = 0.4 + 8 6 2015 B = 24.03 B'= 25.01 Mv = 0.4 + 8 7 2015 B = 24.03 B'= 25.02 Mv = 0.4 + 8 8 2015 B = 24.04 B'= 25.02 Mv = 0.5 + 8 9 2015 B = 24.04 B'= 25.03 Mv = 0.5 + 8 10 2015 B = 24.05 B'= 25.04 Mv = 0.5 + 8 11 2015 B = 24.06 B'= 25.04 Mv = 0.5 + 8 12 2015 B = 24.06 B'= 25.05 Mv = 0.5 + 8 13 2015 B = 24.07 B'= 25.05 Mv = 0.5 + 8 14 2015 B = 24.08 B'= 25.06 Mv = 0.5 + 8 15 2015 B = 24.08 B'= 25.06 Mv = 0.5 + 8 16 2015 B = 24.09 B'= 25.07 Mv = 0.5 + 8 17 2015 B = 24.10 B'= 25.07 Mv = 0.5 + 8 18 2015 B = 24.11 B'= 25.08 Mv = 0.5 + 8 19 2015 B = 24.12 B'= 25.08 Mv = 0.5 + 8 20 2015 B = 24.13 B'= 25.09 Mv = 0.5 + 8 21 2015 B = 24.14 B'= 25.09 Mv = 0.5 + 8 22 2015 B = 24.15 B'= 25.10 Mv = 0.5 + 8 23 2015 B = 24.16 B'= 25.10 Mv = 0.5 + 8 24 2015 B = 24.17 B'= 25.11 Mv = 0.5 + 8 25 2015 B = 24.18 B'= 25.11 Mv = 0.5 + 8 26 2015 B = 24.19 B'= 25.12 Mv = 0.5 + 8 27 2015 B = 24.20 B'= 25.12 Mv = 0.5 + 8 28 2015 B = 24.21 B'= 25.13 Mv = 0.5 + 8 29 2015 B = 24.22 B'= 25.13 Mv = 0.5 + 8 30 2015 B = 24.23 B'= 25.14 Mv = 0.5 + 8 31 2015 B = 24.25 B'= 25.14 Mv = 0.5 + 9 1 2015 B = 24.26 B'= 25.15 Mv = 0.5 + 9 2 2015 B = 24.27 B'= 25.15 Mv = 0.5 + 9 3 2015 B = 24.28 B'= 25.16 Mv = 0.5 + 9 4 2015 B = 24.30 B'= 25.16 Mv = 0.5 + 9 5 2015 B = 24.31 B'= 25.17 Mv = 0.5 + 9 6 2015 B = 24.32 B'= 25.17 Mv = 0.5 + 9 7 2015 B = 24.34 B'= 25.18 Mv = 0.5 + 9 8 2015 B = 24.35 B'= 25.18 Mv = 0.6 + 9 9 2015 B = 24.36 B'= 25.19 Mv = 0.6 + 9 10 2015 B = 24.38 B'= 25.19 Mv = 0.6 + 9 11 2015 B = 24.39 B'= 25.20 Mv = 0.6 + 9 12 2015 B = 24.41 B'= 25.20 Mv = 0.6 + 9 13 2015 B = 24.42 B'= 25.21 Mv = 0.6 + 9 14 2015 B = 24.44 B'= 25.21 Mv = 0.6 + 9 15 2015 B = 24.45 B'= 25.21 Mv = 0.6 + 9 16 2015 B = 24.47 B'= 25.22 Mv = 0.6 + 9 17 2015 B = 24.48 B'= 25.22 Mv = 0.6 + 9 18 2015 B = 24.50 B'= 25.23 Mv = 0.6 + 9 19 2015 B = 24.51 B'= 25.23 Mv = 0.6 + 9 20 2015 B = 24.53 B'= 25.24 Mv = 0.6 + 9 21 2015 B = 24.55 B'= 25.24 Mv = 0.6 + 9 22 2015 B = 24.56 B'= 25.25 Mv = 0.6 + 9 23 2015 B = 24.58 B'= 25.25 Mv = 0.6 + 9 24 2015 B = 24.59 B'= 25.26 Mv = 0.6 + 9 25 2015 B = 24.61 B'= 25.26 Mv = 0.6 + 9 26 2015 B = 24.63 B'= 25.27 Mv = 0.6 + 9 27 2015 B = 24.64 B'= 25.27 Mv = 0.6 + 9 28 2015 B = 24.66 B'= 25.28 Mv = 0.6 + 9 29 2015 B = 24.68 B'= 25.28 Mv = 0.6 + 9 30 2015 B = 24.69 B'= 25.29 Mv = 0.6 +10 1 2015 B = 24.71 B'= 25.29 Mv = 0.6 +10 2 2015 B = 24.73 B'= 25.30 Mv = 0.6 +10 3 2015 B = 24.75 B'= 25.30 Mv = 0.6 +10 4 2015 B = 24.76 B'= 25.31 Mv = 0.6 +10 5 2015 B = 24.78 B'= 25.31 Mv = 0.6 +10 6 2015 B = 24.80 B'= 25.31 Mv = 0.6 +10 7 2015 B = 24.82 B'= 25.32 Mv = 0.6 +10 8 2015 B = 24.83 B'= 25.32 Mv = 0.6 +10 9 2015 B = 24.85 B'= 25.33 Mv = 0.6 +10 10 2015 B = 24.87 B'= 25.33 Mv = 0.6 +10 11 2015 B = 24.89 B'= 25.34 Mv = 0.6 +10 12 2015 B = 24.91 B'= 25.34 Mv = 0.6 +10 13 2015 B = 24.92 B'= 25.35 Mv = 0.6 +10 14 2015 B = 24.94 B'= 25.35 Mv = 0.6 +10 15 2015 B = 24.96 B'= 25.36 Mv = 0.6 +10 16 2015 B = 24.98 B'= 25.36 Mv = 0.6 +10 17 2015 B = 24.99 B'= 25.37 Mv = 0.6 +10 18 2015 B = 25.01 B'= 25.37 Mv = 0.6 +10 19 2015 B = 25.03 B'= 25.38 Mv = 0.6 +10 20 2015 B = 25.05 B'= 25.38 Mv = 0.6 +10 21 2015 B = 25.07 B'= 25.38 Mv = 0.6 +10 22 2015 B = 25.08 B'= 25.39 Mv = 0.6 +10 23 2015 B = 25.10 B'= 25.39 Mv = 0.6 +10 24 2015 B = 25.12 B'= 25.40 Mv = 0.6 +10 25 2015 B = 25.14 B'= 25.40 Mv = 0.5 +10 26 2015 B = 25.15 B'= 25.41 Mv = 0.5 +10 27 2015 B = 25.17 B'= 25.41 Mv = 0.5 +10 28 2015 B = 25.19 B'= 25.42 Mv = 0.5 +10 29 2015 B = 25.21 B'= 25.42 Mv = 0.5 +10 30 2015 B = 25.23 B'= 25.43 Mv = 0.5 +10 31 2015 B = 25.24 B'= 25.43 Mv = 0.5 +11 1 2015 B = 25.26 B'= 25.43 Mv = 0.5 +11 2 2015 B = 25.28 B'= 25.44 Mv = 0.5 +11 3 2015 B = 25.30 B'= 25.44 Mv = 0.5 +11 4 2015 B = 25.31 B'= 25.45 Mv = 0.5 +11 5 2015 B = 25.33 B'= 25.45 Mv = 0.5 +11 6 2015 B = 25.35 B'= 25.46 Mv = 0.5 +11 7 2015 B = 25.36 B'= 25.46 Mv = 0.5 +11 8 2015 B = 25.38 B'= 25.47 Mv = 0.5 +11 9 2015 B = 25.40 B'= 25.47 Mv = 0.5 +11 10 2015 B = 25.41 B'= 25.47 Mv = 0.5 +11 11 2015 B = 25.43 B'= 25.48 Mv = 0.5 +11 12 2015 B = 25.45 B'= 25.48 Mv = 0.5 +11 13 2015 B = 25.46 B'= 25.49 Mv = 0.5 +11 14 2015 B = 25.48 B'= 25.49 Mv = 0.5 +11 15 2015 B = 25.50 B'= 25.50 Mv = 0.5 +11 16 2015 B = 25.51 B'= 25.50 Mv = 0.5 +11 17 2015 B = 25.53 B'= 25.51 Mv = 0.5 +11 18 2015 B = 25.54 B'= 25.51 Mv = 0.5 +11 19 2015 B = 25.56 B'= 25.51 Mv = 0.5 +11 20 2015 B = 25.57 B'= 25.52 Mv = 0.5 +11 21 2015 B = 25.59 B'= 25.52 Mv = 0.5 +11 22 2015 B = 25.61 B'= 25.53 Mv = 0.5 +11 23 2015 B = 25.62 B'= 25.53 Mv = 0.5 +11 24 2015 B = 25.64 B'= 25.54 Mv = 0.5 +11 25 2015 B = 25.65 B'= 25.54 Mv = 0.5 +11 26 2015 B = 25.66 B'= 25.54 Mv = 0.5 +11 27 2015 B = 25.68 B'= 25.55 Mv = 0.4 +11 28 2015 B = 25.69 B'= 25.55 Mv = 0.4 +11 29 2015 B = 25.71 B'= 25.56 Mv = 0.4 +11 30 2015 B = 25.72 B'= 25.56 Mv = 0.4 +12 1 2015 B = 25.74 B'= 25.57 Mv = 0.4 +12 2 2015 B = 25.75 B'= 25.57 Mv = 0.4 +12 3 2015 B = 25.76 B'= 25.57 Mv = 0.4 +12 4 2015 B = 25.78 B'= 25.58 Mv = 0.4 +12 5 2015 B = 25.79 B'= 25.58 Mv = 0.5 +12 6 2015 B = 25.80 B'= 25.59 Mv = 0.5 +12 7 2015 B = 25.82 B'= 25.59 Mv = 0.5 +12 8 2015 B = 25.83 B'= 25.60 Mv = 0.5 +12 9 2015 B = 25.84 B'= 25.60 Mv = 0.5 +12 10 2015 B = 25.85 B'= 25.60 Mv = 0.5 +12 11 2015 B = 25.87 B'= 25.61 Mv = 0.5 +12 12 2015 B = 25.88 B'= 25.61 Mv = 0.5 +12 13 2015 B = 25.89 B'= 25.62 Mv = 0.5 +12 14 2015 B = 25.90 B'= 25.62 Mv = 0.5 +12 15 2015 B = 25.91 B'= 25.62 Mv = 0.5 +12 16 2015 B = 25.92 B'= 25.63 Mv = 0.5 +12 17 2015 B = 25.93 B'= 25.63 Mv = 0.5 +12 18 2015 B = 25.95 B'= 25.64 Mv = 0.5 +12 19 2015 B = 25.96 B'= 25.64 Mv = 0.5 +12 20 2015 B = 25.97 B'= 25.65 Mv = 0.5 +12 21 2015 B = 25.98 B'= 25.65 Mv = 0.5 +12 22 2015 B = 25.99 B'= 25.65 Mv = 0.5 +12 23 2015 B = 26.00 B'= 25.66 Mv = 0.5 +12 24 2015 B = 26.01 B'= 25.66 Mv = 0.5 +12 25 2015 B = 26.02 B'= 25.67 Mv = 0.5 +12 26 2015 B = 26.03 B'= 25.67 Mv = 0.5 +12 27 2015 B = 26.03 B'= 25.67 Mv = 0.5 +12 28 2015 B = 26.04 B'= 25.68 Mv = 0.5 +12 29 2015 B = 26.05 B'= 25.68 Mv = 0.5 +12 30 2015 B = 26.06 B'= 25.69 Mv = 0.5 +12 31 2015 B = 26.07 B'= 25.69 Mv = 0.5 + 1 1 2016 B = 26.08 B'= 25.69 Mv = 0.5 diff --git a/SKYTEL/satrings.bas b/SKYTEL/satrings.bas new file mode 100644 index 0000000..a10daca --- /dev/null +++ b/SKYTEL/satrings.bas @@ -0,0 +1,136 @@ +10 ' RINGS OF SATURN +20 DEFDBL A-Z +30 CLS ' : PI=4 *ATN(1 ): +35 RD=PI/180 : DL=9 +40 INPUT "Year of interest"; Y +50 A=INT((Y-1 )/100 ): B=2 -A+INT(A/4 ) +60 IF Y<1583 THEN B=0 +70 JD=INT(365.25*(Y+4715))+INT(30.6001*(14)) +80 JD=JD+B-1523.5 +90 JE=JD+365 +100 T=(JD-2451545 )/365250 +110 I=(28.04922 -.13 *T+.0004 *T*T)*RD +120 OM=(169.53 +13.826 *T+.04 *T*T)*RD +130 GOSUB 550: ' Get planet positions +140 X=SR*COS(SB)*COS(SL)-ER*COS(EL) +150 Y=SR*COS(SB)*SIN(SL)-ER*SIN(EL) +160 Z=SR*SIN(SB)-ER*SIN(EB) +170 DL=SQR(X*X+Y*Y+Z*Z) +180 LA=ATN(Y/X): IF X<0 THEN LA=LA+PI +190 BE=ATN(Z/SQR(X*X+Y*Y)) +200 S=SIN(I)*COS(BE)*SIN(LA-OM)-COS(I)*SIN(BE) +210 B=ATN(S/SQR(1 -S*S)) +220 SP=SIN(I)*COS(SB)*SIN(SL-OM)-COS(I)*SIN(SB) +230 BP=ATN(SP/SQR(1 -SP*SP)) +240 ' Check for crossing of ring plane +250 IF B*XB>=0 THEN GOTO 280 +260 N$="(N to S)": IF B>0 THEN N$="(S to N)" +270 PRINT "< Earth crosses ring plane "; N$; " >" +280 IF BP*XP>=0 THEN GOTO 310 +290 N$="(N to S)": IF BP>0 THEN N$="(S to N)" +300 PRINT "< Sun crosses ring plane "; N$; " >" +310 Z=INT(JD+1): AL=INT((Z-1867216.25 )/36524.25 ) +320 AJ=Z+1 +AL-INT(AL/4 ): IF Z<2299161 THEN AJ=Z +330 BJ=AJ+1524: CJ=INT((BJ-122.1)/365.25) +340 DJ=INT(365.25 *CJ): EJ=INT((BJ-DJ)/30.6001) +350 D=BJ-DJ-INT(30.6001*EJ) +360 M=EJ-1: IF EJ>13.5 THEN M=M-12 +370 Y=CJ-4715: IF M>2 THEN Y=Y-1 +380 PRINT USING "## ## #####"; M; D; Y; +390 PRINT USING " B =###.## deg"; B/RD; +400 PRINT USING " B'=###.## deg"; BP/RD; +440 ' +450 CI=(SR^2+DL^2-ER^2)/(2*SR*DL) +460 ID=ATN(SQR(1-CI*CI)/CI)/RD +470 MV=-8.88+5*LOG(SR*DL)/LOG(10) +480 MV=MV+.044*ID-2.6*ABS(S)+1.25*S*S +490 PRINT USING " Mv =##.#"; MV +500 IF B*XB<0 THEN WHILE INKEY$="": WEND +510 IF BP*XP<0 THEN WHILE INKEY$="": WEND +520 JD=JD+1 : XB=B: XP=BP +530 IF JD<=JE THEN GOTO 100 +540 END +550 ' Calculate position of Earth +560 L0=175347046 +570 L0=L0+3341656 *COS(4.66926+6283.07585 *T) +580 L0=L0+34894 *COS(4.6261+12566.1517 *T) +590 L1=628331966747 +600 L1=L1+206059 *COS(2.67824+6283.07585 *T) +610 L2=52919 +620 EL=(L0+L1*T+L2*T*T)/(1E+08): EB=0 +630 R0=100013989 +640 R0=R0+1670700 *COS(3.09846+6283.07585 *T) +650 R0=R0+13956 *COS(3.05525+12566.1517 *T) +660 R1=103019 *COS(1.10749+6283.07585 *T) +670 R2=4359 *COS(5.7846+6283.0758 *T) +680 ER=(R0+R1*T+R2*T*T)/(1E+08) +690 ' Calculate position of Saturn +700 T=T-(.00578 *DL)/365250 +710 L0=87401354 +720 L0=L0+11107660 *COS(3.96205+213.2991 *T) +730 L0=L0+1414151 *COS(4.58582+7.11355*T) +740 L0=L0+398379 *COS(.52112+206.18555 *T) +750 L0=L0+350769 *COS(3.3033+426.598191 *T) +760 L0=L0+206816 *COS(.24658+103.09277 *T) +770 L0=L0+79271 *COS(3.84007+220.41264 *T) +780 L0=L0+23990*COS(4.66977+110.20632 *T) +790 L0=L0+16574*COS(.43719+419.48464 *T) +800 L0=L0+15820*COS(.93809+632.78374 *T) +810 L0=L0+15054*COS(2.7167+639.89729 *T) +820 L0=L0+14907*COS(5.76903+316.39187 *T) +830 L0=L0+14610*COS(1.56519+3.93215*T) +840 L0=L0+13160*COS(4.44891+14.22709*T) +850 L0=L0+13005*COS(5.98119+11.0457*T) +860 L0=L0+10725*COS(3.1294+202.2534*T) +870 L1=21354295596 +880 L1=L1+1296855 *COS(1.82821+213.2991 *T) +890 L1=L1+564348 *COS(2.885+7.11355*T) +900 L1=L1+107679 *COS(2.2777+206.18555 *T) +910 L1=L1+98323 *COS(1.0807+426.59819 *T) +920 L1=L1+40255 *COS(2.04128+220.41264 *T) +930 L2=116441 *COS(1.17988+7.11355*T) +940 L2=L2+91921 *COS(.07425+213.2991*T) +950 L2=L2+90592 +960 L2=L2+15277*COS(4.06492+206.18555 *T) +970 L3=16039*COS(5.73945+7.11355*T) +980 L4=1662*COS(3.9983+7.1135*T) +990 SL=(L0+L1*T+L2*T*T+L3*T^3+L4*T^4)/(1E+08) +1000 B0=4330678 *COS(3.60284+213.2991 *T) +1010 B0=B0+240348 *COS(2.85238+426.59819 *T) +1020 B0=B0+84746 +1030 B0=B0+34116 *COS(.57297+206.18555 *T) +1040 B0=B0+30863*COS(3.48442+220.41264 *T) +1050 B0=B0+14734*COS(2.11847+639.89729 *T) +1060 B0=B0+9917*COS(5.79+419.4846*T) +1070 B0=B0+6994*COS(4.736+7.1135*T) +1080 B1=397555 *COS(5.3329+213.2991 *T) +1090 B1=B1+49479 *COS(3.14159) +1100 B1=B1+18572*COS(6.09919+426.59819 *T) +1110 B1=B1+14801*COS(2.30586+206.18555 *T) +1120 B1=B1+9644*COS(1.6967+220.4126*T) +1130 B2=20630*COS(.50482+213.2991*T) +1140 SB=(B0+B1*T+B2*T*T)/(1E+08) +1150 R0=955758136 +1160 R0=R0+52921382 *COS(2.39226+213.2991 *T) +1170 R0=R0+1873680 *COS(5.2355+206.18555 *T) +1180 R0=R0+1464664 *COS(1.64763+426.59819 *T) +1190 R0=R0+821891 *COS(5.9352+316.39187 *T) +1200 R0=R0+547507 *COS(5.01533+103.09277 *T) +1210 R0=R0+371684 *COS(2.27115+220.41264 *T) +1220 R0=R0+361778 *COS(3.13904+7.11355*T) +1230 R1=6182981 *COS(.25844+213.2991 *T) +1240 R1=R1+506578 *COS(.71115+206.18555 *T) +1250 R1=R1+341394 *COS(5.79636+426.59819 *T) +1260 R2=436902 *COS(4.78672+213.2991 *T) +1270 R3=20315*COS(3.02187+213.2991*T) +1280 SR=(R0+R1*T+R2*T*T+R3*T^3)/(1E+08) +1290 RETURN +1300 ' +1310 ' This program by Donald W. Olson, Russell L. Doescher, and +1320 ' Jonathan Gallmeier appeared in an article titled "The Rings +1330 ' of Saturn" in Sky & Telescope for May 1995, pages 92-95. +1340 ' It computes the tilt of the rings as seen from the Earth (B) +1350 ' and the Sun (B'). The program pauses when ring-plane crossings +1360 ' occur. It also computes the apparent visual magnitude of +1370 ' Saturn (Mv), a quantity that depends strongly on the amount +1380 ' of ring tilt on a given date. Valid for at least 2,000 years. diff --git a/SKYTEL/satrings.dif b/SKYTEL/satrings.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/satrings.run b/SKYTEL/satrings.run new file mode 100644 index 0000000..c95694a --- /dev/null +++ b/SKYTEL/satrings.run @@ -0,0 +1,367 @@ +Year of interest? 2015 + 1 1 2015 B = 24.52 B'= 23.72 Mv = 0.6 + 1 2 2015 B = 24.53 B'= 23.73 Mv = 0.6 + 1 3 2015 B = 24.55 B'= 23.74 Mv = 0.6 + 1 4 2015 B = 24.56 B'= 23.74 Mv = 0.6 + 1 5 2015 B = 24.58 B'= 23.75 Mv = 0.6 + 1 6 2015 B = 24.59 B'= 23.76 Mv = 0.6 + 1 7 2015 B = 24.61 B'= 23.76 Mv = 0.6 + 1 8 2015 B = 24.62 B'= 23.77 Mv = 0.6 + 1 9 2015 B = 24.63 B'= 23.78 Mv = 0.6 + 1 10 2015 B = 24.65 B'= 23.78 Mv = 0.6 + 1 11 2015 B = 24.66 B'= 23.79 Mv = 0.6 + 1 12 2015 B = 24.67 B'= 23.80 Mv = 0.6 + 1 13 2015 B = 24.68 B'= 23.80 Mv = 0.6 + 1 14 2015 B = 24.70 B'= 23.81 Mv = 0.6 + 1 15 2015 B = 24.71 B'= 23.82 Mv = 0.6 + 1 16 2015 B = 24.72 B'= 23.82 Mv = 0.6 + 1 17 2015 B = 24.73 B'= 23.83 Mv = 0.6 + 1 18 2015 B = 24.74 B'= 23.84 Mv = 0.5 + 1 19 2015 B = 24.75 B'= 23.84 Mv = 0.5 + 1 20 2015 B = 24.76 B'= 23.85 Mv = 0.5 + 1 21 2015 B = 24.78 B'= 23.86 Mv = 0.5 + 1 22 2015 B = 24.79 B'= 23.86 Mv = 0.5 + 1 23 2015 B = 24.80 B'= 23.87 Mv = 0.5 + 1 24 2015 B = 24.80 B'= 23.88 Mv = 0.5 + 1 25 2015 B = 24.81 B'= 23.88 Mv = 0.5 + 1 26 2015 B = 24.82 B'= 23.89 Mv = 0.5 + 1 27 2015 B = 24.83 B'= 23.90 Mv = 0.5 + 1 28 2015 B = 24.84 B'= 23.90 Mv = 0.5 + 1 29 2015 B = 24.85 B'= 23.91 Mv = 0.5 + 1 30 2015 B = 24.86 B'= 23.92 Mv = 0.5 + 1 31 2015 B = 24.86 B'= 23.92 Mv = 0.5 + 2 1 2015 B = 24.87 B'= 23.93 Mv = 0.5 + 2 2 2015 B = 24.88 B'= 23.93 Mv = 0.5 + 2 3 2015 B = 24.89 B'= 23.94 Mv = 0.5 + 2 4 2015 B = 24.89 B'= 23.95 Mv = 0.5 + 2 5 2015 B = 24.90 B'= 23.95 Mv = 0.5 + 2 6 2015 B = 24.90 B'= 23.96 Mv = 0.5 + 2 7 2015 B = 24.91 B'= 23.97 Mv = 0.5 + 2 8 2015 B = 24.92 B'= 23.97 Mv = 0.5 + 2 9 2015 B = 24.92 B'= 23.98 Mv = 0.5 + 2 10 2015 B = 24.93 B'= 23.99 Mv = 0.5 + 2 11 2015 B = 24.93 B'= 23.99 Mv = 0.5 + 2 12 2015 B = 24.94 B'= 24.00 Mv = 0.5 + 2 13 2015 B = 24.94 B'= 24.01 Mv = 0.5 + 2 14 2015 B = 24.94 B'= 24.01 Mv = 0.5 + 2 15 2015 B = 24.95 B'= 24.02 Mv = 0.5 + 2 16 2015 B = 24.95 B'= 24.03 Mv = 0.5 + 2 17 2015 B = 24.96 B'= 24.03 Mv = 0.5 + 2 18 2015 B = 24.96 B'= 24.04 Mv = 0.5 + 2 19 2015 B = 24.96 B'= 24.04 Mv = 0.5 + 2 20 2015 B = 24.96 B'= 24.05 Mv = 0.5 + 2 21 2015 B = 24.97 B'= 24.06 Mv = 0.5 + 2 22 2015 B = 24.97 B'= 24.06 Mv = 0.5 + 2 23 2015 B = 24.97 B'= 24.07 Mv = 0.5 + 2 24 2015 B = 24.97 B'= 24.08 Mv = 0.5 + 2 25 2015 B = 24.97 B'= 24.08 Mv = 0.5 + 2 26 2015 B = 24.97 B'= 24.09 Mv = 0.5 + 2 27 2015 B = 24.98 B'= 24.10 Mv = 0.5 + 2 28 2015 B = 24.98 B'= 24.10 Mv = 0.5 + 3 1 2015 B = 24.98 B'= 24.11 Mv = 0.4 + 3 2 2015 B = 24.98 B'= 24.11 Mv = 0.4 + 3 3 2015 B = 24.98 B'= 24.12 Mv = 0.4 + 3 4 2015 B = 24.98 B'= 24.13 Mv = 0.4 + 3 5 2015 B = 24.98 B'= 24.13 Mv = 0.4 + 3 6 2015 B = 24.98 B'= 24.14 Mv = 0.4 + 3 7 2015 B = 24.97 B'= 24.15 Mv = 0.4 + 3 8 2015 B = 24.97 B'= 24.15 Mv = 0.4 + 3 9 2015 B = 24.97 B'= 24.16 Mv = 0.4 + 3 10 2015 B = 24.97 B'= 24.16 Mv = 0.4 + 3 11 2015 B = 24.97 B'= 24.17 Mv = 0.4 + 3 12 2015 B = 24.97 B'= 24.18 Mv = 0.4 + 3 13 2015 B = 24.96 B'= 24.18 Mv = 0.4 + 3 14 2015 B = 24.96 B'= 24.19 Mv = 0.4 + 3 15 2015 B = 24.96 B'= 24.20 Mv = 0.4 + 3 16 2015 B = 24.96 B'= 24.20 Mv = 0.4 + 3 17 2015 B = 24.95 B'= 24.21 Mv = 0.4 + 3 18 2015 B = 24.95 B'= 24.21 Mv = 0.4 + 3 19 2015 B = 24.95 B'= 24.22 Mv = 0.4 + 3 20 2015 B = 24.94 B'= 24.23 Mv = 0.4 + 3 21 2015 B = 24.94 B'= 24.23 Mv = 0.4 + 3 22 2015 B = 24.94 B'= 24.24 Mv = 0.4 + 3 23 2015 B = 24.93 B'= 24.25 Mv = 0.3 + 3 24 2015 B = 24.93 B'= 24.25 Mv = 0.3 + 3 25 2015 B = 24.92 B'= 24.26 Mv = 0.3 + 3 26 2015 B = 24.92 B'= 24.26 Mv = 0.3 + 3 27 2015 B = 24.91 B'= 24.27 Mv = 0.3 + 3 28 2015 B = 24.91 B'= 24.28 Mv = 0.3 + 3 29 2015 B = 24.90 B'= 24.28 Mv = 0.3 + 3 30 2015 B = 24.90 B'= 24.29 Mv = 0.3 + 3 31 2015 B = 24.89 B'= 24.29 Mv = 0.3 + 4 1 2015 B = 24.88 B'= 24.30 Mv = 0.3 + 4 2 2015 B = 24.88 B'= 24.31 Mv = 0.3 + 4 3 2015 B = 24.87 B'= 24.31 Mv = 0.3 + 4 4 2015 B = 24.86 B'= 24.32 Mv = 0.3 + 4 5 2015 B = 24.86 B'= 24.32 Mv = 0.3 + 4 6 2015 B = 24.85 B'= 24.33 Mv = 0.3 + 4 7 2015 B = 24.84 B'= 24.34 Mv = 0.3 + 4 8 2015 B = 24.84 B'= 24.34 Mv = 0.3 + 4 9 2015 B = 24.83 B'= 24.35 Mv = 0.3 + 4 10 2015 B = 24.82 B'= 24.35 Mv = 0.2 + 4 11 2015 B = 24.81 B'= 24.36 Mv = 0.2 + 4 12 2015 B = 24.81 B'= 24.37 Mv = 0.2 + 4 13 2015 B = 24.80 B'= 24.37 Mv = 0.2 + 4 14 2015 B = 24.79 B'= 24.38 Mv = 0.2 + 4 15 2015 B = 24.78 B'= 24.38 Mv = 0.2 + 4 16 2015 B = 24.77 B'= 24.39 Mv = 0.2 + 4 17 2015 B = 24.76 B'= 24.40 Mv = 0.2 + 4 18 2015 B = 24.76 B'= 24.40 Mv = 0.2 + 4 19 2015 B = 24.75 B'= 24.41 Mv = 0.2 + 4 20 2015 B = 24.74 B'= 24.41 Mv = 0.2 + 4 21 2015 B = 24.73 B'= 24.42 Mv = 0.2 + 4 22 2015 B = 24.72 B'= 24.43 Mv = 0.2 + 4 23 2015 B = 24.71 B'= 24.43 Mv = 0.2 + 4 24 2015 B = 24.70 B'= 24.44 Mv = 0.2 + 4 25 2015 B = 24.69 B'= 24.44 Mv = 0.2 + 4 26 2015 B = 24.68 B'= 24.45 Mv = 0.2 + 4 27 2015 B = 24.67 B'= 24.46 Mv = 0.2 + 4 28 2015 B = 24.66 B'= 24.46 Mv = 0.1 + 4 29 2015 B = 24.65 B'= 24.47 Mv = 0.1 + 4 30 2015 B = 24.64 B'= 24.47 Mv = 0.1 + 5 1 2015 B = 24.63 B'= 24.48 Mv = 0.1 + 5 2 2015 B = 24.62 B'= 24.49 Mv = 0.1 + 5 3 2015 B = 24.61 B'= 24.49 Mv = 0.1 + 5 4 2015 B = 24.60 B'= 24.50 Mv = 0.1 + 5 5 2015 B = 24.59 B'= 24.50 Mv = 0.1 + 5 6 2015 B = 24.58 B'= 24.51 Mv = 0.1 + 5 7 2015 B = 24.57 B'= 24.51 Mv = 0.1 + 5 8 2015 B = 24.56 B'= 24.52 Mv = 0.1 + 5 9 2015 B = 24.54 B'= 24.53 Mv = 0.1 + 5 10 2015 B = 24.53 B'= 24.53 Mv = 0.1 + 5 11 2015 B = 24.52 B'= 24.54 Mv = 0.1 + 5 12 2015 B = 24.51 B'= 24.54 Mv = 0.1 + 5 13 2015 B = 24.50 B'= 24.55 Mv = 0.1 + 5 14 2015 B = 24.49 B'= 24.56 Mv = 0.1 + 5 15 2015 B = 24.48 B'= 24.56 Mv = 0.1 + 5 16 2015 B = 24.47 B'= 24.57 Mv = 0.1 + 5 17 2015 B = 24.46 B'= 24.57 Mv = 0.0 + 5 18 2015 B = 24.45 B'= 24.58 Mv = 0.0 + 5 19 2015 B = 24.43 B'= 24.58 Mv = 0.0 + 5 20 2015 B = 24.42 B'= 24.59 Mv = 0.0 + 5 21 2015 B = 24.41 B'= 24.60 Mv = 0.0 + 5 22 2015 B = 24.40 B'= 24.60 Mv = 0.0 + 5 23 2015 B = 24.39 B'= 24.61 Mv = 0.0 + 5 24 2015 B = 24.38 B'= 24.61 Mv = 0.0 + 5 25 2015 B = 24.37 B'= 24.62 Mv = 0.0 + 5 26 2015 B = 24.36 B'= 24.62 Mv = 0.0 + 5 27 2015 B = 24.35 B'= 24.63 Mv = 0.0 + 5 28 2015 B = 24.33 B'= 24.64 Mv = 0.0 + 5 29 2015 B = 24.32 B'= 24.64 Mv = 0.1 + 5 30 2015 B = 24.31 B'= 24.65 Mv = 0.1 + 5 31 2015 B = 24.30 B'= 24.65 Mv = 0.1 + 6 1 2015 B = 24.29 B'= 24.66 Mv = 0.1 + 6 2 2015 B = 24.28 B'= 24.66 Mv = 0.1 + 6 3 2015 B = 24.27 B'= 24.67 Mv = 0.1 + 6 4 2015 B = 24.26 B'= 24.68 Mv = 0.1 + 6 5 2015 B = 24.25 B'= 24.68 Mv = 0.1 + 6 6 2015 B = 24.24 B'= 24.69 Mv = 0.1 + 6 7 2015 B = 24.23 B'= 24.69 Mv = 0.1 + 6 8 2015 B = 24.22 B'= 24.70 Mv = 0.1 + 6 9 2015 B = 24.21 B'= 24.70 Mv = 0.1 + 6 10 2015 B = 24.20 B'= 24.71 Mv = 0.1 + 6 11 2015 B = 24.19 B'= 24.71 Mv = 0.1 + 6 12 2015 B = 24.18 B'= 24.72 Mv = 0.1 + 6 13 2015 B = 24.17 B'= 24.73 Mv = 0.1 + 6 14 2015 B = 24.16 B'= 24.73 Mv = 0.1 + 6 15 2015 B = 24.15 B'= 24.74 Mv = 0.1 + 6 16 2015 B = 24.14 B'= 24.74 Mv = 0.2 + 6 17 2015 B = 24.14 B'= 24.75 Mv = 0.2 + 6 18 2015 B = 24.13 B'= 24.75 Mv = 0.2 + 6 19 2015 B = 24.12 B'= 24.76 Mv = 0.2 + 6 20 2015 B = 24.11 B'= 24.76 Mv = 0.2 + 6 21 2015 B = 24.10 B'= 24.77 Mv = 0.2 + 6 22 2015 B = 24.10 B'= 24.78 Mv = 0.2 + 6 23 2015 B = 24.09 B'= 24.78 Mv = 0.2 + 6 24 2015 B = 24.08 B'= 24.79 Mv = 0.2 + 6 25 2015 B = 24.07 B'= 24.79 Mv = 0.2 + 6 26 2015 B = 24.07 B'= 24.80 Mv = 0.2 + 6 27 2015 B = 24.06 B'= 24.80 Mv = 0.2 + 6 28 2015 B = 24.05 B'= 24.81 Mv = 0.2 + 6 29 2015 B = 24.05 B'= 24.81 Mv = 0.2 + 6 30 2015 B = 24.04 B'= 24.82 Mv = 0.2 + 7 1 2015 B = 24.04 B'= 24.82 Mv = 0.2 + 7 2 2015 B = 24.03 B'= 24.83 Mv = 0.3 + 7 3 2015 B = 24.03 B'= 24.84 Mv = 0.3 + 7 4 2015 B = 24.02 B'= 24.84 Mv = 0.3 + 7 5 2015 B = 24.02 B'= 24.85 Mv = 0.3 + 7 6 2015 B = 24.01 B'= 24.85 Mv = 0.3 + 7 7 2015 B = 24.01 B'= 24.86 Mv = 0.3 + 7 8 2015 B = 24.00 B'= 24.86 Mv = 0.3 + 7 9 2015 B = 24.00 B'= 24.87 Mv = 0.3 + 7 10 2015 B = 24.00 B'= 24.87 Mv = 0.3 + 7 11 2015 B = 24.00 B'= 24.88 Mv = 0.3 + 7 12 2015 B = 23.99 B'= 24.88 Mv = 0.3 + 7 13 2015 B = 23.99 B'= 24.89 Mv = 0.3 + 7 14 2015 B = 23.99 B'= 24.89 Mv = 0.3 + 7 15 2015 B = 23.99 B'= 24.90 Mv = 0.3 + 7 16 2015 B = 23.99 B'= 24.90 Mv = 0.3 + 7 17 2015 B = 23.98 B'= 24.91 Mv = 0.3 + 7 18 2015 B = 23.98 B'= 24.92 Mv = 0.3 + 7 19 2015 B = 23.98 B'= 24.92 Mv = 0.4 + 7 20 2015 B = 23.98 B'= 24.93 Mv = 0.4 + 7 21 2015 B = 23.98 B'= 24.93 Mv = 0.4 + 7 22 2015 B = 23.98 B'= 24.94 Mv = 0.4 + 7 23 2015 B = 23.98 B'= 24.94 Mv = 0.4 + 7 24 2015 B = 23.98 B'= 24.95 Mv = 0.4 + 7 25 2015 B = 23.99 B'= 24.95 Mv = 0.4 + 7 26 2015 B = 23.99 B'= 24.96 Mv = 0.4 + 7 27 2015 B = 23.99 B'= 24.96 Mv = 0.4 + 7 28 2015 B = 23.99 B'= 24.97 Mv = 0.4 + 7 29 2015 B = 23.99 B'= 24.97 Mv = 0.4 + 7 30 2015 B = 24.00 B'= 24.98 Mv = 0.4 + 7 31 2015 B = 24.00 B'= 24.98 Mv = 0.4 + 8 1 2015 B = 24.00 B'= 24.99 Mv = 0.4 + 8 2 2015 B = 24.01 B'= 24.99 Mv = 0.4 + 8 3 2015 B = 24.01 B'= 25.00 Mv = 0.4 + 8 4 2015 B = 24.02 B'= 25.00 Mv = 0.4 + 8 5 2015 B = 24.02 B'= 25.01 Mv = 0.4 + 8 6 2015 B = 24.03 B'= 25.01 Mv = 0.4 + 8 7 2015 B = 24.03 B'= 25.02 Mv = 0.4 + 8 8 2015 B = 24.04 B'= 25.02 Mv = 0.5 + 8 9 2015 B = 24.04 B'= 25.03 Mv = 0.5 + 8 10 2015 B = 24.05 B'= 25.04 Mv = 0.5 + 8 11 2015 B = 24.06 B'= 25.04 Mv = 0.5 + 8 12 2015 B = 24.06 B'= 25.05 Mv = 0.5 + 8 13 2015 B = 24.07 B'= 25.05 Mv = 0.5 + 8 14 2015 B = 24.08 B'= 25.06 Mv = 0.5 + 8 15 2015 B = 24.08 B'= 25.06 Mv = 0.5 + 8 16 2015 B = 24.09 B'= 25.07 Mv = 0.5 + 8 17 2015 B = 24.10 B'= 25.07 Mv = 0.5 + 8 18 2015 B = 24.11 B'= 25.08 Mv = 0.5 + 8 19 2015 B = 24.12 B'= 25.08 Mv = 0.5 + 8 20 2015 B = 24.13 B'= 25.09 Mv = 0.5 + 8 21 2015 B = 24.14 B'= 25.09 Mv = 0.5 + 8 22 2015 B = 24.15 B'= 25.10 Mv = 0.5 + 8 23 2015 B = 24.16 B'= 25.10 Mv = 0.5 + 8 24 2015 B = 24.17 B'= 25.11 Mv = 0.5 + 8 25 2015 B = 24.18 B'= 25.11 Mv = 0.5 + 8 26 2015 B = 24.19 B'= 25.12 Mv = 0.5 + 8 27 2015 B = 24.20 B'= 25.12 Mv = 0.5 + 8 28 2015 B = 24.21 B'= 25.13 Mv = 0.5 + 8 29 2015 B = 24.22 B'= 25.13 Mv = 0.5 + 8 30 2015 B = 24.23 B'= 25.14 Mv = 0.5 + 8 31 2015 B = 24.25 B'= 25.14 Mv = 0.5 + 9 1 2015 B = 24.26 B'= 25.15 Mv = 0.5 + 9 2 2015 B = 24.27 B'= 25.15 Mv = 0.5 + 9 3 2015 B = 24.28 B'= 25.16 Mv = 0.5 + 9 4 2015 B = 24.30 B'= 25.16 Mv = 0.5 + 9 5 2015 B = 24.31 B'= 25.17 Mv = 0.5 + 9 6 2015 B = 24.32 B'= 25.17 Mv = 0.5 + 9 7 2015 B = 24.34 B'= 25.18 Mv = 0.5 + 9 8 2015 B = 24.35 B'= 25.18 Mv = 0.6 + 9 9 2015 B = 24.36 B'= 25.19 Mv = 0.6 + 9 10 2015 B = 24.38 B'= 25.19 Mv = 0.6 + 9 11 2015 B = 24.39 B'= 25.20 Mv = 0.6 + 9 12 2015 B = 24.41 B'= 25.20 Mv = 0.6 + 9 13 2015 B = 24.42 B'= 25.21 Mv = 0.6 + 9 14 2015 B = 24.44 B'= 25.21 Mv = 0.6 + 9 15 2015 B = 24.45 B'= 25.21 Mv = 0.6 + 9 16 2015 B = 24.47 B'= 25.22 Mv = 0.6 + 9 17 2015 B = 24.48 B'= 25.22 Mv = 0.6 + 9 18 2015 B = 24.50 B'= 25.23 Mv = 0.6 + 9 19 2015 B = 24.51 B'= 25.23 Mv = 0.6 + 9 20 2015 B = 24.53 B'= 25.24 Mv = 0.6 + 9 21 2015 B = 24.55 B'= 25.24 Mv = 0.6 + 9 22 2015 B = 24.56 B'= 25.25 Mv = 0.6 + 9 23 2015 B = 24.58 B'= 25.25 Mv = 0.6 + 9 24 2015 B = 24.59 B'= 25.26 Mv = 0.6 + 9 25 2015 B = 24.61 B'= 25.26 Mv = 0.6 + 9 26 2015 B = 24.63 B'= 25.27 Mv = 0.6 + 9 27 2015 B = 24.64 B'= 25.27 Mv = 0.6 + 9 28 2015 B = 24.66 B'= 25.28 Mv = 0.6 + 9 29 2015 B = 24.68 B'= 25.28 Mv = 0.6 + 9 30 2015 B = 24.69 B'= 25.29 Mv = 0.6 +10 1 2015 B = 24.71 B'= 25.29 Mv = 0.6 +10 2 2015 B = 24.73 B'= 25.30 Mv = 0.6 +10 3 2015 B = 24.75 B'= 25.30 Mv = 0.6 +10 4 2015 B = 24.76 B'= 25.31 Mv = 0.6 +10 5 2015 B = 24.78 B'= 25.31 Mv = 0.6 +10 6 2015 B = 24.80 B'= 25.31 Mv = 0.6 +10 7 2015 B = 24.82 B'= 25.32 Mv = 0.6 +10 8 2015 B = 24.83 B'= 25.32 Mv = 0.6 +10 9 2015 B = 24.85 B'= 25.33 Mv = 0.6 +10 10 2015 B = 24.87 B'= 25.33 Mv = 0.6 +10 11 2015 B = 24.89 B'= 25.34 Mv = 0.6 +10 12 2015 B = 24.91 B'= 25.34 Mv = 0.6 +10 13 2015 B = 24.92 B'= 25.35 Mv = 0.6 +10 14 2015 B = 24.94 B'= 25.35 Mv = 0.6 +10 15 2015 B = 24.96 B'= 25.36 Mv = 0.6 +10 16 2015 B = 24.98 B'= 25.36 Mv = 0.6 +10 17 2015 B = 24.99 B'= 25.37 Mv = 0.6 +10 18 2015 B = 25.01 B'= 25.37 Mv = 0.6 +10 19 2015 B = 25.03 B'= 25.38 Mv = 0.6 +10 20 2015 B = 25.05 B'= 25.38 Mv = 0.6 +10 21 2015 B = 25.07 B'= 25.38 Mv = 0.6 +10 22 2015 B = 25.08 B'= 25.39 Mv = 0.6 +10 23 2015 B = 25.10 B'= 25.39 Mv = 0.6 +10 24 2015 B = 25.12 B'= 25.40 Mv = 0.6 +10 25 2015 B = 25.14 B'= 25.40 Mv = 0.5 +10 26 2015 B = 25.15 B'= 25.41 Mv = 0.5 +10 27 2015 B = 25.17 B'= 25.41 Mv = 0.5 +10 28 2015 B = 25.19 B'= 25.42 Mv = 0.5 +10 29 2015 B = 25.21 B'= 25.42 Mv = 0.5 +10 30 2015 B = 25.23 B'= 25.43 Mv = 0.5 +10 31 2015 B = 25.24 B'= 25.43 Mv = 0.5 +11 1 2015 B = 25.26 B'= 25.43 Mv = 0.5 +11 2 2015 B = 25.28 B'= 25.44 Mv = 0.5 +11 3 2015 B = 25.30 B'= 25.44 Mv = 0.5 +11 4 2015 B = 25.31 B'= 25.45 Mv = 0.5 +11 5 2015 B = 25.33 B'= 25.45 Mv = 0.5 +11 6 2015 B = 25.35 B'= 25.46 Mv = 0.5 +11 7 2015 B = 25.36 B'= 25.46 Mv = 0.5 +11 8 2015 B = 25.38 B'= 25.47 Mv = 0.5 +11 9 2015 B = 25.40 B'= 25.47 Mv = 0.5 +11 10 2015 B = 25.41 B'= 25.47 Mv = 0.5 +11 11 2015 B = 25.43 B'= 25.48 Mv = 0.5 +11 12 2015 B = 25.45 B'= 25.48 Mv = 0.5 +11 13 2015 B = 25.46 B'= 25.49 Mv = 0.5 +11 14 2015 B = 25.48 B'= 25.49 Mv = 0.5 +11 15 2015 B = 25.50 B'= 25.50 Mv = 0.5 +11 16 2015 B = 25.51 B'= 25.50 Mv = 0.5 +11 17 2015 B = 25.53 B'= 25.51 Mv = 0.5 +11 18 2015 B = 25.54 B'= 25.51 Mv = 0.5 +11 19 2015 B = 25.56 B'= 25.51 Mv = 0.5 +11 20 2015 B = 25.57 B'= 25.52 Mv = 0.5 +11 21 2015 B = 25.59 B'= 25.52 Mv = 0.5 +11 22 2015 B = 25.61 B'= 25.53 Mv = 0.5 +11 23 2015 B = 25.62 B'= 25.53 Mv = 0.5 +11 24 2015 B = 25.64 B'= 25.54 Mv = 0.5 +11 25 2015 B = 25.65 B'= 25.54 Mv = 0.5 +11 26 2015 B = 25.66 B'= 25.54 Mv = 0.5 +11 27 2015 B = 25.68 B'= 25.55 Mv = 0.4 +11 28 2015 B = 25.69 B'= 25.55 Mv = 0.4 +11 29 2015 B = 25.71 B'= 25.56 Mv = 0.4 +11 30 2015 B = 25.72 B'= 25.56 Mv = 0.4 +12 1 2015 B = 25.74 B'= 25.57 Mv = 0.4 +12 2 2015 B = 25.75 B'= 25.57 Mv = 0.4 +12 3 2015 B = 25.76 B'= 25.57 Mv = 0.4 +12 4 2015 B = 25.78 B'= 25.58 Mv = 0.4 +12 5 2015 B = 25.79 B'= 25.58 Mv = 0.5 +12 6 2015 B = 25.80 B'= 25.59 Mv = 0.5 +12 7 2015 B = 25.82 B'= 25.59 Mv = 0.5 +12 8 2015 B = 25.83 B'= 25.60 Mv = 0.5 +12 9 2015 B = 25.84 B'= 25.60 Mv = 0.5 +12 10 2015 B = 25.85 B'= 25.60 Mv = 0.5 +12 11 2015 B = 25.87 B'= 25.61 Mv = 0.5 +12 12 2015 B = 25.88 B'= 25.61 Mv = 0.5 +12 13 2015 B = 25.89 B'= 25.62 Mv = 0.5 +12 14 2015 B = 25.90 B'= 25.62 Mv = 0.5 +12 15 2015 B = 25.91 B'= 25.62 Mv = 0.5 +12 16 2015 B = 25.92 B'= 25.63 Mv = 0.5 +12 17 2015 B = 25.93 B'= 25.63 Mv = 0.5 +12 18 2015 B = 25.95 B'= 25.64 Mv = 0.5 +12 19 2015 B = 25.96 B'= 25.64 Mv = 0.5 +12 20 2015 B = 25.97 B'= 25.65 Mv = 0.5 +12 21 2015 B = 25.98 B'= 25.65 Mv = 0.5 +12 22 2015 B = 25.99 B'= 25.65 Mv = 0.5 +12 23 2015 B = 26.00 B'= 25.66 Mv = 0.5 +12 24 2015 B = 26.01 B'= 25.66 Mv = 0.5 +12 25 2015 B = 26.02 B'= 25.67 Mv = 0.5 +12 26 2015 B = 26.03 B'= 25.67 Mv = 0.5 +12 27 2015 B = 26.03 B'= 25.67 Mv = 0.5 +12 28 2015 B = 26.04 B'= 25.68 Mv = 0.5 +12 29 2015 B = 26.05 B'= 25.68 Mv = 0.5 +12 30 2015 B = 26.06 B'= 25.69 Mv = 0.5 +12 31 2015 B = 26.07 B'= 25.69 Mv = 0.5 + 1 1 2016 B = 26.08 B'= 25.69 Mv = 0.5 diff --git a/SKYTEL/scales.80 b/SKYTEL/scales.80 new file mode 100644 index 0000000..8e42fef --- /dev/null +++ b/SKYTEL/scales.80 @@ -0,0 +1,10 @@ +Please Enter SCALE LENGTH in mm - ? 250 + +Do you want the scale in Degrees or Hours and Minutes? + Please indicate 'd' for Degrees or 'h' for Hours... ? d + + + +Printing....... + +NOTE: This will take up to 90 seconds to print. diff --git a/SKYTEL/scales.INP b/SKYTEL/scales.INP new file mode 100644 index 0000000..d2500e5 --- /dev/null +++ b/SKYTEL/scales.INP @@ -0,0 +1,2 @@ +250 +d diff --git a/SKYTEL/scales.OUT b/SKYTEL/scales.OUT new file mode 100644 index 0000000..661ba4a --- /dev/null +++ b/SKYTEL/scales.OUT @@ -0,0 +1,10 @@ +Please Enter SCALE LENGTH in mm - ? 250 + +Do you want the scale in Degrees or Hours and Minutes? + Please indicate 'd' for Degrees or 'h' for Hours... ? d + + + +Printing....... + +NOTE: This will take up to 90 seconds to print. diff --git a/SKYTEL/scales.bas b/SKYTEL/scales.bas new file mode 100644 index 0000000..47482e7 --- /dev/null +++ b/SKYTEL/scales.bas @@ -0,0 +1,78 @@ +10 REM - THIS IS SCALES.BAS +20 CLS : A = 340: BT = 254: C = BT: DIV = 1: G = A: H1 = 7650: TICK = 127 +30 M = 1016: PLU = 40: CI = 360 +40 INPUT "Please Enter SCALE LENGTH in mm - "; S: S1 = S +50 IF S > 2000 THEN GOTO 400 +60 IF S1 > 250 THEN S1 = S1 - 250: DIV = DIV + 1: GOTO 60 +70 PRINT : PRINT "Do you want the scale in Degrees or Hours and Minutes?" +80 INPUT " Please indicate 'd' for Degrees or 'h' for Hours... "; A$: PRINT +90 IF A$ = "h" OR A$ = "H" THEN CI = 288: QQ = 1 +100 PRINT : PRINT : PRINT "Printing......." +110 PRINT : PRINT "NOTE: This will take up to 90 seconds to print." +120 S = S / DIV: SP = S * PLU: REM - Convert Scale Length to plotter units +130 REM - Clear, set into HP-GL/2 mode, and initialize the printer +140 LPRINT CHR$(27); "E": LPRINT CHR$(27); "%0B": LPRINT "IN;" +150 DEGREES = (SP / CI) * DIV: REM - Calculate the # of deg (or hrs) to print per column +160 LPRINT "SP1;": LPRINT "PW0;": REM - Select a pen and set the width +170 REM - Using the Scale Length per column, insert tick marks for the whole column +180 REM - there will be one Tick Mark for each degree +190 FOR Z = 1 TO DIV +200 A = A + Q +210 FOR I = 0 TO SP STEP DEGREES +220 LPRINT "PU;" +230 LPRINT "PA"; A + TICK; ","; C + I; ";" +240 LPRINT "PD;" +250 LPRINT "PA"; A + BT; ","; C + I; ";" +260 LPRINT "PU;" +270 P = P + 1: R = R + 1: T = T + 1 +280 IF QQ = 1 THEN GOTO 330 +290 IF T = 360 THEN T = 0 +300 IF P = 5 THEN GOSUB 540 +310 IF R = 10 THEN GOSUB 620 +320 GOTO 360 +330 IF T = 288 THEN T = 0 +340 IF P = 4 THEN GOSUB 540 +350 IF R = 12 THEN GOSUB 620 +360 NEXT I +370 A = 340: Q = Q + M +380 NEXT Z +390 GOTO 420 +400 PRINT : PRINT "Value is too high for this program," +410 PRINT " Please enter another SMALLER value": PRINT : GOTO 40: +420 REM - Draw registration dots at bottom of the scales +430 LPRINT "UL8,5,20,5,20,5,20,5,20;" +440 LPRINT "LT8;" +450 LPRINT "PU;" +460 LPRINT "PA"; G; ","; C - DEGREES; ";" +470 LPRINT "PD;" +480 LPRINT "PA"; H1; ","; C - DEGREES; ";" +490 LPRINT "PU;" +500 REM - Reset the Printer +510 LPRINT CHR$(27); "%0A": LPRINT CHR$(27); "E" +520 END +530 REM - "Make every fifth degree or 20th minute longer" SUB-ROUTINE +540 LPRINT "PU;" +550 LPRINT "PA"; A; ","; C + I; ";" +560 LPRINT "PD;" +570 LPRINT "PA"; A + BT; ","; C + I; ";" +580 LPRINT "PU;" +590 P = 0 +600 RETURN +610 REM - "Number the scales with degrees or hours" SUB-ROUTINE +620 LPRINT "SD1,21,2,1,4,10,7,4148;" +630 IF DIV > 2 THEN LPRINT "DI0,-1;": LPRINT "LO16;": GOTO 650 +640 LPRINT "LO18;" +650 LPRINT "DT*,1;" +660 LPRINT "PU;" +670 LPRINT "PA"; A; ","; C + I; ";" +680 IF QQ = 1 THEN LPRINT "LB"; (T / 12); "*;": GOTO 710 +690 LPRINT "PD;" +700 LPRINT "LB"; T; "*;" +710 LPRINT "PU;" +720 R = 0 +730 RETURN +900 REM ********************************************* +910 REM THIS PROGRAM BY RONALD KOCELA PRODUCES LINEAR +920 REM SETTING CIRCLE SCALES ON HP LASERJET PRINTERS +930 REM FROM SKY & TELESCOPE, MARCH 1996, PAGE 84. +940 REM ********************************************* diff --git a/SKYTEL/scales.dif b/SKYTEL/scales.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/scales.run b/SKYTEL/scales.run new file mode 100644 index 0000000..8e42fef --- /dev/null +++ b/SKYTEL/scales.run @@ -0,0 +1,10 @@ +Please Enter SCALE LENGTH in mm - ? 250 + +Do you want the scale in Degrees or Hours and Minutes? + Please indicate 'd' for Degrees or 'h' for Hours... ? d + + + +Printing....... + +NOTE: This will take up to 90 seconds to print. diff --git a/SKYTEL/shadow.80 b/SKYTEL/shadow.80 new file mode 100644 index 0000000..dbd6347 --- /dev/null +++ b/SKYTEL/shadow.80 @@ -0,0 +1,36 @@ +MOUNTAIN HEIGHT (FT)? 8765 +OBSERVER HEIGHT (FT)? 6 +HORIZON HEIGHT (FT) ? 2 +SLOPE ? 53 +SUN ALT? 34 +OBS'R AZ? 7 +999999999999999999999888888888888888888888888888999999999999 +999999999999999999998888888888888888888888888888899999999999 +999999999999999999988888888888888888888888888888889999999999 +999999999999999999888888888888888888888888888888888999999999 +999999999999999999888888888888888888888888888888888899999999 +999999999999999998888888888888888888888888888888888889999999 +999999999999999988888888888888888888888888888888888888999999 +999999999999999888888888888888888888888888888888888888899999 +999999999999998888888888888888888888888888888888888888889999 +999999999999988888888888888888888888888888888888888888888999 +999999999999888888888888888888888888888888888888888888888889 +999999999998888888888888888888888888888888888888888888888888 +999999999988888888888888888888888888888888888888888888888888 +999999999888888888888888888888888888888888888888888888888888 +999999988888888888888888888888888888888888888888888888888888 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 diff --git a/SKYTEL/shadow.INP b/SKYTEL/shadow.INP new file mode 100644 index 0000000..a2209b6 --- /dev/null +++ b/SKYTEL/shadow.INP @@ -0,0 +1,6 @@ +8765 +6 +2 +53 +34 +7 diff --git a/SKYTEL/shadow.OUT b/SKYTEL/shadow.OUT new file mode 100644 index 0000000..cca81fb --- /dev/null +++ b/SKYTEL/shadow.OUT @@ -0,0 +1,36 @@ +MOUNTAIN HEIGHT (FT)? 8765 +OBSERVER HEIGHT (FT)? 6 +HORIZON HEIGHT (FT) ? 2 +SLOPE ? 53 +SUN ALT? 34 +OBS'R AZ? 7 +999999999999999999999888888888888888888888888888999999999999 +999999999999999999998888888888888888888888888888899999999999 +999999999999999999988888888888888888888888888888889999999999 +999999999999999999888888888888888888888888888888888999999999 +999999999999999999888888888888888888888888888888888899999999 +999999999999999998888888888888888888888888888888888889999999 +999999999999999988888888888888888888888888888888888888999999 +999999999999999888888888888888888888888888888888888888899999 +999999999999998888888888888888888888888888888888888888889999 +999999999999988888888888888888888888888888888888888888888999 +999999999999888888888888888888888888888888888888888888888889 +999999999998888888888888888888888888888888888888888888888888 +999999999988888888888888888888888888888888888888888888888888 +999999999888888888888888888888888888888888888888888888888888 +999999988888888888888888888888888888888888888888888888888888 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 diff --git a/SKYTEL/shadow.bas b/SKYTEL/shadow.bas new file mode 100644 index 0000000..1709d01 --- /dev/null +++ b/SKYTEL/shadow.bas @@ -0,0 +1,68 @@ +10 REM MOUNTAIN SHADOWS +11 REM +12 DIM M(70): C=-0.4 +13 DR=2*3.14159265/360: FM=1/5280 +14 INPUT "MOUNTAIN HEIGHT (FT)";H1 +15 INPUT "OBSERVER HEIGHT (FT)";H0 +16 INPUT "HORIZON HEIGHT (FT) ";H +17 H1=H1*FM: H0=H0*FM: H=H*FM +18 INPUT "SLOPE ";S: S=S*DR +19 INPUT "SUN ALT";A: A=A*DR +20 INPUT "OBS'R AZ";Z: Z=Z*DR +21 E=0.30: B=0.005: B9=0.9+B +22 H9=60: V9=30: W=1*DR +23 S9=2.5*LOG(B9)/LOG(10) +24 S0=2.5*LOG(B)/LOG(10) +25 REM OBSERVER'S LOCATION +26 X0=COS(Z)*(H1-H0)/TAN(S) +27 Y0=SIN(Z)*(H0-H1)/TAN(S) +28 Z0=H0-H1 +29 REM SET UP GRID OF DIRECTIONS +30 FOR J=1 TO V9 +31 AL=W*(V9/2-J) +32 FOR I=1 TO H9 +33 AZ=W*(I-H9/2) +34 REM DISTANCE TO 'NORTH' SLOPE +35 REM SHADOW PLANE +36 A0=SQR(TAN(S)^2-TAN(A)^2) +37 A1=-1*TAN(AL)/COS(AZ)-TAN(A) +38 A2=A0*TAN(AZ) +39 A3=-X0*TAN(AL)/COS(AZ)-Z0 +40 A4=A0*(Y0+X0*TAN(AZ)) +41 XI=(A3+A4)/(A1+A2) +42 F1=0: D=TAN(AZ) +43 IF XI>=X0 THEN F1=1 +44 A5=1+D^2+(TAN(AL)/COS(AZ))^2 +45 D1=ABS(XI-X0)*SQR(A5) +46 REM DIST TO 'SOUTH' SLOPE +47 REM SHADOW PLANE +48 XI=(A3-A4)/(A1-A2) +49 F2=0 +50 IF XI>=X0 THEN F2=1 +51 D2=ABS(XI-X0)*SQR(A5) +52 REM DISTANCE TO HORIZON PLANE +53 F3=0: IF AL>=0 THEN F3=1 +54 D3=(H0-H)/SIN(ABS(AL)+0.001) +55 REM INTEGRATE ALONG ILLUMINATED +56 REM PORTION OF LINE OF SIGHT +57 D0=100*E +58 IF D1B9-B THEN B0=B9-B +65 G=S9-S0 +66 SK=2.5*LOG(B0+B)/LOG(10) +67 M(I)=INT(0.05+9.9*(SK-S0)/G) +68 NEXT I +69 FOR I9=1 TO H9 +70 PRINT RIGHT$(STR$(M(I9)),1); +71 NEXT I9: PRINT +72 NEXT J +73 END +74 REM ************************** +75 REM ASTRONOMICAL COMPUTING +76 REM SKY & TELESCOPE, APRIL 88 +77 REM ************************** diff --git a/SKYTEL/shadow.dif b/SKYTEL/shadow.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/shadow.run b/SKYTEL/shadow.run new file mode 100644 index 0000000..dbd6347 --- /dev/null +++ b/SKYTEL/shadow.run @@ -0,0 +1,36 @@ +MOUNTAIN HEIGHT (FT)? 8765 +OBSERVER HEIGHT (FT)? 6 +HORIZON HEIGHT (FT) ? 2 +SLOPE ? 53 +SUN ALT? 34 +OBS'R AZ? 7 +999999999999999999999888888888888888888888888888999999999999 +999999999999999999998888888888888888888888888888899999999999 +999999999999999999988888888888888888888888888888889999999999 +999999999999999999888888888888888888888888888888888999999999 +999999999999999999888888888888888888888888888888888899999999 +999999999999999998888888888888888888888888888888888889999999 +999999999999999988888888888888888888888888888888888888999999 +999999999999999888888888888888888888888888888888888888899999 +999999999999998888888888888888888888888888888888888888889999 +999999999999988888888888888888888888888888888888888888888999 +999999999999888888888888888888888888888888888888888888888889 +999999999998888888888888888888888888888888888888888888888888 +999999999988888888888888888888888888888888888888888888888888 +999999999888888888888888888888888888888888888888888888888888 +999999988888888888888888888888888888888888888888888888888888 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 diff --git a/SKYTEL/shower.80 b/SKYTEL/shower.80 new file mode 100644 index 0000000..cfe5270 --- /dev/null +++ b/SKYTEL/shower.80 @@ -0,0 +1,10 @@ +YEAR? 2015 +QU'DNTDS JAN 4.2 +LYRIDS APR 23.1 +ETA AQR MAY 5.9 +DLT AQR JUL 28.6 +PERSEIDS AUG 13.2 +ORIONIDS OCT 22.6 +TAURIDS NOV 3.9 +LEONIDS NOV 18.9 +GEMINIDS DEC 14.6 diff --git a/SKYTEL/shower.INP b/SKYTEL/shower.INP new file mode 100644 index 0000000..9b3c236 --- /dev/null +++ b/SKYTEL/shower.INP @@ -0,0 +1 @@ +2015 diff --git a/SKYTEL/shower.OUT b/SKYTEL/shower.OUT new file mode 100644 index 0000000..a683871 --- /dev/null +++ b/SKYTEL/shower.OUT @@ -0,0 +1,10 @@ +YEAR? 2015 +QU'DNTDS JAN 4.2 +LYRIDS APR 23.1 +ETA AQR MAY 5.9 +DLT AQR JUL 28.6 +PERSEIDS AUG 13.2 +ORIONIDS OCT 22.6 +TAURIDS NOV 3.9 +LEONIDS NOV 18.9 +GEMINIDS DEC 14.6 diff --git a/SKYTEL/shower.bas b/SKYTEL/shower.bas new file mode 100644 index 0000000..374e164 --- /dev/null +++ b/SKYTEL/shower.bas @@ -0,0 +1,67 @@ + 10 REM METEOR SHOWERS + 12 R1=3.1415927/180: DIM M$(12) + 14 DIM N$(9),S0(9),S1(9),J5(9) + 16 FOR I=1 TO 12: READ M$(I): NEXT + 18 DATA JAN,FEB,MAR,APR,MAY,JUN + 20 DATA JUL,AUG,SEP,OCT,NOV,DEC + 22 FOR I=1 TO 9 + 24 READ N$(I),S0(I),S1(I),J5(I) + 26 NEXT I + 28 INPUT "YEAR";Y: T5=(Y-1950)/100 + 30 FOR I=1 TO 9 + 32 IF ABS(T5)<1.5 THEN 36 + 34 IF I=1 OR I=4 OR I=9 THEN 70 + 36 S=S0(I)+S1(I)*T5 + 38 S=S+1.39663*T5+.0003*T5*T5 + 40 S=S-360*INT(S/360) + 42 J=J5(I)+36525.636*T5+S1(I)*T5 + 44 FOR K=1 TO 2 + 46 T=(J+2433000-2415020)/36525 + 48 L=279.7+36000.769*T+.0003*T*T + 50 M=358.48+35999.05*T-.0002*T*T + 52 S5=L+(1.92-.005*T)*SIN(M*R1) + 54 S5=S5+.02*SIN(2*M*R1) + 56 S5=S5-360*INT(S5/360) + 58 J=J-(S5-S)/(.986+.033*COS(M*R1)) + 60 NEXT K + 62 F=J-INT(J): J=INT(J)+2433000 + 64 GOSUB 96 + 66 PRINT N$(I);TAB(15);M$(M); + 68 PRINT USING "###.#";D + 70 NEXT I + 72 END + 74 REM SHOWER DATA + 76 DATA "QU'DNTDS",282.9,-0.4,285.3 + 78 DATA "LYRIDS ",31.7,0.06,393.9 + 80 DATA "ETA AQR ",44.0,0.3,406.6 + 82 DATA "DLT AQR ",125.0,-1.0,491.2 + 84 DATA "PERSEIDS",139.2,0.03,506.0 + 86 DATA "ORIONIDS",207.7,0.4,576.2 + 88 DATA "TAURIDS ",220.0,0.44,588.5 + 90 DATA "LEONIDS ",234.3,1.5,602.7 + 92 DATA "GEMINIDS",261.4,0,629.5 + 94 REM + 96 REM JD --> CALENDAR + 98 G=1: IF J<2299161 THEN G=0 + 100 F=F+.5: IF F<1 THEN 104 + 102 F=F-1: J=J+1 + 104 IF G=1 THEN 108 + 106 A=J: GOTO 112 + 108 A1=INT((J/36524.25)-51.12264) + 110 A=J+1+A1-INT(A1/4) + 112 B=A+1524 + 114 C=INT((B/365.25)-.3343) + 116 D=INT(365.25*C) + 118 E=INT((B-D)/30.61) + 120 D=B-D-INT(30.61*E)+F + 122 M=E-1: Y=C-4716 + 124 IF E>13.5 THEN M=M-12 + 126 IF M<2.5 THEN Y=Y+1 + 128 RETURN + 200 REM ******************************* + 210 REM FOR ANY GIVEN YEAR, THIS + 220 REM PROGRAM LISTS THE MAJOR METEOR + 230 REM SHOWERS AND THE UT DATES OF + 240 REM MAXIMUM ACTIVITY. FROM SKY + 250 REM & TELESCOPE, AUG '89, P. 195. + 260 REM ******************************* diff --git a/SKYTEL/shower.dif b/SKYTEL/shower.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/shower.run b/SKYTEL/shower.run new file mode 100644 index 0000000..cfe5270 --- /dev/null +++ b/SKYTEL/shower.run @@ -0,0 +1,10 @@ +YEAR? 2015 +QU'DNTDS JAN 4.2 +LYRIDS APR 23.1 +ETA AQR MAY 5.9 +DLT AQR JUL 28.6 +PERSEIDS AUG 13.2 +ORIONIDS OCT 22.6 +TAURIDS NOV 3.9 +LEONIDS NOV 18.9 +GEMINIDS DEC 14.6 diff --git a/SKYTEL/shuttr.80 b/SKYTEL/shuttr.80 new file mode 100644 index 0000000..7166739 --- /dev/null +++ b/SKYTEL/shuttr.80 @@ -0,0 +1,27 @@ +SELECT PHOTO METHOD-- + (A) PRIME FOCUS + (B) BARLOW PROJ. + (C) EYEPIECE PROJ. + (D) AFOCAL METHOD + (E) QUIT +? A + +OBJECTIVE F.L.? 7.89 +APERTURE? 1.23 + +EXAMPLE F/NUMBER? 2.5 +EXAMPLE FILM INDEX? 600 +EXAMPLE TIME? 360 + +YOUR FILM INDEX? 1200 + 1185.05 IS YOUR TIME + +NEXT? +SELECT PHOTO METHOD-- + (A) PRIME FOCUS + (B) BARLOW PROJ. + (C) EYEPIECE PROJ. + (D) AFOCAL METHOD + (E) QUIT +? E + diff --git a/SKYTEL/shuttr.INP b/SKYTEL/shuttr.INP new file mode 100644 index 0000000..f2c4df9 --- /dev/null +++ b/SKYTEL/shuttr.INP @@ -0,0 +1,9 @@ +A +7.89 +1.23 +2.5 +600 +360 +1200 + +E diff --git a/SKYTEL/shuttr.OUT b/SKYTEL/shuttr.OUT new file mode 100644 index 0000000..a5e8395 --- /dev/null +++ b/SKYTEL/shuttr.OUT @@ -0,0 +1,27 @@ +SELECT PHOTO METHOD-- + (A) PRIME FOCUS + (B) BARLOW PROJ. + (C) EYEPIECE PROJ. + (D) AFOCAL METHOD + (E) QUIT +? A + +OBJECTIVE F.L.? 7.89 +APERTURE? 1.23 + +EXAMPLE F/NUMBER? 2.5 +EXAMPLE FILM INDEX? 600 +EXAMPLE TIME? 360 + +YOUR FILM INDEX? 1200 + 1185.05 IS YOUR TIME + +NEXT? +SELECT PHOTO METHOD-- + (A) PRIME FOCUS + (B) BARLOW PROJ. + (C) EYEPIECE PROJ. + (D) AFOCAL METHOD + (E) QUIT +? E + diff --git a/SKYTEL/shuttr.bas b/SKYTEL/shuttr.bas new file mode 100644 index 0000000..0193f05 --- /dev/null +++ b/SKYTEL/shuttr.bas @@ -0,0 +1,54 @@ +100 REM SHUTTER SPEEDS +110 REM +120 PRINT "SELECT PHOTO METHOD--" +130 PRINT " (A) PRIME FOCUS" +140 PRINT " (B) BARLOW PROJ." +150 PRINT " (C) EYEPIECE PROJ." +160 PRINT " (D) AFOCAL METHOD" +170 PRINT " (E) QUIT" +180 INPUT A$: PRINT +190 IF A$="A" THEN 250 +200 IF A$="B" THEN 250 +210 IF A$="C" THEN 330 +220 IF A$="D" THEN 410 +230 IF A$="E" THEN END +240 GOTO 120 +250 REM CALCULATE F/NUMBER +260 INPUT "OBJECTIVE F.L.";A +270 INPUT "APERTURE";B +280 C=A/B: IF A$="A" THEN K=C +290 IF A$="A" THEN 470 +300 INPUT "BARLOW POWER";D +310 K=C*D: GOTO 470 +320 REM +330 REM EYEPIECE PROJECTION +340 PRINT "SPACE FROM EYEPIECE" +350 INPUT " TO FILM (INCHES)";A +360 INPUT "EYEPIECE F.L. (IN.)";B +370 INPUT "OBJECTIVE F.L.(IN.)";D +380 INPUT "APERTURE (IN.)";F +390 K=(A*D)/(B*F): GOTO 470 +400 REM +410 REM AFOCAL METHOD +420 INPUT "SCOPE POWER";A +430 INPUT "APERTURE (IN.)";D +440 INPUT "CAMERA F.L. (IN.)";B +450 C=A*B: K=C/D +460 REM +470 REM CALC. SHUTTER SPEEDS +480 PRINT +490 INPUT "EXAMPLE F/NUMBER";L +500 INPUT "EXAMPLE FILM INDEX";M +510 INPUT "EXAMPLE TIME";O +520 PRINT +530 INPUT "YOUR FILM INDEX";N +540 R=(K*K)/(L*L) +550 V=R*O*M/N +560 PRINT V;" IS YOUR TIME" +570 PRINT: INPUT "NEXT";A$ +580 GOTO 120 +590 REM ------------------------ +600 REM APPEARED IN ASTRONOMICAL +610 REM COMPUTING, SKY & TELE- +620 REM SCOPE, JUNE, 1985 +630 REM ------------------------ diff --git a/SKYTEL/shuttr.dif b/SKYTEL/shuttr.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/shuttr.run b/SKYTEL/shuttr.run new file mode 100644 index 0000000..7166739 --- /dev/null +++ b/SKYTEL/shuttr.run @@ -0,0 +1,27 @@ +SELECT PHOTO METHOD-- + (A) PRIME FOCUS + (B) BARLOW PROJ. + (C) EYEPIECE PROJ. + (D) AFOCAL METHOD + (E) QUIT +? A + +OBJECTIVE F.L.? 7.89 +APERTURE? 1.23 + +EXAMPLE F/NUMBER? 2.5 +EXAMPLE FILM INDEX? 600 +EXAMPLE TIME? 360 + +YOUR FILM INDEX? 1200 + 1185.05 IS YOUR TIME + +NEXT? +SELECT PHOTO METHOD-- + (A) PRIME FOCUS + (B) BARLOW PROJ. + (C) EYEPIECE PROJ. + (D) AFOCAL METHOD + (E) QUIT +? E + diff --git a/SKYTEL/solarecl.80 b/SKYTEL/solarecl.80 new file mode 100644 index 0000000..781670f --- /dev/null +++ b/SKYTEL/solarecl.80 @@ -0,0 +1,12 @@ +Total Solar Eclipse of July 11, 1991 + +North latitude (deg) ? 56 +East longitude (deg) ? 43 +Elevation (feet) ? 765 +Universal time (h,m)? 6,25 +No eclipse at this time +Universal time (h,m)? 11,37 +No eclipse at this time +Universal time (h,m)? 21,45 +Sun below horizon +Universal time (h,m)? 99,99 diff --git a/SKYTEL/solarecl.INP b/SKYTEL/solarecl.INP new file mode 100644 index 0000000..4414262 --- /dev/null +++ b/SKYTEL/solarecl.INP @@ -0,0 +1,7 @@ +56 +43 +765 +6,25 +11,37 +21,45 +99,99 diff --git a/SKYTEL/solarecl.OUT b/SKYTEL/solarecl.OUT new file mode 100644 index 0000000..4a8d372 --- /dev/null +++ b/SKYTEL/solarecl.OUT @@ -0,0 +1,12 @@ +Total Solar Eclipse of July 11, 1991 + +North latitude (deg) ? 56 +East longitude (deg) ? 43 +Elevation (feet) ? 765 +Universal time (h,m)? 6,25 +No eclipse at this time +Universal time (h,m)? 11,37 +No eclipse at this time +Universal time (h,m)? 21,45 +Sun below horizon +Universal time (h,m)? 99,99 diff --git a/SKYTEL/solarecl.bas b/SKYTEL/solarecl.bas new file mode 100644 index 0000000..b0f2497 --- /dev/null +++ b/SKYTEL/solarecl.bas @@ -0,0 +1,109 @@ +10 REM LOCAL CIRCUMSTANCES OF A +20 REM SOLAR ECLIPSE +30 REM +40 DEFDBL A-Z +50 GOSUB 760: PRINT D$: PRINT +60 GOSUB 630 +70 INPUT "Universal time (h,m)";HH,MM +80 IF HH=99 THEN 110 +90 UT=HH+MM/60: REM UT in hours +100 GOSUB 140: GOTO 70 +110 END +120 REM **** SUBROUTINES **** +130 REM +140 REM Compute details at time UT +150 T=UT+DT/3600-T0: REM "Element time" +160 X=FNX(T): REM x +170 Y=FNY(T): REM y +180 CD=FNC(T): REM cos(d) +190 SD=FNS(T): REM sin(d) +200 M=DR*FNM(T): REM mu +210 REM +220 REM Now find H.A. in radians +230 H=M+LO-DT/13713 +240 REM +250 REM Now find xi, eta, zeta +260 X8=P9*SIN(H) +270 Y8=P8*CD-P9*SD*COS(H) +280 Z8=P8*SD+P9*CD*COS(H) +290 U0=X-X8: REM u +300 V0=Y-Y8: REM v +310 L1=FNL1(T): REM l1 +320 L2=FNL2(T): REM l2 +330 W1=L1-Z8*F1: REM L1 +340 W2=L2-Z8*F2: REM L2 +350 REM +360 REM Magnitude +370 G1=SQR(U0*U0+V0*V0) +380 G=(W1-G1)/(W1+W2) +390 REM +400 REM Position angle +410 PA=RD*ATN(U0/V0) +420 IF V0<0 THEN PA=PA+180 +430 IF PA<0 THEN PA=PA+360 +440 IF PA>360 THEN PA=PA-360 +450 REM +460 REM Sun's altitude +470 A8=SD*SIN(LA) +480 A8=A8+CD*COS(LA)*COS(H) +490 AL=RD*ATN(A8/SQR(1-A8*A8)) +500 REM +505 REM +510 REM Print out a line of data +520 REM +530 UT=T-DT/3600+T0: REM "Element time" back to UT +540 UT=UT+.5/3600: REM Round to whole second +550 HH=INT(UT): M3=60*(UT-HH): MM=INT(M3) +560 SS=INT(60*(M3-MM)) +570 PA=INT(PA+.5): AR=INT(AL+.5): REM Whole degrees +580 IF AL<0 THEN PRINT "Sun below horizon": GOTO 610 +590 IF G<0 THEN PRINT "No eclipse at this time": GOTO 610 +600 PRINT USING A2$;HH;MM;SS;PA;AR;G +610 RETURN +620 REM +630 REM Geocentric Coordinates of Observer +640 REM +650 INPUT "North latitude (deg) ";LA +660 INPUT "East longitude (deg) ";LO +670 INPUT "Elevation (feet) ";EL +680 LA=LA*DR: LO=LO*DR: REM Lat, long in radians +690 EL=EL*12/39.37: REM Elevation in meters +700 U=ATN(.99664719#*TAN(LA)) +710 P8=.99664719#*SIN(U)+EL*SIN(LA)/6378140# +720 P9=COS(U)+EL*COS(LA)/6378140# +730 REM P8 = rho sin(phi'); P9 = rho cos(phi') +740 RETURN +750 REM +760 REM Constants +770 ' PI=3.141592653589793#: +775 DR=PI/180: RD=1/DR +780 A2$=" UT ##:##:## PA ### Alt ### Mag #.###" +790 REM +800 REM +810 REM Eclipse elements +820 D$="Total Solar Eclipse of July 11, 1991" +830 T0=16: REM Reference time (hr) +840 DT=0: REM Delta-T (sec) in sense ET-UT +850 DEF FNX(T)=-1.75954169#+T*(+.56710171#+T*(+4.902E-05-T*9.60E-06)) +860 DEF FNY(T)=+.42232901#+T*(-.13699808#+T*(-1.7527E-04+T*.0000025)) +870 DEF FNS(T)=+.37643393#+T*(-8.389E-05+T*(-.0000001)) +880 DEF FNC(T)=+.92644352#+T*(+3.404E-05+T*(+4E-08)) +890 DEF FNM(T)=58.6389581#+T*(15.0000486#+T*(+1.65E-06-T*2E-08)) +900 DEF FNL1(T)=.53024501#+T*(+1.0153E-04+T*(-1.278E-05)) +910 DEF FNL2(T)=-.01606+T*(.000101+T*(-1.272E-05)) +920 F1=.004599: REM tan(f1) +930 F2=.004576: REM tan(f2) +940 M1=.2618: REM mu' (radians/hr) +950 D1=-.000091: REM d' (radians/hr) +960 RETURN +1000 REM For the partial and total phases of the July 11, 1991, +1010 REM solar eclipse, when you enter a series of Universal times, +1020 REM this program computes the position angle of the Moon's +1030 REM center from the Sun, the Sun's altitude, and the "magnitude" +1040 REM of the eclipse (that is, the fraction of the solar disk +1050 REM diameter that is hidden). When entering your longitude and +1060 REM longitude, use positive degrees for north latitude and +1070 REM *negative* degrees for west longitude. The results of this +1080 REM program agree exactly with those published by the U. S. Naval +1090 REM Observatory in its eclipse circular. The program was written +1100 REM by Roger W. Sinnott. diff --git a/SKYTEL/solarecl.dif b/SKYTEL/solarecl.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/solarecl.run b/SKYTEL/solarecl.run new file mode 100644 index 0000000..781670f --- /dev/null +++ b/SKYTEL/solarecl.run @@ -0,0 +1,12 @@ +Total Solar Eclipse of July 11, 1991 + +North latitude (deg) ? 56 +East longitude (deg) ? 43 +Elevation (feet) ? 765 +Universal time (h,m)? 6,25 +No eclipse at this time +Universal time (h,m)? 11,37 +No eclipse at this time +Universal time (h,m)? 21,45 +Sun below horizon +Universal time (h,m)? 99,99 diff --git a/SKYTEL/space.80 b/SKYTEL/space.80 new file mode 100644 index 0000000..c67c023 --- /dev/null +++ b/SKYTEL/space.80 @@ -0,0 +1,15 @@ +R.A. (H,M)? 5,34 +ANNUAL PM (SEC)? 7 +DEC. (D,M)? 9,32 +ANNUAL PM (ARCSEC)? 8 +R.V. (KM/SEC)? 2345 +DISTANCE (LY)? 2.1 +MAGNITUDE? 8.9 + +YEARS FROM PRESENT? 1 +R.A. (HOURS) 5.5686 +DEC. (DEGREES) 9.53555 +DISTANCE 2.10782 +MAGNITUDE 8.90807 + +AGAIN (Y OR N)? N diff --git a/SKYTEL/space.INP b/SKYTEL/space.INP new file mode 100644 index 0000000..2b72b90 --- /dev/null +++ b/SKYTEL/space.INP @@ -0,0 +1,9 @@ +5,34 +7 +9,32 +8 +2345 +2.1 +8.9 +1 +N diff --git a/SKYTEL/space.OUT b/SKYTEL/space.OUT new file mode 100644 index 0000000..80c718b --- /dev/null +++ b/SKYTEL/space.OUT @@ -0,0 +1,15 @@ +R.A. (H,M)? 5,34 +ANNUAL PM (SEC)? 7 +DEC. (D,M)? 9,32 +ANNUAL PM (ARCSEC)? 8 +R.V. (KM/SEC)? 2345 +DISTANCE (LY)? 2.1 +MAGNITUDE? 8.9 + +YEARS FROM PRESENT? 1 +R.A. (HOURS) 5.5686 +DEC. (DEGREES) 9.53555 +DISTANCE 2.10782 +MAGNITUDE 8.90807 + +AGAIN (Y OR N)? N diff --git a/SKYTEL/space.bas b/SKYTEL/space.bas new file mode 100644 index 0000000..54f45f0 --- /dev/null +++ b/SKYTEL/space.bas @@ -0,0 +1,54 @@ +10 REM SPACE MOTION OF A STAR +12 REM +14 P1=3.14159265 +16 INPUT "R.A. (H,M)";H,M +18 A=(H+M/60)*15*P1/180 +20 INPUT "ANNUAL PM (SEC)";DA +22 INPUT "DEC. (D,M)";D$,M +24 D=ABS(VAL(D$)): S=1 +26 IF LEFT$(D$,1)="-" THEN S=-1 +28 D=S*(D+M/60)*P1/180 +30 INPUT "ANNUAL PM (ARCSEC)";DD +32 DA=DA/13751: DD=DD/206265 +34 INPUT "R.V. (KM/SEC)";DR +36 DR=DR/977820 +38 INPUT "DISTANCE (LY)";R +40 R=R/3.2616: REM LY TO PARSECS +42 INPUT "MAGNITUDE";M0 +44 X=R*COS(D)*COS(A) +46 Y=R*COS(D)*SIN(A) +48 Z=R*SIN(D) +50 DX=(X/R)*DR-Z*COS(A)*DD-Y*DA +52 DY=(Y/R)*DR-Z*SIN(A)*DD+X*DA +54 DZ=(Z/R)*DR+R*COS(D)*DD +56 REM +58 PRINT: REM LOOP +60 INPUT "YEARS FROM PRESENT";T +62 X1=X+T*DX:Y1=Y+T*DY:Z1=Z+T*DZ +64 R1=SQR(X1*X1+Y1*Y1+Z1*Z1) +66 B=(R1/R)*(R1/R) +68 M1=M0+2.5*LOG(B)/LOG(10) +70 S5=Z1/R1: C5=SQR(1-S5*S5) +72 D1=ATN(S5/C5)*180/P1 +74 A1=ATN(Y1/X1)*180/(P1*15) +76 IF X1<0 THEN A1=A1+12 +78 IF A1>24 THEN A1=A1-24 +80 IF A1<0 THEN A1=A1+24 +82 PRINT "R.A. (HOURS) ";A1 +84 PRINT "DEC. (DEGREES)";D1 +86 PRINT "DISTANCE ";R1*3.2616 +88 PRINT "MAGNITUDE ";M1 +90 PRINT +92 INPUT "AGAIN (Y OR N)";Q$ +94 IF Q$<>"N" THEN 58 +96 END +100 REM ************************ +110 REM THIS PROGRAM USES A STAR'S +120 REM CURRENT POSITION, PROPER +130 REM MOTION, DISTANCE, AND BRIGHT- +140 REM NESS TO COMPUTE ITS PATH +150 REM ACROSS THE SKY IN THE REMOTE +160 REM PAST OR FUTURE. DESCRIBED IN +170 REM SKY & TELESCOPE MAGAZINE FOR +180 REM MAY, 1989, PAGE 531. +190 REM ************************* diff --git a/SKYTEL/space.dif b/SKYTEL/space.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/space.run b/SKYTEL/space.run new file mode 100644 index 0000000..c67c023 --- /dev/null +++ b/SKYTEL/space.run @@ -0,0 +1,15 @@ +R.A. (H,M)? 5,34 +ANNUAL PM (SEC)? 7 +DEC. (D,M)? 9,32 +ANNUAL PM (ARCSEC)? 8 +R.V. (KM/SEC)? 2345 +DISTANCE (LY)? 2.1 +MAGNITUDE? 8.9 + +YEARS FROM PRESENT? 1 +R.A. (HOURS) 5.5686 +DEC. (DEGREES) 9.53555 +DISTANCE 2.10782 +MAGNITUDE 8.90807 + +AGAIN (Y OR N)? N diff --git a/SKYTEL/sphe.80 b/SKYTEL/sphe.80 new file mode 100644 index 0000000..2fb1208 --- /dev/null +++ b/SKYTEL/sphe.80 @@ -0,0 +1,14 @@ +WHICH DO YOU WANT -- + (1) SAGITTA + (2) RADIUS OF CURV. + (3) SPHEROMETER SPAN +? 2 +SPHEROMETER SPAN? 9876 +BALL DIAMETER ? 54 +TYPE OF SURFACE -- + (1) CONCAVE + (2) CONVEX +? 1 +MEASURED SAGITTA? 1234 +RADIUS OF CURVATURE 10524. +MIRROR F.L. 5262. diff --git a/SKYTEL/sphe.INP b/SKYTEL/sphe.INP new file mode 100644 index 0000000..010880a --- /dev/null +++ b/SKYTEL/sphe.INP @@ -0,0 +1,5 @@ +2 +9876 +54 +1 +1234 diff --git a/SKYTEL/sphe.OUT b/SKYTEL/sphe.OUT new file mode 100644 index 0000000..9801631 --- /dev/null +++ b/SKYTEL/sphe.OUT @@ -0,0 +1,14 @@ +WHICH DO YOU WANT -- + (1) SAGITTA + (2) RADIUS OF CURV. + (3) SPHEROMETER SPAN +? 2 +SPHEROMETER SPAN? 9876 +BALL DIAMETER ? 54 +TYPE OF SURFACE -- + (1) CONCAVE + (2) CONVEX +? 1 +MEASURED SAGITTA? 1234 +RADIUS OF CURVATURE 10524. +MIRROR F.L. 5262. diff --git a/SKYTEL/sphe.bas b/SKYTEL/sphe.bas new file mode 100644 index 0000000..314f65a --- /dev/null +++ b/SKYTEL/sphe.bas @@ -0,0 +1,47 @@ +10 REM SPHEROMETER PROGRAM +12 REM +14 PRINT "WHICH DO YOU WANT --" +16 PRINT " (1) SAGITTA" +18 PRINT " (2) RADIUS OF CURV." +20 PRINT " (3) SPHEROMETER SPAN" +22 INPUT Q +24 IF Q<1 OR Q>3 THEN 22 +26 IF Q=3 THEN 30 +28 INPUT "SPHEROMETER SPAN";C +30 INPUT "BALL DIAMETER ";B +32 PRINT "TYPE OF SURFACE --" +34 PRINT " (1) CONCAVE" +36 PRINT " (2) CONVEX" +38 INPUT T +40 IF T<>1 AND T<>2 THEN 38 +42 IF T=2 THEN T=-1 +44 IF Q=1 THEN 50 +46 INPUT "MEASURED SAGITTA";S +48 IF Q=2 THEN 52 +50 INPUT "RADIUS OF CURVATURE";R +52 IF Q=1 AND R>0 AND C>0 THEN 62 +54 IF Q=2 AND S>0 AND C>0 THEN 72 +56 IF Q=3 AND R>0 AND S>0 THEN 86 +58 PRINT "INPUT ERROR": GOTO 14 +60 REM +62 REM COMPUTE THE SAGITTA +64 R=R-T*B/2: S=R-SQR(R*R-C*C/4) +66 PRINT "SAGITTA FOR SPHERE ";S +68 GOTO 92 +70 REM +72 REM COMPUTE THE R.O.C. +74 R=(C*C/4+S*S)/(2*S)+T*B/2 +76 PRINT "RADIUS OF CURVATURE ";R +78 IF T=-1 THEN 82 +80 PRINT "MIRROR F.L. ";R/2 +82 GOTO 92 +84 REM +86 REM COMPUTE THE SPAN +88 R=R-T*B/2: C=2*SQR(2*R*S+S*S) +90 PRINT "SPHEROMETER SPAN ";C +92 END +100 REM ============================== +110 REM FROM SKY & TELESCOPE'S ASTRO- +120 REM COMPUTING DEPARTMENT FOR +130 REM SEPTEMBER, 1986, PAGE 278 +140 REM ============================= diff --git a/SKYTEL/sphe.dif b/SKYTEL/sphe.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/sphe.run b/SKYTEL/sphe.run new file mode 100644 index 0000000..2fb1208 --- /dev/null +++ b/SKYTEL/sphe.run @@ -0,0 +1,14 @@ +WHICH DO YOU WANT -- + (1) SAGITTA + (2) RADIUS OF CURV. + (3) SPHEROMETER SPAN +? 2 +SPHEROMETER SPAN? 9876 +BALL DIAMETER ? 54 +TYPE OF SURFACE -- + (1) CONCAVE + (2) CONVEX +? 1 +MEASURED SAGITTA? 1234 +RADIUS OF CURVATURE 10524. +MIRROR F.L. 5262. diff --git a/SKYTEL/stay.80 b/SKYTEL/stay.80 new file mode 100644 index 0000000..df261ba --- /dev/null +++ b/SKYTEL/stay.80 @@ -0,0 +1,4 @@ +PERIHELION DIST. ? 987 +ECCENTRICITY ? 0.123 + +DAYS: 0 diff --git a/SKYTEL/stay.INP b/SKYTEL/stay.INP new file mode 100644 index 0000000..e75a0ac --- /dev/null +++ b/SKYTEL/stay.INP @@ -0,0 +1,2 @@ +987 +0.123 diff --git a/SKYTEL/stay.OUT b/SKYTEL/stay.OUT new file mode 100644 index 0000000..37fe325 --- /dev/null +++ b/SKYTEL/stay.OUT @@ -0,0 +1,4 @@ +PERIHELION DIST. ? 987 +ECCENTRICITY ? 0.123 + +DAYS: 0 diff --git a/SKYTEL/stay.bas b/SKYTEL/stay.bas new file mode 100644 index 0000000..21b6567 --- /dev/null +++ b/SKYTEL/stay.bas @@ -0,0 +1,45 @@ +10 REM LENGTH OF STAY +12 REM INSIDE 1 A.U. +14 REM +16 K=0.01720209895 +18 P=3.1415926536 +20 INPUT "PERIHELION DIST. ";Q +22 INPUT "ECCENTRICITY ";E +24 PRINT +26 T=0 +28 IF E>1 OR E<0 THEN 22 +30 IF Q>=1 THEN 78 +32 IF Q<0.0046524 THEN 82 +34 IF E<1 THEN 54 +36 REM +38 REM PARABOLIC CASE +40 REM +42 T2=1/Q-1 +44 T1=SQR(T2) +46 Q3=Q*Q*Q +48 T=SQR(2*Q3)*(3*T1+T1*T2)/(3*K) +50 GOTO 78 +52 REM +54 REM ELLIPTICAL CASE +56 REM +58 IF E=0 THEN 86 +60 IF Q*(1+E)/(1-E)<=1 THEN 86 +62 A=Q/(1-E) +64 C=(A-1)/(A*E) +66 IF C<>0 THEN 70 +68 E1=P/2: GOTO 76 +70 S=SQR(1-C*C) +72 E1=ATN(S/C) +74 IF C<0 THEN E1=E1+P +76 T=A*SQR(A)*(E1-E*SIN(E1))/K +78 PRINT "DAYS: ";2*T +80 GOTO 88 +82 PRINT "COLLISION WITH SUN" +84 GOTO 88 +86 PRINT "ALWAYS INSIDE 1 A.U." +88 END +90 REM ------------------------ +92 REM APPEARED IN ASTRONOMICAL +94 REM COMPUTING, SKY & TELE- +96 REM SCOPE, JULY, 1984 +98 REM ------------------------ diff --git a/SKYTEL/stay.dif b/SKYTEL/stay.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/stay.run b/SKYTEL/stay.run new file mode 100644 index 0000000..df261ba --- /dev/null +++ b/SKYTEL/stay.run @@ -0,0 +1,4 @@ +PERIHELION DIST. ? 987 +ECCENTRICITY ? 0.123 + +DAYS: 0 diff --git a/SKYTEL/steppr.80 b/SKYTEL/steppr.80 new file mode 100644 index 0000000..f262bff --- /dev/null +++ b/SKYTEL/steppr.80 @@ -0,0 +1,76 @@ +START, STOP ? 13,87 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 diff --git a/SKYTEL/steppr.INP b/SKYTEL/steppr.INP new file mode 100644 index 0000000..c1efc75 --- /dev/null +++ b/SKYTEL/steppr.INP @@ -0,0 +1 @@ +13,87 diff --git a/SKYTEL/steppr.OUT b/SKYTEL/steppr.OUT new file mode 100644 index 0000000..62d171a --- /dev/null +++ b/SKYTEL/steppr.OUT @@ -0,0 +1,76 @@ +START, STOP ? 13,87 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 diff --git a/SKYTEL/steppr.bas b/SKYTEL/steppr.bas new file mode 100644 index 0000000..1701979 --- /dev/null +++ b/SKYTEL/steppr.bas @@ -0,0 +1,21 @@ +1 SUB POKE( X, Y ) +2 PRINT "Address=";X,"Byte=";Y +3 END SUB +4 ' --------------------------- +10 REM STEPPER-MOTOR DEMO +15 REM +20 X=49152: REM PORT ADDRESS +25 DATA 9,1,3,2,6,4,12,8 +30 DIM A(8) +35 FOR I=0 TO 7: READ A(I): NEXT I +40 INPUT "START, STOP ";C,D +45 FOR J=C TO D STEP SGN(D-C) +50 K=8*((J/8)-INT(J/8)) +55 POKE X,A(K) +60 NEXT J +65 END +70 REM ------------------------ +80 REM APPEARED IN ASTRONOMICAL +90 REM COMPUTING, SKY & TELE- +95 REM SCOPE, APRIL, 1985 +99 REM ------------------------ diff --git a/SKYTEL/steppr.dif b/SKYTEL/steppr.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/steppr.run b/SKYTEL/steppr.run new file mode 100644 index 0000000..f262bff --- /dev/null +++ b/SKYTEL/steppr.run @@ -0,0 +1,76 @@ +START, STOP ? 13,87 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 +Address= 49152 Byte= 9 +Address= 49152 Byte= 1 +Address= 49152 Byte= 3 +Address= 49152 Byte= 2 +Address= 49152 Byte= 6 +Address= 49152 Byte= 4 +Address= 49152 Byte= 12 +Address= 49152 Byte= 8 diff --git a/SKYTEL/stereo.80 b/SKYTEL/stereo.80 new file mode 100644 index 0000000..4bd9cf3 --- /dev/null +++ b/SKYTEL/stereo.80 @@ -0,0 +1,19 @@ +RADIUS ? 987 +LAT, LONG ? 123,87 +LST (H,M,S) ? 11,22,33 +OBJECT NAME ? ABC +RA (H,M,S) ? 9,8,7 +DEC (D,M,S) ? 6,5,4 + +ABC + X= 851.67 Y= -1164.05 + +STARS + X= 722.582 Y= -183.707 + X= 619.717 Y= -183.827 + X= 686.644 Y= 14.517 + X= 677.605 Y= 35.232 + X= 646.6 Y= 12.018 + X= 651.241 Y= 26.432 + X= 650.745 Y= 37.205 + X= 665.733 Y= 58.377 diff --git a/SKYTEL/stereo.INP b/SKYTEL/stereo.INP new file mode 100644 index 0000000..50e467b --- /dev/null +++ b/SKYTEL/stereo.INP @@ -0,0 +1,6 @@ +987 +123,87 +11,22,33 +ABC +9,8,7 +6,5,4 diff --git a/SKYTEL/stereo.OUT b/SKYTEL/stereo.OUT new file mode 100644 index 0000000..40fe92d --- /dev/null +++ b/SKYTEL/stereo.OUT @@ -0,0 +1,19 @@ +RADIUS ? 987 +LAT, LONG ? 123,87 +LST (H,M,S) ? 11,22,33 +OBJECT NAME ? ABC +RA (H,M,S) ? 9,8,7 +DEC (D,M,S) ? 6,5,4 + +ABC + X= 851.67 Y= -1164.05 + +STARS + X= 722.582 Y= -183.707 + X= 619.717 Y= -183.827 + X= 686.644 Y= 14.517 + X= 677.605 Y= 35.232 + X= 646.6 Y= 12.018 + X= 651.241 Y= 26.432 + X= 650.745 Y= 37.205 + X= 665.733 Y= 58.377 diff --git a/SKYTEL/stereo.bas b/SKYTEL/stereo.bas new file mode 100644 index 0000000..00b57d6 --- /dev/null +++ b/SKYTEL/stereo.bas @@ -0,0 +1,64 @@ +1 REM STEREOGRAPHIC SKY PROJECTION +2 P=3.14159265: R1=P/180 +3 INPUT "RADIUS ";K +4 INPUT "LAT, LONG ";B,L +5 REM W LONG NEG, E LONG POSITIVE +6 B=B*R1: L=L*R1 +7 INPUT "LST (H,M,S) ";A$,A2,A3 +8 GOSUB 72: T=A*15*R1-L +10 INPUT "OBJECT NAME ";B$ +12 INPUT "RA (H,M,S) ";A$,A2,A3 +14 GOSUB 72: R=A*15*R1 +16 INPUT "DEC (D,M,S) ";A$,A2,A3 +17 GOSUB 72: D=A*R1 +18 PRINT: PRINT B$ +19 GOSUB 32: GOSUB 100 +20 PRINT: PRINT "STARS" +21 N=8: REM NUMBER OF STARS +22 FOR I=1 TO N +23 READ R,D +24 R=R*15*R1: D=D*R1 +25 GOSUB 32: GOSUB 100 +26 NEXT I +29 END +30 REM ALTITUDE AND AZIMUTH +32 T5=T-R+L: REM LOCAL HR ANGLE +34 S1=SIN(B)*SIN(D) +36 S1=S1+COS(B)*COS(D)*COS(T5) +38 C1=1-S1*S1 +40 IF C1>0 THEN C1=SQR(C1) +42 IF C1<=0 THEN 46 +44 H=ATN(S1/C1): GOTO 48 +46 H=SGN(S1)*P/2 +48 C2=COS(B)*SIN(D) +50 C2=C2-SIN(B)*COS(D)*COS(T5) +52 S2=-COS(D)*SIN(T5) +54 IF C2=0 THEN A=SGN(S2)*P/2 +56 IF C2=0 THEN 62 +58 A=ATN(S2/C2) +60 IF C2<0 THEN A=A+P +62 IF A<0 THEN A=A+2*P +70 RETURN +72 REM SEXAGESIMAL TO DECIMAL +76 S=1: A1=ABS(VAL(A$)) +78 IF LEFT$(A$,1)="-" THEN S=-1 +80 A=S*(A1+A2/60+A3/3600) +82 RETURN +100 REM STEREOGRAPHIC PROJECTION +105 REM H=ALTITUDE, A=AZIMUTH +110 Q=P/4-H/2 +115 X=K*SIN(Q)/COS(Q)*SIN(2*P-A) +120 Y=K*SIN(Q)/COS(Q)*COS(2*P-A) +125 PRINT " X= ";INT(X*1000)/1000; +126 PRINT " Y= ";INT(Y*1000)/1000 +130 RETURN +200 REM STAR DATA FOR TAURUS +205 REM RA, DEC +210 DATA 5.58, 21.0, 5.38, 28.5 +215 DATA 4.55, 16.3, 4.43, 15.9 +220 DATA 4.43, 19.0, 4.38, 18.0 +225 DATA 4.33, 17.5, 4.29, 15.5 +230 REM ************************ +235 REM FROM SKY & TELESCOPE, +240 REM OCTOBER, 1987, P. 408 +245 REM ************************ diff --git a/SKYTEL/stereo.dif b/SKYTEL/stereo.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/stereo.run b/SKYTEL/stereo.run new file mode 100644 index 0000000..4bd9cf3 --- /dev/null +++ b/SKYTEL/stereo.run @@ -0,0 +1,19 @@ +RADIUS ? 987 +LAT, LONG ? 123,87 +LST (H,M,S) ? 11,22,33 +OBJECT NAME ? ABC +RA (H,M,S) ? 9,8,7 +DEC (D,M,S) ? 6,5,4 + +ABC + X= 851.67 Y= -1164.05 + +STARS + X= 722.582 Y= -183.707 + X= 619.717 Y= -183.827 + X= 686.644 Y= 14.517 + X= 677.605 Y= 35.232 + X= 646.6 Y= 12.018 + X= 651.241 Y= 26.432 + X= 650.745 Y= 37.205 + X= 665.733 Y= 58.377 diff --git a/SKYTEL/sunshine.80 b/SKYTEL/sunshine.80 new file mode 100644 index 0000000..f7490b8 --- /dev/null +++ b/SKYTEL/sunshine.80 @@ -0,0 +1,7 @@ +LATITUDE (DEGREES)? 38 +START DAY IN 1986 ? 74 +END DAY IN 1986 ? 91 + +SUNSHINE = + 13246 MINUTES + 221 HOURS diff --git a/SKYTEL/sunshine.INP b/SKYTEL/sunshine.INP new file mode 100644 index 0000000..9738964 --- /dev/null +++ b/SKYTEL/sunshine.INP @@ -0,0 +1,3 @@ +38 +74 +91 diff --git a/SKYTEL/sunshine.OUT b/SKYTEL/sunshine.OUT new file mode 100644 index 0000000..33fe584 --- /dev/null +++ b/SKYTEL/sunshine.OUT @@ -0,0 +1,7 @@ +LATITUDE (DEGREES)? 38 +START DAY IN 1986 ? 74 +END DAY IN 1986 ? 91 + +SUNSHINE = + 13246 MINUTES + 221 HOURS diff --git a/SKYTEL/sunshine.bas b/SKYTEL/sunshine.bas new file mode 100644 index 0000000..9d50945 --- /dev/null +++ b/SKYTEL/sunshine.bas @@ -0,0 +1,41 @@ +10 REM SUNSHINE +12 REM +14 P=3.14159265: R=P/180 +16 INPUT "LATITUDE (DEGREES)";F +18 F=F*R +20 S=SIN(F): C=COS(F) +22 INPUT "START DAY IN 1986 ";J1 +24 INPUT "END DAY IN 1986 ";J2 +26 IF J21 THEN 70 +56 Z=Z+1440: GOTO 70 +58 F=0.9043+0.03023*COS(M) +60 F=F/(1-0.15825*SIN(L)*SIN(L)) +62 A=ATN(SQR(1-U*U)/U) +64 A=A/R +66 IF U<0 THEN A=A+180 +68 Z=Z+2880*A/(360.985647-F) +70 NEXT D +72 PRINT +74 PRINT "SUNSHINE = " +76 PRINT INT(Z+0.5);" MINUTES" +78 PRINT INT((Z+30)/60);" HOURS" +80 END +85 REM ------------------------ +88 REM APPEARED IN ASTRONOMICAL +89 REM COMPUTING, SKY & TELE- +90 REM SCOPE, SEPTERMBER, 1984 +92 REM ------------------------ diff --git a/SKYTEL/sunshine.dif b/SKYTEL/sunshine.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/sunshine.run b/SKYTEL/sunshine.run new file mode 100644 index 0000000..f7490b8 --- /dev/null +++ b/SKYTEL/sunshine.run @@ -0,0 +1,7 @@ +LATITUDE (DEGREES)? 38 +START DAY IN 1986 ? 74 +END DAY IN 1986 ? 91 + +SUNSHINE = + 13246 MINUTES + 221 HOURS diff --git a/SKYTEL/suntan.80 b/SKYTEL/suntan.80 new file mode 100644 index 0000000..0f032ff --- /dev/null +++ b/SKYTEL/suntan.80 @@ -0,0 +1,32 @@ +Latitude in degrees? 45 +Month (1-12)? 6 +Hours from local noon? 2 +Height above sea level (feet)? 5432 +Aerosol extinction (V mag/airmass)? 2.2 +Surface albedo (%)? 75 +Wavelength Ozone Air Action Dose +(angstroms) trans. trans. spectr. + 2800 0.0000 0.0009 1.00 0.000 + 2850 0.0000 0.0012 1.00 0.000 + 2900 0.0000 0.0015 1.00 0.000 + 2950 0.0000 0.0018 1.00 0.000 + 3000 0.0182 0.0022 0.65 0.030 + 3050 0.1050 0.0026 0.22 0.064 + 3100 0.3240 0.0031 0.07 0.074 + 3150 0.5621 0.0036 0.03 0.047 + 3200 0.7404 0.0042 0.01 0.023 + 3250 0.8082 0.0049 0.00 0.009 + 3300 0.9276 0.0056 0.00 0.005 + 3350 0.9393 0.0064 0.00 0.005 + 3400 0.9753 0.0073 0.00 0.004 + 3450 0.9876 0.0082 0.00 0.004 + 3500 0.9975 0.0092 0.00 0.003 + 3550 0.9987 0.0103 0.00 0.003 + 3600 1.0000 0.0114 0.00 0.002 + 3650 1.0000 0.0126 0.00 0.002 + 3700 1.0000 0.0139 0.00 0.002 + 3750 1.0000 0.0152 0.00 0.001 + +Total effective dose: 0.278 + (exposure time 1.00 +Burning starts after 3.59 diff --git a/SKYTEL/suntan.INP b/SKYTEL/suntan.INP new file mode 100644 index 0000000..1d2f7cc --- /dev/null +++ b/SKYTEL/suntan.INP @@ -0,0 +1,6 @@ +45 +6 +2 +5432 +2.2 +75 diff --git a/SKYTEL/suntan.OUT b/SKYTEL/suntan.OUT new file mode 100644 index 0000000..517f2e2 --- /dev/null +++ b/SKYTEL/suntan.OUT @@ -0,0 +1,32 @@ +Latitude in degrees? 45 +Month (1-12)? 6 +Hours from local noon? 2 +Height above sea level (feet)? 5432 +Aerosol extinction (V mag/airmass)? 2.2 +Surface albedo (%)? 75 +Wavelength Ozone Air Action Dose +(angstroms) trans. trans. spectr. + 2800 0.0000 0.0009 1.00 0.000 + 2850 0.0000 0.0012 1.00 0.000 + 2900 0.0000 0.0015 1.00 0.000 + 2950 0.0000 0.0018 1.00 0.000 + 3000 0.0182 0.0022 0.65 0.030 + 3050 0.1050 0.0026 0.22 0.064 + 3100 0.3240 0.0031 0.07 0.074 + 3150 0.5621 0.0036 0.03 0.047 + 3200 0.7404 0.0042 0.01 0.023 + 3250 0.8082 0.0049 0.00 0.009 + 3300 0.9276 0.0056 0.00 0.005 + 3350 0.9393 0.0064 0.00 0.005 + 3400 0.9753 0.0073 0.00 0.004 + 3450 0.9876 0.0082 0.00 0.004 + 3500 0.9975 0.0092 0.00 0.003 + 3550 0.9987 0.0103 0.00 0.003 + 3600 1.0000 0.0114 0.00 0.002 + 3650 1.0000 0.0126 0.00 0.002 + 3700 1.0000 0.0139 0.00 0.002 + 3750 1.0000 0.0152 0.00 0.001 + +Total effective dose: 0.278 + (exposure time 1.00 +Burning starts after 3.59 diff --git a/SKYTEL/suntan.bas b/SKYTEL/suntan.bas new file mode 100644 index 0000000..9e6d806 --- /dev/null +++ b/SKYTEL/suntan.bas @@ -0,0 +1,121 @@ +10 ' Suntan Program +20 ' +30 GOSUB 920: ' Initialize data arrays +40 ' +50 INPUT "Latitude in degrees";L: LA=L/57.296 +60 INPUT "Month (1-12)";M +70 INPUT "Hours from local noon";T: T=ABS(T) +80 DS=.408*SIN(.523*(M-3.7)): ' Decl. of Sun (radians) +90 HA=.262*T: ' Hour angle of Sun (radians) +100 CZ=SIN(LA)*SIN(DS)+COS(LA)*COS(DS)*COS(HA) +110 IF CZ<=0 THEN 70 +120 ZS=ATN(SQR(1-CZ*CZ)/CZ): ' Sun's zenith dist. (rad) +130 ' +140 ' OPTION -- These two lines could replace 50-120: +150 ' INPUT "Altitude of Sun (deg)";AL +160 ' ZS=(90-AL)/57.296 +170 ' +180 INPUT "Height above sea level (feet)";HH: H=HH/3280 +190 INPUT "Aerosol extinction (V mag/airmass)";KK +200 BE=KK/2.36 +210 INPUT "Surface albedo (%)";S1: SA=S1/100 +220 ' +230 ' Other adjustable parameters +240 ' +250 ET=3600: ' Exposure time (seconds) +260 ZP=ZS: ' Angle (rad), zenith to surface normal +270 SS=0: ' Angle (rad), Sun to surface normal +280 TW=1: ' UV frac. transmitted by window, lotion... +290 F1=1: ' Fraction of sky that is clear +300 F2=1: ' Fraction of ground in sunlight +310 SH=1: ' Is Sun being shaded? (no=1, yes=0) +320 N=1: ' Normalization for skin type +330 RE=6378: ' Earth radius (km) +340 OL=0: ' Ozone loss (%) +350 HO=23: ' Height of ozone layer (km) +360 HG=8.2: ' Gas scale height (km) +370 HA=1.5: ' Aerosol scale height (km) +380 DS=1: ' Distance from Sun (a.u.) +390 ' +400 ' Thickness of ozone layer +410 ' +420 RA=30*(M-3.7)/57.296 +430 DOSE=(1-OL/100)*(3+.4*(LA*COS(RA)-COS(3*LA))) +440 ' +450 ' Airmass for each component +460 ' +470 XO=(1-(SIN(ZS)/(1+((HO-H)/RE)))^2)^(-.5) +480 XG=1/(COS(ZS)+.01*SQR(HG)*EXP(-30*COS(ZS)/SQR(HG))) +490 XA=1/(COS(ZS)+.01*SQR(HA)*EXP(-30*COS(ZS)/SQR(HA))) +500 ' +510 ' Do for each wavelength +520 ' +530 PRINT "Wavelength Ozone Air Action Dose" +540 PRINT "(angstroms) trans. trans. spectr. " +550 ED=0 +560 FOR J=1 TO 20 +570 W=.275+J*.005: ' Wavelength (microns) +580 ' +590 ' Brightness of sunlight, diffuse sky light, +600 ' and ground light +610 KO=OZ(J)*(DOSE/3) +620 KG=.0107*EXP(-H/HG)*(W^(-4)) +630 KA=BE*(W^(-1.3)) +640 OT=10^(-.4*(KO*XO)) +650 TA=10^(-.4*(KG*XG+KA*XA)) +660 D=.5*(COS(ZS)^.33) +670 IS=FS(J)*OT*TA*TW*SH*COS(SS)*(DS^(-2)) +680 ID=FS(J)*OT*(1-TA)*D +690 ID=FS(J)*OT*(1-TA)*D*TA*SA+ID +700 ID=FS(J)*OT*((1-TA)^2)*SA*(D^2)+ID +710 ID=ID*TW*F1*(COS(ZS/2)^2)*(DS^(-2)) +720 IG=FS(J)*OT*SA*(TA+D*(1-TA)) +730 IG=IG*TW*F2*(SIN(ZS/2)^2)*(DS^(-2)) +740 I=IS+ID+IG: ' Total flux on skin (erg/cm^2/sec/A) +750 ' +760 ' Find effective dose by numerical integration +770 ' The "minimum erythema dose" at 2900A +780 ' is 2.3E6 erg/cm^2 (Parrish) +790 ' +800 EF=I*ET*(AS(J)*N)*50/2.3E6 +810 ED=ED+EF +820 PRINT USING F1$;W*10000;OT;TA;AS(J);EF +830 NEXT J +840 ' +850 ' Report result +860 ' +870 PRINT +880 PRINT USING "Total effective dose: ##.###";ED +890 PRINT USING " (exposure time ##.## hr)";ET/3600 +895 PRINT USING "Burning starts after ##.## hr";ET/(3600*ED) +899 ' +900 END +910 ' +920 ' Set up data arrays +930 ' +940 F1$= " ##### ##.#### ##.#### ##.## ##.###" +950 DIM OZ(20),FS(20),AS(20) +960 FOR J=1 TO 20: READ OZ(J): NEXT J +970 FOR J=1 TO 20: READ FS(J): NEXT J +980 FOR J=1 TO 20: READ AS(J): NEXT J +990 RETURN +1000 ' +1010 ' OZ array (ozone effect) +1020 DATA 34, 25, 18, 9, 3.2, 1.8, .9, .46, .24, .17 +1030 DATA .06, .05, .02, .01, .002, .001, 0, 0, 0, 0 +1040 ' +1050 ' FS array (solar flux at 1 A.U. in erg/cm^2/sec/A) +1060 DATA 24, 31, 38, 45, 52, 58, 64, 70, 75, 79 +1070 DATA 83, 87, 91, 93, 95, 97, 99, 104, 107, 104 +1080 ' +1090 ' AS array (action spectrum, McKinley & Diffey) +1100 DATA 1, 1, 1, 1, .65, .22, .074, .025, .0086, .003 +1110 DATA .0014, .0012, .00097, .00081, .00068, .00057 +1120 DATA .00048, .0004, .00034, .00029 +1200 ' +1210 ' Bradley E. Schaefer's program takes into account many factors, +1220 ' including the ozone content of the atmosphere, and calculates +1230 ' the risk of getting a sunburn at any month of the year, at any +1240 ' hour of the day, and at any latitude on Earth. He explained how +1250 ' to interpret the results in the July 1993 issue of Sky & Telescope, +1260 ' page 83. diff --git a/SKYTEL/suntan.dif b/SKYTEL/suntan.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/suntan.run b/SKYTEL/suntan.run new file mode 100644 index 0000000..0f032ff --- /dev/null +++ b/SKYTEL/suntan.run @@ -0,0 +1,32 @@ +Latitude in degrees? 45 +Month (1-12)? 6 +Hours from local noon? 2 +Height above sea level (feet)? 5432 +Aerosol extinction (V mag/airmass)? 2.2 +Surface albedo (%)? 75 +Wavelength Ozone Air Action Dose +(angstroms) trans. trans. spectr. + 2800 0.0000 0.0009 1.00 0.000 + 2850 0.0000 0.0012 1.00 0.000 + 2900 0.0000 0.0015 1.00 0.000 + 2950 0.0000 0.0018 1.00 0.000 + 3000 0.0182 0.0022 0.65 0.030 + 3050 0.1050 0.0026 0.22 0.064 + 3100 0.3240 0.0031 0.07 0.074 + 3150 0.5621 0.0036 0.03 0.047 + 3200 0.7404 0.0042 0.01 0.023 + 3250 0.8082 0.0049 0.00 0.009 + 3300 0.9276 0.0056 0.00 0.005 + 3350 0.9393 0.0064 0.00 0.005 + 3400 0.9753 0.0073 0.00 0.004 + 3450 0.9876 0.0082 0.00 0.004 + 3500 0.9975 0.0092 0.00 0.003 + 3550 0.9987 0.0103 0.00 0.003 + 3600 1.0000 0.0114 0.00 0.002 + 3650 1.0000 0.0126 0.00 0.002 + 3700 1.0000 0.0139 0.00 0.002 + 3750 1.0000 0.0152 0.00 0.001 + +Total effective dose: 0.278 + (exposure time 1.00 +Burning starts after 3.59 diff --git a/SKYTEL/sunup.80 b/SKYTEL/sunup.80 new file mode 100644 index 0000000..bf84b40 --- /dev/null +++ b/SKYTEL/sunup.80 @@ -0,0 +1,6 @@ +Lat, Long (deg)? 45,134 +Time zone (hrs)? 6 +Year, Month, Day? 2015,03,01 + +Sunset at 2:50, azimuth 260.0 +Sunrise at 15:42, azimuth 99.7 diff --git a/SKYTEL/sunup.INP b/SKYTEL/sunup.INP new file mode 100644 index 0000000..13a5e07 --- /dev/null +++ b/SKYTEL/sunup.INP @@ -0,0 +1,3 @@ +45,134 +6 +2015,03,01 diff --git a/SKYTEL/sunup.OUT b/SKYTEL/sunup.OUT new file mode 100644 index 0000000..0ce9c52 --- /dev/null +++ b/SKYTEL/sunup.OUT @@ -0,0 +1,6 @@ +Lat, Long (deg)? 45,134 +Time zone (hrs)? 6 +Year, Month, Day? 2015,03,01 + +Sunset at 2:50, azimuth 260.0 +Sunrise at 15:42, azimuth 99.7 diff --git a/SKYTEL/sunup.bas b/SKYTEL/sunup.bas new file mode 100644 index 0000000..e6353ce --- /dev/null +++ b/SKYTEL/sunup.bas @@ -0,0 +1,141 @@ +10 ' Sunrise-Sunset +20 GOSUB 300 +30 INPUT "Lat, Long (deg)";B5,L5 +40 INPUT "Time zone (hrs)";H +50 L5=L5/360: Z0=H/24 +60 GOSUB 1170: T=(J-2451545)+F +70 TT=T/36525+1: ' TT = centuries +80 ' from 1900.0 +90 GOSUB 410: T=T+Z0 +100 ' +110 ' Get Sun's Position +120 GOSUB 910: A(1)=A5: D(1)=D5 +130 T=T+1 +140 GOSUB 910: A(2)=A5: D(2)=D5 +150 IF A(2)0 THEN 570 +560 V0=S*SIN(D0)+C*COS(D0)*COS(H0)-Z +570 V2=S*SIN(D2)+C*COS(D2)*COS(H2)-Z +580 IF SGN(V0)=SGN(V2) THEN 800 +590 V1=S*SIN(D1)+C*COS(D1)*COS(H1)-Z +600 A=2*V2-4*V1+2*V0: B=4*V1-3*V0-V2 +610 D=B*B-4*A*V0: IF D<0 THEN 800 +620 D=SQR(D) +630 IF V0<0 AND V2>0 THEN PRINT R$; +640 IF V0<0 AND V2>0 THEN M8=1 +650 IF V0>0 AND V2<0 THEN PRINT S$; +660 IF V0>0 AND V2<0 THEN W8=1 +670 E=(-B+D)/(2*A) +680 IF E>1 OR E<0 THEN E=(-B-D)/(2*A) +690 T3=C0+E+1/120: ' Round off +700 H3=INT(T3): M3=INT((T3-H3)*60) +710 PRINT USING "##:##";H3;M3; +720 H7=H0+E*(H2-H0) +730 N7=-COS(D1)*SIN(H7) +740 D7=C*SIN(D1)-S*COS(D1)*COS(H7) +750 AZ=ATN(N7/D7)/DR +760 IF D7<0 THEN AZ=AZ+180 +770 IF AZ<0 THEN AZ=AZ+360 +780 IF AZ>360 THEN AZ=AZ-360 +790 PRINT USING ", azimuth ###.#";AZ +800 RETURN +810 ' +820 ' Special-message routine +830 IF M8=0 AND W8=0 THEN 870 +840 IF M8=0 THEN PRINT M1$ +850 IF W8=0 THEN PRINT M2$ +860 GOTO 890 +870 IF V2<0 THEN PRINT M3$ +880 IF V2>0 THEN PRINT M4$ +890 RETURN +900 ' +910 ' Fundamental arguments +920 ' (Van Flandern & +930 ' Pulkkinen, 1979) +940 L=.779072+.00273790931*T +950 G=.993126+.0027377785*T +960 L=L-INT(L): G=G-INT(G) +970 L=L*P2: G=G*P2 +980 V=.39785*SIN(L) +990 V=V-.01000*SIN(L-G) +1000 V=V+.00333*SIN(L+G) +1010 V=V-.00021*TT*SIN(L) +1020 U=1-.03349*COS(G) +1030 U=U-.00014*COS(2*L) +1040 U=U+.00008*COS(L) +1050 W=-.00010-.04129*SIN(2*L) +1060 W=W+.03211*SIN(G) +1070 W=W+.00104*SIN(2*L-G) +1080 W=W-.00035*SIN(2*L+G) +1090 W=W-.00008*TT*SIN(G) +1100 ' +1110 ' Compute Sun's RA and Dec +1120 S=W/SQR(U-V*V) +1130 A5=L+ATN(S/SQR(1-S*S)) +1140 S=V/SQR(U):D5=ATN(S/SQR(1-S*S)) +1150 R5=1.00021*SQR(U) +1160 RETURN +1165 ' +1170 ' Calendar --> JD +1180 INPUT "Year, Month, Day";Y,M,D +1190 G=1: IF Y<1583 THEN G=0 +1200 D1=INT(D): F=D-D1-.5 +1210 J=-INT(7*(INT((M+9)/12)+Y)/4) +1220 IF G=0 THEN 1260 +1230 S=SGN(M-9): A=ABS(M-9) +1240 J3=INT(Y+S*INT(A/7)) +1250 J3=-INT((INT(J3/100)+1)*3/4) +1260 J=J+INT(275*M/9)+D1+G*J3 +1270 J=J+1721027+2*G+367*Y +1280 IF F>=0 THEN 1300 +1290 F=F+1: J=J-1 +1300 RETURN +1310 ' +1320 ' This program by Roger W. Sinnott calculates the times of sunrise +1330 ' and sunset on any date, accurate to the minute within several +1340 ' centuries of the present. It correctly describes what happens in the +1350 ' arctic and antarctic regions, where the Sun may not rise or set on +1360 ' a given date. Enter north latitudes positive, west longitudes +1370 ' negative. For the time zone, enter the number of hours west of +1380 ' Greenwich (e.g., 5 for EST, 4 for EDT). The calculation is +1390 ' discussed in Sky & Telescope for August 1994, page 84. + \ No newline at end of file diff --git a/SKYTEL/sunup.dif b/SKYTEL/sunup.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/sunup.run b/SKYTEL/sunup.run new file mode 100644 index 0000000..bf84b40 --- /dev/null +++ b/SKYTEL/sunup.run @@ -0,0 +1,6 @@ +Lat, Long (deg)? 45,134 +Time zone (hrs)? 6 +Year, Month, Day? 2015,03,01 + +Sunset at 2:50, azimuth 260.0 +Sunrise at 15:42, azimuth 99.7 diff --git a/SKYTEL/supernum.80 b/SKYTEL/supernum.80 new file mode 100644 index 0000000..c412ff2 --- /dev/null +++ b/SKYTEL/supernum.80 @@ -0,0 +1,101 @@ +Computing intensity for emergence angle = 38.29 +Computing intensity for emergence angle = 38.34 +Computing intensity for emergence angle = 38.39 +Computing intensity for emergence angle = 38.44 +Computing intensity for emergence angle = 38.49 +Computing intensity for emergence angle = 38.53 +Computing intensity for emergence angle = 38.58 +Computing intensity for emergence angle = 38.63 +Computing intensity for emergence angle = 38.68 +Computing intensity for emergence angle = 38.73 +Computing intensity for emergence angle = 38.78 +Computing intensity for emergence angle = 38.83 +Computing intensity for emergence angle = 38.87 +Computing intensity for emergence angle = 38.92 +Computing intensity for emergence angle = 38.97 +Computing intensity for emergence angle = 39.01 +Computing intensity for emergence angle = 39.06 +Computing intensity for emergence angle = 39.11 +Computing intensity for emergence angle = 39.15 +Computing intensity for emergence angle = 39.20 +Computing intensity for emergence angle = 39.24 +Computing intensity for emergence angle = 39.29 +Computing intensity for emergence angle = 39.33 +Computing intensity for emergence angle = 39.38 +Computing intensity for emergence angle = 39.42 +Computing intensity for emergence angle = 39.46 +Computing intensity for emergence angle = 39.51 +Computing intensity for emergence angle = 39.55 +Computing intensity for emergence angle = 39.59 +Computing intensity for emergence angle = 39.64 +Computing intensity for emergence angle = 39.68 +Computing intensity for emergence angle = 39.72 +Computing intensity for emergence angle = 39.76 +Computing intensity for emergence angle = 39.80 +Computing intensity for emergence angle = 39.84 +Computing intensity for emergence angle = 39.89 +Computing intensity for emergence angle = 39.93 +Computing intensity for emergence angle = 39.97 +Computing intensity for emergence angle = 40.01 +Computing intensity for emergence angle = 40.05 +Computing intensity for emergence angle = 40.08 +Computing intensity for emergence angle = 40.12 +Computing intensity for emergence angle = 40.16 +Computing intensity for emergence angle = 40.20 +Computing intensity for emergence angle = 40.24 +Computing intensity for emergence angle = 40.28 +Computing intensity for emergence angle = 40.31 +Computing intensity for emergence angle = 40.35 +Computing intensity for emergence angle = 40.39 +Computing intensity for emergence angle = 40.42 +Computing intensity for emergence angle = 40.46 +Computing intensity for emergence angle = 40.50 +Computing intensity for emergence angle = 40.53 +Computing intensity for emergence angle = 40.57 +Computing intensity for emergence angle = 40.60 +Computing intensity for emergence angle = 40.64 +Computing intensity for emergence angle = 40.67 +Computing intensity for emergence angle = 40.70 +Computing intensity for emergence angle = 40.74 +Computing intensity for emergence angle = 40.77 +Computing intensity for emergence angle = 40.80 +Computing intensity for emergence angle = 40.84 +Computing intensity for emergence angle = 40.87 +Computing intensity for emergence angle = 40.90 +Computing intensity for emergence angle = 40.93 +Computing intensity for emergence angle = 40.96 +Computing intensity for emergence angle = 40.99 +Computing intensity for emergence angle = 41.02 +Computing intensity for emergence angle = 41.05 +Computing intensity for emergence angle = 41.08 +Computing intensity for emergence angle = 41.11 +Computing intensity for emergence angle = 41.14 +Computing intensity for emergence angle = 41.17 +Computing intensity for emergence angle = 41.20 +Computing intensity for emergence angle = 41.23 +Computing intensity for emergence angle = 41.26 +Computing intensity for emergence angle = 41.28 +Computing intensity for emergence angle = 41.31 +Computing intensity for emergence angle = 41.34 +Computing intensity for emergence angle = 41.36 +Computing intensity for emergence angle = 41.39 +Computing intensity for emergence angle = 41.41 +Computing intensity for emergence angle = 41.44 +Computing intensity for emergence angle = 41.46 +Computing intensity for emergence angle = 41.49 +Computing intensity for emergence angle = 41.51 +Computing intensity for emergence angle = 41.54 +Computing intensity for emergence angle = 41.56 +Computing intensity for emergence angle = 41.58 +Computing intensity for emergence angle = 41.61 +Computing intensity for emergence angle = 41.63 +Computing intensity for emergence angle = 41.65 +Computing intensity for emergence angle = 41.67 +Computing intensity for emergence angle = 41.69 +Computing intensity for emergence angle = 41.71 +Computing intensity for emergence angle = 41.74 +Computing intensity for emergence angle = 41.76 +Computing intensity for emergence angle = 41.78 +Computing intensity for emergence angle = 41.79 +Computing intensity for emergence angle = 41.81 +Computing intensity for emergence angle = 41.83 diff --git a/SKYTEL/supernum.INP b/SKYTEL/supernum.INP new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/SKYTEL/supernum.INP @@ -0,0 +1 @@ + diff --git a/SKYTEL/supernum.OUT b/SKYTEL/supernum.OUT new file mode 100644 index 0000000..cc46286 --- /dev/null +++ b/SKYTEL/supernum.OUT @@ -0,0 +1,101 @@ +Computing intensity for emergence angle = 38.29 +Computing intensity for emergence angle = 38.34 +Computing intensity for emergence angle = 38.39 +Computing intensity for emergence angle = 38.44 +Computing intensity for emergence angle = 38.49 +Computing intensity for emergence angle = 38.53 +Computing intensity for emergence angle = 38.58 +Computing intensity for emergence angle = 38.63 +Computing intensity for emergence angle = 38.68 +Computing intensity for emergence angle = 38.73 +Computing intensity for emergence angle = 38.78 +Computing intensity for emergence angle = 38.83 +Computing intensity for emergence angle = 38.87 +Computing intensity for emergence angle = 38.92 +Computing intensity for emergence angle = 38.97 +Computing intensity for emergence angle = 39.01 +Computing intensity for emergence angle = 39.06 +Computing intensity for emergence angle = 39.11 +Computing intensity for emergence angle = 39.15 +Computing intensity for emergence angle = 39.20 +Computing intensity for emergence angle = 39.24 +Computing intensity for emergence angle = 39.29 +Computing intensity for emergence angle = 39.33 +Computing intensity for emergence angle = 39.38 +Computing intensity for emergence angle = 39.42 +Computing intensity for emergence angle = 39.46 +Computing intensity for emergence angle = 39.51 +Computing intensity for emergence angle = 39.55 +Computing intensity for emergence angle = 39.59 +Computing intensity for emergence angle = 39.64 +Computing intensity for emergence angle = 39.68 +Computing intensity for emergence angle = 39.72 +Computing intensity for emergence angle = 39.76 +Computing intensity for emergence angle = 39.80 +Computing intensity for emergence angle = 39.84 +Computing intensity for emergence angle = 39.89 +Computing intensity for emergence angle = 39.93 +Computing intensity for emergence angle = 39.97 +Computing intensity for emergence angle = 40.01 +Computing intensity for emergence angle = 40.05 +Computing intensity for emergence angle = 40.08 +Computing intensity for emergence angle = 40.12 +Computing intensity for emergence angle = 40.16 +Computing intensity for emergence angle = 40.20 +Computing intensity for emergence angle = 40.24 +Computing intensity for emergence angle = 40.28 +Computing intensity for emergence angle = 40.31 +Computing intensity for emergence angle = 40.35 +Computing intensity for emergence angle = 40.39 +Computing intensity for emergence angle = 40.42 +Computing intensity for emergence angle = 40.46 +Computing intensity for emergence angle = 40.50 +Computing intensity for emergence angle = 40.53 +Computing intensity for emergence angle = 40.57 +Computing intensity for emergence angle = 40.60 +Computing intensity for emergence angle = 40.64 +Computing intensity for emergence angle = 40.67 +Computing intensity for emergence angle = 40.70 +Computing intensity for emergence angle = 40.74 +Computing intensity for emergence angle = 40.77 +Computing intensity for emergence angle = 40.80 +Computing intensity for emergence angle = 40.84 +Computing intensity for emergence angle = 40.87 +Computing intensity for emergence angle = 40.90 +Computing intensity for emergence angle = 40.93 +Computing intensity for emergence angle = 40.96 +Computing intensity for emergence angle = 40.99 +Computing intensity for emergence angle = 41.02 +Computing intensity for emergence angle = 41.05 +Computing intensity for emergence angle = 41.08 +Computing intensity for emergence angle = 41.11 +Computing intensity for emergence angle = 41.14 +Computing intensity for emergence angle = 41.17 +Computing intensity for emergence angle = 41.20 +Computing intensity for emergence angle = 41.23 +Computing intensity for emergence angle = 41.26 +Computing intensity for emergence angle = 41.28 +Computing intensity for emergence angle = 41.31 +Computing intensity for emergence angle = 41.34 +Computing intensity for emergence angle = 41.36 +Computing intensity for emergence angle = 41.39 +Computing intensity for emergence angle = 41.41 +Computing intensity for emergence angle = 41.44 +Computing intensity for emergence angle = 41.46 +Computing intensity for emergence angle = 41.49 +Computing intensity for emergence angle = 41.51 +Computing intensity for emergence angle = 41.54 +Computing intensity for emergence angle = 41.56 +Computing intensity for emergence angle = 41.58 +Computing intensity for emergence angle = 41.61 +Computing intensity for emergence angle = 41.63 +Computing intensity for emergence angle = 41.65 +Computing intensity for emergence angle = 41.67 +Computing intensity for emergence angle = 41.69 +Computing intensity for emergence angle = 41.71 +Computing intensity for emergence angle = 41.74 +Computing intensity for emergence angle = 41.76 +Computing intensity for emergence angle = 41.78 +Computing intensity for emergence angle = 41.79 +Computing intensity for emergence angle = 41.81 +Computing intensity for emergence angle = 41.83 diff --git a/SKYTEL/supernum.bas b/SKYTEL/supernum.bas new file mode 100644 index 0000000..40a7967 --- /dev/null +++ b/SKYTEL/supernum.bas @@ -0,0 +1,72 @@ +10 REM SUPERNUM.BAS +20 REM by Rodney Kubesh +30 OPEN "BOW.DAT" FOR OUTPUT AS #1 +40 CLS +50 ' PI=3.14159 +60 A0=1.5707288# : A1=-.2121144 +70 A2=.074261 : A3=-.0187293 +80 N=1.3318 : REM Refractive index +90 RA=250 : REM Drop radius in microns +100 L=.6563 : REM Wavelength in microns +110 FOR J=450 TO 550 +120 REM Choose angle of incidence for ray A +130 I=J*.1*PI/180 +140 AN=SIN(I)/N +150 REM Snell's Law gives angle of refraction +160 R=PI/2-(1-AN)^.5*(A0+A1*AN+A2*AN^2+A3*AN^3) +170 TH=4*R-2*I +180 LOCATE 12,15 +190 PRINT "Computing intensity for emergence angle = "; +200 PRINT USING "###.##"; TH*180/PI +210 REM D and S are path lengths outside the drop for ray A +220 D=1-COS(I) +230 X0=-COS(4*R-I) : Y0=-SIN(4*R-I) +240 X1=X0 : X2=X0-1 : X3=X0-2 +250 Y1=Y0-1/TAN(TH) +260 Y2=Y0 +270 Y3=Y0-2*TAN(TH) +280 S1=(Y2-Y1)/(X2-X1) +290 S2=(Y3-Y0)/(X3-X0) +300 I2=I +310 X=(Y0-Y1+S1*X1-S2*X0)/(S1-S2) +320 Y=(X-X1)*S1+Y1 +330 S=((Y-Y0)^2+(X-X0)^2)^.5 +340 REM Find total path length +350 P1=RA*(D+S+4*N*COS(R)) +360 IN=59.5 +370 REM Choose possible angles of incidence for ray B +380 IN=IN+.05 +390 I=IN*PI/180 +400 AN=SIN(I)/N +410 R=PI/2-(1-AN)^.5*(A0+A1*AN+A2*AN^2+A3*AN^3) +420 REM Find companion rays emerging in same direction +430 TL=ABS(TH-4*R+2*I) +440 IF TL>.001 GOTO 380 +450 TH=4*R-2*I +460 REM Path lengths D and S for ray B +470 D=1-COS(I) +480 X0=-COS(4*R-I) : Y0=-SIN(4*R-I) +490 X3=X0-2 +500 Y3=Y0-2*TAN(TH) +510 S1=(Y2-Y1)/(X2-X1) +520 S2=(Y3-Y0)/(X3-X0) +530 X=(Y0-Y1+S1*X1-S2*X0)/(S1-S2) +540 Y=(X-X1)*S1+Y1 +550 S=((Y-Y0)^2+(X-X0)^2)^.5 +560 REM Total path length for ray B +570 P2=RA*(D+S+4*N*COS(R)) +580 REM Find difference in path length +590 PD=P1-P2 +600 PH=2*PI*PD/L-PI/2 +610 REM Find amplitude +620 AM=COS(PH/2) +630 REM Print emergence angle and intensity +640 PRINT#1, USING "###.###"; TH*180/PI; AM^2 +650 NEXT J +660 CLOSE#1 +670 END +900 REM --------------------------- +910 REM APPEARED IN ASTRONOMICAL +920 REM COMPUTING, SKY & TELESCOPE, +930 REM SEPTEMBER 1998, PAGE 70 +940 REM --------------------------- diff --git a/SKYTEL/supernum.dif b/SKYTEL/supernum.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/supernum.run b/SKYTEL/supernum.run new file mode 100644 index 0000000..c412ff2 --- /dev/null +++ b/SKYTEL/supernum.run @@ -0,0 +1,101 @@ +Computing intensity for emergence angle = 38.29 +Computing intensity for emergence angle = 38.34 +Computing intensity for emergence angle = 38.39 +Computing intensity for emergence angle = 38.44 +Computing intensity for emergence angle = 38.49 +Computing intensity for emergence angle = 38.53 +Computing intensity for emergence angle = 38.58 +Computing intensity for emergence angle = 38.63 +Computing intensity for emergence angle = 38.68 +Computing intensity for emergence angle = 38.73 +Computing intensity for emergence angle = 38.78 +Computing intensity for emergence angle = 38.83 +Computing intensity for emergence angle = 38.87 +Computing intensity for emergence angle = 38.92 +Computing intensity for emergence angle = 38.97 +Computing intensity for emergence angle = 39.01 +Computing intensity for emergence angle = 39.06 +Computing intensity for emergence angle = 39.11 +Computing intensity for emergence angle = 39.15 +Computing intensity for emergence angle = 39.20 +Computing intensity for emergence angle = 39.24 +Computing intensity for emergence angle = 39.29 +Computing intensity for emergence angle = 39.33 +Computing intensity for emergence angle = 39.38 +Computing intensity for emergence angle = 39.42 +Computing intensity for emergence angle = 39.46 +Computing intensity for emergence angle = 39.51 +Computing intensity for emergence angle = 39.55 +Computing intensity for emergence angle = 39.59 +Computing intensity for emergence angle = 39.64 +Computing intensity for emergence angle = 39.68 +Computing intensity for emergence angle = 39.72 +Computing intensity for emergence angle = 39.76 +Computing intensity for emergence angle = 39.80 +Computing intensity for emergence angle = 39.84 +Computing intensity for emergence angle = 39.89 +Computing intensity for emergence angle = 39.93 +Computing intensity for emergence angle = 39.97 +Computing intensity for emergence angle = 40.01 +Computing intensity for emergence angle = 40.05 +Computing intensity for emergence angle = 40.08 +Computing intensity for emergence angle = 40.12 +Computing intensity for emergence angle = 40.16 +Computing intensity for emergence angle = 40.20 +Computing intensity for emergence angle = 40.24 +Computing intensity for emergence angle = 40.28 +Computing intensity for emergence angle = 40.31 +Computing intensity for emergence angle = 40.35 +Computing intensity for emergence angle = 40.39 +Computing intensity for emergence angle = 40.42 +Computing intensity for emergence angle = 40.46 +Computing intensity for emergence angle = 40.50 +Computing intensity for emergence angle = 40.53 +Computing intensity for emergence angle = 40.57 +Computing intensity for emergence angle = 40.60 +Computing intensity for emergence angle = 40.64 +Computing intensity for emergence angle = 40.67 +Computing intensity for emergence angle = 40.70 +Computing intensity for emergence angle = 40.74 +Computing intensity for emergence angle = 40.77 +Computing intensity for emergence angle = 40.80 +Computing intensity for emergence angle = 40.84 +Computing intensity for emergence angle = 40.87 +Computing intensity for emergence angle = 40.90 +Computing intensity for emergence angle = 40.93 +Computing intensity for emergence angle = 40.96 +Computing intensity for emergence angle = 40.99 +Computing intensity for emergence angle = 41.02 +Computing intensity for emergence angle = 41.05 +Computing intensity for emergence angle = 41.08 +Computing intensity for emergence angle = 41.11 +Computing intensity for emergence angle = 41.14 +Computing intensity for emergence angle = 41.17 +Computing intensity for emergence angle = 41.20 +Computing intensity for emergence angle = 41.23 +Computing intensity for emergence angle = 41.26 +Computing intensity for emergence angle = 41.28 +Computing intensity for emergence angle = 41.31 +Computing intensity for emergence angle = 41.34 +Computing intensity for emergence angle = 41.36 +Computing intensity for emergence angle = 41.39 +Computing intensity for emergence angle = 41.41 +Computing intensity for emergence angle = 41.44 +Computing intensity for emergence angle = 41.46 +Computing intensity for emergence angle = 41.49 +Computing intensity for emergence angle = 41.51 +Computing intensity for emergence angle = 41.54 +Computing intensity for emergence angle = 41.56 +Computing intensity for emergence angle = 41.58 +Computing intensity for emergence angle = 41.61 +Computing intensity for emergence angle = 41.63 +Computing intensity for emergence angle = 41.65 +Computing intensity for emergence angle = 41.67 +Computing intensity for emergence angle = 41.69 +Computing intensity for emergence angle = 41.71 +Computing intensity for emergence angle = 41.74 +Computing intensity for emergence angle = 41.76 +Computing intensity for emergence angle = 41.78 +Computing intensity for emergence angle = 41.79 +Computing intensity for emergence angle = 41.81 +Computing intensity for emergence angle = 41.83 diff --git a/SKYTEL/surf.80 b/SKYTEL/surf.80 new file mode 100644 index 0000000..f01b5af --- /dev/null +++ b/SKYTEL/surf.80 @@ -0,0 +1,17 @@ + +TOTAL MAGNITUDE? 8 + +TYPE OF AREA: + (C) CIRCULAR + (E) ELLIPTICAL + (R) RECTANGULAR + (I) IRREGULAR +CHOICE? C + +DIAM IN ARC MIN? 46 + +SURFACE MAGNITUDE -- + PER SQ ARC MIN: 16.0515 + PER SQ ARC SEC: 24.9423 + +TOTAL MAGNITUDE? X diff --git a/SKYTEL/surf.INP b/SKYTEL/surf.INP new file mode 100644 index 0000000..ba0aaab --- /dev/null +++ b/SKYTEL/surf.INP @@ -0,0 +1,4 @@ +8 +C +46 +X diff --git a/SKYTEL/surf.OUT b/SKYTEL/surf.OUT new file mode 100644 index 0000000..11edac0 --- /dev/null +++ b/SKYTEL/surf.OUT @@ -0,0 +1,17 @@ + +TOTAL MAGNITUDE? 8 + +TYPE OF AREA: + (C) CIRCULAR + (E) ELLIPTICAL + (R) RECTANGULAR + (I) IRREGULAR +CHOICE? C + +DIAM IN ARC MIN? 46 + +SURFACE MAGNITUDE -- + PER SQ ARC MIN: 16.0515 + PER SQ ARC SEC: 24.9423 + +TOTAL MAGNITUDE? X diff --git a/SKYTEL/surf.bas b/SKYTEL/surf.bas new file mode 100644 index 0000000..bf7678a --- /dev/null +++ b/SKYTEL/surf.bas @@ -0,0 +1,46 @@ +10 REM SURFACE BRIGHTNESS +12 PRINT +14 INPUT "TOTAL MAGNITUDE";M$ +16 IF M$="X" THEN 88 +18 M=VAL(M$): PRINT +20 PRINT "TYPE OF AREA:" +22 PRINT " (C) CIRCULAR" +24 PRINT " (E) ELLIPTICAL" +26 PRINT " (R) RECTANGULAR" +28 PRINT " (I) IRREGULAR" +30 INPUT "CHOICE";C$: PRINT +32 IF C$="C" THEN 42 +34 IF C$="E" THEN 48 +36 IF C$="R" THEN 58 +38 IF C$="I" THEN 68 +40 GOTO 30 +42 REM CIRCULAR +44 INPUT "DIAM IN ARC MIN";D +46 A=3.14159265*D*D/4: GOTO 72 +48 REM ELLIPTICAL +50 PRINT "ENTER ARC MIN --" +52 INPUT " MAJOR AXIS";A1 +54 INPUT " MINOR AXIS";A2 +56 A=3.14159265*A1*A2/4: GOTO 72 +58 REM RECTANGULAR +60 PRINT "ENTER ARC MIN --" +62 INPUT " LONG SIDE";A1 +64 INPUT " SHORT SIDE";A2 +66 A=A1*A2: GOTO 72 +68 REM IRREGULAR +70 INPUT "AREA IN SQ ARC MIN";A +72 PRINT: IF A>=1/3600 THEN 76 +74 PRINT "STARLIKE": GOTO 86 +76 S1=M+LOG(A)/LOG(100^(1/5)) +78 S2=S1+8.890756 +80 PRINT "SURFACE MAGNITUDE --" +82 PRINT " PER SQ ARC MIN: ";S1 +84 PRINT " PER SQ ARC SEC: ";S2 +86 GOTO 12 +88 END +90 REM ========================== +100 REM FROM SKY & TELESCOPE'S +110 REM ASTRONOMICAL COMPUTING +120 REM DEPARTMENT FOR OCTOBER, +130 REM 1986, PAGE 392 +140 REM ========================= diff --git a/SKYTEL/surf.dif b/SKYTEL/surf.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/surf.run b/SKYTEL/surf.run new file mode 100644 index 0000000..f01b5af --- /dev/null +++ b/SKYTEL/surf.run @@ -0,0 +1,17 @@ + +TOTAL MAGNITUDE? 8 + +TYPE OF AREA: + (C) CIRCULAR + (E) ELLIPTICAL + (R) RECTANGULAR + (I) IRREGULAR +CHOICE? C + +DIAM IN ARC MIN? 46 + +SURFACE MAGNITUDE -- + PER SQ ARC MIN: 16.0515 + PER SQ ARC SEC: 24.9423 + +TOTAL MAGNITUDE? X diff --git a/SKYTEL/track.80 b/SKYTEL/track.80 new file mode 100644 index 0000000..22dc0f1 --- /dev/null +++ b/SKYTEL/track.80 @@ -0,0 +1,13 @@ +WITH DRIVE (Y OR N)? Y +MOTION (DEG/DAY)? 4.56 +E.F.L. (MM)? 23.4 +FILM GRAIN (F OR C)? F +ENLARGEMENT FACTOR? 2.345 +PLANNED EXP (MIN)? 360 + +MOTION IN 360 MIN EXP: + 4104 ARC SEC, OR + 1.09179 MM ON PRINT +LIMITS BASED ON GRAIN: + MAX EXPOSURE 7.73223 MIN + RESOLUTION 88 ARC SEC diff --git a/SKYTEL/track.INP b/SKYTEL/track.INP new file mode 100644 index 0000000..d5576f3 --- /dev/null +++ b/SKYTEL/track.INP @@ -0,0 +1,6 @@ +Y +4.56 +23.4 +F +2.345 +360 diff --git a/SKYTEL/track.OUT b/SKYTEL/track.OUT new file mode 100644 index 0000000..d4d2b6f --- /dev/null +++ b/SKYTEL/track.OUT @@ -0,0 +1,13 @@ +WITH DRIVE (Y OR N)? Y +MOTION (DEG/DAY)? 4.56 +E.F.L. (MM)? 23.4 +FILM GRAIN (F OR C)? F +ENLARGEMENT FACTOR? 2.345 +PLANNED EXP (MIN)? 360 + +MOTION IN 360 MIN EXP: + 4104 ARC SEC, OR + 1.09179 MM ON PRINT +LIMITS BASED ON GRAIN: + MAX EXPOSURE 7.73223 MIN + RESOLUTION 88 ARC SEC diff --git a/SKYTEL/track.bas b/SKYTEL/track.bas new file mode 100644 index 0000000..b9e015a --- /dev/null +++ b/SKYTEL/track.bas @@ -0,0 +1,35 @@ +10 REM TRACKING TOLERANCES +12 REM +14 R=3.14159265/180: REM RAD/DEG +16 K=206265: REM ARC SEC/RAD +18 INPUT "WITH DRIVE (Y OR N)";Q$ +20 IF Q$="Y" THEN 26 +22 INPUT "DECLINATION (DEG)";D +24 M=360*COS(D*R): GOTO 30 +26 INPUT "MOTION (DEG/DAY)";M +28 IF M=0 THEN 26 +30 INPUT "E.F.L. (MM)";F +32 INPUT "FILM GRAIN (F OR C)";A$ +34 IF A$<>"F" AND A$<>"C" THEN 32 +36 INPUT "ENLARGEMENT FACTOR";E +38 INPUT "PLANNED EXP (MIN)";T +40 S=1/(R*F*E): REM DEG/MM +42 R1=M/(S*24*60): REM MM/MIN +44 IF A$="F" THEN G=K/(F*100) +46 IF A$="C" THEN G=K/(F*20) +48 PRINT +50 PRINT "MOTION IN ";T;" MIN EXP:" +52 PRINT " ";INT(T*R1*S*3600+0.5); +54 PRINT " ARC SEC, OR" +56 PRINT " ";T*R1;" MM ON PRINT" +58 PRINT "LIMITS BASED ON GRAIN:" +60 PRINT " MAX EXPOSURE "; +62 PRINT G/(S*3600*R1);" MIN" +64 PRINT " RESOLUTION "; +66 PRINT INT(G+0.5);" ARC SEC" +68 END +70 REM ------------------------ +80 REM APPEARED IN ASTRONOMICAL +90 REM COMPUTING, SKY & TELE- +95 REM SCOPE, FEBRUARY, 1986 +99 REM ------------------------ diff --git a/SKYTEL/track.dif b/SKYTEL/track.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/track.run b/SKYTEL/track.run new file mode 100644 index 0000000..22dc0f1 --- /dev/null +++ b/SKYTEL/track.run @@ -0,0 +1,13 @@ +WITH DRIVE (Y OR N)? Y +MOTION (DEG/DAY)? 4.56 +E.F.L. (MM)? 23.4 +FILM GRAIN (F OR C)? F +ENLARGEMENT FACTOR? 2.345 +PLANNED EXP (MIN)? 360 + +MOTION IN 360 MIN EXP: + 4104 ARC SEC, OR + 1.09179 MM ON PRINT +LIMITS BASED ON GRAIN: + MAX EXPOSURE 7.73223 MIN + RESOLUTION 88 ARC SEC diff --git a/SKYTEL/vislimit.80 b/SKYTEL/vislimit.80 new file mode 100644 index 0000000..44dec45 --- /dev/null +++ b/SKYTEL/vislimit.80 @@ -0,0 +1,9 @@ +Zenith distance (deg.): ? 174 + +Airmass (gas, aerosol, ozone): 0.00 0.00 1.01 +Extinction Coefficients (UBVRI): 0.66 0.36 0.22 0.11 0.06 +Total Extinction (UBVRI): 0.00 0.00 0.03 0.01 0.00 +Sky brightness (UBVRI): 0.04.999651e-14 0.07.143514e-14 0.0 + +Visual Sky Brightness (nL): 64 +Visual Limiting Magnitude: 6.50 diff --git a/SKYTEL/vislimit.INP b/SKYTEL/vislimit.INP new file mode 100644 index 0000000..c5356ba --- /dev/null +++ b/SKYTEL/vislimit.INP @@ -0,0 +1 @@ +174 diff --git a/SKYTEL/vislimit.OUT b/SKYTEL/vislimit.OUT new file mode 100644 index 0000000..59a0ac1 --- /dev/null +++ b/SKYTEL/vislimit.OUT @@ -0,0 +1,9 @@ +Zenith distance (deg.): ? 174 + +Airmass (gas, aerosol, ozone): 0.00 0.00 1.01 +Extinction Coefficients (UBVRI): 0.66 0.36 0.22 0.11 0.06 +Total Extinction (UBVRI): 0.00 0.00 0.03 0.01 0.00 +Sky brightness (UBVRI): 0.04.999651e-14 0.07.143514e-14 0.0 + +Visual Sky Brightness (nL): 64 +Visual Limiting Magnitude: 6.50 diff --git a/SKYTEL/vislimit.bas b/SKYTEL/vislimit.bas new file mode 100644 index 0000000..91f0fca --- /dev/null +++ b/SKYTEL/vislimit.bas @@ -0,0 +1,118 @@ +10 REM VISLIMIT.BAS Visual Limits +20 REM by Bradley E. Schaefer +30 FOR I=1 TO 5 : READ WA(I) : NEXT I +40 DATA 0.365, 0.44, 0.55, 0.7, 0.9 +50 FOR I=1 TO 5 : READ MO(I) : NEXT I +60 DATA -10.93, -10.45, -11.05, -11.90, -12.70 +70 RD=3.14159/180.0 +80 REM Input for Moon and Sun +90 AM=180.0 : REM Moon phase (deg.; 0=FM, 90=FQ/LQ, 180=NM) +100 ZM=180.0 : REM Zenith distance of Moon (deg.) +110 RM=180.0 : REM Angular distance to Moon (deg.) +120 ZS=180.0 : REM Zenith distance of Sun (deg.) +130 RS=180.0 : REM Angular distance to Sun (deg.) +140 REM Input for the Site, Date, Observer +150 RH=40.0 : REM relative humidity (%) +160 TE=15.0 : REM Air temperature (deg. C) +170 LA=30.0 : REM Latitude (deg.) +180 AL=1000.0 : REM Altitude above sea level (m) +190 M=2.0 : REM Month (1=Jan, 12=Dec) +200 Y=1998.0 : REM Year +210 SN=1.0 : REM Snellen Ratio (20/20=1.0, good 20/10=2.0) +220 INPUT "Zenith distance (deg.): ";Z +230 GOSUB 1000 : REM Extinction +240 GOSUB 2000 : REM Sky +250 REM Visual limiting magnitude +260 BL=B(3)/1.11E-15 : REM in nanolamberts +270 IF BL>1500.0 THEN GOTO 300 +280 C1=10.0^(-9.8): C2=10.0^(-1.9) +290 GOTO 310 +300 C1=10.0^(-8.350001) : C2=10.0^(-5.9) +310 TH=C1*((1.0+SQR(C2*BL))^2.0) : REM in foot-candles +320 MN=-16.57-2.5*(LOG(TH)/LOG(10))-DM(3)+5.0*(LOG(SN)/LOG(10)) +330 PRINT : REM Write results and stop program +340 PRINT USING "Visual Sky Brightness (nL): ######"; BL +350 PRINT USING "Visual Limiting Magnitude: ###.##"; MN +360 END +1000 REM Extinction Subroutine +1010 FOR I=1 TO 5: READ OZ(I): NEXT I +1020 DATA 0.000, 0.000, 0.031, 0.008, 0.000 +1030 FOR I=1 TO 5: READ WT(I): NEXT I +1040 DATA 0.074, 0.045, 0.031, 0.020, 0.015 +1050 LT=LA*RD +1060 RA=(M-3)*30.0*RD +1070 SL=LA/ABS(LA) +1080 REM Airmass for each component +1090 ZZ=Z*RD +1100 XG=1/(COS(ZZ)+.0286*EXP(-10.5*COS(ZZ))) +1110 XA=1/(COS(ZZ)+.0123*EXP(-24.5*COS(ZZ))) +1120 XO=1/SQR(1.0-(SIN(ZZ)/(1.0+(20.0/6378.0)))^2) +1130 REM UBVRI extinction for each component +1140 FOR I=1 TO 5 +1150 KR=.1066*EXP(-1*AL/8200)*((WA(I)/.55)^(-4)) +1160 KA=.1*((WA(I)/.55)^(-1.3))*EXP(-1*AL/1500) +1170 KA=KA*((1-.32/LOG(RH/100.0))^1.33)*(1+0.33*SL*SIN(RA)) +1180 KO=OZ(I)*(3.0+.4*(LT*COS(RA)-COS(3*LT)))/3.0 +1190 KW=WT(I)*.94*(RH/100.0)*EXP(TE/15)*EXP(-1*AL/8200) +1200 K(I)=KR+KA+KO+KW +1210 DM(I)=KR*XG+KA*XA+KO*XO+KW*XG +1220 NEXT I +1230 REM Write results and return +1240 PRINT : PRINT "Airmass (gas, aerosol, ozone): "; +1250 PRINT USING "####.## "; XG, XA, XO +1260 PRINT "Extinction Coefficients (UBVRI): "; +1270 PRINT USING "####.## "; K(1), K(2), K(3), K(4), K(5) +1280 PRINT "Total Extinction (UBVRI): "; +1290 PRINT USING "####.## "; DM(1), DM(2), DM(3), DM(4), DM(5) +1300 RETURN +2000 REM SKY Subroutine +2010 FOR I=1 TO 5: READ BO(I): NEXT I +2020 DATA 8.0E-14, 7.0E-14, 1.0E-13, 1.0E-13, 3.0E-13 +2030 FOR I=1 TO 5: READ CM(I): NEXT I +2040 DATA 1.36, 0.91, 0.00, -0.76, -1.17 +2050 FOR I=1 TO 5: READ MS(I): NEXT I +2060 DATA -25.96, -26.09, -26.74, -27.26, -27.55 +2070 X=1/(COS(ZZ)+.025*EXP(-11*COS(ZZ))) : REM air mass +2080 XM=1/(COS(ZM*RD)+.025*EXP(-11*COS(ZM*RD))) : REM air mass Moon +2090 IF ZM>90.0 THEN XM=40.0 +2100 XS=1/(COS(ZS*RD)+.025*EXP(-11*COS(ZS*RD))) : REM air mass Sun +2110 IF ZS>90.0 THEN XS=40.0 +2120 FOR I=1 TO 5 +2130 REM Dark night sky brightness +2140 BN=BO(I)*(1+.3*COS(6.283*(Y-1992)/11)) +2150 BN=BN*(.4+.6/SQR(1.0-.96*((SIN(ZZ))^2))) +2160 BN=BN*(10^(-.4*K(I)*X)) +2170 REM Moonlight brightness +2180 MM=-12.73+.026*ABS(AM)+4E-09*(AM^4) : REM moon mag in V +2190 MM=MM+CM(I) : REM Moon mag +2200 C3=10.0^(-.4*K(I)*XM) +2210 FM=6.2E+07*(RM^(-2))+(10^(6.15-RM/40)) +2220 FM=FM+(10^5.36)*(1.06+((COS(RM*RD))^2)) +2230 BM=10^(-.4*(MM-MO(I)+43.27)) +2240 BM=BM*(1-10^(-.4*K(I)*X)) +2250 BM=BM*(FM*C3+440000.0*(1-C3)) +2260 REM Twilight brightness +2270 HS=90.0-ZS : REM Height of Sun +2280 BT=10^(-.4*(MS(I)-MO(I)+32.5-HS-(Z/(360*K(I))))) +2290 BT=BT*(100/RS)*(1.0-10.0^(-.4*K(I)*X)) +2300 REM Daylight brightness +2310 C4=10.0^(-.4*K(I)*XS) +2320 FS=6.2E+07*(RS^(-2))+(10^(6.15-RS/40)) +2330 FS=FS+(10^5.36)*(1.06+((COS(RS*RD))^2)) +2340 BD=10^(-.4*(MS(I)-MO(I)+43.27)) +2350 BD=BD*(1-10^(-.4*K(I)*X)) +2360 BD=BD*(FS*C4+440000.0*(1-C4)) +2370 REM Total sky brightness +2380 IF BD>BT THEN GOTO 2410 +2390 B(I)=BN+BD +2400 GOTO 2420 +2410 B(I)=BN+BT +2420 IF ZM<90.0 THEN B(I)=B(I)+BM +2430 NEXT I +2440 PRINT "Sky brightness (UBVRI):"; +2450 PRINT USING " ##.#^^^^"; B(1), B(2), B(3), B(4), B(5) +2460 RETURN +9991 REM ============================== +9992 REM FROM "ASTRONOMICAL COMPUTING," +9993 REM SKY & TELESCOPE, MAY 1998 +9994 REM ============================== diff --git a/SKYTEL/vislimit.dif b/SKYTEL/vislimit.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/vislimit.run b/SKYTEL/vislimit.run new file mode 100644 index 0000000..44dec45 --- /dev/null +++ b/SKYTEL/vislimit.run @@ -0,0 +1,9 @@ +Zenith distance (deg.): ? 174 + +Airmass (gas, aerosol, ozone): 0.00 0.00 1.01 +Extinction Coefficients (UBVRI): 0.66 0.36 0.22 0.11 0.06 +Total Extinction (UBVRI): 0.00 0.00 0.03 0.01 0.00 +Sky brightness (UBVRI): 0.04.999651e-14 0.07.143514e-14 0.0 + +Visual Sky Brightness (nL): 64 +Visual Limiting Magnitude: 6.50 diff --git a/SKYTEL/wavel.80 b/SKYTEL/wavel.80 new file mode 100644 index 0000000..c67527d --- /dev/null +++ b/SKYTEL/wavel.80 @@ -0,0 +1,8 @@ + +DISTANCE? 98765 +WAVELENGTH = 661 + +DISTANCE? 43321 +WAVELENGTH = 668 + +DISTANCE? -1 diff --git a/SKYTEL/wavel.INP b/SKYTEL/wavel.INP new file mode 100644 index 0000000..9381451 --- /dev/null +++ b/SKYTEL/wavel.INP @@ -0,0 +1,3 @@ +98765 +43321 +-1 diff --git a/SKYTEL/wavel.OUT b/SKYTEL/wavel.OUT new file mode 100644 index 0000000..859b3dc --- /dev/null +++ b/SKYTEL/wavel.OUT @@ -0,0 +1,8 @@ + +DISTANCE? 98765 +WAVELENGTH = 661 + +DISTANCE? 43321 +WAVELENGTH = 668 + +DISTANCE? -1 diff --git a/SKYTEL/wavel.bas b/SKYTEL/wavel.bas new file mode 100644 index 0000000..ac70da8 --- /dev/null +++ b/SKYTEL/wavel.bas @@ -0,0 +1,27 @@ +100 REM WAVELENGTHS +110 REM +120 DATA 6563,14.5 +130 DATA 4861,49.0 +140 DATA 3889,85.0 +150 READ W1,S1 +160 READ W2,S2 +170 READ W3,S3 +180 P=W2-W1: Q=W3-W1: R=S2-S1 +190 S=S3-S1: T=S3-S2 +200 A=R/P: B=S/Q +210 U=A-B: V=T/U: L=W1-V +220 D1=A*(W2-L): D2=D1+S1 +230 C=(D1*T)/U +240 PRINT +250 INPUT "DISTANCE";D +260 IF D<0 THEN 310 +270 W=L+(C/(D2-D)) +280 W=INT(W+0.5) +290 PRINT "WAVELENGTH = ";W +300 GOTO 240 +310 END +320 REM ------------------------ +330 REM APPEARED IN ASTRONOMICAL +340 REM COMPUTING, SKY & TELE- +350 REM SCOPE, JUNE, 1985 +360 REM ------------------------ diff --git a/SKYTEL/wavel.dif b/SKYTEL/wavel.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/wavel.run b/SKYTEL/wavel.run new file mode 100644 index 0000000..c67527d --- /dev/null +++ b/SKYTEL/wavel.run @@ -0,0 +1,8 @@ + +DISTANCE? 98765 +WAVELENGTH = 661 + +DISTANCE? 43321 +WAVELENGTH = 668 + +DISTANCE? -1 diff --git a/SKYTEL/xyz.80 b/SKYTEL/xyz.80 new file mode 100644 index 0000000..af19c2f --- /dev/null +++ b/SKYTEL/xyz.80 @@ -0,0 +1,4 @@ +J,F ? 2.3456,6.789 +X: .96775 +Y: -.223455 +Z: -9.73883E-2 diff --git a/SKYTEL/xyz.INP b/SKYTEL/xyz.INP new file mode 100644 index 0000000..3de7669 --- /dev/null +++ b/SKYTEL/xyz.INP @@ -0,0 +1 @@ +2.3456,6.789 diff --git a/SKYTEL/xyz.OUT b/SKYTEL/xyz.OUT new file mode 100644 index 0000000..0452806 --- /dev/null +++ b/SKYTEL/xyz.OUT @@ -0,0 +1,4 @@ +J,F ? 2.3456,6.789 +X: .96775 +Y: -.223455 +Z: -9.73883E-2 diff --git a/SKYTEL/xyz.bas b/SKYTEL/xyz.bas new file mode 100644 index 0000000..469bbab --- /dev/null +++ b/SKYTEL/xyz.bas @@ -0,0 +1,79 @@ +500 REM X,Y,Z OF THE SUN +501 REM (EQUINOX 1950.0) +502 REM +503 INPUT "J,F ";J,F +504 J8=J-2415020: R1=3.14159265/180 +505 T=(J8+F)/36525 +506 P0=1.396041+0.000308*(T+0.5) +507 P0=P0*(T-0.499998) +508 A=100: GOSUB 529: G0=A+358.475833 +509 L0=A+279.696678-P0 +510 A=1336: GOSUB 529 +511 C0=A+270.434164-P0 +512 A=162: GOSUB 529 +513 V0=A+212.603219 +514 A=53: GOSUB 529: M0=A+319.529425 +515 A=8: GOSUB 529: J0=A+225.444651 +516 G=G0+T*(-0.950250-0.000150*T) +517 C=C0+T*(307.883142-0.001133*T) +518 L=L0+T*(0.768920+0.000303*T) +519 V=V0+T*(197.803875+0.001286*T) +520 M=M0+T*(59.8585+0.000181*T) +521 J=J0+T*154.906654 +522 G=G*R1: C=C*R1: L=L*R1 +523 V=V*R1: M=M*R1: J=J*R1 +524 GOSUB 532 +525 PRINT "X: ";X +526 PRINT "Y: ";Y +527 PRINT "Z: ";Z +528 END +529 REM NORMALIZATION +530 A=360*(A*T-INT(A*T)): RETURN +531 REM +532 X=0.000011*COS(2*G-L-2*J) +533 X=X+0.000011*COS(2*G+L-2*V) +534 X=X-0.000012*COS(G+L-V) +535 X=X-0.000012*COS(4*G-L-8*M+3*J) +536 X=X+0.000012*COS(4*G+L-8*M+3*J) +537 X=X-0.000014*COS(C-2*L) +538 X=X+0.000017*COS(C) +539 X=X+0.000018*SIN(2*G+L-2*V) +540 X=X-0.000021*T*COS(G+L) +541 X=X-0.000026*SIN(G-L-J) +542 X=X+0.000035*COS(2*G-L) +543 X=X+0.000063*T*COS(G-L) +544 X=X+0.000105*COS(2*G+L) +545 X=X+0.008374*COS(G+L) +546 X=X-0.025127*COS(G-L) +547 X=X+0.999860*COS(L) +548 REM +549 Y=0.000010*SIN(2*G+L-2*V) +550 Y=Y-0.000010*SIN(2*G-L-2*J) +551 Y=Y-0.000011*SIN(G+L-V) +552 Y=Y+0.000011*SIN(4*G-L-8*M+3*J) +553 Y=Y+0.000011*SIN(4*G+L-8*M+3*J) +554 Y=Y+0.000013*SIN(C-2*L) +555 Y=Y+0.000016*SIN(C) +556 Y=Y-0.000017*COS(2*G+L-2*V) +557 Y=Y-0.000019*T*SIN(G+L) +558 Y=Y-0.000024*COS(G-L-J) +559 Y=Y-0.000032*SIN(2*G-L) +560 Y=Y-0.000057*T*SIN(G-L) +561 Y=Y+0.000097*SIN(2*G+L) +562 Y=Y+0.007683*SIN(G+L) +563 Y=Y+0.023053*SIN(G-L) +564 Y=Y+0.917308*SIN(L) +565 REM +566 Z=-0.000010*COS(G-L-J) +567 Z=Z-0.000014*SIN(2*G-L) +568 Z=Z-0.000025*T*SIN(G-L) +569 Z=Z+0.000042*SIN(2*G+L) +570 Z=Z+0.003332*SIN(G+L) +571 Z=Z+0.009998*SIN(G-L) +572 Z=Z+0.397825*SIN(L) +573 RETURN +575 REM ------------------------ +576 REM APPEARED IN ASTRONOMICAL +577 REM COMPUTING, SKY & TELE- +578 REM SCOPE, NOVEMBER, 1985 +579 REM ------------------------ diff --git a/SKYTEL/xyz.dif b/SKYTEL/xyz.dif new file mode 100644 index 0000000..e69de29 diff --git a/SKYTEL/xyz.run b/SKYTEL/xyz.run new file mode 100644 index 0000000..af19c2f --- /dev/null +++ b/SKYTEL/xyz.run @@ -0,0 +1,4 @@ +J,F ? 2.3456,6.789 +X: .96775 +Y: -.223455 +Z: -9.73883E-2 diff --git a/allcms.exec b/allcms.exec index a49d549..ef8f686 100644 --- a/allcms.exec +++ b/allcms.exec @@ -17,7 +17,7 @@ -FINARGS -FILEDEF INPUT TAP1 (LRECL 80 BLKSIZE 32720 RECFM FB +FILEDEF INPUT TAP1 (LRECL 0 BLKSIZE 32760 RECFM U MVSUNZIP DD:INPUT &SRC FILEDEF INPUT CLEAR diff --git a/bwb_cmd.c b/bwb_cmd.c index 0ac97f9..bbcf864 100644 --- a/bwb_cmd.c +++ b/bwb_cmd.c @@ -1,49 +1,26 @@ /*************************************************************** - + bwb_cmd.c Miscellaneous Commands for Bywater BASIC Interpreter - - Commands: RUN - LET - LOAD - MERGE - CHAIN - NEW - RENUM - SAVE - LIST - GOTO - GOSUB - RETURN - ON - STOP - END - SYSTEM - TRON - TROFF - DELETE - RANDOMIZE - ENVIRON - CMDS (*debugging) - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ @@ -52,2241 +29,4861 @@ /* */ /* Those additionally marked with "DD" were at the suggestion of */ /* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include #include "bwbasic.h" -#include "bwb_mes.h" -#if HAVE_SIGNAL -#include -#endif -char err_gosubl[ MAXVARNAMESIZE + 1 ] = { '\0' }; /* line for error GOSUB */ - -#if ANSI_C -extern struct bwb_line *bwb_xnew( struct bwb_line *l ); -extern struct bwb_line *bwb_onerror( struct bwb_line *l ); -struct bwb_line *bwb_donum( struct bwb_line *l ); -struct bwb_line *bwb_dounnum( struct bwb_line *l ); -static int xl_line( FILE *file, struct bwb_line *l ); -#else -extern struct bwb_line *bwb_xnew(); -extern struct bwb_line *bwb_onerror(); -struct bwb_line *bwb_donum(); -struct bwb_line *bwb_dounnum(); -static int xl_line(); -#endif -/*************************************************************** +static int +xl_line(FILE * file, struct bwb_line * l); + - FUNCTION: bwb_null() +static int + LastLineNumber = -1; - DESCRIPTION: This is a null command function body, and - can be used as the basis for developing - new BASIC commands. +/*************************************************************** + + FUNCTION: bwb_rem() + + DESCRIPTION: This C function implements the BASIC rem + (REMark) command, ignoring the remainder + of the line. + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_null( struct bwb_line *l ) -#else -struct bwb_line * -bwb_null( l ) - struct bwb_line *l; -#endif - { +bwb_REM(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_null(): NULL command" ); - bwb_debug( bwb_ebuf ); -#endif + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); +} -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif +/*************************************************************** + + FUNCTION: bwb_let() + + DESCRIPTION: This C function implements the BASIC + LET assignment command, even if LET + is implied and not explicit. + + SYNTAX: LET variable = expression + +***************************************************************/ - return bwb_zline( l ); - } +struct bwb_line * +bwb_LET(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); -/*************************************************************** - FUNCTION: bwb_rem() + /* Call the expression interpreter to evaluate the assignment */ + + bwb_exp(l->buffer, TRUE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + return bwb_zline(l); - DESCRIPTION: This C function implements the BASIC rem - (REMark) command, ignoring the remainder - of the line. +} +/*************************************************************** + + FUNCTION: bwb_go + + DESCRIPTION: This C function implements the BASIC + GO command, branching appropriately to + GOTO or GOSUB. + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_rem( struct bwb_line *l ) -#else struct bwb_line * -bwb_rem( l ) - struct bwb_line *l; -#endif - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_rem(): REM command" ); - bwb_debug( bwb_ebuf ); -#endif +bwb_GO(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - /* do not use bwb_zline() here; blank out remainder of line */ + bwb_error(err_syntax); - l->next->position = 0; - return l->next; + return bwb_zline(l); - } +} /*************************************************************** + + FUNCTION: bwb_goto + + DESCRIPTION: This C function implements the BASIC + GOTO command. + + SYNTAX: GOTO line | label + +***************************************************************/ - FUNCTION: bwb_let() - DESCRIPTION: This C function implements the BASIC - LET assignment command, even if LET - is implied and not explicit. +struct bwb_line * +bwb_GOTO(struct bwb_line * l) +{ + struct bwb_line *x; + char tbuf[BasicStringLengthMax + 1]; - SYNTAX: LET variable = expression + bwx_DEBUG(__FUNCTION__); -***************************************************************/ + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); -#if ANSI_C -struct bwb_line * -bwb_let( struct bwb_line *l ) -#else -struct bwb_line * -bwb_let( l ) - struct bwb_line *l; -#endif + /* check for target label */ + x = find_label(tbuf); + if (x != NULL) { + x->position = 0; + return x; + } + return bwb_zline(l); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_let(): pos <%d> line <%s>", - l->position, l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - /* Call the expression interpreter to evaluate the assignment */ +/*************************************************************** + + FUNCTION: bwb_gosub() + + DESCRIPTION: This function implements the BASIC GOSUB + command. + + SYNTAX: GOSUB line | label + +***************************************************************/ - bwb_exp( l->buffer, TRUE, &( l->position ) ); +struct bwb_line * +bwb_GOSUB(struct bwb_line * l) +{ + struct bwb_line *x; + char tbuf[BasicStringLengthMax + 1]; + bwx_DEBUG(__FUNCTION__); - return bwb_zline( l ); + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); - } + x = find_label(tbuf); + if (x != NULL) + { + bwb_zline(l); -/*************************************************************** + bwb_incexec(); + /* set the new position to x and return x */ + x->position = 0; + bwb_setexec(x, 0, EXEC_GOSUB); - FUNCTION: bwb_go + return x; + } + return bwb_zline(l); - DESCRIPTION: This C function implements the BASIC - GO command, branching appropriately to - GOTO or GOSUB. +} +/*************************************************************** + + FUNCTION: bwb_return() + + DESCRIPTION: This function implements the BASIC RETURN + command. + + SYNTAX: RETURN + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_go( struct bwb_line *l ) -#else struct bwb_line * -bwb_go( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; +bwb_RETURN(struct bwb_line * l) +{ - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); + bwx_DEBUG(__FUNCTION__); - if ( strcmp( tbuf, CMD_XSUB ) == 0 ) - { - return bwb_gosub( l ); - } - - if ( strcmp( tbuf, CMD_XTO ) == 0 ) + while (CURTASK excs[CURTASK exsc].code != EXEC_GOSUB) + { + bwb_decexec(); + if (CURTASK excs[CURTASK exsc].code == EXEC_NORM) /* End of the line? */ { - return bwb_goto( l ); + bwb_error(err_retnogosub); } - -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_go(): Nonsense following GO" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - - return bwb_zline( l ); - } -/*************************************************************** + /* decrement the EXEC stack counter */ - FUNCTION: bwb_goto + bwb_decexec(); - DESCRIPTION: This C function implements the BASIC - GOTO command. + return CURTASK excs[CURTASK exsc].line; - SYNTAX: GOTO line | label +} +/*************************************************************** + + FUNCTION: bwb_on + + DESCRIPTION: This function implements the BASIC ON... + GOTO or ON...GOSUB statements. + + It will also detect the ON ERROR... statement + and pass execution to bwb_onerror(). + + SYNTAX: ON variable GOTO|GOSUB line|label[,...] + + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_goto( struct bwb_line *l ) -#else -struct bwb_line * -bwb_goto( l ) - struct bwb_line *l; -#endif - { +bwb_ON(struct bwb_line * l) +{ struct bwb_line *x; - char tbuf[ MAXSTRINGSIZE + 1 ]; + char tbuf[BasicStringLengthMax + 1]; + int p; + struct exp_ese *rvar; + int v; + int loop; + int num_lines; + int command; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_goto(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* Check for argument */ - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\n': - case '\r': - case ':': - bwb_error( err_noln ); + adv_ws(l->buffer, &(l->position)); - return bwb_zline( l ); - default: - break; - } + if (l->buffer[l->position] == '\0' || l->buffer[l->position] == OptionCommentChar) + { + bwb_error(err_incomplete); + return bwb_zline(l); + } + /* get the variable name, numerical constant, or expression */ - adv_element( l->buffer, &( l->position ), tbuf ); + adv_element(l->buffer, &(l->position), tbuf); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_goto(): buffer has <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif + /* evaluate the variable name or constant */ - /* check for target label */ + p = 0; + rvar = bwb_exp(tbuf, FALSE, &p); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + v = exp_getival(rvar); -#if STRUCT_CMDS - if ( isalpha( tbuf[ 0 ] )) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_goto(): found LABEL, <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif + /* Get GOTO or GOSUB statements */ - x = find_label( tbuf ); - x->position = 0; - return x; - } + adv_element(l->buffer, &(l->position), tbuf); + if (strcasecmp(tbuf, "GO") == 0) + { + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); - else + if (strcasecmp(tbuf, "TO") == 0) { - for ( x = &CURTASK bwb_start; x != &CURTASK bwb_end; x = x->next ) - { - if ( x->number == atoi( tbuf ) ) - { - - /* found the requested number */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_goto(): returning line <%d>", x->number ); - bwb_debug( bwb_ebuf ); -#endif - - x->position = 0; - return x; - } - } + command = C_GOTO; } - -#else - - for ( x = &CURTASK bwb_start; x != &CURTASK bwb_end; x = x->next ) + else + if (strcasecmp(tbuf, "SUB") == 0) { - if ( x->number == atoi( tbuf ) ) - { + command = C_GOSUB; + } + else + { + sprintf(bwb_ebuf, ERR_ONNOGOTO); + bwb_error(bwb_ebuf); - /* found the requested number */ + return bwb_zline(l); + } + } + else + if (strcasecmp(tbuf, "GOTO") == 0) + { + command = C_GOTO; + } + else + if (strcasecmp(tbuf, "GOSUB") == 0) + { + command = C_GOSUB; + } + else + { + sprintf(bwb_ebuf, ERR_ONNOGOTO); + bwb_error(bwb_ebuf); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_goto(): returning line <%d>", x->number ); - bwb_debug( bwb_ebuf ); -#endif + return bwb_zline(l); + } - x->position = 0; - return x; - } + if (v < 1) + { + if (OptionFlags & OPTION_BUGS_ON) + { + /* fall-thru to next line without error */ + /* advance to end of segment */ + adv_eos(l->buffer, &(l->position)); } + else + { + /* ERROR */ + bwb_error(err_valoorange); + } + return bwb_zline(l); + } + num_lines = 0; -#endif + loop = TRUE; + while (loop == TRUE) + { - sprintf( bwb_ebuf, err_lnnotfound, atoi( tbuf ) ); - bwb_error( bwb_ebuf ); + /* read a line|label */ - return bwb_zline( l ); - } + inp_adv(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); -/*************************************************************** - FUNCTION: bwb_gosub() + num_lines++; - DESCRIPTION: This function implements the BASIC GOSUB - command. + if (num_lines == v) + { + loop = FALSE; + } + /* check for end of line */ - SYNTAX: GOSUB line | label + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == '\0' || l->buffer[l->position] == OptionCommentChar) + { + loop = FALSE; + } + } -***************************************************************/ + /* advance to end of segment */ -#if ANSI_C -struct bwb_line * -bwb_gosub( struct bwb_line *l ) -#else -struct bwb_line * -bwb_gosub( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *x; - char atbuf[ MAXSTRINGSIZE + 1 ]; + adv_eos(l->buffer, &(l->position)); - /* Check for argument */ + /* Be sure value is in range */ - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) + if (v > num_lines) + { + if (OptionFlags & OPTION_BUGS_ON) { - case '\0': - case '\n': - case '\r': - case ':': - sprintf( bwb_ebuf, err_noln ); - bwb_error( bwb_ebuf ); - - return bwb_zline( l ); - default: - break; + /* fall-thru to next line without error */ + /* advance to end of segment */ + adv_eos(l->buffer, &(l->position)); + } + else + { + /* ERROR */ + bwb_error(err_valoorange); } + return bwb_zline(l); + } + x = find_label(tbuf); + if (x == NULL) + { + return bwb_zline(l); + } + if (command == C_GOTO) + { - /* get the target line number in tbuf */ - adv_element( l->buffer, &( l->position ), atbuf ); + x->position = 0; + bwb_setexec(x, 0, CURTASK excs[CURTASK exsc].code); -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif + return x; + + } + else + if (command == C_GOSUB) + { - /* check for a label rather than line number */ -#if STRUCT_CMDS + /* save current stack level */ - if ( isalpha( atbuf[ 0 ] )) - { - x = find_label( atbuf ); + bwb_setexec(l, l->position, CURTASK excs[CURTASK exsc].code); -#if MULTISEG_LINES - CURTASK excs[ CURTASK exsc ].position = l->position; -#endif + /* increment exec stack */ bwb_incexec(); - /* set the new position to x and return x */ - x->cmdnum = -1; - x->marked = FALSE; + /* set the new position to x and return x */ x->position = 0; - bwb_setexec( x, 0, EXEC_GOSUB ); + bwb_setexec(x, 0, EXEC_GOSUB); return x; + } + sprintf(bwb_ebuf, "in bwb_on(): invalid value for command."); + bwb_error(bwb_ebuf); - } - -#endif - - for ( x = &CURTASK bwb_start; x != &CURTASK bwb_end; x = x->next ) - { - - if ( x->number == atoi( atbuf )) - { + return bwb_zline(l); - /* this is the line we are looking for */ +} -#if MULTISEG_LINES - CURTASK excs[ CURTASK exsc ].position = l->position; -#endif +/*************************************************************** + + FUNCTION: bwb_stop() + + DESCRIPTION: This C function implements the BASIC + STOP command, interrupting program flow + at a specific point. + + SYNTAX: STOP + +***************************************************************/ - /* increment the EXEC stack */ +struct bwb_line * +bwb_STOP(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - bwb_incexec(); + stopped_line = l->number; + bwx_STOP(); - /* set the new position to x and return x */ + return bwb_END(l); +} - x->cmdnum = -1; - x->marked = FALSE; - x->position = 0; - bwb_setexec( x, 0, EXEC_GOSUB ); +/*************************************************************** + + FUNCTION: bwb_xend() + + DESCRIPTION: This C function implements the BASIC + END command, checking for END SUB + or END FUNCTION, else stopping program + execution for a simple END command. + +***************************************************************/ - return x; - } - } +struct bwb_line * +bwb_END(struct bwb_line * l) +{ - /* the requested line was not found */ - sprintf( bwb_ebuf, err_lnnotfound, atoi( atbuf ) ); - bwb_error( bwb_ebuf ); + /* a simple END statement */ + bwx_DEBUG(__FUNCTION__); - return bwb_zline( l ); + stopped_line = l->number; - } + break_handler(); -/*************************************************************** + return &CURTASK bwb_end; - FUNCTION: bwb_return() - DESCRIPTION: This function implements the BASIC RETURN - command. - SYNTAX: RETURN +} +/*************************************************************** + + FUNCTION: bwb_run() + + DESCRIPTION: This C function implements the BASIC + RUN command. + + Even though RUN is not a core statement, + the function bwb_run() is called from + core, so it must be present for a minimal + implementation. + + SYNTAX: RUN [line]|[file-name] + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_return( struct bwb_line *l ) -#else struct bwb_line * -bwb_return( l ) - struct bwb_line *l; -#endif - { +bwb_RUN(struct bwb_line * l) +{ + struct bwb_line *current; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_return() at line <%d> cmdnum <%d>", - l->number, l->cmdnum ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - /* see if old position was "GOSUB" */ + /* see if there is an element */ + current = NULL; + + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == '\0' || l->buffer[l->position] == OptionCommentChar) + { + current = CURTASK bwb_start.next; + var_CLEAR(); + } + else + { + struct exp_ese *e; -/* JBV 1/20/97 */ -/* - if ( CURTASK excs[ CURTASK exsc ].code != EXEC_GOSUB ) + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) { - bwb_error( err_retnogosub ); + return bwb_zline(l); } -*/ - - /*--------------------------------------------------------------*/ - /* Make sure we are at the right stack level! */ - /* If we aren't (which could happen for legit reasons), fix the */ - /* exec stack. */ - /* JBV, 1/20/97 */ - /*--------------------------------------------------------------*/ - while ( CURTASK excs[ CURTASK exsc ].code != EXEC_GOSUB ) - { - bwb_decexec(); - if ( CURTASK excs[ CURTASK exsc ].code == EXEC_NORM ) /* End of the line? */ + if (e->type == STRING) + { + /* check its type: if it is a STRING, open the file + * and execute it */ + FILE *input; + char tbuf[BasicStringLengthMax + 1]; + + bwb_NEW(l); /* clear memory */ + str_btoc(tbuf, exp_getsval(e)); /* get string in tbuf */ + if ((input = fopen(tbuf, "r")) == NULL) /* open file */ + { + sprintf(bwb_ebuf, err_openfile, tbuf); + bwb_error(bwb_ebuf); + } + bwb_fload(input); /* load program */ + current = &CURTASK bwb_start; /* JBV */ + } + else { - bwb_error( err_retnogosub ); + /* check its type: if it is a NUMBER, execute the + * line */ + int go_lnumber; /* line number to go to */ + struct bwb_line *x; + + go_lnumber = exp_getival(e); + for (x = CURTASK bwb_start.next; x != &CURTASK bwb_end; x = x->next) + { + if (x->number == go_lnumber) + { + current = x; + } + } + if (current == NULL) + { + sprintf(bwb_ebuf, err_lnnotfound, go_lnumber); + bwb_error(bwb_ebuf); + return &CURTASK bwb_end; + } } } + bwb_scan(); - /* decrement the EXEC stack counter */ + current->position = 0; + CURTASK exsc = 0; + bwb_setexec(current, 0, EXEC_NORM); - bwb_decexec(); - /* restore position and return old line */ + /* RUN */ + bwb_Warning_Clear(); + stopped_line = 0; + SetOnError(0); -#if MULTISEG_LINES - CURTASK excs[ CURTASK exsc ].line->position - = CURTASK excs[ CURTASK exsc ].position; - return CURTASK excs[ CURTASK exsc ].line; -#else - CURTASK excs[ CURTASK exsc ].line->next->position = 0; - return CURTASK excs[ CURTASK exsc ].line->next; -#endif - } + return current; -/*************************************************************** +} - FUNCTION: bwb_on +/*************************************************************** + + FUNCTION: bwb_cont() + + DESCRIPTION: This C function implements the BASIC + CONT command. + + SYNTAX: CONT + +***************************************************************/ - DESCRIPTION: This function implements the BASIC ON... - GOTO or ON...GOSUB statements. +struct bwb_line * +bwb_CONT(struct bwb_line * l) +{ + struct bwb_line *current, *x; - It will also detect the ON ERROR... statement - and pass execution to bwb_onerror(). + bwx_DEBUG(__FUNCTION__); - SYNTAX: ON variable GOTO|GOSUB line[,line,line,...] - LIMITATION: As implemented here, the ON...GOSUB|GOTO - command recognizes line numbers only - (not labels). + /* see if there is an element */ -***************************************************************/ + current = NULL; -#if ANSI_C -struct bwb_line * -bwb_on( struct bwb_line *l ) -#else -struct bwb_line * -bwb_on( l ) - struct bwb_line *l; -#endif + if (stopped_line > 0) { - struct bwb_line *oline, *x; - char varname[ MAXVARNAMESIZE + 1 ]; - char tbuf[ MAXSTRINGSIZE + 1 ]; - static int p; - struct exp_ese *rvar; - int v; - int loop; - int num_lines; - int command; - int lines[ MAX_GOLINES ]; - char sbuf[ 7 ]; - - /* Check for argument */ - - adv_ws( l->buffer, &( l->position ) ); - - switch( l->buffer[ l->position ] ) + for (x = CURTASK bwb_start.next; (x != &CURTASK bwb_end) && (current == NULL); x = x->next) { - case '\0': - case '\n': - case '\r': - case ':': - sprintf( bwb_ebuf, err_incomplete ); - bwb_error( bwb_ebuf ); - - return bwb_zline( l ); - default: - break; + if (x->number > stopped_line) + { + current = x; + } } + } + if (current == NULL) + { + /* same as "RUN" */ + current = CURTASK bwb_start.next; + } + bwb_scan(); - /* get the variable name or numerical constant */ - - adv_element( l->buffer, &( l->position ), varname ); - - /* check for ON ERROR statement */ + current->position = 0; + CURTASK exsc = 0; + bwb_setexec(current, 0, EXEC_NORM); -#if COMMON_CMDS - strncpy( sbuf, varname, 6 ); - bwb_strtoupper( sbuf ); - if ( strcmp( sbuf, CMD_XERROR ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_on(): detected ON ERROR" ); - bwb_debug( bwb_ebuf ); -#endif - return bwb_onerror( l ); - } -#endif /* COMMON_CMDS */ + /* CONT */ + stopped_line = 0; - /* evaluate the variable name or constant */ - p = 0; - rvar = bwb_exp( varname, FALSE, &p ); - v = (int) exp_getnval( rvar ); + return current; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_on(): value is <%d>", v ); - bwb_debug( bwb_ebuf ); -#endif +} - /* Get GOTO or GOSUB statements */ - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - if ( strncmp( tbuf, CMD_GOTO, (size_t) strlen( CMD_GOTO ) ) == 0 ) - { - command = getcmdnum( CMD_GOTO ); - } - else if ( strncmp( tbuf, CMD_GOSUB, (size_t) strlen( CMD_GOSUB ) ) == 0 ) - { - command = getcmdnum( CMD_GOSUB ); - } - else - { - sprintf( bwb_ebuf, ERR_ONNOGOTO ); - bwb_error( bwb_ebuf ); +/*************************************************************** + + FUNCTION: bwb_new() + + DESCRIPTION: This C function implements the BASIC + NEW command. + + Even though NEW is not a core statement, + the function bwb_run() is called from + core, so it must be present for a minimal + implementation. + + SYNTAX: NEW + +***************************************************************/ - return bwb_zline( l ); - } +struct bwb_line * +bwb_NEW(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - num_lines = 0; + /* clear program in memory */ + bwb_xnew(&bwb_start); - loop = TRUE; - while( loop == TRUE ) - { + /* clear all variables */ + var_CLEAR(); - /* read a line number */ + /* NEW */ + bwb_Warning_Clear(); + stopped_line = 0; + SetOnError(0); - inp_adv( l->buffer, &( l->position ) ); - adv_element( l->buffer, &( l->position ), tbuf ); - lines[ num_lines ] = atoi( tbuf ); + return bwb_zline(l); - ++num_lines; +} - if ( num_lines >= MAX_GOLINES ) - { - loop = FALSE; - } +/* End of Core Functions Section */ - /* check for end of line */ - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\n': - case '\r': - case ':': - loop = FALSE; - break; - } +/*************************************************************** + + FUNCTION: bwb_system() + + DESCRIPTION: This C function implements the BASIC + SYSTEM command, exiting to the operating + system (or calling program). It is also + called by the QUIT command, a functional + equivalent for SYSTEM in Bywater BASIC. + + SYNTAX: SYSTEM + QUIT + +***************************************************************/ +struct bwb_line * +bwb_QUIT(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + return bwb_SYSTEM(l); +} - } +struct bwb_line * +bwb_SYSTEM(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - /* advance to end of segment */ + prn_xprintf("\n"); + bwx_terminate(); + return &CURTASK bwb_end;/* to make LINT happy */ -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position ) ); -#endif +} - /* Be sure value is in range */ +/*************************************************************** + + FUNCTION: bwb_load() + + DESCRIPTION: This C function implements the BASIC + LOAD command. + + SYNTAX: LOAD [file-name] + +***************************************************************/ - if ( ( v < 1 ) || ( v > num_lines )) - { - sprintf( bwb_ebuf, err_valoorange ); - bwb_error( bwb_ebuf ); +struct bwb_line * +bwb_LOAD(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - return bwb_zline( l ); - } + /* clear current contents */ + bwb_NEW(l); - if ( command == getcmdnum( CMD_GOTO )) - { + /* call xload function to load program in memory */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_on(): executing ON...GOTO" ); - bwb_debug( bwb_ebuf ); -#endif + bwb_xload(l); - oline = NULL; - for ( x = &CURTASK bwb_start; x != &CURTASK bwb_end; x = x->next ) - { - if ( x->number == lines[ v - 1 ] ) - { + return bwb_zline(l); - /* found the requested number */ +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_on(): returning line <%d>", x->number ); - bwb_debug( bwb_ebuf ); -#endif +/*************************************************************** + + FUNCTION: bwb_xload() + + DESCRIPTION: This C function loads a BASIC program + into memory. + +***************************************************************/ - oline = x; - } - } +struct bwb_line * +bwb_xload(struct bwb_line * l) +{ + FILE *loadfile; - if ( oline == NULL ) - { - bwb_error( err_lnnotfound ); - return bwb_zline( l ); - } + bwx_DEBUG(__FUNCTION__); - oline->position = 0; - bwb_setexec( oline, 0, CURTASK excs[ CURTASK exsc ].code ); + /* Get an argument for filename */ - return oline; + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == '\0' || l->buffer[l->position] == OptionCommentChar) + { + /* default is the last filename used by LOAD or SAVE */ + } + else + { + /* Section added by JBV (bug found by DD) */ + struct exp_ese *e; /* JBV */ + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); } - - else if ( command == getcmdnum( CMD_GOSUB )) + if (e->type != STRING) { + sprintf(bwb_ebuf, "in bwb_xload(): Missing filespec"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + str_btoc(CURTASK progfile, exp_getsval(e)); /* JBV */ + } + if (strlen(CURTASK progfile) == 0) + { + bwb_error(err_nofn); /* Added by JBV (bug found by DD) */ + return bwb_zline(l); + } + if ((loadfile = fopen(CURTASK progfile, "r")) == NULL) + { + sprintf(bwb_ebuf, err_openfile, CURTASK progfile); + bwb_error(bwb_ebuf); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_on(): executing ON...GOSUB" ); - bwb_debug( bwb_ebuf ); -#endif - - /* save current stack level */ - - bwb_setexec( l, l->position, CURTASK excs[ CURTASK exsc ].code ); - - /* increment exec stack */ - - bwb_incexec(); + return bwb_zline(l); + } + bwb_fload(loadfile); - /* get memory for line and buffer */ - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( oline = CALLOC( 1, sizeof( struct bwb_line ), "bwb_on") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_on(): failed to find memory for oline" ); -#else - bwb_error( err_getmem ); -#endif - } - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( oline->buffer = CALLOC( 1, MAXSTRINGSIZE + 1, "bwb_on") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_on(): failed to find memory for oline buffer" ); -#else - bwb_error( err_getmem ); -#endif - } + return bwb_zline(l); +} - CURTASK excs[ CURTASK exsc ].while_line = oline; +/*************************************************************** + + FUNCTION: bwb_save() + + DESCRIPTION: This C function implements the BASIC + SAVE command. + + SYNTAX: SAVE [file-name] + +***************************************************************/ +#define CSAVE_VERSION_1 0x20150218 - sprintf( oline->buffer, "%s %d", CMD_GOSUB, lines[ v - 1 ] ); - oline->marked = FALSE; - oline->position = 0; - oline->next = l->next; - bwb_setexec( oline, 0, EXEC_ON ); - return oline; - } +struct bwb_line * +bwb_CSAVE_(struct bwb_line * l) +{ + /* CSAVE* NumericArrayName */ + char tbuf[BasicStringLengthMax + 1]; + struct bwb_variable *v; + FILE *f; + unsigned long n; + unsigned long t; - else - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_on(): invalid value for command." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } + bwx_DEBUG(__FUNCTION__); + bwb_getvarname(l->buffer, tbuf, &(l->position)); + v = var_find(tbuf); + if (v == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); } + /* variable MUST be numeric */ + if (v->type == STRING) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* variable MUST be an array */ + if ((v->dimensions == 1) && (v->array_sizes[0] == 1)) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* * variable storage is a mess, * we bypass that tradition here. */ + t = 1; + for (n = 0; n < v->dimensions; n++) + { + t *= v->array_sizes[n]; + } + if (t <= 1) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* open file */ + f = fopen(v->name, "w"); + if (f == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* write version number */ + n = CSAVE_VERSION_1; + fwrite(&n, sizeof(long), 1, f); + /* write total number of elements */ + fwrite(&t, sizeof(long), 1, f); + /* write data */ + fwrite(v->memnum, sizeof(BasicNumberType), t, f); + /* OK */ + fclose(f); + return bwb_zline(l); +} -/*************************************************************** - - FUNCTION: bwb_stop() - DESCRIPTION: This C function implements the BASIC - STOP command, interrupting program flow - at a specific point. +struct bwb_line * +bwb_CLOAD_(struct bwb_line * l) +{ + /* CLOAD* NumericArrayName */ + char tbuf[BasicStringLengthMax + 1]; + struct bwb_variable *v; + FILE *f; + unsigned long n; + unsigned long t; - SYNTAX: STOP -***************************************************************/ + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -struct bwb_line * -bwb_stop( struct bwb_line *l ) -#else -struct bwb_line * -bwb_stop( l ) - struct bwb_line *l; -#endif + bwb_getvarname(l->buffer, tbuf, &(l->position)); + v = var_find(tbuf); + if (v == NULL) { - -#if HAVE_SIGNAL -#if HAVE_RAISE - raise( SIGINT ); -#else - kill( getpid(), SIGINT ); -#endif -#endif - - return bwb_xend( l ); + bwb_error(err_syntax); + return bwb_zline(l); } + /* variable MUST be numeric */ + if (v->type == STRING) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* variable MUST be an array */ + if ((v->dimensions == 1) && (v->array_sizes[0] == 1)) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* variable storage is a mess, we bypass that tradition here. */ + t = 1; + for (n = 0; n < v->dimensions; n++) + { + t *= v->array_sizes[n]; + } + if (t <= 1) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* open file */ + f = fopen(v->name, "r"); + if (f == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* read version number */ + n = 0; + fread(&n, sizeof(long), 1, f); + if (n != CSAVE_VERSION_1) + { + fclose(f); + bwb_error("Bad File"); + return bwb_zline(l); + } + /* read total number of elements */ + n = 0; + fread(&n, sizeof(long), 1, f); + if (n != t) + { + fclose(f); + bwb_error("Size Mismatch"); + return bwb_zline(l); + } + /* read data */ + fread(v->memnum, sizeof(BasicNumberType), t, f); + /* OK */ + fclose(f); + return bwb_zline(l); +} -/*************************************************************** - - FUNCTION: bwb_xend() - - DESCRIPTION: This C function implements the BASIC - END command, checking for END SUB - or END FUNCTION, else stopping program - execution for a simple END command. -***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_xend( struct bwb_line *l ) -#else +bwb_CSAVE(struct bwb_line * l) +{ + /* CSAVE [filename$] */ + bwx_DEBUG(__FUNCTION__); + return bwb_SAVE(l); +} + struct bwb_line * -bwb_xend( l ) - struct bwb_line *l; -#endif - { -#if STRUCT_CMDS - char tbuf[ MAXSTRINGSIZE + 1 ]; -#endif +bwb_CLOAD(struct bwb_line * l) +{ + /* CLOAD [filename$] */ + bwx_DEBUG(__FUNCTION__); + return bwb_LOAD(l); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xend(): entered funtion" ); - bwb_debug( bwb_ebuf ); -#endif - /* Detect END SUB or END FUNCTION here */ +struct bwb_line * +bwb_SAVE(struct bwb_line * l) +{ + FILE *outfile; -#if STRUCT_CMDS - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); + bwx_DEBUG(__FUNCTION__); - if ( strcmp( tbuf, CMD_XSUB ) == 0 ) - { - return bwb_endsub( l ); - } - if ( strcmp( tbuf, CMD_XFUNCTION ) == 0 ) - { - return bwb_endfnc( l ); - } + /* Get an argument for filename */ - if ( strcmp( tbuf, CMD_XIF ) == 0 ) + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == '\0' || l->buffer[l->position] == OptionCommentChar) + { + /* default is the last filename used by LOAD or SAVE */ + } + else + { + /* Section added by JBV (bug found by DD) */ + struct exp_ese *e; /* JBV */ + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) { - return bwb_endif( l ); + return bwb_zline(l); } - - if ( strcmp( tbuf, CMD_XSELECT ) == 0 ) + if (e->type != STRING) { - return bwb_endselect( l ); + sprintf(bwb_ebuf, "in bwb_save(): Missing filespec"); + bwb_error(bwb_ebuf); + return bwb_zline(l); } + str_btoc(CURTASK progfile, exp_getsval(e)); /* JBV */ + } + if (strlen(CURTASK progfile) == 0) + { + bwb_error(err_nofn); /* Added by JBV (bug found by DD) */ + return bwb_zline(l); + } + if ((outfile = fopen(CURTASK progfile, "w")) == NULL) + { + sprintf(bwb_ebuf, err_openfile, CURTASK progfile); + bwb_error(bwb_ebuf); -#endif /* STRUCT_CMDS */ + return bwb_zline(l); + } + bwb_xlist(l, outfile); + fclose(outfile); - /* else a simple END statement */ - break_handler(); + return bwb_zline(l); - return &CURTASK bwb_end; - } +} /*************************************************************** + + FUNCTION: bwb_list() + + DESCRIPTION: This C function implements the BASIC + LIST command. + + SYNTAX: LIST line[-line] + +***************************************************************/ - FUNCTION: bwb_do() +struct bwb_line * +bwb_LIST(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - DESCRIPTION: This C function implements the BASIC DO - command, also checking for the DO NUM - and DO UNNUM commands for interactive - programming environment. + bwb_xlist(l, stdout); + return bwb_zline(l); +} +/*************************************************************** + + FUNCTION: bwb_xlist() + + DESCRIPTION: This C function lists the program in + memory to a specified output device. + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_do( struct bwb_line *l ) -#else struct bwb_line * -bwb_do( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; +bwb_xlist(struct bwb_line * l, FILE * file) +{ + struct bwb_line *start, *end, *current; + BasicLineNumberType s, e; + int f, r; + + bwx_DEBUG(__FUNCTION__); + + /* Default first value */ + start = CURTASK bwb_start.next; + s = BasicLineNumberMin; + + + /* Default last value */ + end = &CURTASK bwb_end; + e = BasicLineNumberMax; + + + /* Parse parameters */ + r = bwb_numseq(&(l->buffer[l->position]), &s, &e); +/* +r example += ================ +0 LIST +1 LIST 1000 +4 LIST - +5 LIST 1000- +6 LIST -9000 +7 LIST 1000-9000 +*/ - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - /* if there is no argument (with STRUCT_CMDS) then we have a - DO-LOOP structure: pass on to bwb_doloop() in bwb_stc.c */ -#if STRUCT_CMDS + if (r == 1) + { + /* LIST 1000 */ + e = s; + } + /* advance to the end of the segment */ + adv_eos(l->buffer, &(l->position)); + - if ( strlen( tbuf ) == 0 ) + /* abort if either number is out of range */ + if (s < BasicLineNumberMin || s > BasicLineNumberMax) + { + /* LIST 99999- */ + sprintf(bwb_ebuf, err_lnnotfound, s); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + if (e < BasicLineNumberMin || e > BasicLineNumberMax) + { + /* LIST -99999 */ + sprintf(bwb_ebuf, err_lnnotfound, e); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + if (s > e) + { + /* LIST 9999-1 */ + sprintf(bwb_ebuf, err_lnnotfound, s); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + /* find the first line that actually exists that is >= START */ + f = FALSE; + for (current = CURTASK bwb_start.next; (f == FALSE) && (current != &CURTASK bwb_end); current = current->next) + { + if (current->number >= s) { - return bwb_doloop( l ); + f = TRUE; + start = current; } + } + /* "start" now points at the first line that actually exists that is + * >= START */ - if ( strcmp( tbuf, CMD_WHILE ) == 0 ) + if (r == 1) + { + /* LIST 999 */ + if (s != start->number) { - return bwb_while( l ); + /* THE SPECIFIED LINE DOES NOT EXIST */ + f = FALSE; } -#endif - -#if INTERACTIVE - if ( strcmp( tbuf, CMD_XNUM ) == 0 ) + } + /* check and see if a line number was found */ + if (f == FALSE) + { + if (l->number > 0) { - return bwb_donum( l ); + /* this is an executing program */ + sprintf(bwb_ebuf, err_lnnotfound, s); + bwb_error(bwb_ebuf); } - - if ( strcmp( tbuf, CMD_XUNNUM ) == 0 ) + return bwb_zline(l); + } + f = FALSE; + if (e > s) + { + /* find the last line that actually exists that is <= END */ + for (current = start; current != &CURTASK bwb_end; current = current->next) { - return bwb_dounnum( l ); + if (current->number <= e) + { + f = TRUE; + end = current; + } } -#endif /* INTERACTIVE */ + } + else + { + /* e == s */ + f = TRUE; + end = start; + } + /* "end" now points at the last line that actually exists that is <= + * END */ - /* if none of these occurred, then presume an error */ - bwb_error( err_syntax ); - return bwb_zline( l ); + + if (r == 6 || r == 7) + { + /* LIST -999 */ + if (e < end->number) + { + /* THERE ARE NO LINES LESS THAN SPECIFIED */ + f = FALSE; + } + } + /* "end" is always after "start" */ + end = end->next; + while (end->number <= e) + { + end = end->next; } + /* * "end" now points at the first line * that actually exists that + * is > END */ -/*************************************************************** - FUNCTION: bwb_run() + /* check and see if a line number was found */ + if (f == FALSE) + { + if (l->number > 0) + { + /* this is an executing program */ + sprintf(bwb_ebuf, err_lnnotfound, e); + bwb_error(bwb_ebuf); + } + return bwb_zline(l); + } + /* now go through and list appropriate lines */ + bwb_scan(); + LastLineNumber = -1; + for (current = start; current != end; current = current->next) + { + xl_line(file, current); + } + fprintf(file, "\n"); - DESCRIPTION: This C function implements the BASIC - RUN command. + return bwb_zline(l); - Even though RUN is not a core statement, - the function bwb_run() is called from - core, so it must be present for a minimal - implementation. - SYNTAX: RUN [line]|[file-name] +} +/*************************************************************** + + FUNCTION: xl_line() + + DESCRIPTION: This function lists a single program + line to a specified device of file. + It is called by bwb_xlist(); + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_run( struct bwb_line *l ) -#else -struct bwb_line * -bwb_run( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *current, *x; - int go_lnumber; /* line number to go to */ - char tbuf[ MAXSTRINGSIZE + 1 ]; - struct exp_ese *e; - FILE *input; +static int +xl_line(FILE * file, struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_run(): entered function. buffer <%s> pos <%d>", - l->buffer, l->position ); - bwb_debug( bwb_ebuf ); -#endif + if ((file == stdout) || (file == stderr)) + { + char tbuf[32]; - /* see if there is an element */ - current = NULL; - adv_ws( l->buffer, &( l->position ) ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_run(): check buffer <%s> pos <%d> char <0x%x>", - l->buffer, l->position, l->buffer[ l->position ] ); - bwb_debug( bwb_ebuf ); -#endif - switch ( l->buffer[ l->position ] ) + if (LastLineNumber == l->number) { - case '\0': - case '\n': - case '\r': - case ':': -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_run(): no argument; begin at start.next" ); - bwb_debug( bwb_ebuf ); -#endif - current = CURTASK bwb_start.next; - e = NULL; - break; - default: - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - break; + strcpy(tbuf, " :"); } - - /* check its type: if it is a string, open the file and execute it */ - - if (( e != NULL ) && ( e->type == STRING )) + else { - bwb_new( l ); /* clear memory */ - str_btoc( tbuf, exp_getsval( e ) ); /* get string in tbuf */ - if ( ( input = fopen( tbuf, "r" )) == NULL ) /* open file */ - { - sprintf( bwb_ebuf, err_openfile, tbuf ); - bwb_error( bwb_ebuf ); - } - bwb_fload( input ); /* load program */ - - /* Next line removed by JBV (unnecessary recursion asks for trouble) */ - /* bwb_run( &CURTASK bwb_start ); */ /* and call bwb_run() recursively */ - current = &CURTASK bwb_start; /* JBV */ + sprintf(tbuf, "%5d:", l->number); } + prn_xprintf(tbuf); - /* else if it is a line number, execute the program in memory - at that line number */ - - /* Removed by JBV */ - /* else - { */ - - /* Removed by JBV */ - /* if ( current == NULL ) - { */ - - /* Added expression type check and changed loop boundaries (JBV) */ - if (( e != NULL ) && ( e->type != STRING )) - { - go_lnumber = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_run(): element detected <%s>, lnumber <%d>", - tbuf, go_lnumber ); - bwb_debug( bwb_ebuf ); + if (OptionFlags & OPTION_COVERAGE_ON) + { +#if 0 + sprintf(tbuf, "%c:", l->Coverage); + prn_xprintf(tbuf); #endif - - for ( x = CURTASK bwb_start.next; x != &CURTASK bwb_end; x = x->next ) - { - if ( x->number == go_lnumber ) - { - current = x; - } - } + if( l->LineFlags & LINE_EXECUTED ) + { + prn_xprintf("*"); } - - /* } */ /* Removed by JBV */ - - if ( current == NULL ) + else { - sprintf( bwb_ebuf, err_lnnotfound, go_lnumber ); - bwb_error( bwb_ebuf ); - return &CURTASK bwb_end; + prn_xprintf(" "); } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_run(): ready to run starting at line %d", - current->number ); - bwb_debug( bwb_ebuf ); -#endif - - if ( CURTASK rescan == TRUE ) + prn_xprintf(":"); + } + if (OptionIndentValue > 0) + { + int i; + for (i = 0; i < l->Indention; i++) { - bwb_scan(); + int j; + for (j = 0; j < OptionIndentValue; j++) + { + prn_xprintf(" "); + } } + } + prn_xprintf(l->buffer); + prn_xprintf("\n"); - current->position = 0; - CURTASK exsc = 0; - bwb_setexec( current, 0, EXEC_NORM ); - - /* } */ /* Removed by JBV */ + } + else + { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_run(): function complete." ); - bwb_debug( bwb_ebuf ); +#if 0 + if (LastLineNumber == l->number) + { + fprintf(file, "%s\n", l->buffer); + } + else + { + fprintf(file, "%d %s\n", l->number, l->buffer); + } #endif - - return current; - + if (LastLineNumber == l->number && OptionStatementChar != '\0' ) + { + fprintf(file, "%c", OptionStatementChar); + } + else + if(LastLineNumber == -1 ) + { + /* first line, do nothing */ + } + else + { + fprintf(file, "\n"); + } + + if( l->LineFlags & LINE_NUMBERED ) + { + fprintf(file, "%d ", l->number); + } + + fprintf(file, "%s", l->buffer); } + LastLineNumber = l->number; + + return TRUE; +} /*************************************************************** + + FUNCTION: bwb_delete() + + DESCRIPTION: This C function implements the BASIC + DELETE command for interactive programming, + deleting a specified program line (or lines) + from memory. + + SYNTAX: DELETE line[-line] + +***************************************************************/ - FUNCTION: bwb_new() - DESCRIPTION: This C function implements the BASIC - NEW command. +struct bwb_line * +bwb_DELETE(struct bwb_line * l) +{ + struct bwb_line *start, *end, *current, *previous, *p, *next; + BasicLineNumberType s, e; + int f, r; - Even though NEW is not a core statement, - the function bwb_run() is called from - core, so it must be present for a minimal - implementation. + bwx_DEBUG(__FUNCTION__); - SYNTAX: NEW -***************************************************************/ + /* Default first value */ + start = CURTASK bwb_start.next; + s = BasicLineNumberMin; -#if ANSI_C -struct bwb_line * -bwb_new( struct bwb_line *l ) -#else -struct bwb_line * -bwb_new( l ) - struct bwb_line *l; -#endif - { - /* clear program in memory */ + /* Default last value */ + end = &CURTASK bwb_end; + e = BasicLineNumberMax; - bwb_xnew( l ); - /* clear all variables */ + /* Default previous value */ + previous = p = &CURTASK bwb_start; + - bwb_clear( l ); + r = bwb_numseq(&(l->buffer[l->position]), &s, &e); +/* +r example += ================ +0 DELETE +1 DELETE 1000 +4 DELETE - +5 DELETE 1000- +6 DELETE -9000 +7 DELETE 1000-9000 +*/ + if (r == 1) + { + /* DELETE 1000 */ + e = s; + } + /* advance to the end of the segment */ + adv_eos(l->buffer, &(l->position)); - return bwb_zline( l ); + /* abort if either number is out of range */ + if (s < BasicLineNumberMin || s > BasicLineNumberMax) + { + /* DELETE 99999- */ + sprintf(bwb_ebuf, err_lnnotfound, s); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + if (e < BasicLineNumberMin || e > BasicLineNumberMax) + { + /* DELETE -99999 */ + sprintf(bwb_ebuf, err_lnnotfound, e); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + if (s > e) + { + /* DELETE 9999-1 */ + sprintf(bwb_ebuf, err_lnnotfound, s); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + /* find the first line that exists that is >= START */ + f = FALSE; + for (current = CURTASK bwb_start.next; (f == FALSE) && (current != &CURTASK bwb_end); current = current->next) + { + if (current->number >= s) + { + f = TRUE; + previous = p; + start = current; + } + p = current; } + /* "start" now points at the first line that actually exists that is + * >= START */ + /* "previous" now points at the first line that actually exists that + * is < START */ -/* End of Core Functions Section */ -#if INTERACTIVE + if (r == 1) + { + /* DELETE 1000 */ + if (s != start->number) + { + /* THE SPECIFIED LINE DOES NOT EXIST */ + f = FALSE; + } + } + /* check and see if a line number was found */ + if (f == FALSE) + { + if (l->number > 0) + { + /* this is an executing program */ + sprintf(bwb_ebuf, err_lnnotfound, s); + bwb_error(bwb_ebuf); + } + return bwb_zline(l); + } + f = FALSE; + if (e > s) + { + /* find the last line that actually exists that is <= END */ + for (current = start; current != &CURTASK bwb_end; current = current->next) + { + if (current->number <= e) + { + f = TRUE; + end = current; + } + } + } + else + { + /* e == s */ + f = TRUE; + end = start; + } + /* "end" now points at the last line that actually exists that is <= + * END */ -/*************************************************************** - FUNCTION: bwb_system() + if (r == 6 || r == 7) + { + /* DELETE -999 */ + /* DELETE 1-999 */ + if (e < end->number) + { + /* THERE ARE NO LINES LESS THAN SPECIFIED */ + f = FALSE; + } + } + /* "end" is always after "start" */ + end = end->next; + while (end->number <= e) + { + end = end->next; + } + /* * "end" now points at the first line * that actually exists * that + * is > END */ - DESCRIPTION: This C function implements the BASIC - SYSTEM command, exiting to the operating - system (or calling program). It is also - called by the QUIT command, a functional - equivalent for SYSTEM in Bywater BASIC. - SYNTAX: SYSTEM - QUIT + /* check and see if a line number was found */ + if (f == FALSE) + { + if (l->number > 0) + { + /* this is an executing program */ + sprintf(bwb_ebuf, err_lnnotfound, e); + bwb_error(bwb_ebuf); + } + return bwb_zline(l); + } + if (l->number > 0) + { + /* This is an executing progrram. So make sure DELETE removes + * structured commands completely. The BASIC program must + * delete all of a structured command. Do not allow a + * dangling FOR, NEXT, and so on, since that is just a FATAL + * error waiting to happen. FOR - NEXT DO - LOOP WHILE - WEND + * UNTIL - UEND IF - END IF SELECT CASE - END SELECT */ + s = start->number; + e = end->number; + current = start; + while ((current != end) && (current != &CURTASK bwb_end)) + { + if (current->OtherLine != NULL) + { + /* this line is either the Top or the Bottomm + * of a structured command */ + /* verify the other end of the block is also + * in the DELETE range */ + int n; + n = current->OtherLine->number; + if (n < s || n >= e) + { + sprintf(bwb_ebuf, + "Cannot delete at %d because %d is not included" + ,current->number + ,n + ); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + } + current = current->next; + } + } + else + { + /* The user is executing DELETE interactively, Allow user to + * DELETE whatever they want. Whenever user attempts to run, + * bwb_scan() will find any mismatch. */ + } -***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_system( struct bwb_line *l ) -#else -struct bwb_line * -bwb_system( l ) - struct bwb_line *l; -#endif + /* now go through and delete appropriate lines */ + current = start; + while ((current != end) && (current != &CURTASK bwb_end)) { - prn_xprintf( stdout, "\n" ); + next = current->next; + if (current == l) + { + l = previous; + } + if (current->OtherLine != NULL) + { + /* remove any existing structured command linkage */ + current->OtherLine->OtherLine = NULL; + current->OtherLine = NULL; + } + bwb_freeline(current); + current = next; + } -#if INTENSIVE_DEBUG - bwb_debug( "in bwb_system(): ready to exit" ); -#endif - bwx_terminate(); - return &CURTASK bwb_end; /* to make LINT happy */ + /* previous should now be set to the line previous to the first in + * the omission list */ + previous->next = current; - } -/*************************************************************** + CURTASK rescan = TRUE; /* program needs to be scanned again */ + bwb_scan(); - FUNCTION: bwb_load() + return bwb_zline(l); - DESCRIPTION: This C function implements the BASIC - LOAD command. - SYNTAX: LOAD file-name +} -***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_load( struct bwb_line *l ) -#else +/*************************************************************** + + FUNCTION: bwb_donum() + + DESCRIPTION: This function implements the BASIC DO + NUM command, numbering all program lines + in memory in increments of 10 beginning + at 10. + + SYNTAX: DO NUM + +***************************************************************/ +#if 0 struct bwb_line * -bwb_load( l ) - struct bwb_line *l; -#endif +bwb_donum(struct bwb_line * l) +{ + struct bwb_line *current; + register int lnumber; + + bwx_DEBUG(__FUNCTION__); + + lnumber = 10; + for (current = bwb_start.next; current != &bwb_end; current = current->next) { + current->number = lnumber; - /* clear current contents */ + lnumber += 10; + if (lnumber > BasicLineNumberMax) + { + return bwb_zline(l); + } + } - bwb_new( l ); + return bwb_zline(l); +} - /* call xload function to load program in memory */ +/*************************************************************** + + FUNCTION: bwb_dounnum() + + DESCRIPTION: This function implements the BASIC DO + UNNUM command, removing all line numbers + from the program in memory. + + SYNTAX: DO UNNUM + +***************************************************************/ - bwb_xload( l ); +struct bwb_line * +bwb_dounnum(struct bwb_line * l) +{ + struct bwb_line *current; - return bwb_zline( l ); + bwx_DEBUG(__FUNCTION__); + for (current = bwb_start.next; current != &bwb_end; current = current->next) + { + current->number = 0; } -/*************************************************************** + return bwb_zline(l); +} - FUNCTION: bwb_xload() +#endif /* 0 */ - DESCRIPTION: This C function loads a BASIC program - into memory. +/*************************************************************** + + FUNCTION: bwb_chain() + + DESCRIPTION: This C function implements the BASIC + CHAIN command. + + SYNTAX: CHAIN "file-name" | file-name$ + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_xload( struct bwb_line *l ) -#else struct bwb_line * -bwb_xload( l ) - struct bwb_line *l; -#endif - { - FILE *loadfile; - struct exp_ese *e; /* JBV */ - - /* Get an argument for filename */ - - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\n': - case '\r': - case ':': - bwb_error( err_nofn ); /* Added by JBV (bug found by DD) */ +bwb_CHAIN(struct bwb_line * l) +{ + /* based upon bwb_xload() */ + FILE *loadfile; + struct exp_ese *e; - return bwb_zline( l ); - default: - break; - } + bwx_DEBUG(__FUNCTION__); - /* Section added by JBV (bug found by DD) */ - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - if ( e->type != STRING ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_xload(): Missing filespec" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif + /* Get an argument for filename */ - return bwb_zline( l ); - } + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == '\0' || l->buffer[l->position] == OptionCommentChar) + { + bwb_error(err_nofn); /* Added by JBV (bug found by DD) */ + return bwb_zline(l); + } + /* The file-name may be any string expression */ + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (e->type != STRING) + { + sprintf(bwb_ebuf, "in bwb_chain(): Missing filespec"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + /* save the filename */ + str_btoc(CURTASK progfile, exp_getsval(e)); - /* This line removed by JBV (no longer required) */ - /* bwb_const( l->buffer, CURTASK progfile, &( l->position ) ); */ - str_btoc( CURTASK progfile, exp_getsval( e ) ); /* JBV */ + /* deallocate all variables except common ones */ + var_delcvars(); - if ( ( loadfile = fopen( CURTASK progfile, "r" )) == NULL ) - { - sprintf( bwb_ebuf, err_openfile, CURTASK progfile ); - bwb_error( bwb_ebuf ); + /* remove old program from memory */ + bwb_xnew(&bwb_start); - return bwb_zline( l ); - } - bwb_fload( loadfile ); + /* call xload function to load new program in memory */ + if ((loadfile = fopen(CURTASK progfile, "r")) == NULL) + { + sprintf(bwb_ebuf, err_openfile, CURTASK progfile); + bwb_error(bwb_ebuf); - return bwb_zline( l ); + return bwb_zline(l); } + bwb_fload(loadfile); -/*************************************************************** + bwb_scan(); - FUNCTION: bwb_save() + /* reset all stack counters */ + CURTASK exsc = 0; + CURTASK expsc = 0; + /* run the program */ - DESCRIPTION: This C function implements the BASIC - SAVE command. + /* CHAIN */ + bwb_Warning_Clear(); + stopped_line = 0; + SetOnError(0); - SYNTAX: SAVE file-name + CURTASK bwb_start.position = 0; + bwb_setexec(&CURTASK bwb_start, 0, EXEC_NORM); + return &CURTASK bwb_start; +} + +/*************************************************************** + + FUNCTION: bwb_merge() + + DESCRIPTION: This C function implements the BASIC + MERGE command, merging command lines from + a specified file into the program in memory + without deleting the lines already in memory. + + SYNTAX: MERGE file-name + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_save( struct bwb_line *l ) -#else struct bwb_line * -bwb_save( l ) - struct bwb_line *l; -#endif - { - FILE *outfile; - static char filename[ MAXARGSIZE ]; - struct exp_ese *e; /* JBV */ +bwb_MERGE(struct bwb_line * l) +{ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_save(): entered function." ); - bwb_debug( bwb_ebuf ); -#endif - - /* Get an argument for filename */ + bwx_DEBUG(__FUNCTION__); - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\n': - case '\r': - case ':': - bwb_error( err_nofn ); + /* call xload function to merge program in memory */ - return bwb_zline( l ); - default: - break; - } + bwb_xload(l); - /* Section added by JBV (bug found by DD) */ - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - if ( e->type != STRING ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_save(): Missing filespec" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } + return bwb_zline(l); - /* This line removed by JBV (no longer required) */ - /* bwb_const( l->buffer, filename, &( l->position ) ); */ - str_btoc( filename, exp_getsval( e ) ); /* JBV */ +} - if ( ( outfile = fopen( filename, "w" )) == NULL ) - { - sprintf( bwb_ebuf, err_openfile, filename ); - bwb_error( bwb_ebuf ); - return bwb_zline( l ); - } - bwb_xlist( l, outfile ); - fclose( outfile ); +void +SetOnError(int LineNumber) +{ + /* scan the stack looking for a FUNCTION/SUB */ + int i; + bwx_DEBUG(__FUNCTION__); - return bwb_zline( l ); + i = CURTASK exsc; + while (i > 0) + { + struct bwb_line *current; + current = CURTASK excs[i].LoopTopLine; + if (current != NULL) + { + switch (current->cmdnum) + { + case C_FUNCTION: + case C_SUB: + /* FOUND */ + /* we are in a FUNCTION/SUB, so this is LOCAL */ + CURTASK excs[i].OnErrorGoto = LineNumber; + return; + break; + } + } + i--; } + /* NOT FOUND */ + /* we are NOT in a FUNCTION/SUB */ + CURTASK excs[0].OnErrorGoto = LineNumber; +} -/*************************************************************** - FUNCTION: bwb_list() +int +GetOnError(void) +{ + /* scan the stack looking for a FUNCTION/SUB */ + int i; - DESCRIPTION: This C function implements the BASIC - LIST command. + bwx_DEBUG(__FUNCTION__); - SYNTAX: LIST line[-line] -***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_list( struct bwb_line *l ) -#else -struct bwb_line * -bwb_list( l ) - struct bwb_line *l; -#endif + i = CURTASK exsc; + while (i >= 0) { - bwb_xlist( l, stdout ); - - return bwb_zline( l ); + if (CURTASK excs[i].OnErrorGoto != 0) + { + /* FOUND */ + return CURTASK excs[i].OnErrorGoto; + } + i--; } + /* NOT FOUND */ + return 0; +} + /*************************************************************** + + FUNCTION: bwb_onerror() + + DESCRIPTION: This C function implements the BASIC + ON ERROR GOSUB command. + + SYNTAX: ON ERROR GOSUB line | label + +***************************************************************/ - FUNCTION: bwb_xlist() +struct bwb_line * +bwb_ON_ERROR_GOTO(struct bwb_line * l) +{ + /* ON ERROR GOTO line */ + struct bwb_line *x; + char tbuf[BasicStringLengthMax + 1]; + /* get the line number */ + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); + if (strcasecmp(tbuf, "0") == 0) + { + SetOnError(0); + return bwb_zline(l); + } + x = find_label(tbuf); + if (x != NULL) + { + SetOnError(x->number); + return bwb_zline(l); + } + bwb_error(err_syntax); + + return bwb_zline(l); +} - DESCRIPTION: This C function lists the program in - memory to a specified output device. +struct bwb_line * +bwb_ON_ERROR_GOSUB(struct bwb_line * l) +{ + /* ON ERROR GOSUB line */ + struct bwb_line *x; + char tbuf[BasicStringLengthMax + 1]; + /* get the line number */ + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); + if (strcasecmp(tbuf, "0") == 0) + { + SetOnError(0); + return bwb_zline(l); + } + x = find_label(tbuf); + if (x != NULL) + { + SetOnError(x->number); + return bwb_zline(l); + } + bwb_error(err_syntax); + + return bwb_zline(l); +} -***************************************************************/ +struct bwb_line * +bwb_ON_ERROR_RESUME_NEXT(struct bwb_line * l) +{ + SetOnError(-1); + return bwb_zline(l); +} -#if ANSI_C struct bwb_line * -bwb_xlist( struct bwb_line *l, FILE *file ) -#else +bwb_ON_ERROR_RETURN_NEXT(struct bwb_line * l) +{ + SetOnError(-1); + return bwb_zline(l); +} + struct bwb_line * -bwb_xlist( l, file ) - struct bwb_line *l; - FILE *file; -#endif - { - struct bwb_line *start, *end, *current; - int s, e; - int f, r; +bwb_ON_TIMER(struct bwb_line * l) +{ + /* ON TIMER(...) GOSUB ... TIMER ON ... */ + char tbuf[BasicStringLengthMax + 1]; + int p; + struct exp_ese *rvar; + BasicNumberType v; + BasicNumberType minv; - start = CURTASK bwb_start.next; - end = &CURTASK bwb_end; - r = bwb_numseq( &( l->buffer[ l->position ] ), &s, &e ); + bwx_DEBUG(__FUNCTION__); - /* advance to the end of the segment */ + /* turn off the TIMER - so syntax errors will NOT fire the timer */ + bwb_Timer_Off(); + tmr_gotol = 0; + tmr_count = 0; -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - if (( r == FALSE ) || ( s == 0 )) - { - s = CURTASK bwb_start.next->number; - } + /* get the SECOMDS parameter */ + adv_element(l->buffer, &(l->position), tbuf); - if ( e == 0 ) - { - e = s; - } + p = 0; + rvar = bwb_exp(tbuf, FALSE, &p); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + v = exp_getnval(rvar); + minv = 1; + minv /= CLOCKS_PER_SEC; + + if (v > minv) + { + /* get the GOSUB keyword */ + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); - if ( r == FALSE ) + if (strcasecmp(tbuf, "GOSUB") == 0) { - for ( current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next ) + /* ON TIMER(X) GOSUB line */ + struct bwb_line *x; + /* get the line number */ + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); + x = find_label(tbuf); + if (x != NULL) { - if ( current->next == &CURTASK bwb_end ) - { - e = current->number; - } + tmr_gotol = x->number; + tmr_count = v; + return bwb_zline(l); } } + } + bwb_error(err_syntax); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xlist(): LBUFFER sequence is %d-%d", s, e ); - bwb_debug( bwb_ebuf ); -#endif + return bwb_zline(l); - /* abort if either number == (MAXLINENO + 1) which denotes CURTASK bwb_end */ +} - if ( ( s == (MAXLINENO + 1)) || ( e == (MAXLINENO + 1 ) ) ) - { - return bwb_zline( l ); - } +struct bwb_line * +bwb_TIMER(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - /* Now try to find the actual lines in memory */ + /* turn off the TIMER - so syntax errors will NOT fire the timer */ + bwb_Timer_Off(); - f = FALSE; + bwb_error(err_syntax); - for ( current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next ) - { - if ( current != l ) - { - if (( current->number == s ) && ( f == FALSE )) - { - f = TRUE; - start = current; + return bwb_zline(l); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xlist(): start line number is <%d>", - s ); - bwb_debug( bwb_ebuf ); -#endif +struct bwb_line * +bwb_TIMER_OFF(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - } - } - } + /* turn off the TIMER - so syntax errors will NOT fire the timer */ + bwb_Timer_Off(); - /* check and see if a line number was found */ + /* TIMER OFF */ + tmr_gotol = 0; + tmr_count = 0; - if ( f == FALSE ) - { - sprintf( bwb_ebuf, err_lnnotfound, s ); - bwb_error( bwb_ebuf ); + return bwb_zline(l); +} - return bwb_zline( l ); - } +struct bwb_line * +bwb_TIMER_ON(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - if ( e >= s ) - { - for ( current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next ) - { - if ( current != l ) - { - if ( current->number == e ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xlist(): end line number is <%d>", - current->next->number ); - bwb_debug( bwb_ebuf ); -#endif + /* turn off the TIMER - so syntax errors will NOT fire the timer */ + bwb_Timer_Off(); - end = current->next; - } - } - } - } - else - { - end = start; - } + /* TIMER ON */ + if (tmr_count > 0 && tmr_gotol > 0) + { + tmr_expires = bwx_TIMER(tmr_count); + bwb_Timer_On(); + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xlist(): line sequence is <%d-%d>", - start->number, end->number ); - bwb_debug( bwb_ebuf ); -#endif + return bwb_zline(l); +} - /* previous should now be set to the line previous to the - first in the omission list */ +struct bwb_line * +bwb_TIMER_STOP(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - /* now go through and list appropriate lines */ + /* turn off the TIMER - so syntax errors will NOT fire the timer */ + bwb_Timer_Off(); - if ( start == end ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xlist(): start == end" ); - bwb_debug( bwb_ebuf ); -#endif - xl_line( file, start ); - } + /* TIMER STOP */ + + return bwb_zline(l); +} + +/*************************************************************** + + FUNCTION: bwb_resume() + + DESCRIPTION: This C function implements the BASIC + RESUME command. + + SYNTAX: RESUME [ 0 | NEXT | line | label ] + +***************************************************************/ +struct bwb_line * +bwb_RESUME(struct bwb_line * l) +{ + char tbuf[BasicStringLengthMax + 1]; + struct bwb_line *x = NULL; + + bwx_DEBUG(__FUNCTION__); + + if (err_number == 0) /* RESUME without ERR are FATAL */ + { + sprintf(bwb_ebuf, "RESUME WITHOUT ERR AT %d", CURTASK number); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + if (err_line == NULL) + { + /* RESUME without ERL are FATAL */ + sprintf(bwb_ebuf, "RESUME WITHOUT ERL AT %d", CURTASK number); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + if (err_line->number == 0) + { + /* RESUME without ERL are FATAL */ + sprintf(bwb_ebuf, "RESUME WITHOUT ERL AT %d", CURTASK number); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + /* Get optional argument for RESUME */ + + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); + + + if (strlen(tbuf) == 0 || strcasecmp(tbuf, "0") == 0) + { + /* RESUME [0] */ + /* Execution resumes at the statement which caused the error */ + x = err_line; + } else - { - for ( current = start; current != end; current = current->next ) - { - xl_line( file, current ); - } - } + if (strcasecmp(tbuf, "NEXT") == 0) + { + /* RESUME NEXT */ + /* Execution resumes at the statement immediately following + * the one which caused the error */ + x = err_line->next; + } + else + { + /* RESUME line|label */ + x = find_label(tbuf); + } - return bwb_zline( l ); + + if (x != NULL) + { + bwb_Warning_Clear(); + x->position = 0; + return x; } + return bwb_zline(l); +} + -/*************************************************************** - FUNCTION: xl_line() - DESCRIPTION: This function lists a single program - line to a specified device of file. - It is called by bwb_xlist(); +/*************************************************************** + + FUNCTION: bwb_xnew() + + DESCRIPTION: Clears the program in memory, but does not + deallocate all variables. + ***************************************************************/ -#if ANSI_C -static int -xl_line( FILE *file, struct bwb_line *l ) -#else -static int -xl_line( file, l ) - FILE *file; - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; +void +bwb_xnew(struct bwb_line * l) +{ + struct bwb_line *current, *previous; + int wait; - if (( file == stdout ) || ( file == stderr )) - { - if ( l->xnum == (char) TRUE ) /* Better recast this one (JBV) */ - { - sprintf( tbuf, "%7d: %s\n", l->number, l->buffer ); - } - else - { - sprintf( tbuf, " : %s\n", l->buffer ); - } + bwx_DEBUG(__FUNCTION__); - prn_xprintf( file, tbuf ); - } - else + previous = NULL; /* JBV */ + wait = TRUE; + for (current = l->next; current != &CURTASK bwb_end; current = current->next) + { + if (wait != TRUE) { + /* Revised to FREE pass-thru call by JBV */ + FREE(previous, "bwb_xnew"); + } + wait = FALSE; + previous = current; + } - if ( l->xnum == (char) TRUE ) /* Better recast this one (JBV) */ - { - fprintf( file, "%d %s\n", l->number, l->buffer ); - } - else - { - fprintf( file, "%s\n", l->buffer ); - } + l->next = &bwb_end; - } +} - return TRUE; - } /*************************************************************** + + FUNCTION: bwb_cmds() + + DESCRIPTION: This function implements a CMD command, + which lists all commands implemented. + It is not part of a BASIC specification, + but is used for debugging bwBASIC. + + SYNTAX: CMDS + +***************************************************************/ - FUNCTION: bwb_delete() - DESCRIPTION: This C function implements the BASIC - DELETE command for interactive programming, - deleting a specified program line (or lines) - from memory. +struct bwb_line * +bwb_CMDS(struct bwb_line * l) +{ + register int n; + int t; - SYNTAX: DELETE line[-line] + bwx_DEBUG(__FUNCTION__); -***************************************************************/ + prn_iprintf("BWBASIC COMMANDS AVAILABLE:\n"); -#if ANSI_C -struct bwb_line * -bwb_delete( struct bwb_line *l ) -#else -struct bwb_line * -bwb_delete( l ) - struct bwb_line *l; -#endif + /* run through the command table and print comand names */ + + t = 0; + for (n = 0; n < NUM_COMMANDS; ++n) { - struct bwb_line *start, *end, *current, *previous, *p, *next; - static int s, e; - int f; + prn_iprintf(bwb_cmdtable[n].name); + if (t < 4) + { + prn_iprintf("\t"); + t++; + } + else + { + prn_iprintf("\n"); + t = 0; + } + } + if (t > 0) + { + prn_iprintf("\n"); + } + return bwb_zline(l); +} - previous = &CURTASK bwb_start; - start = CURTASK bwb_start.next; - end = &CURTASK bwb_end; +static void +CommandUniqueID(int i, char *UniqueID) +{ + char *C; - bwb_numseq( &( l->buffer[ l->position ] ), &s, &e ); + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_delete(): LBUFFER sequence is %d-%d", s, e ); - bwb_debug( bwb_ebuf ); -#endif + strcpy(UniqueID, "C_"); - /* advance to the end of the segment */ + if (strcasecmp(bwb_cmdtable[i].name, "?") == 0) + { + strcat(UniqueID, "QUEST"); + } + else + { + strcat(UniqueID, bwb_cmdtable[i].name); + } + C = UniqueID; + while (*C != '\0') + { + if (!isalnum(*C)) + *C = '_'; + C++; + } +} -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif +static void +CommandVector(int i, char *Vector) +{ + char *C; - /* Now try to find the actual lines in memory */ + bwx_DEBUG(__FUNCTION__); - previous = p = &CURTASK bwb_start; - f = FALSE; + strcpy(Vector, "bwb_"); + + if (strcasecmp(bwb_cmdtable[i].name, "?") == 0) + { + strcat(Vector, "QUEST"); + } + else + { + strcat(Vector, bwb_cmdtable[i].name); + } + C = Vector; + while (*C != '\0') + { + if (!isalnum(*C)) + *C = '_'; + C++; + } +} + +static void +CommandOptionVersion(int n, char *OutputLine) +{ + int i; + int j; - for ( current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next ) + bwx_DEBUG(__FUNCTION__); + + strcpy(OutputLine, ""); + j = 0; + for (i = 0; i < NUM_VERSIONS; i++) + { + if (bwb_cmdtable[n].OptionVersionBitmask & bwb_vertable[i].OptionVersionBitmask) { - if ( current != l ) + if (j > 0) { - /* Following line revised by JBV */ - if (( current->xnum == (char) TRUE ) && ( current->number == s )) - { - f = TRUE; - previous = p; - start = current; + strcat(OutputLine, " | "); + } + strcat(OutputLine, bwb_vertable[i].ID); + j++; + } + } +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_delete(): start line number is <%d>", - s ); - bwb_debug( bwb_ebuf ); -#endif +void +SortAllCommands(void) +{ + static int IsSorted = FALSE; + bwx_DEBUG(__FUNCTION__); + + if (IsSorted == FALSE) + { + int i; + for (i = 0; i < NUM_COMMANDS - 1; i++) + { + int j; + int k; + k = i; + for (j = i + 1; j < NUM_COMMANDS; j++) + { + if (strcasecmp(bwb_cmdtable[j].name, bwb_cmdtable[k].name) < 0) + { + k = j; } } - p = current; + if (k > i) + { + struct bwb_command t; + memcpy(&t, &(bwb_cmdtable[i]), sizeof(struct bwb_command)); + memcpy(&(bwb_cmdtable[i]), &(bwb_cmdtable[k]), sizeof(struct bwb_command)); + memcpy(&(bwb_cmdtable[k]), &t, sizeof(struct bwb_command)); + } } + IsSorted = TRUE; + } +} - /* check and see if a line number was found */ - - if ( f == FALSE ) - { - sprintf( bwb_ebuf, err_lnnotfound, s ); - bwb_error( bwb_ebuf ); +void +SortAllFunctions(void) +{ + static int IsSorted = FALSE; - return bwb_zline( l ); - } + bwx_DEBUG(__FUNCTION__); - if ( e > s ) + if (IsSorted == FALSE) + { + int i; + for (i = 0; i < NUM_FUNCTIONS - 1; i++) { - for ( current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next ) + int j; + int k; + k = i; + for (j = i + 1; j < NUM_FUNCTIONS; j++) { - if ( current != l ) + int n; + n = strcasecmp(bwb_prefuncs[j].Name, bwb_prefuncs[k].Name); + if (n < 0) + { + k = j; + } + else + if (n == 0) { - /* Following line revised by JBV */ - if (( current->xnum == (char) TRUE) && ( current->number == e )) + if (bwb_prefuncs[j].ParameterCount < bwb_prefuncs[k].ParameterCount) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_delete(): end line number is <%d>", - e ); - bwb_debug( bwb_ebuf ); -#endif - - end = current->next; + k = j; } } } + if (k > i) + { + struct bwb_function t; + memcpy(&t, &(bwb_prefuncs[i]), sizeof(struct bwb_function)); + memcpy(&(bwb_prefuncs[i]), &(bwb_prefuncs[k]), sizeof(struct bwb_function)); + memcpy(&(bwb_prefuncs[k]), &t, sizeof(struct bwb_function)); + } } - else - { - end = start->next; - } + IsSorted = TRUE; + } +} - /* previous should now be set to the line previous to the - first in the omission list */ - /* now go through and delete appropriate lines */ +void +DumpAllCommandUniqueID(void) +{ + register int i; + char tbuf[BasicStringLengthMax + 1]; - current = start; - while (( current != end ) && ( current != &CURTASK bwb_end )) - { - next = current->next; + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_delete(): deleting line %d", - current->number ); - bwb_debug( bwb_ebuf ); -#endif + prn_lprintf("/* COMMANDS */\n"); - /* free line memory */ + /* run through the command table and print comand #define */ - bwb_freeline( current ); + for (i = 0; i < NUM_COMMANDS; i++) + { + char *Syntax; + char UniqueID[BasicNameLengthMax + 1]; - /* recycle */ + CommandUniqueID(i, UniqueID); + Syntax = bwb_cmdtable[i].name; + sprintf(tbuf, "#define %-30s %3d /* %-30s */\n", UniqueID, i + 1, Syntax); + prn_lprintf(tbuf); + } + sprintf(tbuf, "#define NUM_COMMANDS %d\n", i); + prn_lprintf(tbuf); - current = next; - } +} - /* reset link */ +static void +ProcessEscapeChars(const char *Input, char *Output) +{ + int n; - previous->next = current; + bwx_DEBUG(__FUNCTION__); - return bwb_zline( l ); + n = 0; + + while (*Input != '\0') + { + switch (*Input) + { + case '\n': + *Output = '\\'; + Output++; + *Output = 'n'; + Output++; + break; + case '\t': + *Output = '\\'; + Output++; + *Output = 't'; + Output++; + break; + case '\"': + *Output = '\\'; + Output++; + *Output = '"'; + Output++; + break; + default: + *Output = *Input; + Output++; + break; + } + Input++; + *Output = '\0'; + n++; + if (n > 60) + { + *Output = '\"'; + Output++; + *Output = '\n'; + Output++; + *Output = '\"'; + Output++; + *Output = '\0'; + n = 0; + } } +} -/*************************************************************** +void +DumpAllCommandTableDefinitions(void) +{ + /* generate bwd_cmd.c */ - FUNCTION: bwb_donum() + int i; - DESCRIPTION: This function implements the BASIC DO - NUM command, numbering all program lines - in memory in increments of 10 beginning - at 10. + bwx_DEBUG(__FUNCTION__); - SYNTAX: DO NUM + prn_lprintf("/* COMMAND TABLE */\n\n"); + prn_lprintf("#include \"bwbasic.h\"\n\n"); + prn_lprintf("struct bwb_command bwb_cmdtable[ NUM_COMMANDS ] =\n"); + prn_lprintf("{\n"); -***************************************************************/ + /* run through the command table and print comand #define */ -#if ANSI_C -struct bwb_line * -bwb_donum( struct bwb_line *l ) -#else -struct bwb_line * -bwb_donum( l ) - struct bwb_line *l; -#endif + for (i = 0; i < NUM_COMMANDS; i++) { - struct bwb_line *current; - register int lnumber; - - lnumber = 10; - for ( current = bwb_start.next; current != &bwb_end; current = current->next ) - { - current->number = lnumber; - current->xnum = TRUE; + char tbuf[BasicStringLengthMax + 1]; + + + prn_lprintf("{\n"); + + prn_lprintf(" "); + CommandUniqueID(i, tbuf); + prn_lprintf(tbuf); + prn_lprintf(", /* UniqueID */\n"); + + prn_lprintf(" "); + prn_lprintf("\""); + ProcessEscapeChars(bwb_cmdtable[i].Syntax, tbuf); + prn_lprintf(tbuf); + prn_lprintf("\""); + prn_lprintf(", /* Syntax */\n"); + + prn_lprintf(" "); + prn_lprintf("\""); + ProcessEscapeChars(bwb_cmdtable[i].Description, tbuf); + prn_lprintf(tbuf); + prn_lprintf("\""); + prn_lprintf(", /* Description */\n"); + + prn_lprintf(" "); + prn_lprintf("\""); + prn_lprintf(bwb_cmdtable[i].name); + prn_lprintf("\""); + prn_lprintf(", /* Name */\n"); + + prn_lprintf(" "); + CommandOptionVersion(i, tbuf); + prn_lprintf(tbuf); + prn_lprintf(" /* OptionVersionBitmask */\n"); + + prn_lprintf("},\n"); + } + prn_lprintf("};\n\n"); - lnumber += 10; - if ( lnumber >= MAXLINENO ) - { - return bwb_zline( l ); - } - } +} - return bwb_zline( l ); - } +void +DumpAllCommandSwitchStatement(void) +{ + int i; -/*************************************************************** + bwx_DEBUG(__FUNCTION__); - FUNCTION: bwb_dounnum() + /* run through the command table and print comand #define */ + prn_lprintf("/* SWITCH */\n"); + prn_lprintf("struct bwb_line *bwb_vector( struct bwb_line *l )\n"); + prn_lprintf("{\n"); - DESCRIPTION: This function implements the BASIC DO - UNNUM command, removing all line numbers - from the program in memory. + prn_lprintf(" "); + prn_lprintf("struct bwb_line *r;\n"); - SYNTAX: DO UNNUM + prn_lprintf(" "); + prn_lprintf("switch( l->cmdnum )\n"); -***************************************************************/ + prn_lprintf(" "); + prn_lprintf("{\n"); -#if ANSI_C -struct bwb_line * -bwb_dounnum( struct bwb_line *l ) -#else -struct bwb_line * -bwb_dounnum( l ) - struct bwb_line *l; -#endif + for (i = 0; i < NUM_COMMANDS; i++) { - struct bwb_line *current; + char tbuf[BasicNameLengthMax + 1]; - for ( current = bwb_start.next; current != &bwb_end; current = current->next ) - { - current->number = 0; - current->xnum = FALSE; - } + prn_lprintf(" "); + prn_lprintf("case "); + CommandUniqueID(i, tbuf); + prn_lprintf(tbuf); + prn_lprintf(":\n"); + + prn_lprintf(" "); + prn_lprintf(" "); + prn_lprintf("r = "); + CommandVector(i, tbuf); + prn_lprintf(tbuf); + prn_lprintf("( l );\n"); + + prn_lprintf(" "); + prn_lprintf(" "); + prn_lprintf("break;\n"); - return bwb_zline( l ); } -#endif /* INTERACTIVE */ + prn_lprintf(" "); + prn_lprintf("default:\n"); -#if COMMON_CMDS + prn_lprintf(" "); + prn_lprintf(" "); + prn_lprintf("sprintf( bwb_ebuf, \"in bwb_vector(), INTERNAL ERROR: %d not in switch\", l->cmdnum );\n"); -/*************************************************************** - FUNCTION: bwb_chain() + prn_lprintf(" "); + prn_lprintf(" "); + prn_lprintf("bwb_error( bwb_ebuf );\n"); + + prn_lprintf(" "); + prn_lprintf(" "); + prn_lprintf("r = l;\n"); + + prn_lprintf(" "); + prn_lprintf(" "); + prn_lprintf("break;\n"); + + + prn_lprintf(" "); + prn_lprintf("}\n"); + + prn_lprintf(" "); + prn_lprintf("return r;\n"); + + prn_lprintf("}\n"); + +} + +void +DumpOneCommandSyntax(int n, int lp) +{ + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + if (n < 0 || n >= NUM_COMMANDS) + { + return; + } + /* NAME */ + { + sprintf(tbuf, " SYNTAX: %s\n", bwb_cmdtable[n].Syntax); + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + } + /* DESCRIPTION */ + { + sprintf(tbuf, "DESCRIPTION: %s\n", bwb_cmdtable[n].Description); + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + } + /* COMPATIBILITY */ + if (lp) + { + int i; + sprintf(tbuf, " VERSIONS:\n"); + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + for (i = 0; i < NUM_VERSIONS; i++) + { + char X; + if (bwb_cmdtable[n].OptionVersionBitmask & bwb_vertable[i].OptionVersionBitmask) + { + /* SUPPORTED */ + X = 'X'; + } + else + { + /* NOT SUPPORTED */ + X = '_'; + } + sprintf(tbuf, " [%c] %s\n", X, bwb_vertable[i].Name); + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + } + } +} + +void +DumpAllCommandSyntax(void) +{ + /* for the C maintainer */ + int n; + + + bwx_DEBUG(__FUNCTION__); + + for (n = 0; n < NUM_COMMANDS; n++) + { + prn_lprintf("------------------------------------------------------------\n"); + DumpOneCommandSyntax(n, TRUE); + + } + prn_lprintf("------------------------------------------------------------\n"); +} + + +void +DumpAllCommandHtmlTable(void) +{ + /* generate bwd_cmd.htm */ + + int i; + int j; + + bwx_DEBUG(__FUNCTION__); + + + /* LEGEND */ + prn_lprintf("

LEGEND


\n"); + prn_lprintf("\n"); + + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf("\n"); + + for (j = 0; j < NUM_VERSIONS; j++) + { + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf("\n"); + } + prn_lprintf("
"); + prn_lprintf(""); + prn_lprintf("ID"); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf("NAME"); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf("DESCRIPTION"); + prn_lprintf(""); + prn_lprintf("
"); + prn_lprintf(bwb_vertable[j].ID); + prn_lprintf(""); + prn_lprintf(bwb_vertable[j].Name); + prn_lprintf(""); + prn_lprintf(bwb_vertable[j].Description); + prn_lprintf("
\n"); + prn_lprintf("
\n"); + + + /* DETAILS */ + prn_lprintf("

DETAILS


\n"); + prn_lprintf("\n"); + + prn_lprintf(""); + prn_lprintf(""); + for (j = 0; j < NUM_VERSIONS; j++) + { + prn_lprintf(""); + } + prn_lprintf("\n"); + + + /* run through the command table and print comand -vs- OPTION VERSION */ + + for (i = 0; i < NUM_COMMANDS; i++) + { + prn_lprintf(""); + prn_lprintf(""); + + for (j = 0; j < NUM_VERSIONS; j++) + { + prn_lprintf(""); + } + prn_lprintf("\n"); + } + prn_lprintf("
"); + prn_lprintf(""); + prn_lprintf("COMMAND"); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(bwb_vertable[j].ID); + prn_lprintf(""); + prn_lprintf("
"); + prn_lprintf(bwb_cmdtable[i].name); + prn_lprintf(""); + if (bwb_cmdtable[i].OptionVersionBitmask & bwb_vertable[j].OptionVersionBitmask) + { + prn_lprintf("X"); + } + else + { + prn_lprintf(" "); + } + prn_lprintf("
\n"); + prn_lprintf("\n"); +} + + + + + +struct bwb_line * +bwb_HELP(struct bwb_line * l) +{ + /* HELP ... */ + int n; + char tbuf[BasicStringLengthMax + 1]; + int Found; + char * C; + + bwx_DEBUG(__FUNCTION__); + + Found = FALSE; + + C = l->buffer; + C += l->position; + strcpy( tbuf, C ); + + C = strchr( tbuf, OptionCommentChar ); + if( C != NULL ) + { + *C = '\0'; + } + /* RTRIM$ */ + C = tbuf; + if (*C != 0) + { + /* not an empty line, so remove one (or more) trailing spaces */ + char *E; + + E = strchr(tbuf, 0); + E--; + while (E >= tbuf && *E == ' ') + { + *E = 0; + E--; + } + } + + + /* EXACT match */ + for (n = 0; n < NUM_COMMANDS; n++) + { + if (strcasecmp(bwb_cmdtable[n].name, tbuf) == 0) + { + prn_xprintf("------------------------------------------------------------\n"); + DumpOneCommandSyntax(n, FALSE); + Found = TRUE; + } + } + + for (n = 0; n < NUM_FUNCTIONS; n++) + { + if (strcasecmp(bwb_prefuncs[n].Name, tbuf) == 0) + { + prn_xprintf("------------------------------------------------------------\n"); + DumpOneFunctionSyntax(n, FALSE); + Found = TRUE; + } + } + + if (Found == FALSE) + { + /* PARTIAL match */ + int Length; + Length = strlen(tbuf); + + for (n = 0; n < NUM_COMMANDS; n++) + { + if (strncasecmp(bwb_cmdtable[n].name, tbuf, Length) == 0) + { + if (Found == FALSE) + { + prn_xprintf("The following topics are a partial match:\n"); + } + prn_xprintf(bwb_cmdtable[n].name); + prn_xprintf("\t"); + Found = TRUE; + } + } + + for (n = 0; n < NUM_FUNCTIONS; n++) + { + if (strncasecmp(bwb_prefuncs[n].Name, tbuf, Length) == 0) + { + if (Found == FALSE) + { + prn_xprintf("The following topics are a partial match:\n"); + } + prn_xprintf(bwb_prefuncs[n].Name); + prn_xprintf("\t"); + Found = TRUE; + } + } + if (Found == TRUE) + { + /* match */ + prn_xprintf("\n"); + } + } + if (Found == FALSE) + { + /* NO match */ + prn_xprintf("No help found.\n"); + } + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); + +} + +int +NumberValueCheck(unsigned long ParameterTests, BasicNumberType X) +{ + BasicNumberType XR; /* rounded value */ + + + bwx_DEBUG(__FUNCTION__); + + + /* check for invalid numeric value */ + if (isnan(X)) + { + /* INTERNAL ERROR */ + return -1; + } + /* VALID NUMERIC VALUE */ + XR = rint(X); + ParameterTests &= 0x0000000F; + switch (ParameterTests) + { + case P1ERR: + { + /* INTERNAL ERROR */ + return -1; + } + break; + case P1ANY: + if (XR < -DBL_MAX || XR > DBL_MAX) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + case P1BYT: + if (XR < 0 || XR > UCHAR_MAX) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1INT: + if (XR < SHRT_MIN || XR > SHRT_MAX) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1LNG: + if (XR < LONG_MIN || XR > LONG_MAX) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1CUR: + if (XR < LONG_MIN || XR > LONG_MAX) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1FLT: + if (X < -FLT_MAX || X > FLT_MAX) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1DBL: + if (X < -DBL_MAX || X > DBL_MAX) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1DEV: + /* BasicFileNumberMax must be <= INT16_MAX */ + if (XR < 0 || XR > BasicFileNumberMax) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1LEN: + /* BasicStringLengthMax must be <= INT16_MAX */ + if (XR < 0 || XR > BasicStringLengthMax) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1POS: + /* BasicStringLengthMax must be <= INT16_MAX */ + if (XR < 1 || XR > BasicStringLengthMax) + { + /* ERROR */ + return -1; + } + else + { + /* OK */ + return 0; + } + break; + case P1COM: + /* Number of COMx: ports must be <= INT16_MAX */ + if (XR == 1 || XR == 2 || XR == 3 || XR == 4) + { + /* OK */ + return 0; + } + break; + case P1LPT: + /* Number of LPTx: ports must be <= INT16_MAX */ + if (XR == 0 || XR == 1 || XR == 2 || XR == 3) + { + /* OK */ + return 0; + } + break; + case P1GTZ: + if (X > 0) + { + /* OK */ + return 0; + } + break; + case P1GEZ: + if (X >= 0) + { + /* OK */ + return 0; + } + break; + case P1NEZ: + if (X != 0) + { + /* OK */ + return 0; + } + break; + } + /* ERROR */ + return -1; +} + +int +StringLengthCheck(unsigned long ParameterTests, int s) +{ + + bwx_DEBUG(__FUNCTION__); + + /* check for invalid string length */ + if (s < 0 || s > BasicStringLengthMax) + { + /* INTERNAL ERROR */ + return -1; + } + /* VALID STRING LENGTH */ + ParameterTests &= 0x0000000F; + + switch (ParameterTests) + { + case P1ERR: + { + /* INTERNAL ERROR */ + return -1; + } + break; + case P1ANY: + { + /* OK */ + return 0; + } + break; + case P1BYT: + if (s >= sizeof(BasicByteType)) + { + /* OK */ + return 0; + } + break; + case P1INT: + if (s >= sizeof(BasicIntegerType)) + { + /* OK */ + return 0; + } + break; + case P1LNG: + if (s >= sizeof(BasicLongType)) + { + /* OK */ + return 0; + } + break; + case P1CUR: + if (s >= sizeof(BasicCurrencyType)) + { + /* OK */ + return 0; + } + break; + case P1FLT: + if (s >= sizeof(BasicSingleType)) + { + /* OK */ + return 0; + } + break; + case P1DBL: + if (s >= sizeof(BasicDoubleType)) + { + /* OK */ + return 0; + } + break; + case P1DEV: + case P1LEN: + case P1POS: + case P1GEZ: + case P1GTZ: + case P1NEZ: + { + /* ERROR */ + return -1; + } + break; + } + /* ERROR */ + return -1; +} + +void +FunctionDefinitionCheck(struct bwb_function * f) +{ + /* function definition check -- look for obvious errors */ + char bwb_ebuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + + /* sanity check */ + if (f->ParameterCount == PNONE) + { + /* function has NO parameters */ + if (f->ParameterTypes == PNONE) + { + /* OK */ + } + else + { + /* oops */ + sprintf(bwb_ebuf, "in fnc_init(): invalid ParameterTypes <%s>\n", f->Name); + prn_xprintf(bwb_ebuf); + } + if (f->ParameterTests == PNONE) + { + /* OK */ + } + else + { + /* oops */ + sprintf(bwb_ebuf, "in fnc_init(): invalid ParameterTests <%s>\n", f->Name); + prn_xprintf(bwb_ebuf); + } + } + else + { + /* function HAS parameters */ + int i; + unsigned long ParameterTests; + ParameterTests = f->ParameterTests; + for (i = 0; i < f->ParameterCount; i++) + { + /* sanity check this parameter */ + unsigned long thischeck; + thischeck = ParameterTests & 0x0000000F; + /* verify parameter check */ + if (f->ParameterTypes & (1 << i)) + { + /* STRING */ + if (thischeck >= P1ANY && thischeck <= P1DBL) + { + /* OK */ + } + else + { + /* oops */ + sprintf(bwb_ebuf, "in fnc_init(): invalid ParameterTests <%s> parameter %d\n", f->Name, i + 1); + prn_xprintf(bwb_ebuf); + } + } + else + { + /* NUMBER */ + if (thischeck >= P1ANY && thischeck <= P1NEZ) + { + /* OK */ + } + else + { + /* oops */ + sprintf(bwb_ebuf, "in fnc_init(): invalid ParameterTests <%s> parameter %d\n", f->Name, i + 1); + prn_xprintf(bwb_ebuf); + } + } + ParameterTests = ParameterTests >> 4; + } + if (ParameterTests != 0) + { + /* oops */ + sprintf(bwb_ebuf, "in fnc_init(): invalid ParameterTests <%s> parameter %d\n", f->Name, i + 1); + prn_xprintf(bwb_ebuf); + } + } +} + +void +FunctionUniqueID(struct bwb_function * f, char *UniqueID) +{ + /* generate the function's UniqueID */ + /* manual fixup required for duplicates */ + char *D; /* location of $ */ + char NumVar; + char StrVar; + + bwx_DEBUG(__FUNCTION__); + + + NumVar = 'X'; + StrVar = 'A'; + + /* F_ */ + strcpy(UniqueID, "F_"); + /* NAME */ + strcat(UniqueID, f->Name); + D = strchr(UniqueID, BasicStringSuffix); + if (D == NULL) + { + /* NOT FOUND */ + } + else + { + /* FOUND */ + *D = 0; /* remove it */ + } + /* PARAMETERS */ + if (f->ParameterCount == PNONE) + { + /* function has NO parameters */ + } + else + { + /* function HAS parameters */ + int i; + unsigned int ParameterTypes; + /* unsigned long ParameterTests; */ + ParameterTypes = f->ParameterTypes; + /* ParameterTests = f->ParameterTests; */ + for (i = 0; i < f->ParameterCount; i++) + { + char VarName[BasicNameLengthMax + 1]; + /* sanity check this parameter */ + /* unsigned long thischeck; thischeck = + * ParameterTests & 0x0000000F; */ + /* verify parameter check */ + if (ParameterTypes & 1) + { + /* STRING */ + sprintf(VarName, "_%c", StrVar); + StrVar++; + } + else + { + /* NUMBER */ + sprintf(VarName, "_%c", NumVar); + NumVar++; + } + strcat(UniqueID, VarName); + ParameterTypes = ParameterTypes >> 1; + /* ParameterTests = ParameterTests >> 4; */ + } + } + /* RETURN TYPE */ + switch (f->ReturnType) + { + case STRING: + strcat(UniqueID, "_S"); + break; + case NUMBER: + strcat(UniqueID, "_N"); + break; + default: + strcat(UniqueID, "_INTERNAL ERROR"); + break; + } + /* fixup illegal characters, "DEF FN" "BLOAD:", "CLOAD*" */ + { + char *P; + P = UniqueID; + while (*P) + { + if (isalnum(*P)) + { + /* OK */ + } + else + { + /* FIXUP */ + *P = '_'; + } + P++; + } + } +} + + +void +FunctionSyntax(struct bwb_function * f, char *Syntax) +{ + /* generate the function's Syntax */ + char NumVar; + char StrVar; + + bwx_DEBUG(__FUNCTION__); + - DESCRIPTION: This C function implements the BASIC - CHAIN command. + NumVar = 'X'; + StrVar = 'A'; - SYNTAX: CHAIN file-name + /* RETURN TYPE */ + switch (f->ReturnType) + { + case STRING: + strcpy(Syntax, "S$ = "); + break; + case NUMBER: + strcpy(Syntax, "N = "); + break; + default: + strcpy(Syntax, "INTERNAL ERROR = "); + break; + } + /* NAME */ + strcat(Syntax, f->Name); + /* PARAMETERS */ + if (f->ParameterCount == PNONE) + { + /* function has NO parameters */ + } + else + { + /* function HAS parameters */ + int i; + unsigned int ParameterTypes; + /* unsigned long ParameterTests; */ + ParameterTypes = f->ParameterTypes; + /* ParameterTests = f->ParameterTests; */ + + switch (f->ReturnType) + { + case STRING: + strcat(Syntax, "( "); + break; + case NUMBER: + strcat(Syntax, "( "); + break; + default: + strcat(Syntax, "INTERNAL ERROR( "); + break; + } -***************************************************************/ + for (i = 0; i < f->ParameterCount; i++) + { + char VarName[BasicNameLengthMax + 1]; + /* sanity check this parameter */ + /* unsigned long thischeck; thischeck = + * ParameterTests & 0x0000000F; */ + if (i > 0) + { + strcat(Syntax, ", "); + } + /* verify parameter check */ + if (ParameterTypes & 1) + { + /* STRING */ + sprintf(VarName, "%c$", StrVar); + StrVar++; + } + else + { + /* NUMBER */ + sprintf(VarName, "%c", NumVar); + NumVar++; + } + strcat(Syntax, VarName); + ParameterTypes = ParameterTypes >> 1; + /* ParameterTests = ParameterTests >> 4; */ + } + switch (f->ReturnType) + { + case STRING: + strcat(Syntax, " )"); + break; + case NUMBER: + strcat(Syntax, " )"); + break; + default: + strcat(Syntax, " INTERNAL ERROR)"); + break; + } + } +} -#if ANSI_C -struct bwb_line * -bwb_chain( struct bwb_line *l ) -#else -struct bwb_line * -bwb_chain( l ) - struct bwb_line *l; -#endif +void +DumpAllFuctionUniqueID(void) +{ + /* for the C maintainer */ + char tbuf[BasicStringLengthMax + 1]; + int i; + + bwx_DEBUG(__FUNCTION__); + + prn_lprintf("/* FUNCTIONS */\n"); + for (i = 0; i < NUM_FUNCTIONS; i++) { + char UniqueID[BasicStringLengthMax + 1]; + char Syntax[BasicStringLengthMax + 1]; - /* deallocate all variables except common ones */ + FunctionUniqueID(&(bwb_prefuncs[i]), UniqueID); + FunctionSyntax(&(bwb_prefuncs[i]), Syntax); + sprintf(tbuf, "#define %-30s %3d /* %-30s */\n", UniqueID, i + 1, Syntax); + prn_lprintf(tbuf); + } + sprintf(tbuf, "#define NUM_FUNCTIONS %d\n", i); + prn_lprintf(tbuf); +} + +void +DumpAllFunctionSwitch(void) +{ + /* for the C maintainer */ + int i; + + bwx_DEBUG(__FUNCTION__); + + prn_lprintf("/* SWITCH */\n"); + prn_lprintf("switch( UniqueID )\n"); + prn_lprintf("{\n"); + for (i = 0; i < NUM_FUNCTIONS; i++) + { + char tbuf[BasicStringLengthMax + 1]; - var_delcvars(); + prn_lprintf("case "); + FunctionUniqueID(&(bwb_prefuncs[i]), tbuf); + prn_lprintf(tbuf); + prn_lprintf(":\n"); + prn_lprintf(" break;\n"); + } + prn_lprintf("}\n"); +} + +static const char *ParameterRangeID[16] = +{ + "P%dERR", + "P%dANY", + "P%dBYT", + "P%dINT", + "P%dLNG", + "P%dCUR", + "P%dFLT", + "P%dDBL", + "P%dDEV", + "P%dLEN", + "P%dPOS", + "P%dCOM", + "P%dLPT", + "P%dGTZ", + "P%dGEZ", + "P%dNEZ", +}; + +static const char *NumberVariableRange[16] = +{ + /* P1ERR */ " PARAMETER: %c is a number, INTERNAL ERROR", + /* P1ANY */ " PARAMETER: %c is a number", + /* P1BYT */ " PARAMETER: %c is a number, [0,255]", + /* P1INT */ " PARAMETER: %c is a number, [MININT,MAXINT]", + /* P1LNG */ " PARAMETER: %c is a number, [MINLNG,MAXLNG]", + /* P1CUR */ " PARAMETER: %c is a number, [MINCUR,MAXCUR]", + /* P1FLT */ " PARAMETER: %c is a number, [MINFLT,MAXFLT]", + /* P1DBL */ " PARAMETER: %c is a number, [MINDBL,MAXDBL]", + /* P1DEV */ " PARAMETER: %c is a number, [1,MAXDEV]", + /* P1LEN */ " PARAMETER: %c is a number, [0,MAXLEN]", + /* P1POS */ " PARAMETER: %c is a number, [1,MAXLEN]", + /* P1COM */ " PARAMETER: %c is a number, [1,4]", + /* P1LPT */ " PARAMETER: %c is a number, [0,3]", + /* P1GTZ */ " PARAMETER: %c is a number, > 0", + /* P1GEZ */ " PARAMETER: %c is a number, >= 0", + /* P1NEZ */ " PARAMETER: %c is a number, <> 0", +}; + +static const char *StringVariableRange[16] = +{ + /* P1ERR */ " PARAMETER: %c$ is a string, INTERNAL ERROR", + /* P1ANY */ " PARAMETER: %c$ is a string, LEN >= 0", + /* P1BYT */ " PARAMETER: %c$ is a string, LEN >= 1", + /* P1INT */ " PARAMETER: %c$ is a string, LEN >= sizeof(INT)", + /* P1LNG */ " PARAMETER: %c$ is a string, LEN >= sizeof(LNG)", + /* P1CUR */ " PARAMETER: %c$ is a string, LEN >= sizeof(CUR)", + /* P1FLT */ " PARAMETER: %c$ is a string, LEN >= sizeof(FLT)", + /* P1DBL */ " PARAMETER: %c$ is a string, LEN >= sizeof(DBL)", + /* P1DEV */ " PARAMETER: %c$ is a string, RESERVED", + /* P1LEN */ " PARAMETER: %c$ is a string, RESERVED", + /* P1POS */ " PARAMETER: %c$ is a string, RESERVED", + /* P1COM */ " PARAMETER: %c$ is a string, RESERVED", + /* P1LPT */ " PARAMETER: %c$ is a string, RESERVED", + /* P1GTZ */ " PARAMETER: %c$ is a string, RESERVED", + /* P1GEZ */ " PARAMETER: %c$ is a string, RESERVED", + /* P1NEZ */ " PARAMETER: %c$ is a string, RESERVED", +}; + +void +DumpAllFuctionTableDefinitions(void) +{ + /* generate bwd_fun.c */ + int n; + + bwx_DEBUG(__FUNCTION__); + + + prn_lprintf("/* FUNCTION TABLE */\n\n"); + prn_lprintf("#include \"bwbasic.h\"\n\n"); + prn_lprintf("struct bwb_function bwb_prefuncs[ NUM_FUNCTIONS ] =\n"); + prn_lprintf("{\n"); + for (n = 0; n < NUM_FUNCTIONS; n++) + { + int i; + int j; + char tbuf[BasicStringLengthMax + 1]; + char UniqueID[BasicStringLengthMax + 1]; + char Syntax[BasicStringLengthMax + 1]; + struct bwb_function *f; + + f = &(bwb_prefuncs[n]); + + FunctionUniqueID(f, UniqueID); + FunctionSyntax(f, Syntax); + prn_lprintf("{\n"); + sprintf(tbuf, " %s, /* UniqueID */\n", UniqueID); + prn_lprintf(tbuf); + sprintf(tbuf, " \"%s\", /* Syntax */\n", Syntax); + prn_lprintf(tbuf); + + prn_lprintf(" "); + prn_lprintf("\""); + ProcessEscapeChars(f->Description, tbuf); + prn_lprintf(tbuf); + prn_lprintf("\""); + prn_lprintf(", /* Description */\n"); + + + sprintf(tbuf, " \"%s\", /* Name */\n", f->Name); + prn_lprintf(tbuf); + switch (f->ReturnType) + { + case STRING: + sprintf(tbuf, " %s, /* ReturnType */\n", "STRING"); + break; + case NUMBER: + sprintf(tbuf, " %s, /* ReturnType */\n", "NUMBER"); + break; + default: + sprintf(tbuf, " %s, /* ReturnType */\n", "INTERNAL ERROR"); + break; + } + prn_lprintf(tbuf); + sprintf(tbuf, " %d, /* ParameterCount */\n", f->ParameterCount); + prn_lprintf(tbuf); + if (f->ParameterCount == 0) + { + sprintf(tbuf, " %s, /* ParameterTypes */\n", "PNONE"); + prn_lprintf(tbuf); + sprintf(tbuf, " %s, /* ParameterTests */\n", "PNONE"); + prn_lprintf(tbuf); + } + else + { + strcpy(tbuf, " "); + for (i = 0; i < f->ParameterCount; i++) + { + int ParameterTypes; + ParameterTypes = f->ParameterTypes >> i; + ParameterTypes &= 0x1; + if (i > 0) + { + strcat(tbuf, " | "); + } + if (ParameterTypes) + { + sprintf(strchr(tbuf, 0), "P%dSTR", i + 1); + } + else + { + sprintf(strchr(tbuf, 0), "P%dNUM", i + 1); + } + } + strcat(tbuf, ", /* ParameterTypes */\n"); + prn_lprintf(tbuf); - /* remove old program from memory */ - bwb_xnew( l ); + strcpy(tbuf, " "); + for (i = 0; i < f->ParameterCount; i++) + { + unsigned int ParameterTests; + ParameterTests = f->ParameterTests >> (i * 4); + ParameterTests &= 0xF; - /* call xload function to load new program in memory */ + if (i > 0) + { + strcat(tbuf, " | "); + } + sprintf(strchr(tbuf, 0), ParameterRangeID[ParameterTests], i + 1); + } + strcat(tbuf, ", /* ParameterTests */\n"); + prn_lprintf(tbuf); + } + sprintf(tbuf, " %s, /* NextPointer */\n", "NULL"); + prn_lprintf(tbuf); + strcpy(tbuf, " "); + j = 0; + for (i = 0; i < NUM_VERSIONS; i++) + { + if (f->OptionVersionBitmask & bwb_vertable[i].OptionVersionBitmask) + { + if (j > 0) + { + strcat(tbuf, " | "); + } + strcat(tbuf, bwb_vertable[i].ID); + j++; + } + } + strcat(tbuf, " /* OptionVersionBitmask */\n"); + prn_lprintf(tbuf); + prn_lprintf("},\n"); + } + prn_lprintf("};\n\n"); +} - bwb_xload( l ); - /* reset all stack counters */ - CURTASK exsc = -1; - CURTASK expsc = 0; - CURTASK xtxtsc = 0; - /* run the program */ +void +DumpOneFunctionSyntax(int n, int lp) +{ + char tbuf[BasicStringLengthMax + 1]; + struct bwb_function *f; - return bwb_run( &CURTASK bwb_start ); + bwx_DEBUG(__FUNCTION__); + if (n < 0 || n >= NUM_FUNCTIONS) + { + return; } + f = &(bwb_prefuncs[n]); + /* NAME */ + { + char UniqueID[BasicStringLengthMax + 1]; + char Syntax[BasicStringLengthMax + 1]; -/*************************************************************** + FunctionUniqueID(f, UniqueID); + FunctionSyntax(f, Syntax); + sprintf(tbuf, " SYNTAX: %s\n", Syntax); + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + } + /* PARAMETERS */ + if (f->ParameterCount == PNONE) + { + /* function has NO parameters */ + } + else + { + /* function HAS parameters */ + int i; + unsigned int ParameterTypes; + unsigned long ParameterTests; + char NumVar; + char StrVar; + ParameterTypes = f->ParameterTypes; + ParameterTests = f->ParameterTests; + NumVar = 'X'; + StrVar = 'A'; + for (i = 0; i < f->ParameterCount; i++) + { + /* sanity check this parameter */ + unsigned long thischeck; + thischeck = ParameterTests & 0x0000000F; + /* verify parameter check */ + if (ParameterTypes & 1) + { + /* STRING */ + sprintf(tbuf, StringVariableRange[thischeck], StrVar); + StrVar++; + } + else + { + /* NUMBER */ + sprintf(tbuf, NumberVariableRange[thischeck], NumVar); + NumVar++; + } + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + if (lp) + { + prn_lprintf("\n"); + } + else + { + prn_xprintf("\n"); + } + ParameterTypes = ParameterTypes >> 1; + ParameterTests = ParameterTests >> 4; + } + } + /* DESCRIPTION */ + { + sprintf(tbuf, "DESCRIPTION: %s\n", f->Description); + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + } + /* COMPATIBILITY */ + if (lp) + { + int i; + sprintf(tbuf, " VERSIONS:\n"); + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + for (i = 0; i < NUM_VERSIONS; i++) + { + char X; + if (f->OptionVersionBitmask & bwb_vertable[i].OptionVersionBitmask) + { + /* SUPPORTED */ + X = 'X'; + } + else + { + /* NOT SUPPORTED */ + X = '_'; + } + sprintf(tbuf, " [%c] %s\n", X, bwb_vertable[i].Name); + if (lp) + { + prn_lprintf(tbuf); + } + else + { + prn_xprintf(tbuf); + } + } + } +} - FUNCTION: bwb_merge() +void +DumpAllFuctionSyntax(void) +{ + /* for the C maintainer */ + int n; + + bwx_DEBUG(__FUNCTION__); + + for (n = 0; n < NUM_FUNCTIONS; n++) + { + prn_lprintf("------------------------------------------------------------\n"); + DumpOneFunctionSyntax(n, TRUE); + } + prn_lprintf("------------------------------------------------------------\n"); +} + +void +DumpAllFunctionHtmlTable(void) +{ + /* generate bwd_cmd.htm */ + + int i; + int j; + + bwx_DEBUG(__FUNCTION__); + + + /* LEGEND */ + prn_lprintf("

LEGEND


\n"); + prn_lprintf("\n"); + + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf("\n"); + + for (j = 0; j < NUM_VERSIONS; j++) + { + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf("\n"); + } + prn_lprintf("
"); + prn_lprintf(""); + prn_lprintf("ID"); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf("NAME"); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf("DESCRIPTION"); + prn_lprintf(""); + prn_lprintf("
"); + prn_lprintf(bwb_vertable[j].ID); + prn_lprintf(""); + prn_lprintf(bwb_vertable[j].Name); + prn_lprintf(""); + prn_lprintf(bwb_vertable[j].Description); + prn_lprintf("
\n"); + prn_lprintf("
\n"); + + + /* DETAILS */ + prn_lprintf("

DETAILS


\n"); + prn_lprintf("\n"); + + prn_lprintf(""); + prn_lprintf(""); + for (j = 0; j < NUM_VERSIONS; j++) + { + prn_lprintf(""); + } + prn_lprintf("\n"); + + + /* run through the command table and print comand -vs- OPTION VERSION */ + + for (i = 0; i < NUM_FUNCTIONS; i++) + { + prn_lprintf(""); + prn_lprintf(""); + + for (j = 0; j < NUM_VERSIONS; j++) + { + prn_lprintf(""); + } + prn_lprintf("\n"); + } + prn_lprintf("
"); + prn_lprintf(""); + prn_lprintf("FUNCTION"); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(""); + prn_lprintf(bwb_vertable[j].ID); + prn_lprintf(""); + prn_lprintf("
"); + prn_lprintf(bwb_prefuncs[i].Name); + prn_lprintf(""); + if (bwb_prefuncs[i].OptionVersionBitmask & bwb_vertable[j].OptionVersionBitmask) + { + prn_lprintf("X"); + } + else + { + prn_lprintf(" "); + } + prn_lprintf("
\n"); + prn_lprintf("\n"); +} + +struct bwb_line * +bwb_DEF_SUB(struct bwb_line * l) +{ + /* user is executing a function, such as 100 COS X, as though it were + * a command */ + /* this applies to both intrinsic functions and user defined + * functions and subroutines */ + /* no special parsing is required, just add () around the parameters */ + + char Buffer[BasicStringLengthMax + 1]; + int i; + char *C; + char *F; + + bwx_DEBUG(__FUNCTION__); + + i = 0; + C = l->buffer; + C += l->position; + F = Buffer; + + while (*C == ' ') + { + /* skip leading spaces before name */ + C++; + } + /* these should not happen */ + if (*C == '\0' || *C == OptionCommentChar) + { + bwb_error("bwb_DEF_SUB, INTERNAL null"); + return bwb_zline(l); + } + if (!isalpha(*C)) + { + bwb_error("bwb_DEF_SUB, INTERNAL isalpha"); + return bwb_zline(l); + } + if (strlen(C) + 2 > BasicStringLengthMax) + { + bwb_error("Ibwb_DEF_SUB, NTERNAL strlen"); + return bwb_zline(l); + } + /* OK */ + while (isalpha(*C)) + { + /* copy command name */ + *F = *C; + F++; + C++; + } + if (*C == BasicStringSuffix) + { + /* copy command name */ + *F = *C; + F++; + C++; + } + while (*C == ' ') + { + /* skip trailing spaces after name */ + C++; + } + /* left paren */ + *F = '('; + F++; + while (*C != '\0') + { + /* copy parameters */ + if( *C == '"' ) + { + /* quoted string */ + { + /* leading quote */ + *F = *C; + F++; + C++; + } + while( *C != '\0' && *C != '"' ) + { + /* copy inclosed string */ + *F = *C; + F++; + C++; + } + if( *C == '"' ) + { + /* trailing quote */ + *F = *C; + F++; + C++; + } + } + else + if( *C == OptionCommentChar ) + { + /* comment */ + while( *C != '\0' ) + { + /* skip to end of line */ + C++; + } + } + else + if( *C == ' ' ) + { + /* skip unquoted spaces */ + C++; + } + else + { + /* normal char, so copy it */ + *F = *C; + F++; + C++; + } + } + /* right paren */ + *F = ')'; + F++; + /* terminate */ + *F = '\0'; + /* Call the expression interpreter to evaluate the function */ + + /* prn_xprintf(Buffer); */ + bwb_exp(Buffer, FALSE, &i); + if (ERROR_PENDING) + { + /* prn_xprintf("oops"); */ + } + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); +} - DESCRIPTION: This C function implements the BASIC - MERGE command, merging command lines from - a specified file into the program in memory - without deleting the lines already in memory. - SYNTAX: MERGE file-name +/*************************************************************** + + FUNCTION: bwb_zline() + + DESCRIPTION: This function is called at the exit from + Bywater BASIC command functions. It returns + a pointer to the current position in the current line. + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_merge( struct bwb_line *l ) -#else +bwb_zline(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + + /* skip trailing spaces */ + while (l->buffer[l->position] == ' ') + l->position++; + /* skip trailing comment */ + if (l->buffer[l->position] == OptionCommentChar) + { + /* COMMENT */ + while (l->buffer[l->position] != 0) + l->position++; + } + /* usually, but NOT always, we are at the end of the line */ + return l; +} + + +/*************************************************************** + + FUNCTION: fnc_fncs() + + DESCRIPTION: This C function is used for debugging + purposes; it prints a list of all defined + functions. + + SYNTAX: FNCS + +***************************************************************/ struct bwb_line * -bwb_merge( l ) - struct bwb_line *l; -#endif +bwb_FNCS(struct bwb_line * l) +{ + + register int n; + int t; + + bwx_DEBUG(__FUNCTION__); + + prn_iprintf("BWBASIC FUNCTIONS AVAILABLE:\n"); + + /* run through the command table and print comand names */ + + t = 0; + for (n = 0; n < NUM_FUNCTIONS; ++n) + { + prn_iprintf(bwb_prefuncs[n].Name); + if (t < 4) + { + prn_iprintf("\t"); + t++; + } + else + { + prn_iprintf("\n"); + t = 0; + } + } + if (t > 0) + { + prn_iprintf("\n"); + } + return bwb_zline(l); +} + + +struct bwb_line * +bwb_MAINTAINER(struct bwb_line * l) +{ + + int ShowHelp; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + ShowHelp = TRUE; + adv_element(l->buffer, &(l->position), tbuf); + + if (strcasecmp(tbuf, "CMDS") == 0) + { + + adv_element(l->buffer, &(l->position), tbuf); + + if (strcasecmp(tbuf, "HTML") == 0) + { + DumpAllCommandHtmlTable(); + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "ID") == 0) + { + DumpAllCommandUniqueID(); + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "MANUAL") == 0) + { + DumpAllCommandSyntax(); + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "SWITCH") == 0) + { + DumpAllCommandSwitchStatement(); + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "TABLE") == 0) + { + DumpAllCommandTableDefinitions(); + ShowHelp = FALSE; + } + } + else + if (strcasecmp(tbuf, "FNCS") == 0) + { + adv_element(l->buffer, &(l->position), tbuf); + + if (strcasecmp(tbuf, "HTML") == 0) + { + DumpAllFunctionHtmlTable(); + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "ID") == 0) + { + DumpAllFuctionUniqueID(); + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "MANUAL") == 0) + { + DumpAllFuctionSyntax(); + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "SWITCH") == 0) + { + DumpAllFunctionSwitch(); + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "TABLE") == 0) + { + DumpAllFuctionTableDefinitions(); + ShowHelp = FALSE; + } + } + else + if (strcasecmp(tbuf, "DEBUG") == 0) + { + adv_element(l->buffer, &(l->position), tbuf); + if (strcasecmp(tbuf, "ON") == 0) + { + MaintainerDebugOn = TRUE; + ShowHelp = FALSE; + } + else + if (strcasecmp(tbuf, "OFF") == 0) + { + MaintainerDebugOn = FALSE; + ShowHelp = FALSE; + } + } + else + if (strcasecmp(tbuf, "STACK") == 0) { + /* * dump the current execution stack, * Leftmost is the + * bottom, * Rigthmost is the top. */ + int i; + for (i = 0; i <= CURTASK exsc; i++) + { + struct bwb_line *l; - /* call xload function to merge program in memory */ - - bwb_xload( l ); - - - return bwb_zline( l ); + l = CURTASK excs[i].line; + if (l != NULL) + { + char LineNumber[32]; + sprintf(LineNumber, "%d:", l->number); + prn_xprintf(LineNumber); + } + } + prn_xprintf("\n"); + ShowHelp = FALSE; } - -/*************************************************************** - - FUNCTION: bwb_onerror() - - DESCRIPTION: This C function implements the BASIC - ON ERROR GOSUB command. - - SYNTAX: ON ERROR GOSUB line | label - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_onerror( struct bwb_line *l ) -#else -struct bwb_line * -bwb_onerror( l ) - struct bwb_line *l; -#endif + if (ShowHelp == TRUE) { - char tbuf[ MAXSTRINGSIZE + 1 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_onerror(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif + prn_xprintf("MAINTAINER is a command intended for the C maintainer.\n"); + prn_xprintf("It is used when making global changes to the internal tables.\n"); + prn_xprintf("This command is subject to change without notice, at any time.\n"); + prn_xprintf("Currently, the valid statements are:\n\n"); + prn_xprintf("MAINTAINER CMDS HTML ' dump COMMAND vs VERSION as HTML table\n"); + prn_xprintf("MAINTAINER CMDS ID ' dump COMMAND #defines for UniqueID\n"); + prn_xprintf("MAINTAINER CMDS MANUAL ' dump COMMAND manual\n"); + prn_xprintf("MAINTAINER CMDS SWITCH ' dump COMMAND switch(UniqueID)\n"); + prn_xprintf("MAINTAINER CMDS TABLE ' dump COMMAND table\n"); + prn_xprintf("MAINTAINER FNCS HTML ' dump FUNCTION vs VERSION as HTML table\n"); + prn_xprintf("MAINTAINER FNCS ID ' dump FUNCTION #defines for UniqueID\n"); + prn_xprintf("MAINTAINER FNCS MANUAL ' dump FUNCTION manual\n"); + prn_xprintf("MAINTAINER FNCS SWITCH ' dump FUNCTION switch(UniqueID)\n"); + prn_xprintf("MAINTAINER FNCS TABLE ' dump FUNCTION table\n"); + prn_xprintf("MAINTAINER DEBUG ON ' enable degug tracing\n"); + prn_xprintf("MAINTAINER DEBUG OFF ' disable degug tracing\n"); + prn_xprintf("MAINTAINER STACK ' dump the BASIC stack\n"); + } + return bwb_zline(l); +} - /* get the GOSUB STATEMENT */ - adv_element( l->buffer, &( l->position ), tbuf ); +/*************************************************************** + + FUNCTION: fnc_init() + + DESCRIPTION: This command initializes the function + linked list, placing all predefined functions + in the list. + +***************************************************************/ - /* check for GOSUB statement */ +int +fnc_init(int task) +{ + register int n; + struct bwb_function *f; - bwb_strtoupper( tbuf ); - if ( strcmp( tbuf, CMD_GOSUB ) != 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_onerror(): GOSUB statement missing" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif + bwx_DEBUG(__FUNCTION__); - return bwb_zline( l ); - } + strcpy(LOCALTASK fnc_start.Name, "FNC_START"); + LOCALTASK fnc_start.ReturnType = 'X'; + strcpy(LOCALTASK fnc_end.Name, "FNC_END"); + LOCALTASK fnc_end.ReturnType = 'x'; + LOCALTASK fnc_end.next = &LOCALTASK fnc_end; - /* get the GOSUB line */ - adv_element( l->buffer, &( l->position ), err_gosubl ); + f = &LOCALTASK fnc_start; - return bwb_zline( l ); + /* now go through each of the preestablished functions and set up + * links between them; from this point the program address the + * functions only as a linked list (not as an array) */ + for (n = 0; n < NUM_FUNCTIONS; ++n) + { + f->next = &(bwb_prefuncs[n]); + f = f->next; + FunctionDefinitionCheck(f); } -/*************************************************************** - - FUNCTION: bwb_tron() - - DESCRIPTION: This function implements the BASIC TRON - command, turning the trace mechanism on. + /* link the last pointer to the end; this completes the list */ - SYNTAX: TRON + f->next = &LOCALTASK fnc_end; -***************************************************************/ + return TRUE; +} -#if ANSI_C -struct bwb_line * -bwb_tron( struct bwb_line *l ) -#else -struct bwb_line * -bwb_tron( l ) - struct bwb_line *l; -#endif - { - bwb_trace = TRUE; - prn_xprintf( stdout, "Trace is ON\n" ); - return bwb_zline( l ); - } -/*************************************************************** - FUNCTION: bwb_troff() - DESCRIPTION: This function implements the BASIC TROFF - command, turning the trace mechanism off. +void +fnc_add_deffn(struct fslte * F) +{ + struct bwb_function *f; + struct bwb_function *n; - SYNTAX: TROFF + bwx_DEBUG(__FUNCTION__); -***************************************************************/ + /* get memory for fslt structure */ -#if ANSI_C -struct bwb_line * -bwb_troff( struct bwb_line *l ) -#else -struct bwb_line * -bwb_troff( l ) - struct bwb_line *l; -#endif + if ((f = CALLOC(1, sizeof(struct bwb_function), "fnc_add_deffn")) == NULL) { - bwb_trace = FALSE; - prn_xprintf( stdout, "Trace is OFF\n" ); - - return bwb_zline( l ); + bwb_error("in fnc_add_deffn(): failed to get memory for bwb_function structure"); + return; } + strcpy(f->Name, F->name); + if (strchr(F->name, BasicStringSuffix) != NULL) + { + f->ReturnType = STRING; + } + else + { + f->ReturnType = NUMBER; + } + f->ReturnType |= (F->line->cmdnum & 0x00FF) << 8; /* UniqueID is a line + * number */ + f->UniqueID = F->line->number; + f->ParameterCount = F->ParameterCount; /* 0..32, 0xFF == VARIANT */ + f->ParameterTypes = F->ParameterTypes; + f->OptionVersionBitmask = OptionVersion; -#endif /* COMMON_CMDS */ - -/*************************************************************** + /* establish linkages */ - FUNCTION: bwb_randomize() + n = CURTASK fnc_start.next; + CURTASK fnc_start.next = f; + f->next = n; - DESCRIPTION: This function implements the BASIC - RANDOMIZE command, seeding the pseudo- - random number generator. +} - SYNTAX: RANDOMIZE number -***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_randomize( struct bwb_line *l ) -#else -struct bwb_line * -bwb_randomize( l ) - struct bwb_line *l; -#endif - { - register unsigned n; - struct exp_ese *e; - /* Check for argument */ +static struct fslte * +fslt_find_by_line(int LineNumber) +{ + struct fslte *f; - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\n': - case '\r': -#if MULTISEG_LINES - case ':': -#endif - n = (unsigned) 1; - break; - default: - n = (unsigned) 0; - break; - } + bwx_DEBUG(__FUNCTION__); - /* get the argument in tbuf */ + /* SEARCH */ - if ( n == (unsigned) 0 ) + for (f = CURTASK fslt_start.next; f != &CURTASK fslt_end; f = f->next) + { + if (f->line->number == LineNumber) { - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - n = (unsigned) exp_getnval( e ); + /* FOUND */ + return f; } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_randomize(): argument is <%d>", n ); - bwb_debug( bwb_ebuf ); -#endif + /* NOT FOUND */ - srand( n ); + return NULL; - return bwb_zline( l ); - } +} -/*************************************************************** - FUNCTION: bwb_xnew() +/* +The generic handler for user defined functions. +When called by exp_function(), f->id will be set to the line number of a specific DEF USR. +*/ +struct bwb_variable * +fnc_deffn(int argc, struct bwb_variable * argv, int unique_id) +{ + struct fslte *f; + struct bwb_variable *v; + struct bwb_variable *argn; + int i; + struct bwb_line *call_line; + int save_elevel; - DESCRIPTION: Clears the program in memory, but does not - deallocate all variables. + bwx_DEBUG(__FUNCTION__); -***************************************************************/ + /* initialize the variable if necessary */ -#if ANSI_C -struct bwb_line * -bwb_xnew( struct bwb_line *l ) -#else -struct bwb_line * -bwb_xnew( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *current, *previous; - int wait; + f = fslt_find_by_line(unique_id); - wait = TRUE; - for ( current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next ) + /* these errors should not occur */ + if (f == NULL) + { + sprintf(bwb_ebuf, "INTERNAL ERROR, f == NULL"); + bwb_error(bwb_ebuf); + return NULL; + } + if (argv == NULL) + { + sprintf(bwb_ebuf, "INTERNAL ERROR, argv == NULL"); + bwb_error(bwb_ebuf); + return NULL; + } + if (f->ParameterCount == 0xFF) + { + /* VARIANT */ + } + else + if (argc != f->ParameterCount) + { + sprintf(bwb_ebuf, "INTERNAL ERROR, argc != f->ParameterCount"); + bwb_error(bwb_ebuf); + return NULL; + } + if (f->ParameterCount == 0xFF) + { + /* VARIANT */ + f->local_variable = argv; + } + else + if (argc > 0) + { + v = f->local_variable; + argn = argv; + for (i = 0; i < argc; i++) { - if ( wait != TRUE ) + argn = argn->next; + if (v == NULL) { - /* Revised to FREE pass-thru call by JBV */ - FREE( previous, "bwb_xnew" ); - previous = NULL; /* JBV */ + sprintf(bwb_ebuf, "INTERNAL ERROR, v == NULL"); + bwb_error(bwb_ebuf); + return NULL; } - wait = FALSE; - previous = current; + if (argn == NULL) + { + sprintf(bwb_ebuf, "INTERNAL ERROR, argn == NULL"); + bwb_error(bwb_ebuf); + return NULL; + } + if (v->type != argn->type) + { + sprintf(bwb_ebuf, "INTERNAL ERROR, v->type != argn->type"); + bwb_error(bwb_ebuf); + return NULL; + } + /* NEW ... */ + if (strlen(v->name) > 0) + { + /* FIXME: this is a hack - the variable type + * should be determined when the variable is + * created */ + char *E; + char e; + int IsError; + IsError = 0; + + E = strchr(v->name, '\0'); + E--; + e = *E; + /* sprintf( bwb_ebuf, "LAST CHAR is %c, TYPE + * is %c", e, v->type ); puts( bwb_ebuf ); */ + /* so the following code is easier to read + * and maintain */ +#define PARAM_NUMBER *argn->memnum +#define PARAM_LENGTH argn->memstr->length +#define PARAM_BUFFER argn->memstr->sbuffer + /* check actual values versus formal + * parameter type */ + switch (e) + { + case BasicStringSuffix: + IsError = StringLengthCheck(P1ANY, PARAM_LENGTH); + break; + case BasicDoubleSuffix: + IsError = NumberValueCheck(P1DBL, PARAM_NUMBER); + break; + case BasicSingleSuffix: + IsError = NumberValueCheck(P1FLT, PARAM_NUMBER); + break; + case BasicCurrencySuffix: + IsError = NumberValueCheck(P1CUR, PARAM_NUMBER); + break; + case BasicLongSuffix: + IsError = NumberValueCheck(P1LNG, PARAM_NUMBER); + break; + case BasicIntegerSuffix: + IsError = NumberValueCheck(P1INT, PARAM_NUMBER); + break; + } + if (IsError != 0) + { + sprintf(bwb_ebuf, "ILLEGAL FUUNCTION CALL: %s(%s)", f->name, v->name); + bwb_Warning_InvalidParameter(bwb_ebuf); + return argv; + } + } + /* ...NEW */ + v = v->next; } - - CURTASK bwb_start.next = &CURTASK bwb_end; - - return bwb_zline( l ); } + /* OK */ + call_line = f->line; /* line to call for function */ + call_line->position = f->startpos; -#if UNIX_CMDS - -/*************************************************************** - - FUNCTION: bwb_environ() - - DESCRIPTION: This C function implements the BASIC - ENVIRON command, assigning a string - value to an environment variable. - - SYNTAX: ENVIRON variable-string$ = string$ - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_environ( struct bwb_line *l ) -#else -struct bwb_line * -bwb_environ( l ) - struct bwb_line *l; -#endif + if (call_line->cmdnum == C_DEF) { - static char tbuf[ MAXSTRINGSIZE + 1 ]; - char tmp[ MAXSTRINGSIZE + 1 ]; - register int i; - int pos; - struct exp_ese *e; + adv_ws(call_line->buffer, &call_line->position); + if (call_line->buffer[call_line->position] != '=') + { + sprintf(bwb_ebuf, "*** INTERNAL ERROR #%d (%s) ***", 5, "call_line->buffer[ ] != '='"); + bwb_error(bwb_ebuf); + return argv; + } + call_line->position++; /* NOTE - we skip past the '=' sign */ + } +/* PUSH STACK */ + save_elevel = CURTASK exsc; + bwb_incexec(); + bwb_setexec(call_line, call_line->position, EXEC_FUNCTION); - /* find the equals sign */ - for ( i = 0; ( l->buffer[ l->position ] != '=' ) && ( l->buffer[ l->position ] != '\0' ); ++i ) + /* create variable chain */ + if (f->ParameterCount == 0xFF) + { + /* VARIANT */ + } + else + if (argc > 0) + { + struct bwb_variable *source = NULL; /* source variable */ + source = f->local_variable; + argn = argv; + for (i = 0; i < argc; i++) { - tbuf[ i ] = l->buffer[ l->position ]; - tbuf[ i + 1 ] = '\0'; - ++( l->position ); + argn = argn->next; + /* copy the name */ + strcpy(argn->name, source->name); + source = source->next; } + } + if (call_line->cmdnum == C_DEF) + { + struct exp_ese *e; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_environ(): variable string is <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* get the value string to be assigned */ + /* the function return variable is hidden */ + CURTASK excs[CURTASK exsc].local_variable = argv->next; + e = bwb_exp(call_line->buffer, FALSE, &call_line->position); + bwb_etov(argv, e); - pos = 0; - e = bwb_exp( tbuf, FALSE, &pos ); - str_btoc( tbuf, exp_getsval( e ) ); + /* break variable chain */ + CURTASK excs[CURTASK exsc].local_variable = NULL; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_environ(): variable string resolves to <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - /* find the equals sign */ +/* POP STACK */ + bwb_decexec(); - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] != '=' ) + } + else + { + /* the function return variable is visible */ + CURTASK excs[CURTASK exsc].local_variable = argv; + /* exp_isfn() uses these to determine use of the function + * name as a variable */ + CURTASK excs[CURTASK exsc].LoopTopLine = call_line; + CURTASK excs[CURTASK exsc].LoopBottomLine = call_line->OtherLine; + + /* execute until function returns */ + while (CURTASK exsc > save_elevel) { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_environ(): failed to find equal sign" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - - return bwb_zline( l ); + bwb_execline(); } - ++( l->position ); - - /* get the value string to be assigned */ - e = bwb_exp( l->buffer, FALSE, &( l->position )); - str_btoc( tmp, exp_getsval( e ) ); + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_environ(): value string resolves to <%s>", tmp ); - bwb_debug( bwb_ebuf ); -#endif + if (f->ParameterCount == 0xFF) + { + /* VARIANT */ + f->local_variable = NULL; + } + return argv; +} - /* construct string */ - strcat( tbuf, "=" ); - strcat( tbuf, tmp ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_environ(): assignment string is <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - /* now assign value to variable */ - if ( putenv( tbuf ) == -1 ) - { - bwb_error( err_opsys ); - return bwb_zline( l ); - } - /* return */ +/*************************************************************** + + FUNCTION: fnc_find() + + DESCRIPTION: This C function attempts to locate + a BASIC function with the specified name. + If successful, it returns a pointer to + the C structure for the BASIC function, + if not successful, it returns NULL. + +***************************************************************/ +struct bwb_function * +fnc_find(char *name) +{ + struct bwb_function *f; - return bwb_zline( l ); + bwx_DEBUG(__FUNCTION__); + if (strlen(name) == 0) + { + return NULL; + } + for (f = CURTASK fnc_start.next; f != &CURTASK fnc_end; f = f->next) + { + if (OptionVersion & f->OptionVersionBitmask) + if (strcasecmp(f->Name, name) == 0) + { + return f; + } } -#endif /* UNIX_CMDS */ - -/*************************************************************** + /* search has failed: return NULL */ - FUNCTION: bwb_cmds() + return NULL; - DESCRIPTION: This function implements a CMD command, - which lists all commands implemented. - It is not part of a BASIC specification, - but is used for debugging bwBASIC. +} - SYNTAX: CMDS -***************************************************************/ +struct bwb_function * +fnc_find_exact(char *name, int ParameterCount, int ParameterTypes) +{ + struct bwb_function *f; -#if PERMANENT_DEBUG + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -struct bwb_line * -bwb_cmds( struct bwb_line *l ) -#else -struct bwb_line * -bwb_cmds( l ) - struct bwb_line *l; -#endif + for (f = CURTASK fnc_start.next; f != &CURTASK fnc_end; f = f->next) { - register int n; - char tbuf[ MAXSTRINGSIZE + 1 ]; - - prn_xprintf( stdout, "BWBASIC COMMANDS AVAILABLE: \n" ); - - /* run through the command table and print comand names */ - - for ( n = 0; n < COMMANDS; ++n ) + if (OptionVersion & f->OptionVersionBitmask) { - sprintf( tbuf, "%s \n", bwb_cmdtable[ n ].name ); - prn_xprintf( stdout, tbuf ); + if (f->ParameterCount == ParameterCount) + { + if (f->ParameterTypes == ParameterTypes) + { + if (strcasecmp(f->Name, name) == 0) + { + return f; + } + } + } } - - return bwb_zline( l ); } -#endif - -/*************************************************************** + /* search has failed: return NULL */ + return NULL; +} - FUNCTION: getcmdnum() - DESCRIPTION: This function returns the number associated - with a specified command (cmdstr) in the - command table. -***************************************************************/ +struct bwb_variable * +var_free(struct bwb_variable * v) +{ + /* // Release all the memory associated with a specific variable. // + * This function returns NULL, so you can use it like this: // v + * = var_new(...); // ... // v = var_free( v ); */ + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -int -getcmdnum( char *cmdstr ) -#else -int -getcmdnum( cmdstr ) - char *cmdstr; -#endif + if (v != NULL) { - register int c; - - for ( c = 0; c < COMMANDS; ++c ) + if (v->next != NULL) + { + /* This allows variable chains to be easily released. */ + v->next = var_free(v->next); + } + /* cleanup this variable */ + if (v->memnum != NULL) + { + FREE(v->memnum, "var_free"); + v->memnum = NULL; + } + if (v->memstr != NULL) { - if ( strcmp( bwb_cmdtable[ c ].name, cmdstr ) == 0 ) + int j; + for (j = 0; j < v->array_units; ++j) { - return c; + if (v->memstr[j].sbuffer != NULL) + { + FREE(v->memstr[j].sbuffer, "var_free"); + v->memstr[j].sbuffer = NULL; + } + v->memstr[j].rab = FALSE; + v->memstr[j].length = 0; } + FREE(v->memstr, "var_free"); + v->memstr = NULL; + } + if (v->array_sizes != NULL) + { + FREE(v->array_sizes, "var_free"); + v->array_sizes = NULL; } + if (v->array_pos != NULL) + { + FREE(v->array_pos, "var_free"); + v->array_pos = NULL; + } + } + return NULL; +} - return -1; +struct bwb_function * +fnc_find_by_id(int unique_id) +{ + /* NOTE: This should ONLY search the INTRINSIC functions, not USER + * functions */ + int i; + bwx_DEBUG(__FUNCTION__); + + for (i = 0; i < NUM_FUNCTIONS; i++) + { + if (bwb_prefuncs[i].UniqueID == unique_id) + { + /* FOUND */ + return &(bwb_prefuncs[i]); + } } + /* NOT FOUND */ + return NULL; +} -/*************************************************************** +struct bwb_line * +bwb_CHANGE(struct bwb_line * l) +{ + /* * CHANGE A$ TO X * CHANGE X TO A$ */ - FUNCTION: bwb_zline() + char tbuf[BasicStringLengthMax + 1]; + struct bwb_variable *v = NULL; + struct bwb_variable *A = NULL; + struct bwb_variable *X = NULL; + int IsStringToArray = FALSE; - DESCRIPTION: This function is called at the exit from - Bywater BASIC command functions. If - MULTISEG_LINES is TRUE, then it returns - a pointer to the current line; otherwise it - sets the position in the next line to zero - and returns a pointer to the next line. -***************************************************************/ + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -extern struct bwb_line * -bwb_zline( struct bwb_line *l ) -#else -struct bwb_line * -bwb_zline( l ) - struct bwb_line *l; -#endif + if (OptionFlags & OPTION_BASE_ONE) { -#if MULTISEG_LINES - /* l->marked = FALSE; */ - return l; -#else - l->next->position = 0; - return l->next; -#endif + bwb_error("CHANGE is only valid for OPTION BASE 0"); + return bwb_zline(l); } + /* get 1st variable */ + adv_ws(l->buffer, &(l->position)); + bwb_getvarname(l->buffer, tbuf, &(l->position)); + v = var_find(tbuf); + if (v == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + if (v->type == STRING) + { + A = v; + IsStringToArray = TRUE; + } + else + { + /* variable MUST be an array */ + if ((v->dimensions == 1) && (v->array_sizes[0] == 1)) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + X = v; + IsStringToArray = FALSE; + } + /* get "TO" */ + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); + if (strcasecmp(tbuf, "TO") != 0) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* get 2nd variable */ + adv_ws(l->buffer, &(l->position)); + bwb_getvarname(l->buffer, tbuf, &(l->position)); + v = var_find(tbuf); + if (v == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + if (v->type == STRING) + { + A = v; + if (IsStringToArray == TRUE) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + } + else + { + /* variable MUST be an array */ + if ((v->dimensions == 1) && (v->array_sizes[0] == 1)) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + X = v; + if (IsStringToArray == FALSE) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + } + if (IsStringToArray) + { + /* CHANGE A$ TO X */ + int i; + int n; + char *a; + BasicNumberType *x; + unsigned long t; + + if (A->memstr == NULL) + { + bwb_error("String Variable not allocated"); + return bwb_zline(l); + } + if (A->memstr->sbuffer == NULL) + { + bwb_error("String Variable not allocated"); + return bwb_zline(l); + } + /* variable storage is a mess, we bypass that tradition here. */ + t = 1; + for (n = 0; n < X->dimensions; n++) + { + t *= X->array_sizes[n]; + } + if (t <= A->memstr->length) + { + bwb_error("Numeric Array too small"); + return bwb_zline(l); + } + n = A->memstr->length; + a = A->memstr->sbuffer; + x = X->memnum; + *x = n; + x++; + for (i = 0; i < n; i++) + { + char C; + BasicNumberType V; + C = *a; + V = C; + *x = V; + x++; + a++; + } + } + else + { + /* CHANGE X TO A$ */ + int i; + int n; + char *a; + BasicNumberType *x; + unsigned long t; + + if (A->memstr == NULL) + { + bwb_error("String Variable not allocated"); + return bwb_zline(l); + } + if (A->memstr->sbuffer == NULL) + { + bwb_error("String Variable not allocated"); + return bwb_zline(l); + } + /* variable storage is a mess, we bypass that tradition here. */ + t = 1; + for (n = 0; n < X->dimensions; n++) + { + t *= X->array_sizes[n]; + } + if (t <= 1) + { + bwb_error("Numeric Array to small"); + return bwb_zline(l); + } + if (t > BasicStringLengthMax) + { + bwb_error("Numeric Array too large"); + return bwb_zline(l); + } + /* n = A->memstr->length; */ + a = A->memstr->sbuffer; + x = X->memnum; + n = *x; + x++; + for (i = 0; i < n; i++) + { + char C; + BasicNumberType V; + V = *x; + C = V; + *a = C; + x++; + a++; + } + } + return bwb_zline(l); +} - +/* EOF */ diff --git a/bwb_cnd.c b/bwb_cnd.c index 931ccc2..5af8721 100644 --- a/bwb_cnd.c +++ b/bwb_cnd.c @@ -1,26 +1,26 @@ /*************************************************************** - + bwb_cnd.c Conditional Expressions and Commands for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ @@ -29,299 +29,405 @@ /* */ /* Those additionally marked with "DD" were at the suggestion of */ /* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include + #include "bwbasic.h" -#include "bwb_mes.h" + + /* declarations of functions visible to this file only */ -#if ANSI_C -static int cnd_thenels( char *buffer, int position, int *then, int *els ); -static int cnd_tostep( char *buffer, int position, int *to, int *step ); -static struct bwb_line *find_wend( struct bwb_line *l ); -static struct bwb_line *find_endif( struct bwb_line *l, - struct bwb_line **else_line ); -static int is_endif( struct bwb_line *l ); -extern int var_setnval( struct bwb_variable *v, bnumber i ); -static int case_eval( struct exp_ese *expression, struct exp_ese *minval, - struct exp_ese *maxval ); -static struct bwb_line *find_case( struct bwb_line *l ); -static struct bwb_line *find_endselect( struct bwb_line *l ); -static int is_endselect( struct bwb_line *l ); -static struct bwb_line *bwb_caseif( struct bwb_line *l ); - -#if STRUCT_CMDS -static struct bwb_line *find_next( struct bwb_line *l ); -#endif +static int +cnd_thenels(char *buffer, int position, int *then, int *els); +static int +cnd_tostep(char *buffer, int position, int *to, int *step); +static int +case_eval(struct exp_ese * expression, struct exp_ese * minval, struct exp_ese * maxval); +static int +FindTopLineOnStack(struct bwb_line * l); +static int +FindBottomLineOnStack(struct bwb_line * l); +static struct bwb_line * +FindExitLineOnStack(struct bwb_line * l); +static struct bwb_line * +find_NextTestInCode(struct bwb_line * l); -#else -static int cnd_thenels(); -static int cnd_tostep(); -static struct bwb_line *find_wend(); -static struct bwb_line *find_endif(); -static int is_endif(); -extern int var_setnval(); -static int case_eval(); -static struct bwb_line *find_case(); -static struct bwb_line *find_endselect(); -static int is_endselect(); -static struct bwb_line *bwb_caseif(); - -#if STRUCT_CMDS -static struct bwb_line *find_next(); -#endif -#endif /* ANSI_C for prototypes */ +/* FIXME: DELETE should remove DEF FN, FUNCTIONS, and SUBROUTINES in the deleted line range. */ +/* FIXME: add Variable Range checking, based upon type characters $, @, %, &, !, # */ +/* FIXME: check EOF, LOF, LOC, SEEK, such as QB45 */ +/* FIXME: centralize Variable/Function/Command name character checking, so we can configure it with OPTION VERSION */ -/*** IF-THEN-ELSE ***/ -/*************************************************************** +/* +-------------------------------------------------------------------------------------------- + FUNCTION - END FUNCTION + -------------------------------------------------------------------------------------------- +*/ - FUNCTION: bwb_if() - DESCRIPTION: This function handles the BASIC IF - statement. +struct bwb_line * +bwb_FUNCTION(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - SYNTAX: IF expression THEN [statement [ELSE statement]] + /* check current exec level */ + if (CURTASK exsc == 0) + { + /* skip over the entire function definition */ + return l->OtherLine->next; /* line after END SUB */ + } + /* we are being executed via fnc_deffn() */ -***************************************************************/ + /* if this is the first time at this SUB statement, note it */ -#if ANSI_C -struct bwb_line * -bwb_if( struct bwb_line *l ) -#else -struct bwb_line * -bwb_if( l ) - struct bwb_line *l; -#endif + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) { - int then, els; - struct exp_ese *e; - int glnumber; - int tpos; - static char tbuf[ MAXSTRINGSIZE + 1 ]; - static struct bwb_line gline; -#if STRUCT_CMDS - static struct bwb_line *else_line; - static struct bwb_line *endif_line; -#endif -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_if(): entry, line <%d> buffer <%s>", - l->number, &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); - getchar(); -#endif + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; + + /* find the END SUB statement */ -#if INTENSIVE_DEBUG - if ( l == &gline ) + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l);; + + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) { - sprintf( bwb_ebuf, "in bwb_if(): recursive call, l = &gline" ); - bwb_debug( bwb_ebuf ); + /* NOT FOUND */ + bwb_error("FUNCTION without END FUNCTION"); + return bwb_zline(l); } -#endif + } + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); +} + - /* Call bwb_exp() to evaluate the condition. This should return - with position set to the "THEN" statement */ +struct bwb_line * +bwb_EXIT_FUNCTION(struct bwb_line * l) +{ + struct bwb_line *next_line; - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); + bwx_DEBUG(__FUNCTION__); + + next_line = FindExitLineOnStack(l); + if (next_line == NULL) + { + bwb_error("EXIT FUNCTION without FUNCTION"); + return bwb_zline(l); + } + { + /* EXIT FUNCTION */ + struct bwb_line *r; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_if(): line <%d> condition returns <%d>", - l->number, exp_getnval( e ) ); - bwb_debug( bwb_ebuf ); + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } +#if 0 + /* set the next line in the exec stack */ + next_line->position = 0; + bwb_setexec(next_line, 0, EXEC_FUNCTION); + return next_line; #endif +} - /* test for "THEN" and "ELSE" statements */ - cnd_thenels( l->buffer, l->position, &then, &els ); +struct bwb_line * +bwb_END_FUNCTION(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_if(): return from cnd_thenelse, line is <%s>", - l->buffer ); - bwb_debug( bwb_ebuf ); -#endif + /* check integrity of SUB commmand */ - /* test for multiline IF statement: this presupposes ANSI-compliant - structured BASIC */ + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("END FUNCTION without FUNCTION"); + return bwb_zline(l); + } + /* decrement the stack */ + bwb_decexec(); -#if STRUCT_CMDS - tpos = then + strlen( CMD_THEN ) + 1; - if ( is_eol( l->buffer, &tpos ) == TRUE ) - { + /* and return next from old line */ + CURTASK excs[CURTASK exsc].line->next->position = 0; + return CURTASK excs[CURTASK exsc].line->next; +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_if(): found multi-line IF statement, line <%d>", - l->number ); - bwb_debug( bwb_ebuf ); -#endif - /* find END IF and possibly ELSE[IF] line(s) */ - else_line = NULL; - endif_line = find_endif( l, &else_line ); +/* +-------------------------------------------------------------------------------------------- + SUB - END SUB + -------------------------------------------------------------------------------------------- +*/ - /* evaluate the expression */ +/*************************************************************** + + FUNCTION: bwb_sub() + + DESCRIPTION: This function implements the BASIC + SUB command, introducing a named + subroutine. + + SYNTAX: SUB subroutine-name + ... + [ EXIT SUB ] + ... + END SUB + +***************************************************************/ - if ( (int) exp_getnval( e ) != FALSE ) - { - bwb_incexec(); - bwb_setexec( l->next, 0, EXEC_IFTRUE ); +struct bwb_line * +bwb_SUB(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); - } + /* check current exec level */ + if (CURTASK exsc == 0) + { + /* skip over the entire function definition */ + return l->OtherLine->next; /* line after END SUB */ + } + /* we are being executed via fnc_deffn() */ - else if ( else_line != NULL ) - { - bwb_incexec(); - bwb_setexec( else_line, 0, EXEC_IFFALSE ); - else_line->position = 0; - return else_line; - } - else - { - /* Following line incorrect, replaced by next two (bug found by DD) */ - /* bwb_setexec( endif_line, 0, CURTASK excs[ CURTASK exsc ].code ); */ + /* if this is the first time at this SUB statement, note it */ - bwb_incexec(); /* JBV */ - bwb_setexec( endif_line, 0, EXEC_IFFALSE ); /* JBV */ - endif_line->position = 0; - return endif_line; - } + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) + { + + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; + + /* find the END SUB statement */ + + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l);; + + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) + { + /* NOT FOUND */ + bwb_error("SUB without END SUB"); + return bwb_zline(l); } + } + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); +} -#endif /* STRUCT_CMDS for Multi-line IF...THEN */ - /* Not a Multi-line IF...THEN: test for THEN line-number */ +/*************************************************************** + + FUNCTION: bwb_endsub() + + DESCRIPTION: This C function implements the BASIC + END SUB command, ending a subroutine + definition. Because the command END + can have multiple meanings, this function + should be called from the bwb_xend() + function, which should be able to identify + an END SUB command. + + SYNTAX: END SUB + +***************************************************************/ +struct bwb_line * +bwb_EXIT_SUB(struct bwb_line * l) +{ + struct bwb_line *next_line; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_if(): not multi-line; line is <%s>", - l->buffer ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - /* evaluate and execute */ - if ( (int) exp_getnval( e ) != FALSE ) - { + next_line = FindExitLineOnStack(l); + if (next_line == NULL) + { + bwb_error("EXIT SUB without SUB"); + return bwb_zline(l); + } + { + /* EXIT SUB */ + struct bwb_line *r; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_if(): expression is TRUE" ); - bwb_debug( bwb_ebuf ); + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } +#if 0 + /* set the next line in the exec stack */ + next_line->position = 0; + bwb_setexec(next_line, 0, EXEC_FUNCTION); + return next_line; #endif +} - if ( then == FALSE ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_if(): IF without THEN" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } - else - { +struct bwb_line * +bwb_END_SUB(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + + /* check integrity of SUB commmand */ + + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("END SUB without SUB"); + return bwb_zline(l); + } + /* decrement the stack */ + bwb_decexec(); - /* check for THEN followed by literal line number */ + /* and return next from old line */ + CURTASK excs[CURTASK exsc].line->next->position = 0; + return CURTASK excs[CURTASK exsc].line->next; +} - tpos = then + strlen( CMD_THEN ) + 1; - adv_element( l->buffer, &tpos, tbuf ); - if ( isdigit( tbuf[ 0 ] ) != 0 ) - { - glnumber = atoi( tbuf ); +/* +-------------------------------------------------------------------------------------------- + IF - END IF + -------------------------------------------------------------------------------------------- +*/ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Detected THEN followed by line number <%d>", - glnumber ); - bwb_debug( bwb_ebuf ); -#endif - sprintf( tbuf, "%s %d", CMD_GOTO, glnumber ); - gline.buffer = tbuf; - gline.marked = FALSE; - gline.position = 0; - gline.next = l->next; - bwb_setexec( &gline, 0, CURTASK excs[ CURTASK exsc ].code ); - return &gline; - } - - /* form is not THEN followed by line number */ - - else - { - bwb_setexec( l, then, CURTASK excs[ CURTASK exsc ].code ); - l->position = then + strlen( CMD_THEN ) + 1; - } - - return l; - } + +/*************************************************************** + + FUNCTION: bwb_IF() + + DESCRIPTION: This function handles the BASIC IF + statement, standard flavor. + + SYNTAX: IF expression THEN line [ELSE line] + +***************************************************************/ +struct bwb_line * +bwb_IF(struct bwb_line * l) +{ + /* classic IF */ + int then, els; + struct exp_ese *e; + int tpos; + char tbuf[BasicStringLengthMax + 1]; + int Value; + + bwx_DEBUG(__FUNCTION__); + + + /* Call bwb_exp() to evaluate the condition. This should return with + * position set to the "THEN" statement */ + + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + Value = exp_getival(e); + + + /* test for "THEN" and "ELSE" statements */ + + cnd_thenels(l->buffer, l->position, &then, &els); + + + /* evaluate and execute */ + + if (Value != 0) + { + /* expression is TRUE */ + if (then == FALSE) + { + /* syntac error */ + bwb_error(err_syntax); + return bwb_zline(l); } - else + else { + /* check for THEN followed by literal line number */ + struct bwb_line *x; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_if(): expression is FALSE" ); - bwb_debug( bwb_ebuf ); -#endif + tpos = then + strlen("THEN") + 1; + adv_element(l->buffer, &tpos, tbuf); - if ( els != FALSE ) + /* check for target label */ + x = find_label(tbuf); + if (x != NULL) { - l->position = els + strlen( CMD_ELSE ) + 1; - /* bwb_setexec( l, els, EXEC_NORM ); */ /* Nope (JBV) */ - bwb_setexec( l, els, CURTASK excs[ CURTASK exsc ].code ); /* JBV */ - return l; - } + adv_eos(l->buffer, &(l->position)); + x->position = 0; + return x; + } + /* syntac error */ + bwb_error(err_syntax); + return bwb_zline(l); } - /* if neither then nor else were found, advance to next line */ - /* DO NOT advance to next segment (only if TRUE should we do that) */ + } + else + { + /* expression is FALSE */ + + if (els == FALSE) + { + /* optional */ + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); + } + else + { + /* check for ELSE followed by literal line number */ + struct bwb_line *x; - l->next->position = 0; - return l->next; + tpos = els + strlen("ELSE") + 1; + adv_element(l->buffer, &tpos, tbuf); + /* check for target label */ + x = find_label(tbuf); + if (x != NULL) + { + adv_eos(l->buffer, &(l->position)); + x->position = 0; + return x; + } + /* syntac error */ + bwb_error(err_syntax); + return bwb_zline(l); + } } -/*************************************************************** + return bwb_zline(l); - FUNCTION: cnd_thenelse() +} +/*************************************************************** + + FUNCTION: cnd_thenelse() + DESCRIPTION: This function searches through the beginning at point and attempts to find positions of THEN and ELSE statements. - + ***************************************************************/ -#if ANSI_C static int -cnd_thenels( char *buffer, int position, int *then, int *els ) -#else -static int -cnd_thenels( buffer, position, then, els ) - char *buffer; - int position; - int *then; - int *els; -#endif - { - int loop, t_pos, b_pos, p_word; - char tbuf[ MAXSTRINGSIZE + 1 ]; +cnd_thenels(char *buffer, int position, int *then, int *els) +{ + int loop, t_pos, b_pos, p_word; + char tbuf[BasicStringLengthMax + 1]; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_thenels(): entry, line is <%s>", - &( buffer[ position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* set then and els to 0 initially */ @@ -331,1170 +437,1238 @@ cnd_thenels( buffer, position, then, els ) p_word = b_pos = position; t_pos = 0; - tbuf[ 0 ] = '\0'; + tbuf[0] = '\0'; loop = TRUE; - while( loop == TRUE ) + while (loop == TRUE) + { + char c; + c = buffer[b_pos]; + + if (c == '\0' || c == OptionCommentChar || c == ' ') { - switch( buffer[ b_pos ] ) + if (strncasecmp(tbuf, "THEN", (size_t) strlen("THEN")) == 0) + { + *then = p_word; + } + else + if (strncasecmp(tbuf, "GOTO", (size_t) strlen("GOTO")) == 0) { - case '\0': /* end of string */ - case ' ': /* whitespace = end of word */ - case '\t': - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_thenels(): word is <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - if ( strncmp( tbuf, CMD_THEN, (size_t) strlen( CMD_THEN ) ) == 0 ) - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_thenels(): THEN found at position <%d>.", - p_word ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in cnd_thenelse(): after THEN, line is <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif - - *then = p_word; - } - else if ( strncmp( tbuf, CMD_ELSE, (size_t) strlen( CMD_ELSE ) ) == 0 ) - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_thenels(): ELSE found at position <%d>.", - p_word ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in cnd_thenelse(): after ELSE, line is <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif - - *els = p_word; - } - - /* check for end of the line */ - - if ( buffer[ b_pos ] == '\0' ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_thenels(): return: end of string" ); - bwb_debug( bwb_ebuf ); -#endif - return TRUE; - } - ++b_pos; - p_word = b_pos; - t_pos = 0; - tbuf[ 0 ] = '\0'; - break; + *then = p_word; + } + else + if (strncasecmp(tbuf, "ELSE", (size_t) strlen("ELSE")) == 0) + { - default: - if ( islower( buffer[ b_pos ] ) != FALSE ) - { - tbuf[ t_pos ] = (char) toupper( buffer[ b_pos ] ); - } - else - { - tbuf[ t_pos ] = buffer[ b_pos ]; - } - ++b_pos; - ++t_pos; - tbuf[ t_pos ] = '\0'; - break; + *els = p_word; } + /* check for end of the line */ + if (c == '\0' || c == OptionCommentChar) + { + return TRUE; + } + ++b_pos; + p_word = b_pos; + t_pos = 0; + tbuf[0] = '\0'; + } + else + { + tbuf[t_pos] = c; + ++b_pos; + ++t_pos; + tbuf[t_pos] = '\0'; } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_thenelse(): exit, line is <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif + } return FALSE; - } +} -#if STRUCT_CMDS /*************************************************************** - - FUNCTION: bwb_else() - - DESCRIPTION: This function handles the BASIC ELSE - statement. - - SYNTAX: ELSE - + + FUNCTION: bwb_IF_THEN() + + DESCRIPTION: This function handles the BASIC IF + statement, structured flavor. + + SYNTAX: IF expression THEN + ... + END IF + ***************************************************************/ - -#if ANSI_C struct bwb_line * -bwb_else( struct bwb_line *l ) -#else -struct bwb_line * -bwb_else( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *endif_line; +bwb_IF_THEN(struct bwb_line * l) +{ + /* structured IF */ + struct exp_ese *e; struct bwb_line *else_line; + struct bwb_line *endif_line; + int Value; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_else(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - /* If the code is EXEC_NORM, then this is a continuation of a single- - line IF...THEN...ELSE... statement and we should return */ - /*----------------------------------------------------------------------*/ - /* Well, not really... better to check for EXEC_IFTRUE or EXEC_IFFALSE, */ - /* and if not equal, then blow entirely out of current line (JBV) */ - /*----------------------------------------------------------------------*/ + /* if this is the first time at this IF statement, note it */ - /* Section removed by JBV */ - /* if ( CURTASK excs[ CURTASK exsc ].code == EXEC_NORM ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_else(): detected EXEC_NORM" ); - bwb_debug( bwb_ebuf ); +#if 0 + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) #endif + if (FindTopLineOnStack(l) == FALSE) + { - return bwb_zline( l ); - } */ + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; - /* Section added by JBV */ - if (( CURTASK excs[ CURTASK exsc ].code != EXEC_IFTRUE ) && - ( CURTASK excs[ CURTASK exsc ].code != EXEC_IFFALSE )) - { + /* find the LOOP statement */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_else(): no EXEC_IFTRUE or EXEC_IFFALSE" ); - bwb_debug( bwb_ebuf ); -#endif + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l);; - l->next->position = 0; - return l->next; + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) + { + /* NOT FOUND */ + bwb_error("IF without END IF"); + return bwb_zline(l); + } } + /* Call bwb_exp() to evaluate the condition. This should return with + * position set to the "THEN" statement */ - endif_line = find_endif( l, &else_line ); +/* FIXME: extract the expression before calling bwb_exp() - no COMMANDS should be there */ + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + Value = exp_getival(e); - if ( CURTASK excs[ CURTASK exsc ].code == EXEC_IFTRUE ) - { - endif_line->position = 0; - return endif_line; - } - else if ( CURTASK excs[ CURTASK exsc ].code == EXEC_IFFALSE ) - { - return bwb_zline( l ); - } + /* evaluate the expression */ -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_else(): ELSE without IF" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif + if (Value != 0) + { + CURTASK excs[CURTASK exsc].code = EXEC_IFTRUE; /* IF has been processed */ + /* fall thru to execute this code block */ + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); + } + CURTASK excs[CURTASK exsc].code = EXEC_IFFALSE; /* IF has NOT been + * processed */ - return bwb_zline( l ); + else_line = find_NextTestInCode(l); + if (else_line != NULL) + { + else_line->position = 0; + return else_line; } + endif_line = CURTASK excs[CURTASK exsc].LoopBottomLine; + endif_line->position = 0; + return endif_line; -/*************************************************************** +} - FUNCTION: bwb_elseif() - DESCRIPTION: This function handles the BASIC ELSEIF +/*************************************************************** + + FUNCTION: bwb_else() + + DESCRIPTION: This function handles the BASIC ELSE statement. - - SYNTAX: ELSEIF - + + SYNTAX: ELSE + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_elseif( struct bwb_line *l ) -#else struct bwb_line * -bwb_elseif( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *endif_line; - struct bwb_line *else_line; - struct exp_ese *e; +bwb_ELSE(struct bwb_line * l) +{ + struct bwb_line *next_line; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_elseif(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - else_line = NULL; - endif_line = find_endif( l, &else_line ); - if ( CURTASK excs[ CURTASK exsc ].code == EXEC_IFTRUE ) - { - endif_line->position = 0; - return endif_line; - } + /* there are two legitamate ways to get here: 1. a fall thru from an + * upper block, code == EXEC_IFTRUE we should jump to the END IF 2. a + * jump from from an upper block, code == EXEC_IFFALSE we should + * execute our code block */ - else if ( CURTASK excs[ CURTASK exsc ].code == EXEC_IFFALSE ) - { + next_line = FindExitLineOnStack(l); /* END IF */ + if (next_line == NULL) + { + bwb_error("ELSE without IF"); + return bwb_zline(l); + } + switch (CURTASK excs[CURTASK exsc].code) + { + case EXEC_IFTRUE: /* IF has been processed */ + /* jump to the END IF */ + next_line->position = 0; + return next_line; + break; + case EXEC_IFFALSE: + CURTASK excs[CURTASK exsc].code = EXEC_IFTRUE; /* IF has been processed */ + /* fall thru to execute this code block */ + break; + default: + /* the BASIC program has jumped into the middle of a + * structured command */ + bwb_error("ELSE without IF"); + break; + } + return bwb_zline(l); +} - /* Call bwb_exp() to evaluate the condition. This should return - with position set to the "THEN" statement */ - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - if ( (int) exp_getnval( e ) != FALSE ) /* Was == TRUE (JBV 10/1996) */ - { - - /* ELSEIF condition is TRUE: proceed to the next line */ - CURTASK excs[ CURTASK exsc ].code = EXEC_IFTRUE; +/*************************************************************** + + FUNCTION: bwb_elseif() + + DESCRIPTION: This function handles the BASIC ELSEIF + statement. + + SYNTAX: ELSEIF + +***************************************************************/ -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); +struct bwb_line * +bwb_ELSEIF(struct bwb_line * l) +{ + struct bwb_line *next_line; - } + bwx_DEBUG(__FUNCTION__); - /* ELSEIF condition FALSE: proceed to next ELSE line if there is one */ + /* there are two legitamate ways to get here: 1. a fall thru from an + * upper block, code == EXEC_IFTRUE we should jump to the END IF 2. a + * jump from from an upper block, code == EXEC_IFFALSE we should + * execute our code block */ - else if ( else_line != NULL ) + next_line = FindExitLineOnStack(l); /* END IF */ + if (next_line == NULL) + { + bwb_error("ELSEIF without IF"); + return bwb_zline(l); + } + switch (CURTASK excs[CURTASK exsc].code) + { + case EXEC_IFTRUE: /* IF has been processed */ + /* jump to the END IF */ + next_line->position = 0; + return next_line; + break; + case EXEC_IFFALSE: + /* execute our code block (maybe) */ + { + struct bwb_line *else_line; + struct exp_ese *e; + /* Call bwb_exp() to evaluate the condition. This + * should return with position set to the "THEN" + * statement */ + + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) { - bwb_setexec( else_line, 0, EXEC_IFFALSE ); - else_line->position = 0; - return else_line; + return bwb_zline(l); } + if (exp_getival(e) != FALSE) + { + /* condition is TRUE: proceed to the next + * line */ + CURTASK excs[CURTASK exsc].code = EXEC_IFTRUE; /* IF has been processed */ + /* fall thru to execute this code block */ - /* ELSEIF condition is FALSE and no more ELSExx lines: proceed to END IF */ + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); - else - { - bwb_setexec( endif_line, 0, CURTASK excs[ CURTASK exsc ].code ); - endif_line->position = 0; - return endif_line; } + /* condition is FALSE */ + /* proceed to next ELSE line if there is one */ + else_line = find_NextTestInCode(l); /* ELSEIF or ELSE */ + if (else_line != NULL) + { + else_line->position = 0; + return else_line; + } + /* no more ELSExx lines */ + /* jump to the END IF */ + next_line->position = 0; + return next_line; } + break; + default: + /* the BASIC program has jumped into the middle of a + * structured command */ + bwb_error("ELSEIF without IF"); + break; + } + return bwb_zline(l); +} -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_elseif(): ELSEIF without IF" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - - -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); - } /*************************************************************** - + FUNCTION: bwb_endif() - + DESCRIPTION: This function handles the BASIC END IF statement. - - SYNTAX: END IF - + + SYNTAX: END IF + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_endif( struct bwb_line *l ) -#else -struct bwb_line * -bwb_endif( l ) - struct bwb_line *l; -#endif - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_endif(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif +bwb_END_IF(struct bwb_line * l) +{ - if (( CURTASK excs[ CURTASK exsc ].code != EXEC_IFTRUE ) - && ( CURTASK excs[ CURTASK exsc ].code != EXEC_IFFALSE )) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_endif(): END IF without IF" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } + bwx_DEBUG(__FUNCTION__); - bwb_decexec(); + /* check integrity of IF commmand */ -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("END IF without IF"); + return bwb_zline(l); + } + switch (CURTASK excs[CURTASK exsc].code) + { + case EXEC_IFTRUE: /* IF has been processed */ + break; + case EXEC_IFFALSE: + break; + default: + /* the BASIC program has jumped into the middle of a + * structured command */ + bwb_error("ENDIF without IF"); } -/*************************************************************** + /* remove IF from the stack (NEW) */ + bwb_decexec(); + bwb_setexec(l->next, 0, CURTASK excs[CURTASK exsc].code); + + return bwb_zline(l); +} - FUNCTION: find_endif() +/* +-------------------------------------------------------------------------------------------- + SELECT CASE - END SELECT + -------------------------------------------------------------------------------------------- +*/ - DESCRIPTION: This C function attempts to find an - END IF statement. +/*************************************************************** + + FUNCTION: bwb_select() + + DESCRIPTION: This C function handles the BASIC SELECT + statement. + + SYNTAX: SELECT CASE expression + ***************************************************************/ -#if ANSI_C -static struct bwb_line * -find_endif( struct bwb_line *l, struct bwb_line **else_line ) -#else -static struct bwb_line * -find_endif( l, else_line ) - struct bwb_line *l; - struct bwb_line **else_line; -#endif - { - struct bwb_line *current; - register int i_level; - int position; +struct bwb_line * +bwb_SELECT(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + bwb_error("SELECT without CASE"); + return bwb_zline(l); +} - *else_line = NULL; - i_level = 1; - for ( current = l->next; current != &CURTASK bwb_end; current = current->next ) - { - position = 0; - if ( current->marked != TRUE ) - { - line_start( current->buffer, &position, &( current->lnpos ), - &( current->lnum ), - &( current->cmdpos ), - &( current->cmdnum ), - &( current->startpos ) ); - } - current->position = current->startpos; - if ( current->cmdnum > -1 ) - { +struct bwb_line * +bwb_SELECT_CASE(struct bwb_line * l) +{ + struct exp_ese *e; - if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_if ) - { - ++i_level; + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_endif(): found IF at line %d, level %d", - current->number, i_level ); - bwb_debug( bwb_ebuf ); -#endif - } - else if ( is_endif( current ) == TRUE ) - { - --i_level; + /* if this is the first time at this SELECT CASE statement, note it */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_endif(): found END IF at line %d, level %d", - current->number, i_level ); - bwb_debug( bwb_ebuf ); +#if 0 + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) #endif + if (FindTopLineOnStack(l) == FALSE) + { - if ( i_level == 0 ) - { - return current; - } - } - - else if ( ( bwb_cmdtable[ current->cmdnum ].vector == bwb_else ) - || ( bwb_cmdtable[ current->cmdnum ].vector == bwb_elseif )) - { + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; - /* we must only report the first ELSE or ELSE IF we encounter - at level 1 */ + /* find the LOOP statement */ - if ( ( i_level == 1 ) && ( *else_line == NULL )) - { - *else_line = current; - } + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l); - } + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) + { + /* NOT FOUND */ + bwb_error("SELECT CASE without END SELECT"); + return bwb_zline(l); } } + /* increment the level and set to EXEC_SELFALSE */ -#if PROG_ERRORS - sprintf( bwb_ebuf, "Multiline IF without END IF" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif + CURTASK excs[CURTASK exsc].code = EXEC_SELFALSE; - return NULL; + /* evaluate the expression at this level */ + + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (e->type == STRING) + { + CURTASK excs[CURTASK exsc].expression.type = STRING; + str_btob(&(CURTASK excs[CURTASK exsc].expression.sval), + &(e->sval)); + } + else + { + CURTASK excs[CURTASK exsc].expression.type = NUMBER; + CURTASK excs[CURTASK exsc].expression.nval + = exp_getnval(e); } -/*************************************************************** + /* return */ - FUNCTION: is_endif() + adv_eos(l->buffer, &(l->position)); - DESCRIPTION: This C function attempts to determine if - a given line contains an END IF statement. + return bwb_zline(l); +} +/*************************************************************** + + FUNCTION: bwb_case() + + DESCRIPTION: This C function handles the BASIC CASE + statement. + + SYNTAX: CASE constant | IF partial-expression | ELSE + ***************************************************************/ -#if ANSI_C -static int -is_endif( struct bwb_line *l ) -#else -static int -is_endif( l ) - struct bwb_line *l; -#endif - { - int position; - char tbuf[ MAXVARNAMESIZE + 1]; - - if ( bwb_cmdtable[ l->cmdnum ].vector != bwb_xend ) - { - return FALSE; - } - - position = l->startpos; - adv_ws( l->buffer, &position ); - adv_element( l->buffer, &position, tbuf ); - bwb_strtoupper( tbuf ); +struct bwb_line * +bwb_CASE_ELSE(struct bwb_line * l) +{ + struct bwb_line *next_line; - if ( strcmp( tbuf, "IF" ) == 0 ) - { - return TRUE; - } + bwx_DEBUG(__FUNCTION__); - return FALSE; + /* there are two legitamate ways to get here: 1. a fall thru from an + * upper block, code == EXEC_SELTRUE we should jump to the END SELECT + * 2. a jump from from an upper block, code == EXEC_SELFALSE we + * should execute our code block */ + next_line = FindExitLineOnStack(l); /* END SELECT */ + if (next_line == NULL) + { + bwb_error("CASE ELSE without SELECT CASE"); + return bwb_zline(l); + } + switch (CURTASK excs[CURTASK exsc].code) + { + case EXEC_SELTRUE: /* SELECT has been processed */ + /* jump to the END SELECT */ + next_line->position = 0; + return next_line; + break; + case EXEC_SELFALSE: + CURTASK excs[CURTASK exsc].code = EXEC_SELTRUE; /* SELECT has been + * processed */ + /* fall thru to execute this code block */ + break; + default: + /* the BASIC program has jumped into the middle of a + * structured command */ + bwb_error("CASE ELSE without SELECT CASE"); + break; } + return bwb_zline(l); +} -/*************************************************************** - FUNCTION: bwb_select() - DESCRIPTION: This C function handles the BASIC SELECT - statement. +struct bwb_line * +bwb_CASE(struct bwb_line * l) /* TODO - FIXME */ +{ + struct bwb_line *next_line; - SYNTAX: SELECT CASE expression + bwx_DEBUG(__FUNCTION__); -***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_select( struct bwb_line *l ) -#else -struct bwb_line * -bwb_select( l ) - struct bwb_line *l; -#endif + /* there are two legitamate ways to get here: 1. a fall thru from an + * upper block, code == EXEC_SELTRUE we should jump to the END SELECT + * 2. a jump from from an upper block, code == EXEC_SELFALSE we + * should execute our code block */ + + next_line = FindExitLineOnStack(l); /* END SELECT */ + if (next_line == NULL) { - char tbuf[ MAXSTRINGSIZE + 1 ]; - struct exp_ese *e; + bwb_error("CASE without SELECT CASE"); + return bwb_zline(l); + } + switch (CURTASK excs[CURTASK exsc].code) + { + case EXEC_SELTRUE: /* SELECT has been processed */ + /* jump to the END SELECT */ + next_line->position = 0; + return next_line; + break; + case EXEC_SELFALSE: + /* fall thru to execute this code block (maybe) */ + { + struct exp_ese minvalue; + struct exp_ese *minval; + struct bwb_line *case_line; + int IsExpression; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_select(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif + IsExpression = FALSE; - /* first element should be "CASE" */ + minval = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + memcpy(&minvalue, minval, sizeof(struct exp_ese)); + minval = &minvalue; + + /* check for string value */ + + if (minvalue.type == STRING) + { /* STRING */ + bstring *a; + bstring *b; + a = &(CURTASK excs[CURTASK exsc].expression.sval); + b = &(minvalue.sval); + if (str_cmp(a, b) == 0) + { + IsExpression = TRUE; + } + } + /* STRING */ + else + { /* NUMBER */ + struct exp_ese *maxval; + maxval = minval; - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - if ( strcmp( tbuf, "CASE" ) != 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "SELECT without CASE" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); + /* not a string; advance */ - return bwb_zline( l ); -#endif - } + adv_ws(l->buffer, &(l->position)); - /* increment the level and set to EXEC_SELFALSE */ + /* check for TO */ - bwb_incexec(); - CURTASK excs[ CURTASK exsc ].code = EXEC_SELFALSE; + if (is_eol(l->buffer, &(l->position)) != TRUE) + { + char tbuf[BasicStringLengthMax + 1]; - /* evaluate the expression at this level */ + /* find the TO statement */ - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); + adv_element(l->buffer, &(l->position), tbuf); + if (strcasecmp(tbuf, "TO") != 0) + { + sprintf(bwb_ebuf, "CASE has inexplicable code following expression"); + bwb_error(bwb_ebuf); + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); + } + /* now evaluate the MAX expression */ -#if OLDWAY - memcpy( &( CURTASK excs[ CURTASK exsc ].expression ), e, - sizeof( struct exp_ese ) ); -#endif + maxval = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + } + /* evaluate the expression */ - if ( e->type == STRING ) - { - CURTASK excs[ CURTASK exsc ].expression.type = STRING; - str_btob( &( CURTASK excs[ CURTASK exsc ].expression.sval ), - &( e->sval ) ); - } - else - { - CURTASK excs[ CURTASK exsc ].expression.type = NUMBER; - CURTASK excs[ CURTASK exsc ].expression.nval - = exp_getnval( e ); + if (case_eval(&(CURTASK excs[CURTASK exsc].expression), minval, maxval) == TRUE) + { + IsExpression = TRUE; + } + } /* NUMBER */ + + if (IsExpression == TRUE) + { + /* condition is TRUE: proceed to the next + * line */ + CURTASK excs[CURTASK exsc].code = EXEC_SELTRUE; /* SELECT has been + * processed */ + /* fall thru to execute this code block */ + + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); + } + /* evaluation returns a FALSE value; find next CASExx + * statement */ + case_line = find_NextTestInCode(l); /* CASE or CASE IF or + * CASE ELSE */ + if (case_line != NULL) + { + case_line->position = 0; + return case_line; + } + /* no more CASExx lines */ + /* jump to the END SELECT */ + next_line->position = 0; + return next_line; } + break; + default: + /* the BASIC program has jumped into the middle of a + * structured command */ + bwb_error("CASE without SELECT CASE"); + break; + } + return bwb_zline(l); +} - /* return */ -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); - } /*************************************************************** - - FUNCTION: bwb_case() - - DESCRIPTION: This C function handles the BASIC CASE + + FUNCTION: bwb_caseif() + + DESCRIPTION: This C function handles the BASIC CASE IF statement. - - SYNTAX: CASE constant | IF partial-expression | ELSE - + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_case( struct bwb_line *l ) -#else -struct bwb_line * -bwb_case( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - int oldpos; - struct exp_ese minvalue; - struct exp_ese *maxval, *minval; - struct bwb_line *retline; - char cbuf1[ MAXSTRINGSIZE + 1 ]; - char cbuf2[ MAXSTRINGSIZE + 1 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_case(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif +bwb_CASE_IS(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + return bwb_CASE_IF(l); +} - /* if code is EXEC_SELTRUE, then we should jump to the end */ - - if ( CURTASK excs[ CURTASK exsc ].code == EXEC_SELTRUE ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_case(): exit EXEC_SELTRUE" ); - bwb_debug( bwb_ebuf ); -#endif - retline = find_endselect( l ); - retline->position = 0; - return retline; - } +struct bwb_line * +bwb_CASE_IF(struct bwb_line * l) +{ + struct bwb_line *next_line; - /* read first element */ + bwx_DEBUG(__FUNCTION__); - oldpos = l->position; - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - /* check for CASE IF */ + /* there are two legitamate ways to get here: 1. a fall thru from an + * upper block, code == EXEC_SELTRUE we should jump to the END SELECT + * 2. a jump from from an upper block, code == EXEC_SELFALSE we + * should execute our code block */ - if ( strcmp( tbuf, CMD_IF ) == 0 ) + next_line = FindExitLineOnStack(l); /* END SELECT */ + if (next_line == NULL) + { + bwb_error("CASE IF without SELECT CASE"); + return bwb_zline(l); + } + switch (CURTASK excs[CURTASK exsc].code) + { + case EXEC_SELTRUE: /* IF has been processed */ + /* jump to the END IF */ + next_line->position = 0; + return next_line; + break; + case EXEC_SELFALSE: + /* execute our code block (maybe) */ { - return bwb_caseif( l ); - } + char tbuf[BasicStringLengthMax + 1]; + int position; + struct exp_ese *r; + struct bwb_line *case_line; - /* check for CASE ELSE: if true, simply proceed to the next line, - because other options should have been detected by now */ + if (CURTASK excs[CURTASK exsc].expression.type == NUMBER) + { + sprintf(tbuf, BasicNumberPrintFormat " %s", + CURTASK excs[CURTASK exsc].expression.nval, + &(l->buffer[l->position])); + } + else + { + bwb_error(err_mismatch); + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); + } - else if ( strcmp( tbuf, CMD_ELSE ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_case(): execute CASE ELSE" ); - bwb_debug( bwb_ebuf ); -#endif + position = 0; + r = bwb_exp(tbuf, FALSE, &position); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (r->nval == TRUE) + { + /* condition is TRUE: proceed to the next + * line */ + CURTASK excs[CURTASK exsc].code = EXEC_SELTRUE; /* SELECT has been + * processed */ + /* fall thru to execute this code block */ + + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); + } + /* condition is FALSE */ - return bwb_zline( l ); + /* proceed to next CASE line if there is one */ + case_line = find_NextTestInCode(l); /* CASE IF or CASE ELSE */ + if (case_line != NULL) + { + case_line->position = 0; + return case_line; + } + /* no more CASExx lines */ + /* jump to the END SELECT */ + next_line->position = 0; + return next_line; } + break; + default: + /* the BASIC program has jumped into the middle of a + * structured command */ + bwb_error("CASE IF without SELECT CASE"); + break; + } + return bwb_zline(l); +} - /* neither CASE ELSE nor CASE IF; presume constant here for min value */ - l->position = oldpos; - minval = bwb_exp( l->buffer, FALSE, &( l->position )); - memcpy( &minvalue, minval, sizeof( struct exp_ese ) ); - maxval = minval = &minvalue; - /* check for string value */ +/*************************************************************** + + FUNCTION: case_eval() + + DESCRIPTION: This function evaluates a case statement + by comparing minimum and maximum values + with a set expression. It returns either + TRUE or FALSE + +***************************************************************/ - if ( minvalue.type == STRING ) - { +static int +case_eval(struct exp_ese * expression, struct exp_ese * minval, + struct exp_ese * maxval) +{ + bwx_DEBUG(__FUNCTION__); - str_btoc( cbuf1, &( CURTASK excs[ CURTASK exsc ].expression.sval ) ); - str_btoc( cbuf2, &( minvalue.sval ) ); + /* string value */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_case(): compare strings <%s> and <%s>", - cbuf1, cbuf2 ); - bwb_debug( bwb_ebuf ); -#endif + if (expression->type == STRING) + { + bwb_error(err_mismatch); + return FALSE; + } + /* numerical value */ - if ( strncmp( cbuf1, cbuf2, MAXSTRINGSIZE ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_case(): string comparison returns TRUE" ); - bwb_debug( bwb_ebuf ); -#endif - CURTASK excs[ CURTASK exsc ].code = EXEC_SELTRUE; -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); - } + if ((expression->nval >= minval->nval) + && (expression->nval <= maxval->nval)) + { + return TRUE; + } + return FALSE; - else - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_case(): string comparison returns FALSE" ); - bwb_debug( bwb_ebuf ); -#endif - retline = find_case( l ); - retline->position = 0; - return retline; - } +} - } +/*************************************************************** + + FUNCTION: bwb_endselect() + + DESCRIPTION: This function handles the BASIC END + SELECT statement. + + SYNTAX: END SELECT + +***************************************************************/ - /* not a string; advance */ +struct bwb_line * +bwb_END_SELECT(struct bwb_line * l) +{ - adv_ws( l->buffer, &( l->position )); + bwx_DEBUG(__FUNCTION__); - /* check for TO */ + /* check integrity of SELECT CASE commmand */ - if ( is_eol( l->buffer, &( l->position )) != TRUE ) - { + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("END SELECT without SELECT CASE"); + return bwb_zline(l); + } + switch (CURTASK excs[CURTASK exsc].code) + { + case EXEC_SELTRUE: /* SELECT has been processed */ + break; + case EXEC_SELFALSE: + break; + default: + /* the BASIC program has jumped into the middle of a + * structured command */ + bwb_error("END SELECT without SELECT CASE"); + } - /* find the TO statement */ - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - if ( strcmp( tbuf, CMD_TO ) != 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "CASE has inexplicable code following expression" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); - -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); -#endif - } + /* remove SELECT from the stack */ + bwb_decexec(); + bwb_setexec(l->next, 0, CURTASK excs[CURTASK exsc].code); - /* now evaluate the MAX expression */ - maxval = bwb_exp( l->buffer, FALSE, &( l->position )); + return bwb_zline(l); +} - } +/* +-------------------------------------------------------------------------------------------- + DO - LOOP + -------------------------------------------------------------------------------------------- +*/ - /* evaluate the expression */ +/*************************************************************** + + FUNCTION: bwb_DO() + + DESCRIPTION: This C function implements the ANSI BASIC + DO statement, when DO is not followed by + an argument. It is called by bwb_do() in + bwb_cmd.c. + + SYNTAX: DO ' forever + +***************************************************************/ - if ( case_eval( &( CURTASK excs[ CURTASK exsc ].expression ), - minval, maxval ) == TRUE ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_case(): evaluation returns TRUE" ); - bwb_debug( bwb_ebuf ); -#endif - CURTASK excs[ CURTASK exsc ].code = EXEC_SELTRUE; +struct bwb_line * +bwb_DO(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); + /* if this is the first time at this DO statement, note it */ + +#if 0 + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) #endif - return bwb_zline( l ); - } + if (FindTopLineOnStack(l) == FALSE) + { - /* evaluation returns a FALSE value; find next CASE or END SELECT statement */ + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; - else - { -#if INTENSIVE_DEBUGb - sprintf( bwb_ebuf, "in bwb_case(): evaluation returns FALSE" ); - bwb_debug( bwb_ebuf ); -#endif - retline = find_case( l ); - retline->position = 0; - return retline; - } + /* find the LOOP statement */ - } + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l);; + + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) + { + /* NOT FOUND */ + bwb_error("DO without LOOP"); + return bwb_zline(l); + } + } + bwb_setexec(l, l->position, EXEC_DO); + return bwb_zline(l); +} /*************************************************************** + + FUNCTION: bwb_DO_UNTIL() + + DESCRIPTION: This C function implements the ANSI BASIC + DO UNTIL statement, when DO is not followed by + an argument. It is called by bwb_do() in + bwb_cmd.c. + + SYNTAX: DO UNTIL expression ' exit when X <> 0 + +***************************************************************/ - FUNCTION: bwb_caseif() - - DESCRIPTION: This C function handles the BASIC CASE IF - statement. +struct bwb_line * +bwb_DO_UNTIL(struct bwb_line * l) +{ + struct exp_ese *e; -***************************************************************/ + bwx_DEBUG(__FUNCTION__); + /* if this is the first time at this WHILE statement, note it */ -#if ANSI_C -static struct bwb_line * -bwb_caseif( struct bwb_line *l ) -#else -static struct bwb_line * -bwb_caseif( l ) - struct bwb_line *l; +#if 0 + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) #endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - int position; - struct exp_ese *r; - struct bwb_line *retline; - - if ( CURTASK excs[ CURTASK exsc ].expression.type == NUMBER ) - { - sprintf( tbuf, "%f %s", - (float) CURTASK excs[ CURTASK exsc ].expression.nval, - &( l->buffer[ l->position ] ) ); - } - else + if (FindTopLineOnStack(l) == FALSE) { - bwb_error( err_mismatch ); -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); - } - position = 0; - r = bwb_exp( tbuf, FALSE, &position ); + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; - if ( r->nval == (bnumber) TRUE ) - { - CURTASK excs[ CURTASK exsc ].code = EXEC_SELTRUE; + /* find the UEND statement (or LOOP statement) */ + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l); -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); - } - else - { - retline = find_case( l ); - retline->position = 0; - return retline; + + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) + { + /* NOT FOUND */ + bwb_error("DO without LOOP"); + return bwb_zline(l); + } } + /*----------------------------------------------------*/ + /* Expression evaluation was at the top of bwb_while, */ + /* and the init portion was performed only if TRUE. */ + /* The init routine should be performed regardless of */ + /* expression value, else a segmentation fault can */ + /* occur! (JBV) */ + /*----------------------------------------------------*/ - } + /* call bwb_exp() to interpret the expression */ -/*************************************************************** + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (exp_getival(e) != FALSE) + { + /* EXIT DO */ + struct bwb_line *r; - FUNCTION: case_eval() + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } + /* DO UNTIL ... */ + bwb_setexec(l, l->position, EXEC_DO); + return bwb_zline(l); - DESCRIPTION: This function evaluates a case statement - by comparing minimum and maximum values - with a set expression. It returns either - TRUE or FALSE +} +/*************************************************************** + + FUNCTION: bwb_DO_WHILE() + + DESCRIPTION: This C function implements the ANSI BASIC + DO statement, when DO is not followed by + an argument. It is called by bwb_do() in + bwb_cmd.c. + + SYNTAX: DO WHILE expression ' exit when X = 0 + ***************************************************************/ -#if ANSI_C -static int -case_eval( struct exp_ese *expression, struct exp_ese *minval, - struct exp_ese *maxval ) -#else -static int -case_eval( expression, minval, maxval ) - struct exp_ese *expression; - struct exp_ese *minval; - struct exp_ese *maxval; -#endif - { +struct bwb_line * +bwb_DO_WHILE(struct bwb_line * l) +{ + struct exp_ese *e; - /* string value */ + bwx_DEBUG(__FUNCTION__); + /* if this is the first time at this WHILE statement, note it */ - if ( expression->type == STRING ) +#if 0 + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) +#endif + if (FindTopLineOnStack(l) == FALSE) { - bwb_error( err_mismatch ); - return FALSE; - } - /* numerical value */ + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in case_eval(): n <%f> min <%f> max <%f>", - (float) expression->nval, - (float) minval->nval, - (float) maxval->nval ); - bwb_debug( bwb_ebuf ); -#endif + /* find the LOOP statement */ + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l); - if ( ( expression->nval >= minval->nval ) - && ( expression->nval <= maxval->nval )) - { - return TRUE; + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) + { + /* NOT FOUND */ + bwb_error("DO without LOOP"); + return bwb_zline(l); + } } + /*----------------------------------------------------*/ + /* Expression evaluation was at the top of bwb_while, */ + /* and the init portion was performed only if TRUE. */ + /* The init routine should be performed regardless of */ + /* expression value, else a segmentation fault can */ + /* occur! (JBV) */ + /*----------------------------------------------------*/ - return FALSE; + /* call bwb_exp() to interpret the expression */ + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); } - -/*************************************************************** - - FUNCTION: find_case() - - DESCRIPTION: This function searches for a line containing - a CASE statement corresponding to a previous - SELECT CASE statement. - -***************************************************************/ - -#if ANSI_C -static struct bwb_line * -find_case( struct bwb_line *l ) -#else -static struct bwb_line * -find_case( l ) - struct bwb_line *l; -#endif + if (exp_getival(e) == FALSE) { - struct bwb_line *current; - register int c_level; - int position; - - c_level = 1; - for ( current = l->next; current != &CURTASK bwb_end; current = current->next ) - { - position = 0; - if ( current->marked != TRUE ) - { - line_start( current->buffer, &position, &( current->lnpos ), - &( current->lnum ), - &( current->cmdpos ), - &( current->cmdnum ), - &( current->startpos ) ); - } - current->position = current->startpos; + /* EXIT DO */ + struct bwb_line *r; - if ( current->cmdnum > -1 ) - { + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } + /* DO WHILE ... */ + bwb_setexec(l, l->position, EXEC_DO); + return bwb_zline(l); - if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_select ) - { - ++c_level; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_case(): found SELECT at line %d, level %d", - current->number, c_level ); - bwb_debug( bwb_ebuf ); -#endif +} - } - else if ( is_endselect( current ) == TRUE ) - { - --c_level; +/*************************************************************** + + FUNCTION: bwb_EXIT_DO() + + DESCRIPTION: This function handles the BASIC EXIT + DO statement. This is a structured + programming command compatible with ANSI + BASIC. It is called from the bwb_exit() + subroutine. + +***************************************************************/ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_endif(): found END SELECT at line %d, level %d", - current->number, c_level ); - bwb_debug( bwb_ebuf ); -#endif +struct bwb_line * +bwb_EXIT_DO(struct bwb_line * l) +{ + struct bwb_line *next_line; - if ( c_level == 0 ) - { - return current; - } - } + bwx_DEBUG(__FUNCTION__); - else if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_case ) - { - --c_level; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_case(): found CASE at line %d, level %d", - current->number, c_level ); - bwb_debug( bwb_ebuf ); -#endif + next_line = FindExitLineOnStack(l); + if (next_line == NULL) + { + bwb_error("EXIT DO without DO"); + return bwb_zline(l); + } + { + /* EXIT DO */ + struct bwb_line *r; - if ( c_level == 0 ) - { - return current; - } - } - } - } + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } +#if 0 + next_line = next_line->next; -#if PROG_ERRORS - sprintf( bwb_ebuf, "SELECT without CASE" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); + /* set the next line in the exec stack */ + next_line->position = 0; + bwb_setexec(next_line, 0, EXEC_DO); + return next_line; #endif +} - return NULL; - - } /*************************************************************** - - FUNCTION: find_case() - - DESCRIPTION: This function searches for a line containing - an END SELECT statement corresponding to a previous - SELECT CASE statement. - + + FUNCTION: bwb_LOOP() + + DESCRIPTION: This C function implements the ANSI BASIC + LOOP statement. + + SYNTAX: LOOP ' forever + ***************************************************************/ -#if ANSI_C -static struct bwb_line * -find_endselect( struct bwb_line *l ) -#else -static struct bwb_line * -find_endselect( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *current; - register int c_level; - int position; - - c_level = 1; - for ( current = l->next; current != &CURTASK bwb_end; current = current->next ) - { - position = 0; - if ( current->marked != TRUE ) - { - line_start( current->buffer, &position, &( current->lnpos ), - &( current->lnum ), - &( current->cmdpos ), - &( current->cmdnum ), - &( current->startpos ) ); - } - current->position = current->startpos; +struct bwb_line * +bwb_LOOP(struct bwb_line * l) +{ - if ( current->cmdnum > -1 ) - { + bwx_DEBUG(__FUNCTION__); - if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_select ) - { - ++c_level; + /* check integrity of DO loop */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_case(): found SELECT at line %d, level %d", - current->number, c_level ); - bwb_debug( bwb_ebuf ); -#endif + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("LOOP without DO"); + return bwb_zline(l); + } + /* reset to the top of the current DO loop */ - } - else if ( is_endselect( current ) == TRUE ) - { - --c_level; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_endif(): found END SELECT at line %d, level %d", - current->number, c_level ); - bwb_debug( bwb_ebuf ); -#endif + CURTASK excs[CURTASK exsc].LoopTopLine->position = 0; + bwb_setexec(CURTASK excs[CURTASK exsc].LoopTopLine, 0, EXEC_DO); - if ( c_level == 0 ) - { - return current; - } - } - } - } + return CURTASK excs[CURTASK exsc].LoopTopLine; -#if PROG_ERRORS - sprintf( bwb_ebuf, "SELECT without END SELECT" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif +} - return NULL; - } /*************************************************************** - - FUNCTION: is_endselect() - - DESCRIPTION: This C function attempts to determine if - a given line contains an END SELECT statement. - + + FUNCTION: bwb_LOOP_UNTIL() + + DESCRIPTION: This C function implements the ANSI BASIC + LOOP UNTIL statement and is called by + bwb_loop(). + + SYNTAX: LOOP UNTIL expression ' exit when X <> 0 + ***************************************************************/ -#if ANSI_C -static int -is_endselect( struct bwb_line *l ) -#else -static int -is_endselect( l ) - struct bwb_line *l; -#endif - { - int position; - char tbuf[ MAXVARNAMESIZE + 1]; - - if ( bwb_cmdtable[ l->cmdnum ].vector != bwb_xend ) - { - return FALSE; - } +struct bwb_line * +bwb_LOOP_UNTIL(struct bwb_line * l) +{ + struct exp_ese *e; - position = l->startpos; - adv_ws( l->buffer, &position ); - adv_element( l->buffer, &position, tbuf ); - bwb_strtoupper( tbuf ); + bwx_DEBUG(__FUNCTION__); - if ( strcmp( tbuf, "SELECT" ) == 0 ) - { - return TRUE; - } + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("LOOP without DO"); + return bwb_zline(l); + } + /* call bwb_exp() to interpret the expression */ - return FALSE; + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (exp_getival(e) != FALSE) + { + /* EXIT DO */ + struct bwb_line *r; + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; } + /* loop around to DO again */ -/*************************************************************** - FUNCTION: bwb_endselect() + CURTASK excs[CURTASK exsc].LoopTopLine->position = 0; + bwb_setexec(CURTASK excs[CURTASK exsc].LoopTopLine, 0, EXEC_DO); - DESCRIPTION: This function handles the BASIC END - SELECT statement. + return CURTASK excs[CURTASK exsc].LoopTopLine; - SYNTAX: END SELECT +} + +/*************************************************************** + + FUNCTION: bwb_LOOP_WHILE() + + DESCRIPTION: This C function implements the BASIC + LOOP WHILE statement and is called by + bwb_loop(). + + SYNTAX: LOOP WHILE expression ' exit when X = 0 + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_endselect( struct bwb_line *l ) -#else -struct bwb_line * -bwb_endselect( l ) - struct bwb_line *l; -#endif +bwb_LOOP_WHILE(struct bwb_line * l) +{ + struct exp_ese *e; + + bwx_DEBUG(__FUNCTION__); + + if (FindBottomLineOnStack(l) == FALSE) { + /* NOT FOUND */ + bwb_error("LOOP without DO"); + return bwb_zline(l); + } + /* call bwb_exp() to interpret the expression */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_endselect(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (exp_getival(e) == FALSE) + { + /* EXIT DO */ + struct bwb_line *r; - if ( ( CURTASK excs[ CURTASK exsc ].code != EXEC_SELTRUE ) - && ( CURTASK excs[ CURTASK exsc ].code != EXEC_SELFALSE )) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_endselect(): END SELECT without SELECT" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } + /* execute DO-LOOP again */ - bwb_decexec(); + CURTASK excs[CURTASK exsc].LoopTopLine->position = 0; + bwb_setexec(CURTASK excs[CURTASK exsc].LoopTopLine, 0, EXEC_DO); -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - return bwb_zline( l ); - } + return CURTASK excs[CURTASK exsc].LoopTopLine; -#endif /* STRUCT_CMDS */ +} -#if COMMON_CMDS || STRUCT_CMDS -/*** WHILE-WEND ***/ -/*************************************************************** +/* +-------------------------------------------------------------------------------------------- + WHILE - WEND + -------------------------------------------------------------------------------------------- +*/ - FUNCTION: bwb_while() - DESCRIPTION: This function handles the BASIC WHILE - statement and also the ANSI DO WHILE - statement. - SYNTAX: WHILE expression - DO WHILE expression +/*************************************************************** + + FUNCTION: bwb_WHILE() + + DESCRIPTION: This function handles the BASIC + WHILE statement. + + SYNTAX: WHILE expression + ... + WEND + SYNTAX: WHILE expression ' exit when X = 0 + + ***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_while( struct bwb_line *l ) -#else struct bwb_line * -bwb_while( l ) - struct bwb_line *l; -#endif - { +bwb_WHILE(struct bwb_line * l) +{ struct exp_ese *e; - struct bwb_line *r; - /* if this is the first time at this WHILE statement, note it */ + bwx_DEBUG(__FUNCTION__); + /* if this is the first time at this WHILE statement, note it */ - if ( CURTASK excs[ CURTASK exsc ].while_line != l ) - { - - bwb_incexec(); - CURTASK excs[ CURTASK exsc ].while_line = l; - - /* find the WEND statement (or LOOP statement) */ - -#if STRUCT_CMDS - if ( l->cmdnum == getcmdnum( CMD_DO )) - { - CURTASK excs[ CURTASK exsc ].wend_line = find_loop( l ); - } - else - { - CURTASK excs[ CURTASK exsc ].wend_line = find_wend( l ); - } -#else - CURTASK excs[ CURTASK exsc ].wend_line = find_wend( l ); +#if 0 + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) #endif + if (FindTopLineOnStack(l) == FALSE) + { - if ( CURTASK excs[ CURTASK exsc ].wend_line == NULL ) - { - return bwb_zline( l ); - } + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_while(): initialize WHILE loop, line <%d>", - l->number ); - bwb_debug( bwb_ebuf ); -#endif + /* find the LOOP statement */ + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l); - } -#if INTENSIVE_DEBUG - else + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) { - sprintf( bwb_ebuf, "in bwb_while(): return to WHILE loop, line <%d>", - l->number ); - bwb_debug( bwb_ebuf ); + /* NOT FOUND */ + bwb_error("WHILE without WEND"); + return bwb_zline(l); } -#endif - + } /*----------------------------------------------------*/ /* Expression evaluation was at the top of bwb_while, */ /* and the init portion was performed only if TRUE. */ @@ -1505,967 +1679,1402 @@ bwb_while( l ) /* call bwb_exp() to interpret the expression */ - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - - if ( (int) exp_getnval( e ) != FALSE ) /* Was == TRUE (JBV 10/1996) */ - { - bwb_setexec( l, l->position, EXEC_WHILE ); - return bwb_zline( l ); - } - else - { - CURTASK excs[ CURTASK exsc ].while_line = NULL; - r = CURTASK excs[ CURTASK exsc ].wend_line; - bwb_setexec( r, 0, CURTASK excs[ CURTASK exsc - 1 ].code ); + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (exp_getival(e) == FALSE) + { + /* EXIT WHILE */ + struct bwb_line *r; + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); r->position = 0; bwb_decexec(); return r; - } - } + /* WHILE ... */ + bwb_setexec(l, l->position, EXEC_WHILE); + return bwb_zline(l); -/*************************************************************** - - FUNCTION: bwb_wend() - - DESCRIPTION: This function handles the BASIC WEND - statement and the LOOP statement ending - a DO WHILE loop. - - SYNTAX: WEND - LOOP +} +/*************************************************************** + + FUNCTION: bwb_exitwhile() + + DESCRIPTION: This function handles the BASIC EXIT + WHILE statement. This is a structured + programming command compatible with ANSI + BASIC. It is called from the bwb_exit() + subroutine. + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_wend( struct bwb_line *l ) -#else -struct bwb_line * -bwb_wend( l ) - struct bwb_line *l; -#endif - { +bwb_EXIT_WHILE(struct bwb_line * l) +{ + struct bwb_line *next_line; - /* check integrity of WHILE loop */ + bwx_DEBUG(__FUNCTION__); - if ( CURTASK excs[ CURTASK exsc ].code != EXEC_WHILE ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_wend(): exec stack code != EXEC_WHILE" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } + /* Check the integrity of the WHILE statement */ + next_line = FindExitLineOnStack(l); + if (next_line == NULL) + { + bwb_error("EXIT WHILE without WHILE"); + return bwb_zline(l); + } + { + /* EXIT WHILE */ + struct bwb_line *r; + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } +#if 0 + next_line = next_line->next; - if ( CURTASK excs[ CURTASK exsc ].while_line == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_wend(): exec stack while_line == NULL" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); + /* set the next line in the exec stack */ + next_line->position = 0; + bwb_setexec(next_line, 0, EXEC_WHILE); + return next_line; #endif - } +} - /* reset to the top of the current WHILE loop */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_wend() return to line <%d>", - CURTASK excs[ CURTASK exsc ].while_line->number ); - bwb_debug( bwb_ebuf ); -#endif +/*************************************************************** + + FUNCTION: bwb_wend() + + DESCRIPTION: This function handles the BASIC WEND + statement and the LOOP statement ending + a DO WHILE loop. + + SYNTAX: WEND + LOOP + +***************************************************************/ - CURTASK excs[ CURTASK exsc ].while_line->position = 0; - bwb_setexec( CURTASK excs[ CURTASK exsc ].while_line, 0, EXEC_WHILE ); +struct bwb_line * +bwb_WEND(struct bwb_line * l) +{ - return CURTASK excs[ CURTASK exsc ].while_line; + bwx_DEBUG(__FUNCTION__); + /* check integrity of WHILE loop */ + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("WEND without WHILE"); + return bwb_zline(l); } + /* reset to the top of the current WHILE loop */ -/*************************************************************** - FUNCTION: find_wend() + CURTASK excs[CURTASK exsc].LoopTopLine->position = 0; + bwb_setexec(CURTASK excs[CURTASK exsc].LoopTopLine, 0, EXEC_WHILE); - DESCRIPTION: This function searches for a line containing - a WEND statement corresponding to a previous - WHILE statement. + return CURTASK excs[CURTASK exsc].LoopTopLine; -***************************************************************/ +} -#if ANSI_C -static struct bwb_line * -find_wend( struct bwb_line *l ) -#else -static struct bwb_line * -find_wend( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *current; - register int w_level; - int position; - w_level = 1; - for ( current = l->next; current != &CURTASK bwb_end; current = current->next ) - { - position = 0; - if ( current->marked != TRUE ) - { - line_start( current->buffer, &position, &( current->lnpos ), - &( current->lnum ), - &( current->cmdpos ), - &( current->cmdnum ), - &( current->startpos ) ); - } - current->position = current->startpos; +/* +-------------------------------------------------------------------------------------------- + UNTIL - UEND + -------------------------------------------------------------------------------------------- +*/ - if ( current->cmdnum > -1 ) - { - if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_while ) - { - ++w_level; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_wend(): found WHILE at line %d, level %d", - current->number, w_level ); - bwb_debug( bwb_ebuf ); -#endif - } - else if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_wend ) - { - --w_level; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_wend(): found WEND at line %d, level %d", - current->number, w_level ); - bwb_debug( bwb_ebuf ); + + +/*************************************************************** + + FUNCTION: bwb_UNTIL() + + DESCRIPTION: This function handles the BASIC + UNTIL statement. + + SYNTAX: UNTIL expression ' exit when X <> 0 + ... + UEND + + +***************************************************************/ +struct bwb_line * +bwb_UNTIL(struct bwb_line * l) +{ + struct exp_ese *e; + + bwx_DEBUG(__FUNCTION__); + /* if this is the first time at this WHILE statement, note it */ + +#if 0 + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) #endif + if (FindTopLineOnStack(l) == FALSE) + { - if ( w_level == 0 ) - { - return current->next; - } - } + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; + + /* find the UEND statement (or LOOP statement) */ + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l); + + + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) + { + /* NOT FOUND */ + bwb_error("UNTIL without UEND"); + return bwb_zline(l); } } + /*----------------------------------------------------*/ + /* Expression evaluation was at the top of bwb_while, */ + /* and the init portion was performed only if TRUE. */ + /* The init routine should be performed regardless of */ + /* expression value, else a segmentation fault can */ + /* occur! (JBV) */ + /*----------------------------------------------------*/ -#if PROG_ERRORS - sprintf( bwb_ebuf, "in find_wend(): WHILE without WEND" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif + /* call bwb_exp() to interpret the expression */ - return NULL; + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (exp_getival(e) != FALSE) + { + /* EXIT UNTIL */ + struct bwb_line *r; + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; } + /* UNTIL ... */ + bwb_setexec(l, l->position, EXEC_UNTIL); + return bwb_zline(l); + +} -#if STRUCT_CMDS /*************************************************************** + + FUNCTION: bwb_exituntil() + + DESCRIPTION: This function handles the BASIC EXIT + UNTIL statement. This is a structured + programming command compatible with ANSI + BASIC. It is called from the bwb_exit() + subroutine. + +***************************************************************/ - FUNCTION: find_loop() +struct bwb_line * +bwb_EXIT_UNTIL(struct bwb_line * l) +{ + struct bwb_line *next_line; - DESCRIPTION: This function searches for a line containing - a LOOP statement corresponding to a previous - DO statement. + bwx_DEBUG(__FUNCTION__); -***************************************************************/ + /* Check the integrity of the UNTIL statement */ -#if ANSI_C -extern struct bwb_line * -find_loop( struct bwb_line *l ) -#else -extern struct bwb_line * -find_loop( l ) - struct bwb_line *l; -#endif + next_line = FindExitLineOnStack(l); + if (next_line == NULL) { - struct bwb_line *current; - register int w_level; - int position; - - w_level = 1; - for ( current = l->next; current != &CURTASK bwb_end; current = current->next ) - { - position = 0; - if ( current->marked != TRUE ) - { - line_start( current->buffer, &position, &( current->lnpos ), - &( current->lnum ), - &( current->cmdpos ), - &( current->cmdnum ), - &( current->startpos ) ); - } - current->position = current->startpos; - - if ( current->cmdnum > -1 ) - { - - if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_do ) - { - ++w_level; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_loop(): found DO at line %d, level %d", - current->number, w_level ); - bwb_debug( bwb_ebuf ); -#endif + bwb_error("EXIT UNTIL without UNTIL"); + return bwb_zline(l); + } + { + /* EXIT UNTIL */ + struct bwb_line *r; - } - else if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_loop ) - { - --w_level; + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } +#if 0 + next_line = next_line->next; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnd_loop(): found LOOP at line %d, level %d", - current->number, w_level ); - bwb_debug( bwb_ebuf ); + /* set the next line in the exec stack */ + next_line->position = 0; + bwb_setexec(next_line, 0, EXEC_UNTIL); + return next_line; #endif +} - if ( w_level == 0 ) - { - return current->next; - } - } - } - } -#if PROG_ERRORS - sprintf( bwb_ebuf, "in find_loop(): DO without LOOP" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif +/*************************************************************** + + FUNCTION: bwb_uend() + + DESCRIPTION: This function handles the BASIC UEND + statement and the LOOP statement ending + a DO UNTIL loop. + + SYNTAX: UEND + +***************************************************************/ - return NULL; +struct bwb_line * +bwb_UEND(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* check integrity of UNTIL loop */ + + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("UEND without UNTIL"); + return bwb_zline(l); } + /* reset to the top of the current UNTIL loop */ -#endif /* STRUCT_CMDS */ + CURTASK excs[CURTASK exsc].LoopTopLine->position = 0; + bwb_setexec(CURTASK excs[CURTASK exsc].LoopTopLine, 0, EXEC_UNTIL); -#endif /* COMMON_CMDS || STRUCT_CMDS */ + return CURTASK excs[CURTASK exsc].LoopTopLine; -/*** FOR-NEXT ***/ +} -/*************************************************************** - FUNCTION: bwb_for() +/* +-------------------------------------------------------------------------------------------- + FOR - NEXT + -------------------------------------------------------------------------------------------- +*/ - DESCRIPTION: This function handles the BASIC FOR - statement. - SYNTAX: FOR counter = start TO finish [STEP increment] +/*************************************************************** + + FUNCTION: bwb_for() + + DESCRIPTION: This function handles the BASIC FOR + statement. + + SYNTAX: FOR counter = start TO finish [STEP increment] + +NOTE: This is controlled by the OptionVersion bitmask. + + The order of expression evaluation and variable creation varies. + For example: + FUNCTION FNA( Y ) + PRINT "Y="; Y + FNA = Y + END FUNCTION + FOR X = FNA(3) TO FNA(1) STEP FNA(2) + NEXT X + ANSI/ECMA; + Y= 1 + Y= 2 + Y= 3 + X is created (if it does not exist) + X is assigned the value of 3 + MICROSOFT; + X is created (if it does not exist) + Y= 3 + X is assigned the value of 3 + Y= 1 + Y= 2 + + +ECMA-55: Section 13.4 + ... + The action of the for-statement and the next-statement is de- + fined in terms of other statements, as follows: + + FOR v = initial-value TO limit STEP increment + (block) + NEXT v + + is equivalent to: + + LET own1 = limit + LET own2 = increment + LET v = initial-value + line1 IF (v-own1) * SGN (own2) > 0 THEN line2 + (block) + LET v = v + own2 + GOTO line1 + line2 REM continued in sequence + ... + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_for( struct bwb_line *l ) -#else -struct bwb_line * -bwb_for( l ) - struct bwb_line *l; -#endif - { - register int n; - int e, loop; - int to, step, p; - int for_step, for_target; - struct exp_ese *exp; - struct bwb_variable *v; - char tbuf[ MAXSTRINGSIZE + 1 ]; - - /* get the variable name */ +bwb_FOR(struct bwb_line * l) +{ - exp_getvfname( &( l->buffer[ l->position ] ), tbuf ); - l->position += strlen( tbuf ); - v = var_find( tbuf ); + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): variable name <%s>.", v->name ); - bwb_debug( bwb_ebuf ); +#if 0 + if (CURTASK excs[CURTASK exsc].LoopTopLine != l) #endif + if (FindTopLineOnStack(l) == FALSE) + { + + bwb_incexec(); + CURTASK excs[CURTASK exsc].LoopTopLine = l; - /*--------------------------------------------------------------*/ - /* Make sure we are in the right FOR-NEXT level! */ - /* If we aren't (which could happen for legit reasons), fix the */ - /* exec stack. */ - /* JBV, 9/20/95 */ - /*--------------------------------------------------------------*/ - if (v == CURTASK excs[ CURTASK exsc].local_variable) bwb_decexec(); + /* find the NEXT statement */ - /* at this point one should find an equals sign ('=') */ + CURTASK excs[CURTASK exsc].LoopBottomLine = find_BottomLineInCode(l); - adv_ws( l->buffer, &( l->position ) ); + if (CURTASK excs[CURTASK exsc].LoopBottomLine == NULL) + { + /* NOT FOUND */ + bwb_error("FOR without NEXT"); + return bwb_zline(l); + } + } + /* ------------------------------------------------------------------- + * ------------------------------- */ - if ( l->buffer[ l->position ] != '=' ) + if (TRUE) + { + register int n; + int e, loop; + int to, step, p; + BasicNumberType for_step; /* STEP value for FOR */ + BasicNumberType for_target; /* target value for FOR */ + struct exp_ese *exp; + struct bwb_variable *v; + char tbuf[BasicStringLengthMax + 1]; + int VarStart; /* position in l->buffer */ + int VarLength; + int InitStart; + int InitLength; + int TermStart; + int TermLength; + int StepStart; + int StepLength; + BasicNumberType Value; + + + + /* VarStart = 0; */ + /* VarLength = 0; */ + InitStart = 0; + InitLength = 0; + TermStart = 0; + TermLength = 0; + StepStart = 0; + StepLength = 0; + + /* get the variable name */ + VarStart = l->position; + exp_getvfname(&(l->buffer[l->position]), tbuf); + VarLength = strlen(tbuf); + l->position += VarLength; + + + /* at this point one should find an equals sign ('=') */ + + adv_ws(l->buffer, &(l->position)); + + if (l->buffer[l->position] != '=') { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_for(): failed to find equals sign, buf <%s>", - &( l->buffer[ l->position ] ) ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); + sprintf(bwb_ebuf, "in bwb_for(): failed to find equals sign, buf <%s>", + &(l->buffer[l->position])); + bwb_error(bwb_ebuf); + return bwb_zline(l); } - else + else { - ++( l->position ); + ++(l->position); } - /* Find the TO and STEP statements */ + /* Find the TO and STEP statements */ - cnd_tostep( l->buffer, l->position, &to, &step ); + cnd_tostep(l->buffer, l->position, &to, &step); - /* if there is no TO statement, then an error has ocurred */ + /* if there is no TO statement, then an error has ocurred */ - if ( to < 1 ) + if (to < 1) { -#if PROG_ERRORS - sprintf( bwb_ebuf, "FOR statement without TO" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); + bwb_error("FOR without TO"); + return bwb_zline(l); } + /* copy initial value to buffer and evaluate it */ - /* copy initial value to buffer and evaluate it */ - - tbuf[ 0 ] = '\0'; - p = 0; - for ( n = l->position; n < to; ++n ) + InitStart = l->position; + tbuf[0] = '\0'; + p = 0; + for (n = l->position; n < to; ++n) { - tbuf[ p ] = l->buffer[ n ]; - ++p; - ++l->position; - tbuf[ p ] = '\0'; + tbuf[p] = l->buffer[n]; + ++p; + ++l->position; + tbuf[p] = '\0'; } + InitLength = p; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): initial value string <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - p = 0; - exp = bwb_exp( tbuf, FALSE, &p ); - var_setnval( v, exp_getnval( exp ) ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): initial value <%d> pos <%d>", - exp_getnval( exp ), l->position ); - bwb_debug( bwb_ebuf ); -#endif - - /* copy target value to small buffer and evaluate it */ + /* copy target value to small buffer and evaluate it */ - tbuf[ 0 ] = '\0'; - p = 0; - l->position = to + 2; - if ( step < 1 ) + tbuf[0] = '\0'; + p = 0; + l->position = to + 2; + if (step < 1) { - e = strlen( l->buffer ); + e = strlen(l->buffer); } - else + else { - e = step - 1; + e = step - 1; } - loop = TRUE; - n = l->position; - while( loop == TRUE ) - { - tbuf[ p ] = l->buffer[ n ]; - ++p; - ++l->position; - tbuf[ p ] = '\0'; + loop = TRUE; + n = l->position; + - if ( n >= e ) - { - loop = FALSE; - } + TermStart = l->position; - ++n; - if ( l->buffer[ n ] == ':' ) + while (loop == TRUE) + { + tbuf[p] = l->buffer[n]; + ++p; + ++l->position; + tbuf[p] = '\0'; + + if (n >= e) { - loop = FALSE; + loop = FALSE; } + ++n; + if (l->buffer[n] == '\0' || l->buffer[n] == OptionCommentChar) + { + loop = FALSE; + } } + TermLength = p; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): target value string <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - p = 0; - exp = bwb_exp( tbuf, FALSE, &p ); - for_target = (int) exp_getnval( exp ); + /* If there is a STEP statement, copy it to a buffer and + * evaluate it */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): target value <%d> pos <%d>", - exp_getnval( exp ), l->position ); - bwb_debug( bwb_ebuf ); -#endif + if (step > 1) + { + tbuf[0] = '\0'; + p = 0; + l->position = step + 4; + + StepStart = l->position; - /* If there is a STEP statement, copy it to a buffer - and evaluate it */ - if ( step > 1 ) + for (n = l->position; n < (int) strlen(l->buffer); ++n) + { + tbuf[p] = l->buffer[n]; + ++p; + ++l->position; + tbuf[p] = '\0'; + } + StepLength = p; + } + if (OptionFlags & OPTION_BUGS_ON) { - tbuf[ 0 ] = '\0'; - p = 0; - l->position = step + 4; + /* Create Variable */ + if (VarLength < 1) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + strncpy(tbuf, &l->buffer[VarStart], VarLength); + tbuf[VarLength] = '\0'; + v = var_find(tbuf); - for ( n = l->position; n < (int) strlen( l->buffer ); ++n ) + /* Init */ + if (InitLength < 1) { - tbuf[ p ] = l->buffer[ n ]; - ++p; - ++l->position; - tbuf[ p ] = '\0'; + bwb_error(err_syntax); + return bwb_zline(l); + } + strncpy(tbuf, &l->buffer[InitStart], InitLength); + tbuf[InitLength] = '\0'; + p = 0; + exp = bwb_exp(tbuf, FALSE, &p); + if (ERROR_PENDING) + { + return bwb_zline(l); } + Value = exp_getnval(exp); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): step value string <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif + /* Assign Variable */ + var_setnval(v, Value); - p = 0; - exp = bwb_exp( tbuf, FALSE, &p ); - for_step = (int) exp_getnval( exp ); + /* Limit */ + if (TermLength < 1) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + strncpy(tbuf, &l->buffer[TermStart], TermLength); + tbuf[TermLength] = '\0'; + p = 0; + exp = bwb_exp(tbuf, FALSE, &p); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + for_target = exp_getnval(exp); + /* Step */ + if (StepLength > 0) + { + strncpy(tbuf, &l->buffer[StepStart], StepLength); + tbuf[StepLength] = '\0'; + p = 0; + exp = bwb_exp(tbuf, FALSE, &p); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + for_step = exp_getnval(exp); + } + else + { + for_step = 1.0; + } } - else + else { - for_step = 1; - } + /* Limit */ + if (TermLength < 1) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + strncpy(tbuf, &l->buffer[TermStart], TermLength); + tbuf[TermLength] = '\0'; + p = 0; + exp = bwb_exp(tbuf, FALSE, &p); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + for_target = exp_getnval(exp); + /* Step */ + if (StepLength > 0) + { + strncpy(tbuf, &l->buffer[StepStart], StepLength); + tbuf[StepLength] = '\0'; + p = 0; + exp = bwb_exp(tbuf, FALSE, &p); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + for_step = exp_getnval(exp); + } + else + { + for_step = 1.0; + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): step value <%d>", - for_step ); - bwb_debug( bwb_ebuf ); -#endif + /* Init */ + if (InitLength < 1) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + strncpy(tbuf, &l->buffer[InitStart], InitLength); + tbuf[InitLength] = '\0'; + p = 0; + exp = bwb_exp(tbuf, FALSE, &p); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + Value = exp_getnval(exp); - /* set position in current line and increment EXEC counter */ - /* bwb_setexec( l, l->position, EXEC_NORM ); */ /* WRONG */ - bwb_incexec(); + /* Create Variable */ + if (VarLength < 1) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + strncpy(tbuf, &l->buffer[VarStart], VarLength); + tbuf[VarLength] = '\0'; + v = var_find(tbuf); - CURTASK excs[ CURTASK exsc ].local_variable = v; - CURTASK excs[ CURTASK exsc ].for_step = for_step; - CURTASK excs[ CURTASK exsc ].for_target = for_target; + /* Assign Variable */ + var_setnval(v, Value); - /* set exit line to be used by EXIT FOR */ + } -#if STRUCT_CMDS - CURTASK excs[ CURTASK exsc ].wend_line = find_next( l ); -#endif + CURTASK excs[CURTASK exsc].local_variable = v; + CURTASK excs[CURTASK exsc].for_step = for_step; + CURTASK excs[CURTASK exsc].for_target = for_target; + } + /* ------------------------------------------------------------------- + * ------------------------------ */ - /* set top line and position to be used in multisegmented FOR-NEXT loop */ -#if MULTISEG_LINES - CURTASK excs[ CURTASK exsc ].for_line = l; - CURTASK excs[ CURTASK exsc ].for_position = l->position; -#endif + bwb_setexec(l, l->position, EXEC_FOR); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): setting code to EXEC_FOR", - l->position ); - bwb_debug( bwb_ebuf ); -#endif - bwb_setexec( l, l->position, EXEC_FOR ); + /* 800 FOR I1=9 TO I1 STEP I1 ' I1=-2 */ + if (TRUE) + { + int IsExit; + BasicNumberType Value; + BasicNumberType Target; + BasicNumberType Step; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_for(): ready to exit, position <%d>", - l->position ); - bwb_debug( bwb_ebuf ); -#endif + IsExit = FALSE; - /* proceed with processing */ + Value = var_getnval(CURTASK excs[CURTASK exsc].local_variable); + Target = CURTASK excs[CURTASK exsc].for_target; + Step = CURTASK excs[CURTASK exsc].for_step; - return bwb_zline( l ); + if (Step > 0) + { + /* POSITIVE */ + if (Value > Target) + { + IsExit = TRUE; + } + } + else + { + /* NEGATIVE */ + if (Value < Target) + { + IsExit = TRUE; + } + } + if (IsExit == TRUE) + { + /* EXIT FOR */ - } -/*************************************************************** + struct bwb_line *next_line; - FUNCTION: bwb_next() + next_line = CURTASK excs[CURTASK exsc].LoopBottomLine->next; - DESCRIPTION: This function handles the BASIC NEXT - statement. + bwb_decexec(); - SYNTAX: NEXT counter + /* set the next line in the exec stack */ -***************************************************************/ + next_line->position = 0; + /* bwb_setexec( next_line, 0, EXEC_NORM ); *//* WRONG + * (JBV) */ + bwb_setexec(next_line, 0, CURTASK excs[CURTASK exsc].code); /* JBV */ + return next_line; -#if ANSI_C -struct bwb_line * -bwb_next( struct bwb_line *l ) -#else -struct bwb_line * -bwb_next( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - struct bwb_variable *v; /* Relocated from INTENSIVE_DEBUG (JBV) */ + } + } + /* proceed with processing */ + return bwb_zline(l); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_next(): entered function, cmdnum <%d> exsc level <%d> code <%d>", - l->cmdnum, CURTASK exsc, CURTASK excs[ CURTASK exsc ].code ); - bwb_debug( bwb_ebuf ); -#endif - /* Check the integrity of the FOR statement */ - if ( CURTASK excs[ CURTASK exsc ].code != EXEC_FOR ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_next(): NEXT without FOR; code is <%d> instead of <%d>", - CURTASK excs[ CURTASK exsc ].code, EXEC_FOR ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } +/*************************************************************** + + FUNCTION: bwb_exitfor() + + DESCRIPTION: This function handles the BASIC EXIT + FOR statement. This is a structured + programming command compatible with ANSI + BASIC. It is called from the bwb_exit() + subroutine. + + SYNTAX: EXIT FOR + +***************************************************************/ - /* read the argument, if there is one */ +struct bwb_line * +bwb_EXIT_FOR(struct bwb_line * l) +{ + struct bwb_line *next_line; - /* Relocated from MULTISEG_LINES (JBV) */ - exp_getvfname( &( l->buffer[ l->position ] ), tbuf ); + bwx_DEBUG(__FUNCTION__); + /* Check the integrity of the FOR statement */ - if (strlen(tbuf) != 0) + next_line = FindExitLineOnStack(l); + if (next_line == NULL) { - /* Relocated from INTENSIVE_DEBUG (JBV) */ - v = var_find( tbuf ); - -#if MULTISEG_LINES /* not currently needed otherwise */ + bwb_error("EXIT FOR without FOR"); + return bwb_zline(l); + } + { + /* EXIT FOR */ + struct bwb_line *r; - l->position += strlen( tbuf ); + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + r = CURTASK excs[CURTASK exsc].LoopBottomLine->next; + bwb_setexec(r, 0, CURTASK excs[CURTASK exsc - 1].code); + r->position = 0; + bwb_decexec(); + return r; + } +#if 0 + next_line = next_line->next; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_next(): variable name detected <%s>.", v->name ); - bwb_debug( bwb_ebuf ); -#endif + /* set the next line in the exec stack */ + next_line->position = 0; + bwb_setexec(next_line, 0, EXEC_FOR); + return next_line; #endif +} - /* decrement or increment the value */ - - /*--------------------------------------------------------------*/ - /* Make sure we are in the right FOR-NEXT level! */ - /* If we aren't (which could happen for legit reasons), fix the */ - /* exec stack. */ - /* JBV, 9/20/95 */ - /*--------------------------------------------------------------*/ - while (v != CURTASK excs[ CURTASK exsc].local_variable) bwb_decexec(); - } - var_setnval( CURTASK excs[ CURTASK exsc ].local_variable, - var_getnval( CURTASK excs[ CURTASK exsc ].local_variable ) - + (bnumber) CURTASK excs[ CURTASK exsc ].for_step ); - /* check for completion of the loop */ - if ( CURTASK excs[ CURTASK exsc ].for_step > 0 ) /* if step is positive */ - { - if ( (int) var_getnval( CURTASK excs[ CURTASK exsc ].local_variable ) - > CURTASK excs[ CURTASK exsc ].for_target ) - { - bwb_decexec(); -#if MULTISEG_LINES - bwb_setexec( l, l->position, CURTASK excs[ CURTASK exsc ].code ); -#else - bwb_setexec( l->next, 0, CURTASK excs[ CURTASK exsc ].code ); -#endif +/*************************************************************** + + FUNCTION: bwb_next() + + DESCRIPTION: This function handles the BASIC NEXT + statement. + + SYNTAX: NEXT counter + +***************************************************************/ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_next(): end of loop" ); - bwb_debug( bwb_ebuf ); -#endif -#ifdef OLD_WAY - l->next->position = 0; - return l->next; -#else - return bwb_zline( l ); -#endif - } - } - else /* if step is negative */ - { - if ( (int) var_getnval( CURTASK excs[ CURTASK exsc ].local_variable ) - < CURTASK excs[ CURTASK exsc ].for_target ) - { - bwb_decexec(); - bwb_setexec( l->next, 0, CURTASK excs[ CURTASK exsc ].code ); +struct bwb_line * +bwb_NEXT(struct bwb_line * l) +{ + char tbuf[BasicStringLengthMax + 1]; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_next(): end of loop" ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); -#ifdef OLD_WAY - l->next->position = 0; - return l->next; -#else - return bwb_zline( l ); -#endif - } - } + if (FindBottomLineOnStack(l) == FALSE) + { + /* NOT FOUND */ + bwb_error("NEXT without FOR"); + return bwb_zline(l); + } + /* read the argument, if there is one */ - /* Target not reached: return to the top of the FOR loop */ + exp_getvfname(&(l->buffer[l->position]), tbuf); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_next(): resetting code to EXEC_FOR", - l->position ); - bwb_debug( bwb_ebuf ); -#endif + if (strlen(tbuf) != 0) + { + /* NEXT variablename */ + struct bwb_variable *v; -#if MULTISEG_LINES - CURTASK excs[ CURTASK exsc ].for_line->position - = CURTASK excs[ CURTASK exsc ].for_position; - bwb_setexec( CURTASK excs[ CURTASK exsc ].for_line, - CURTASK excs[ CURTASK exsc ].for_position, EXEC_FOR ); - return CURTASK excs[ CURTASK exsc ].for_line; /* Added (JBV) */ -#else - bwb_setexec( CURTASK excs[ CURTASK exsc - 1 ].line, - CURTASK excs[ CURTASK exsc - 1 ].position, EXEC_FOR ); + v = var_find(tbuf); + l->position += strlen(tbuf); - return CURTASK excs[ CURTASK exsc - 1 ].line; /* Relocated (JBV) */ -#endif + /* decrement or increment the value */ + if (CURTASK excs[CURTASK exsc].local_variable != v) + { + /* not found */ + bwb_error("NEXT without FOR"); + return bwb_zline(l); + } } + else + { + /* NEXT */ -#if STRUCT_CMDS + if (CURTASK excs[CURTASK exsc].local_variable == NULL) + { + /* not found */ + bwb_error("NEXT without FOR"); + return bwb_zline(l); + } + } -/*************************************************************** - FUNCTION: bwb_exitfor() - DESCRIPTION: This function handles the BASIC EXIT - FOR statement. This is a structured - programming command compatible with ANSI - BASIC. It is called from the bwb_exit() - subroutine. - SYNTAX: EXIT FOR - -***************************************************************/ + var_setnval(CURTASK excs[CURTASK exsc].local_variable, + var_getnval(CURTASK excs[CURTASK exsc].local_variable) + + CURTASK excs[CURTASK exsc].for_step); -#if ANSI_C -struct bwb_line * -bwb_exitfor( struct bwb_line *l ) -#else -struct bwb_line * -bwb_exitfor( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *next_line; - int found; - register int level; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exitfor(): entered subroutine" ); - bwb_debug( bwb_ebuf ); -#endif + /* check for completion of the loop */ - /* Check the integrity of the FOR statement */ + if (CURTASK excs[CURTASK exsc].for_step > 0) /* if step is positive */ + { - found = FALSE; - level = CURTASK exsc; - do + if (var_getnval(CURTASK excs[CURTASK exsc].local_variable) + > CURTASK excs[CURTASK exsc].for_target) { - if ( CURTASK excs[ level ].code == EXEC_FOR ) - { - next_line = CURTASK excs[ CURTASK level ].wend_line; - found = TRUE; - } - else - { - --level; - } + bwb_decexec(); + bwb_setexec(l->next, 0, CURTASK excs[CURTASK exsc].code); + return bwb_zline(l); } - while ( ( level >= 0 ) && ( found == FALSE ) ); - - if ( found != TRUE ) + } + else /* if step is negative */ + { + if (var_getnval(CURTASK excs[CURTASK exsc].local_variable) + < CURTASK excs[CURTASK exsc].for_target) { - -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_exitfor(): EXIT FOR without FOR" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - - return bwb_zline( l ); - + bwb_decexec(); + bwb_setexec(l->next, 0, CURTASK excs[CURTASK exsc].code); + return bwb_zline(l); } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exitfor(): level found is <%d>, current <%d>", - level, CURTASK exsc ); - bwb_debug( bwb_ebuf ); -#endif + /* Target not reached: return to the top of the FOR loop */ - /* decrement below the level of the NEXT statement */ + bwb_setexec(CURTASK excs[CURTASK exsc].LoopTopLine, + CURTASK excs[CURTASK exsc].LoopTopLine->position, EXEC_FOR); - while( CURTASK exsc >= level ) - { - bwb_decexec(); - } - /* set the next line in the exec stack */ + return CURTASK excs[CURTASK exsc].LoopTopLine; - next_line->position = 0; - /* bwb_setexec( next_line, 0, EXEC_NORM ); */ /* WRONG (JBV) */ - bwb_setexec( next_line, 0, CURTASK excs[ CURTASK exsc ].code ); /* JBV */ +} - return next_line; - } /*************************************************************** + + FUNCTION: cnd_tostep() + + DESCRIPTION: This function searches through the + beginning at point + and attempts to find positions of TO + and STEP statements. + +***************************************************************/ - FUNCTION: find_next() +static int +cnd_tostep(char *buffer, int position, int *to, int *step) +{ + int loop, t_pos, b_pos, p_word; + char tbuf[BasicStringLengthMax + 1]; - DESCRIPTION: This function searches for a line containing - a NEXT statement corresponding to a previous - FOR statement. + bwx_DEBUG(__FUNCTION__); + /* set then and els to FALSE initially */ -***************************************************************/ + *to = *step = FALSE; -#if ANSI_C -static struct bwb_line * -find_next( struct bwb_line *l ) -#else -static struct bwb_line * -find_next( l ) - struct bwb_line *l; -#endif + /* loop to find words */ + + p_word = b_pos = position; + t_pos = 0; + tbuf[0] = '\0'; + loop = TRUE; + while (loop == TRUE) { - struct bwb_line *current; - register int w_level; - int position; - w_level = 1; - for ( current = l->next; current != &CURTASK bwb_end; current = current->next ) + if (buffer[b_pos] == '\0' || buffer[b_pos] == OptionCommentChar) { - position = 0; - if ( current->marked != TRUE ) - { - line_start( current->buffer, &position, &( current->lnpos ), - &( current->lnum ), - &( current->cmdpos ), - &( current->cmdnum ), - &( current->startpos ) ); - } - current->position = current->startpos; - - if ( current->cmdnum > -1 ) - { - - if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_for ) - { - ++w_level; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_next(): found FOR at line %d, level %d", - current->number, w_level ); - bwb_debug( bwb_ebuf ); -#endif - - } - else if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_next ) - { - --w_level; + /* end of string */ + return TRUE; + } + switch (buffer[b_pos]) + { + case ' ': /* whitespace = end of word */ + if (strncasecmp(tbuf, "TO", (size_t) strlen("TO")) == 0) + { + *to = p_word; + } + else + if (strncasecmp(tbuf, "STEP", (size_t) strlen("STEP")) == 0) + { + *step = p_word; + } + ++b_pos; + p_word = b_pos; + t_pos = 0; + tbuf[0] = '\0'; + break; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_next(): found NEXT at line %d, level %d", - current->number, w_level ); - bwb_debug( bwb_ebuf ); -#endif + default: + tbuf[t_pos] = buffer[b_pos]; + ++b_pos; + ++t_pos; + tbuf[t_pos] = '\0'; + break; + } - if ( w_level == 0 ) - { + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_next(): found returning line <%d>", - current->next->number ); - bwb_debug( bwb_ebuf ); -#endif + return TRUE; - return current->next; - } - } - } - } +} -#if PROG_ERRORS - sprintf( bwb_ebuf, "FOR without NEXT" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif +/*************************************************************** + + FUNCTION: var_setnval() + + DESCRIPTION: This function sets the value of numerical + variable v to the value of i. + +***************************************************************/ - return NULL; +int +var_setnval(struct bwb_variable * v, BasicNumberType i) +{ + bwx_DEBUG(__FUNCTION__); + switch (v->type) + { + case NUMBER: + *var_findnval(v, v->array_pos) = i; + break; + default: + sprintf(bwb_ebuf, "in var_setnval(): variable <%s> is not a number", + v->name); + bwb_error(bwb_ebuf); } -#endif /* STRUCT_CMDS for EXIT FOR */ + /* successful assignment */ -/*************************************************************** + return TRUE; - FUNCTION: cnd_tostep() +} - DESCRIPTION: This function searches through the - beginning at point - and attempts to find positions of TO - and STEP statements. +static +int +FindTopLineOnStack(struct bwb_line * l) +{ + /* since we are the top of the loop, we MIGHT be on the stack */ + int i; -***************************************************************/ + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -static int -cnd_tostep( char *buffer, int position, int *to, int *step ) -#else -static int -cnd_tostep( buffer, position, to, step ) - char *buffer; - int position; - int *to; - int *step; -#endif + for (i = CURTASK exsc; i >= 0; i--) { - int loop, t_pos, b_pos, p_word; - char tbuf[ MAXSTRINGSIZE + 1 ]; + struct bwb_line *current; - /* set then and els to FALSE initially */ - - *to = *step = FALSE; - - /* loop to find words */ - - p_word = b_pos = position; - t_pos = 0; - tbuf[ 0 ] = '\0'; - loop = TRUE; - while ( loop == TRUE ) + current = CURTASK excs[i].LoopTopLine; + if (current != NULL) { - - switch( buffer[ b_pos ] ) + if (current == l) { - case '\0': /* end of string */ - case ':': /* end of line segment */ + /* FOUND */ + while (CURTASK exsc > i) + { + bwb_decexec(); + } + /* we are now the top item on the stack */ return TRUE; - case ' ': /* whitespace = end of word */ - case '\t': + } + /* do NOT cross a function/sub boundary */ + switch (current->cmdnum) + { + case C_FUNCTION: + case C_SUB: + /* NOT FOUND */ + return FALSE; + break; + } + } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_tostep(): word is <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif + /* NOT FOUND */ + return FALSE; +} - if ( strncmp( tbuf, CMD_TO, (size_t) strlen( CMD_TO ) ) == 0 ) - { +static +int +FindBottomLineOnStack(struct bwb_line * l) +{ + /* since we are the bottom of the loop, we MUST be on the stack */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_tostep(): TO found at position <%d>.", - p_word ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - *to = p_word; - } - else if ( strncmp( tbuf, CMD_STEP, (size_t) strlen( CMD_STEP ) ) == 0 ) - { + while (CURTASK exsc >= 0) + { + if (CURTASK excs[CURTASK exsc].LoopBottomLine == l) + { + /* FOUND */ + return TRUE; + } + bwb_decexec(); + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in cnd_tostep(): STEP found at position <%d>.", - p_word ); - bwb_debug( bwb_ebuf ); -#endif + /* NOT FOUND */ + return FALSE; +} - *step = p_word; - } - ++b_pos; - p_word = b_pos; - t_pos = 0; - tbuf[ 0 ] = '\0'; - break; +static struct bwb_line * +FindExitLineOnStack(struct bwb_line * l) +{ + /* we are an EXIT ... command, find the bottom line on the stack */ - default: - if ( islower( buffer[ b_pos ] ) != FALSE ) - { - tbuf[ t_pos ] = (char) toupper( buffer[ b_pos ] ); - } - else - { - tbuf[ t_pos ] = buffer[ b_pos ]; - } - ++b_pos; - ++t_pos; - tbuf[ t_pos ] = '\0'; + bwx_DEBUG(__FUNCTION__); + while (CURTASK exsc >= 0) + { + struct bwb_line *current; + + current = CURTASK excs[CURTASK exsc].LoopBottomLine; + if (current != NULL) + { + switch (l->cmdnum) + { + case C_EXIT_DO: + /* DO - LOOP */ + switch (current->cmdnum) + { + case C_LOOP: + case C_LOOP_UNTIL: + case C_LOOP_WHILE: + return current; + break; + } + break; + case C_EXIT_WHILE: + /* WHILE - WEND */ + switch (current->cmdnum) + { + case C_WEND: + return current; + break; + } + break; + case C_EXIT_UNTIL: + /* UNTIL - UEND */ + switch (current->cmdnum) + { + case C_UEND: + return current; + break; + } + break; + case C_EXIT_FOR: + /* FOR - NEXT */ + switch (current->cmdnum) + { + case C_NEXT: + return current; + break; + } + break; + case C_EXIT_SUB: + /* SUB - END SUB */ + switch (current->cmdnum) + { + case C_END_SUB: + return current; + break; + } + break; + case C_EXIT_FUNCTION: + /* FUNCTION - END FUNCTION */ + switch (current->cmdnum) + { + case C_END_FUNCTION: + return current; + break; + } + break; + case C_ELSEIF: + case C_ELSE: + /* IF - END IF */ + switch (current->cmdnum) + { + case C_END_IF: + return current; + break; + } + break; + case C_CASE_IF: + case C_CASE_IS: + case C_CASE: + case C_CASE_ELSE: + /* SELECT CASE - END SELECT */ + switch (current->cmdnum) + { + case C_END_SELECT: + return current; + break; + } break; } - } - - return TRUE; - + bwb_decexec(); } + /* NOT FOUND */ + return FALSE; +} -/*************************************************************** - FUNCTION: var_setnval() +static struct bwb_line * +scan_BottomLineInCode(struct bwb_line * l) +{ + /* we are the TopLine. Let's find our matching BottomLine */ - DESCRIPTION: This function sets the value of numerical - variable v to the value of i. + struct bwb_line *current; + register int w_level; -***************************************************************/ + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -extern int -var_setnval( struct bwb_variable *v, bnumber i ) -#else -int -var_setnval( v, i ) - struct bwb_variable *v; - bnumber i; -#endif + switch (l->cmdnum) { + case C_DEF: + case C_USER_LBL: + /* just the single line */ + return l; + break; + } - switch( v->type ) + /* multiple lines */ + w_level = 1; + for (current = l->next; current != &CURTASK bwb_end; current = current->next) + { + switch (l->cmdnum) { - case NUMBER: - * var_findnval( v, v->array_pos ) = i; + case C_DO: + case C_DO_WHILE: + case C_DO_UNTIL: + /* DO - LOOP */ + switch (current->cmdnum) + { + case C_DO: + case C_DO_WHILE: + case C_DO_UNTIL: + ++w_level; + break; + case C_LOOP: + case C_LOOP_UNTIL: + case C_LOOP_WHILE: + --w_level; + if (w_level == 0) + { + return current; + } + break; + } + break; + case C_WHILE: + /* WHILE - WEND */ + switch (current->cmdnum) + { + case C_WHILE: + ++w_level; + break; + case C_WEND: + --w_level; + if (w_level == 0) + { + return current; + } + break; + } + break; + case C_UNTIL: + /* UNTIL - UEND */ + switch (current->cmdnum) + { + case C_UNTIL: + ++w_level; + break; + case C_UEND: + --w_level; + if (w_level == 0) + { + return current; + } + break; + } + break; + case C_FOR: + /* FOR - NEXT */ + switch (current->cmdnum) + { + case C_FOR: + ++w_level; + break; + case C_NEXT: + --w_level; + if (w_level == 0) + { + return current; + } + break; + } + break; + case C_IF_THEN: + /* IF - END IF */ + switch (current->cmdnum) + { + case C_IF_THEN: + ++w_level; + break; + case C_END_IF: + --w_level; + if (w_level == 0) + { + return current; + } + break; + } + break; + case C_SELECT_CASE: + /* SELECT CASE - END SELECT */ + switch (current->cmdnum) + { + case C_SELECT_CASE: + ++w_level; + break; + case C_END_SELECT: + --w_level; + if (w_level == 0) + { + return current; + } + break; + } + break; + case C_SUB: + /* SUB - END SUB */ + switch (current->cmdnum) + { + case C_SUB: + ++w_level; + break; + case C_END_SUB: + --w_level; + if (w_level == 0) + { + return current; + } + break; + } + break; + case C_FUNCTION: + /* SUB - END SUB */ + switch (current->cmdnum) + { + case C_FUNCTION: + ++w_level; + break; + case C_END_FUNCTION: + --w_level; + if (w_level == 0) + { + return current; + } + break; + } break; default: -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_setnval(): variable <%s> is not a number", - v->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + return NULL; + break; } + } + /* NOT FOUND */ + return NULL; +} - /* successful assignment */ - return TRUE; +struct bwb_line * +find_BottomLineInCode(struct bwb_line * l) +{ + /* we only want to scan once */ + /* bwb_scan() sets l->OtherLine to NULL to ensure MERGE and DELETE + * work correctly */ + bwx_DEBUG(__FUNCTION__); + + if (l->OtherLine == NULL) + { + /* we do not yet know */ + l->OtherLine = scan_BottomLineInCode(l); + if (l->OtherLine != NULL) + { + /* FOUND */ + /* mark the bottom line to point to us, so we can use + * this info in DELETE */ + l->OtherLine->OtherLine = l; + } + } + return l->OtherLine; +} + +static struct bwb_line * +find_NextTestInCode(struct bwb_line * l) +{ + struct bwb_line *current; + register int w_level; + + bwx_DEBUG(__FUNCTION__); + + w_level = 1; + for (current = l->next; current != &CURTASK bwb_end; current = current->next) + { + switch (l->cmdnum) + { + case C_IF_THEN: + case C_ELSEIF: + switch (current->cmdnum) + { + case C_IF_THEN: + ++w_level; + break; + case C_ELSEIF: + case C_ELSE: + /* we must report only the first ELSE we + * encounter at level 1 */ + if (w_level == 1) + { + return current; + } + break; + case C_END_IF: + --w_level; + if (w_level == 0) + { + return NULL; + } + break; + } + break; + case C_CASE: + case C_CASE_IF: + case C_CASE_IS: + switch (current->cmdnum) + { + case C_SELECT_CASE: + ++w_level; + break; + case C_CASE: + case C_CASE_IF: + case C_CASE_IS: + case C_CASE_ELSE: + /* we must report only the first CASE we + * encounter at level 1 */ + if (w_level == 1) + { + return current; + } + break; + case C_END_SELECT: + --w_level; + if (w_level == 0) + { + return NULL; + } + } + break; + default: + return NULL; + break; + } } + return NULL; +} +/* EOF */ diff --git a/bwb_dio.c b/bwb_dio.c index d9b6860..fa18a01 100644 --- a/bwb_dio.c +++ b/bwb_dio.c @@ -1,1901 +1,512 @@ /*************************************************************** - + bwb_dio.c Device Input/Output Routines for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include "bwbasic.h" -#include "bwb_mes.h" - -#if HAVE_SYSSTAT -#include -#endif -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif +#include "bwbasic.h" -#if INTENSIVE_DEBUG -#define RANDOM_FILLCHAR 'X' -#else -#define RANDOM_FILLCHAR ' ' -#endif -#if COMMON_CMDS -struct dev_element *dev_table; /* table of devices */ -#endif -static struct bwb_variable *v; -static int pos; -static int req_devnumber; -static int rlen; -static int mode; - -#if ANSI_C -static struct bwb_line *dio_lrset( struct bwb_line *l, int rset ); -static int dio_flush( int dev_number ); -#else -static struct bwb_line *dio_lrset(); -static int dio_flush(); -#endif +static struct bwb_line * +dio_lrset(struct bwb_line * l, int rset); -#if COMMON_CMDS /*************************************************************** - + FUNCTION: bwb_open() - - DESCRIPTION: This function implements the BASIC OPEN - command to open a stream for device input/output. - + + DESCRIPTION: This function implements the BASIC OPEN + command to open a stream for device input/output. + SYNTAX: 1. OPEN "I"|"O"|"R"|"A", [#]n, filename [,rlen] - 2. OPEN filename [FOR INPUT|OUTPUT|APPEND|] AS [#]n [LEN=n] - + 2. OPEN filename [FOR INPUT|OUTPUT|APPEND|RANDOM|BINARY] AS [#]n [LEN=n] + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_open( struct bwb_line *l ) -#else struct bwb_line * -bwb_open( l ) - struct bwb_line *l; -#endif +bwb_OPEN(struct bwb_line * l) +{ + /* OPEN filename [FOR mode] AS filenumber [LEN reclen] */ + char filename[BasicStringLengthMax + 1]; + char mode[BasicStringLengthMax + 1]; + char filenumber[BasicStringLengthMax + 1]; + char reclen[BasicStringLengthMax + 1]; + char OutputBuffer[BasicStringLengthMax + 1]; + int p; + + bwx_DEBUG(__FUNCTION__); + + /* OPEN filename [FOR mode] AS */ + if (GetKeyword(l, filename, " FOR ")) { - FILE *fp; - struct exp_ese *e; - int previous_buffer; - char atbuf[ MAXSTRINGSIZE + 1 ]; - char first[ MAXSTRINGSIZE + 1 ]; - char devname[ MAXSTRINGSIZE + 1 ]; - - /* initialize */ - - mode = req_devnumber = rlen = -1; - previous_buffer = FALSE; - - /* get the first expression element up to comma or whitespace */ - - adv_element( l->buffer, &( l->position ), atbuf ); - - /* parse the first expression element */ - - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - str_btoc( first, exp_getsval( e ) ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): first element is <%s>", - first ); - bwb_debug( bwb_ebuf ); -#endif - - /* test for syntactical form: if a comma follows the first element, - then the syntax is form 1 (the old CP/M BASIC format); otherwise we - presume form 2 */ - - adv_ws( l->buffer, &( l->position ) ); - - /* Parse syntax Form 1 (OPEN "x",#n, devname...) */ - - if ( l->buffer[ l->position ] == ',' ) + /* OPEN filename FOR */ + if (GetKeyword(l, mode, " AS ")) { + /* FOR mode AS */ + } + else + { + bwb_error("syntax error"); + } + } + else + if (GetKeyword(l, filename, " AS ")) + { + /* OPEN filename AS */ + strcpy(mode, "BINARY"); /* default for structured OPEN */ + } + else + { + bwb_error("syntax error"); + } - /* parse the next element to get the device number */ - - ++( l->position ); /* advance beyond comma */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == '#' ) - { - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); - } + /* AS filenumber [LEN reclen] */ + if (GetKeyword(l, filenumber, " LEN ")) + { + /* AS filenumber LEN reclen */ + GetRestOfLine(l, reclen); + } + else + { + /* AS filenumber */ + GetRestOfLine(l, filenumber); + strcpy(reclen, "128"); /* default for structured OPEN */ + } - adv_element( l->buffer, &( l->position ), atbuf ); + OutputBuffer[0] = '\0'; + strcat(OutputBuffer, "OPEN("); + strcat(OutputBuffer, "\""); + strcat(OutputBuffer, mode); + strcat(OutputBuffer, "\""); + strcat(OutputBuffer, ","); + strcat(OutputBuffer, filenumber); + strcat(OutputBuffer, ","); + strcat(OutputBuffer, filename); + strcat(OutputBuffer, ","); + strcat(OutputBuffer, reclen); + strcat(OutputBuffer, ")"); + + + p = 0; + bwb_exp(OutputBuffer, FALSE, &p); + if (ERROR_PENDING) + { + /* oops */ + } + return bwb_zline(l); +} - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - if ( e->type == STRING ) - { -#if PROG_ERRORS - bwb_error( "String where number was expected for device number" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - req_devnumber = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): syntax 1, req dev number is %d", - req_devnumber ); - bwb_debug( bwb_ebuf ); -#endif +/*************************************************************** + + FUNCTION: bwb_name() + + DESCRIPTION: This function implements the BASIC NAME + command to rename a disk file. + + SYNTAX: NAME old_filename AS new_filename + +***************************************************************/ - /* parse the next element to get the devname */ - adv_ws( l->buffer, &( l->position ) ); /* advance past whitespace */ - ++( l->position ); /* advance past comma */ - adv_element( l->buffer, &( l->position ), atbuf ); +struct bwb_line * +bwb_NAME(struct bwb_line * l) +{ + int r; + int position; + struct exp_ese *e; + char atbuf[BasicStringLengthMax + 1]; + char btbuf[BasicStringLengthMax + 1]; - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - if ( e->type != STRING ) - { -#if PROG_ERRORS - bwb_error( "in bwb_open(): number where string was expected for devname" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - str_btoc( devname, exp_getsval( e ) ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): syntax 1, devname <%s>", - devname ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - /* see if there is another element; if so, parse it to get the - record length */ + /* get the first argument in atbuf */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) - { + adv_element(l->buffer, &(l->position), atbuf); - ++( l->position ); /* advance beyond comma */ - adv_element( l->buffer, &( l->position ), atbuf ); + /* interpret the first argument */ - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - if ( e->type == STRING ) - { -#if PROG_ERRORS - bwb_error( "String where number was expected for record length" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - rlen = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): syntax 1, record length is %d", - rlen ); - bwb_debug( bwb_ebuf ); -#endif + position = 0; + e = bwb_exp(atbuf, FALSE, &position); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (e->type != STRING) + { + bwb_error(err_argstr); + return bwb_zline(l); + } + /* this argument must be copied back to atbuf, else the next call to + * bwb_exp() will overwrite the structure to which e refers */ - } + str_btoc(atbuf, &(e->sval)); - /* the first letter of the first should indicate the - type of file opening requested: test this letter, - then parse accordingly */ - /* open file for sequential INPUT */ + /* get the second argument in btbuf */ - if ( ( first[ 0 ] == 'i' ) || ( first[ 0 ] == 'I' )) - { - mode = DEVMODE_INPUT; - } + adv_element(l->buffer, &(l->position), btbuf); - /* open file for sequential OUTPUT */ - else if ( ( first[ 0 ] == 'o' ) || ( first[ 0 ] == 'O' )) - { - mode = DEVMODE_OUTPUT; - } + if (strcasecmp(btbuf, "AS") != 0) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + /* get the third argument in btbuf */ - /* open file for RANDOM access input and output */ + adv_element(l->buffer, &(l->position), btbuf); - else if ( ( first[ 0 ] == 'r' ) || ( first[ 0 ] == 'R' )) - { - mode = DEVMODE_RANDOM; - } + /* interpret the third argument */ - /* Added by EO: open file for sequential APPEND (GW-Basic, Burroughs B20)*/ + position = 0; + e = bwb_exp(btbuf, FALSE, &position); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (e->type != STRING) + { + bwb_error(err_argstr); + return bwb_zline(l); + } + str_btoc(btbuf, &(e->sval)); - else if ( ( first[ 0 ] == 'a' ) || ( first[ 0 ] == 'A' )) - { - mode = DEVMODE_APPEND; - } - /* error: none of the appropriate modes found */ - else - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_open(): invalid mode" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } + /* try to rename the file */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): syntax 1, mode is %d", mode ); - bwb_debug( bwb_ebuf ); -#endif + r = rename(atbuf, btbuf); - } + /* detect error */ - /* Parse syntax Form 2 (OPEN devname FOR mode AS#n ... ) */ + if (r != 0) + { + bwb_error(err_opsys); + } + return bwb_zline(l); - else - { +} - /* save the devname from first */ +/*************************************************************** + + FUNCTION: bwb_field() + + DESCRIPTION: This C function implements the BASIC + FIELD command. + +***************************************************************/ - strcpy( devname, first ); +struct bwb_line * +bwb_FIELD(struct bwb_line * l) +{ + int dev_number; + struct exp_ese *e; + int current_pos; + char atbuf[BasicStringLengthMax + 1]; + int pos; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): syntax 2, devname <%s>", - devname ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - /* get the next element */ - - adv_element( l->buffer, &( l->position ), atbuf ); - - /* check for "FOR mode" statement */ - - bwb_strtoupper( atbuf ); - if ( strcmp( atbuf, "FOR" ) == 0 ) - { - adv_element( l->buffer, &( l->position ), atbuf ); - bwb_strtoupper( atbuf ); - if ( strcmp( atbuf, "INPUT" ) == 0 ) - { - mode = DEVMODE_INPUT; - } - else if ( strcmp( atbuf, "OUTPUT" ) == 0 ) - { - mode = DEVMODE_OUTPUT; - } - else if ( strcmp( atbuf, "APPEND" ) == 0 ) - { - mode = DEVMODE_APPEND; - } - else - { -#if PROG_ERRORS - bwb_error( "in bwb_open(): Invalid device i/o mode specified" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } + current_pos = 0; - /* get the next element */ + /* first read device number */ - adv_element( l->buffer, &( l->position ), atbuf ); + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == BasicFileNumberPrefix) + { + ++(l->position); + adv_ws(l->buffer, &(l->position)); + } + adv_element(l->buffer, &(l->position), atbuf); - } - else - { - mode = DEVMODE_RANDOM; - } + pos = 0; + e = bwb_exp(atbuf, FALSE, &pos); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (e->type != NUMBER) + { + bwb_error("in bwb_field(): Number was expected for device number"); + return bwb_zline(l); + } + dev_number = exp_getival(e); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): syntax 2, mode is %d", mode ); - bwb_debug( bwb_ebuf ); -#endif - /* This leaves us with the next element in the atbuf: it - should read "AS" */ + if (dev_number < 1 || dev_number > BasicFileNumberMax) + { + bwb_error("in bwb_field(): Requested device number is not VALID."); + return bwb_zline(l); + } + /* be sure that the requested device is open */ - bwb_strtoupper( atbuf ); - if ( strcmp( atbuf, "AS" ) != 0 ) - { -#if PROG_ERRORS - bwb_error( "in bwb_open(): expected AS statement" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } + if (dev_table[dev_number].mode != DEVMODE_RANDOM) + { + bwb_error("in bwb_field(): Requested device number is not RANDOM."); + return bwb_zline(l); + } + /* loop to read variables */ - /* get the next element */ + do + { + int length; + struct bwb_variable *v; + bstring *b; - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == '#' ) - { - ++( l->position ); - } + /* read the comma and advance beyond it */ - adv_element( l->buffer, &( l->position ), atbuf ); + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ',') + { + ++(l->position); + } + /* first find the size of the field */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): string to parse for req dev number <%s>", - atbuf ); - bwb_debug( bwb_ebuf ); -#endif + adv_element(l->buffer, &(l->position), atbuf); /* get element */ pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - if ( e->type == STRING ) - { -#if PROG_ERRORS - bwb_error( "String where number was expected for dev number" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - req_devnumber = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): syntax 2, req dev number is %d", - req_devnumber ); - bwb_debug( bwb_ebuf ); -#endif - - /* Check for LEN = n statement */ - - adv_element( l->buffer, &( l->position ), atbuf ); - bwb_strtoupper( atbuf ); - if ( strncmp( atbuf, "LEN", (size_t) 3 ) == 0 ) - { - - pos = l->position - strlen( atbuf ); - while( ( l->buffer[ pos ] != '=' ) && ( l->buffer[ pos ] != '\0' )) - { - ++pos; - } - if ( l->buffer[ pos ] == '\0' ) - { -#if PROG_ERRORS - bwb_error( "Failed to find equals sign after LEN element" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - ++pos; /* advance past equal sign */ - - e = bwb_exp( l->buffer, FALSE, &pos ); - - if ( e->type == STRING ) - { -#if PROG_ERRORS - bwb_error( "String where number was expected for record length" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - rlen = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): syntax 2, record length is %d", - rlen ); - bwb_debug( bwb_ebuf ); -#endif - - } - - } /* end of syntax 2 */ - - /* check for valid requested device number */ - - if ( ( req_devnumber < 0 ) || ( req_devnumber >= DEF_DEVICES )) + e = bwb_exp(atbuf, FALSE, &pos); + if (ERROR_PENDING) { -#if PROG_ERRORS - bwb_error( "in bwb_open(): Requested device number is out of range." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); + return bwb_zline(l); } - - if ( ( dev_table[ req_devnumber ].mode == DEVMODE_CLOSED ) && - /* PE: JBV mod to close requires this open check */ - ( dev_table[ req_devnumber ].buffer != NULL ) ) + if (e->type != NUMBER) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): using previously closed file (and buffer)" ); - bwb_debug( bwb_ebuf ); -#endif - previous_buffer = TRUE; + bwb_error("in bwb_field(): number value for field size not found"); + return bwb_zline(l); } + length = exp_getival(e); - if ( ( dev_table[ req_devnumber ].mode != DEVMODE_CLOSED ) && - ( dev_table[ req_devnumber ].mode != DEVMODE_AVAILABLE ) ) - { -#if PROG_ERRORS - bwb_error( "in bwb_open(): Requested device number is already in use." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } + /* read the AS */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): ready to open device <%s> mode <%d>", - devname, mode ); - bwb_debug( bwb_ebuf ); -#endif + adv_element(l->buffer, &(l->position), atbuf); /* get element */ - /* attempt to open the file */ - switch( mode ) + if (strcasecmp(atbuf, "AS") != 0) { - case DEVMODE_OUTPUT: - fp = fopen( devname, "w" ); - break; - case DEVMODE_INPUT: - fp = fopen( devname, "r" ); - break; - case DEVMODE_APPEND: - fp = fopen( devname, "a" ); - break; - case DEVMODE_RANDOM: - fp = fopen( devname, "r+" ); - if ( fp == NULL ) - { - fp = fopen( devname, "w" ); - fclose( fp ); - fp = fopen( devname, "r+" ); - } - break; + bwb_error("in bwb_field(): AS statement not found"); + return bwb_zline(l); } + /* read the string variable name */ +#if 0 + adv_element(l->buffer, &(l->position), atbuf); /* get element */ +#endif + bwb_getvarname(l->buffer, atbuf, &(l->position)); + v = var_find(atbuf); - /* check for valid file opening */ - - if ( fp == NULL ) + if (v->type != STRING) { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Failed to open device <%s>", devname ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_dev ); -#endif - return bwb_zline( l ); + bwb_error("in bwb_field(): string variable name not found"); + return bwb_zline(l); } + /* check for overflow of record length */ - /* assign values to device table */ - - /* Random mode has a default record length (JBV) */ - if (mode == DEVMODE_RANDOM && rlen == -1) rlen = 128; - - dev_table[ req_devnumber ].mode = mode; - dev_table[ req_devnumber ].cfp = fp; - dev_table[ req_devnumber ].reclen = rlen; - dev_table[ req_devnumber ].next_record = 1; - dev_table[ req_devnumber ].loc = 0; - strcpy( dev_table[ req_devnumber ].filename, devname ); - - /* File length finding routine, added by JBV */ - fseek( dev_table[ req_devnumber ].cfp, 0, SEEK_END ); - dev_table[ req_devnumber ].lof = ftell( dev_table[ req_devnumber ].cfp ); - fseek( dev_table[ req_devnumber ].cfp, 0, SEEK_SET ); - - /* allocate a character buffer for random access */ - - if (( mode == DEVMODE_RANDOM ) && ( previous_buffer != TRUE )) + if ((current_pos + length) > dev_table[dev_number].width) { - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( dev_table[ req_devnumber ].buffer = CALLOC( rlen + 1, 1, "bwb_open" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_open(): failed to find memory for device buffer" ); -#else - bwb_error( err_getmem ); -#endif - return bwb_zline( l ); - } + bwb_error("in bwb_field(): record length exceeded"); + return bwb_zline(l); + } + /* set buffer */ - dio_flush( req_devnumber ); + b = var_findsval(v, v->array_pos); + b->sbuffer = dev_table[dev_number].buffer + current_pos; + b->length = (unsigned int) length; /* Was unsigned char + * (JBV 9/4/97) */ + b->rab = TRUE; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): allocated new random-access buffer" ); - bwb_debug( bwb_ebuf ); -#endif + current_pos += length; - } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_open(): file is open now; end of function" ); - bwb_debug( bwb_ebuf ); -#endif + /* eat up any remaining whitespace */ - /* return next line number in sequence */ + adv_ws(l->buffer, &(l->position)); - return bwb_zline( l ); } -/*************************************************************** + while (l->buffer[l->position] == ','); - FUNCTION: bwb_close() + /* return */ - DESCRIPTION: This function implements the BASIC CLOSE - command to close a stream for device input/output. + return bwb_zline(l); - SYNTAX: CLOSE [#]n [,[#]n...] +} +/*************************************************************** + + FUNCTION: bwb_lset() + + DESCRIPTION: This C function implements the BASIC + LSET command. + + SYNTAX: LSET string-variable$ = expression + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_close( struct bwb_line *l ) -#else struct bwb_line * -bwb_close( l ) - struct bwb_line *l; -#endif - { - struct exp_ese *e; - char atbuf[ MAXSTRINGSIZE + 1 ]; - int blanket_close; /* JBV */ - register int n; /* JBV */ - - blanket_close = -1; /* JBV */ - req_devnumber = 0; /* JBV */ - - /* loop to get device numbers to close */ - - do - { - - if ( l->buffer[ l->position ] == ',' && blanket_close == 0) - ++( l->position); /* JBV */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == '#') - { - ++( l->position ); - } - - adv_element( l->buffer, &( l->position ), atbuf ); - - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - - if ( e->type == STRING ) - { -#if PROG_ERRORS - bwb_error( "String where number was expected for device number" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - - /*-------------------------------------------------------------*/ - /* Added the following section for blanket close feature (JBV) */ - /*-------------------------------------------------------------*/ - if (blanket_close == -1) - if (strlen(atbuf) != 0) blanket_close = 0; - else blanket_close = 1; - - if (blanket_close == 0) req_devnumber = (int) exp_getnval( e ); - else - { - ++req_devnumber; - - /* Find the next device in use */ - for (n = req_devnumber; n < DEF_DEVICES; ++n) - { - req_devnumber = -1; - if (( dev_table[ n ].mode != DEVMODE_CLOSED ) && - ( dev_table[ n ].mode != DEVMODE_AVAILABLE ) ) - { - req_devnumber = n; - break; - } - } - if (req_devnumber == -1) break; /* Skidoo if no more to close */ - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_close(): requested device number <%d>", - req_devnumber ); - bwb_debug( bwb_ebuf ); -#endif - - /* check for valid requested device number */ - - if ( ( req_devnumber < 0 ) || ( req_devnumber >= DEF_DEVICES )) - { -#if PROG_ERRORS - bwb_error( "in bwb_close(): Requested device number is out if range." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } - - if (( dev_table[ req_devnumber ].mode == DEVMODE_CLOSED ) || - ( dev_table[ req_devnumber ].mode == DEVMODE_AVAILABLE ) ) - { -#if PROG_ERRORS - bwb_error( "in bwb_close(): Requested device number is not in use." ); -#else - bwb_error( err_devnum ); -#endif - - return bwb_zline( l ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_close(): closing device# <%d>", - req_devnumber ); - bwb_debug( bwb_ebuf ); -#endif - - /* attempt to close the file */ - - if ( fclose( dev_table[ req_devnumber ].cfp ) != 0 ) - { -#if PROG_ERRORS - bwb_error( "in bwb_close(): Failed to close the device" ); -#else - bwb_error( err_dev ); -#endif - return bwb_zline( l ); - } +bwb_LSET(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + return dio_lrset(l, FALSE); +} - /* mark the device in the table as unavailable */ - - dev_table[ req_devnumber ].mode = DEVMODE_CLOSED; +/*************************************************************** + + FUNCTION: bwb_rset() + + DESCRIPTION: This C function implements the BASIC + RSET command. + + SYNTAX: RSET string-variable$ = expression + +***************************************************************/ - /* Revised to FREE pass-thru call by JBV */ - if ( dev_table[ req_devnumber ].buffer != NULL ) - { - FREE( dev_table[ req_devnumber ].buffer, "bwb_close" ); /* JBV */ - dev_table[ req_devnumber ].buffer = NULL; /* JBV */ - } +struct bwb_line * +bwb_RSET(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + return dio_lrset(l, TRUE); +} - /* eat up any remaining whitespace */ +/*************************************************************** + + FUNCTION: dio_lrset() + + DESCRIPTION: This C function implements the BASIC + RSET and LSET commands. + +***************************************************************/ - adv_ws( l->buffer, &( l->position ) ); +static struct bwb_line * +dio_lrset(struct bwb_line * l, int rset) +{ + char varname[BasicNameLengthMax + 1]; + bstring *d, *s; + int *pp; + int n_params; + int p; + register int n, i; + int startpos; + struct exp_ese *e; + struct bwb_variable *v; + int pos; - } + bwx_DEBUG(__FUNCTION__); + /* find the variable name */ - while ( l->buffer[ l->position ] == ',' || blanket_close == 1); /* JBV */ + bwb_getvarname(l->buffer, varname, &(l->position)); + v = var_find(varname); - /* return next line number in sequence */ + if (v == NULL) + { + sprintf(bwb_ebuf, "in dio_lrset(): failed to find variable"); + bwb_error(bwb_ebuf); + } + if (v->type != STRING) + { + sprintf(bwb_ebuf, "in dio_lrset(): assignment must be to string variable"); + bwb_error(bwb_ebuf); + } + /* read subscripts */ - return bwb_zline( l ); + pos = 0; + if ((v->dimensions == 1) && (v->array_sizes[0] == 1)) + { + n_params = 1; + pp = &p; + pp[0] = dim_base; + } + else + { + dim_getparams(l->buffer, &(l->position), &n_params, &pp); } -#endif /* COMMON_CMDS */ + CURTASK exps[CURTASK expsc].pos_adv = pos; + for (n = 0; n < v->dimensions; ++n) + { + v->array_pos[n] = pp[n]; + } -/*************************************************************** + /* get bstring pointer */ - FUNCTION: bwb_chdir() + d = var_findsval(v, pp); - DESCRIPTION: This function implements the BASIC CHDIR - command to switch logged directories. + /* find equals sign */ - SYNTAX: CHDIR pathname$ + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] != '=') + { + sprintf(bwb_ebuf, "in dio_lrset(): failed to find equal sign"); + bwb_error(bwb_ebuf); + } + ++(l->position); + adv_ws(l->buffer, &(l->position)); -***************************************************************/ + /* read remainder of line to get value */ -#if UNIX_CMDS -#if ANSI_C -struct bwb_line * -bwb_chdir( struct bwb_line *l ) -#else -struct bwb_line * -bwb_chdir( l ) - struct bwb_line *l; -#endif + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) { - int r; - static int position; - struct exp_ese *e; - static char *atbuf; - static int init = FALSE; + return bwb_zline(l); + } + s = exp_getsval(e); - /* get memory for temporary buffers if necessary */ + /* set starting position */ - if ( init == FALSE ) + startpos = 0; + if (rset == TRUE) + { + if (s->length < d->length) { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( atbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "bwb_chdir" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_chdir(): failed to find memory for atbuf" ); -#else - bwb_error( err_getmem ); -#endif - } + startpos = d->length - s->length; } + } + /* write characters to new position */ - /* get the next element in atbuf */ - - adv_element( l->buffer, &( l->position ), atbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_chdir(): argument is <%s>", atbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* interpret the argument */ - - position = 0; - e = bwb_exp( atbuf, FALSE, &position ); - - if ( e->type != STRING ) - { - bwb_error( err_argstr ); - return bwb_zline( l ); - } - - /* try to chdir to the requested directory */ - - str_btoc( atbuf, &( e->sval ) ); - r = chdir( atbuf ); - - /* detect error */ - - if ( r == -1 ) - { - bwb_error( err_opsys ); - return bwb_zline( l ); - } - - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_rmdir() - - DESCRIPTION: This function implements the BASIC CHDIR - command to remove a subdirectory. - - SYNTAX: RMDIR pathname$ - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_rmdir( struct bwb_line *l ) -#else -struct bwb_line * -bwb_rmdir( l ) - struct bwb_line *l; -#endif - { - int r; - static int position; - struct exp_ese *e; - static char *atbuf; - static int init = FALSE; - - /* get memory for temporary buffers if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( atbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "bwb_rmdir" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in rmdir(): failed to find memory for atbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - /* get the next element in atbuf */ - - adv_element( l->buffer, &( l->position ), atbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_rmdir(): argument is <%s>", atbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* interpret the argument */ - - position = 0; - e = bwb_exp( atbuf, FALSE, &position ); - - if ( e->type != STRING ) - { - bwb_error( err_argstr ); - return bwb_zline( l ); - } - - /* try to remove the requested directory */ - - str_btoc( atbuf, &( e->sval ) ); - r = rmdir( atbuf ); - - /* detect error */ - - if ( r == -1 ) - { - bwb_error( err_opsys ); - } - - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_mkdir() - - DESCRIPTION: This function implements the BASIC MKDIR - command to create a new subdirectory. - - SYNTAX: MKDIR pathname$ - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_mkdir( struct bwb_line *l ) -#else -struct bwb_line * -bwb_mkdir( l ) - struct bwb_line *l; -#endif - { - int r; - static int position; - struct exp_ese *e; - static char *atbuf; - static int init = FALSE; - - /* get memory for temporary buffers if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( atbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "bwb_mkdir" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_mkdir(): failed to find memory for atbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - /* get the next element in atbuf */ - - adv_element( l->buffer, &( l->position ), atbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_mkdir(): argument is <%s>", atbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* interpret the argument */ - - position = 0; - e = bwb_exp( atbuf, FALSE, &position ); - - if ( e->type != STRING ) - { - bwb_error( err_argstr ); - return bwb_zline( l ); - } - - /* try to make the requested directory */ - - str_btoc( atbuf, &( e->sval ) ); -#if MKDIR_ONE_ARG - r = mkdir( atbuf ); -#else - r = mkdir( atbuf, PERMISSIONS ); -#endif - - /* detect error */ - - if ( r == -1 ) - { - bwb_error( err_opsys ); - } - - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_kill() - - DESCRIPTION: This function implements the BASIC KILL - command to erase a disk file. - - SYNTAX: KILL filename - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_kill( struct bwb_line *l ) -#else -struct bwb_line * -bwb_kill( l ) - struct bwb_line *l; -#endif - { - int r; - static int position; - struct exp_ese *e; - static char *atbuf; - static int init = FALSE; - - /* get memory for temporary buffers if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( atbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "bwb_kill" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_kill(): failed to find memory for atbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - /* get the next element in atbuf */ - - adv_element( l->buffer, &( l->position ), atbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_kill(): argument is <%s>", atbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* interpret the argument */ - - position = 0; - e = bwb_exp( atbuf, FALSE, &position ); - - if ( e->type != STRING ) - { - bwb_error( err_argstr ); - return bwb_zline( l ); - } - - /* try to delete the specified file */ - - str_btoc( atbuf, &( e->sval ) ); - r = remove( atbuf ); - - /* detect error */ - - if ( r == -1 ) - { - bwb_error( err_opsys ); - } - - return bwb_zline( l ); - - } - -#endif /* UNIX_CMDS */ - -#if COMMON_CMDS - -/*************************************************************** - - FUNCTION: bwb_name() - - DESCRIPTION: This function implements the BASIC NAME - command to rename a disk file. - - SYNTAX: NAME old_filename AS new_filename - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_name( struct bwb_line *l ) -#else -struct bwb_line * -bwb_name( l ) - struct bwb_line *l; -#endif - { - int r; - static int position; - struct exp_ese *e; - static char *atbuf; - static char *btbuf; - static int init = FALSE; - - /* get memory for temporary buffers if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( atbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "bwb_name" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_name(): failed to find memory for atbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( btbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "bwb_name" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_name(): failed to find memory for btbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - /* get the first argument in atbuf */ - - adv_element( l->buffer, &( l->position ), atbuf ); - - /* interpret the first argument */ - - position = 0; - e = bwb_exp( atbuf, FALSE, &position ); - - if ( e->type != STRING ) - { - bwb_error( err_argstr ); - return bwb_zline( l ); - } - - /* this argument must be copied back to atbuf, else the next - call to bwb_exp() will overwrite the structure to which e - refers */ - - str_btoc( atbuf, &( e->sval ) ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_name(): old name is <%s>", atbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* get the second argument in btbuf */ - - adv_element( l->buffer, &( l->position ), btbuf ); - bwb_strtoupper( btbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_name(): AS string is <%s>", btbuf ); - bwb_debug( bwb_ebuf ); -#endif - - if ( strcmp( btbuf, "AS" ) != 0 ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } - - /* get the third argument in btbuf */ - - adv_element( l->buffer, &( l->position ), btbuf ); - - /* interpret the third argument */ - - position = 0; - e = bwb_exp( btbuf, FALSE, &position ); - - if ( e->type != STRING ) - { - bwb_error( err_argstr ); - return bwb_zline( l ); - } - - str_btoc( btbuf, &( e->sval ) ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_name(): new name is <%s>", btbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* try to rename the file */ - - r = rename( atbuf, btbuf ); - - /* detect error */ - - if ( r != 0 ) - { - bwb_error( err_opsys ); - } - - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_field() - - DESCRIPTION: This C function implements the BASIC - FIELD command. - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_field( struct bwb_line *l ) -#else -struct bwb_line * -bwb_field( l ) - struct bwb_line *l; -#endif - { - int dev_number; - int length; - struct exp_ese *e; - struct bwb_variable *v; - bstring *b; - int current_pos; - char atbuf[ MAXSTRINGSIZE + 1 ]; - - current_pos = 0; - - /* first read device number */ - - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] =='#' ) - { - ++( l->position ); - } - - adv_element( l->buffer, &( l->position ), atbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_field(): device# buffer <%s>", atbuf ); - bwb_debug( bwb_ebuf ); -#endif - - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - - if ( e->type != NUMBER ) - { -#if PROG_ERRORS - bwb_error( "in bwb_field(): Number was expected for device number" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - - dev_number = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_field(): device <%d>", dev_number ); - bwb_debug( bwb_ebuf ); -#endif - - /* be sure that the requested device is open */ - - if (( dev_table[ dev_number ].mode == DEVMODE_CLOSED ) || - ( dev_table[ req_devnumber ].mode == DEVMODE_AVAILABLE ) ) - { -#if PROG_ERRORS - bwb_error( "in bwb_field(): Requested device number is not in use." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } - - /* loop to read variables */ - - do - { - - /* read the comma and advance beyond it */ - - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] ==',' ) - { - ++( l->position ); - } - - /* first find the size of the field */ - - adv_element( l->buffer, &( l->position ), atbuf ); /* get element */ - - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - - if ( e->type != NUMBER ) - { -#if PROG_ERRORS - bwb_error( "in bwb_field(): number value for field size not found" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - - length = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_field(): device <%d> length <%d> buf <%s>", - dev_number, length, &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - /* read the AS */ - - adv_element( l->buffer, &( l->position ), atbuf ); /* get element */ - bwb_strtoupper( atbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_field(): AS element <%s>", atbuf ); - bwb_debug( bwb_ebuf ); -#endif - - if ( strncmp( atbuf, "AS", 2 ) != 0 ) - { -#if PROG_ERRORS - bwb_error( "in bwb_field(): AS statement not found" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - - /* read the string variable name */ - - adv_element( l->buffer, &( l->position ), atbuf ); /* get element */ - v = var_find( atbuf ); - - if ( v->type != STRING ) - { -#if PROG_ERRORS - bwb_error( "in bwb_field(): string variable name not found" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_field(): device <%d> var <%s> length <%d>", - dev_number, v->name, length ); - bwb_debug( bwb_ebuf ); -#endif - - /* check for overflow of record length */ - - if ( ( current_pos + length ) > dev_table[ dev_number ].reclen ) - { -#if PROG_ERRORS - bwb_error( "in bwb_field(): record length exceeded" ); -#else - bwb_error( err_overflow ); -#endif - return bwb_zline( l ); - } - - /* set buffer */ - - b = var_findsval( v, v->array_pos ); - -#if DONTDOTHIS - if ( b->sbuffer != NULL ) - { - /* Revised to FREE pass-thru call by JBV */ - FREE( b->sbuffer, "bwb_field" ); - b->sbuffer = NULL; /* JBV */ - } -#endif - - b->sbuffer = dev_table[ dev_number ].buffer + current_pos; - b->length = (unsigned int) length; /* Was unsigned char (JBV 9/4/97) */ - b->rab = TRUE; - - current_pos += length; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_field(): buffer <%lXh> var <%s> buffer <%lXh>", - (long) dev_table[ dev_number ].buffer, v->name, (long) b->sbuffer ); - bwb_debug( bwb_ebuf ); -#endif - - /* eat up any remaining whitespace */ - - adv_ws( l->buffer, &( l->position ) ); - - } - - while ( l->buffer[ l->position ] == ',' ); - - /* return */ - - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_lset() - - DESCRIPTION: This C function implements the BASIC - LSET command. - - SYNTAX: LSET string-variable$ = expression - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_lset( struct bwb_line *l ) -#else -struct bwb_line * -bwb_lset( l ) - struct bwb_line *l; -#endif - { - return dio_lrset( l, FALSE ); - } - -/*************************************************************** - - FUNCTION: bwb_rset() - - DESCRIPTION: This C function implements the BASIC - RSET command. - - SYNTAX: RSET string-variable$ = expression - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_rset( struct bwb_line *l ) -#else -struct bwb_line * -bwb_rset( l ) - struct bwb_line *l; -#endif - { - return dio_lrset( l, TRUE ); - } - -/*************************************************************** - - FUNCTION: dio_lrset() - - DESCRIPTION: This C function implements the BASIC - RSET and LSET commands. - -***************************************************************/ - -#if ANSI_C -static struct bwb_line * -dio_lrset( struct bwb_line *l, int rset ) -#else -static struct bwb_line * -dio_lrset( l, rset ) - struct bwb_line *l; - int rset; -#endif - { - char varname[ MAXVARNAMESIZE + 1 ]; - bstring *d, *s; - int *pp; - int n_params; - int p; - register int n, i; - int startpos; - struct exp_ese *e; - - /* find the variable name */ - - bwb_getvarname( l->buffer, varname, &( l->position )); - - v = var_find( varname ); - - if ( v == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dio_lrset(): failed to find variable" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } - - if ( v->type != STRING ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dio_lrset(): assignment must be to string variable" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } - - /* read subscripts */ - - pos = 0; - if ( ( v->dimensions == 1 ) && ( v->array_sizes[ 0 ] == 1 )) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in dio_lrset(): variable <%s> has 1 dimension", - v->name ); - bwb_debug( bwb_ebuf ); -#endif - n_params = 1; - pp = &p; - pp[ 0 ] = dim_base; - } - else - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in dio_lrset(): variable <%s> has > 1 dimensions", - v->name ); - bwb_debug( bwb_ebuf ); -#endif - dim_getparams( l->buffer, &( l->position ), &n_params, &pp ); - } - - CURTASK exps[ CURTASK expsc ].pos_adv = pos; - for ( n = 0; n < v->dimensions; ++n ) - { - v->array_pos[ n ] = pp[ n ]; - } - - /* get bstring pointer */ - - d = var_findsval( v, pp ); - - /* find equals sign */ - - adv_ws( l->buffer, &( l->position )); - if ( l->buffer[ l->position ] != '=' ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dio_lrset(): failed to find equal sign" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } - ++( l->position ); - adv_ws( l->buffer, &( l->position )); - - /* read remainder of line to get value */ - - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - s = exp_getsval( e ); - - /* set starting position */ - - startpos = 0; - if ( rset == TRUE ) - { - if ( s->length < d->length ) - { - startpos = d->length - s->length; - } - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in dio_lrset(): startpos <%d> buffer <%lX>", - startpos, (long) d->sbuffer ); - bwb_debug( bwb_ebuf ); -#endif - - /* write characters to new position */ - - i = 0; - for ( n = startpos; ( i < (int) s->length ) && ( n < (int) d->length ); ++n ) - { - d->sbuffer[ n ] = s->sbuffer[ i ]; - ++i; - } + i = 0; + for (n = startpos; (i < (int) s->length) && (n < (int) d->length); ++n) + { + d->sbuffer[n] = s->sbuffer[i]; + ++i; + } /* return */ - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_get() - - DESCRIPTION: This C function implements the BASIC - GET command. - - SYNTAX: GET [#] device-number [, record-number] - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_get( struct bwb_line *l ) -#else -struct bwb_line * -bwb_get( l ) - struct bwb_line *l; -#endif - { - int dev_number; - int rec_number; - register int i; - struct exp_ese *e; - char atbuf[ MAXSTRINGSIZE + 1 ]; - long offset; /* JBV */ - - /* first read device number */ - - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] =='#' ) - { - ++( l->position ); - } - - adv_element( l->buffer, &( l->position ), atbuf ); - - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - - if ( e->type != NUMBER ) - { -#if PROG_ERRORS - bwb_error( "in bwb_get(): Number was expected for device number" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - - dev_number = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_get(): device <%d>", dev_number ); - bwb_debug( bwb_ebuf ); -#endif - - /* be sure that the requested device is open */ - - if ( ( dev_table[ dev_number ].mode == DEVMODE_CLOSED ) || - ( dev_table[ req_devnumber ].mode == DEVMODE_AVAILABLE ) ) - { -#if PROG_ERRORS - bwb_error( "in bwb_get(): Requested device number is not in use." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } - - /* see if there is a comma (and record number) */ - - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) /* yes, there is a comma */ - { - ++( l->position ); - - /* get the record number element */ - - adv_element( l->buffer, &( l->position ), atbuf ); - - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - rec_number = (int) exp_getnval( e ); - - } - - else /* no record number given */ - { - rec_number = dev_table[ dev_number ].next_record; - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_get(): record number <%d>", rec_number ); - bwb_debug( bwb_ebuf ); -#endif - - /* wind the c file up to the proper point */ - - /* Added by JBV */ - offset = (long) (( rec_number - 1 ) * dev_table[ dev_number ].reclen); - - if ( fseek( dev_table[ dev_number ].cfp, offset, SEEK_SET ) != 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_get(): fseek() failed, rec number <%d> offset <%ld>", - rec_number, (long) (( rec_number - 1 ) * dev_table[ dev_number ].reclen ) ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_dev ); -#endif - return bwb_zline( l ); - } - - /* read the requested bytes into the buffer */ - - dev_table[ dev_number ].loc = offset; /* Slight bug fix (JBV) */ - for ( i = 0; i < dev_table[ dev_number ].reclen; ++i ) - { - dev_table[ dev_number ].buffer[ i ] = - (char) fgetc( dev_table[ dev_number ].cfp ); - ++( dev_table[ dev_number ].loc ); - } - - /* increment (or reset) the current record */ - - dev_table[ dev_number ].next_record = rec_number + 1; - - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_put() - - DESCRIPTION: This C function implements the BASIC - PUT command. - - SYNTAX: PUT [#] device-number [, record-number] - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_put( struct bwb_line *l ) -#else -struct bwb_line * -bwb_put( l ) - struct bwb_line *l; -#endif - { - int dev_number; - int rec_number; - register int i; - struct exp_ese *e; - char atbuf[ MAXSTRINGSIZE + 1 ]; - long offset; /* JBV */ - - /* first read device number */ - - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] =='#' ) - { - ++( l->position ); - } - - adv_element( l->buffer, &( l->position ), atbuf ); -/* dev_number = atoi( atbuf ); */ /* Not quite right (JBV) */ - - /* Added by JBV */ - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - - if ( e->type != NUMBER ) - { -#if PROG_ERRORS - bwb_error( "in bwb_put(): Number was expected for device number" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - - dev_number = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_put(): device <%d>", dev_number ); - bwb_debug( bwb_ebuf ); -#endif - - /* be sure that the requested device is open */ - - if ( ( dev_table[ dev_number ].mode == DEVMODE_CLOSED ) || - ( dev_table[ req_devnumber ].mode == DEVMODE_AVAILABLE ) ) - { -#if PROG_ERRORS - bwb_error( "in bwb_put(): Requested device number is not in use." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } - - /* see if there is a comma (and record number) */ - - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) /* yes, there is a comma */ - { - ++( l->position ); - - /* get the record number element */ - - adv_element( l->buffer, &( l->position ), atbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_put(): rec no buffer <%s>", atbuf ); - bwb_debug( bwb_ebuf ); -#endif - - pos = 0; - e = bwb_exp( atbuf, FALSE, &pos ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_put(): return type <%c>", e->type ); - bwb_debug( bwb_ebuf ); -#endif - - rec_number = (int) exp_getnval( e ); - - } - - else /* no record number given */ - { - rec_number = dev_table[ dev_number ].next_record; - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_put(): record number <%d>", rec_number ); - bwb_debug( bwb_ebuf ); -#endif - - /* wind the c file up to the proper point */ - - /* Added by JBV */ - offset = (long) (( rec_number - 1 ) * dev_table[ dev_number ].reclen); - - if ( fseek( dev_table[ dev_number ].cfp, offset, SEEK_SET ) != 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_get(): fseek() failed, rec number <%d> offset <%ld>", - rec_number, (long) (( rec_number - 1 ) * dev_table[ dev_number ].reclen ) ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_dev ); -#endif - return bwb_zline( l ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_put(): ready to write to file, buffer <%lXh>", - (long) dev_table[ dev_number ].buffer ); - bwb_debug( bwb_ebuf ); - prn_xprintf( stderr, "Buffer: <" ); -#endif - - /* write the requested bytes to the file */ - - dev_table[ dev_number ].loc = offset; /* Slight bug fix (JBV) */ - for ( i = 0; i < dev_table[ dev_number ].reclen; ++i ) - { - fputc( dev_table[ dev_number ].buffer[ i ], - dev_table[ dev_number ].cfp ); -#if INTENSIVE_DEBUG - xputc( stderr, dev_table[ dev_number ].buffer[ i ] ); -#endif - ++( dev_table[ dev_number ].loc ); - } - -#if INTENSIVE_DEBUG - prn_xprintf( stderr, ">\n" ); - sprintf( bwb_ebuf, "in bwb_put(): write to file complete" ); - bwb_debug( bwb_ebuf ); -#endif - - /* flush the buffer */ - - dio_flush( dev_number ); - - /* increment (or reset) the current record */ - - dev_table[ dev_number ].next_record = rec_number + 1; - - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: dio_flush() - - DESCRIPTION: This C function flushes the random-access - buffer associated with file dev_number. - -***************************************************************/ - -#if ANSI_C -static int -dio_flush( int dev_number ) -#else -static int -dio_flush( dev_number ) - int dev_number; -#endif - { - register int n; - - if ( dev_table[ dev_number ].mode != DEVMODE_RANDOM ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dio_flush(): only random-access buffers can be flushed" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_dev ); -#endif - } - - /* fill buffer with blanks (or 'X' for test) */ - - for ( n = 0; n < dev_table[ req_devnumber ].reclen; ++n ) - { - dev_table[ req_devnumber ].buffer[ n ] = RANDOM_FILLCHAR; - } - - return TRUE; - - } - -#endif /* COMMON_CMDS */ + return bwb_zline(l); +} +/* EOF */ diff --git a/bwb_elx.c b/bwb_elx.c index 9a8a7e2..fae80d6 100644 --- a/bwb_elx.c +++ b/bwb_elx.c @@ -1,27 +1,27 @@ /**************************************************************** - + bwb_elx.c Parse Elements of Expressions for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -****************************************************************/ + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + +***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ @@ -29,1236 +29,1175 @@ /* */ /* Those additionally marked with "DD" were at the suggestion of */ /* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include -#include "bwbasic.h" -#include "bwb_mes.h" -/*************************************************************** +#include "bwbasic.h" - FUNCTION: exp_paren() - DESCRIPTION: This function interprets a parenthetical - expression, calling bwb_exp() (recursively) - to resolve the internal expression. +/*************************************************************** + + FUNCTION: exp_paren() + + DESCRIPTION: This function interprets a parenthetical + expression, calling bwb_exp() (recursively) + to resolve the internal expression. + ***************************************************************/ -#if ANSI_C int -exp_paren( char *expression ) -#else -int -exp_paren( expression ) - char *expression; -#endif - { +exp_paren(char *expression) +{ struct exp_ese *e; - int s_pos; /* position in build buffer */ - int loop; - int paren_level; + int s_pos; /* position in build buffer */ + int loop; + int paren_level; + + bwx_DEBUG(__FUNCTION__); /* find a string enclosed by parentheses */ - CURTASK exps[ CURTASK expsc ].pos_adv = 1; /* start beyond open paren */ + CURTASK exps[CURTASK expsc].pos_adv = 1; /* start beyond open + * paren */ s_pos = 0; loop = TRUE; paren_level = 1; - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; + CURTASK exps[CURTASK expsc].string[0] = '\0'; - while( loop == TRUE ) - { + while (loop == TRUE) + { /* check the current character */ - switch( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] ) - { - - case '\r': /* these tests added v1.11 */ - case '\n': - case '\0': - bwb_error( err_incomplete ); - loop = FALSE; - break; - - case '(': - ++paren_level; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - break; + switch (expression[CURTASK exps[CURTASK expsc].pos_adv]) + { + case '\0': + bwb_error(err_incomplete); + loop = FALSE; + break; - case ')': + case '(': + ++paren_level; + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + break; - --paren_level; - if ( paren_level == 0 ) - { - loop = FALSE; - } - else - { - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - } - break; + case ')': - case '\"': /* embedded string constant */ - ++CURTASK exps[ CURTASK expsc ].pos_adv; - while ( ( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] != '\"' ) - && ( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] != '\0' ) ) - { - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - ++CURTASK exps[ CURTASK expsc ].pos_adv; - } - break; + --paren_level; + if (paren_level == 0) + { + loop = FALSE; + } + else + { + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + } + break; - default: - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; + case '\"': /* embedded string constant */ + ++CURTASK exps[CURTASK expsc].pos_adv; + while ((expression[CURTASK exps[CURTASK expsc].pos_adv] != '\"') + && (expression[CURTASK exps[CURTASK expsc].pos_adv] != '\0')) + { + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - break; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + ++CURTASK exps[CURTASK expsc].pos_adv; } + break; + + default: + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + break; + } /* advance the counter */ - ++CURTASK exps[ CURTASK expsc ].pos_adv; + ++CURTASK exps[CURTASK expsc].pos_adv; - } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_paren() found internal string <%s>", - CURTASK exps[ CURTASK expsc ].string ); - bwb_debug( bwb_ebuf ); -#endif /* call bwb_exp() recursively to interpret this expression */ - CURTASK exps[ CURTASK expsc ].rec_pos = 0; - e = bwb_exp( CURTASK exps[ CURTASK expsc ].string, FALSE, - &( CURTASK exps[ CURTASK expsc ].rec_pos ) ); + CURTASK exps[CURTASK expsc].rec_pos = 0; + e = bwb_exp(CURTASK exps[CURTASK expsc].string, FALSE, + &(CURTASK exps[CURTASK expsc].rec_pos)); /* assign operation and value at this level */ - CURTASK exps[ CURTASK expsc ].type = e->type; + CURTASK exps[CURTASK expsc].type = e->type; - switch ( e->type ) - { - case STRING: - CURTASK exps[ CURTASK expsc ].operation = CONST_STRING; - str_btob( exp_getsval( &( CURTASK exps[ CURTASK expsc ] )), exp_getsval( e ) ); - break; - default: - CURTASK exps[ CURTASK expsc ].operation = NUMBER; - CURTASK exps[ CURTASK expsc ].nval = exp_getnval( e ); - break; - } + switch (e->type) + { + case STRING: + CURTASK exps[CURTASK expsc].operation = CONST_STRING; + str_btob(exp_getsval(&(CURTASK exps[CURTASK expsc])), exp_getsval(e)); + break; + default: + CURTASK exps[CURTASK expsc].operation = NUMBER; + CURTASK exps[CURTASK expsc].nval = exp_getnval(e); + break; + } return TRUE; - } +} /*************************************************************** - - FUNCTION: exp_strconst() - - DESCRIPTION: This function interprets a string - constant. - + + FUNCTION: exp_strconst() + + DESCRIPTION: This function interprets a string + constant. + ***************************************************************/ -#if ANSI_C int -exp_strconst( char *expression ) -#else -int -exp_strconst( expression ) - char *expression; -#endif - { - int e_pos, s_pos; +exp_strconst(char *expression) +{ + int e_pos, s_pos; + + bwx_DEBUG(__FUNCTION__); /* assign values to structure */ - CURTASK exps[ CURTASK expsc ].type = STRING; - CURTASK exps[ CURTASK expsc ].operation = CONST_STRING; + CURTASK exps[CURTASK expsc].type = STRING; + CURTASK exps[CURTASK expsc].operation = CONST_STRING; /* set counters */ s_pos = 0; - CURTASK exps[ CURTASK expsc ].pos_adv = e_pos = 1; - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; + CURTASK exps[CURTASK expsc].pos_adv = e_pos = 1; + CURTASK exps[CURTASK expsc].string[0] = '\0'; - /* read the string up until the next double quotation mark */ + /* read the string up until the next quotation mark */ - /* While yer at it, check for a null terminator too (JBV, found by DD) */ - while(( expression[ e_pos ] != '\"') && ( expression[ e_pos ] != '\0' )) - { - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = expression[ e_pos ]; + /* While yer at it, check for a null terminator too (JBV, found by + * DD) */ + while ((expression[e_pos] != '\"') && (expression[e_pos] != '\0')) + { + CURTASK exps[CURTASK expsc].string[s_pos] = expression[e_pos]; ++e_pos; ++s_pos; - ++CURTASK exps[ CURTASK expsc ].pos_adv; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - if ( s_pos >= ( MAXSTRINGSIZE - 1 ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "string <%s> exceeds maximum size (%d) for string constant.", - expression, MAXSTRINGSIZE ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_overflow ); -#endif + ++CURTASK exps[CURTASK expsc].pos_adv; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + if (s_pos > BasicStringLengthMax) + { + sprintf(bwb_ebuf, "string <%s> exceeds maximum size (%d) for string constant.", + expression, BasicStringLengthMax); + bwb_error(bwb_ebuf); return OP_NULL; - } } + } /* now write string over to bstring */ - str_ctob( &( CURTASK exps[ CURTASK expsc ].sval ), CURTASK exps[ CURTASK expsc ].string ); + str_ctob(&(CURTASK exps[CURTASK expsc].sval), CURTASK exps[CURTASK expsc].string); - /* advance past last double quotation mark */ + /* advance past last quotation mark */ /*-------------------------------------------------------------*/ /* Of course, it doesn't hurt to make sure it's really a quote */ /* (JBV, found by DD) */ /*-------------------------------------------------------------*/ - if ( expression[ e_pos ] == '\"' ) ++CURTASK exps[ CURTASK expsc ].pos_adv; + if (expression[e_pos] == '\"') + ++CURTASK exps[CURTASK expsc].pos_adv; /* return */ return TRUE; - } +} /*************************************************************** - - FUNCTION: exp_numconst() - - DESCRIPTION: This function interprets a numerical - constant. - + + FUNCTION: exp_numconst() + + DESCRIPTION: This function interprets a numerical + constant. + ***************************************************************/ -#if ANSI_C int -exp_numconst( char *expression ) -#else -int -exp_numconst( expression ) - char *expression; -#endif - { - int base; /* numerical base for the constant */ - static struct bwb_variable mantissa; /* mantissa of floating-point number */ - static int init = FALSE; /* is mantissa variable initialized? */ - int exponent; /* exponent for floating point number */ - int man_start; /* starting point of mantissa */ - int s_pos; /* position in build string */ - int build_loop; - int need_pm; - int i; - bnumber d; -#if CHECK_RECURSION - static int in_use = FALSE; /* boolean: is function in use? */ - - /* check recursion status */ - - if ( in_use == TRUE ) - { - sprintf( bwb_ebuf, "Recursion error in bwb_exp.c:exp_findop(): recursion violation." ); - bwb_error( bwb_ebuf ); - } - - /* reset recursion status indicator */ - - else - { - in_use = TRUE; - } -#endif +exp_numconst(char *expression) +{ + int base; /* numerical base for the constant */ + static struct bwb_variable mantissa; /* mantissa of floating-point + * number */ + static int init = FALSE; /* is mantissa variable initialized? */ + int exponent; /* exponent for floating point number */ + int man_start; /* starting point of mantissa */ + int s_pos; /* position in build string */ + int build_loop; + int need_pm; + unsigned int u; + + bwx_DEBUG(__FUNCTION__); /* initialize the variable if necessary */ -#if INTENSIVE_DEBUG - strcpy( mantissa.name, "(mantissa)" ); -#endif - if ( init == FALSE ) - { + if (init == FALSE) + { init = TRUE; - var_make( &mantissa, NUMBER ); - } - + var_make(&mantissa, NUMBER); + } /* be sure that the array_pos[ 0 ] for mantissa is set to dim_base; - this is necessary because mantissa might be used before dim_base - is set */ + * this is necessary because mantissa might be used before dim_base + * is set */ - mantissa.array_pos[ 0 ] = dim_base; + mantissa.array_pos[0] = dim_base; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_numconst(): received <%s>, eval <%c>", - expression, expression[ 0 ] ); - bwb_debug( bwb_ebuf ); -#endif need_pm = FALSE; - CURTASK exps[ CURTASK expsc ].nval = (bnumber) 0; + CURTASK exps[CURTASK expsc].nval = 0; - /* check the first character(s) to determine numerical base - and starting point of the mantissa */ + /* check the first character(s) to determine numerical base and + * starting point of the mantissa */ - switch( expression[ 0 ] ) + switch (expression[0]) + { + case '-': + case '+': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '.': + base = 10; /* decimal constant */ + man_start = 0; /* starts at position 0 */ + need_pm = FALSE; + break; + case '&': /* hex or octal constant */ + if ((expression[1] == 'H') || (expression[1] == 'h')) { - case '-': - case '+': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '.': - base = 10; /* decimal constant */ - man_start = 0; /* starts at position 0 */ - need_pm = FALSE; - break; - case '&': /* hex or octal constant */ - if ( ( expression[ 1 ] == 'H' ) || ( expression[ 1 ] == 'h' )) - { - base = 16; /* hexadecimal constant */ - man_start = 2; /* starts at position 2 */ - } + base = 16; /* hexadecimal constant */ + man_start = 2; /* starts at position 2 */ + } + else + { + base = 8; /* octal constant */ + if ((expression[1] == 'O') || (expression[1] == 'o')) + { + man_start = 2; /* starts at position 2 */ + } else - { - base = 8; /* octal constant */ - if ( ( expression[ 1 ] == 'O' ) || ( expression[ 1 ] == 'o' )) - { - man_start = 2; /* starts at position 2 */ - } - else - { - man_start = 1; /* starts at position 1 */ - } - } - break; - default: - -#if PROG_ERRORS - sprintf( bwb_ebuf, "expression <%s> is not a numerical constant.", - expression ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return OP_NULL; + { + man_start = 1; /* starts at position 1 */ + } } + break; + default: + + sprintf(bwb_ebuf, "expression <%s> is not a numerical constant.", + expression); + bwb_error(bwb_ebuf); + return OP_NULL; + } /* now build the mantissa according to the numerical base */ - switch( base ) - { + switch (base) + { - case 10: /* decimal constant */ + case 10: /* decimal constant */ - /* initialize counters */ + /* initialize counters */ - CURTASK exps[ CURTASK expsc ].pos_adv = man_start; - CURTASK exps[ CURTASK expsc ].type = NUMBER; - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; - s_pos = 0; - exponent = OP_NULL; - build_loop = TRUE; + CURTASK exps[CURTASK expsc].pos_adv = man_start; + CURTASK exps[CURTASK expsc].type = NUMBER; + CURTASK exps[CURTASK expsc].string[0] = '\0'; + s_pos = 0; + exponent = OP_NULL; + build_loop = TRUE; - /* loop to build the string */ + /* loop to build the string */ - while ( build_loop == TRUE ) - { - switch( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] ) - { - case '-': /* prefixed plus or minus */ - case '+': - - /* in the first position, a plus or minus sign can - be added to the beginning of the string to be - scanned */ - - if ( CURTASK exps[ CURTASK expsc ].pos_adv == man_start ) - { - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - } - - /* but in any other position, the plus or minus sign - must be taken as an operator and thus as terminating - the string to be scanned */ - - else - { - build_loop = FALSE; - } - break; - case '.': /* note at least single precision */ - case '0': /* or ordinary digit */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - break; - - case '#': /* Microsoft-type precision indicator; ignored but terminates */ - case '!': /* Microsoft-type precision indicator; ignored but terminates */ - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ - CURTASK exps[ CURTASK expsc ].type = NUMBER; - exponent = FALSE; - build_loop = FALSE; - break; - - case 'E': /* exponential, single precision */ - case 'e': - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ - CURTASK exps[ CURTASK expsc ].type = NUMBER; - exponent = TRUE; - build_loop = FALSE; - break; - - case 'D': /* exponential, double precision */ - case 'd': - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ - CURTASK exps[ CURTASK expsc ].type = NUMBER; - exponent = TRUE; - build_loop = FALSE; - break; + while (build_loop == TRUE) + { + switch (expression[CURTASK exps[CURTASK expsc].pos_adv]) + { + case '-': /* prefixed plus or minus */ + case '+': - default: /* anything else, terminate */ - build_loop = FALSE; - break; - } + /* in the first position, a plus or minus + * sign can be added to the beginning of the + * string to be scanned */ + if (CURTASK exps[CURTASK expsc].pos_adv == man_start) + { + CURTASK exps[CURTASK expsc].string[s_pos] = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; } + /* but in any other position, the plus or + * minus sign must be taken as an operator + * and thus as terminating the string to be + * scanned */ - /* assign the value to the mantissa variable */ - -#if NUMBER_DOUBLE - sscanf( CURTASK exps[ CURTASK expsc ].string, "%lf", - var_findnval( &mantissa, mantissa.array_pos )); -#else - sscanf( CURTASK exps[ CURTASK expsc ].string, "%f", - var_findnval( &mantissa, mantissa.array_pos )); -#endif - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_numconst(): read mantissa, string <%s> val <%lf>", - CURTASK exps[ CURTASK expsc ].string, var_getnval( &mantissa ) ); - bwb_debug( bwb_ebuf ); -#endif - - /* test if integer bounds have been exceeded */ - - if ( CURTASK exps[ CURTASK expsc ].type == NUMBER ) + else { - i = (int) var_getnval( &mantissa ); - d = (bnumber) i; - if ( d != var_getnval( &mantissa )) - { - CURTASK exps[ CURTASK expsc ].type = NUMBER; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_numconst(): integer bounds violated, promote to NUMBER" ); - bwb_debug( bwb_ebuf ); -#endif - } + build_loop = FALSE; } + break; + case '.': /* note at least single precision */ + case '0': /* or ordinary digit */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + CURTASK exps[CURTASK expsc].string[s_pos] = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + break; - /* read the exponent if there is one */ + case BasicDoubleSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicSingleSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicCurrencySuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicLongSuffix: /* Microsoft-type precision + * indicator; ignored but + * terminates */ + case BasicIntegerSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ + CURTASK exps[CURTASK expsc].type = NUMBER; + exponent = FALSE; + build_loop = FALSE; + break; - if ( exponent == TRUE ) - { + case 'E': /* exponential, single precision */ + case 'e': + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ + CURTASK exps[CURTASK expsc].type = NUMBER; + exponent = TRUE; + build_loop = FALSE; + break; + + case 'D': /* exponential, double precision */ + case 'd': + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ + CURTASK exps[CURTASK expsc].type = NUMBER; + exponent = TRUE; + build_loop = FALSE; + break; + + default: /* anything else, terminate */ + build_loop = FALSE; + break; + } - /* allow a plus or minus once at the beginning */ + } - need_pm = TRUE; + /* assign the value to the mantissa variable */ - /* initialize counters */ + sscanf(CURTASK exps[CURTASK expsc].string, BasicNumberScanFormat, + var_findnval(&mantissa, mantissa.array_pos)); - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; - s_pos = 0; - build_loop = TRUE; - /* loop to build the string */ + /* test if integer bounds have been exceeded */ - while ( build_loop == TRUE ) - { - switch( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] ) - { - case '-': /* prefixed plus or minus */ - case '+': - - if ( need_pm == TRUE ) /* only allow once */ - { - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - } - else - { - build_loop = FALSE; - } - break; - - case '0': /* or ordinary digit */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - need_pm = FALSE; - break; - - default: /* anything else, terminate */ - build_loop = FALSE; - break; - } - - } /* end of build loop for exponent */ - - /* assign the value to the user variable */ - -#if NUMBER_DOUBLE - sscanf( CURTASK exps[ CURTASK expsc ].string, "%lf", - &( CURTASK exps[ CURTASK expsc ].nval ) ); -#else - sscanf( CURTASK exps[ CURTASK expsc ].string, "%f", - &( CURTASK exps[ CURTASK expsc ].nval ) ); -#endif - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_numconst(): exponent is <%d>", - (int) CURTASK exps[ CURTASK expsc ].nval ); - bwb_debug( bwb_ebuf ); -#endif - - } /* end of exponent search */ - - if ( CURTASK exps[ CURTASK expsc ].nval == (bnumber) 0 ) - { - CURTASK exps[ CURTASK expsc ].nval = var_getnval( &mantissa ); - } - else - { - CURTASK exps[ CURTASK expsc ].nval = var_getnval( &mantissa ) - * pow( (bnumber) 10.0, (bnumber) CURTASK exps[ CURTASK expsc ].nval ); - } + if (CURTASK exps[CURTASK expsc].type == NUMBER) + { + int i; + BasicNumberType d; - break; + i = (int) var_getnval(&mantissa); + d = (BasicNumberType) i; + if (d != var_getnval(&mantissa)) + { + CURTASK exps[CURTASK expsc].type = NUMBER; + } + } + /* read the exponent if there is one */ + + if (exponent == TRUE) + { + + /* allow a plus or minus once at the beginning */ - case 8: /* octal constant */ + need_pm = TRUE; /* initialize counters */ - CURTASK exps[ CURTASK expsc ].pos_adv = man_start; - CURTASK exps[ CURTASK expsc ].type = NUMBER; - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; + CURTASK exps[CURTASK expsc].string[0] = '\0'; s_pos = 0; - exponent = OP_NULL; build_loop = TRUE; /* loop to build the string */ - while ( build_loop == TRUE ) + while (build_loop == TRUE) + { + switch (expression[CURTASK exps[CURTASK expsc].pos_adv]) { - switch( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] ) + case '-': /* prefixed plus or minus */ + case '+': + + if (need_pm == TRUE) /* only allow once */ { - case '0': /* or ordinary digit */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ + CURTASK exps[CURTASK expsc].string[s_pos] = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - break; - - default: /* anything else, terminate */ + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + } + else + { build_loop = FALSE; - break; } + break; + + case '0': /* or ordinary digit */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + + CURTASK exps[CURTASK expsc].string[s_pos] = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + need_pm = FALSE; + break; + default: /* anything else, terminate */ + build_loop = FALSE; + break; } - /* now scan the string to determine the number */ + } /* end of build loop for exponent */ - sscanf( CURTASK exps[ CURTASK expsc ].string, "%o", &i ); - CURTASK exps[ CURTASK expsc ].nval = (bnumber) i; + /* assign the value to the user variable */ - break; + sscanf(CURTASK exps[CURTASK expsc].string, BasicNumberScanFormat, + &(CURTASK exps[CURTASK expsc].nval)); - case 16: /* hexadecimal constant */ - /* initialize counters */ + } /* end of exponent search */ + if (CURTASK exps[CURTASK expsc].nval == 0) + { + CURTASK exps[CURTASK expsc].nval = var_getnval(&mantissa); + } + else + { + CURTASK exps[CURTASK expsc].nval = var_getnval(&mantissa) + * pow(10.0, CURTASK exps[CURTASK expsc].nval); + } - CURTASK exps[ CURTASK expsc ].pos_adv = man_start; - CURTASK exps[ CURTASK expsc ].type = NUMBER; - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; - s_pos = 0; - exponent = OP_NULL; - build_loop = TRUE; + break; - /* loop to build the string */ + case 8: /* octal constant */ - while ( build_loop == TRUE ) - { - switch( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] ) - { - case '0': /* or ordinary digit */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'a': - case 'B': - case 'b': - case 'C': - case 'c': - case 'D': - case 'd': - case 'E': - case 'e': - case 'F': /* Don't forget these! (JBV) */ - case 'f': - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance to next character */ - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - break; + /* initialize counters */ - default: /* anything else, terminate */ - build_loop = FALSE; - break; - } + CURTASK exps[CURTASK expsc].pos_adv = man_start; + CURTASK exps[CURTASK expsc].type = NUMBER; + CURTASK exps[CURTASK expsc].string[0] = '\0'; + s_pos = 0; + exponent = OP_NULL; + build_loop = TRUE; - } + /* loop to build the string */ + + while (build_loop == TRUE) + { + switch (expression[CURTASK exps[CURTASK expsc].pos_adv]) + { + case '0': /* or ordinary digit */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + CURTASK exps[CURTASK expsc].string[s_pos] = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + break; - /* now scan the string to determine the number */ + default: /* anything else, terminate */ + build_loop = FALSE; + break; + } - sscanf( CURTASK exps[ CURTASK expsc ].string, "%x", &i ); - CURTASK exps[ CURTASK expsc ].nval = (bnumber) i; - break; } - /* note that the operation at this level is now a determined NUMBER */ + /* now scan the string to determine the number */ - CURTASK exps[ CURTASK expsc ].operation = NUMBER; + sscanf(CURTASK exps[CURTASK expsc].string, "%o", &u); + CURTASK exps[CURTASK expsc].nval = u; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_numconst(): exit level <%d> precision <%c> value <%lf>", - CURTASK expsc, CURTASK exps[ CURTASK expsc ].type, exp_getnval( &( CURTASK exps[ CURTASK expsc ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif + break; -#if CHECK_RECURSION - in_use = FALSE; -#endif + case 16: /* hexadecimal constant */ - return TRUE; + /* initialize counters */ + + CURTASK exps[CURTASK expsc].pos_adv = man_start; + CURTASK exps[CURTASK expsc].type = NUMBER; + CURTASK exps[CURTASK expsc].string[0] = '\0'; + s_pos = 0; + exponent = OP_NULL; + build_loop = TRUE; + + /* loop to build the string */ + + while (build_loop == TRUE) + { + switch (expression[CURTASK exps[CURTASK expsc].pos_adv]) + { + case '0': /* or ordinary digit */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'a': + case 'B': + case 'b': + case 'C': + case 'c': + case 'D': + case 'd': + case 'E': + case 'e': + case 'F': /* Don't forget these! (JBV) */ + case 'f': + CURTASK exps[CURTASK expsc].string[s_pos] = expression[CURTASK exps[CURTASK expsc].pos_adv]; + + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance to next + * character */ + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + break; + + default: /* anything else, terminate */ + build_loop = FALSE; + break; + } + + } + /* now scan the string to determine the number */ + + sscanf(CURTASK exps[CURTASK expsc].string, "%x", &u); + CURTASK exps[CURTASK expsc].nval = u; + break; } -/*************************************************************** + /* note that the operation at this level is now a determined NUMBER */ - FUNCTION: exp_function() + CURTASK exps[CURTASK expsc].operation = NUMBER; - DESCRIPTION: This function interprets a function, - calling bwb_exp() (recursively) to resolve any - arguments to the function. + return TRUE; + +} + +/*************************************************************** + + FUNCTION: exp_function() + + DESCRIPTION: This function interprets a function, + calling bwb_exp() (recursively) to resolve any + parameters to the function. + ***************************************************************/ -#if ANSI_C -int -exp_function( char *expression ) -#else -int -exp_function( expression ) - char *expression; -#endif +struct bwb_variable * +var_chain(struct bwb_variable * argv) +{ + /* create a variable chain */ + struct bwb_variable *argn; + + bwx_DEBUG(__FUNCTION__); + + if (argv == NULL) + { + /* we are the first variable in the chain */ + argn = (struct bwb_variable *) CALLOC(1, sizeof(struct bwb_variable), "exp_function"); + } + else { + /* find the end of the chain */ + for (argn = argv; argn->next != NULL; argn = argn->next); + /* add ourself to the end */ + argn->next = (struct bwb_variable *) CALLOC(1, sizeof(struct bwb_variable), "exp_function"); + argn = argn->next; + } + argn->next = NULL; + /* return pointer to the variable just created */ + return argn; +} + + +int +exp_function(char *expression) +{ struct exp_ese *e; - int s_pos; /* position in build buffer */ - int loop; - int paren_level; - int n_args; - struct bwb_variable *v; - /* struct bwb_variable argv[ MAX_FARGS ]; */ /* Removed by JBV */ + int s_pos; /* position in build buffer */ + int loop; + int paren_level; + int n_args; + /* struct bwb_variable argv[ MAX_FARGS ]; *//* Removed by JBV */ struct bwb_variable *argv; /* Added by JBV */ - bstring *b; - register int i, j; /* JBV */ -#if INTENSIVE_DEBUG - char tbuf[ MAXSTRINGSIZE + 1 ]; - - sprintf( bwb_ebuf, "in exp_function(): entered function, expression <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif - - /*-----------------------------------------------------------*/ - /* Added by JBV */ - /* Required because adding a simple "static" modifier in the */ - /* argv declaration doesn't work for recursive calls! */ - /*-----------------------------------------------------------*/ - if ( ( argv = (struct bwb_variable *) CALLOC( MAX_FARGS, - sizeof( struct bwb_variable ), "exp_function" )) == NULL ) - { - bwb_error( err_getmem ); - return OP_ERROR; - } + struct bwb_variable *argn; + bstring *b; + + bwx_DEBUG(__FUNCTION__); + + + argv = var_chain(NULL); /* RETURN variable */ + argn = NULL; /* assign pointers to argument stack */ /* get the function name */ - exp_getvfname( expression, CURTASK exps[ CURTASK expsc ].string ); + exp_getvfname(expression, CURTASK exps[CURTASK expsc].string); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_function(): name is <%s>.", - CURTASK exps[ CURTASK expsc ].string ); - bwb_debug( bwb_ebuf ); -#endif /* now find the function itself */ - CURTASK exps[ CURTASK expsc ].function = fnc_find( CURTASK exps[ CURTASK expsc ].string ); + CURTASK exps[CURTASK expsc].function = fnc_find(CURTASK exps[CURTASK expsc].string); /* check to see if it is valid */ - if ( CURTASK exps[ CURTASK expsc ].function == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Failed to find function <%s>.", - CURTASK exps[ CURTASK expsc ].string ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_uf ); -#endif + if (CURTASK exps[CURTASK expsc].function == NULL) + { + sprintf(bwb_ebuf, "Failed to find function <%s>.", + CURTASK exps[CURTASK expsc].string); + bwb_error(bwb_ebuf); return OP_ERROR; - } - + } /* note that this level is a function */ - CURTASK exps[ CURTASK expsc ].operation = FUNCTION; - CURTASK exps[ CURTASK expsc ].pos_adv = strlen( CURTASK exps[ CURTASK expsc ].string ); + CURTASK exps[CURTASK expsc].operation = FUNCTION; + CURTASK exps[CURTASK expsc].pos_adv = strlen(CURTASK exps[CURTASK expsc].string); /* check for begin parenthesis */ loop = TRUE; - while( loop == TRUE ) + while (loop == TRUE) + { + switch (expression[CURTASK exps[CURTASK expsc].pos_adv]) { - switch( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] ) - { - case ' ': /* whitespace */ - case '\t': - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance */ - break; + case ' ': /* whitespace */ + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance */ + break; - case '(': /* begin paren */ + case '(': /* begin paren */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_function(): found begin parenthesis." ); - bwb_debug( bwb_ebuf ); -#endif - ++CURTASK exps[ CURTASK expsc ].pos_adv; /* advance beyond it */ - paren_level = 1; /* set paren_level */ - loop = FALSE; /* and break out */ - break; + ++CURTASK exps[CURTASK expsc].pos_adv; /* advance beyond it */ + paren_level = 1; /* set paren_level */ + loop = FALSE; /* and break out */ + break; - default: /* anything else */ - loop = FALSE; - paren_level = 0; /* do not look for arguments */ - break; - } + default: /* anything else */ + loop = FALSE; + paren_level = 0; /* do not look for parameters */ + break; } + } - /* find arguments within parentheses */ - /* for each argument, find a string ending with ',' or with end parenthesis */ + /* find parameters within parentheses */ + /* for each argument, find a string ending with ',' or with end + * parenthesis */ n_args = 0; s_pos = 0; - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; + CURTASK exps[CURTASK expsc].string[0] = '\0'; - while( paren_level > 0 ) - { + while (paren_level > 0) + { /* check the current character */ - switch( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] ) - { + switch (expression[CURTASK exps[CURTASK expsc].pos_adv]) + { - case ',': /* end of an argument */ + case ',': /* end of an argument */ - if ( paren_level == 1 ) /* ignore ',' within parentheses */ - { - - /* call bwb_exp() recursively to resolve the argument */ + if (paren_level == 1) /* ignore ',' within + * parentheses */ + { - if ( exp_validarg( CURTASK exps[ CURTASK expsc ].string ) == TRUE ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, - "in exp_function(): valid argument (not last)." ); - bwb_debug( bwb_ebuf ); -#endif + /* call bwb_exp() recursively to resolve the + * argument */ - CURTASK exps[ CURTASK expsc ].rec_pos = 0; - e = bwb_exp( CURTASK exps[ CURTASK expsc ].string, FALSE, - &( CURTASK exps[ CURTASK expsc ].rec_pos ) ); + if (exp_validarg(CURTASK exps[CURTASK expsc].string) == TRUE) + { - /* assign operation and value at this level */ + CURTASK exps[CURTASK expsc].rec_pos = 0; + e = bwb_exp(CURTASK exps[CURTASK expsc].string, FALSE, + &(CURTASK exps[CURTASK expsc].rec_pos)); - var_make( &( argv[ n_args ] ), e->type ); + /* assign operation and value at this + * level */ + argn = var_chain(argv); + /* 'argn' is the vaiable to use */ + var_make(argn, e->type); + switch (argn->type) + { + case NUMBER: + *var_findnval(argn, argn->array_pos) + = exp_getnval(e); + break; + case STRING: + str_btob(var_findsval(argn, + argn->array_pos), exp_getsval(e)); + break; + } + ++n_args; /* increment number of + * parameters */ - switch( argv[ n_args ].type ) - { - case NUMBER: - * var_findnval( &( argv[ n_args ] ), argv[ n_args ].array_pos ) - = exp_getnval( e ); - break; - case STRING: - str_btob( var_findsval( &( argv[ n_args ] ), - argv[ n_args ].array_pos ), exp_getsval( e ) ); - break; - } + } + s_pos = 0; /* reset counter */ + CURTASK exps[CURTASK expsc].string[0] = '\0'; + } + else + { + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + } + break; - ++n_args; /* increment number of arguments */ + case '(': + ++paren_level; + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + break; - } + case ')': + --paren_level; - s_pos = 0; /* reset counter */ - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; - } - else - { - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - } - break; + if (paren_level == 0) + { - case '(': - ++paren_level; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - break; - case ')': - --paren_level; + /* call bwb_exp() recursively to resolve the + * argument */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, - "in exp_function(): hit close parenthesis." ); - bwb_debug( bwb_ebuf ); -#endif + if (exp_validarg(CURTASK exps[CURTASK expsc].string) == TRUE) + { - if ( paren_level == 0 ) - { + CURTASK exps[CURTASK expsc].rec_pos = 0; + e = bwb_exp(CURTASK exps[CURTASK expsc].string, FALSE, + &(CURTASK exps[CURTASK expsc].rec_pos)); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, - "in exp_function(): paren level 0." ); - bwb_debug( bwb_ebuf ); -#endif - - /* call bwb_exp() recursively to resolve the argument */ - - if ( exp_validarg( CURTASK exps[ CURTASK expsc ].string ) == TRUE ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, - "in exp_function(): valid argument (last)." ); - bwb_debug( bwb_ebuf ); -#endif - - CURTASK exps[ CURTASK expsc ].rec_pos = 0; - e = bwb_exp( CURTASK exps[ CURTASK expsc ].string, FALSE, - &( CURTASK exps[ CURTASK expsc ].rec_pos ) ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, - "in exp_function(): return from bwb_exp(), last arg, type <%c> op <%d>", - e->type, e->operation ); - bwb_debug( bwb_ebuf ); -#endif - - /* assign operation and value at this level */ - - var_make( &( argv[ n_args ] ), e->type ); - - switch( argv[ n_args ].type ) - { - case NUMBER: - * var_findnval( &( argv[ n_args ] ), argv[ n_args ].array_pos ) - = exp_getnval( e ); - break; - case STRING: - str_btob( var_findsval( &( argv[ n_args ] ), - argv[ n_args ].array_pos ), exp_getsval( e ) ); - break; - } - - ++n_args; /* increment number of arguments */ - - } - - s_pos = 0; /* reset counter */ - CURTASK exps[ CURTASK expsc ].string[ 0 ] = '\0'; - } - else + /* assign operation and value at this + * level */ + argn = var_chain(argv); + /* 'argn' is the vaiable to use */ + var_make(argn, e->type); + switch (argn->type) { - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; + case NUMBER: + *var_findnval(argn, argn->array_pos) + = exp_getnval(e); + break; + case STRING: + str_btob(var_findsval(argn, + argn->array_pos), exp_getsval(e)); + break; } - break; + ++n_args; /* increment number of + * parameters */ - case '\"': /* embedded string constant */ - - /* add the initial quotation mark */ - - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; + } + s_pos = 0; /* reset counter */ + CURTASK exps[CURTASK expsc].string[0] = '\0'; + } + else + { + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - ++CURTASK exps[ CURTASK expsc ].pos_adv; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + } + break; - /* add intervening characters */ + case '\"': /* embedded string constant */ - while ( ( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] != '\"' ) - && ( expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] != '\0' ) ) - { - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - ++CURTASK exps[ CURTASK expsc ].pos_adv; - } + /* add the initial quotation mark */ - /* add the concluding quotation mark */ + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + ++CURTASK exps[CURTASK expsc].pos_adv; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; - ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; - /* the following bracketed out 14 July 1992; since this counter */ - /* incremented at the end of the switch statement, this may */ - /* increment it past the next character needed */ - /* ++CURTASK exps[ CURTASK expsc ].pos_adv; */ - break; + /* add intervening characters */ - default: - CURTASK exps[ CURTASK expsc ].string[ s_pos ] - = expression[ CURTASK exps[ CURTASK expsc ].pos_adv ]; + while ((expression[CURTASK exps[CURTASK expsc].pos_adv] != '\"') + && (expression[CURTASK exps[CURTASK expsc].pos_adv] != '\0')) + { + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; ++s_pos; - CURTASK exps[ CURTASK expsc ].string[ s_pos ] = '\0'; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_function(): new char <%d>=<%c>", - expression[ CURTASK exps[ CURTASK expsc ].pos_adv ], - expression[ CURTASK exps[ CURTASK expsc ].pos_adv ] ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in exp_function(): building <%s>.", - CURTASK exps[ CURTASK expsc ].string ); - bwb_debug( bwb_ebuf ); -#endif - break; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + ++CURTASK exps[CURTASK expsc].pos_adv; } - /* advance the counter */ - - ++CURTASK exps[ CURTASK expsc ].pos_adv; + /* add the concluding quotation mark */ + + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + /* the following bracketed out 14 July 1992; since + * this counter */ + /* incremented at the end of the switch statement, + * this may */ + /* increment it past the next character needed */ + /* ++CURTASK exps[ CURTASK expsc ].pos_adv; */ + break; + default: + CURTASK exps[CURTASK expsc].string[s_pos] + = expression[CURTASK exps[CURTASK expsc].pos_adv]; + ++s_pos; + CURTASK exps[CURTASK expsc].string[s_pos] = '\0'; + break; } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_function(): ready to call function vector" ); - bwb_debug( bwb_ebuf ); -#endif + /* advance the counter */ - /* call the function vector */ + ++CURTASK exps[CURTASK expsc].pos_adv; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_function(): calling preset function" ); - bwb_debug( bwb_ebuf ); -#endif + } - v = CURTASK exps[ CURTASK expsc ].function->vector ( n_args, &( argv[ 0 ] ), - CURTASK exps[ CURTASK expsc ].function->id ); - /*-------------------------------------------------*/ - /* Now free the argv memory */ - /* (some other less fortunate routine may need it) */ - /* JBV, 10/95 */ - /*-------------------------------------------------*/ + /* call the function vector */ - /* First kleanup the joint (JBV) */ - for ( i = 0; i < n_args; ++i ) + + if (TRUE) { - if ( argv[ i ].memnum != NULL ) - { - /* Revised to FREE pass-thru call by JBV */ - FREE(argv[ i ].memnum, "exp_function"); - argv[ i ].memnum = NULL; - } - if ( argv[ i ].memstr != NULL ) - { - /* Remember to deallocate those far-flung branches! (JBV) */ - for ( j = 0; j < (int) argv[ i ].array_units; ++j ) - { - if ( argv[ i ].memstr[ j ].sbuffer != NULL ) + /* Compare the parameter signature of the caller to the + * callee. This allows for function overloading based upon + * different parameter signatures. It also eliminates the + * need for any intrinsic function to check it's parameter + * count or check the type of it's parameters. The function + * will only be callled with the correct type and count of + * parameters. Examples of common intrinsic functions which + * are overloaded based upon the parameter signature are + * INSTR and MID$. INSTR( [Start], In$, Find$ ) -> instr( + * string, string ) -> 2 parameters instr( number, + * string, string ) -> 3 parameters */ + struct bwb_function *f; + char *name; + + f = CURTASK exps[CURTASK expsc].function; + name = f->Name; + + + /* There are two choices for USER DEFINE FUNCTIONS: #1 - A + * fixed number of upto 32 parameters, declared as FUNCTION + * FRED( A$, B$, X, Y ) #2 - A variant number of upto MAXINT + * parameters, declared as FUNCTION FRED( ... ) */ + + /* Determine the caller's parameter signature, using an + * algorithm matching the intrinsic table: First argument is + * bit 0; if it is 1 then STRING else NUMBER. Second argument + * is bit 1, and so on. */ + if (TRUE) + { + /* VERIFY */ + unsigned char ParameterCount; + unsigned long ParameterTypes; + + if (n_args > 32) + { + /* VARIANT */ + ParameterCount = 0xFF; + ParameterTypes = 0; + } + else + { + int i; + ParameterCount = n_args; /* <= 32 */ + ParameterTypes = 0; + argn = argv; + for (i = 0; i < ParameterCount; i++) + { + argn = argn->next; + if (argn->type == STRING) { - /* Revised to FREE pass-thru call by JBV */ - FREE( argv[ i ].memstr[ j ].sbuffer, "exp_function" ); - argv[ i ].memstr[ j ].sbuffer = NULL; + ParameterTypes |= (1 << i); } - argv[ i ].memstr[ j ].rab = FALSE; - argv[ i ].memstr[ j ].length = 0; - } - /* Revised to FREE pass-thru call by JBV */ - FREE( argv[ i ].memstr, "exp_function" ); - argv[ i ].memstr = NULL; - } - /* Revised to FREE pass-thru calls by JBV */ - if (argv[ i ].array_sizes != NULL) - { - FREE( argv[ i ].array_sizes, "exp_function" ); - argv[ i ].array_sizes = NULL; /* JBV */ - } - if (argv[ i ].array_pos != NULL) - { - FREE( argv[ i ].array_pos, "exp_function" ); - argv[ i ].array_pos = NULL; /* JBV */ - } - } - - FREE( argv, "exp_function" ); + } + } + /* did we find the correct function above? */ + if (f->ParameterCount != ParameterCount || f->ParameterTypes != ParameterTypes) + { + /* oops */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_function(): return from function vector, type <%c>", - v->type ); - bwb_debug( bwb_ebuf ); -#endif + f = fnc_find_exact(name, ParameterCount, ParameterTypes); + if (f == NULL) + { + /* NOT FOUND */ + f = fnc_find_exact(name, 0xFF, 0); /* look for VARIANT */ + } + if (f == NULL) + { + /* NOT FOUND */ + sprintf(bwb_ebuf, "*** Illegal Function Call (%s) ***", name); + bwb_error(bwb_ebuf); + return OP_ERROR; + } + /* FOUND */ + CURTASK exps[CURTASK expsc].function = f; + } + } + } + /* defaullt the return value */ +#define RESULT_NUMBER *argv->memnum +#define RESULT_BUFFER argv->memstr->sbuffer +#define RESULT_LENGTH argv->memstr->length + /* defaullt the return value */ + { + if ((CURTASK exps[CURTASK expsc].function->ReturnType & 0x00FF) == STRING) + { + var_make(argv, STRING); + RESULT_BUFFER = (char *) CALLOC(BasicStringLengthMax + 1, 1, "exp_function"); + RESULT_LENGTH = 0; + RESULT_BUFFER[RESULT_LENGTH] = '\0'; + } + else + { + var_make(argv, NUMBER); + RESULT_NUMBER = 0; + } + strcpy(argv->name, CURTASK exps[CURTASK expsc].function->Name); + } + if (CURTASK exps[CURTASK expsc].function->ReturnType & 0xFF00 /* UniqueID is a line + number */ ) + { + /* for all USER DEFINED FUNCTIONS: f->UniqueID == line number + * of DEF FN... */ + unsigned short cmdnum; + cmdnum = (CURTASK exps[CURTASK expsc].function->ReturnType & 0xFF00) >> 8; + switch (cmdnum) + { + case C_DEF: /* execute a user function declared using DEF + * FN...(...) = ... */ + case C_FUNCTION: /* execute a user function declared + * using FUNCTION ...(...) */ + case C_SUB: /* execute a user subroutine declared using + * SUB ...(...) */ + fnc_deffn(n_args, argv, CURTASK exps[CURTASK expsc].function->UniqueID); + break; + case C_USER_LBL: /* IF ERL > label1 AND ERL < label2 + * THEN ... */ + if (n_args > 0) + { + bwb_error("SYNTAX ERROR"); + } + /* return the line number associated with the label */ + RESULT_NUMBER = CURTASK exps[CURTASK expsc].function->UniqueID; + break; + default: + sprintf(bwb_ebuf, "INTERNAL ERROR, in exp_function(): unexpected cmdnum %d", cmdnum); + bwb_error(bwb_ebuf); + break; + } + } + else + { + /* for all INTRINSIC FUNCTIONS: f->UniqueID == #define F_... */ + fnc_intrinsic(n_args, argv, CURTASK exps[CURTASK expsc].function->UniqueID); + } - /* assign the value at this level */ - CURTASK exps[ CURTASK expsc ].type = (char) v->type; - - switch( v->type ) - { - case STRING: - CURTASK exps[ CURTASK expsc ].operation = CONST_STRING; + CURTASK exps[CURTASK expsc].type = (char) argv->type; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_function(): ready to assign STRING" ); - bwb_debug( bwb_ebuf ); -#endif + switch (argv->type) + { + case STRING: + CURTASK exps[CURTASK expsc].operation = CONST_STRING; - b = var_findsval( v, v->array_pos ); - str_btob( exp_getsval( &( CURTASK exps[ CURTASK expsc ] )), b ); -#if INTENSIVE_DEBUG - str_btoc( tbuf, b ); - sprintf( bwb_ebuf, "in exp_function(): string assigned <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif + b = var_findsval(argv, argv->array_pos); + str_btob(exp_getsval(&(CURTASK exps[CURTASK expsc])), b); - break; - default: - CURTASK exps[ CURTASK expsc ].operation = NUMBER; - CURTASK exps[ CURTASK expsc ].nval = var_getnval( v ); - break; - } + break; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_function(): end of function" ); - bwb_debug( bwb_ebuf ); -#endif + default: + CURTASK exps[CURTASK expsc].operation = NUMBER; + CURTASK exps[CURTASK expsc].nval = var_getnval(argv); + break; + } + /*-------------------------------------------------*/ + /* Now free the argv memory */ + /* (some other less fortunate routine may need it) */ + /* JBV, 10/95 */ + /*-------------------------------------------------*/ + var_free(argv); /* return */ return TRUE; - } +} /*************************************************************** - - FUNCTION: exp_variable() - - DESCRIPTION: This function interprets a variable. - + + FUNCTION: exp_variable() + + DESCRIPTION: This function interprets a variable. + ***************************************************************/ -#if ANSI_C -int -exp_variable( char *expression ) -#else int -exp_variable( expression ) - char *expression; -#endif - { - int pos; - int *pp; - int n_params; - register int n; +exp_variable(char *expression) +{ + int pos; + register int n; struct bwb_variable *v; - bstring *b; - int p; + bstring *b; + int n_params; + int pp[MAX_DIMS]; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_variable(): entered function." ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* get the variable name */ - exp_getvfname( expression, CURTASK exps[ CURTASK expsc ].string ); + exp_getvfname(expression, CURTASK exps[CURTASK expsc].string); /* now find the variable itself */ - v = CURTASK exps[ CURTASK expsc ].xvar = var_find( CURTASK exps[ CURTASK expsc ].string ); + v = CURTASK exps[CURTASK expsc].xvar = var_find(CURTASK exps[CURTASK expsc].string); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_variable(): level <%d>, found variable name <%s>", - CURTASK expsc, CURTASK exps[ CURTASK expsc ].xvar->name ); - bwb_debug( bwb_ebuf ); -#endif /* note that this level is a variable */ - CURTASK exps[ CURTASK expsc ].operation = VARIABLE; + CURTASK exps[CURTASK expsc].operation = VARIABLE; /* read subscripts */ - pos = strlen( CURTASK exps[ CURTASK expsc ].string ); - if ( ( v->dimensions == 1 ) && ( v->array_sizes[ 0 ] == 1 )) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_variable(): variable <%s> has 1 dimension", - CURTASK exps[ CURTASK expsc ].xvar->name ); - bwb_debug( bwb_ebuf ); -#endif - pos = strlen( v->name ); + pos = strlen(CURTASK exps[CURTASK expsc].string); + if ((v->dimensions == 1) && (v->array_sizes[0] == 1)) + { + pos = strlen(v->name); n_params = 1; - pp = &p; - pp[ 0 ] = dim_base; - } + pp[0] = dim_base; + } else + { + v->IsInDim++; + n_params = dim_getparams_FIXED(expression, &pos, pp); + v->IsInDim--; + } + if (n_params != v->dimensions) + { + sprintf(bwb_ebuf, "DIMENSION OUT OF RANGE %s(%d)", v->name, n_params); + bwb_error(bwb_ebuf); + return FALSE; + } + CURTASK exps[CURTASK expsc].pos_adv = pos; + for (n = 0; n < v->dimensions; ++n) + { + /* newvar->array_sizes[ n ] = pp[ n ] + ( 1 - dim_base ); */ + if ((pp[n] < dim_base) || ((pp[n] + (1 - dim_base)) > v->array_sizes[n])) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_variable(): variable <%s> has > 1 dimensions", - CURTASK exps[ CURTASK expsc ].xvar->name ); - bwb_debug( bwb_ebuf ); -#endif - dim_getparams( expression, &pos, &n_params, &pp ); - } - - CURTASK exps[ CURTASK expsc ].pos_adv = pos; - for ( n = 0; n < v->dimensions; ++n ) - { - CURTASK exps[ CURTASK expsc ].array_pos[ n ] = v->array_pos[ n ] = pp[ n ]; + sprintf(bwb_ebuf, "SUBSCRIPT OUT OF RANGE %s(%d)", v->name, pp[n]); + bwb_error(bwb_ebuf); + return FALSE; } + CURTASK exps[CURTASK expsc].array_pos[n] = v->array_pos[n] = pp[n]; + } -#if INTENSIVE_DEBUG - for ( n = 0; n < v->dimensions; ++ n ) - { - sprintf( bwb_ebuf, "in exp_variable(): var <%s> array_pos element <%d> is <%d>.", - v->name, n, v->array_pos[ n ] ); - bwb_debug( bwb_ebuf ); - } -#endif /* assign the type and value at this level */ - CURTASK exps[ CURTASK expsc ].type = (char) v->type; - - switch( v->type ) - { - case STRING: - b = var_findsval( v, v->array_pos ); -#if TEST_BSTRING - sprintf( bwb_ebuf, "in exp_variable(): b string name is <%s>", - b->name ); - bwb_debug( bwb_ebuf ); -#endif -#if OLDWAY - CURTASK exps[ CURTASK expsc ].sval.length = b->length; - CURTASK exps[ CURTASK expsc ].sval.sbuffer = b->sbuffer; -#endif - str_btob( &( CURTASK exps[ CURTASK expsc ].sval ), b ); - break; - default: - CURTASK exps[ CURTASK expsc ].nval = var_getnval( v ); - break; - } + CURTASK exps[CURTASK expsc].type = (char) v->type; + + switch (v->type) + { + case STRING: + b = var_findsval(v, v->array_pos); + str_btob(&(CURTASK exps[CURTASK expsc].sval), b); + break; + default: + CURTASK exps[CURTASK expsc].nval = var_getnval(v); + + + + break; + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_variable(): exit, name <%s>, level <%d>, op <%d>", - v->name, CURTASK expsc, CURTASK exps[ CURTASK expsc ].operation ); - bwb_debug( bwb_ebuf ); -#endif /* return */ return TRUE; - } +} + +/* EOF */ diff --git a/bwb_exp.c b/bwb_exp.c index f8e5724..a101e41 100644 --- a/bwb_exp.c +++ b/bwb_exp.c @@ -1,523 +1,345 @@ /**************************************************************** - + bwb_exp.c Expression Parser for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -****************************************************************/ + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + +***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include + #include "bwbasic.h" -#include "bwb_mes.h" -/*************************************************************** - FUNCTION: bwb_exp() - DESCRIPTION: This is the function by which the expression - parser is called. +/*************************************************************** + + FUNCTION: bwb_exp() + + DESCRIPTION: This is the function by which the expression + parser is called. + ***************************************************************/ -#if ANSI_C struct exp_ese * -bwb_exp( char *expression, int assignment, int *position ) -#else -struct exp_ese * -bwb_exp( expression, assignment, position ) - char *expression; - int assignment; - int *position; -#endif - { - struct exp_ese *rval; /* return value */ - int entry_level, main_loop, err_condition; - char *e; /* pointer to current string */ - int r; /* return value from functions */ - register int c; /* quick counter */ -#if OLD_WAY - int adv_loop; -#endif +bwb_exp(char *expression, int assignment, int *position) +{ + struct exp_ese *rval; /* return value */ + int entry_level, main_loop, err_condition; + int r; /* return value from functions */ + register int c; /* quick counter */ + + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "entered bwb_exp(): expression <%s> assignment <%d> level <%d>", - & ( expression[ *position ] ), assignment, CURTASK expsc ); - bwb_debug( bwb_ebuf ); -#endif - /* save the entry level of the expression stack in order to - check it at the end of this function */ + /* save the entry level of the expression stack in order to check it + * at the end of this function */ entry_level = CURTASK expsc; err_condition = FALSE; - /* advance past whitespace or beginning of line segment */ + /* advance past whitespace */ -#if MULTISEG_LINES - if ( expression[ *position ] == ':' ) - { - ++( *position ); - } -#endif - adv_ws( expression, position ); -#if MULTISEG_LINES - if ( expression[ *position ] == ':' ) - { - ++( *position ); - adv_ws( expression, position ); - } -#endif + adv_ws(expression, position); /* increment the expression stack counter to get a new level */ inc_esc(); - /* check to be sure there is a legitimate expression - and set initial parameters for the main loop */ + /* check to be sure there is a legitimate expression and set initial + * parameters for the main loop */ - if ( is_eol( expression, position ) == TRUE ) - { - main_loop = FALSE; /* break out of loop */ - } + if (is_eol(expression, position) == TRUE) + { + main_loop = FALSE; /* break out of loop */ + } else - { + { main_loop = TRUE; - CURTASK exps[ CURTASK expsc ].pos_adv = 0; - } + CURTASK exps[CURTASK expsc].pos_adv = 0; + } + + -#if OLDWAY - adv_loop = TRUE; - while( adv_loop == TRUE ) - { - switch( expression[ *position ] ) - { - case ' ': /* whitespace */ - case '\t': - ++(*position); - break; - case '\0': /* end of string */ - case '\r': - case '\n': - main_loop = adv_loop = FALSE; /* break out of loop */ - break; - default: - adv_loop = FALSE; - main_loop = TRUE; - CURTASK exps[ CURTASK expsc ].pos_adv = 0; - break; - } - } -#endif /* main parsing loop */ - while ( main_loop == TRUE ) - { + while (main_loop == TRUE) + { + char *e; /* pointer to current string */ /* set variable to the start of the expression */ - e = &( expression[ *position ] ); + e = &(expression[*position]); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): main loop, level <%d> element <%s> ", - CURTASK expsc, e ); - bwb_debug( bwb_ebuf ); -#endif /* detect the operation required at this level */ - CURTASK exps[ CURTASK expsc ].operation = exp_findop( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): exp_findop() returned <%d>", - CURTASK exps[ CURTASK expsc ].operation ); - bwb_debug( bwb_ebuf ); -#endif + CURTASK exps[CURTASK expsc].operation = exp_findop(e); /* perform actions specific to the operation */ - switch( CURTASK exps[ CURTASK expsc ].operation ) - { - case OP_ERROR: - main_loop = FALSE; - err_condition = TRUE; - break; - - case OP_TERMINATE: /* terminate at THEN, ELSE, TO */ -#if INTENSIVE_DEBUG - bwb_debug( "in bwb_exp(): Found OP_TERMINATE" ); -#endif - case OP_STRJOIN: /* string join or tab */ - case OP_STRTAB: - main_loop = FALSE; - err_condition = FALSE; - dec_esc(); - break; - - case OP_ADD: /* in the case of any numerical operation, */ - case OP_SUBTRACT: - case OP_MULTIPLY: - case OP_DIVIDE: - case OP_MODULUS: - case OP_EXPONENT: - case OP_INTDIVISION: - case OP_GREATERTHAN: - case OP_LESSTHAN: - case OP_GTEQ: - case OP_LTEQ: - case OP_NOTEQUAL: - case OP_NOT: - case OP_AND: - case OP_OR: - case OP_XOR: - case OP_IMPLIES: - case OP_EQUIV: - case OP_NEGATION: /* JBV */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): operator detected." ); - bwb_debug( bwb_ebuf ); -#endif - - CURTASK exps[ CURTASK expsc ].pos_adv = -1; /* set to strange number */ - - /* cycle through operator table to find match */ - - for ( c = 0; c < N_OPERATORS; ++c ) - { - if ( exp_ops[ c ].operation == CURTASK exps[ CURTASK expsc ].operation ) - { - CURTASK exps[ CURTASK expsc ].pos_adv = strlen( exp_ops[ c ].symbol ); - } - } - - if ( CURTASK exps[ CURTASK expsc ].pos_adv == -1 ) /* was a match found? */ - { - CURTASK exps[ CURTASK expsc ].pos_adv = 0; /* no -- set to 0 */ - } - break; /* and move on */ - - case OP_EQUALS: + switch (CURTASK exps[CURTASK expsc].operation) + { + case OP_ERROR: + main_loop = FALSE; + err_condition = TRUE; + break; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): equal sign detected." ); - bwb_debug( bwb_ebuf ); -#endif + case OP_TERMINATE: /* terminate at THEN, ELSE, TO */ + case OP_STRJOIN: /* string join or tab */ + case OP_STRTAB: + main_loop = FALSE; + err_condition = FALSE; + dec_esc(); + break; - if ( assignment == TRUE ) - { - CURTASK exps[ CURTASK expsc ].operation = OP_ASSIGN; - } - CURTASK exps[ CURTASK expsc ].pos_adv = 1; - break; + case OP_ADD: /* in the case of any numerical operation, */ + case OP_SUBTRACT: + case OP_MULTIPLY: + case OP_DIVIDE: + case OP_MODULUS: + case OP_EXPONENT: + case OP_INTDIVISION: + case OP_GREATERTHAN: + case OP_LESSTHAN: + case OP_GTEQ: + case OP_LTEQ: + case OP_NOTEQUAL: + case OP_NOT: + case OP_AND: + case OP_OR: + case OP_XOR: + case OP_IMPLIES: + case OP_EQUIV: + case OP_NEGATION: /* JBV */ + case OP_POSATION: + + + CURTASK exps[CURTASK expsc].pos_adv = -1; /* set to strange number */ + + /* cycle through operator table to find match */ + + for (c = 0; c < NUM_OPERATORS; ++c) + { + if (exp_ops[c].operation == CURTASK exps[CURTASK expsc].operation) + { + CURTASK exps[CURTASK expsc].pos_adv = strlen(exp_ops[c].symbol); + } + } - case PARENTHESIS: - r = exp_paren( e ); - break; + if (CURTASK exps[CURTASK expsc].pos_adv == -1) /* was a match found? */ + { + CURTASK exps[CURTASK expsc].pos_adv = 0; /* no -- set to 0 */ + } + break; /* and move on */ - case CONST_STRING: - r = exp_strconst( e ); - break; + case OP_EQUALS: - case CONST_NUMERICAL: - r = exp_numconst( e ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): return from exp_numconst(), r = <%d>", - r ); - bwb_debug( bwb_ebuf ); -#endif - break; - case FUNCTION: + if (assignment == TRUE) + { + CURTASK exps[CURTASK expsc].operation = OP_ASSIGN; + } + CURTASK exps[CURTASK expsc].pos_adv = 1; + break; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): calling exp_function(), expression <%s>", - e ); - bwb_debug( bwb_ebuf ); -#endif + case PARENTHESIS: + r = exp_paren(e); + break; - r = exp_function( e ); - break; + case CONST_STRING: + r = exp_strconst(e); + break; - case OP_USERFNC: + case CONST_NUMERICAL: + r = exp_numconst(e); + break; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): calling exp_ufnc(), expression <%s>", - e ); - bwb_debug( bwb_ebuf ); -#endif + case FUNCTION: - r = exp_ufnc( e ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): return from exp_ufnc(), buffer <%s>", - &( expression[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + r = exp_function(e); + break; - break; - case VARIABLE: - r = exp_variable( e ); - break; + case VARIABLE: + r = exp_variable(e); + break; - default: - err_condition = TRUE; - main_loop = FALSE; -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_exp.c:bwb_exp(): unidentified operation (%d).", - CURTASK exps[ CURTASK expsc ].operation ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - break; - } + default: + err_condition = TRUE; + main_loop = FALSE; + sprintf(bwb_ebuf, "in bwb_exp.c:bwb_exp(): unidentified operation (%d).", + CURTASK exps[CURTASK expsc].operation); + bwb_error(bwb_ebuf); + break; + } /* increment *position counter based on previous actions */ - *position += CURTASK exps[ CURTASK expsc ].pos_adv; - CURTASK exps[ CURTASK expsc ].pos_adv = 0; /* reset advance counter */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): advanced position; r <%d> err_c <%d>", - r, err_condition ); - bwb_debug( bwb_ebuf ); -#endif + *position += CURTASK exps[CURTASK expsc].pos_adv; + CURTASK exps[CURTASK expsc].pos_adv = 0; /* reset advance counter */ -#if INTENSIVE_DEBUG - if ( CURTASK exps[ CURTASK expsc ].operation == OP_EQUALS ) - { - sprintf( bwb_ebuf, "in bwb_exp(): with OP_EQUALS: finished case" ); - bwb_debug( bwb_ebuf ); - } -#endif /* check for end of string */ - if ( is_eol( expression, position ) == TRUE ) - { - main_loop = FALSE; /* break out of loop */ - } - -#if OLDWAY - adv_loop = TRUE; - while( adv_loop == TRUE ) - { - switch( expression[ *position ] ) - { - case ' ': /* whitespace */ - case '\t': - ++(*position); - break; - case '\0': /* end of string */ - case '\r': - case '\n': - case ':': - main_loop = adv_loop = FALSE; /* break out of loop */ - break; - default: - adv_loop = FALSE; - break; - } - } -#endif - + if (is_eol(expression, position) == TRUE) + { + main_loop = FALSE; /* break out of loop */ + } /* get a new stack level before looping */ - if ( main_loop == TRUE ) - { + if (main_loop == TRUE) + { r = inc_esc(); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): increment esc, r <%d>, err_c <%d>", - r, err_condition ); - bwb_debug( bwb_ebuf ); -#endif - } - + } /* check for error return */ - if ( r == OP_ERROR ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): found r == OP_ERROR." ); - bwb_debug( bwb_ebuf ); -#endif + if (r == OP_ERROR) + { main_loop = FALSE; err_condition = TRUE; - } + } else - { + { r = TRUE; - } + } - } /* end of main parsing loop */ + } /* end of main parsing loop */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): breakout from main parsing loop, r <%d> err_c <%d>", - r, err_condition ); - bwb_debug( bwb_ebuf ); -#endif /* check error condition */ - if ( err_condition == TRUE ) - { + if (err_condition == TRUE) + { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "error detected in expression parser" ); - bwb_debug( bwb_ebuf ); -#endif - /* decrement the expression stack counter until it matches entry_level */ + /* decrement the expression stack counter until it matches + * entry_level */ - while( CURTASK expsc > entry_level ) - { + while (CURTASK expsc > entry_level) + { dec_esc(); - } - -#if PROG_ERRORS - bwb_error( "in bwb_exp(): Error detected in parsing expression" ); -#else - bwb_error( err_syntax ); -#endif } + bwb_error(err_syntax); + return NULL; + } /* no error; normal exit from function */ else - { + { - /* are any more operations needed? if we are still at entry level, - then they are not */ + /* are any more operations needed? if we are still at entry + * level, then they are not */ /* try operations */ - exp_operation( entry_level ); + exp_operation(entry_level); /* see what is on top of the stack */ - if ( CURTASK expsc > ( entry_level + 1 )) + if (CURTASK expsc > (entry_level + 1)) + { + switch (CURTASK exps[CURTASK expsc].operation) { - switch( CURTASK exps[ CURTASK expsc ].operation ) + case OP_STRJOIN: + if (CURTASK expsc != (entry_level + 2)) { - case OP_STRJOIN: - if ( CURTASK expsc != ( entry_level + 2 )) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_exp(): OP_STRJOIN in wrong position." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } - break; - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_exp(): incomplete expression." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - break; + sprintf(bwb_ebuf, "in bwb_exp(): OP_STRJOIN in wrong position."); + bwb_error(bwb_ebuf); } + break; + default: + sprintf(bwb_ebuf, "in bwb_exp(): incomplete expression."); + bwb_error(bwb_ebuf); + break; + } /* decrement the expression stack counter */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exp(): before dec_esc type is <%c>", - CURTASK exps[ CURTASK expsc ].type ); - bwb_debug( bwb_ebuf ); -#endif dec_esc(); - } - + } /* assign rvar to the variable for the current level */ - rval = &( CURTASK exps[ CURTASK expsc ] ); + rval = &(CURTASK exps[CURTASK expsc]); /* decrement the expression stack counter */ dec_esc(); /* check the current level before exit */ - - if ( entry_level != CURTASK expsc ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_exp(): exit stack level (%d) does not match entry stack level (%d)", - CURTASK expsc, entry_level ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_overflow ); -#endif - } - + if (entry_level != CURTASK expsc) + { + sprintf(bwb_ebuf, "in bwb_exp(): exit stack level (%d) does not match entry stack level (%d)", + CURTASK expsc, entry_level); + bwb_error(bwb_ebuf); } + } /* return a pointer to the last stack level */ return rval; - } +} /*************************************************************** + + FUNCTION: exp_findop() + + DESCRIPTION: This function reads the expression to find + what operation is required at its stack level. + +***************************************************************/ - FUNCTION: exp_findop() +int +exp_findop(char *expression) +{ + register int c; /* character counter */ + int rval; /* return value */ + char cbuf[BasicStringLengthMax + 1]; /* capitalized + * expression */ + char nbuf[BasicStringLengthMax + 1]; /* non-capitalized + * expression */ + int position; /* position in the expression */ + int adv_loop; /* control loop to build expression */ + int LastPosition; - DESCRIPTION: This function reads the expression to find - what operation is required at its stack level. -***************************************************************/ + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -int -exp_findop( char *expression ) -#else -int -exp_findop( expression ) - char *expression; -#endif - { - register int c; /* character counter */ - int carry_on; /* boolean: control while loop */ - int rval; /* return value */ - char cbuf[ MAXSTRINGSIZE + 1 ]; /* capitalized expression */ - char nbuf[ MAXSTRINGSIZE + 1 ]; /* non-capitalized expression */ - int position; /* position in the expression */ - int adv_loop; /* control loop to build expression */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_findop(): received <%s>", expression ); - bwb_debug( bwb_ebuf ); -#endif /* set return value to OP_NULL initially */ @@ -529,962 +351,957 @@ exp_findop( expression ) /* advance to the first significant character */ - adv_ws( expression, &position ); + adv_ws(expression, &position); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_findop(): expression after advance <%s>", - &( expression[ position ] ) ); - bwb_debug( bwb_ebuf ); -#endif /* we now have the first significant character and can begin parsing */ /* check the first character for an indication of a parenthetical - expression, a string constant, or a numerical constant that begins - with a digit (numerical constants beginning with a plus or minus - sign or hex/octal/binary constants will have to be detected by - exp_isnc() */ + * expression, a string constant, or a numerical constant that begins + * with a digit (numerical constants beginning with a plus or minus + * sign or hex/octal/binary constants will have to be detected by + * exp_isnc() */ - carry_on = TRUE; - switch ( expression[ position ] ) + switch (expression[position]) + { + case '=': + /* look-ahead one character */ + switch( expression[position + 1] ) { - case '\"': /* this should indicate a string constant */ - rval = CONST_STRING; - break; - case '(': /* this will indicate a simple parenthetical expression */ - rval = PARENTHESIS; - break; - -#if MULTISEG_LINES - case ':': /* terminate processing */ -#endif - case ')': /* end of argument list? */ - rval = OP_TERMINATE; - break; - - case '0': /* these will indicate a numerical constant */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '.': - case '&': /* designator for hex or octal constant */ - rval = CONST_NUMERICAL; - break; + case '>': + /* => */ + rval = OP_GTEQ; + break; + case '<': + /* =< */ + rval = OP_LTEQ; + break; + default: + rval = OP_EQUALS; + break; } + break; + case '<': + /* look-ahead one character */ + switch( expression[position + 1] ) + { + case '>': + /* <> */ + rval = OP_NOTEQUAL; + break; + case '=': + /* <= */ + rval = OP_LTEQ; + break; + default: + rval = OP_LESSTHAN; + break; + } + break; + case '>': + /* look-ahead one character */ + switch( expression[position + 1] ) + { + case '=': + /* >= */ + rval = OP_GTEQ; + break; + case '<': + /* >< */ + rval = OP_NOTEQUAL; + break; + default: + rval = OP_GREATERTHAN; + break; + } + break; + case '\"': /* this should indicate a string constant */ + rval = CONST_STRING; + break; + case '(': /* this will indicate a simple parenthetical + * expression */ + rval = PARENTHESIS; + break; + case ')': /* end of argument list? */ + rval = OP_TERMINATE; + break; + + case '0': /* these will indicate a numerical constant */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '.': + case '&': /* designator for hex or octal constant */ + rval = CONST_NUMERICAL; + break; + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_findop(): rval pos 1 is <%d>", rval ); - bwb_debug( bwb_ebuf ); -#endif - /* String constants, numerical constants, open parentheses, and - the plus and minus operators have been checked at this point; - but if the return value is still OP_NULL, other possibilities - must be checked, namely, other operators, function names, and - variable names. The function adv_element cannot be used here - because it will stop, e.g., with certain operators and not - include them in the returned element. */ + if (rval != OP_NULL) + { + return rval; + } + /* String constants, numerical constants, open parentheses, and the + * plus and minus operators have been checked at this point; but if + * the return value is still OP_NULL, other possibilities must be + * checked, namely, other operators, function names, and variable + * names. The function adv_element cannot be used here because it + * will stop, e.g., with certain operators and not include them in + * the returned element. */ /* get a character string to be interpreted */ adv_loop = TRUE; - cbuf[ 0 ] = '\0'; - nbuf[ 0 ] = '\0'; + cbuf[0] = '\0'; + nbuf[0] = '\0'; c = 0; - while ( adv_loop == TRUE ) + while (adv_loop == TRUE) + { + + + switch (expression[position]) { + case ' ': /* whitespace */ + case '\0': /* end of string */ + case '(': /* parenthesis terminating function name */ + adv_loop = FALSE; + break; + default: + nbuf[c] = cbuf[c] = expression[position]; + ++c; + nbuf[c] = cbuf[c] = '\0'; + ++position; + break; + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_findop() loop position <%d> char 0x%x", - c, expression[ position ] ); - bwb_debug( bwb_ebuf ); -#endif - switch( expression[ position ] ) - { - case ' ': /* whitespace */ - case '\t': - case '\r': /* end of line */ - case '\n': - case '\0': /* end of string */ - case '(': /* parenthesis terminating function name */ - adv_loop = FALSE; - break; - default: - nbuf[ c ] = cbuf[ c ] = expression[ position ]; - ++c; - nbuf[ c ] = cbuf[ c ] = '\0'; - ++position; - break; - } - - if ( c >= MAXSTRINGSIZE ) - { - adv_loop = FALSE; - } + LastPosition = position; + + if (c > BasicStringLengthMax) + { + adv_loop = FALSE; } - bwb_strtoupper( cbuf ); + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_findop(): cbuf element is <%s>", cbuf ); - bwb_debug( bwb_ebuf ); -#endif /* check for numerical constant */ - if ( rval == OP_NULL ) - { - rval = exp_isnc( cbuf ); - } + rval = exp_isnc(cbuf); + if (rval != OP_NULL) + { + return rval; + } /* check for other operators */ - if ( rval == OP_NULL ) - { - rval = exp_isop( cbuf ); - } + rval = exp_isop(cbuf); + + if (rval != OP_NULL) + { + return rval; + } + exp_getvfname(cbuf, nbuf); + if (strlen(nbuf) == 0) + { + return OP_ERROR; + } + strcpy(CURTASK exps[CURTASK expsc].string, nbuf); - /* check for user-defined function */ - if ( rval == OP_NULL ) - { - rval = exp_isufn( nbuf ); - } + /* User definedfunctions are now processed by fnc_deffn */ + if (rval != OP_NULL) + { + return rval; + } /* check for function name */ - if ( rval == OP_NULL ) - { - rval = exp_isfn( nbuf ); - } + rval = exp_isfn(nbuf); + if (rval != OP_NULL) + { + return rval; + } /* check for a BASIC command, esp. to catch THEN or ELSE */ - if ( rval == OP_NULL ) - { - rval = exp_iscmd( cbuf ); - } + rval = exp_iscmd(nbuf); - /* last: check for variable name, and assign it if there - is not already one */ + if (rval != OP_NULL) + { + return rval; + } + /* last: check for variable name, and assign it if there is not + * already one */ - if ( rval == OP_NULL ) + /* OPTION STRICT OFF to disables Implicit DIM */ + /* This is only for ECMA-55. ECMA-116 requires arrays to be + * dimensioned prior to being used. */ + if (strlen(nbuf) == strlen(cbuf)) + { + if (bwb_isvar(nbuf) == FALSE) { - rval = exp_isvn( nbuf ); - } + /* not an existing variable */ + while (expression[LastPosition] == ' ') + { + LastPosition++; + } + if (expression[LastPosition] == '(') + { + /* MUST be a dynamically created array, LET + * ... A(10) ... ' variable "A" has NOT been + * dimensioned */ + int NumDimensions; - /* return the value assigned (or OP_ERROR if none assigned) */ + NumDimensions = DetermineNumberOfDimensions(expression, LastPosition); + if (NumDimensions < 1) + { + bwb_error(err_incomplete); + return OP_ERROR; + } + if (ImplicitDim(nbuf, NumDimensions) != TRUE) + { + bwb_error(err_syntax); + return OP_ERROR; + } + } /* if( expression[ LastPosition ] == '(' ) */ + } /* if( bwb_isvar( nbuf ) == FALSE ) */ + } /* if( strlen( nbuf ) == strlen( cbuf ) ) */ + rval = exp_isvn(nbuf); - if ( rval == OP_NULL ) - { - return OP_ERROR; - } - else - { + if (rval != OP_NULL) + { return rval; - } - } + /* return the value assigned (or OP_ERROR if none assigned) */ -/*************************************************************** + return OP_ERROR; - FUNCTION: exp_isnc() +} - DESCRIPTION: This function reads the expression to find - if a numerical constant is present at this - point. +/*************************************************************** + + FUNCTION: exp_isnc() + + DESCRIPTION: This function reads the expression to find + if a numerical constant is present at this + point. + ***************************************************************/ -#if ANSI_C int -exp_isnc( char *expression ) -#else -int -exp_isnc( expression ) - char *expression; -#endif - { - char tbuf[ MAXVARNAMESIZE + 1 ]; /* JBV */ +exp_isnc(char *expression) +{ + + bwx_DEBUG(__FUNCTION__); - switch( expression[ 0 ] ) + switch (expression[0]) + { + case '0': /* these will indicate a numerical constant */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '&': /* indicator for hex or octal constant */ + return CONST_NUMERICAL; + + + + case '-': + switch (CURTASK exps[CURTASK expsc - 1].operation) { - case '0': /* these will indicate a numerical constant */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '&': /* indicator for hex or octal constant */ - return CONST_NUMERICAL; - case '+': - case '-': - - /* if the previous stack level was a numerical value or a string, - then this is certainly not one; return OP_NULL here - and let the next function call to exp_isop() determine - the (plus or minus) operator */ - - if ( ( CURTASK exps[ CURTASK expsc - 1 ].operation == NUMBER ) - || ( CURTASK exps[ CURTASK expsc - 1 ].operation == VARIABLE ) - || ( CURTASK exps[ CURTASK expsc - 1 ].operation == CONST_STRING ) ) + case VARIABLE: /* external variable pointed to by xvar */ + if (TRUE) + { + struct bwb_variable *v; + v = CURTASK exps[CURTASK expsc - 1].xvar; + if (v->IsInDim > 0) { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isnc(): previous function is a number or string" ); - bwb_debug( bwb_ebuf ); -#endif - - return OP_NULL; + return OP_NEGATION; } - - /* similarly, if the previous stack level was a variable - with a numerical value (not a string), then this level - must be an operator, not a numerical constant */ - - if ( ( CURTASK exps[ CURTASK expsc - 1 ].operation == VARIABLE ) - && ( CURTASK exps[ CURTASK expsc - 1 ].type != STRING )) + } + case NUMBER: /* number held as internal variable in uvar */ + case CONST_STRING: /* string constant */ + case CONST_NUMERICAL: /* numerical constant */ + /* might be subtraction */ + return OP_NULL; + } + /* any arithmetic operator: +, -, *, /, \, MOD */ + /* any logical operator: AND, OR, XOR, IMP, EQV, NOT */ + /* any comparison operator: <, <=, =, >=, > */ + /* assignment: LET A = - .... */ + /* parenthesis: LET A = ... (- .... */ + /* command: PRINT - .... */ + return OP_NEGATION; + + case '+': + case BasicFileNumberPrefix: /* EOF( #1 ) */ + switch (CURTASK exps[CURTASK expsc - 1].operation) + { + case VARIABLE: /* external variable pointed to by xvar */ + if (TRUE) + { + struct bwb_variable *v; + v = CURTASK exps[CURTASK expsc - 1].xvar; + if (v->IsInDim > 0) { - return OP_NULL; + return OP_POSATION; } - - /*--------------------------------------------------------*/ - /* Check for unary minus sign added by JBV. */ - /* Could be prefixing a parenthetical expression or a */ - /* variable name. */ - /* But parentheses won't show up in expression (cbuf), so */ - /* just check for expression and variable name lengths. */ - /*--------------------------------------------------------*/ - if (expression[0] == '-') - { - if (strlen(expression) == 1) return OP_NEGATION; - exp_getvfname(&expression[1], tbuf); - if (strlen(tbuf) != 0) return OP_NEGATION; } - - /* failing these tests, the argument must be a numerical - constant preceded by a plus or minus sign */ - - return CONST_NUMERICAL; - - default: + case NUMBER: /* number held as internal variable in uvar */ + case CONST_STRING: /* string constant */ + case CONST_NUMERICAL: /* numerical constant */ + /* might be addition */ return OP_NULL; } + /* any arithmetic operator: +, -, *, /, \, MOD */ + /* any logical operator: AND, OR, XOR, IMP, EQV, NOT */ + /* any comparison operator: <, <=, =, >=, > */ + /* assignment: LET A = + .... */ + /* parenthesis: LET A = ... (+ .... */ + /* command: PRINT + .... */ + return OP_POSATION; - } - -/*************************************************************** - FUNCTION: exp_isop() + default: + return OP_NULL; + } - DESCRIPTION: This function reads the expression to find - if a logical or mathematical operation is - required at this point. +} +/*************************************************************** + + FUNCTION: exp_isop() + + DESCRIPTION: This function reads the expression to find + if a logical or mathematical operation is + required at this point. + This function presupposes that a numerical constant with affixed plus or minus sign has been ruled out. - + ***************************************************************/ -#if ANSI_C -int -exp_isop( char *expression ) -#else int -exp_isop( expression ) - char *expression; -#endif +exp_isop(char *expression) +{ + + /* Problem: The following lines are valid BASIC: LET note = 0 LET + * not1 = 0 LET andy = 0 LET and2 = 0 LET oreo = 0 LET or3 = 0 LET + * xorigin = 0 LET xor4 = 0 LET imply = 0 LET impl5 = 0 LET equality + * = 0 LET equ6 = 0 LET mode = 0 LET mod7 = 0 However, the + * interpreter displays the message: ERROR: in exp_getnval(): + * operation <0> is not a number */ + /* Reference: ECMA-116, Page 15, Section 4.1.2, Last Paragraph All + * keywords in a program, when used as such, shall be preceded and + * followed by some character other than a letter, digit, underline + * or dollar-sign. A keyword may also be followed by an end-of-line */ + int i; + int j; + int k; + int Found; + + register int c; /* counter */ + + bwx_DEBUG(__FUNCTION__); + + /* compare the initial characters of the string with the table of + * operators */ + + for (c = 0; c < NUM_OPERATORS; ++c) { - register int c; /* counter */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isop(): expression is <%s>", expression ); - bwb_debug( bwb_ebuf ); -#endif - - /* compare the initial characters of the string with the table - of operators */ - - for ( c = 0; c < N_OPERATORS; ++c ) - { - if ( strncmp( expression, exp_ops[ c ].symbol, - (size_t) strlen( exp_ops[ c ].symbol ) ) == 0 ) + if (OptionVersion & exp_ops[c].OptionVersionBitmask) + if (strncasecmp(expression, exp_ops[c].symbol, + (size_t) strlen(exp_ops[c].symbol)) == 0) { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isop(): match <%s>, number <%d>.", - exp_ops[ c ].symbol, c ); - bwb_debug( bwb_ebuf ); -#endif - - return exp_ops[ c ].operation; + /* Problem: The following lines are valid + * BASIC: LET note = 0 LET not1 = 0 LET andy + * = 0 LET and2 = 0 LET oreo = 0 LET or3 = 0 + * LET xorigin = 0 LET xor4 = 0 LET imply = 0 + * LET impl5 = 0 LET equality = 0 LET equ6 = + * 0 LET mode = 0 LET mod7 = 0 + * + * However, the interpreter displays the + * message: ERROR: in exp_getnval(): + * operation <0> is not a number */ + /* Reference: ECMA-116, Page 15, Section + * 4.1.2, Last Paragraph All keywords in a + * program, when used as such, shall be + * preceded and followed by some character + * other than a letter, digit, underline or + * dollar-sign. A keyword may also be + * followed by an end-of-line */ + Found = TRUE; + if (isalpha(exp_ops[c].symbol[0])) + { + /* NOT, AND, OR, XOR, IMP, EQV, MOD */ + i = strlen(exp_ops[c].symbol); + j = strlen(expression); + if (j > i) + { + /* the expression does not + * end with the end of the + * operator */ + k = expression[i]; + /* character AFTER the + * operator */ + if (isalpha(k)) + { + /* NOTe, ANDy, OReo, + * XORe, IMPly, + * EQUals, MODe */ + Found = FALSE; + } + else + if (isdigit(k)) + { + /* NOT1, AND2, OR3, + * XOR4, IMP5, EQU6, + * MOD7 */ + Found = FALSE; + } + else + if (k == BasicStringSuffix) + { + /* N O T $ , + * + * AN D $ , + * + * OR $ , + * + * XO R $ , + * + * IM P $ , + * + * EQ U $ , + * + * MO D $ */ + Found = FALSE; + } + else + if( OptionFlags & OPTION_BUGS_ON ) + { + if (k == '_' || k == '.' ) + { + /* NOT _, AND _, OR_ + * , XOR _, IMP _, + * EQU _, MOD _ */ + Found = FALSE; + } + } + else + { + /* N O T , + * + * AN D , + * + * OR , + * + * XO R , + * + * IM P , + * + * EQ U , + * + * MO D */ + } + } + } + if (Found == TRUE) + { + return exp_ops[c].operation; + } } - } + } /* search failed; return OP_NULL */ return OP_NULL; - } +} /*************************************************************** - - FUNCTION: exp_iscmd() - - DESCRIPTION: This function reads the expression to find - if a BASIC command name is present; if so, - it returns OP_TERMINATE to terminate expression - parsing. This is critical, for example, in - parsing a conditional following IF where THEN, - ELSE, and other BASIC commands may follow. - + + FUNCTION: exp_iscmd() + + DESCRIPTION: This function reads the expression to find + if a BASIC command name is present; if so, + it returns OP_TERMINATE to terminate expression + parsing. This is critical, for example, in + parsing a conditional following IF where THEN, + ELSE, and other BASIC commands may follow. + ***************************************************************/ -#if ANSI_C int -exp_iscmd( char *expression ) -#else -int -exp_iscmd( expression ) - char *expression; -#endif - { - register int n; +exp_iscmd(char *expression) +{ + register int n; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_iscmd(): expression received <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - /* first check for THEN or ELSE statements */ +/* FIXME: extract the expression before calling bwb_exp() - no COMMANDS should be there */ +/* This should be a Syntax Error */ - if ( strcmp( expression, CMD_THEN ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_iscmd(): match found, <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif + /* first check for likely statements */ + if (strcasecmp(expression, "THEN") == 0) + { + /* IF ... THEN */ return OP_TERMINATE; - } - -#if STRUCT_CMDS - if ( strcmp( expression, CMD_TO ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_iscmd(): match found, <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif + } + if (strcasecmp(expression, "TO") == 0) + { + /* FOR X =... TO ... STEP */ return OP_TERMINATE; - } -#endif - - if ( strcmp( expression, CMD_ELSE ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_iscmd(): match found, <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif + } + if (strcasecmp(expression, "STEP") == 0) + { + /* FOR X =... TO ... STEP */ return OP_TERMINATE; - } - + } + if (strcasecmp(expression, "GO") == 0) + { + /* ON ... GO */ + return OP_TERMINATE; + } + if (strcasecmp(expression, "GOTO") == 0) + { + /* ON ... GOTO */ + return OP_TERMINATE; + } + if (strcasecmp(expression, "GOSUB") == 0) + { + /* ON ... GOSUB */ + return OP_TERMINATE; + } /* run through the command table and search for a match */ - for ( n = 0; n < COMMANDS; ++n ) - { - if ( strcmp( expression, bwb_cmdtable[ n ].name ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_iscmd(): match found, <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif - return OP_TERMINATE; - } -#if INTENSIVE_DEBUG - else - { - sprintf( bwb_ebuf, "in exp_iscmd(): No match, <%s> and <%s>; returns %d", - expression, bwb_cmdtable[ n ].name, - strcmp( expression, bwb_cmdtable[ n ].name ) ); - bwb_debug( bwb_ebuf ); - } -#endif - } - /* search failed, return NULL */ - return OP_NULL; + n = is_cmd(expression); + if (n > 0) + { + /* FIXME: this should return OP_ERROR, since we found an + * UNEXPECTED command */ + + return OP_TERMINATE; } + /* search failed, return NULL */ -/*************************************************************** + return OP_NULL; - FUNCTION: exp_isufn() +} - DESCRIPTION: This function reads the expression to find - if a user-defined function name is present - at this point. +/*************************************************************** + + FUNCTION: exp_isfn() + + DESCRIPTION: This function reads the expression to find + if a function name is present at this point. + ***************************************************************/ -#if ANSI_C -int -exp_isufn( char *expression ) -#else int -exp_isufn( expression ) - char *expression; -#endif - { - struct fslte *f; - char tbuf[ MAXVARNAMESIZE + 1 ]; +exp_isfn(char *expression) +{ + /* if we are in a USER DEFINED FUNCTION - END FUNCTION block, the + * function name is a local variable */ + int i; - exp_getvfname( expression, tbuf ); - for ( f = CURTASK fslt_start.next; f != &CURTASK fslt_end; f = f->next ) + bwx_DEBUG(__FUNCTION__); + + for (i = CURTASK exsc; i >= 0; i--) + { + if (CURTASK excs[i].LoopTopLine != NULL) { - if ( strcmp( f->name, tbuf ) == 0 ) + if (CURTASK excs[i].LoopTopLine->cmdnum == C_FUNCTION) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isufn(): found user function <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* a user function name was found: but is it the local variable - name for the user function? If so, return OP_NULL and the - name will be read as a variable */ - - if ( var_islocal( tbuf ) != NULL ) + if (CURTASK excs[i].local_variable != NULL) { - return OP_NULL; - } - else - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isufn(): found function <%s> not a local variable, EXEC level <%d>", - tbuf, CURTASK exsc ); - bwb_debug( bwb_ebuf ); - getchar(); -#endif - - return OP_USERFNC; + if (strcasecmp(CURTASK excs[i].local_variable->name, expression) == 0) + { + return VARIABLE; + } } } } - - return OP_NULL; - } -/*************************************************************** - - FUNCTION: exp_isfn() - - DESCRIPTION: This function reads the expression to find - if a function name is present at this point. - -***************************************************************/ - -#if ANSI_C -int -exp_isfn( char *expression ) -#else -int -exp_isfn( expression ) - char *expression; -#endif + if (fnc_find(expression) != NULL) { - - /* Block out the call to exp_getvfname() if exp_isvn() is called - after exp_isfn() */ - - exp_getvfname( expression, CURTASK exps[ CURTASK expsc ].string ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isfn(): search for function <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif - - if ( fnc_find( CURTASK exps[ CURTASK expsc ].string ) == NULL ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isfn(): failed to find function <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif - return OP_NULL; - } - else - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isfn(): found function <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif return FUNCTION; - } - } + return OP_NULL; -/*************************************************************** - - FUNCTION: exp_isvn() - - DESCRIPTION: This function reads the expression to find - if a variable name at this point. +} +/*************************************************************** + + FUNCTION: exp_isvn() + + DESCRIPTION: This function reads the expression to find + if a variable name at this point. + ***************************************************************/ -#if ANSI_C -int -exp_isvn( char *expression ) -#else int -exp_isvn( expression ) - char *expression; -#endif - { - - /* Block out the call to exp_getvfname() if exp_isfn() is called - after exp_isvn() */ +exp_isvn(char *expression) +{ + bwx_DEBUG(__FUNCTION__); - /* exp_getvfname( expression, CURTASK exps[ CURTASK expsc ].string ); */ - - /* rule out null name */ - - if ( strlen( CURTASK exps[ CURTASK expsc ].string ) == 0 ) - { - return OP_NULL; - } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isvn(): search for variable <%s>", - CURTASK exps[ CURTASK expsc ].string ); - bwb_debug( bwb_ebuf ); -#endif - - if ( var_find( CURTASK exps[ CURTASK expsc ].string ) == NULL ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isvn(): failed to find variable <%s>", - expression ); - bwb_debug( bwb_ebuf ); -#endif - return OP_NULL; - } - else - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_isvn(): found variable <%s>", - CURTASK exps[ CURTASK expsc ].string ); - bwb_debug( bwb_ebuf ); -#endif + if (var_find(expression) != NULL) + { return VARIABLE; - } - } + return OP_NULL; -/*************************************************************** - - FUNCTION: exp_getvfname() - - DESCRIPTION: This function reads the expression to find - a variable or function name at this point. +} +/*************************************************************** + + FUNCTION: exp_getvfname() + + DESCRIPTION: This function reads the expression to find + a variable or function name at this point. + ***************************************************************/ -#if ANSI_C -int -exp_getvfname( char *source, char *destination ) -#else int -exp_getvfname( source, destination ) - char *source; - char *destination; -#endif - { - int s_pos, d_pos; /* source, destination positions */ +exp_getvfname(char *source, char *destination) +{ +#if 0 + int s_pos, d_pos; /* source, destination positions */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_getvfname(): source buffer <%s>", source ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); s_pos = d_pos = 0; - destination[ 0 ] = '\0'; - while( source[ s_pos ] != '\0' ) - { + destination[0] = '\0'; + while (source[s_pos] != '\0') + { /* all alphabetical characters are acceptable */ - if ( isalpha( source[ s_pos ] ) != 0 ) + if (isalpha(source[s_pos]) != 0) - { - destination[ d_pos ] = source[ s_pos ]; + { + destination[d_pos] = source[s_pos]; ++d_pos; ++s_pos; - destination[ d_pos ] = '\0'; - } - - /* numerical characters are acceptable but not in the first position */ + destination[d_pos] = '\0'; + } + /* numerical characters are acceptable but not in the first + * position */ - else if (( isdigit( source[ s_pos ] ) != 0 ) && ( d_pos != 0 )) - { - destination[ d_pos ] = source[ s_pos ]; + else + if ((isdigit(source[s_pos]) != 0) && (d_pos != 0)) + { + destination[d_pos] = source[s_pos]; ++d_pos; ++s_pos; - destination[ d_pos ] = '\0'; - } - + destination[d_pos] = '\0'; + } /* other characters will have to be tried on their own merits */ else + { + switch (source[s_pos]) { - switch( source[ s_pos ] ) - { - case '.': /* tolerated non-alphabetical characters */ - case '_': - destination[ d_pos ] = source[ s_pos ]; - ++d_pos; - ++s_pos; - destination[ d_pos ] = '\0'; - break; - - case STRING: /* terminating characters */ - case '#': /* Microsoft-type double precision */ - case '!': /* Microsoft-type single precision */ + case '.': /* tolerated non-alphabetical + * characters */ + case '_': + destination[d_pos] = source[s_pos]; + ++d_pos; + ++s_pos; + destination[d_pos] = '\0'; + break; - destination[ d_pos ] = source[ s_pos ]; - ++d_pos; - ++s_pos; - destination[ d_pos ] = '\0'; + case STRING: /* terminating characters */ + case BasicDoubleSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicSingleSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicCurrencySuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicLongSuffix: /* Microsoft-type precision + * indicator; ignored but + * terminates */ + case BasicIntegerSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + + destination[d_pos] = source[s_pos]; + ++d_pos; + ++s_pos; + destination[d_pos] = '\0'; - return TRUE; + return TRUE; - case '(': /* begin function/sub name */ - return TRUE; + case '(': /* begin function/sub name */ + return TRUE; - default: /* anything else is non-tolerated */ - return FALSE; - } + default: /* anything else is non-tolerated */ + return FALSE; } } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_getvfname(): found name <%s>", destination ); - bwb_debug( bwb_ebuf ); -#endif - - return TRUE; /* exit after coming to the end */ - } -/*************************************************************** - FUNCTION: exp_validarg() + return TRUE; /* exit after coming to the end */ +#endif + int position = 0; + + bwb_getvarname( source, destination, &position); + return TRUE; /* exit after coming to the end */ - DESCRIPTION: This function reads the expression to - determine whether it is a valid argument (to be - read recursively by bwb_exp() and passed to a - function. +} +/*************************************************************** + + FUNCTION: exp_validarg() + + DESCRIPTION: This function reads the expression to + determine whether it is a valid argument (to be + read recursively by bwb_exp() and passed to a + function. + ***************************************************************/ -#if ANSI_C int -exp_validarg( char *expression ) -#else -int -exp_validarg( expression ) - char *expression; -#endif - { - register int c; +exp_validarg(char *expression) +{ + register int c; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_validarg(): expression <%s>.", - expression ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); c = 0; - while ( TRUE ) + while (TRUE) + { + switch (expression[c]) { - switch( expression[ c ] ) - { - case ' ': - case '\t': - ++c; - break; - case '\0': - return FALSE; - default: - return TRUE; - } + case ' ': + ++c; + break; + case '\0': + return FALSE; + default: + return TRUE; } - } -/*************************************************************** - - FUNCTION: exp_getnval() - - DESCRIPTION: This function returns the numerical value - contain in the expression-stack element - pointed to by 'e'. +} +/*************************************************************** + + FUNCTION: exp_getnval() + + DESCRIPTION: This function returns the numerical value + contain in the expression-stack element + pointed to by 'e'. + ***************************************************************/ -#if ANSI_C -bnumber -exp_getnval( struct exp_ese *e ) -#else -bnumber -exp_getnval( e ) - struct exp_ese *e; -#endif - { +double +exp_getnval(struct exp_ese * e) +{ + BasicNumberType Value; - /* check for variable */ + bwx_DEBUG(__FUNCTION__); - if ( e->operation == VARIABLE ) - { - switch( e->type ) - { - case NUMBER: - return (* var_findnval( e->xvar, e->array_pos )); - default: - bwb_error( err_mismatch ); - return (bnumber) 0.0; - } - } + Value = 0; - /* must be a numerical value */ - - if ( e->operation != NUMBER ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in exp_getnval(): operation <%d> is not a number", - e->operation ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return (bnumber) 0.0; - } - - /* return specific values */ - - switch( e->type ) + if (e->type == NUMBER) + { + switch (e->operation) { + case VARIABLE: + Value = (*var_findnval(e->xvar, e->array_pos)); + break; case NUMBER: - return e->nval; + Value = e->nval; + break; default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in exp_getnval(): type is <%c>", - e->type ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return (bnumber) 0.0; + bwb_error(err_syntax); } - } + else + { + bwb_error(err_mismatch); + } + Value = VerifyNumeric(Value); + return Value; -/*************************************************************** - - FUNCTION: exp_getsval() +} - DESCRIPTION: This function returns a pointer to the - BASIC string structure pointed to by - expression-stack element 'e'. +int +exp_getival(struct exp_ese * e) +{ + double XR; + XR = rint(exp_getnval(e)); + if (XR < INT_MIN) + { + bwb_Warning_Overflow("*** Arithmetic Overflow ***"); + XR = INT_MIN; + } + else + if (XR > INT_MAX) + { + bwb_Warning_Overflow("*** Arithmetic Overflow ***"); + XR = INT_MAX; + } + return (int) XR; +} +/*************************************************************** + + FUNCTION: exp_getsval() + + DESCRIPTION: This function returns a pointer to the + BASIC string structure pointed to by + expression-stack element 'e'. + ***************************************************************/ -#if ANSI_C -bstring * -exp_getsval( struct exp_ese *e ) -#else -bstring * -exp_getsval( e ) - struct exp_ese *e; -#endif - { - static bstring b; -#if TEST_BSTRING - static int init = FALSE; +bstring * +exp_getsval(struct exp_ese * e) +{ + static bstring b; - if ( init == FALSE ) - { - sprintf( b.name, "" ); - } -#endif + bwx_DEBUG(__FUNCTION__); b.rab = FALSE; /* return based on operation type */ - switch( e->operation ) + switch (e->operation) + { + case CONST_STRING: + case OP_STRJOIN: + return &(e->sval); + case VARIABLE: + switch (e->type) { - case CONST_STRING: - case OP_STRJOIN: - return &( e->sval ); - case VARIABLE: - switch( e->type ) - { - case STRING: - return var_findsval( e->xvar, e->array_pos ); - case NUMBER: - sprintf( bwb_ebuf, "%lf ", (double) exp_getnval( e ) ); - str_ctob( &b, bwb_ebuf ); - return &b; - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in exp_getsval(): type <%c> inappropriate for NUMBER", - e->type ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return NULL; - } - break; + case STRING: + return var_findsval(e->xvar, e->array_pos); + case NUMBER: + sprintf(bwb_ebuf, BasicNumberPrintFormat " ", exp_getnval(e)); + str_ctob(&b, bwb_ebuf); + return &b; + default: + sprintf(bwb_ebuf, "in exp_getsval(): type <%c> inappropriate for NUMBER", + e->type); + bwb_error(bwb_ebuf); + return NULL; + } + break; + case NUMBER: + switch (e->type) + { case NUMBER: - switch( e->type ) - { - case NUMBER: - sprintf( bwb_ebuf, "%lf ", (double) exp_getnval( e ) ); - str_ctob( &b, bwb_ebuf ); - return &b; - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in exp_getsval(): type <%c> inappropriate for NUMBER", - e->type ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return NULL; - } - break; + sprintf(bwb_ebuf, BasicNumberPrintFormat " ", exp_getnval(e)); + str_ctob(&b, bwb_ebuf); + return &b; default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in exp_getsval(): operation <%d> inappropriate", - e->operation ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif + sprintf(bwb_ebuf, "in exp_getsval(): type <%c> inappropriate for NUMBER", + e->type); + bwb_error(bwb_ebuf); return NULL; } + break; + default: + sprintf(bwb_ebuf, "in exp_getsval(): operation <%d> inappropriate", + e->operation); + bwb_error(bwb_ebuf); + return NULL; + } /* this point may not be reached */ return NULL; - } +} /*************************************************************** - - FUNCTION: inc_esc() - - DESCRIPTION: This function increments the expression - stack counter. - + + FUNCTION: inc_esc() + + DESCRIPTION: This function increments the expression + stack counter. + ***************************************************************/ -#if ANSI_C -int -inc_esc( void ) -#else int -inc_esc() -#endif - { +inc_esc(void) +{ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inc_esc(): prev level <%d>", - CURTASK expsc ); - bwb_debug ( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); ++CURTASK expsc; - if ( CURTASK expsc >= ESTACKSIZE ) - { + if (CURTASK expsc >= ESTACKSIZE) + { --CURTASK expsc; -#if PROG_ERRORS - sprintf( bwb_ebuf, "in inc_esc(): Maximum expression stack exceeded <%d>", - CURTASK expsc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_overflow ); -#endif + sprintf(bwb_ebuf, "in inc_esc(): Maximum expression stack exceeded <%d>", + CURTASK expsc); + bwb_error(bwb_ebuf); return OP_NULL; - } - -#if INTENSIVE_DEBUG - sprintf( CURTASK exps[ CURTASK expsc ].string, "New Expression Stack Level %d", CURTASK expsc ); -#endif - - CURTASK exps[ CURTASK expsc ].type = NUMBER; - CURTASK exps[ CURTASK expsc ].operation = OP_NULL; - CURTASK exps[ CURTASK expsc ].pos_adv = 0; + } + CURTASK exps[CURTASK expsc].type = NUMBER; + CURTASK exps[CURTASK expsc].operation = OP_NULL; + CURTASK exps[CURTASK expsc].pos_adv = 0; return TRUE; - } +} /*************************************************************** - - FUNCTION: dec_esc() - - DESCRIPTION: This function decrements the expression - stack counter. - + + FUNCTION: dec_esc() + + DESCRIPTION: This function decrements the expression + stack counter. + ***************************************************************/ -#if ANSI_C -int -dec_esc( void ) -#else int -dec_esc() -#endif - { +dec_esc(void) +{ + + bwx_DEBUG(__FUNCTION__); + --CURTASK expsc; - if ( CURTASK expsc < 0 ) - { - CURTASK expsc = 0; -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dec_esc(): Expression stack counter < 0." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_overflow ); -#endif + if (CURTASK expsc < 0) + { + CURTASK expsc = 0; + sprintf(bwb_ebuf, "in dec_esc(): Expression stack counter < 0."); + bwb_error(bwb_ebuf); return OP_NULL; - } - - return TRUE; } + return TRUE; +} + +/* EOF */ diff --git a/bwb_fnc.c b/bwb_fnc.c index b8a479e..ec3308f 100644 --- a/bwb_fnc.c +++ b/bwb_fnc.c @@ -1,1956 +1,3374 @@ /**************************************************************** - + bwb_fnc.c Interpretation Routines - for Predefined Functions + for Predefined Functions for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -****************************************************************/ + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + +***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#define FSTACKSIZE 32 -#include -#include -#include -#include #include "bwbasic.h" -#include "bwb_mes.h" -#if HAVE_SYSSTAT -#include -#endif -#ifndef RAND_MAX /* added in v1.11 */ -#define RAND_MAX 32767 +#ifndef RAND_MAX /* added in v1.11 */ +#define RAND_MAX 32767 #endif -static time_t t; -static struct tm *lt; -/*************************************************************** - FUNCTION: fnc_init() +static time_t t; +static struct tm *lt; - DESCRIPTION: This command initializes the function - linked list, placing all predefined functions - in the list. -***************************************************************/ +/* ORD() Table 1 */ + + /* ACRONYM */ +typedef struct +{ + const int Value; + const char *Name; +} Acronym; + +#define NUM_ACRONYMS (34) + +Acronym AcronymTable[NUM_ACRONYMS] = +{ + {0, "NUL"}, + {1, "SOH"}, + {2, "STX"}, + {3, "ETX"}, + {4, "EOT"}, + {5, "ENQ"}, + {6, "ACK"}, + {7, "BEL"}, + {8, "BS"}, + {9, "HT"}, + {10, "LF"}, + {11, "VT"}, + {12, "FF"}, + {13, "CR"}, + {14, "SO"}, + {15, "SI"}, + {16, "DLE"}, + {17, "DC1"}, + {18, "DC2"}, + {19, "DC3"}, + {20, "DC4"}, + {21, "NAK"}, + {22, "SYN"}, + {23, "ETB"}, + {24, "CAN"}, + {25, "EM"}, + {26, "SUB"}, + {27, "ESC"}, + {28, "FS"}, + {29, "GS"}, + {30, "RS"}, + {31, "US"}, + {32, "SP"}, + {127, "DEL"} +}; + +/* ... ORD() */ -#if ANSI_C -int -fnc_init( int task ) -#else -int -fnc_init( task ) - int task; -#endif - { - register int n; +struct bwb_variable * +fnc_intrinsic(int argc, struct bwb_variable * argv, int unique_id) +{ + /* // this is the generic handler for all intrinsic BASIC functions */ + /* BasicStringLengthMax must be <= INT_MAX */ struct bwb_function *f; - - strcpy( LOCALTASK fnc_start.name, "FNC_START" ); - LOCALTASK fnc_start.type = 'X'; - LOCALTASK fnc_start.vector = fnc_null; - strcpy( LOCALTASK fnc_end.name, "FNC_END" ); - LOCALTASK fnc_end.type = 'x'; - LOCALTASK fnc_end.vector = fnc_null; - LOCALTASK fnc_end.next = &LOCALTASK fnc_end; - - f = &LOCALTASK fnc_start; - - /* now go through each of the preestablished functions and set up - links between them; from this point the program address the functions - only as a linked list (not as an array) */ - - for ( n = 0; n < FUNCTIONS; ++n ) + struct bwb_variable *argn; + unsigned char IsError;/* for ERROR messages */ + /* Follow the BASIC naming conventions, so the code is easier to + * maintain */ + char *S; /* S$ - STRING functions */ + BasicStringLengthType s;/* LEN( S$ ) */ + BasicNumberType N; /* N - NUMBER functions */ + char *A; /* A$ - 1st STRING parameter */ + BasicStringLengthType a;/* LEN( A$ ) */ + char *B; /* B$ - 2nd STRING parameter */ + BasicStringLengthType b;/* LEN( B$ ) */ +#if FALSE + char *C; /* C$ - 3rd STRING parameter */ + BasicStringLengthType c;/* LEN( C$ ) */ +#endif + BasicNumberType X; /* X - 1st NUMBER parameter */ + BasicIntegerType x; /* INT( X ) */ + BasicNumberType Y; /* Y - 2nd NUMBER parameter */ + BasicIntegerType y; /* INT( Y ) */ +#if FALSE + BasicNumberType Z; /* Z - 3rd NUMBER parameter */ + BasicIntegerType z; /* INT( Z ) */ +#endif + bwx_DEBUG(__FUNCTION__); + + + /* so the following code is easier to read and maintain */ +#define PARAM_NUMBER *argn->memnum +#define PARAM_LENGTH argn->memstr->length +#define PARAM_BUFFER argn->memstr->sbuffer +#define RESULT_NUMBER *argv->memnum +#define RESULT_BUFFER argv->memstr->sbuffer +#define RESULT_LENGTH argv->memstr->length + + /* no errors have occurred (yet) */ + IsError = 0; + + /* look up the intrinsic function, so we can get the details */ + { + f = fnc_find_by_id(unique_id); + if (f == NULL) { - f->next = &( bwb_prefuncs[ n ] ); - f = f->next; + /* bwb_prefuncs[] in bwb_tbl.c is wrong -- this is + * really bad */ + sprintf(bwb_ebuf, "INTERNAL ERROR in fnc_intrinsic() - did not find unique_id %d", unique_id); + bwb_error(bwb_ebuf); + return NULL; } - - /* link the last pointer to the end; this completes the list */ - - f->next = &LOCALTASK fnc_end; - - return TRUE; } - -/*************************************************************** - - FUNCTION: fnc_find() - - DESCRIPTION: This C function attempts to locate - a BASIC function with the specified name. - If successful, it returns a pointer to - the C structure for the BASIC function, - if not successful, it returns NULL. - -***************************************************************/ - -#if ANSI_C -struct bwb_function * -fnc_find( char *buffer ) -#else -struct bwb_function * -fnc_find( buffer ) - char *buffer; -#endif + /* the RETURN variable is the first variable in the 'argv' vaariable + * chain */ + if (argv == NULL) { - struct bwb_function * f; - register int n; - static char *tbuf; - static int init = FALSE; - - if ( strlen( buffer ) == 0 ) - { - return NULL; - } - - /* get memory for temporary buffer if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_find" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in fnc_find(): failed to find memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_find(): called for <%s> ", buffer ); - bwb_debug( bwb_ebuf ); -#endif - - strcpy( tbuf, buffer ); - bwb_strtoupper( tbuf ); - - for ( f = CURTASK fnc_start.next; f != &CURTASK fnc_end; f = f->next ) - { - if ( strcmp( f->name, tbuf ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_find(): found <%s> ", f->name ); - bwb_debug( bwb_ebuf ); -#endif - return f; - } - } - - /* search has failed: return NULL */ - - return NULL; - + bwb_error("INTERNAL ERROR"); + return argv; } - -/*************************************************************** - - FUNCTION: fnc_null() - - DESCRIPTION: This is a null function that can be used - to fill in a required function-structure - pointer when needed. - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_null( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_null( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif + if (argv->type == STRING) { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) + if (argv->memstr == NULL) { - init = TRUE; - var_make( &nvar, NUMBER ); + bwb_error("INTERNAL ERROR"); + return argv; } - - return &nvar; + RESULT_LENGTH = 0; + RESULT_BUFFER[RESULT_LENGTH] = '\0'; } - -/*************************************************************** - - FUNCTION: fnc_tab() - - DESCRIPTION: This C function implements the BASIC TAB() - function, adding tab spaces to a specified - column. - - TAB is a core function, i.e., required - for ANSI Minimal BASIC. - - SYNTAX: TAB( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_tab( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_tab( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif + else { - static struct bwb_variable nvar; - static int init = FALSE; - static char t_string[ 4 ]; - bstring *b; - - /* initialize nvar if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, (int) STRING ); - } - - /* check for correct number of parameters */ - - if ( argc < 1 ) + if (argv->memnum == NULL) { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Not enough parameters (%d) to function TAB().", - argc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - break_handler(); - return NULL; - } - else if ( argc > 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Too many parameters (%d) to function TAB().", - argc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - break_handler(); - return NULL; + bwb_error("INTERNAL ERROR"); + return argv; } - - t_string[ 0 ] = PRN_TAB; - t_string[ 1 ] = (char) var_getnval( &( argv[ 0 ] )); - t_string[ 2 ] = '\0'; - - b = var_getsval( &nvar ); - str_ctob( b, t_string ); - - return &nvar; + RESULT_NUMBER = 0; } - -#if COMMON_FUNCS - -/*************************************************************** - - - FUNCTION: fnc_date() - - DESCRIPTION: This C function implements the BASIC - predefined DATE$ function, returning - a string containing the year, month, - and day of the month. - - SYNTAX: DATE$ - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_date( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_date( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif + argn = argv; + /* don't make a bad situation worse */ + if (ERROR_PENDING) { - static struct bwb_variable nvar; - static int init = FALSE; - static char *tbuf; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_date" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in fnc_date(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - time( &t ); - lt = localtime( &t ); - - sprintf( tbuf, "%02d-%02d-%04d", lt->tm_mon + 1, lt->tm_mday, - 1900 + lt->tm_year ); - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - - return &nvar; + /* An unrecognized NON-FATAL ERROR is pending. Just return a + * sane value. */ + /* LET N = LOG(SQR(X)) ' X = -1 */ + return argv; } - -/*************************************************************** - - FUNCTION: fnc_time() - - DESCRIPTION: This C function implements the BASIC - predefined TIME$ function, returning a - string containing the hour, minute, and - second count. - - SYNTAX: TIME$ - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_time( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_time( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif + /* Follow the BASIC naming conventions, so the code is easier to read + * and maintain */ { - static struct bwb_variable nvar; - static char *tbuf; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_time" )) == NULL ) + int i; + int StrCount = 0; /* count of STRING parameters + * - NEVER > 3 */ + int NumCount = 0; /* count of NUMBER parameters + * - NEVER > 3 */ + unsigned long ParameterTests; + ParameterTests = f->ParameterTests; + /* assign reasonable default values */ + S = NULL; /* S$ - return value is a STRING */ + s = 0; /* LEN( S$ ) */ + N = 0; /* N - return value is a NUMBER */ + A = NULL; /* A$ - 1st STRING parameter */ + a = 0; /* LEN( A$ ) */ + B = NULL; /* B$ - 2nd STRING parameter */ + b = 0; /* LEN( B$ ) */ +#if FALSE + C = NULL; /* C$ - 3rd STRING parameter */ + c = 0; /* LEN( C$ ) */ +#endif + X = 0; /* X - 1st NUMBER parameter */ + x = 0; /* INT( X ) */ + Y = 0; /* Y - 2nd NUMBER parameter */ + y = 0; /* INT( Y ) */ +#if FALSE + Z = 0; /* Z - 3rd NUMBER parameter */ + z = 0; /* INT( Z ) */ +#endif + /* assign actual values */ + if (f->ReturnType == STRING) + { + S = RESULT_BUFFER; + s = RESULT_LENGTH; + } + else + { + N = RESULT_NUMBER; + } + for (i = 0; i < argc && IsError == 0; i++) + { + argn = argn->next; + if (argn == NULL) { -#if PROG_ERRORS - bwb_error( "in fnc_time(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif + bwb_error("INTERNAL ERROR"); + return argv; + } + if (argn->type == STRING) + { + if (argn->memstr == NULL) + { + bwb_error("INTERNAL ERROR"); + return argv; + } + StrCount++; + switch (StrCount) + { + case 1: + /* 1st STRING parameter = A$ */ + A = PARAM_BUFFER; + a = PARAM_LENGTH; + if (StringLengthCheck(ParameterTests, a)) + { + IsError = 'A'; + } + else + { + A[a] = 0; + } + break; + case 2: + /* 2nd STRING parameter = B$ */ + B = PARAM_BUFFER; + b = PARAM_LENGTH; + if (StringLengthCheck(ParameterTests, b)) + { + IsError = 'B'; + } + else + { + B[b] = 0; + } + break; +#if FALSE + case 3: + /* 3rd STRING parameter = C$ */ + /* not currently used */ + C = PARAM_BUFFER; + c = PARAM_LENGTH; + if (StringLengthCheck(ParameterTests, c)) + { + IsError = 'C'; + } + else + { + C[c] = 0; + } + break; +#endif + default: + /* Nth STRING parameter = ERROR */ + IsError = i + 1; + break; + } + } + else + { + if (argn->memnum == NULL) + { + bwb_error("INTERNAL ERROR"); + return argv; + } + NumCount++; + switch (NumCount) + { + case 1: + /* 1st NUMBER parameter = X */ + X = PARAM_NUMBER; + if (NumberValueCheck(ParameterTests, X)) + { + IsError = 'X'; + } + else + { + BasicNumberType R; + R = rint(X); + if (R < INT_MIN || R > INT_MAX) + { + /* certainly not a + * classic BASIC + * integer */ + } + else + { + /* Many classic BASIC + * intrinsic + * functions use the + * rounded integer + * value. */ + x = (int) R; + } + } + break; + case 2: + /* 2nd NUMBER parameter = Y */ + Y = PARAM_NUMBER; + if (NumberValueCheck(ParameterTests, Y)) + { + IsError = 'Y'; + } + else + { + BasicNumberType R; + R = rint(Y); + if (R < INT_MIN || R > INT_MAX) + { + /* certainly not a + * classic BASIC + * integer */ + } + else + { + /* Many classic BASIC + * intrinsic + * functions use the + * rounded integer + * value. */ + y = (int) R; + } + } + break; +#if FALSE + case 3: + /* 3rd NUMBER parameter = Z */ + /* not currently used */ + Z = PARAM_NUMBER; + if (NumberValueCheck(ParameterTests, Z)) + { + IsError = 'Z'; + } + else + { + BasicNumberType R; + R = rint(Z); + if (R < INT_MIN || R > INT_MAX) + { + /* certainly not a + * classic BASIC + * integer */ + } + else + { + /* Many classic BASIC + * intrinsic + * functions use the + * rounded integer + * value. */ + z = (int) R; + } + } + break; +#endif + default: + /* Nth NUMBER parameter = ERROR */ + IsError = i + 1; + break; + } } + ParameterTests = ParameterTests >> 4; } - - time( &t ); - lt = localtime( &t ); - - sprintf( tbuf, "%02d:%02d:%02d", lt->tm_hour, lt->tm_min, - lt->tm_sec ); - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - - return &nvar; } -/*************************************************************** - - FUNCTION: fnc_chr() - - DESCRIPTION: This C function implements the BASIC - predefined CHR$ function, returning a - string containing the single character - whose ASCII value is the argument to - this function. - - SYNTAX: CHR$( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_chr( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_chr( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - char tbuf[ MAXSTRINGSIZE + 1 ]; - static int init = FALSE; -#if TEST_BSTRING - bstring *b; -#endif - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_chr(): entered function, argc <%d>", - argc ); - bwb_debug( bwb_ebuf ); -#endif - /* initialize the variable if necessary */ +#ifndef PI +#define PI 3.14159265358979323846 +#endif /* PI */ +#define MIN( X, Y ) X < Y ? X : Y; +#define MAX( X, Y ) X > Y ? X : Y; - if ( init == FALSE ) + /* execute the intrinsic function */ + if (IsError == 0 /* WARNING -- do NOT execute a BASIC + intrinsic function with bogus parameters */ ) + switch (unique_id) { - init = TRUE; - var_make( &nvar, STRING ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_chr(): entered function, initialized nvar" ); - bwb_debug( bwb_ebuf ); -#endif - } + /* ALL paramters have been checked for TYPE MISMATCH + * and INVALID RANGE */ + /* ONLY A HANDFUL OF ERRORS CAN OCCUR */ + case 0: + { + /* INTERNAL ERROR */ + IsError = 1; + } + break; + case F_DEF_FN_N: + { + /* INTERNAL ERROR */ + IsError = 1; + } + break; + case F_ARGC_N: + /* N = ARGC */ + { + /* determine number of parameters to the + * current USER DEFINED FUNCTION */ + int n; + n = 0; + if (CURTASK exsc >= 0) + { + int Loop; + int i; + Loop = TRUE; + for (i = CURTASK exsc; i >= 0 && Loop == TRUE; i--) + { + if (CURTASK excs[i].LoopTopLine != NULL) + { + switch (CURTASK excs[i].LoopTopLine->cmdnum) + { + case C_FUNCTION: + case C_SUB: + /* we have + * checked + * all the + * way to a + * FUNCTION + * or SUB + * boundary */ + /* FOUND */ + { + struct bwb_variable *v; + + for (v = CURTASK excs[i].local_variable; v != NULL && Loop == TRUE; v = v->next) + { + n++; + } + } + Loop = FALSE; + break; + } + } + } + } + n--; /* FUNCTION or SUB name */ + N = n; + } + break; + case F_ARGT_X_S: + /* S$ = ARGT$( X ) */ + { + /* determine parameter type to the current + * USER DEFINED FUNCTION */ + int Found; + int n; + Found = FALSE; + n = 0; + s = 0; + if (x < 1) + { + /* bad param number */ + } + else + if (CURTASK exsc >= 0) + { + int Loop; + int i; + Loop = TRUE; + for (i = CURTASK exsc; i >= 0 && Loop == TRUE; i--) + { + if (CURTASK excs[i].LoopTopLine != NULL) + { + switch (CURTASK excs[i].LoopTopLine->cmdnum) + { + case C_FUNCTION: + case C_SUB: + /* we hav e + * che cke d + * all + * + * the + * + * way to a FUN + * CTI ON or + * SUB + * + * boun dar y */ + /* FOU ND */ + { + struct bwb_variable *v; + + + for (v = CURTASK excs[i].local_variable; v != NULL && Loop == TRUE; v = v->next) + { + if (n == x) + { + if (v->type == STRING) + { + S[0] = BasicStringSuffix; + s = 1; + Found = TRUE; + } + else + { + S[0] = BasicDoubleSuffix; + s = 1; + Found = TRUE; + } + Loop = FALSE; + } + n++; + } + } + Loop = FALSE; + break; + } + } + } + } + if (Found == FALSE) + { + IsError = 'X'; + } + } + break; - /* check arguments */ + case F_ARGV_X_S: + /* S$ = ARGV$( X ) */ + { + /* determine parameter value to the current + * USER DEFINED FUNCTION */ + int Found; + int n; + Found = FALSE; + n = 0; + if (x < 1) + { + /* bad param number */ + } + else + if (CURTASK exsc >= 0) + { + int Loop; + int i; + Loop = TRUE; + for (i = CURTASK exsc; i >= 0 && Loop == TRUE; i--) + { + if (CURTASK excs[i].LoopTopLine != NULL) + { + switch (CURTASK excs[i].LoopTopLine->cmdnum) + { + case C_FUNCTION: + case C_SUB: + /* FOU ND */ + { + struct bwb_variable *v; + + + for (v = CURTASK excs[i].local_variable; v != NULL && Loop == TRUE; v = v->next) + { + if (n == x) + { + if (v->type == STRING) + { + s = v->memstr->length; + memcpy(S, v->memstr->sbuffer, s); + Found = TRUE; + } + else + { + } + Loop = FALSE; + } + n++; + } + } + Loop = FALSE; + break; + } + } + } + } + if (Found == FALSE) + { + IsError = 'X'; + } + } + break; -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough arguments to function CHR$()" ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function CHR$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif + case F_ARGV_X_N: + /* S$ = ARGV( X ) */ + { + /* determine parameter value to the current + * USER DEFINED FUNCTION */ + int Found; + int n; + Found = FALSE; + n = 0; + if (x < 1) + { + /* bad param number */ + } + else + if (CURTASK exsc >= 0) + { + int Loop; + int i; + Loop = TRUE; + for (i = CURTASK exsc; i >= 0 && Loop == TRUE; i--) + { + if (CURTASK excs[i].LoopTopLine != NULL) + { + switch (CURTASK excs[i].LoopTopLine->cmdnum) + { + case C_FUNCTION: + case C_SUB: + /* FOU ND */ + { + struct bwb_variable *v; + + + for (v = CURTASK excs[i].local_variable; v != NULL && Loop == TRUE; v = v->next) + { + if (n == x) + { + if (v->type == STRING) + { + } + else + { + N = *v->memnum; + Found = TRUE; + } + Loop = FALSE; + } + n++; + } + } + Loop = FALSE; + break; + } + } + } + } + if (Found == FALSE) + { + IsError = 'X'; + } + } + break; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_chr(): entered function, checkargs ok" ); - bwb_debug( bwb_ebuf ); -#endif - tbuf[ 0 ] = (char) var_getnval( &( argv[ 0 ] ) ); - tbuf[ 1 ] = '\0'; - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); -#if TEST_BSTRING - b = var_findsval( &nvar, nvar.array_pos ); - sprintf( bwb_ebuf, "in fnc_chr(): bstring name is <%s>", b->name ); - bwb_debug( bwb_ebuf ); -#endif -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_chr(): tbuf[ 0 ] is <%c>", tbuf[ 0 ] ); - bwb_debug( bwb_ebuf ); -#endif + case F_ASC_A_N: + /* N = ASC( A$ ) */ + { + /* P1BYT */ + N = A[0]; + } + break; + case F_CDBL_X_N: + /* N = CDBL( X ) */ + { + /* P1DBL */ + N = X; + } + break; + case F_CSNG_X_N: + /* N = CSNG( X ) */ + { + /* P1FLT */ + N = X; + } + break; + case F_CINT_X_N: + /* N = CINT( X ) */ + { + /* P1INT */ + N = rint(X); + } + break; + case F_CLNG_X_N: + /* N = CLNG( X ) */ + { + /* P1LNG */ + N = rint(X); + } + break; + case F_CCUR_X_N: + /* N = CCUR( X ) */ + { + /* P1CUR */ + N = rint(X); + } + break; + case F_MKD_X_S: + /* S$ = MKD$( X ) */ + { + /* P1DBL */ + BasicDoubleType x; + x = (BasicDoubleType) X; + s = sizeof(BasicDoubleType); + memcpy(S, &x, s); + } + break; + case F_MKS_X_S: + /* S$ = MKS$( X ) */ + { + /* P1FLT */ + BasicSingleType x; + x = (BasicSingleType) X; + s = sizeof(BasicSingleType); + memcpy(S, &x, s); + } + break; + case F_MKI_X_S: + /* S$ = MKI$( X ) */ + { + /* P1INT */ + BasicIntegerType x; + x = (BasicIntegerType) rint(X); + s = sizeof(BasicIntegerType); + memcpy(S, &x, s); + } + break; + case F_MKL_X_S: + /* S$ = MKL$( X ) */ + { + /* P1LNG */ + BasicLongType x; + x = (BasicLongType) rint(X); + s = sizeof(BasicLongType); + memcpy(S, &x, s); + } + break; + case F_MKC_X_S: + /* S$ = MKC$( X ) */ + { + /* P1CUR */ + BasicCurrencyType x; + x = (BasicCurrencyType) rint(X); + s = sizeof(BasicCurrencyType); + memcpy(S, &x, s); + } + break; + case F_CVD_A_N: + /* N = CVD( A$ ) */ + { + /* P1DBL */ + BasicDoubleType n; + a = sizeof(BasicDoubleType); + memcpy(&n, A, a); + N = n; + } + break; + case F_CVS_A_N: + /* N = CVS( X$ ) */ + { + /* P1FLT */ + BasicSingleType n; + a = sizeof(BasicSingleType); + memcpy(&n, A, a); + N = n; + } + break; + case F_CVI_A_N: + /* N = CVI( X$ ) */ + { + /* P1INT */ + BasicIntegerType n; + a = sizeof(BasicIntegerType); + memcpy(&n, A, a); + N = n; + } + break; + case F_CVL_A_N: + /* N = CVL( X$ ) */ + { + /* P1LNG */ + BasicLongType n; + a = sizeof(BasicLongType); + memcpy(&n, A, a); + N = n; + } + break; + case F_CVC_A_N: + /* N = CVC( X$ ) */ + { + /* P1CUR */ + BasicCurrencyType n; + a = sizeof(BasicCurrencyType); + memcpy(&n, A, a); + N = n; + } + break; + case F_ENVIRON_A_S: + /* S$ = ENVIRON$( A$ ) */ + { + /* P1BYT */ + char *CharPointer; + + CharPointer = getenv(A); + if (CharPointer == NULL) + { + /* empty string */ + } + else + { + s = strlen(CharPointer); + s = MIN(s, BasicStringLengthMax); + if (s == 0) + { + /* empty string */ + } + else + { + memcpy(S, CharPointer, s); + } + } + } + break; + case F_ENVIRON_A_N: + /* ENVIRON A$ */ + { + /* P1BYT */ + + char *CharPointer; + + CharPointer = strchr(A, '='); + if (CharPointer == NULL) + { + /* missing required '=' */ + IsError = 'A'; + } + else + { + if (putenv(A) == -1) + { + IsError = 'A'; + } + else + { + /* OK */ + N = 0; + } + } + } + break; - return &nvar; - } + case F_OPEN_A_X_B_Y_N: + /* OPEN "I"|"O"|"R"|"A", [#]n, filename [,rlen] */ + { + /* P1STR|P2NUM|P3STR|P4NUM */ + /* P1BYT|P2DEV|P3BYT|P4INT */ + + int mode; + + while (*A == ' ') + { + A++; /* LTRIM$ */ + } + mode = ToUpper(*A); + switch (mode) + { + case 'I': + case 'O': + case 'A': + case 'B': + case 'R': + break; + default: + mode = DEVMODE_CLOSED; + break; + } + + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + if (mode == DEVMODE_CLOSED) + { + IsError = 'A'; + } + else + if (dev_table[x].mode != DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + if (y < 0) + { + IsError = 'Y'; + } + else + if (y == 0 && mode == 'R') + { + IsError = 'Y'; + } + else + { + FILE *fp = NULL; + char *buffer = NULL; + switch (mode) + { + case 'I': + mode = DEVMODE_INPUT; + fp = fopen(B, "r"); + y = 0; + break; + case 'O': + mode = DEVMODE_OUTPUT; + fp = fopen(B, "w"); + y = 0; + break; + case 'A': + mode = DEVMODE_APPEND; + fp = fopen(B, "a"); + y = 0; + break; + case 'B': + mode = DEVMODE_BINARY; + fp = fopen(B, "r+"); + if (fp == NULL) + { + fp = fopen(B, "w"); + fclose(fp); + fp = fopen(B, "r+"); + } + y = 0; + break; + case 'R': + mode = DEVMODE_RANDOM; + fp = fopen(B, "r+"); + if (fp == NULL) + { + fp = fopen(B, "w"); + fclose(fp); + fp = fopen(B, "r+"); + } + if (fp != NULL) + { + buffer = CALLOC(y, 1, "F_OPEN_A_X_B_Y_V"); + } + break; + } + if (fp == NULL) + { + /* i n v a l i d + * + * fi l e + * + * na m e */ + IsError = 'B'; + } + else + if (mode == DEVMODE_RANDOM && buffer == NULL) + { + /* i n v a l i d + * + * re c o r d + * + * le n g t h */ + IsError = 'Y'; + } + else + { + dev_table[x].mode = mode; + dev_table[x].cfp = fp; + dev_table[x].width = y; + /* N O T E : + * + * WI D T H + * + * == + * RE C L E N */ + dev_table[x].col = 1; + dev_table[x].buffer = buffer; + strcpy(dev_table[x].filename, B); + if (mode == DEVMODE_APPEND) + { + fseek(fp, 0, SEEK_END); + } + else + if (mode == DEVMODE_RANDOM) + { + memset(buffer, ' ', y); /* flush */ + } + } + } + } + break; + case F_OPEN_A_X_B_N: + /* default LEN is 128 for RANDOM, 0 for all others */ + /* OPEN "I"|"O"|"R"|"A", [#]n, filename [,rlen] */ + { + /* P1STR|P2NUM|P3STR|P4NUM */ + /* P1BYT|P2DEV|P3BYT|P4INT */ + int mode; + int y = 0; + + while (*A == ' ') + { + A++; /* LTRIM$ */ + } + mode = ToUpper(*A); + switch (mode) + { + case 'I': + case 'O': + case 'A': + case 'B': + break; + case 'R': + y = bwx_RANDOM_RECORD_SIZE(); + break; + default: + mode = DEVMODE_CLOSED; + break; + } + + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + if (mode == DEVMODE_CLOSED) + { + IsError = 'A'; + } + else + if (dev_table[x].mode != DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + if (y < 0) + { + IsError = 'Y'; + } + else + if (y == 0 && mode == 'R') + { + IsError = 'Y'; + } + else + if (y > 0 && mode == 'B') + { + IsError = 'Y'; + } + else + { + FILE *fp = NULL; + char *buffer = NULL; + switch (mode) + { + case 'I': + mode = DEVMODE_INPUT; + fp = fopen(B, "r"); + y = 0; + break; + case 'O': + mode = DEVMODE_OUTPUT; + fp = fopen(B, "w"); + y = 0; + break; + case 'A': + mode = DEVMODE_APPEND; + fp = fopen(B, "a"); + y = 0; + break; + case 'B': + mode = DEVMODE_BINARY; + fp = fopen(B, "r+"); + if (fp == NULL) + { + fp = fopen(B, "w"); + fclose(fp); + fp = fopen(B, "r+"); + } + y = 0; + break; + case 'R': + mode = DEVMODE_RANDOM; + fp = fopen(B, "r+"); + if (fp == NULL) + { + fp = fopen(B, "w"); + fclose(fp); + fp = fopen(B, "r+"); + } + if (fp != NULL) + { + buffer = CALLOC(y, 1, "F_OPEN_A_X_B_Y_V"); + } + break; + } + if (fp == NULL) + { + /* i n v a l i d + * + * fi l e + * + * na m e */ + IsError = 'B'; + } + else + if (mode == DEVMODE_RANDOM && buffer == NULL) + { + /* i n v a l i d + * + * re c o r d + * + * le n g t h */ + IsError = 'Y'; + } + else + { + dev_table[x].mode = mode; + dev_table[x].cfp = fp; + dev_table[x].width = y; + /* N O T E : + * + * WI D T H + * + * == + * RE C L E N */ + dev_table[x].col = 1; + dev_table[x].buffer = buffer; + strcpy(dev_table[x].filename, B); + if (mode == DEVMODE_APPEND) + { + fseek(fp, 0, SEEK_END); + } + else + if (mode == DEVMODE_RANDOM) + { + memset(buffer, ' ', y); /* flush */ + } + } + } + } + break; + case F_LOC_X_N: + /* N = LOC( X ) */ + { + /* P1DEV */ + if (x == CONSOLE_FILE_NUMBER) + { + N = 0; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + { + FILE *fp; + fp = dev_table[x].cfp; + N = ftell(fp); + if (dev_table[x].mode == DEVMODE_RANDOM) + { + /* record number */ + N /= dev_table[x].width; + } + else + if (dev_table[x].mode == DEVMODE_BINARY) + { + /* byte position */ + } + else + { + /* byte positiion / 128 */ + N /= 128; + } + N = floor(N); + N++; /* C to BASIC */ + } + } + break; + case F_SEEK_X_N: + /* N = SEEK( X ) */ + { + /* P1DEV */ + if (x == CONSOLE_FILE_NUMBER) + { + N = 0; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + { + FILE *fp; + fp = dev_table[x].cfp; + N = ftell(fp); + if (dev_table[x].mode == DEVMODE_RANDOM) + { + /* record number */ + N /= dev_table[x].width; + } + else + { + /* byte positiion */ + } + N = floor(N); + N++; /* C to BASIC */ + } + } + break; + case F_SEEK_X_Y_N: + /* SEEK X, Y */ + { + /* P1DEV|P2INT */ + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + if (y < 1) + { + IsError = 'Y'; + } + else + { + long offset; + offset = y; + offset--; /* BASIC to C */ + if (dev_table[x].mode == DEVMODE_RANDOM) + { + offset *= dev_table[x].width; + } + if (fseek(dev_table[x].cfp, offset, SEEK_SET) != 0) + { + IsError = 'Y'; + } + else + { + /* OK */ + N = 0; + } + } + } + break; + case F_LOF_X_N: + /* N = LOF( X ) */ + { + /* P1DEV */ + if (x == CONSOLE_FILE_NUMBER) + { + N = 0; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + { + /* file size in bytes */ + FILE *fp; + int current; + int total; + fp = dev_table[x].cfp; + current = ftell(fp); + fseek(fp, 0, SEEK_END); + total = ftell(fp); + if (total == current) + { + /* EOF */ + } + else + { + fseek(fp, current, SEEK_SET); + } + N = total; + } + } + break; + case F_EOF_X_N: + /* N = EOF( X ) */ + { + /* P1DEV */ + if (x == CONSOLE_FILE_NUMBER) + { + N = 0; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + { + /* are we at the end? */ + FILE *fp; + int current; + int total; + fp = dev_table[x].cfp; + current = ftell(fp); + fseek(fp, 0, SEEK_END); + total = ftell(fp); + if (total == current) + { + /* EOF */ + N = -1; + } + else + { + fseek(fp, current, SEEK_SET); + N = 0; + } + } + } + break; + case F_FILEATTR_X_Y_N: + /* N = FILEATTR( X, Y ) */ + { + /* P1DEV|P2INT */ + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + { + if (y == 1) + { + N = dev_table[x].mode; + } + else + if (y == 2) + { + N = 0; + } + else + { + IsError = 'Y'; + } + } + } + break; + case F_CLOSE_X_N: + /* CLOSE X */ + { + /* P1DEV */ + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + { + if (dev_table[x].cfp != NULL) + { + fclose(dev_table[x].cfp); + } + if (dev_table[x].buffer != NULL) + { + FREE(dev_table[x].buffer, "F_CLOSE_X_N"); + } + dev_table[x].mode = DEVMODE_CLOSED; + dev_table[x].width = 0; + dev_table[x].col = 0; + dev_table[x].filename[0] = '\0'; + dev_table[x].cfp = NULL; + dev_table[x].buffer = NULL; + N = 0; + } + } + break; + case F_FREEFILE_N: + /* N = FREEFILE */ + { + /* PNONE */ + int x; + for (x = 0; x <= BasicFileNumberMax; x++) + { + if (x == CONSOLE_FILE_NUMBER) + { + /* ignore */ + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + N = x; + break; + } + } + } + break; + case F_RESET_N: + /* RESET */ + { + /* PNONE */ + int x; + for (x = 0; x <= BasicFileNumberMax; x++) + { + if (x == CONSOLE_FILE_NUMBER) + { + /* ignore */ + } + else + if (dev_table[x].mode != DEVMODE_CLOSED) + { + if (dev_table[x].cfp != NULL) + { + fclose(dev_table[x].cfp); + } + if (dev_table[x].buffer != NULL) + { + FREE(dev_table[x].buffer, "F_RESET_V"); + } + dev_table[x].mode = DEVMODE_CLOSED; + dev_table[x].width = 0; + dev_table[x].col = 0; + dev_table[x].filename[0] = '\0'; + dev_table[x].cfp = NULL; + dev_table[x].buffer = NULL; + } + } + N = 0; + } + break; + case F_GET_X_Y_N: + /* GET X, Y */ + { + /* P1DEV|P2INT */ + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + if (dev_table[x].mode != DEVMODE_RANDOM) + { + IsError = 'X'; + } + else + if (y < 1) + { + IsError = 'Y'; + } + else + { + long offset; + offset = y; + offset--; /* BASIC to C */ + offset *= dev_table[x].width; + if (fseek(dev_table[x].cfp, offset, SEEK_SET) != 0) + { + IsError = 'Y'; + } + else + { + int i; + for (i = 0; i < dev_table[x].width; i++) + { + dev_table[x].buffer[i] = fgetc(dev_table[x].cfp); + } + N = 0; + } + } + } + break; + case F_GET_X_N: + /* GET X */ + { + /* PDEV1 */ + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + if (dev_table[x].mode != DEVMODE_RANDOM) + { + IsError = 'X'; + } + else + { + { + int i; + for (i = 0; i < dev_table[x].width; i++) + { + dev_table[x].buffer[i] = fgetc(dev_table[x].cfp); + } + N = 0; + } + } + } + break; + case F_PUT_X_Y_N: + /* PUT X, Y */ + { + /* P1DEV|P2INT */ + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + if (dev_table[x].mode != DEVMODE_RANDOM) + { + IsError = 'X'; + } + else + if (y < 1) + { + IsError = 'Y'; + } + else + { + long offset; + offset = y; + offset--; /* BASIC to C */ + offset *= dev_table[x].width; + if (fseek(dev_table[x].cfp, offset, SEEK_SET) != 0) + { + IsError = 'Y'; + } + else + { + int i; + for (i = 0; i < dev_table[x].width; i++) + { + fputc(dev_table[x].buffer[i], dev_table[x].cfp); + dev_table[x].buffer[i] = ' '; /* flush */ + } + N = 0; + } + } + } + break; + case F_PUT_X_N: + /* PUT X */ + { + /* P1DEV */ + if (x == CONSOLE_FILE_NUMBER) + { + IsError = 'X'; + } + else + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + if (dev_table[x].mode != DEVMODE_RANDOM) + { + IsError = 'X'; + } + else + { + { + int i; + for (i = 0; i < dev_table[x].width; i++) + { + fputc(dev_table[x].buffer[i], dev_table[x].cfp); + dev_table[x].buffer[i] = ' '; /* flush */ + } + N = 0; + } + } + } + break; + case F_WIDTH_X_N: + /* WIDTH X */ + { + /* P1BYT */ + /* console is #0 */ + dev_table[CONSOLE_FILE_NUMBER].width = x; + dev_table[CONSOLE_FILE_NUMBER].col = 1; + N = 0; + } + break; + case F_WIDTH_X_Y_N: + /* WIDTH X, Y */ + { + /* P1DEV|PB2YT */ + if (dev_table[x].mode == DEVMODE_CLOSED) + { + IsError = 'X'; + } + else + if (dev_table[x].mode == DEVMODE_RANDOM) + { + IsError = 'X'; + } + else + { + dev_table[x].width = y; + dev_table[x].col = 1; + N = 0; + } + } + break; -/*************************************************************** - FUNCTION: fnc_len() - DESCRIPTION: This C function implements the BASIC LEN() - function, returning the length of a - specified string in bytes. - - SYNTAX: LEN( string$ ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_len( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_len( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - static char *tbuf; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_len" )) == NULL ) + case F_INSTR_X_A_B_N: + /* N = INSTR( X, A$, B$ ) */ { -#if PROG_ERRORS - bwb_error( "in fnc_len(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif + /* P1POS */ + if (a == 0) + { + /* empty searched */ + } + else + if (b == 0) + { + /* empty pattern */ + } + else + if (b > a) + { + /* pattern is longer than searched */ + } + else + { + /* search */ + int i; + int n; + n = a - b; /* last valid search + * position */ + n++; + + x--; /* BASIC to C */ + A += x; /* advance to the start + * position */ + for (i = x; i < n; i++) + { + if (memcmp(A, B, b) == 0) + { + /* FOU ND */ + i++; /* C to BASIC */ + N = i; + i = n; /* exit for */ + } + A++; + } + } } - } - - /* check parameters */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function LEN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function LEN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* return length as an integer */ - - str_btoc( tbuf, var_getsval( &( argv[ 0 ] )) ); - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) strlen( tbuf ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_pos() - - DESCRIPTION: This C function implements the BASIC - POS() function, returning the current - column position for the output device. - - SYNTAX: POS - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_pos( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_pos( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize nvar if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, (int) NUMBER ); - } - - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) prn_col; - - return &nvar; - } - -#endif /* COMMON_FUNCS */ - -#if MS_FUNCS - -/*************************************************************** - - FUNCTION: fnc_timer() - - DESCRIPTION: This C function implements the BASIC - predefined TIMER function - - SYNTAX: TIMER - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_timer( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_timer( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static time_t now; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - - time( &now ); - /* Following statement was (bnumber) (JBV) */ - * var_findnval( &nvar, nvar.array_pos ) - = (float) fmod( (double) now, (double) (60*60*24)); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_mid() - - DESCRIPTION: This C function implements the BASIC - predefined MID$ function - - SYNTAX: MID$( string$, start-position-in-string[, number-of-spaces ] ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_mid( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_mid( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - register int c; - char target_string[ MAXSTRINGSIZE + 1 ]; - int target_counter, num_spaces; - char tbuf[ MAXSTRINGSIZE + 1 ]; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - } - - /* check arguments */ - -#if PROG_ERRORS - if ( argc < 2 ) - { - sprintf( bwb_ebuf, "Not enough arguments to function MID$()" ); - bwb_error( bwb_ebuf ); - return &nvar; - } - - if ( argc > 3 ) - { - sprintf( bwb_ebuf, "Two many arguments to function MID$()" ); - bwb_error( bwb_ebuf ); - return &nvar; - } - -#else - if ( fnc_checkargs( argc, argv, 2, 3 ) == FALSE ) - { - return NULL; - } -#endif - - /* get arguments */ - - str_btoc( target_string, var_getsval( &( argv[ 0 ] ) )); - target_counter = (int) var_getnval( &( argv[ 1 ] ) ) - 1; - if ( target_counter > (int) strlen( target_string )) - { - tbuf[ 0 ] = '\0'; - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - return &nvar; - } - - if ( argc == 3 ) - { - num_spaces = (int) var_getnval( &( argv[ 2 ] )); - } - else - { - num_spaces = MAXSTRINGSIZE; - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_mid() string <%s> startpos <%d> spaces <%d>", - target_string, target_counter, num_spaces ); - bwb_debug( bwb_ebuf ); -#endif - - c = 0; - tbuf[ c ] = '\0'; - while ( ( c < num_spaces ) && ( target_string[ target_counter ] != '\0' )) - { - tbuf[ c ] = target_string[ target_counter ]; - ++c; - tbuf[ c ] = '\0'; - ++target_counter; - } - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_left() - - DESCRIPTION: This C function implements the BASIC - predefined LEFT$ function - - SYNTAX: LEFT$( string$, number-of-spaces ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_left( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_left( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - register int c; - char target_string[ MAXSTRINGSIZE + 1 ]; - int target_counter, num_spaces; - char tbuf[ MAXSTRINGSIZE + 1 ]; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - } - - /* check arguments */ - -#if PROG_ERRORS - if ( argc < 2 ) - { - sprintf( bwb_ebuf, "Not enough arguments to function LEFT$()" ); - bwb_error( bwb_ebuf ); - return &nvar; - } - - if ( argc > 2 ) - { - sprintf( bwb_ebuf, "Two many arguments to function LEFT$()" ); - bwb_error( bwb_ebuf ); - return &nvar; - } - -#else - if ( fnc_checkargs( argc, argv, 2, 2 ) == FALSE ) - { - return NULL; - } -#endif - - /* get arguments */ - - str_btoc( tbuf, var_getsval( &( argv[ 0 ] ) )); - target_counter = 0; - num_spaces = (int) var_getnval( &( argv[ 1 ] )); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_left() string <%s> startpos <%d> spaces <%d>", - tbuf, target_counter, num_spaces ); - bwb_debug( bwb_ebuf ); -#endif - - c = 0; - target_string[ 0 ] = '\0'; - while (( c < num_spaces ) && ( tbuf[ c ] != '\0' )) - { - target_string[ target_counter ] = tbuf[ c ]; - ++target_counter; - target_string[ target_counter ] = '\0'; - ++c; - } - str_ctob( var_findsval( &nvar, nvar.array_pos ), target_string ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_right() - - DESCRIPTION: This C function implements the BASIC - predefined RIGHT$ function - - SYNTAX: RIGHT$( string$, number-of-spaces ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_right( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_right( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - register int c; - char target_string[ MAXSTRINGSIZE + 1 ]; - int target_counter, num_spaces; - char tbuf[ MAXSTRINGSIZE + 1 ]; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - } - - /* check arguments */ - -#if PROG_ERRORS - if ( argc < 2 ) - { - sprintf( bwb_ebuf, "Not enough arguments to function RIGHT$()" ); - bwb_error( bwb_ebuf ); - return &nvar; - } - - if ( argc > 2 ) - { - sprintf( bwb_ebuf, "Two many arguments to function RIGHT$()" ); - bwb_error( bwb_ebuf ); - return &nvar; - } - -#else - if ( fnc_checkargs( argc, argv, 2, 2 ) == FALSE ) - { - return NULL; - } -#endif - - /* get arguments */ - - str_btoc( target_string, var_getsval( &( argv[ 0 ] ) )); - target_counter = strlen( target_string ) - (int) var_getnval( &( argv[ 1 ] )); - num_spaces = MAXSTRINGSIZE; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_right() string <%s> startpos <%d> spaces <%d>", - target_string, target_counter, num_spaces ); - bwb_debug( bwb_ebuf ); -#endif - - c = 0; - tbuf[ c ] = '\0'; - while ( ( c < num_spaces ) && ( target_string[ target_counter ] != '\0' )) - { - tbuf[ c ] = target_string[ target_counter ]; - ++c; - tbuf[ c ] = '\0'; - ++target_counter; - } - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_asc() - - DESCRIPTION: This function implements the predefined - BASIC ASC() function, returning the ASCII - number associated with the first character - in the string argument. - - SYNTAX: ASC( string$ ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_asc( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_asc( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static char *tbuf; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_asc" )) == NULL ) + break; + case F_INSTR_A_B_N: + /* N = INSTR( A$, B$ ) */ { -#if PROG_ERRORS - bwb_error( "in fnc_asc(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif + if (a == 0) + { + /* empty searched */ + } + else + if (b == 0) + { + /* empty pattern */ + } + else + if (b > a) + { + /* pattern is longer than searched */ + } + else + { + /* search */ + int i; + int n; + n = a - b; /* last valid search + * position */ + n++; + /* search */ + for (i = 0; i < n; i++) + { + if (memcmp(A, B, b) == 0) + { + /* FOU ND */ + i++; /* C to BASIC */ + N = i; + i = n; /* exit for */ + } + A++; + } + } } - } - - /* check parameters */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function ASC().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function ASC().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - if ( argv[ 0 ].type != STRING ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Argument to function ASC() must be a string." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - return NULL; - } - - /* assign ASCII value of first character in the buffer */ - - str_btoc( tbuf, var_findsval( &( argv[ 0 ] ), argv[ 0 ].array_pos ) ); - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) tbuf[ 0 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_asc(): string is <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_string() - - DESCRIPTION: This C function implements the BASIC - STRING$() function. - - SYNTAX: STRING$( number, ascii-value|string$ ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_string( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_string( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - int length; - register int i; - char c; - static char *tbuf; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_string" )) == NULL ) + break; + case F_SPACE_X_S: + /* S$ = SPACE$( X ) */ { -#if PROG_ERRORS - bwb_error( "in fnc_string(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif + /* P1LEN */ + if (x == 0) + { + /* no copies */ + } + else + { + memset(S, ' ', x); + s = x; + } } - } - - /* check for correct number of parameters */ - -#if PROG_ERRORS - if ( argc < 2 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function STRING$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 2 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function STRING$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 2, 2 ) == FALSE ) - { - return NULL; - } -#endif - - strcpy( nvar.name, "(string$)!" ); - nvar.type = STRING; - tbuf[ 0 ] = '\0'; - length = (int) var_getnval( &( argv[ 0 ] )); - - if ( argv[ 1 ].type == STRING ) - { - str_btoc( tbuf, var_getsval( &( argv[ 1 ] ))); - c = tbuf[ 0 ]; - } - else - { - c = (char) var_getnval( &( argv[ 1 ] ) ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_string(): argument <%s> arg type <%c>, length <%d>", - tbuf, argv[ 1 ].type, length ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in fnc_string(): type <%c>, c <0x%x>=<%c>", - argv[ 1 ].type, c, c ); - bwb_debug( bwb_ebuf ); -#endif - - /* add characters to the string */ - - for ( i = 0; i < length; ++i ) - { - tbuf[ i ] = c; - tbuf[ i + 1 ] = '\0'; - } - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_instr() - - DESCRIPTION: This C function implements the BASIC - INSTR() function, returning the position - in string string-searched$ at which - string-pattern$ occurs. - - SYNTAX: INSTR( [start-position,] string-searched$, string-pattern$ ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_instr( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_instr( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - int n_pos, x_pos, y_pos; - int start_pos; - register int n; - char xbuf[ MAXSTRINGSIZE + 1 ]; - char ybuf[ MAXSTRINGSIZE + 1 ]; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - - /* check for correct number of parameters */ - -#if PROG_ERRORS - if ( argc < 2 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function INSTR().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 3 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function INSTR().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 2, 3 ) == FALSE ) - { - return NULL; - } -#endif - - /* determine argument positions */ - - if ( argc == 3 ) - { - n_pos = 0; - x_pos = 1; - y_pos = 2; - } - else - { - n_pos = -1; - x_pos = 0; - y_pos = 1; - } - - /* determine starting position */ - - if ( n_pos == 0 ) - { - start_pos = (int) var_getnval( &( argv[ n_pos ] ) ) - 1; - } - else - { - start_pos = 0; - } - - /* get x and y strings */ - - str_btoc( xbuf, var_getsval( &( argv[ x_pos ] ) ) ); - str_btoc( ybuf, var_getsval( &( argv[ y_pos ] ) ) ); - - /* now search for match */ - - for ( n = start_pos; n < (int) strlen( xbuf ); ++n ) - { - if ( strncmp( &( xbuf[ n ] ), ybuf, strlen( ybuf ) ) == 0 ) + break; + case F_STRING_X_Y_S: + /* S$ = STRING$( X, Y ) */ { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) n + 1; - return &nvar; + /* P1LEN|P2BYT */ + if (x == 0) + { + /* no copies */ + } + else + { + memset(S, (char) y, x); + s = x; + } } - } - - /* match not found */ - - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) 0; - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_spc() - - DESCRIPTION: This C function implements the BASIC - SPC() function, returning a string - containing a specified number of - (blank) spaces. - - SYNTAX: SPC( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_spc( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_spc( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - return fnc_space( argc, argv, unique_id ); - } - -/*************************************************************** - - FUNCTION: fnc_space() - - DESCRIPTION: This C function implements the BASIC - SPACE() function, returning a string - containing a specified number of - (blank) spaces. - - SYNTAX: SPACE$( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_space( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_space( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static char *tbuf; - static int init = FALSE; - int spaces; - register int i; - bstring *b; - - /* check for correct number of parameters */ - - if ( argc < 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Not enough parameters (%d) to function SPACE$().", - argc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - break_handler(); - return NULL; - } - else if ( argc > 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Too many parameters (%d) to function SPACE$().", - argc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - break_handler(); - return NULL; - } - - /* initialize nvar if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, (int) STRING ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_space" )) == NULL ) + break; + case F_STRING_X_A_S: + /* S$ = STRING$( X, A$ ) */ { -#if PROG_ERRORS - bwb_error( "in fnc_space(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif + /* P1LEN|P2BYT */ + if (x == 0) + { + /* no copies */ + } + else + { + memset(S, (char) A[0], x); + s = x; + } } - } - - tbuf[ 0 ] = '\0'; - spaces = (int) var_getnval( &( argv[ 0 ] )); - - /* add spaces to the string */ - - for ( i = 0; i < spaces; ++i ) - { - tbuf[ i ] = ' '; - tbuf[ i + 1 ] = '\0'; - } - - b = var_getsval( &nvar ); - str_ctob( b, tbuf ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_environ() - - DESCRIPTION: This C function implements the BASIC - ENVIRON$() function, returning the value - of a specified environment string. - - SYNTAX: ENVIRON$( variable-string ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_environ( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_environ( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - char tmp[ MAXSTRINGSIZE + 1 ]; - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - } - - /* check for correct number of parameters */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function ENVIRON$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function ENVIRON$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* resolve the argument and place string value in tbuf */ - - str_btoc( tbuf, var_getsval( &( argv[ 0 ] ))); - - /* call getenv() then write value to string */ - - /*--------------------------------------------------------------------*/ - /* Added check for getenv return value to prevent segmentation faults */ - /* JBV 3/15/96 */ - /*--------------------------------------------------------------------*/ - if (getenv( tbuf ) != NULL) strcpy( tmp, getenv( tbuf )); - else strcpy( tmp, "" ); - - str_ctob( var_findsval( &nvar, nvar.array_pos ), tmp ); - - /* return address of nvar */ - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_err() - - DESCRIPTION: This C function implements the BASIC - ERR function, returning the error number - for the most recent error. - - Please note that as of revision level - 2.10, bwBASIC does not utilize a standard - list of error numbers, so numbers returned - by this function will not be those found - in either ANSI or Microsoft or other - BASIC error tables. - - SYNTAX: ERR - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_err( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_err( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize nvar if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, (int) NUMBER ); - } - - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) err_number; - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_erl() - - DESCRIPTION: This C function implements the BASIC - ERL function, returning the line number - for the most recent error. - - SYNTAX: ERL - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_erl( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_erl( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize nvar if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, (int) NUMBER ); - } - - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) err_line; - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_loc() - - DESCRIPTION: This C function implements the BASIC - LOC() function. As implemented here, - this only works for random-acess files. - - SYNTAX: LOC( device-number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_loc( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_loc( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - int dev_number; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_loc(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - - if ( argc < 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Not enough parameters (%d) to function LOC().", - argc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return NULL; - } - else if ( argc > 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Too many parameters (%d) to function LOC().", - argc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return NULL; - } - - dev_number = (int) var_getnval( &( argv[ 0 ] ) ); - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - - /* note if this is the very beginning of the file */ - - if ( dev_table[ dev_number ].loc == 0 ) - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) 0; - } - else - { - * var_findnval( &nvar, nvar.array_pos ) = - (bnumber) dev_table[ dev_number ].next_record; - } - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_eof() - - DESCRIPTION: This C function implements the BASIC - EOF() function. - - SYNTAX: EOF( device-number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_eof( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_eof( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - int dev_number; - int cur_pos, end_pos; /* JBV */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_loc(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - - if ( argc < 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Not enough parameters (%d) to function EOF().", - argc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return NULL; - } - else if ( argc > 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Too many parameters (%d) to function EOF().", - argc ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return NULL; - } - - dev_number = (int) var_getnval( &( argv[ 0 ] ) ); - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - - /* note if this is the very beginning of the file */ - - if ( dev_table[ dev_number ].mode == DEVMODE_AVAILABLE ) - { - bwb_error( err_devnum ); - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) TRUE; - } - else if ( dev_table[ dev_number ].mode == DEVMODE_CLOSED ) - { - bwb_error( err_devnum ); - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) TRUE; - } - - /*------------------------------------------------------*/ - /* feof() finds EOF when you read past the end of file. */ - /* This is not how BASIC works, at least not GWBASIC. */ - /* The EOF function should return an EOF indication */ - /* when you are the end of the file, not past it. */ - /* This routine was modified to reflect this. */ - /* (JBV, 10/15/95) */ - /*------------------------------------------------------*/ - - /* else if ( feof( dev_table[ dev_number ].cfp ) == 0 ) */ - else if ( ftell( dev_table[ dev_number ].cfp ) != - dev_table [ dev_number ].lof ) - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) FALSE; - } - else - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) TRUE; - } - - return &nvar; - } + break; + case F_MID_A_X_S: + /* S$ = MID$( A$, X ) */ + { + /* P1ANY|P2POS */ + if (a == 0) + { + /* empty string */ + } + else + if (x > a) + { + /* start beyond length */ + } + else + { + x--; /* BASIC to C */ + a -= x; /* nummber of characters to + * copy */ + A += x; /* pointer to first character + * to copy */ + memcpy(S, A, a); + s = a; + } + } + break; + case F_MID_A_X_Y_S: + /* S$ = MID$( A$, X, Y ) */ + { + /* P1ANY|P2POS|P3LEN */ + if (a == 0) + { + /* empty string */ + } + else + if (x > a) + { + /* start beyond length */ + } + else + if (y == 0) + { + /* empty string */ + } + else + { + x--; /* BASIC to C */ + a -= x; + /* maximum nummber of characters to + * copy */ + a = MIN(a, y); + A += x; + /* pointer to first character to copy */ + memcpy(S, A, a); + s = a; + } + } + break; + case F_LEFT_A_X_S: + /* S$ = LEFT$( A$, X ) */ + { + /* P1ANY|P2LEN */ + if (a == 0) + { + /* empty string */ + } + else + if (x == 0) + { + /* empty string */ + } + else + { + a = MIN(a, x); + memcpy(S, A, a); + s = a; + } + } + break; + case F_RIGHT_A_X_S: + /* S$ = RIGHT$( A$, X ) */ + { + /* P1ANY|P2LEN */ + if (a == 0) + { + /* empty string */ + } + else + if (x == 0) + { + /* empty string */ + } + else + { + x = MIN(a, x); + A += a; + A -= x; + memcpy(S, A, x); + s = x; + } + } + break; + case F_HEX_X_S: + /* S$ = HEX$( X ) */ + { + sprintf(S, "%X", x); + s = strlen(S); + } + break; + case F_OCT_X_S: + /* S$ = OCT$( X ) */ + { + sprintf(S, "%o", x); + s = strlen(S); + } + break; + case F_CHR_X_S: + /* S$ = CHR$( X ) */ + { + S[0] = (char) x; + s = 1; + } + break; + case F_LEN_A_N: + /* N = LEN( A$ ) */ + { + N = a; + } + break; + case F_POS_A_B_N: + /* N = POS( A$, B$ ) */ + { + if (b == 0) + { + /* empty pattern */ + N = 1; + } + else + if (a == 0) + { + /* empty searched */ + } + else + if (b > a) + { + /* pattern is longer than searched */ + } + else + { + /* search */ + int i; + int n; + n = a - b; /* last valid search + * position */ + n++; + /* search */ + for (i = 0; i < n; i++) + { + if (memcmp(A, B, b) == 0) + { + /* FOU ND */ + i++; /* C to BASIC */ + N = i; + i = n; /* exit for */ + } + A++; + } + } + } + break; + case F_POS_A_B_X_N: + /* N = POS( A$, B$, X ) */ + { + if (b == 0) + { + /* empty pattern */ + N = 1; + } + else + if (a == 0) + { + /* empty searched */ + } + else + if (b > a) + { + /* pattern is longer than searched */ + } + else + { + /* search */ + int i; + int n; + n = a - b; /* last valid search + * position */ + n++; + + /* search */ + x--; /* BASIC to C */ + A += x; /* advance to the start + * position */ + for (i = x; i < n; i++) + { + if (memcmp(A, B, b) == 0) + { + /* FOU ND */ + N = i + 1; /* C to BASIC */ + i = n; /* exit for */ + } + A++; + } + } + } + break; + case F_VAL_A_N: + /* N = VAL( A$ ) */ + { + /* P1BYT */ + /* FIXME: use the BASIC numeric value parse + * routine */ + int ScanResult; + BasicNumberType Value; + ScanResult = sscanf(A, BasicNumberScanFormat, &Value); + if (ScanResult != 1) + { + /* not a number */ + if (OptionFlags & OPTION_BUGS_ON) + { + /* IGNORE */ + N = 0; + } + else + { + /* ERROR */ + IsError = 'A'; + } + } + else + { + /* OK */ + N = Value; + } + } + break; + case F_STR_X_S: + /* S$ = STR$( X ) */ + { + /* P1ANY */ + /* sprintf( S, BasicNumberPrintFormat, X ); */ + BasicNumerc(X, S); + s = strlen(S); + } + break; + case F_DATE_N: + /* N = DATE ' YYYYDDD */ + { + /* PNONE */ + /* ECMA-116 */ + time(&t); + lt = localtime(&t); + N = lt->tm_year; + N *= 1000; + N += lt->tm_yday; + N += 1; + } + break; + case F_DATE_S: + /* S$ = DATE$ */ + { + /* PNONE */ + time(&t); + lt = localtime(&t); + s = strftime(S, BasicStringLengthMax, OptionDateFormat, lt); + } + break; + case F_TIME_S: + /* S$ = TIME$ */ + { + /* PNONE */ + time(&t); + lt = localtime(&t); +#if 0 + sprintf(S, "%02d:%02d:%02d", lt->tm_hour, lt->tm_min, lt->tm_sec); + s = strlen(S); +#endif + s = strftime(S, BasicStringLengthMax, OptionTimeFormat, lt); + } + break; + case F_TIMER_N: + /* N = TIMER */ + case F_TIME_N: + /* N = TIME */ + { + /* PNONE */ + time(&t); + lt = localtime(&t); + N = lt->tm_hour; + N *= 60; + N += lt->tm_min; + N *= 60; + N += lt->tm_sec; + } + break; + case F_COSH_X_N: + /* N = COSH( X ) */ + { + /* P1ANY */ + N = cosh(X); + } + break; + case F_SINH_X_N: + /* N = SINH( X ) */ + { + /* P1ANY */ + N = sinh(X); + } + break; + case F_TANH_X_N: + /* N = TANH( X ) */ + { + /* P1ANY */ + N = tanh(X); + } + break; + case F_LOG10_X_N: + /* N = LOG10( X ) */ + { + /* P1GTZ */ + N = log10(X); + } + break; + case F_LOG2_X_N: + /* N = LOG2( X ) */ + { + /* P1GTZ */ + N = log(X) / log((BasicNumberType) 2); + } + break; + case F_ACOS_X_N: + /* N = ACOS( X ) */ + { + /* P1ANY */ + if (X < -1 || X > 1) + { + IsError = 'X'; + } + else + { + N = acos(X); + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + N = N * 180 / PI; + } + } + } + break; + case F_ASIN_X_N: + /* N = ASIN( X ) */ + { + /* P1ANY */ + if (X < -1 || X > 1) + { + IsError = 'X'; + } + else + { + N = asin(X); + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + N = N * 180 / PI; + } + } + } + break; + case F_COT_X_N: + /* N = COT( X ) ' = 1 / TAN( X ) */ + { + /* P1ANY */ + BasicNumberType T; + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + X = X * PI / 180; + } + T = tan(X); + if (T == 0) + { + IsError = 'X'; + } + else + { + N = 1.0 / T; + } + } + break; + case F_CSC_X_N: + /* N = CSC( X ) ' = 1 / SIN( X ) */ + { + /* P1ANY */ + BasicNumberType T; + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + X = X * PI / 180; + } + T = sin(X); + if (T == 0) + { + IsError = 'X'; + } + else + { + N = 1.0 / T; + } + } + break; + case F_SEC_X_N: + /* N = SEC( X ) ' = 1 / COS( X ) */ + { + /* P1ANY */ + BasicNumberType T; + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + X = X * PI / 180; + } + T = cos(X); + if (T == 0) + { + IsError = 'X'; + } + else + { + N = 1.0 / T; + } + } + break; + case F_UCASE_A_S: + /* S$ = UCASE$( A$ ) */ + { + /* P1ANY */ + if (a == 0) + { + /* empty string */ + } + else + { + int i; + memcpy(S, A, a); + s = a; + /* BASIC allows embedded NULL + * characters */ + for (i = 0; i < a; i++) + { + S[i] = ToUpper(S[i]); + } + } + } + break; + case F_LCASE_A_S: + /* S$ = LCASE$( A$ ) */ + { + /* P1ANY */ + if (a == 0) + { + /* empty string */ + } + else + { + int i; + memcpy(S, A, a); + s = a; + /* BASIC allows embedded NULL + * characters */ + for (i = 0; i < a; i++) + { + S[i] = ToLower(S[i]); + } + } + } + break; + case F_ANGLE_X_Y_N: + /* N = ANGLE( X, Y ) */ + { + /* P1ANY|P2ANY */ + if (X == 0 && Y == 0) + { + IsError = 'X'; + } + else + { + N = atan2(Y, X); + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + N = N * 180 / PI; + } + } + } + break; + case F_CEIL_X_N: + /* N = CEIL( X ) */ + { + /* P1ANY */ + N = ceil(X); + } + break; + case F_DEG_X_N: + /* N = DEG( X ) */ + { + /* P1ANY */ + N = X * 180.0 / PI; + } + break; + case F_RAD_X_N: + /* N = RAD( X ) */ + { + /* P1ANY */ + N = X * PI / 180.0; + } + break; + case F_PI_N: + /* N = PI */ + { + /* PNONE */ + N = PI; + } + break; + case F_LTRIM_A_S: + /* S$ = LTRIM$( A$ ) */ + { + /* P1ANY */ + if (a == 0) + { + /* empty string */ + } + else + { + int i; + /* BASIC allows embedded NULL + * characters */ + for (i = 0; i < a && A[i] == ' '; i++) + { + /* skip spaces */ + } + /* 'A[ i ]' is first non-space + * character */ + if (i >= a) + { + /* empty string */ + } + else + { + A += i; + a -= i; + memcpy(S, A, a); + s = a; + } + } + } + break; + case F_RTRIM_A_S: + /* S$ = RTRIM$( A$ ) */ + { + /* P1ANY */ + if (a == 0) + { + /* empty string */ + } + else + { + int i; + /* BASIC allows embedded NULL + * characters */ + for (i = a - 1; i >= 0 && A[i] == ' '; i--) + { + /* skip spaces */ + } + /* 'A[ i ]' is last non-space + * character */ + if (i < 0) + { + /* empty string */ + } + else + { + a = i + 1; + memcpy(S, A, a); + s = a; + } + } + } + break; + case F_TRIM_A_S: + /* S$ = TRIM$( A$ ) */ + { + /* P1ANY */ + if (a == 0) + { + /* empty string */ + } + else + { + /* LTRIM */ + int i; + /* BASIC allows embedded NULL + * characters */ + for (i = 0; i < a && A[i] == ' '; i++) + { + /* skip spaces */ + } + /* 'A[ i ]' is first non-space + * character */ + if (i >= a) + { + /* empty string */ + } + else + { + A += i; + a -= i; + memcpy(S, A, a); + s = a; + /* RTRIM */ + A = S; + a = s; + if (a == 0) + { + /* empty string */ + } + else + { + int i; + /* BASIC allows + * embedded NULL + * characters */ + for (i = a - 1; i >= 0 && A[i] == ' '; i--) + { + /* skip + * spaces */ + } + /* 'A[ i ]' is last + * non-space + * character */ + if (i < 0) + { + /* empty + * string */ + } + else + { + a = i + 1; + /* memcpy( S, + * A, a ); */ + s = a; + } + } + } + } + } + break; + case F_MAX_X_Y_N: + /* N = MAX( X, Y ) */ + { + N = MAX(X, Y); + } + break; + case F_MIN_X_Y_N: + /* N = MIN( X, Y ) */ + { + N = MIN(X, Y); + } + break; + case F_FP_X_N: + /* N = FP( X ) */ + { + BasicNumberType FP; + BasicNumberType IP; + FP = modf(X, &IP); + N = FP; + } + break; + case F_IP_X_N: + /* N = IP( X ) */ + { + BasicNumberType IP; + modf(X, &IP); + N = IP; + } + break; + case F_EPS_X_N: + /* N = EPS( Number ) */ + { + N = DBL_MIN; + } + break; + case F_MAXLVL_N: + /* N = MAXLVL */ + { + N = EXECLEVELS; + } + break; + case F_MAXNUM_N: + /* N = MAXNUM */ + { + N = DBL_MAX; + } + break; + case F_MINNUM_N: + /* N = MINNUM */ + { + N = -DBL_MAX; + } + break; + case F_MAXDBL_N: + /* N = MAXDBL */ + { + N = DBL_MAX; + } + break; + case F_MINDBL_N: + /* N = MINDBL */ + { + N = -DBL_MAX; + } + break; + case F_MAXSNG_N: + /* N = MAXSNG */ + { + N = FLT_MAX; + } + break; + case F_MINSNG_N: + /* N = MINSNG */ + { + N = -FLT_MAX; + } + break; + case F_MAXCUR_N: + /* N = MAXCUR */ + { + N = LONG_MAX; + } + break; + case F_MINCUR_N: + /* N = MINCUR */ + { + N = LONG_MIN; + } + break; + case F_MAXLNG_N: + /* N = MAXLNG */ + { + N = LONG_MAX; + } + break; + case F_MINLNG_N: + /* N = MINLNG */ + { + N = LONG_MIN; + } + break; + case F_MAXINT_N: + /* N = MAXINT */ + { + N = SHRT_MAX; + } + break; + case F_MININT_N: + /* N = MININT */ + { + N = SHRT_MIN; + } + break; + case F_MAXBYT_N: + /* N = MAXBYT */ + { + N = UCHAR_MAX; + } + break; + case F_MINBYT_N: + /* N = MINBYT */ + { + N = 0; + } + break; + case F_MAXDEV_N: + /* N = MAXDEV */ + { + N = BasicFileNumberMax; + } + break; + case F_MINDEV_N: + /* N = MINDEV */ + { + N = 0; + } + break; -/*************************************************************** + case F_MOD_X_Y_N: + /* N = MOD( X, Y ) */ + { + /* P1ANY|P2NEZ */ + BasicNumberType IP; - FUNCTION: fnc_lof() + IP = floor(X / Y); + N = X - (Y * IP); + } + break; + case F_REMAINDER_X_Y_N: + /* REMAINDER( X, Y ) */ + { + /* P1ANY|P2NEZ */ + BasicNumberType Value; + BasicNumberType IP; - DESCRIPTION: This C function implements the BASIC - LOF() function. + Value = X / Y; + modf(Value, &IP); + N = X - (Y * IP); + } + break; + case F_ROUND_X_Y_N: + /* N = ROUND( X, Y ) == INT(X*10^Y+.5)/10^Y */ + { + /* P1ANY | P2INT */ + if (y < -32 || y > 32) + { + IsError = 'Y'; + } + else + { + BasicNumberType T; /* 10^Y */ + + T = pow(10.0, Y); + if (T == 0) + { + IsError = 'Y'; + } + else + { + N = floor(X * T + 0.5) / T; + } + } + } + break; + case F_TRUNCATE_X_Y_N: + /* N = TRUNCATE( X, Y ) == INT(X*10^Y)/10^Y */ + { + /* P1ANY | P2INT */ + if (y < -32 || y > 32) + { + IsError = 'Y'; + } + else + { + BasicNumberType T; /* 10^Y */ + + T = pow(10.0, Y); + if (T == 0) + { + IsError = 'Y'; + } + else + { + N = floor(X * T) / T; + } + } + } + break; + case F_MAXLEN_A_N: + /* N = MAXLEN( A$ ) */ + { + N = BasicStringLengthMax; + } + break; + case F_ORD_A_N: + /* N = ORD( A$ ) */ + { + /* P1BYT */ + if (a == 1) + { + N = A[0]; + } + else + { + int c; + N = -1; /* not found */ + for (c = 0; c < NUM_ACRONYMS; c++) + { + if (strcasecmp(AcronymTable[c].Name, A) == 0) + { + /* found */ + N = AcronymTable[c].Value; + c = NUM_ACRONYMS; /* exit for */ + } + } + if (N < 0) + { + /* not found */ + IsError = 'A'; + } + } + } + break; + case F_REPEAT_X_Y_S: + /* S$ = REPEAT$( X, Y ) ' X is count, Y is code */ + { + /* P1LEN | P2BYT */ + if (x == 0) + { + /* empty string */ + } + else + { + memset(S, (char) y, x); + s = x; + } + } + break; + case F_REPEAT_X_A_S: + /* S$ = REPEAT$( X, A$ ) ' X is count, A$ is code */ + { + /* P1LEN | P2BYT */ + if (x == 0) + { + /* empty string */ + } + else + { + memset(S, (char) A[0], x); + s = x; + } + } + break; + case F_FIX_X_N: + /* N = FIX( X ) */ + { + N = rint(X); + } + break; + case F_ABS_X_N: + /* N = ABS( X ) */ + { + N = fabs(X); + } + break; + case F_ATN_X_N: + /* N = ATN( X ) */ + { + N = atan(X); + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + N = N * 180 / PI; + } + } + break; + case F_COS_X_N: + /* N = COS( X ) */ + { + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + X = X * PI / 180; + } + N = cos(X); + } + break; + case F_EXP_X_N: + /* N = EXP( X ) */ + { + N = exp(X); + } + break; + case F_INT_X_N: + /* N = INT( X ) */ + { + N = floor(X); + } + break; + case F_LOG_X_N: + /* N = LOG( X ) */ + { + /* P1GTZ */ + N = log(X); + } + break; + case F_RND_N: + /* N = RND */ + { + N = rand(); + N /= RAND_MAX; + } + break; + case F_RND_X_N: + /* N = RND( X ) */ + { + N = rand(); + N /= RAND_MAX; + } + break; + case F_SGN_X_N: + /* N = SGN( X ) */ + { + if (X > 0) + { + N = 1; + } + else + if (X < 0) + { + N = -1; + } + else + { + N = 0; + } + } + break; + case F_SIN_X_N: + /* N = SIN( X ) */ + { + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + X = X * PI / 180; + } + N = sin(X); + } + break; + case F_SQR_X_N: + /* N = SQR( X ) */ + { + /* P1GEZ */ + N = sqrt(X); + } + break; + case F_TAN_X_N: + /* N = TAN( X ) */ + { + if (OptionFlags & OPTION_ANGLE_DEGREES) + { + X = X * PI / 180; + } + N = tan(X); + } + break; + case F_SPC_X_S: + /* S$ = SPC( X ) */ + { + /* P1ANY */ + /* SPECIAL RULES APPLY. PART OF PRINT + * COMMAND. WIDTH > 0 */ + X = rint(X); + if (X < 1 || X > 255) + { + bwb_Warning_Overflow("*** WARNING: INVALID SPC() ***"); + X = 1; + } + x = (int) X; + S[0] = PRN_SPC; + S[1] = (char) x; + s = 2; + } + break; + case F_TAB_X_S: + /* S$ = TAB( X ) */ + { + /* P1ANY */ + /* SPECIAL RULES APPLY. PART OF PRINT + * COMMAND. WIDTH > 0 */ + X = rint(X); + if (X < 1 || X > 255) + { + bwb_Warning_Overflow("*** WARNING: INVALID TAB() ***"); + X = 1; + } + x = (int) X; + S[0] = PRN_TAB; + S[1] = (char) x; + s = 2; + } + break; + case F_POS_N: + /* N = POS */ + { + /* PNONE */ + N = dev_table[CONSOLE_FILE_NUMBER].col; + } + break; + case F_POS_X_N: + /* N = POS( X ) */ + { + /* PDEV1 */ + N = dev_table[x].col; + } + break; + case F_INPUT_X_Y_S: + /* S$ = INPUT$( X, Y ) */ + { + /* P1LEN|P2DEV */ + { + if ((dev_table[y].mode & DEVMODE_READ) == 0) + { + IsError = 'Y'; + } + else + if (x == 0) + { + /* empty string */ + } + else + { + FILE *fp; + fp = dev_table[y].cfp; + if (fp == NULL) + { + IsError = 'Y'; + } + else + { + s = fread(S, 1, x, fp); + s = MAX(s, 0); /* if( s < 0 ) s = 0; */ + } + } + } + } + break; + case F_ERROR_X_N: + /* ERROR X */ + { + /* P1BYT */ + bwb_Warning(x, ""); + N = 0; + } + break; + case F_ERROR_X_A_N: + /* ERROR X, A$ */ + { + /* P1BYT */ + bwb_Warning(x, A); + N = 0; + } + break; + case F_ERR_N: + /* N = ERR */ + { + /* PNONE */ + N = err_number; + } + break; + case F_ERL_N: + /* N = ERL */ + { + /* PNONE */ + if( err_line != NULL ) + { + N = err_line->number; + } + } + break; + case F_ERR_S: + /* S = ERR$ */ + { + /* PNONE */ + s = strlen(ErrMsg); + if (s > 0) + { + strcpy(S, ErrMsg); + } + } + break; - SYNTAX: LOF( device-number ) -***************************************************************/ + /******************************************************************************************** + ** + ** Keep the platform specific functions together. They should all call bwx_* functions. + ** + *********************************************************************************************/ + case F_INP_X_N: + /* N = INP( X ) */ + { + /* P1BYT */ + IsError = 0xFF; + } + break; + case F_WAIT_X_Y_N: + /* WAIT X, Y */ + { + /* P1NUM|P2NUM */ + /* P1INT|P2BYT */ + IsError = 0xFF; + } + break; + case F_WAIT_X_Y_Z_N: + /* WAIT X, Y, Z */ + { + /* P1NUM|P2NUM|P3NUM */ + /* P1INT|P2BYT|P3BYT */ + IsError = 0xFF; + } + break; + case F_OUT_X_Y_N: + /* OUT X, Y */ + { + /* P1NUM|P2NUM */ + /* P1INT|P2BYT */ + IsError = 0xFF; + } + break; + case F_PEEK_X_N: + /* N = PEEK( X ) */ + { + /* P1INT */ + IsError = 0xFF; + } + break; + case F_POKE_X_Y_N: + /* POKE X, Y */ + { + /* P1NUM|P2NUM */ + /* P1INT|P2BYT */ + IsError = 0xFF; + } + break; + case F_CLS_N: + /* CLS */ + { + /* PNONE */ + switch (OptionTerminalType) + { + case C_OPTION_TERMINAL_NONE: + break; + case C_OPTION_TERMINAL_ADM_3A: + fprintf(stdout, "%c", 26); + break; + case C_OPTION_TERMINAL_ANSI: + fprintf(stdout, "%c[2J", 27); + fprintf(stdout, "%c[%d;%dH", 27, 1, 1); + break; + default: + IsError = 0xFF; + break; + } + fflush(stdout); + } + break; + case F_LOCATE_X_Y_N: + /* LOCATE X, Y */ + { + /* P1NUM|P2NUM */ + /* P1BYT|P2BYT */ + switch (OptionTerminalType) + { + case C_OPTION_TERMINAL_NONE: + break; + case C_OPTION_TERMINAL_ADM_3A: + fprintf(stdout, "%c=%c%c", 27, x + 32, y + 32); + break; + case C_OPTION_TERMINAL_ANSI: + fprintf(stdout, "%c[%d;%dH", 27, x, y); + break; + default: + IsError = 0xFF; + break; + } + fflush(stdout); + } + break; + case F_COLOR_X_Y_N: + /* COLOR X, Y */ + { + /* P1NUM|P2NUM */ + /* P1BYT|P2BYT */ + switch (OptionTerminalType) + { + case C_OPTION_TERMINAL_NONE: + break; + case C_OPTION_TERMINAL_ADM_3A: + break; + case C_OPTION_TERMINAL_ANSI: + fprintf(stdout, "%c[%d;%dm", 27, 30 + x, 40 + y); + break; + default: + IsError = 0xFF; + break; + } + fflush(stdout); + } + break; + case F_FILES_N: + /* FILES */ + { + /* PNONE */ + char Buffer[BasicStringLengthMax + 1]; + struct bwb_variable *v; -#if ANSI_C -struct bwb_variable * -fnc_lof( int argc, struct bwb_variable *argv, int unique_id ) + v = var_find(DEFVNAME_FILES); + str_btoc(Buffer, var_getsval(v)); + N = system(Buffer); + } + break; + case F_FILES_A_N: + /* FILES A$ */ + { + /* P1BYT */ + char Buffer[BasicStringLengthMax + 1]; + struct bwb_variable *v; + + v = var_find(DEFVNAME_FILES); + str_btoc(Buffer, var_getsval(v)); + strcat(Buffer, " "); + strcat(Buffer, A); + N = system(Buffer); + } + break; + case F_FRE_N: + case F_FRE_X_N: + case F_FRE_A_N: + /* N = FRE( ) */ + /* N = FRE( X ) */ + /* N = FRE( X$ ) */ + { + N = 32000; /* reasonable value */ + } + break; + case F_SHELL_A_N: + /* N = SHELL( A$ ) */ + { + /* P1BYT */ + N = system(A); + } + break; + case F_CHDIR_A_N: + /* CHDIR A$ */ + { + /* P1BYT */ +#if DIRECTORY_CMDS + N = chdir(A); #else -struct bwb_variable * -fnc_lof( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - int dev_number; - -/* Following section no longer needed, removed by JBV */ -/* #if UNIX_CMDS - static struct stat statbuf; - int r; -#endif */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_lof(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); + IsError = 0xFF; #endif - - if ( argc < 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Not enough parameters (%d) to function LOF().", - argc ); - bwb_error( bwb_ebuf ); + } + break; + case F_MKDIR_A_N: + /* MKDIR A$ */ + { + /* P1BYT */ +#if DIRECTORY_CMDS +#if MKDIR_ONE_ARG + N = mkdir(A); #else - bwb_error( err_syntax ); + N = mkdir(A, PERMISSIONS); #endif - return NULL; - } - else if ( argc > 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Too many parameters (%d) to function LOF().", - argc ); - bwb_error( bwb_ebuf ); #else - bwb_error( err_syntax ); + IsError = 0xFF; #endif - return NULL; - } - - dev_number = (int) var_getnval( &( argv[ 0 ] ) ); - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - - /* stat the file */ - -/* Following section no longer needed, removed by JBV */ -/* #if UNIX_CMDS - - r = stat( dev_table[ dev_number ].filename, &statbuf ); - - if ( r != 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in fnc_lof(): failed to find file <%s>", - dev_table[ dev_number ].filename ); - bwb_error( bwb_ebuf ); + } + break; + case F_RMDIR_A_N: + /* RMDIR A$ */ + { + /* P1BYT */ +#if DIRECTORY_CMDS + N = rmdir(A); #else - sprintf( bwb_ebuf, ERR_OPENFILE, - dev_table[ dev_number ].filename ); - bwb_error( bwb_ebuf ); + IsError = 0xFF; #endif - return NULL; + } + break; + case F_KILL_A_N: + /* KILL A$ */ + { + /* P1BYT */ + N = remove(A); + } + break; + case F_NAME_A_B_N: + /* NAME A$ AS B$ */ + /* N = NAME( A$, B$ ) */ + { + /* P1BYT|P2BYT */ + N = rename(A, B); + } + break; + case F_INPUT_X_S: + /* S$ = INPUT$( X ) */ + { + /* P1LEN */ + if (x == 0) + { + /* empty string */ + } + else + { + for (s = 0; s < x; s++) + { + int c; + c = getchar(); + if ((c == EOF) || (c == '\n') || (c == '\r')) + { + break; + } + S[s] = c; + } + S[s] = 0; + } + } + break; + case F_INKEY_S: + /* S$ = INKEY$ */ + { + /* PNONE */ + int c; + + c = getchar(); + if (c < 0 || c > 255) + { + /* EOF */ + } + else + { + S[s] = c; + s++; + } + S[s] = 0; + } + break; + case F_NULL_X_N: + /* NULL X */ + { + /* P1NUM */ + /* P1BYT */ + LPRINT_NULLS = x; + N = 0; + } + break; + case F_LWIDTH_X_N: + /* LWIDTH X */ + { + /* P1NUM */ + /* P1BYT */ + LPRINT_WIDTH = x; + LPRINT_COLUMN = 1; + N = 0; + } + break; + case F_LPOS_N: + /* N = LPOS */ + { + /* PNONE */ + /* PNONE */ + N = LPRINT_COLUMN; + } + break; + case F_TRON_N: + /* TRON */ + { + /* PNONE */ + prn_xprintf("Trace is ON\n"); + bwb_trace = TRUE; + N = 0; + } + break; + case F_TROFF_N: + /* TROFF */ + { + /* PNONE */ + prn_xprintf("Trace is OFF\n"); + bwb_trace = FALSE; + N = 0; + } + break; + case F_RANDOMIZE_N: + /* RANDOMIZE */ + { + /* PNONE */ + /* USE THE CURRENT TIME AS THE SEED */ + time(&t); + lt = localtime(&t); + x = lt->tm_hour * 3600 + lt->tm_min * 60 + lt->tm_sec; + srand(x); + N = 0; + } + break; + case F_RANDOMIZE_X_N: + /* RANDOMIZE X */ + { + /* P1NUM */ + /* P1ANY */ + x = rint( X ); + srand(x); + N = 0; + } + break; + default: + { + /* NOT IMPLEMENTED ON THIS PLATFORM */ + IsError = 0xFF; + } } - - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) statbuf.st_size; */ - -/* #else */ /* Removed by JBV, no longer needed */ - - /* * var_findnval( &nvar, nvar.array_pos ) = (bnumber) FALSE; */ - * var_findnval( &nvar, nvar.array_pos ) = - (bnumber) dev_table[ dev_number ].lof; /* JBV */ - -/* #endif */ /* Removed by JBV, no longer needed */ - - return &nvar; - } - -#endif /* MS_FUNCS */ - -/*************************************************************** - - FUNCTION: fnc_test() - - DESCRIPTION: This is a test function, developed in - order to test argument passing to - BASIC functions. - -***************************************************************/ - -#if INTENSIVE_DEBUG -#if ANSI_C -struct bwb_variable * -fnc_test( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_test( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif + /* sanity check */ + if (IsError == 0) { - register int c; - static struct bwb_variable rvar; - static char *tbuf; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) + if (f->ReturnType == STRING) { - init = TRUE; - var_make( &rvar, NUMBER ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_test" )) == NULL ) + /* STRING */ + if ( /* s < 0 || */ s > BasicStringLengthMax) { -#if PROG_ERRORS - bwb_error( "in fnc_test(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif + /* ERROR */ + sprintf(bwb_ebuf, "INTERNAL ERROR (%s) INVALID STRING LENGTH", f->Name); + bwb_error(bwb_ebuf); + return NULL; + } + else + if (S != RESULT_BUFFER) + { + /* ERROR */ + sprintf(bwb_ebuf, "INTERNAL ERROR (%s) INVALID STRING BUFFER", f->Name); + bwb_error(bwb_ebuf); + return NULL; + } + else + { + RESULT_LENGTH = s; + RESULT_BUFFER[RESULT_LENGTH] = '\0'; } } - - sprintf( bwb_ebuf, "TEST function: received %d arguments: \n", argc ); - prn_xprintf( stderr, bwb_ebuf ); - - for ( c = 0; c < argc; ++c ) + else { - str_btoc( tbuf, var_getsval( &argv[ c ] ) ); - sprintf( bwb_ebuf, " arg %d (%c): <%s> \n", c, - argv[ c ].type, tbuf ); - prn_xprintf( stderr, bwb_ebuf ); + /* NUMBER */ + if (isnan(N)) + { + /* ERROR */ + /* this means the parameters were not + * properly checked */ + sprintf(bwb_ebuf, "INTERNAL ERROR (%s) NOT A NUMBER", f->Name); + bwb_error(bwb_ebuf); + return NULL; + } + else + if (isinf(N)) + { + /* Evaluation of an expression results in an + * overflow (nonfatal, the recommended + * recovery procedure is to supply machine + * in- finity with the algebraically correct + * sign and continue). */ + if (N < 0) + { + N = -DBL_MAX; + } + else + { + N = DBL_MAX; + } + bwb_Warning_Overflow("*** Arithmetic Overflow ***"); + } + RESULT_NUMBER = N; } - - return &rvar; - } -#endif - -/*************************************************************** - - FUNCTION: fnc_checkargs() - - DESCRIPTION: This C function checks the arguments to - functions. - -***************************************************************/ - -#if PROG_ERRORS -#else -#if ANSI_C -int -fnc_checkargs( int argc, struct bwb_variable *argv, int min, int max ) -#else -int -fnc_checkargs( argc, argv, min, max ) - int argc; - struct bwb_variable *argv; - int min; - int max; -#endif + /* process errors */ + if (IsError == 0xFF) { - - if ( argc < min ) - { - bwb_error( err_syntax ); - return FALSE; - } - if ( argc > max ) - { - bwb_error( err_syntax ); - return FALSE; - } - - return TRUE; - + /* NOT IMPLEMENTED ON THIS PLATFORM */ + sprintf(bwb_ebuf, "%s IS NOT IMPLEMENTED ON THIS PLATFORM", f->Name); + bwb_Warning_AdvancedFeature(bwb_ebuf); } -#endif - -/*************************************************************** - - FUNCTION: fnc_fncs() - - DESCRIPTION: This C function is used for debugging - purposes; it prints a list of all defined - functions. - - SYNTAX: FNCS - -***************************************************************/ - -#if PERMANENT_DEBUG - -#if ANSI_C -struct bwb_line * -bwb_fncs( struct bwb_line *l ) -#else -struct bwb_line * -bwb_fncs( l ) - struct bwb_line *l; -#endif + else + if (IsError != 0) { - struct bwb_function *f; - - for ( f = CURTASK fnc_start.next; f != &CURTASK fnc_end; f = f->next ) - { - sprintf( bwb_ebuf, "%s\t%c \n", f->name, f->type ); - prn_xprintf( stderr, bwb_ebuf ); - } - - return bwb_zline( l ); - + /* ERROR */ + char Buffer[80]; + switch (IsError) + { + case 'A': + case 'B': + case 'C': + /* STRING parameter's value is invalid */ + sprintf(Buffer, "%s(%c$)", f->Name, IsError); + break; + case 'X': + case 'Y': + case 'Z': + /* NUMBER parameter's value is invalid */ + sprintf(Buffer, "%s(%c)", f->Name, IsError); + break; + default: + /* All other errors */ + sprintf(Buffer, "%s() #%d", f->Name, IsError); + break; + } + sprintf(bwb_ebuf, "ILLEGAL FUUNCTION CALL: %s", Buffer); + bwb_Warning_InvalidParameter(bwb_ebuf); } -#endif + return argv; /* released by exp_function() in bwb_elx.c */ +} +/* EOF */ diff --git a/bwb_inp.c b/bwb_inp.c index a8ac9c1..a76a111 100644 --- a/bwb_inp.c +++ b/bwb_inp.c @@ -1,631 +1,627 @@ /*************************************************************** - + bwb_inp.c Input Routines for Bywater BASIC Interpreter - - Commands: DATA - READ - RESTORE - INPUT - LINE INPUT - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include + #include "bwbasic.h" -#include "bwb_mes.h" + + + + /* Declarations of functions visible to this file only */ -#if ANSI_C -static struct bwb_line *bwb_xinp( struct bwb_line *l, FILE *f ); -static struct bwb_line *inp_str( struct bwb_line *l, char *buffer, - char *var_list, int *position ); -static int inp_const( char *m_buffer, char *s_buffer, int *position ); -static int inp_assign( char *b, struct bwb_variable *v ); -static int inp_advws( FILE *f ); -static int inp_xgetc( FILE *f, int is_string ); -static int inp_eatcomma( FILE *f ); -static bnumber inp_numconst( char *expression ); /* JBV */ -#else -static struct bwb_line *bwb_xinp(); -static struct bwb_line *inp_str(); -static int inp_const(); -static int inp_assign(); -static int inp_advws(); -static int inp_xgetc(); -static int inp_eatcomma(); -static bnumber inp_numconst(); /* JBV */ -#endif -static char_saved = FALSE; -static cs; -static int last_inp_adv_rval = FALSE; /* JBV */ + + +static struct bwb_line * +bwb_xinp(struct bwb_line * l, FILE * f); +static int +inp_str(struct bwb_line * l, char *buffer, + char *var_list, int *position, int IsFake); +static int +inp_const(char *m_buffer, char *s_buffer, int *position); +static int +inp_assign(char *b, struct bwb_variable * v, int IsFake, int *ResultCode); + +static int last_inp_adv_rval = FALSE; /* JBV */ + +/* ResultCode */ +#define RESULT_OK 0 +#define RESULT_UNKNOWN 1 +#define RESULT_TYPE_MMISMATCH 2 +#define RESULT_ARITHMETIC_OVERFLOW 3 + + + /*************************************************************** + + FUNCTION: bwx_input() + + DESCRIPTION: This function outputs the string pointed + to by 'prompt', then inputs a character + string. + +***************************************************************/ - FUNCTION: bwb_read() +int +bwx_input(char *prompt, char *buffer) +{ + + bwx_DEBUG(__FUNCTION__); + + prn_xprintf(prompt); + + fflush(stdout); +#if AUTOMATED_REGRESSION + /* for automated testing */ + if (IsCommandLineFile == TRUE) + { + if (ExternalInputFile != NULL) + { + fgets(buffer, BasicStringLengthMax, ExternalInputFile); + /* stop reading from external file once all INPUT + * lines have been read */ + if (feof(ExternalInputFile)) + { + fclose(ExternalInputFile); + ExternalInputFile = NULL; + } + else + { + fputs(buffer, stdout); + fflush(stdout); + ResetConsoleColumn(); + return TRUE; + } + } + } +#endif /* AUTOMATED_REGRESSION */ + fgets(buffer, BasicStringLengthMax, stdin); + if (TRUE) + { + /* some compilers do NOT remove CR/LF, some compilers DO */ + char *E; + E = strchr(buffer, '\r'); + if (E != NULL) + { + *E = '\0'; + } + E = strchr(buffer, '\n'); + if (E != NULL) + { + *E = '\0'; + } + } + ResetConsoleColumn(); + + return TRUE; + +} + + + +/*************************************************************** + + FUNCTION: bwb_read() + DESCRIPTION: This function implements the BASIC READ statement. - + SYNTAX: READ variable[, variable...] - + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_read( struct bwb_line *l ) -#else -struct bwb_line * -bwb_read( l ) - struct bwb_line *l; -#endif - { - int pos; - register int n; - int main_loop, adv_loop; +bwb_READ(struct bwb_line * l) +{ + register int n; + int main_loop; struct bwb_variable *v; - int n_params; /* number of parameters */ - int *pp; /* pointer to parameter values */ - char tbuf[ MAXSTRINGSIZE + 1 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read(): buffer <%s>", - &( l->buffer[ l->position ])); - bwb_debug( bwb_ebuf ); -#endif + int n_params; /* number of parameters */ + int *pp; /* pointer to parameter values */ + char tbuf[BasicStringLengthMax + 1]; + int ResultCode; + + + bwx_DEBUG(__FUNCTION__); /* Process each variable read from the READ statement */ main_loop = TRUE; - while ( main_loop == TRUE ) - { + while (main_loop == TRUE) + { + int adv_loop; - /* first check position in l->buffer and advance beyond whitespace */ + /* first check position in l->buffer and advance beyond + * whitespace */ adv_loop = TRUE; - while( adv_loop == TRUE ) - { + while (adv_loop == TRUE) + { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read() adv_loop char <%d> = <%c>", - l->buffer[ l->position ], l->buffer[ l->position ] ); - bwb_debug( bwb_ebuf ); -#endif - switch ( l->buffer[ l->position ] ) - { - case ',': /* comma delimiter */ - case ' ': /* whitespace */ - case '\t': - ++l->position; - break; - case ':': /* end of line segment */ - case '\n': /* end of line */ - case '\r': - case '\0': - adv_loop = FALSE; /* break out of advance loop */ - main_loop = FALSE; /* break out of main loop */ - break; - default: /* anything else */ - adv_loop = FALSE; /* break out of advance loop */ - break; - } + switch (l->buffer[l->position]) + { + case ',': /* comma delimiter */ + case ' ': /* whitespace */ + ++l->position; + break; + case '\0': + adv_loop = FALSE; /* break out of advance + * loop */ + main_loop = FALSE; /* break out of main + * loop */ + break; + default: /* anything else */ + adv_loop = FALSE; /* break out of advance + * loop */ + break; + } + if( l->buffer[l->position] == OptionCommentChar ) + { + adv_loop = FALSE; /* break out of advance + * loop */ + main_loop = FALSE; /* break out of main + * loop */ } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read(): end of adv_loop <%d> main_loop <%d>", - adv_loop, main_loop ); - bwb_debug( bwb_ebuf ); -#endif /* be sure main_loop id still valid after checking the line */ - if ( main_loop == TRUE ) - { + if (main_loop == TRUE) + { /* Read a variable name */ - bwb_getvarname( l->buffer, tbuf, &( l->position ) ); - inp_adv( l->buffer, &( l->position ) ); - v = var_find( tbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read(): line <%d> variable <%s>", - l->number, v->name ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in bwb_read(): remaining line <%s>", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + bwb_getvarname(l->buffer, tbuf, &(l->position)); + inp_adv(l->buffer, &(l->position)); + if (bwb_isvar(tbuf) == FALSE) + { + /* not an existing variable */ + char *expression = l->buffer; + int LastPosition = l->position; + adv_ws(expression, &(LastPosition)); + if (expression[LastPosition] == '(') + { + /* MUST be a dynamically created + * array, READ A(10) ... ' variable + * "A" has NOT been dimensioned */ + int NumDimensions; + + NumDimensions = DetermineNumberOfDimensions(expression, LastPosition); + if (NumDimensions < 1) + { + bwb_error(err_incomplete); + return bwb_zline(l); + } + if (ImplicitDim(tbuf, NumDimensions) != TRUE) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + } /* if( expression[ LastPosition ] == + * '(' ) */ + } + v = var_find(tbuf); + /* advance beyond whitespace or comma in data buffer */ - inp_adv( CURTASK data_line->buffer, &CURTASK data_pos ); + inp_adv(CURTASK data_line->buffer, &CURTASK data_pos); + if (OptionFlags & OPTION_COVERAGE_ON) + { + /* this line has been READ */ +#if 0 + data_line->Coverage = '*'; +#endif + data_line->LineFlags |= LINE_EXECUTED; + } /* Advance to next line if end of buffer */ - switch( CURTASK data_line->buffer[ CURTASK data_pos ] ) - { - case '\0': /* end of buffer */ - case '\n': - case '\r': - - CURTASK data_line = CURTASK data_line->next; - - /* advance farther to line with DATA statement if necessary */ - - pos = 0; - line_start( CURTASK data_line->buffer, &pos, - &( CURTASK data_line->lnpos ), - &( CURTASK data_line->lnum ), - &( CURTASK data_line->cmdpos ), - &( CURTASK data_line->cmdnum ), - &( CURTASK data_line->startpos ) ); - CURTASK data_pos = CURTASK data_line->startpos; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read(): current data line: <%s>", - CURTASK data_line->buffer ); - bwb_debug( bwb_ebuf ); -#endif + if (CURTASK data_line->buffer[CURTASK data_pos] == '\0') + { + /* end of buffer */ + + CURTASK data_line = CURTASK data_line->next; + + /* advance farther to line with DATA + * statement if necessary */ + CURTASK data_pos = CURTASK data_line->Startpos; - break; - } - while ( bwb_cmdtable[ CURTASK data_line->cmdnum ].vector != bwb_data ) + } + while (CURTASK data_line->cmdnum != C_DATA) + { + + if (CURTASK data_line == &CURTASK bwb_end) { - if ( CURTASK data_line == &CURTASK bwb_end ) + if (OptionVersion & (B14 | E78 | E86)) { - CURTASK data_line = CURTASK bwb_start.next; + /* halt */ + bwb_Warning_OutOfData("Out of DATA"); + return bwb_zline(l); } - - else + else { - CURTASK data_line = CURTASK data_line->next; + /* wrap around */ + CURTASK data_line = CURTASK bwb_start.next; } - pos = 0; - line_start( CURTASK data_line->buffer, &pos, - &( CURTASK data_line->lnpos ), - &( CURTASK data_line->lnum ), - &( CURTASK data_line->cmdpos ), - &( CURTASK data_line->cmdnum ), - &( CURTASK data_line->startpos ) ); - CURTASK data_pos = CURTASK data_line->startpos; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read(): advance to data line: <%s>", - CURTASK data_line->buffer ); - bwb_debug( bwb_ebuf ); -#endif - } + else + { + CURTASK data_line = CURTASK data_line->next; + } + + CURTASK data_pos = CURTASK data_line->Startpos; + + + } /* advance beyond whitespace in data buffer */ adv_loop = TRUE; - while ( adv_loop == TRUE ) + while (adv_loop == TRUE) + { + switch (CURTASK data_line->buffer[CURTASK data_pos]) { - switch( CURTASK data_line->buffer[ CURTASK data_pos ] ) - { - case '\0': /* end of buffer */ - case '\n': - case '\r': - bwb_error( err_od ); - return bwb_zline( l ); - case ' ': /* whitespace */ - case '\t': - ++CURTASK data_pos; - break; - default: - adv_loop = FALSE; /* carry on */ - break; - } + case '\0': /* end of buffer */ + bwb_error(err_od); + return bwb_zline(l); + case ' ': /* whitespace */ + ++CURTASK data_pos; + break; + default: + adv_loop = FALSE; /* carry on */ + break; + } + if( CURTASK data_line->buffer[CURTASK data_pos] == OptionCommentChar ) + { + bwb_error(err_od); + return bwb_zline(l); } + } - /* now at last we have a variable in v that needs to be - assigned data from the data_buffer at position CURTASK data_pos. - What remains to be done is to get one single bit of data, - a string constant or numerical constant, into the small - buffer */ + /* now at last we have a variable in v that needs to + * be assigned data from the data_buffer at position + * CURTASK data_pos. What remains to be done is to + * get one single bit of data, a string constant or + * numerical constant, into the small buffer */ + + /* leading whitespace is NOT part of the DATA item */ + while (CURTASK data_line->buffer[CURTASK data_pos] == ' ') + { + ++(CURTASK data_pos); + } + if (CURTASK data_line->buffer[CURTASK data_pos] == '"') + { + if (v->type != STRING) + { + bwb_error("Type mismatch"); + } + } + inp_const(CURTASK data_line->buffer, tbuf, &CURTASK data_pos); - inp_const( CURTASK data_line->buffer, tbuf, &CURTASK data_pos ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read(): data constant is <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif /* get parameters if the variable is dimensioned */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == '(' ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read(): variable <%s> is dimensioned", - v->name ); - bwb_debug( bwb_ebuf ); -#endif - dim_getparams( l->buffer, &( l->position ), &n_params, &pp ); - for ( n = 0; n < v->dimensions; ++n ) - { - v->array_pos[ n ] = pp[ n ]; - } - } -#if INTENSIVE_DEBUG - else - { - sprintf( bwb_ebuf, "in bwb_read(): variable <%s> is NOT dimensioned", - v->name ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in bwb_read(): remaining line <%s>", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); - } -#endif - + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == '(') + { + dim_getparams(l->buffer, &(l->position), &n_params, &pp); + for (n = 0; n < v->dimensions; ++n) + { + v->array_pos[n] = pp[n]; + } + } /* finally assign the data to the variable */ + ResultCode = RESULT_UNKNOWN; + inp_assign(tbuf, v, FALSE, &ResultCode); + switch (ResultCode) + { + case RESULT_OK: + break; + case RESULT_UNKNOWN: + bwb_error("Internal Error"); + return bwb_zline(l); + break; + case RESULT_TYPE_MMISMATCH: + bwb_error("Type Mismatch"); + return bwb_zline(l); + break; + case RESULT_ARITHMETIC_OVERFLOW: + bwb_Warning_Overflow("*** Arithmetic Overflow ***"); + break; + } + /* OK */ + } /* end of remainder of main loop */ + } /* end of main_loop */ - inp_assign( tbuf, v ); - - } /* end of remainder of main loop */ - - } /* end of main_loop */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_read(): exiting function, line <%s> ", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); -#endif - return bwb_zline( l ); + return bwb_zline(l); - } +} /*************************************************************** - + FUNCTION: bwb_data() - + DESCRIPTION: This function implements the BASIC DATA statement, although at the point at which DATA statements are encountered, no processing is done. All actual processing of DATA statements is accomplished by READ (bwb_read()). - + SYNTAX: DATA constant[, constant]... - + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_data( struct bwb_line *l ) -#else -struct bwb_line * -bwb_data( l ) - struct bwb_line *l; -#endif - { +bwb_DATA(struct bwb_line * l) +{ -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif + bwx_DEBUG(__FUNCTION__); - return bwb_zline( l ); + while (l->buffer[l->position] != '\0') + { + l->position++; } -/*************************************************************** + return bwb_zline(l); +} +/*************************************************************** + FUNCTION: bwb_restore() - + DESCRIPTION: This function implements the BASIC RESTORE statement. - + SYNTAX: RESTORE [line number] - + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_restore( struct bwb_line *l ) -#else -struct bwb_line * -bwb_restore( l ) - struct bwb_line *l; -#endif - { +bwb_RESTORE(struct bwb_line * l) +{ struct bwb_line *r; struct bwb_line *r_line; - int n; - int pos; - char tbuf[ MAXSTRINGSIZE + 1 ]; + int n; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); /* get the first element beyond the starting position */ - adv_element( l->buffer, &( l->position ), tbuf ); + adv_element(l->buffer, &(l->position), tbuf); /* if the line is not a numerical constant, then there is no - argument; set the current line to the first in the program */ - - if ( is_numconst( tbuf ) != TRUE ) - { - CURTASK data_line = &CURTASK bwb_start; - CURTASK data_pos = 0; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_restore(): RESTORE w/ no argument " ); - bwb_debug( bwb_ebuf ); -#endif - return bwb_zline( l ); - } + * argument; set the current line to the first in the program */ + if (is_numconst(tbuf) != TRUE) + { + CURTASK data_line = &CURTASK bwb_start; + CURTASK data_pos = 0; + return bwb_zline(l); + } /* find the line */ - n = atoi( tbuf ); + n = atoi(tbuf); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_restore(): line for restore is <%d>", n ); - bwb_debug( bwb_ebuf ); -#endif r_line = NULL; - for ( r = CURTASK bwb_start.next; r != &CURTASK bwb_end; r = r->next ) - { - - if ( r->number == n ) - { - r_line = r; - } - } + for (r = CURTASK bwb_start.next; r != &CURTASK bwb_end; r = r->next) + { - if ( r_line == NULL ) + if (r->number == n) { -#if PROG_ERRORS - sprintf( bwb_ebuf, "at line %d: Can't find line number for RESTORE.", - l->number ); - bwb_error( bwb_ebuf ); -#else - sprintf( bwb_ebuf, err_lnnotfound, n ); - bwb_error( bwb_ebuf ); -#endif - return bwb_zline( l ); + r_line = r; } + } - /* initialize variables for the line */ - - pos = 0; - line_start( r_line->buffer, &pos, - &( r_line->lnpos ), - &( r_line->lnum ), - &( r_line->cmdpos ), - &( r_line->cmdnum ), - &( r_line->startpos ) ); - + if (r_line == NULL) + { + sprintf(bwb_ebuf, "at line %d: Can't find line number for RESTORE.", + l->number); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } /* verify that line is a data statement */ - if ( bwb_cmdtable[ r_line->cmdnum ].vector != bwb_data ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "at line %d: Line %d is not a DATA statement.", - l->number, r_line->number ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - + if (r_line->cmdnum != C_DATA) + { + sprintf(bwb_ebuf, "at line %d: Line %d is not a DATA statement.", + l->number, r_line->number); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } /* reassign CURTASK data_line */ - CURTASK data_line = r_line; - CURTASK data_pos = CURTASK data_line->startpos; + CURTASK data_line = r_line; + CURTASK data_pos = CURTASK data_line->Startpos; - return bwb_zline( l ); - } + return bwb_zline(l); +} /*************************************************************** - + FUNCTION: bwb_input() - + DESCRIPTION: This function implements the BASIC INPUT statement. - + SYNTAX: INPUT [;][prompt$;]variable[$,variable]... INPUT#n variable[$,variable]... - + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_input( struct bwb_line *l ) -#else -struct bwb_line * -bwb_input( l ) - struct bwb_line *l; -#endif - { - FILE *fp; - int pos; - int req_devnumber; - struct exp_ese *v; - int is_prompt; - int suppress_qm; - static char tbuf[ MAXSTRINGSIZE + 1 ]; - static char pstring[ MAXSTRINGSIZE + 1 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_input(): enter function" ); - bwb_debug( bwb_ebuf ); -#endif +bwb_INPUT(struct bwb_line * l) +{ + FILE *fp; + int pos; + int req_devnumber; + int is_prompt; + int suppress_qm; + char tbuf[BasicStringLengthMax + 1]; + char pstring[BasicStringLengthMax + 1]; + int Loop; + int LastPosition; - pstring[ 0 ] = '\0'; + bwx_DEBUG(__FUNCTION__); -#if COMMON_CMDS + pstring[0] = '\0'; + req_devnumber = CONSOLE_FILE_NUMBER; - /* advance beyond whitespace and check for the '#' sign */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == '#' ) - { - ++( l->position ); - adv_element( l->buffer, &( l->position ), tbuf ); + adv_ws(l->buffer, &(l->position)); + + if (l->buffer[l->position] == BasicFileNumberPrefix) + { + struct exp_ese *v; + + ++(l->position); + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); pos = 0; - v = bwb_exp( tbuf, FALSE, &pos ); - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) - { - ++( l->position ); - } + v = bwb_exp(tbuf, FALSE, &pos); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ',') + { + ++(l->position); + } else - { -#if PROG_ERRORS - bwb_error( "in bwb_input(): no comma after#n" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } + { + bwb_error("in bwb_input(): no comma after #n"); + return bwb_zline(l); + } - req_devnumber = (int) exp_getnval( v ); + req_devnumber = exp_getival(v); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_input(): requested device number <%d>", - req_devnumber ); - bwb_debug( bwb_ebuf ); -#endif /* check the requested device number */ - if ( ( req_devnumber < 0 ) || ( req_devnumber >= DEF_DEVICES )) - { -#if PROG_ERRORS - bwb_error( "in bwb_input(): Requested device number is out if range." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } + if ((req_devnumber < 0) || (req_devnumber > BasicFileNumberMax)) + { + bwb_error("in bwb_input(): Requested device number is out if range."); + return bwb_zline(l); + } + if ((dev_table[req_devnumber].mode & DEVMODE_READ) == 0) + { + bwb_error("in bwb_input(): Requested device is not open for reading"); - if ( ( dev_table[ req_devnumber ].mode == DEVMODE_CLOSED ) || - ( dev_table[ req_devnumber ].mode == DEVMODE_AVAILABLE ) ) - { -#if PROG_ERRORS - bwb_error( "in bwb_input(): Requested device number is not open." ); -#else - bwb_error( err_devnum ); -#endif + return bwb_zline(l); + } + /* look up the requested device in the device table */ - return bwb_zline( l ); - } + } + if (req_devnumber == CONSOLE_FILE_NUMBER) + { + fp = stdin; + } + else + { + fp = dev_table[req_devnumber].cfp; + } - if ( dev_table[ req_devnumber ].mode != DEVMODE_INPUT ) - { -#if PROG_ERRORS - bwb_error( "in bwb_input(): Requested device is not open for INPUT." ); -#else - bwb_error( err_devnum ); -#endif + /* if input is not from stdin, then branch to bwb_xinp() */ - return bwb_zline( l ); - } + if (fp != stdin) + { + return bwb_xinp(l, fp); + } + /* from this point we presume that input is from stdin */ - /* look up the requested device in the device table */ - fp = dev_table[ req_devnumber ].cfp; - } - else - { - fp = stdin; - } + /* check for a semicolon or a quotation mark, not in first position: + * this should indicate a prompt string */ -#else - fp = stdin; -#endif /* COMMON_CMDS */ + suppress_qm = is_prompt = FALSE; - /* if input is not from stdin, then branch to bwb_xinp() */ - - if ( fp != stdin ) - { - return bwb_xinp( l, fp ); - } - - /* from this point we presume that input is from stdin */ - - /* check for a semicolon or a quotation mark, not in - first position: this should indicate a prompt string */ + adv_ws(l->buffer, &(l->position)); - suppress_qm = is_prompt = FALSE; + switch (l->buffer[l->position]) + { + case '\"': + is_prompt = TRUE; + break; - adv_ws( l->buffer, &( l->position ) ); + case ';': - switch( l->buffer[ l->position ] ) - { - case '\"': - is_prompt = TRUE; - break; + /* AGENDA: add code to suppress newline if a semicolon is + * used here; this may not be possible using ANSI C alone, + * since it has not functions for unechoed console input. */ - case ';': + is_prompt = TRUE; + ++l->position; + break; - /* AGENDA: add code to suppress newline if a - semicolon is used here; this may not be possible - using ANSI C alone, since it has not functions for - unechoed console input. */ + case ',': - is_prompt = TRUE; - ++l->position; - break; + /* QUERY: why is this code here? the question mark should be + * suppressed if a comma the prompt string. */ - case ',': - - /* QUERY: why is this code here? the question mark should - be suppressed if a comma the prompt string. */ + suppress_qm = TRUE; + ++l->position; + break; + } -#if INTENSIVE_DEBUG - bwb_debug( "in bwb_input(): found initial comma" ); -#endif - suppress_qm = TRUE; - ++l->position; - break; - } /* get prompt string and print it */ - if ( is_prompt == TRUE ) - { + if (is_prompt == TRUE) + { /* get string element */ - inp_const( l->buffer, tbuf, &( l->position ) ); + inp_const(l->buffer, tbuf, &(l->position)); /* advance past semicolon to beginning of variable */ @@ -641,1276 +637,1483 @@ bwb_input( l ) /* print the prompt string */ - strncpy( pstring, tbuf, MAXSTRINGSIZE ); - } /* end condition: prompt string */ + strncpy(pstring, tbuf, BasicStringLengthMax); + } /* end condition: prompt string */ + /* * * ' print out the question mark delimiter unless it has been + * suppressed */ - /* print out the question mark delimiter unless it has been - suppressed */ + if (suppress_qm != TRUE) + { + strncat(pstring, "? ", BasicStringLengthMax); + } + Loop = TRUE; + LastPosition = l->position; + while (Loop == TRUE) + { + int SavedPosition; - if ( suppress_qm != TRUE ) - { - strncat( pstring, "? ", MAXSTRINGSIZE ); - } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_input(): ready to get input line" ); - bwb_debug( bwb_ebuf ); -#endif + l->position = LastPosition; - /* read a line into the input buffer */ - bwx_input( pstring, tbuf ); - bwb_stripcr( tbuf ); + /* read a line into the input buffer */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_input(): received line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); - bwb_debug( "Press RETURN: " ); - getchar(); -#endif + bwx_input(pstring, tbuf); + bwb_stripcr(tbuf); - /* reset print column to account for LF at end of fgets() */ - * prn_getcol( stdout ) = 1; + /* reset print column to account for LF at end of fgets() */ - return inp_str( l, tbuf, l->buffer, &( l->position ) ); + ResetConsoleColumn(); - } -/*************************************************************** + SavedPosition = l->position; + if (inp_str(l, tbuf, l->buffer, &(l->position), TRUE) == TRUE) + { + /* successful input, FAKE run */ + l->position = SavedPosition; + if (inp_str(l, tbuf, l->buffer, &(l->position), FALSE) == TRUE) + { + /* successful input, REAL run */ + Loop = FALSE; + } + } + else + { + puts("*** Retry INPUT ***"); + } + } /* while( Loop == TRUE ) */ + return bwb_zline(l);; - FUNCTION: bwb_xinp() - DESCRIPTION: This function does the bulk of processing - for INPUT#, and so is file independent. +} -***************************************************************/ -#if ANSI_C -static struct bwb_line * -bwb_xinp( struct bwb_line *l, FILE *f ) -#else static struct bwb_line * -bwb_xinp( l, f ) - struct bwb_line *l; - FILE *f; -#endif - { - int loop; +bwb_xinp(struct bwb_line * l, FILE * f) +{ + /* INPUT # is similar to READ, where each file line is a DATA line, + * + */ + + register int n; + int main_loop; struct bwb_variable *v; - char c; - register int n; - int *pp; - int n_params; - char tbuf[ MAXSTRINGSIZE + 1 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xinp(): buffer <%s>", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); + int n_params; /* number of parameters */ + int *pp; /* pointer to parameter values */ + char tbuf[BasicStringLengthMax + 1]; +#if 0 + int ResultCode; #endif + int c; /* character */ - /* loop through elements required */ - loop = TRUE; - while ( loop == TRUE ) - { - - /* read a variable from the list */ + bwx_DEBUG(__FUNCTION__); - bwb_getvarname( l->buffer, tbuf, &( l->position ) ); - v = var_find( tbuf ); + /* Process each variable read from the READ statement */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xinp(): found variable name <%s>", - v->name ); - bwb_debug( bwb_ebuf ); -#endif + main_loop = TRUE; + while (main_loop == TRUE) + { + int adv_loop; - /* read subscripts */ + /* first check position in l->buffer and advance beyond + * whitespace */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == '(' ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xinp(): variable <%s> has dimensions", - v->name ); - bwb_debug( bwb_ebuf ); -#endif - dim_getparams( l->buffer, &( l->position ), &n_params, &pp ); - for ( n = 0; n < v->dimensions; ++n ) - { - v->array_pos[ n ] = pp[ n ]; - } - } - - inp_advws( f ); + adv_loop = TRUE; + while (adv_loop == TRUE) + { - /* perform type-specific input */ - switch( v->type ) + switch (l->buffer[l->position]) { - case STRING: - if ( inp_xgetc( f, TRUE ) != '\"' ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_xinp(): expected quotation mark" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - } - n = 0; - while ( ( c = (char) inp_xgetc( f, TRUE )) != '\"' ) - { - tbuf[ n ] = c; - ++n; - tbuf[ n ] = '\0'; - } - str_ctob( var_findsval( v, v->array_pos ), tbuf ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xinp(): read STRING <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - inp_eatcomma( f ); + case ',': /* comma delimiter */ + case ' ': /* whitespace */ + ++l->position; break; - default: - n = 0; - while ( ( c = (char) inp_xgetc( f, FALSE )) != ',' ) - { - tbuf[ n ] = c; - ++n; - tbuf[ n ] = '\0'; - } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xinp(): read NUMBER <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - /*------------------------------------------------------------*/ - /* atof call replaced by inp_numconst, gets all input formats */ - /* (JBV, 10/95) */ - /*------------------------------------------------------------*/ - /* * var_findnval( v, v->array_pos ) = (bnumber) atof( tbuf ); */ - * var_findnval( v, v->array_pos ) = inp_numconst( tbuf ); + case '\0': + adv_loop = FALSE; /* break out of advance + * loop */ + main_loop = FALSE; /* break out of main + * loop */ + break; + default: /* anything else */ + adv_loop = FALSE; /* break out of advance + * loop */ break; - } /* end of switch for type-specific input */ - - /* check for comma */ - - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) - { - ++( l->position ); } - else + if( l->buffer[l->position] == OptionCommentChar ) { - loop = FALSE; + adv_loop = FALSE; /* break out of advance + * loop */ + main_loop = FALSE; /* break out of main + * loop */ } } - /* return */ - return bwb_zline( l ); + /* be sure main_loop id still valid after checking the line */ - } + if (main_loop == TRUE) + { -/*************************************************************** + /* Read a variable name */ - FUNCTION: inp_advws() + bwb_getvarname(l->buffer, tbuf, &(l->position)); + inp_adv(l->buffer, &(l->position)); + if (bwb_isvar(tbuf) == FALSE) + { + /* not an existing variable */ + char *expression = l->buffer; + int LastPosition = l->position; + adv_ws(expression, &(LastPosition)); + if (expression[LastPosition] == '(') + { + /* MUST be a dynamically created + * array, READ A(10) ... ' variable + * "A" has NOT been dimensioned */ + int NumDimensions; - DESCRIPTION: This C function advances past whitespace - input from a particular file or device. + NumDimensions = DetermineNumberOfDimensions(expression, LastPosition); + if (NumDimensions < 1) + { + bwb_error(err_incomplete); + return bwb_zline(l); + } + if (ImplicitDim(tbuf, NumDimensions) != TRUE) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + } /* if( expression[ LastPosition ] == + * '(' ) */ + } + v = var_find(tbuf); + /* get parameters if the variable is dimensioned */ + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == '(') + { + dim_getparams(l->buffer, &(l->position), &n_params, &pp); + for (n = 0; n < v->dimensions; ++n) + { + v->array_pos[n] = pp[n]; + } + } -***************************************************************/ -#if ANSI_C -static int -inp_advws( FILE *f ) -#else -static int -inp_advws( f ) - FILE *f; -#endif - { - register int c; - int loop; + /* advance beyond whitespace or comma in data buffer */ + /* Advance to next line if end of buffer */ + /* advance beyond whitespace in data buffer */ + /* leading whitespace is NOT part of the DATA item */ + c = ' '; + while (c <= ' ') + { + c = fgetc(f); + if (c < 0) + { + /* EOF */ + bwb_error(err_od); + return bwb_zline(l); + } + } - loop = TRUE; - while ( loop == TRUE ) - { - c = (char) inp_xgetc( f, TRUE ); + /* now at last we have a variable in v that needs to + * be assigned data from the data_buffer at position + * CURTASK data_pos. What remains to be done is to + * get one single bit of data, a string constant or + * numerical constant, into the small buffer */ - switch( c ) { - case '\n': - case '\r': - case ' ': - case '\t': - break; - default: - char_saved = TRUE; - cs = c; - loop = FALSE; - break; - } - } - return TRUE; - } + int string; /* a quoted string */ + int s_pos; + int loop; -/*************************************************************** - FUNCTION: inp_xgetc() + string = FALSE; + s_pos = 0; + loop = TRUE; - DESCRIPTION: This C function reads in a character from - a specified file or device. + /* build the constant string */ + while (loop == TRUE) + { -***************************************************************/ + if (c < ' ') + { + /* END-OF-LINE */ + loop = FALSE; + } + else + if (c == ',') + { + if (string == FALSE) + { + /* end of argument */ + loop = FALSE; + } + else + { + /* internal comma is + * part of the DATA + * item */ + tbuf[s_pos] = c; + ++s_pos; + } + } + else + if (c == '"') + { + /* * Once we finish reading a + * quoted string, * we want + * to continue reading spaces * + * until EOL or comma */ + if (string == TRUE) + { + string = FALSE; + } + else + { + string = TRUE; + } + tbuf[s_pos] = c; + ++s_pos; + } + else + { + tbuf[s_pos] = c; + ++s_pos; + } + if (loop == TRUE) + { + /* read another character */ + c = fgetc(f); + if (c < 0) + { + /* EOF */ + bwb_error(err_od); + return bwb_zline(l); + } + } + } -#if ANSI_C -static int -inp_xgetc( FILE *f, int is_string ) -#else -static int -inp_xgetc( f, is_string ) - FILE *f; - int is_string; -#endif - { - register int c; - static int prev_eof = FALSE; + if (string == FALSE) + { + /* trailing whitespace is NOT part of + * the DATA item */ + while (s_pos > 0 && tbuf[s_pos - 1] == ' ') + { + s_pos--; + } + } + tbuf[s_pos] = '\0'; + /* clean-up quoted string */ + if (s_pos > 0 && tbuf[0] == '"') + { + /* not an empty string */ + char *Q; - if ( char_saved == TRUE ) - { - char_saved = FALSE; - return cs; - } + Q = strrchr(&tbuf[1], '"'); + if (Q != NULL) + { + *Q = '\0'; + } + strcpy(tbuf, &tbuf[1]); + } + } - if ( feof( f ) != 0 ) - { - if ( prev_eof == TRUE ) + /* finally assign the data to the variable */ + if (v->type == STRING) { - bwb_error( err_od ); + str_ctob(var_findsval(v, v->array_pos), tbuf); } - else + else { - prev_eof = TRUE; - return (int) ','; - } - } - - prev_eof = FALSE; + /* N = VAL( A$ ) */ + BasicNumberType Value = 0; + if (strlen(tbuf) > 0) + { + int ScanResult; + ScanResult = sscanf(tbuf, BasicNumberScanFormat, &Value); + if (ScanResult != 1) + { + /* not a number */ + Value = 0; + } + else + { + /* OK */ + } + } + *(var_findnval(v, v->array_pos)) = Value; + } +#if 0 + ResultCode = RESULT_UNKNOWN; + inp_assign(tbuf, v, FALSE, &ResultCode); + switch (ResultCode) + { + case RESULT_OK: + break; + case RESULT_UNKNOWN: + bwb_error("Internal Error"); + return bwb_zline(l); + break; + case RESULT_TYPE_MMISMATCH: + bwb_error("Type Mismatch"); + return bwb_zline(l); + break; + case RESULT_ARITHMETIC_OVERFLOW: + bwb_Warning_Overflow("*** Arithmetic Overflow ***"); + break; + } +#endif + /* OK */ + } /* end of remainder of main loop */ + } /* end of main_loop */ - c = fgetc( f ); - if ( is_string == TRUE ) - { - return c; - } - - switch( c ) - { - case ' ': - case '\n': - case ',': - case '\r': - return ','; - } + return bwb_zline(l); - return c; +} - } /*************************************************************** - - FUNCTION: inp_eatcomma() - - DESCRIPTION: This C function advances beyond a comma - input from a specified file or device. - + + FUNCTION: inp_str() + + DESCRIPTION: This function does INPUT processing + from a determined string of input + data and a determined variable list + (both in memory). This presupposes + that input has been taken from stdin, + not from a disk file or device. + ***************************************************************/ -#if ANSI_C -static int -inp_eatcomma( FILE *f ) -#else static int -inp_eatcomma( f ) - FILE *f; -#endif - { - char c; +inp_str(struct bwb_line * l, char *input_buffer, char *var_list, int *vl_position, int IsFake) +{ + int i; + register int n; + int loop; + int *pp; + int n_params; + char ttbuf[BasicStringLengthMax + 1]; /* build element */ + char varname[BasicStringLengthMax + 1]; /* build element */ - while ( ( c = (char) inp_xgetc( f, TRUE ) ) == ',' ) - { - } - - char_saved = TRUE; - cs = c; - - return TRUE; - } + int Result; + int ReadAllVars; + int ReadAllData; + int ResultCode; -/*************************************************************** + bwx_DEBUG(__FUNCTION__); - FUNCTION: inp_str() + Result = FALSE; + ReadAllVars = FALSE; + ReadAllData = FALSE; - DESCRIPTION: This function does INPUT processing - from a determined string of input - data and a determined variable list - (both in memory). This presupposes - that input has been taken from stdin, - not from a disk file or device. -***************************************************************/ -#if ANSI_C -static struct bwb_line * -inp_str( struct bwb_line *l, char *input_buffer, char *var_list, int *vl_position ) -#else -static struct bwb_line * -inp_str( l, input_buffer, var_list, vl_position ) - struct bwb_line *l; - char *input_buffer; - char *var_list; - int *vl_position; -#endif - { - int i; - register int n; - struct bwb_variable *v; - int loop; - int *pp; - int n_params; - char ttbuf[ MAXSTRINGSIZE + 1 ]; /* build element */ - char varname[ MAXSTRINGSIZE + 1 ]; /* build element */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_str(): received line <%s>", - l->buffer ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in inp_str(): received variable list <%s>.", - &( var_list[ *vl_position ] ) ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in inp_str(): received input buffer <%s>.", - input_buffer ); - bwb_debug( bwb_ebuf ); -#endif /* Read elements, and assign them to variables */ i = 0; loop = TRUE; - while ( loop == TRUE ) - { + while (loop == TRUE) + { + struct bwb_variable *v; /* get a variable name from the list */ - bwb_getvarname( var_list, varname, vl_position ); /* get name */ - v = var_find( varname ); + bwb_getvarname(var_list, varname, vl_position); /* get name */ + if (strlen(varname) == 0) + { + bwb_error("Syntax Error"); + return FALSE; + } + if (bwb_isvar(varname) == FALSE) + { + /* not an existing variable */ + char *expression = var_list; + int LastPosition = *vl_position; + adv_ws(expression, &(LastPosition)); + if (expression[LastPosition] == '(') + { + /* MUST be a dynamically created array, INPUT + * A(10) ... ' variable "A" has NOT been + * dimensioned */ + int NumDimensions; + + NumDimensions = DetermineNumberOfDimensions(expression, LastPosition); + if (NumDimensions < 1) + { + bwb_error(err_incomplete); + return FALSE; + } + if (ImplicitDim(varname, NumDimensions) != TRUE) + { + bwb_error(err_syntax); + return FALSE; + } + } /* if( expression[ LastPosition ] == '(' ) */ + } + v = var_find(varname); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_str(): found variable buffer <%s> name <%s>", - varname, v->name ); - bwb_debug( bwb_ebuf ); -#endif /* read subscripts if appropriate */ - adv_ws( var_list, vl_position ); - if ( var_list[ *vl_position ] == '(' ) + adv_ws(var_list, vl_position); + if (var_list[*vl_position] == '(') + { + dim_getparams(var_list, vl_position, &n_params, &pp); + for (n = 0; n < v->dimensions; ++n) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_str(): variable <%s> has dimensions", - v->name ); - bwb_debug( bwb_ebuf ); -#endif - dim_getparams( var_list, vl_position, &n_params, &pp ); - for ( n = 0; n < v->dimensions; ++n ) + v->array_pos[n] = pp[n]; + } + } + /* build string from input buffer in ttbuf */ + + n = 0; + ttbuf[0] = '\0'; + while ((input_buffer[i] != ',') + && (input_buffer[i] != '\0')) + { + if (input_buffer[i] == '"') + { + ttbuf[n] = input_buffer[i]; /* copy the first quote */ + i++; /* skip past first quote */ + n++; + while ((input_buffer[i] != '"') + && (input_buffer[i] != '\0')) + { + ttbuf[n] = input_buffer[i]; + i++; + n++; + } + if (input_buffer[i] == '"') { - v->array_pos[ n ] = pp[ n ]; + ttbuf[n] = input_buffer[i]; /* copy the last quote */ + i++; /* skip past last quote */ + n++; } } + else + { + ttbuf[n] = input_buffer[i]; + i++; /* skip past first quote */ + n++; + } + } + ttbuf[n] = '\0';/* terminate */ - /* build string from input buffer in ttbuf */ - n = 0; - ttbuf[ 0 ] = '\0'; - while ( ( input_buffer[ i ] != ',' ) - && ( input_buffer[ i ] != '\0' )) + + + if (TRUE) + { + char *b; /* pointer to the beginning + * of the string */ + char *e; /* pointer to the ending of + * the string */ + + /* remove contol characters */ + b = ttbuf; + while (*b) { - ttbuf[ n ] = input_buffer[ i ]; - ++n; - ++i; - ttbuf[ n ] = '\0'; + if (*b < ' ') + { + *b = ' '; + } + b++; + } + /* remove leading spaces */ + b = ttbuf; + while (*b == ' ') + { + b++; } + /* remove trailing spaces */ + e = strchr(b, '\0'); + if (e != NULL) + { + int WasQuoted; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_str(): string for input <%s>", - ttbuf ); - bwb_debug( bwb_ebuf ); -#endif + WasQuoted = FALSE; + e--; + while (e > b && *e == ' ') + { + *e = '\0'; + e--; + } + if (strlen(b) == 0) + { + if (OptionFlags & OPTION_BUGS_ON) + { + /* silently ignore */ + } + else + { + puts("*** Type Mismatch ***"); + return FALSE; + } + } + /* remove matching quotes */ + if (*b == '"') + { + /* first char is a quote */ + e = strchr(b, '\0'); + if (e != NULL) + { + e--; + if (e > b) + { + if (*e == '"') + { + /* last char + * is a quote */ + b++; + *e = '\0'; + WasQuoted = TRUE; + } + } + } + } + if (OptionFlags & OPTION_BUGS_ON) + { + /* silently ignore */ + } + else + if (WasQuoted == FALSE) + { + /* if was NOT quoted, then the only + * valid chars are ' ', '+', '-', + * '.', digit, letter */ + char *P; + P = b; + while (*P != '\0') + { + char C; + C = *P; + P++; + /* switch */ + if (C == ' ' || C == '+' || C == '-' || C == '.' || isdigit(C) || isalpha(C)) + { + /* OK */ + } + else + { + /* ERROR */ + puts("*** Type Mismatch ***"); + return FALSE; + } + } + } + } + strcpy(ttbuf, b); + } /* perform type-specific input */ - inp_assign( ttbuf, v ); - - /* check for commas in variable list and input list and advance */ - - adv_ws( var_list, vl_position ); - switch( var_list[ *vl_position ] ) - { - case '\n': - case '\r': - case '\0': - case ':': - loop = FALSE; - break; - case ',': - ++( *vl_position ); - break; - } - adv_ws( var_list, vl_position ); - - adv_ws( input_buffer, &i ); - switch ( input_buffer[ i ] ) - { - case '\n': - case '\r': - case '\0': - case ':': - loop = FALSE; - break; - case ',': - ++i; - break; - } - adv_ws( input_buffer, &i ); + ResultCode = RESULT_UNKNOWN; + inp_assign(ttbuf, v, IsFake, &ResultCode); + switch (ResultCode) + { + case RESULT_OK: + break; + case RESULT_UNKNOWN: + bwb_error("Internal Error"); + return FALSE; + break; + case RESULT_TYPE_MMISMATCH: + puts("*** Type Mismatch ***"); + return FALSE; + break; + case RESULT_ARITHMETIC_OVERFLOW: + puts("*** Overflow ***"); + return FALSE; + break; + } + /* OK */ + + /* check for commas in variable list and input list and + * advance */ + + adv_ws(var_list, vl_position); + switch (var_list[*vl_position]) + { + case '\0': + loop = FALSE; + ReadAllVars = TRUE; + break; + case ',': + ++(*vl_position); + break; } + adv_ws(var_list, vl_position); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_str(): exit, line buffer <%s>", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + adv_ws(input_buffer, &i); + switch (input_buffer[i]) + { + case '\0': + loop = FALSE; + ReadAllData = TRUE; + break; + case ',': + ++i; + break; + } + adv_ws(input_buffer, &i); - /* return */ + } - return bwb_zline( l ); + /* return */ + + if (ReadAllVars == TRUE && ReadAllData == TRUE) + { + Result = TRUE; + } + else + { + /* READ/DATA mismatch */ + puts("*** Count Mismatch ***"); + return FALSE; } -/*************************************************************** + return Result; - FUNCTION: inp_assign() +} +/*************************************************************** + + FUNCTION: inp_assign() + DESCRIPTION: This function assigns the value of a numerical or string constant to a variable. + + +***************************************************************/ -***************************************************************/ -#if ANSI_C static int -inp_assign( char *b, struct bwb_variable *v ) -#else -static int -inp_assign( b, v ) - char *b; - struct bwb_variable *v; -#endif - { +inp_assign(char *b, struct bwb_variable * v, int IsFake, int *ResultCode) +{ + bwx_DEBUG(__FUNCTION__); - switch( v->type ) + switch (v->type) + { + case STRING: + if (IsFake == TRUE) { - case STRING: - str_ctob( var_findsval( v, v->array_pos ), b ); - break; + } + else + { + str_ctob(var_findsval(v, v->array_pos), b); + } + if (strchr(b, '"') != NULL) + { + /* embedded quotes */ + *ResultCode = RESULT_TYPE_MMISMATCH; + } + else + { + *ResultCode = RESULT_OK; + } + break; - case NUMBER: - if ( strlen( b ) == 0 ) - { - *( var_findnval( v, v->array_pos )) = (bnumber) 0.0; - } + case NUMBER: + if (strlen(b) == 0) + { + if (IsFake == TRUE) + { + } else - { - /*------------------------------------------------------------*/ - /* atof call replaced by inp_numconst, gets all input formats */ - /* (JBV, 10/95) */ - /*------------------------------------------------------------*/ - /* *( var_findnval( v, v->array_pos )) = (bnumber) atof( b ); */ - *( var_findnval( v, v->array_pos )) = inp_numconst( b ); - } - break; + { + *(var_findnval(v, v->array_pos)) = 0.0; + } + if (OptionFlags & OPTION_BUGS_ON) + { + *ResultCode = RESULT_OK; + } + else + { + *ResultCode = RESULT_TYPE_MMISMATCH; + } + } + else + { + if (IsFake == TRUE) + { + inp_numconst(b, ResultCode); + } + else + { + *(var_findnval(v, v->array_pos)) = inp_numconst(b, ResultCode); + } + } + break; - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in inp_assign(): variable <%s> of unknown type", - v->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - return FALSE; + default: + *ResultCode = RESULT_TYPE_MMISMATCH; + return FALSE; - } + } return FALSE; - } +} /*************************************************************** - + FUNCTION: inp_adv() - + DESCRIPTION: This function advances the string pointer past whitespace and the item delimiter (comma). - + ***************************************************************/ -#if ANSI_C -int -inp_adv( char *b, int *c ) -#else int -inp_adv( b, c ) - char *b; - int *c; -#endif - { - int rval; +inp_adv(char *b, int *c) +{ + int rval; + + bwx_DEBUG(__FUNCTION__); rval = FALSE; - while( TRUE ) + while (TRUE) + { + switch (b[*c]) { - switch( b[ *c ] ) - { - case ' ': /* whitespace */ - case '\t': - case ';': /* semicolon, end of prompt string */ - ++*c; - break; - case ',': /* comma, variable delimiter */ - rval = TRUE; - ++*c; - break; - case '\0': /* end of line */ - case ':': /* end of line segment */ - rval = TRUE; - last_inp_adv_rval = rval; /* JBV */ - return rval; - default: - last_inp_adv_rval = rval; /* JBV */ - return rval; - } + case ' ': /* whitespace */ + case ';': /* semicolon, end of prompt string */ + ++*c; + break; + case ',': /* comma, variable delimiter */ + rval = TRUE; + ++*c; + break; + case '\0': /* end of line */ + rval = TRUE; + last_inp_adv_rval = rval; /* JBV */ + return rval; + default: + last_inp_adv_rval = rval; /* JBV */ + return rval; } } +} /*************************************************************** - + FUNCTION: inp_const() - + DESCRIPTION: This function reads a numerical or string constant from into , incrementing appropriately. - + ***************************************************************/ -#if ANSI_C -static int -inp_const( char *m_buffer, char *s_buffer, int *position ) -#else static int -inp_const( m_buffer, s_buffer, position ) - char *m_buffer; - char *s_buffer; - int *position; -#endif +inp_const(char *m_buffer, char *s_buffer, int *position) +{ + int string; + int s_pos; + int loop; + + bwx_DEBUG(__FUNCTION__); + + /* leading whitespace is NOT part of the DATA item */ + while (m_buffer[*position] == ' ') { - int string; - int s_pos; - int loop; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_const(): received argument <%s>.", - &( m_buffer[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + ++(*position); + } + + + string = FALSE; /* first detect string constant */ - if ( m_buffer[ *position ] == '\"' ) - { + if (m_buffer[*position] == '\"') + { string = TRUE; - ++( *position ); - } + ++(*position); + } else - { + { string = FALSE; - } + } /* build the constant string */ - s_buffer[ 0 ] = '\0'; s_pos = 0; + s_buffer[s_pos] = '\0'; + + loop = TRUE; - while ( loop == TRUE ) + while (loop == TRUE) + { + if( m_buffer[*position] == OptionCommentChar && string == FALSE ) { + /* end of string */ + /* trailing whitespace is NOT part of the + * DATA item */ + while (s_pos > 0 && s_buffer[s_pos - 1] == ' ') + { + s_pos--; + s_buffer[s_pos] = '\0'; + } + return TRUE; + } - switch ( m_buffer[ *position ] ) - { - case '\0': /* end of string */ - case '\n': - case '\r': - return TRUE; - case ' ': /* whitespace */ - case '\t': - case ',': /* or end of argument */ - if ( string == FALSE ) - { - return TRUE; - } - else - { - s_buffer[ s_pos ] = m_buffer[ *position ]; - ++( *position ); - ++s_buffer; - s_buffer[ s_pos ] = '\0'; - } - break; - case '\"': - if ( string == TRUE ) - { - ++( *position ); /* advance beyond quotation mark */ - inp_adv( m_buffer, position ); - return TRUE; - } - else - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Unexpected character in numerical constant." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return FALSE; - } - default: - s_buffer[ s_pos ] = m_buffer[ *position ]; - ++( *position ); - ++s_buffer; - s_buffer[ s_pos ] = '\0'; - break; + switch (m_buffer[*position]) + { + case '\0': /* end of string */ + return TRUE; + /* internal whitespace is part of the DATA item */ + case ',': /* or end of argument */ + if (string == FALSE) + { + /* trailing whitespace is NOT part of the + * DATA item */ + while (s_pos > 0 && s_buffer[s_pos - 1] == ' ') + { + s_pos--; + s_buffer[s_pos] = '\0'; + } + return TRUE; } - + else + { + s_buffer[s_pos] = m_buffer[*position]; + ++(*position); + ++s_pos; + s_buffer[s_pos] = '\0'; + } + break; + case '\"': + if (string == TRUE) + { + ++(*position); /* advance beyond quotation + * mark */ + inp_adv(m_buffer, position); + return TRUE; + } + else + { + sprintf(bwb_ebuf, "Unexpected character in numerical constant."); + bwb_error(bwb_ebuf); + return FALSE; + } + default: + s_buffer[s_pos] = m_buffer[*position]; + ++(*position); + ++s_pos; + s_buffer[s_pos] = '\0'; + break; } + } + return FALSE; - } +} -#if COMMON_CMDS /*************************************************************** - + FUNCTION: bwb_line() - + DESCRIPTION: This function implements the BASIC LINE INPUT statement. - - SYNTAX: LINE INPUT [[#] device-number,]["prompt string";] string-variable$ - + + SYNTAX: LINE INPUT [[#] device-number,]["prompt string";] string-variable$ + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_line( struct bwb_line *l ) -#else struct bwb_line * -bwb_line( l ) - struct bwb_line *l; -#endif - { - int dev_no; +bwb_LINE(struct bwb_line * l) +{ + int dev_no; struct bwb_variable *v; - FILE *inp_device; - char tbuf[ MAXSTRINGSIZE + 1 ]; - char pstring[ MAXSTRINGSIZE + 1 ]; - struct exp_ese *e; /* JBV */ - int pos; /* JBV */ + FILE *inp_device; + char tbuf[BasicStringLengthMax + 1]; + char pstring[BasicStringLengthMax + 1]; + struct exp_ese *e; /* JBV */ + int pos; /* JBV */ + + bwx_DEBUG(__FUNCTION__); /* assign default values */ inp_device = stdin; - pstring[ 0 ] = '\0'; + pstring[0] = '\0'; /* advance to first element (INPUT statement) */ - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - if ( strcmp( tbuf, "INPUT" ) != 0 ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } - adv_ws( l->buffer, &( l->position ) ); + adv_element(l->buffer, &(l->position), tbuf); + if (strcasecmp(tbuf, "INPUT") != 0) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + adv_ws(l->buffer, &(l->position)); /* check for semicolon in first position */ - if ( l->buffer[ l->position ] == ';' ) - { + if (l->buffer[l->position] == ';') + { ++l->position; - adv_ws( l->buffer, &( l->position ) ); - } - + adv_ws(l->buffer, &(l->position)); + } /* else check for# for file number in first position */ - else if ( l->buffer[ l->position ] == '#' ) - { + else + if (l->buffer[l->position] == BasicFileNumberPrefix) + { ++l->position; - adv_element( l->buffer, &( l->position ), tbuf ); - adv_ws( l->buffer, &( l->position )); - /* dev_no = atoi( tbuf ); */ /* We really need more, added next (JBV) */ + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); + adv_ws(l->buffer, &(l->position)); + /* dev_no = atoi( tbuf ); *//* We really need more, added + * next (JBV) */ pos = 0; - e = bwb_exp( tbuf, FALSE, &pos ); - dev_no = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_line(): file number requested <%d>", dev_no ); - bwb_debug( bwb_ebuf ); -#endif - - if ( dev_table[ dev_no ].cfp == NULL ) - { - bwb_error( err_dev ); - return bwb_zline( l ); - } - else - { - inp_device = dev_table[ dev_no ].cfp; - } + e = bwb_exp(tbuf, FALSE, &pos); + if (ERROR_PENDING) + { + return bwb_zline(l); } + dev_no = exp_getival(e); - /* check for comma */ - if ( l->buffer[ l->position ] == ',' ) + if (dev_table[dev_no].cfp == NULL) { - ++( l->position ); - adv_ws( l->buffer, &( l->position )); + bwb_error(err_dev); + return bwb_zline(l); } - - /* check for quotation mark indicating prompt */ - - if ( l->buffer[ l->position ] == '\"' ) + else { - inp_const( l->buffer, pstring, &( l->position ) ); + inp_device = dev_table[dev_no].cfp; } + } + /* check for comma */ - /* read the variable for assignment */ + if (l->buffer[l->position] == ',') + { + ++(l->position); + adv_ws(l->buffer, &(l->position)); + } + /* check for quotation mark indicating prompt */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_line(): tbuf <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in bwb_line(): line buffer <%s>", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + if (l->buffer[l->position] == '\"') + { + inp_const(l->buffer, pstring, &(l->position)); + } + /* read the variable for assignment */ - adv_element( l->buffer, &( l->position ), tbuf ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_line(): variable buffer <%s>", tbuf ); - bwb_debug( bwb_ebuf ); +#if 0 + adv_element(l->buffer, &(l->position), tbuf); #endif - v = var_find( tbuf ); - if ( v->type != STRING ) + bwb_getvarname(l->buffer, tbuf, &(l->position)); + if (bwb_isvar(tbuf) == FALSE) + { + /* not an existing variable */ + char *expression = l->buffer; + int LastPosition = l->position; + adv_ws(expression, &(LastPosition)); + if (expression[LastPosition] == '(') { -#if PROG_ERRORS - bwb_error( "in bwb_line(): String variable required" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_line(): variable for assignment <%s>", v->name ); - bwb_debug( bwb_ebuf ); -#endif + /* MUST be a dynamically created array, LINE INPUT + * A(10) ... ' variable "A" has NOT been dimensioned */ + int NumDimensions; + NumDimensions = DetermineNumberOfDimensions(expression, LastPosition); + if (NumDimensions < 1) + { + bwb_error(err_incomplete); + return bwb_zline(l); + } + if (ImplicitDim(tbuf, NumDimensions) != TRUE) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + } /* if( expression[ LastPosition ] == '(' ) */ + } + v = var_find(tbuf); + if (v->type != STRING) + { + bwb_error("in bwb_line(): String variable required"); + return bwb_zline(l); + } /* read a line of text into the bufffer */ - if ( inp_device == stdin ) - { - bwx_input( pstring, tbuf ); - } + if (inp_device == stdin) + { + bwx_input(pstring, tbuf); + } else - { - /* Was MAXSTRINGSIZE (JBV 9/8/97) */ - fgets( tbuf, MAXSTRINGSIZE + 2, inp_device ); - } - bwb_stripcr( tbuf ); - str_ctob( var_findsval( v, v->array_pos ), tbuf ); + { + fgets(tbuf, BasicStringLengthMax, inp_device); + } + bwb_stripcr(tbuf); + str_ctob(var_findsval(v, v->array_pos), tbuf); /* end: return next line */ - return bwb_zline( l ); - } + return bwb_zline(l); +} -#endif /* COMMON_CMDS */ /*************************************************************** - - FUNCTION: inp_numconst() - - DESCRIPTION: This function interprets a numerical - constant. Added by JBV 10/95 - + + FUNCTION: inp_numconst() + + DESCRIPTION: This function interprets a numerical + constant. Added by JBV 10/95 + ***************************************************************/ -#if ANSI_C -bnumber -inp_numconst( char *expression ) -#else -bnumber -inp_numconst( expression ) - char *expression; -#endif - { - int base; /* numerical base for the constant */ - static struct bwb_variable mantissa; /* mantissa of floating-point number */ - static int init = FALSE; /* is mantissa variable initialized? */ - int exponent; /* exponent for floating point number */ - int man_start; /* starting point of mantissa */ - int s_pos; /* position in build string */ - int build_loop; - int need_pm; - int i; - bnumber d; +BasicNumberType +inp_numconst(char *expression, int *ResultCode) +{ + int base; /* numerical base for the constant */ + static struct bwb_variable mantissa; /* mantissa of floating-point + * number */ + static int init = FALSE; /* is mantissa variable initialized? */ + int exponent; /* exponent for floating point number */ + int man_start; /* starting point of mantissa */ + int s_pos; /* position in build string */ + int build_loop; + int need_pm; + unsigned int u; /* Expression stack stuff */ - char type; - bnumber nval; - char string[ MAXSTRINGSIZE + 1 ]; - int pos_adv; + /* char type; */ + BasicNumberType nval; + char string[BasicStringLengthMax + 1]; + int pos_adv; /* initialize the variable if necessary */ -#if INTENSIVE_DEBUG - strcpy( mantissa.name, "(mantissa)" ); -#endif + bwx_DEBUG(__FUNCTION__); - if ( init == FALSE ) - { - init = TRUE; - var_make( &mantissa, NUMBER ); - } + if (init == FALSE) + { + init = TRUE; + var_make(&mantissa, NUMBER); + } /* be sure that the array_pos[ 0 ] for mantissa is set to dim_base; - this is necessary because mantissa might be used before dim_base - is set */ + * this is necessary because mantissa might be used before dim_base + * is set */ - mantissa.array_pos[ 0 ] = dim_base; + mantissa.array_pos[0] = dim_base; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_numconst(): received <%s>, eval <%c>", - expression, expression[ 0 ] ); - bwb_debug( bwb_ebuf ); -#endif need_pm = FALSE; - nval = (bnumber) 0; + nval = 0; - /* check the first character(s) to determine numerical base - and starting point of the mantissa */ + /* check the first character(s) to determine numerical base and + * starting point of the mantissa */ - switch( expression[ 0 ] ) + switch (expression[0]) + { + case '-': + case '+': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '.': + base = 10; /* decimal constant */ + man_start = 0; /* starts at position 0 */ + need_pm = FALSE; + break; + case '&': /* hex or octal constant */ + if ((expression[1] == 'H') || (expression[1] == 'h')) { - case '-': - case '+': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '.': - base = 10; /* decimal constant */ - man_start = 0; /* starts at position 0 */ - need_pm = FALSE; - break; - case '&': /* hex or octal constant */ - if ( ( expression[ 1 ] == 'H' ) || ( expression[ 1 ] == 'h' )) - { - base = 16; /* hexadecimal constant */ - man_start = 2; /* starts at position 2 */ - } + base = 16; /* hexadecimal constant */ + man_start = 2; /* starts at position 2 */ + } + else + { + base = 8; /* octal constant */ + if ((expression[1] == 'O') || (expression[1] == 'o')) + { + man_start = 2; /* starts at position 2 */ + } else - { - base = 8; /* octal constant */ - if ( ( expression[ 1 ] == 'O' ) || ( expression[ 1 ] == 'o' )) - { - man_start = 2; /* starts at position 2 */ - } - else - { - man_start = 1; /* starts at position 1 */ - } - } - break; - default: - -#if PROG_ERRORS - sprintf( bwb_ebuf, "expression <%s> is not a numerical constant.", - expression ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return (bnumber) 0; + { + man_start = 1; /* starts at position 1 */ + } } + break; + default: + *ResultCode = RESULT_TYPE_MMISMATCH; + return 0; + } /* now build the mantissa according to the numerical base */ - switch( base ) - { + switch (base) + { - case 10: /* decimal constant */ + case 10: /* decimal constant */ - /* initialize counters */ + /* initialize counters */ - pos_adv = man_start; - type = NUMBER; - string[ 0 ] = '\0'; - s_pos = 0; - exponent = 0; - build_loop = TRUE; + pos_adv = man_start; + /* type = NUMBER; */ + string[0] = '\0'; + s_pos = 0; + exponent = 0; + build_loop = TRUE; - /* loop to build the string */ + /* loop to build the string */ - while ( build_loop == TRUE ) - { - switch( expression[ pos_adv ] ) - { - case '-': /* prefixed plus or minus */ - case '+': + while (build_loop == TRUE) + { + switch (expression[pos_adv]) + { + case '-': /* prefixed plus or minus */ + case '+': - /* in the first position, a plus or minus sign can - be added to the beginning of the string to be - scanned */ + /* in the first position, a plus or minus + * sign can be added to the beginning of the + * string to be scanned */ - if ( pos_adv == man_start ) - { - string[ s_pos ] = expression[ pos_adv ]; - ++pos_adv; /* advance to next character */ - ++s_pos; - string[ s_pos ] = '\0'; - } + if (pos_adv == man_start) + { + string[s_pos] = expression[pos_adv]; + ++pos_adv; /* advance to next + * character */ + ++s_pos; + string[s_pos] = '\0'; + } + /* but in any other position, the plus or + * minus sign must be taken as an operator + * and thus as terminating the string to be + * scanned */ - /* but in any other position, the plus or minus sign - must be taken as an operator and thus as terminating - the string to be scanned */ + else + { + build_loop = FALSE; + } + break; + case '.': /* note at least single precision */ + case '0': /* or ordinary digit */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + string[s_pos] = expression[pos_adv]; + ++pos_adv; /* advance to next character */ + ++s_pos; + string[s_pos] = '\0'; + break; - else - { - build_loop = FALSE; - } - break; - case '.': /* note at least single precision */ - case '0': /* or ordinary digit */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - string[ s_pos ] = expression[ pos_adv ]; - ++pos_adv; /* advance to next character */ - ++s_pos; - string[ s_pos ] = '\0'; - break; - - case '#': /* Microsoft-type precision indicator; ignored but terminates */ - case '!': /* Microsoft-type precision indicator; ignored but terminates */ - ++pos_adv; /* advance to next character */ - type = NUMBER; - exponent = FALSE; - build_loop = FALSE; - break; - - case 'E': /* exponential, single precision */ - case 'e': - ++pos_adv; /* advance to next character */ - type = NUMBER; - exponent = TRUE; - build_loop = FALSE; - break; + case BasicDoubleSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicSingleSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicCurrencySuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + case BasicLongSuffix: /* Microsoft-type precision + * indicator; ignored but + * terminates */ + case BasicIntegerSuffix: /* Microsoft-type + * precision indicator; + * ignored but + * terminates */ + ++pos_adv; /* advance to next character */ + /* type = NUMBER; */ + exponent = FALSE; + build_loop = FALSE; + break; - case 'D': /* exponential, double precision */ - case 'd': - ++pos_adv; /* advance to next character */ - type = NUMBER; - exponent = TRUE; - build_loop = FALSE; - break; + case 'E': /* exponential, single precision */ + case 'e': + ++pos_adv; /* advance to next character */ + /* type = NUMBER; */ + exponent = TRUE; + build_loop = FALSE; + break; + case '\0': + build_loop = FALSE; + break; + default: + /* not numeric */ + /* ERROR messages are displayed by the + * calling routine */ + *ResultCode = RESULT_TYPE_MMISMATCH; + return 0; + break; + } - default: /* anything else, terminate */ - build_loop = FALSE; - break; - } + } - } + /* assign the value to the mantissa variable */ - /* assign the value to the mantissa variable */ - -#if NUMBER_DOUBLE - sscanf( string, "%lf", var_findnval( &mantissa, mantissa.array_pos )); -#else - sscanf( string, "%f", var_findnval( &mantissa, mantissa.array_pos )); -#endif + sscanf(string, BasicNumberScanFormat, var_findnval(&mantissa, mantissa.array_pos)); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_numconst(): read mantissa, string <%s> val <%lf>", - string, var_getnval( &mantissa ) ); - bwb_debug( bwb_ebuf ); -#endif - /* test if integer bounds have been exceeded */ + /* test if integer bounds have been exceeded */ - if ( type == NUMBER ) - { - i = (int) var_getnval( &mantissa ); - d = (bnumber) i; - if ( d != var_getnval( &mantissa )) - { - type = NUMBER; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_numconst(): integer bounds violated, promote to NUMBER" ); - bwb_debug( bwb_ebuf ); -#endif - } - } + if (TRUE /* type == NUMBER */ ) + { + int i; + BasicNumberType d; + + i = (int) var_getnval(&mantissa); + d = (BasicNumberType) i; + if (d != var_getnval(&mantissa)) + { + /* type = NUMBER; */ + } + } + /* read the exponent if there is one */ - /* read the exponent if there is one */ + if (exponent == TRUE) + { - if ( exponent == TRUE ) - { + /* allow a plus or minus once at the beginning */ - /* allow a plus or minus once at the beginning */ + need_pm = TRUE; - need_pm = TRUE; + /* initialize counters */ - /* initialize counters */ + string[0] = '\0'; + s_pos = 0; + build_loop = TRUE; - string[ 0 ] = '\0'; - s_pos = 0; - build_loop = TRUE; + /* loop to build the string */ - /* loop to build the string */ + while (build_loop == TRUE) + { + switch (expression[pos_adv]) + { + case '-': /* prefixed plus or minus */ + case '+': - while ( build_loop == TRUE ) + if (need_pm == TRUE) /* only allow once */ { - switch( expression[ pos_adv ] ) - { - case '-': /* prefixed plus or minus */ - case '+': - - if ( need_pm == TRUE ) /* only allow once */ - { - string[ s_pos ] = expression[ pos_adv ]; - ++pos_adv; /* advance to next character */ - ++s_pos; - string[ s_pos ] = '\0'; - } - else - { - build_loop = FALSE; - } - break; - - case '0': /* or ordinary digit */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - - string[ s_pos ] = expression[ pos_adv ]; - ++pos_adv; /* advance to next character */ - ++s_pos; - string[ s_pos ] = '\0'; - need_pm = FALSE; - break; + string[s_pos] = expression[pos_adv]; + ++pos_adv; /* advance to next + * character */ + ++s_pos; + string[s_pos] = '\0'; + } + else + { + build_loop = FALSE; + } + break; - default: /* anything else, terminate */ - build_loop = FALSE; - break; - } + case '0': /* or ordinary digit */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + + string[s_pos] = expression[pos_adv]; + ++pos_adv; /* advance to next + * character */ + ++s_pos; + string[s_pos] = '\0'; + need_pm = FALSE; + break; - } /* end of build loop for exponent */ + default: /* anything else, terminate */ + build_loop = FALSE; + break; + } - /* assign the value to the user variable */ + } /* end of build loop for exponent */ -#if NUMBER_DOUBLE - sscanf( string, "%lf", &nval ); -#else - sscanf( string, "%f", &nval ); -#endif + /* assign the value to the user variable */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_numconst(): exponent is <%d>", - (int) nval ); - bwb_debug( bwb_ebuf ); -#endif + sscanf(string, BasicNumberScanFormat, &nval); - } /* end of exponent search */ - if ( nval == (bnumber) 0 ) - { - nval = var_getnval( &mantissa ); - } - else - { - nval = var_getnval( &mantissa ) - * pow( (bnumber) 10.0, (bnumber) nval ); - } + } /* end of exponent search */ + if (nval == 0) + { + nval = var_getnval(&mantissa); + } + else + { + nval = var_getnval(&mantissa) + * pow(10.0, nval); + } - break; + break; - case 8: /* octal constant */ + case 8: /* octal constant */ - /* initialize counters */ + /* initialize counters */ - pos_adv = man_start; - type = NUMBER; - string[ 0 ] = '\0'; - s_pos = 0; - exponent = 0; - build_loop = TRUE; + pos_adv = man_start; + /* type = NUMBER; */ + string[0] = '\0'; + s_pos = 0; + exponent = 0; + build_loop = TRUE; - /* loop to build the string */ + /* loop to build the string */ - while ( build_loop == TRUE ) - { - switch( expression[ pos_adv ] ) - { - case '0': /* or ordinary digit */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - string[ s_pos ] = expression[ pos_adv ]; - ++pos_adv; /* advance to next character */ - ++s_pos; - string[ s_pos ] = '\0'; - break; + while (build_loop == TRUE) + { + switch (expression[pos_adv]) + { + case '0': /* or ordinary digit */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + string[s_pos] = expression[pos_adv]; + ++pos_adv; /* advance to next character */ + ++s_pos; + string[s_pos] = '\0'; + break; - default: /* anything else, terminate */ - build_loop = FALSE; - break; - } + default: /* anything else, terminate */ + build_loop = FALSE; + break; + } - } + } - /* now scan the string to determine the number */ + /* now scan the string to determine the number */ - sscanf( string, "%o", &i ); - nval = (bnumber) i; + sscanf(string, "%o", &u); + nval = u; - break; + break; - case 16: /* hexadecimal constant */ + case 16: /* hexadecimal constant */ - /* initialize counters */ + /* initialize counters */ - pos_adv = man_start; - type = NUMBER; - string[ 0 ] = '\0'; - s_pos = 0; - exponent = 0; - build_loop = TRUE; + pos_adv = man_start; + /* type = NUMBER; */ + string[0] = '\0'; + s_pos = 0; + exponent = 0; + build_loop = TRUE; - /* loop to build the string */ + /* loop to build the string */ - while ( build_loop == TRUE ) - { - switch( expression[ pos_adv ] ) - { - case '0': /* or ordinary digit */ - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'a': - case 'B': - case 'b': - case 'C': - case 'c': - case 'D': - case 'd': - case 'E': - case 'e': - case 'F': /* Don't forget these! (JBV) */ - case 'f': - string[ s_pos ] = expression[ pos_adv ]; - - ++pos_adv; /* advance to next character */ - ++s_pos; - string[ s_pos ] = '\0'; - break; + while (build_loop == TRUE) + { + switch (expression[pos_adv]) + { + case '0': /* or ordinary digit */ + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'a': + case 'B': + case 'b': + case 'C': + case 'c': + case 'D': + case 'd': + case 'E': + case 'e': + case 'F': /* Don't forget these! (JBV) */ + case 'f': + string[s_pos] = expression[pos_adv]; + + ++pos_adv; /* advance to next character */ + ++s_pos; + string[s_pos] = '\0'; + break; - default: /* anything else, terminate */ - build_loop = FALSE; - break; - } + default: /* anything else, terminate */ + build_loop = FALSE; + break; + } - } + } - /* now scan the string to determine the number */ + /* now scan the string to determine the number */ - sscanf( string, "%x", &i ); - nval = (bnumber) i; - break; - } + sscanf(string, "%x", &u); + nval = u; + break; + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in inp_numconst(): precision <%c> value <%lf>", - type, nval ); - bwb_debug( bwb_ebuf ); -#endif + + /* check Value */ + if (isnan(nval)) + { + nval = 0; + /* ERROR messages are displayed by the calling routine */ + *ResultCode = RESULT_TYPE_MMISMATCH; + } + else + if (isinf(nval)) + { + if (nval < 0) + { + nval = -(DBL_MAX); /* FLT_MAX */ + } + else + { + nval = (DBL_MAX); /* FLT_MAX */ + } + /* ERROR messages are displayed by the calling routine */ + *ResultCode = RESULT_ARITHMETIC_OVERFLOW; + } + else + { + *ResultCode = RESULT_OK; + } return nval; - } +} + +/* EOF */ diff --git a/bwb_int.c b/bwb_int.c index 5c44451..183dff8 100644 --- a/bwb_int.c +++ b/bwb_int.c @@ -1,26 +1,26 @@ /***************************************************************f - + bwb_int.c Line Interpretation Routines for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ @@ -29,276 +29,176 @@ /* */ /* Those additionally marked with "DD" were at the suggestion of */ /* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include #include "bwbasic.h" -#include "bwb_mes.h" -/*************************************************************** - FUNCTION: adv_element() +/*************************************************************** + + FUNCTION: adv_element() + DESCRIPTION: This function reads characters in beginning at and advances past a line element, incrementing appropri- ately and returning the line element in . - + ***************************************************************/ -#if ANSI_C -int -adv_element( char *buffer, int *pos, char *element ) -#else int -adv_element( buffer, pos, element ) - char *buffer; - int *pos; - char *element; -#endif - { - int loop; /* control loop */ - int e_pos; /* position in element buffer */ - int str_const; /* boolean: building a string constant */ +adv_element(char *buffer, int *pos, char *element) +{ + int loop; /* control loop */ + int e_pos; /* position in element buffer */ + int str_const; /* boolean: building a string + * constant */ + + bwx_DEBUG(__FUNCTION__); /* advance beyond any initial whitespace */ - adv_ws( buffer, pos ); + adv_ws(buffer, pos); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in adv_element(): receieved <%s>.", &( buffer[ *pos ] )); - bwb_debug( bwb_ebuf ); -#endif - /* now loop while building an element and looking for an - element terminator */ + /* now loop while building an element and looking for an element + * terminator */ loop = TRUE; e_pos = 0; - element[ e_pos ] = '\0'; + element[e_pos] = '\0'; str_const = FALSE; - while ( loop == TRUE ) + while (loop == TRUE) + { + + if (buffer[*pos] == OptionCommentChar) { - switch( buffer[ *pos ] ) + if (str_const == TRUE) { - case ',': /* element terminators */ - case ';': -#if MULTISEG_LINES - case ':': -#endif - case '=': - case ' ': - case '\t': - /* case '\0': */ /* Removed by JBV (found by DD) */ - case '\n': - case '\r': - if ( str_const == TRUE ) - { - element[ e_pos ] = buffer[ *pos ]; - ++e_pos; - ++( *pos ); - element[ e_pos ] = '\0'; - } - else - { - return TRUE; - } - break; - - case '\0': /* Added by JBV (found by DD) */ - if ( str_const == TRUE ) /* termination of string constant */ - { - element[ e_pos ] = '\"'; - element[ ++e_pos ] = '\0'; - } - return TRUE; - break; - - case '\"': /* string constant */ - element[ e_pos ] = buffer[ *pos ]; + element[e_pos] = buffer[*pos]; ++e_pos; - ++( *pos ); - element[ e_pos ] = '\0'; - if ( str_const == TRUE ) /* termination of string constant */ - { - return TRUE; - } - else /* beginning of string constant */ - { - str_const = TRUE; - } - break; - - default: - element[ e_pos ] = buffer[ *pos ]; + ++(*pos); + element[e_pos] = '\0'; + } + else + { + return TRUE; + } + } + switch (buffer[*pos]) + { + case ',': /* element terminators */ + case ';': + case '=': + case ' ': + /* case '\0': *//* Removed by JBV (found by DD) */ + if (str_const == TRUE) + { + element[e_pos] = buffer[*pos]; ++e_pos; - ++( *pos ); - element[ e_pos ] = '\0'; - break; + ++(*pos); + element[e_pos] = '\0'; + } + else + { + return TRUE; + } + break; + + case '\0': /* Added by JBV (found by DD) */ + if (str_const == TRUE) /* termination of string + * constant */ + { + element[e_pos] = '\"'; + element[++e_pos] = '\0'; } + return TRUE; + break; + + case '\"': /* string constant */ + element[e_pos] = buffer[*pos]; + ++e_pos; + ++(*pos); + element[e_pos] = '\0'; + if (str_const == TRUE) /* termination of string + * constant */ + { + return TRUE; + } + else /* beginning of string constant */ + { + str_const = TRUE; + } + break; + + default: + element[e_pos] = buffer[*pos]; + ++e_pos; + ++(*pos); + element[e_pos] = '\0'; + break; } + } /* This should not happen */ return FALSE; - } +} /*************************************************************** - + FUNCTION: adv_ws() - + DESCRIPTION: This function reads characters in beginning at and advances past any whitespace, incrementing appropri- ately. - + ***************************************************************/ -#if ANSI_C -int -adv_ws( char *buffer, int *pos ) -#else int -adv_ws( buffer, pos ) - char *buffer; - int *pos; -#endif - { - int loop; - - loop = TRUE; - while ( loop == TRUE ) - { - switch( buffer[ *pos ] ) - { - case ' ': - case '\t': - ++( *pos ); - break; - default: - return TRUE; - } - } - - /* This should not happen */ +adv_ws(char *buffer, int *pos) +{ + bwx_DEBUG(__FUNCTION__); + while (buffer[*pos] == ' ') + (*pos)++; return FALSE; - - } +} /*************************************************************** - - FUNCTION: adv_eos() - - DESCRIPTION: This function reads characters in - beginning at and advances to the - end of a segment delimited by ':', - incrementing appropriately. - + + FUNCTION: adv_eos() + + DESCRIPTION: This function reads characters in + beginning at and advances to the + end of a segment delimited by '\0', + incrementing appropriately. + ***************************************************************/ -#if MULTISEG_LINES -#if ANSI_C -int -adv_eos( char *buffer, int *pos ) -#else int -adv_eos( buffer, pos ) - char *buffer; - int *pos; -#endif - { - int loop; - - loop = TRUE; - while ( loop == TRUE ) - { - - if ( is_eol( buffer, pos ) == TRUE ) - { - return FALSE; - } - - switch( buffer[ *pos ] ) - { - case ':': /* end of segment marker */ - ++( *pos ); - return TRUE; - - case '\"': /* begin quoted string */ - - ++( *pos ); - - while ( buffer[ *pos ] != '\"' ) - { - if ( is_eol( buffer, pos ) == TRUE ) - { - return FALSE; - } - else - { - ++( *pos ); - } - } - - break; - - default: - ++( *pos ); - } - } - - /* This should not happen */ +adv_eos(char *buffer, int *pos) +{ + bwx_DEBUG(__FUNCTION__); + while (buffer[*pos] != '\0') + (*pos)++; return FALSE; +} - } - -#endif /* MULTISEG_LINES */ - -/*************************************************************** - - FUNCTION: bwb_strtoupper() - - DESCRIPTION: This function converts the string in - to upper-case characters. - -***************************************************************/ - -#if ANSI_C -int -bwb_strtoupper( char *buffer ) -#else -int -bwb_strtoupper( buffer ) - char *buffer; -#endif - { - char *p; - - p = buffer; - while ( *p != '\0' ) - { - if ( islower( *p ) != FALSE ) - { - *p = (char) toupper( *p ); - } - ++p; - } - - return TRUE; - - } /*************************************************************** - + FUNCTION: line_start() - + DESCRIPTION: This function reads a line buffer in beginning at the position and attempts to determine (a) @@ -311,672 +211,1930 @@ bwb_strtoupper( buffer ) BASIC command in the command table (returned in ), and (e) the position of the beginning of the rest - of the line (returned in ). - Although must be returned + of the line (returned in ). + Although must be returned as a positive integer, the other searches may fail, in which case FALSE will be returned in their positions. is not incremented. - + ***************************************************************/ -#if ANSI_C -int -line_start( char *buffer, int *pos, int *lnpos, int *lnum, int *cmdpos, - int *cmdnum, int *startpos ) -#else + int -line_start( buffer, pos, lnpos, lnum, cmdpos, cmdnum, startpos ) - char *buffer; - int *pos; - int *lnpos; - int *lnum; - int *cmdpos; - int *cmdnum; - int *startpos; -#endif - { - static int position; - static char *tbuf; - static int init = FALSE; +line_start(struct bwb_line * l) +{ + int position; + char tbuf[BasicStringLengthMax + 1]; - /* get memory for temporary buffer if necessary */ - if ( init == FALSE ) - { - init = TRUE; + bwx_DEBUG(__FUNCTION__); - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "line_start")) == NULL ) + + /* set initial values */ + l->Startpos = 0; + l->cmdnum = 0; /* not found */ + position = 0; + + adv_ws(l->buffer, &position); + + /* handle special cases */ + if (l->buffer[position] == '\0') + { + l->cmdnum = C_REM; + return TRUE; + } + if (l->buffer[position] == OptionCommentChar) + { + l->cmdnum = C_REM; + return TRUE; + } + if (strncasecmp(&l->buffer[position], "REM", 3) == 0) + { + l->cmdnum = C_REM; + return TRUE; + } + if (l->buffer[position] == '?') + { + l->cmdnum = C_QUEST; + l->Startpos = position; + l->Startpos++; + return TRUE; + } + + /* advance beyond the first element */ + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + + if (is_label(tbuf) == TRUE) + { + l->cmdnum = C_USER_LBL; /* bwb_USER_LBL */ + adv_ws(l->buffer, &position); + l->Startpos = position; + } + else + if ((l->cmdnum = is_cmd(tbuf)) > 0) + { + /* * NOTE: This is NOT a full parser, this exists only to * + * handle STRUCTURED commands. It is true that we also handle * + * some other easy cases, but remember that this only exists * + * to support STRUCTURED commands. Whether any other commands * + * get processed here is simply because it was easy to do so. */ + adv_ws(l->buffer, &position); + l->Startpos = position; + if (l->cmdnum == C_CASE) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) { -#if PROG_ERRORS - bwb_error( "in line_start(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif - } + /* syntax error */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "ELSE") == 0) + { + l->cmdnum = C_CASE_ELSE; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "IF") == 0) + { + l->cmdnum = C_CASE_IF; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "IS") == 0) + { + l->cmdnum = C_CASE_IS; + l->Startpos = position; + } + else + { + /* CASE ... */ + } } + else + if (l->cmdnum == C_DO) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* plain DO */ + } + else + if (strcasecmp(tbuf, "UNTIL") == 0) + { + l->cmdnum = C_DO_UNTIL; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "WHILE") == 0) + { + l->cmdnum = C_DO_WHILE; + l->Startpos = position; + } + else + { + /* syntax error */ + } + } + else + if (l->cmdnum == C_END) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* plain END */ + } + else + if (strcasecmp(tbuf, "FUNCTION") == 0) + { + l->cmdnum = C_END_FUNCTION; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "IF") == 0) + { + l->cmdnum = C_END_IF; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "SELECT") == 0) + { + l->cmdnum = C_END_SELECT; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "SUB") == 0) + { + l->cmdnum = C_END_SUB; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (l->cmdnum == C_EXIT) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* syntax error */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "DO") == 0) + { + l->cmdnum = C_EXIT_DO; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "FOR") == 0) + { + l->cmdnum = C_EXIT_FOR; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "FUNCTION") == 0) + { + l->cmdnum = C_EXIT_FUNCTION; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "SUB") == 0) + { + l->cmdnum = C_EXIT_SUB; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "UNTIL") == 0) + { + l->cmdnum = C_EXIT_UNTIL; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "WHILE") == 0) + { + l->cmdnum = C_EXIT_WHILE; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (l->cmdnum == C_GO) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* syn tax + * + * err or */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "SUB") == 0) + { + l->cmdnum = C_GOSUB; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "TO") == 0) + { + l->cmdnum = C_GOTO; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (l->cmdnum == C_IF) + { + /* sep era te cla ssi c IF fro m str uct ued + * + * IF */ + if (GetKeyword(l, NULL, " GOTO ")) + { + /* C L A S S I C */ + /* I F + * + * .. . + * + * GO T O + * + * .. . */ + } + else + if (GetKeyword(l, NULL, " ELSE ")) + { + /* C L A S S I C */ + /* I F + * + * .. . + * + * GO T O + * + * .. . + * + * EL S E + * + * .. . */ + /* I F + * + * .. . + * + * TH E N + * + * .. . + * + * EL S E + * + * .. . */ + } + else + if (IsLastKeyword(l, " THEN") == TRUE) + { + /* S T R U C T U R E D */ + /* I F + * + * .. . + * + * TH E N */ + l->cmdnum = C_IF_THEN; + } + else + { + /* C L A S S I C */ + /* I F + * + * .. . + * + * TH E N + * + * .. . */ + } + } + else + if (l->cmdnum == C_LOOP) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* p l a i n + * + * LO O P */ + } + else + if (strcasecmp(tbuf, "UNTIL") == 0) + { + l->cmdnum = C_LOOP_UNTIL; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "WHILE") == 0) + { + l->cmdnum = C_LOOP_WHILE; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (l->cmdnum == C_ON) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* O N + * + * .. . + * + * GO . . . */ + } + else + if (strcasecmp(tbuf, "ERROR") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "GOTO") == 0) + { + l->cmdnum = C_ON_ERROR_GOTO; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "GOSUB") == 0) + { + l->cmdnum = C_ON_ERROR_GOSUB; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "RESUME") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "NEXT") == 0) + { + l->cmdnum = C_ON_ERROR_RESUME_NEXT; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "RETURN") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "NEXT") == 0) + { + l->cmdnum = C_ON_ERROR_RETURN_NEXT; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "TIMER") == 0) + { + l->cmdnum = C_ON_TIMER; + l->Startpos = position; + } + else + { + /* O N + * + * .. . + * + * GO . . . */ + } + } + else + if (l->cmdnum == C_OPEN) + { + /* s e p e r a t e + * + * cl a s s i c + * + * OP E N + * + * fr o m + * + * st r u c t u e d + * + * OP E N */ + if (GetKeyword(l, NULL, " AS ")) + { + /* S T R U C T U R E D */ + } + else + { + /* C L A S S I C */ + l->cmdnum = C_DEF_SUB; + l->Startpos = 0; + } + } + else + if (l->cmdnum == C_OPTION) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "ANGLE") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "DEGREES") == 0) + { + l->cmdnum = C_OPTION_ANGLE_DEGREES; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "RADIANS") == 0) + { + l->cmdnum = C_OPTION_ANGLE_RADIANS; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "ARITHMETIC") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "DECIMAL") == 0) + { + l->cmdnum = C_OPTION_ARITHMETIC_DECIMAL; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "FIXED") == 0) + { + l->cmdnum = C_OPTION_ARITHMETIC_FIXED; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "NATIVE") == 0) + { + l->cmdnum = C_OPTION_ARITHMETIC_NATIVE; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "BASE") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "0") == 0) + { + l->cmdnum = C_OPTION_BASE_0; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "1") == 0) + { + l->cmdnum = C_OPTION_BASE_1; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "BUGS") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "OFF") == 0) + { + l->cmdnum = C_OPTION_BUGS_OFF; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "ON") == 0) + { + l->cmdnum = C_OPTION_BUGS_ON; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "COMMENT") == 0) + { + l->cmdnum = C_OPTION_COMMENT; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "COMPARE") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "BINARY") == 0) + { + l->cmdnum = C_OPTION_COMPARE_BINARY; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "DATABASE") == 0) + { + l->cmdnum = C_OPTION_COMPARE_DATABASE; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "TEXT") == 0) + { + l->cmdnum = C_OPTION_COMPARE_TEXT; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "COVERAGE") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "OFF") == 0) + { + l->cmdnum = C_OPTION_COVERAGE_OFF; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "ON") == 0) + { + l->cmdnum = C_OPTION_COVERAGE_ON; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "DATE") == 0) + { + l->cmdnum = C_OPTION_DATE; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "DISABLE") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "COMMAND") == 0) + { + l->cmdnum = C_OPTION_DISABLE_COMMAND; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "FUNCTION") == 0) + { + l->cmdnum = C_OPTION_DISABLE_FUNCTION; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "OPERATOR") == 0) + { + l->cmdnum = C_OPTION_DISABLE_OPERATOR; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "ENABLE") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "COMMAND") == 0) + { + l->cmdnum = C_OPTION_ENABLE_COMMAND; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "FUNCTION") == 0) + { + l->cmdnum = C_OPTION_ENABLE_FUNCTION; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "OPERATOR") == 0) + { + l->cmdnum = C_OPTION_ENABLE_OPERATOR; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "ERROR") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "GOSUB") == 0) + { + l->cmdnum = C_OPTION_ERROR_GOSUB; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "GOTO") == 0) + { + l->cmdnum = C_OPTION_ERROR_GOTO; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "INDENT") == 0) + { + l->cmdnum = C_OPTION_INDENT; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "LABELS") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "OFF") == 0) + { + l->cmdnum = C_OPTION_LABELS_OFF; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "ON") == 0) + { + l->cmdnum = C_OPTION_LABELS_ON; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "STATEMENT") == 0) + { + l->cmdnum = C_OPTION_STATEMENT; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "STRICT") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "OFF") == 0) + { + l->cmdnum = C_OPTION_STRICT_OFF; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "ON") == 0) + { + l->cmdnum = C_OPTION_STRICT_ON; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "TERMINAL") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "NONE") == 0) + { + l->cmdnum = C_OPTION_TERMINAL_NONE; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "ADM-3A") == 0) + { + l->cmdnum = C_OPTION_TERMINAL_ADM_3A; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "ANSI") == 0) + { + l->cmdnum = C_OPTION_TERMINAL_ANSI; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "TIME") == 0) + { + l->cmdnum = C_OPTION_TIME; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "TRACE") == 0) + { + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "OFF") == 0) + { + l->cmdnum = C_OPTION_TRACE_OFF; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "ON") == 0) + { + l->cmdnum = C_OPTION_TRACE_ON; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (strcasecmp(tbuf, "VERSION") == 0) + { + l->cmdnum = C_OPTION_VERSION; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (l->cmdnum == C_SELECT) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "CASE") == 0) + { + l->cmdnum = C_SELECT_CASE; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + else + if (l->cmdnum == C_TIMER) + { + position = l->Startpos; + scan_element(l->buffer, &position, tbuf); + adv_ws(l->buffer, &position); + if (strlen(tbuf) == 0) + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + else + if (strcasecmp(tbuf, "OFF") == 0) + { + l->cmdnum = C_TIMER_OFF; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "ON") == 0) + { + l->cmdnum = C_TIMER_ON; + l->Startpos = position; + } + else + if (strcasecmp(tbuf, "STOP") == 0) + { + l->cmdnum = C_TIMER_STOP; + l->Startpos = position; + } + else + { + /* s y n t a x + * + * er r o r */ + l->cmdnum = 0; + } + } + /* */ + switch (l->cmdnum) + { + case C_DEF: + case C_FUNCTION: + case C_SUB: + case C_USER_LBL: + fslt_add(l); + break; + } + /* */ + } + else + if (is_let(l->buffer) == TRUE) + { + /* this is an implied LET, such as A = ... */ + l->cmdnum = C_LET; /* bwb_LET */ + l->Startpos = 0; + } + else + if (fnc_find(tbuf) != NULL) + { + /* user is executing a function, such as 100 COS X */ + l->cmdnum = C_DEF_SUB; /* bwb_DEF_SUB, in bwb_tbl.c */ + l->Startpos = 0; + } + /* return */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in line_start(): pos <%d> buffer <%s>", *pos, - buffer ); - bwb_debug( bwb_ebuf ); -#endif + return TRUE; - /* set initial values */ +} + + +/*************************************************************** + + FUNCTION: scan_element() + + DESCRIPTION: This function reads characters in + beginning at and advances past a + line element, incrementing appropri- + ately and returning the line element in + . + + This function stops at first non-alnum. + +***************************************************************/ + +int +scan_element(char *buffer, int *pos, char *element) +{ + /* HERE-Here-here */ + + char *C; + char *E; + int p; + + p = *pos; + C = buffer; + C += p; + E = element; + + while (*C == ' ') + { + C++; + } + if (isalnum(*C)) + { + if (OptionFlags & OPTION_BUGS_ON) + { + while (isalnum(*C) || *C == '_' || *C == '.') + { + *E = *C; + E++; + C++; + } + } + else + { + while (isalnum(*C)) + { + *E = *C; + E++; + C++; + } + } + if( *C == OptionStatementChar + || *C == BasicStringSuffix + || *C == '*' + ) + { + /* LABEL: */ + /* MID$ */ + /* CLOAD* */ + *E = *C; + E++; + C++; + } + } + while (*C == ' ') + { + C++; + } + *E = '\0'; + p = C - buffer; + *pos = p; + return TRUE; - *startpos = position = *pos; - *cmdpos = *lnpos = *pos; - *cmdnum = *lnum = -1; +#if 0 - /* check for null line */ - adv_ws( buffer, &position ); - if ( buffer[ position ] == '\0' ) - { -#if INTENSIVE_DEBUG - bwb_debug( "in line_start(): found NULL line" ); -#endif - *cmdnum = getcmdnum( CMD_REM ); - return TRUE; - } + int loop; /* control loop */ + int e_pos; /* position in element buffer */ + int str_const; /* boolean: building a string + * constant */ - /* advance beyond the first element */ - *lnpos = position; - scan_element( buffer, &position, tbuf ); - adv_ws( buffer, &position ); + bwx_DEBUG(__FUNCTION__); - /* test for a line number in the first element */ - if ( is_numconst( tbuf ) == TRUE ) /* a line number */ - { + /* advance beyond any initial whitespace */ + adv_ws(buffer, pos); - *lnum = atoi( tbuf ); - *startpos = position; /* temp */ - *cmdpos = position; - scan_element( buffer, &position, tbuf ); /* advance past next element */ + /* now loop while building an element and looking for an element + * terminator */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in line_start(): new element is <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif + loop = TRUE; + e_pos = 0; + element[e_pos] = '\0'; + str_const = FALSE; -#if STRUCT_CMDS - if ( is_label( tbuf ) == TRUE ) - { - *cmdnum = getcmdnum( CMD_LABEL ); - adv_ws( buffer, &position ); - *startpos = position; - } + while (loop == TRUE) + { - else if ( is_cmd( tbuf, cmdnum ) == TRUE ) -#else - if ( is_cmd( tbuf, cmdnum ) == TRUE ) -#endif + if (buffer[*pos] == OptionCommentChar) + { + return TRUE; + } + switch (buffer[*pos]) + { + case ',': /* element terminators */ + case ';': + case '=': + case ' ': + case '\0': + case '\"': /* string constant */ + case '#': + if (str_const == TRUE) { - adv_ws( buffer, &position ); - *startpos = position; + element[e_pos] = buffer[*pos]; + ++e_pos; + ++(*pos); + element[e_pos] = '\0'; } - - else if ( is_let( &( buffer[ *cmdpos ] ), cmdnum ) == TRUE ) + else { - *cmdpos = -1; + return TRUE; } - - else + break; +#if 0 + case '\"': /* string constant */ + element[e_pos] = buffer[*pos]; + ++e_pos; + ++(*pos); + element[e_pos] = '\0'; + if (str_const == TRUE) /* termination of string + * constant */ { - *cmdpos = *cmdnum = -1; + return TRUE; } - } - - /* not a line number */ - - else - { - *lnum = -1; - *lnpos = -1; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in line_start(): no line number, element <%s>.", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - -#if STRUCT_CMDS - if ( is_label( tbuf ) == TRUE ) + else /* beginning of string constant */ { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in line_start(): label detected <%s>.", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - *cmdnum = getcmdnum( CMD_LABEL ); - adv_ws( buffer, &position ); - *startpos = position; + str_const = TRUE; } - - else if ( is_cmd( tbuf, cmdnum ) == TRUE ) -#else - if ( is_cmd( tbuf, cmdnum ) == TRUE ) + break; #endif + case '(': /* MID$ command termination (JBV) */ + /* If MID$ is here, get out */ + if (strcasecmp(element, "MID$") == 0) { - adv_ws( buffer, &position ); - *startpos = position; - } - - else if ( is_let( &( buffer[ position ] ), cmdnum ) == TRUE ) - { - adv_ws( buffer, &position ); - *cmdpos = -1; + return TRUE; } + /* else add it to the accumulation element */ + element[e_pos] = buffer[*pos]; + ++e_pos; + ++(*pos); + element[e_pos] = '\0'; + break; - else - { - *cmdpos = *cmdnum = -1; - } + default: + element[e_pos] = buffer[*pos]; + ++e_pos; + ++(*pos); + element[e_pos] = '\0'; + break; } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in line_start(): lnpos <%d> lnum <%d>", - *lnpos, *lnum ); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in line_start(): cmdpos <%d> cmdnum <%d> startpos <%d>", - *cmdpos, *cmdnum, *startpos ); - bwb_debug( bwb_ebuf ); -#endif - - /* return */ + /* This should not happen */ - return TRUE; + return FALSE; +#endif - } +} /*************************************************************** - + FUNCTION: is_cmd() + + DESCRIPTION: This function determines whether the + string in 'buffer' is a BASIC command + statement, returning 'id' or 0. + + +***************************************************************/ + - DESCRIPTION: This function determines whether the - string in 'buffer' is a BASIC command - statement, returning TRUE or FALSE, - and if TRUE returning the command number - in the command lookup table in the - integer pointed to by 'cmdnum'. -***************************************************************/ -#if ANSI_C -int -is_cmd( char *buffer, int *cmdnum ) -#else int -is_cmd( buffer, cmdnum ) - char *buffer; - int *cmdnum; -#endif - { - register int n; +is_cmd(char *buffer) +{ + register int n; - /* Convert the command name to upper case */ + bwx_DEBUG(__FUNCTION__); - bwb_strtoupper( buffer ); /* Go through the command table and search for a match. */ - for ( n = 0; n < COMMANDS; ++n ) - { - if ( strcmp( bwb_cmdtable[ n ].name, buffer ) == 0 ) + for (n = 0; n < NUM_COMMANDS; ++n) + { + if (OptionVersion & bwb_cmdtable[n].OptionVersionBitmask) + if (strcasecmp(bwb_cmdtable[n].name, buffer) == 0) { - *cmdnum = n; - return TRUE; + return bwb_cmdtable[n].id; } - } - + } /* No command name was found */ + return 0; - *cmdnum = -1; - return FALSE; - - } +} /*************************************************************** - + FUNCTION: is_let() - + DESCRIPTION: This function tries to determine if the expression in is a LET statement without the LET command specified. - + ***************************************************************/ - -#if ANSI_C -int -is_let( char *buffer, int *cmdnum ) -#else int -is_let( buffer, cmdnum ) - char *buffer; - int *cmdnum; -#endif - { - register int n, i; +is_let(char *buffer) +{ + register int n; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in is_let(): buffer <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); - /* Go through the expression and search for an assignment operator. */ + /* Go through the expression and search for an unquoted assignment operator. */ - for ( n = 0; buffer[ n ] != '\0'; ++n ) + for (n = 0; buffer[n] != '\0'; ++n) + { + switch (buffer[n]) { - switch( buffer[ n ] ) + case '\"': /* string constant */ + ++n; + while (buffer[n] != '\"') { - case '\"': /* string constant */ ++n; - while( buffer[ n ] != '\"' ) - { - ++n; - if ( buffer[ n ] == '\0' ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Incomplete string constant" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - *cmdnum = -1; - return FALSE; - } - } - ++n; - break; - case '=': - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in is_let(): implied LET found." ); - bwb_debug( bwb_ebuf ); -#endif - - for ( i = 0; i < COMMANDS; ++i ) - { - if ( strncmp( bwb_cmdtable[ i ].name, "LET", (size_t) 3 ) == 0 ) - { - *cmdnum = i; - } - } - return TRUE; + if (buffer[n] == '\0') + { + sprintf(bwb_ebuf, "Incomplete string constant"); + bwb_error(bwb_ebuf); + return FALSE; + } } + ++n; + break; + case '=': + return TRUE; } + } /* No command name was found */ - *cmdnum = -1; return FALSE; - } +} /*************************************************************** - - FUNCTION: bwb_stripcr() - - DESCRIPTION: This function strips the carriage return - or line-feed from the end of a string. - + + FUNCTION: is_label() + + DESCRIPTION: This function determines whether the string + pointed to by 'buffer' is a label (i.e., + ends with colon). + ***************************************************************/ -#if ANSI_C -int -bwb_stripcr( char *s ) -#else int -bwb_stripcr( s ) - char *s; -#endif +is_label(char *buffer) +{ + bwx_DEBUG(__FUNCTION__); + + + if (OptionFlags & OPTION_LABELS_ON) { - char *p; + /* labels are possible */ + if (buffer[strlen(buffer) - 1] == OptionStatementChar) + { + return TRUE; + } + } + return FALSE; - p = s; - while ( *p != 0 ) - { - switch( *p ) - { +} - case '\r': - case '\n': - *p = 0; - return TRUE; - } - ++p; - } - *p = 0; - return TRUE; +/*************************************************************** + + FUNCTION: bwb_stripcr() + + DESCRIPTION: This function strips the carriage return + or line-feed from the end of a string. + +***************************************************************/ + +int +bwb_stripcr(char *s) +{ + bwx_DEBUG(__FUNCTION__); + + while (*s) + { + if (*s < ' ') + *s = ' '; + s++; } + return TRUE; +} /*************************************************************** - + FUNCTION: is_numconst() - + DESCRIPTION: This function reads the string in and returns TRUE if it is a numerical constant and FALSE if it is not. At this point, only decimal (base 10) constants are detected. - + ***************************************************************/ -#if ANSI_C -int -is_numconst( char *buffer ) -#else int -is_numconst( buffer ) - char *buffer; -#endif - { - char *p; +is_numconst(char *buffer) +{ + char *p; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in is_numconst(): received string <%s>.", buffer ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* Return FALSE for empty buffer */ - if ( buffer[ 0 ] == '\0' ) - { + if (buffer[0] == '\0') + { return FALSE; - } - + } /* else check digits */ p = buffer; - while( *p != '\0' ) + while (*p != '\0') + { + switch (*p) { - switch( *p ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - break; - default: - return FALSE; - } - ++p; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + break; + default: + return FALSE; } + ++p; + } /* only numerical characters detected */ return TRUE; - } +} /*************************************************************** - + FUNCTION: bwb_numseq() - - DESCRIPTION: This function reads in a sequence of - numbers (e.g., "10-120"), returning - the first and last numbers in the sequence - in the integers pointed to by 'start' and - 'end'. - + + DESCRIPTION: This function reads in a sequence of + numbers (e.g., "10-120"), returning + the first and last numbers in the sequence + in the integers pointed to by 'start' and + 'end'. + ***************************************************************/ -#if ANSI_C -int -bwb_numseq( char *buffer, int *start, int *end ) -#else int -bwb_numseq( buffer, start, end ) - char *buffer; - int *start; - int *end; -#endif - { - register int b, n; - int numbers; - static char *tbuf; - static int init = FALSE; - +bwb_numseq(char *buffer, BasicLineNumberType * start, BasicLineNumberType * end) +{ +/* This is used by the BASIC commands LIST and DELETE +Result Example +====== =============== +0 LIST +1 LIST 1000 +4 LIST - +5 LIST 1000- +6 LIST -9000 +7 LIST 1000-9000 +*/ + int Result; + + + register int b, n; + int numbers; + static char *tbuf; + static int init = FALSE; + + bwx_DEBUG(__FUNCTION__); + + Result = 0; /* get memory for temporary buffer if necessary */ - if ( init == FALSE ) - { + if (init == FALSE) + { init = TRUE; /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "bwb_numseq")) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_numseq(): failed to find memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - if ( buffer[ 0 ] == 0 ) + if ((tbuf = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_numseq")) == NULL) { - *start = *end = 0; - return FALSE; + bwb_error("in bwb_numseq(): failed to find memory for tbuf"); + return Result; } - + } +/* The CALLING function sets the DEFAULT values + *start = 0; + *end = 0; +*/ + while (*buffer == ' ') + buffer++; + + if (*buffer == '\0') + { + return Result; + } numbers = n = b = 0; - tbuf[ 0 ] = 0; - while( TRUE ) + tbuf[0] = 0; + + while (TRUE) + { + switch (buffer[b]) { - switch( buffer[ b ] ) - { - case 0: /* end of string */ - case '\n': - case '\r': - if ( n > 0 ) - { - if ( numbers == 0 ) - { - *end = 0; - *start = atoi( tbuf ); - ++numbers; - } - else - { - - *end = atoi( tbuf ); - return TRUE; - } - } - else - { - if ( numbers == 0 ) - { - *start = *end = 0; - } - else if ( numbers == 1 ) - { - *end = 0; - } - else if ( ( numbers == 2 ) && ( tbuf[ 0 ] == 0 )) - { - *end = 0; - } - } - return TRUE; + case '\0': /* end of string */ + if (n > 0) + { + if (numbers == 0) + { + *start = atoi(tbuf); + Result |= 1; + } + else + { + *end = atoi(tbuf); + Result |= 2; + } + } + ++numbers; + return Result; -#ifdef ALLOWWHITESPACE - case ' ': /* whitespace */ - case '\t': -#endif + case ' ': /* whitespace */ + ++b; + break; - case '-': /* or skip to next number */ - if ( n > 0 ) - { - if ( numbers == 0 ) - { - *start = atoi( tbuf ); - ++numbers; - } - else - { - *end = atoi( tbuf ); - return TRUE; - } - } - ++b; - n = 0; - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - tbuf[ n ] = buffer[ b ]; - ++n; - tbuf[ n ] = 0; - ++b; - break; - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, - "ERROR: character <%c> unexpected in numerical sequence", - buffer[ b ] ); - ++b; - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - break; + case '-': /* or skip to next number */ + Result |= 4; + if (n > 0) + { + if (numbers == 0) + { + *start = atoi(tbuf); + Result |= 1; + } + else + { + *end = atoi(tbuf); + Result |= 2; + } } + ++numbers; + ++b; + n = 0; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + tbuf[n] = buffer[b]; + ++n; + tbuf[n] = 0; + ++b; + break; + default: + sprintf(bwb_ebuf, + "ERROR: character <%c> unexpected in numerical sequence", + buffer[b]); + ++b; + bwb_error(bwb_ebuf); + return Result; + break; } - } -/*************************************************************** - FUNCTION: bwb_freeline() + return Result; - DESCRIPTION: This function frees memory associated - with a program line in memory. +} +/*************************************************************** + + FUNCTION: bwb_freeline() + + DESCRIPTION: This function frees memory associated + with a program line in memory. + ***************************************************************/ -#if ANSI_C -int -bwb_freeline( struct bwb_line *l ) -#else int -bwb_freeline( l ) - struct bwb_line *l; -#endif - { +bwb_freeline(struct bwb_line * l) +{ + + bwx_DEBUG(__FUNCTION__); /* free arguments if there are any */ /* Revised to FREE pass-thru calls by JBV */ if (l->buffer != NULL) { - FREE( l->buffer, "bwb_freeline" ); - l->buffer = NULL; /* JBV */ + FREE(l->buffer, "bwb_freeline"); + l->buffer = NULL; /* JBV */ } - FREE( l, "bwb_freeline" ); - l = NULL; /* JBV */ + FREE(l, "bwb_freeline"); + /* l = NULL; *//* Assignment of function parameter has no effect + * outside the function. */ return TRUE; - } +} + /*************************************************************** + + FUNCTION: is_eol() + + DESCRIPTION: This function determines whether the buffer + is at the end of a line. + +***************************************************************/ - FUNCTION: int_qmdstr() +int +is_eol(char *buffer, int *position) +{ + char c; - DESCRIPTION: This function returns a string delimited - by quotation marks. + bwx_DEBUG(__FUNCTION__); -***************************************************************/ -#if ANSI_C -int -int_qmdstr( char *buffer_a, char *buffer_b ) -#else -int -int_qmdstr( buffer_a, buffer_b ) - char *buffer_a; - char *buffer_b; -#endif + adv_ws(buffer, position); + c = buffer[*position]; + + + if (c == '\0' || c == OptionCommentChar) + { + return TRUE; + } + return FALSE; +} + +char * +GetRestOfLine(struct bwb_line * l, char *OutputBuffer) +{ + char *S; + char *C; + + bwx_DEBUG(__FUNCTION__); + + + S = l->buffer; + S += l->position; + C = S; + while (*C != '\0' && *C != OptionCommentChar) + { + C++; + } + /* FOUND */ + if (OutputBuffer != NULL) + { + char c; + + c = *C; + *C = '\0'; + l->position += strlen(S); + strcpy(OutputBuffer, S); + *C = c; + } + return C; +} + + +char * +GetKeyword(struct bwb_line * l, char *OutputBuffer, char *Keyword) +{ + /* if OutputBuffer is NULL then we just want to know if a keyword + * exists, and if so where to look after the keyword. this is used by + * line_start() in bwb_int.c to determine various command flavors. + * else we want to extract the expression before the keyword and + * update the position to after the keyword. this is used by various + * bwb_XXX() when executing BASIC commands. end if + * + * if FOUND then if OutputBuffer != NULL then copy line's buffer BEFORE + * keyword into OutputBuffer update line's position to AFTER keyword + * end if return pointer AFTER keyword else return NULL end if */ + char *S; + char *C; + int n; + + bwx_DEBUG(__FUNCTION__); + + S = l->buffer; + S += l->position; + C = S; + n = strlen(Keyword); + + + while (*C != '\0' && *C != OptionCommentChar) { - char *a, *b; + if (strncasecmp(C, Keyword, n) == 0) + { + /* FOUND */ + char c; - a = buffer_a; - ++a; /* advance beyond quotation mark */ - b = buffer_b; + c = *C; + *C = '\0'; + if (OutputBuffer != NULL) + { + l->position += strlen(S); + l->position += n; + strcpy(OutputBuffer, S); + } + *C = c; + C += n; + return C; + } + else + if (*C == '\"') + { + /* skip string constant */ + C++; + while (*C != '\0' && *C != '\"') + { + C++; + } + if (*C == '\"') + { + C++; + } + } + else + { + /* skip normal character */ + C++; + } + } + /* NOT FOUND */ + return NULL; +} - while( *a != '\"' ) +int +IsLastKeyword(struct bwb_line * l, char *Keyword) +{ + + /* find the end of the line ( 0 or ' ) */ + /* backup thru spaces */ + int n; + char *S; + char *C; + + bwx_DEBUG(__FUNCTION__); + + + S = l->buffer; + S += l->position; + C = S; + n = strlen(Keyword); + S += n; + /* IF x THEN0 IF x THEN'0 IF x THEN ' 0 */ + while (*C != '\0' && *C != OptionCommentChar) + C++; + if (C > S) + { + C--; + while (C > S && *C == ' ') + C--; + C++; + if (C > S) { - *b = *a; - ++a; - ++b; - *b = '\0'; + C -= n; + if (strncasecmp(C, Keyword, n) == 0) + { + /* FOUND */ + return TRUE; + } } + } + /* NOT FOUND */ + return FALSE; +} - return TRUE; +int +ToUpper(int c) +{ + /* * I have lost count of the number of C * libraries that implement + * toupper() * as "return (c+'A'-'a');" */ + if (islower(c)) + { + return toupper(c); + } + return c; +} +int +ToLower(int c) +{ + /* * I have lost count of the number of C * libraries that implement + * tolower() * as "return (c+'a'-'A');" */ + if (isupper(c)) + { + return tolower(c); } + return c; +} -/*************************************************************** +#if HAVE_ISNAN - FUNCTION: is_eol() +/* these are intrinsic C functions in my environment using -ansi */ - DESCRIPTION: This function determines whether the buffer - is at the end of a line. +#else /* ! HAVE_ISNAN */ -***************************************************************/ +int +isnan(double X) +{ + return FALSE; +} -#if ANSI_C -extern int -is_eol( char *buffer, int *position ) -#else int -is_eol( buffer, position ) - char *buffer; - int *position; -#endif +isinf(double X) +{ + return FALSE; +} + +double +rint(double x) +{ + return (x >= 0.0) ? floor(x + 0.5) : ceil(x - 0.5); +} + +int +strcasecmp(const char *s1, const char *s2) +{ + const unsigned char *p1; + const unsigned char *p2; + + p1 = (const unsigned char *) s1; + p2 = (const unsigned char *) s2; + while (*p1 != '\0') + { + char c1; + char c2; + c1 = ToUpper(*p1); + c2 = ToUpper(*p2); + if (c1 < c2) + return (-1); + else + if (c1 > c2) + return (1); + p1++; + p2++; + } + if (*p2 == '\0') + return (0); + else + return (-1); +} + +int +strncasecmp(const char *s1, const char *s2, size_t n) +{ + const unsigned char *p1; + const unsigned char *p2; + size_t x = 0; + + p1 = (const unsigned char *) s1; + p2 = (const unsigned char *) s2; + while (x < n) { + char c1; + char c2; + c1 = ToUpper(p1[x]); + c2 = ToUpper(p2[x]); + if (c1 < c2) + return (-1); + else + if (c1 > c2) + return (1); + else + if (c1 == '\0') + return (0); + x++; + } + return (0); +} - adv_ws( buffer, position ); +#endif /* ! HAVE_ISNAN */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in is_eol(): character is <0x%x> = <%c>", - buffer[ *position ], buffer[ *position ] ); - bwb_debug( bwb_ebuf ); -#endif - switch( buffer[ *position ] ) - { - case '\0': - case '\n': - case '\r': -#if MULTISEG_LINES - case ':': -#endif - return TRUE; - default: - return FALSE; - } +#if BROKEN_STRCPY +extern void +broken_strcpy( char * Target, char * Source ) +{ + char C; + + do + { + C = *Source; + *Target = C; + Source++; + Target++; + } + while( C != 0 ); +} +#endif /* BROKEN_STRCPY */ + - } +/* EOF */ diff --git a/bwb_mes.h b/bwb_mes.h deleted file mode 100644 index 0600a0a..0000000 --- a/bwb_mes.h +++ /dev/null @@ -1,486 +0,0 @@ -/*************************************************************** - - bwb_mes.h Header File for Natural-Language-Specific - Text Messages for Bywater BASIC Interpreter - - Copyright (c) 1993, Ted A. Campbell - Bywater Software - - email: tcamp@delphi.com - - Copyright and Permissions Information: - - All U.S. and international rights are claimed by the author, - Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -***************************************************************/ - -/*---------------------------------------------------------------*/ -/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ -/* 11/1995 (eidetics@cerf.net). */ -/*---------------------------------------------------------------*/ - -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - -/**************************************************************** - - The following Latin conventions are used: - - LATIN ENGLISH - - acies datorum array (of data) - crusta shell - litteras (character) string - memoria mutabilis RAM - organum device - ordo line - praeceptum command - praecepta program (commands) - praecepta interna operating system - praeceptellum function - tabula file - -****************************************************************/ - -#if LATIN -#define MES_SIGNON "Interpres ad linguam BASIC, versionis" -#define MES_COPYRIGHT "Iure proprio scriptoris (c) 1993, Eduardi de Campobello" -#define MES_COPYRIGHT_2 "Iure proprio scriptoris (c) 1995-1997, Jon B. Volkoff" -#define MES_LANGUAGE "Cum nuntiis latinis ab ipso E. de C." -#define PROMPT "bwBASIC: " -#define ERROR_HEADER "ERRANT praecepta in ordine" -#define ERRD_HEADER "ERRANT praecepta" -#define MATHERR_HEADER "ERRANT praecepta" -#define MES_BREAK "Intermittuntur praecepta in ordine" -#define ERR_OPENFILE "Non patet tabula quod <%s> vocatur" -#define ERR_GETMEM "Deest memoria mutabilis" -#define ERR_LINENO "Non adicitur novus ordo praeceptorum" -#define ERR_LNNOTFOUND "Non invenitur ordo praeceptorum <%d>" -#define ERR_LOADNOFN "LOAD requirit nomen ad tabulam" -#define ERR_NOLN "Non invenitur ordo praeceptorum" -#define ERR_NOFN "Non invenitur nomen ad tabulam" -#define ERR_RETNOGOSUB "RETURN sine GOSUB" -#define ERR_INCOMPLETE "Praeceptum imcompletum" -#define ERR_ONNOGOTO "ON sine GOTO sive GOSUB" -#define ERR_VALOORANGE "Numerus in praeceptis excedit fines" -#define ERR_SYNTAX "Non sequunter praecepta" -#define ERR_DEVNUM "Numerus ad organum invalidum est" -#define ERR_DEV "Errat organum" -#define ERR_OPSYS "Errant praecepta interna" -#define ERR_ARGSTR "Praeceptum requirit litteras" -#define ERR_DEFCHAR "ad varium definiendum" -#define ERR_MISMATCH "Non congruunt typus" -#define ERR_DIMNOTARRAY "Praeceptum requirit nomen ad aciem datorum" -#define ERR_OD "Desunt data" -#define ERR_OVERFLOW "Data excedunt fines" -#define ERR_NF "NEXT sine FOR" -#define ERR_UF "Non definitur praeceptellum" -#define ERR_DBZ "Non licet divisio ab nihilo" -#define ERR_REDIM "Non licet varium iterum definiendum" -#define ERR_OBDIM "Debet OPTION BASE procedere DIM" -#define ERR_UC "Praeceptum incognitum est" -#define ERR_NOPROGFILE "Tabula praeceptorum non invenitur" -#endif - -#if POL_ENGLISH -#define MES_SIGNON "Bywater BASIC Interpreter/Shell, version" -#define MES_COPYRIGHT "Copyright (c) 1993, Ted A. Campbell" -#define MES_COPYRIGHT_2 "Copyright (c) 1995-1997, Jon B. Volkoff" -#define MES_LANGUAGE "Polite English messages courtesy of t.a.c." -#define PROMPT "How may we help you? " -#define ERROR_HEADER "Very sorry. There is a problem in line" -#define ERRD_HEADER "Very sorry. There is a problem" -#define MATHERR_HEADER "We have a small problem" -#define MES_BREAK "At your request, the program has been interrupted at line" -#define ERR_OPENFILE "I'm afraid we have failed \nto open file %s." -#define ERR_GETMEM "I'm afraid we have failed \nto find sufficient memory." -#define ERR_LINENO "I'm afraid we have failed \nto link line number." -#define ERR_LNNOTFOUND "I'm afraid that we \ncannot find line number %d." -#define ERR_LOADNOFN "Could you perhaps specify \nwhich file you wish to be loaded?" -#define ERR_NOLN "It would help greatly \nif there were a line number here." -#define ERR_NOFN "It would help greatly \nif there were a file name here." -#define ERR_RETNOGOSUB "Is it possible \nthat there is a RETURN without a GOSUB here?" -#define ERR_INCOMPLETE "I'm afraid that the statement\nappears to be incomplete." -#define ERR_ONNOGOTO "It appears that there is an ON \nwithout a corresponding GOTO or GOSUB statement." -#define ERR_VALOORANGE "A value given here \nseems to be out of range." -#define ERR_SYNTAX "Could it be \nthat there is a syntax error at this point?" -#define ERR_DEVNUM "The device or file \nnumber here does not seem to be correct." -#define ERR_DEV "There appears \nto have been an error addressing the file or device \nwhich you requested." -#define ERR_OPSYS "A most unfortunate error \nseems to have been generated by the computer's operating system." -#define ERR_ARGSTR "Could you perhaps \nsupply a string argument at this point?" -#define ERR_DEFCHAR "The variable definition \nat this point appears to have an improper argument." -#define ERR_MISMATCH "It would appear \nthat something in this statement is rather seriously mismatched." -#define ERR_DIMNOTARRAY "Could you perhaps \nsupply an array name for the argument at this point?" -#define ERR_OD "Oh dear, we seem to have no more data to read now." -#define ERR_OVERFLOW "Subhuman devices \ndo have their limits, and we're afraid that at this point \nthe limits of Bywater BASIC have been exceeded." -#define ERR_NF "There seems to be \na NEXT statement without a corresponding FOR statement. Could you check on it?" -#define ERR_UF "It would appear \nthat the function named at this point has not been defined." -#define ERR_DBZ "Unfortunately, \ndivision by zero can cause dreadful problems in a computer." -#define ERR_REDIM "We're very sorry \nto say that a variable such as this cannot be redimensioned." -#define ERR_OBDIM "It would be ever so helpful \nif the OPTION BASE statement were to be called prior to the DIM statement." -#define ERR_UC "I'm afraid that \nwe are unable to recognize the command you have given here." -#define ERR_NOPROGFILE "Very sorry, but \nwe simply must have a program file to interpret." -#endif - -#if IMP_ENGLISH -#define MES_SIGNON "Bywater BASIC Interpreter/Shell, version" -#define MES_COPYRIGHT "Watch it: Copyright (c) 1993, Ted A. Campbell" -#define MES_COPYRIGHT_2 "This means you: Copyright (c) 1995-1997, Jon B. Volkoff" -#define MES_LANGUAGE "Impolite English messages courtesy of Oscar the Grouch" -#define PROMPT "(*sigh) What now? " -#define ERROR_HEADER "YOU SCREWED UP at line" -#define ERRD_HEADER "YOU SCREWED UP" -#define MATHERR_HEADER "ANOTHER SCREWUP!" -#define MES_BREAK "Only a geek like you would interrupt this program at line" -#define ERR_OPENFILE "Ha ha! I can't open file %s. Too bad, sucker." -#define ERR_GETMEM "There isn't near enough memory \nfor this lunacy." -#define ERR_LINENO "You jerk: \nyou entered a non-existent line number." -#define ERR_LNNOTFOUND "You total idiot. \nLine number %d isn't there. HA!" -#define ERR_LOADNOFN "Get out of here. \nNo way to load that file." -#define ERR_NOLN "Dumb bozo: you need to put \na LINE NUMBER here. Hint: Can you count?" -#define ERR_NOFN "Nerd of the year. \nYou forgot to enter a file name. \nWhy don't you learn BASIC and come back in a year?" -#define ERR_RETNOGOSUB "Oh come on, total amateur. \nYou've got a RETURN without a GOSUB" -#define ERR_INCOMPLETE "Dimwit. Why don't you \ncomplete the statement here for a change." -#define ERR_ONNOGOTO "You failed again: \nON without a GOTO or GOSUB." -#define ERR_VALOORANGE "Go home, beginner. \nThe value here is way out of range." -#define ERR_SYNTAX "Sure sign of a fourth-rate programmer: \nThis makes no sense at all." -#define ERR_DEVNUM "Way to go, space cadet. \nThe device (or file) number here is totally in orbit." -#define ERR_DEV "HO! The file or device \n you requested says: DROP DEAD." -#define ERR_OPSYS "You obviously don't know \nwhat this computer can or can't do." -#define ERR_ARGSTR "Do you have big ears? \n(Like Dumbo?) You obviously need a string argument at this point." -#define ERR_DEFCHAR "Amazing. Surely children \nknow how to form a corrent argument here." -#define ERR_MISMATCH "No way, turkey. \nThe statement here is TOTALLY mismatched." -#define ERR_DIMNOTARRAY "Incredible. Why don't you \nsuppy an ARRAY NAME where the prograqm calls for an ARRAY NAME? (Or just go home.)" -#define ERR_OD "Have you ever studied BASIC before? \nYou've run out of data." -#define ERR_OVERFLOW "Congratulations on writing a program \nthat totally exceeds all limits." -#define ERR_NF "Go back to kindergarten: \nYou have a NEXT statement FOR." -#define ERR_UF "Trash. Total trash. \nDefine your stupid functions before calling them." -#define ERR_DBZ "Obviously, you'll never be a programmer. \nYou've tried division by zero here." -#define ERR_REDIM "You just don't understand: \nyou cannot redimension this variable." -#define ERR_OBDIM "Dork. You called OPTION BASE after DIM. \nLeave me alone." -#define ERR_UC "What do you think this is? \nTry entering a BASIC command here." -#define ERR_NOPROGFILE "Idiot. No way this will run without a program file." -#endif - -#if STD_RUSSIAN -#define MES_SIGNON "iNTERPRETATOR Bywater BASIC, WERSIQ" -#define MES_COPYRIGHT "Copyright (c) 1993, Ted A. Campbell" -#define MES_COPYRIGHT_2 "Copyright (c) 1995-1997, Jon B. Volkoff" -#define MES_LANGUAGE "" -#define PROMPT "gOTOWO" -#define ERROR_HEADER "o{ibka W STROKE" -#define MATHERR_HEADER "o{ibka" -#define MES_BREAK "pROGRAMMA PRERWANA W STROKE" -#define ERR_OPENFILE "nE MOGU OTKRYTX FAJL %s" -#define ERR_GETMEM "mALO PAMQTI" -#define ERR_LINENO "nEWERNYJ NOMER STROKI" -#define ERR_LNNOTFOUND "sTROKA %d NE NAJDENA" -#define ERR_LOADNOFN "LOAD: NE ZADANO IMQ FAJLA" -#define ERR_NOLN "oTSUTSTWUET NOMER STROKI" -#define ERR_NOFN "oTSUTSTWUET IMQ FAJLA" -#define ERR_RETNOGOSUB "RETURN BEZ GOSUB" -#define ERR_INCOMPLETE "nEWER[ENNYJ OPERATOR" -#define ERR_ONNOGOTO "ON BEZ GOTO ILI GOSUB" -#define ERR_VALOORANGE "zNA^ENIE WNE DIAPAZONA" -#define ERR_SYNTAX "sINTAKSI^ESKAQ O[IBKA" -#define ERR_DEVNUM "nEWERNYJ NOMER USTROJSTWA" -#define ERR_DEV "o[IBKA USTROJSTWA" -#define ERR_OPSYS "o[IBKA W KOMANDE OPERACIONNOJ SISTEMY" -#define ERR_ARGSTR "aRGUMENT DOLVEN BYTX STROKOJ" -#define ERR_DEFCHAR "nEWERNYJ ARGUMENT W OPREDELENII PEREMENNOJ" -#define ERR_MISMATCH "nESOOTWETSTWIE TIPOW" -#define ERR_DIMNOTARRAY "aRGUMENT NE IMQ MASSIWA" -#define ERR_OD "nET DANNYH" -#define ERR_OVERFLOW "pEREPOLNENIE" -#define ERR_NF "NEXT BEZ FOR" -#define ERR_UF "nEOPREDELENNAQ FUNKCIQ" -#define ERR_DBZ "dELENIE NA NOLX" -#define ERR_REDIM "nELXZQ MENQTX RAZMERNOSTX PEREMENNOJ" -#define ERR_OBDIM "OPTION BASE DOLVNA BYTX WYZWANA DO DIM" -#define ERR_UC "nEWERNAQ KOMANDA" -#define ERR_NOPROGFILE "Program file not specified" -#endif - -/* STD_GERMAN */ - -#if STD_GERMAN -#define MES_SIGNON "Bywater BASIC Interpreter/Shell, version" -#define MES_COPYRIGHT "Copyright (c) 1993, Ted A. Campbell" -#define MES_COPYRIGHT_2 "Copyright (c) 1995-1997, Jon B. Volkoff" -#define MES_LANGUAGE "Ausgegeben auf Deutsch von Joerg Rieger" -#define PROMPT "bwBASIC: " -#define ERROR_HEADER "Irrtum in Zeile" -#define ERRD_HEADER "IRRTUM" -#define MATHERR_HEADER "IRRTUM" -#define MES_BREAK "Programm unterbrochen in Zeile" -#define ERR_OPENFILE "Datei %s kann nict geoeffnet werden" -#define ERR_GETMEM "Speicher kann nicht gefunden werden" -#define ERR_LINENO "Zeilennummer kann nicht verbunden werden" -#define ERR_LNNOTFOUND "Zeilennummer %d nicht gefunden" -#define ERR_LOADNOFN "LOAD: Keine Dateiname angegeben" -#define ERR_NOLN "Keine Zeilennummer" -#define ERR_NOFN "Keine Dateiname" -#define ERR_RETNOGOSUB "RETURN ohne GOSUB" -#define ERR_INCOMPLETE "Angabe nicht vollstaendig" -#define ERR_ONNOGOTO "ON ohne GOTO oder GOSUB" -#define ERR_VALOORANGE "Wert is ausserhalb des Grenzbereits" -#define ERR_SYNTAX "Syntax-fehler" -#define ERR_DEVNUM "Ungueltige Geraetnummer" -#define ERR_DEV "Geraet irrtum" -#define ERR_OPSYS "Irrtum in Anwenden des System-Befehls" -#define ERR_ARGSTR "Das Argument muss geradlinig sein" -#define ERR_DEFCHAR "Falsches Argument fuer eine Variable Definition" -#define ERR_MISMATCH "Type verwechselt" -#define ERR_DIMNOTARRAY "Das Argument ist kein Feldname" -#define ERR_OD "Keine Daten mehr vorhanden" -#define ERR_OVERFLOW "Ueberflutung" -#define ERR_NF "NEXT ohne FOR" -#define ERR_UF "Funktion nicht definiert" -#define ERR_DBZ "Teile durch Null" -#define ERR_REDIM "Die Variable kann nicht neu dimensioniert werdern" -#define ERR_OBDIM "OPTION BASE muss vor DIM aufgerufen werden" -#define ERR_UC "Befehl unbekannt" -#define ERR_NOPROGFILE "Programm Datei nicht angegeben" -#endif - -/* ESPERANTO */ - -#if ESPERANTO -#define MES_SIGNON "Bywater BASIC Tradukilo/SXelo, vario" -#define MES_COPYRIGHT "Kopirajtita (c) 1993, Ted A. Campbell" -#define MES_COPYRIGHT_2 "Kopirajtita (c) 1995-1997, Jon B. Volkoff" -#define MES_LANGUAGE "Esperanta traduko farigxi per Ricxjo Muelisto." -#define PROMPT "bwBASIC: " -#define ERROR_HEADER "ERARO en vico" -#define ERRD_HEADER "ERARO" -#define MATHERR_HEADER "ERARO" -#define MES_BREAK "Programo interrompita cxe vico" -#define ERR_OPENFILE "Malsukcesis malfermi dosieron %s" -#define ERR_GETMEM "Malsukcesis trovi memorajxo" -#define ERR_LINENO "Malsukcesis ligi vicnumero" -#define ERR_LNNOTFOUND "Vicnumero %d ne trovita" -#define ERR_LOADNOFN "LOAD: dosiernomo ne specifita" -#define ERR_NOLN "Ne estas vicnumero" -#define ERR_NOFN "Ne estas dosiernomo" -#define ERR_RETNOGOSUB "RETURN sen GOSUB" -#define ERR_INCOMPLETE "Necompleta deklaro" -#define ERR_ONNOGOTO "ON sen GOTO aux GOSUB" -#define ERR_VALOORANGE "Valorajxo estas eksteretenda" -#define ERR_SYNTAX "Sintakseraro" -#define ERR_DEVNUM "Nevalida aparatnumero" -#define ERR_DEV "Aparateraro" -#define ERR_OPSYS "Eraro en funkcisistema ordono" -#define ERR_ARGSTR "Argumento devas esti serio" -#define ERR_DEFCHAR "Erara argumento por varianto difinajxo" -#define ERR_MISMATCH "Tipa misparo" -#define ERR_DIMNOTARRAY "Argumento ne estas kolektonomo" -#define ERR_OD "Ne havas pli da informoj" -#define ERR_OVERFLOW "Ektroajxo" -#define ERR_NF "NEXT sen FOR" -#define ERR_UF "Nedifininta funkcio" -#define ERR_DBZ "Dividu per nulo" -#define ERR_REDIM "Varianto ne eble esti redimensigxinta" -#define ERR_OBDIM "OPTION BASE devas uzigxi antaux ol DIM" -#define ERR_UC "Nekonata ordono" -#define ERR_NOPROGFILE "Programa dosiero ne specifita" -#endif - -/* Standard English is taken as a default: if MES_SIGNON is not defined by - this time (i.e., by some other language definition), then - the following standard English definitions are utilized. */ - -#ifndef MES_SIGNON -#define MES_SIGNON "Bywater BASIC Interpreter/Shell, version" -#define MES_COPYRIGHT "Copyright (c) 1993, Ted A. Campbell" -#define MES_COPYRIGHT_2 "Copyright (c) 1995-1997, Jon B. Volkoff" -#define MES_LANGUAGE " " -#define PROMPT "bwBASIC: " -#define ERROR_HEADER "ERROR in line" -#define ERRD_HEADER "ERROR" -#define MATHERR_HEADER "ERROR" -#define MES_BREAK "Program interrupted at line" -#define ERR_OPENFILE "Failed to open file %s" -#define ERR_GETMEM "Failed to find memory" -#define ERR_LINENO "Failed to link line number" -#define ERR_LNNOTFOUND "Line number %d not found" -#define ERR_LOADNOFN "LOAD: no filename specified" -#define ERR_NOLN "No line number" -#define ERR_NOFN "No file name" -#define ERR_RETNOGOSUB "RETURN without GOSUB" -#define ERR_INCOMPLETE "Incomplete statement" -#define ERR_ONNOGOTO "ON without GOTO or GOSUB" -#define ERR_VALOORANGE "Value is out of range" -#define ERR_SYNTAX "Syntax error" -#define ERR_DEVNUM "Invalid device number" -#define ERR_DEV "Device error" -#define ERR_OPSYS "Error in operating system command" -#define ERR_ARGSTR "Argument must be a string" -#define ERR_DEFCHAR "Incorrect argument for variable definition" -#define ERR_MISMATCH "Type mismatch" -#define ERR_DIMNOTARRAY "Argument is not an array name" -#define ERR_OD "Out of data" -#define ERR_OVERFLOW "Overflow" -#define ERR_NF "NEXT without FOR" -#define ERR_UF "Undefined function" -#define ERR_DBZ "Divide by zero" -#define ERR_REDIM "Variable cannot be redimensioned" -#define ERR_OBDIM "OPTION BASE must be called prior to DIM" -#define ERR_UC "Unknown command" -#define ERR_NOPROGFILE "Program file not specified" -#endif - -/**************************************************************** - - BASIC Command Name Definitions - - The following definitions of command names are given in - order to allow users to redefine BASIC command names. - No alternatives are supplied. - -****************************************************************/ - -#ifndef CMD_SYSTEM -#define CMD_SYSTEM "SYSTEM" -#define CMD_QUIT "QUIT" -#define CMD_REM "REM" -#define CMD_LET "LET" -#define CMD_PRINT "PRINT" -#define CMD_INPUT "INPUT" -#define CMD_GO "GO" -#define CMD_GOTO "GOTO" -#define CMD_GOSUB "GOSUB" -#define CMD_RETURN "RETURN" -#define CMD_ON "ON" -#define CMD_IF "IF" -#define CMD_WHILE "WHILE" -#define CMD_WEND "WEND" -#define CMD_WRITE "WRITE" -#define CMD_END "END" -#define CMD_FOR "FOR" -#define CMD_NEXT "NEXT" -#define CMD_STOP "STOP" -#define CMD_DATA "DATA" -#define CMD_READ "READ" -#define CMD_RESTORE "RESTORE" -#define CMD_DIM "DIM" -#define CMD_OPTION "OPTION" -#define CMD_OPEN "OPEN" -#define CMD_CLOSE "CLOSE" -#define CMD_GET "GET" -#define CMD_PUT "PUT" -#define CMD_LSET "LSET" -#define CMD_RSET "RSET" -#define CMD_FIELD "FIELD" -#define CMD_LINE "LINE" -#define CMD_DEF "DEF" -#define CMD_VARS "VARS" -#define CMD_CMDS "CMDS" -#define CMD_FNCS "FNCS" -#define CMD_CHDIR "CHDIR" -#define CMD_MKDIR "MKDIR" -#define CMD_RMDIR "RMDIR" -#define CMD_KILL "KILL" -#define CMD_ENVIRON "ENVIRON" -#define CMD_LIST "LIST" -#define CMD_LOAD "LOAD" -#define CMD_RUN "RUN" -#define CMD_SAVE "SAVE" -#define CMD_DELETE "DELETE" -#define CMD_NEW "NEW" -#define CMD_DEFDBL "DEFDBL" -#define CMD_DEFINT "DEFINT" -#define CMD_DEFSNG "DEFSNG" -#define CMD_DEFSTR "DEFSTR" -#define CMD_MID "MID$" -#define CMD_CALL "CALL" -#define CMD_SUB "SUB" -#define CMD_FUNCTION "FUNCTION" -#define CMD_LABEL "lAbEl" /* not really used: set to an unlikely combination */ -#define CMD_ELSE "ELSE" -#define CMD_ELSEIF "ELSEIF" -#define CMD_SELECT "SELECT" -#define CMD_CASE "CASE" -#define CMD_MERGE "MERGE" -#define CMD_CHAIN "CHAIN" -#define CMD_COMMON "COMMON" -#define CMD_ERROR "ERROR" -#define CMD_WIDTH "WIDTH" -#define CMD_TRON "TRON" -#define CMD_TROFF "TROFF" -#define CMD_RANDOMIZE "RANDOMIZE" -#define CMD_FILES "FILES" -#define CMD_EDIT "EDIT" -#define CMD_RENUM "RENUM" -#define CMD_ERASE "ERASE" -#define CMD_SWAP "SWAP" -#define CMD_NAME "NAME" -#define CMD_CLEAR "CLEAR" -#define CMD_THEN "THEN" -#define CMD_TO "TO" -#define CMD_STEP "STEP" -#define CMD_DO "DO" -#define CMD_LOCATE "LOCATE" -#define CMD_CLS "CLS" -#define CMD_COLOR "COLOR" -#define CMD_LOOP "LOOP" -#define CMD_EXIT "EXIT" -#define CMD_XUSING "USING" -#define CMD_XFOR "FOR" -#define CMD_XDO "DO" -#define CMD_XUNTIL "UNTIL" -#define CMD_XNUM "NUM" -#define CMD_XUNNUM "UNNUM" -#define CMD_XSUB "SUB" -#define CMD_XTO "TO" -#define CMD_XERROR "ERROR" -#define CMD_XSUB "SUB" -#define CMD_XFUNCTION "FUNCTION" -#define CMD_XIF "IF" -#define CMD_XSELECT "SELECT" -#endif - -/**************************************************************** - - External Definitions for Error Messages - -****************************************************************/ - -extern char err_openfile[]; -extern char err_getmem[]; -extern char err_noln[]; -extern char err_nofn[]; -extern char err_lnnotfound[]; -extern char err_incomplete[]; -extern char err_valoorange[]; -extern char err_syntax[]; -extern char err_devnum[]; -extern char err_dev[]; -extern char err_opsys[]; -extern char err_argstr[]; -extern char err_defchar[]; -extern char err_mismatch[]; -extern char err_dimnotarray[]; -extern char err_retnogosub[]; -extern char err_od[]; -extern char err_overflow[]; -extern char err_nf[]; -extern char err_uf[]; -extern char err_dbz[]; -extern char err_redim[]; -extern char err_obdim[]; -extern char err_uc[]; -extern char err_noprogfile[]; - - - diff --git a/bwb_mth.c b/bwb_mth.c deleted file mode 100644 index ee97ab9..0000000 --- a/bwb_mth.c +++ /dev/null @@ -1,2761 +0,0 @@ -/**************************************************************** - - bwb_mth.c Mathematical Functions - for Bywater BASIC Interpreter - - Copyright (c) 1993, Ted A. Campbell - Bywater Software - - email: tcamp@delphi.com - - Copyright and Permissions Information: - - All U.S. and international rights are claimed by the author, - Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -****************************************************************/ - -/*---------------------------------------------------------------*/ -/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ -/* 11/1995 (eidetics@cerf.net). */ -/*---------------------------------------------------------------*/ - -#include -#include -#include -#include - -#include "bwbasic.h" -#include "bwb_mes.h" - -#ifndef RAND_MAX /* added in v1.11 */ -#define RAND_MAX 32767 -#endif - -#if ANSI_C -bnumber round_int( bnumber x ); -#else -bnumber round_int(); -#endif - -#if MS_FUNCS -union un_integer - { - int the_integer; - unsigned char the_chars[ sizeof( int ) ]; - } an_integer; - -union un_single - { - float the_float; - unsigned char the_chars[ sizeof( float) ]; - } a_float; - -union un_double - { - double the_double; - unsigned char the_chars[ sizeof( double ) ]; - } a_double; -#endif - -#if COMPRESS_FUNCS - -/*************************************************************** - - FUNCTION: fnc_core() - - DESCRIPTION: This C function implements all core - BASIC functions if COMPRESS_FUNCS is - TRUE. This method saves program space. - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_core( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_core( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - bnumber nval; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_core(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - strncpy( nvar.name, "(core var)", MAXVARNAMESIZE ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_core(): ready to make local variable <%s>", - nvar.name ); - bwb_debug( bwb_ebuf ); -#endif - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_core(): received f_arg <%f> nvar type <%c>", - var_getnval( &( argv[ 0 ] ) ), nvar.type ); - bwb_debug( bwb_ebuf ); -#endif - - /* check for number of arguments as appropriate */ - - switch ( unique_id ) - { - case F_RND: /* no arguments necessary for RND */ - break; - default: -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to core function.", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to core function.", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - } - - /* assign values */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_core(): nvar type <%c>; calling findnval()", - nvar.type ); - bwb_debug( bwb_ebuf ); -#endif - - switch( unique_id ) - { - case F_ABS: - /* Added double recast here (JBV) */ - * var_findnval( &nvar, nvar.array_pos ) = - (bnumber) fabs( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - case F_ATN: - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) atan( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - case F_COS: - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) cos( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - case F_EXP: - /* Added double recast here (JBV) */ - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) exp( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - case F_INT: - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) floor( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - case F_LOG: - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) log( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - case F_RND: - /* Added bnumber recast here (JBV) */ - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) ( (float) rand() / RAND_MAX ); - break; - case F_SGN: - nval = var_getnval( &( argv[ 0 ] )); - if ( nval == (bnumber) 0.0 ) - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) 0; - } - else if ( nval > (bnumber) 0.0 ) - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) 1; - } - else - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) -1; - } - break; - case F_SIN: - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) sin( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - case F_SQR: - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) sqrt( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - case F_TAN: - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) tan( (double) var_getnval( &( argv[ 0 ] ) ) ); - break; - } - - return &nvar; - - } - -#else - -/*************************************************************** - - FUNCTION: fnc_abs() - - DESCRIPTION: This C function implements the BASIC - predefined ABS function, returning the - absolute value of the argument. - - SYNTAX: ABS( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_abs( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_abs( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_abs(): entered function" ); - bwb_debug( bwb_ebuf ); -#endif - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - strncpy( nvar.name, "(abs var)", MAXVARNAMESIZE ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_abs(): ready to make local variable <%s>", - nvar.name ); - bwb_debug( bwb_ebuf ); -#endif - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_abs(): received f_arg <%f> nvar type <%c>", - var_getnval( &( argv[ 0 ] ) ), nvar.type ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function ABS().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function ABS().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_abs(): nvar type <%c>; calling finnval()", - nvar.type ); - bwb_debug( bwb_ebuf ); -#endif - - /* Added double recast here (JBV) */ - * var_findnval( &nvar, nvar.array_pos ) = - (bnumber) fabs( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_rnd() - - DESCRIPTION: This C function implements the BASIC - predefined RND function, returning a - pseudo-random number in the range - 0 to 1. It is affected by the RANDOMIZE - command statement. - - SYNTAX: RND( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_rnd( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_rnd( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - - /* Added bnumber recast here (JBV) */ - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) ( (float) rand() / RAND_MAX ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_atn() - - DESCRIPTION: This C function implements the BASIC - predefined ATN function, returning the - arctangent of the argument. - - SYNTAX: ATN( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_atn( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_atn( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_atn(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function ATN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function ATN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) atan( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_cos() - - DESCRIPTION: This C function implements the BASIC - predefined COS function, returning the - cosine of the argument. - - SYNTAX: COS( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_cos( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_cos( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_cos(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function COS().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function COS().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) cos( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_log() - - DESCRIPTION: This C function implements the BASIC - predefined LOG function, returning the - natural logarithm of the argument. - - SYNTAX: LOG( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_log( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_log( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_log(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function LOG().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function LOG().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) log( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_sin() - - DESCRIPTION: This C function implements the BASIC - predefined SIN function, returning - the sine of the argument. - - SYNTAX: SIN( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_sin( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_sin( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_sin(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function SIN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function SIN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) sin( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - - -/*************************************************************** - - FUNCTION: fnc_sqr() - - DESCRIPTION: This C function implements the BASIC - predefined SQR function, returning - the square root of the argument. - - SYNTAX: SQR( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_sqr( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_sqr( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_sqr(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function SQR().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function SQR().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) sqrt( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_tan() - - DESCRIPTION: This C function implements the BASIC - predefined TAN function, returning the - tangent of the argument. - - SYNTAX: TAN( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_tan( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_tan( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_tan(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function TAN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function TAN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) tan( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - - -/*************************************************************** - - FUNCTION: fnc_sgn() - - DESCRIPTION: This C function implements the BASIC - predefined SGN function, returning 0 - if the argument is 0, -1 if the argument - is less than 0, or 1 if the argument - is more than 0. - - SYNTAX: SGN( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_sgn( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_sgn( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - bnumber nval; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_sgn(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function SGN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function SGN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - nval = var_getnval( &( argv[ 0 ] )); - - if ( nval == (bnumber) 0.0 ) - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) 0; - } - else if ( nval > (bnumber) 0.0 ) - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) 1; - } - else - { - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) -1; - } - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_int() - - DESCRIPTION: This C function implements the BASIC - predefined INT function, returning an - integer value less then or equal to the - argument. - - SYNTAX: INT( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_int( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_int( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_int(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function INT().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function INT().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) floor( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_exp() - - DESCRIPTION: This C function implements the BASIC - EXP() function, returning the exponential - value of the argument. - - SYNTAX: EXP( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_exp( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_exp( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function EXP().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function EXP().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - /* Added double recast here (JBV) */ - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) exp( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - } - -#endif /* COMPRESS_FUNCS */ - -#if COMMON_FUNCS - -/*************************************************************** - - FUNCTION: fnc_val() - - DESCRIPTION: This C function implements the BASIC - VAL() function, returning the numerical - value of its string argument. - - SYNTAX: VAL( string$ ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_val( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_val( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static char *tbuf; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_val" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in fnc_val(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - /* check arguments */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough arguments to function VAL()" ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function VAL().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - if ( argv[ 0 ].type != STRING ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Argument to function VAL() must be a string." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - return NULL; - } - - /* read the value */ - - str_btoc( tbuf, var_getsval( &( argv[ 0 ] ) )); - *var_findnval( &nvar, nvar.array_pos ) = (bnumber) 0; /* JBV 1/97 */ - if ( strlen( tbuf ) != 0 ) /* JBV 1/97 (was == 0 with else) */ -#if NUMBER_DOUBLE - sscanf( tbuf, "%lf", - var_findnval( &nvar, nvar.array_pos ) ); -#else - sscanf( tbuf, "%f", - var_findnval( &nvar, nvar.array_pos ) ); -#endif - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_str() - - DESCRIPTION: This C function implements the BASIC - STR$() function, returning an ASCII string - with the decimal value of the numerical argument. - - SYNTAX: STR$( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_str( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_str( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static char *tbuf; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_str" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in fnc_str(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - /* check parameters */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function STR$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function STR$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* format as decimal number */ - - sprintf( tbuf, " %.*f", prn_precision( &( argv[ 0 ] ) ), - var_getnval( &( argv[ 0 ] ) ) ); - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - - return &nvar; - } - -#endif /* COMMON_FUNCS */ - -#if MS_FUNCS - -/*************************************************************** - - FUNCTION: fnc_hex() - - DESCRIPTION: This C function implements the BASIC - HEX$() function, returning a string - containing the hexadecimal value of - the numerical argument. - - SYNTAX: HEX$( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_hex( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_hex( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static char *tbuf; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_hex" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in fnc_hex(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - /* check parameters */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function HEX$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function HEX$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* format as hex integer */ - - sprintf( tbuf, "%X", (int) trnc_int( (bnumber) var_getnval( &( argv[ 0 ] )) ) ); - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_oct() - - DESCRIPTION: This C function implements the BASIC - OCT$() function, returning a string - with the octal value of the numerical - argument. - - SYNTAX: OCT$( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_oct( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_oct( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static char *tbuf; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "fnc_oct" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in fnc_oct(): failed to get memory for tbuf" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - /* check parameters */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function OCT$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function OCT$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* format as octal integer */ - - /* Revised by JBV */ - /* sprintf( tbuf, "%o", (int) var_getnval( &( argv[ 0 ] ) ) ); */ - sprintf( tbuf, "%o", (int) trnc_int( (bnumber) var_getnval( &( argv[ 0 ] )) ) ); - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_mki() - - DESCRIPTION: This C function implements the BASIC - predefined MKI$() function. - - NOTE: As implemented in bwBASIC, this is a - pseudo-function, since bwBASIC does - not recognize precision levels. - - SYNTAX: MKI$( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_mki( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_mki( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - register int i; - static struct bwb_variable nvar; - bstring *b; - static char tbuf[ sizeof( int ) ]; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - } - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function MKI$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function MKI$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - an_integer.the_integer = (int) var_getnval( &( argv[ 0 ] ) ); - - for ( i = 0; i < sizeof( int ); ++i ) - { - tbuf[ i ] = an_integer.the_chars[ i ]; - tbuf[ i + 1 ] = '\0'; - } - b = var_getsval( &nvar ); - b->length = sizeof( int ); - b->sbuffer = tbuf; - b->rab = FALSE; - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_mkd() - - DESCRIPTION: This C function implements the BASIC - predefined MKD$() function. - - NOTE: As implemented in bwBASIC, this is a - pseudo-function, since bwBASIC does - not recognize precision levels. - - SYNTAX: MKD$( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_mkd( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_mkd( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - register int i; - static struct bwb_variable nvar; - bstring *b; - static char tbuf[ sizeof ( double ) ]; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - } - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function MKD$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function MKD$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - a_double.the_double = var_getnval( &( argv[ 0 ] ) ); - - for ( i = 0; i < sizeof ( double ); ++i ) - { - tbuf[ i ] = a_double.the_chars[ i ]; - tbuf[ i + 1 ] = '\0'; - } - b = var_getsval( &nvar ); - b->length = sizeof( double ); - b->sbuffer = tbuf; - b->rab = FALSE; - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_mks() - - DESCRIPTION: This C function implements the BASIC - predefined MKS$() function. - - NOTE: As implemented in bwBASIC, this is a - pseudo-function, since bwBASIC does - not recognize precision levels. - - SYNTAX: MKS$( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_mks( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_mks( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - register int i; - static struct bwb_variable nvar; - static char tbuf[ 5 ]; - bstring *b; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING ); - } - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function MKS$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function MKS$().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - a_float.the_float = var_getnval( &( argv[ 0 ] ) ); - - for ( i = 0; i < sizeof( float ); ++i ) - { - tbuf[ i ] = a_float.the_chars[ i ]; - tbuf[ i + 1 ] = '\0'; - } - b = var_getsval( &nvar ); - b->length = sizeof( float ); - b->sbuffer = tbuf; - b->rab = FALSE; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_mks(): string <%s> hex vals <%X><%X><%X><%X>", - tbuf, tbuf[ 0 ], tbuf[ 1 ], tbuf[ 2 ], tbuf[ 3 ] ); - bwb_debug( bwb_ebuf ); -#endif - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_cvi() - - DESCRIPTION: This C function implements the BASIC - predefined CVI() function. - - NOTE: As implemented in bwBASIC, this is a - pseudo-function, since bwBASIC does - not recognize precision levels. - - SYNTAX: CVI( string$ ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_cvi( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_cvi( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - register int i; - struct bwb_variable *v; - bstring *b; - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function CVI().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function CVI().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - v = &( argv[ 0 ] ); - b = var_findsval( v, v->array_pos ); - - for ( i = 0; i < sizeof( int ); ++i ) - { - an_integer.the_chars[ i ] = b->sbuffer[ i ]; - } - - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) an_integer.the_integer; - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_cvd() - - DESCRIPTION: This C function implements the BASIC - predefined CVD() function. - - NOTE: As implemented in bwBASIC, this is a - pseudo-function, since bwBASIC does - not recognize precision levels. - - SYNTAX: CVD( string$ ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_cvd( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_cvd( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - register int i; - struct bwb_variable *v; - bstring *b; - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function CVD().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function CVD().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - v = &( argv[ 0 ] ); - b = var_findsval( v, v->array_pos ); - - for ( i = 0; i < sizeof( double ); ++i ) - { - a_double.the_chars[ i ] = b->sbuffer[ i ]; - } - - * var_findnval( &nvar, nvar.array_pos ) = (bnumber) a_double.the_double; - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_cvs() - - DESCRIPTION: This C function implements the BASIC - predefined CVS() function. - - NOTE: As implemented in bwBASIC, this is a - pseudo-function, since bwBASIC does - not recognize precision levels. - - SYNTAX: CVS( string$ ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_cvs( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_cvs( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - register int i; - struct bwb_variable *v; - bstring *b; - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function CVS().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function CVS().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - v = &( argv[ 0 ] ); - b = var_findsval( v, v->array_pos ); - - for ( i = 0; i < sizeof( float ); ++i ) - { - a_float.the_chars[ i ] = b->sbuffer[ i ]; - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_cvs(): string <%s> hex vals <%X><%X><%X><%X>", - a_float.the_chars, a_float.the_chars[ 0 ], a_float.the_chars[ 1 ], - a_float.the_chars[ 2 ], a_float.the_chars[ 3 ] ); - bwb_debug( bwb_ebuf ); -#endif - - * var_findnval( &nvar, nvar.array_pos ) = a_float.the_float; - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_csng() - - DESCRIPTION: This C function implements the BASIC - function CSNG(). As implemented, - this is a pseudo-function, since - all bwBASIC numerical values have the - same precision. - - SYNTAX: CSNG( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_csng( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_csng( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - - /* check parameters */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function CINT().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function CINT().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* get truncated integer value */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) var_getnval( &( argv[ 0 ] ) ); - - return &nvar; - } - -/*************************************************************** - - FUNCTION: fnc_cint() - - DESCRIPTION: This C function returns the truncated - rounded integer value of its numerical - argument. - - SYNTAX: CINT( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_cint( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_cint( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - - /* check parameters */ - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function CINT().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function CINT().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* get rounded integer value */ - - * var_findnval( &nvar, nvar.array_pos ) - = round_int( var_getnval( &( argv[ 0 ] ) )); - - return &nvar; - } - -#endif /* MS_FUNCS */ - -/*************************************************************** - - FUNCTION: trnc_int() - - DESCRIPTION: This function returns the truncated - truncated integer value of its numerical - argument. - -***************************************************************/ - -#if ANSI_C -bnumber -trnc_int( bnumber x ) -#else -bnumber -trnc_int( x ) - bnumber x; -#endif - { - double sign; /* Was bnumber (JBV) */ - - if ( x < (bnumber) 0.0 ) - { - sign = (double) -1.0; /* Was bnumber (JBV) */ - } - else - { - sign = (double) 1.0; /* Was bnumber (JBV) */ - } - - /* Added double recast here (JBV) */ - return (bnumber) ( floor( fabs( (double) x )) * sign ); - } - -/*************************************************************** - - FUNCTION: round_int() - - DESCRIPTION: This function returns the truncated - rounded integer value of its numerical - argument. - -***************************************************************/ - -#if ANSI_C -bnumber -round_int( bnumber x ) -#else -bnumber -round_int( x ) - bnumber x; -#endif - { - - if ( x < (bnumber) 0.00 ) - { - /* Added double recasts here (JBV) */ - if ( (bnumber) fabs( (bnumber) floor( (double) x ) - x ) < (bnumber) 0.500 ) - { - return (bnumber) floor( (double) x ); - } - else - { - return (bnumber) ceil( (double) x ); - } - } - else - { - if ( ( x - (bnumber) floor( (double) x )) < (bnumber) 0.500 ) - { - return (bnumber) floor( (double) x ); - } - else - { - return (bnumber) ceil( (double) x ); - } - } - } - -/*************************************************************** - - FUNCTION: fnc_cosh() - - DESCRIPTION: This C function implements the BASIC - predefined COSH function, returning the - hyperbolic cosine of the argument. - - SYNTAX: COSH( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_cosh( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_cosh( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_cosh(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function COSH().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function COSH().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) cosh( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - - -/*************************************************************** - - FUNCTION: fnc_sinh() - - DESCRIPTION: This C function implements the BASIC - predefined SINH function, returning the - hyperbolic sine of the argument. - - SYNTAX: SINH( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_sinh( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_sinh( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_sinh(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function SINH().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function SINH().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) sinh( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_tanh() - - DESCRIPTION: This C function implements the BASIC - predefined TANH function, returning the - hyperbolic tangent of the argument. - - SYNTAX: TANH( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_tanh( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_tanh( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_tanh(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function TANH().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function TANH().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) tanh( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - - - - -/*************************************************************** - - FUNCTION: fnc_log10() - - DESCRIPTION: This C function implements the BASIC - predefined LOG10 function, returning the - decimal logarithm of the argument. - - SYNTAX: LOG10( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_log10( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_log10( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_log10(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function LOG10().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function LOG10().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) log10( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - - - - -/*************************************************************** - - FUNCTION: fnc_log2() - - DESCRIPTION: This C function implements the BASIC - predefined LOG2 function, returning the - base 2 logarithm of the argument. - - SYNTAX: LOG2( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_log2( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_log2( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_log2(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function LOG2().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function LOG2().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) log( (double) var_getnval( &( argv[ 0 ] ) ) )/log(2.0); - - return &nvar; - - } - - -/*************************************************************** - - FUNCTION: fnc_acos() - - DESCRIPTION: This C function implements the BASIC - predefined ACOS function, returning the - arccosine of the argument. - - SYNTAX: ACOS( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_acos( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_acos( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_acos(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function ACOS().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function ACOS().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) acos( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } -/*************************************************************** - - FUNCTION: fnc_asin() - - DESCRIPTION: This C function implements the BASIC - predefined ASIN function, returning the - arc sine of the argument. - - SYNTAX: ASIN( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_asin( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_asin( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_asin(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function ASIN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function ASIN().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) asin( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_cotan() - - DESCRIPTION: This C function implements the BASIC - predefined COT function, returning the - cotangent of the argument. - - SYNTAX: COT( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_cotan( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_cotan( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_cotan(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function COT().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function COT().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) 1.0/tan( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - -/*************************************************************** - - FUNCTION: fnc_cosecant() - - DESCRIPTION: This C function implements the BASIC - predefined CSC function, returning the - cosecant(=1/sin) of the argument. - - SYNTAX: CSC( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_cosecant( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_cosecant( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_cosecant(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function CSC().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function CSC().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) 1.0/sin( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } - - -/*************************************************************** - - FUNCTION: fnc_secant() - - DESCRIPTION: This C function implements the BASIC - predefined LOG2 function, returning the - secant(=1/cos) of the argument. - - SYNTAX: SEC( number ) - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -fnc_secant( int argc, struct bwb_variable *argv, int unique_id ) -#else -struct bwb_variable * -fnc_secant( argc, argv, unique_id ) - int argc; - struct bwb_variable *argv; - int unique_id; -#endif - { - static struct bwb_variable nvar; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, NUMBER ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fnc_secant(): received f_arg <%f> ", - var_getnval( &( argv[ 0 ] ) ) ); - bwb_debug( bwb_ebuf ); -#endif - -#if PROG_ERRORS - if ( argc < 1 ) - { - sprintf( bwb_ebuf, "Not enough parameters (%d) to function SEC().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } - else if ( argc > 1 ) - { - sprintf( bwb_ebuf, "Too many parameters (%d) to function SEC().", - argc ); - bwb_error( bwb_ebuf ); - return NULL; - } -#else - if ( fnc_checkargs( argc, argv, 1, 1 ) == FALSE ) - { - return NULL; - } -#endif - - /* assign values */ - - * var_findnval( &nvar, nvar.array_pos ) - = (bnumber) 1.0/cos( (double) var_getnval( &( argv[ 0 ] ) ) ); - - return &nvar; - - } diff --git a/bwb_ops.c b/bwb_ops.c index 3cfd103..3698989 100644 --- a/bwb_ops.c +++ b/bwb_ops.c @@ -1,2000 +1,1875 @@ /**************************************************************** - + bwb_ops.c Expression Parsing Operations for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -****************************************************************/ + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + +***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include #include "bwbasic.h" -#include "bwb_mes.h" -/* declarations for functions visible in this file only */ -#if ANSI_C -static int op_oplevel( int level ); -static int op_add( int level, int precision ); -static int op_subtract( int level, int precision ); -static int op_multiply( int level, int precision ); -static int op_divide( int level, int precision ); -static int op_assign( int level, int precision ); -static int op_equals( int level, int precision ); -static int op_lessthan( int level, int precision ); -static int op_greaterthan( int level, int precision ); -static int op_lteq( int level, int precision ); -static int op_gteq( int level, int precision ); -static int op_notequal( int level, int precision ); -static int op_modulus( int level, int precision ); -static int op_exponent( int level, int precision ); -static int op_intdiv( int level, int precision ); -static int op_or( int level, int precision ); -static int op_and( int level, int precision ); -static int op_not( int level, int precision ); -static int op_xor( int level, int precision ); -static int op_negation( int level, int precision ); /* JBV */ -static int op_islevelstr( int level ); -static int op_getprecision( int level ); -static int op_isoperator( int operation ); -static int op_pulldown( int how_far ); -#else -static int op_oplevel(); -static int op_add(); -static int op_subtract(); -static int op_multiply(); -static int op_divide(); -static int op_assign(); -static int op_equals(); -static int op_lessthan(); -static int op_greaterthan(); -static int op_lteq(); -static int op_gteq(); -static int op_notequal(); -static int op_modulus(); -static int op_exponent(); -static int op_intdiv(); -static int op_or(); -static int op_and(); -static int op_not(); -static int op_xor(); -static int op_negation(); /* JBV */ -static int op_islevelstr(); -static int op_getprecision(); -static int op_isoperator(); -static int op_pulldown(); -#endif /* ANSI_C for prototypes */ - -static int op_level; -/*************************************************************** +/* declarations for functions visible in this file only */ - FUNCTION: exp_operation() +static int +op_oplevel(int level); +static int +op_add(int level, int precision); +static int +op_subtract(int level, int precision); +static int +op_multiply(int level, int precision); +static int +op_divide(int level, int precision); +static int +op_assign(int level, int precision); +static int +op_equals(int level, int precision); +static int +op_lessthan(int level, int precision); +static int +op_greaterthan(int level, int precision); +static int +op_lteq(int level, int precision); +static int +op_gteq(int level, int precision); +static int +op_notequal(int level, int precision); +static int +op_modulus(int level, int precision); +static int +op_exponent(int level, int precision); +static int +op_intdiv(int level, int precision); +static int +op_or(int level, int precision); +static int +op_and(int level, int precision); +static int +op_not(int level, int precision); +static int +op_xor(int level, int precision); +static int +op_imp(int level, int precision); +static int +op_eqv(int level, int precision); +static int +op_negation(int level, int precision); /* JBV */ +static int +op_posation(int level, int precision); +static int +op_islevelstr(int level); +static int +op_getprecision(int level); +static int +op_isoperator(int operation); +static int +op_pulldown(int how_far); - DESCRIPTION: This function performs whatever operations - are necessary at the end of function bwb_exp() - (i.e., the end of the parsing of an expression; - see file bwb_exp.c). +static int op_level; +/*************************************************************** + + FUNCTION: exp_operation() + + DESCRIPTION: This function performs whatever operations + are necessary at the end of function bwb_exp() + (i.e., the end of the parsing of an expression; + see file bwb_exp.c). + ***************************************************************/ -#if ANSI_C int -exp_operation( int entry_level ) -#else -int -exp_operation( entry_level ) - int entry_level; -#endif - { - register int precedence; - int operator; +exp_operation(int entry_level) +{ + register int precedence; + int operator; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_operation(): entered function." ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* cycle through all levels of precedence and perform required - operations */ + * operations */ - for ( precedence = 0; precedence <= MAX_PRECEDENCE; ++precedence ) - { + for (precedence = 0; precedence <= MAX_PRECEDENCE; ++precedence) + { - /* Operation loop: cycle through every level above entry level - and perform required operations as needed */ + /* Operation loop: cycle through every level above entry + * level and perform required operations as needed */ op_level = entry_level + 1; - while( ( op_level < CURTASK expsc ) - && ( op_isoperator( CURTASK exps[ op_level ].operation ) == FALSE )) - { + while ((op_level < CURTASK expsc) + && (op_isoperator(CURTASK exps[op_level].operation) == FALSE)) + { ++op_level; - } + } - while ( ( op_level > entry_level ) && ( op_level < CURTASK expsc ) ) - { + while ((op_level > entry_level) && (op_level < CURTASK expsc)) + { - /* see if the operation at this level is an operator with the - appropriate precedence level by running through the table - of operators */ + /* see if the operation at this level is an operator + * with the appropriate precedence level by running + * through the table of operators */ - for ( operator = 0; operator < N_OPERATORS; ++operator ) - { + for (operator = 0; operator < NUM_OPERATORS; ++operator) + { - if ( exp_ops[ operator ].operation == CURTASK exps[ op_level ].operation ) - { + if (exp_ops[operator].operation == CURTASK exps[op_level].operation) + { - /* check for appropriate level of precedence */ + /* check for appropriate level of + * precedence */ - if ( exp_ops[ operator ].precedence == precedence ) - { + if (exp_ops[operator].precedence == precedence) + { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_operation(): level <%d> operation <%d>", - op_level, CURTASK exps[ op_level ].operation ); - bwb_debug( bwb_ebuf ); -#endif - op_oplevel( op_level ); /* perform the operation */ + op_oplevel(op_level); /* perform the operation */ - } } } + } - /* advance level if appropriate; one must check, however, since - the op_oplevel() function may have decremented CURTASK expsc */ + /* advance level if appropriate; one must check, + * however, since the op_oplevel() function may have + * decremented CURTASK expsc */ - if ( op_level < CURTASK expsc ) - { + if (op_level < CURTASK expsc) + { ++op_level; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_operation() first increment op_level to <%d>", - op_level ); - bwb_debug( bwb_ebuf ); -#endif - while ( ( op_isoperator( CURTASK exps [ op_level ].operation ) == FALSE ) - && ( op_level < CURTASK expsc ) ) - { + while ((op_isoperator(CURTASK exps[op_level].operation) == FALSE) + && (op_level < CURTASK expsc)) + { ++op_level; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_operation() further increment op_level to <%d>", - op_level ); - bwb_debug( bwb_ebuf ); -#endif - - } - } /* end of increment of op_level */ - } /* end of for loop for stack levels */ + } + } /* end of increment of op_level */ + } /* end of for loop for stack levels */ - } /* end of for loop for precedence levels */ + } /* end of for loop for precedence levels */ return TRUE; - } /* end of function exp_operation() */ +} /* end of function exp_operation() */ /*************************************************************** - - FUNCTION: op_oplevel() - - DESCRIPTION: This function performs a specific operation - at a specific level as the expression parser - resolves its arguments. - + + FUNCTION: op_oplevel() + + DESCRIPTION: This function performs a specific operation + at a specific level as the expression parser + resolves its arguments. + ***************************************************************/ -#if ANSI_C -static int -op_oplevel( int level ) -#else static int -op_oplevel( level ) - int level; -#endif - { - int precision; +op_oplevel(int level) +{ + int precision; - /* set the precision */ + bwx_DEBUG(__FUNCTION__); - if ( ( precision = op_getprecision( level ) ) == OP_ERROR ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "exp_operation(): failed to set precision." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); /*** ??? ***/ -#endif - op_pulldown( 2 ); - } + /* set the precision */ + if ((precision = op_getprecision(level)) == OP_ERROR) + { + op_pulldown(2); + sprintf(bwb_ebuf, "exp_operation(): failed to set precision."); + bwb_error(bwb_ebuf); + return FALSE; + } /* precision is set correctly */ else + { + + switch (CURTASK exps[level].operation) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_oplevel(): level <%d>, precision <%c>", - level, precision ); - bwb_debug( bwb_ebuf ); -#endif + case OP_ADD: + op_add(level, precision); + break; - switch ( CURTASK exps[ level ].operation ) - { - case OP_ADD: - op_add( level, precision ); - break; - - case OP_SUBTRACT: - op_subtract( level, precision ); - break; - - case OP_MULTIPLY: - op_multiply( level, precision ); - break; - - case OP_DIVIDE: - op_divide( level, precision ); - break; - - case OP_ASSIGN: - op_assign( level, precision ); - break; - - case OP_EQUALS: - op_equals( level, precision ); - break; - - case OP_LESSTHAN: - op_lessthan( level, precision ); - break; - - case OP_GREATERTHAN: - op_greaterthan( level, precision ); - break; - - case OP_LTEQ: - op_lteq( level, precision ); - break; - - case OP_GTEQ: - op_gteq( level, precision ); - break; - - case OP_NOTEQUAL: - op_notequal( level, precision ); - break; - - case OP_MODULUS: - op_modulus( level, precision ); - break; - - case OP_INTDIVISION: - op_intdiv( level, precision ); - break; - - case OP_OR: - op_or( level, precision ); - break; - - case OP_AND: - op_and( level, precision ); - break; - - case OP_NOT: - op_not( level, precision ); - break; - - case OP_XOR: - op_xor( level, precision ); - break; - - case OP_EXPONENT: - op_exponent( level, precision ); - break; - - case OP_NEGATION: /* JBV */ - op_negation( level, precision ); - break; - - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "PROGRAMMING ERROR: operator <%d> not (yet) supported.", CURTASK exps[ level ].operation ); - op_pulldown( 2 ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - break; - } /* end of case statement for operators */ - } /* end of else statement, precision set */ + case OP_SUBTRACT: + op_subtract(level, precision); + break; - return TRUE; + case OP_MULTIPLY: + op_multiply(level, precision); + break; - } /* end of function op_oplevel() */ + case OP_DIVIDE: + op_divide(level, precision); + break; -/*************************************************************** + case OP_ASSIGN: + op_assign(level, precision); + break; + + case OP_EQUALS: + op_equals(level, precision); + break; + + case OP_LESSTHAN: + op_lessthan(level, precision); + break; + + case OP_GREATERTHAN: + op_greaterthan(level, precision); + break; + + case OP_LTEQ: + op_lteq(level, precision); + break; + + case OP_GTEQ: + op_gteq(level, precision); + break; + + case OP_NOTEQUAL: + op_notequal(level, precision); + break; + + case OP_MODULUS: + op_modulus(level, precision); + break; + + case OP_INTDIVISION: + op_intdiv(level, precision); + break; + + case OP_OR: + op_or(level, precision); + break; + + case OP_AND: + op_and(level, precision); + break; + + case OP_NOT: + op_not(level, precision); + break; + + case OP_XOR: + op_xor(level, precision); + break; + + case OP_IMPLIES: + op_imp(level, precision); + break; + + case OP_EQUIV: + op_eqv(level, precision); + break; + + case OP_EXPONENT: + op_exponent(level, precision); + break; + + case OP_NEGATION: /* JBV */ + op_negation(level, precision); + break; + + case OP_POSATION: + op_posation(level, precision); + break; + + default: + sprintf(bwb_ebuf, "PROGRAMMING ERROR: operator <%d> not (yet) supported.", CURTASK exps[level].operation); + op_pulldown(2); + bwb_error(bwb_ebuf); + return FALSE; + break; + } /* end of case statement for operators */ + } /* end of else statement, precision set */ - FUNCTION: op_isoperator() + return TRUE; - DESCRIPTION: This function detects whether its argument - is an operator. +} /* end of function op_oplevel() */ +/*************************************************************** + + FUNCTION: op_isoperator() + + DESCRIPTION: This function detects whether its argument + is an operator. + ***************************************************************/ -#if ANSI_C -static int -op_isoperator( int operation ) -#else static int -op_isoperator( operation ) - int operation; -#endif - { - register int c; - - for( c = 0; c < N_OPERATORS; ++c ) - { - if ( operation == exp_ops[ c ].operation ) - { +op_isoperator(int operation) +{ + register int c; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_isoperator(): found match <%s>", - exp_ops[ c ].symbol ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); + for (c = 0; c < NUM_OPERATORS; ++c) + { + if (operation == exp_ops[c].operation) + { return TRUE; - } } + } /* test failed; return FALSE */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_isoperator(): no match found for operation <%d>", - operation ); - bwb_debug( bwb_ebuf ); -#endif return FALSE; - } +} /*************************************************************** - - FUNCTION: op_add() - - DESCRIPTION: This function adds two numbers or - concatenates two strings. - + + FUNCTION: op_add() + + DESCRIPTION: This function adds two numbers or + concatenates two strings. + ***************************************************************/ -#if ANSI_C -static int -op_add( int level, int precision ) -#else static int -op_add( level, precision ) - int level; - int precision; -#endif +op_add(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { - int error_condition; - static bstring b; /* JBV */ + case STRING: - error_condition = FALSE; - b.rab = FALSE; /* JBV */ + /* both sides of the operation should be strings for string + * addition; if not, report an error */ - switch( precision ) + if ((op_islevelstr(level - 1) != TRUE) + || (op_islevelstr(level + 1) != TRUE)) { - case STRING: - - /* both sides of the operation should be strings for - string addition; if not, report an error */ + sprintf(bwb_ebuf, "in op_add(): Type mismatch in string addition."); + bwb_error(bwb_ebuf); + return FALSE; + } + /* concatenate the two strings */ - if ( ( op_islevelstr( level - 1 ) != TRUE ) - || ( op_islevelstr( level + 1 ) != TRUE ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in op_add(): Type mismatch in string addition." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - error_condition = TRUE; - } + { + static bstring b; /* JBV */ + b.rab = FALSE; /* JBV */ - /* concatenate the two strings */ - if ( error_condition == FALSE ) - { + str_btob(&b, exp_getsval(&(CURTASK exps[level - 1]))); + str_cat(&b, exp_getsval(&(CURTASK exps[level + 1]))); + str_btob(&(CURTASK exps[level - 1].sval), &b); + CURTASK exps[level - 1].operation = CONST_STRING; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_add(): try exp_getsval(), level <%d> op <%d> type <%c>:", - level - 1, CURTASK exps[ level - 1 ].operation, CURTASK exps[ level - 1 ].type ); - bwb_debug( bwb_ebuf ); - exp_getsval( &( CURTASK exps[ level - 1 ] )); - sprintf( bwb_ebuf, "in op_add(): try exp_getsval(), level <%d> op <%d> type <%c>:", - level + 1, CURTASK exps[ level + 1 ].operation, CURTASK exps[ level + 1 ].type ); - bwb_debug( bwb_ebuf ); - exp_getsval( &( CURTASK exps[ level + 1 ] )); - sprintf( bwb_ebuf, "in op_add(): string addition, exp_getsval()s completed" ); - bwb_debug( bwb_ebuf ); -#endif - - /* Removed by JBV (incomplete, modifies wrong string variable!) */ - /* str_cat( exp_getsval( &( CURTASK exps[ level - 1 ] ) ), - exp_getsval( &( CURTASK exps[ level + 1 ] ) ) ); */ - - /* Added by JBV */ - str_btob( &b, exp_getsval( &( CURTASK exps[ level - 1 ] ) ) ); - str_cat( &b, exp_getsval( &( CURTASK exps[ level + 1 ] ) ) ); - str_btob( &( CURTASK exps[ level - 1 ].sval ), &b ); - CURTASK exps[ level - 1 ].operation = CONST_STRING; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_add(): str_cat() returns <%d>-byte string to level <%d>", - exp_getsval( &( CURTASK exps[ level - 1 ] ) )->length, level - 1 ); - bwb_debug( bwb_ebuf ); -#endif - } - - break; + } + break; - case NUMBER: - CURTASK exps[ level - 1 ].nval - = exp_getnval( &( CURTASK exps[ level - 1 ] )) - + exp_getnval( &( CURTASK exps[ level + 1 ] )); - CURTASK exps[ level - 1 ].operation = NUMBER; - break; + case NUMBER: + CURTASK exps[level - 1].nval + = exp_getnval(&(CURTASK exps[level - 1])) + + exp_getnval(&(CURTASK exps[level + 1])); + CURTASK exps[level - 1].operation = NUMBER; + break; - } + } /* set variable to requested precision */ - CURTASK exps[ level - 1 ].type = (char) precision; + CURTASK exps[level - 1].type = (char) precision; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_add() returns with operation <%d> type <%c>", - CURTASK exps[ level - 1 ].operation, CURTASK exps[ level - 1 ].type ); - bwb_debug( bwb_ebuf ); -#endif /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_subtract() - - DESCRIPTION: This function subtracts the number on - the left from the number on the right. - + + FUNCTION: op_subtract() + + DESCRIPTION: This function subtracts the number on + the left from the number on the right. + ***************************************************************/ -#if ANSI_C static int -op_subtract( int level, int precision ) -#else -static int -op_subtract( level, precision ) - int level; - int precision; -#endif +op_subtract(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { + case STRING: - switch( precision ) - { - case STRING: + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ - /* both sides of the operation should be numbers for - string addition; if not, report an error */ + sprintf(bwb_ebuf, "Strings cannot be subtracted."); + bwb_error(bwb_ebuf); + return FALSE; -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be subtracted." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + break; - break; + case NUMBER: + CURTASK exps[level - 1].nval + = exp_getnval(&(CURTASK exps[level - 1])) + - exp_getnval(&(CURTASK exps[level + 1])); + break; - case NUMBER: - CURTASK exps[ level - 1 ].nval - = exp_getnval( &( CURTASK exps[ level - 1 ] )) - - exp_getnval( &( CURTASK exps[ level + 1 ] )); - break; - - } + } /* set variable to requested precision */ - CURTASK exps[ level - 1 ].type = (char) precision; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = (char) precision; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_multiply() - - DESCRIPTION: This function multiplies the number on - the left by the number on the right. - + + FUNCTION: op_multiply() + + DESCRIPTION: This function multiplies the number on + the left by the number on the right. + ***************************************************************/ -#if ANSI_C -static int -op_multiply( int level, int precision ) -#else static int -op_multiply( level, precision ) - int level; - int precision; -#endif - { +op_multiply(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - switch( precision ) - { - case STRING: + switch (precision) + { + case STRING: - /* both sides of the operation should be numbers for - string addition; if not, report an error */ + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be multiplied." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + sprintf(bwb_ebuf, "Strings cannot be multiplied."); + bwb_error(bwb_ebuf); + return FALSE; - break; + break; - case NUMBER: - CURTASK exps[ level - 1 ].nval - = exp_getnval( &( CURTASK exps[ level - 1 ] )) - * exp_getnval( &( CURTASK exps[ level + 1 ] )); - break; + case NUMBER: + CURTASK exps[level - 1].nval + = exp_getnval(&(CURTASK exps[level - 1])) + * exp_getnval(&(CURTASK exps[level + 1])); + break; - } + } /* set variable to requested precision */ - CURTASK exps[ level - 1 ].type = (char) precision; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = (char) precision; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_divide() - - DESCRIPTION: This function divides the number on - the left by the number on the right. - + + FUNCTION: op_divide() + + DESCRIPTION: This function divides the number on + the left by the number on the right. + ***************************************************************/ -#if ANSI_C -static int -op_divide( int level, int precision ) -#else static int -op_divide( level, precision ) - int level; - int precision; -#endif +op_divide(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { + case STRING: - switch( precision ) - { - case STRING: + /* both sides of the operation should be numbers for + * division; if not, report an error */ - /* both sides of the operation should be numbers for - division; if not, report an error */ + sprintf(bwb_ebuf, "Strings cannot be divided."); + bwb_error(bwb_ebuf); + return FALSE; -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be divided." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + break; - break; + case NUMBER: - case NUMBER: - if ( exp_getnval( &( CURTASK exps[ level + 1 ] )) - == (bnumber) 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) -1.0; - op_pulldown( 2 ); -#if PROG_ERRORS - sprintf( bwb_ebuf, "Divide by 0." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_dbz ); -#endif - return FALSE; - } - CURTASK exps[ level - 1 ].nval - = exp_getnval( &( CURTASK exps[ level - 1 ] )) - / exp_getnval( &( CURTASK exps[ level + 1 ] )); - break; + if (exp_getnval(&(CURTASK exps[level + 1])) + == 0) + { + /* - Evaluation of an expression results in division + * by zero (nonfatal, the recommended recovery + * procedure is to supply machine infinity with the + * sign of the numerator and continue) */ + + if (exp_getnval(&(CURTASK exps[level - 1])) < 0) + { + /* NEGATIVE */ + CURTASK exps[level - 1].nval = -(DBL_MAX); /* NEGATIVE INFINITY */ + } + else + { + /* POSITIVE */ + CURTASK exps[level - 1].nval = (DBL_MAX); /* POSITIVE INFINITY */ + } + bwb_Warning_Overflow("*** WARNING: Divide by 0 ***"); + } + else + { + CURTASK exps[level - 1].nval + = exp_getnval(&(CURTASK exps[level - 1])) + / exp_getnval(&(CURTASK exps[level + 1])); } + break; + } + /* set variable to requested precision */ - CURTASK exps[ level - 1 ].type = (char) precision; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = (char) precision; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} -/*************************************************************** - FUNCTION: op_assign() +BasicNumberType +VerifyNumeric(BasicNumberType Value) +{ + bwx_DEBUG(__FUNCTION__); + /* check Value */ + if (isnan(Value)) + { + /*** FATAL - INTERNAL ERROR - SHOULD NEVER HAPPEN ***/ + bwb_error("NOT A NUMBER"); + return 0; + } + else + if (isinf(Value)) + { + /* - Evaluation of an expression results in an overflow + * (nonfatal, the recommended recovery procedure is to supply + * machine in- finity with the algebraically correct sign and + * continue). */ + if (Value < 0) + { + Value = -DBL_MAX; + } + else + { + Value = DBL_MAX; + } + bwb_Warning_Overflow("*** Arithmetic Overflow ***"); + } + return Value; +} - DESCRIPTION: This function assigns the value in the - right hand side to the variable in the - left hand side. +/*************************************************************** + + FUNCTION: op_assign() + + DESCRIPTION: This function assigns the value in the + right hand side to the variable in the + left hand side. + ***************************************************************/ -#if ANSI_C -static int -op_assign( int level, int precision ) -#else static int -op_assign( level, precision ) - int level; - int precision; -#endif - { +op_assign(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); /* Make sure the position one level below is a variable */ - if ( CURTASK exps[ level - 1 ].operation != VARIABLE ) - { - op_pulldown( 2 ); -#if PROG_ERRORS - sprintf( bwb_ebuf, "in op_assign(): Assignment must be to variable: level -1 <%d> op <%d>", - level - 1, CURTASK exps[ level - 1 ].operation ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif + if (CURTASK exps[level - 1].operation != VARIABLE) + { + op_pulldown(2); + sprintf(bwb_ebuf, "in op_assign(): Assignment must be to variable: level -1 <%d> op <%d>", + level - 1, CURTASK exps[level - 1].operation); + bwb_error(bwb_ebuf); return FALSE; - } + } + if (CURTASK exps[level - 1].type != CURTASK exps[level + 1].type) + { + bwb_error("Type Mismatch"); + return FALSE; + } + /* if the assignment is numerical, then the precision should be set + * to that of the variable on the left-hand side of the assignment */ + + if (precision != STRING) + { + precision = (int) CURTASK exps[level - 1].type; + } + switch (precision) + { + case STRING: -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_assign(): entered function level <%d>", - level ); - bwb_debug( bwb_ebuf ); -#endif - /* if the assignment is numerical, then the precision should be set - to that of the variable on the left-hand side of the assignment */ + str_btob(exp_getsval(&(CURTASK exps[level - 1])), + exp_getsval(&(CURTASK exps[level + 1]))); + break; - if ( precision != STRING ) + case NUMBER: + if (TRUE) { - precision = (int) CURTASK exps[ level - 1 ].type; + double Value; + Value = exp_getnval(&(CURTASK exps[level + 1])); + Value = VerifyNumeric(Value); + /* assign Value */ + *var_findnval(CURTASK exps[level - 1].xvar, + CURTASK exps[level - 1].array_pos) = + CURTASK exps[level - 1].nval = + Value; } + break; - switch( precision ) - { - case STRING: - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_assign(): try exp_getsval(), level <%d> op <%d> type <%c>:", - level - 1, CURTASK exps[ level - 1 ].operation, CURTASK exps[ level - 1 ].type ); - bwb_debug( bwb_ebuf ); - exp_getsval( &( CURTASK exps[ level - 1 ] )); - sprintf( bwb_ebuf, "in op_assign(): try exp_getsval(), level <%d> op <%d> type <%c>:", - level + 1, CURTASK exps[ level + 1 ].operation, CURTASK exps[ level + 1 ].type ); - bwb_debug( bwb_ebuf ); - exp_getsval( &( CURTASK exps[ level + 1 ] )); - sprintf( bwb_ebuf, "in op_assign(): string addition, exp_getsval()s completed" ); - bwb_debug( bwb_ebuf ); -#endif - - str_btob( exp_getsval( &( CURTASK exps[ level - 1 ] )), - exp_getsval( &( CURTASK exps[ level + 1 ] )) ); - break; - - case NUMBER: - * var_findnval( CURTASK exps[ level - 1 ].xvar, - CURTASK exps[ level - 1 ].array_pos ) = - CURTASK exps[ level - 1 ].nval = - exp_getnval( &( CURTASK exps[ level + 1 ] ) ); - break; - - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in op_assign(): Variable before assignment operator has unidentified type." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - return FALSE; + default: + sprintf(bwb_ebuf, "in op_assign(): Variable before assignment operator has unidentified type."); + bwb_error(bwb_ebuf); + return FALSE; - } + } /* set variable to requested precision */ - CURTASK exps[ level - 1 ].type = (char) precision; + CURTASK exps[level - 1].type = (char) precision; /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_equals() - - DESCRIPTION: This function compares two values and - returns an integer value: TRUE if they are - the same and FALSE if they are not. - + + FUNCTION: op_equals() + + DESCRIPTION: This function compares two values and + returns an integer value: TRUE if they are + the same and FALSE if they are not. + ***************************************************************/ -#if ANSI_C -static int -op_equals( int level, int precision ) -#else static int -op_equals( level, precision ) - int level; - int precision; -#endif +op_equals(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { - int error_condition; - static bstring b; - bstring *bp; + case STRING: - error_condition = FALSE; - b.rab = FALSE; + /* both sides of the operation should be strings for string + * addition; if not, report an error */ - switch( precision ) + if ((op_islevelstr(level - 1) != TRUE) + || (op_islevelstr(level + 1) != TRUE)) { - case STRING: - - /* both sides of the operation should be strings for - string addition; if not, report an error */ - - if ( ( op_islevelstr( level - 1 ) != TRUE ) - || ( op_islevelstr( level + 1 ) != TRUE ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in op_equals(): Type mismatch in string comparison." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - error_condition = TRUE; - } - - /* compare the two strings */ - - if ( error_condition == FALSE ) - { - bp = exp_getsval( &( CURTASK exps[ level - 1 ] )); -#if OLDWAY - b.length = bp->length; - b.sbuffer = bp->sbuffer; -#endif - str_btob( &b, bp ); - - if ( str_cmp( &b, - exp_getsval( &( CURTASK exps[ level + 1 ] )) ) == 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - } - break; + sprintf(bwb_ebuf, "in op_equals(): Type mismatch in string comparison."); + bwb_error(bwb_ebuf); + return FALSE; + } + /* compare the two strings */ - case NUMBER: - if ( exp_getnval( &( CURTASK exps[ level - 1 ] )) - == exp_getnval( &( CURTASK exps[ level + 1 ] )) ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - break; + if (str_cmp(exp_getsval(&(CURTASK exps[level - 1])), + exp_getsval(&(CURTASK exps[level + 1]))) == 0) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; + case NUMBER: + if (exp_getnval(&(CURTASK exps[level - 1])) + == exp_getnval(&(CURTASK exps[level + 1]))) + { + CURTASK exps[level - 1].nval = TRUE; } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; - /* set variable to integer and operation to NUMBER: - this must be done at the end, since at the beginning it - might cause op_islevelstr() to return a false error */ + } - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + /* set variable to integer and operation to NUMBER: this must be done + * at the end, since at the beginning it might cause op_islevelstr() + * to return a false error */ + + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_lessthan() - - DESCRIPTION: This function compares two values and - returns an integer value: TRUE if the - left hand value is less than the right, - and FALSE if it is not. - + + FUNCTION: op_lessthan() + + DESCRIPTION: This function compares two values and + returns an integer value: TRUE if the + left hand value is less than the right, + and FALSE if it is not. + ***************************************************************/ -#if ANSI_C static int -op_lessthan( int level, int precision ) -#else -static int -op_lessthan( level, precision ) - int level; - int precision; -#endif +op_lessthan(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { - int error_condition; + case STRING: - error_condition = FALSE; + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ - switch( precision ) + if ((op_islevelstr(level - 1) != TRUE) + || (op_islevelstr(level + 1) != TRUE)) { - case STRING: - - /* both sides of the operation should be numbers for - string addition; if not, report an error */ - - if ( ( op_islevelstr( level - 1 ) != TRUE ) - || ( op_islevelstr( level + 1 ) != TRUE ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Type mismatch in string comparison." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - error_condition = TRUE; - } - - /* compare the two strings */ - - if ( error_condition == FALSE ) - { - if ( str_cmp( exp_getsval( &( CURTASK exps[ level - 1 ] )), - exp_getsval( &( CURTASK exps[ level + 1 ] )) ) < 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - } - break; + sprintf(bwb_ebuf, "Type mismatch in string comparison."); + bwb_error(bwb_ebuf); + return FALSE; + } + /* compare the two strings */ - case NUMBER: - if ( exp_getnval( &( CURTASK exps[ level - 1 ] )) - < exp_getnval( &( CURTASK exps[ level + 1 ] )) ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - break; + if (str_cmp(exp_getsval(&(CURTASK exps[level - 1])), + exp_getsval(&(CURTASK exps[level + 1]))) < 0) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; + case NUMBER: + if (exp_getnval(&(CURTASK exps[level - 1])) + < exp_getnval(&(CURTASK exps[level + 1]))) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; } + break; + + } - /* set variable to integer and operation to NUMBER: - this must be done at the end, since at the beginning it - might cause op_islevelstr() to return a false error */ + /* set variable to integer and operation to NUMBER: this must be done + * at the end, since at the beginning it might cause op_islevelstr() + * to return a false error */ - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_greaterthan() - - DESCRIPTION: This function compares two values and - returns an integer value: TRUE if the - left hand value is greater than the right, - and FALSE if it is not. - + + FUNCTION: op_greaterthan() + + DESCRIPTION: This function compares two values and + returns an integer value: TRUE if the + left hand value is greater than the right, + and FALSE if it is not. + ***************************************************************/ -#if ANSI_C -static int -op_greaterthan( int level, int precision ) -#else static int -op_greaterthan( level, precision ) - int level; - int precision; -#endif +op_greaterthan(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { - int error_condition; + case STRING: - error_condition = FALSE; + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ - switch( precision ) + if ((op_islevelstr(level - 1) != TRUE) + || (op_islevelstr(level + 1) != TRUE)) { - case STRING: - - /* both sides of the operation should be numbers for - string addition; if not, report an error */ - - if ( ( op_islevelstr( level - 1 ) != TRUE ) - || ( op_islevelstr( level + 1 ) != TRUE ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Type mismatch in string comparison." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - error_condition = TRUE; - } - - /* compare the two strings */ - - if ( error_condition == FALSE ) - { - if ( str_cmp( exp_getsval( &( CURTASK exps[ level - 1 ] )), - exp_getsval( &( CURTASK exps[ level + 1 ] )) ) > 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - } - break; + sprintf(bwb_ebuf, "Type mismatch in string comparison."); + bwb_error(bwb_ebuf); + return FALSE; + } + /* compare the two strings */ - case NUMBER: - if ( exp_getnval( &( CURTASK exps[ level - 1 ] )) - > exp_getnval( &( CURTASK exps[ level + 1 ] )) ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - break; + if (str_cmp(exp_getsval(&(CURTASK exps[level - 1])), + exp_getsval(&(CURTASK exps[level + 1]))) > 0) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; + case NUMBER: + if (exp_getnval(&(CURTASK exps[level - 1])) + > exp_getnval(&(CURTASK exps[level + 1]))) + { + CURTASK exps[level - 1].nval = TRUE; } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; + + } - /* set variable to integer and operation to NUMBER: - this must be done at the end, since at the beginning it - might cause op_islevelstr() to return a false error */ + /* set variable to integer and operation to NUMBER: this must be done + * at the end, since at the beginning it might cause op_islevelstr() + * to return a false error */ - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_lteq() - - DESCRIPTION: This function compares two values and - returns an integer value: TRUE if the - left hand value is less than or equal - to the right, and FALSE if it is not. - + + FUNCTION: op_lteq() + + DESCRIPTION: This function compares two values and + returns an integer value: TRUE if the + left hand value is less than or equal + to the right, and FALSE if it is not. + ***************************************************************/ -#if ANSI_C -static int -op_lteq( int level, int precision ) -#else static int -op_lteq( level, precision ) - int level; - int precision; -#endif +op_lteq(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { - int error_condition; + case STRING: - error_condition = FALSE; + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ - switch( precision ) + if ((op_islevelstr(level - 1) != TRUE) + || (op_islevelstr(level + 1) != TRUE)) { - case STRING: + sprintf(bwb_ebuf, "Type mismatch in string comparison."); + bwb_error(bwb_ebuf); + return FALSE; + } + /* compare the two strings */ - /* both sides of the operation should be numbers for - string addition; if not, report an error */ + if (str_cmp(exp_getsval(&(CURTASK exps[level - 1])), + exp_getsval(&(CURTASK exps[level + 1]))) <= 0) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; - if ( ( op_islevelstr( level - 1 ) != TRUE ) - || ( op_islevelstr( level + 1 ) != TRUE ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Type mismatch in string comparison." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - error_condition = TRUE; - } + case NUMBER: + if (exp_getnval(&(CURTASK exps[level - 1])) + <= exp_getnval(&(CURTASK exps[level + 1]))) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; - /* compare the two strings */ + } - if ( error_condition == FALSE ) - { - if ( str_cmp( exp_getsval( &( CURTASK exps[ level - 1 ] )), - exp_getsval( &( CURTASK exps[ level + 1 ] )) ) <= 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - } - break; + /* set variable to integer and operation to NUMBER: this must be done + * at the end, since at the beginning it might cause op_islevelstr() + * to return a false error */ - case NUMBER: - if ( exp_getnval( &( CURTASK exps[ level - 1 ] )) - <= exp_getnval( &( CURTASK exps[ level + 1 ] )) ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - break; + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; - } + /* decrement the stack */ - /* set variable to integer and operation to NUMBER: - this must be done at the end, since at the beginning it - might cause op_islevelstr() to return a false error */ + op_pulldown(2); - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + return TRUE; - /* decrement the stack */ +} - op_pulldown( 2 ); +/*************************************************************** + + FUNCTION: op_gteq() + + DESCRIPTION: This function compares two values and + returns an integer value: TRUE if the + left hand value is greater than or equal + to the right, and FALSE if it is not. + +***************************************************************/ - return TRUE; +static int +op_gteq(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) + { + case STRING: + + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ + + if ((op_islevelstr(level - 1) != TRUE) + || (op_islevelstr(level + 1) != TRUE)) + { + sprintf(bwb_ebuf, "Type mismatch in string comparison."); + bwb_error(bwb_ebuf); + return FALSE; + } + /* compare the two strings */ + + if (str_cmp(exp_getsval(&(CURTASK exps[level - 1])), + exp_getsval(&(CURTASK exps[level + 1]))) >= 0) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; + + case NUMBER: + if (exp_getnval(&(CURTASK exps[level - 1])) + >= exp_getnval(&(CURTASK exps[level + 1]))) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; } -/*************************************************************** + /* set variable to integer and operation to NUMBER: this must be done + * at the end, since at the beginning it might cause op_islevelstr() + * to return a false error */ - FUNCTION: op_gteq() + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; - DESCRIPTION: This function compares two values and - returns an integer value: TRUE if the - left hand value is greater than or equal - to the right, and FALSE if it is not. + /* decrement the stack */ + + op_pulldown(2); + + return TRUE; +} + +/*************************************************************** + + FUNCTION: op_notequal() + + DESCRIPTION: This function compares two values and + returns an integer value: TRUE if they + are not the same and FALSE if they are. + ***************************************************************/ -#if ANSI_C static int -op_gteq( int level, int precision ) -#else -static int -op_gteq( level, precision ) - int level; - int precision; -#endif +op_notequal(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { - int error_condition; + case STRING: - error_condition = FALSE; + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ - switch( precision ) + if ((op_islevelstr(level - 1) != TRUE) + || (op_islevelstr(level + 1) != TRUE)) { - case STRING: + sprintf(bwb_ebuf, "Type mismatch in string comparison."); + bwb_error(bwb_ebuf); + return FALSE; + } + /* compare the two strings */ - /* both sides of the operation should be numbers for - string addition; if not, report an error */ + if (str_cmp(exp_getsval(&(CURTASK exps[level - 1])), + exp_getsval(&(CURTASK exps[level + 1]))) != 0) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; - if ( ( op_islevelstr( level - 1 ) != TRUE ) - || ( op_islevelstr( level + 1 ) != TRUE ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Type mismatch in string comparison." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - error_condition = TRUE; - } + case NUMBER: + if (exp_getnval(&(CURTASK exps[level - 1])) + != exp_getnval(&(CURTASK exps[level + 1]))) + { + CURTASK exps[level - 1].nval = TRUE; + } + else + { + CURTASK exps[level - 1].nval = FALSE; + } + break; - /* compare the two strings */ + } - if ( error_condition == FALSE ) - { - if ( str_cmp( exp_getsval( &( CURTASK exps[ level - 1 ] )), - exp_getsval( &( CURTASK exps[ level + 1 ] )) ) >= 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - } - break; + /* set variable to integer and operation to NUMBER: this must be done + * at the end, since at the beginning it might cause op_islevelstr() + * to return a false error */ - case NUMBER: - if ( exp_getnval( &( CURTASK exps[ level - 1 ] )) - >= exp_getnval( &( CURTASK exps[ level + 1 ] )) ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - break; + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; + + /* decrement the stack */ + + op_pulldown(2); + + return TRUE; +} + +/*************************************************************** + + FUNCTION: op_modulus() + + DESCRIPTION: This function divides the number on + the left by the number on the right + and returns the remainder. + +***************************************************************/ + +static int +op_modulus(int level, int precision) +{ + static double iportion; + + bwx_DEBUG(__FUNCTION__); + + switch (precision) + { + case STRING: + + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ + + sprintf(bwb_ebuf, "Strings cannot be divided."); + bwb_error(bwb_ebuf); + return FALSE; + + break; + + case NUMBER: + { + /* N = X MOD Y */ + if (exp_getnval(&(CURTASK exps[level + 1])) + == 0) + { + CURTASK exps[level - 1].nval = -1; + op_pulldown(2); + sprintf(bwb_ebuf, "Modulus by 0."); + bwb_error(bwb_ebuf); + return FALSE; + } + CURTASK exps[level].nval + = exp_getnval(&(CURTASK exps[level - 1])) + / exp_getnval(&(CURTASK exps[level + 1])); + modf((double) CURTASK exps[level].nval, &iportion); + CURTASK exps[level - 1].nval + = exp_getnval(&(CURTASK exps[level - 1])) + - (exp_getnval(&(CURTASK exps[level + 1])) + * iportion); } + break; + + } - /* set variable to integer and operation to NUMBER: - this must be done at the end, since at the beginning it - might cause op_islevelstr() to return a false error */ + /* set variable to requested precision */ - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = (char) precision; + CURTASK exps[level - 1].operation = NUMBER; - /* decrement the stack */ + /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_notequal() - - DESCRIPTION: This function compares two values and - returns an integer value: TRUE if they - are not the same and FALSE if they are. - + + FUNCTION: op_exponent() + + DESCRIPTION: This function finds the exponential value + of a number (on the left) to the power + indicated on the right-hand side. + ***************************************************************/ -#if ANSI_C static int -op_notequal( int level, int precision ) -#else -static int -op_notequal( level, precision ) - int level; - int precision; -#endif - { - int error_condition; +op_exponent(int level, int precision) +{ - error_condition = FALSE; + bwx_DEBUG(__FUNCTION__); - switch( precision ) - { - case STRING: - /* both sides of the operation should be numbers for - string addition; if not, report an error */ + switch (precision) + { + case STRING: - if ( ( op_islevelstr( level - 1 ) != TRUE ) - || ( op_islevelstr( level + 1 ) != TRUE ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "Type mismatch in string comparison." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - error_condition = TRUE; - } + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ - /* compare the two strings */ + sprintf(bwb_ebuf, "Strings cannot be taken as exponents."); + bwb_error(bwb_ebuf); + return FALSE; - if ( error_condition == FALSE ) + break; - { - if ( str_cmp( exp_getsval( &( CURTASK exps[ level - 1 ] )), - exp_getsval( &( CURTASK exps[ level + 1 ] )) ) != 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - } - break; + case NUMBER: + if (TRUE) + { + /* N = X ^ Y */ + BasicNumberType X; + BasicNumberType Y; + BasicNumberType N; - case NUMBER: - if ( exp_getnval( &( CURTASK exps[ level - 1 ] )) - != exp_getnval( &( CURTASK exps[ level + 1 ] )) ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) TRUE; - } - else - { - CURTASK exps[ level - 1 ].nval = (bnumber) FALSE; - } - break; + X = exp_getnval(&(CURTASK exps[level - 1])); + Y = exp_getnval(&(CURTASK exps[level + 1])); + if (X < 0 && Y != (int) Y) + { + /*** FATAL ***/ + /* - Evaluation of the operation of + * involution results in a nega- tive number + * being raised to a non-integral power + * (fatal). */ + N = 0; + bwb_error("NEGATIVE QUANTITY RAISED TO A NON-INTEGRAL POWER"); + return FALSE; + } + else + if (X == 0 && Y < 0) + { + /* - Evaluation of the operation of + * involution results in a zero be- ing + * raised to a negative value (nonfatal, the + * recommended re- covery procedure is to + * supply positive machine infinity and + * continue). */ + + N = (DBL_MAX); + bwb_Warning_Overflow("*** Arithmetic Overflow ***"); + } + else + { + N = pow(X, Y); + } + CURTASK exps[level - 1].nval = N; } + break; + + } - /* set variable to integer and operation to NUMBER: - this must be done at the end, since at the beginning it - might cause op_islevelstr() to return a false error */ + /* set variable to requested precision */ - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = (char) precision; + CURTASK exps[level - 1].operation = NUMBER; - /* decrement the stack */ + /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_modulus() - - DESCRIPTION: This function divides the number on - the left by the number on the right - and returns the remainder. - + + FUNCTION: op_intdiv() + + DESCRIPTION: This function divides the number on + the left by the number on the right, + returning the result as an integer. + ***************************************************************/ -#if ANSI_C -static int -op_modulus( int level, int precision ) -#else static int -op_modulus( level, precision ) - int level; - int precision; -#endif - { - static double iportion; +op_intdiv(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - switch( precision ) - { - case STRING: + switch (precision) + { + case STRING: - /* both sides of the operation should be numbers for - string addition; if not, report an error */ + /* both sides of the operation should be numbers for string + * addition; if not, report an error */ -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be divided." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif + sprintf(bwb_ebuf, "Strings cannot be divided."); + bwb_error(bwb_ebuf); + return FALSE; - break; + break; - case NUMBER: - if ( exp_getnval( &( CURTASK exps[ level + 1 ] )) - == (bnumber) 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) -1; - op_pulldown( 2 ); -#if PROG_ERRORS - sprintf( bwb_ebuf, "Divide by 0." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_dbz ); -#endif + default: + { + /* N = X \ Y */ + long X; + long Y; + long N; + X = exp_getival(&(CURTASK exps[level - 1])); + Y = exp_getival(&(CURTASK exps[level + 1])); + if (Y == 0) + { + sprintf(bwb_ebuf, "Integer Divide by 0."); + bwb_error(bwb_ebuf); return FALSE; - } - CURTASK exps[ level ].nval - = exp_getnval( &( CURTASK exps[ level - 1 ] )) - / exp_getnval( &( CURTASK exps[ level + 1 ] )); - modf( (double) CURTASK exps[ level ].nval, &iportion ); - CURTASK exps[ level - 1 ].nval - = exp_getnval( &( CURTASK exps[ level - 1 ] )) - - ( exp_getnval( &( CURTASK exps[ level + 1 ] )) - * iportion ); - break; - + } + N = X / Y; + CURTASK exps[level - 1].nval = N; } + break; + } /* set variable to requested precision */ - CURTASK exps[ level - 1 ].type = (char) precision; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_exponent() - - DESCRIPTION: This function finds the exponential value - of a number (on the left) to the power - indicated on the right-hand side. - + + FUNCTION: op_or() + + DESCRIPTION: This function compares two integers and + performs a logical OR on them. + ***************************************************************/ -#if ANSI_C -static int -op_exponent( int level, int precision ) -#else static int -op_exponent( level, precision ) - int level; - int precision; -#endif - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_exponent(): entered function level <%d>.", - level ); - bwb_debug ( bwb_ebuf ); -#endif +op_or(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - switch( precision ) - { - case STRING: - - /* both sides of the operation should be numbers for - string addition; if not, report an error */ + switch (precision) + { + case STRING: -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be taken as exponents." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + /* both sides of the operation should be numbers for logical + * comparison; if not, report an error */ - break; + sprintf(bwb_ebuf, "Strings cannot be compared logically."); + bwb_error(bwb_ebuf); + return FALSE; - case NUMBER: - CURTASK exps[ level - 1 ].nval - = (bnumber) pow( (double) exp_getnval( &( CURTASK exps[ level - 1 ] )), - (double) exp_getnval( &( CURTASK exps[ level + 1 ] )) ); - break; + break; + case NUMBER: + { + /* N = X OR Y */ + long X; + long Y; + long N; + X = exp_getival(&(CURTASK exps[level - 1])); + Y = exp_getival(&(CURTASK exps[level + 1])); + N = X | Y; + CURTASK exps[level - 1].nval = N; } + break; - /* set variable to requested precision */ + } + + /* set variable type to integer */ - CURTASK exps[ level - 1 ].type = (char) precision; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_intdiv() - - DESCRIPTION: This function divides the number on - the left by the number on the right, - returning the result as an integer. - + + FUNCTION: op_and() + + DESCRIPTION: This function compares two integers and + performs a logical AND on them. + ***************************************************************/ -#if ANSI_C -static int -op_intdiv( int level, int precision ) -#else static int -op_intdiv( level, precision ) - int level; - int precision; -#endif - { +op_and(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - switch( precision ) - { - case STRING: + switch (precision) + { + case STRING: - /* both sides of the operation should be numbers for - string addition; if not, report an error */ -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be divided." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + /* both sides of the operation should be numbers for logical + * comparison; if not, report an error */ - break; + sprintf(bwb_ebuf, "Strings cannot be compared logically."); + bwb_error(bwb_ebuf); + return FALSE; - default: - if ( exp_getnval( &( CURTASK exps[ level + 1 ] )) - == (bnumber) 0 ) - { - CURTASK exps[ level - 1 ].nval = (bnumber) -1; - op_pulldown( 2 ); -#if PROG_ERRORS - sprintf( bwb_ebuf, "Divide by 0." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_dbz ); -#endif - return FALSE; - } + break; - CURTASK exps[ level - 1 ].nval - = exp_getnval( &( CURTASK exps[ level - 1 ] )) - / exp_getnval( &( CURTASK exps[ level + 1 ] )); - break; + case NUMBER: + { + /* N = X AND Y */ + long X; + long Y; + long N; + X = exp_getival(&(CURTASK exps[level - 1])); + Y = exp_getival(&(CURTASK exps[level + 1])); + N = X & Y; + CURTASK exps[level - 1].nval = N; } + break; - /* set variable to requested precision */ + } + + /* set variable type to integer */ - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_or() - - DESCRIPTION: This function compares two integers and - performs a logical OR on them. - + + FUNCTION: op_not() + + DESCRIPTION: This function performs a logical NOT on + the integer to the right. + ***************************************************************/ -#if ANSI_C -static int -op_or( int level, int precision ) -#else static int -op_or( level, precision ) - int level; - int precision; -#endif - { +op_not(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - switch( precision ) - { - case STRING: + switch (precision) + { + case STRING: - /* both sides of the operation should be numbers for - logical comparison; if not, report an error */ -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be compared logically." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + /* both sides of the operation should be numbers for logical + * comparison; if not, report an error */ - break; + sprintf(bwb_ebuf, "Strings cannot be compared logically."); + bwb_error(bwb_ebuf); + return FALSE; - case NUMBER: - CURTASK exps[ level - 1 ].nval - = (bnumber) ((int) exp_getnval( &( CURTASK exps[ level - 1 ] )) - | (int) exp_getnval( &( CURTASK exps[ level + 1 ] ))); - break; + break; + default: + { + /* N = NOT X */ + long X; + long N; + X = exp_getival(&(CURTASK exps[level + 1])); + N = ~X; + CURTASK exps[level /*- 1*/ ].nval = N; } + break; + } /* set variable type to integer */ - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level].type = NUMBER; + CURTASK exps[level].operation = NUMBER; - /* decrement the stack twice */ + /* decrement the stack once */ + + op_pulldown(1); - op_pulldown( 2 ); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_and() - - DESCRIPTION: This function compares two integers and - performs a logical AND on them. - + + FUNCTION: op_xor() + + DESCRIPTION: This function compares two integers and + performs a logical XOR on them. + ***************************************************************/ -#if ANSI_C -static int -op_and( int level, int precision ) -#else static int -op_and( level, precision ) - int level; - int precision; -#endif - { - - switch( precision ) - { - case STRING: - +op_xor(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - /* both sides of the operation should be numbers for - logical comparison; if not, report an error */ + switch (precision) + { + case STRING: -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be compared logically." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + /* both sides of the operation should be numbers for logical + * comparison; if not, report an error */ - break; + sprintf(bwb_ebuf, "Strings cannot be compared logically."); + bwb_error(bwb_ebuf); + return FALSE; - case NUMBER: - CURTASK exps[ level - 1 ].nval - = (bnumber) ((int) exp_getnval( &( CURTASK exps[ level - 1 ] )) - & (int) exp_getnval( &( CURTASK exps[ level + 1 ] ))); - break; + break; + case NUMBER: + { + /* N = X XOR Y */ + long X; + long Y; + long N; + X = exp_getival(&(CURTASK exps[level - 1])); + Y = exp_getival(&(CURTASK exps[level + 1])); + N = X ^ Y; + CURTASK exps[level - 1].nval = N; } + break; + + } /* set variable type to integer */ - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; /* decrement the stack twice */ - op_pulldown( 2 ); + op_pulldown(2); return TRUE; - } +} /*************************************************************** - - FUNCTION: op_not() - - DESCRIPTION: This function performs a logical NOT on - the integer to the right. - + + FUNCTION: op_eqv() + + DESCRIPTION: This function compares two integers and + performs a logical EQV on them. + ***************************************************************/ -#if ANSI_C -static int -op_not( int level, int precision ) -#else static int -op_not( level, precision ) - int level; - int precision; -#endif +op_eqv(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); + + switch (precision) { + case STRING: - switch( precision ) - { - case STRING: + /* both sides of the operation should be numbers for logical + * comparison; if not, report an error */ + sprintf(bwb_ebuf, "Strings cannot be compared logically."); + bwb_error(bwb_ebuf); + return FALSE; - /* both sides of the operation should be numbers for - logical comparison; if not, report an error */ + break; -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be compared logically." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + case NUMBER: + { + /* N = X EQV Y = NOT ( X XOR Y ) */ + long X; + long Y; + long N; + X = exp_getival(&(CURTASK exps[level - 1])); + Y = exp_getival(&(CURTASK exps[level + 1])); + N = ~(X ^ Y); + CURTASK exps[level - 1].nval = N; + } + break; - break; + } - default: + /* set variable type to integer */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_not(): argument is <%d>, precision <%c>", - (unsigned int) exp_getnval( &( CURTASK exps[ level + 1 ] )), precision ); - bwb_debug( bwb_ebuf ); -#endif + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; - CURTASK exps[ level ].nval = (bnumber) - ~( (int) exp_getnval( &( CURTASK exps[ level + 1 ] )) ); + /* decrement the stack twice */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_not(): result is <%d>, precision <%c>", - (unsigned int) exp_getnval( &( CURTASK exps[ level ] )), precision ); - bwb_debug( bwb_ebuf ); -#endif + op_pulldown(2); - break; - } + return TRUE; - /* set variable type to integer */ +} - CURTASK exps[ level ].type = NUMBER; - CURTASK exps[ level ].operation = NUMBER; +/*************************************************************** + + FUNCTION: op_imp() + + DESCRIPTION: This function compares two integers and + performs a logical IMP on them. + +***************************************************************/ - /* decrement the stack once */ +static int +op_imp(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - op_pulldown( 1 ); + switch (precision) + { + case STRING: -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_not(): CURTASK expsc <%d>, level <%d> result <%d>", - CURTASK expsc, level, CURTASK exps[ CURTASK expsc ].nval ); - bwb_debug( bwb_ebuf ); -#endif + /* both sides of the operation should be numbers for logical + * comparison; if not, report an error */ - return TRUE; + sprintf(bwb_ebuf, "Strings cannot be compared logically."); + bwb_error(bwb_ebuf); + return FALSE; + + break; + + case NUMBER: + { + /* N = X IMP Y = (X AND Y) OR (NOT X) */ + long X; + long Y; + long N; + X = exp_getival(&(CURTASK exps[level - 1])); + Y = exp_getival(&(CURTASK exps[level + 1])); + N = (X & Y) | (~X); + CURTASK exps[level - 1].nval = N; + } + break; } -/*************************************************************** + /* set variable type to integer */ + + CURTASK exps[level - 1].type = NUMBER; + CURTASK exps[level - 1].operation = NUMBER; - FUNCTION: op_xor() + /* decrement the stack twice */ + + op_pulldown(2); + + return TRUE; - DESCRIPTION: This function compares two integers and - performs a logical XOR on them. +} +/*************************************************************** + + FUNCTION: op_negation() + + DESCRIPTION: This function performs a negation on the + element to the right. + Added by JBV 10/95 + ***************************************************************/ -#if ANSI_C -static int -op_xor( int level, int precision ) -#else static int -op_xor( level, precision ) - int level; - int precision; -#endif - { +op_negation(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - switch( precision ) - { - case STRING: + switch (precision) + { + case STRING: - /* both sides of the operation should be numbers for - logical comparison; if not, report an error */ -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be compared logically." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + /* both sides of the operation should be numbers for logical + * comparison; if not, report an error */ - break; + sprintf(bwb_ebuf, "Strings cannot be compared logically."); + bwb_error(bwb_ebuf); + return FALSE; - case NUMBER: - CURTASK exps[ level - 1 ].nval - = (bnumber) ((int) exp_getnval( &( CURTASK exps[ level - 1 ] )) - ^ (int) exp_getnval( &( CURTASK exps[ level + 1 ] ))); - break; + break; - } + default: - /* set variable type to integer */ - CURTASK exps[ level - 1 ].type = NUMBER; - CURTASK exps[ level - 1 ].operation = NUMBER; + CURTASK exps[level].nval = + -(exp_getnval(&(CURTASK exps[level + 1]))); - /* decrement the stack twice */ + break; + } - op_pulldown( 2 ); + /* set variable type to requested precision (JBV) */ - return TRUE; + CURTASK exps[level].type = (char) precision; + CURTASK exps[level].operation = NUMBER; - } + /* decrement the stack once */ -/*************************************************************** + op_pulldown(1); - FUNCTION: op_negation() - DESCRIPTION: This function performs a negation on the - element to the right. - Added by JBV 10/95 + return TRUE; -***************************************************************/ +} -#if ANSI_C -static int -op_negation( int level, int precision ) -#else static int -op_negation( level, precision ) - int level; - int precision; -#endif - { +op_posation(int level, int precision) +{ + bwx_DEBUG(__FUNCTION__); - switch( precision ) - { - case STRING: + switch (precision) + { + case STRING: - /* both sides of the operation should be numbers for - logical comparison; if not, report an error */ + /* both sides of the operation should be numbers for logical + * comparison; if not, report an error */ -#if PROG_ERRORS - sprintf( bwb_ebuf, "Strings cannot be compared logically." ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + sprintf(bwb_ebuf, "Strings cannot be compared logically."); + bwb_error(bwb_ebuf); + return FALSE; - break; + break; - default: + default: -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_negation(): argument is <%f>, precision <%c>", - exp_getnval( &( CURTASK exps[ level + 1 ] )), precision ); - bwb_debug( bwb_ebuf ); -#endif - CURTASK exps[ level ].nval = (bnumber) - -( exp_getnval( &( CURTASK exps[ level + 1 ] )) ); + CURTASK exps[level].nval = + (exp_getnval(&(CURTASK exps[level + 1]))); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_negation(): result is <%f>, precision <%c>", - exp_getnval( &( CURTASK exps[ level ] )), precision ); - bwb_debug( bwb_ebuf ); -#endif - break; - } + break; + } /* set variable type to requested precision (JBV) */ - CURTASK exps[ level ].type = (char) precision; - CURTASK exps[ level ].operation = NUMBER; + CURTASK exps[level].type = (char) precision; + CURTASK exps[level].operation = NUMBER; /* decrement the stack once */ - op_pulldown( 1 ); + op_pulldown(1); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_negation(): CURTASK expsc <%d>, level <%d> result <%f>", - CURTASK expsc, level, CURTASK exps[ CURTASK expsc ].nval ); - bwb_debug( bwb_ebuf ); -#endif return TRUE; - } +} -/*************************************************************** - FUNCTION: op_islevelstr() - DESCRIPTION: This function determines whether the - operation at a specified level involves a - string constant or variable. +/*************************************************************** + + FUNCTION: op_islevelstr() + + DESCRIPTION: This function determines whether the + operation at a specified level involves a + string constant or variable. + ***************************************************************/ -#if ANSI_C static int -op_islevelstr( int level ) -#else -static int -op_islevelstr( level ) - int level; -#endif - { +op_islevelstr(int level) +{ + + bwx_DEBUG(__FUNCTION__); /* first see if the level holds a string constant */ - if ( CURTASK exps[ level ].operation == CONST_STRING ) - { + if (CURTASK exps[level].operation == CONST_STRING) + { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_islevelstr(): string detected at level <%d>.", - level ); - bwb_debug( bwb_ebuf ); -#endif return TRUE; - } - + } /* see if the level holds a string variable */ - if ( CURTASK exps[ level ].operation == VARIABLE ) + if (CURTASK exps[level].operation == VARIABLE) + { + if (CURTASK exps[level].xvar->type == STRING) { - if ( CURTASK exps[ level ].xvar->type == STRING ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_islevelstr(): string detected at level <%d>.", - level ); - bwb_debug( bwb_ebuf ); -#endif return TRUE; - } } - + } /* test has failed, return FALSE */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_islevelstr(): string not detected at level <%d>.", - level ); - bwb_debug( bwb_ebuf ); -#endif return FALSE; - } +} /*************************************************************** - - FUNCTION: op_getprecision() - - DESCRIPTION: This function finds the precision for - an operation by comparing the precision - at this level and that two levels below. - + + FUNCTION: op_getprecision() + + DESCRIPTION: This function finds the precision for + an operation by comparing the precision + at this level and that two levels below. + ***************************************************************/ -#if ANSI_C -static int -op_getprecision( int level ) -#else static int -op_getprecision( level ) - int level; -#endif - { +op_getprecision(int level) +{ + bwx_DEBUG(__FUNCTION__); /* first test for string value */ - if ( ( CURTASK exps[ level + 1 ].type == STRING ) - || ( CURTASK exps[ level - 1 ].type == STRING ) ) - { + if ((CURTASK exps[level + 1].type == STRING) + || (CURTASK exps[level - 1].type == STRING)) + { return STRING; - } - + } /* Both are numbers, so we should be able to find a suitable - precision level by starting with the top and moving down; - check first for double precision */ + * precision level by starting with the top and moving down; check + * first for double precision */ else - { + { return NUMBER; - } - } -/*************************************************************** - - FUNCTION: op_pulldown() - - DESCRIPTION: This function pulls the expression stack - down a specified number of levels, decrementing - the expression stack counter (bycalling dec_esc()) - and decrementing the current "level" of operation - processing. +} +/*************************************************************** + + FUNCTION: op_pulldown() + + DESCRIPTION: This function pulls the expression stack + down a specified number of levels, decrementing + the expression stack counter (bycalling dec_esc()) + and decrementing the current "level" of operation + processing. + ***************************************************************/ -#if ANSI_C static int -op_pulldown( int how_far ) -#else -static int -op_pulldown( how_far ) - int how_far; -#endif - { - int level; - register int c; +op_pulldown(int how_far) +{ + int level; + register int c; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in op_pulldown(): pull down e stack <%d> place(s)", - how_far ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* first pull down the actual variables themselves */ - level = op_level + ( 2 - how_far ); - while ( CURTASK expsc >= ( level + how_far ) ) - { + level = op_level + (2 - how_far); + while (CURTASK expsc >= (level + how_far)) + { /*------------------------------------------------------*/ /* But before memcpy, deallocate sbuffer for level, and */ @@ -2002,34 +1877,34 @@ op_pulldown( how_far ) /* Else konfusion reigns the next time around... (JBV) */ /*------------------------------------------------------*/ - if( CURTASK exps[ level ].sval.sbuffer != NULL ) /* JBV */ - FREE( CURTASK exps[ level ].sval.sbuffer, "op_pulldown" ); - memcpy( &CURTASK exps[ level ], &CURTASK exps[ level + how_far ], - (size_t) ( sizeof( struct exp_ese )) ); - CURTASK exps[ level + how_far ].sval.sbuffer = NULL; /* JBV */ + if (CURTASK exps[level].sval.sbuffer != NULL) /* JBV */ + FREE(CURTASK exps[level].sval.sbuffer, "op_pulldown"); + memcpy(&CURTASK exps[level], &CURTASK exps[level + how_far], + (size_t) (sizeof(struct exp_ese))); + CURTASK exps[level + how_far].sval.sbuffer = NULL; /* JBV */ ++level; - } + } /* decrement the expression stack counter */ - for ( c = 0; c < how_far; ++c ) - { + for (c = 0; c < how_far; ++c) + { - if ( dec_esc() == TRUE ) - { + if (dec_esc() == TRUE) + { --op_level; - } + } else - { + { return FALSE; - } - } - return TRUE; - } + return TRUE; + +} +/* EOF */ diff --git a/bwb_par.c b/bwb_par.c deleted file mode 100644 index 38e0a5f..0000000 --- a/bwb_par.c +++ /dev/null @@ -1,115 +0,0 @@ -/*************************************************************** - - bwb_par.c Parallel Action (Multitasking) Routines - for Bywater BASIC Interpreter - - Currently UNDER CONSTRUCTION - - Copyright (c) 1993, Ted A. Campbell - Bywater Software - - email: tcamp@delphi.com - - Copyright and Permissions Information: - - All U.S. and international rights are claimed by the author, - Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -***************************************************************/ - -/*---------------------------------------------------------------*/ -/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ -/* 11/1995 (eidetics@cerf.net). */ -/*---------------------------------------------------------------*/ - -#include - -#include "bwbasic.h" -#include "bwb_mes.h" - -#if PARACT /* this whole file ignored if FALSE */ - -/*************************************************************** - - FUNCTION: bwb_newtask() - - DESCRIPTION: This C function allocates and initializes - memory for a new task. - -***************************************************************/ - -#if ANSI_C -int -bwb_newtask( int task_requested ) -#else -int -bwb_newtask( task_requested ) - int task_requested; -#endif - { - static char start_buf[] = "\0"; - static char end_buf[] = "\0"; - register int c; - - /* find if requested task slot is available */ - - if ( bwb_tasks[ task_requested ] != NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_newtask(): Slot requested is already in use" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_overflow ); - return -1; -#endif - } - - /* get memory for task structure */ - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( bwb_tasks[ task_requested ] = CALLOC( 1, sizeof( struct bwb_task ), "bwb_newtask" ) ) - == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_newtask(): failed to find memory for task structure" ); -#else - bwb_error( err_getmem ); -#endif - } - - /* set some initial variables */ - - bwb_tasks[ task_requested ]->bwb_start.number = 0; - bwb_tasks[ task_requested ]->bwb_start.next = &bwb_tasks[ task_requested ]->bwb_end; - bwb_tasks[ task_requested ]->bwb_end.number = MAXLINENO + 1; - bwb_tasks[ task_requested ]->bwb_end.next = &bwb_tasks[ task_requested ]->bwb_end; - bwb_tasks[ task_requested ]->bwb_start.buffer = start_buf; - bwb_tasks[ task_requested ]->bwb_end.buffer = end_buf; - bwb_tasks[ task_requested ]->data_line = &bwb_tasks[ task_requested ]->bwb_start; - bwb_tasks[ task_requested ]->data_pos = 0; - bwb_tasks[ task_requested ]->rescan = TRUE; - bwb_tasks[ task_requested ]->exsc = -1; - bwb_tasks[ task_requested ]->expsc = 0; - bwb_tasks[ task_requested ]->xtxtsc = 0; - - /* Variable and function table initializations */ - - var_init( task_requested ); /* initialize variable chain */ - fnc_init( task_requested ); /* initialize function chain */ - fslt_init( task_requested ); /* initialize funtion-sub chain */ - - return task_requested; - - } - -#endif - - diff --git a/bwb_prn.c b/bwb_prn.c index 76efd67..86d830e 100644 --- a/bwb_prn.c +++ b/bwb_prn.c @@ -1,295 +1,639 @@ /*************************************************************** - - bwb_prn.c Print and Error-Handling Commands + + bwb_prn.c Print and Error-Handling Commands for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include + #include "bwbasic.h" -#include "bwb_mes.h" -/* Prototypes for functions visible only to this file */ -int prn_col = 1; -static int prn_width = 80; /* default width for stdout */ +/* ECMA-55, Section 14.4 */ +#define ZONEWIDTH ( SIGNIFICANT_DIGITS + EXPONENT_DIGITS + 6 ) + + +/* Prototypes for functions visible only to this file */ +static BasicFileNumberType FileNumber = CONSOLE_FILE_NUMBER; /* console = 0, printer + * = 0xFF, OTHERWISE # + * file-number */ struct prn_fmt - { - int type; /* STRING, NUMBER, SINGLE, or NUMBER */ - int exponential; /* TRUE = use exponential notation */ - int right_justified; /* TRUE = right justified else left justified */ - int width; /* width of main section */ - int precision; /* width after decimal point */ - int commas; /* use commas every three steps */ - int sign; /* prefix sign to number */ - int money; /* prefix money sign to number */ - int fill; /* ASCII value for fill character, normally ' ' */ - int minus; /* postfix minus sign to number */ - }; - -#if ANSI_C -static int prn_cr( char *buffer, FILE *f ); -static struct prn_fmt *get_prnfmt( char *buffer, int *position, FILE *f ); -static int bwb_xerror( char *message ); -static int xxputc( FILE *f, char c ); -static int xxxputc( FILE *f, char c ); -static struct bwb_variable * bwb_esetovar( struct exp_ese *e ); -#else -static int prn_cr(); -static struct prn_fmt *get_prnfmt(); -static int bwb_xerror(); -static int xxputc(); -static int xxxputc(); -static struct bwb_variable * bwb_esetovar(); -#endif +{ + int type; /* STRING, NUMBER, SINGLE, or NUMBER */ + int exponential; /* TRUE = use exponential notation */ + int right_justified; /* TRUE = right justified + * else left justified */ + int width; /* width of main section */ + int precision; /* width after decimal point */ + int commas; /* use commas every three steps */ + int sign; /* prefix sign to number */ + int money; /* prefix money sign to number */ + int fill; /* ASCII value for fill character, normally ' + * ' */ + int minus; /* postfix minus sign to number */ +}; + +static struct prn_fmt * +get_prnfmt(char *buffer, int *position); +static int +xputc(char c); +static int +xxputc(char c); +static int +xxxputc(char c); +static int +bwb_xprint(struct bwb_line * l); +static int +prn_xxprintf(char *buffer); +static int prn_getcol(); +static int +prn_setcol(int NewValue); +static int prn_getwidth(); + + /*************************************************************** + + FUNCTION: bwx_putc() + + DESCRIPTION: This function outputs a single character + to the default output device. + +***************************************************************/ - FUNCTION: bwb_print() +int +bwx_PRINT(char c) +{ + bwx_DEBUG(__FUNCTION__); - DESCRIPTION: This function implements the BASIC PRINT - command. + return fputc(c, stdout); - SYNTAX: PRINT [# device-number,][USING format-string$;] expressions... +} -***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_print( struct bwb_line *l ) -#else -struct bwb_line * -bwb_print( l ) - struct bwb_line *l; -#endif + +int +prn_lprintf(char *buffer) +{ + bwx_DEBUG(__FUNCTION__); + + while (*buffer != '\0') { - FILE *fp; - static int pos; - int req_devnumber; - struct exp_ese *v; - static char *s_buffer; /* small, temporary buffer */ - static int init = FALSE; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_print(): enter function" ); - bwb_debug( bwb_ebuf ); -#endif + bwx_LPRINT(*buffer); + buffer++; + } + return 0; +} - /* initialize buffers if necessary */ +int +prn_xprintf(char *buffer) +{ + /* Catch-22: an error has occurred before the devicce table is loaded */ + int n; + bwx_DEBUG(__FUNCTION__); - if ( init == FALSE ) - { - init = TRUE; + n = bwx_CONSOLE_WIDTH(); - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( s_buffer = CALLOC( MAXSTRINGSIZE + 1, sizeof(char), "bwb_print") ) == NULL ) + if (n > 0) + { + int i; + i = 0; + while (*buffer) + { + bwx_PRINT(*buffer); + buffer++; + if (*buffer == '\n') { -#if PROG_ERRORS - bwb_error( "in bwb_print(): failed to get memory for s_buffer" ); -#else - bwb_error( err_getmem ); -#endif + i = 0; + } + i++; + if (i >= n) + { + bwx_PRINT('\n'); + i = 0; } } + } + else + { + /* raw */ + while (*buffer) + { + bwx_PRINT(*buffer); + buffer++; + } + } + return 0; +} - /* advance beyond whitespace and check for the '#' sign */ +static void +CleanNumericString(char *prnbuf, int RemoveDot) +{ + /* remove trailing zeroes */ + char *E; + char *D; - adv_ws( l->buffer, &( l->position ) ); + bwx_DEBUG(__FUNCTION__); -#if COMMON_CMDS - if ( l->buffer[ l->position ] == '#' ) + E = strchr(prnbuf, 'E'); + if (E == NULL) + { + E = strchr(prnbuf, 'e'); + } + if (E) + { + /* SCIENTIFIC == SCALED notation */ + /* trim leading zeroes in exponent */ + char *F; + char *G; + F = E; + while (isalpha(*F)) { - ++( l->position ); - adv_element( l->buffer, &( l->position ), s_buffer ); - pos = 0; - v = bwb_exp( s_buffer, FALSE, &pos ); - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) + F++; + } + while (*F == '+' || *F == '-') + { + /* skip sign */ + F++; + } + G = F; + while (*G == '0' || *G == ' ') + { + /* skip leading zeroes or spaces */ + G++; + } + if (G > F) + { + strcpy(F, G); + } + G = NULL; /* no longer valid */ + *E = '\0'; /* for strlen() */ + } + D = strchr(prnbuf, '.'); + if (D) + { + int N = strlen(D); + if (N > 1) + { + int M; + N--; + M = N; + while (D[N] == '0') { - ++( l->position ); + /* remove trailing zeroes */ + D[N] = '_'; + N--; } - else + if (RemoveDot) { -#if PROG_ERRORS - bwb_error( "in bwb_print(): no comma after #n" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); + if (E) + { + /* SCIENTIFIC == SCALED notation */ + /* do NOT remove '.' */ + } + else + { + /* NORMAL == UNSCALED notation */ + /* remove trailing '.' */ + /* this will only occur for integer + * values */ + while (D[N] == '.') + { + /* _###. POSITIVE INTEGER */ + /* -###. NEGATIVE INTEGER */ + D[N] = '_'; + N--; + } + } + } + if (N < M) + { + if (E) + { + /* SCIENTIFIC == SCALED notation */ + *E = 'E'; + E = NULL; + } + N++; + /* if INTEGER, then N == 0, else N > 0 */ + M++; + /* if SCIENTIFIC, then *M == 'E' else *M == + * '\0' */ + strcpy(&(D[N]), &(D[M])); } + } + } + if (E) + { + /* SCIENTIFIC == SCALED notation */ + *E = 'E'; + E = NULL; + } + if (prnbuf[1] == '0' && prnbuf[2] == '.') + { + /* _0.### POSITIVE FRACTION ==> _.### */ + /* -0.### NEGATIVE FRACTION ==> -.### */ + strcpy(&(prnbuf[1]), &(prnbuf[2])); + } + if (prnbuf[1] == '.' && prnbuf[2] == 'E') + { + /* _.E POSITIVE ZERO ==> _0 */ + /* -.E NEGATIVE ZERO ==> _0 */ + strcpy(prnbuf, " 0"); + } +} - req_devnumber = (int) exp_getnval( v ); +static int +SignificantDigits(char *Buffer) +{ + int NumDigits; + char *P; - /* check the requested device number */ + bwx_DEBUG(__FUNCTION__); - if ( ( req_devnumber < 0 ) || ( req_devnumber >= DEF_DEVICES )) - { -#if PROG_ERRORS - bwb_error( "in bwb_input(): Requested device number is out of range." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } - if (( dev_table[ req_devnumber ].mode == DEVMODE_CLOSED ) || - ( dev_table[ req_devnumber ].mode == DEVMODE_AVAILABLE )) - { -#if PROG_ERRORS - bwb_error( "in bwb_input(): Requested device number is not open." ); -#else - bwb_error( err_devnum ); -#endif + /* determine the number of significant digits */ + NumDigits = 0; + P = Buffer; + while (*P) + { + if (isalpha(*P)) + { + /* 'E', 'e', and so on. */ + break; + } + if (isdigit(*P)) + { + NumDigits++; + } + P++; + } + return NumDigits; +} + +void +BasicNumerc(BasicNumberType Input, char *Output) +{ - return bwb_zline( l ); + char *E; + + bwx_DEBUG(__FUNCTION__); + + /* * print in scientific form first, * to determine exponent and * + * significant digits */ + sprintf(Output, "% 1.*E", SIGNIFICANT_DIGITS - 1, Input); + E = strchr(Output, 'E'); + if (E == NULL) + { + E = strchr(Output, 'e'); + } + if (E) + { + /* valid */ + int Exponent; + int NumDigits; + int DisplayDigits; + int zz; + char *F; /* pointer to the exponent's value */ + F = E; + while (isalpha(*F)) + { + F++; + } + Exponent = atoi(F); + CleanNumericString(Output, 0); + NumDigits = SignificantDigits(Output); + /* DisplayDigits = min(NumDigits,SIGNIFICANT_DIGITS) */ + DisplayDigits = NumDigits; + if (DisplayDigits > SIGNIFICANT_DIGITS) + { + DisplayDigits = SIGNIFICANT_DIGITS; + } + /* zz = max(Exponent,DisplayDigits - Exponent - 2) */ + zz = DisplayDigits - Exponent - 2; + if (zz < Exponent) + { + zz = Exponent; + } + if (zz >= SIGNIFICANT_DIGITS) + { + /* SCIENTIFIC */ + sprintf(Output, "%# 1.*E", DisplayDigits - 1, Input); + } + else + if (Input == (int) Input) + { + /* INTEGER */ + sprintf(Output, "% *d", DisplayDigits, (int) Input); + } + else + { + /* FLOAT */ + int N; + /* number of digits before the '.' */ + int M; + /* number of digits after the '.' */ + N = Exponent + 1; + if (N < 0) + { + N = 0; } -/* Append Mode must also be taken into account (EO) */ - if ( dev_table[ req_devnumber ].mode != DEVMODE_OUTPUT && dev_table[ req_devnumber ].mode != DEVMODE_APPEND ) + M = SIGNIFICANT_DIGITS - N; + if (M < 0) { -#if PROG_ERRORS - bwb_error( "in bwb_print(): Requested device is not open for OUTPUT." ); -#else - bwb_error( err_devnum ); -#endif - - return bwb_zline( l ); + M = 0; } + sprintf(Output, "%# *.*f", N, M, Input); + } + CleanNumericString(Output, 0); + } + else + { + /* ERROR, NAN, INFINITY, ETC. */ + } + return; +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_print(): device number is <%d>", - req_devnumber ); - bwb_debug( bwb_ebuf ); -#endif - /* look up the requested device in the device table */ - fp = dev_table[ req_devnumber ].cfp; +struct bwb_line * +bwb_LPRINT(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + + FileNumber = LPRINT_FILE_NUMBER; + bwb_xprint(l); + return bwb_zline(l); +} + + +/*************************************************************** + + FUNCTION: bwb_print() + + DESCRIPTION: This function implements the BASIC PRINT + command. + + SYNTAX: PRINT [# device-number,][USING format-string$;] expressions... + +***************************************************************/ + +struct bwb_line * +bwb_QUEST(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + + return bwb_PRINT(l); +} + +struct bwb_line * +bwb_PRINT(struct bwb_line * l) +{ + static int pos; + static char *s_buffer; /* small, temporary buffer */ + static int init = FALSE; + + bwx_DEBUG(__FUNCTION__); + + + /* initialize buffers if necessary */ + + if (init == FALSE) + { + init = TRUE; + /* Revised to CALLOC pass-thru call by JBV */ + if ((s_buffer = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_print")) == NULL) + { + bwb_error("in bwb_print(): failed to get memory for s_buffer"); + return bwb_zline(l); } + } + FileNumber = CONSOLE_FILE_NUMBER; - else + + adv_ws(l->buffer, &(l->position)); + + if (l->buffer[l->position] == '@') + { + /* PRINT @ position, ... */ + struct exp_ese *v; + int pos; + int position; + int r; + int c; + + position = 0; + r = 0; + c = 0; + + ++(l->position); + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), s_buffer); + pos = 0; + v = bwb_exp(s_buffer, FALSE, &pos); + if (ERROR_PENDING) { - fp = stdout; + return bwb_zline(l); } + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ',') + { + ++(l->position); + } + else + { + bwb_error("in bwb_print(): no comma after @n"); + return bwb_zline(l); + } + + position = exp_getival(v); + if (position < 0 || position > 80 * 24 - 1) + { + bwb_error("in bwb_input(): Requested position is out of range."); + return bwb_zline(l); + } + r = position / prn_getwidth(); + c = position - r * prn_getwidth(); + r++; + c++; -#else - fp = stdout; -#endif /* COMMON_CMDS */ - bwb_xprint( l, fp ); + switch (OptionTerminalType) + { + case C_OPTION_TERMINAL_NONE: + break; + case C_OPTION_TERMINAL_ADM_3A: + fprintf(stdout, "%c=%c%c", 27, r + 32, c + 32); + break; + case C_OPTION_TERMINAL_ANSI: + fprintf(stdout, "%c[%d;%dH", 27, r, c); + break; + default: + sprintf(bwb_ebuf, "%s IS NOT IMPLEMENTED ON THIS PLATFORM", "PRINT @"); + bwb_error(bwb_ebuf); + break; + } - return bwb_zline( l ); } + else + if (l->buffer[l->position] == BasicFileNumberPrefix) + { + /* PRINT # file, ... */ + struct exp_ese *v; + int UserFileNumber; -/*************************************************************** - FUNCTION: bwb_xprint() + ++(l->position); + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), s_buffer); + pos = 0; + v = bwb_exp(s_buffer, FALSE, &pos); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ',') + { + ++(l->position); + } + else + { + bwb_error("in bwb_print(): no comma after #n"); + return bwb_zline(l); + } + + UserFileNumber = exp_getival(v); + /* check the requested device number */ + if (UserFileNumber < 0) + { + /* PRINTER, CASSETTE, etc. These are all sent to + * bwx_LPRINT */ + FileNumber = LPRINT_FILE_NUMBER; + } + else + if (UserFileNumber > BasicFileNumberMax) + { + bwb_error("in bwb_input(): Requested device number is out of range."); + return bwb_zline(l); + } + else + { + FileNumber = (BasicFileNumberType) UserFileNumber; + if ((dev_table[FileNumber].mode & DEVMODE_WRITE) == 0) + { + bwb_error("in bwb_print(): Requested device is not open for writing"); + return bwb_zline(l); + } + } - DESCRIPTION: This function implements the BASIC PRINT - command, utilizing a specified file our - output device. -***************************************************************/ + } + bwb_xprint(l); -#if ANSI_C -int -bwb_xprint( struct bwb_line *l, FILE *f ) -#else -int -bwb_xprint( l, f ) - struct bwb_line *l; - FILE *f; -#endif + + if (FileNumber == CONSOLE_FILE_NUMBER) { + /* FOR I = 1 TO 1000: PRINT "."; : NEXT I : PRINT */ + fflush(stdout); + } + return bwb_zline(l); +} + +/*************************************************************** + + FUNCTION: bwb_xprint() + + DESCRIPTION: This function implements the PRINT + command, utilizing a specified file our + output device. + +***************************************************************/ +/* static unsigned char FileNumber has been assigned */ +static int +bwb_xprint(struct bwb_line * l) +{ struct exp_ese *e; - int loop; - static int p; - static int fs_pos; + int loop; + static int p; + static int fs_pos; struct prn_fmt *format; - static char *format_string; - static char *output_string; - static char *element; - static char *prnbuf; - static int init = FALSE; - register int i, j; /* JBV */ - int dig_pos, dec_pos; /* JBV */ - char tbuf[ MAXSTRINGSIZE + 1 ]; /* JBV */ -#if INTENSIVE_DEBUG || TEST_BSTRING - bstring *b; -#endif + static char *format_string; + static char *output_string; + static char *element; + static char *prnbuf; + static int init = FALSE; + register int i, j; /* JBV */ + int dig_pos, dec_pos; /* JBV */ + char tbuf[BasicStringLengthMax + 1]; /* JBV */ + int OutputCR; + + bwx_DEBUG(__FUNCTION__); /* initialize buffers if necessary */ - if ( init == FALSE ) - { + if (init == FALSE) + { init = TRUE; /* Revised to CALLOC pass-thru call by JBV */ - if ( ( format_string = CALLOC( MAXSTRINGSIZE + 1, sizeof(char), "bwb_xprint") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_xprint(): failed to get memory for format_string" ); -#else - bwb_error( err_getmem ); -#endif - } + if ((format_string = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_xprint")) == NULL) + { + bwb_error("in bwb_xprint(): failed to get memory for format_string"); + return FALSE; + } /* Revised to CALLOC pass-thru call by JBV */ - if ( ( output_string = CALLOC( MAXSTRINGSIZE + 1, sizeof(char), "bwb_xprint") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_xprint(): failed to get memory for output_string" ); -#else - bwb_error( err_getmem ); -#endif - } + if ((output_string = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_xprint")) == NULL) + { + bwb_error("in bwb_xprint(): failed to get memory for output_string"); + return FALSE; + } /* Revised to CALLOC pass-thru call by JBV */ - if ( ( element = CALLOC( MAXSTRINGSIZE + 1, sizeof(char), "bwb_xprint") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_xprint(): failed to get memory for element buffer" ); -#else - bwb_error( err_getmem ); -#endif - } + if ((element = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_xprint")) == NULL) + { + bwb_error("in bwb_xprint(): failed to get memory for element buffer"); + return FALSE; + } /* Revised to CALLOC pass-thru call by JBV */ - if ( ( prnbuf = CALLOC( MAXSTRINGSIZE + 1, sizeof(char), "bwb_xprint") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_xprint(): failed to get memory for prnbuf" ); -#else - bwb_error( err_getmem ); -#endif - } + if ((prnbuf = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_xprint")) == NULL) + { + bwb_error("in bwb_xprint(): failed to get memory for prnbuf"); + return FALSE; } - + } /* Detect USING Here */ fs_pos = -1; @@ -297,394 +641,352 @@ bwb_xprint( l, f ) /* get "USING" in format_string */ p = l->position; - adv_element( l->buffer, &p, format_string ); - bwb_strtoupper( format_string ); + adv_element(l->buffer, &p, format_string); -#if COMMON_CMDS /* check to be sure */ - if ( strcmp( format_string, CMD_XUSING ) == 0 ) - { + if (strcasecmp(format_string, "USING") == 0) + { l->position = p; - adv_ws( l->buffer, &( l->position ) ); + adv_ws(l->buffer, &(l->position)); /* now get the format string in format_string */ - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - if ( e->type == STRING ) - { + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return FALSE; + } + if (e->type == STRING) + { /* copy the format string to buffer */ - str_btoc( format_string, exp_getsval( e ) ); + str_btoc(format_string, exp_getsval(e)); /* look for ';' after format string */ fs_pos = 0; - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ';' ) - { + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ';') + { ++l->position; - adv_ws( l->buffer, &( l->position ) ); - } + adv_ws(l->buffer, &(l->position)); + } else - { -#if PROG_ERRORS - bwb_error( "Failed to find \";\" after format string in PRINT USING" ); -#else - bwb_error( err_syntax ); -#endif + { + bwb_error("Failed to find ; after format string in PRINT USING"); return FALSE; - } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xprint(): Found USING, format string <%s>", - format_string ); - bwb_debug( bwb_ebuf ); -#endif - - } + } else - { -#if PROG_ERRORS - bwb_error( "Failed to find format string after PRINT USING" ); -#else - bwb_error( err_syntax ); -#endif + { + bwb_error("Failed to find format string after PRINT USING"); return FALSE; - } } + } + /* if no arguments, simply print CR and return */ + + adv_ws(l->buffer, &(l->position)); + switch (l->buffer[l->position]) + { + case '\0': + xputc('\n'); + return TRUE; + default: + break; + } + + /* LOOP THROUGH PRINT ELEMENTS */ -#endif /* COMMON_CMDS */ + OutputCR = TRUE; - /* if no arguments, simply print CR and return */ + loop = TRUE; + while (loop == TRUE) + { - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) + /* 1980 PRINT , , ,"A" */ + adv_ws(l->buffer, &(l->position)); + switch (l->buffer[l->position]) { - case '\0': - case '\n': - case '\r': - case ':': - prn_xprintf( f, "\n" ); - return TRUE; + case '\0': /* end of buffer */ + loop = FALSE; + break; + case ',': /* tab over */ + /* Tab only if there's no format specification! (JBV) */ + /* putchar('+'); */ + if ((fs_pos == -1) || (strlen(element) == 0)) + { + xputc('\t'); + } + ++l->position; + OutputCR = FALSE; + continue; /* while( loop == TRUE ) */ + break; + case ';': /* concatenate strings */ + ++l->position; + OutputCR = FALSE; + continue; /* while( loop == TRUE ) */ + break; default: break; } - - /* LOOP THROUGH PRINT ELEMENTS */ - - loop = TRUE; - while( loop == TRUE ) + if(l->buffer[l->position] == OptionCommentChar) { + /* PRINT ' comment */ + loop = FALSE; + } + if (loop == FALSE) + { + break; /* while( loop == TRUE ) */ + } + OutputCR = TRUE; - /* resolve the string */ - - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xprint(): op <%d> type <%d>", - e->operation, e->type ); - bwb_debug( bwb_ebuf ); -#endif + /* resolve the string */ + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return FALSE; + } /* an OP_NULL probably indicates a terminating ';', but this - will be detected later, so we can ignore it for now */ + * will be detected later, so we can ignore it for now */ - if ( e->operation != OP_NULL ) - { -#if TEST_BSTRING - b = exp_getsval( e ); - sprintf( bwb_ebuf, "in bwb_xprint(): bstring name is <%s>", - b->name ); - bwb_debug( bwb_ebuf ); -#endif - str_btoc( element, exp_getsval( e ) ); - } + if (e->operation != OP_NULL) + { + str_btoc(element, exp_getsval(e)); + } else - { - element[ 0 ] = '\0'; - } + { + element[0] = '\0'; + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xprint(): element <%s>", - element ); - bwb_debug( bwb_ebuf ); -#endif /* print with format if there is one */ - if (( fs_pos > -1 ) && ( strlen( element ) > 0 )) - { - -#if COMMON_CMDS - - format = get_prnfmt( format_string, &fs_pos, f ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xprint(): format type <%d> width <%d>", - format->type, format->width ); - bwb_debug( bwb_ebuf ); -#endif + if ((fs_pos > -1) && (strlen(element) > 0)) + { - switch( format->type ) + format = get_prnfmt(format_string, &fs_pos); + if (fs_pos < 0) + { + /* wrap around */ + fs_pos = 0; + format = get_prnfmt(format_string, &fs_pos); + } + switch (format->type) + { + case STRING: +#if 0 + if (e->type != STRING) { - case STRING: - if ( e->type != STRING ) - { -#if PROG_ERRORS - bwb_error( "Type mismatch in PRINT USING" ); -#else - bwb_error( err_mismatch ); -#endif - } - if ( format->width == -1 ) /* JBV */ - sprintf( output_string, "%s", element ); - else sprintf( output_string, "%.*s", format->width, element ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xprint(): output string <%s>", - output_string ); - bwb_debug( bwb_ebuf ); + bwb_error("Type mismatch in PRINT USING"); + return FALSE; + } #endif + if (format->width == -1) /* JBV */ + sprintf(output_string, "%s", element); + else + sprintf(output_string, "%.*s", format->width, element); - prn_xxprintf( f, output_string ); /* Was prn_xprintf (JBV) */ - break; - case NUMBER: - if ( e->type == STRING ) - { -#if PROG_ERRORS - bwb_error( "Type mismatch in PRINT USING" ); -#else - bwb_error( err_mismatch ); -#endif - } + prn_xxprintf(output_string); /* do not expand TAB or + * SPC */ + break; - if ( format->exponential == TRUE ) - { - /*------------------------------------------------------*/ - /* NOTE: Width and fill have no effect on C exponential */ - /* format (JBV) */ - /*------------------------------------------------------*/ - if ( format->sign == TRUE ) /* Added by JBV */ - sprintf( output_string, "%+e", exp_getnval( e ) ); - else - sprintf( output_string, "%e", exp_getnval( e ) ); - } - else - { - /*---------------------------------------------------*/ - /* NOTE: Minus, commas, and money are only valid for */ - /* floating point format (JBV) */ - /*---------------------------------------------------*/ - if ( format->sign == TRUE ) /* Added by JBV */ - sprintf( output_string, "%+*.*f", - format->width, format->precision, exp_getnval( e ) ); - else if ( format->minus == TRUE ) /* Added by JBV */ + case NUMBER: + if (e->type == STRING) + { + bwb_error("Type mismatch in PRINT USING"); + return FALSE; + } + if (format->exponential == TRUE) + { + /*------------------------------------------------------*/ + /* NOTE: Width and fill have no + * effect on C exponential */ + /* format (JBV) */ + /*------------------------------------------------------*/ + if (format->sign == TRUE) /* Added by JBV */ + sprintf(output_string, "%+e", exp_getnval(e)); + else + sprintf(output_string, "%e", exp_getnval(e)); + } + else + { + /*---------------------------------------------------*/ + /* NOTE: Minus, commas, and money are + * only valid for */ + /* floating point format (JBV) */ + /*---------------------------------------------------*/ + if (format->sign == TRUE) /* Added by JBV */ + sprintf(output_string, "%+*.*f", + format->width, format->precision, exp_getnval(e)); + else + if (format->minus == TRUE) /* Added by JBV */ + { + sprintf(output_string, "%*.*f", + format->width, format->precision, exp_getnval(e)); + for (i = 0; i < strlen(output_string); ++i) { - sprintf( output_string, "%*.*f", - format->width, format->precision, exp_getnval( e ) ); - for (i = 0; i < strlen( output_string ); ++i ) - { - if ( output_string[ i ] != ' ' ) - { - if ( output_string[ i ] == '-' ) - { - output_string[ i ] = ' '; - strcat( output_string, "-" ); - } - else strcat( output_string, " " ); - break; - } - } + if (output_string[i] != ' ') + { + if (output_string[i] == '-') + { + output_string[i] = ' '; + strcat(output_string, "-"); + } + else + strcat(output_string, " "); + break; + } } - else - sprintf( output_string, "%*.*f", - format->width, format->precision, exp_getnval( e ) ); + } + else + sprintf(output_string, "%*.*f", + format->width, format->precision, exp_getnval(e)); - if ( format->commas == TRUE ) /* Added by JBV */ + if (format->commas == TRUE) /* Added by JBV */ + { + dig_pos = -1; + dec_pos = -1; + for (i = 0; i < strlen(output_string); ++i) { - dig_pos = -1; - dec_pos = -1; - for ( i = 0; i < strlen( output_string ); ++i ) - { - if ( ( isdigit( output_string[ i ] ) != 0 ) - && ( dig_pos == -1 ) ) - dig_pos = i; - if ( ( output_string[ i ] == '.' ) - && ( dec_pos == -1 ) ) - dec_pos = i; - if ( ( dig_pos != -1 ) && ( dec_pos != -1 ) ) break; - } - if ( dec_pos == -1 ) dec_pos = strlen( output_string ); - j = 0; - for ( i = 0; i < strlen( output_string ); ++i ) - { - if ( ( ( dec_pos - i ) % 3 == 0 ) - && ( i > dig_pos ) && ( i < dec_pos ) ) - { - tbuf[ j ] = ','; - ++j; - tbuf[ j ] = '\0'; - } - tbuf[ j ] = output_string[ i ]; - ++j; - tbuf[ j ] = '\0'; - } - strcpy( output_string, - &tbuf[ strlen( tbuf ) - strlen( output_string ) ] ); + if ((isdigit(output_string[i]) != 0) + && (dig_pos == -1)) + dig_pos = i; + if ((output_string[i] == '.') + && (dec_pos == -1)) + dec_pos = i; + if ((dig_pos != -1) && (dec_pos != -1)) + break; } - - if ( format->money == TRUE ) /* Added by JBV */ + if (dec_pos == -1) + dec_pos = strlen(output_string); + j = 0; + for (i = 0; i < strlen(output_string); ++i) { - for ( i = 0; i < strlen( output_string ); ++i ) - { - if ( output_string[ i ] != ' ' ) - { - if ( i > 0 ) - { - if ( isdigit( output_string[ i ] ) == 0 ) - { - output_string[ i - 1 ] - = output_string[ i ]; - output_string[ i ] = '$'; - } - else output_string[ i - 1 ] = '$'; - } - break; - } - } + if (((dec_pos - i) % 3 == 0) + && (i > dig_pos) && (i < dec_pos)) + { + tbuf[j] = ','; + ++j; + tbuf[j] = '\0'; + } + tbuf[j] = output_string[i]; + ++j; + tbuf[j] = '\0'; } - - } - - if ( format->fill == '*' ) /* Added by JBV */ - for ( i = 0; i < strlen( output_string ); ++i ) + strcpy(output_string, + &tbuf[strlen(tbuf) - strlen(output_string)]); + } + if (format->money == TRUE) /* Added by JBV */ + { + for (i = 0; i < strlen(output_string); ++i) { - if ( output_string[ i ] != ' ' ) break; - output_string[ i ] = '*'; + if (output_string[i] != ' ') + { + if (i > 0) + { + if (isdigit(output_string[i]) == 0) + { + output_string[i - 1] + = output_string[i]; + output_string[i] = '$'; + } + else + output_string[i - 1] = '$'; + } + break; + } } + } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xprint(): output number <%f> string <%s>", - exp_getnval( e ), output_string ); - bwb_debug( bwb_ebuf ); -#endif - - prn_xxprintf( f, output_string ); /* Was prn_xprintf (JBV) */ - break; + if (format->fill == '*') /* Added by JBV */ + for (i = 0; i < strlen(output_string); ++i) + { + if (output_string[i] != ' ') + break; + output_string[i] = '*'; + } - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_xprint(): get_prnfmt() returns unknown type <%c>", - format->type ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - break; - } -#endif /* COMMON_CMDS */ + prn_xxprintf(output_string); /* do not expand TAB or + * SPC */ + break; + default: + sprintf(bwb_ebuf, "in bwb_xprint(): get_prnfmt() returns unknown type <%d>", + format->type); + bwb_error(bwb_ebuf); + return FALSE; + break; } - /* not a format string: use defaults */ - else if ( strlen( element ) > 0 ) - { + } + /* not a format string: use defaults */ - switch( e->type ) - { - case STRING: - prn_xprintf( f, element ); - break; - default: -#if NUMBER_DOUBLE - sprintf( prnbuf, " %.*lf", prn_precision( bwb_esetovar( e )), - exp_getnval( e ) ); -#else - sprintf( prnbuf, " %.*f", prn_precision( bwb_esetovar( e )), - exp_getnval( e ) ); -#endif - prn_xprintf( f, prnbuf ); - break; - } - } + else + if (strlen(element) > 0) + { - /* check the position to see if the loop should continue */ - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) + switch (e->type) { -#if OLDSTUFF - case ':': /* end of line segment */ - loop = FALSE; - break; - case '\0': /* end of buffer */ - case '\n': - case '\r': - loop = FALSE; - break; -#endif - case ',': /* tab over */ - /* Tab only if there's no format specification! (JBV) */ - if (( fs_pos == -1 ) || ( strlen( element ) == 0 )) - xputc( f, '\t' ); - ++l->position; - adv_ws( l->buffer, &( l->position ) ); - break; - case ';': /* concatenate strings */ - ++l->position; - adv_ws( l->buffer, &( l->position ) ); + case STRING: + prn_iprintf(element); break; default: - loop = FALSE; + /* [space]number[space] POSITIVE or ZERO + * [minus]number[space] NEGATIVE */ + BasicNumerc(exp_getnval(e), prnbuf); + prn_iprintf(prnbuf); + xputc(' '); break; } + } + /* 1980 PRINT , , ,"A" */ - } /* end of loop through print elements */ + } /* end of loop through print elements */ - if (( fs_pos > -1 ) && ( strlen( element ) > 0 )) - format = get_prnfmt( format_string, &fs_pos, f ); /* Finish up (JBV) */ - /* call prn_cr() to print a CR if it is not overridden by a - concluding ';' mark */ + /* 1980 PRINT , , ,"A" */ + adv_ws(l->buffer, &(l->position)); - prn_cr( l->buffer, f ); + if (OutputCR == TRUE) + { + /* did not end with ',' or ';' */ + xputc('\n'); + } return TRUE; - } /* end of function bwb_xprint() */ +} /* end of function bwb_xprint() */ -#if COMMON_CMDS /*************************************************************** - + FUNCTION: get_prnfmt() - - DESCRIPTION: This function gets the PRINT USING - format string, returning a structure - to the format. - + + DESCRIPTION: This function gets the PRINT USING + format string, returning a structure + to the format. + ***************************************************************/ -#if ANSI_C -static struct prn_fmt * -get_prnfmt( char *buffer, int *position, FILE *f ) -#else static struct prn_fmt * -get_prnfmt( buffer, position, f ) - char *buffer; - int *position; - FILE *f; -#endif - { +get_prnfmt(char *buffer, int *position) +{ static struct prn_fmt retstruct; - int loop; + int loop; + + bwx_DEBUG(__FUNCTION__); /* set some defaults */ @@ -700,1200 +1002,738 @@ get_prnfmt( buffer, position, f ) retstruct.width = 0; /* check for negative position */ - - if ( *position < 0 ) - { + if (*position < 0) + { return &retstruct; - } - + } /* advance past whitespace */ - /* adv_ws( buffer, position ); */ /* Don't think we want this (JBV) */ + /* adv_ws( buffer, position ); *//* Don't think we want this (JBV) */ /* check first character: a lost can be decided right here */ - loop = TRUE; - while( loop == TRUE ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in get_prnfmt(): loop, buffer <%s>", - &( buffer[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - switch( buffer[ *position ] ) - { - case ' ': /* end of this format segment */ - xxputc( f, buffer[ *position ] ); /* Gotta output it (JBV) */ - ++( *position ); /* JBV */ - if (retstruct.type != FALSE) loop = FALSE; /* JBV */ - break; - case '\0': /* end of format string */ - case '\n': - case '\r': - *position = -1; - return &retstruct; - case '_': /* print next character as literal */ - ++( *position ); - xxputc( f, buffer[ *position ] ); /* Not xputc, no tabs (JBV) */ - ++( *position ); - break; - - case '!': - retstruct.type = STRING; - retstruct.width = 1; - ++( *position ); /* JBV */ - return &retstruct; - - case '&': /* JBV */ - retstruct.type = STRING; - retstruct.width = -1; - ++( *position ); - return &retstruct; - - case '\\': - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in get_prnfmt(): found \\" ); - bwb_debug( bwb_ebuf ); -#endif - - retstruct.type = STRING; - ++retstruct.width; - ++( *position ); - for ( ; buffer[ *position ] == ' '; ++( *position ) ) - { - ++retstruct.width; - } - if ( buffer[ *position ] == '\\' ) - { - ++retstruct.width; - ++( *position ); - } - return &retstruct; - case '$': - ++retstruct.width; /* JBV */ - ++( *position ); - retstruct.money = TRUE; - if ( buffer[ *position ] == '$' ) - { - ++retstruct.width; /* JBV */ - ++( *position ); - } - break; - case '*': - ++retstruct.width; /* JBV */ - ++( *position ); - retstruct.fill = '*'; - if ( buffer[ *position ] == '*' ) - { - ++retstruct.width; /* JBV */ - ++( *position ); - } - break; - case '+': - ++( *position ); - retstruct.sign = TRUE; - break; - case '#': - retstruct.type = NUMBER; /* for now */ - /* ++( *position ); */ /* Removed by JBV */ - /* The initial condition shouldn't be retstruct.width = 1 (JBV) */ - for ( ; buffer[ *position ] == '#'; ++( *position ) ) - { - ++retstruct.width; - } - if ( buffer[ *position ] == ',' ) - { - retstruct.commas = TRUE; - ++retstruct.width; /* JBV */ - ++( *position ); /* JBV */ - } - if ( buffer[ *position ] == '.' ) - { - retstruct.type = NUMBER; - ++retstruct.width; - ++( *position ); - for ( retstruct.precision = 0; buffer[ *position ] == '#'; ++( *position ) ) - { - ++retstruct.precision; - ++retstruct.width; - } - } - if ( buffer[ *position ] == '-' ) - { - retstruct.minus = TRUE; - ++( *position ); - } - return &retstruct; - - case '^': - retstruct.type = NUMBER; - retstruct.exponential = TRUE; - for ( retstruct.width = 1; buffer[ *position ] == '^'; ++( *position ) ) - { - ++retstruct.width; - } - return &retstruct; - - default: /* JBV */ - xxputc( f, buffer[ *position ] ); /* Gotta output it (JBV) */ - ++( *position ); - break; - - } - } /* end of loop */ - - return &retstruct; - } - -#endif - -/*************************************************************** - - FUNCTION: prn_cr() - - DESCRIPTION: This function outputs a carriage-return - to a specified file or output device. - -***************************************************************/ - -#if ANSI_C -static int -prn_cr( char *buffer, FILE *f ) -#else -static int -prn_cr( buffer, f ) - char *buffer; - FILE *f; -#endif + loop = TRUE; + while (loop == TRUE) { - register int c; - int loop; - /* find the end of the buffer */ - for ( c = 0; buffer[ c ] != '\0'; ++c ) + switch (buffer[*position]) { - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in prn_cr(): initial c is <%d>", c ); - bwb_debug( bwb_ebuf ); -#endif - - /* back up through any whitespace */ - - loop = TRUE; - while ( loop == TRUE ) - { - switch( buffer[ c ] ) + case ' ': /* end of this format segment */ + xxputc(buffer[*position]); /* Gotta output it (JBV) */ + ++(*position); /* JBV */ + if (retstruct.type != FALSE) { - case ' ': /* if whitespace */ - case '\t': - case 0: - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in prn_cr(): backup: c is <%d>, char <%c>[0x%x]", - c, buffer[ c ], buffer[ c ] ); - bwb_debug( bwb_ebuf ); -#endif - - --c; /* back up */ - if ( c < 0 ) /* check position */ - { - loop = FALSE; - } - break; - - default: /* else break out */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in prn_cr(): breakout: c is <%d>, char <%c>[0x%x]", - c, buffer[ c ], buffer[ c ] ); - bwb_debug( bwb_ebuf ); -#endif - loop = FALSE; - break; + loop = FALSE; /* JBV */ } - } - - if ( buffer[ c ] == ';' ) - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in prn_cr(): concluding <;> detected." ); - bwb_debug( bwb_ebuf ); -#endif - - return FALSE; - } - - else - { - prn_xprintf( f, "\n" ); - return TRUE; - } - - } - -/*************************************************************** - - FUNCTION: prn_xprintf() - - DESCRIPTION: This function outputs a null-terminated - string to a specified file or output - device. - -***************************************************************/ - -#if ANSI_C -int -prn_xprintf( FILE *f, char *buffer ) -#else -int -prn_xprintf( f, buffer ) - FILE *f; - char *buffer; -#endif - { - char *p; - - /* DO NOT try anything so stupid as to run bwb_debug() from - here, because it will create an endless loop. And don't - ask how I know. */ - - for ( p = buffer; *p != '\0'; ++p ) - { - xputc( f, *p ); - } - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: prn_xxprintf() - - DESCRIPTION: This function outputs a null-terminated - string to a specified file or output - device without expanding tabs. - Added by JBV 10/95 - -***************************************************************/ - -#if ANSI_C -int -prn_xxprintf( FILE *f, char *buffer ) -#else -int -prn_xxprintf( f, buffer ) - FILE *f; - char *buffer; -#endif - { - char *p; - - /* DO NOT try anything so stupid as to run bwb_debug() from - here, because it will create an endless loop. And don't - ask how I know. */ - - for ( p = buffer; *p != '\0'; ++p ) - { - xxputc( f, *p ); - } - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: xputc() - - DESCRIPTION: This function outputs a character to a - specified file or output device, expanding - TABbed output approriately. - -***************************************************************/ - -#if ANSI_C -int -xputc( FILE *f, char c ) -#else -int -xputc( f, c ) - FILE *f; - char c; -#endif - { - static int tab_pending = FALSE; - - /*--------------------------------------------------------------------*/ - /* Don't expand tabs if not printing to stdout or stderr (JBV 9/4/97) */ - /*--------------------------------------------------------------------*/ - if (( f != stdout ) && ( f != stderr )) - { - xxputc( f, c ); - return TRUE; - } - - /* check for pending TAB */ - - if ( tab_pending == TRUE ) - { - if ( (int) c < ( * prn_getcol( f ) ) ) + break; + case '\0': /* end of format string */ + *position = -1; + return &retstruct; + case '_': /* print next character as literal */ + ++(*position); + xxputc(buffer[*position]); /* Not xputc, no tabs + * (JBV) */ + ++(*position); + break; + case '!': + retstruct.type = STRING; + retstruct.width = 1; + ++(*position); /* JBV */ + return &retstruct; + case '&': /* JBV */ + retstruct.type = STRING; + retstruct.width = -1; + ++(*position); + return &retstruct; + case '\\': + retstruct.type = STRING; + ++retstruct.width; + ++(*position); + for (; buffer[*position] == ' '; ++(*position)) { - xxputc( f, '\n' ); + ++retstruct.width; } - while( ( * prn_getcol( f )) < (int) c ) + if (buffer[*position] == '\\') { - xxputc( f, ' ' ); + ++retstruct.width; + ++(*position); } - tab_pending = FALSE; - return TRUE; - } - - /* check c for specific output options */ - - switch( c ) - { - case PRN_TAB: - tab_pending = TRUE; - break; - - case '\t': - while( ( (* prn_getcol( f )) % 14 ) != 0 ) - { - xxputc( f, ' ' ); - } - break; - - default: - xxputc( f, c ); - break; - } - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: xxputc() - - DESCRIPTION: This function outputs a character to a - specified file or output device, checking - to be sure the PRINT width is within - the bounds specified for that device. - -***************************************************************/ - -#if ANSI_C -static int -xxputc( FILE *f, char c ) -#else -static int -xxputc( f, c ) - FILE *f; - char c; -#endif - { - - /*--------------------------------------------------------------------*/ - /* Don't check width if not printing to stdout or stderr (JBV 9/4/97) */ - /*--------------------------------------------------------------------*/ - if (( f != stdout ) && ( f != stderr )) - { - return xxxputc( f, c ); - } - - /* check to see if width has been exceeded */ - - if ( * prn_getcol( f ) >= prn_getwidth( f )) - { - xxxputc( f, '\n' ); /* output LF */ - * prn_getcol( f ) = 1; /* and reset */ - } - - /* adjust the column counter */ - - if ( c == '\n' ) - { - * prn_getcol( f ) = 1; - } - else - { - ++( * prn_getcol( f )); - } - - /* now output the character */ - - return xxxputc( f, c ); - - } - -/*************************************************************** - - FUNCTION: xxxputc() - - DESCRIPTION: This function sends a character to a - specified file or output device. - -***************************************************************/ - -#if ANSI_C -static int -xxxputc( FILE *f, char c ) -#else -static int -xxxputc( f, c ) - FILE *f; - char c; -#endif - { - if (( f == stdout ) || ( f == stderr )) - { - return bwx_putc( c ); - } - else - { - return fputc( c, f ); - } - } - -/*************************************************************** - - FUNCTION: prn_getcol() - - DESCRIPTION: This function returns a pointer to an - integer containing the current PRINT - column for a specified file or device. - -***************************************************************/ - -#if ANSI_C -int * -prn_getcol( FILE *f ) -#else -int * -prn_getcol( f ) - FILE *f; -#endif - { - register int n; - static int dummy_pos; - - if (( f == stdout ) || ( f == stderr )) - { - return &prn_col; - } - -#if COMMON_CMDS - for ( n = 0; n < DEF_DEVICES; ++n ) - { - if ( dev_table[ n ].cfp == f ) + return &retstruct; + case '%': + retstruct.type = STRING; + ++retstruct.width; + ++(*position); + for (; buffer[*position] == ' '; ++(*position)) { - return &( dev_table[ n ].col ); + ++retstruct.width; } - } -#endif - - /* search failed */ - -#if PROG_ERRORS - bwb_error( "in prn_getcol(): failed to find file pointer" ); -#else - bwb_error( err_devnum ); -#endif - - return &dummy_pos; - - } - -/*************************************************************** - - FUNCTION: prn_getwidth() - - DESCRIPTION: This function returns the PRINT width for - a specified file or output device. - -***************************************************************/ - -#if ANSI_C -int -prn_getwidth( FILE *f ) -#else -int -prn_getwidth( f ) - FILE *f; -#endif - { - register int n; - - if (( f == stdout ) || ( f == stderr )) - { - return prn_width; - } - -#if COMMON_CMDS - for ( n = 0; n < DEF_DEVICES; ++n ) - { - if ( dev_table[ n ].cfp == f ) + if (buffer[*position] == '%') { - return dev_table[ n ].width; + ++retstruct.width; + ++(*position); } - } -#endif - - /* search failed */ - -#if PROG_ERRORS - bwb_error( "in prn_getwidth(): failed to find file pointer" ); -#else - bwb_error( err_devnum ); -#endif - - return 1; - - } - -/*************************************************************** - - FUNCTION: prn_precision() - - DESCRIPTION: This function returns the level of precision - required for a specified numerical value. - -***************************************************************/ - -#if ANSI_C -int -prn_precision( struct bwb_variable *v ) -#else -int -prn_precision( v ) - struct bwb_variable *v; -#endif - { - int max_precision = 6; - bnumber nval, d; - int r; - - /* check for double value */ - - if ( v->type == NUMBER ) - { - max_precision = 12; - } - - /* get the value in nval */ - - nval = (bnumber) fabs( (double) var_getnval( v ) ); - - /* cycle through until precision is found */ - - d = (bnumber) 1; - for ( r = 0; r < max_precision; ++r ) - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in prn_precision(): fmod( %f, %f ) = %.12f", - nval, d, fmod( (double) nval, (double) d ) ); - bwb_debug( bwb_ebuf ); -#endif - - if ( fmod( (double) nval, (double) d ) < 0.0000001 ) /* JBV */ + return &retstruct; + case '$': + ++retstruct.width; /* JBV */ + ++(*position); + retstruct.money = TRUE; + if (buffer[*position] == '$') { - return r; + ++retstruct.width; /* JBV */ + ++(*position); } - d /= 10; - } - - /* return */ - - return r; - - } - -/*************************************************************** - - FUNCTION: bwb_debug() - - DESCRIPTION: This function is called to display - debugging messages in Bywater BASIC. - It does not break out at the current - point (as bwb_error() does). - -***************************************************************/ - -#if PERMANENT_DEBUG || INTENSIVE_DEBUG - -#if ANSI_C -int -bwb_debug( char *message ) -#else -int -bwb_debug( message ) - char *message; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - - fflush( stdout ); - fflush( errfdevice ); - if ( prn_col != 1 ) - { - prn_xprintf( errfdevice, "\n" ); - } - sprintf( tbuf, "DEBUG %s\n", message ); - prn_xprintf( errfdevice, tbuf ); - - return TRUE; - } -#endif - -#if COMMON_CMDS - -/*************************************************************** - - FUNCTION: bwb_lerror() - - DESCRIPTION: This function implements the BASIC ERROR - command. - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_lerror( struct bwb_line *l ) -#else -struct bwb_line * -bwb_lerror( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - int n; - struct exp_ese *e; /* JBV */ - int pos; /* JBV */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_lerror(): entered function " ); - bwb_debug( bwb_ebuf ); -#endif - - /* Check for argument */ - - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\n': - case '\r': - case ':': - bwb_error( err_incomplete ); - return bwb_zline( l ); - default: break; - } - - /* get the variable name or numerical constant */ - - adv_element( l->buffer, &( l->position ), tbuf ); - /* n = atoi( tbuf ); */ /* Removed by JBV */ - - /* Added by JBV */ - pos = 0; - e = bwb_exp( tbuf, FALSE, &pos ); - n = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_lerror(): error number is <%d> ", n ); - bwb_debug( bwb_ebuf ); -#endif - - /* check the line number value */ - - if ( ( n < 0 ) || ( n >= N_ERRORS )) - { - sprintf( bwb_ebuf, "Error number %d is out of range", n ); - bwb_xerror( bwb_ebuf ); - return bwb_zline( l ); - } - - bwb_xerror( err_table[ n ] ); - - return bwb_zline( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_width() - - DESCRIPTION: This C function implements the BASIC WIDTH - command, setting the maximum output width - for a specified file or output device. - - SYNTAX: WIDTH [# device-number,] number - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_width( struct bwb_line *l ) -#else -struct bwb_line * -bwb_width( l ) - struct bwb_line *l; -#endif - { - int req_devnumber; - int req_width; - struct exp_ese *e; - char tbuf[ MAXSTRINGSIZE + 1 ]; - int pos; - - /* detect device number if present */ - - req_devnumber = -1; - adv_ws( l->buffer, &( l->position ) ); - - if ( l->buffer[ l->position ] == '#' ) - { - ++( l->position ); - adv_element( l->buffer, &( l->position ), tbuf ); - pos = 0; - e = bwb_exp( tbuf, FALSE, &pos ); - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) + case '*': + ++retstruct.width; /* JBV */ + ++(*position); + retstruct.fill = '*'; + if (buffer[*position] == '*') + { + ++retstruct.width; /* JBV */ + ++(*position); + } + break; + case '+': + ++(*position); + retstruct.sign = TRUE; + break; + case '#': + retstruct.type = NUMBER; /* for now */ + /* ++( *position ); *//* Removed by JBV */ + /* The initial condition shouldn't be retstruct.width + * = 1 (JBV) */ + for (; buffer[*position] == '#'; ++(*position)) + { + ++retstruct.width; + } + if (buffer[*position] == ',') + { + retstruct.commas = TRUE; + ++retstruct.width; /* JBV */ + ++(*position); /* JBV */ + } + if (buffer[*position] == '.') { - ++( l->position ); + retstruct.type = NUMBER; + ++retstruct.width; + ++(*position); + for (retstruct.precision = 0; buffer[*position] == '#'; ++(*position)) + { + ++retstruct.precision; + ++retstruct.width; + } } - else + if (buffer[*position] == '-') { -#if PROG_ERRORS - bwb_error( "in bwb_width(): no comma after#n" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); + retstruct.minus = TRUE; + ++(*position); } + return &retstruct; - req_devnumber = (int) exp_getnval( e ); - - /* check the requested device number */ - - if ( ( req_devnumber < 0 ) || ( req_devnumber >= DEF_DEVICES )) + case '^': + retstruct.type = NUMBER; + retstruct.exponential = TRUE; + for (retstruct.width = 1; buffer[*position] == '^'; ++(*position)) { -#if PROG_ERRORS - bwb_error( "in bwb_width(): Requested device number is out of range." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); + ++retstruct.width; } + return &retstruct; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_width(): device number is <%d>", - req_devnumber ); - bwb_debug( bwb_ebuf ); -#endif + default: /* JBV */ + xxputc(buffer[*position]); /* Gotta output it (JBV) */ + ++(*position); + break; } + } /* end of loop */ - /* read the width requested */ + puts("5"); + return &retstruct; +} - e = bwb_exp( l->buffer, FALSE, &( l->position )); - req_width = (int) exp_getnval( e ); - /* check the width */ +/*************************************************************** + + FUNCTION: prn_iprintf() + + DESCRIPTION: This function outputs a null-terminated + string to a specified file or output + device. + +***************************************************************/ - if ( ( req_width < 1 ) || ( req_width > 255 )) - { -#if PROG_ERRORS - bwb_error( "in bwb_width(): Requested width is out of range (1-255)" ); -#else - bwb_error( err_valoorange ); -#endif - } +int +prn_iprintf(char *buffer) +{ + int n; - /* assign the width */ + bwx_DEBUG(__FUNCTION__); - if ( req_devnumber == -1 ) - { - prn_width = req_width; - } - else + if (prn_getwidth() == 0) + { + /* ignore when WIDTH == 0 -- BINARY output */ + while (*buffer) { - dev_table[ req_devnumber ].width = req_width; + xxxputc(*buffer); + buffer++; } - - /* return */ - - return bwb_zline( l ); + return 0; } - -#endif /* COMMON_CMDS */ + /* check to see if width will be exceeded */ + n = prn_getcol() + strlen(buffer) - 1; + if (n > prn_getwidth()) + { + xputc('\n'); + } + /* output the string */ + while (*buffer) + { + xputc(*buffer); + buffer++; + } + return 0; +} /*************************************************************** + + FUNCTION: prn_xxprintf() + + DESCRIPTION: This function outputs a null-terminated + string to a specified file or output + device without expanding tabs. + Added by JBV 10/95 + +***************************************************************/ - FUNCTION: bwb_error() - - DESCRIPTION: This function is called to handle errors - in Bywater BASIC. It displays the error - message, then calls the break_handler() - routine. +static int +prn_xxprintf(char *buffer) +{ + int n; -***************************************************************/ + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -int -bwb_error( char *message ) -#else -int -bwb_error( message ) - char *message; -#endif + if (prn_getwidth() == 0) + { + /* ignore when WIDTH == 0 -- BINARY output */ + while (*buffer) + { + xxxputc(*buffer); + buffer++; + } + return 0; + } + /* check to see if width will be exceeded */ + n = prn_getcol() + strlen(buffer) - 1; + if (n > prn_getwidth()) + { + xxputc('\n'); + } + /* output the string */ + while (*buffer) { - register int e; - static char tbuf[ MAXSTRINGSIZE + 1 ]; /* must be permanent */ - static struct bwb_line eline; - int save_elevel; - struct bwb_line *cur_l; - int cur_mode; + xxputc(*buffer); + buffer++; + } + return 0; +} + +/*************************************************************** + + FUNCTION: xputc() + + DESCRIPTION: This function outputs a character to a + specified file or output device, expanding + TABbed output approriately. + +***************************************************************/ - /* try to find the error message to identify the error number */ +static int +xputc(char c) +{ + static char CHR_pending = FALSE; - err_number = -1; /* just for now */ - err_line = CURTASK number; /* set error line number */ + bwx_DEBUG(__FUNCTION__); - for ( e = 0; e < N_ERRORS; ++e ) + if (prn_getwidth() == 0) + { + /* ignore when WIDTH == 0 -- BINARY output */ + xxxputc(c); + return 0; + } + /* check for pending SPC */ + if (CHR_pending == PRN_SPC) + { + /* 190 PRINT SPC(A);"X" ' A = 0...255 */ + int i; + for (i = 0; i < c; i++) + { + xxputc(' '); + } + CHR_pending = FALSE; + return TRUE; + } + /* check for pending TAB */ + if (CHR_pending == PRN_TAB) + { + /* WIDTH 80 */ + while (c > prn_getwidth()) + { + /* If n is greater than the margin m, then n is + * reduced by an integral multiple of m so that it is + * in the range 1 <= n <= m; */ + c -= prn_getwidth(); + } + /* 190 PRINT TAB(A);"X" ' A = 0 */ + if (c == 0) + { + /* use the value of one */ + c = 1; + /* continue processing */ + } + if ((int) c < prn_getcol()) { - if ( message == err_table[ e ] ) /* set error number */ + xxputc('\n'); + } + while (prn_getcol() < (int) c) + { + xxputc(' '); + } + CHR_pending = FALSE; + return TRUE; + } + /* check for specific output options */ + switch (c) + { + case PRN_SPC: + case PRN_TAB: + CHR_pending = c; + break; + case '\t': + { + int LastZoneColumn; + LastZoneColumn = 1; + while (LastZoneColumn < prn_getwidth()) { - err_number = e; - e = N_ERRORS; /* break out of loop quickly */ + LastZoneColumn += ZONEWIDTH; } - } + LastZoneColumn -= ZONEWIDTH; - /* set the position in the current line to the end */ - - while( is_eol( bwb_l->buffer, &( bwb_l->position ) ) != TRUE ) - { - ++( bwb_l->position ); + if (prn_getcol() >= LastZoneColumn) + { + /* advance to a new line */ + xxputc('\n'); + } + else + { + /* advance to the next print zone */ + if ((prn_getcol() % ZONEWIDTH) == 1) + { + xxputc(' '); + } + while ((prn_getcol() % ZONEWIDTH) != 1) + { + xxputc(' '); + } + } } + break; + default: + xxputc(c); + break; + } + return 0; +} + +/*************************************************************** + + FUNCTION: xxputc() + + DESCRIPTION: This function outputs a character to a + specified file or output device, checking + to be sure the PRINT width is within + the bounds specified for that device. + +***************************************************************/ - /* if err_gosubl is not set, then use xerror routine */ +static int +xxputc(char c) +{ + bwx_DEBUG(__FUNCTION__); - if ( strlen( err_gosubl ) == 0 ) + if (prn_getwidth() == 0) + { + /* ignore when WIDTH == 0 -- BINARY output */ + xxxputc(c); + return 0; + } + /* check to see if width has been exceeded */ + if (c != '\n') + { + /* REM this should print one line, not two lines WIDTH 80 + * PRINT SPACE$( 80 ) */ + if (prn_getcol() > prn_getwidth()) { - return bwb_xerror( message ); + xxxputc('\n'); /* output LF */ } + } + /* output the character */ + xxxputc(c); -#if INTENSIVE_DEBUG - fprintf( stderr, "!!!!! USER_CALLED ERROR HANDLER\n" ); -#endif + return 0; +} + +/*************************************************************** + + FUNCTION: xxxputc() + + DESCRIPTION: This function sends a character to a + specified file or output device. + +***************************************************************/ - /* save line and mode */ - cur_l = bwb_l; - cur_mode = CURTASK excs[ CURTASK exsc ].code; +static int +xxxputc(char c) +{ + bwx_DEBUG(__FUNCTION__); - /* err_gosubl is set; call user-defined error subroutine */ + if (FileNumber == CONSOLE_FILE_NUMBER) + { + bwx_PRINT(c); + } + else + if (FileNumber == LPRINT_FILE_NUMBER) + { + bwx_LPRINT(c); + if (c == '\n' && LPRINT_WIDTH > 0 && LPRINT_NULLS > 0) + { + int i; + for (i = 0; i < LPRINT_NULLS; i++) + { + bwx_LPRINT(0); + } + } + } + else + { + fputc(c, dev_table[FileNumber].cfp); + } + /* update current column position */ + if (prn_getwidth() == 0) + { + /* ignore when WIDTH == 0 -- BINARY output */ + prn_setcol(1); + } + else + if (c == '\n') + { + prn_setcol(1); + } + else + { + prn_setcol(prn_getcol() + 1); + } + return 0; +} - sprintf( tbuf, "%s %s", CMD_GOSUB, err_gosubl ); - eline.next = &CURTASK bwb_end; - eline.position = 0; - eline.marked = FALSE; - eline.buffer = tbuf; - bwb_setexec( &eline, 0, EXEC_NORM ); +/*************************************************************** + + FUNCTION: prn_getcol() + + DESCRIPTION: This function returns a pointer to an + integer containing the current PRINT + column for a specified file or device. + +***************************************************************/ - /* must be executed now */ +static +int +prn_getcol() +{ - save_elevel = CURTASK exsc; - bwb_execline(); /* This is a call to GOSUB and will increment - the exsc counter above save_elevel */ + bwx_DEBUG(__FUNCTION__); - while ( CURTASK exsc != save_elevel ) /* loop until return from GOSUB loop */ - { - bwb_execline(); - } + if (FileNumber == LPRINT_FILE_NUMBER) + { + return LPRINT_COLUMN; + } + return dev_table[FileNumber].col; - cur_l->next->position = 0; - bwb_setexec( cur_l->next, 0, cur_mode ); +} - return TRUE; +static int +prn_setcol(int NewValue) +{ + bwx_DEBUG(__FUNCTION__); + if (FileNumber == LPRINT_FILE_NUMBER) + { + LPRINT_COLUMN = NewValue; + return 0; } + dev_table[FileNumber].col = NewValue; + return 0; -/*************************************************************** +} - FUNCTION: bwb_xerror() +int +ResetConsoleColumn() +{ + bwx_DEBUG(__FUNCTION__); - DESCRIPTION: This function is called by bwb_error() - in Bywater BASIC. It displays the error - message, then calls the break_handler() - routine. + dev_table[CONSOLE_FILE_NUMBER].col = 1; /* reset column */ + return 0; +} +/*************************************************************** + + FUNCTION: prn_getwidth() + + DESCRIPTION: This function returns the PRINT width for + a specified file or output device. + ***************************************************************/ -#if ANSI_C -static int -bwb_xerror( char *message ) -#else -static int -bwb_xerror( message ) - char *message; -#endif +static +int +prn_getwidth() +{ + bwx_DEBUG(__FUNCTION__); + + if (FileNumber == LPRINT_FILE_NUMBER) { + return LPRINT_WIDTH; + } + return dev_table[FileNumber].width; - bwx_errmes( message ); +} - break_handler(); +/*************************************************************** + + FUNCTION: prn_precision() + + DESCRIPTION: This function returns the level of precision + required for a specified numerical value. + +***************************************************************/ - return FALSE; - } +int +prn_precision(struct bwb_variable * v) +{ + int max_precision = 6; + BasicNumberType nval, d; + int r; -/*************************************************************** + bwx_DEBUG(__FUNCTION__); - FUNCTION: bwb_esetovar() + /* check for numeric value */ - DESCRIPTION: This function converts the value in expression - stack 'e' to a bwBASIC variable structure. + if (v->type == NUMBER) + { + max_precision = 12; + } + /* get the value in nval */ -***************************************************************/ + nval = fabs(var_getnval(v)); -#if ANSI_C -static struct bwb_variable * -bwb_esetovar( struct exp_ese *e ) -#else -static struct bwb_variable * -bwb_esetovar( e ) - struct exp_ese *e; -#endif + /* cycle through until precision is found */ + + d = 1; + for (r = 0; r < max_precision; ++r) { - static struct bwb_variable b; - var_make( &b, e->type ); - switch( e->type ) + if (fmod(nval, d) < 0.0000001) /* JBV */ { - case STRING: - str_btob( var_findsval( &b, b.array_pos ), exp_getsval( e ) ); - break; - default: - * var_findnval( &b, b.array_pos ) = e->nval; - break; + return r; } - - return &b; - + d /= 10; } -#if COMMON_CMDS + /* return */ -/*************************************************************** + return r; - FUNCTION: bwb_write() +} - DESCRIPTION: This C function implements the BASIC WRITE - command. - SYNTAX: WRITE [# device-number,] element [, element ].... +/*************************************************************** + + FUNCTION: bwb_write() + + DESCRIPTION: This C function implements the BASIC WRITE + command. + + SYNTAX: WRITE [# device-number,] element [, element ].... + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_write( struct bwb_line *l ) -#else struct bwb_line * -bwb_write( l ) - struct bwb_line *l; +bwb_WRITE(struct bwb_line * l) +{ + static int pos; + static char *s_buffer; /* small, temporary buffer */ + static int init = FALSE; + int loop; +#if 0 + struct bwb_variable nvar; #endif - { - struct exp_ese *e; - int req_devnumber; - int pos; - FILE *fp; - char tbuf[ MAXSTRINGSIZE + 1 ]; - int loop; - static struct bwb_variable nvar; - static int init = FALSE; + char *tbuf; - /* initialize variable if necessary */ + bwx_DEBUG(__FUNCTION__); - if ( init == FALSE ) - { + /* initialize buffers if necessary */ + + if (init == FALSE) + { init = TRUE; - var_make( &nvar, NUMBER ); + + /* Revised to CALLOC pass-thru call by JBV */ + if ((s_buffer = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_write")) == NULL) + { + bwb_error("in bwb_writw(): failed to get memory for s_buffer"); + return bwb_zline(l); } + } + FileNumber = CONSOLE_FILE_NUMBER; - /* detect device number if present */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == '#' ) - { - ++( l->position ); - adv_element( l->buffer, &( l->position ), tbuf ); - pos = 0; - e = bwb_exp( tbuf, FALSE, &pos ); - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) - { - ++( l->position ); - } - else - { -#if PROG_ERRORS - bwb_error( "in bwb_write(): no comma after#n" ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } - req_devnumber = (int) exp_getnval( e ); + adv_ws(l->buffer, &(l->position)); - /* check the requested device number */ + if (l->buffer[l->position] == BasicFileNumberPrefix) + { + struct exp_ese *v; + int UserFileNumber; - if ( ( req_devnumber < 0 ) || ( req_devnumber >= DEF_DEVICES )) - { -#if PROG_ERRORS - bwb_error( "in bwb_write(): Requested device number is out of range." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } - if (( dev_table[ req_devnumber ].mode == DEVMODE_CLOSED ) || - ( dev_table[ req_devnumber ].mode == DEVMODE_AVAILABLE )) - { -#if PROG_ERRORS - bwb_error( "in bwb_write(): Requested device number is not open." ); -#else - bwb_error( err_devnum ); -#endif - return bwb_zline( l ); - } + ++(l->position); + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), s_buffer); + pos = 0; + v = bwb_exp(s_buffer, FALSE, &pos); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ',') + { + ++(l->position); + } + else + { + bwb_error("in bwb_write(): no comma after #n"); + return bwb_zline(l); + } - if ( dev_table[ req_devnumber ].mode != DEVMODE_OUTPUT ) + UserFileNumber = exp_getival(v); + /* check the requested device number */ + if (UserFileNumber < 0) + { + /* * PRINTER, CASSETTE, etc. * These are all sent to * + * bwx_LPRINT */ + FileNumber = LPRINT_FILE_NUMBER; + } + else + if (UserFileNumber > BasicFileNumberMax) + { + bwb_error("in bwb_write(): Requested device number is out of range."); + return bwb_zline(l); + } + else + { + FileNumber = (BasicFileNumberType) UserFileNumber; + if ((dev_table[FileNumber].mode & DEVMODE_WRITE) == 0) { -#if PROG_ERRORS - bwb_error( "in bwb_write(): Requested device is not open for OUTPUT." ); -#else - bwb_error( err_devnum ); -#endif - - return bwb_zline( l ); + bwb_error("in bwb_write(): Requested device is not open for writing"); + return bwb_zline(l); } + } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_write(): device number is <%d>", - req_devnumber ); - bwb_debug( bwb_ebuf ); -#endif - /* look up the requested device in the device table */ - fp = dev_table[ req_devnumber ].cfp; - } - else - { - fp = stdout; - } + } + tbuf = s_buffer; /* be sure there is an element to print */ - adv_ws( l->buffer, &( l->position ) ); + adv_ws(l->buffer, &(l->position)); loop = TRUE; - switch( l->buffer[ l->position ] ) - { - case '\n': - case '\r': - case '\0': - case ':': - loop = FALSE; - break; - } + switch (l->buffer[l->position]) + { + case '\0': + loop = FALSE; + break; + } /* loop through elements */ - while ( loop == TRUE ) - { + while (loop == TRUE) + { + struct exp_ese *e; /* get the next element */ - e = bwb_exp( l->buffer, FALSE, &( l->position )); - + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } /* perform type-specific output */ - switch( e->type ) - { - case STRING: - xputc( fp, '\"' ); - str_btoc( tbuf, exp_getsval( e ) ); - prn_xprintf( fp, tbuf ); - xputc( fp, '\"' ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_write(): output string element <\"%s\">", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - break; - default: - * var_findnval( &nvar, nvar.array_pos ) = - exp_getnval( e ); -#if NUMBER_DOUBLE - sprintf( tbuf, " %.*lf", prn_precision( &nvar ), - var_getnval( &nvar ) ); -#else - sprintf( tbuf, " %.*f", prn_precision( &nvar ), - var_getnval( &nvar ) ); -#endif - prn_xprintf( fp, tbuf ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_write(): output numerical element <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - break; - } /* end of case for type-specific output */ + switch (e->type) + { + case STRING: + xputc('\"'); + str_btoc(tbuf, exp_getsval(e)); + prn_iprintf(tbuf); + xputc('\"'); + break; + default: +#if 0 + *var_findnval(&nvar, nvar.array_pos) = + exp_getnval(e); + sprintf(tbuf, " %.*f", prn_precision(&nvar), + var_getnval(&nvar)); +#endif + BasicNumerc(exp_getnval(e), tbuf); + prn_iprintf(tbuf); + break; + } /* end of case for type-specific output */ /* seek a comma at end of element */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] == ',' ) - { - xputc( fp, ',' ); - ++( l->position ); - } - + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ',') + { + xputc(','); + ++(l->position); + } /* no comma: end the loop */ else - { + { loop = FALSE; - } + } - } /* end of loop through elements */ + } /* end of loop through elements */ /* print LF */ - xputc( fp, '\n' ); + xputc('\n'); /* return */ - return bwb_zline( l ); - } + return bwb_zline(l); +} -#endif +/* EOF */ diff --git a/bwb_stc.c b/bwb_stc.c index 21f4917..b89b90a 100644 --- a/bwb_stc.c +++ b/bwb_stc.c @@ -1,2306 +1,723 @@ /*************************************************************** - + bwb_stc.c Commands Related to Structured Programming for Bywater BASIC Interpreter - - Commands: CALL - SUB - FUNCTION - END SUB - END FUNCTION - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include + #include "bwbasic.h" -#include "bwb_mes.h" -/* prototypes */ -#if ANSI_C -static int fslt_clear( void ); -static int fslt_add( struct bwb_line *line, int *position, int code ); -static struct bwb_line *fslt_findl( char *buffer ); -static struct fslte *fslt_findf( char *buffer ); -static int scan_getcmd( struct bwb_line *line, int *position ); -static int scan_readargs( struct fslte *f, - struct bwb_line *line, int *position ); -static int call_readargs( struct fslte *f, - char *expression, int *position ); -static int is_endsub( struct bwb_line *l ); -static struct bwb_line *find_endsub( struct bwb_line *l ); -static struct bwb_line *bwb_loopuntil( struct bwb_line *l ); -struct bwb_variable *bwb_vtov( struct bwb_variable *dst, struct bwb_variable *src ); -struct bwb_variable *bwb_etov( struct bwb_variable *dst, struct exp_ese *src ); -struct bwb_variable *var_pos( struct bwb_variable *firstvar, int p ); -int fslt_addcallvar( struct bwb_variable *v ); -int fslt_addlocalvar( struct fslte *f, struct bwb_variable *v ); -#else -static int fslt_clear(); -static int fslt_add(); -static struct bwb_line *fslt_findl(); -static struct fslte *fslt_findf(); -static int scan_getcmd(); -static int scan_readargs(); -static int call_readargs(); -static int is_endsub(); -static struct bwb_line *find_endsub(); -static struct bwb_line *bwb_loopuntil(); -struct bwb_variable *bwb_vtov(); -struct bwb_variable *bwb_etov(); -struct bwb_variable *var_pos(); -int fslt_addcallvar(); -int fslt_addlocalvar(); -#endif /* ANSI_C for prototypes */ -/*************************************************************** - FUNCTION: bwb_scan() +/* prototypes */ - DESCRIPTION: This function scans all lines of the - program in memory and creates a FUNCTION- - SUB lookup table (fslt) for the program. +static int +fslt_clear(void); +static int +scan_readargs(struct fslte * f, + struct bwb_line * line, int *position); +struct bwb_variable * +bwb_etov(struct bwb_variable * dst, struct exp_ese * src); +int +fslt_addlocalvar(struct fslte * f, struct bwb_variable * v); +/*************************************************************** + + FUNCTION: bwb_scan() + + DESCRIPTION: This function scans all lines of the + program in memory and creates a FUNCTION- + SUB lookup table (fslt) for the program. + ***************************************************************/ -#if ANSI_C int -bwb_scan( void ) -#else -int -bwb_scan() -#endif - { +bwb_scan(void) +{ struct bwb_line *current; - int position; - int c; + int Indention = 0; -#if PROG_ERRORS - if ( CURTASK rescan != TRUE ) - { - bwb_error( "in bwb_scan(): call to scan while CURTASK rescan != TRUE" ); + bwx_DEBUG(__FUNCTION__); + + + /* int position; */ + + if (CURTASK rescan != TRUE) + { return FALSE; - } -#endif + } + /* program needs to be scanned again, because a line was added or + * deleted */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_scan(): beginning scan..." ); - bwb_debug( bwb_ebuf ); -#endif - /* first run through the FUNCTION - SUB loopkup table - and free any existing memory */ + + /* first run through the FUNCTION - SUB loopkup table and free any + * existing memory */ fslt_clear(); - /* run through the list of lines and identify SUB and FUNCTION statements */ - for ( current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next ) - { + for (current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next) + { + current->OtherLine = NULL; + } + /* run through the list of lines and identify SUB and FUNCTION + * statements */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_scan(): scanning line <%d>", current->number ); - bwb_debug( bwb_ebuf ); -#endif + for (current = CURTASK bwb_start.next; current != &CURTASK bwb_end; current = current->next) + { - c = scan_getcmd( current, &position ); - if ( c == getcmdnum( CMD_SUB )) - { - fslt_add( current, &position, EXEC_CALLSUB ); - } - else if ( c == getcmdnum( CMD_FUNCTION )) - { - fslt_add( current, &position, EXEC_FUNCTION ); - } - else if ( c == getcmdnum( CMD_DEF )) - { - fslt_add( current, &position, EXEC_FUNCTION ); - } -#if STRUCT_CMDS - else if ( c == getcmdnum( CMD_LABEL )) - { - fslt_add( current, &position, EXEC_LABEL ); - } -#endif + /* position = current->Startpos; */ + switch (current->cmdnum) + { + case C_DEF: + case C_FUNCTION: + case C_SUB: + case C_USER_LBL: + fslt_add(current); + case C_DO: + case C_DO_WHILE: + case C_DO_UNTIL: + case C_WHILE: + case C_UNTIL: + case C_FOR: + case C_IF: + case C_SELECT_CASE: + find_BottomLineInCode(current); + break; + } + + switch (current->cmdnum) + { + case C_NEXT: + case C_LOOP: + case C_LOOP_UNTIL: + case C_LOOP_WHILE: + case C_UEND: + case C_WEND: + case C_ELSEIF: + case C_ELSE: + case C_END_IF: + case C_CASE: + case C_CASE_IF: + case C_CASE_IS: + case C_CASE_ELSE: + case C_END_SELECT: + case C_END_SUB: + case C_END_FUNCTION: + Indention--; + break; + } + if (Indention < 0) + { + Indention = 0; + } + current->Indention = Indention; + switch (current->cmdnum) + { + case C_FOR: + case C_DO: + case C_DO_UNTIL: + case C_DO_WHILE: + case C_UNTIL: + case C_WHILE: + case C_IF_THEN: + case C_ELSEIF: + case C_ELSE: + case C_SELECT_CASE: + case C_CASE: + case C_CASE_IF: + case C_CASE_IS: + case C_CASE_ELSE: + case C_FUNCTION: + case C_SUB: + Indention++; + break; } + } + /* return */ - CURTASK rescan = FALSE; + CURTASK rescan = FALSE; return TRUE; - } +} /*************************************************************** - + FUNCTION: fslt_clear() - - DESCRIPTION: This C function clears all existing memory - in the FUNCTION-SUB lookup table. - + + DESCRIPTION: This C function clears all existing memory + in the FUNCTION-SUB lookup table. + ***************************************************************/ -#if ANSI_C -static int -fslt_clear( void ) -#else static int -fslt_clear() -#endif - { - struct fslte *current, *next; +fslt_clear(void) +{ + struct fslte *current, *next; struct bwb_variable *c, *n; + bwx_DEBUG(__FUNCTION__); + /* run through table and clear memory */ next = CURTASK fslt_start.next; - for ( current = CURTASK fslt_start.next; current != &CURTASK fslt_end; - current = next ) - { + for (current = CURTASK fslt_start.next; current != &CURTASK fslt_end; + current = next) + { /* check for local variables and free them */ c = current->local_variable; - while ( c != NULL ) - { + while (c != NULL) + { n = c->next; /* Revised to FREE pass-thru call by JBV */ - FREE( c, "fslt_clear" ); + FREE(c, "fslt_clear"); c = n; - } + } next = current->next; /* Revised to FREE pass-thru calls by JBV */ if (current->name != NULL) { - FREE( current->name, "fslt_clear" ); /* JBV */ - current->name = NULL; /* JBV */ - } - FREE( current, "fslt_clear" ); - current = NULL; /* JBV */ + FREE(current->name, "fslt_clear"); /* JBV */ + current->name = NULL; /* JBV */ } + FREE(current, "fslt_clear"); + current = NULL; /* JBV */ + } /* reset linkage */ - CURTASK fslt_start.next = &CURTASK fslt_end; + CURTASK fslt_start.next = &CURTASK fslt_end; return TRUE; - } +} -/*************************************************************** - FUNCTION: scan_getcmd() +/*************************************************************** + + FUNCTION: fslt_add() + + DESCRIPTION: This C function adds an entry to the + FUNCTION-SUB lookup table. + +***************************************************************/ - DESCRIPTION: This command returns the command number - for the first BASIC command word encountered - in a line. +int +fslt_add(struct bwb_line * line /* , int *position , int code */ ) +{ + char tbuf[BasicStringLengthMax + 1]; + char *name; + struct fslte *f, *n; + int p; + int *position; + position = &p; + p = line->Startpos; + + bwx_DEBUG(__FUNCTION__); -***************************************************************/ + /* get the element for name */ -#if ANSI_C -static int -scan_getcmd( struct bwb_line *line, int *position ) -#else -static int -scan_getcmd( line, position ) - struct bwb_line *line; - int *position; -#endif + if ( /* code == EXEC_LABEL */ line->cmdnum == C_USER_LBL) + { + p = 0; + scan_element(line->buffer, &p, tbuf); + tbuf[strlen(tbuf) - 1] = '\0'; /* remove trailing colon */ + } + else { - char tbuf[ MAXSTRINGSIZE + 1 ]; + adv_ws(line->buffer, position); + exp_getvfname(&(line->buffer[*position]), tbuf); + *position += strlen(tbuf); + } - *position = 0; - adv_ws( line->buffer, position ); - /* check for NULL line */ + /* get memory for name buffer */ - if ( line->buffer[ *position ] == '\0' ) - { - return -1; - } + /* Revised to CALLOC pass-thru call by JBV */ + if ((name = CALLOC(1, strlen(tbuf) + 1, "fslt_add")) == NULL) + { + bwb_error("in fslt_add(): failed to get memory for name buffer"); + return FALSE; + } + strcpy(name, tbuf); - /* check for line number and advance beyond it */ + /* get memory for fslt structure */ - if ( isdigit( line->buffer[ *position ] )) - { - scan_element( line->buffer, position, tbuf ); - } + if ((f = CALLOC(1, sizeof(struct fslte), "fslt_add")) == NULL) + { + bwb_error("in fslt_add(): failed to get memory for fslt structure"); + return FALSE; + } + /* fill in structure */ - /* get the command element in the buffer */ + f->line = line; + f->name = name; + f->local_variable = NULL; + f->ParameterCount = 0; /* 0..32, 255 == VARIAMT */ + f->ParameterTypes = 0; /* bit 0 is first parameter */ - scan_element( line->buffer, position, tbuf ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in scan_getcmd(): scanning element <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif -#if STRUCT_CMDS - if ( is_label( tbuf ) == TRUE ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in scan_getcmd(): found label <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - return getcmdnum( CMD_LABEL ); - } -#endif - bwb_strtoupper( tbuf ); + /* read arguments */ - /* return command number */ + adv_ws(line->buffer, position); - return getcmdnum( tbuf ); + f->startpos = *position; - } -/*************************************************************** - FUNCTION: scan_element() + if (line->buffer[*position] == '(') + { + scan_readargs(f, line, position); + } + /* establish linkages */ - DESCRIPTION: This function reads characters in - beginning at and advances past a - line element, incrementing appropri- - ately and returning the line element in - . + n = CURTASK fslt_start.next; + CURTASK fslt_start.next = f; + f->next = n; - This function is almost identical to adv_element(), - but it will not stop at a full colon. This is - necessary to detect a label in the first element - position. If MULTISEG_LINES is defined as TRUE, - adv_element() will stop at the colon, interpreting - it as the end-of-segment marker. -***************************************************************/ -#if ANSI_C -extern int -scan_element( char *buffer, int *pos, char *element ) -#else -int -scan_element( buffer, pos, element ) - char *buffer; - int *pos; - char *element; -#endif - { - int loop; /* control loop */ - int e_pos; /* position in element buffer */ - int str_const; /* boolean: building a string constant */ + fnc_add_deffn(f); - /* advance beyond any initial whitespace */ - adv_ws( buffer, pos ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in adv_element(): receieved <%s>.", &( buffer[ *pos ] )); - bwb_debug( bwb_ebuf ); -#endif + return TRUE; - /* now loop while building an element and looking for an - element terminator */ +} - loop = TRUE; - e_pos = 0; - element[ e_pos ] = '\0'; - str_const = FALSE; +/*************************************************************** + + FUNCTION: scan_readargs() + + DESCRIPTION: This C function reads arguments (variable + names for an entry added to the FUNCTION- + SUB lookup table. + +***************************************************************/ - while ( loop == TRUE ) - { - switch( buffer[ *pos ] ) - { - case ',': /* element terminators */ - case ';': - case '=': - case ' ': - case '\t': - case '\0': - case '\n': - case '\r': - if ( str_const == TRUE ) - { - element[ e_pos ] = buffer[ *pos ]; - ++e_pos; - ++( *pos ); - element[ e_pos ] = '\0'; - } - else - { - return TRUE; - } - break; - - case '\"': /* string constant */ - element[ e_pos ] = buffer[ *pos ]; - ++e_pos; - ++( *pos ); - element[ e_pos ] = '\0'; - if ( str_const == TRUE ) /* termination of string constant */ - { - return TRUE; - } - else /* beginning of string constant */ - { - str_const = TRUE; - } - break; - - case '(': /* MID$ command termination (JBV) */ - /* If MID$ is here, get out */ - if (strcmp(element, CMD_MID) == 0) - return TRUE; - - /* else add it to the accumulation element */ - element[ e_pos ] = buffer[ *pos ]; - ++e_pos; - ++( *pos ); - element[ e_pos ] = '\0'; - break; - - default: - element[ e_pos ] = buffer[ *pos ]; - ++e_pos; - ++( *pos ); - element[ e_pos ] = '\0'; - break; - } - } +static int +scan_readargs(struct fslte * f, struct bwb_line * line, int *position) +{ + int control_loop; + struct bwb_variable *v; + char tbuf[BasicStringLengthMax + 1]; - /* This should not happen */ + bwx_DEBUG(__FUNCTION__); - return FALSE; + f->ParameterCount = 0; /* 0..254, 255 == ... */ + f->ParameterTypes = 0; /* bit 0 is first parameter */ - } -/*************************************************************** + /* if we are at begin paren, advance */ - FUNCTION: fslt_add() + if (line->buffer[*position] == '(') + { + ++(*position); + } + /* loop through looking for arguments */ - DESCRIPTION: This C function adds an entry to the - FUNCTION-SUB lookup table. + control_loop = TRUE; + adv_ws(line->buffer, position); -***************************************************************/ -#if ANSI_C -static int -fslt_add( struct bwb_line *line, int *position, int code ) -#else -static int -fslt_add( line, position, code ) - struct bwb_line *line; - int *position; - int code; -#endif + if (strncasecmp(&(line->buffer[*position]), "...", 3) == 0) + { + /* FUNCTION FRED( ... ) */ + (*position) += 3; + adv_ws(line->buffer, position); + if (line->buffer[*position] == ')') + { + f->ParameterCount = 0xFF; /* VARIANT */ + f->ParameterTypes = 0; + ++(*position); + f->startpos = *position; + return TRUE; + } + bwb_error(err_syntax); + return FALSE; + } + while (control_loop == TRUE) { - char tbuf[ MAXSTRINGSIZE + 1 ]; - char *name; - struct bwb_variable *v; - struct fslte *f, *n; - int p; - /* get the element for name */ - if ( code == EXEC_LABEL ) + if (line->buffer[*position] == '\0' || line->buffer[*position] == OptionCommentChar) { - p = 0; - scan_element( line->buffer, &p, tbuf ); - if ( isdigit( tbuf[ 0 ] )) - { - scan_element( line->buffer, &p, tbuf ); - } - tbuf[ strlen( tbuf ) - 1 ] = '\0'; + /* premature end of line */ + control_loop = FALSE; + f->startpos = *position; + bwb_error(err_syntax); + return FALSE; } - else + switch (line->buffer[*position]) { - adv_ws( line->buffer, position ); - exp_getvfname( &( line->buffer[ *position ] ), tbuf ); - *position += strlen( tbuf ); - } + case ')': /* end of argument list */ + ++(*position); + control_loop = FALSE; + f->startpos = *position; + return TRUE; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fslt_add(): adding SUB/FUNCTION/LABEL code <%d> name <%s>", - code, tbuf ); - bwb_debug( bwb_ebuf ); -#endif - /* get memory for name buffer */ + case '=': /* end of NO argument list */ + control_loop = FALSE; + f->startpos = *position; + return TRUE; - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( name = CALLOC( 1, strlen( tbuf ) + 1, "fslt_add" ) ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in fslt_add(): failed to get memory for name buffer" ); -#else - bwb_error( err_getmem ); -#endif - return FALSE; - } - strcpy( name, tbuf ); + default: /* presume beginning of argument == variable + * name */ - /* get memory for fslt structure */ + exp_getvfname(&(line->buffer[*position]), tbuf); + *position += strlen(tbuf); - if ( ( f = CALLOC( 1, sizeof( struct fslte ), "fslt_add" ) ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in fslt_add(): failed to get memory for fslt structure" ); -#else - bwb_error( err_getmem ); -#endif - return FALSE; - } - /* fill in structure */ + /* initialize the variable and add it to local chain */ - f->line = line; - f->name = name; - f->code = code; - f->local_variable = NULL; + v = var_new(tbuf); + fslt_addlocalvar(f, v); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fslt_add(): current buffer <%s>", - &( line->buffer[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + /* advance past the comma */ - /* read arguments */ + if (line->buffer[*position] == ',') + { + ++(*position); + } + if (f->ParameterCount > 32) + { + /* should have been declared VARIANT */ + bwb_error(err_syntax); + return FALSE; + } + else + { + if (v->type == STRING) + { + f->ParameterTypes |= (1 << f->ParameterCount); + } + f->ParameterCount++; /* 0..32, 255 == VARIANT */ + } - adv_ws( line->buffer, position ); - if ( line->buffer[ *position ] == '(' ) - { - scan_readargs( f, line, position ); + break; } - /* if function, add one more local variable expressing the name - of the function */ + adv_ws(line->buffer, position); + } - if ( code == EXEC_FUNCTION ) - { + return TRUE; - v = var_new( tbuf ); - fslt_addlocalvar( f, v ); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fslt_add(): added function-name variable <%s>", - v->name ); - bwb_debug( bwb_ebuf ); - getchar(); -#endif - } +/*************************************************************** + + FUNCTION: bwb_def() + + DESCRIPTION: This C function implements the BASIC + DEF statement. Since DEF and FUNCTION + are equivalent, it simply passes execution + to bwb_function(). + + SYNTAX: DEF FNname(arg...)] = expression + + NOTE: It is not a strict requirement that the + function name should begin with "FN". + +***************************************************************/ - /* establish linkages */ +struct bwb_line * +bwb_DEF(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - n = CURTASK fslt_start.next; - CURTASK fslt_start.next = f; - f->next = n; + /* this line will be executed by fnc_deffn() in bwb_fnc.c */ + adv_eos(l->buffer, &(l->position)); + + return bwb_zline(l); +} - return TRUE; - } /*************************************************************** + + FUNCTION: bwb_call() + + DESCRIPTION: This C function implements the BASIC + CALL subroutine command. + + SYNTAX: CALL subroutine-name + +***************************************************************/ - FUNCTION: scan_readargs() +struct bwb_line * +bwb_CALL(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + + /* Call the expression interpreter to evaluate the function */ + + /* prn_xprintf(Buffer); */ + bwb_exp(l->buffer, FALSE, &l->position); + if (ERROR_PENDING) + { + /* prn_xprintf("oops"); */ + } + adv_eos(l->buffer, &(l->position)); + return bwb_zline(l); +#if 0 + return bwb_DEF_SUB(l); +#endif +} - DESCRIPTION: This C function reads arguments (variable - names for an entry added to the FUNCTION- - SUB lookup table. +/*************************************************************** + + FUNCTION: find_label() + + DESCRIPTION: This C function finds a program line that + begins with the label included in . + ***************************************************************/ -#if ANSI_C -static int -scan_readargs( struct fslte *f, struct bwb_line *line, int *position ) -#else -static int -scan_readargs( f, line, position ) - struct fslte *f; - struct bwb_line *line; - int *position; -#endif - { - int control_loop; - struct bwb_variable *v; - char tbuf[ MAXSTRINGSIZE + 1 ]; +struct bwb_line * +find_label(char *buffer) +{ + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in scan_readargs(): reading arguments, buffer <%s>", - &( line->buffer[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + while (*buffer == ' ') + buffer++; - /* if we are at begin paren, advance */ - if ( line->buffer[ *position ] == '(' ) + if (*buffer == 0) + { + bwb_error(err_noln); + } + else + if (isdigit(*buffer)) + { + /* LINE NUMBER */ + int number; + number = atoi(buffer); + if (number > 0) { - ++( *position ); + struct bwb_line *x; + for (x = &CURTASK bwb_start; x != &CURTASK bwb_end; x = x->next) + { + if (x->number == number) + { + return x; + } + } } + sprintf(bwb_ebuf, "Line number %d not found", number); + bwb_error(bwb_ebuf); - /* loop through looking for arguments */ - - control_loop = TRUE; - adv_ws( line->buffer, position ); - while ( control_loop == TRUE ) + } + else + if (OptionFlags & OPTION_LABELS_ON) + { + /* LABEL */ + if (isalpha(*buffer)) { + struct fslte *f; - switch( line->buffer[ *position ] ) + for (f = CURTASK fslt_start.next; f != &(CURTASK fslt_end); f = f->next) { - case '\n': /* premature end of line */ - case '\r': - case '\0': - control_loop = FALSE; - f->startpos = *position; - bwb_error( err_syntax ); - return FALSE; - case ')': /* end of argument list */ - ++( *position ); - control_loop = FALSE; - f->startpos = *position; - return TRUE; + if (strcasecmp(buffer, f->name) == 0) + { + return f->line; + } + } + } + sprintf(bwb_ebuf, "Line label '%s' not found", buffer); + bwb_error(bwb_ebuf); + } + else + { + sprintf(bwb_ebuf, "Line label '%s' is not allowed", buffer); + bwb_error(bwb_ebuf); + } - default: /* presume beginning of argument == variable name */ + return NULL; - exp_getvfname( &( line->buffer[ *position ] ), tbuf ); - *position += strlen( tbuf ); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in scan_readargs(): read argument <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif +/*************************************************************** + + FUNCTION: bwb_exit() + + DESCRIPTION: This C function implements the BASIC EXIT + statement, calling subroutines for either + EXIT FOR or EXIT DO. + + SYNTAX: EXIT FOR|DO + +***************************************************************/ - /* initialize the variable and add it to local chain */ +struct bwb_line * +bwb_EXIT(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); - v = var_new( tbuf ); - fslt_addlocalvar( f, v ); + sprintf(bwb_ebuf, "in bwb_exit(): Nonsense or nothing following EXIT"); + bwb_error(bwb_ebuf); - /* advance past the comma */ + return bwb_zline(l); +} - if ( line->buffer[ *position ] == ',' ) - { - ++( *position ); - } - break; - } - adv_ws( line->buffer, position ); - } +/*************************************************************** + + FUNCTION: bwb_etov() + + DESCRIPTION: This function assigns the value of a + bwBASIC expression stack element (src) + to the value of a bwBASIC variable (dst). + +***************************************************************/ - return TRUE; +struct bwb_variable * +bwb_etov(struct bwb_variable * dst, struct exp_ese * src) +{ + if ((int) src->type != dst->type) + { + sprintf(bwb_ebuf, "in bwb_etov(): mismatch src <%d> dst <%d>", + src->type, dst->type); + bwb_error(bwb_ebuf); + return NULL; + } + if (dst->type == NUMBER) + { + *var_findnval(dst, dst->array_pos) = exp_getnval(src); + } + else + { + str_btob(var_getsval(dst), exp_getsval(src)); } -/*************************************************************** + return dst; +} - FUNCTION: call_readargs() - DESCRIPTION: This C function reads arguments (variable - names for a subroutine CALL or function - call. -***************************************************************/ -#if ANSI_C -static int -call_readargs( struct fslte *f, char *expression, int *position ) -#else -static int -call_readargs( f, expression, position ) - struct fslte *f; - char *expression; - int *position; -#endif - { - int control_loop; - struct bwb_variable *v, *c; - char tbuf[ MAXSTRINGSIZE + 1 ]; - int argument_counter; - int local_pos, single_var; - struct exp_ese *e; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in call_readargs(): reading arguments, buffer <%s>", - &( expression[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - /* if we are at begin paren, advance */ - - if ( expression[ *position ] == '(' ) - { - ++( *position ); - } - - /* loop through looking for arguments */ - - control_loop = TRUE; - argument_counter = 0; - - while ( control_loop == TRUE ) - { - - adv_ws( expression, position ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in call_readargs(): in loop, buffer <%s>", - &( expression[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - switch( expression[ *position ] ) - { - case '\n': /* end of line */ - case '\r': - case '\0': -#if MULTISEG_LINES - case ':': /* end of segment */ -#endif - control_loop = FALSE; - return FALSE; - - case ')': /* end of argument list */ - ++( *position ); - control_loop = FALSE; - return TRUE; - - default: /* presume beginning of argument */ - - /* read the first word to see if it is a single variable name */ - - single_var = FALSE; - exp_getvfname( &( expression[ *position ] ), tbuf ); - local_pos = *position + strlen( tbuf ); - - adv_ws( expression, &local_pos ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in call_readargs(): in loop, tbuf <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* check now for the single variable name */ - - if ( strlen( tbuf ) == 0 ) - { - single_var = FALSE; - } - - else - { - switch ( expression[ local_pos ] ) - { - case ')': /* end of argument list */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in call_readargs(): detected end of argument list" ); - bwb_debug( bwb_ebuf ); -#endif - - ++local_pos; /* and fall through */ - case '\n': /* end of line */ - case '\r': - case '\0': -#if MULTISEG_LINES - case ':': /* end of segment */ -#endif - control_loop = FALSE; /* and fall through */ - /* added 1993-06-16 */ - case ',': /* end of argument */ - - single_var = TRUE; - - /* look for variable from previous (calling) level */ - - -- CURTASK exsc; - v = var_find( tbuf ); /* find variable there */ - ++ CURTASK exsc; - - c = var_pos( CURTASK excs[ CURTASK exsc ].local_variable, - argument_counter ); /* find local equivalent */ - bwb_vtov( c, v ); /* assign calling value to local variable */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in call_readargs(): variable name is <%s>, local name <%s>", - v->name, c->name ); - bwb_debug( bwb_ebuf ); -#endif - - *position = local_pos; - break; - default: - single_var = FALSE; - break; - } - } - - if ( single_var == FALSE ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in call_readargs(): in loop, parse expression <%s>", - &( expression[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - e = bwb_exp( expression, FALSE, position ); /* parse */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in call_readargs(): in loop, parsed expression, buffer <%s>", - &( expression[ *position ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - v = var_pos( CURTASK excs[ CURTASK exsc ].local_variable, - argument_counter ); /* assign to variable */ - bwb_etov( v, e ); /* assign value */ - } - - /* add the variable to the calling variable chain */ - - fslt_addcallvar( v ); - -#if INTENSIVE_DEBUG - str_btoc( tbuf, var_getsval( v )); - if ( single_var == TRUE ) - { - sprintf( bwb_ebuf, "in call_readargs(): added arg <%d> (single) name <%s> value <%s>", - argument_counter, v->name, tbuf ); - } - else - { - sprintf( bwb_ebuf, "in call_readargs(): added arg <%d> (expression) name <%s> value <%s>", - argument_counter, v->name, tbuf ); - } - bwb_debug( bwb_ebuf ); - getchar(); -#endif - - /* advance past comma if present */ - - adv_ws( expression, position ); - if ( expression[ *position ] == ',' ) - { - ++( *position ); - } - - break; - } - - ++argument_counter; - - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in call_readargs(): exiting function" ); - bwb_debug( bwb_ebuf ); -#endif - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: fslt_findl() - - DESCRIPTION: This C function finds a line corresponding - to a name in the FUNCTION-SUB lookup - table. - -***************************************************************/ - -#if ANSI_C -static struct bwb_line * -fslt_findl( char *buffer ) -#else -static struct bwb_line * -fslt_findl( buffer ) - char *buffer; -#endif - { - struct fslte *r; - - r = fslt_findf( buffer ); - - return r->line; - - } - -/*************************************************************** - - FUNCTION: fslt_findf() - - DESCRIPTION: This C function finds an fslte structure - corresponding to a name in the FUNCTION- - SUB lookup table. - -***************************************************************/ - -#if ANSI_C -static struct fslte * -fslt_findf( char *buffer ) -#else -static struct fslte * -fslt_findf( buffer ) - char *buffer; -#endif - { - struct fslte *f; - register int c; - - /* remove open-paren from string */ - - for ( c = 0; buffer[ c ] != '\0'; ++c ) - { - if ( buffer[ c ] == '(' ) - { - buffer[ c ] = '\0'; - } - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fslt_findf(): search for name <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif - - /* run through the table */ - - for ( f = CURTASK fslt_start.next; f != &CURTASK fslt_end; f = f->next ) - { - if ( strcmp( f->name, buffer ) == 0 ) - { - return f; - } - } - - /* search has failed */ - -#if PROG_ERRORS - sprintf( bwb_ebuf, "in fslt_findf(): failed to find Function/Subroutine <%s>", - buffer ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_lnnotfound ); -#endif - - return NULL; - - } - -/*************************************************************** - - FUNCTION: bwb_def() - - DESCRIPTION: This C function implements the BASIC - DEF statement. Since DEF and FUNCTION - are equivalent, it simply passes execution - to bwb_function(). - - SYNTAX: DEF FNname(arg...)] = expression - - NOTE: It is not a strict requirement that the - function name should begin with "FN". - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_def( struct bwb_line *l ) -#else -struct bwb_line * -bwb_def( l ) - struct bwb_line *l; -#endif - { - -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - - return bwb_zline( l ); - } - -#if STRUCT_CMDS - -/*************************************************************** - - FUNCTION: bwb_function() - - DESCRIPTION: This C function implements the BASIC - FUNCTION and DEF commands. - - SYNTAX: FUNCTION function-definition - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_function( struct bwb_line *l ) -#else -struct bwb_line * -bwb_function( l ) - struct bwb_line *l; -#endif - { - - return bwb_def( l ); - - } - -/*************************************************************** - - FUNCTION: bwb_endfnc() - - DESCRIPTION: This C function implements the BASIC - END FUNCTION command, ending a subroutine - definition. Because the command END - can have multiple meanings, this function - should be called from the bwb_xend() - function, which should be able to identify - an END FUNCTION command. - - SYNTAX: END FUNCTION - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_endfnc( struct bwb_line *l ) -#else -struct bwb_line * -bwb_endfnc( l ) - struct bwb_line *l; -#endif - { - struct bwb_variable *local; - register int c; - - /* assign local variable values to calling variables */ - - local = CURTASK excs[ CURTASK exsc ].local_variable; - for ( c = 0; c < CURTASK excs[ CURTASK exsc ].n_cvs; ++c ) - { - bwb_vtov( CURTASK excs[ CURTASK exsc ].calling_variable[ c ], local ); - local = local->next; - } - - /* decrement the EXEC stack counter */ - - bwb_decexec(); - - /* and return next from old line */ - - CURTASK excs[ CURTASK exsc ].line->next->position = 0; - return CURTASK excs[ CURTASK exsc ].line->next; - - } - -/*************************************************************** - - FUNCTION: bwb_call() - - DESCRIPTION: This C function implements the BASIC - CALL subroutine command. - - SYNTAX: CALL subroutine-name - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_call( struct bwb_line *l ) -#else -struct bwb_line * -bwb_call( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - struct bwb_line *call_line; - struct fslte *f; - - adv_element( l->buffer, &( l->position ), tbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_call(): call to subroutine <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* find the line to call */ - - call_line = fslt_findl( tbuf ); - f = fslt_findf( tbuf ); - - if ( call_line == NULL ) - { - return bwb_zline( l ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_call(): found line <%s>", - call_line->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - /* save the old position on the EXEC stack */ - - bwb_setexec( l, l->position, CURTASK excs[ CURTASK exsc ].code ); - - /* increment and set new EXEC stack */ - - bwb_incexec(); - call_line->position = 0; - bwb_setexec( call_line, 0, EXEC_CALLSUB ); - - /* attach local variables */ - - CURTASK excs[ CURTASK exsc ].local_variable = f->local_variable; - - /* read calling variables for this call */ - - call_readargs( f, l->buffer, &( l->position ) ); - - return call_line; - - } - -/*************************************************************** - - FUNCTION: bwb_sub() - - DESCRIPTION: This function implements the BASIC - SUB command, introducing a named - subroutine. - - SYNTAX: SUB subroutine-name - (followed by subroutine definition ending - with END SUB). - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_sub( struct bwb_line *l ) -#else -struct bwb_line * -bwb_sub( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - struct bwb_line *rline; -#if MULTISEG_LINES - struct fslte *f; -#endif - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_sub(): entered function at exec level <%d>", - CURTASK exsc ); - bwb_debug( bwb_ebuf ); -#endif - - /* check current exec level: if 1 then only MAIN should be executed */ - - if ( CURTASK exsc == 0 ) - { - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - if ( strcmp( tbuf, "MAIN" ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_sub(): found MAIN function at level 0" ); - bwb_debug( bwb_ebuf ); -#endif - - bwb_incexec(); - - bwb_setexec( l->next, 0, EXEC_MAIN ); - - return bwb_zline( l ); - - } - - /* if a MAIN function was not found at level 0, then skip the subroutine */ - - else - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_sub(): found non-MAIN function at level 0" ); - bwb_debug( bwb_ebuf ); -#endif - - rline = find_endsub( l ); - bwb_setexec( rline->next, 0, EXEC_CALLSUB ); - rline->next->position = 0; - return rline->next; - } - } - - /* check for integrity of CALL-SUB sequence if above level 0 */ - - else if ( CURTASK excs[ CURTASK exsc ].code != EXEC_CALLSUB ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_sub(): SUB without CALL" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_retnogosub ); -#endif - } - - /* advance position */ - -#if MULTISEG_LINES - adv_ws( l->buffer, &( l->position )); - adv_element( l->buffer, &( l->position ), tbuf ); - f = fslt_findf( tbuf ); - - l->position = f->startpos; - - return bwb_zline( l ); -#else - return bwb_zline( l ); -#endif - } - -/*************************************************************** - - FUNCTION: find_endsub() - - DESCRIPTION: This function searches for a line containing - an END SUB statement corresponding to a previous - SUB statement. - -***************************************************************/ - -#if ANSI_C -static struct bwb_line * -find_endsub( struct bwb_line *l ) -#else -static struct bwb_line * -find_endsub( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *current; - register int s_level; - int position; - - s_level = 1; - for ( current = l->next; current != &CURTASK bwb_end; current = current->next ) - { - position = 0; - if ( current->marked != TRUE ) - { - line_start( current->buffer, &position, &( current->lnpos ), - &( current->lnum ), - &( current->cmdpos ), - &( current->cmdnum ), - &( current->startpos ) ); - } - current->position = current->startpos; - - if ( current->cmdnum > -1 ) - { - - if ( bwb_cmdtable[ current->cmdnum ].vector == bwb_sub ) - { - ++s_level; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_endsub(): found SUB at line %d, level %d", - current->number, s_level ); - bwb_debug( bwb_ebuf ); -#endif - - } - else if ( is_endsub( current ) == TRUE ) - { - --s_level; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_endsub(): found END SUB at line %d, level %d", - current->number, s_level ); - bwb_debug( bwb_ebuf ); -#endif - - if ( s_level == 0 ) - { - return current; - } - } - - } - } - -#if PROG_ERRORS - sprintf( bwb_ebuf, "SUB without END SUB" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - - return NULL; - - } - -/*************************************************************** - - FUNCTION: is_endsub() - - DESCRIPTION: This function determines whether the - line buffer for line 'l' is positioned - at an END SUB statement. - -***************************************************************/ - -#if ANSI_C -static int -is_endsub( struct bwb_line *l ) -#else -static int -is_endsub( l ) - struct bwb_line *l; -#endif - { - int position; - char tbuf[ MAXVARNAMESIZE + 1]; - - if ( bwb_cmdtable[ l->cmdnum ].vector != bwb_xend ) - { - return FALSE; - } - - position = l->startpos; - adv_ws( l->buffer, &position ); - adv_element( l->buffer, &position, tbuf ); - bwb_strtoupper( tbuf ); - - if ( strcmp( tbuf, "SUB" ) == 0 ) - { - return TRUE; - } - - return FALSE; - - } - -/*************************************************************** - - FUNCTION: bwb_endsub() - - DESCRIPTION: This C function implements the BASIC - END SUB command, ending a subroutine - definition. Because the command END - can have multiple meanings, this function - should be called from the bwb_xend() - function, which should be able to identify - an END SUB command. - - SYNTAX: END SUB - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_endsub( struct bwb_line *line ) -#else -struct bwb_line * -bwb_endsub( line ) - struct bwb_line *line; -#endif - { - struct bwb_variable *l; - register int c; - - /* assign local variable values to calling variables */ - - l = CURTASK excs[ CURTASK exsc ].local_variable; - for ( c = 0; c < CURTASK excs[ CURTASK exsc ].n_cvs; ++c ) - { - bwb_vtov( CURTASK excs[ CURTASK exsc ].calling_variable[ c ], l ); - l = l->next; - } - - /* decrement the EXEC stack counter */ - - bwb_decexec(); - - /* if the previous level was EXEC_MAIN, - then execution continues from this point */ - - if ( CURTASK excs[ CURTASK exsc + 1 ].code == EXEC_MAIN ) - { - return bwb_zline( line ); - } - - /* else return next from old line */ - - CURTASK excs[ CURTASK exsc ].line->next->position = 0; - return CURTASK excs[ CURTASK exsc ].line->next; - - } - -/*************************************************************** - - FUNCTION: find_label() - - DESCRIPTION: This C function finds a program line that - begins with the label included in . - -***************************************************************/ - -#if ANSI_C -extern struct bwb_line * -find_label( char *buffer ) -#else -extern struct bwb_line * -find_label( buffer ) - char *buffer; -#endif - { - struct fslte *f; - - for ( f = CURTASK fslt_start.next; f != & ( CURTASK fslt_end ); f = f->next ) - { - if ( strcmp( buffer, f->name ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in find_label(): found label <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif - return f->line; - } - } - -#if PROG_ERRORS - sprintf( bwb_ebuf, "in find_label(): failed to find label <%s>", buffer ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_lnnotfound ); -#endif - - return NULL; - - } - -/*************************************************************** - - FUNCTION: bwb_doloop() - - DESCRIPTION: This C function implements the ANSI BASIC - DO statement, when DO is not followed by - an argument. It is called by bwb_do() in - bwb_cmd.c. - - SYNTAX: DO - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_doloop( struct bwb_line *l ) -#else -struct bwb_line * -bwb_doloop( l ) - struct bwb_line *l; -#endif - { - - /* if this is the first time at this DO statement, note it */ - - if ( CURTASK excs[ CURTASK exsc ].while_line != l ) - { - - bwb_incexec(); - CURTASK excs[ CURTASK exsc ].while_line = l; - - /* find the LOOP statement */ - - CURTASK excs[ CURTASK exsc ].wend_line = find_loop( l ); - - if ( CURTASK excs[ CURTASK exsc ].wend_line == NULL ) - { - return bwb_zline( l ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_doloop(): initialize DO loop, line <%d>", - l->number ); - bwb_debug( bwb_ebuf ); -#endif - - } -#if INTENSIVE_DEBUG - else - { - sprintf( bwb_ebuf, "in bwb_doloop(): return to DO loop, line <%d>", - l->number ); - bwb_debug( bwb_ebuf ); - } -#endif - - bwb_setexec( l, l->position, EXEC_DO ); - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_loop() - - DESCRIPTION: This C function implements the ANSI BASIC - LOOP statement. - - SYNTAX: LOOP [UNTIL expression] - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_loop( struct bwb_line *l ) -#else -struct bwb_line * -bwb_loop( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_loop(): entered subroutine" ); - bwb_debug( bwb_ebuf ); -#endif - - /* If the current exec stack is set for EXEC_WHILE, then we - presume that this is a LOOP statement ending a DO WHILE - loop */ - - if ( CURTASK excs[ CURTASK exsc ].code == EXEC_WHILE ) - { - return bwb_wend( l ); - } - - /* check integrity of DO loop */ - - if ( CURTASK excs[ CURTASK exsc ].code != EXEC_DO ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_loop(): exec stack code != EXEC_DO" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } - - if ( CURTASK excs[ CURTASK exsc ].while_line == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_loop(): exec stack while_line == NULL" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } - - /* advance to find the first argument */ - - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - - /* detect a LOOP UNTIL structure */ - - if ( strcmp( tbuf, CMD_XUNTIL ) == 0 ) - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_loop(): detected LOOP UNTIL" ); - bwb_debug( bwb_ebuf ); -#endif - - return bwb_loopuntil( l ); - - } - - /* LOOP does not have UNTIL */ - - else - { - - /* reset to the top of the current DO loop */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_loop() return to line <%d>", - CURTASK excs[ CURTASK exsc ].while_line->number ); - bwb_debug( bwb_ebuf ); -#endif - - CURTASK excs[ CURTASK exsc ].while_line->position = 0; - bwb_setexec( CURTASK excs[ CURTASK exsc ].while_line, 0, EXEC_DO ); - - return CURTASK excs[ CURTASK exsc ].while_line; - - } - - } - -/*************************************************************** - - FUNCTION: bwb_loopuntil() - - DESCRIPTION: This C function implements the ANSI BASIC - LOOP UNTIL statement and is called by - bwb_loop(). - -***************************************************************/ - -#if ANSI_C -static struct bwb_line * -bwb_loopuntil( struct bwb_line *l ) -#else -static struct bwb_line * -bwb_loopuntil( l ) - struct bwb_line *l; -#endif - { - struct exp_ese *e; - struct bwb_line *r; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_loopuntil(): entered subroutine" ); - bwb_debug( bwb_ebuf ); -#endif - - /* call bwb_exp() to interpret the expression */ - - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - - if ( (int) exp_getnval( e ) != FALSE ) /* Was == TRUE (JBV 10/1996) */ - { - CURTASK excs[ CURTASK exsc ].while_line = NULL; - r = CURTASK excs[ CURTASK exsc ].wend_line; - bwb_setexec( r, 0, CURTASK excs[ CURTASK exsc - 1 ].code ); - r->position = 0; - bwb_decexec(); - return r; - } - - /* condition is false: loop around to DO again */ - - else - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_loopuntil() return to line <%d>", - CURTASK excs[ CURTASK exsc ].while_line->number ); - bwb_debug( bwb_ebuf ); -#endif - - CURTASK excs[ CURTASK exsc ].while_line->position = 0; - bwb_setexec( CURTASK excs[ CURTASK exsc ].while_line, 0, EXEC_DO ); - - return CURTASK excs[ CURTASK exsc ].while_line; - - } - - } - -/*************************************************************** - - FUNCTION: bwb_exit() - - DESCRIPTION: This C function implements the BASIC EXIT - statement, calling subroutines for either - EXIT FOR or EXIT DO. - - SYNTAX: EXIT FOR|DO - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_exit( struct bwb_line *l ) -#else -struct bwb_line * -bwb_exit( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exit(): entered subroutine" ); - bwb_debug( bwb_ebuf ); -#endif - - adv_element( l->buffer, &( l->position ), tbuf ); - bwb_strtoupper( tbuf ); - - if ( strcmp( tbuf, CMD_XFOR ) == 0 ) - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exit(): detected EXIT FOR" ); - bwb_debug( bwb_ebuf ); -#endif - - return bwb_exitfor( l ); - } - - if ( strcmp( tbuf, CMD_XDO ) == 0 ) - { - return bwb_exitdo( l ); - } - -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_exit(): Nonsense or nothing following EXIT" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_exitdo() - - DESCRIPTION: This function handles the BASIC EXIT - DO statement. This is a structured - programming command compatible with ANSI - BASIC. It is called from the bwb_exit() - subroutine. - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_exitdo( struct bwb_line *l ) -#else -struct bwb_line * -bwb_exitdo( l ) - struct bwb_line *l; -#endif - { - struct bwb_line *next_line; - int found; - register int level; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exitdo(): entered subroutine" ); - bwb_debug( bwb_ebuf ); -#endif - - /* Check the integrity of the DO statement */ - - found = FALSE; - level = CURTASK exsc; - do - { - if ( CURTASK excs[ level ].code == EXEC_DO ) - { - next_line = CURTASK excs[ CURTASK level ].wend_line; - found = TRUE; - } - else - { - --level; - } - } - while ( ( level >= 0 ) && ( found == FALSE ) ); - - if ( found != TRUE ) - { - -#if PROG_ERRORS - /* JBV 1/97 (was "bwb_exitfor") */ - sprintf( bwb_ebuf, "in bwb_exitdo(): EXIT DO without DO" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - - return bwb_zline( l ); - - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_exitdo(): level found is <%d>, current <%d>", - level, CURTASK exsc ); - bwb_debug( bwb_ebuf ); -#endif - - /* decrement below the level of the NEXT statement */ - - while( CURTASK exsc >= level ) - { - bwb_decexec(); - } - - /* set the next line in the exec stack */ - - next_line->position = 0; - bwb_setexec( next_line, 0, EXEC_NORM ); - - return next_line; - - } - -#endif /* STRUCT_CMDS */ - -/*************************************************************** - - FUNCTION: bwb_vtov() - - DESCRIPTION: This function assigns the value of one - bwBASIC variable (src) to the value of another - bwBASIC variable (dst). - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -bwb_vtov( struct bwb_variable *dst, - struct bwb_variable *src ) -#else -struct bwb_variable * -bwb_vtov( dst, src ) - struct bwb_variable *dst; - struct bwb_variable *src; -#endif - { - - if ( dst == src ) - { - return dst; - } - - if ( src->type != dst->type ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_vtov(): mismatch src <%s> type <%d> dst <%s> type <%d>", - src->name, src->type, dst->name, dst->type ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - return NULL; - } - - if ( dst->type == NUMBER ) - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_vtov(): assigning var <%s> val <%lf> to var <%s>", - src->name, var_getnval( src ), dst->name ); - bwb_debug( bwb_ebuf ); -#endif - - * var_findnval( dst, dst->array_pos ) = var_getnval( src ); - } - else - { - str_btob( var_getsval( dst ), var_getsval( src ) ); - } - - return dst; - } - -/*************************************************************** - - FUNCTION: bwb_etov() - - DESCRIPTION: This function assigns the value of a - bwBASIC expression stack element (src) - to the value of a bwBASIC variable (dst). - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -bwb_etov( struct bwb_variable *dst, struct exp_ese *src ) -#else -struct bwb_variable * -bwb_etov( dst, src ) - struct bwb_variable *dst; - struct exp_ese *src; -#endif - { - - if ( (int) src->type != dst->type ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_etov(): mismatch src <%d> dst <%d>", - src->type, dst->type ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - return NULL; - } - - if ( dst->type == NUMBER ) - { - * var_findnval( dst, dst->array_pos ) = exp_getnval( src ); - } - else - { - str_btob( var_getsval( dst ), exp_getsval( src ) ); - } - - return dst; - } - -/*************************************************************** - - FUNCTION: var_pos() - - DESCRIPTION: This function returns the name of a - local variable at a specified position - in the local variable list. - -***************************************************************/ - -#if ANSI_C -struct bwb_variable * -var_pos( struct bwb_variable *firstvar, int p ) -#else -struct bwb_variable * -var_pos( firstvar, p ) - struct bwb_variable *firstvar; - int p; -#endif - { - register int c; - struct bwb_variable *v; - - v = firstvar; - for ( c = 0; c != p; ++c ) - { - v = v->next; - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_pos(): returning pos <%d> variable <%s>", - p, v->name ); - bwb_debug( bwb_ebuf ); -#endif - - return v; - } /*************************************************************** - - FUNCTION: fslt_addcallvar() - - DESCRIPTION: This function adds a calling variable - to the FUNCTION-SUB lookup table at - a specific level. - + + FUNCTION: fslt_addlocalvar() + + DESCRIPTION: This function adds a local variable + to the FUNCTION-SUB lookup table at + a specific level. + ***************************************************************/ -#if ANSI_C int -fslt_addcallvar( struct bwb_variable *v ) -#else -int -fslt_addcallvar( v ) - struct bwb_variable *v; -#endif - { - - if ( CURTASK excs[ CURTASK exsc ].n_cvs >= MAX_FARGS ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in fslt_addcallvar(): Maximum number of Function Args Exceeded" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_overflow ); -#endif - } - - CURTASK excs[ CURTASK exsc ].calling_variable[ CURTASK excs[ CURTASK exsc ].n_cvs ] = v; - ++CURTASK excs[ CURTASK exsc ].n_cvs; - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: exp_ufnc() +fslt_addlocalvar(struct fslte * f, struct bwb_variable * v) +{ + bwx_DEBUG(__FUNCTION__); - DESCRIPTION: This C function interprets a user-defined - function, returning its value at the current - level of the expression stack. - -***************************************************************/ + /* find end of local chain */ -#if ANSI_C -int -exp_ufnc( char *expression ) -#else -int -exp_ufnc( expression ) - char *expression; -#endif + if (f->local_variable == NULL) { - char tbuf[ MAXSTRINGSIZE + 1 ]; - struct bwb_line *call_line; - struct fslte *f, *c; - struct bwb_variable *v, *r; - struct exp_ese *e; - int save_elevel; - int position, epos; -#if INTENSIVE_DEBUG - register int i; -#endif - - position = 0; - - /* get the function name in tbuf */ - - exp_getvfname( expression, tbuf ); - - /* find the function name in the function-subroutine lookup table */ - - for ( f = CURTASK fslt_start.next; f != &CURTASK fslt_end; f = f->next ) - { - if ( strcmp( f->name, tbuf ) == 0 ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): found user function <%s>", - tbuf ); - bwb_debug( bwb_ebuf ); -#endif - c = f; /* current function-subroutine lookup table element */ - call_line = f->line; /* line to call for function */ - } - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): call to function <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - position += strlen( tbuf ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): found line <%s>", - call_line->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - /* save the old position on the EXEC stack */ - - bwb_setexec( CURTASK excs[ CURTASK exsc ].line, - position, CURTASK excs[ CURTASK exsc ].code ); - save_elevel = CURTASK exsc; - - /* increment and set new EXEC stack */ - - bwb_incexec(); - call_line->position = 0; - bwb_setexec( call_line, 0, EXEC_FUNCTION ); - - /* attach local variables */ - - CURTASK excs[ CURTASK exsc ].local_variable = c->local_variable; - -#if INTENSIVE_DEBUG - i = 0; - sprintf( bwb_ebuf, "in exp_ufnc(): <%s> attached local variables EXEC level <%d>", - tbuf, CURTASK exsc ); - bwb_debug( bwb_ebuf ); - for ( v = CURTASK excs[ CURTASK exsc ].local_variable; v != NULL; v = v->next ) - { - sprintf( bwb_ebuf, "in exp_ufnc(): <%s> level <%d> variable <%d> name <%s>", - tbuf, CURTASK exsc, i, v->name ); - bwb_debug( bwb_ebuf ); - ++i; - } - getchar(); -#endif - - /* read calling variables for this call */ - - call_readargs( c, expression, &position ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): current buffer <%s>", - &( call_line->buffer[ c->startpos ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - /* determine if single-line function */ - - epos = c->startpos; - adv_ws( call_line->buffer, &epos ); - if ( call_line->buffer[ epos ] == '=' ) - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): found SINGLE-LINE function" ); - bwb_debug( bwb_ebuf ); -#endif - - ++epos; - call_line->position = epos; - bwb_setexec( call_line, epos, EXEC_FUNCTION ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): single line: parse <%s>", - &( call_line->buffer[ epos ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - e = bwb_exp( call_line->buffer, FALSE, &epos ); - v = var_find( tbuf ); - -#if INTENSIVE_DEBUG - if ( e->type == STRING ) - { - sprintf( bwb_ebuf, "in exp_ufnc(): expression returns <%d>-byte string", - exp_getsval( e )->length ); - bwb_debug( bwb_ebuf ); - } - else - { - sprintf( bwb_ebuf, "in exp_ufnc(): expression returns number <%lf>", - (double) exp_getnval( e ) ); - bwb_debug( bwb_ebuf ); - } -#endif - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): single line after parsing, <%s>", - &( call_line->buffer[ epos ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - bwb_etov( v, e ); - bwb_decexec(); - } - - /* multi-line function must be executed now */ - - else - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): found MULTI-LINE function" ); - bwb_debug( bwb_ebuf ); -#endif - - /* now execute until function is resolved */ - - bwb_execline(); - while( CURTASK exsc > save_elevel ) - { - bwb_execline(); - } - - /* find the return value */ - - for ( r = c->local_variable; r != NULL; r = r->next ) - { - if ( strcmp( r->name, c->name ) == 0 ) - { - v = r; - } - } - - } - - /* now place value in expression stack */ - - CURTASK exps[ CURTASK expsc ].type = (char) v->type; - CURTASK exps[ CURTASK expsc ].pos_adv = position; - - switch( v->type ) - { - case STRING: - CURTASK exps[ CURTASK expsc ].operation = CONST_STRING; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in exp_ufnc(): ready to assign <%d>-byte STRING", - var_getsval( v )->length ); - bwb_debug( bwb_ebuf ); -#endif - - str_btob( exp_getsval( &( CURTASK exps[ CURTASK expsc ] )), - var_getsval( v ) ); - -#if INTENSIVE_DEBUG - str_btoc( tbuf, var_getsval( v ) ); - sprintf( bwb_ebuf, "in exp_ufnc(): string assigned <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - break; - - default: - CURTASK exps[ CURTASK expsc ].operation = NUMBER; - CURTASK exps[ CURTASK expsc ].nval = var_getnval( v ); - break; - } - - return TRUE; - + f->local_variable = v; } - -/*************************************************************** - - FUNCTION: fslt_addlocalvar() - - DESCRIPTION: This function adds a local variable - to the FUNCTION-SUB lookup table at - a specific level. - -***************************************************************/ - -#if ANSI_C -int -fslt_addlocalvar( struct fslte *f, struct bwb_variable *v ) -#else -int -fslt_addlocalvar( f, v ) - struct fslte *f; - struct bwb_variable *v; -#endif + else { - struct bwb_variable *c, *p; -#if INTENSIVE_DEBUG - register int i; -#endif - - /* find end of local chain */ + struct bwb_variable *p; + struct bwb_variable *c; - if ( f->local_variable == NULL ) - { -#if INTENSIVE_DEBUG - i = 0; -#endif - f->local_variable = v; - } - else - { -#if INTENSIVE_DEBUG - i = 1; -#endif p = f->local_variable; - for ( c = f->local_variable->next; c != NULL; c = c->next ) - { + for (c = f->local_variable->next; c != NULL; c = c->next) + { p = c; -#if INTENSIVE_DEBUG - ++i; -#endif - } - p->next = v; } + p->next = v; + } v->next = NULL; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in fslt_addlocalvar(): added local variable variable <%s> arg number <%d>", - v->name, i ); - bwb_debug( bwb_ebuf ); - getchar(); -#endif return TRUE; - } +} /*************************************************************** - - FUNCTION: fslt_init() - - DESCRIPTION: This function initializes the FUNCTION-SUB - lookup table. - + + FUNCTION: fslt_init() + + DESCRIPTION: This function initializes the FUNCTION-SUB + lookup table. + ***************************************************************/ -#if ANSI_C int -fslt_init( int task ) -#else -int -fslt_init( task ) - int task; -#endif - { - LOCALTASK fslt_start.next = &(LOCALTASK fslt_end); - return TRUE; - } +fslt_init(int task) +{ + bwx_DEBUG(__FUNCTION__); -/*************************************************************** + LOCALTASK fslt_start.next = &(LOCALTASK fslt_end); + return TRUE; +} - FUNCTION: is_label() - DESCRIPTION: This function determines whether the string - pointed to by 'buffer' is a label (i.e., - ends with colon). +struct bwb_line * +bwb_USER_LBL(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); -***************************************************************/ + adv_eos(l->buffer, &(l->position)); -#if ANSI_C -extern int -is_label( char *buffer ) -#else -int -is_label( buffer ) - char *buffer; -#endif - { + return bwb_zline(l); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in is_label(): check element <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif - if ( buffer[ strlen( buffer ) - 1 ] == ':' ) - { - return TRUE; - } - else - { - return FALSE; - } - } +/* EOF */ diff --git a/bwb_str.c b/bwb_str.c index 0ee1ad0..b56da15 100644 --- a/bwb_str.c +++ b/bwb_str.c @@ -1,400 +1,290 @@ /*************************************************************** - - bwb_str.c String-Management Routines + + bwb_str.c String-Management Routines for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include - -#include "bwbasic.h" -#include "bwb_mes.h" -#if INTENSIVE_DEBUG || TEST_BSTRING -static char tbuf[ MAXSTRINGSIZE + 1 ]; -#endif /*************************************************************** - - FUNCTION: str_btob() - - DESCRIPTION: This C function assigns a bwBASIC string - structure to another bwBASIC string - structure. - + +WARNING - WARNING - WARNING - WARNING - WARNING - WARNING + +BASIC allows embedded NUL (0) characters. C str*() does not. + +ALL the bstring code should use mem*() and ->length, but most does not. +ALL the bstring code should prevent string overflow, but most does not. + + ***************************************************************/ -#if ANSI_C -int -str_btob( bstring *d, bstring *s ) -#else -int -str_btob( d, s ) - bstring *d; - bstring *s; -#endif - { - char *t; - register int i; -#if TEST_BSTRING - sprintf( tbuf, "in str_btob(): entry, source b string name is <%s>", s->name ); - bwb_debug( tbuf ); - sprintf( tbuf, "in str_btob(): entry, destination b string name is <%s>", d->name ); - bwb_debug( tbuf ); -#endif - /* get memory for new buffer */ - /* Following section removed by JBV (no more mass string reallocation) */ - /* if ( ( t = (char *) CALLOC( s->length + 1, 1, "str_btob" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in str_btob(): failed to get memory for new buffer" ); -#else - bwb_error( err_getmem ); -#endif - return FALSE; - } */ +#include "bwbasic.h" - /* Only one of these two conditions necessitates reallocation (JBV) */ - if ( ( d->sbuffer == NULL ) || ( d->rab == TRUE ) ) - { - if ( ( t = (char *) CALLOC( MAXSTRINGSIZE + 1, 1, "str_btob" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in str_btob(): failed to get memory for new buffer" ); -#else - bwb_error( err_getmem ); -#endif - return FALSE; - } - } - else t = d->sbuffer; /* Leave well enough alone (JBV) */ - /* write the b string to the temp c string */ - t[ 0 ] = '\0'; - for ( i = 0; i < (int) s->length; ++i ) - { - t[ i ] = s->sbuffer[ i ]; - t[ i + 1 ] = '\0'; /* JBV */ -#if INTENSIVE_DEBUG - tbuf[ i ] = s->sbuffer[ i ]; - tbuf[ i + 1 ] = '\0'; -#endif - } - /* deallocate old memory */ -#if INTENSIVE_DEBUG - if ( d->rab == TRUE ) - { - sprintf( bwb_ebuf, "in str_btob(): reallocating RAB" ); - bwb_debug( bwb_ebuf ); - } -#endif +/*************************************************************** + + FUNCTION: str_btob() + + DESCRIPTION: This C function assigns a bwBASIC string + structure to another bwBASIC string + structure. + +***************************************************************/ + +int +str_btob(bstring * d, bstring * s) +{ + bwx_DEBUG(__FUNCTION__); - /* Following section removed by JBV (no more mass string reallocation) */ - /* if (( d->rab != TRUE ) && ( d->sbuffer != NULL )) + /* get memory for new buffer */ + /* Only one of these two conditions necessitates reallocation (JBV) */ + if ((d->sbuffer == NULL) || (d->rab == TRUE)) + { + if ((d->sbuffer = (char *) CALLOC(BasicStringLengthMax + 1, 1, "str_btob")) == NULL) { -#if INTENSIVE_DEBUG - sprintf( tbuf, "in str_btob(): deallocating string memory" ); - bwb_debug ( tbuf ); -#endif - FREE( d->sbuffer, "str_btob" ); - d->sbuffer = NULL; + bwb_error("in str_btob(): failed to get memory for new buffer"); + return FALSE; } - else - { - d->rab = (char) FALSE; - } */ - - d->rab = (char) FALSE; /* JBV */ - - /* reassign buffer */ - - d->sbuffer = t; - - /* reassign length */ - + } + /* write the b string to the b string */ + if (s->length > BasicStringLengthMax) + { + /* INTERNAL ERROR, so truncate */ + s->length = BasicStringLengthMax; + } d->length = s->length; + memcpy(d->sbuffer, s->sbuffer, d->length); + d->sbuffer[d->length] = '\0'; + d->rab = (char) FALSE; /* JBV */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in str_btob(): exit length <%d> string <%s>", - d->length, tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - /* return */ return TRUE; - } +} /*************************************************************** - + FUNCTION: str_ctob() - + DESCRIPTION: This C function assigns a null-terminated - C string to a bwBASIC string structure. - + C string to a bwBASIC string structure. + ***************************************************************/ -#if ANSI_C -int -str_ctob( bstring *s, char *buffer ) -#else int -str_ctob( s, buffer ) - bstring *s; - char *buffer; -#endif - { - char *t; - register int i; - -#if INTENSIVE_DEBUG - sprintf( tbuf, "in str_ctob(): entry, c string is <%s>", buffer ); - bwb_debug( tbuf ); -#endif -#if TEST_BSTRING - sprintf( tbuf, "in str_ctob(): entry, b string name is <%s>", s->name ); - bwb_debug( tbuf ); -#endif +str_ctob(bstring * s, char *buffer) +{ + bwx_DEBUG(__FUNCTION__); + /* get memory for new buffer */ - /* Following section removed by JBV (no more mass string reallocation) */ - /* if ( ( t = (char *) CALLOC( strlen( buffer ) + 1, 1, "str_ctob" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in str_ctob(): failed to get memory for new buffer" ); -#else - bwb_error( err_getmem ); -#endif - return FALSE; - } */ /* Only one of these two conditions necessitates reallocation (JBV) */ - if ( ( s->sbuffer == NULL ) || ( s->rab == TRUE ) ) + if ((s->sbuffer == NULL) || (s->rab == TRUE)) { - if ( ( t = (char *) CALLOC( MAXSTRINGSIZE + 1, 1, "str_ctob" )) == NULL ) + if ((s->sbuffer = (char *) CALLOC(BasicStringLengthMax + 1, 1, "str_ctob")) == NULL) { -#if PROG_ERRORS - bwb_error( "in str_ctob(): failed to get memory for new buffer" ); -#else - bwb_error( err_getmem ); -#endif - return FALSE; + bwb_error("in str_ctob(): failed to get memory for new buffer"); + return FALSE; } } - else t = s->sbuffer; /* Leave well enough alone (JBV) */ - - /* write the c string to the temp c string */ - - t[ 0 ] = '\0'; - for ( i = 0; i < (int) strlen( buffer ); ++i ) - { - t[ i ] = buffer[ i ]; - t[ i + 1 ] = '\0'; /* JBV */ -#if INTENSIVE_DEBUG - tbuf[ i ] = buffer[ i ]; - tbuf[ i + 1 ] = '\0'; -#endif - } - - /* deallocate old memory */ - -#if INTENSIVE_DEBUG - if ( s->rab == TRUE ) - { - sprintf( bwb_ebuf, "in str_ctob(): reallocating RAB" ); - bwb_debug( bwb_ebuf ); - } -#endif - - /* Following section removed by JBV (no more mass string reallocation) */ - /* if (( s->rab != TRUE ) && ( s->sbuffer != NULL )) - { - FREE( s->sbuffer, "str_ctob" ); - s->sbuffer = NULL; - } - else - { - s->rab = (char) FALSE; - } */ - - s->rab = (char) FALSE; /* JBV */ - - /* reassign buffer */ - - s->sbuffer = t; - - /* reassign length */ - - /* Was unsigned char (JBV 9/4/97) */ - s->length = (unsigned int) strlen( buffer ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in str_ctob(): exit length <%d> string <%s>", - s->length, tbuf ); - bwb_debug( bwb_ebuf ); -#endif + /* write the c string to the b string */ + s->length = strlen(buffer); + if (s->length > BasicStringLengthMax) + { + /* INTERNAL ERROR, so truncate */ + s->length = BasicStringLengthMax; + } + memcpy(s->sbuffer, buffer, s->length); + s->sbuffer[s->length] = '\0'; + s->rab = (char) FALSE; /* JBV */ - /* return */ return TRUE; - } +} /*************************************************************** - + FUNCTION: str_btoc() - + DESCRIPTION: This C function assigns a null-terminated - C string to a bwBASIC string structure. - + C string to a bwBASIC string structure. + ***************************************************************/ -#if ANSI_C int -str_btoc( char *buffer, bstring *s ) -#else -int -str_btoc( buffer, s ) - char *buffer; - bstring *s; -#endif - { - register int i; - -#if INTENSIVE_DEBUG - sprintf( tbuf, "in str_btoc(): entry, b string length is <%d>", - s->length ); - bwb_debug( tbuf ); -#endif -#if TEST_BSTRING - sprintf( tbuf, "in str_btoc(): entry, b string name is <%s>", s->name ); - bwb_debug( tbuf ); -#endif +str_btoc(char *buffer, bstring * s) +{ - /* write the b string to the c string */ + bwx_DEBUG(__FUNCTION__); - buffer[ 0 ] = '\0'; - for ( i = 0; i < (int) s->length; ++i ) - { - buffer[ i ] = s->sbuffer[ i ]; - buffer[ i + 1 ] = '\0'; - if ( i >= MAXSTRINGSIZE ) - { - i = s->length + 1; - } - } - -#if INTENSIVE_DEBUG - sprintf( tbuf, "in str_btoc(): exit, c string is <%s>", buffer ); - bwb_debug( tbuf ); -#endif - - /* return */ + /* write the b string to the c string */ + if (s->length > BasicStringLengthMax) + { + /* INTERNAL ERROR, so truncate */ + s->length = BasicStringLengthMax; + } + memcpy(buffer, s->sbuffer, s->length); + buffer[s->length] = '\0'; return TRUE; - } +} /*************************************************************** - + FUNCTION: str_cat() - + DESCRIPTION: This C function performs the equivalent - of the C strcat() function, using BASIC - strings. - + of the C strcat() function, using BASIC + strings. + ***************************************************************/ -#if ANSI_C -bstring * -str_cat( bstring *a, bstring *b ) -#else -bstring * -str_cat( a, b ) - bstring *a; - bstring *b; -#endif - { - char abuf[ MAXSTRINGSIZE + 1 ]; - char bbuf[ MAXSTRINGSIZE + 1 ]; - - str_btoc( abuf, a ); - str_btoc( bbuf, b ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in str_cat(): a <%s> b <%s>", abuf, bbuf ); - bwb_debug( bwb_ebuf ); -#endif +bstring * +str_cat(bstring * a, bstring * b) +{ + int i; - strcat( abuf, bbuf ); - str_ctob( a, abuf ); + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in str_cat(): returns <%s>", abuf ); - bwb_debug( bwb_ebuf ); -#endif + if (a->length > BasicStringLengthMax) + { + /* INTERNAL ERROR, so truncate */ + a->length = BasicStringLengthMax; + } + if (b->length > BasicStringLengthMax) + { + /* INTERNAL ERROR, so truncate */ + b->length = BasicStringLengthMax; + } + i = b->length; + if (a->length + i > BasicStringLengthMax) + { + /* INTERNAL ERROR, so truncate */ + i = BasicStringLengthMax - a->length; + } + if (i > 0) + { + char *t; - return a; + t = a->sbuffer; + t += a->length; + memcpy(t, b->sbuffer, i); + a->length += i; + a->sbuffer[a->length] = '\0'; } + return a; +} /*************************************************************** - + FUNCTION: str_cmp() - - DESCRIPTION: This C function performs the equivalent - of the C strcmp() function, using BASIC - strings. - + + DESCRIPTION: This C function performs the equivalent + of the C strcmp() function, using BASIC + strings. + ***************************************************************/ -#if ANSI_C -int -str_cmp( bstring *a, bstring *b ) -#else int -str_cmp( a, b ) - bstring *a; - bstring *b; -#endif +str_cmp(bstring * a, bstring * b) +{ + bwx_DEBUG(__FUNCTION__); + + if (a->length > BasicStringLengthMax) + { + /* INTERNAL ERROR, so truncate */ + a->length = BasicStringLengthMax; + } + if (b->length > BasicStringLengthMax) + { + /* INTERNAL ERROR, so truncate */ + b->length = BasicStringLengthMax; + } + if (a->sbuffer == NULL) { - char abuf[ MAXSTRINGSIZE + 1 ]; - char bbuf[ MAXSTRINGSIZE + 1 ]; + if (b->sbuffer == NULL) + { + return 0; + } + if (b->length == 0) + { + return 0; + } + return 1; + } + else + { + a->sbuffer[a->length] = '\0'; + } - str_btoc( abuf, a ); - str_btoc( bbuf, b ); + if (b->sbuffer == NULL) + { + if (a->sbuffer == NULL) + { + return 0; + } + if (a->length == 0) + { + return 0; + } + return -1; + } + else + { + b->sbuffer[b->length] = '\0'; + } - return strcmp( abuf, bbuf ); + if (OptionFlags & OPTION_COMPARE_TEXT) + { + /* case insensitive */ + return strcasecmp(a->sbuffer, b->sbuffer); + } + else + { + /* case sensitive */ + return strcmp(a->sbuffer, b->sbuffer); } +} +/* EOF */ diff --git a/bwb_tbl.c b/bwb_tbl.c index c92c4f3..cae5f48 100644 --- a/bwb_tbl.c +++ b/bwb_tbl.c @@ -1,352 +1,165 @@ /*************************************************************** - - bwb_tbl.c Command, Function, Operator, - and Error-Message Tables + + bwb_tbl.c Command, Function, Operator, + and Error-Message Tables for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include - -#include "bwbasic.h" -#include "bwb_mes.h" - -int err_line = 0; /* line in which error occurred */ -int err_number = 0; /* number of last error */ - -/*************************************************************** - - Command Table for Bywater BASIC -***************************************************************/ - -struct bwb_command bwb_cmdtable[ COMMANDS ] = - { - -#if PERMANENT_DEBUG - { CMD_VARS, bwb_vars }, - { CMD_CMDS, bwb_cmds }, - { CMD_FNCS, bwb_fncs }, -#endif -#if UNIX_CMDS - { CMD_CHDIR, bwb_chdir }, - { CMD_MKDIR, bwb_mkdir }, - { CMD_RMDIR, bwb_rmdir }, - { CMD_KILL, bwb_kill }, - { CMD_ENVIRON, bwb_environ }, -#endif - -#if INTERACTIVE - { CMD_LIST, bwb_list }, - { CMD_LOAD, bwb_load }, - { CMD_RUN, bwb_run }, - { CMD_SAVE, bwb_save }, - { CMD_DELETE, bwb_delete }, - { CMD_NEW, bwb_new }, - { CMD_QUIT, bwb_system }, - { CMD_SYSTEM, bwb_system }, -#endif -#if MS_CMDS - { CMD_DEFDBL, bwb_ddbl }, - { CMD_DEFINT, bwb_dint }, - { CMD_DEFSNG, bwb_dsng }, - { CMD_DEFSTR, bwb_dstr }, - { CMD_MID, bwb_mid }, /* Added this extension (JBV) */ -#if IMP_CMDCLS - { CMD_CLS, bwb_cls }, -#endif -#if IMP_CMDCOLOR - { CMD_COLOR, bwb_color }, -#endif -#if IMP_CMDLOC - { CMD_LOCATE, bwb_locate }, -#endif -#endif +#include "bwbasic.h" -#if STRUCT_CMDS - { CMD_CALL, bwb_call }, - { CMD_SUB, bwb_sub }, - { CMD_FUNCTION, bwb_function }, - { CMD_LABEL, bwb_null }, - { CMD_ELSE, bwb_else }, - { CMD_ELSEIF, bwb_elseif }, - { CMD_SELECT, bwb_select }, - { CMD_CASE, bwb_case }, - { CMD_LOOP, bwb_loop }, - { CMD_EXIT, bwb_exit }, -#endif -#if COMMON_CMDS - { CMD_MERGE, bwb_merge }, - { CMD_CHAIN, bwb_chain }, - { CMD_COMMON, bwb_common }, - { CMD_ERROR, bwb_lerror }, - { CMD_WIDTH, bwb_width }, - { CMD_TRON, bwb_tron }, - { CMD_TROFF, bwb_troff }, - { CMD_FILES, bwb_files }, - { CMD_EDIT, bwb_edit }, - { CMD_ERASE, bwb_erase }, - { CMD_SWAP, bwb_swap }, - { CMD_NAME, bwb_name }, - { CMD_CLEAR, bwb_clear }, - { CMD_WHILE, bwb_while }, - { CMD_WEND, bwb_wend }, - { CMD_WRITE, bwb_write }, - { CMD_OPEN, bwb_open }, - { CMD_CLOSE, bwb_close }, - { CMD_GET, bwb_get }, - { CMD_PUT, bwb_put }, - { CMD_LSET, bwb_lset }, - { CMD_RSET, bwb_rset }, - { CMD_FIELD, bwb_field }, - { CMD_LINE, bwb_line }, - { CMD_RENUM, bwb_renum }, /* Added this extension (JBV) */ -#endif +/* +specifier Replaced by Example +%a Abbreviated weekday name * Thu +%A Full weekday name * Thursday +%b Abbreviated month name * Aug +%B Full month name * August +%c Date and time representation * Thu Aug 23 14:55:02 2001 +%C Year divided by 100 and truncated to integer (00-99) 20 +%d Day of the month, zero-padded (01-31) 23 +%D Short MM/DD/YY date, equivalent to %m/%d/%y 08/23/01 +%e Day of the month, space-padded ( 1-31) 23 +%F Short YYYY-MM-DD date, equivalent to %Y-%m-%d 2001-08-23 +%g Week-based year, last two digits (00-99) 01 +%G Week-based year 2001 +%h Abbreviated month name * (same as %b) Aug +%H Hour in 24h format (00-23) 14 +%I Hour in 12h format (01-12) 02 +%j Day of the year (001-366) 235 +%m Month as a decimal number (01-12) 08 +%M Minute (00-59) 55 +%n New-line character ('\n') +%p AM or PM designation PM +%r 12-hour clock time * 02:55:02 pm +%R 24-hour HH:MM time, equivalent to %H:%M 14:55 +%S Second (00-61) 02 +%t Horizontal-tab character ('\t') +%T ISO 8601 time format (HH:MM:SS), equivalent to %H:%M:%S 14:55:02 +%u ISO 8601 weekday as number with Monday as 1 (1-7) 4 +%U Week number with the first Sunday as the first day of week one (00-53) 33 +%V ISO 8601 week number (00-53) 34 +%w Weekday as a decimal number with Sunday as 0 (0-6) 4 +%W Week number with the first Monday as the first day of week one (00-53) 34 +%x Date representation * 08/23/01 +%X Time representation * 14:55:02 +%y Year, last two digits (00-99) 01 +%Y Year 2001 +%z ISO 8601 offset from UTC in timezone (1 minute=1, 1 hour=100) +If timezone cannot be termined, no characters +100 +%Z Timezone name or abbreviation * +If timezone cannot be termined, no characters CDT +%% A % sign % + +*/ + + +/* +NOTE: +Bywater BASIC is an interpreter, not a compiler, so full compatibility is impossible. +There is NO plan to implement the VB1-VB6 forms, events, objects, DLL, OCX, and so on. +This is only about compatible intrinsic commands, functions, and operators. +*/ + +struct bwb_version bwb_vertable[NUM_VERSIONS] = +{ + /* Name, Value , Descrption , Year , ID , REM , STMT, OptionFlags , + * OptionDateFormat, OptionTimeFormat */ + {"BYWATER", B14, "Bywater BASIC", 2014, "B14", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON | OPTION_TRACE_ON, "%m/%d/%Y","%H:%M:%S"}, + {"DARTMOUTH", D64, "Dartmouth BASIC", 1964, "D64", '\0', '\0', FALSE, "%m/%d/%Y","%H:%M:%S"}, + {"ECMA-55", E78, "ECMA-55", 1978, "E78", '\0', '\0', FALSE, "%m/%d/%Y","%H:%M:%S"}, + {"BASIC-80", M80, "Microsoft BASIC-80", 1980, "M80", '\'', ':', OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"TRS-83", T83, "TRS-80 Model III", 1980, "T83", '\'', ':', OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"TRS-84", T84, "TRS-80 Model 4", 1983, "T84", '\'', ':', OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"GW-BASIC", M85, "Microsoft GW-BASIC", 1985, "M85", '\'', ':', OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"ECMA-116", E86, "ECMA-116", 1986, "E86", '!', '\0', OPTION_BASE_ONE | OPTION_LABELS_ON | OPTION_STRICT_ON, "%Y-%m-%d","%H:%M:%S"}, + {"QBASIC", M88, "Microsoft QBASIC", 1988, "M88", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"VBDOS", M90, "Microsoft VBDOS", 1990, "M90", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"VB1", M91, "Microsoft VB1", 1991, "M91", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"VB2", M92, "Microsoft VB2", 1992, "M92", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"VB3", M93, "Microsoft VB3", 1993, "M93", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"VB4", M95, "Microsoft VB4", 1995, "M95", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"VB5", M97, "Microsoft VB5", 1997, "M97", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, + {"VB6", M98, "Microsoft VB6", 1998, "M98", '\'', ':', OPTION_LABELS_ON | OPTION_BUGS_ON, "%m/%d/%Y","%H:%M:%S"}, +}; - /* The remainder are the core functions defined for ANSI Minimal BASIC */ - { CMD_DATA, bwb_data }, - { CMD_DEF, bwb_def }, - { CMD_DIM, bwb_dim }, - { CMD_END, bwb_xend }, - { CMD_FOR, bwb_for }, - { CMD_DO, bwb_do }, /* not really core but needed in two different places */ - { CMD_GO, bwb_go }, - { CMD_GOSUB, bwb_gosub }, - { CMD_GOTO, bwb_goto }, - { CMD_IF, bwb_if }, - { CMD_INPUT, bwb_input }, - { CMD_LET, bwb_let }, - { CMD_NEXT, bwb_next }, - { CMD_ON, bwb_on }, - { CMD_OPTION, bwb_option }, - { CMD_PRINT, bwb_print }, - { CMD_RANDOMIZE, bwb_randomize }, - { CMD_READ, bwb_read }, - { CMD_REM, bwb_rem }, - { CMD_RESTORE, bwb_restore }, - { CMD_RETURN, bwb_return }, - { CMD_STOP, bwb_stop } - }; /*************************************************************** - - Predefined Function Table for Bywater BASIC - + + Operator Table for Bywater BASIC + ***************************************************************/ - -struct bwb_function bwb_prefuncs[ FUNCTIONS ] = - { - -#if INTENSIVE_DEBUG - { "TEST", NUMBER, 2, fnc_test, (struct bwb_function *) NULL, 0 }, -#endif - -#if MS_FUNCS /* Functions unique to Microsoft GWBASIC (tm) */ - { "ASC", NUMBER, 1, fnc_asc, (struct bwb_function *) NULL, 0 }, - { "MKD$", STRING, 1, fnc_mkd, (struct bwb_function *) NULL, 0 }, - { "MKI$", STRING, 1, fnc_mki, (struct bwb_function *) NULL, 0 }, - { "MKS$", STRING, 1, fnc_mks, (struct bwb_function *) NULL, 0 }, - { "CVD", NUMBER, 1, fnc_cvd, (struct bwb_function *) NULL, 0 }, - { "CVS", NUMBER, 1, fnc_cvs, (struct bwb_function *) NULL, 0 }, - { "CVI", NUMBER, 1, fnc_cvi, (struct bwb_function *) NULL, 0 }, - { "CINT", NUMBER, 1, fnc_cint, (struct bwb_function *) NULL, 0 }, - { "CSNG", NUMBER, 1, fnc_csng, (struct bwb_function *) NULL, 0 }, - { "ENVIRON$",STRING, 1, fnc_environ, (struct bwb_function *) NULL, 0 }, - { "ERR", NUMBER, 0, fnc_err, (struct bwb_function *) NULL, 0 }, - { "ERL", NUMBER, 0, fnc_erl, (struct bwb_function *) NULL, 0 }, - { "LOC", NUMBER, 1, fnc_loc, (struct bwb_function *) NULL, 0 }, - { "LOF", NUMBER, 1, fnc_lof, (struct bwb_function *) NULL, 0 }, - { "EOF", NUMBER, 1, fnc_eof, (struct bwb_function *) NULL, 0 }, - { "INSTR", NUMBER, 1, fnc_instr, (struct bwb_function *) NULL, 0 }, - { "SPC", STRING, 1, fnc_spc, (struct bwb_function *) NULL, 0 }, - { "SPACE$", STRING, 1, fnc_space, (struct bwb_function *) NULL, 0 }, - { "STRING$", STRING, 1, fnc_string, (struct bwb_function *) NULL, 0 }, - { "MID$", STRING, 3, fnc_mid, (struct bwb_function *) NULL, 0 }, - { "LEFT$", STRING, 2, fnc_left, (struct bwb_function *) NULL, 0 }, - { "RIGHT$", STRING, 2, fnc_right, (struct bwb_function *) NULL, 0 }, - { "TIMER", NUMBER, 0, fnc_timer, (struct bwb_function *) NULL, 0 }, - { "HEX$", STRING, 1, fnc_hex, (struct bwb_function *) NULL, 0 }, - { "OCT$", STRING, 1, fnc_oct, (struct bwb_function *) NULL, 0 }, -#if IMP_FNCINKEY == 1 - { "INKEY$", STRING, 1, fnc_inkey, (struct bwb_function *) NULL, 0 }, -#endif -#endif - -#if COMMON_FUNCS /* Functions common to GWBASIC and ANSI Full BASIC */ - { "CHR$", NUMBER, 0, fnc_chr, (struct bwb_function *) NULL, 0 }, - { "LEN", NUMBER, 1, fnc_len, (struct bwb_function *) NULL, 0 }, - { "POS", NUMBER, 0, fnc_pos, (struct bwb_function *) NULL, 0 }, - { "VAL", NUMBER, 1, fnc_val, (struct bwb_function *) NULL, 0 }, - { "STR$", STRING, 1, fnc_str, (struct bwb_function *) NULL, 0 }, - { "DATE$", STRING, 0, fnc_date, (struct bwb_function *) NULL, 0 }, - { "TIME$", STRING, 0, fnc_time, (struct bwb_function *) NULL, 0 }, -#endif - -#if ANSI_FUNCS /* Functions required for ANSI Full BASIC */ - { "COSH", NUMBER, 1, fnc_cosh, (struct bwb_function *) NULL, 0}, - { "SINH", NUMBER, 1, fnc_sinh, (struct bwb_function *) NULL, 0}, - { "TANH", NUMBER, 1, fnc_tanh, (struct bwb_function *) NULL, 0}, - { "LOG10", NUMBER, 1, fnc_log10, (struct bwb_function *) NULL, 0}, - { "LOG2", NUMBER, 1, fnc_log2, (struct bwb_function *) NULL, 0}, -{ "ACOS", NUMBER, 1, fnc_acos, (struct bwb_function *) NULL, 0}, -{ "ASIN", NUMBER, 1, fnc_asin, (struct bwb_function *) NULL, 0}, -{ "COT", NUMBER, 1, fnc_cotan, (struct bwb_function *) NULL, 0}, -{ "CSC", NUMBER, 1, fnc_cosecant, (struct bwb_function *) NULL, 0}, -{ "SEC", NUMBER, 1, fnc_secant, (struct bwb_function *) NULL, 0}, -#endif - - /* The remainder are core functions defined for ANSI Minimal BASIC */ - -#if COMPRESS_FUNCS - { "ABS", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_ABS }, - { "ATN", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_ATN }, - { "COS", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_COS }, - { "EXP", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_EXP }, - { "INT", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_INT }, - { "LOG", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_LOG }, - { "RND", NUMBER, 0, fnc_core, (struct bwb_function *) NULL, F_RND }, - { "SGN", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_SGN }, - { "SIN", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_SIN }, - { "SQR", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_SQR }, - { "TAN", NUMBER, 1, fnc_core, (struct bwb_function *) NULL, F_TAN }, -#else - { "ABS", NUMBER, 1, fnc_abs, (struct bwb_function *) NULL, 0 }, - { "ATN", NUMBER, 1, fnc_atn, (struct bwb_function *) NULL, 0 }, - { "COS", NUMBER, 1, fnc_cos, (struct bwb_function *) NULL, 0 }, - { "EXP", NUMBER, 1, fnc_exp, (struct bwb_function *) NULL, 0 }, - { "INT", NUMBER, 1, fnc_int, (struct bwb_function *) NULL, 0 }, - { "LOG", NUMBER, 1, fnc_log, (struct bwb_function *) NULL, 0 }, - { "RND", NUMBER, 0, fnc_rnd, (struct bwb_function *) NULL, 0 }, - { "SGN", NUMBER, 1, fnc_sgn, (struct bwb_function *) NULL, 0 }, - { "SIN", NUMBER, 1, fnc_sin, (struct bwb_function *) NULL, 0 }, - { "SQR", NUMBER, 1, fnc_sqr, (struct bwb_function *) NULL, 0 }, - { "TAN", NUMBER, 1, fnc_tan, (struct bwb_function *) NULL, 0 }, +/* , B14 | M88 | M90 | M91 |M92 |M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78 */ +struct bwb_op exp_ops[NUM_OPERATORS] = +{ + /* Name, UniqueID, # , B14 | M88 | M90 | M91 |M92 |M93 | M95 | M97 | M98 | + * M85 | M80 | E86 | D64 | E78 */ + {"NOT", OP_NOT, 2, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"AND", OP_AND, 13, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"OR", OP_OR, 14, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"XOR", OP_XOR, 15, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"IMP", OP_IMPLIES, 16, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"EQV", OP_EQUIV, 17, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"MOD", OP_MODULUS, 5, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80}, + {"<>", OP_NOTEQUAL, 8, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"<=", OP_LTEQ, 11, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"=<", OP_LTEQ, 11, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {">=", OP_GTEQ, 12, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"=>", OP_GTEQ, 12, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"<", OP_LESSTHAN, 9, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {">", OP_GREATERTHAN, 10, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"^", OP_EXPONENT, 0, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"[", OP_EXPONENT, 0, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"*", OP_MULTIPLY, 3, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"/", OP_DIVIDE, 3, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"\\", OP_INTDIVISION, 4, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"+", OP_ADD, 6, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"-", OP_SUBTRACT, 6, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"=", OP_EQUALS, 7, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"=", OP_ASSIGN, 18, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {";", OP_STRJOIN, 19, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {",", OP_STRTAB, 20, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"-", OP_NEGATION, 1, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"+", OP_POSATION, 1, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, + {"#", OP_POSATION, 1, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, /* EOF(#1) */ +#if FALSE + {"&", OP_STRJOIN, 19, B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 | M85 | M80 | E86 | D64 | E78}, /* ... A$ & B$ ... */ + {"LIKE", OP_STRLIKE, 7, B14 | M9X}, /* IF A$ LIKE "*.TXT" THEN ... */ #endif - { "TAB", STRING, 1, fnc_tab, (struct bwb_function *) NULL, 0 } - }; - -/*************************************************************** - - Operator Table for Bywater BASIC - -***************************************************************/ - -struct bwb_op exp_ops[ N_OPERATORS ] = - { - { "NOT", OP_NOT, 2 }, /* multiple-character operators */ - { "AND", OP_AND, 13 }, /* should be tested first because */ - { "OR", OP_OR, 14 }, /* e.g. a ">=" would be matched */ - { "XOR", OP_XOR, 15 }, /* as "=" if the single-character */ - { "IMP", OP_IMPLIES, 16 }, /* operator came first */ - { "EQV", OP_EQUIV, 17 }, - { "MOD", OP_MODULUS, 5 }, - { "<>", OP_NOTEQUAL, 8 }, - { "<=", OP_LTEQ, 11 }, - { "=<", OP_LTEQ, 11 }, /* allow either form */ - { ">=", OP_GTEQ, 12 }, - { "=>", OP_GTEQ, 12 }, /* allow either form */ - { "<", OP_LESSTHAN, 9 }, - { ">", OP_GREATERTHAN, 10 }, - { "^", OP_EXPONENT, 0 }, - { "*", OP_MULTIPLY, 3 }, - { "/", OP_DIVIDE, 3 }, - { "\\", OP_INTDIVISION, 4 }, - { "+", OP_ADD, 6 }, - { "-", OP_SUBTRACT, 6 }, - { "=", OP_EQUALS, 7 }, - { "=", OP_ASSIGN, 18 }, /* don't worry: OP_EQUALS will be converted to OP_ASSIGN if necessary */ - { ";", OP_STRJOIN, 19 }, - { ",", OP_STRTAB, 20 }, - { "-", OP_NEGATION, 1 } /* Right below exponentiation (JBV) */ - }; - -/* Error messages used more than once */ - -char err_openfile[] = ERR_OPENFILE; -char err_getmem[] = ERR_GETMEM; -char err_noln[] = ERR_NOLN; -char err_nofn[] = ERR_NOFN; -char err_lnnotfound[] = ERR_LNNOTFOUND; -char err_incomplete[] = ERR_INCOMPLETE; -char err_valoorange[] = ERR_VALOORANGE; -char err_syntax[] = ERR_SYNTAX; -char err_devnum[] = ERR_DEVNUM; -char err_dev[] = ERR_DEV; -char err_opsys[] = ERR_OPSYS; -char err_argstr[] = ERR_ARGSTR; -char err_defchar[] = ERR_DEFCHAR; -char err_mismatch[] = ERR_MISMATCH; -char err_dimnotarray[] =ERR_DIMNOTARRAY; -char err_retnogosub[] = ERR_RETNOGOSUB; -char err_od[] = ERR_OD; -char err_overflow[] = ERR_OVERFLOW; -char err_nf[] = ERR_NF; -char err_uf[] = ERR_UF; -char err_dbz[] = ERR_DBZ; -char err_redim[] = ERR_REDIM; -char err_obdim[] = ERR_OBDIM; -char err_uc[] = ERR_UC; -char err_noprogfile[] = ERR_NOPROGFILE; - -/*************************************************************** - - Error Message Table for Bywater BASIC - -***************************************************************/ - -char *err_table[ N_ERRORS ] = - { - err_openfile, - err_getmem, - err_noln, - err_nofn, - err_lnnotfound, - err_incomplete, - err_valoorange, - err_syntax, - err_devnum, - err_dev, - err_opsys, - err_argstr, - err_defchar, - err_mismatch, - err_dimnotarray, - err_od, - err_overflow, - err_nf, - err_uf, - err_dbz, - err_redim, - err_obdim, - err_uc, - err_noprogfile - }; +}; +/* EOF */ diff --git a/bwb_tcc.c b/bwb_tcc.c deleted file mode 100644 index 52e870d..0000000 --- a/bwb_tcc.c +++ /dev/null @@ -1,4 +0,0 @@ -/* This is for Borland Turbo C++ only: it requests the linker to - establish a larger-than-usual stack of 8192 bytes for bwBASIC */ - -extern unsigned _stklen = 8192U; diff --git a/bwb_var.c b/bwb_var.c index 00315c5..04c5c4e 100644 --- a/bwb_var.c +++ b/bwb_var.c @@ -1,205 +1,184 @@ /*************************************************************** - + bwb_var.c Variable-Handling Routines for Bywater BASIC Interpreter - - Commands: DIM - COMMON - ERASE - SWAP - CLEAR - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include #include "bwbasic.h" -#include "bwb_mes.h" -int dim_base = 0; /* set by OPTION BASE */ -static int dimmed = FALSE; /* has DIM been called? */ -static int first, last; /* first, last for DEFxxx commands */ -/* Prototypes for functions visible to this file only */ -#if ANSI_C -static int dim_check( struct bwb_variable *v, int *pp ); -static int var_defx( struct bwb_line *l, int type ); -static int var_letseq( char *buffer, int *position, int *start, int *end ); -static size_t dim_unit( struct bwb_variable *v, int *pp ); -#else -static int dim_check(); -static int var_defx(); -static int var_letseq(); -static size_t dim_unit(); -#endif +static int dimmed = FALSE; /* has DIM been called? */ +static int first, last; /* first, last for DEFxxx commands */ -/*************************************************************** +/* Prototypes for functions visible to this file only */ - FUNCTION: var_init() +static int +dim_check(struct bwb_variable * v, int *pp); +static int +var_defx(struct bwb_line * l, int type); +static int +var_letseq(char *buffer, int *position, int *start, int *end); +static size_t +dim_unit(struct bwb_variable * v, int *pp); +static struct bwb_variable * +var_islocal(char *buffer); - DESCRIPTION: This function initializes the internal - linked list of variables. +/*************************************************************** + + FUNCTION: var_init() + + DESCRIPTION: This function initializes the internal + linked list of variables. + ***************************************************************/ -#if ANSI_C -int -var_init( int task ) -#else int -var_init( task ) - int task; -#endif - { - LOCALTASK var_start.next = &(LOCALTASK var_end); - strcpy( LOCALTASK var_start.name, "" ); - strcpy( LOCALTASK var_end.name, "" ); +var_init(int task) +{ + bwx_DEBUG(__FUNCTION__); + + LOCALTASK var_start.next = &(LOCALTASK var_end); + strcpy(LOCALTASK var_start.name, ""); + strcpy(LOCALTASK var_end.name, ""); return TRUE; - } +} -#if COMMON_CMDS /*************************************************************** - + FUNCTION: bwb_common() - - DESCRIPTION: This C function implements the BASIC - COMMON command. - - SYNTAX: COMMON variable [, variable...] - + + DESCRIPTION: This C function implements the BASIC + COMMON command. + + SYNTAX: COMMON variable [, variable...] + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_common( struct bwb_line *l ) -#else -struct bwb_line * -bwb_common( l ) - struct bwb_line *l; -#endif - { - register int loop; - struct bwb_variable *v; - char tbuf[ MAXSTRINGSIZE + 1 ]; +bwb_COMMON(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); /* loop while arguments are available */ - loop = TRUE; - while ( loop == TRUE ) - { + while (TRUE) + { + struct bwb_variable *v; + char tbuf[BasicStringLengthMax + 1]; /* get variable name and find variable */ - bwb_getvarname( l->buffer, tbuf, &( l->position ) ); - - if ( ( v = var_find( tbuf ) ) == NULL ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } + bwb_getvarname(l->buffer, tbuf, &(l->position)); - v->common = TRUE; /* set common flag to true */ + if ((v = var_find(tbuf)) == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); + } + v->common = TRUE; /* set common flag to true */ /* check for comma */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] != ',' ) - { - return bwb_zline( l ); /* no comma; leave */ - } - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); - + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] != ',') + { + /* no comma; leave */ + return bwb_zline(l); } - - return bwb_zline( l ); + ++(l->position); + adv_ws(l->buffer, &(l->position)); } -/*********************************************************** - - FUNCTION: bwb_erase() + return bwb_zline(l); - DESCRIPTION: This C function implements the BASIC - ERASE command. - - SYNTAX: ERASE variable[, variable]... +} +/*********************************************************** + + FUNCTION: bwb_erase() + + DESCRIPTION: This C function implements the BASIC + ERASE command. + + SYNTAX: ERASE variable[, variable]... + ***********************************************************/ -#if ANSI_C struct bwb_line * -bwb_erase( struct bwb_line *l ) -#else -struct bwb_line * -bwb_erase( l ) - struct bwb_line *l; -#endif - { - register int loop; +bwb_ERASE(struct bwb_line * l) +{ + register int loop; struct bwb_variable *v; - struct bwb_variable *p; /* previous variable in linked list */ - char tbuf[ MAXSTRINGSIZE + 1 ]; - bstring *sp; /* JBV */ - register int n; /* JBV */ + struct bwb_variable *p; /* previous variable in linked list */ + char tbuf[BasicStringLengthMax + 1]; + bstring *sp; /* JBV */ + register int n; /* JBV */ + + bwx_DEBUG(__FUNCTION__); /* loop while arguments are available */ loop = TRUE; - while ( loop == TRUE ) - { + while (loop == TRUE) + { /* get variable name and find variable */ - bwb_getvarname( l->buffer, tbuf, &( l->position ) ); - - if ( ( v = var_find( tbuf ) ) == NULL ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } + bwb_getvarname(l->buffer, tbuf, &(l->position)); + if ((v = var_find(tbuf)) == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); + } /* be sure the variable is dimensioned */ - if (( v->dimensions < 1 ) || ( v->array_sizes[ 0 ] < 1 )) - { - bwb_error( err_dimnotarray ); - return bwb_zline( l ); - } - + if ((v->dimensions < 1) || (v->array_sizes[0] < 1)) + { + bwb_error(err_dimnotarray); + return bwb_zline(l); + } /* find previous variable in chain */ - for ( p = &CURTASK var_start; p->next != v; p = p->next ) - { + for (p = &CURTASK var_start; p->next != v; p = p->next) + { ; - } + } /* reassign linkage */ @@ -208,182 +187,163 @@ bwb_erase( l ) /* deallocate memory */ /* Revised to FREE pass-thru calls by JBV */ - FREE( v->array_sizes, "bwb_erase" ); - v->array_sizes = NULL; /* JBV */ - FREE( v->array_pos , "bwb_erase"); + FREE(v->array_sizes, "bwb_erase"); + v->array_sizes = NULL; /* JBV */ + FREE(v->array_pos, "bwb_erase"); v->array_pos = NULL; /* JBV */ - if ( v->type == NUMBER ) - { + if (v->type == NUMBER) + { /* Revised to FREE pass-thru call by JBV */ - FREE( v->memnum, "bwb_erase" ); - v->memnum = NULL; /* JBV */ - } + FREE(v->memnum, "bwb_erase"); + v->memnum = NULL; /* JBV */ + } else - { - /* Following section added by JBV */ - sp = v->memstr; - for ( n = 0; n < (int) v->array_units; ++n ) - { - if ( sp[ n ].sbuffer != NULL ) - { - /* Revised to FREE pass-thru call by JBV */ - FREE( sp[ n ].sbuffer, "bwb_erase" ); - sp[ n ].sbuffer = NULL; - } - sp[ n ].rab = FALSE; - sp[ n ].length = 0; - } + { + /* Following section added by JBV */ + sp = v->memstr; + for (n = 0; n < (int) v->array_units; ++n) + { + if (sp[n].sbuffer != NULL) + { + /* Revised to FREE pass-thru call by + * JBV */ + FREE(sp[n].sbuffer, "bwb_erase"); + sp[n].sbuffer = NULL; + } + sp[n].rab = FALSE; + sp[n].length = 0; + } /* Revised to FREE pass-thru call by JBV */ - FREE( v->memstr, "bwb_erase" ); - v->memstr = NULL; /* JBV */ - } + FREE(v->memstr, "bwb_erase"); + v->memstr = NULL; /* JBV */ + } /* Revised to FREE pass-thru call by JBV */ - FREE( v, "bwb_erase" ); - v = NULL; /* JBV */ + FREE(v, "bwb_erase"); + v = NULL; /* JBV */ /* check for comma */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] != ',' ) - { - return bwb_zline( l ); /* no comma; leave */ - } - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); - + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] != ',') + { + return bwb_zline(l); /* no comma; leave */ } - - return bwb_zline( l ); + ++(l->position); + adv_ws(l->buffer, &(l->position)); } -/*********************************************************** - - FUNCTION: bwb_swap() - - DESCRIPTION: This C function implements the BASIC - SWAP command. + return bwb_zline(l); - SYNTAX: SWAP variable, variable +} +/*********************************************************** + + FUNCTION: bwb_swap() + + DESCRIPTION: This C function implements the BASIC + SWAP command. + + SYNTAX: SWAP variable, variable + ***********************************************************/ -#if ANSI_C -struct bwb_line * -bwb_swap( struct bwb_line *l ) -#else struct bwb_line * -bwb_swap( l ) - struct bwb_line *l; -#endif - { - struct bwb_variable tmp; /* temp holder */ - struct bwb_variable *lhs, *rhs; /* left and right- hand side of swap statement */ - char tbuf[ MAXSTRINGSIZE + 1 ]; +bwb_SWAP(struct bwb_line * l) +{ + struct bwb_variable tmp;/* temp holder */ + struct bwb_variable *lhs, *rhs; /* left and right- hand side of swap + * statement */ + char tbuf[BasicStringLengthMax + 1]; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_swap(): buffer is <%s>", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* get left variable name and find variable */ - bwb_getvarname( l->buffer, tbuf, &( l->position ) ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_swap(): tbuf is <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif - - if ( ( lhs = var_find( tbuf ) ) == NULL ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_swap(): lhs variable <%s> found", - lhs->name ); - bwb_debug( bwb_ebuf ); -#endif + bwb_getvarname(l->buffer, tbuf, &(l->position)); + if ((lhs = var_find(tbuf)) == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); + } /* check for comma */ - adv_ws( l->buffer, &( l->position ) ); - if ( l->buffer[ l->position ] != ',' ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] != ',') + { + bwb_error(err_syntax); + return bwb_zline(l); + } + ++(l->position); + adv_ws(l->buffer, &(l->position)); /* get right variable name */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_swap(): buffer is now <%s>", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); -#endif - - bwb_getvarname( l->buffer, tbuf, &( l->position ) ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_swap(): tbuf is <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#endif + bwb_getvarname(l->buffer, tbuf, &(l->position)); - if ( ( rhs = var_find( tbuf ) ) == NULL ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } + if ((rhs = var_find(tbuf)) == NULL) + { + bwb_error(err_syntax); + return bwb_zline(l); + } /* check to be sure that both variables are of the same type */ - if ( rhs->type != lhs->type ) - { - bwb_error( err_mismatch ); - return bwb_zline( l ); - } - + if (rhs->type != lhs->type) + { + bwb_error(err_mismatch); + return bwb_zline(l); + } /* copy lhs to temp, rhs to lhs, then temp to rhs */ + tmp.memnum = NULL; /* AF5NE */ + tmp.memstr = NULL; /* AF5NE */ - if ( lhs->type == NUMBER ) - { + if (lhs->type == NUMBER) + { tmp.memnum = lhs->memnum; - } + } else - { + { tmp.memstr = lhs->memstr; - } + } tmp.array_sizes = lhs->array_sizes; tmp.array_units = lhs->array_units; tmp.array_pos = lhs->array_pos; tmp.dimensions = lhs->dimensions; - if ( lhs->type == NUMBER ) - { + + lhs->memnum = NULL; /* AF5NE */ + lhs->memstr = NULL; /* AF5NE */ + + + if (lhs->type == NUMBER) + { lhs->memnum = rhs->memnum; - } + } else - { + { lhs->memstr = rhs->memstr; - } + } lhs->array_sizes = rhs->array_sizes; lhs->array_units = rhs->array_units; lhs->array_pos = rhs->array_pos; lhs->dimensions = rhs->dimensions; - if ( lhs->type == NUMBER ) - { + + rhs->memnum = NULL; /* AF5NE */ + rhs->memstr = NULL; /* AF5NE */ + + + if (lhs->type == NUMBER) + { rhs->memnum = tmp.memnum; - } + } else - { + { rhs->memstr = tmp.memstr; - } + } rhs->array_sizes = tmp.array_sizes; rhs->array_units = tmp.array_units; rhs->array_pos = tmp.array_pos; @@ -391,140 +351,160 @@ bwb_swap( l ) /* return */ - return bwb_zline( l ); + return bwb_zline(l); - } +} -#endif /* COMMON_CMDS */ /*********************************************************** - - FUNCTION: bwb_clear() - - DESCRIPTION: This C function implements the BASIC - CLEAR command. - - SYNTAX: CLEAR - + + FUNCTION: bwb_clear() + + DESCRIPTION: This C function implements the BASIC + CLEAR command. + + SYNTAX: CLEAR + ***********************************************************/ -#if ANSI_C -struct bwb_line * -bwb_clear( struct bwb_line *l ) -#else -struct bwb_line * -bwb_clear( l ) - struct bwb_line *l; -#endif - { +void +var_CLEAR(void) +{ struct bwb_variable *v; - register int n; - bstring *sp; - bnumber *np; + register int n; + bstring *sp; + BasicNumberType *np; - for ( v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next ) + bwx_DEBUG(__FUNCTION__); + + for (v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next) + { + if (v->preset != TRUE) { - if ( v->preset != TRUE ) + switch (v->type) { - switch( v->type ) + case NUMBER: + np = v->memnum; + for (n = 0; n < (int) v->array_units; ++n) { - case NUMBER: - np = v->memnum; - for ( n = 0; n < (int) v->array_units; ++n ) - { - np[ n ] = (bnumber) 0.0; - } - break; - case STRING: - sp = v->memstr; - for ( n = 0; n < (int) v->array_units; ++n ) - { - if ( sp[ n ].sbuffer != NULL ) - { - /* Revised to FREE pass-thru call by JBV */ - FREE( sp[ n ].sbuffer, "bwb_clear" ); - sp[ n ].sbuffer = NULL; - } - sp[ n ].rab = FALSE; - sp[ n ].length = 0; - } - break; + np[n] = (BasicNumberType) 0.0; + } + break; + case STRING: + sp = v->memstr; + for (n = 0; n < (int) v->array_units; ++n) + { + if (sp[n].sbuffer != NULL) + { + /* Revised to FREE pass-thru + * call by JBV */ + FREE(sp[n].sbuffer, "bwb_clear"); + sp[n].sbuffer = NULL; + } + sp[n].rab = FALSE; + sp[n].length = 0; } + break; } } + } - return bwb_zline( l ); + dimmed = FALSE; +} - } +struct bwb_line * +bwb_CLEAR(struct bwb_line * l) +{ -/*********************************************************** + var_CLEAR(); - FUNCTION: var_delcvars() + /* ignoare all parameters */ + adv_eos(l->buffer, &(l->position)); - DESCRIPTION: This function deletes all variables - in memory except those previously marked - as common. + return bwb_zline(l); +} +/*********************************************************** + + FUNCTION: var_delcvars() + + DESCRIPTION: This function deletes all variables + in memory except those previously marked + as common. + ***********************************************************/ -#if ANSI_C int -var_delcvars( void ) -#else -int -var_delcvars() -#endif - { +var_delcvars(void) +{ struct bwb_variable *v; - struct bwb_variable *p; /* previous variable */ - bstring *sp; /* JBV */ - register int n; /* JBV */ + struct bwb_variable *p; /* previous variable */ + bstring *sp; /* JBV */ + register int n; /* JBV */ + + + bwx_DEBUG(__FUNCTION__); + + + for (v = CURTASK var_start.next; (v != NULL) && (v != &CURTASK var_end); v = v->next) + { + + + if ((v->preset != TRUE) && (v->common != TRUE)) - p = &CURTASK var_start; - for ( v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next ) { - if ( v->common != TRUE ) - { - /* if the variable is dimensioned, release allocated memory */ - if ( v->dimensions > 0 ) - { + /* if the variable is dimensioned, release allocated + * memory */ + + if (v->dimensions > 0) + { /* deallocate memory */ /* Revised to FREE pass-thru calls by JBV */ - FREE( v->array_sizes, "var_delcvars" ); - v->array_sizes = NULL; /* JBV */ - FREE( v->array_pos, "var_delcvars" ); + FREE(v->array_sizes, "var_delcvars"); + v->array_sizes = NULL; /* JBV */ + FREE(v->array_pos, "var_delcvars"); v->array_pos = NULL; /* JBV */ - if ( v->type == NUMBER ) - { - /* Revised to FREE pass-thru call by JBV */ - FREE( v->memnum, "var_delcvars" ); - v->memnum = NULL; /* JBV */ - } - else - { - /* Following section added by JBV */ - sp = v->memstr; - for ( n = 0; n < (int) v->array_units; ++n ) - { - if ( sp[ n ].sbuffer != NULL ) - { - /* Revised to FREE pass-thru call by JBV */ - FREE( sp[ n ].sbuffer, "var_delcvars" ); - sp[ n ].sbuffer = NULL; - } - sp[ n ].rab = FALSE; - sp[ n ].length = 0; - } - /* Revised to FREE pass-thru call by JBV */ - FREE( v->memstr, "var_delcvars" ); - v->memstr = NULL; /* JBV */ - } + if (v->type == NUMBER) + { + /* Revised to FREE pass-thru call by + * JBV */ + FREE(v->memnum, "var_delcvars"); + v->memnum = NULL; /* JBV */ + } + else + { + /* Following section added by JBV */ + sp = v->memstr; + for (n = 0; n < (int) v->array_units; ++n) + { + if (sp[n].sbuffer != NULL) + { + /* Revised to FREE + * pass-thru call by + * JBV */ + FREE(sp[n].sbuffer, "var_delcvars"); + sp[n].sbuffer = NULL; + } + sp[n].rab = FALSE; + sp[n].length = 0; + } + /* Revised to FREE pass-thru call by + * JBV */ + FREE(v->memstr, "var_delcvars"); + v->memstr = NULL; /* JBV */ } + } + /* find previous variable in chain */ + for (p = &CURTASK var_start; p->next != v; p = p->next) + { + ; + } + /* reassign linkage */ @@ -533,1008 +513,942 @@ var_delcvars() /* deallocate the variable itself */ /* Revised to FREE pass-thru call by JBV */ - FREE( v, "var_delcvars" ); - v = NULL; /* JBV */ - - } - - /* else reset previous variable */ - - else - { - p = v; - } + FREE(v, "var_delcvars"); + /* v = NULL; *//* Variable 'v' is reassigned a value + * before the old one has been used. */ + v = p; } + } return TRUE; - } - -#if MS_CMDS +} /*********************************************************** - - FUNCTION: bwb_ddbl() - - DESCRIPTION: This function implements the BASIC - DEFDBL command. - - SYNTAX: DEFDBL letter[-letter](, letter[-letter])... - + + FUNCTION: bwb_mid() + + DESCRIPTION: This function implements the BASIC + MID$ command. + + Same as MID$ function, except it will set + the desired substring and not return its + value. Added by JBV 10/95 + + SYNTAX: MID$( string-variable$, start-position-in-string + [, number-of-spaces ] ) = expression + ***********************************************************/ -#if ANSI_C struct bwb_line * -bwb_ddbl( struct bwb_line *l ) -#else -struct bwb_line * -bwb_ddbl( l ) - struct bwb_line *l; -#endif - { - - /* call generalized DEF handler with DOUBLE set */ - - var_defx( l, NUMBER ); - - return bwb_zline( l ); - - } +bwb_MID_(struct bwb_line * l) +{ + char tbuf[BasicStringLengthMax + 1]; + char source_string[BasicStringLengthMax + 1]; + struct bwb_variable *v; + int pos; + bstring *d; + int *pp; + int n_params; + int p; + register int n; + int startpos; + int numchars; + int endpos; + int source_length; + int target_length; -/*********************************************************** - FUNCTION: bwb_dint() - DESCRIPTION: This function implements the BASIC - DEFINT command. + int target_terminate; + struct exp_ese *e; - SYNTAX: DEFINT letter[-letter](, letter[-letter])... + bwx_DEBUG(__FUNCTION__); -***********************************************************/ + /* Get past left parenthesis */ + adv_ws(l->buffer, &(l->position)); + ++(l->position); + adv_ws(l->buffer, &(l->position)); -#if ANSI_C -struct bwb_line * -bwb_dint( struct bwb_line *l ) -#else -struct bwb_line * -bwb_dint( l ) - struct bwb_line *l; -#endif + /* Get variable name and find variable */ + bwb_getvarname(l->buffer, tbuf, &(l->position)); + v = var_find(tbuf); + if (v == NULL) + { + sprintf(bwb_ebuf, "in bwb_mid(): failed to find variable"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + if (v->type != STRING) + { + sprintf(bwb_ebuf, "in bwb_mid(): assignment must be to string variable"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + /* read subscripts */ + pos = 0; + if ((v->dimensions == 1) && (v->array_sizes[0] == 1)) + { + n_params = 1; + pp = &p; + pp[0] = dim_base; + } + else { + dim_getparams(l->buffer, &(l->position), &n_params, &pp); + } - /* call generalized DEF handler with INTEGER set */ + CURTASK exps[CURTASK expsc].pos_adv = pos; + for (n = 0; n < v->dimensions; ++n) + { + v->array_pos[n] = pp[n]; + } - var_defx( l, NUMBER ); + /* get bstring pointer */ + d = var_findsval(v, pp); - return bwb_zline( l ); + /* Get past next comma and white space */ + adv_ws(l->buffer, &(l->position)); + ++(l->position); + adv_ws(l->buffer, &(l->position)); + /* Get starting position (expression) */ + adv_element(l->buffer, &(l->position), tbuf); + pos = 0; + e = bwb_exp(tbuf, FALSE, &pos); + if (ERROR_PENDING) + { + return bwb_zline(l); } + startpos = exp_getival(e); -/*********************************************************** - - FUNCTION: bwb_dsng() - DESCRIPTION: This function implements the BASIC - DEFSNG command. - - SYNTAX: DEFSNG letter[-letter](, letter[-letter])... - -***********************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_dsng( struct bwb_line *l ) -#else -struct bwb_line * -bwb_dsng( l ) - struct bwb_line *l; -#endif + /* Get past next comma and white space (if they exist) */ + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ',') + { + target_terminate = 0; + ++(l->position); + adv_ws(l->buffer, &(l->position)); + adv_element(l->buffer, &(l->position), tbuf); + pos = 0; + e = bwb_exp(tbuf, FALSE, &pos); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + numchars = exp_getival(e); + if (numchars == 0) + { + sprintf(bwb_ebuf, "in bwb_mid(): destination string no. of chars out of range"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + } + else { + target_terminate = 1; + numchars = 0; + } - /* call generalized DEF handler with SINGLE set */ + if (numchars < 0) + { + sprintf(bwb_ebuf, "in bwb_mid(): negative string length"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + /* Get past equal sign */ + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == ')') + { + ++(l->position); + adv_ws(l->buffer, &(l->position)); + } + ++(l->position); + adv_ws(l->buffer, &(l->position)); - var_defx( l, NUMBER ); + /* Evaluate string expression */ + e = bwb_exp(l->buffer, FALSE, &(l->position)); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (e->type != STRING) + { + sprintf(bwb_ebuf, "in bwb_mid(): assignment must be from string expression"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + /* Prepare to MID the string */ + str_btoc(source_string, exp_getsval(e)); + str_btoc(tbuf, d); + target_length = strlen(tbuf); + if (startpos > (target_length + 1)) + { + sprintf(bwb_ebuf, "in bwb_mid(): non-contiguous string created"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + if (startpos < 1) + { + sprintf(bwb_ebuf, "in bwb_mid(): destination string start position out of range"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + source_length = strlen(source_string); + if (numchars == 0) + numchars = source_length; + endpos = startpos + numchars - 1; - return bwb_zline( l ); + /* MID the string */ + if (endpos < startpos) + tbuf[startpos - 1] = '\0'; + else + { + int source_counter; + source_counter = 0; + for (n = startpos - 1; n < endpos; ++n) + { + if (source_counter < source_length) + tbuf[n] = source_string[source_counter]; + else + tbuf[n] = ' '; + ++source_counter; + } + /* Terminate if indicated or characters were added */ + if ((endpos > target_length) || (target_terminate == 1)) + tbuf[endpos] = '\0'; } + str_ctob(d, tbuf); -/*********************************************************** + adv_eos(l->buffer, &(l->position)); - FUNCTION: bwb_dstr() + return bwb_zline(l); - DESCRIPTION: This function implements the BASIC - DEFSTR command. +} - SYNTAX: DEFSTR letter[-letter](, letter[-letter])... +/*********************************************************** + + FUNCTION: bwb_ddbl() + + DESCRIPTION: This function implements the BASIC + DEFDBL command. + + SYNTAX: DEFDBL letter[-letter](, letter[-letter])... + ***********************************************************/ -#if ANSI_C -struct bwb_line * -bwb_dstr( struct bwb_line *l ) -#else struct bwb_line * -bwb_dstr( l ) - struct bwb_line *l; -#endif - { +bwb_DEFDBL(struct bwb_line * l) +{ - /* call generalized DEF handler with STRING set */ + bwx_DEBUG(__FUNCTION__); + + /* call generalized DEF handler with DOUBLE set */ - var_defx( l, STRING ); + var_defx(l, NUMBER); - return bwb_zline( l ); + return bwb_zline(l); - } +} /*********************************************************** + + FUNCTION: bwb_dint() + + DESCRIPTION: This function implements the BASIC + DEFINT command. + + SYNTAX: DEFINT letter[-letter](, letter[-letter])... + +***********************************************************/ + +struct bwb_line * +bwb_DEFINT(struct bwb_line * l) +{ + + bwx_DEBUG(__FUNCTION__); - FUNCTION: bwb_mid() + /* call generalized DEF handler with INTEGER set */ - DESCRIPTION: This function implements the BASIC - MID$ command. + var_defx(l, NUMBER); - Same as MID$ function, except it will set - the desired substring and not return its - value. Added by JBV 10/95 + return bwb_zline(l); - SYNTAX: MID$( string-variable$, start-position-in-string - [, number-of-spaces ] ) = expression +} +/*********************************************************** + + FUNCTION: bwb_dsng() + + DESCRIPTION: This function implements the BASIC + DEFSNG command. + + SYNTAX: DEFSNG letter[-letter](, letter[-letter])... + ***********************************************************/ -#if ANSI_C struct bwb_line * -bwb_mid( struct bwb_line *l ) -#else -struct bwb_line * -bwb_mid( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - char source_string[ MAXSTRINGSIZE + 1 ]; - struct bwb_variable *v; - static int pos; - bstring *d; - int *pp; - int n_params; - int p; - register int n; - int startpos, numchars, endpos; - int source_counter, source_length, target_length; - int target_terminate; - struct exp_ese *e; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_mid(): MID$ command" ); - bwb_debug( bwb_ebuf ); -#endif +bwb_DEFSNG(struct bwb_line * l) +{ - /* Get past left parenthesis */ - adv_ws( l->buffer, &( l->position ) ); - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); + bwx_DEBUG(__FUNCTION__); - /* Get variable name and find variable */ - bwb_getvarname( l->buffer, tbuf, &( l->position ) ); - v = var_find( tbuf ); - if ( v == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_mid(): failed to find variable" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } + /* call generalized DEF handler with SINGLE set */ - if ( v->type != STRING ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_mid(): assignment must be to string variable" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } + var_defx(l, NUMBER); - /* read subscripts */ - pos = 0; - if ( ( v->dimensions == 1 ) && ( v->array_sizes[ 0 ] == 1 )) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_mid(): variable <%s> has 1 dimension", - v->name ); - bwb_debug( bwb_ebuf ); -#endif - n_params = 1; - pp = &p; - pp[ 0 ] = dim_base; - } - else - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_mid(): variable <%s> has > 1 dimensions", - v->name ); - bwb_debug( bwb_ebuf ); -#endif - dim_getparams( l->buffer, &( l->position ), &n_params, &pp ); - } + return bwb_zline(l); - CURTASK exps[ CURTASK expsc ].pos_adv = pos; - for ( n = 0; n < v->dimensions; ++n ) - { - v->array_pos[ n ] = pp[ n ]; - } +} - /* get bstring pointer */ - d = var_findsval( v, pp ); +/*********************************************************** + + FUNCTION: bwb_dstr() + + DESCRIPTION: This function implements the BASIC + DEFSTR command. + + SYNTAX: DEFSTR letter[-letter](, letter[-letter])... + +***********************************************************/ - /* Get past next comma and white space */ - adv_ws( l->buffer, &( l->position ) ); - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); +struct bwb_line * +bwb_DEFSTR(struct bwb_line * l) +{ - /* Get starting position (expression) */ - adv_element( l->buffer, &( l->position ), tbuf ); - pos = 0; - e = bwb_exp( tbuf, FALSE, &pos ); - startpos = (int) exp_getnval( e ); + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_mid(): startpos <%d> buffer <%lX>", - startpos, (long) d->sbuffer ); - bwb_debug( bwb_ebuf ); -#endif + /* call generalized DEF handler with STRING set */ - /* Get past next comma and white space (if they exist) */ - adv_ws( l->buffer, &( l->position ) ); - if (l->buffer[l->position] == ',') - { - target_terminate = 0; - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); - adv_element( l->buffer, &( l->position ), tbuf ); - pos = 0; - e = bwb_exp( tbuf, FALSE, &pos ); - numchars = (int) exp_getnval( e ); - if ( numchars == 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_mid(): destination string no. of chars out of range" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( "Argument out of range" ); -#endif - } - } - else - { - target_terminate = 1; - numchars = 0; - } + var_defx(l, STRING); - if ( numchars < 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_mid(): negative string length" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( "Negative string length" ); -#endif - } + return bwb_zline(l); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_mid(): numchars <%d> target_terminate <%d>", numchars, target_terminate ); - bwb_debug( bwb_ebuf ); -#endif +} - /* Get past equal sign */ - adv_ws( l->buffer, &( l->position ) ); - if (l->buffer[l->position] == ')') - { - ++(l->position); - adv_ws( l->buffer, &( l->position ) ); - } - ++(l->position); - adv_ws( l->buffer, &( l->position ) ); +static +int +VarTypeIndex(int C) +{ + bwx_DEBUG(__FUNCTION__); - /* Evaluate string expression */ - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - if ( e->type != STRING ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_mid(): assignment must be from string expression" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - } + if (isalpha(C)) + { + static char A2Z[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + char *P; - /* Prepare to MID the string */ - str_btoc( source_string, exp_getsval( e ) ); - str_btoc( tbuf, d ); - target_length = strlen( tbuf ); - if ( startpos > ( target_length + 1 ) ) + P = strchr(A2Z, ToUpper(C)); + if (P == NULL) { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_mid(): non-contiguous string created" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( "Non-contiguous string created" ); -#endif + bwb_error("INTERNAL: VarTypeIndex() called for non-char"); } - - if ( startpos < 1 ) + else { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_mid(): destination string start position out of range" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( "Argument out of range" ); -#endif + return P - A2Z; } - - source_length = strlen( source_string ); - if ( numchars == 0 ) numchars = source_length; - endpos = startpos + numchars - 1; - - /* MID the string */ - if ( endpos < startpos ) tbuf[ startpos - 1 ] = '\0'; + } else - { - source_counter = 0; - for ( n = startpos - 1; n < endpos; ++n ) - { - if ( source_counter < source_length ) - tbuf[ n ] = source_string[ source_counter ]; - else - tbuf[ n ] = ' '; - ++source_counter; - } - /* Terminate if indicated or characters were added */ - if ( ( endpos > target_length ) || ( target_terminate == 1 ) ) - tbuf[ endpos ] = '\0'; - } - str_ctob( d, tbuf ); - -#if MULTISEG_LINES - adv_eos( l->buffer, &( l->position )); -#endif - - return bwb_zline( l ); - + { + bwb_error("INTERNAL: VarTypeIndex() called for non-alpha"); } + return 0; +} /*********************************************************** - - Function: var_defx() - - DESCRIPTION: This function is a generalized DEFxxx handler. - + + Function: var_defx() + + DESCRIPTION: This function is a generalized DEFxxx handler. + ***********************************************************/ -#if ANSI_C static int -var_defx( struct bwb_line *l, int type ) -#else -static int -var_defx( l, type ) - struct bwb_line *l; - int type; -#endif - { - int loop; - register int c; - static char vname[ 2 ]; +var_defx(struct bwb_line * l, int type) +{ + int loop; + register int c; +#if 0 + char vname[2]; struct bwb_variable *v; +#endif + + bwx_DEBUG(__FUNCTION__); /* loop while there are variable names to process */ loop = TRUE; - while ( loop == TRUE ) - { + while (loop == TRUE) + { /* check for end of line or line segment */ - adv_ws( l->buffer, &( l->position ) ); - switch( l->buffer[ l->position ] ) - { - case '\n': - case '\r': - case '\0': - case ':': - return FALSE; - } + adv_ws(l->buffer, &(l->position)); + switch (l->buffer[l->position]) + { + case '\0': + return FALSE; + } + if( l->buffer[l->position] == OptionCommentChar ) + { + return FALSE; + } /* find a sequence of letters for variables */ - if ( var_letseq( l->buffer, &( l->position ), &first, &last ) == FALSE ) - { + if (var_letseq(l->buffer, &(l->position), &first, &last) == FALSE) + { return FALSE; - } - + } +#if 0 /* loop through the list getting variables */ - for ( c = first; c <= last; ++c ) - { - vname[ 0 ] = (char) c; - vname[ 1 ] = '\0'; + for (c = first; c <= last; ++c) + { + vname[0] = (char) c; + vname[1] = '\0'; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_defx(): calling var_find() for <%s>", - vname ); - bwb_debug( bwb_ebuf ); -#endif - v = var_find( vname ); + v = var_find(vname); - /* but var_find() assigns on the basis of name endings - (so all in this case should be SINGLEs), so we must - force the type of the variable */ + /* but var_find() assigns on the basis of name + * endings (so all in this case should be SINGLEs), + * so we must force the type of the variable */ - var_make( v, type ); + var_make(v, type); + } +#endif + if (isalpha(first) && isalpha(last)) + { + first = VarTypeIndex(first); + last = VarTypeIndex(last); + for (c = first; c <= last; c++) + { + DefaultVariableType[c] = type; } - } + } return TRUE; - } +} -#endif /* MS_CMDS */ /*********************************************************** - - Function: var_letseq() - - DESCRIPTION: This function finds a sequence of letters - for a DEFxxx command. - + + Function: var_letseq() + + DESCRIPTION: This function finds a sequence of letters + for a DEFxxx command. + ***********************************************************/ -#if ANSI_C static int -var_letseq( char *buffer, int *position, int *start, int *end ) -#else -static int -var_letseq( buffer, position, start, end ) - char *buffer; - int *position; - int *start; - int *end; -#endif - { +var_letseq(char *buffer, int *position, int *start, int *end) +{ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_letseq(): buffer <%s>", &( buffer[ *position ] )); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* advance beyond whitespace */ - adv_ws( buffer, position ); + adv_ws(buffer, position); /* check for end of line */ - switch( buffer[ *position ] ) - { - case '\0': - case '\n': - case '\r': - case ':': - return TRUE; - } + switch (buffer[*position]) + { + case '\0': + return TRUE; + } /* character at this position must be a letter */ - if ( isalpha( buffer[ *position ] ) == 0 ) - { - bwb_error( err_defchar ); + if (isalpha(buffer[*position]) == 0) + { + bwb_error(err_defchar); return FALSE; - } - - *end = *start = buffer[ *position ]; + } + *end = *start = buffer[*position]; /* advance beyond character and whitespace */ - ++( *position ); - adv_ws( buffer, position ); + ++(*position); + adv_ws(buffer, position); /* check for hyphen, indicating sequence of more than one letter */ - if ( buffer[ *position ] == '-' ) - { + if (buffer[*position] == '-') + { - ++( *position ); + ++(*position); /* advance beyond whitespace */ - adv_ws( buffer, position ); + adv_ws(buffer, position); /* character at this position must be a letter */ - if ( isalpha( buffer[ *position ] ) == 0 ) - { + if (isalpha(buffer[*position]) == 0) + { *end = *start; - } - else - { - *end = buffer[ *position ]; - ++( *position ); - } - } - - /* advance beyond comma if present */ - - if ( buffer[ *position ] == ',' ) + else { - ++( *position ); + *end = buffer[*position]; + ++(*position); } - return TRUE; } + /* advance beyond comma if present */ -/*********************************************************** - - FUNCTION: bwb_const() + if (buffer[*position] == ',') + { + ++(*position); + } + return TRUE; +} - DESCRIPTION: This function takes the string in lb - (the large buffer), finds a string constant - (beginning and ending with quotation marks), - and returns it in sb (the small buffer), - appropriately incrementing the integer - pointed to by n. The string in lb should NOT - include the initial quotation mark. +/*********************************************************** + + FUNCTION: bwb_getvarname() + + DESCRIPTION: This function takes the string in lb + (the large buffer), finds a variable name, + and returns it in sb (the small buffer), + appropriately incrementing the integer + pointed to by n. + ***********************************************************/ -#if ANSI_C -int -bwb_const( char *lb, char *sb, int *n ) -#else int -bwb_const( lb, sb, n ) - char *lb; - char *sb; - int *n; -#endif - { - register int s; +bwb_getvarname(char *lb, char *sb, int *n) +{ + /* FIXME: use BasicNameLengthMax */ +#if 0 + register int s; + + bwx_DEBUG(__FUNCTION__); - ++*n; /* advance past quotation mark */ s = 0; - while ( TRUE ) - { - switch ( lb[ *n ] ) - { - case '\"': - sb[ s ] = 0; - ++*n; /* advance past ending quotation mark */ - return TRUE; - case '\n': - case '\r': - case 0: - sb[ s ] = 0; - return TRUE; - default: - sb[ s ] = lb[ *n ]; - break; - } + /* advance beyond whitespace */ + adv_ws(lb, n); - ++*n; /* advance to next character in large buffer */ - ++s; /* advance to next position in small buffer */ - sb[ s ] = 0; /* terminate with 0 */ + while (TRUE) + { + switch (lb[*n]) + { + case ' ': /* whitespace */ + case '\0': + case ',': + case ';': + case '(': /* beginning of parameter list for + * dimensioned array */ + case '+': /* add variables *//* FIXME: looks like a bug */ + case '=': /* Don't forget this one (JBV) */ + sb[s] = 0; + return TRUE; + default: + sb[s] = lb[*n]; + break; } - } + ++*n; /* advance to next character in large buffer */ + ++s; /* advance to next position in small buffer */ + sb[s] = 0; /* terminate with 0 */ -/*********************************************************** + } +#endif - FUNCTION: bwb_getvarname() - DESCRIPTION: This function takes the string in lb - (the large buffer), finds a variable name, - and returns it in sb (the small buffer), - appropriately incrementing the integer - pointed to by n. + bwx_DEBUG(__FUNCTION__); -***********************************************************/ + /* advance beyond whitespace */ + adv_ws(lb, n); -#if ANSI_C -int -bwb_getvarname( char *lb, char *sb, int *n ) -#else -int -bwb_getvarname( lb, sb, n ) - char *lb; - char *sb; - int *n; -#endif + lb += (*n); + if (isalpha(*lb)) { - register int s; + *sb = *lb; + sb++; + lb++; + (*n)++; - s = 0; - - /* advance beyond whitespace */ - - adv_ws( lb, n ); - - while ( TRUE ) + if (OptionFlags & OPTION_BUGS_ON) { - switch ( lb[ *n ] ) + /* allow '.' and '_' in variable names */ + while (isalnum(*lb) || *lb == '.' || *lb == '_') { - case ' ': /* whitespace */ - case '\t': - case '\n': /* end of string */ - case '\r': - case 0: - case ':': /* end of expression */ - case ',': - case ';': - case '(': /* beginning of parameter list for dimensioned array */ - case '+': /* add variables */ - case '=': /* Don't forget this one (JBV) */ - sb[ s ] = 0; - return TRUE; - default: - sb[ s ] = lb[ *n ]; + *sb = *lb; + sb++; + lb++; + (*n)++; + } + } + else + { + while (isalnum(*lb)) + { + *sb = *lb; + sb++; + lb++; + (*n)++; + } + } + if (OptionFlags & OPTION_BUGS_ON) + { + /* allow '!','@','#', '%', '&' and '$' in variable names */ + switch (*lb) + { + case BasicDoubleSuffix: + case BasicSingleSuffix: + case BasicCurrencySuffix: + case BasicLongSuffix: + case BasicIntegerSuffix: + case BasicStringSuffix: + /* suffix IS part of the name. * + * A$ is distinct from A. */ + *sb = *lb; + sb++; + lb++; + (*n)++; + break; + } + } + else + { + switch (*lb) + { + case BasicStringSuffix: + /* suffix IS part of the name. * + * A$ is distinct from A. */ + *sb = *lb; + sb++; + lb++; + (*n)++; break; } - - ++*n; /* advance to next character in large buffer */ - ++s; /* advance to next position in small buffer */ - sb[ s ] = 0; /* terminate with 0 */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_getvarname(): found <%s>", sb ); - bwb_debug( bwb_ebuf ); -#endif } - } + *sb = '\0'; + return TRUE; +} /*************************************************************** - + FUNCTION: var_find() - - DESCRIPTION: This C function attempts to find a variable - name matching the argument in buffer. If - it fails to find a matching name, it - sets up a new variable with that name. - + + DESCRIPTION: This C function attempts to find a variable + name matching the argument in buffer. If + it fails to find a matching name, it + sets up a new variable with that name. + ***************************************************************/ -#if ANSI_C struct bwb_variable * -var_find( char *buffer ) -#else -struct bwb_variable * -var_find( buffer ) - char *buffer; -#endif - { +var_find(char *buffer) +{ struct bwb_variable *v; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_find(): received <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); + + /* check for NULL variable name */ + if (strlen(buffer) == 0) + { + sprintf(bwb_ebuf, "in var_find(): NULL variable name received\n"); + bwb_error(bwb_ebuf); + return NULL; + } /* check for a local variable at this EXEC level */ - v = var_islocal( buffer ); - if ( v != NULL ) - { + v = var_islocal(buffer); + if (v != NULL) + { return v; - } - + } /* now run through the global variable list and try to find a match */ - for ( v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next ) - { + for (v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next) + { - if ( strcmp( v->name, buffer ) == 0 ) + if (strcasecmp(v->name, buffer) == 0) + { + switch (v->type) { - switch( v->type ) - { - case STRING: - case NUMBER: - break; - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in var_find(): inappropriate precision for variable <%s>", - v->name ); - bwb_error( bwb_ebuf ); -#endif - break; - } -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_find(): found global variable <%s>", v->name ); - bwb_debug( bwb_ebuf ); -#endif - - return v; + case STRING: + case NUMBER: + break; + default: + sprintf(bwb_ebuf, "in var_find(): inappropriate precision for variable <%s>", + v->name); + bwb_error(bwb_ebuf); + return NULL; + break; } + return v; } + } /* presume this is a new variable, so initialize it... */ - /* check for NULL variable name */ - - if ( strlen( buffer ) == 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in var_find(): NULL variable name received\n" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return NULL; - } /* initialize new variable */ - v = var_new( buffer ); + v = var_new(buffer); /* set place at beginning of variable chain */ v->next = CURTASK var_start.next; - CURTASK var_start.next = v; + CURTASK var_start.next = v; /* normally not a preset */ v->preset = FALSE; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_find(): initialized new variable <%s> type <%c>, dim <%d>", - v->name, v->type, v->dimensions ); - bwb_debug( bwb_ebuf ); - getchar(); -#endif return v; - } +} /*************************************************************** - + FUNCTION: var_new() - - DESCRIPTION: This function assigns memory for a new variable. - + + DESCRIPTION: This function assigns memory for a new variable. + ***************************************************************/ -#if ANSI_C -struct bwb_variable * -var_new( char *name ) -#else struct bwb_variable * -var_new( name ) - char *name; -#endif - { +var_new(char *name) +{ struct bwb_variable *v; + char C; + int type; + + bwx_DEBUG(__FUNCTION__); /* get memory for new variable */ + if (name == NULL) + { + bwb_error("INTERNAL ERROR - not a valid variable name - name == NULL"); + return NULL; + } + if (strlen(name) == 0) + { + bwb_error("INTERNAL ERROR - not a valid variable name - strlen(name) == 0"); + return NULL; + } + if (isalpha(*name)) + { + /* OK */ + } + else + { + bwb_error("INTERNAL ERROR - not a valid variable name - !isalpha(*name)"); + return NULL; + } + C = ToUpper(*name); /* Revised to CALLOC pass-thru call by JBV */ - if ( ( v = (struct bwb_variable *) CALLOC( 1, sizeof( struct bwb_variable ), "var_new" )) - == NULL ) - { - bwb_error( err_getmem ); + if ((v = (struct bwb_variable *) CALLOC(1, sizeof(struct bwb_variable), "var_new")) + == NULL) + { + bwb_error(err_getmem); return NULL; - } - + } /* copy the name into the appropriate structure */ - strcpy( v->name, name ); + strcpy(v->name, name); +#if 0 + var_make(v, (int) v->name[strlen(v->name) - 1]); +#endif /* set memory in the new variable */ - var_make( v, (int) v->name[ strlen( v->name ) - 1 ] ); + type = NUMBER; /* DEFAULT */ + switch (v->name[strlen(v->name) - 1]) + { + case BasicStringSuffix: + type = STRING; + break; + case BasicDoubleSuffix: + case BasicSingleSuffix: + case BasicCurrencySuffix: + case BasicLongSuffix: + case BasicIntegerSuffix: + type = NUMBER; + break; + default: + type = DefaultVariableType[VarTypeIndex(C)]; + break; + } + var_make(v, type); /* and return */ return v; - } +} /*************************************************************** - + FUNCTION: bwb_isvar() - - DESCRIPTION: This function determines if the string - in 'buffer' is the name of a previously- - existing variable. - + + DESCRIPTION: This function determines if the string + in 'buffer' is the name of a previously- + existing variable. + ***************************************************************/ -#if ANSI_C -int -bwb_isvar( char *buffer ) -#else int -bwb_isvar( buffer ) - char *buffer; -#endif - { +bwb_isvar(char *buffer) +{ struct bwb_variable *v; + + bwx_DEBUG(__FUNCTION__); + /* run through the variable list and try to find a match */ - for ( v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next ) - { + for (v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next) + { - if ( strcmp( v->name, buffer ) == 0 ) - { + if (strcasecmp(v->name, buffer) == 0) + { return TRUE; - } - } + } /* search failed */ return FALSE; - } +} /*************************************************************** - - FUNCTION: var_getnval() - - DESCRIPTION: This function returns the current value of - the variable argument as a number. - + + FUNCTION: var_getnval() + + DESCRIPTION: This function returns the current value of + the variable argument as a number. + ***************************************************************/ -#if ANSI_C -bnumber -var_getnval( struct bwb_variable *nvar ) -#else -bnumber -var_getnval( nvar ) - struct bwb_variable *nvar; -#endif - { - - switch( nvar->type ) - { - case NUMBER: - return *( var_findnval( nvar, nvar->array_pos ) ); - } - -#if PROG_ERRORS - sprintf( bwb_ebuf, "in var_getnval(): type is <%d>=<%c>.", - nvar->type, nvar->type ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - +BasicNumberType +var_getnval(struct bwb_variable * nvar) +{ - return (bnumber) 0.0; + bwx_DEBUG(__FUNCTION__); + switch (nvar->type) + { + case NUMBER: + return *(var_findnval(nvar, nvar->array_pos)); } -/*************************************************************** + sprintf(bwb_ebuf, "in var_getnval(): type is <%d>=<%c>.", + nvar->type, nvar->type); + bwb_error(bwb_ebuf); + return 0; - FUNCTION: var_getsval() +} - DESCRIPTION: This function returns the current value of - the variable argument as a pointer to a BASIC - string structure. +/*************************************************************** + + FUNCTION: var_getsval() + + DESCRIPTION: This function returns the current value of + the variable argument as a pointer to a BASIC + string structure. + ***************************************************************/ -#if ANSI_C -bstring * -var_getsval( struct bwb_variable *nvar ) -#else -bstring * -var_getsval( nvar ) - struct bwb_variable *nvar; -#endif - { - static bstring b; +bstring * +var_getsval(struct bwb_variable * nvar) +{ + static bstring b; - b.rab = FALSE; + bwx_DEBUG(__FUNCTION__); - switch( nvar->type ) - { - case STRING: - return var_findsval( nvar, nvar->array_pos ); - case NUMBER: - sprintf( bwb_ebuf, "%*f ", prn_precision( nvar ), - *( var_findnval( nvar, nvar->array_pos ) ) ); - str_ctob( &b, bwb_ebuf ); - return &b; - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in var_getsval(): type is <%d>=<%c>.", - nvar->type, nvar->type ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif - return NULL; - } + b.rab = FALSE; + switch (nvar->type) + { + case STRING: + return var_findsval(nvar, nvar->array_pos); + case NUMBER: + sprintf(bwb_ebuf, "%*f ", prn_precision(nvar), + *(var_findnval(nvar, nvar->array_pos))); + str_ctob(&b, bwb_ebuf); + return &b; + default: + sprintf(bwb_ebuf, "in var_getsval(): type is <%d>=<%c>.", + nvar->type, nvar->type); + bwb_error(bwb_ebuf); + return NULL; } +} + /*************************************************************** + + FUNCTION: bwb_dim() + + DESCRIPTION: This function implements the BASIC DIM + statement, allocating memory for a + dimensioned array of variables. + + SYNTAX: DIM variable(elements...)[variable(elements...)]... + +***************************************************************/ - FUNCTION: bwb_dim() +struct bwb_line * +bwb_DIM(struct bwb_line * l) +{ + register int n; + static int n_params; /* number of parameters */ + static int *pp; /* pointer to parameter values */ + struct bwb_variable *newvar; + BasicNumberType *np; + int loop; + char tbuf[BasicStringLengthMax + 1]; - DESCRIPTION: This function implements the BASIC DIM - statement, allocating memory for a - dimensioned array of variables. + bwx_DEBUG(__FUNCTION__); - SYNTAX: DIM variable(elements...)[variable(elements...)]... -***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_dim( struct bwb_line *l ) -#else -struct bwb_line * -bwb_dim( l ) - struct bwb_line *l; -#endif - { - register int n; - static int n_params; /* number of parameters */ - static int *pp; /* pointer to parameter values */ - struct bwb_variable *newvar; - bnumber *np; - int loop; - int old_name, old_dimensions; - char tbuf[ MAXSTRINGSIZE + 1 ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_dim(): entered function." ); - bwb_debug( bwb_ebuf ); -#endif loop = TRUE; - while ( loop == TRUE ) - { + while (loop == TRUE) + { + int old_name; + int old_dimensions; old_name = FALSE; /* Get variable name */ - adv_ws( l->buffer, &( l->position ) ); - bwb_getvarname( l->buffer, tbuf, &( l->position ) ); + adv_ws(l->buffer, &(l->position)); + bwb_getvarname(l->buffer, tbuf, &(l->position)); + /* check for previously used variable name */ - if ( bwb_isvar( tbuf ) == TRUE ) - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_dim(): variable name is already used.", - l->number ); - bwb_debug( bwb_ebuf ); -#endif + if (bwb_isvar(tbuf) == TRUE) + { old_name = TRUE; - } - + } /* get the new variable */ - newvar = var_find( tbuf ); + newvar = var_find(tbuf); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_dim(): new variable name is <%s>.", - newvar->name ); - bwb_debug( bwb_ebuf ); -#endif /* note that DIM has been called */ @@ -1543,1091 +1457,1766 @@ bwb_dim( l ) /* read parameters */ old_dimensions = newvar->dimensions; - dim_getparams( l->buffer, &( l->position ), &n_params, &pp ); + dim_getparams(l->buffer, &(l->position), &n_params, &pp); newvar->dimensions = n_params; /* Check parameters for an old variable name */ - if ( old_name == TRUE ) - { - - /* check to be sure the number of dimensions is the same */ + if (old_name == TRUE) + { - if ( newvar->dimensions != old_dimensions ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_dim(): variable <%s> cannot be re-dimensioned", - newvar->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_redim ); -#endif - } + /* check to be sure the number of dimensions is the + * same */ - /* check to be sure sizes for the old variable are the same */ + if (newvar->dimensions != old_dimensions) + { + sprintf(bwb_ebuf, "in bwb_dim(): variable <%s> cannot be re-dimensioned", + newvar->name); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + /* check to be sure sizes for the old variable are + * the same */ - for ( n = 0; n < newvar->dimensions; ++n ) + for (n = 0; n < newvar->dimensions; ++n) + { + if ((pp[n] + (1 - dim_base)) != newvar->array_sizes[n]) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_dim(): old var <%s> parameter <%d> size <%d>.", - newvar->name, n, pp[ n ] ); - bwb_debug( bwb_ebuf ); -#endif - if ( ( pp[ n ] + ( 1 - dim_base )) != newvar->array_sizes[ n ] ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_dim(): variable <%s> parameter <%d> cannot be resized", - newvar->name, n ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_redim ); -#endif - } + sprintf(bwb_ebuf, "in bwb_dim(): variable <%s> parameter <%d> cannot be resized", + newvar->name, n); + bwb_error(bwb_ebuf); + return bwb_zline(l); } + } - } /* end of conditional for old variable */ - - - /* a new variable */ + } /* end of conditional for old variable */ + /* a new variable */ else - { + { /* assign memory for parameters */ /* Revised to CALLOC pass-thru call by JBV */ - if ( ( newvar->array_sizes = (int *) CALLOC( n_params, sizeof( int ), "bwb_dim" )) == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in line %d: Failed to find memory for array_sizes for <%s>", - l->number, newvar->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_getmem ); -#endif - return bwb_zline( l ); - } - - for ( n = 0; n < newvar->dimensions; ++n ) - { - newvar->array_sizes[ n ] = pp[ n ] + ( 1 - dim_base ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_dim(): array_sizes dim <%d> value <%d>", - n, newvar->array_sizes[ n ] ); - bwb_debug( bwb_ebuf ); -#endif - } + if ((newvar->array_sizes = (int *) CALLOC(n_params, sizeof(int), "bwb_dim")) == NULL) + { + sprintf(bwb_ebuf, "in line %d: Failed to find memory for array_sizes for <%s>", + l->number, newvar->name); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + for (n = 0; n < newvar->dimensions; ++n) + { + newvar->array_sizes[n] = pp[n] + (1 - dim_base); + } /* assign memory for current position */ /* Revised to CALLOC pass-thru call by JBV */ - if ( ( newvar->array_pos = (int *) CALLOC( n_params, sizeof( int ), "bwb_dim" )) == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in line %d: Failed to find memory for array_pos for <%s>", - l->number, newvar->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_getmem ); -#endif - return bwb_zline( l ); - } - - for ( n = 0; n < newvar->dimensions; ++n ) - { - newvar->array_pos[ n ] = dim_base; - } + if ((newvar->array_pos = (int *) CALLOC(n_params, sizeof(int), "bwb_dim")) == NULL) + { + sprintf(bwb_ebuf, "in line %d: Failed to find memory for array_pos for <%s>", + l->number, newvar->name); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + for (n = 0; n < newvar->dimensions; ++n) + { + newvar->array_pos[n] = dim_base; + } /* calculate the array size */ +#define MAXINTSIZE 2147483647 /* this is a HACK */ - newvar->array_units = (size_t) MAXINTSIZE; /* avoid error in dim_unit() */ - newvar->array_units = dim_unit( newvar, pp ) + 1; + newvar->array_units = (size_t) MAXINTSIZE; /* avoid error in + * dim_unit() */ + newvar->array_units = dim_unit(newvar, pp) + 1; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_dim(): array memory requires <%ld> units", - (long) newvar->array_units ); - bwb_debug( bwb_ebuf ); -#endif /* assign array memory */ - switch( newvar->type ) + switch (newvar->type) + { + case STRING: + /*------------------------------------------------------*/ + /* memnum, not memstr, was used here -- + * incorrect (JBV) */ + /* Revised to CALLOC pass-thru call by JBV */ + /*------------------------------------------------------*/ + if ((newvar->memstr = (bstring *) + CALLOC(newvar->array_units, sizeof(bstring), "bwb_dim")) == NULL) { - case STRING: -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_dim(): 1 STRING requires <%ld> bytes", - (long) sizeof( bstring )); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in bwb_dim(): STRING array memory requires <%ld> bytes", - (long) ( newvar->array_units + 1 ) * sizeof( bstring )); - bwb_debug( bwb_ebuf ); -#endif - /*------------------------------------------------------*/ - /* memnum, not memstr, was used here -- incorrect (JBV) */ - /* Revised to CALLOC pass-thru call by JBV */ - /*------------------------------------------------------*/ - if ( ( newvar->memstr = (bstring *) - CALLOC( newvar->array_units, sizeof( bstring), "bwb_dim" )) == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in line %d: Failed to find memory for array <%s>", - l->number, newvar->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_getmem ); -#endif - return bwb_zline( l ); - } - break; - case NUMBER: -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_dim(): 1 DOUBLE requires <%ld> bytes", - (long) sizeof( double )); - bwb_debug( bwb_ebuf ); - sprintf( bwb_ebuf, "in bwb_dim(): DOUBLE array memory requires <%ld> bytes", - (long) ( newvar->array_units + 1 ) * sizeof( double )); - bwb_debug( bwb_ebuf ); -#endif + sprintf(bwb_ebuf, "in line %d: Failed to find memory for array <%s>", + l->number, newvar->name); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + break; + case NUMBER: - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( np = (bnumber *) - CALLOC( newvar->array_units, sizeof( bnumber ), "bwb_dim" )) == NULL ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in line %d: Failed to find memory for array <%s>", - l->number, newvar->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_getmem ); -#endif - return bwb_zline( l ); - } - newvar->memnum = np; - break; - default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in line %d: New variable has unrecognized type.", - l->number ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); + /* Revised to CALLOC pass-thru call by JBV */ + if ((np = (BasicNumberType *) + CALLOC(newvar->array_units, sizeof(BasicNumberType), "bwb_dim")) == NULL) + { + sprintf(bwb_ebuf, "in line %d: Failed to find memory for array <%s>", + l->number, newvar->name); + bwb_error(bwb_ebuf); + return bwb_zline(l); } + newvar->memnum = np; + break; + default: + sprintf(bwb_ebuf, "in line %d: New variable has unrecognized type.", + l->number); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } - } /* end of conditional for new variable */ + } /* end of conditional for new variable */ /* now check for end of string */ - if ( l->buffer[ l->position ] == ')' ) - { - ++( l->position ); - } - adv_ws( l->buffer, &( l->position )); - switch( l->buffer[ l->position ] ) + if (l->buffer[l->position] == ')') + { + ++(l->position); + } + adv_ws(l->buffer, &(l->position)); + if (l->buffer[l->position] == OptionCommentChar) + { + loop = FALSE; + } + else + { + switch (l->buffer[l->position]) { - case '\n': /* end of line */ - case '\r': - case ':': /* end of line segment */ - case '\0': /* end of string */ + case '\0': /* end of string */ loop = FALSE; break; case ',': - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); + ++(l->position); + adv_ws(l->buffer, &(l->position)); loop = TRUE; break; default: -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_dim(): unexpected end of string, buf <%s>", - &( l->buffer[ l->position ] ) ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif loop = FALSE; + sprintf(bwb_ebuf, "in bwb_dim(): unexpected end of string, buf <%s>", + &(l->buffer[l->position])); + bwb_error(bwb_ebuf); + return bwb_zline(l); break; } + } - } /* end of loop through variables */ + } /* end of loop through variables */ /* return */ - return bwb_zline( l ); - - } - -/*************************************************************** + return bwb_zline(l); - FUNCTION: dim_unit() +} - DESCRIPTION: This function calculates the unit - position for an array. +int +DetermineNumberOfDimensions(char *expression, int LastPosition) +{ + /* MUST be a dynamically created array, READ A(10) = ... ' variable + * "A" has NOT been dimensioned */ + int ParenLevel = 0; + int NumDimensions = 1; + int Loop = TRUE; -***************************************************************/ + bwx_DEBUG(__FUNCTION__); -#if ANSI_C -static size_t -dim_unit( struct bwb_variable *v, int *pp ) -#else -static size_t -dim_unit( v, pp ) - struct bwb_variable *v; - int *pp; -#endif + while (Loop == TRUE) { - size_t r; - size_t b; - register int n; - - /* Calculate and return the address of the dimensioned array */ + char C; + C = expression[LastPosition]; + /* check the current character */ - b = 1; - r = 0; - for ( n = 0; n < v->dimensions; ++n ) - { - r += b * ( pp[ n ] - dim_base ); - b *= v->array_sizes[ n ]; - } -#if INTENSIVE_DEBUG - for ( n = 0; n < v->dimensions; ++n ) + switch (C) { - sprintf( bwb_ebuf, - "in dim_unit(): variable <%s> pos <%d> val <%d>.", - v->name, n, pp[ n ] ); - bwb_debug( bwb_ebuf ); - } - sprintf( bwb_ebuf, "in dim_unit(): return unit: <%ld>", (long) r ); - bwb_debug( bwb_ebuf ); -#endif + case '\0': + return 0; + break; + + case '=': + Loop = FALSE; + break; + + case '(': + LastPosition++; + ParenLevel++; + break; + case ')': + LastPosition++; + ParenLevel--; + if (ParenLevel == 0) + { + Loop = FALSE; + } + break; + case ',': + LastPosition++; + if (ParenLevel == 1) + { + NumDimensions++; + } + break; + case '\"': /* embedded string constant */ + LastPosition++; + while ((expression[LastPosition] != '\"') + && (expression[LastPosition] != '\0')) + { + LastPosition++; + } + if (expression[LastPosition] == '\"') + { + LastPosition++; + } + break; + default: + LastPosition++; + } + } + + return NumDimensions; +} + +int +ImplicitDim(char *tbuf, int n_params) +{ + /* This is only for ECMA-55. ECMA-116 requires arrays to be + * dimensioned prior to being used. */ + + + register int n; /* number of parameters */ + BasicNumberType *np; + static int *pp; /* pointer to parameter values */ + struct bwb_variable *newvar; + static int params[MAX_DIMS]; + + bwx_DEBUG(__FUNCTION__); + + if (OptionFlags & OPTION_STRICT_ON) + { + /* Implicit DIM is not allowed */ + return FALSE; + } + for (n = 0; n < MAX_DIMS; n++) + { + params[n] = 10; /* UBOUND() = 10, LBOUND() = OPTION BASE */ + } + pp = ¶ms[0]; + + /* get the new variable */ + + newvar = var_find(tbuf); + + /* note that DIM has been (implicitly) called */ + + dimmed = TRUE; + + newvar->dimensions = n_params; - if ( r > v->array_units ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dim_unit(): unit value <%ld> exceeds array units <%ld>", - r, v->array_units ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_valoorange ); -#endif - return 0; - } - return r; + /* assign memory for parameters */ + + /* Revised to CALLOC pass-thru call by JBV */ + if ((newvar->array_sizes = (int *) CALLOC(n_params, sizeof(int), "bwb_dim")) == NULL) + { + bwb_error(err_getmem); + return FALSE; + } + for (n = 0; n < newvar->dimensions; ++n) + { + newvar->array_sizes[n] = pp[n] + (1 - dim_base); } + /* assign memory for current position */ + + /* Revised to CALLOC pass-thru call by JBV */ + if ((newvar->array_pos = (int *) CALLOC(n_params, sizeof(int), "bwb_dim")) == NULL) + { + bwb_error(err_getmem); + return FALSE; + } + for (n = 0; n < newvar->dimensions; ++n) + { + newvar->array_pos[n] = dim_base; + } + + /* calculate the array size */ +#define MAXINTSIZE 2147483647 /* this is a HACK */ + newvar->array_units = (size_t) MAXINTSIZE; /* avoid error in + * dim_unit() */ + newvar->array_units = dim_unit(newvar, pp) + 1; + + /* assign array memory */ + + switch (newvar->type) + { + case STRING: + /*------------------------------------------------------*/ + /* memnum, not memstr, was used here -- incorrect (JBV) */ + /* Revised to CALLOC pass-thru call by JBV */ + /*------------------------------------------------------*/ + if ((newvar->memstr = (bstring *) + CALLOC(newvar->array_units, sizeof(bstring), "bwb_dim")) == NULL) + { + bwb_error(err_getmem); + return FALSE; + } + break; + case NUMBER: + + /* Revised to CALLOC pass-thru call by JBV */ + if ((np = (BasicNumberType *) + CALLOC(newvar->array_units, sizeof(BasicNumberType), "bwb_dim")) == NULL) + { + bwb_error(err_getmem); + return FALSE; + } + newvar->memnum = np; + break; + default: + bwb_error(err_syntax); + return FALSE; + } + + return TRUE; +} + + + + /*************************************************************** + + FUNCTION: dim_unit() + + DESCRIPTION: This function calculates the unit + position for an array. + +***************************************************************/ - FUNCTION: dim_getparams() +static size_t +dim_unit(struct bwb_variable * v, int *pp) +{ + size_t r; + size_t b; + register int n; - DESCRIPTION: This function reads a string in + bwx_DEBUG(__FUNCTION__); + + /* Calculate and return the address of the dimensioned array */ + + /* Check EACH dimension for out-of-bounds, AND check correct number + * of dimensions. NBS_P076_0250 errors correctly. */ + + b = 1; + r = 0; + for (n = 0; n < v->dimensions; ++n) + { + + /* newvar->array_sizes[ n ] = pp[ n ] + ( 1 - dim_base ); */ + if ((pp[n] < dim_base) || ((pp[n] + (1 - dim_base)) > v->array_sizes[n])) + { + sprintf(bwb_ebuf, "SUBSCRIPT OUT OF RANGE %s(%d)", v->name, pp[n]); + bwb_error(bwb_ebuf); + return 0; + } + r += b * (pp[n] - dim_base); + b *= v->array_sizes[n]; + } + + if (r > v->array_units) + { + + + + sprintf(bwb_ebuf, "SUBSCRIPT OUT OF RANGE %s(%ld)", v->name, (long) r); + bwb_error(bwb_ebuf); + + return 0; + } + return r; + +} + +/*************************************************************** + + FUNCTION: dim_getparams() + + DESCRIPTION: This function reads a string in beginning at position and finds a list of parameters surrounded by paren- theses, returning in the number of parameters found, and returning in an array of n_params integers giving the sizes for each dimension of the array. - + ***************************************************************/ -#if ANSI_C -int -dim_getparams( char *buffer, int *pos, int *n_params, int **pp ) -#else int -dim_getparams( buffer, pos, n_params, pp ) - char *buffer; - int *pos; - int *n_params; - int **pp; -#endif - { - int loop; - static int params[ MAX_DIMS ]; - int x_pos, s_pos; +dim_getparams_FIXED(char *buffer, int *pos, int params[ /* MAX_DIMS */ ]) +{ + int n_params; + int loop; + int x_pos, s_pos; struct exp_ese *e; - char tbuf[ MAXSTRINGSIZE + 1 ]; - int paren_level, quote_level; /* JBV 1/97 */ -#if INTENSIVE_DEBUG - register int n; -#endif + char tbuf[BasicStringLengthMax + 1]; + int paren_level, quote_level; /* JBV 1/97 */ + + bwx_DEBUG(__FUNCTION__); /* set initial values */ - *n_params = 0; -#if OLDSTUFF - paren_found = FALSE; -#endif + n_params = 0; /* advance and check for undimensioned variable */ - adv_ws( buffer, pos ); - if ( buffer[ *pos ] != '(' ) - { - *n_params = 1; - params[ 0 ] = dim_base; - *pp = params; - return TRUE; - } + adv_ws(buffer, pos); + if (buffer[*pos] != '(') + { + n_params = 1; + params[0] = dim_base; + return n_params; + } else - { + { ++(*pos); - } + } /* Variable has DIMensions: Find each parameter */ s_pos = 0; - tbuf[ 0 ] = '\0'; + tbuf[0] = '\0'; loop = TRUE; - paren_level = 1; /* JBV 1/97 */ - quote_level = 0; /* JBV 1/97 */ - while( loop == TRUE ) - { - switch( buffer[ *pos ] ) + paren_level = 1; /* JBV 1/97 */ + quote_level = 0; /* JBV 1/97 */ + while (loop == TRUE) + { + switch (buffer[*pos]) + { + case ')': /* end of parameter list */ + /*-----------------------------------------------------*/ + /* paren_level and quote_level check added by JBV + * 1/97 */ + /*-----------------------------------------------------*/ + if (quote_level == 0) + --paren_level; + if (paren_level != 0 || quote_level != 0) /* Still not done? */ { - case ')': /* end of parameter list */ - /*-----------------------------------------------------*/ - /* paren_level and quote_level check added by JBV 1/97 */ - /*-----------------------------------------------------*/ - if ( quote_level == 0 ) --paren_level; - if ( paren_level != 0 || quote_level != 0 ) /* Still not done? */ - { - tbuf[ s_pos ] = buffer[ *pos ]; + tbuf[s_pos] = buffer[*pos]; ++(*pos); ++s_pos; - tbuf[ s_pos ] = '\0'; + tbuf[s_pos] = '\0'; break; - } + } + x_pos = 0; + if (tbuf[0] == '\0') + { + params[n_params] = DEF_SUBSCRIPT; + } + else + { + + + - x_pos = 0; - if ( tbuf[ 0 ] == '\0' ) - { - params[ *n_params ] = DEF_SUBSCRIPT; - } - else - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in dim_getparams(): call bwb_exp() for last element" ); - bwb_debug( bwb_ebuf ); -#endif - e = bwb_exp( tbuf, FALSE, &x_pos ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in dim_getparams(): return from bwb_exp() for last element" ); - bwb_debug( bwb_ebuf ); -#endif - params[ *n_params ] = (int) exp_getnval( e ); - } - ++(*n_params); - loop = FALSE; - ++( *pos ); - break; - case ',': /* end of a parameter */ - /*-----------------------------------------------------*/ - /* paren_level and quote_level check added by JBV 1/97 */ - /*-----------------------------------------------------*/ - if ( paren_level != 1 || quote_level != 0 ) /* Still not done? */ + e = bwb_exp(tbuf, FALSE, &x_pos); + if (ERROR_PENDING) { - tbuf[ s_pos ] = buffer[ *pos ]; + return 0; + } + /* Subscripts are rounded */ + params[n_params] = exp_getival(e); + + + + + } + n_params++; + loop = FALSE; + ++(*pos); + break; + + case ',': /* end of a parameter */ + /*-----------------------------------------------------*/ + /* paren_level and quote_level check added by JBV + * 1/97 */ + /*-----------------------------------------------------*/ + if (paren_level != 1 || quote_level != 0) /* Still not done? */ + { + tbuf[s_pos] = buffer[*pos]; ++(*pos); ++s_pos; - tbuf[ s_pos ] = '\0'; + tbuf[s_pos] = '\0'; break; + } + x_pos = 0; + if (tbuf[0] == '\0') + { + params[n_params] = DEF_SUBSCRIPT; + } + else + { + + + e = bwb_exp(tbuf, FALSE, &x_pos); + if (ERROR_PENDING) + { + return 0; } + /* Subscripts are rounded */ + params[n_params] = exp_getival(e); - x_pos = 0; - if ( tbuf[ 0 ] == '\0' ) - { - params[ *n_params ] = DEF_SUBSCRIPT; - } + + } + n_params++; + tbuf[0] = '\0'; + ++(*pos); + s_pos = 0; + break; + + case ' ': /* whitespace -- skip */ + ++(*pos); + break; + + default: + if (buffer[*pos] == '(' && quote_level == 0) + ++paren_level; /* JBV 1/97 */ + if (buffer[*pos] == (char) 34) + { + if (quote_level == 0) + quote_level = 1; else - { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in dim_getparams(): call bwb_exp() for element (not last)" ); - bwb_debug( bwb_ebuf ); -#endif - e = bwb_exp( tbuf, FALSE, &x_pos ); - params[ *n_params ] = (int) exp_getnval( e ); - } - ++(*n_params); - tbuf[ 0 ] = '\0'; - ++(*pos); - s_pos = 0; - break; + quote_level = 0; + } + tbuf[s_pos] = buffer[*pos]; + ++(*pos); + ++s_pos; + tbuf[s_pos] = '\0'; + break; + } + + if (n_params >= MAX_DIMS) + { + loop = FALSE; + } + } + + + /* return params stack */ + + + + + + + return n_params; + + +} + + - case ' ': /* whitespace -- skip */ - case '\t': + + +int +dim_getparams(char *buffer, int *pos, int *n_params, int **pp) +{ + int loop; + static int params[MAX_DIMS]; /* can NOT be called via + * bwb_exp() */ + int x_pos, s_pos; + struct exp_ese *e; + char tbuf[BasicStringLengthMax + 1]; + int paren_level, quote_level; /* JBV 1/97 */ + + bwx_DEBUG(__FUNCTION__); + + /* set initial values */ + + *n_params = 0; + + /* advance and check for undimensioned variable */ + + adv_ws(buffer, pos); + if (buffer[*pos] != '(') + { + *n_params = 1; + params[0] = dim_base; + *pp = params; + return TRUE; + } + else + { + ++(*pos); + } + + /* Variable has DIMensions: Find each parameter */ + + s_pos = 0; + tbuf[0] = '\0'; + loop = TRUE; + paren_level = 1; /* JBV 1/97 */ + quote_level = 0; /* JBV 1/97 */ + while (loop == TRUE) + { + switch (buffer[*pos]) + { + case ')': /* end of parameter list */ + /*-----------------------------------------------------*/ + /* paren_level and quote_level check added by JBV + * 1/97 */ + /*-----------------------------------------------------*/ + if (quote_level == 0) + --paren_level; + if (paren_level != 0 || quote_level != 0) /* Still not done? */ + { + tbuf[s_pos] = buffer[*pos]; ++(*pos); + ++s_pos; + tbuf[s_pos] = '\0'; break; + } + x_pos = 0; + if (tbuf[0] == '\0') + { + params[*n_params] = DEF_SUBSCRIPT; + } + else + { - default: - if( buffer[ *pos ] == '(' && quote_level == 0 ) - ++paren_level; /* JBV 1/97 */ - if( buffer[ *pos ] == (char) 34 ) + + + e = bwb_exp(tbuf, FALSE, &x_pos); + if (ERROR_PENDING) { - if (quote_level == 0) quote_level = 1; - else quote_level = 0; + return FALSE; } - tbuf[ s_pos ] = buffer[ *pos ]; + /* Subscripts are rounded */ + params[*n_params] = exp_getival(e); + + + + + } + ++(*n_params); + loop = FALSE; + ++(*pos); + break; + + case ',': /* end of a parameter */ + /*-----------------------------------------------------*/ + /* paren_level and quote_level check added by JBV + * 1/97 */ + /*-----------------------------------------------------*/ + if (paren_level != 1 || quote_level != 0) /* Still not done? */ + { + tbuf[s_pos] = buffer[*pos]; ++(*pos); ++s_pos; - tbuf[ s_pos ] = '\0'; + tbuf[s_pos] = '\0'; break; } - } + x_pos = 0; + if (tbuf[0] == '\0') + { + params[*n_params] = DEF_SUBSCRIPT; + } + else + { -#if INTENSIVE_DEBUG - for ( n = 0; n < *n_params; ++n ) - { - sprintf( bwb_ebuf, "in dim_getparams(): Parameter <%d>: <%d>", - n, params[ n ] ); - bwb_debug( bwb_ebuf ); + + e = bwb_exp(tbuf, FALSE, &x_pos); + if (ERROR_PENDING) + { + return FALSE; + } + /* Subscripts are rounded */ + params[*n_params] = exp_getival(e); + + + } + ++(*n_params); + tbuf[0] = '\0'; + ++(*pos); + s_pos = 0; + break; + + case ' ': /* whitespace -- skip */ + ++(*pos); + break; + + default: + if (buffer[*pos] == '(' && quote_level == 0) + ++paren_level; /* JBV 1/97 */ + if (buffer[*pos] == (char) 34) + { + if (quote_level == 0) + quote_level = 1; + else + quote_level = 0; + } + tbuf[s_pos] = buffer[*pos]; + ++(*pos); + ++s_pos; + tbuf[s_pos] = '\0'; + break; } -#endif + } + /* return params stack */ *pp = params; + + + + return TRUE; +} + +/*************************************************************** + + FUNCTION: bwb_option() + + DESCRIPTION: This function implements the BASIC OPTION + BASE statement, designating the base (1 or + 0) for addressing DIM arrays. + + SYNTAX: OPTION BASE number + +***************************************************************/ + +void +OptionBaseHelper(int newval, struct bwb_line * l /* just for error + messages */ ) +{ + struct bwb_variable *current; + + bwx_DEBUG(__FUNCTION__); + + /* OPTION BASE ... */ + + /* If DIM has already been called, do not allow OPTION BASE */ + + if (dimmed != FALSE) + { + sprintf(bwb_ebuf, "at line %d: OPTION BASE must be called before DIM.", + l->number); + bwb_error(bwb_ebuf); + return; + } + /* Test the new value. */ + + + if ((newval < 0) || (newval > 1)) + { + sprintf(bwb_ebuf, "at line %d: value for OPTION BASE must be 1 or 0.", + l->number); + bwb_error(bwb_ebuf); + return; + } + /* Set the new value. */ + + dim_base = newval; + + /* run through the variable list and change any positions that had + * set 0 before OPTION BASE was run */ + + for (current = CURTASK var_start.next; current != &CURTASK var_end; current = current->next) + { + current->array_pos[0] = dim_base; + } + + +} + +void +OptionVersionSet(int i) +{ + bwx_DEBUG(__FUNCTION__); + + OptionVersion = bwb_vertable[i].OptionVersionBitmask; + OptionFlags = bwb_vertable[i].OptionFlags; + OptionCommentChar = bwb_vertable[i].OptionCommentChar; + OptionStatementChar = bwb_vertable[i].OptionStatementChar; + strcpy(OptionDateFormat,bwb_vertable[i].OptionDateFormat); + strcpy(OptionTimeFormat,bwb_vertable[i].OptionTimeFormat); + +} + +struct bwb_line * +bwb_OPTION(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION ... */ + bwb_error(err_syntax); + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_ANGLE_DEGREES(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION ANGLE DEGREES */ + OptionFlags |= OPTION_ANGLE_DEGREES; + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_ANGLE_RADIANS(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION ANGLE RADIANS */ + OptionFlags &= ~OPTION_ANGLE_DEGREES; + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_ARITHMETIC_DECIMAL(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION ARITHMETIC DECIMAL */ + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_ARITHMETIC_FIXED(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION ARITHMETIC FIXED */ + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_ARITHMETIC_NATIVE(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION ARITHMETIC NATIVE */ + return bwb_zline(l); +} + + +struct bwb_line * +bwb_OPTION_BASE_1(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION BASE 1 */ + OptionFlags |= OPTION_BASE_ONE; + OptionBaseHelper(1, l); + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_BASE_0(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION BASE 0 */ + OptionFlags &= ~OPTION_BASE_ONE; + OptionBaseHelper(0, l); + return bwb_zline(l); +} + + +struct bwb_line * +bwb_OPTION_BUGS_ON(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION BUGS ON */ + OptionFlags |= OPTION_BUGS_ON; + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_BUGS_OFF(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION BUGS OFF */ + OptionFlags &= ~OPTION_BUGS_ON; + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_COMMENT(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION COMMENT char */ + OptionCommentChar = l->buffer[l->position]; + if( OptionCommentChar != '\0' ) + { + l->position++; + } + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_COMPARE_BINARY(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION COMPARE BINARY */ + OptionFlags &= ~OPTION_COMPARE_TEXT; + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_COMPARE_DATABASE(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION COMPARE DATABASE */ + OptionFlags |= OPTION_COMPARE_TEXT; + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_COMPARE_TEXT(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION COMPARE TEXT */ + OptionFlags |= OPTION_COMPARE_TEXT; + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_COVERAGE_ON(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION COVERAGE ON */ + OptionFlags |= OPTION_COVERAGE_ON; + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_COVERAGE_OFF(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION COVERAGE OFF */ + OptionFlags &= ~OPTION_COVERAGE_ON; + return bwb_zline(l); +} + +static void +StripQuotes( char * tbuf ) +{ + /* Remove Leading & Trailing Quotes */ + if( tbuf[0] == '"' ) + { + char * Q; + strcpy( tbuf, &(tbuf[1]) ); + Q = strchr( tbuf, '"' ); + if( Q != NULL ) + { + *Q = '\0'; + } + } +} + +struct bwb_line * +bwb_OPTION_DATE(struct bwb_line * l) +{ + /* OPTION DATE format */ + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + /* Get FORMAT */ + adv_element(l->buffer, &(l->position), tbuf); + StripQuotes( tbuf ); + tbuf[ 80 ] = '\0'; + strcpy( OptionDateFormat, tbuf ); + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_DISABLE_COMMAND(struct bwb_line * l) +{ + /* OPTION DISABLE COMMAND ... */ + int IsFound; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + IsFound = FALSE; + /* Get COMMAND */ + adv_element(l->buffer, &(l->position), tbuf); + StripQuotes( tbuf ); + { + /* Name */ + int i; + for( i = 0; i < NUM_COMMANDS; i++ ) + { + if( strcasecmp( tbuf, bwb_cmdtable[i].name ) == 0 ) + { + /* FOUND */ + /* DISABLE COMMAND */ + bwb_cmdtable[i].OptionVersionBitmask &= ~OptionVersion; + IsFound = TRUE; + } + } + } + if( IsFound == FALSE ) + { + /* display warning message */ + sprintf( bwb_ebuf, "IGNORED: %s", l->buffer); + puts(bwb_ebuf); + } + return bwb_zline(l); +} + + +struct bwb_line * +bwb_OPTION_DISABLE_FUNCTION(struct bwb_line * l) +{ + /* OPTION DISABLE FUNCTION ... */ + int IsFound; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + IsFound = FALSE; + /* Get FUNCTION */ + adv_element(l->buffer, &(l->position), tbuf); + StripQuotes( tbuf ); + { + /* Name */ + int i; + for( i = 0; i < NUM_FUNCTIONS; i++ ) + { + if( strcasecmp( tbuf, bwb_prefuncs[i].Name ) == 0 ) + { + /* FOUND */ + /* DISABLE FUNCTION */ + bwb_prefuncs[i].OptionVersionBitmask &= ~OptionVersion; + IsFound = TRUE; + } + } + } + if( IsFound == FALSE ) + { + /* display warning message */ + sprintf( bwb_ebuf, "IGNORED: %s", l->buffer); + puts(bwb_ebuf); + } + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_DISABLE_OPERATOR(struct bwb_line * l) +{ + /* OPTION DISABLE OPERATOR ... */ + int IsFound; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + IsFound = FALSE; + /* Get OPERATOR */ + adv_element(l->buffer, &(l->position), tbuf); + StripQuotes( tbuf ); + { + /* Name */ + int i; + for( i = 0; i < NUM_OPERATORS; i++ ) + { + if( strcasecmp( tbuf, exp_ops[i].symbol ) == 0 ) + { + /* FOUND */ + /* DISABLE OPERATOR */ + exp_ops[i].OptionVersionBitmask &= ~OptionVersion; + IsFound = TRUE; + } + } + } + if( IsFound == FALSE ) + { + /* display warning message */ + sprintf( bwb_ebuf, "IGNORED: %s", l->buffer); + puts(bwb_ebuf); + } + return bwb_zline(l); +} + + + +struct bwb_line * +bwb_OPTION_ENABLE_COMMAND(struct bwb_line * l) +{ + /* OPTION ENABLE COMMAND ... */ + int IsFound; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + IsFound = FALSE; + /* Get COMMAND */ + adv_element(l->buffer, &(l->position), tbuf); + StripQuotes( tbuf ); + { + /* Name */ + int i; + for( i = 0; i < NUM_COMMANDS; i++ ) + { + if( strcasecmp( tbuf, bwb_cmdtable[i].name ) == 0 ) + { + /* FOUND */ + /* ENABLE COMMAND */ + bwb_cmdtable[i].OptionVersionBitmask |= OptionVersion; + IsFound = TRUE; + } + } + } + if( IsFound == FALSE ) + { + /* display warning message */ + sprintf( bwb_ebuf, "IGNORED: %s", l->buffer); + puts(bwb_ebuf); + } + return bwb_zline(l); +} + + +struct bwb_line * +bwb_OPTION_ENABLE_FUNCTION(struct bwb_line * l) +{ + /* OPTION ENABLE FUNCTION ... */ + int IsFound; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + IsFound = FALSE; + /* Get FUNCTION */ + adv_element(l->buffer, &(l->position), tbuf); + StripQuotes( tbuf ); + { + /* Name */ + int i; + for( i = 0; i < NUM_FUNCTIONS; i++ ) + { + if( strcasecmp( tbuf, bwb_prefuncs[i].Name ) == 0 ) + { + /* FOUND */ + /* ENABLE FUNCTION */ + bwb_prefuncs[i].OptionVersionBitmask |= OptionVersion; + IsFound = TRUE; + } + } + } + if( IsFound == FALSE ) + { + /* display warning message */ + sprintf( bwb_ebuf, "IGNORED: %s", l->buffer); + puts(bwb_ebuf); + } + return bwb_zline(l); +} + +struct bwb_line * +bwb_OPTION_ENABLE_OPERATOR(struct bwb_line * l) +{ + /* OPTION ENABLE OPERATOR ... */ + int IsFound; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + + IsFound = FALSE; + /* Get OPERATOR */ + adv_element(l->buffer, &(l->position), tbuf); + StripQuotes( tbuf ); + { + /* Name */ + int i; + for( i = 0; i < NUM_OPERATORS; i++ ) + { + if( strcasecmp( tbuf, exp_ops[i].symbol ) == 0 ) + { + /* FOUND */ + /* ENABLE OPERATOR */ + exp_ops[i].OptionVersionBitmask |= OptionVersion; + IsFound = TRUE; + } + } + } + if( IsFound == FALSE ) + { + /* display warning message */ + sprintf( bwb_ebuf, "IGNORED: %s", l->buffer); + puts(bwb_ebuf); } + return bwb_zline(l); +} -/*************************************************************** +struct bwb_line * +bwb_OPTION_ERROR_GOSUB(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION ERROR GOSUB */ + OptionFlags |= OPTION_ERROR_GOSUB; + return bwb_zline(l); +} - FUNCTION: bwb_option() +struct bwb_line * +bwb_OPTION_ERROR_GOTO(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION ERROR GOTO */ + OptionFlags &= ~OPTION_ERROR_GOSUB; + return bwb_zline(l); +} - DESCRIPTION: This function implements the BASIC OPTION - BASE statement, designating the base (1 or - 0) for addressing DIM arrays. +struct bwb_line * +bwb_OPTION_INDENT(struct bwb_line * l) +{ + /* OPTION VERSION ... */ + char tbuf[BasicStringLengthMax + 1]; + struct exp_ese *e; + int pos; - SYNTAX: OPTION BASE number + /* Get starting position (expression) */ + adv_element(l->buffer, &(l->position), tbuf); + pos = 0; + e = bwb_exp(tbuf, FALSE, &pos); + if (ERROR_PENDING) + { + return bwb_zline(l); + } + if (e->type == STRING) + { + sprintf(bwb_ebuf, "Type Mismatch"); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } + OptionIndentValue = exp_getival(e); + return bwb_zline(l); +} -***************************************************************/ +struct bwb_line * +bwb_OPTION_LABELS_ON(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION LABELS ON */ + OptionFlags |= OPTION_LABELS_ON; + return bwb_zline(l); +} -#if ANSI_C struct bwb_line * -bwb_option( struct bwb_line *l ) -#else +bwb_OPTION_LABELS_OFF(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION LABELS OFF */ + OptionFlags &= ~OPTION_LABELS_ON; + return bwb_zline(l); +} + struct bwb_line * -bwb_option( l ) - struct bwb_line *l; -#endif +bwb_OPTION_STATEMENT(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION STATEMENT char */ + OptionStatementChar = l->buffer[l->position]; + if( OptionStatementChar != '\0' ) { - register int n; - int newval; - struct exp_ese *e; - struct bwb_variable *current; - char tbuf[ MAXSTRINGSIZE ]; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_option(): entered function." ); - bwb_debug( bwb_ebuf ); -#endif + l->position++; + } + return bwb_zline(l); +} - /* If DIM has already been called, do not allow OPTION BASE */ +struct bwb_line * +bwb_OPTION_STRICT_ON(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION STRICT ON */ + OptionFlags |= OPTION_STRICT_ON; + return bwb_zline(l); +} - if ( dimmed != FALSE ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "at line %d: OPTION BASE must be called before DIM.", - l->number ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_obdim ); -#endif - return bwb_zline( l ); - } +struct bwb_line * +bwb_OPTION_STRICT_OFF(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION STRICT OFF */ + OptionFlags &= ~OPTION_STRICT_ON; + return bwb_zline(l); +} - /* capitalize first element in tbuf */ - adv_element( l->buffer, &( l->position ), tbuf ); - for ( n = 0; tbuf[ n ] != '\0'; ++n ) - { - if ( islower( tbuf[ n ] ) != FALSE ) - { - tbuf[ n ] = (char) toupper( tbuf[ n ] ); - } - } +struct bwb_line * +bwb_OPTION_TERMINAL_NONE(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION TERMINAL NONE */ + OptionTerminalType = C_OPTION_TERMINAL_NONE; + return bwb_zline(l); +} - /* check for BASE statement */ +struct bwb_line * +bwb_OPTION_TERMINAL_ADM_3A(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION TERMINAL ADM-3A */ + OptionTerminalType = C_OPTION_TERMINAL_ADM_3A; + return bwb_zline(l); +} - if ( strncmp( tbuf, "BASE", (size_t) 4 ) != 0 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "at line %d: Unknown statement <%s> following OPTION.", - l->number, tbuf ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return bwb_zline( l ); - } +struct bwb_line * +bwb_OPTION_TERMINAL_ANSI(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION TERMINAL ANSI */ + OptionTerminalType = C_OPTION_TERMINAL_ANSI; + return bwb_zline(l); +} - /* Get new value from argument. */ +struct bwb_line * +bwb_OPTION_TIME(struct bwb_line * l) +{ + /* OPTION TIME format */ + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); + /* Get FORMAT */ + adv_element(l->buffer, &(l->position), tbuf); + StripQuotes( tbuf ); + tbuf[80] = '\0'; + strcpy( OptionTimeFormat, tbuf ); + return bwb_zline(l); +} - adv_ws( l->buffer, &( l->position ) ); - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - newval = (int) exp_getnval( e ); +struct bwb_line * +bwb_OPTION_TRACE_ON(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION TRACE ON */ + OptionFlags |= OPTION_TRACE_ON; + return bwb_zline(l); +} - /* Test the new value. */ +struct bwb_line * +bwb_OPTION_TRACE_OFF(struct bwb_line * l) +{ + bwx_DEBUG(__FUNCTION__); + /* OPTION TRACE OFF */ + OptionFlags &= ~OPTION_TRACE_ON; + return bwb_zline(l); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_option(): New value received is <%d>.", newval ); - bwb_debug( bwb_ebuf ); -#endif +struct bwb_line * +bwb_OPTION_VERSION(struct bwb_line * l) +{ + /* OPTION VERSION ... */ + char tbuf[BasicStringLengthMax + 1]; + int i; - if ( ( newval < 0 ) || ( newval > 1 ) ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "at line %d: value for OPTION BASE must be 1 or 0.", - l->number ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_valoorange ); -#endif - return bwb_zline( l ); - } - /* Set the new value. */ + bwx_DEBUG(__FUNCTION__); - dim_base = newval; - /* run through the variable list and change any positions that had - set 0 before OPTION BASE was run */ - for ( current = CURTASK var_start.next; current != &CURTASK var_end; current = current->next ) + adv_element(l->buffer, &(l->position), tbuf); + for (i = 0; i < NUM_VERSIONS; i++) + { + if (strcasecmp(tbuf, bwb_vertable[i].Name) == 0) { - current->array_pos[ 0 ] = dim_base; + /* FOUND */ + OptionVersionSet(i); + return bwb_zline(l); } - - /* Return. */ - - return bwb_zline( l ); - } + /* NOT FOUND */ + sprintf(bwb_ebuf, "OPTION VERSION %s IS INVALID. VALID CHOICES ARE:", tbuf); + puts(bwb_ebuf); + for (i = 0; i < NUM_VERSIONS; i++) + { + sprintf(bwb_ebuf, "OPTION VERSION %s ' %s", + bwb_vertable[i].Name, bwb_vertable[i].Description); + puts(bwb_ebuf); + } + return bwb_zline(l); +} /*************************************************************** - + FUNCTION: var_findnval() - + DESCRIPTION: This function returns the address of the number for the variable . If is a dimensioned array, the address - returned is for the double at the + returned is for the BasicNumberType at the position indicated by the integer array . - + ***************************************************************/ -#if ANSI_C -bnumber * -var_findnval( struct bwb_variable *v, int *pp ) -#else -bnumber * -var_findnval( v, pp ) - struct bwb_variable *v; - int *pp; -#endif - { - size_t offset; - bnumber *p; -#if INTENSIVE_DEBUG - register int n; -#endif +BasicNumberType * +var_findnval(struct bwb_variable * v, int *pp) +{ + size_t offset; + BasicNumberType *p; + bwx_DEBUG(__FUNCTION__); /* Check for appropriate type */ - if ( v->type != NUMBER ) - { -#if PROG_ERRORS - sprintf ( bwb_ebuf, "in var_findnval(): Variable <%s> is not a number.", - v->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + if (v->type != NUMBER) + { + sprintf(bwb_ebuf, "in var_findnval(): Variable <%s> is not a number.", + v->name); + bwb_error(bwb_ebuf); return NULL; - } - + } /* Check subscripts */ - if ( dim_check( v, pp ) == FALSE ) - { + if (dim_check(v, pp) == FALSE) + { return NULL; - } - + } /* Calculate and return the address of the dimensioned array */ - offset = dim_unit( v, pp ); + offset = dim_unit(v, pp); -#if INTENSIVE_DEBUG - for ( n = 0; n < v->dimensions; ++n ) - { - sprintf( bwb_ebuf, - "in var_findnval(): dimensioned variable pos <%d> <%d>.", - n, pp[ n ] ); - bwb_debug( bwb_ebuf ); - } -#endif p = v->memnum; return (p + offset); - } +} /*************************************************************** - + FUNCTION: var_findsval() - + DESCRIPTION: This function returns the address of the string for the variable . If is a dimensioned array, the address returned is for the string at the position indicated by the integer array . - + ***************************************************************/ -#if ANSI_C -bstring * -var_findsval( struct bwb_variable *v, int *pp ) -#else -bstring * -var_findsval( v, pp ) - struct bwb_variable *v; - int *pp; -#endif - { - size_t offset; - bstring *p; - -#if INTENSIVE_DEBUG - register int n; +bstring * +var_findsval(struct bwb_variable * v, int *pp) +{ + size_t offset; + bstring *p; - sprintf( bwb_ebuf, "in var_findsval(): entered, var <%s>", v->name ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* Check for appropriate type */ - if ( v->type != STRING ) - { -#if PROG_ERRORS - sprintf ( bwb_ebuf, "in var_findsval(): Variable <%s> is not a string.", v->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_mismatch ); -#endif + if (v->type != STRING) + { + sprintf(bwb_ebuf, "in var_findsval(): Variable <%s> is not a string.", v->name); + bwb_error(bwb_ebuf); return NULL; - } - + } /* Check subscripts */ - if ( dim_check( v, pp ) == FALSE ) - { + if (dim_check(v, pp) == FALSE) + { return NULL; - } - + } /* Calculate and return the address of the dimensioned array */ - offset = dim_unit( v, pp ); + offset = dim_unit(v, pp); -#if INTENSIVE_DEBUG - for ( n = 0; n < v->dimensions; ++n ) - { - sprintf( bwb_ebuf, - "in var_findsval(): dimensioned variable pos <%d> val <%d>.", - n, pp[ n ] ); - bwb_debug( bwb_ebuf ); - } -#endif p = v->memstr; return (p + offset); - } +} /*************************************************************** - + FUNCTION: dim_check() - + DESCRIPTION: This function checks subscripts of a specific variable to be sure that they are within the correct range. - + ***************************************************************/ -#if ANSI_C -static int -dim_check( struct bwb_variable *v, int *pp ) -#else static int -dim_check( v, pp ) - struct bwb_variable *v; - int *pp; -#endif - { - register int n; +dim_check(struct bwb_variable * v, int *pp) +{ + register int n; /* Check for dimensions */ - if ( v->dimensions < 1 ) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dim_check(): var <%s> dimensions <%d>", - v->name, v->dimensions ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_valoorange ); -#endif + if (v->dimensions < 1) + { + sprintf(bwb_ebuf, "in dim_check(): var <%s> dimensions <%d>", + v->name, v->dimensions); + bwb_error(bwb_ebuf); return FALSE; - } - + } /* Check for validly allocated array */ - if (( v->type == NUMBER ) && ( v->memnum == NULL )) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dim_check(): numerical var <%s> memnum not allocated", - v->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_valoorange ); -#endif + if ((v->type == NUMBER) && (v->memnum == NULL)) + { + sprintf(bwb_ebuf, "in dim_check(): numerical var <%s> memnum not allocated", + v->name); + bwb_error(bwb_ebuf); return FALSE; - } - - if (( v->type == STRING ) && ( v->memstr == NULL )) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dim_check(): string var <%s> memstr not allocated", - v->name ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_valoorange ); -#endif + } + if ((v->type == STRING) && (v->memstr == NULL)) + { + sprintf(bwb_ebuf, "in dim_check(): string var <%s> memstr not allocated", + v->name); + bwb_error(bwb_ebuf); return FALSE; - } - + } /* Now check subscript values */ - for ( n = 0; n < v->dimensions; ++n ) + for (n = 0; n < v->dimensions; ++n) + { + + + if ((pp[n] < dim_base) || ((pp[n] + (1 - dim_base)) > v->array_sizes[n])) { - if ( ( pp[ n ] < dim_base ) || ( ( pp[ n ] - dim_base ) - > v->array_sizes[ n ] )) - { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in dim_check(): array subscript var <%s> pos <%d> val <%d> out of range <%d>-<%d>.", - v->name, n, pp[ n ], dim_base, v->array_sizes[ n ] ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_valoorange ); -#endif + + sprintf(bwb_ebuf, "SUBSCRIPT OUT OF RANGE %s(%d)", v->name, pp[n]); + bwb_error(bwb_ebuf); + + return FALSE; - } } + } /* No problems found */ return TRUE; - } +} /*************************************************************** - + FUNCTION: var_make() - - DESCRIPTION: This function initializes a variable, - allocating necessary memory for it. - + + DESCRIPTION: This function initializes a variable, + allocating necessary memory for it. + ***************************************************************/ -#if ANSI_C -int -var_make( struct bwb_variable *v, int type ) -#else int -var_make( v, type ) - struct bwb_variable *v; - int type; -#endif - { - size_t data_size; - bstring *b; - bstring *sp; /* JBV */ - register int n; /* JBV */ -#if TEST_BSTRING - static int tnumber = 0; -#endif +var_make(struct bwb_variable * v, int type) +{ + bwx_DEBUG(__FUNCTION__); - switch( type ) - { - case STRING: - v->type = STRING; - data_size = sizeof( bstring ); - break; - default: - v->type = NUMBER; - data_size = sizeof( bnumber ); - break; - } + switch (type) + { + case STRING: + v->type = STRING; + break; + default: + v->type = NUMBER; + break; + } /* get memory for array */ /* First kleanup the joint (JBV) */ if (v->memnum != NULL) { - /* Revised to FREE pass-thru call by JBV */ - FREE(v->memnum, "var_make"); - v->memnum = NULL; + /* Revised to FREE pass-thru call by JBV */ + FREE(v->memnum, "var_make"); + v->memnum = NULL; } if (v->memstr != NULL) { - /* Remember to deallocate those far-flung branches! (JBV) */ - sp = v->memstr; - for ( n = 0; n < (int) v->array_units; ++n ) - { - if ( sp[ n ].sbuffer != NULL ) - { - /* Revised to FREE pass-thru call by JBV */ - FREE( sp[ n ].sbuffer, "var_make" ); - sp[ n ].sbuffer = NULL; - } - sp[ n ].rab = FALSE; - sp[ n ].length = 0; - } - /* Revised to FREE pass-thru call by JBV */ - FREE(v->memstr, "var_make"); - v->memstr = NULL; + /* Remember to deallocate those far-flung branches! (JBV) */ + bstring *sp; /* JBV */ + register int n; /* JBV */ + + sp = v->memstr; + for (n = 0; n < (int) v->array_units; ++n) + { + if (sp[n].sbuffer != NULL) + { + /* Revised to FREE pass-thru call by JBV */ + FREE(sp[n].sbuffer, "var_make"); + sp[n].sbuffer = NULL; + } + sp[n].rab = FALSE; + sp[n].length = 0; + } + /* Revised to FREE pass-thru call by JBV */ + FREE(v->memstr, "var_make"); + v->memstr = NULL; } /* Revised to FREE pass-thru calls by JBV */ if (v->array_sizes != NULL) { - FREE(v->array_sizes, "var_make"); - v->array_sizes = NULL; /* JBV */ + FREE(v->array_sizes, "var_make"); + v->array_sizes = NULL; /* JBV */ } if (v->array_pos != NULL) { - FREE(v->array_pos, "var_make"); - v->array_pos = NULL; /* JBV */ + FREE(v->array_pos, "var_make"); + v->array_pos = NULL; /* JBV */ } - - if ( v->type == NUMBER ) - { + if (v->type == NUMBER) + { /* Revised to CALLOC pass-thru call by JBV */ - if ( ( v->memnum = CALLOC( 2, sizeof( bnumber ), "var_make" )) == NULL ) - { - bwb_error( err_getmem ); - return FALSE; - } + if ((v->memnum = CALLOC(2, sizeof(BasicNumberType), "var_make")) == NULL) + { + bwb_error(err_getmem); + return FALSE; } + } else - { + { /* Revised to CALLOC pass-thru call by JBV */ - if ( ( v->memstr = CALLOC( 2, sizeof( bstring ), "var_make" )) == NULL ) - { - bwb_error( err_getmem ); - return FALSE; - } + if ((v->memstr = CALLOC(2, sizeof(bstring), "var_make")) == NULL) + { + bwb_error(err_getmem); + return FALSE; } + } /* get memory for array_sizes and array_pos */ /* Revised to CALLOC pass-thru call by JBV */ - if ( ( v->array_sizes = (int *) CALLOC( 2, sizeof( int ), "var_make" )) == NULL ) - { - bwb_error( err_getmem ); + if ((v->array_sizes = (int *) CALLOC(2, sizeof(int), "var_make")) == NULL) + { + bwb_error(err_getmem); return FALSE; - } - + } /* Revised to CALLOC pass-thru call by JBV */ - if ( ( v->array_pos = (int *) CALLOC( 2, sizeof( int ), "var_make" )) == NULL ) - { - bwb_error( err_getmem ); + if ((v->array_pos = (int *) CALLOC(2, sizeof(int), "var_make")) == NULL) + { + bwb_error(err_getmem); return FALSE; - } - - v->array_pos[ 0 ] = dim_base; - v->array_sizes[ 0 ] = 1; + } + v->array_pos[0] = dim_base; + v->array_sizes[0] = 1; v->dimensions = 1; v->common = FALSE; v->array_units = 1; + v->IsInDim = 0; - if ( type == STRING ) - { - b = var_findsval( v, v->array_pos ); - b->rab = FALSE; - } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_make(): made variable <%s> type <%c> pos[ 0 ] <%d>", - v->name, v->type, v->array_pos[ 0 ] ); - bwb_debug( bwb_ebuf ); -#endif + if (type == STRING) + { + bstring *b; -#if TEST_BSTRING - if ( type == STRING ) - { - b = var_findsval( v, v->array_pos ); - sprintf( b->name, "bstring# %d", tnumber ); - ++tnumber; - sprintf( bwb_ebuf, "in var_make(): new string variable <%s>", - b->name ); - bwb_debug( bwb_ebuf ); - } -#endif + b = var_findsval(v, v->array_pos); + b->rab = FALSE; + } return TRUE; - } +} /*************************************************************** - - FUNCTION: var_islocal() - - DESCRIPTION: This function determines whether the string - pointed to by 'buffer' has the name of - a local variable at the present EXEC stack - level. - + + FUNCTION: var_islocal() + + DESCRIPTION: This function determines whether the string + pointed to by 'buffer' has the name of + a local variable at the present EXEC stack + level. + ***************************************************************/ -#if ANSI_C -extern struct bwb_variable * -var_islocal( char *buffer ) -#else -struct bwb_variable * -var_islocal( buffer ) - char *buffer; -#endif - { +static struct bwb_variable * +var_islocal(char *buffer) +{ struct bwb_variable *v; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_islocal(): check for local variable <%s> EXEC level <%d>", - buffer, CURTASK exsc ); - bwb_debug( bwb_ebuf ); -#endif + bwx_DEBUG(__FUNCTION__); /* Prevent the expression in the initial value of the for loop below - from violating the lower bound of the "excs" array. This would - happen during startup when "exsc" is initially set to -1 and - bwbasic.exe would fail with a memory exception when compiled with - Open Watcom C. */ + * from violating the lower bound of the "excs" array. This would + * happen during startup when "exsc" is initially set to -1 and + * bwbasic.exe would fail with a memory exception when compiled with + * Open Watcom C. */ - if ( CURTASK exsc >= 0 ) - { - - /* run through the local variable list and try to find a match */ - for ( v = CURTASK excs[ CURTASK exsc ].local_variable; v != NULL; v = v->next ) + if (CURTASK exsc >= 0) + { + int i; + for (i = CURTASK exsc; i >= 0; i--) { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_islocal(): checking var <%s> level <%d>...", - v->name, CURTASK exsc ); - bwb_debug( bwb_ebuf ); -#endif - - if ( strcmp( v->name, buffer ) == 0 ) + for (v = CURTASK excs[i].local_variable; v != NULL; v = v->next) { - -#if PROG_ERRORS - switch( v->type ) + if (strcasecmp(v->name, buffer) == 0) { - case STRING: - case NUMBER: - break; - default: - sprintf( bwb_ebuf, "in var_islocal(): inappropriate precision for variable <%s>", - v->name ); - bwb_error( bwb_ebuf ); + /* FOUND */ + return v; + } + } + if (CURTASK excs[i].LoopTopLine != NULL) + { + switch (CURTASK excs[i].LoopTopLine->cmdnum) + { + case C_FUNCTION: + case C_SUB: + /* we have checked all the way to a + * FUNCTION or SUB boundary */ + /* NOT FOUND */ + return NULL; break; } -#endif - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_islocal(): found local variable <%s>", v->name ); - bwb_debug( bwb_ebuf ); -#endif - - return v; } - } - } /* check of exsc >= 0 */ - /* search failed, return NULL */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in var_islocal(): Failed to find local variable <%s> level <%d>", - buffer, CURTASK exsc ); - bwb_debug( bwb_ebuf ); -#endif + } + /* NOT FOUND */ return NULL; - } +} /*************************************************************** - + FUNCTION: bwb_vars() - + DESCRIPTION: This function implements the Bywater- - specific debugging command VARS, which - gives a list of all variables defined - in memory. - + specific debugging command VARS, which + gives a list of all variables defined + in memory. + ***************************************************************/ -#if PERMANENT_DEBUG -#if ANSI_C -struct bwb_line * -bwb_vars( struct bwb_line *l ) -#else struct bwb_line * -bwb_vars( l ) - struct bwb_line *l; -#endif - { +bwb_VARS(struct bwb_line * l) +{ struct bwb_variable *v; - char tbuf[ MAXSTRINGSIZE + 1 ]; + char tbuf[BasicStringLengthMax + 1]; + + bwx_DEBUG(__FUNCTION__); /* run through the variable list and print variables */ - for ( v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next ) + for (v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next) + { + sprintf(bwb_ebuf, "variable <%s>\t", v->name); + prn_xprintf(bwb_ebuf); + switch (v->type) { - sprintf( bwb_ebuf, "variable <%s>\t", v->name ); - prn_xprintf( stdout, bwb_ebuf ); - switch( v->type ) - { - case STRING: - str_btoc( tbuf, var_getsval( v ) ); - sprintf( bwb_ebuf, "STRING\tval: <%s>\n", tbuf ); - prn_xprintf( stdout, bwb_ebuf ); - break; - case NUMBER: -#if NUMBER_DOUBLE - sprintf( bwb_ebuf, "NUMBER\tval: <%lf>\n", var_getnval( v ) ); - prn_xprintf( stdout, bwb_ebuf ); -#else - sprintf( bwb_ebuf, "NUMBER\tval: <%f>\n", var_getnval( v ) ); - prn_xprintf( stdout, bwb_ebuf ); -#endif - break; - default: - sprintf( bwb_ebuf, "ERROR: type is <%c>", (char) v->type ); - prn_xprintf( stdout, bwb_ebuf ); - break; - } + case STRING: + str_btoc(tbuf, var_getsval(v)); + sprintf(bwb_ebuf, "STRING\tval: <%s>\n", tbuf); + prn_xprintf(bwb_ebuf); + break; + case NUMBER: + sprintf(bwb_ebuf, "NUMBER\tval: <" BasicNumberPrintFormat ">\n", var_getnval(v)); + prn_xprintf(bwb_ebuf); + break; + default: + sprintf(bwb_ebuf, "ERROR: type is <%c>", (char) v->type); + prn_xprintf(bwb_ebuf); + break; } - - return bwb_zline( l ); } -#endif + return bwb_zline(l); +} + +/* EOF */ diff --git a/bwbasic.c b/bwbasic.c index bf38144..c02a845 100644 --- a/bwbasic.c +++ b/bwbasic.c @@ -1,1540 +1,2710 @@ /*************************************************************** - + bwbasic.c Main Program File for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - - "I was no programmer, neither was I a - programmer's son; but I was an herdman - and a gatherer of sycomore fruit." - - Amos 7:14b AV, slightly adapted - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include -#include #include "bwbasic.h" -#include "bwb_mes.h" - -#if HAVE_SIGNAL -#include -#endif - -#if HAVE_LONGJUMP -#include -#endif -char *bwb_ebuf; /* error buffer */ -static char *read_line; -int bwb_trace = FALSE; -FILE *errfdevice; /* output device for error messages */ -#if HAVE_LONGJUMP -jmp_buf mark; -#endif -static int program_run = 0; /* has the command-line program been run? */ -int bwb_curtask = 0; /* current task */ - -struct bwb_variable *ed; /* BWB.EDITOR$ variable */ -struct bwb_variable *fi; /* BWB.FILES$ variable */ -struct bwb_variable *pr; /* BWB.PROMPT$ variable */ -struct bwb_variable *im; /* BWB.IMPLEMENTATION$ variable */ -struct bwb_variable *co; /* BWB.COLORS variable */ - -#if PARACT -struct bwb_task *bwb_tasks[ TASKS ]; /* table of task pointers */ -#else -char progfile[ MAXARGSIZE ]; /* program file */ -int rescan = TRUE; /* program needs to be rescanned */ -int number = 0; /* current line number */ -struct bwb_line *bwb_l; /* current line pointer */ -struct bwb_line bwb_start; /* starting line marker */ -struct bwb_line bwb_end; /* ending line marker */ -struct bwb_line *data_line; /* current line to read data */ -int data_pos = 0; /* position in data_line */ -struct bwb_variable var_start; /* variable list start marker */ -struct bwb_variable var_end; /* variable list end marker */ -struct bwb_function fnc_start; /* function list start marker */ -struct bwb_function fnc_end; /* function list end marker */ -struct fslte fslt_start; /* function-sub-label lookup table start marker */ -struct fslte fslt_end; /* function-sub-label lookup table end marker */ -int exsc = -1; /* EXEC stack counter */ -int expsc = 0; /* expression stack counter */ -int xtxtsc = 0; /* eXecute TeXT stack counter */ -struct exse *excs; /* EXEC stack */ -struct exp_ese *exps; /* Expression stack */ -struct xtxtsl *xtxts; /* Execute Text stack */ -#endif +char *bwb_ebuf = NULL; /* error buffer */ +static char *read_line = NULL; +int bwb_trace = FALSE; +FILE *errfdevice = NULL; /* output device for error messages */ + + +int bwb_curtask = 0;/* current task */ + +struct bwb_variable *ed = NULL; /* BWB.EDITOR$ variable */ +struct bwb_variable *fi = NULL; /* BWB.FILES$ variable */ +struct bwb_variable *pr = NULL; /* BWB.PROMPT$ variable */ +struct bwb_variable *im = NULL; /* BWB.IMPLEMENTATION$ variable */ +struct bwb_variable *co = NULL; /* BWB.COLORS variable */ + +char progfile[FILENAME_MAX + 1]; /* program filename */ +int rescan = TRUE; /* program needs to be rescanned */ +int number = 0; /* current line number */ +struct bwb_line *bwb_l = NULL; /* current line pointer */ +struct bwb_line bwb_start; /* starting line marker */ +struct bwb_line user_line; +struct bwb_line bwb_end; /* ending line marker */ +struct bwb_line *data_line = NULL; /* current line to read data */ +int data_pos = 0; /* position in data_line */ +struct bwb_variable var_start; /* variable list start marker */ +struct bwb_variable var_end; /* variable list end marker */ +struct bwb_function fnc_start; /* function list start marker */ +struct bwb_function fnc_end; /* function list end marker */ +struct fslte fslt_start; /* function-sub-label lookup table start + * marker */ +struct fslte fslt_end; /* function-sub-label lookup table end marker */ +int exsc = -1; /* EXEC stack counter */ +int expsc = 0; /* expression stack counter */ +struct exse *excs = NULL; /* EXEC stack */ +struct exp_ese *exps = NULL; /* Expression stack */ +int IsInteractive = TRUE; +int IsCommandLineFile = FALSE; +struct dev_element *dev_table = NULL; /* table of devices */ +OptionVersionType OptionVersion = 0; /* VersionBitmask for compatibility + * via OPTION VERSION ... */ +unsigned short OptionFlags = 0x0000; +char OptionCommentChar = '\0'; /* ', ! */ +char OptionStatementChar = '\0'; /* :, \ */ +char OptionDateFormat[81]; +char OptionTimeFormat[81]; +int OptionIndentValue = 2; +int OptionTerminalType = C_OPTION_TERMINAL_NONE; +int LPRINT_COLUMN = 1; /* LPRINT_FILE_NUMBER */ +int LPRINT_WIDTH = 80; /* LPRINT_FILE_NUMBER */ +int LPRINT_NULLS = 0; /* LPRINT_FILE_NUMBER */ +struct bwb_line * err_line = NULL; /* line in which error occurred */ +int err_number = 0; /* number of last error */ +int stopped_line = 0; /* line number of the last executed + * STOP command */ +int dim_base = 0; /* OPTION BASE ... */ + +/* Error messages used more than once */ + +char err_openfile[] = ERR_OPENFILE; +char err_getmem[] = ERR_GETMEM; +char err_noln[] = ERR_NOLN; +char err_nofn[] = ERR_NOFN; +char err_lnnotfound[] = ERR_LNNOTFOUND; +char err_incomplete[] = ERR_INCOMPLETE; +char err_valoorange[] = ERR_VALOORANGE; +char err_syntax[] = ERR_SYNTAX; +char err_devnum[] = ERR_DEVNUM; +char err_dev[] = ERR_DEV; +char err_opsys[] = ERR_OPSYS; +char err_argstr[] = ERR_ARGSTR; +char err_defchar[] = ERR_DEFCHAR; +char err_mismatch[] = ERR_MISMATCH; +char err_dimnotarray[] = ERR_DIMNOTARRAY; +char err_retnogosub[] = ERR_RETNOGOSUB; +char err_od[] = ERR_OD; +char err_overflow[] = ERR_OVERFLOW; +char err_nf[] = ERR_NF; +char err_uf[] = ERR_UF; +char err_dbz[] = ERR_DBZ; +char err_redim[] = ERR_REDIM; +char err_obdim[] = ERR_OBDIM; +char err_uc[] = ERR_UC; +char err_noprogfile[] = ERR_NOPROGFILE; + + + +int NextValidLineNumber = BasicLineNumberMin; /* Used only to verify + * BASIC files are + * loaded in ascending + * line number order */ + +BasicLineNumberType tmr_gotol = 0; +BasicNumberType tmr_count = 0; +BasicNumberType tmr_expires = 0; + +static FILE *LPRINTER = NULL; +static char EventQueue = 0x00; /* may change to int/long/array */ + + +#if AUTOMATED_REGRESSION +/* for automated testing */ +FILE *ExternalInputFile = NULL; +#endif /* AUTOMATED_REGRESSION */ + +int MaintainerDebugOn = FALSE; +FILE *MaintainerDebugFile = NULL; + +int DefaultVariableType[26]; /* bwb_variable->type, A-Z */ -/* Prototypes for functions visible only to this file */ +int +bwx_LPRINT(char a) +{ + bwx_DEBUG(__FUNCTION__); + /* send character to printer */ + if (LPRINTER == NULL) + { + LPRINTER = fopen(LPRINTFILENAME, "w"); + } + if (LPRINTER != NULL) + { + fputc(a, LPRINTER); + } + return 0; +} -#if ANSI_C -extern int is_ln( char *buffer ); -#else -extern int is_ln(); -#endif /*************************************************************** - - FUNCTION: bwb_init() - - DESCRIPTION: This function initializes bwBASIC. - + + FUNCTION: bwx_terminate() + + DESCRIPTION: This function terminates program execution. + ***************************************************************/ void -#if ANSI_C -bwb_init( int argc, char **argv ) -#else -bwb_init( argc, argv ) - int argc; - char **argv; -#endif - { - static FILE *input = NULL; - register int n; -#if PROFILE - struct bwb_variable *v; -#endif -#if REDIRECT_STDERR - FILE *newerr; -#endif -#if PROFILE - FILE *profile; -#endif -#if PARACT -#else - static char start_buf[] = "\0"; - static char end_buf[] = "\0"; -#endif - - errfdevice = stderr; -#if INTENSIVE_DEBUG - prn_xprintf( stderr, "Memory Allocation Statistics:\n" ); - prn_xprintf( stderr, "----------------------------\n" ); -#if PARACT - sprintf( bwb_ebuf, "task structure: %ld bytes\n", - (long) sizeof( struct bwb_task ) ); - prn_xprintf( stderr, bwb_ebuf ); - getchar(); -#endif -#endif - - /* set all task pointers to NULL */ - -#if PARACT +bwx_terminate(void) +{ + bwx_DEBUG(__FUNCTION__); + exit(0); +} - for ( n = 0; n < TASKS; ++n ) - { - bwb_tasks[ n ] = NULL; - } -#else - /* Memory allocation */ - /* eXecute TeXT stack */ +/*************************************************************** + + FUNCTION: break_handler() + + DESCRIPTION: This function is called by break_mes() + and handles program interruption by break + (or by the STOP command). + +***************************************************************/ - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( xtxts = CALLOC( XTXTSTACKSIZE, sizeof( struct xtxtsl ), "bwb_init") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_init(): failed to find memory for xtxts" ); -#else - bwb_error( err_getmem ); -#endif - } +void +break_handler(void) +{ + bwx_DEBUG(__FUNCTION__); - /* expression stack */ + if (IsInteractive) + { + /* INTERACTIVE: terminate program */ - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( exps = CALLOC( ESTACKSIZE, sizeof( struct exp_ese ), "bwb_init") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_init(): failed to find memory for exps" ); -#else - bwb_error( err_getmem ); -#endif - } + /* reset all stack counters */ + CURTASK exsc = -1; + CURTASK expsc = 0; + SetOnError(0); - /* EXEC stack */ + err_number = -1;/* in break_handler() */ - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( excs = CALLOC( EXECLEVELS, sizeof( struct exse ), "bwb_init") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_init(): failed to find memory for excs" ); -#else - bwb_error( err_getmem ); -#endif - } - /* initialize tables of variables, functions */ + /* reset the break handler */ + signal(SIGINT, break_mes); - bwb_start.number = 0; - bwb_start.next = &bwb_end; - bwb_end.number = MAXLINENO + 1; - bwb_end.next = &bwb_end; - bwb_start.buffer = start_buf; - bwb_end.buffer = end_buf; - data_line = &bwb_start; - data_pos = 0; - exsc = -1; - expsc = 0; - xtxtsc = 0; - bwb_start.position = 0; - bwb_l = &bwb_start; + longjmp(mark, -1); - var_init( 0 ); - fnc_init( 0 ); - fslt_init( 0 ); -#endif + return; + } + /* NOT INTERACTIVE: terminate immediately */ + bwx_terminate(); +} - /* character buffers */ +/*************************************************************** + + FUNCTION: break_mes() + + DESCRIPTION: This function is called (a) by a SIGINT + signal or (b) by bwb_STOP via bwx_STOP. + It prints an error message then calls + break_handler() to terminate the program. + +***************************************************************/ - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( bwb_ebuf = CALLOC( MAXSTRINGSIZE + 1, sizeof(char), "bwb_init") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_init(): failed to find memory for bwb_ebuf" ); -#else - bwb_error( err_getmem ); -#endif - } - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( read_line = CALLOC( MAXREADLINESIZE + 1, sizeof(char), "bwb_init") ) == NULL ) +void +break_mes(int x) +{ + /* break_mes() is FATAL */ + bwx_DEBUG(__FUNCTION__); + if (err_number < 0) /* don't make a bad situation worse */ + { + /* an error has already ben reported */ + } + else + { + prn_xprintf("\n"); + prn_xprintf(MES_BREAK); + if (CURTASK number > 0) { -#if PROG_ERRORS - bwb_error( "in bwb_init(): failed to find memory for read_line" ); -#else - bwb_error( err_getmem ); -#endif + char tbuf[33]; + sprintf(tbuf, "%d", CURTASK number); + prn_xprintf(" "); + prn_xprintf(tbuf); } + prn_xprintf("\n"); + } + break_handler(); +} -#if PARACT - - /* request task 0 as current (base) task */ +void +bwx_STOP(void) +{ + bwx_DEBUG(__FUNCTION__); + break_mes(0); +} - bwb_curtask = bwb_newtask( 0 ); +/*************************************************************** + + FUNCTION: bwb_error() + + DESCRIPTION: This function is called to handle errors + in Bywater. It displays the error + message, then calls the break_handler() + routine. + +***************************************************************/ - if ( bwb_curtask == -1 ) +int +bwb_error(char *message) +{ + /* bwb_error() is FATAL */ + bwx_DEBUG(__FUNCTION__); + if (err_number < 0) /* don't make a bad situation worse */ + { + /* an error has already ben reported */ + } + else + { + prn_xprintf("\n"); + prn_xprintf(ERROR_HEADER); + if (CURTASK number > 0) { - return; /* error message has already been called*/ + char tbuf[32]; + sprintf(tbuf, "%d", CURTASK number); + prn_xprintf(" "); + prn_xprintf(tbuf); } + prn_xprintf(": "); + prn_xprintf(message); + prn_xprintf("\n"); -#endif - -#if TEST_BSTRING - for ( n = 0; n < ESTACKSIZE; ++n ) + if (OptionFlags & OPTION_TRACE_ON) { - sprintf( CURTASK exps[ n ].sval.name, "", n ); - } -#endif + /* * dump BASIC stack trace when FATAL error * First + * line is the TOP of the stack * Last line is the + * BOTTOM of the stack */ - /* assign memory for the device table */ + int i; + prn_xprintf("\nSTACK TRACE:\n"); + for (i = CURTASK exsc; i >= 0; i--) + { + struct bwb_line *l; -#if COMMON_CMDS - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( dev_table = CALLOC( DEF_DEVICES, sizeof( struct dev_element ), "bwb_init") ) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_init(): failed to find memory for dev_table" ); -#else - bwb_error( err_getmem ); -#endif - bwx_terminate(); + l = CURTASK excs[i].line; + if (l != NULL) + { + char LineNumber[32]; + + sprintf(LineNumber, "%d:", l->number); + prn_xprintf(LineNumber); + if (l->buffer != NULL) + { + prn_xprintf(l->buffer); + } + prn_xprintf("\n"); + } + } } + } + break_handler(); + return FALSE; +} - /* initialize all devices to DEVMODE_AVAILABLE */ - - for ( n = 0; n < DEF_DEVICES; ++n ) - { - dev_table[ n ].mode = DEVMODE_AVAILABLE; - dev_table[ n ].reclen = -1; - dev_table[ n ].cfp = NULL; - dev_table[ n ].buffer = NULL; - dev_table[ n ].width = DEF_WIDTH; - dev_table[ n ].col = 1; - } -#endif /* COMMON_CMDS */ - /* initialize preset variables */ +/*************************************************************** + + FUNCTION: bwx_signon() + + DESCRIPTION: This function prints out the sign-on + message for bwBASIC. + +***************************************************************/ +static char *Banner[] = { + "######## ## ## ## ## ### ######## ######## ######## ", + "## ## ## ## ## ## ## ## ## ## ## ## ## ", + "## ## #### ## ## ## ## ## ## ## ## ## ", + "######## ## ## ## ## ## ## ## ###### ######## ", + "## ## ## ## ## ## ######### ## ## ## ## ", + "## ## ## ## ## ## ## ## ## ## ## ## ", + "######## ## ### ### ## ## ## ######## ## ## ", + " ", + " ", + " ######## ### ###### #### ###### ", + " ## ## ## ## ## ## ## ## ##", + " ## ## ## ## ## ## ## ", + " ######## ## ## ###### ## ## ", + " ## ## ######### ## ## ## ", + " ## ## ## ## ## ## ## ## ##", + " ######## ## ## ###### #### ###### ", + " ", + MES_SIGNON " " VERSION, + MES_COPYRIGHT_1, + MES_COPYRIGHT_2, + MES_COPYRIGHT_3, + MES_LANGUAGE, + NULL +}; - ed = var_find( DEFVNAME_EDITOR ); - ed->preset = TRUE; - ed->common = TRUE; - str_ctob( var_findsval( ed, ed->array_pos ), DEF_EDITOR ); - fi = var_find( DEFVNAME_FILES ); - fi->preset = TRUE; - fi->common = TRUE; - str_ctob( var_findsval( fi, fi->array_pos ), DEF_FILES ); +int +bwx_signon(void) +{ - pr = var_find( DEFVNAME_PROMPT ); - pr->preset = TRUE; - pr->common = TRUE; - str_ctob( var_findsval( pr, pr->array_pos ), PROMPT ); + /* NOT called if a file is provided on the command line */ + int i; + bwx_DEBUG(__FUNCTION__); + for (i = 0; Banner[i] != NULL; i++) + { + prn_xprintf(Banner[i]); + prn_xprintf("\n"); + } - im = var_find( DEFVNAME_IMPL ); - im->preset = TRUE; - im->common = TRUE; - str_ctob( var_findsval( im, im->array_pos ), IMP_IDSTRING ); + return TRUE; - co = var_find( DEFVNAME_COLORS ); - co->preset = TRUE; - co->common = TRUE; - * var_findnval( co, co->array_pos ) = (bnumber) DEF_COLORS; +} - /* Signon message */ +int +bwx_CONSOLE_WIDTH() +{ + /* default CONSOLE width */ + return 80; +} - bwx_signon(); +int +bwx_LPRINT_WIDTH() +{ + /* default PRINTER file width */ + return 80; +} - /* Redirect stderr if specified */ +int +bwx_RANDOM_RECORD_SIZE() +{ + /* default RANDOM record size */ + return 128; +} -#if REDIRECT_STDERR - newerr = freopen( ERRFILE, "w", stderr ); - if ( newerr == NULL ) +int +bwx_DEBUG(const char *A) +{ + /* -- RECURSION WARNING -- DO NOT SEND IT TO BACK TO BWBASIC -- */ + /* This is DEBUG output. Send it to a file, OutputDebugString, or + * puts() */ + if (MaintainerDebugOn) + { + if (MaintainerDebugFile == NULL) { - sprintf( bwb_ebuf, "Failed to redirect error messages to file <%s>\n", - ERRFILE ); - errfdevice = stdout; - prn_xprintf( errfdevice, bwb_ebuf ); + MaintainerDebugFile = fopen(DEBUGFILENAME, "w"); } - else + if (MaintainerDebugFile != NULL) { - sprintf( bwb_ebuf, "NOTE: Error messages are redirected to file <%s>\n", - ERRFILE ); - prn_xprintf( errfdevice, bwb_ebuf ); - errfdevice = stderr; + fputs(A, MaintainerDebugFile); + fputs("\n", MaintainerDebugFile); + fflush(MaintainerDebugFile); } -#else - errfdevice = stdout; -#endif - - /* if there is a profile.bas, execute it */ - -#if PROFILE - if ( ( profile = fopen( PROFILENAME, "r" )) != NULL ) + else { - bwb_fload( profile ); /* load profile */ - bwb_run( &CURTASK bwb_start ); /* run profile */ + puts(A); + } + } + return 0; +} - /* profile must be run immediately, not by scheduler */ +BasicNumberType +bwx_TIMER(BasicNumberType Seconds) +{ + /* Return a number representing Seconds in the future. Seconds >= 0. + * Seconds may be non-integer, such as 0.001 or 86399.999. The + * maximum allowed Seconds is DBL_MAX. This is used two ways: 1) in + * bwb_TIMER(), the ON TIMER count (>0) is used to determine the + * expiration time. In this case, simply return what the value will + * be in the future. Note that ON TIMER enforces Seconds > (1 / + * CLOCKS_PER_SEC) 2) in bwb_execline(), zero (=0) is used to + * determine the current time and compare it to #1. In this case, + * simply return what the value is now. Both the resolution of the + * timer, and frequency of update, are implementation defined. */ + bwx_DEBUG(__FUNCTION__); + if (Seconds < 0) + { + bwb_error("INTERNAL ERROR: bwx_TIMER called with negative value"); + return 0; + } + else + { + BasicNumberType Result; + Result = clock(); + Result /= CLOCKS_PER_SEC; + Result += Seconds; + return Result; + } +} - while ( CURTASK exsc > -1 ) - { - bwb_execline(); - } +static void +CleanLine(char *buffer) +{ + char *newbuffer; - /* mark all profiled variables as preset */ + bwx_DEBUG(__FUNCTION__); + - for ( v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next ) - { + /* cleanup the line, so it's easier to parse */ + newbuffer = buffer; + while (*newbuffer != 0) + { + if (*newbuffer < ' ') + { + /* remove ALL embedded control characters */ + /* if you want a control character, then use CHR$ */ + *newbuffer = ' '; + } + newbuffer++; + } + /* LTRIM$ */ + newbuffer = buffer; + if (*newbuffer != 0) + { + /* not an empty line, so remove one (or more) leading spaces */ + while (*newbuffer == ' ') + { + newbuffer++; + } + if (newbuffer > buffer) + { + strcpy(buffer, newbuffer); + } + } + /* RTRIM$ */ + newbuffer = buffer; + if (*newbuffer != 0) + { + /* not an empty line, so remove one (or more) trailing spaces */ + char *E; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_init(): marked variable <%s> preset TRUE", - v->name ); - bwb_debug( bwb_ebuf ); -#endif + E = strchr(newbuffer, 0); + E--; + while (E >= newbuffer && *E == ' ') + { + *E = 0; + E--; + } + } +} - v->preset = TRUE; - } - bwb_new( &CURTASK bwb_start ); /* remove profile from memory */ - } -#endif +/*************************************************************** + + FUNCTION: bwb_init() + + DESCRIPTION: This function initializes bwBASIC. + +***************************************************************/ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in main(): Ready to save jump MARKER" ); - bwb_debug( bwb_ebuf ); -#endif +void +bwb_init(int argc, char **argv) +{ + register int n; + static char start_buf[] = "\0"; + static char end_buf[] = "\0"; + bwx_DEBUG(__FUNCTION__); + + strcpy( progfile, "" ); + + memset( &bwb_start, 0, sizeof(struct bwb_line) ); + memset( &user_line, 0, sizeof(struct bwb_line) ); + memset( &bwb_end , 0, sizeof(struct bwb_line) ); + + memset( &var_start, 0, sizeof(struct bwb_variable) ); + memset( &var_end , 0, sizeof(struct bwb_variable) ); + + memset( &fnc_start, 0, sizeof(struct bwb_function) ); + memset( &fnc_end , 0, sizeof(struct bwb_function) ); + + memset( &fslt_start, 0, sizeof(struct fslte) ); + memset( &fslt_end , 0, sizeof(struct fslte) ); + + SortAllCommands(); + SortAllFunctions(); - /* set a buffer for jump: program execution returns to this point - in case of a jump (error, interrupt, or finish program) */ -#if INTERACTIVE + errfdevice = stderr; -#if HAVE_SIGNAL - signal( SIGINT, break_mes ); -#endif + /* Memory allocation */ -#if HAVE_LONGJUMP - setjmp( mark ); -#endif -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_init(): Return from jump MARKER, program run <%d>", - program_run + 1 ); - bwb_debug( bwb_ebuf ); - getchar(); -#endif + /* expression stack */ + /* Revised to CALLOC pass-thru call by JBV */ + if ((exps = CALLOC(ESTACKSIZE, sizeof(struct exp_ese), "bwb_init")) == NULL) + { + bwb_error("in bwb_init(): failed to find memory for exps"); + return; + } + /* EXEC stack */ - /* if INTERACTIVE is FALSE, then we must have a program file */ + /* Revised to CALLOC pass-thru call by JBV */ + if ((excs = CALLOC(EXECLEVELS, sizeof(struct exse), "bwb_init")) == NULL) + { + bwb_error("in bwb_init(): failed to find memory for excs"); + return; + } + /* character buffers */ -#else + /* Revised to CALLOC pass-thru call by JBV */ + if ((bwb_ebuf = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_init")) == NULL) + { + bwb_error("in bwb_init(): failed to find memory for bwb_ebuf"); + return; + } + /* Revised to CALLOC pass-thru call by JBV */ + if ((read_line = CALLOC(BasicStringLengthMax + 1, sizeof(char), "bwb_init")) == NULL) + { + bwb_error("in bwb_init(): failed to find memory for read_line"); + return; + } + /* assign memory for the device table */ + /* Revised to CALLOC pass-thru call by JBV */ + if ((dev_table = CALLOC(BasicFileNumberMax + 1 /* console is #0 */ , sizeof(struct dev_element), "bwb_init")) == NULL) + { + bwb_error("in bwb_init(): failed to find memory for dev_table"); + return; + } + /* initialize tables of variables, functions */ - if ( argc < 2 ) - { - bwb_error( err_noprogfile ); - } + bwb_start.number = BasicLineNumberMin - 1; + bwb_start.next = &bwb_end; + user_line.number = BasicLineNumberMin - 1; + user_line.next = &bwb_end; + bwb_end.number = BasicLineNumberMax + 1; + bwb_end.next = &bwb_end; + bwb_start.buffer = start_buf; + user_line.buffer = NULL; + bwb_end.buffer = end_buf; + data_line = &bwb_start; + data_pos = 0; + exsc = -1; + expsc = 0; + bwb_start.position = 0; + user_line.position = 0; + bwb_l = &bwb_start; -#endif /* INTERACTIVE */ + var_init(0); + fnc_init(0); + fslt_init(0); + OptionVersionSet(0); - /* check to see if there is a program file: but do this only the first - time around! */ - ++program_run; - if (( argc > 1 ) && ( program_run == 1 )) - { - strcpy( CURTASK progfile, argv[ 1 ] ); /* JBV */ - if ( ( input = fopen( CURTASK progfile, "r" )) == NULL ) /* JBV */ - { - strcat( CURTASK progfile, ".bas" ); - if ( ( input = fopen( CURTASK progfile, "r" )) == NULL ) - { - CURTASK progfile[ 0 ] = 0; - sprintf( bwb_ebuf, err_openfile, argv[ 1 ] ); - bwb_error( bwb_ebuf ); - } - } - if ( input != NULL ) - { - /* strcpy( CURTASK progfile, argv[ 1 ] ); */ /* Removed by JBV */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in main(): progfile is <%s>.", CURTASK progfile ); - bwb_debug( bwb_ebuf ); -#endif - bwb_fload( input ); - bwb_run( &CURTASK bwb_start ); - } - } + /* initialize all devices to DEVMODE_CLOSED */ + for (n = 0; n <= BasicFileNumberMax; n++) + { + dev_table[n].mode = DEVMODE_CLOSED; + dev_table[n].width = 0; + dev_table[n].col = 0; + dev_table[n].filename[0] = '\0'; + dev_table[n].cfp = NULL; + dev_table[n].buffer = NULL; + } + /* NOTE: File #0 is the console for both INPUT and OUTPUT. */ + if (TRUE) + { + dev_table[CONSOLE_FILE_NUMBER].mode = DEVMODE_INPUT | DEVMODE_OUTPUT; + dev_table[CONSOLE_FILE_NUMBER].width = bwx_CONSOLE_WIDTH(); + dev_table[CONSOLE_FILE_NUMBER].col = 1; + LPRINT_WIDTH = bwx_LPRINT_WIDTH(); + LPRINT_COLUMN = 1; + LPRINT_NULLS = 0; + /* OPEN #0 is an ERROR. */ + /* CLOSE #0 is an ERROR. */ + /* WIDTH #0, 80 is the same as WIDTH 80. */ + /* LPRINT and LLIST are sent to bwx_LPRINT() */ } + for (n = 0; n < 26; n++) + { + DefaultVariableType[n] = NUMBER; + } +} /*************************************************************** - - FUNCTION: bwb_interact() - - DESCRIPTION: This function gets a line from the user - and processes it. - + + FUNCTION: bwb_interact() + + DESCRIPTION: This function gets a line from the user + and processes it. + ***************************************************************/ -#if INTERACTIVE int -#if ANSI_C -bwb_interact( void ) -#else -bwb_interact() -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; /* JBV */ +bwb_interact(void) +{ + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_interact(): ready to read from keyboard" ); - bwb_debug( bwb_ebuf ); -#endif /* take input from keyboard */ - bwb_gets( read_line ); - bwb_stripcr( read_line ); /* JBV */ + bwb_gets(read_line); + CleanLine(read_line); /* JBV */ - /* If there is no line number, execute the line as received */ + NextValidLineNumber = BasicLineNumberMin; - if ( is_ln( read_line ) == FALSE ) - { - bwb_xtxtline( read_line ); - } - /*-----------------------------------------------------------------*/ - /* Another possibility: if read_line is a numeric constant, delete */ - /* the indicated line number (JBV) */ - /*-----------------------------------------------------------------*/ - else if ( is_numconst( read_line ) == TRUE ) + if (is_ln(read_line) == FALSE) { - strcpy(tbuf, read_line); - sprintf(read_line, "delete %s\0", tbuf); - bwb_xtxtline( read_line ); + /* If there is no line number, execute the line as received */ + /* RUN */ + bwb_Warning_Clear(); + SetOnError(0); + bwb_xtxtline(read_line); } - - /* If there is a line number, add the line to the file in memory */ - else - { - bwb_ladd( read_line, TRUE ); -#if INTENSIVE_DEBUG - bwb_debug( "Return from bwb_ladd()" ); -#endif - } + if (is_numconst(read_line) == TRUE) + { + /*-----------------------------------------------------------------*/ + /* Another possibility: if read_line is a numeric constant, + * delete */ + /* the indicated line number (JBV) */ + /*-----------------------------------------------------------------*/ + /* DELETE ... */ + int LineNumber; + LineNumber = atoi(read_line); + bwb_Warning_Clear(); + SetOnError(0); + sprintf(read_line, "delete %d", LineNumber); + bwb_xtxtline(read_line); + } + else + { + /* If there is a line number, add the line to the file in + * memory */ + bwb_ladd(read_line, &CURTASK bwb_start); + } return TRUE; - } - -#endif /* INTERACTIVE == TRUE */ +} -/*************************************************************** - FUNCTION: bwb_fload() - DESCRIPTION: This function loads a BASIC program - file into memory given a FILE pointer. +/*************************************************************** + + FUNCTION: bwb_fload() + + DESCRIPTION: This function loads a BASIC program + file into memory given a FILE pointer. + ***************************************************************/ int -#if ANSI_C -bwb_fload( FILE *file ) -#else -bwb_fload( file ) - FILE *file; -#endif - { +bwb_fload(FILE * file) +{ + int Loop; + bwx_DEBUG(__FUNCTION__); - while ( feof( file ) == FALSE ) + NextValidLineNumber = BasicLineNumberMin; + Loop = TRUE; + if (feof(file)) + { + Loop = FALSE; + } + while (Loop == TRUE) + { + read_line[0] = '\0'; + fgets(read_line, BasicStringLengthMax, file); + if (file == stdin) { - read_line[ 0 ] = '\0'; - fgets( read_line, MAXREADLINESIZE, file ); - if ( file == stdin ) - { - * prn_getcol( stdout ) = 1; /* reset column */ - } - bwb_stripcr( read_line ); + ResetConsoleColumn(); - /* be sure that this is not EOF with a NULL line */ + } + CleanLine(read_line); - if (( feof( file ) == FALSE ) || ( strlen( read_line ) > 0 )) - { - bwb_ladd( read_line, FALSE ); - } + /* be sure that this is not EOF with a NULL line */ + if (feof(file)) + { + Loop = FALSE; + } + else + if (strlen(read_line) > 0) + { + bwb_ladd(read_line, &CURTASK bwb_start); } + } /* close file stream */ - fclose( file ); - - return TRUE; - } + fclose(file); -/*************************************************************** - - FUNCTION: bwb_ladd() + NextValidLineNumber = BasicLineNumberMin; - DESCRIPTION: This function adds a new line (in the - buffer) to the program in memory. + return TRUE; +} -***************************************************************/ -int -#if ANSI_C -bwb_ladd( char *buffer, int replace ) -#else -bwb_ladd( buffer, replace ) - char *buffer; - int replace; -#endif +static +char * +FindClassicStatementEnd(char *C) +{ + /* + * find an unquoted OptionStatementChar + * that is NOT in a comment + */ + bwx_DEBUG(__FUNCTION__); + +#if 0 + if (OptionFlags & OPTION_BUGS_ON) { - struct bwb_line *l, *previous, *p; - static char *s_buffer; - static int init = FALSE; - static int prev_num = 0; - char *newbuffer; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): add line <%s>", - buffer ); - bwb_debug( bwb_ebuf ); + /* OK */ + } + else + { + /* ERROR */ + return NULL; + } #endif + if( OptionStatementChar == '\0' ) + { + /* DO NOTHING: Multi-statment lines are not allowed */ + return NULL; + } + /* skip line number */ + while (isdigit(*C)) + { + C++; + } + /* skip spaces */ + while (*C == ' ') + { + C++; + } + if (strncasecmp(C, "REM", 3) == 0) + { + /* REMark */ + return NULL; + } + if (OptionFlags & OPTION_LABELS_ON) + { + /* determine if this line is a LABEL */ + if (isalpha(*C)) + { + char *T = C; + + /* LABEL : ' */ - /* get memory for temporary buffer if necessary */ - - if ( init == FALSE ) + if (OptionFlags & OPTION_BUGS_ON) + { + /* labels may be alphanumeric with extra symbols */ + while (isalnum(*T) || *T == '_' || *T == '.') + { + T++; + } + } + else + { + /* labels may only be alphanumeric */ + while (isalnum(*T)) + { + T++; + } + } + while (*T == ' ') + { + T++; + } + if (*T == OptionStatementChar) + { + T++; + while (*T == ' ') + { + T++; + } + if (*T == OptionCommentChar + || *T == '\0' + ) + { + /* LABEL */ + return NULL; + } + } + } + } + while (*C != '\0') + { + if (*C == '\"') { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( s_buffer = CALLOC( (size_t) MAXSTRINGSIZE + 1, sizeof( char ), "bwb_ladd" )) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in bwb_ladd(): failed to find memory for s_buffer" ); -#else - bwb_error( err_getmem ); -#endif - return FALSE; + /* skip leading quote */ + C++; + while (*C != '\"' && *C != '\0') + { + /* skip string constant */ + C++; + } + if (*C == '\"') + { + /* skip trailing quote */ + C++; } } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): s_buffer initialized " ); - bwb_debug( bwb_ebuf ); -#endif - - /* get memory for this line */ - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( l = (struct bwb_line *) CALLOC( (size_t) 1, sizeof( struct bwb_line ), "bwb_ladd")) == NULL ) + else + if (*C == OptionCommentChar) { -#if PROG_ERRORS - bwb_error( "in bwb_ladd(): failed to find memory for new line" ); -#else - bwb_error( err_getmem ); -#endif - return FALSE; + /* comment */ + return NULL; } - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): got memory." ); - bwb_debug( bwb_ebuf ); -#endif - - /* note that line is not yet marked and the program must be rescanned */ - - l->marked = FALSE; - CURTASK rescan = TRUE; /* program needs to be scanned again */ - l->xnum = FALSE; - - /* get the first element and test for a line number */ - - adv_element( buffer, &( l->position ), s_buffer ); - - /* set line number in line structure */ - - if ( is_numconst( s_buffer ) == TRUE ) + else + if (*C == OptionStatementChar /* :, \ */ ) + { + /* FOUND */ + return C; + } + else { + C++; + } + } + /* NOT FOUND */ + return NULL; +} - l->number = atoi( s_buffer ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): line is numbered, number is <%d>", - l->number ); - bwb_debug( bwb_ebuf ); +static void +ImportClassicIfThenElse(char *InBuffer) +{ +/* +** +** Determine the type of IF command: +** +** a) STANDARD: +** IF x THEN line ELSE line +** +** b) CLASSIC: +** IF x THEN stmt(s) ELSE stmt(s) +** +** c) STRUCTURED: +** IF x THEN +** stmts +** ELSE +** stmts +** END IF +** +** The STANDARD and STRUCTURED forms +** are natively supported. +** +** The CLASSIC form is converted to +** the STRUCTURED form. +** +*/ + +#define NULLCHAR '\0' +#define QUOTECHAR '\"' +#define COLONCHAR OptionStatementChar +#define SPACECHAR ' ' + int i; + + int nIF = 0; + int nTHEN = 0; + int nELSE = 0; + int nENDIF = 0; + +#define NO_COMMAND 0 +#define IF_COMMAND 1 +#define THEN_COMMAND 2 +#define ELSE_COMMAND 3 +#define ENDIF_COMMAND 4 + int LastCommand = NO_COMMAND; + + char REM[] = "REM "; + char IF[] = "IF "; + char THEN[] = "THEN "; + char THEN2[] = "THEN"; + char ELSE[] = "ELSE "; + char ENDIF[] = "END IF"; + char GOTO[] = "GOTO "; + char DATA[] = "DATA "; + char CASE[] = "CASE "; + char OutBuffer[BasicStringLengthMax + 1]; + char *Input = InBuffer; + char *Output = OutBuffer; + char LastChar = COLONCHAR; + + int REM_len = strlen(REM); + int IF_len = strlen(IF); + int THEN_len = strlen(THEN); + int THEN2_len = strlen(THEN2); + int ELSE_len = strlen(ELSE); + int ENDIF_len = strlen(ENDIF); + int GOTO_len = strlen(GOTO); + int DATA_len = strlen(DATA); + int CASE_len = strlen(CASE); + +#define OUTPUTCHAR( c ) { *Output = c; Output++; } +#define COPYCHAR { LastChar = *Input; *Output = *Input; Output++; Input++; } +#define COPY_LINENUMBER while( isdigit( *Input ) ) COPYCHAR; +#define COPY_SPACES while( *Input == SPACECHAR ) COPYCHAR; +#define COPY_IF for( i = 0; i < IF_len; i++ ) COPYCHAR; +#define COPY_THEN for( i = 0; i < THEN_len; i++ ) COPYCHAR; +#define COPY_THEN2 for( i = 0; i < THEN2_len; i++ ) COPYCHAR; +#define COPY_ELSE for( i = 0; i < ELSE_len; i++ ) COPYCHAR; +#define COPY_ENDIF for( i = 0; i < ENDIF_len; i++ ) COPYCHAR; +#define FORCE_ENDIF for( i = 0; i < ENDIF_len; i++ ) OUTPUTCHAR( ENDIF[ i ] ); +#define FORCE_GOTO for( i = 0; i < GOTO_len; i++ ) OUTPUTCHAR( GOTO[ i ] ); +#define FORCE_COLON if( LastChar != COLONCHAR ) OUTPUTCHAR( COLONCHAR ); + + bwx_DEBUG(__FUNCTION__); + +#if 0 + if (OptionFlags & OPTION_LABELS_ON) + { + /* DO NOTHING: All IFs must be STANDARD or STRUCTURED */ + return; + } #endif + if( OptionStatementChar == '\0' ) + { + /* DO NOTHING: All IFs must be STANDARD or STRUCTURED */ + return; + } - prev_num = l->number; - l->xnum = TRUE; - ++( l->position ); - newbuffer = &( buffer[ l->position ] ); - /* allocate memory and assign buffer to line buffer */ + COPY_LINENUMBER; + COPY_SPACES; + LastChar = COLONCHAR; - ln_asbuf( l, newbuffer ); + while (*Input != NULLCHAR) + { + if (*Input == OptionCommentChar) + { + /* comment */ + break; } - - /* There is not a line number */ - - else + else + if (*Input == QUOTECHAR) + { + /* string constant */ + COPYCHAR; + while (*Input != QUOTECHAR && *Input != NULLCHAR) + { + COPYCHAR; + } + if (*Input == QUOTECHAR) + { + COPYCHAR; + } + COPY_SPACES; + } + else + if (isalnum(LastChar)) + { + /* can NOT be the start of a command */ + COPYCHAR; + } + else + if (!isalpha(*Input)) + { + /* can NOT be the start of a command */ + COPYCHAR; + } + else + if (strncasecmp(Input, REM, REM_len) == 0) + { + break; + } + else + if (strncasecmp(Input, DATA, DATA_len) == 0) + { + /* DATA ... */ + break; + } + else + if (strncasecmp(Input, CASE, CASE_len) == 0) + { + /* CASE ... */ + break; + } + else + if (strncasecmp(Input, IF, IF_len) == 0) + { + /* IF */ + LastCommand = IF_COMMAND; + nIF++; + COPY_IF; + COPY_SPACES; + } + else + if (strncasecmp(Input, GOTO, GOTO_len) == 0 && nIF > nTHEN) + { + /* I F + * + * x GO T O + * + * li n e + * + * EL S E + * + * li n e */ + LastCommand = THEN_COMMAND; + nTHEN++; + COPY_THEN; + COPY_SPACES; + COPY_LINENUMBER; + COPY_SPACES; + if (strncasecmp(Input, ELSE, ELSE_len) == 0) + { + /* E L S E + * + * Li n e N u m b e r */ + COPY_ELSE; + COPY_SPACES; + COPY_LINENUMBER; + COPY_SPACES; + } + /* I S + * + * ST A N D A R D , + * + * NO T + * + * CL A S S I C */ + nENDIF++; + LastCommand = ENDIF_COMMAND; + } + else + if (strncasecmp(Input, THEN, THEN_len) == 0) + { + /* T H E N */ + LastCommand = THEN_COMMAND; + nTHEN++; + COPY_THEN; + COPY_SPACES; + if (isdigit(*Input)) + { + /* * + * + * a * ) + * + * ST A N D A R D : * + * + * IF + * x TH E N + * + * li n e + * + * EL S E + * + * li n e * + * + * + */ + char *SavedInput; + char *SavedOutput; + SavedInput = Input; + SavedOutput = Output; + + COPY_LINENUMBER; + COPY_SPACES; + if (strncasecmp(Input, ELSE, ELSE_len) == 0) + { + /* E L S E + * + * Li n e N u m b e r */ + COPY_ELSE; + COPY_SPACES; + if (isdigit(*Input)) + { + COPY_LINENUMBER; + COPY_SPACES; + /* I S + * + * ST A N D A R D , + * + * NO T + * + * CL A S S I C */ + nENDIF++; + LastCommand = ENDIF_COMMAND; + } + else + { + /* I F + * + * x TH E N + * + * li n e + * + * EL S E + * + * st m t s */ + Input = SavedInput; + Output = SavedOutput; + FORCE_COLON; + FORCE_GOTO; + COPY_LINENUMBER; + COPY_SPACES; + } + } + else + { + /* I S + * + * ST A N D A R D , + * + * NO T + * + * CL A S S I C */ + nENDIF++; + LastCommand = ENDIF_COMMAND; + } + } + else + if (*Input == OptionCommentChar || *Input == NULLCHAR) + { + /* I S + * + * ST R U C T U R E D , + * + * NO T + * + * CL A S S I C */ + nENDIF++; + LastCommand = ENDIF_COMMAND; + } + else + { + /* * + * + * b * ) + * + * CL A S S I C : * + * + * IF + * x TH E N + * + * st m t ( s ) + * + * EL S E + * + * st m t ( s ) * + * + * + */ + } + FORCE_COLON; + } + else + if (strncasecmp(Input, THEN2, THEN2_len) == 0) + { + /* t r a i l i n g + * + * TH E N ? */ + char *PeekInput; + + PeekInput = Input; + PeekInput += THEN2_len; + while( *PeekInput == ' ' ) + { + PeekInput++; + } + if (*PeekInput == OptionCommentChar || *PeekInput == NULLCHAR) + { + /* I S + * + * ST R U C T U R E D , + * + * NO T + * + * CL A S S I C */ + nTHEN++; + COPY_THEN2; + nENDIF++; + LastCommand = ENDIF_COMMAND; + FORCE_COLON; + } + else + { + /* T H E N x y z , + * + * TH E N 1 2 3 */ + } + } + else + if (strncasecmp(Input, ELSE, ELSE_len) == 0) + { + /* E L S E */ + if (LastCommand == ELSE_COMMAND) + { + /* w e + * + * ne e d + * + * an + * EN D I F + * + * he r e */ + FORCE_COLON; + FORCE_ENDIF; + FORCE_COLON; + nENDIF++; + } + LastCommand = ELSE_COMMAND; + nELSE++; + FORCE_COLON; + COPY_ELSE; + FORCE_COLON; + COPY_SPACES; + if (isdigit(*Input)) + { + /* I F + * + * x TH E N + * + * st m t ( s ) + * + * EL S E + * + * Li n e N u m b e r */ + FORCE_GOTO; + COPY_LINENUMBER; + COPY_SPACES; + } + FORCE_COLON; + } + else + if (strncasecmp(Input, ENDIF, ENDIF_len) == 0) + { + /* E N D + * + * IF */ + LastCommand = ENDIF_COMMAND; + nENDIF++; + COPY_ENDIF; + FORCE_COLON; + } + else { + /* w a s + * + * NO T + * + * th e + * + * st a r t + * + * of + * a co m m a n d */ + COPYCHAR; + } + } + /* end of input */ + if (nENDIF < nIF) + { + while (nENDIF < nIF) + { + /* we need trailing ENDIF's */ + nENDIF++; + FORCE_COLON; + FORCE_ENDIF; + } + } + /* fixup trailing REMark command */ + if (strncasecmp(Input, REM, REM_len) == 0) + { + /* REMark */ + /* 100 A=1 REMark */ + /* 100 A=1:REMark */ + /* 100 A=1'REMark */ + FORCE_COLON; + } + /* copy the comments */ + while (*Input != NULLCHAR) + { + COPYCHAR; + /* cppcheck: (style) Variable 'LastChar' is assigned a value that is never used. */ + } + OUTPUTCHAR(NULLCHAR); + strcpy(InBuffer, OutBuffer); +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): line is not numbered, using prev <%d>", - prev_num ); - bwb_debug( bwb_ebuf ); -#endif - newbuffer = buffer; +/*************************************************************** + + FUNCTION: bwb_ladd() + + DESCRIPTION: This function adds a new line (in the + buffer) to the program in memory. + +***************************************************************/ - /* allocate memory and assign buffer to line buffer */ +int +bwb_ladd(char *buffer, struct bwb_line * p) +{ + struct bwb_line *l; + struct bwb_line *previous; + char s_buffer[BasicStringLengthMax + 1]; + char *newbuffer; - ln_asbuf( l, newbuffer ); + char *NextStatement; + char *ThisStatement; + int Replace = TRUE; - l->xnum = FALSE; - l->number = prev_num; - } - /* find the place of the current line */ + bwx_DEBUG(__FUNCTION__); + - for ( previous = &CURTASK bwb_start; previous != &CURTASK bwb_end; previous = previous->next ) - { + CleanLine(buffer); - /* replace a previously existing line */ + if (strlen(buffer) == 0) + { + return FALSE; + } + /* * from here, the line WILL be added so the user can EDIT it, * we + * just complain and refuse to run */ - if ( ( l->xnum == (char) TRUE ) /* Better recast this one (JBV) */ - && ( previous->number == l->number ) - && ( replace == TRUE ) - ) - { + CURTASK rescan = TRUE; /* program needs to be scanned again */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): writing to previous number <%d>", - l->number ); - bwb_debug( bwb_ebuf ); +#if 0 + if (OptionFlags & OPTION_BUGS_ON) #endif + { + ImportClassicIfThenElse(buffer); + } + ThisStatement = buffer; + NextStatement = NULL; - /* allocate memory and assign buffer to line buffer */ - - ln_asbuf( previous, newbuffer ); - /* free the current line */ + do + { +#if 0 + if (OptionFlags & OPTION_BUGS_ON) +#endif + { + NextStatement = FindClassicStatementEnd(ThisStatement); + if (NextStatement == NULL) + { + /* we are the last part */ + } + else + { + /* another statement follows */ + *NextStatement = '\0'; + NextStatement++; + } + } + CleanLine(ThisStatement); + if (strlen(ThisStatement) > 0) + { - /* Revised to FREE pass-thru calls by JBV */ - /* if (l->buffer != NULL) FREE( l->buffer, "bwb_ladd" ); */ - /* FREE( l, "bwb_ladd" ); */ - bwb_freeline( l ); /* JBV */ + /* get memory for this line */ - /* and return */ + /* Revised to CALLOC pass-thru call by JBV */ + if ((l = (struct bwb_line *) CALLOC((size_t) 1, sizeof(struct bwb_line), "bwb_ladd")) == NULL) + { + bwb_error("in bwb_ladd(): failed to find memory for new line"); + return FALSE; + } + /* this line has not been executed or numbered */ +#if 0 + l->Coverage = ' '; +#endif + l->LineFlags = 0; - return TRUE; + /* get the first element and test for a line number */ - } + adv_element(ThisStatement, &(l->position), s_buffer); - /* add after previously existing line: this is to allow unnumbered - lines that follow in sequence after a previously numbered line */ + /* set line number in line structure */ - else if (( previous->number == l->number ) - && ( replace == FALSE ) - ) +#if 0 + CleanLine(ThisStatement); +#endif + /* ALL lines will have a line number. If a line + * number is not provided, then the next available + * line number is assigned. */ + newbuffer = ThisStatement; + l->number = NextValidLineNumber; + if (is_numconst(s_buffer) == TRUE) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): adding doubled number <%d>", - l->number ); - bwb_debug( bwb_ebuf); + l->number = atoi(s_buffer); + if (l->number < NextValidLineNumber) + { + /* ERROR */ + sprintf(bwb_ebuf, "%d < %d - LINE OUT OF ORDER: %s", l->number, NextValidLineNumber, buffer); + puts(bwb_ebuf); + err_number = -1; /* in bwb_ladd(), LINE + * OUT OF ORDER */ + l->number = NextValidLineNumber; /* sane default */ + } + else + if (l->number < BasicLineNumberMin || l->number > BasicLineNumberMax) + { + /* ERROR */ + sprintf(bwb_ebuf, "INVALID LINE NUMBER: %s", buffer); + puts(bwb_ebuf); + err_number = -1; /* in bwb_ladd(), + * INVALID LINE NUMBER */ + l->number = NextValidLineNumber; /* sane default */ + } + else + { + /* OK */ + NextValidLineNumber = l->number; + l->LineFlags |= LINE_NUMBERED; /* line was manually numbered */ + } + /* A SPACE IS REQUIRED AFTER THE LINE NUMBER + * -- NO EXCEPTIONS */ + if (buffer[l->position] != ' ') + { + /* ERROR */ + sprintf(bwb_ebuf, "MISSING SPACE AFTER LINE NUMBER: %s", buffer); + puts(bwb_ebuf); + err_number = -1; /* in bwb_ladd(), + * MISSING SPACE AFTER + * LINE NUMBER */ + } + /* the buffer does NOT contain the line + * number */ + newbuffer += l->position; + } + /* the next valid line number is this line number + * plus one */ +#if 0 + NextValidLineNumber++; #endif - /* if there are multiple instances of this particular line number, - then it is incumbent upon us to find the very last one */ - - for ( p = previous; p->number == l->number; p = p->next ) + CleanLine(newbuffer); + if (*newbuffer != 0) + { + /* not an empty line, so it must start with a + * BASIC COMMAND or VARIABLE */ + if (isalpha(*newbuffer) || *newbuffer == OptionCommentChar || *newbuffer == '?') { -#if INTENSIVE_DEBUG - bwb_debug( "in bwb_ladd(): advancing..." ); -#endif - previous = p; + /* OK */ + } + else + { + /* ERROR */ + sprintf(bwb_ebuf, "ILLEGAL CHARACTER AFTER LINE NUMBER: %s", newbuffer); + puts(bwb_ebuf); + err_number = -1; /* in bwb_ladd(), + * ILLEGAL CHARACTER + * AFTER LINE NUMBER */ } - - l->next = previous->next; - previous->next = l; - return TRUE; } - - /* add a new line */ - - else if ( ( previous->number < l->number ) - && ( previous->next->number > l->number )) + if (ln_asbuf(l, newbuffer) == FALSE) { - l->next = previous->next; - previous->next = l; - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): added new line <%d> buffer <%s>", - l->number, l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - return TRUE; + /* ERROR */ + sprintf(bwb_ebuf, "in bwb_ladd(): INTERNAL ERROR, ln_asbuf() == FALSE"); + puts(bwb_ebuf); + err_number = -1; /* in bwb_ladd(), + * INTERNAL ERROR, + * ln_asbuf() == FALSE */ + } + if (l->cmdnum <= 0) + { + /* ERROR */ + sprintf(bwb_ebuf, "ILLEGAL COMMAND AFTER LINE NUMBER: %d %s", l->number, l->buffer); + puts(bwb_ebuf); + err_number = -1; /* in bwb_ladd(), + * ILLEGAL COMMAND AFTER + * LINE NUMBER */ + } + for (previous = p; previous != &CURTASK bwb_end; previous = previous->next) + { + if (previous->number == l->number) + { + if (Replace == TRUE) + { + /* REPLACE 'previous' */ + l->next = previous->next; + p->next = l; + bwb_freeline(previous); + } + else + { + /* APPEND after 'previous' */ + while (previous->next->number == l->number) + { + previous = previous->next; + } + l->next = previous->next; + previous->next = l; + } + break; + } + else + if (previous->number < l->number && l->number < previous->next->number) + { + /* INSERT BETWEEN 'previous' AND + * 'previous->next' */ + l->next = previous->next; + previous->next = l; + break; + } + p = previous; } } + if (NextStatement == NULL) + { + /* we are the last part */ + } + else + { + /* another statement follows */ + ThisStatement = NextStatement; + Replace = FALSE; + } - /* attempt to link line number has failed; free memory */ - - /* Revised to FREE pass-thru calls by JBV */ - /* if (l->buffer != NULL) FREE( l->buffer, "bwb_ladd" ); */ - /* FREE( l, "bwb_ladd" ); */ - bwb_freeline( l ); /* JBV */ - - sprintf( bwb_ebuf, ERR_LINENO ); - bwb_error( bwb_ebuf ); + } + while (NextStatement != NULL); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_ladd(): attempt to add line has failed" ); - bwb_debug( bwb_ebuf ); -#endif + NextValidLineNumber++; - return FALSE; + return TRUE; - } +} /*************************************************************** - + FUNCTION: bwb_xtxtline() - + DESCRIPTION: This function executes a text line, i.e., places it in memory and then relinquishes control. - + ***************************************************************/ struct bwb_line * -#if ANSI_C -bwb_xtxtline( char *buffer ) -#else -bwb_xtxtline( buffer ) - char *buffer; -#endif - { - struct bwb_line *c; - char *p; - int loop; +bwb_xtxtline(char *buffer) +{ + bwx_DEBUG(__FUNCTION__); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xtxtline(): received <%s>", buffer ); - bwb_debug( bwb_ebuf ); -#endif - /* increment xtxt stack counter */ + /* remove old program from memory */ + bwb_xnew(&user_line); - if ( CURTASK xtxtsc >= XTXTSTACKSIZE ) - { - sprintf( bwb_ebuf, "Exceeded maximum xtxt stack <%d>", - CURTASK xtxtsc ); + /* advance past whitespace */ + while (*buffer == ' ') + { + buffer++; + } + if (*buffer == '\0') + { return &CURTASK bwb_end; - } + } + bwb_ladd(buffer, &user_line); - ++CURTASK xtxtsc; - /* advance past whitespace */ + /* execute the line as BASIC command line */ + bwb_incexec(); /* increment EXEC stack */ + bwb_setexec(user_line.next, 0, EXEC_NORM); /* and set current line + * in it */ - p = buffer; - loop = TRUE; - while( loop == TRUE ) - { + return user_line.next; - switch( *p ) - { - case '\0': /* end of string */ +} -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Null command line received." ); - bwb_debug( bwb_ebuf ); -#endif - --CURTASK xtxtsc; - return &CURTASK bwb_end; - case ' ': /* whitespace */ - case '\t': - ++p; - break; - default: - loop = FALSE; - break; - } +/*************************************************************** + + FUNCTION: bwb_incexec() + + DESCRIPTION: This function increments the EXEC + stack counter. + +***************************************************************/ - } +void +bwb_incexec(void) +{ + bwx_DEBUG(__FUNCTION__); + ++CURTASK exsc; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xtxtline(): ready to get memory" ); - bwb_debug( bwb_ebuf ); -#endif + if (CURTASK exsc >= EXECLEVELS) + { + --CURTASK exsc; + sprintf(bwb_ebuf, "in bwb_incexec(): incremented EXEC stack past max <%d>", + EXECLEVELS); + bwb_error(bwb_ebuf); + return; + } + CURTASK excs[CURTASK exsc].LoopTopLine = NULL; + CURTASK excs[CURTASK exsc].LoopBottomLine = NULL; + CURTASK excs[CURTASK exsc].local_variable = NULL; + CURTASK excs[CURTASK exsc].OnErrorGoto = 0; -/* Removed by JBV (no longer needed, done by ln_asbuf) */ -/* if ( CURTASK xtxts[ CURTASK xtxtsc ].l.buffer != NULL ) - { */ -/* #if INTENSIVE_DEBUG */ -/* sprintf( bwb_ebuf, "in bwb_xtxtline(): freeing buffer memory" ); - bwb_debug( bwb_ebuf ); */ -/* #endif */ - /* Revised to FREE pass-thru call by JBV */ -/* FREE( CURTASK xtxts[ CURTASK xtxtsc ].l.buffer, "bwb_xtxtline" ); - } */ - /* copy the whole line to the line structure buffer */ +} - ln_asbuf( &( CURTASK xtxts[ CURTASK xtxtsc ].l ), buffer ); +/*************************************************************** + + FUNCTION: bwb_decexec() + + DESCRIPTION: This function decrements the EXEC + stack counter. + +***************************************************************/ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_xtxtline(): copied to line buffer <%s>.", - CURTASK xtxts[ CURTASK xtxtsc ].l.buffer ); - bwb_debug( bwb_ebuf ); -#endif +void +bwb_decexec(void) +{ - /* set line number in line structure */ + /* decrement the exec stack counter */ + bwx_DEBUG(__FUNCTION__); - CURTASK xtxts[ CURTASK xtxtsc ].l.number = 0; - CURTASK xtxts[ CURTASK xtxtsc ].l.marked = FALSE; + --CURTASK exsc; /* NBS_P164_0840 fixed */ - /* execute the line as BASIC command line */ + if (CURTASK exsc < -1) + { + CURTASK exsc = -1; + sprintf(bwb_ebuf, "in bwb_decexec(): decremented EXEC stack past min <-1>"); + bwb_error(bwb_ebuf); + return; + } +} - CURTASK xtxts[ CURTASK xtxtsc ].l.next = &CURTASK bwb_end; - c = &( CURTASK xtxts[ CURTASK xtxtsc ].l ); - c->position = 0; +/*************************************************************** + + FUNCTION: bwb_setexec() + + DESCRIPTION: This function sets the line and position + for the next call to bwb_execline(); + +***************************************************************/ -#if THEOLDWAY - do - { - c = bwb_xline( c ); - } +int +bwb_setexec(struct bwb_line * l, int position, int code) +{ + bwx_DEBUG(__FUNCTION__); - while( c != &CURTASK bwb_end ); -#endif + CURTASK excs[CURTASK exsc].line = l; + CURTASK excs[CURTASK exsc].code = code; - bwb_incexec(); /* increment EXEC stack */ - bwb_setexec( c, 0, EXEC_NORM ); /* and set current line in it */ + return TRUE; - /* decrement xtxt stack counter ??? */ +} - --CURTASK xtxtsc; +/*************************************************************** + + FUNCTION: bwb_mainloop() + + DESCRIPTION: This C function performs one iteration + of the interpreter. In a non-preemptive + scheduler, this function should be called + by the scheduler, not by bwBASIC code. + +***************************************************************/ - return c; +void +bwb_mainloop(void) +{ + bwx_DEBUG(__FUNCTION__); + if (CURTASK exsc > -1) + { + bwb_execline(); /* execute one line of program */ } + else + if (IsCommandLineFile == TRUE) + { + bwx_terminate(); + } + else + if (IsInteractive) + { + bwb_interact(); /* get user interaction */ + } +} /*************************************************************** - - FUNCTION: bwb_incexec() - - DESCRIPTION: This function increments the EXEC - stack counter. - + + FUNCTION: bwb_execline() + + DESCRIPTION: This function executes a single line of + a program in memory. This function is + called by bwb_mainloop(). + ***************************************************************/ -#if ANSI_C -extern void -bwb_incexec( void ) - { -#else +/* +ON statement (event trapping) +ON { COM(n) | KEY(n) | PEN | PLAY(n) | STRIG(n) | TIMER (x) } GOSUB line_number +ON ERROR GOTO line_number + +*/ +#define EVENT_ERROR 0x01 +#define EVENT_COM 0X02 +#define EVENT_KEY 0X04 +#define EVENT_PEN 0X08 +#define EVENT_PLAY 0X10 +#define EVENT_STRIG 0X20 +#define EVENT_TIMER 0X40 +#define EVENT_USER 0X80 + +static void +SetEvent(char EventType) +{ + bwx_DEBUG(__FUNCTION__); + EventQueue |= EventType; +} +static void +ClrEvent(char EventType) +{ + bwx_DEBUG(__FUNCTION__); + EventQueue &= ~EventType; +} +static int +HasEvent(char EventType) +{ + bwx_DEBUG(__FUNCTION__); + return EventQueue & EventType; +} void -bwb_incexec() - { -#endif - ++CURTASK exsc; +bwb_Timer_On(void) +{ + bwx_DEBUG(__FUNCTION__); + SetEvent(EVENT_TIMER); +} +void +bwb_Timer_Off(void) +{ + bwx_DEBUG(__FUNCTION__); + ClrEvent(EVENT_TIMER); +} - if ( CURTASK exsc >= EXECLEVELS ) +char ErrMsg[256]; /* ERROR$ */ +void +bwb_Warning(int ErrorLevel, char *ErrorMessage) +{ + bwx_DEBUG(__FUNCTION__); + if (ErrorLevel < 0) + { + bwb_error("bwb_warning() called with invalid ErrorLevel"); + return; + } + if (ErrorMessage == NULL) + { + bwb_error("bwb_warning() called with invalid ErrorMessage"); + return; + } + if (strlen(ErrorMessage) > 255) + { + bwb_error("bwb_warning() called with invalid ErrorMessage"); + return; + } + if (ErrorLevel > 0) + { + if (err_number == 0) /* no errors pending */ { - --CURTASK exsc; -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_incexec(): incremented EXEC stack past max <%d>", - EXECLEVELS ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_overflow ); -#endif + /* only keep the first pending error to occur */ + err_number = ErrorLevel; /* ERR */ + err_line = CURTASK excs[CURTASK exsc].line; + strcpy(ErrMsg, ErrorMessage); /* ERROR$ */ + SetEvent(EVENT_ERROR); } - - CURTASK excs[ CURTASK exsc ].while_line = NULL; - CURTASK excs[ CURTASK exsc ].wend_line = NULL; - CURTASK excs[ CURTASK exsc ].n_cvs = 0; - CURTASK excs[ CURTASK exsc ].local_variable = NULL; - } - -/*************************************************************** - - FUNCTION: bwb_decexec() - - DESCRIPTION: This function decrements the EXEC - stack counter. - -***************************************************************/ - -#if ANSI_C -extern void -bwb_decexec( void ) + else + if (ErrorLevel == 0) { -#else + err_number = 0; /* ERR */ + err_line = NULL; /* ERL */ + strcpy(ErrMsg, ""); /* ERROR$ */ + ClrEvent(EVENT_ERROR); + } +} +int +bwb_Warning_Pending(void) +{ + bwx_DEBUG(__FUNCTION__); + return HasEvent(EVENT_ERROR); +} +void +bwb_Warning_Clear(void) +{ + bwx_DEBUG(__FUNCTION__); + bwb_Warning(0, ""); /* clear */ +} void -bwb_decexec() +bwb_Warning_OutOfData(char *Message) +{ + bwx_DEBUG(__FUNCTION__); + bwb_Warning(4, Message);/* Out of DATA */ +} +void +bwb_Warning_InvalidParameter(char *Message) +{ + bwx_DEBUG(__FUNCTION__); + bwb_Warning(5, Message);/* Illegal function call */ +} +void +bwb_Warning_Overflow(char *Message) +{ + /* Numeric overflow, String overflow, SPC() and TAB() */ + /* OVERFLOW is different. A default value is used. */ + bwx_DEBUG(__FUNCTION__); + if (GetOnError() == 0) { -#endif - - /* decrement the exec stack counter */ - - --CURTASK exsc; - - if ( CURTASK exsc < -1 ) - { - CURTASK exsc = -1; -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_decexec(): decremented EXEC stack past min <-1>" ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_overflow ); -#endif - } - - /* check for EXEC_ON and decrement recursively */ - - if ( CURTASK excs[ CURTASK exsc ].code == EXEC_ON ) - { - - /* Revised to FREE pass-thru calls by JBV */ - /* FREE( CURTASK excs[ CURTASK exsc ].while_line->buffer, "bwb_decexec" ); */ - /* FREE( CURTASK excs[ CURTASK exsc ].while_line, "bwb_decexec" ); */ - bwb_freeline( CURTASK excs[ CURTASK exsc ].while_line ); /* JBV */ - - bwb_decexec(); - } - + /* user error handler NOT active */ + puts(Message); + } + else + { + /* user error handler IS active */ + bwb_Warning(6, Message); /* Overflow */ } +} +void +bwb_Warning_AdvancedFeature(char *Message) +{ + bwx_DEBUG(__FUNCTION__); + bwb_Warning(73, Message); /* Advanced Feature */ +} -/*************************************************************** - - FUNCTION: bwb_setexec() - - DESCRIPTION: This function sets the line and position - for the next call to bwb_execline(); -***************************************************************/ +void +bwb_execline(void) +{ + struct bwb_line *r, *l; -#if ANSI_C -extern int -bwb_setexec( struct bwb_line *l, int position, int code ) - { -#else -int -bwb_setexec( l, position, code ) - struct bwb_line *l; - int position; - int code; - { -#endif + bwx_DEBUG(__FUNCTION__); - CURTASK excs[ CURTASK exsc ].line = l; - CURTASK excs[ CURTASK exsc ].position = position; - CURTASK excs[ CURTASK exsc ].code = code; + l = CURTASK excs[CURTASK exsc].line; - return TRUE; + /* if the line is &CURTASK bwb_end, then break out of EXEC loops */ + if (l == &CURTASK bwb_end || err_number < 0) + { + CURTASK exsc = -1; + return; } + /* Check for wacko line numbers */ -/*************************************************************** - - FUNCTION: bwb_mainloop() - - DESCRIPTION: This C function performs one iteration - of the interpreter. In a non-preemptive - scheduler, this function should be called - by the scheduler, not by bwBASIC code. -***************************************************************/ + /* Print line number if trace is on */ -void -#if ANSI_C -bwb_mainloop( void ) -#else -bwb_mainloop() -#endif + if (bwb_trace == TRUE) { - if ( CURTASK exsc > -1 ) - { - bwb_execline(); /* execute one line of program */ - } -#if INTERACTIVE - else + if (l->number > 0) { - bwb_interact(); /* get user interaction */ + sprintf(bwb_ebuf, "[ %d %s ]", l->number, l->buffer); + prn_xprintf(bwb_ebuf); } -#endif } + /* Set current line for error/break handling */ -/*************************************************************** + CURTASK number = l->number; + CURTASK bwb_l = l; - FUNCTION: bwb_execline() + l->position = l->Startpos; - DESCRIPTION: This function executes a single line of - a program in memory. This function is - called by bwb_mainloop(). + /* if there is a BASIC command in the line, execute it here */ -***************************************************************/ -void -#if ANSI_C -bwb_execline( void ) -#else -bwb_execline() -#endif + if (l->cmdnum <= 0) { - struct bwb_line *r, *l; + bwb_error(err_syntax); + return; + } + /* l->cmdnum > 0 */ - l = CURTASK excs[ CURTASK exsc ].line; - /* if the line is &CURTASK bwb_end, then break out of EXEC loops */ + /* execute the command vector */ + /* advance beyond whitespace */ - if ( l == &CURTASK bwb_end ) - { - CURTASK exsc = -1; - return; - } + adv_ws(l->buffer, &(l->position)); - /* Check for wacko line numbers */ + /* FIXME: use NextLine = l->next, any jumps update NextLine */ -#if INTENSIVE_DEBUG - if ( l->number < -1 ) + if (OptionFlags & OPTION_COVERAGE_ON) + { + /* * We do this here * so "END" and "STOP" * are marked */ + if (l->cmdnum == C_DATA) { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_execline(): received line number <%d> < -1", - l->number ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return; + /* * DATA lines are marked * when they are READ */ } - - if ( l->number > MAXLINENO ) + else { -#if PROG_ERRORS - sprintf( bwb_ebuf, "in bwb_execline(): received line number <%d> > MAX <%d>", - l->number, MAXLINENO ); - bwb_error( bwb_ebuf ); -#else - bwb_error( err_syntax ); -#endif - return; + /* * this line was executed */ +#if 0 + l->Coverage = '*'; +#endif + l->LineFlags |= LINE_EXECUTED; } -#endif - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_execline(): buffer <%s>", - &( l->buffer[ l->position ] ) ); - bwb_debug( bwb_ebuf ); -#endif + } - /* Print line number if trace is on */ + r = bwb_vector(l); - if ( bwb_trace == TRUE ) + if (err_number < 0) /* in bwb_execline, FATAL ERROR PENDING */ + { + /* FATAL */ + CURTASK exsc = -1; + return; + } + if (ERROR_PENDING) + { + /* we are probably not at the end-of-the-line */ + } + else + if (r == l) + { + /* we should be at the end-of-the-line */ + if (l->buffer[l->position] != '\0') { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "[ %d ]", l->number ); - prn_xprintf( errfdevice, bwb_ebuf ); -#else - if ( l->number > 0 ) - { - sprintf( bwb_ebuf, "[ %d ]", l->number ); - prn_xprintf( errfdevice, bwb_ebuf ); - } -#endif + bwb_error(err_syntax); } + } + else + { + /* we are probably not at the end-of-the-line */ + } - /* Set current line for error/break handling */ - - CURTASK number = l->number; - CURTASK bwb_l = l; - - /* advance beyond whitespace */ - - adv_ws( l->buffer, &( l->position ) ); - - /* advance past segment delimiter and warn */ - -#if MULTISEG_LINES - if ( l->buffer[ l->position ] == ':' ) + if (HasEvent(EVENT_ERROR)) + { + /* a NON-FATAL ERROR has occurred. ERR, ERL, and ERROR$ were + * already set using bwb_warning(ERR,ERROR$) */ + int err_gotol; + ClrEvent(EVENT_ERROR); + err_gotol = GetOnError(); + if (l->number == 0) { - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); + /* BASIC PROMPT */ + /* For example: 10 ON ERROR GOTO 20 ERROR 1 */ + /* fall thru to the DEFAULT ERROR HANDLER */ } - l->marked = FALSE; -#else -#if PROG_ERRORS - if ( l->buffer[ l->position ] == ':' ) + else + if (err_line == NULL) { - ++( l->position ); - adv_ws( l->buffer, &( l->position ) ); - sprintf( bwb_ebuf, "Enable MULTISEG_LINES for multi-segmented lines", - VERSION ); - bwb_error( bwb_ebuf ); + /* BASIC PROMPT */ + /* For example: 10 ON ERROR GOTO 20 ERROR 1 */ + /* fall thru to the DEFAULT ERROR HANDLER */ } -#endif -#endif - - /* set positions in buffer */ - -#if MULTISEG_LINES - if ( ( l->marked != TRUE ) || ( l->position > l->startpos )) + else + if (err_line->number == 0) { - line_start( l->buffer, &( l->position ), &( l->lnpos ), &( l->lnum ), - &( l->cmdpos ), &( l->cmdnum ), &( l->startpos ) ); - l->marked = TRUE; + /* BASIC PROMPT */ + /* For example: 10 ON ERROR GOTO 20 ERROR 1 */ + /* fall thru to the DEFAULT ERROR HANDLER */ } - else + else + if (err_gotol == -1) { -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_execline(): line <%d> is already marked", - l->number ); - bwb_debug( bwb_ebuf ); -#endif + /* ON ERROR RESUME NEXT */ + r->next->position = 0; + bwb_setexec(r->next, 0, CURTASK excs[CURTASK exsc].code); + return; } - l->position = l->startpos; -#else /* not MULTISEG_LINES */ - line_start( l->buffer, &( l->position ), &( l->lnpos ), &( l->lnum ), - &( l->cmdpos ), &( l->cmdnum ), &( l->startpos ) ); - if ( l->position < l->startpos ) + else + if (err_gotol == 0) { - l->position = l->startpos; + /* ON ERROR GOTO 0 */ + /* fall thru to the DEFAULT ERROR HANDLER */ } -#endif - - /* if there is a BASIC command in the line, execute it here */ - - if ( l->cmdnum > -1 ) + else + if (err_gotol == err_line->number) { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_execline(): executing <%s>", l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - /* execute the command vector */ - - r = bwb_cmdtable[ l->cmdnum ].vector ( l ); - + /* RECURSION */ + /* For example: 10 ON ERROR GOTO 20 20 ERROR 1 */ + /* fall thru to the DEFAULT ERROR HANDLER */ } - - /* No BASIC command; try to execute it as a shell command */ - -#if COMMAND_SHELL - else + else { + /* USER ERROR HANDLER SPECIFIED */ + /* find the user-specified error handler and jump + * there */ + struct bwb_line *x; -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Breaking out to shell, line num <%d> buf <%s> cmd <%d> pos <%d>", - l->number, &( l->buffer[ l->position ] ), l->cmdnum, l->position ); - bwb_debug( bwb_ebuf ); - getchar(); -#endif - - bwx_shell( l ); - bwb_setexec( l->next, 0, CURTASK excs[ CURTASK exsc ].code ); - return; + for (x = &CURTASK bwb_start; x != &CURTASK bwb_end; x = x->next) + { + if (x->number == err_gotol) + { + /* FOUND */ + if( OptionFlags & OPTION_ERROR_GOSUB ) + { + /* OPTION ERROR GOSUB */ + bwb_incexec(); + x->position = 0; + bwb_setexec(x, 0, EXEC_GOSUB); + } + else + { + /* OPTION ERROR GOTO */ + x->position = 0; /* start of line */ + bwb_setexec(x, 0, CURTASK excs[CURTASK exsc].code); + } + return; + } + } + /* NOT FOUND */ + /* fall thru to the DEFAULT ERROR HANDLER */ } + /* DEFAULT ERROR HANDLER */ + /* FATAL */ + bwb_error(ErrMsg); + return; + } + if (l->number > 0) + { + /* These events only occur in running programs */ -#else /* COMMAND_SHELL == FALSE */ - - else - { - bwb_error( err_uc ); - } - -#endif - - /* check for end of line: if so, advance to next line and return */ - - adv_ws( r->buffer, &( r->position ) ); - switch( r->buffer[ r->position ] ) + if (HasEvent(EVENT_TIMER)) { - case '\n': - case '\r': - case '\0': - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_execline(): detected end of line" ); - bwb_debug( bwb_ebuf ); -#endif + /* TIMER ON */ + if (tmr_count > 0) + { - r->next->position = 0; - bwb_setexec( r->next, 0, CURTASK excs[ CURTASK exsc ].code ); - return; /* and return */ + if (bwx_TIMER(0) > tmr_expires) + { + ClrEvent(EVENT_TIMER); + if (tmr_gotol > 0) + { + /* ON TIMER(...) GOSUB ... + * ... */ + struct bwb_line *x; + + for (x = &CURTASK bwb_start; x != &CURTASK bwb_end; x = x->next) + { + if (x->number == tmr_gotol) + { + /* FOUND */ + bwb_incexec(); + x->position = 0; + bwb_setexec(x, 0, EXEC_GOSUB); + return; + } + } + /* NOT FOUND */ + } + } + } } - + } + /* check for end of line: if so, advance to next line and return */ + if (r == l) + { + /* advance to the next line */ + l->next->position = 0; + r = l->next; + } + else + if (r->buffer[r->position] == '\0') + { + /* we could be at the end-of-the-line, added for RETURN */ + /* advance to the next line */ + r->next->position = 0; + r = r->next; + } /* else reset with the value in r */ - bwb_setexec( r, r->position, CURTASK excs[ CURTASK exsc ].code ); + bwb_setexec(r, r->position, CURTASK excs[CURTASK exsc].code); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_execline(): exit setting line number <%d>", - r->number ); - bwb_debug( bwb_ebuf ); -#endif - } +} /*************************************************************** - + FUNCTION: ln_asbuf() - + DESCRIPTION: This function allocates memory and copies - a null-terminated string to a line buffer. - + a null-terminated string to a line buffer. + ***************************************************************/ int -#if ANSI_C -ln_asbuf( struct bwb_line *l, char *s ) -#else -ln_asbuf( l, s ) - struct bwb_line *l; - char *s; -#endif - { +ln_asbuf(struct bwb_line * l, char *s) +{ + bwx_DEBUG(__FUNCTION__); -/* Reinstated by JBV */ -/* #if DONTDOTHIS */ /* but why not? */ - if ( l->buffer != NULL ) - { + if (l->buffer != NULL) + { /* Revised to FREE pass-thru call by JBV */ - FREE( l->buffer, "ln_asbuf" ); + FREE(l->buffer, "ln_asbuf"); l->buffer = NULL; /* JBV */ - } -/* #endif */ - + } /* Revised to CALLOC pass-thru call by JBV */ - if ( ( l->buffer = CALLOC( strlen( s ) + 2, sizeof( char ), "ln_asbuf") ) - == NULL ) - { -#if PROG_ERRORS - bwb_error( "in ln_asbuf(): failed to find memory for new line" ); -#else - bwb_error( err_getmem ); -#endif + if ((l->buffer = CALLOC(strlen(s) + 2, sizeof(char), "ln_asbuf")) + == NULL) + { + bwb_error("in ln_asbuf(): failed to find memory for new line"); return FALSE; - } - + } /* copy the whole line to the line structure buffer */ - strcpy( l->buffer, s ); + strcpy(l->buffer, s); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in ln_asbuf(): allocated buffer <%s>", l->buffer ); - bwb_debug( bwb_ebuf ); -#endif /* strip CR from the buffer */ - bwb_stripcr( l->buffer ); + CleanLine(l->buffer); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in ln_asbuf(): stripped CRs" ); - bwb_debug( bwb_ebuf ); -#endif + + /* determine command */ + line_start(l); return TRUE; - } +} /*************************************************************** - + FUNCTION: bwb_gets() - + DESCRIPTION: This function reads a single line from the specified buffer. - + ***************************************************************/ int -#if ANSI_C -bwb_gets( char *buffer ) -#else -bwb_gets( buffer ) - char *buffer; -#endif - { - struct bwb_variable *v; - char tbuf[ MAXSTRINGSIZE + 1 ]; -#if PARACT - char ubuf[ MAXSTRINGSIZE + 1 ]; -#endif - - CURTASK number = 0; +bwb_gets(char *buffer) +{ + struct bwb_variable *v; + char Buffer[BasicStringLengthMax + 1]; - v = var_find( DEFVNAME_PROMPT ); - str_btoc( tbuf, var_getsval( v ) ); -#if PARACT - sprintf( ubuf, "TASK %d %s", bwb_curtask, tbuf ); - strcpy( tbuf, ubuf ); -#endif + v = var_find(DEFVNAME_PROMPT); + str_btoc(Buffer, var_getsval(v)); + bwx_input(Buffer, buffer); + return TRUE; +} - bwx_input( tbuf, buffer ); - return TRUE; - } /*************************************************************** - - FUNCTION: break_mes() - - DESCRIPTION: This function is called (a) by a SIGINT - signal or (b) by error-handling routines. - It prints an error message then calls - break_handler() to handle the program - interruption. - + + FUNCTION: is_ln() + + DESCRIPTION: This function determines whether a program + line (in buffer) begins with a line number. + ***************************************************************/ -void -#if ANSI_C -break_mes( int x ) -#else -break_mes( x ) - int x; -#endif - { - static char *tmp_buffer; - static int init = FALSE; - - /* get memory for temporary buffer if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( tmp_buffer = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "break_mes")) == NULL ) - { -#if PROG_ERRORS - bwb_error( "in break_mes(): failed to find memory for tmp_buffer" ); -#else - bwb_error( err_getmem ); -#endif - } - } - - CURTASK expsc = 0; - - sprintf( tmp_buffer, "\r%s %d\n", MES_BREAK, CURTASK number ); - prn_xprintf( errfdevice, tmp_buffer ); - - break_handler(); - - } - -/*************************************************************** - - FUNCTION: break_handler() - - DESCRIPTION: This function is called by break_mes() - and handles program interruption by break - (or by the STOP command). - -***************************************************************/ +int +is_ln(char *buffer) +{ + int position; + bwx_DEBUG(__FUNCTION__); -void -#if ANSI_C -break_handler( void ) -#else -break_handler() -#endif + position = 0; + adv_ws(buffer, &position); + switch (buffer[position]) { - -#if INTERACTIVE /* INTERACTIVE: reset counters and jump back to mark */ - - /* reset all stack counters */ - - CURTASK exsc = -1; - CURTASK expsc = 0; - CURTASK xtxtsc = 0; - err_gosubl[ 0 ] = '\0'; - - /* reset the break handler */ - -#if HAVE_SIGNAL - signal( SIGINT, break_mes ); -#endif - -#if HAVE_LONGJUMP - longjmp( mark, -1 ); -#else /* HAVE_LONGJUMP = FALSE; no jump available; terminate */ - bwx_terminate(); -#endif - -#else /* nonINTERACTIVE: terminate immediately */ - - bwx_terminate(); - -#endif - + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return TRUE; + default: + return FALSE; } +} /*************************************************************** - - FUNCTION: is_ln() - - DESCRIPTION: This function determines whether a program - line (in buffer) begins with a line number. - + + FUNCTION: CALLOC() + + DESCRIPTION: Pass-thru function to calloc() for debugging + purposes. Added by JBV 10/95 + ***************************************************************/ -int -#if ANSI_C -is_ln( char *buffer ) -#else -is_ln( buffer ) - char *buffer; -#endif - { - static int position; - - position = 0; - adv_ws( buffer, &position ); - switch( buffer[ position ] ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return TRUE; - default: - return FALSE; - } - } - +void * +CALLOC(size_t nelem, size_t elsize, char *str) +{ + void *ptr; -/*************************************************************** + bwx_DEBUG(__FUNCTION__); - FUNCTION: CALLOC() + ptr = calloc(nelem, elsize); - DESCRIPTION: Pass-thru function to calloc() for debugging - purposes. Added by JBV 10/95 + return ptr; +} +/*************************************************************** + + FUNCTION: FREE() + + DESCRIPTION: Pass-thru function to free() for debugging + purposes. Added by JBV 10/95 + ***************************************************************/ -void * -#if ANSI_C -CALLOC( size_t nelem, size_t elsize, char *str ) -#else -CALLOC( nelem, elsize, str ) - size_t nelem; - size_t elsize; - char *str; -#endif +void +FREE(void *ptr, char *str) { - void *ptr; - - ptr = calloc(nelem, elsize); - /* printf("%x %x\n", ptr, mallocblksize(ptr)); */ - return ptr; -} + bwx_DEBUG(__FUNCTION__); -/*************************************************************** + free(ptr); - FUNCTION: FREE() +} - DESCRIPTION: Pass-thru function to free() for debugging - purposes. Added by JBV 10/95 +/* SWITCH */ +struct bwb_line * +bwb_vector(struct bwb_line * l) +{ + struct bwb_line *r; -***************************************************************/ + bwx_DEBUG(__FUNCTION__); -void -#if ANSI_C -FREE( void *ptr, char *str ) -#else -FREE( ptr, str ) - void *ptr; - char *str; -#endif -{ - /* printf("%x\n", ptr); */ - free(ptr); + switch (l->cmdnum) + { + case C_QUEST: + r = bwb_QUEST(l); + break; + case C_CALL: + r = bwb_CALL(l); + break; + case C_CASE: + r = bwb_CASE(l); + break; + case C_CASE_ELSE: + r = bwb_CASE_ELSE(l); + break; + case C_CASE_IF: + r = bwb_CASE_IF(l); + break; + case C_CASE_IS: + r = bwb_CASE_IS(l); + break; + case C_CHAIN: + r = bwb_CHAIN(l); + break; + case C_CHANGE: + r = bwb_CHANGE(l); + break; + case C_CLEAR: + r = bwb_CLEAR(l); + break; + case C_CLOAD: + r = bwb_CLOAD(l); + break; + case C_CLOAD_: + r = bwb_CLOAD_(l); + break; + case C_CMDS: + r = bwb_CMDS(l); + break; + case C_COMMON: + r = bwb_COMMON(l); + break; + case C_CONT: + r = bwb_CONT(l); + break; + case C_CSAVE: + r = bwb_CSAVE(l); + break; + case C_CSAVE_: + r = bwb_CSAVE_(l); + break; + case C_DATA: + r = bwb_DATA(l); + break; + case C_DEF: + r = bwb_DEF(l); + break; + case C_DEF_SUB: + r = bwb_DEF_SUB(l); + break; + case C_DEFDBL: + r = bwb_DEFDBL(l); + break; + case C_DEFINT: + r = bwb_DEFINT(l); + break; + case C_DEFSNG: + r = bwb_DEFSNG(l); + break; + case C_DEFSTR: + r = bwb_DEFSTR(l); + break; + case C_DELETE: + r = bwb_DELETE(l); + break; + case C_DIM: + r = bwb_DIM(l); + break; + case C_DO: + r = bwb_DO(l); + break; + case C_DO_UNTIL: + r = bwb_DO_UNTIL(l); + break; + case C_DO_WHILE: + r = bwb_DO_WHILE(l); + break; + case C_EDIT: + r = bwb_EDIT(l); + break; + case C_ELSE: + r = bwb_ELSE(l); + break; + case C_ELSEIF: + r = bwb_ELSEIF(l); + break; + case C_END: + r = bwb_END(l); + break; + case C_END_FUNCTION: + r = bwb_END_FUNCTION(l); + break; + case C_END_IF: + r = bwb_END_IF(l); + break; + case C_END_SELECT: + r = bwb_END_SELECT(l); + break; + case C_END_SUB: + r = bwb_END_SUB(l); + break; + case C_ERASE: + r = bwb_ERASE(l); + break; + case C_EXIT: + r = bwb_EXIT(l); + break; + case C_EXIT_DO: + r = bwb_EXIT_DO(l); + break; + case C_EXIT_FOR: + r = bwb_EXIT_FOR(l); + break; + case C_EXIT_FUNCTION: + r = bwb_EXIT_FUNCTION(l); + break; + case C_EXIT_SUB: + r = bwb_EXIT_SUB(l); + break; + case C_EXIT_UNTIL: + r = bwb_EXIT_UNTIL(l); + break; + case C_EXIT_WHILE: + r = bwb_EXIT_WHILE(l); + break; + case C_FIELD: + r = bwb_FIELD(l); + break; + case C_FNCS: + r = bwb_FNCS(l); + break; + case C_FOR: + r = bwb_FOR(l); + break; + case C_FUNCTION: + r = bwb_FUNCTION(l); + break; + case C_GO: + r = bwb_GO(l); + break; + case C_GOSUB: + r = bwb_GOSUB(l); + break; + case C_GOTO: + r = bwb_GOTO(l); + break; + case C_HELP: + r = bwb_HELP(l); + break; + case C_IF: + r = bwb_IF(l); + break; + case C_IF_THEN: + r = bwb_IF_THEN(l); + break; + case C_INPUT: + r = bwb_INPUT(l); + break; + case C_LET: + r = bwb_LET(l); + break; + case C_LINE: + r = bwb_LINE(l); + break; + case C_LIST: + r = bwb_LIST(l); + break; + case C_LOAD: + r = bwb_LOAD(l); + break; + case C_LOOP: + r = bwb_LOOP(l); + break; + case C_LOOP_UNTIL: + r = bwb_LOOP_UNTIL(l); + break; + case C_LOOP_WHILE: + r = bwb_LOOP_WHILE(l); + break; + case C_LPRINT: + r = bwb_LPRINT(l); + break; + case C_LSET: + r = bwb_LSET(l); + break; + case C_MAINTAINER: + r = bwb_MAINTAINER(l); + break; + case C_MERGE: + r = bwb_MERGE(l); + break; + case C_MID_: + r = bwb_MID_(l); + break; + case C_NAME: + r = bwb_NAME(l); + break; + case C_NEW: + r = bwb_NEW(l); + break; + case C_NEXT: + r = bwb_NEXT(l); + break; + case C_ON: + r = bwb_ON(l); + break; + case C_ON_ERROR_GOTO: + r = bwb_ON_ERROR_GOTO(l); + break; + case C_ON_ERROR_GOSUB: + r = bwb_ON_ERROR_GOSUB(l); + break; + case C_ON_ERROR_RESUME_NEXT: + r = bwb_ON_ERROR_RESUME_NEXT(l); + break; + case C_ON_ERROR_RETURN_NEXT: + r = bwb_ON_ERROR_RETURN_NEXT(l); + break; + case C_ON_TIMER: + r = bwb_ON_TIMER(l); + break; + case C_OPEN: + r = bwb_OPEN(l); + break; + case C_OPTION: + r = bwb_OPTION(l); + break; + case C_OPTION_ANGLE_DEGREES: + r = bwb_OPTION_ANGLE_DEGREES(l); + break; + case C_OPTION_ANGLE_RADIANS: + r = bwb_OPTION_ANGLE_RADIANS(l); + break; + case C_OPTION_ARITHMETIC_DECIMAL: + r = bwb_OPTION_ARITHMETIC_DECIMAL(l); + break; + case C_OPTION_ARITHMETIC_FIXED: + r = bwb_OPTION_ARITHMETIC_FIXED(l); + break; + case C_OPTION_ARITHMETIC_NATIVE: + r = bwb_OPTION_ARITHMETIC_NATIVE(l); + break; + case C_OPTION_BASE_0: + r = bwb_OPTION_BASE_0(l); + break; + case C_OPTION_BASE_1: + r = bwb_OPTION_BASE_1(l); + break; + case C_OPTION_BUGS_OFF: + r = bwb_OPTION_BUGS_OFF(l); + break; + case C_OPTION_BUGS_ON: + r = bwb_OPTION_BUGS_ON(l); + break; + case C_OPTION_COMMENT: + r = bwb_OPTION_COMMENT(l); + break; + case C_OPTION_COMPARE_BINARY: + r = bwb_OPTION_COMPARE_BINARY(l); + break; + case C_OPTION_COMPARE_DATABASE: + r = bwb_OPTION_COMPARE_DATABASE(l); + break; + case C_OPTION_COMPARE_TEXT: + r = bwb_OPTION_COMPARE_TEXT(l); + break; + case C_OPTION_COVERAGE_OFF: + r = bwb_OPTION_COVERAGE_OFF(l); + break; + case C_OPTION_COVERAGE_ON: + r = bwb_OPTION_COVERAGE_ON(l); + break; + case C_OPTION_DATE: + r = bwb_OPTION_DATE(l); + break; + case C_OPTION_DISABLE_COMMAND: + r = bwb_OPTION_DISABLE_COMMAND(l); + break; + case C_OPTION_DISABLE_FUNCTION: + r = bwb_OPTION_DISABLE_FUNCTION(l); + break; + case C_OPTION_DISABLE_OPERATOR: + r = bwb_OPTION_DISABLE_OPERATOR(l); + break; + case C_OPTION_ENABLE_COMMAND: + r = bwb_OPTION_ENABLE_COMMAND(l); + break; + case C_OPTION_ENABLE_FUNCTION: + r = bwb_OPTION_ENABLE_FUNCTION(l); + break; + case C_OPTION_ENABLE_OPERATOR: + r = bwb_OPTION_ENABLE_OPERATOR(l); + break; + case C_OPTION_ERROR_GOSUB: + r = bwb_OPTION_ERROR_GOSUB(l); + break; + case C_OPTION_ERROR_GOTO: + r = bwb_OPTION_ERROR_GOTO(l); + break; + case C_OPTION_INDENT: + r = bwb_OPTION_INDENT(l); + break; + case C_OPTION_LABELS_OFF: + r = bwb_OPTION_LABELS_OFF(l); + break; + case C_OPTION_LABELS_ON: + r = bwb_OPTION_LABELS_ON(l); + break; + case C_OPTION_STATEMENT: + r = bwb_OPTION_STATEMENT(l); + break; + case C_OPTION_STRICT_OFF: + r = bwb_OPTION_STRICT_OFF(l); + break; + case C_OPTION_STRICT_ON: + r = bwb_OPTION_STRICT_ON(l); + break; + case C_OPTION_TERMINAL_ADM_3A: + r = bwb_OPTION_TERMINAL_ADM_3A(l); + break; + case C_OPTION_TERMINAL_ANSI: + r = bwb_OPTION_TERMINAL_ANSI(l); + break; + case C_OPTION_TERMINAL_NONE: + r = bwb_OPTION_TERMINAL_NONE(l); + break; + case C_OPTION_TIME: + r = bwb_OPTION_TIME(l); + break; + case C_OPTION_TRACE_OFF: + r = bwb_OPTION_TRACE_OFF(l); + break; + case C_OPTION_TRACE_ON: + r = bwb_OPTION_TRACE_ON(l); + break; + case C_OPTION_VERSION: + r = bwb_OPTION_VERSION(l); + break; + case C_PRINT: + r = bwb_PRINT(l); + break; + case C_QUIT: + r = bwb_QUIT(l); + break; + case C_READ: + r = bwb_READ(l); + break; + case C_REM: + r = bwb_REM(l); + break; + case C_RENUM: + r = bwb_RENUM(l); + break; + case C_RESTORE: + r = bwb_RESTORE(l); + break; + case C_RESUME: + r = bwb_RESUME(l); + break; + case C_RETURN: + r = bwb_RETURN(l); + break; + case C_RSET: + r = bwb_RSET(l); + break; + case C_RUN: + r = bwb_RUN(l); + break; + case C_SAVE: + r = bwb_SAVE(l); + break; + case C_SELECT: + r = bwb_SELECT(l); + break; + case C_SELECT_CASE: + r = bwb_SELECT_CASE(l); + break; + case C_STOP: + r = bwb_STOP(l); + break; + case C_SUB: + r = bwb_SUB(l); + break; + case C_SWAP: + r = bwb_SWAP(l); + break; + case C_SYSTEM: + r = bwb_SYSTEM(l); + break; + case C_TIMER: + r = bwb_TIMER(l); + break; + case C_TIMER_OFF: + r = bwb_TIMER_OFF(l); + break; + case C_TIMER_ON: + r = bwb_TIMER_ON(l); + break; + case C_TIMER_STOP: + r = bwb_TIMER_STOP(l); + break; + case C_UEND: + r = bwb_UEND(l); + break; + case C_UNTIL: + r = bwb_UNTIL(l); + break; + case C_USER_LBL: + r = bwb_USER_LBL(l); + break; + case C_VARS: + r = bwb_VARS(l); + break; + case C_WEND: + r = bwb_WEND(l); + break; + case C_WHILE: + r = bwb_WHILE(l); + break; + case C_WRITE: + r = bwb_WRITE(l); + break; + default: + sprintf(bwb_ebuf, "in bwb_vector(), INTERNAL ERROR: %d not in switch", l->cmdnum); + bwb_error(bwb_ebuf); + r = l; + break; + } + return r; } + +/* EOF */ diff --git a/bwbasic.doc b/bwbasic.doc index 41aec78..7b1deb5 100644 --- a/bwbasic.doc +++ b/bwbasic.doc @@ -2,12 +2,15 @@ - Bywater BASIC Interpreter/Shell, version 2.10 + Bywater BASIC Interpreter, version 3.00 --------------------------------------------- Copyright (c) 1993, Ted A. Campbell for bwBASIC version 2.10, 11 October 1993 + Copyright (c) 2014-2015, Howatd Wulf, AF5NE + for bwBASIC version 3.00, 2015-04-05 + CONTENTS: @@ -32,32 +35,22 @@ CONTENTS: The Bywater BASIC Interpreter (bwBASIC) implements a large superset of the ANSI Standard for Minimal BASIC (X3.60-1978) and a significant subset of the ANSI Standard for Full BASIC - (X3.113-1987) in C. It also offers shell programming facilities - as an extension of BASIC. bwBASIC seeks to be as portable - as possible. + (X3.113-1987), and many other classic BASIC dialects in C. + bwBASIC does not attempt bug-level compatibility with any + particular BASIC dialect nor does it currently support graphics. + bwBASIC seeks to be as portable as possible. - bwBASIC can be configured to emulate features, commands, and - functions available on different types of BASIC interpreters; - see the file INSTALL for further installation information. + bwBASIC can be configured to emulate features, commands, functions + and operators available in different dialects of BASIC interpreters; + these are controlled by the various OPTION commands. The interpreter is fairly slow. Whenever faced with a choice between conceptual clarity and speed, I have consistently chosen the former. The interpreter is the simplest design available, and utilizes no system of intermediate code, which would speed - up considerably its operation. As it is, each line is interpreted - afresh as the interpreter comes to it. - - bwBASIC implements one feature not available in previous BASIC - interpreters: a shell command can be entered interactively at the - bwBASIC prompt, and the interpreter will execute it under a - command shell. For instance, the command "dir *.bas" can be - entered in bwBASIC (under DOS, or "ls -l *.bas" under UNIX) and - it will be executed as from the operating system command line. - Shell commands can also be given on numbered lines in a bwBASIC - program, so that bwBASIC can be used as a shell programming - language. bwBASIC's implementation of the RMDIR, CHDIR, MKDIR, - NAME, KILL, ENVIRON, and ENVIRON$() commands and functions - offer further shell-processing capabilities. + up considerably its operation. As it is, each line has only + one command. Multi-statement lines are internally broken + into distinct lines as they are loaded. 2. TERMS OF USE: @@ -74,129 +67,317 @@ CONTENTS: 3. QUICK REFERENCE LIST OF COMMANDS AND FUNCTIONS Be aware that many of these commands and functions will not be - available unless you have set certain flags in the header files - (see the expanded reference section below for dependencies). - - ABS( number ) - ASC( string$ ) - ATN( number ) - CALL subroutine-name - CASE ELSE | IF partial-expression | constant - CHAIN [MERGE] file-name [, line-number] [, ALL] - CHDIR pathname - CHR$( number ) - CINT( number ) - CLEAR - CLOSE [[#]file-number]... - CLS - COMMON variable [, variable...] - COS( number ) - CSNG( number ) - CVD( string$ ) - CVI( string$ ) - CVS( string$ ) - DATA constant[,constant]... - DATE$ - DEF FNname(arg...)] = expression - DEFDBL letter[-letter](, letter[-letter])... - DEFINT letter[-letter](, letter[-letter])... - DEFSNG letter[-letter](, letter[-letter])... - DEFSTR letter[-letter](, letter[-letter])... - DELETE line[-line] - DIM variable(elements...)[variable(elements...)]... - DO NUM|UNNUM - DO [WHILE expression] - EDIT - ELSE - ELSEIF - END IF | FUNCTION | SELECT | SUB - ENVIRON variable-string = string - ENVIRON$( variable-string ) - EOF( device-number ) - ERASE variable[, variable]... - ERL - ERR - ERROR number - EXP( number ) - FIELD [#] device-number, number AS string-variable [, number AS string-variable...] - FILES filespec$ - FUNCTION - FOR counter = start TO finish [STEP increment] - GET [#] device-number [, record-number] - GOSUB line | label - GOTO line | label - HEX$( number ) - IF expression THEN [statement [ELSE statement]] - INKEY$ - INPUT [# device-number]|[;]["prompt string";]list of variables - INSTR( [start-position,] string-searched$, string-pattern$ ) - INT( number ) - KILL file-name - LEFT$( string$, number-of-spaces ) - LEN( string$ ) - LET variable = expression - LINE INPUT [[#] device-number,]["prompt string";] string-variable$ - LIST line[-line] - LOAD file-name - LOC( device-number ) - LOCATE line, column - LOF( device-number ) - LOG( number ) - LOOP [UNTIL expression] - LSET string-variable$ = expression - MERGE file-name - MID$( string$, start-position-in-string[, number-of-spaces ] ) - MKD$( number ) - MKDIR pathname - MKI$( number ) - MKS$( number ) - NAME old-file-name AS new-file-name - NEW - NEXT [counter] - OCT$( number ) - ON variable GOTO|GOSUB line[,line,line,...] - ON ERROR GOSUB line - OPEN "O"|"I"|"R", [#]device-number, file-name [,record length] - file-name FOR INPUT|OUTPUT|APPEND AS [#]device-number [LEN = record-length] - OPTION BASE number - POS - PRINT [# device-number,][USING format-string$;] expressions... - PUT [#] device-number [, record-number] - QUIT - RANDOMIZE number - READ variable[, variable]... - REM string - RESTORE line - RETURN - RIGHT$( string$, number-of-spaces ) - RMDIR pathname - RND( number ) - RSET string-variable$ = expression - RUN [line][file-name] - SAVE file-name - SELECT CASE expression - SGN( number ) - SIN( number ) - SPACE$( number ) - SPC( number ) - SQR( number ) - STOP - STR$( number ) - STRING$( number, ascii-value|string$ ) - SUB subroutine-name - SWAP variable, variable - SYSTEM - TAB( number ) - TAN( number ) - TIME$ - TIMER - TROFF - TRON - VAL( string$ ) - WEND - WHILE expression - WIDTH [# device-number,] number - WRITE [# device-number,] element [, element ].... + available unless you have enabled a particular dialect using + the OPTION VERSION command. + + Any function can be executed as a command. For example, the + function "OUT(X, Y)" can be executed as the command "OUT X, Y". + + You can overload functions by parameter signature (the number + and types of parameters), and user defined functions can replace + any instrinsic function, including INP, OUT, PEEK, POKE, and WAIT. + + ? expressions... + ABS( X ) + ACOS( X ) + ANGLE( X, Y ) + ARGC + ARGT$( X ) + ARGV$( X ) + ARGV( X ) + ASC( A$ ) + ASIN( X ) + ATN( X ) + CALL subroutine-name( [parameter [, ...] ] ) + CASE ELSE + CASE IF partial-expression + CASE IS + CASE constant + CCUR( X ) + CDBL( X ) + CEIL( X ) + CHAIN filename$ + CHANGE A$ TO X | CHANGE X TO A$ + CHDIR( A$ ) + CHR$( X ) + CINT( X ) + CLEAR + CLNG( X ) + CLOAD [file-name$] + CLOAD* ArrayName + CLOSE( X ) + CLS + CMDS + COLOR( X, Y ) + COMMON variable [, ...] + CONT + COS( X ) + COSH( X ) + COT( X ) + CSAVE [file-name$] + CSAVE* ArrayName + CSC( X ) + CSNG( X ) + CVC( A$ ) + CVD( A$ ) + CVI( A$ ) + CVL( A$ ) + CVS( A$ ) + DATA constant[, ...] + DATE + DATE$ + DEF FN + DEF FNname(arg...)] = expression + DEF SUB + DEFDBL letter[-letter] [, ...] + DEFINT letter[-letter] [, ...] + DEFSNG letter[-letter] [, ...] + DEFSTR letter[-letter] [, ...] + DEG( X ) + DELETE line [- line] + DIM variable( elements [, ...]) [, ...] + DO + DO UNTIL expression + DO WHILE expression + EDIT + ELSE + ELSEIF + END + END FUNCTION + END IF + END SELECT + END SUB + ENVIRON$( A$ ) + ENVIRON( A$ ) + EOF( X ) + EPS( X ) + ERASE variable [, ...] + ERL + ERR + ERR$ + ERROR( X ) + ERROR( X, A$ ) + EXIT + EXIT DO + EXIT FOR + EXIT FUNCTION + EXIT SUB + EXIT UNTIL + EXIT WHILE + EXP( X ) + FIELD [#] device-number, number AS string-variable$ [, ...] + FILEATTR( X, Y ) + FILES + FILES( A$ ) + FIX( X ) + FNCS + FOR variable = start TO finish [STEP increment] + FP( X ) + FRE + FRE( A$ ) + FRE( X ) + FREEFILE + FUNCTION [ ( parameter [, ... ] ) ] + GET( X ) + GET( X, Y ) + GO + GOSUB line + GOTO line + HELP name + HEX$( X ) + IF expression THEN + IF expression THEN line1 [ELSE line2] + INKEY$ + INP( X ) + INPUT [# device-number]|[;]["prompt string";]list of variables + INPUT$( X ) + INPUT$( X, Y ) + INSTR( A$, B$ ) + INSTR( X, A$, B$ ) + INT( X ) + IP( X ) + KILL( A$ ) + LCASE$( A$ ) + LEFT$( A$, X ) + LEN( A$ ) + [LET] variable = expression + LINE INPUT [[#] device-number,]["prompt string";] string-variable$ + LIST line1 [- line2] + LOAD [file-name$] + LOC( X ) + LOCATE( X, Y ) + LOF( X ) + LOG( X ) + LOG10( X ) + LOG2( X ) + LOOP + LOOP UNTIL + LOOP WHILE + LPOS + LPRINT [USING format-string$;] expressions... + LSET string-variable$ = expression + LTRIM$( A$ ) + LWIDTH( X ) + MAINTAINER + MAX( X, Y ) + MAXBYT + MAXCUR + MAXDBL + MAXDEV + MAXINT + MAXLEN( A$ ) + MAXLNG + MAXLVL + MAXNUM + MAXSNG + MERGE file-name + MID$( A$, X ) + MID$( A$, X, Y ) + MID$( variable$, start [, count ] ) = expression + MIN( X, Y ) + MINBYT + MINCUR + MINDBL + MINDEV + MININT + MINLNG + MINNUM + MINSNG + MKC$( X ) + MKD$( X ) + MKDIR( A$ ) + MKI$( X ) + MKL$( X ) + MKS$( X ) + MOD( X, Y ) + NAME old-file-name AS new-file-name + NAME( A$, B$ ) + NEW + NEXT [variable] + NULL( X ) + OCT$( X ) + ON ERROR GOTO errline | ON ERROR RESUME NEXT + ON TIMER count GOSUB line + ON expression GOTO | GOSUB line [, ...] + OPEN file-name [FOR INPUT|OUTPUT|APPEND|BINARY|RANDOM] AS [#]device-number [LEN = record-length] + OPEN( A$, X, B$ ) + OPEN( A$, X, B$, Y ) + OPTION ... + OPTION ANGLE DEGREES + OPTION ANGLE RADIANS + OPTION ARITHMETIC DECIMAL + OPTION ARITHMETIC FIXED + OPTION ARITHMETIC NATIVE + OPTION BASE 0 + OPTION BASE 1 + OPTION BUGS OFF + OPTION BUGS ON + OPTION COMMENT char + OPTION COMPARE BINARY + OPTION COMPARE DATABASE + OPTION COMPARE TEXT + OPTION COVERAGE OFF + OPTION COVERAGE ON + OPTION DATE format + OPTION DISABLE COMMAND name + OPTION DISABLE FUNCTION name + OPTION DISABLE OPERATOR name + OPTION ENABLE COMMAND name + OPTION ENABLE FUNCTION name + OPTION ENABLE OPERATOR name + OPTION ERROR GOSUB + OPTION ERROR GOTO + OPTION INDENT number + OPTION LABELS OFF + OPTION LABELS ON + OPTION STATEMENT char + OPTION STRICT OFF + OPTION STRICT ON + OPTION TERMINAL ADM-3A + OPTION TERMINAL ANSI + OPTION TERMINAL NONE + OPTION TIME format + OPTION TRACE OFF + OPTION TRACE ON + OPTION VERSION [version] + ORD( A$ ) + OUT( X, Y ) + PEEK( X ) + PI + POKE( X, Y ) + POS + POS( A$, B$ ) + POS( A$, B$, X ) + POS( X ) + PRINT [# device-number,][USING format-string$;] expressions... + PUT( X ) + PUT( X, Y ) + QUIT + RAD( X ) + RANDOMIZE + RANDOMIZE( X ) + READ variable [, ...] + REM ... + REMAINDER( X, Y ) + RENUM + REPEAT$( X, A$ ) + REPEAT$( X, Y ) + RESET + RESTORE [line] + RESUME [ 0 | line | NEXT ] + RETURN + RIGHT$( A$, X ) + RMDIR( A$ ) + RND + RND( X ) + ROUND( X, Y ) + RSET string-variable$ = expression + RTRIM$( A$ ) + RUN [line | file-name$] + SAVE [file-name$] + SEC( X ) + SEEK( X ) + SEEK( X, Y ) + SELECT + SELECT CASE expression + SGN( X ) + SHELL( A$ ) + SIN( X ) + SINH( X ) + SPACE$( X ) + SPC( X ) + SQR( X ) + STOP + STR$( X ) + STRING$( X, A$ ) + STRING$( X, Y ) + SUB name [ ( parameter [,...] ) ] + SWAP variable, variable + SYSTEM + TAB( X ) + TAN( X ) + TANH( X ) + TIME + TIME$ + TIMER + TIMER ON | STOP | OFF + TRIM$( A$ ) + TROFF + TRON + TRUNCATE( X, Y ) + UCASE$( A$ ) + UEND + UNTIL expression + USER LBL + VAL( A$ ) + VARS + WAIT( X, Y ) + WAIT( X, Y, Z ) + WEND + WHILE + WIDTH( X ) + WIDTH( X, Y ) + WRITE [# device-number,] element [, .... ] 4. GENERAL NOTES ON USAGE: @@ -211,24 +392,19 @@ CONTENTS: Line numbers are not strictly required, but are useful if the interactive enviroment is used for programming. For longer program entry one might prefer to use an ASCII text editor, and - in this case lines can be entered without numbers. One can use - DO NUM and DO UNNUM to number or unnumber lines. See also the + in this case lines can be entered without numbers. See also the documentation below for the pseudo-command EDIT. 4.b. Naming Conventions - Command names and function names are not case sensitive, - so that "Run" and "RUN" and "run" are equivalent and "abs()" - and "ABS()" and "Abs()" are equivalent. HOWEVER, variable - names ARE case sensitive in bwbASIC, so that "d$" and "D$" - are different variables. This differs from some BASIC - implementations where variable names are not case sensitive. + Command, function, label, and variable names are not case sensitive, + so that "Run" and "RUN" and "run" are equivalent. Variable names can use any alphabetic characters, the period and underscore characters and decimal digits (but not in the - first position). They can be terminated with '#' or '!' to - allow Microsoft-type names, even though the precision is - irrelevant to bwBASIC. + first position). They can be terminated with '#', '!', or '%' + to allow Microsoft-type names, even though the precision is + irrelevant to bwBASIC. 4.c. Numerical Constants @@ -268,20 +444,22 @@ CONTENTS: 4.h. Operators and Precedence - bwBASIC recognizes the following operators, with their level - of precedence given (1 = highest): + The available operators are determined by the OPTION VERSION + setting. bwBASIC recognizes the following operators, with + their level of precedence given (1 = highest): ^ 1 exponentiation + [ 1 exponentiation * 2 multiplication - / 2 division + / 2 division \ 3 integer division + MOD 4 modulus (remainder) + 5 addition - 5 subtraction = 6 equality or assignment - MOD 4 modulus (remainder) arithmetic - <> 7 inequality - < 8 less than - > 9 greater than + <> 7 inequality + < 8 less than + > 9 greater than <= 10 less than or equal to =< 10 less than or equal to >= 11 greater than or equal to @@ -293,1464 +471,6613 @@ CONTENTS: IMP 16 implication EQV 17 equivalence - 4.h. Numerical Precision (NOT) - - bwBASIC utilizes numbers with only one level of precision. If - the flag NUMBER_DOUBLE is defined as TRUE in bwbasic.h, the - precision implemented will be that of the C "double" data type; - otherwise (default) the precision will be that of the C "float" - type. At a number of points there are commands (or pseudo- - commands) that seem to recognize Microsoft-style precision - distinctions, but for the most part these are just work-around - aliases to allow Microsoft-style programs to be run. - - -5. EXPANDED REFERENCE FOR COMMANDS AND FUNCTIONS - - The "Dependencies" listed in the folowing reference materials - refers to flags that must be set to TRUE in bwbasic.h for the - associated command or function to be implemented. These flags - are as follows: - - (core) Commands and Functions in any implementation of - bwBASIC; these are the ANSI Minimal BASIC core - - INTERACTIVE Commands supporting the interactive programming - environment - - COMMON_CMDS Commands beyond ANSI Minimal BASIC which are common - to Full ANSI BASIC and Microsoft BASICs - - COMMON_FUNCS Functions beyond the ANSI Mimimal BASIC core, but - common to both ANSI Full BASIC and Microsoft-style - BASIC varieties - - UNIX_CMDS Commands which require Unix-style directory and - environment routines not specified in C - - STRUCT_CMDS Commands related to structured programming; all - of these are part of the Full ANSI BASIC standard - - ANSI_FUNCS Functions unique to ANSI Full BASIC - - MS_CMDS Commands unique to Microsoft BASICs - - MS_FUNCS Functions unique to Microsoft BASICs - - - ------------------------------------------ - - Function: ABS( number ) - - Description: ABS returns the absolute value of the argument 'number'. - - Dependencies: (core) - - ------------------------------------------ - - Function: ASC( string$ ) - - Description: ASC returns the ASCII code for the first letter in - the argument string$. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: ATN( number ) - - Description: ATN returns the arctangent value of the argument 'number' - in radians. - - Dependencies: (core) - - ------------------------------------------ - - Command: CALL subroutine-name - - Description: CALL calls a named subroutine (see SUB and END SUB). - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: CASE ELSE | IF partial-expression | constant - - Description: CASE introduces an element of a SELECT CASE statement - (see SELECT CASE). CASE IF introduces a conditional - SELECT CASE element, and CASE ELSE introduces a - default SELECT CASE element. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: CHAIN [MERGE] file-name [, line-number] [, ALL] - - Description: CHAIN passes control to another BASIC program. - Variables declared COMMON (q.v.) will be passed - to the new program. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: CHDIR pathname$ - - Description: CHDIR changes the current directory to that indicated - by the argument pathname$. - - Dependencies: UNIX_CMDS - - ------------------------------------------ - - Function: CHR$( number ) - - Description: CHR$ returns a one-character string with the character - corresponding to the ASCII code indicated by argument - 'number'. - - Dependencies: COMMON_FUNCS - - ------------------------------------------ - - Function: CINT( number ) - - Description: CINT returns the truncated integer for the argument - 'number'. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: CLEAR - - Description: CLEAR sets all numerical variables to 0, and all - string variables to null. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: CLOSE [[#]file-number]... - - Description: CLOSE closes the file indicated by file-number - (see OPEN). - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: CLS - - Description: CLS clears the display screen (IBM and compatibles - only as of version 2.10). - - Dependencies: IMP_IQC and IMP_CMDLOC - - ------------------------------------------ - - Command: CMDS - - Description: CMDS is a debugging command that prints a list - of all implemented bwBASIC commands. - - Dependencies: DEBUG - - ------------------------------------------ - - Command: COMMON variable [, variable...] - - Description: COMMON designates variables to be passed to a CHAINed - program (see CHAIN). - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Function: COS( number ) - - Description: COS returns the cosine of the argument 'number' - in radians. - - Dependencies: (core) - - ------------------------------------------ - - Function: CSNG( number ) - - Description: CSNG is a pseudo-function that has no effect under - bwBASIC. It replicates a Microsoft-type command - that would convert the 'number' to single-precision. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: CVD( string$ ) - - Description: CVD converts the argument string$ into a bwBASIC - number (precision is irrelevant in bwBASIC since - bwBASIC numbers have only one precision). - - Implenentation-Specific Notes: - - CVD(), CVI(), CVS(), MKI$(), MKD$(), MKS$(): These functions - are implemented, but are dependent on a) the sizes for integer, - float, and double values on particular systems, and b) how - particular versions of C store these numerical values. The - implication is that data files created using these functions - on a DOS-based microcomputer may not be translated correctly - by bwBASIC running on a Unix-based computer. Similarly, data - files created by bwBASIC compiled by one version of C may not be - readable by bwBASIC compiled by another version of C (even under - the same operating system). So be careful with these. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: CVI( string$ ) - - Description: CVI converts the argument string$ into a bwBASIC - number (precision is irrelevant in bwBASIC since - bwBASIC numbers have only one precision; see also - the note on CVD). - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: CVS( string$ ) - - Description: CVI converts the argument string$ into a bwBASIC - number (precision is irrelevant in bwBASIC since - bwBASIC numbers have only one precision; see also - the note on CVD). - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: DATA constant[,constant]... - - Description: DATA stores numerical and string constants to be - accessed by READ (q.v.). - - Dependencies: (core) - - ------------------------------------------ - - Function: DATE$ - - Description: DATE$ returns the current date based on the computer's - internal clock as a string in the form "YYYY-MM-DD". - As implemented under bwBASIC, DATE$ cannot be used for - assignment (i.e., to set the system date). - - Note: bwBASIC presently (v2.10) does not allow assignment - to a function. - - Dependencies: COMMON_FUNCS - - ------------------------------------------ - - Command: DEF FNname(arg...)] = expression - - Description: DEF defines a user-written function. This function - corresponds to Microsoft-type implementation, although - in bwBASIC DEF is a working equivalent of FUNCTION. - - Dependencies: (core) - - ------------------------------------------ - - Command: DEFDBL letter[-letter](, letter[-letter])... - - Description: DEFDBL declares variables with single-letter names - as numerical variables (precision is irrelevant in - bwBASIC). - - Dependencies: MS_CMDS - - ------------------------------------------ - - Command: DEFINT letter[-letter](, letter[-letter])... - - Description: DEFINT declares variables with single-letter names - as numerical variables (precision is irrelevant in - bwBASIC). - - Dependencies: MS_CMDS - - ------------------------------------------ - - Command: DEFSNG letter[-letter](, letter[-letter])... - - Description: DEFSNG declares variables with single-letter names - as numerical variables (precision is irrelevant in - bwBASIC). - - Dependencies: MS_CMDS - - ------------------------------------------ - - Command: DEFSTR letter[-letter](, letter[-letter])... - - Description: DEFSTR declares variables with single-letter names - as string variables. - - Dependencies: MS_CMDS - - ------------------------------------------ - - Command: DELETE line[-line] - - Description: DELETE deletes program lines indicated by the - argument(s). If you want to use DELETE for non- - numbered programs, first use DO NUM, then DELETE, - then DO UNNUM. + 4.i. Numerical Precision (NOT) - Dependencies: INTERACTIVE + bwBASIC utilizes numbers with only one level of precision. + All numbers are internally represented using a C double. + The Microsoft-style numeric type characters (!,@,#,%,&), + just like the string type character ($), are part of the + variable name and are also used to range-check the values. + This allows most programs to run correctly, but does not + handle all possible cases. The current implementation is not + complete for all possible uses of numeric type characters. - ------------------------------------------ - - Command: DIM variable(elements...)[variable(elements...)]... - - Description: DIM specifies variables that have more than one - element in a single dimension, i.e., arrayed - variables. - - Note: As implemented under bwBASIC, DIM accepts only - parentheses as delimiters for variable fields. - (Some BASICs allow the use of square brackets.) - - Dependencies: (core) - - ------------------------------------------ - - Command: DO NUM|UNNUM - - Description: DO NUM numbers all lines in a program. The first - line is given the number 10, and subsequent lines - are numbered consecutively in multiples of 10. DO - UNNUM removes all line numbers from a program. - NOTE that these functions do nothing to line - numbers, e.g., following a GOSUB or GOTO statement; - these commands cannot be used as a replacement for - RENUM (available in some systems, but not bwBASIC). - With these commands, however, one can develop - unnumbered programs by entering new lines with numbers, - then running DO UNNUM to remove the line numbers. - Together with LOAD and SAVE (q.v.) one can use - bwBASIC as a primitive text editor. - - Dependencies: INTERACTIVE - - ------------------------------------------ - - Command: DO [WHILE expression] - - Description: DO implements a number of forms of program loops. - DO...LOOP simply loops; the only way out is by - EXIT; DO WHILE...LOOP loops while "expression" is - true (this is equivalent to the older WHILE-WEND - loop, also implemented in bwBASIC); DO...LOOP UNTIL - loops until the expression following UNTIL is true. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: EDIT - - Description: EDIT is a pseudo-command which calls the text editor - specified in the variable BWB.EDITOR$ to edit the - program in memory. After the call to the text editor, - the (edited) prgram is reloaded into memory. The user - normally must specific a valid path and filename in - BWB.EDITOR$ before this command will be useful. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: ELSE - - Description: ELSE introduces a default condition in a multi-line IF - statement. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: ELSEIF - - Description: ELSEIF introduces a secondary condition in a multi- - line IF statement. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: END IF | FUNCTION | SELECT | SUB - - Description: END IF ends a multi-line IF statement. END FUNCTION - ends a multi-line function definition. END SELECT - ends a SELECT CASE statement. END SUB ends a multi- - line subroutine definition. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: ENVIRON variable-string$ = string$ - - Description: ENVIRON sets the environment variable identified by - variable-string$ to string$. - - It might be noted that this differs from the implementation - of ENVIRON in some versions of BASIC, but bwBASIC's ENVIRON - allows BASIC variables to be used on either side of the equals - sign. Note that the function ENVIRON$() is different from the - command, and be aware of the fact that in some operating systems - an environment variable set within a program will not be passed - to its parent shell. - - Dependencies: UNIX_CMDS - - ------------------------------------------ - - Function: ENVIRON$( variable-string$ ) - - Description: ENVIRON$ returns the environment variable associated with - the name variable-string$. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: EOF( device-number ) - - Description: EOF returns TRUE (-1) if the device associated with - device-number is at the end-of-file, otherwise it - returns FALSE (0). - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: ERASE variable[, variable]... - - Description: ERASE eliminates arrayed variables from a program. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Function: ERL - - Description: ERL returns the line number of the most recent error. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: ERR - - Description: ERR returns the error number of the most recent error. - - Note that if PROG_ERRORS has been defined when bwBASIC is - compiled, the ERR variable will not be set correctly upon - errors. It only works when standard error messages are used. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: ERROR number - - Description: ERROR simulates an error, i.e., displays the message - appropriate for that error. This command is helpful - in writing ON ERROR GOSUB routines that can identify - a few errors for special treatment and then ERROR ERR - (i.e., default handling) for all others. + 4.j. OPTION VERSION and so on + + All OPTION commands should be specified in your "profile.bas", + so they will be effective when your BASIC program is LOADed. + + The OPTION VERSION command configures the behavior and + availability of every BASIC keyword and operator. Depending + upon the current OPTION VERSION setting, certain commands, + functions and operators will be enabled or disabled. + The OPTION VERSION setting also controls the default values + for: + OPTION STRICT ON | OFF + OPTION ANGLE DEGREES | RADIANS + OPTION BUGS ON | OFF + OPTION LABELS ON | OFF + OPTION COMPARE BINARY | TEXT + OPTION BASE 0 | 1 + OPTION COVERAGE ON | OFF + OPTION TRACE ON | OFF + OPTION COMMENT char + OPTION STATEMENT char + OPTION DATE format + OPTION TIME format + OPTION ERROR GOTO | GOSUB + + As an example of the choice of OPTION VERSION: + "OPTION VERSION ECMA-116" makes "MOD" a function, while + "OPTION VERSION BASIC-80' makes "MOD" an operator. + The availability of every command and function + for each "OPTION VERSION" setting is documented in section 5. + + The current list of available OPTION VERSION values are: + OPTION VERSION BYWATER ' Bywater BASIC + OPTION VERSION DARTMOUTH ' Dartmouth BASIC + OPTION VERSION ECMA-55 ' ECMA-55 + OPTION VERSION BASIC-80 ' Microsoft BASIC-80 + OPTION VERSION TRS-83 ' TRS-80 Model III + OPTION VERSION TRS-84 ' TRS-80 Model 4 + OPTION VERSION GW-BASIC ' Microsoft GW-BASIC + OPTION VERSION ECMA-116 ' ECMA-116 + OPTION VERSION QBASIC ' Microsoft QBASIC + OPTION VERSION VBDOS ' Microsoft VBDOS + OPTION VERSION VB1 ' Microsoft VB1 + OPTION VERSION VB2 ' Microsoft VB2 + OPTION VERSION VB3 ' Microsoft VB3 + OPTION VERSION VB4 ' Microsoft VB4 + OPTION VERSION VB5 ' Microsoft VB5 + OPTION VERSION VB6 ' Microsoft VB6 + + Currently, the above implementations are incomplete but usable. + There are no plans to implement VB forms, controls, events, objects, DLLs, + and so on, but some VB intrinsic keywords could be useful in TTY applications. + Because OPTION VERSION is a command, it should be executed before a BASIC + program is LOADed. The proper place to set OPTION VERSION is in "profile.bas", + before any other desired OPTION commands. + + Additional commands allow you to configure the available commands, + functions and operators to support existing BASIC programs. They allow you + to configure bwBASIC to support many different flavors of BASIC. + + OPTION COMMENT is provided to allow you to change the comment character. + For example, if your existing BASIC program uses the exclamation-point as + the comment character instead of the apostrophe, then add OPTION COMMENT ! + to "profile.bas", after the OPTION VERSION command. + + OPTION STATEMENT is provided to allow you to change the statement seperator + character. For example, if your existing BASIC program uses the back-slash as + the statement seperator character instead of the colon, then add + OPTION STATEMENT \ to "profile.bas", after the OPTION VERSION command. + + OPTION DATE is provided to allow you to change the format of DATE$. + For example, if you existing BASIC program expects the date format to be + yyyy-mm-dd, then add OPTION DATE "%Y-%m-%d" to "profile.bas", after the + OPTION VERSION command. The format is used by the C function strftime(). + + OPTION TIME is provided to allow you to change the format of TIME$. + For example, if you existing BASIC program expects the time format to be + HH-MM-SS, then add OPTION TIME "%H-%M-%S" to "profile.bas", after the + OPTION VERSION command. The format is used by the C function strftime(). + + OPTION DISABLE COMMAND is provided to allow you to disable (hide) + a specific command. For example, if your existing BASIC program uses + QUIT as a variable, then add OPTION DISABLE COMMAND QUIT to "profile.bas", + after the OPTION VERSION command. If the command contains spaces, + then it should be quoted. + + OPTION DISABLE FUNCTION is provided to allow you to disable (hide) + a specific function. For example, if your existing BASIC program uses + PI as a variable, then add OPTION DISABLE FUNCTION PI to "profile.bas", + after the OPTION VERSION command. + + OPTION DISABLE OPERATOR is provided to allow you to disable (hide) + a specific operator. For example, if your existing BASIC program uses + MOD as a variable, then add OPTION DISABLE OPERATOR MOD to "profile.bas", + after the OPTION VERSION command. + + OPTION ENABLE COMMAND is provided to allow you to enable (show) + a specific command. For example, if your existing BASIC program uses + QUIT as a command, but is otherwise ECMA-55, then add + OPTION ENABLE COMMAND QUIT to "profile.bas", after the + OPTION VERSION command. If the command contains spaces, + then it should be quoted. + + OPTION ENABLE FUNCTION is provided to allow you to enable (show) + a specific function. For example, if your existing BASIC program uses + PI as a function, but is otherwise ECMA-55, then add + OPTION ENABLE FUNCTION PI to "profile.bas", after the + OPTION VERSION command. + + OPTION ENABLE OPERATOR is provided to allow you to enable (show) + a specific operator. For example, if your existing BASIC program uses + MOD as an operator, but is otherwise ECMA-55, then add + OPTION ENABLE OPERATOR MOD to "profile.bas", after the + OPTION VERSION command. + + OPTION ERROR GOSUB causes the program to GOSUB to the error handler. + The error handler should exit with the RETURN command. This option + configures the syntax of the ON ERROR command to ON ERROR GOSUB line, + and ON ERROR RETURN NEXT. In the current version of bwBASIC, this + is not the default setting for any exisiting OPTION VERSION settings. + For example, if your existing BASIC program uses ON ERROR GOSUB, + then add OPTION ERROR GOSUB to "profile.bas",after the OPTION VERSION + command. + + OPTION ERROR GOTO causes the program to GOTO to the error handler. + The error handler should exit with the RESUME command. This option + configures the syntax of the ON ERROR command to ON ERROR GOTO line, + and ON ERROR RESUME NEXT. In the current version of bwBASIC, this + is the default setting for all exisiting OPTION VERSION settings. + For example, if your existing BASIC program uses ON ERROR GOTO, + then add OPTION ERROR GOTO to "profile.bas",after the OPTION VERSION + command. + + OPTION LABELS OFF disables textual labels. so statements of the form + "label:" and "GOTO label" are disallowed. For example, if your existing + BASIC program does not use textual labels, then add OPTION LABELS OFF + to "profile.bas", after the OPTION VERSION command. + + OPTION LABELS ON enables textual labels. so statements of the form + "label:" and "GOTO label" are allowed. The label must be on a line + by itself and the label must end with the OPTION STATEMENT character. + For example, if your existing BASIC program uses textual labels, then + add OPTION LABELS ON to "profile.bas", after the OPTION VERSION command. + + Regardless of the OPTION LABELS setting, statements of the form + "IF x THEN label" are not allowed, instead use the form + "IF x THEN GOTO label". + + Conflicting and pathological OPTION combinations are not supported. - Dependencies: COMMON_CMDS + 4.k. OPTION BUGS + + The OPTION BUGS command determines the behavior of a number of + BASIC keywords. OPTION BUGS ON enables selected behaviors that exist + in some BASIC derivatives. OPTION BUGS OFF enables the traditional + ANSI/ECMA/ISO standard behavior. I haved considered several different + names for this command, but have not yet thought of a better short name meaning + "this dialect ignored multiple established, published, and traditional standards". + Because OPTION BUGS is a command, it should be executed before a BASIC + program is LOADed. The proper place to set OPTION BUGS is in "profile.bas", + after any desired OPTION VERSION command. + + With OPTION BUGS ON: + + FOR ... ' values are evaluated left-to-right + ON X GOTO ... ' an invalid value for X falls thru without ERROR + ON X GOSUB ... ' an invalid value for X falls thru without ERROR + X = VAL("X") ' returns zero without ERROR + INPUT X ' empty string returns zero without ERROR + INPUT X$ ' empty string returns "" without ERROR + variable names ' period and underscore are allowed + + With OPTION BUGS OFF: + + FOR ... ' values are evaluated according to standard + ON X GOTO ... ' an invalid value for X raises an ERROR + ON X GOSUB ... ' an invalid value for X raises an ERROR + X = VAL("X") ' raises an ERROR + INPUT X ' empty string retries input + INPUT X$ ' empty string retries input + variable names ' period and underscore are not allowed + + 4.l. ERROR handling + + bwBASIC implements a simplified error handling strategy. + Errors are seperated into two categories: + + a) certain errors which could be corrected with a simple + error handler are trappable. These erorrs are: + - Out of data (ERROR 4) + - the last DATA item has already been READ. + - the default behavior is to terminate the program. + - Illegal function call (ERROR 5) + - a function's parameter's value is invalid. + - the default behavior is to terminate the program. + - Overflow & Division by Zero (ERROR 6) + - the default behavior is to display a warning message. + - Advanced Feature (ERROR 73) + - the function is not implemented on this platform. + - the default behavior is to terminate the program. + If an error handler exists, then it is executed, + otherwise the defult behaivor is performed. + The correct action to take in an error handler + depends upon the specific application. + + b) all other errors are fatal. These errors include: + - Syntax Error + - FOR without NEXT + - NEXT without FOR + - WHILE without WEND + - WEND without WHILE + - and so on. + The program is immediately terminated. + + Previous versions of bwBASIC used ON ERROR GOSUB. + This version defaults to ON ERROR GOTO instead, + which could depend upon the OPTION VERSION setting. + One possible fix for older bwBASIC programs is to add + OPTION ERROR GOSUB as the first line of the program. + Another fix would be to add OPTION ERROR GOSUB + to your profile.bas file. + + 4.m. Implementation rules for functions and commands + + In many BASIC dialects, there are significant differences + between a command and a function. In this version of bwBASIC, + the following rules have been used to determine whether a + BASIC keyword is implemented as a command or a function: + + a) If the keyword requires significant parsing, + then it is implemented as a command. An example is "PRINT". + + b) If the keyword requires access to variables BYREF, + then it is implemented as a command. An example is "SWAP". + + c) If the keyword changes the flow of control, + then it is implemented as a command. An example is "GOTO". + + d) A function may be used as though it were a command, + but a command cannot be used as though it were a function. + + e) The BASIC program can redefine a function, + but the BASIC program cannot redefine a command. + + f) The BASIC program can overload a function, + but the BASIC program cannot overload a command. + + g) Other than semantics, there is no practical difference + between a BASIC function and a BASIC subroutine. + + These rules were chosen to allow maximum flexibility, + while maintaining compatibility with existing BASIC programs. + + An example of the results of the above rules is "LOCATE". + + Since "LOCATE" is implemented as a function, you may: + + a) call it as a subroutine like this: + + 100 LOCATE X, Y - ------------------------------------------ + b) call it as a function like this: + + 100 LET N = LOCATE( X, Y ) ' N = 0 + + c) redefine it as a subroutine like this: + + SUB LOCATE( X, Y ) + ' ... + END SUB + + d) redefine it as a function like this: + + FUNCTION LOCATE( X, Y ) + ' ... + END FUNCTION + + e) overload it using subroutines like these: + + SUB LOCATE( X, Y ) + ' ... + END SUB + SUB LOCATE( X, A$ ) + ' ... + END SUB + SUB LOCATE( A$, X ) + ' ... + END SUB + SUB LOCATE( A$, B$ ) + ' ... + END SUB + + f) overload it using functions like these: + + FUNCTION LOCATE( X, Y ) + ' ... + END FUNCTION + FUNCTION LOCATE( X, A$ ) + ' ... + END FUNCTION + FUNCTION LOCATE( A$, X ) + ' ... + END FUNCTION + FUNCTION LOCATE( A$, B$ ) + ' ... + END FUNCTION + + +5. EXPANDED REFERENCE FOR COMMANDS AND FUNCTIONS + + bwBASIC provides a simple "HELP" command to assist you in + finding the command or function you are looking for. + If you do not find the command you are looking for, + then look to see if it has been implemented as a function. + The following sections provide brief descriptions of every + intrinsic command and function in bwBASIC. There are many + good books which describe BASIC in detail. - Command: EXIT [FOR] - Description: EXIT by itself exits from a DO...LOOP loop; - EXIT FOR exits from a FOR...NEXT loop. +============================================================ + COMMANDS +============================================================ - Dependencies: STRUCT_CMDS + +------------------------------------------------------------ + SYNTAX: ? expressions... +DESCRIPTION: This is just a shortcut for PRINT. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CALL subroutine-name( [parameter [, ...] ] ) +DESCRIPTION: Calls a subroutine that was defined by SUB and END SUB. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CASE constant +DESCRIPTION: Introduces an element of a SELECT CASE statement. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CASE ELSE +DESCRIPTION: Introduces a default SELECT CASE element. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CASE IF partial-expression +DESCRIPTION: Introduces a conditional SELECT CASE element. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CASE IS +DESCRIPTION: Same as CASE IF. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CHAIN filename$ +DESCRIPTION: Load and execute another BASIC program, without clearing variables. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CHANGE A$ TO X | CHANGE X TO A$ +DESCRIPTION: Changes a string to a numeric array or a numeric array to a string. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CLEAR +DESCRIPTION: Sets all numeric variables to 0, and all string variables to empty strings. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CLOAD [file-name$] +DESCRIPTION: Loads an ASCII BASIC program into memory. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CLOAD* ArrayName +DESCRIPTION: Loads a numeric array from a file saved using CSAVE*. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CMDS +DESCRIPTION: Prints a list of all implemented BASIC commands. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: COMMON variable [, ...] +DESCRIPTION: Designates variables to be passed to a CHAINed program. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CONT +DESCRIPTION: Continue a BASIC program after a STOP has been executed. Program resumes at the line after the STOP. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: CSAVE [file-name$] +DESCRIPTION: Saves the current program into the file file-name$ in ASCII format. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: CSAVE* ArrayName +DESCRIPTION: Saves a numeric array into a file. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: DATA constant[, ...] +DESCRIPTION: Stores numeric and string constants to be accessed by READ. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEF FNname(arg...)] = expression +DESCRIPTION: Defines a single line user-written function. For multiple line functions use the FUNCTION command. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEF SUB +DESCRIPTION: An internal command that allows the BASIC program to execute any function as though it were a command. You do not directly call this command. If your program has a line beginning with a functio name, then DEF SUB is used to execute the function and ignore the result. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEFDBL letter[-letter] [, ...] +DESCRIPTION: Declares variables with single-letter names as numeric variables. TODO: enforce the rnage of [MINDBL,MAXDBL]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEFINT letter[-letter] [, ...] +DESCRIPTION: Declares variables with single-letter names as numeric variables. TODO: enforce the rnage of [MININT,MAXINT]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEFSNG letter[-letter] [, ...] +DESCRIPTION: Declares variables with single-letter names as numeric variables. TODO: enforce the rnage of [MINSNG,MAXSNG]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DEFSTR letter[-letter] [, ...] +DESCRIPTION: Declares variables with single-letter names as string variables. TODO: enforce the range of [MINLEN,MAXLEN]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DELETE line [- line] +DESCRIPTION: Deletes program lines indicated by the argument(s). All program lines have a number, which is visible with the LIST command. If line numbers are not provided, they are assigned beginning with 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DIM variable( elements [, ...]) [, ...] +DESCRIPTION: Specifies the dimensions of an array variables. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DO +DESCRIPTION: Top of a DO - LOOP structure. If the loop is not terminated by EXIT DO or LOOP UNTIL or LOOP WHILE, then it will loop forever. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DO UNTIL expression +DESCRIPTION: Top of a DO - LOOP structure. If the expression is zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: DO WHILE expression +DESCRIPTION: Top of a DO - LOOP structure. If the expression is non-zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EDIT +DESCRIPTION: implementation defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ELSE +DESCRIPTION: Introduces a default condition in a multi-line IF statement. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ELSEIF +DESCRIPTION: Introduces a secondary condition in a multi-line IF statement. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END +DESCRIPTION: Terminates program execution. If the BASIC program was executed from the operating system level, then control returns to the operating system, oterwise control reuturns to the BASIC prompt. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END FUNCTION +DESCRIPTION: Specifies the last line of a multi-line FUNCTION definition. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END IF +DESCRIPTION: Specifies the last line of a multi-line IF definition. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END SELECT +DESCRIPTION: Specifies the last line of a multi-line SELECT CASE definition. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: END SUB +DESCRIPTION: Specifies the last line of a multi-line SUB definition. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ERASE variable [, ...] +DESCRIPTION: Eliminates arrayed variables from a program. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT +DESCRIPTION: EXIT by itself is a syntax error. Use EXIT DO, EXIT FOR, EXIT FUNCTION, EXIT SUB, EXIT UNTIL, or EXIT WHILE. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT DO +DESCRIPTION: Immediately exits the inner-most DO-LOOP strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT FOR +DESCRIPTION: Immediately exits the inner-most FOR-NEXT strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT FUNCTION +DESCRIPTION: Immediately exits the inner-most multi-line FUNCTION strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT SUB +DESCRIPTION: Immediately exits the inner-most multi-line SUB strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: EXIT UNTIL +DESCRIPTION: Immediately exits the inner-most UNTIL-UEND strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: EXIT WHILE +DESCRIPTION: Immediately exits the inner-most WHILE-END strucure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: FIELD [#] device-number, number AS string-variable$ [, ...] +DESCRIPTION: Assigns 'number' bytes in the buffer of random file 'device-number' to the variable 'string-variable$'. GET will automatically update the variable, and PUT will automatically use the variable. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: FNCS +DESCRIPTION: Prints a list of all pre-defined BASIC functions. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: FOR variable = start TO finish [STEP increment] +DESCRIPTION: Top of a FOR - NEXT structure. The loop will continue a fixed number of times, which is determined by the values of start, finish, and increment. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: FUNCTION [ ( parameter [, ... ] ) ] +DESCRIPTION: Top line of a multi-line FUNCTION definition. The variable names specified are local to the FUNCTION definition, and are initialized BYVAL when the function is invoked by another routine. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: GO +DESCRIPTION: GO by itself is a syntax error. Use GOTO or GOSUB instead. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: GOSUB line +DESCRIPTION: Initiates a subroutine call to the line specified. The subroutine must end with RETURN. The 'line' may be a number or a label. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: GOTO line +DESCRIPTION: Branches program execution to the specified line. The 'line' may be a number or a label. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: HELP name +DESCRIPTION: Provides help on the specified 'name' which is a command name or function name. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: IF expression THEN line1 [ELSE line2] +DESCRIPTION: Single line standard IF command. If the value of expression is non-zero, then branh to line1. If the value of expression is zero and ELSE is provided, then branch to line2. If the value of expression is zero and ELSE is not provided, continue to the next line. LABELS are not allowed. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: IF expression THEN +DESCRIPTION: Top of a multi-line IF - END IF structure. If the value of expression is non-zero, then the program lines upto the next ELSE or ELSE IF command are executed, otherwise the program branches to the next ELSE or ELSE IF command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: INPUT [# device-number]|[;]["prompt string";]list of variables +DESCRIPTION: Reads input from the terminal or athe file specified by device-number. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: [LET] variable = expression +DESCRIPTION: Assigns the value of expression to variable. The 'LET' keyword is optional. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LINE INPUT [[#] device-number,]["prompt string";] string-variable$ +DESCRIPTION: Reads entire line from the keyboard or a file into string-variable$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LIST line1 [- line2] +DESCRIPTION: Lists BASIC program lines from 'line1' to 'line2' + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LOAD [file-name$] +DESCRIPTION: Loads an ASCII BASIC program into memory. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LOOP +DESCRIPTION: Bottom of a DO - LOOP structure. IF the loop is not terminated by EXIT DO or DO UNTIL or DO WHILE, then it will loop forever. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LOOP UNTIL +DESCRIPTION: Bottom of a DO - LOOP structure. If the expression is zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LOOP WHILE +DESCRIPTION: Bottom of a DO - LOOP structure. If the expression is non-zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LPRINT [USING format-string$;] expressions... +DESCRIPTION: Send output to the default printer which is implementation defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: LSET string-variable$ = expression +DESCRIPTION: Left-aligns the value of expression into string-variable$. If the length of the value is too short, then it is padded on the right with spaces. If the length of the value is too long, then it is truncated on the right. This is only for use with variables assigned to a random access buffer with FIELD command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: MAINTAINER +DESCRIPTION: This command is reserved for use by the Bywater BASIC maintainer and does whatever the maintainer wants it to do. It is not for the BASIC programmer. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: MERGE file-name +DESCRIPTION: Merges the BASIC program in file-name into the current BASIC program. Lines in file-name replace any matching lines in the current program. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: MID$( variable$, start [, count ] ) = expression +DESCRIPTION: Replaces a subtring of variable$ with expression. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: NAME old-file-name AS new-file-name +DESCRIPTION: Changes the name of an existing file. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: NEW +DESCRIPTION: Deletes the program in memory and clears all variables. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: NEXT [variable] +DESCRIPTION: The bottom line of a FOR - NEXT structure. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ON expression GOTO | GOSUB line [, ...] +DESCRIPTION: Branches (GOTO) or calls (GOSUB) based on the rounded value of variable. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ON ERROR GOTO errline | ON ERROR RESUME NEXT +DESCRIPTION: Specifies what line to goto when a trappable error occurs. ON ERROR GOTO branches to 'errline'. ON ERROR RESUME NEXT branches to the line after the line causing the error. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: ON TIMER count GOSUB line +DESCRIPTION: Specifies a line (or label) to gosub when count seconds have elaspsed after TIMER ON is executed. The interrupt routine should end with a RETURN command. Timer events only occur in running BASIC programs. The resolution of the clock is implementation defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPEN file-name [FOR INPUT|OUTPUT|APPEND|BINARY|RANDOM] AS [#]device-number [LEN = record-length] +DESCRIPTION: Opens a file for use. INPUT, OUTPUT, and APPEND are for text files. BINARY is for binary files. RANDOM is for structured binary files and requires LEN. Files opened for RANDOM use GET and PUT. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ... +DESCRIPTION: OPTION by itself is a syntax error. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ANGLE DEGREES +DESCRIPTION: Configures the math functions to accept and return angles in degrees. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ANGLE RADIANS +DESCRIPTION: Configures the math functions to accept and return angles in radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ARITHMETIC DECIMAL +DESCRIPTION: Currently has no effect. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ARITHMETIC FIXED +DESCRIPTION: Currently has no effect. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ARITHMETIC NATIVE +DESCRIPTION: Currently has no effect. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION BASE 0 +DESCRIPTION: Sets the lowest array subscript to 0. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPTION BASE 1 +DESCRIPTION: Sets the lowest array subscript to 1. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: OPTION BUGS OFF +DESCRIPTION: Disables bugs commonly found in BASIC-80 derivatives and clones. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION BUGS ON +DESCRIPTION: Enables bugs commonly found in BASIC-80 derivatives and clones. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COMMENT char +DESCRIPTION: Sets the comment character. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COMPARE BINARY +DESCRIPTION: Causes string comparisons to be case-sensitive. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COMPARE DATABASE +DESCRIPTION: Causes string comparisons to be case-insensitive. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COMPARE TEXT +DESCRIPTION: Causes string comparisons to be case-insensitive. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COVERAGE OFF +DESCRIPTION: Disables BASIC code coverage recording, displayed using the LIST command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION COVERAGE ON +DESCRIPTION: Enables BASIC code coverage recording, displayed using the LIST command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION DATE format +DESCRIPTION: Sets the date format string used by C strftime() for DATE$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION DISABLE COMMAND name +DESCRIPTION: Disables the specified BASIC command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION DISABLE FUNCTION name +DESCRIPTION: Disables the specified BASIC function. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION DISABLE OPERATOR name +DESCRIPTION: Disables the specified BASIC operator. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ENABLE COMMAND name +DESCRIPTION: Enables the specified BASIC command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ENABLE FUNCTION name +DESCRIPTION: Enables the specified BASIC function. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION ENABLE OPERATOR name +DESCRIPTION: Enables the specified BASIC operator. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION INDENT number +DESCRIPTION: Sets indention level for LIST. Zero means no indention. Default is 2. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION LABELS OFF +DESCRIPTION: Disables text labels. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION LABELS ON +DESCRIPTION: Enables text labels. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION STATEMENT char +DESCRIPTION: Sets the statement seperator character. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION STRICT OFF +DESCRIPTION: Disables checking for implicit array creation without using the DIM command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION STRICT ON +DESCRIPTION: Enables checking for implicit array creation without using the DIM command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TERMINAL ADM-3A +DESCRIPTION: Enables ADM-3A terminal control codes for CLS, COLOR, and LOCATE. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TERMINAL ANSI +DESCRIPTION: Enables ANSI terminal control codes for CLS, COLOR, and LOCATE. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TERMINAL NONE +DESCRIPTION: Disables terminal control codes for CLS, COLOR, and LOCATE. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TIME format +DESCRIPTION: Sets the time format string used by C strftime() for TIME$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TRACE OFF +DESCRIPTION: Disables displaying a stack trace when an ERROR occurs. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION TRACE ON +DESCRIPTION: Enables displaying a stack trace when an ERROR occurs. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: OPTION VERSION [version] +DESCRIPTION: Selects a combination of OPTION settings and enables certain commands and functions. If no version is specified, displays a list of the available versions. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: PRINT [# device-number,][USING format-string$;] expressions... +DESCRIPTION: Sends output to the console or a file. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: QUIT +DESCRIPTION: Exits to the operating system. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: READ variable [, ...] +DESCRIPTION: Reads values from DATA statements. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: REM ... +DESCRIPTION: Remark. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RENUM +DESCRIPTION: Implementation defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RESTORE [line] +DESCRIPTION: Resets the line used for the next READ statement. 'line' may be either a number or a label. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RESUME [ 0 | line | NEXT ] +DESCRIPTION: Used in an error handler to specify the next line to execute. RESUME and RESUME 0 branch to ERL. RESUME NEXT branches to the line after ERL. RESUME line branches to the specified line. 'line' may be either a number or a label. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RETURN +DESCRIPTION: Concludes a subroutine called by GOSUB. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RSET string-variable$ = expression +DESCRIPTION: Right-aligns the value of expression into string-variable$. If the length of the value is too short, then it is padded on the left with spaces. If the length of the value is too long, then it is truncated on the right. This is only for use with variables assigned to a random access buffer with FIELD command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: RUN [line | file-name$] +DESCRIPTION: RUN executes the program in memory from the start. RUN line exexecutes the program in memory beginning at 'line'. RUN file-name$ loads a new BAASIC program and executes the program from the start. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SAVE [file-name$] +DESCRIPTION: Saves the current program into the file file-name$ in ASCII format. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SELECT +DESCRIPTION: SELECT by itself is a syntax error. Use SELECT CASE instead. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SELECT CASE expression +DESCRIPTION: Introduces a multi-line conditional selection statement. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: STOP +DESCRIPTION: Interrupts program execution and displays the line number of the STOP command. For use when debugging BASIC programs. Whether STOP issues a SIGINT signal is implementation defined. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SUB name [ ( parameter [,...] ) ] +DESCRIPTION: Top line of a multi-line SUB definition. The variable names specified are local to the SUB definition, and are initialized BYVAL when the subroutine is invoked by another routine. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SWAP variable, variable +DESCRIPTION: Swaps the values of two variables. Both variables must be of the same type. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: SYSTEM +DESCRIPTION: Exits to the operating system. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: TIMER ON | STOP | OFF +DESCRIPTION: TIMER ON enables the interrupt. TIMER STOP disables the interrupt, but the count continues. TIMER OFF terminates the interrupt. When the specified seconds have elapsed, TIMER STOP is internaly executed before the interrupt is taken. TIMER ON should be executed just before the RETURN command if you want the interrupt to occur again. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: UEND +DESCRIPTION: Bottom of a UNTIL - UEND structure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: UNTIL expression +DESCRIPTION: Top of a UNTIL - UEND structure. If the expression is zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: USER LBL +DESCRIPTION: An internal command that allows the BASIC program to find a user label. You do not directly call this command. If your program has a line with a label, then USER LBL is used to mark the line. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: VARS +DESCRIPTION: Prints a list of all global variables. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: WEND +DESCRIPTION: Bottom of a WHILE - WEND structure. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: WHILE +DESCRIPTION: Top of a WHILE - WEND structure. If the expression is non-zero, then the loop is terminated. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: WRITE [# device-number,] element [, .... ] +DESCRIPTION: Outputs variables to the screen or to a file. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + + + +============================================================ + FUNCTIONS +============================================================ + + +------------------------------------------------------------ + SYNTAX: N = ABS( X ) + PARAMETER: X is a number +DESCRIPTION: The absolute value of X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ACOS( X ) + PARAMETER: X is a number +DESCRIPTION: The arccosine of X in radians, where 0 <= ACOS(X) <= PI. X shall be in the range -1 <= X <= 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ANGLE( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number +DESCRIPTION: The angle in radians between the positive x-axis and the vector joining the origin to the point with coordinates (X, Y), where -PI < ANGLE(X,Y) <= PI. X and Y must not both be 0. Note that the counterclockwise is positive, e.g., ANGLE(1,1) = 45 degrees. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ARGC +DESCRIPTION: The number of parameters passed to a FUNCTION or SUB. If not in a FUNCTION or SUB, returns -1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = ARGT$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The value of the X'th parameter to a FUNCTION or SUB; '$' or '#'. X in [1,ARGC]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ARGV( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The value of the X'th parameter to a FUNCTION or SUB. X in [1,ARGC] and ARGT$( X ) = '#'. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = ARGV$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The value of the X'th parameter to a FUNCTION or SUB. X in [1,ARGC] and ARGT$( X ) = '$'. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ASC( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The ASCII code for the first letter in A$. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ASIN( X ) + PARAMETER: X is a number +DESCRIPTION: The arcsine of X in radians, where -PI/2 <= ASIN(X) <= PI/2; X shall be in the range -1 <= X <= 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ATN( X ) + PARAMETER: X is a number +DESCRIPTION: The arctangent of X in radians, i.e. the angle whose tangent is X, where -PI/2 < ATN(X) < PI/2. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CCUR( X ) + PARAMETER: X is a number, [MINCUR,MAXCUR] +DESCRIPTION: The currency (64-bit) integer value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CDBL( X ) + PARAMETER: X is a number, [MINDBL,MAXDBL] +DESCRIPTION: The double-precision value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CEIL( X ) + PARAMETER: X is a number +DESCRIPTION: The smallest integer not less than X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CHDIR( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Changes to the directory named to A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = CHR$( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: The one-character string with the character corresponding to the ASCII code X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CINT( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The short (16-bit) integer value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CLNG( X ) + PARAMETER: X is a number, [MINLNG,MAXLNG] +DESCRIPTION: The long (32-bit) integer value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CLOSE( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: Close file number X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CLS +DESCRIPTION: Clears the screen. Cursor is positioned at row 1, column 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = COLOR( X, Y ) + PARAMETER: X is a number, [0,255] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Sets the foreground text color to X, and the background text color to Y. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = COS( X ) + PARAMETER: X is a number +DESCRIPTION: The cosine of X, where X is in radians. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = COSH( X ) + PARAMETER: X is a number +DESCRIPTION: The hyperbolic cosine of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = COT( X ) + PARAMETER: X is a number +DESCRIPTION: The cotangent of X, where X is in radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CSC( X ) + PARAMETER: X is a number +DESCRIPTION: The cosecant of X, where X is in radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CSNG( X ) + PARAMETER: X is a number, [MINFLT,MAXFLT] +DESCRIPTION: The single-precision value of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CVC( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(CUR) +DESCRIPTION: The currency (64-bit) integer value in A$, which was created by MKC$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = CVD( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(DBL) +DESCRIPTION: The double-precision value in A$, which was created by MKD$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CVI( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(INT) +DESCRIPTION: The short (16-bit) integer value in A$, which was created by MKI$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CVL( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(LNG) +DESCRIPTION: The long (32-bit) integer value in A$, which was created by MKL$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = CVS( A$ ) + PARAMETER: A$ is a string, LEN >= sizeof(FLT) +DESCRIPTION: The single-precision value in A$, which was created by MKS$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = DATE +DESCRIPTION: The current date in decimal form YYYDDD, where YYY are the number of years since 1900 and DDD is the ordinal number of the current day of the year; e.g., the value of DATE on May 9, 1977 was 77129. If there is no calendar available, then the value of DATE shall be -1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = DATE$ +DESCRIPTION: BASIC-80: The current date based on the computer's internal clock as a string in the form 'MM-DD-YYYY'.ECMA-116: The date in the string representation 'YYYYMMDD' according to ISO 2014. For example, the value of DATE$ on May 9, 1977 was '19770509'. If there is not calendar available, then the value of DATE$ shall be '00000000'. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = DEF FN +DESCRIPTION: User Function. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = DEG( X ) + PARAMETER: X is a number +DESCRIPTION: The number of degrees in X radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ENVIRON( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Sends the environment variable expression contained in A$ to the host operating system. A$ must contain the '=' character. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = ENVIRON$( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The value of the environment variable named A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = EOF( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: If device number X is at the end-of-file, then -1, otherwise 0. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = EPS( X ) + PARAMETER: X is a number +DESCRIPTION: The maximum of (X-X1,X2-X, sigma) where X1 and X2 are the predecessor and successor of X and signma is the smallest positive value representable. If X has no predecessor the X1=X and if X has no successor the X2=X. Note EPS(0) is the smallest positive number representable by the implementation, and is therefor implementation-defined. Note also that EPS may produce different results for different arithmetic options (see OPTION ARITHMETIC). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = ERL +DESCRIPTION: The line number of the most recent error. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ERR +DESCRIPTION: The error number of the most recent error. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = ERR$ +DESCRIPTION: The last error message. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ERROR( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: Simulate the error number in X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ERROR( X, A$ ) + PARAMETER: X is a number, [0,255] + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: Simulate the error number in X, with a custom message in A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = EXP( X ) + PARAMETER: X is a number +DESCRIPTION: The exponential value of X, i.e., the value of the base of natural logarithms (e = 2.71828) raised to the power of X; if EXP(X) is less that machine infinitesimal, then its value shall be replaced with zero. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FILEATTR( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: For file X, if Y = 1 then returns open mode, otherwise returns zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FILES +DESCRIPTION: Displays all the file names. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FILES( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Displays all the file names matching A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FIX( X ) + PARAMETER: X is a number +DESCRIPTION: The truncated integer, part of X. FIX (X) is equivalent to SGN(X)*INT(ABS(X)). The major difference between FIX and INT is that FIX does not return the next lower number for negative X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FP( X ) + PARAMETER: X is a number +DESCRIPTION: The fractional part of X, i.e. X - IP(X). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = FRE +DESCRIPTION: The number of bytes of available memory. This function is provided for backward compatibility and it always returns a fixed value of 32000. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FRE( X ) + PARAMETER: X is a number +DESCRIPTION: The number of bytes of available memory. This function is provided for backward compatibility and it always returns a fixed value of 32000. The value of X is ignored. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FRE( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The number of bytes of available memory. This function is provided for backward compatibility and it always returns a fixed value of 32000.The value of A$ is ignored. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = FREEFILE +DESCRIPTION: The next available file number. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = GET( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: For file X, gets the next available record. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = GET( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: For file X, gets record number Y. The first record number is 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = HEX$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The the hexadecimal (base 16) representation of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = INKEY$ +DESCRIPTION: The keypress, if available. If a keypress is not available, then immediately returns a null string (''). If not supported by the platform, then always returns an empty string, so use INPUT$(1) instead. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = INP( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: The value read from machine port X. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = INPUT$( X ) + PARAMETER: X is a number, [0,MAXLEN] +DESCRIPTION: The string of X characters, read from the terminal. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = INPUT$( X, Y ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: Y is a number, [1,MAXDEV] +DESCRIPTION: The string of X characters, read from file Y. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = INSTR( A$, B$ ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: B$ is a string, LEN >= 0 +DESCRIPTION: The position at which B$ occurs in A$, beginning at position 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = INSTR( X, A$, B$ ) + PARAMETER: X is a number, [1,MAXLEN] + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: B$ is a string, LEN >= 0 +DESCRIPTION: The position at which B$ occurs in A$, beginning at position X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = INT( X ) + PARAMETER: X is a number +DESCRIPTION: The largest integer not greater than X; e.g. INT(1.3) = 1 and INT(-1.3) = 2. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = IP( X ) + PARAMETER: X is a number +DESCRIPTION: The integer part of X, i.e., SGN(X)*INT(ABS(X)). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = KILL( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Removes the file named in A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = LCASE$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string of characters from the value associatedwith A$ by replacing each upper-case-letter in the string by its lower-case version. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = LEFT$( A$, X ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: X is a number, [0,MAXLEN] +DESCRIPTION: The X left-most characters of A$, beginning from postion 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LEN( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The length of A$. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOC( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: The location of file X; the next record that GET or PUT statements will use. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOCATE( X, Y ) + PARAMETER: X is a number, [0,255] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Locates the cursor to row X, column Y. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOF( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: The length of file X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOG( X ) + PARAMETER: X is a number, > 0 +DESCRIPTION: The natural logarithm of X; X shall be greater than zero. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LOG10( X ) + PARAMETER: X is a number, > 0 +DESCRIPTION: The common logarithm of X; X shall be greater than zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = LOG2( X ) + PARAMETER: X is a number, > 0 +DESCRIPTION: The base 2 logarithm of X; X shall be greater than zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = LPOS +DESCRIPTION: The current cursor position in the line for the printer. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = LTRIM$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string of characters resulting from the value associated with A$ by deleting all leading space characters. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = LWIDTH( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: For printer, sets the line width to X. Zero means no wrapping will occur. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = MAX( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number +DESCRIPTION: The smaller (algebraically) of the parameters. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXBYT +DESCRIPTION: The largest finite positive number representable as a BYTE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXCUR +DESCRIPTION: The largest finite positive number representable as a CURRENCY; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXDBL +DESCRIPTION: The largest finite positive number representable as a DOUBLE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXDEV +DESCRIPTION: The largest finite positive number useable as a FILE NUMBER; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXINT +DESCRIPTION: The largest finite positive number representable as an INTEGER; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXLEN( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The maximum length associated with the simple-string-variable A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXLNG +DESCRIPTION: The largest finite positive number representable as a LONG; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXLVL +DESCRIPTION: The maximum stack level; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXNUM +DESCRIPTION: The largest finite positive number representable and manipulable by the implementation; implementation-defined. MAXNUM may represent diffent number for different arithmetic options (see OPTION ARITHMETIC). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MAXSNG +DESCRIPTION: The largest finite positive number representable as a SINGLE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MID$( A$, X ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: X is a number, [1,MAXLEN] +DESCRIPTION: The characters of A$, starting from postion X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MID$( A$, X, Y ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: X is a number, [1,MAXLEN] + PARAMETER: Y is a number, [0,MAXLEN] +DESCRIPTION: The Y characters of A$, starting from postion X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = MIN( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number +DESCRIPTION: The smaller (algebraically) of the parameters. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINBYT +DESCRIPTION: The largest finite negative number representable as a BYTE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINCUR +DESCRIPTION: The largest finite negative number representable as a CURRENCY; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINDBL +DESCRIPTION: The largest finite negative number representable as a DOUBLE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINDEV +DESCRIPTION: The largest finite negative number useable as a FILE NUMBER; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MININT +DESCRIPTION: The largest finite negative number representable as an INTEGER; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINLNG +DESCRIPTION: The largest finite negative number representable as a LONG; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINNUM +DESCRIPTION: The largest finite negative number representable and manipulable by the implementation; implementation-defined. MINNUM may represent diffent number for different arithmetic options (see OPTION ARITHMETIC). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = MINSNG +DESCRIPTION: The largest finite negative number representable as a SINGLE; implementation-defined. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKC$( X ) + PARAMETER: X is a number, [MINCUR,MAXCUR] +DESCRIPTION: The internal representation of the currency (64-bit) integer X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [_] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKD$( X ) + PARAMETER: X is a number, [MINDBL,MAXDBL] +DESCRIPTION: The internal representation of X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = MKDIR( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Makes the directory named in A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKI$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The internal representation of the short (16-bit) integer X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKL$( X ) + PARAMETER: X is a number, [MINLNG,MAXLNG] +DESCRIPTION: The internal representation of the long (32-bit) integer X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = MKS$( X ) + PARAMETER: X is a number, [MINFLT,MAXFLT] +DESCRIPTION: The internal representation of X as a string. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = MOD( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number, <> 0 +DESCRIPTION: X modulo Y, i.e., X-Y*INT(X/Y). Y shall not equal zero. + VERSIONS: + [_] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = NAME( A$, B$ ) + PARAMETER: A$ is a string, LEN >= 1 + PARAMETER: B$ is a string, LEN >= 1 +DESCRIPTION: Rename the file named A$ into B$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = NULL( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: Appends X null characters after each line printed by LPRINT or LLIST. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = OCT$( X ) + PARAMETER: X is a number, [MININT,MAXINT] +DESCRIPTION: The the octal (base 8) representation of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = OPEN( A$, X, B$ ) + PARAMETER: A$ is a string, LEN >= 1 + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: B$ is a string, LEN >= 1 +DESCRIPTION: Open file number X. A$ is the mode: I, O, A, R. B$ is the file name. Default the record length. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = OPEN( A$, X, B$, Y ) + PARAMETER: A$ is a string, LEN >= 1 + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: B$ is a string, LEN >= 1 + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: Open file number X. A$ is the mode: I, O, A, R. B$ is the file name. Y is the record length. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ORD( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The ordinal position of the character named by the string associated with A$ in the collating sequence of ASCII character set, where the first member of the character set is in position zero. The acceptable values for the standard character set are shown in Table 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = OUT( X, Y ) + PARAMETER: X is a number, [MININT,MAXINT] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Sends Y to hardware port X. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = PEEK( X ) + PARAMETER: X is a number, [MINLNG,MAXLNG] +DESCRIPTION: The value read from hardware address X. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = PI +DESCRIPTION: The constant 3.14159 which is the ratio of the circumference of a circle to its diameter. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = POKE( X, Y ) + PARAMETER: X is a number, [MINLNG,MAXLNG] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Sends Y to hardware address X. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = POS +DESCRIPTION: The current cursor position in the line. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = POS( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: The current cursor position in the line for file X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = POS( A$, B$ ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: B$ is a string, LEN >= 0 +DESCRIPTION: The character position, within the value assocated with A$, of the first character of the first occurence of the value associated with B$, starting at the first character of A$. If there is not such occurence, then the value returned is zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = POS( A$, B$, X ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: B$ is a string, LEN >= 0 + PARAMETER: X is a number, [1,MAXLEN] +DESCRIPTION: The character position, within the value assocated with A$, of the first character of the first occurence of the value associated with B$, starting at the Xth character of A$. If there is not such occurence, then the value returned is zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = PUT( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: For file X, puts the next available record. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = PUT( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: For file X, puts record number Y. The first record number is 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RAD( X ) + PARAMETER: X is a number +DESCRIPTION: The number of radians in X degrees. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = RANDOMIZE +DESCRIPTION: Seeds the pseudo-random number generator with TIME. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RANDOMIZE( X ) + PARAMETER: X is a number +DESCRIPTION: Seeds the pseudo-random number generator with X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = REMAINDER( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number, <> 0 +DESCRIPTION: The remainder function, i.e., X-Y*IP(X/Y). Y shall not equal zero. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = REPEAT$( X, Y ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: The string consisting of X copies of CHR$(Y); X > 0. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = REPEAT$( X, A$ ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The string consisting of X copies of A$; X > 0. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RESET +DESCRIPTION: Close all open files. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = RIGHT$( A$, X ) + PARAMETER: A$ is a string, LEN >= 0 + PARAMETER: X is a number, [0,MAXLEN] +DESCRIPTION: The right-most X characters of A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RMDIR( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: Removes the directory named in A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RND +DESCRIPTION: The next pseudo-random number in an implementation-defined sequence of pseudo-random numbers uniformly distributed in the range 0 <= RND < 1. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = RND( X ) + PARAMETER: X is a number +DESCRIPTION: Returns a pseudorandom number in the range [0,1]. The value of X is ignored. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = ROUND( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: The value of X rounded to Y decimal digits to the right of the decimal point (or -Y digits to the left if Y < 0); i.e., INT(X*10^Y+.5)/10^Y. Y must be in [-32,32]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = RTRIM$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string of characters resulting from the value associated with A$ by deleting all trailing space characters. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SEC( X ) + PARAMETER: X is a number +DESCRIPTION: The secant of X, where X is in radians. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = SEEK( X ) + PARAMETER: X is a number, [1,MAXDEV] +DESCRIPTION: The location of file X; the next record that GET or PUT statements will use. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SEEK( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: For file X, move to record number Y; the first record number is 1. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SGN( X ) + PARAMETER: X is a number +DESCRIPTION: The sign of X: -1 if X < 0, 0 if X = 0, and +1 if X > 0. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SHELL( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The exit code resulting from the execution of an operating system command. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SIN( X ) + PARAMETER: X is a number +DESCRIPTION: The sine of X, where X is in radians. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SINH( X ) + PARAMETER: X is a number +DESCRIPTION: The hyperbolic sine of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = SPACE$( X ) + PARAMETER: X is a number, [0,MAXLEN] +DESCRIPTION: The string of X blank spaces. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = SPC( X ) + PARAMETER: X is a number +DESCRIPTION: The string of X blank spaces. Only for use within the PRINT command. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = SQR( X ) + PARAMETER: X is a number, >= 0 +DESCRIPTION: The non-negative square root of X; X shall be non-negative. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = STR$( X ) + PARAMETER: X is a number +DESCRIPTION: The string generated by the print-statement as the numeric-representation of the value associated with X. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = STRING$( X, A$ ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The string X bytes long consisting of the first character of A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = STRING$( X, Y ) + PARAMETER: X is a number, [0,MAXLEN] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: The string X bytes long consisting of CHR$(Y). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = TAB( X ) + PARAMETER: X is a number +DESCRIPTION: The string required to advance to column X. Only for use within the PRINT command. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TAN( X ) + PARAMETER: X is a number +DESCRIPTION: The tangent of X, where X is in radians. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TANH( X ) + PARAMETER: X is a number +DESCRIPTION: The hyperbolic tangent of X. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: N = TIME +DESCRIPTION: The time elapsed since the previous midnight, expressed in seconds; e.g., the value of TIME at 11:15 AM is 40500. If there is no clock available, then the value of TIME shall be -1. The value of TIME at midnight shall be zero (not 86400). + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = TIME$ +DESCRIPTION: The time of day in 24-hour notation according to ISO 3307. For example, the value of TIME$ at 11:15 AM is '11:15:00'. If there is no clock available, then the value of TIME$ shall be '99:99:99'. The value of TIME$ at midnight is '00:00:00'. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TIMER +DESCRIPTION: The time in the system clock in seconds elapsed since midnight. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: S$ = TRIM$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string resulting from removing both leading and trailing spaces from A$. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TROFF +DESCRIPTION: Turn tracing OFF + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TRON +DESCRIPTION: Turn tracing ON + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = TRUNCATE( X, Y ) + PARAMETER: X is a number + PARAMETER: Y is a number, [MININT,MAXINT] +DESCRIPTION: The value of X truncated to Y decimal digits to the right of the decimal point (or -Y digits to the left if Y < 0); i.e., IP(X*10^Y)/10^Y. Y in [-32,32]. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [_] BASIC-80 + [_] TRS-83 + [_] TRS-84 + [_] GW-BASIC + [X] ECMA-116 + [_] QBASIC + [_] VBDOS + [_] VB1 + [_] VB2 + [_] VB3 + [_] VB4 + [_] VB5 + [_] VB6 +------------------------------------------------------------ + SYNTAX: S$ = UCASE$( A$ ) + PARAMETER: A$ is a string, LEN >= 0 +DESCRIPTION: The string of characters resulting from the value associated with A$ by replacing each lower-case-letter in the string by its upper-case version. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = VAL( A$ ) + PARAMETER: A$ is a string, LEN >= 1 +DESCRIPTION: The value of the numeric-constant associated with A$, if the string associated with A$ is a numeric-constant. Leading and trailing spaces in the string are ignored. If the evaluation of the numeric-constant would result in a value which causes an underflow, then the value returned shall be zero. For example, VAL(' 123.5 ' ) = 123.5, VAL('2.E-99') could be zero, and VAL('MCMXVII') causes an exception. + VERSIONS: + [X] BYWATER + [X] DARTMOUTH + [X] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [X] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = WAIT( X, Y ) + PARAMETER: X is a number, [MININT,MAXINT] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: Waits for the value of (INP(X) AND Y) to become nonzero. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = WAIT( X, Y, Z ) + PARAMETER: X is a number, [MININT,MAXINT] + PARAMETER: Y is a number, [0,255] + PARAMETER: Z is a number, [0,255] +DESCRIPTION: Waits for the value of ((INP(X) XOR Z) AND Y) to become nonzero. Not supported on all platforms. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = WIDTH( X ) + PARAMETER: X is a number, [0,255] +DESCRIPTION: For console, sets the line width to X. Zero means no wrapping will occur. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ + SYNTAX: N = WIDTH( X, Y ) + PARAMETER: X is a number, [1,MAXDEV] + PARAMETER: Y is a number, [0,255] +DESCRIPTION: For file X, sets the line width to Y. Zero means no wrapping will occur. + VERSIONS: + [X] BYWATER + [_] DARTMOUTH + [_] ECMA-55 + [X] BASIC-80 + [X] TRS-83 + [X] TRS-84 + [X] GW-BASIC + [_] ECMA-116 + [X] QBASIC + [X] VBDOS + [X] VB1 + [X] VB2 + [X] VB3 + [X] VB4 + [X] VB5 + [X] VB6 +------------------------------------------------------------ - ------------------------------------------ - Function: EXP( number ) - Description: EXP returns the exponential value of 'number'. +6. PREDEFINED VARIABLES - Dependencies: (core) + BWB.EDITOR$ + BWB.FILES$ + BWB.PROMPT$ + BWB.IMPLEMENTATION$ - ------------------------------------------ + The commands EDIT and FILES are pseudo-commands that launch + shell programs named in the variables BWB.EDITOR$ and BWB.FILES$, + respectively. The default values for these variables can + be changed in bwbasic.h (DEF_EDITOR and DEF_FILES), or they + can be changed on the fly by the user. An idea might be to + initialize these variables in "profile.bas" for specific + implementations; for instance, BWB.FILES$ might be defined as + "ls -l" on Unix systems or "dir" on DOS systems. - Command: FIELD [#] device-number, number AS string-variable$ [, number AS string-variable$...] + The preset variable BWB.PROMPT$ can be used to set the prompt + string for bwBASIC. Again, it is suggested that a user- + selected prompt can be set up in a "profile.bas" to be + initialized each time bwBASIC starts. Note that special + characters can be added to the prompt string, e.g., - Description: FIELD allocates space in a random file buffer for device - indicated by device-number, allocating 'number' bytes - and assigning the bytes at this position to the variable - string-variable$. + BWB.PROMPT$ = "Ok"+CHR$(10) - Dependencies: COMMON_CMDS + will give an "Ok" prompt followed by a linefeed. - ------------------------------------------ + The preset variable BWB.IMPLEMENTATION$ will return "TTY" (IMP_IDSTRING) + for the bwx_tty implementation. In previous versions of bwBASIC, + the existance of the keywords CLS, COLOR and LOCATE were determined + at compile and BWB.IMPLEMENTATION$ was used at runtime to determine + whether these keywords existed. In the current version, + these keywords always exist and are now controlled at runtime + using the OPTION TERMINAL commands. With OPTION TERMINAL NONE + these keywords output nothing. I am considering changing the + behaviior of BWB.IMPLEMENTATION$ In future versions of bwBASIC to + return the current OPTION TERMINAL setting. + + +7. UNIMPLEMENTED COMMANDS AND FUNCTIONS, and AGENDA FOR DEVELOPMENT - Command: FILES filespec$ + There are some items not implemented that have been so long + a part of standard BASICs that their absence will seem surprising. + In each case, though, their implementation would require opera- + ting-system-specific functions or terminal-specific functions + that cannot be universally provided. Some specific examples: - Description: FILES is a pseudocommand that invokes the directory program - specified in the variable BWB.FILES$ with the argument - filespec$. Normally, the user must set this variable - before FILES can be used. E.g., for PC-type computers, - BWB.FILES$ = "DIR" + INP reads a value from a hardware port. In the current version, + using INP() will generate ERROR 73 on most platforms. It is + expected that you will provide a suitable implementation for your + specific application. For example: + FUNCTION INP( X ) + REM Return whatever value your application requires + INP = 0 + END FUNCTION + + OUT writes a value to a hardware port. In the current version, + using OUT() will generate ERROR 73 on most platforms. It is + expected that you will provide a suitable implementation for your + specific application. For example: + SUB OUT( X, Y ) + REM do something + END SUB + + PEEK reads a value from a memory location. In the current version, + using PEEK() will generate ERROR 73 on most platforms. It is + expected that you will provide a suitable implementation for your + specific application. For example: + FUNCTION PEEK( X ) + REM Return whatever value your application requires + PEEK = 0 + END FUNCTION + + POKE writes a value to a memory location. In the current version, + using POKE() will generate ERROR 73 on most platforms. It is + expected that you will provide a suitable implementation for your + specific application. For example: + SUB POKE( X, Y ) + REM do something + END SUB + + WAIT reads a value from a hardware port. In the current version, + using WAIT() will generate ERROR 73 on most platforms. It is + expected that you will provide a suitable implementation for your + specific application. For example: + SUB WAIT( X, Y ) + REM do something + END SUB + SUB WAIT( X, Y, Z ) + REM do something + END SUB - will work, for Unix machines, + DEF USR Relies on CP/M or MSDOS conventions for binary + executable files. - BWB.FILES$ = "ls -l" + USR Relies on CP/M or MSDOS conventions for binary + executable files. - etc. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: FNCS - - Description: CMDS is a debugging command that prints a list - of all pre-defined bwBASIC functions. - - Dependencies: DEBUG - - ------------------------------------------ - - Command: FUNCTION - - Description: FUNCTION introduces a function definition, normally - ending with END FUNCTION. In bwBASIC, FUNCTION and - DEF are qorking equivalents, so either can be used - with single-line function definitions or with multi- - line definitions terminated by END FUNCTION. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: FOR counter = start TO finish [STEP increment] - - Description: FOR initiates a FOR-NEXT loop with the variable - 'counter' initially set to 'start' and incrementing - in 'increment' steps (default is 1) until 'counter' - equals 'finish'. - - Dependencies: (core) - - ------------------------------------------ - - Command: GET [#] device-number [, record-number] - - Description: GET reads the next reacord from a random-access file - or device into the buffer associated with that file. - If record-number is specified, the GET command reads the - specified record. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: GOSUB line | label - - Description: GOSUB initiates a subroutine call to the line (or label) - specified. The subroutine must end with RETURN. - - Dependencies: (core), but STRUCT_CMDS for labels - - ------------------------------------------ - - Command: GOTO line | label - - Description: GOTO branches program execution to the specified line - (or label). - - Dependencies: (core), but STRUCT_CMDS for labels - - ------------------------------------------ - - Function: HEX$( number ) - - Description: HEX$ returns a string giving the hexadecimal (base 16) - value for the 'number'. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: IF expression THEN [statement [ELSE statement]] - - Description: IF evaluates 'expression' and performs the THEN - statement if it is true or (optionally) the - ELSE statement if it is FALSE. If STRUCT_CMDS - is set to TRUE, bwBASIC allows multi-line IF - statements with ELSE and ELSEIF cases, ending - with END IF. - - Dependencies: (core), STRUCT_CMDS for multi-line IF statements - - ------------------------------------------ - - Function: INKEY$ - - Description: INKEY$ reads the status of the keyboard, and a single - keypress, if available. If a keypress is not available, - then INKEY$ immediately returns a null string (""). - Currently (v2.10) implemented in bwx_iqc.c only. - - Dependencies: IMP_IQC and IMP_CMDLOC - - ------------------------------------------ - - Command: INPUT [# device-number]|[;]["prompt string";]list of variables - - Description: INPUT allows input from the terminal or a device - specified by device-number. If terminal, the "prompt - string" is output, and input is assigned to the - appropriate variables specified. - - bwBASIC does not support the optional feature of INPUT - that suppresses the carriage-return and line-feed at the end - of the input. This is because C alone does not provide for any - means of input other than CR-LF-terminated strings. - - Dependencies: (core) - - ------------------------------------------ - - Function: INSTR( [start-position,] string-searched$, string-pattern$ ) - - Description: INSTR returns the position at which string-pattern$ - occurs in string-searched$, beginning at start-position. - As implemented in bwBASIC, INSTR cannot be used for - assignments. - - Note: bwBASIC presently (v2.10) does not allow assignment - to a function. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: INT( number ) - - Description: INT returns the largest integer less than or equal to - the argument 'number'. NOTE that this is not a "truncated" - integer function, for which see CINT. - - Dependencies: (core) - - ------------------------------------------ - - Command: KILL file-name$ - - Description: KILL deletes the file specified by file-name$. - - Dependencies: UNIX_CMDS - - ------------------------------------------ - - Function: LEFT$( string$, number-of-spaces ) - - Description: LEFT$ returns a substring a string$ with number-of-spaces - from the left (beginning) of the string). As implemented - under bwBASIC, it cannot be used for assignment. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: LEN( string$ ) - - Description: LEN returns the length in bytes of string$. - - Dependencies: COMMON_FUNCS - - ------------------------------------------ - - Command: LET variable = expression - - Description: LET assigns the value of 'expression' to the variable. - As currently implemented, bwBASIC supports implied LET - statements (e.g., "X = 4.5678" at the beginning of - a line or line segment, but does not support assignment - to multiple variables (e.g., "x, y, z = 3.141596"). - - Dependencies: (core) - - ------------------------------------------ - - Command: LINE INPUT [[#] device-number,]["prompt string";] string-variable$ - - Description: LINE INPUT reads entire line from the keyboard or a file - or device into string-variable$. If input is from the - keyboard (stdin), then "prompt string" will be printed - first. Unlike INPUT, LINE INPUT reads a whole line, - not stopping for comma-delimited data items. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: LIST line[-line] - - Description: LIST lists program lines as specified in its argument. - - Dependencies: INTERACTIVE - - ------------------------------------------ - - Command: LOAD file-name - - Description: LOAD loads an ASCII BASIC program into memory. - - Dependencies: INTERACTIVE - - ------------------------------------------ - - Function: LOC( device-number ) - - Description: LOC returns the next record that GET or PUT statements - will use. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: LOCATE line, column - - Description: LOCATE addresses trhe curor to a specified line and - column. Currently (v2.10) implemented in bwx_iqc.c only. - - Dependencies: IMP_IQC and IMP_CMDLOC - - ------------------------------------------ - - Function: LOF( device-number ) - - Description: LOF returns the length of a file (specified by device-number) - in bytes. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: LOG( number ) - - Description: LOG returns the natural logarithm of the argument 'number'. - - Dependencies: (core) - - ------------------------------------------ - - Command: LOOP [UNTIL expression] - - Description: LOOP terminates a program loop: see DO. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: LSET string-variable$ = expression - - Description: LSET transfers data from 'expression' to the left-hand - side of a string variable or random access buffer field. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: MERGE file-name - - Description: MERGE adds program lines from 'file-name' to the program - in memory. Unlike LOAD, it does not clear the program - currently in memory. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Function: MID$( string$, start-position-in-string[, number-of-spaces ] ) - - Description: MID$ returns a substring of string$ beginning at - start-position-in-string and continuing for - number-of-spaces bytes. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: MKDIR pathname$ - - Description: MKDIR creates a new directory path as specified by - pathname$. - - Dependencies: UNIX_CMDS - - ------------------------------------------ - - Function: MKD$( number ) - - Description: MKD$, MKI$, and MKS$ are all equivalent in bwBASIC. - They convert the numerical value 'number' into a string - which can be stored in a more compressed form in a file - (especially for random file access). Since bwBASIC does - not recognize differences in precision, these commands - are effectively equivalent. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: MKI$( number ) - - Description: Equivalent to MKD$ (q.v.) - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: MKS$( number ) - - Description: Equivalent to MKD$ (q.v.). - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: NAME old-file-name AS new-file-name - - Description: NAME renames an existing file (old-file-name) as - new-file-name. - - Dependencies: UNIX_CMDS - - ------------------------------------------ - - Command: NEW - - Description: NEW deletes the program in memory and clears all - variables. - - Dependencies: INTERACTIVE - - ------------------------------------------ - - Command: NEXT [counter-variable] - - Description: NEXT comes at the end of a FOR-NEXT loop; see FOR. - - Dependencies: (core) - - ------------------------------------------ - - Function: OCT$( number ) - - Description: OCT$ returns a string giving the octal (base 8) - representation of 'number'. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: ON variable GOTO|GOSUB line[,line,line,...] - - Description: ON either branches (GOTO) or calls a subroutine - (GOSUB) based on the rounded value of variable; - if it is 1, the first line is called, if 2, the second - line is called, etc. - - Dependencies: (core) - - ------------------------------------------ - - Command: ON ERROR GOSUB line|label - - Description: ON ERROR sets up an error handling subroutine. See - also ERROR. - - Dependencies: COMMON_CMDS, STRUCT_CMDS for labels - - ------------------------------------------ - - Command: OPEN "O"|"I"|"R", [#]device-number, file-name [,record length] - file-name FOR INPUT|OUTPUT|APPEND AS [#]device-number [LEN = record-length] - - Description: OPEN allocates random access memory for access to a disk - file or other device. Note that two quite different forms - of the OPEN statement are supported. In the first form, - "O" (note that these letters must be encased in quotation - marks) denotes sequential output, "I" denotes sequential - input, and "R" denotes random-access input and output. - Once OPEN, any number of operations can be performed - on a device (see WRITE #, INPUT #, PRINT #, etc.). - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: OPTION BASE number - - Description: OPTION BASE sets the lowest value for array subscripts, - either 0 or 1. - - Dependencies: (core) - - ------------------------------------------ - - Function: POS - - Description: POS returns the current cursor position in the line. - - Dependencies: COMMON_FUNCS - - ------------------------------------------ - - Command: PRINT [# device-number,][USING format-string$;] expressions... - - Description: PRINT outputs text to the screen or to a file or device - specified by device-number. In the current implementation - of bwBASIC, expressions to be printed must be separated by - the comma (tabbed output), the semicolon (immediate - sequential output) or the plus sign (immediate sequential - output by string concatenation). Expressions separated - by blanks or tabs are not supported. If USING is specified, - a number of formatting marks may appear in the format - string: - - ! prints the first character of a string - - \\ prints 2+x characters of a string, where x = - the number of spaces between the backslashes - - & variable-length string field - - # represents a single digit in output format for - a number - - . decimal point in a number - - + sign of a number (will output + or -) - - - trailing minus after a number - - ** fill leading spaces with asterisks - - $$ output dollar sign in front of a number - - ^^ output number in exponential format - - _ output next character literally - - As currently implemented, the exponential format - will be that used by the C compiler. - - Dependencies: (core), COMMON_FUNCS for USING - - ------------------------------------------ - - Command: PUT [#] device-number [, record-number] - - Description: PUT outputs the next available record or the record - specified by record-number to the file or device - denoted by device-number. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: QUIT - - Description: QUIT is a synonym for SYSTEM; with INTERACTIVE - environment, it exits the program to the - operating system (or the calling program). - - Dependencies: INTERACTIVE - - ------------------------------------------ - - Command: RANDOMIZE number - - Description: RANDOMIZE seeds the random number generator (see RND). - Under bwBASIC, the TIMER function (q.v.) can be used - to supply a 'number' seed for the random number - generator. - - Dependencies: (core) - - ------------------------------------------ - - Command: READ variable[, variable]... - - Description: READ reads values from DATA statements and assigns these - values to the named variables. Variable types in a READ - statement must match the data types in DATA statements - as they are occurred. See also DATA and RESTORE. - - Dependencies: (core) - - ------------------------------------------ - - Command: REM string - - Description: REM allows remarks to be included in a program. As - currently implemented, the entire line following - REM is ignored by the interpreter (thus, even if - MULTISEG_LINES is set, a REM line will not be able - to find a segment delimiter (":") followed by another - line segment with command. bwBASIC does not currently - implement the Microsoft-style use of the single quotation - mark to denote remarks. - - Dependencies: (core) - - ------------------------------------------ - - Command: RESTORE line - - Description: RESTORE resets the line and position counters for DATA - and READ statements to the top of the program file or - to the beginning of the specified line. (Currently this - must be a line number.) - - Dependencies: (core) - - ------------------------------------------ - - Command: RETURN - - Description: RETURN concludes a subroutine called by GOSUB. - - Dependencies: (core) - - ------------------------------------------ - - Function: RIGHT$( string$, number-of-spaces ) - - Description: RIGHT$ returns a substring a string$ with number-of-spaces - from the right (end) of the string). As implemented - under bwBASIC, it cannot be used for assignment. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: RMDIR pathname - - Description: RMDIR deletes the directory path indicated by pathname. - - Dependencies: UNIX_CMDS - - ------------------------------------------ - - Function: RND( number ) - - Description: RND returns a pseudo-random number. The 'number' value - is ignored by bwBASIC if supplied. The RANDOMIZE - command (q.v.) reseeds the random-number generator. - - Dependencies: (core) - - ------------------------------------------ - - Command: RSET string-variable$ = expression - - Description: RSET transfers data from 'expression' to the right-hand - side of a string variable or random access buffer field. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: RUN [line][file-name$] - - Description: RUN executes the program in memory. If a file-name$ is - supplied, then the specified file is loaded into memory - and executed. If a line number is supplied, then execution - begins at that line. - - Dependencies: INTERACTIVE - - ------------------------------------------ - - Command: SAVE file-name$ - - Description: SAVE saves the program in memory to file-name$. bwBASIC - only saves files in ASCII format. - - Dependencies: INTERACTIVE - - ------------------------------------------ - - Command: SELECT CASE expression - - Description: SELECT CASE introduces a multi-line conditional selection - statement. The expression given as the argument to SELECT - CASE will be evaluated by CASE statements following. The - SELECT CASE statement conclludes with an END SELECT - statement. - - As currently implemented, CASE statements may be followed - by string values, but in this case only simple comparisons - (equals, not equals) can be performed. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Function: SGN( number ) - - Description: SGN returns the sign of the argument 'number', +1 - for positive numbers, 0 for 0, and -1 for negative numbers. - - Dependencies: (core) - - ------------------------------------------ - - Function: SIN( number ) - - Description: SIN returns the sine of the argument 'number' - in radians. - - Dependencies: (core) - - ------------------------------------------ - - Function: SPACE$( number ) - - Description: SPACE$ returns a string of blank spaces 'number' - bytes long. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: SPC( number ) - - Description: SPC returns a string of blank spaces 'number' - bytes long. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Function: SQR( number ) - - Description: SQR returns the square root of the argument 'number'. - - Dependencies: (core) - - ------------------------------------------ - - Command: STOP - - Description: STOP interrupts program execution. As implemented under - bwBASIC, STOP issues a SIGINT signal. - - Dependencies: (core) - - ------------------------------------------ - - Function: STR$( number ) - - Description: STR$ returns a string giving the decimal (base 10) - representation of the argument 'number'. - - Dependencies: COMMON_FUNCS - - ------------------------------------------ - - Function: STRING$( number, ascii-value|string$ ) - - Description: STRING$ returns a string 'number' bytes long consisting - of either the first character of string$ or the character - answering to the ASCII value ascii-value. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: SUB subroutine-name - - Description: SUB introduces a named, multi-line subroutine. The - subroutine is called by a CALL statement, and concludes - with an END SUB statement. - - Dependencies: STRUCT_CMDS - - ------------------------------------------ - - Command: SWAP variable, variable - - Description: SWAP swaps the values of two variables. The two variables - must be of the same type (either numerical or string). - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: SYSTEM - - Description: SYSTEM exits from bwBASIC to the calling program or - (more usually) the operating system. - - Dependencies: INTERACTIVE - - ------------------------------------------ - - Function: TAB( number ) - - Description: TAB outputs spaces until the column indicated by - 'number' has been reached. - - Dependencies: (core) - - ------------------------------------------ - - Function: TAN( number ) - - Description: TAN returns the tangent of the argument 'number' - in radians. - - Dependencies: (core) - - ------------------------------------------ - - Function: TIME$ - - Description: TIME$ returns the current time based on the computer's - internal clock as a string in the form "HH-MM-SS". - As implemented under bwBASIC, TIME$ cannot be used for - assignment (i.e., to set the system time). - - Note: bwBASIC presently (v2.10) does not allow assignment - to a function. - - Dependencies: COMMON_FUNCS - - ------------------------------------------ - - Function: TIMER - - Description: TIMER returns the time in the system clock in seconds - elapsed since midnight. - - Dependencies: MS_FUNCS - - ------------------------------------------ - - Command: TROFF - - Description: TROFF turns of the trace facility; see TRON. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: TRON - - Description: TRON turns on the trace facility. This facility will print - each line number in square brackets as the program is - executed. This is useful in debugging programs with - line numbers. To debug an unnumbered program with - TRON, call DO NUM first, but remember to call DO UNNUM - before you save the program later. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Function: VAL( string$ ) - - Description: VAL returns the numerical value of the string$. - - Dependencies: COMMON_FUNCS - - ------------------------------------------ - - Command: VARS - - Description: VARS is a debugging command which prints a list of - all variables defined which have global scope. - - Dependencies: DEBUG - - ------------------------------------------ - - Command: WEND - - Description: WEND concludes a WHILE-WEND loop; see WHILE. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: WHILE expression - - Description: WHILE initiates a WHILE-WEND loop. The loop ends with - WEND, and execution reiterates through the loop as - long as the 'expression' is TRUE (-1). - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: WIDTH [# device-number,] number - - Description: WIDTH sets screen or device output to 'number' - columns. device-number specifies the device - or file for oputput. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - Command: WRITE [# device-number,] element [, element ].... - - Description: WRITE outputs variables to the screen or to a file - or device specified by device-number. Commas - are inserted between expressions output, and strings - are enclosed in quotation marks. - - Dependencies: COMMON_CMDS - - ------------------------------------------ - - -6. PREDEFINED VARIABLES - - BWB.EDITOR$ - BWB.FILES$ - BWB.PROMPT$ - BWB.IMPLEMENTATION$ - - The commands EDIT and FILES are pseudo-commands that launch - shell programs named in the variables BWB.EDITOR$ and BWB.FILES$, - respectively. The default values for these variables can - be changed in bwbasic.h (DEF_EDITOR and DEF_FILES), or they - can be changed on the fly by the user. An idea might be to - initialize these variables in "profile.bas" for specific - implementations; for instance, BWB.FILES$ might be defined as - "ls -l" on Unix systems or "dir" on DOS systems. - - The preset variable BWB.PROMPT$ can be used to set the prompt - string for bwBASIC. Again, it is suggested that a user- - selected promptcan be set up in a "profile.bas" to be - initialized each time bwBASIC starts. Note that special - characters can be added to the prompt string, e.g., - - BWB.PROMPT$ = "Ok"+CHR$(10) - - will give an "Ok" prompt followed by a linefeed. - - The preset variable BWB.IMPLEMENTATION$ will return "TTY" for - the bwx_tty implementation and will return "IQC" for the - IBM PC or Compatibles with QuickC (bwx_iqc) implementation. - This may be useful in determing which commands and functions - (specifically CLS, LOCATE, and INKEY$) may be available. - - -7. UNIMPLEMENTED COMMANDS AND FUNCTIONS, and AGENDA FOR DEVELOPMENT - - There are some items not implemented that have been so long - a part of standard BASICs that their absence will seem surprising. - In each case, though, their implementation would require opera- - ting-system-specific functions or terminal-specific functions - that cannot be universally provided. Some specific examples: - - CLOAD Relies on CP/M or MSDOS conventions for binary - executable files. - - CONT See RESUME below (programmer ignorance?). - - DEF USR Relies on CP/M or MSDOS conventions for binary - executable files. - - FRE() The ability to report the amount of free memory - remaining is system-specific due to varying patterns - of memory allocation and access; consequently this - ability is not present in ANSI or earlier versions - of C and this function is not available in bwBASIC. - - INPUT$() C by itself is not able to read unechoed keyboard - input, and can read keyboard input only after a - Carriage-Return has been entered. - - INP Calls to hardware ports, like machine-language - routines, are highly system-specific and cannot - be implemented in C alone. - - LLIST See LPRINT below. - - LPOS See LPRINT below. - - LPRINT and LLIST, etc., require access to a printer device, - and this varies from one system to another. Users - might try OPENing the printer device on their own - operating system (e.g., "/dev/lp" on Unix systems, - or "PRN" under DOS) and see if printing can be done - from bwBASIC in this way. - - NULL In this case, I am convinced that NULL is no longer - necessary, since very few printers now require NULLs - at the end of lines. - - OUT See INP above (calls to hardware ports). - - PEEK() PEEK and POKE enabled earlier BASICs to address - particular memory locations. Although bwBASIC - could possibly implement this command (POKE) and - this function (PEEK()), the limitation would be - highly limited by the different systems for - memory access in different systems. - - POKE see PEEK() above. - - RENUM Since unnumbered lines can be entered and - executed under bwBASIC, it would not be - possible to implement a RENUM routine. - Instead, bwBASIC uses DO NUM and DO UNNUM. - - RESUME Is this possible under C? If so, I - simply have failed to figure it out yet. - Mea culpa (but not maxima). - - USR See CALL and DEF USR above (machine language - subroutines). - - VARPTR See PEEK and POKE above. - - WAIT See INP and OUT above. + VARPTR Relies on CP/M or MSDOS conventions for binary + executable files. There are other commands, functions, and implementation details that I am working on, and which are on the agenda list for future versions of bwBASIC. These agenda include: - + PARACT i.e., the ability to execute PARallel ACTions. This is described in ANSI BASIC, although I have not seen it implemented before. It will offer a rough, non- preemptive form of multitasking within the scope of a BASIC program. Programmers will note points at which there are already hooks for PARACT in bwBASIC. + In the interim, you might use the "ON TIMER" command to + implement a simple multitasking BASIC program. XMEM PC-type computers need to be able to use extended memory. If we could use extended memory for program @@ -1758,7 +7085,10 @@ CONTENTS: write much longer programs. This would entail, however, a fairly serious rewriting of the program to utilize memory handles for these storage features - instead of direct memory pointers. + instead of direct memory pointers. In the interim, + you might use a "DOS Extender" which hooks calloc() + and free() to enable transparent access to EMS or XMS + memory. Windows The addition of memory handles in addition to the non-preemptive execution of program lines (in a @@ -1769,15 +7099,17 @@ CONTENTS: that would run in the background, appearing only as an icon in the GUI space, with pop-up editors and output windows. Thus, the interpreted language - would serve a purpose something like 'cron' (a task - scheduler) under Unix systems. You may have some - reflections that would help me in this. + would serve a purpose something like 'cron' (a task + scheduler) under Unix systems. You may have some + reflections that would help me in this. - Graphics Here we face fairly critical differences in different + Graphics Here we face fairly critical differences in different styles and implementations of graphics, e.g., between GWBASIC, ANSI BASIC, VisualBASIC, etc. But it's possible that Graphics commands and functions could - be added. These would all be implementation-specific. + be added. These would all be OPTION VERSION specific. + In the interim, you might consider using ReGIS or Tektronix + ESC codes with xterm. The ANSI Standard for full BASIC does not specify which particular commands or functions must be implemented, and in fact the standard @@ -1786,24 +7118,18 @@ CONTENTS: remain unimplemented are: ACCESS - ANGLE (angle of the vector (X,Y) with the X axis in anticlockwise sense in ECMA-116) AREA - ARITHMETIC ARRAY ASK BSTR BVAL - CEIL smallest integer >=X CELLS CLIP COLLATE CONNECT - ! COSH DATUM DEBUG - DECIMAL DECLARE - DEGREES DEVICE DISCONNECT DISPLAY @@ -1816,10 +7142,8 @@ CONTENTS: HANDLER IMAGE KEY - LCASE + LBOUND LINES - ! LOG10 - ! LOG2 MAT MIX MULTIPOINT @@ -1830,7 +7154,6 @@ CONTENTS: PIXEL PLOT POINTS - RADIANS RECEIVE RENUMBER REWRITE @@ -1839,14 +7162,10 @@ CONTENTS: SEIZE SEND SHIFT - ! SINH - ! TANH TIMEOUT TRACE TRANSFORM - TRUNCATE UBOUND - UCASE VIEWPORT WAIT VIEWPORT diff --git a/bwbasic.h b/bwbasic.h index 40269e7..b96f282 100644 --- a/bwbasic.h +++ b/bwbasic.h @@ -1,1497 +1,2082 @@ /*************************************************************** - + bwbasic.h Header File for Bywater BASIC Interpreter - + Copyright (c) 1993, Ted A. Campbell Bywater Software - + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ /* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ /* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + #ifndef TRUE #define TRUE -1 +#endif +#ifndef FALSE #define FALSE 0 #endif -/*************************************************************** - bwbasic.h Part I: Definitions +/*************************************************************** + + bwbasic.h Part I: Definitions + ***************************************************************/ -/* Version number */ +/*************************************************************** + + bwbasic.h: Part I-A: Define Major Hardware Implementation + + Gone is the simplicity of earlier versions. + + TTY is the default implementation. + It is the most minimal, but the most + universal hardware implementation. + + If you use TTY then check the settings + in bwx_tty.c for your system. + + +***************************************************************/ -#define VERSION "2.61" /* Current version number */ -/*************************************************************** - bwbasic.h: Part I-A: Define Major Hardware Implementation +/* +** +** +** Here is where you should +** #include implementation-specific files +** and #define your preferences +** +** +*/ - Gone is the simplicity of earlier versions. - You must specify one and only one of the - following hardware implementations as TRUE. - IMP_TTY is the default implementation. - It is the most minimal, but the most - universal hardware implementation. - If you pick IMP_TTY then check the settings - in bwx_tty.h for your system. -***************************************************************/ +#if HAVE_ISNAN -#define IMP_TTY TRUE /* simple TTY-style interface using stdio */ -#define IMP_IQC FALSE /* IBM PC, Microsoft QuickC Compiler */ -#define IMP_NCU FALSE /* Linux, ncurses */ -#define ALLOW_RENUM TRUE /* Added by JBV */ - -/* Make function names 8-character unique for systems like MVS */ -#define var_findnval vf_nval -#define var_findsval vf_sval -#define fnc_timer f_timer -#define bwb_elseif b_elseif -#define bwb_caseif b_caseif -#define find_endif f_endif -#define find_endselect f_endselect -#define find_endsub f_endsub -#define fslt_findl fsf_l -#define fslt_findf fsf_f -#define bwb_loopuntil bl_until -#define bwb_exitfor bexfor -#define bwb_exitdo bexdo -#define bwb_endselect be_select -#define bwb_endsub be_endsub -#define fslt_addcallvar fa_callvar -#define fslt_addlocalvar fa_localvar -#define CALLOC calloc2 -#define FREE free2 - -#if IMP_TTY -#include "bwx_tty.h" -#endif +/* +If I understand correctly, +my development environment is: + +GCC 4.8 for Linux +via CCTools for Android +in a BusyBox environment +under a Java simulation +of an ARM processor +on a Barnes & Noble +$69 Nook Tablet. -#if IMP_IQC -#include "bwx_iqc.h" -#endif +What could possibly go wrong? -#if IMP_NCU -#include "bwx_ncu.h" +When you finish laughing, +it actually works well. + +I compile with: +gcc -DHAVE_ISNAN -ansi -o bwbasic bw*.c + +If you are using a Unix derivative, +then you may want to do something +similar to the following. +*/ + +#include +#include +#define DIRECTORY_CMDS TRUE +#define MKDIR_ONE_ARG FALSE +#define PERMISSIONS 0x0777 +#define DEF_EDITOR "nano" +#endif /* HAVE_ISNAN */ + +#if __CMS__ +/* GCC 3 for CMS on Hercules */ +#include "bwd_six.h" +#define PROFILENAME "PROFILE BAS" +#define DEBUGFILENAME "DEBUG OUT" +#define LPRINTFILENAME "LPRINT OUT" +#define ERRFILE "ERROR OUT" +#define EXPONENT_DIGITS 4 /* E-9999 to E+9999 */ +#define PROMPT "bwBASIC:\n" +#define DIRECTORY_CMDS FALSE +#define HAVE_ISNAN FALSE +#endif /* __CMS__ */ + +#if __MVS__ +/* GCC 3 for MVS on Hercules */ +#include "bwd_six.h" +#define PROFILENAME "dd:profile" +#define DEBUGFILENAME "dd:debug" +#define LPRINTFILENAME "dd:lprint" +#define ERRFILE "dd:errout" +#define EXPONENT_DIGITS 4 /* E-9999 to E+9999 */ +#define PROMPT "bwBASIC:\n" +#define DIRECTORY_CMDS FALSE +#define HAVE_ISNAN FALSE +#endif /* __MVS__ */ + +#if __GNUC__ +/* __FUNCTION__ is the current function name */ +#else +#define __FUNCTION__ "n/a" #endif -/*************************************************************** - bwbasic.h: Part I-B: Define Compiler Implementation - You also need to give some information about - your C compiler. If your compiler is ANSI- - compatible, don't worry about these. But - if your compiler is "stock," you might - want to indicate which of the following - sets of features it has or dosn't have. + +/*************************************************************** + + bwbasic.h: This ends the section of definitions that + users of bwBASIC will normally need to + specify. The following are internally defined. + + Note that you may need to #define the default + FILES command and the default EDITOR above. + ***************************************************************/ -#ifdef __STDC__ -#define HAVE_RAISE TRUE -#define HAVE_STRING TRUE -#define HAVE_STDLIB TRUE -#endif -#ifdef __STDC__ -#define HAVE_SIGNAL TRUE -#else -#define HAVE_SIGNAL TRUE /* Compiler supports signal() */ -#endif -#ifdef __STDC__ -#define HAVE_LONGJUMP TRUE -#else -#define HAVE_LONGJUMP TRUE /* Compiler supports setjmp() and longjmp() */ +/* +** +** +** If you want to change any of these values, +** then you should #define them above. +** +** +*/ + +#ifndef DEBUG_BUILD +/* MAINTAINER */ +#define DEBUG_BUILD FALSE /* only TRUE for DEBUG versions */ #endif - -/* configure sets this */ -#ifndef HAVE_RAISE -#define HAVE_RAISE FALSE /* Compiler supports raise() */ +#ifndef HAVE_ISNAN +#define HAVE_ISNAN FALSE /* isnan() exists when compiling with -ansi */ #endif - -/* configure sets this */ -#ifndef HAVE_STRING -#define HAVE_STRING FALSE /* Compiler has header */ +#ifndef PROFILE +#define PROFILE TRUE /* interpret profile at beginning */ +#endif +#ifndef PROFILENAME +/* only used when PROFILE == TRUE */ +#define PROFILENAME "profile.bas" /* Filename for profile execution */ +#endif +#ifndef REDIRECT_STDERR +#define REDIRECT_STDERR FALSE /* Redirect stderr to file ERRFILE */ +#endif +#ifndef ERRFILE +/* only used when REDIRECT_STDERR == TRUE */ +#define ERRFILE "err.out" /* Filename for redirected stderr */ +#endif +#ifndef DEBUGFILENAME +/* MAINTAINER */ +#define DEBUGFILENAME "DEBUG.OUT" /* Filename for DEBUG output */ +#endif +#ifndef LPRINTFILENAME +/* LPRINT */ +#define LPRINTFILENAME "LPRINT.OUT" /* Filename for LPRINT output */ +#endif +#ifndef DIRECTORY_CMDS +/* MKDIR, CHDIR, RMDIR */ +#define DIRECTORY_CMDS TRUE /* It better be for UNIX systems (JBV) */ #endif - -/* configure sets this */ -#ifndef HAVE_STDLIB -#define HAVE_STDLIB FALSE /* Compiler has header */ +#ifndef MKDIR_ONE_ARG +/* only used when DIRECTORY_CMDS == TRUE */ +#define MKDIR_ONE_ARG FALSE /* TRUE if your mkdir has one argument */ #endif - -/* configure sets this (section added by JBV) */ -#ifndef HAVE_UNISTD -#define HAVE_UNISTD FALSE /* Compiler has header */ +#ifndef PERMISSIONS +/* only used when MKDIR_ONE_ARG == FALSE */ +#define PERMISSIONS 644 /* permissions to set in Unix-type system */ #endif - -#ifdef __STDC__ -#define HAVE_SYSTYPES FALSE -#else -#define HAVE_SYSTYPES TRUE /* Compiler has header */ +#ifndef DEFVNAME_PROMPT +#define DEFVNAME_PROMPT "BWB.PROMPT$" /* variable name for PROMPT */ #endif - -#ifdef __STDC__ -#define HAVE_SYSSTAT FALSE -#else -#define HAVE_SYSSTAT TRUE /* Compiler has header */ +#ifndef PROMPT +#define PROMPT "bwBASIC: " /* default value for PROMPT */ #endif - -#ifndef HAVE_MATHERR -#define HAVE_MATHERR FALSE /* Compiler doesn't call matherr */ +#ifndef DEFVNAME_EDITOR +#define DEFVNAME_EDITOR "BWB.EDITOR$" /* variable name for EDITOR */ +#endif +#ifndef DEF_EDITOR +#define DEF_EDITOR "vi" /* default value for EDITOR */ +#endif +#ifndef DEFVNAME_FILES +#define DEFVNAME_FILES "BWB.FILES$" /* variable name for FILES */ +#endif +#ifndef DEF_FILES +#define DEF_FILES "ls -Fx"/* default value for FILES */ +#endif +#ifndef DEFVNAME_COLORS +#define DEFVNAME_COLORS "BWB.COLORS" /* variable name for COLORS */ +#endif +#ifndef DEF_COLORS +#define DEF_COLORS 256 /* default value for COLORS */ +#endif +#ifndef DEFVNAME_IMPL +#define DEFVNAME_IMPL "BWB.IMPLEMENTATION$" /* variable name for IMPLEMENTATION */ +#endif +#ifndef IMP_IDSTRING +#define IMP_IDSTRING "TTY" /* default value for IMPLEMENTATION */ +#endif +#ifndef EXECLEVELS +#define EXECLEVELS 255 /* maximum EXEC stack levels */ +#endif +#ifndef MAX_DIMS +#define MAX_DIMS 3 /* maximum # of dimensions */ +#endif +#ifndef ESTACKSIZE +#define ESTACKSIZE 64 /* elements in expression stack */ +#endif +#ifndef BROKEN_STRCPY +#define BROKEN_STRCPY TRUE /* only set this true if your C library's strcpy() is broken */ #endif -/*************************************************************** - - bwbasic.h: Part I-C: Define Program Configuration +#if 0 +/* these are no longer used in version 3.00 */ +#define IMP_FNCINKEY 0 /* 0 if INKEY$ is not implemented, 1 if it is */ +#define IMP_CMDCLS 0 /* 0 if CLS is not implemented, 1 if it is */ +#define IMP_CMDLOC 0 /* 0 if LOCATE is not implemented, 1 if it is */ +#define IMP_CMDCOLOR 0 /* 0 if COLOR is not implemented, 1 if it is */ +#endif - You must specify one and only one of the - following progrm configurations as TRUE. - If you specify CFG_CUSTOM, then you will - need to fill out the custom section below. -***************************************************************/ +/* +** +** +** UNLESS YOU ARE WORKING ON THE INTERNALS, YOU PROBABLY SHOULD NOT GO BEYOND HERE +** +** +*/ -#define CFG_ANSIMINIMAL FALSE /* Conforms to ANSI Minimal BASIC standard X3.60-1978 */ -#define CFG_COMMON FALSE /* Small implementation with commands and functions common to GWBASIC (tm) and ANSI full BASIC */ -#define CFG_MSTYPE FALSE /* Configuration similar to Microsoft line-oriented BASICs */ -#define CFG_ANSIFULL FALSE /* Conforms to ANSI Full BASIC standard X3.113-1987 */ -#define CFG_CUSTOM TRUE /* Custom Configuration specified below */ -/*************************************************************** - bwbasic.h: Part I-D: Define Custom Program Configuration +#define VERSION "3.00" /* Current version number */ - If you specified CFG_CUSTOM above, then - you will need to fill out this section. -***************************************************************/ -#if CFG_CUSTOM -#define COMMAND_SHELL TRUE /* allow command shell processing */ -#define PROFILE TRUE /* interpret profile at beginning */ -#define NUMBER_DOUBLE TRUE /* define BASIC number as double: default is float*/ -#define MULTISEG_LINES TRUE /* allow multi-segment lines delimited by ':' */ -#define PARACT FALSE /* Implement PARallen ACTion (Multi-tasking) interpreter */ -#define INTERACTIVE TRUE /* interactive programming environment and related commands */ -#define COMMON_CMDS TRUE /* commands common to ANSI full BASIC and GWBASIC */ -#if UNIX_CMDS -#define UNIX_CMDS TRUE /* implement Unix-style directory commands */ +#ifndef AUTOMATED_REGRESSION +/* for automated testing */ +#define AUTOMATED_REGRESSION FALSE #endif -#define STRUCT_CMDS TRUE /* commands for structured programming required by full ANSI BASIC */ -#define MS_CMDS TRUE /* commands specific to Microsoft GWBASIC (tm) */ -#define MS_FUNCS TRUE /* Microsoft-specific functions and commands */ -#define COMMON_FUNCS TRUE /* functions common to GWBASIC and ANSI full BASIC */ -#define ANSI_FUNCS TRUE /* functions required by ANSI full BASIC */ -#endif /* end of CFG_CUSTOM */ -/*************************************************************** - bwbasic.h: Part I-E: Define Natural Language for Messages - One and only one of the following must be - defined as TRUE. Note that the language - definitions themselves are in file bwb_mes.h. - If none is specified, then ENGLISH will be - taken as the default. +/* +The relationship of numeric values is REQUIRED to be: + + MAXNUM >= MAXDBL >= MAXSNG >= MAXCUR >= MAXLNG >= MAXINT >= MAXLEN >= MAXBYT >= MAXDEV > 0 + MINNUM <= MINDBL <= MINSNG <= MINCUR <= MINLNG <= MININT < 0 + MINLEN == MINBYT == MINDEV == 0 + + MAXBYT == 255 + MAXINT >= 32000 + MININT <= -32000 + MAXSNG >= 1E37 + MINSNG <= -1E37 + +*/ -***************************************************************/ -#define STD_ENGLISH TRUE /* standard English */ -#define POL_ENGLISH FALSE /* polite English messages */ -#define IMP_ENGLISH FALSE /* impolite English messages */ -#define LATIN FALSE /* Latin language messages */ -#define STD_RUSSIAN FALSE /* Russian language messages */ -#define STD_GERMAN FALSE /* German language messages */ -#define ESPERANTO FALSE /* Esperanto messages */ -/*************************************************************** +/* BASIC NUMBER [MINNUM,MAXNUM] */ +#ifndef BasicNumberSuffix +#define BasicNumberSuffix '\0' /* N//A */ +#endif +typedef double BasicNumberType; +#ifndef BasicNumberScanFormat +#define BasicNumberScanFormat "%lf" +#endif +#ifndef BasicNumberPrintFormat +#define BasicNumberPrintFormat "%f" +#endif +#ifndef SIGNIFICANT_DIGITS +#define SIGNIFICANT_DIGITS 6 /* Number of significant digits, minimum is 6 */ +#endif +#ifndef EXPONENT_DIGITS +#define EXPONENT_DIGITS 3 /* Number of exrad digits , minimum is 2 */ +#endif - bwbasic.h: Part I-F: Define Debugging Options - You can specify debugging options here. - Defining DEBUG true provides some useful commands: - CMDS, VARS, FNCS +/* BASIC DOUBLE [MINDBL,MAXDBL] */ +#ifndef BasicDoubleSuffix +#define BasicDoubleSuffix '#' +#endif +typedef double BasicDoubleType; -***************************************************************/ -#define DEBUG FALSE /* current debugging */ -#define PROG_ERRORS TRUE /* identify serious programming errors */ - /* and print extensive error messages */ - /* This will override messages defined in */ - /* bwb_mes.h, and almost all messages will be in English */ -#define CHECK_RECURSION FALSE /* check for recursion violation in expression parser */ -#define INTENSIVE_DEBUG FALSE /* old debugging; might be useful later */ -#define REDIRECT_STDERR FALSE /* Redirect stderr to file ERRFILE */ -#define TEST_BSTRING FALSE /* test bstring integrity */ - -#ifdef __STDC__ -#define ANSI_C TRUE /* FALSE to test and debug non-ANSI-C version - with ANSI C compiler (watch out) */ + +/* BASIC SINGLE [MINSNG,MAXSNG] */ +#ifndef BasicSingleSuffix +#define BasicSingleSuffix '!' #endif +typedef float BasicSingleType; -/*************************************************************** - bwbasic.h: This ends the section of definitions that - users of bwBASIC will normally need to - specify. The following are internally defined. - Note that you may need to set up the default - FILES command and the default editor below. - See Part I-G +/* BASIC CURRENCY [MINCUR,MAXCUR] */ +#ifndef BasicCurrencySuffix +#define BasicCurrencySuffix '@' +#endif +typedef long int BasicCurrencyType; -***************************************************************/ -#if CFG_ANSIMINIMAL -#define COMMAND_SHELL FALSE /* allow command shell processing */ -#define PROFILE FALSE /* interpret profile at beginning */ -#define NUMBER_DOUBLE FALSE /* define BASIC number as double: default is float*/ -#define MULTISEG_LINES FALSE /* allow multi-segment lines delimited by ':' */ -#define PARACT FALSE /* Implement PARallen ACTion (Multi-tasking) interpreter */ -#define INTERACTIVE TRUE /* interactive programming environment and related commands */ -#define COMMON_CMDS FALSE /* commands common to ANSI full BASIC and GWBASIC */ -#if UNIX_CMDS -#define UNIX_CMDS FALSE /* implement Unix-style directory commands */ -#endif -#define STRUCT_CMDS FALSE /* commands for structured programming required by full ANSI BASIC */ -#define MS_CMDS FALSE /* commands specific to Microsoft GWBASIC (tm) */ -#define MS_FUNCS FALSE /* Microsoft-specific functions and commands */ -#define COMMON_FUNCS FALSE /* functions common to GWBASIC and ANSI full BASIC */ -#define ANSI_FUNCS FALSE /* functions required by ANSI full BASIC */ -#endif /* end of CFG_ANSIMINIMAL */ - -#if CFG_COMMON -#define COMMAND_SHELL FALSE /* allow command shell processing */ -#define PROFILE FALSE /* interpret profile at beginning */ -#define NUMBER_DOUBLE FALSE /* define BASIC number as double: default is float*/ -#define MULTISEG_LINES FALSE /* allow multi-segment lines delimited by ':' */ -#define PARACT FALSE /* Implement PARallen ACTion (Multi-tasking) interpreter */ -#define INTERACTIVE TRUE /* interactive programming environment and related commands */ -#define COMMON_CMDS TRUE /* commands common to ANSI full BASIC and GWBASIC */ -#if UNIX_CMDS -#define UNIX_CMDS FALSE /* implement Unix-style directory commands */ -#endif -#define STRUCT_CMDS FALSE /* commands for structured programming required by full ANSI BASIC */ -#define MS_CMDS FALSE /* commands specific to Microsoft GWBASIC (tm) */ -#define MS_FUNCS FALSE /* Microsoft-specific functions and commands */ -#define COMMON_FUNCS TRUE /* functions common to GWBASIC and ANSI full BASIC */ -#define ANSI_FUNCS FALSE /* functions required by ANSI full BASIC */ -#endif /* end of CFG_COMMON */ - -#if CFG_ANSIFULL -#define COMMAND_SHELL TRUE /* allow command shell processing */ -#define PROFILE TRUE /* interpret profile at beginning */ -#define NUMBER_DOUBLE FALSE /* define BASIC number as double: default is float*/ -#define MULTISEG_LINES FALSE /* allow multi-segment lines delimited by ':' */ -#define PARACT TRUE /* Implement PARallen ACTion (Multi-tasking) interpreter */ -#define INTERACTIVE TRUE /* interactive programming environment and related commands */ -#define COMMON_CMDS TRUE /* commands common to ANSI full BASIC and GWBASIC */ -#if UNIX_CMDS -#define UNIX_CMDS FALSE /* implement Unix-style directory commands */ -#endif -#define STRUCT_CMDS TRUE /* commands for structured programming required by full ANSI BASIC */ -#define MS_CMDS FALSE /* commands specific to Microsoft GWBASIC (tm) */ -#define MS_FUNCS FALSE /* Microsoft-specific functions and commands */ -#define COMMON_FUNCS TRUE /* functions common to GWBASIC and ANSI full BASIC */ -#define ANSI_FUNCS TRUE /* functions required by ANSI full BASIC */ -#endif /* end of CFG_ANSIFULL */ - -#if CFG_MSTYPE -#define COMMAND_SHELL FALSE /* allow command shell processing */ -#define PROFILE FALSE /* interpret profile at beginning */ -#define NUMBER_DOUBLE FALSE /* define BASIC number as double: default is float*/ -#define MULTISEG_LINES TRUE /* allow multi-segment lines delimited by ':' */ -#define PARACT FALSE /* Implement PARallen ACTion (Multi-tasking) interpreter */ -#define INTERACTIVE TRUE /* interactive programming environment and related commands */ -#define COMMON_CMDS TRUE /* commands common to ANSI full BASIC and GWBASIC */ -#define STRUCT_CMDS FALSE /* commands for structured programming required by full ANSI BASIC */ -#define MS_CMDS TRUE /* commands specific to Microsoft GWBASIC (tm) */ -#define MS_FUNCS TRUE /* Microsoft-specific functions and commands */ -#define COMMON_FUNCS TRUE /* functions common to GWBASIC and ANSI full BASIC */ -#define ANSI_FUNCS FALSE /* functions required by ANSI full BASIC */ -#endif /* end of CFG_MSTYPE */ - -/* inclusions and definitions necessary if C compiler is not ANSI compliant */ - -#if HAVE_STRING -#include -#else -#include -#endif -#if HAVE_STDLIB -#include +/* BASIC LONG [MINLNG,MAXLNG] */ +#ifndef BasicLongSuffix +#define BasicLongSuffix '&' #endif +typedef long int BasicLongType; -/* Section added by JBV */ -#if HAVE_UNISTD -#include -#endif -#if HAVE_SYSTYPES -#include -#endif -#if HAVE_STDLIB /* if neither ANSI */ -#else -#if HAVE_SYSTYPES /* nor SYSTYPES */ -#else -#define size_t unsigned int /* then define these */ -#define time_t long -#endif +/* BASIC INTEGER [MININT,MAXINT]*/ +#ifndef BasicIntegerSuffix +#define BasicIntegerSuffix '%' #endif +typedef short int BasicIntegerType; -/* define number of commands */ -#define CMDS_CORE 22 /* number of core commands defined */ -#if UNIX_CMDS -#define CMDS_DIR 5 -#else -#define CMDS_DIR 0 -#endif -#if COMMON_CMDS -#define CMDS_COMMON 25 /* Was 24 (JBV) */ -#else -#define CMDS_COMMON 0 -#endif -#if STRUCT_CMDS -#define CMDS_STC 10 -#else -#define CMDS_STC 0 -#endif -#if INTERACTIVE -#define CMDS_INT 8 -#else -#define CMDS_INT 0 + +/* BASIC BYTE [MINDEV,MAXDEV] */ +#if 0 +#ifndef BasicByteSuffix +#define BasicByteSuffix '\0' /* N/A */ #endif -#if MS_CMDS -#define CMDS_MS 5+IMP_CMDCLS+IMP_CMDLOC+IMP_CMDCOLOR -#else -#define CMDS_MS 0 #endif -#if DEBUG -#define CMDS_DEBUG 3 /* number of debugging cmds */ -#else -#define CMDS_DEBUG 0 /* no debugging cmds */ -#endif -#define COMMANDS (CMDS_CORE+CMDS_DEBUG+CMDS_DIR+CMDS_COMMON+CMDS_INT+CMDS_MS+CMDS_STC) +typedef unsigned char BasicByteType; -/* define number of functions */ -#define FUNCS_BASE 12 /* number of basic functions */ -#ifdef INTENSIVE_DEBUG -#define FUNCS_DEBUG 1 /* number of debugging functions */ -#else -#define FUNCS_DEBUG 0 /* number of debugging functions */ + +/* BASIC DEVICE [MINDEV,MAXDEV]*/ +#ifndef BasicFileNumberPrefix +#define BasicFileNumberPrefix '#' #endif -#if MS_FUNCS -#define FUNCS_MS (25+IMP_FNCINKEY) -#else -#define FUNCS_MS 0 +typedef unsigned char BasicFileNumberType; +#ifndef BasicFileNumberMax +#define BasicFileNumberMax 7 +/* max file # (1..7), file # 0 is the console */ #endif -#if COMMON_FUNCS -#define FUNCS_COMMON 7 -#else -#define FUNCS_COMMON 0 + + + +/* BASIC LENGTH [MINLEN,MAXLEN] */ +#ifndef BasicStringSuffix +#define BasicStringSuffix '$' #endif -#if ANSI_FUNCS -#define FUNCS_ANSI 10 -#else -#define FUNCS_ANSI 0 +typedef unsigned int BasicStringLengthType; +#ifndef BasicStringLengthMax +#define BasicStringLengthMax 4096 /* max length of BASIC string */ #endif -#define FUNCTIONS (FUNCS_BASE+FUNCS_DEBUG+FUNCS_MS+FUNCS_COMMON+FUNCS_ANSI) -/* Check for inconsistencies */ -#if MULTISEG_LINES & STRUCT_CMDS -/* ERROR: MULTISEG_LINES and STRUCT_CMDS cannot be defined together! */ + +/* BASIC keywork length */ +#ifndef BasicNameLengthMax +#define BasicNameLengthMax 40 /* variable,function,subroutine,command */ #endif -/*************************************************************** - bwbasic.h: Part I-G: Define User Defaults - Defining your default editor and files commands - is a good idea. You must supply the file name - for the editor to use. These defaults can be - changed from inside the program or in your profile - program by setting the appropriate variables - shown below. +/* BASIC linenumber */ +typedef int BasicLineNumberType; +#define BasicLineNumberMax (INT_MAX - 32) /* maximum BASIC line number */ +#define BasicLineNumberMin 1 /* minimum USER line number */ -***************************************************************/ -#define DEF_EDITOR "vi" /* default editor */ -#define DEF_FILES "ls -Fx" /* default "files" command */ -#define DEF_COLORS 256 /* default # of colors */ -#define DEFVNAME_EDITOR "BWB.EDITOR$" /* default variable name for EDITOR */ -#define DEFVNAME_PROMPT "BWB.PROMPT$" /* default variable name for PROMPT */ -#define DEFVNAME_FILES "BWB.FILES$" /* default variable name for FILES */ -#define DEFVNAME_COLORS "BWB.COLORS" /* default variable name for COLORS */ -#define DEFVNAME_IMPL "BWB.IMPLEMENTATION$" /* default variable name for IMPLEMENTATION */ -#define ERRFILE "err.out" /* Filename for redirected error messages */ -#if defined(__MVS__) -#define PROFILENAME "dd:profile" -#elif defined(__CMS__) -#define PROFILENAME "PROFILE BAS" -#else -#define PROFILENAME "profile.bas" /* Filename for profile execution */ -#endif -#define TASKS 4 /* number of tasks available */ -#define MAXARGSIZE 128 /* maximum size of argument */ -#define MAXREADLINESIZE 256 /* size of read_line buffer */ -#define MAXCMDNAMESIZE 64 /* maximum size for command name */ -#define MAXLINENO 32766 /* maximum line number */ -#define MAXVARNAMESIZE 40 /* maximum size for variable name */ -#define MAXFILENAMESIZE 40 /* maximum size for file name */ -#if 0 /* JBV 9/4/97 */ -#define MAXSTRINGSIZE 255 /* maximum string length */ -#endif -#define MAXSTRINGSIZE 5000 /* maximum string length */ -#define EXECLEVELS 64 /* EXEC stack levels */ -#define MAX_GOLINES 12 /* Maximum # of lines for ON...GOTO statements */ -#define MAX_FARGS 6 /* maximum # arguments to function */ -#define MAX_DIMS 64 /* maximum # of dimensions */ -#define ESTACKSIZE 64 /* elements in expression stack */ -#define XTXTSTACKSIZE 16 /* elements in eXecute TeXT stack */ -#define N_OPERATORS 25 /* number of operators defined */ -#define N_ERRORS 25 /* number of errors defined */ -#define MAX_PRECEDENCE 20 /* highest (last) level of precedence */ -#if 0 /* JBV 9/96 */ -#define MININTSIZE -32767 /* minimum integer size */ -#define MAXINTSIZE 32767 /* maximum integer size */ -#endif -#define MININTSIZE -2147483647 /* minimum integer size */ -#define MAXINTSIZE 2147483647 /* maximum integer size */ -#define DEF_SUBSCRIPT 11 /* default subscript */ -#define DEF_DEVICES 16 /* default number of devices available */ -#define DEF_WIDTH 128 /* default width for devices */ -#define PRN_TAB 0x02 /* send TAB followed by col number to output device */ -#define COMPRESS_FUNCS TRUE -/* Derivative definitions */ +/* UniqueID */ +typedef int BasicUniqueType; -#if MULTISEG_LINES -#define MARK_LINES FALSE -#else -#define MARK_LINES TRUE -#endif -#if PARACT -#define CURTASK bwb_tasks[ bwb_curtask ]-> -#define LOCALTASK bwb_tasks[ task ]-> -#else -#define CURTASK -#define LOCALTASK -#endif -#if DEBUG -#define PERMANENT_DEBUG TRUE -#else -#define PERMANENT_DEBUG FALSE -#endif +#define MAX_PRECEDENCE 20 /* highest (last) level of precedence */ +#define DEF_SUBSCRIPT 11 /* default subscript, including 0. 0...10 */ -#if HAVE_STDLIB -#else -extern char *calloc(); -#ifndef NULL -#define NULL 0L -#endif -#endif +/* Derivative definitions */ + + + +#define CURTASK +#define LOCALTASK -/* typedef for BASIC number */ -#if NUMBER_DOUBLE -typedef double bnumber; -#else -typedef float bnumber; -#endif /* define variable types based on last character */ #define STRING '$' +#define PRN_TAB 0x02 /* send TAB followed by TAB number */ +#define PRN_SPC 0x01 /* send SPC followed by SPC number */ -/* define mathematical operations */ -#define MULTIPLY '*' -#define DIVIDE '/' -#define ADD '+' -#define SUBTRACT '-' -#define ARGUMENT 'A' /* Operations defined */ +#define OP_ERROR -255 /* operation error (break out) */ +#define OP_NULL 0 /* null: operation not defined yet */ +#define NUMBER 1 /* number held as internal variable in uvar */ +#define CONST_STRING 2 /* string constant */ +#define CONST_NUMERICAL 3 /* numerical constant */ +#define FUNCTION 4 /* function header */ +#define VARIABLE 5 /* external variable pointed to by xvar */ +#define PARENTHESIS 6 /* begin parenthetical expression */ +#define OP_ADD 7 /* addition sign '+' */ +#define OP_SUBTRACT 8 /* subtraction sign '-' */ +#define OP_MULTIPLY 9 /* multiplication sign '*' */ +#define OP_DIVIDE 10 /* division sign '/' */ +#define OP_MODULUS 11 /* modulus "MOD" */ +#define OP_EXPONENT 12 /* exponentiation '^' */ +#define OP_INTDIVISION 13 /* integer division sign '\' */ +#define OP_NEGATION 14 /* negation '-' ??? */ +#define OP_STRJOIN 15 /* string join ';' */ +#define OP_STRTAB 16 /* string tab ',' */ +#define OP_EQUALS 17 /* either logical equal operator */ +#define OP_ASSIGN 18 /* assignment operator */ +#define OP_NOTEQUAL 20 /* inequality */ +#define OP_LESSTHAN 21 /* less than */ +#define OP_GREATERTHAN 22 /* greater than */ +#define OP_LTEQ 23 /* less than or equal to */ +#define OP_GTEQ 24 /* greater than or equal to */ +#define OP_NOT 25 /* negation */ +#define OP_AND 26 /* conjunction */ +#define OP_OR 27 /* disjunction */ +#define OP_XOR 28 /* exclusive or */ +#define OP_IMPLIES 29 /* implication */ +#define OP_EQUIV 30 /* equivalence */ +#define OP_TERMINATE 31 /* terminate expression parsing */ +#define OP_USERFNC 32 /* user-defined function */ +#define OP_POSATION 33 /* leading '+' */ +#define NUM_OPERATORS 28 /* number of operators defined */ -#define OP_ERROR -255 /* operation error (break out) */ -#define OP_NULL 0 /* null: operation not defined yet */ -#define NUMBER 1 /* number held as internal variable in uvar */ -#define CONST_STRING 2 /* string constant */ -#define CONST_NUMERICAL 3 /* numerical constant */ -#define FUNCTION 4 /* function header */ -#define VARIABLE 5 /* external variable pointed to by xvar */ -#define PARENTHESIS 6 /* begin parenthetical expression */ -#define OP_ADD 7 /* addition sign '+' */ -#define OP_SUBTRACT 8 /* subtraction sign '-' */ -#define OP_MULTIPLY 9 /* multiplication sign '*' */ -#define OP_DIVIDE 10 /* division sign '/' */ -#define OP_MODULUS 11 /* modulus "MOD" */ -#define OP_EXPONENT 12 /* exponentiation '^' */ -#define OP_INTDIVISION 13 /* integer division sign '\' */ -#define OP_NEGATION 14 /* negation '-' ??? */ -#define OP_STRJOIN 15 /* string join ';' */ -#define OP_STRTAB 16 /* string tab ',' */ -#define OP_EQUALS 17 /* either logical equal operator */ -#define OP_ASSIGN 18 /* assignment operator */ -#define OP_NOTEQUAL 20 /* inequality */ -#define OP_LESSTHAN 21 /* less than */ -#define OP_GREATERTHAN 22 /* greater than */ -#define OP_LTEQ 23 /* less than or equal to */ -#define OP_GTEQ 24 /* greater than or equal to */ -#define OP_NOT 25 /* negation */ -#define OP_AND 26 /* conjunction */ -#define OP_OR 27 /* disjunction */ -#define OP_XOR 28 /* exclusive or */ -#define OP_IMPLIES 29 /* implication */ -#define OP_EQUIV 30 /* equivalence */ -#define OP_TERMINATE 31 /* terminate expression parsing */ -#define OP_USERFNC 32 /* user-defined function */ -/* Device input/output modes */ -#define DEVMODE_AVAILABLE -1 +/* Device input/output modes */ #define DEVMODE_CLOSED 0 -#define DEVMODE_OUTPUT 1 -#define DEVMODE_INPUT 2 -#define DEVMODE_APPEND 3 +#define DEVMODE_INPUT 1 +#define DEVMODE_OUTPUT 2 #define DEVMODE_RANDOM 4 +#define DEVMODE_APPEND 8 +#define DEVMODE_BINARY 32 +#define DEVMODE_READ (DEVMODE_INPUT | DEVMODE_RANDOM | DEVMODE_BINARY ) +#define DEVMODE_WRITE (DEVMODE_OUTPUT | DEVMODE_RANDOM | DEVMODE_APPEND | DEVMODE_BINARY ) + + + +#define CONSOLE_FILE_NUMBER 0x00 +#define LPRINT_FILE_NUMBER 0xFF + -/* codes for EXEC stack and for function-sub-label lookup table */ -#define EXEC_NORM 0 -#define EXEC_GOSUB 1 -#define EXEC_WHILE 2 -#define EXEC_FOR 3 -#define EXEC_FUNCTION 4 -#define EXEC_CALLSUB 5 -#define EXEC_IFTRUE 6 -#define EXEC_IFFALSE 7 -#define EXEC_MAIN 8 -#define EXEC_SELTRUE 9 -#define EXEC_SELFALSE 10 +/* codes for EXEC stack and for function-sub-label lookup table */ +#define EXEC_NORM 0 +#define EXEC_GOSUB 1 +#define EXEC_WHILE 2 +#define EXEC_FOR 3 +#define EXEC_FUNCTION 4 +#define EXEC_CALLSUB 5 +#define EXEC_IFTRUE 6 +#define EXEC_IFFALSE 7 +#define EXEC_MAIN 8 +#define EXEC_SELTRUE 9 +#define EXEC_SELFALSE 10 #define EXEC_LABEL 11 #define EXEC_DO 12 #define EXEC_ON 13 +#define EXEC_UNTIL 14 + + + +/* OPTION VERSION bitmask, upto 32 flavors of BASIC */ +#define E78 0x00000001 /* ECMA-55 , 1978 */ +#define E86 0x00000002 /* ECMA-116 , 1986 */ +#define M80 0x00000004 /* Microsoft BASIC-80 , 1980 */ +#define M85 0x00000008 /* Microsoft GW-BASIC , 1985 */ +#define M88 0x00000010 /* Microsoft QBASIC , 1988 */ +#define M90 0x00000020 /* Microsoft VBDOS , 1990 */ +#define M91 0x00000040 /* Microsoft VB1 , 1991 */ +#define M92 0x00000080 /* Microsoft VB2 , 1992 */ +#define M93 0x00000100 /* Microsoft VB3 , 1993 */ +#define M95 0x00000200 /* Microsoft VB4 , 1995 */ +#define M97 0x00000400 /* Microsoft VB5 , 1997 */ +#define M98 0x00000800 /* Microsoft VB6 , 1998 */ +#define D64 0x00001000 /* Dartmouth , 1964 */ +#define T83 0x00002000 /* TRS-80 Model III , 1980 */ +#define T84 0x00004000 /* TRS-80 Model 4 , 1983 */ +#define B14 0x80000000 /* Bywater BASIC , 2014 */ +#define NUM_VERSIONS 16 /* upto 32 flavors of BASIC */ + + + +/* OptionFlags */ +#define OPTION_STRICT_ON 0x0001 /* Do NOT allow implicit DIM */ +#define OPTION_ANGLE_DEGREES 0x0002 /* Use degrees instead of radians */ +#define OPTION_BUGS_ON 0x0004 /* ON ... , FOR ... */ +#define OPTION_LABELS_ON 0x0008 /* Labels allowed */ +#define OPTION_COMPARE_TEXT 0x0010 /* Case-Insensitive string comparison */ +#define OPTION_BASE_ONE 0x0020 /* Lower array bound is 1 */ +#define OPTION_COVERAGE_ON 0x0040 /* track BASIC lines actually + * executed */ +#define OPTION_TRACE_ON 0x0080 /* dump BASIC stack trace when FATAL + * error */ +#define OPTION_ERROR_GOSUB 0X0100 /* error causes GOSUB instead of GOTO */ + +/* LineFlags */ +#define LINE_EXECUTED 0x01 /* line was executed */ +#define LINE_NUMBERED 0x02 /* line was manually numbered */ +#define LINE_RESERVED04 0x04 /* reserved for future use */ +#define LINE_RESERVED08 0x08 /* reserved for future use */ +#define LINE_RESERVED10 0x10 /* reserved for future use */ +#define LINE_RESERVED20 0x20 /* reserved for future use */ +#define LINE_RESERVED40 0x40 /* reserved for future use */ +#define LINE_RESERVED80 0x80 /* reserved for future use */ + + +#define ERROR_PENDING ( bwb_Warning_Pending() || (err_number < 0) ) + +/* function ParameterTypes */ + +#define PSTR( N ) ( 1 << ( N - 1 ) ) /* STRING parameter # 1 is bit 0 SET */ +#define PNUM( N ) ( 0 ) /* NUMBER parameter # 1 is bit 0 CLR */ +#define PNONE ( 0 ) /* function has no parameters */ + +#define P1STR PSTR(1) +#define P2STR PSTR(2) +#define P3STR PSTR(3) +#define P4STR PSTR(4) + +#define P1NUM PNUM(1) +#define P2NUM PNUM(2) +#define P3NUM PNUM(3) +#define P4NUM PNUM(4) + + + +/* function ParameterTests */ +/* 0x87654321 <- Parameter Number (max # of Range-Checked parameters to INTRINSIC functions is 8) */ +#define P1ERR 0X00000000 /* INTERNAL ERROR */ +#define P1ANY 0X00000001 /* X is any valid number , A$ is any valid + * string */ +#define P1BYT 0x00000002 /* MIN_BYT <= X <= MAX_BYT, LEN(A$) >= + * sizeof(char) */ +#define P1INT 0x00000003 /* INT_MIN <= X <= INT_MAX, LEN(A$) >= + * sizeof(short) */ +#define P1LNG 0x00000004 /* LONG_MIN <= X <= LONG_MAX, LEN(A$) >= + * sizeof(long) */ +#define P1CUR 0x00000005 /* LONG_MIN <= X <= LONG_MAX, LEN(A$) >= + * sizeof(long) */ +#define P1FLT 0x00000006 /* MIN_FLT <= X <= MAX_FLT, LEN(A$) >= + * sizeof(float) */ +#define P1DBL 0x00000007 /* MIN_DBL <= X <= MAX_DBL, LEN(A$) >= + * sizeof(double) */ +#define P1DEV 0x00000008 /* MIN_DEV <= X <= MAX_DEV, RESERVED */ +#define P1LEN 0x00000009 /* MIN_STR <= X <= MAX_STR, RESERVED */ +#define P1POS 0x0000000A /* MIN_STR < X <= MAX_STR, RESERVED */ +#define P1COM 0x0000000B /* X in (1,2,3,4) COMx , RESERVED */ +#define P1LPT 0x0000000C /* X in (0,1,2,3) PRN,LPTx, RESERVED */ +#define P1GTZ 0x0000000D /* X > 0 , RESERVED */ +#define P1GEZ 0x0000000E /* X >= 0 , RESERVED */ +#define P1NEZ 0x0000000F /* X <> 0 , RESERVED */ + + + + + +#define P2ERR (P1ERR << 4) +#define P2ANY (P1ANY << 4) +#define P2BYT (P1BYT << 4) +#define P2INT (P1INT << 4) +#define P2LNG (P1LNG << 4) +#define P2CUR (P1CUR << 4) +#define P2FLT (P1FLT << 4) +#define P2DBL (P1DBL << 4) +#define P2DEV (P1DEV << 4) +#define P2LEN (P1LEN << 4) +#define P2POS (P1POS << 4) +#define P2COM (P1COM << 4) +#define P2LPT (P1LPT << 4) +#define P2GTZ (P1GTZ << 4) +#define P2GEZ (P1GEZ << 4) +#define P2NEZ (P1NEZ << 4) + +#define P3ERR (P1ERR << 8) +#define P3ANY (P1ANY << 8) +#define P3BYT (P1BYT << 8) +#define P3INT (P1INT << 8) +#define P3LNG (P1LNG << 8) +#define P3CUR (P1CUR << 8) +#define P3FLT (P1FLT << 8) +#define P3DBL (P1DBL << 8) +#define P3DEV (P1DEV << 8) +#define P3LEN (P1LEN << 8) +#define P3POS (P1POS << 8) +#define P3COM (P1COM << 8) +#define P3LPT (P1LPT << 8) +#define P3GTZ (P1GTZ << 8) +#define P3GEZ (P1GEZ << 8) +#define P3NEZ (P1NEZ << 8) + +#define P4ERR (P1ERR << 12) +#define P4ANY (P1ANY << 12) +#define P4BYT (P1BYT << 12) +#define P4INT (P1INT << 12) +#define P4LNG (P1LNG << 12) +#define P4CUR (P1CUR << 12) +#define P4FLT (P1FLT << 12) +#define P4DBL (P1DBL << 12) +#define P4DEV (P1DEV << 12) +#define P4LEN (P1LEN << 12) +#define P4POS (P1POS << 12) +#define P4COM (P1COM << 12) +#define P4LPT (P1LPT << 12) +#define P4GTZ (P1GTZ << 12) +#define P4GEZ (P1GEZ << 12) +#define P4NEZ (P1NEZ << 12) + + + + + + +/* COMMANDS */ +#define C_QUEST 1 /* ? */ +#define C_CALL 2 /* CALL */ +#define C_CASE 3 /* CASE */ +#define C_CASE_ELSE 4 /* CASE ELSE */ +#define C_CASE_IF 5 /* CASE IF */ +#define C_CASE_IS 6 /* CASE IS */ +#define C_CHAIN 7 /* CHAIN */ +#define C_CHANGE 8 /* CHANGE */ +#define C_CLEAR 9 /* CLEAR */ +#define C_CLOAD 10 /* CLOAD */ +#define C_CLOAD_ 11 /* CLOAD* */ +#define C_CMDS 12 /* CMDS */ +#define C_COMMON 13 /* COMMON */ +#define C_CONT 14 /* CONT */ +#define C_CSAVE 15 /* CSAVE */ +#define C_CSAVE_ 16 /* CSAVE* */ +#define C_DATA 17 /* DATA */ +#define C_DEF 18 /* DEF */ +#define C_DEF_SUB 19 /* DEF SUB */ +#define C_DEFDBL 20 /* DEFDBL */ +#define C_DEFINT 21 /* DEFINT */ +#define C_DEFSNG 22 /* DEFSNG */ +#define C_DEFSTR 23 /* DEFSTR */ +#define C_DELETE 24 /* DELETE */ +#define C_DIM 25 /* DIM */ +#define C_DO 26 /* DO */ +#define C_DO_UNTIL 27 /* DO UNTIL */ +#define C_DO_WHILE 28 /* DO WHILE */ +#define C_EDIT 29 /* EDIT */ +#define C_ELSE 30 /* ELSE */ +#define C_ELSEIF 31 /* ELSEIF */ +#define C_END 32 /* END */ +#define C_END_FUNCTION 33 /* END FUNCTION */ +#define C_END_IF 34 /* END IF */ +#define C_END_SELECT 35 /* END SELECT */ +#define C_END_SUB 36 /* END SUB */ +#define C_ERASE 37 /* ERASE */ +#define C_EXIT 38 /* EXIT */ +#define C_EXIT_DO 39 /* EXIT DO */ +#define C_EXIT_FOR 40 /* EXIT FOR */ +#define C_EXIT_FUNCTION 41 /* EXIT FUNCTION */ +#define C_EXIT_SUB 42 /* EXIT SUB */ +#define C_EXIT_UNTIL 43 /* EXIT UNTIL */ +#define C_EXIT_WHILE 44 /* EXIT WHILE */ +#define C_FIELD 45 /* FIELD */ +#define C_FNCS 46 /* FNCS */ +#define C_FOR 47 /* FOR */ +#define C_FUNCTION 48 /* FUNCTION */ +#define C_GO 49 /* GO */ +#define C_GOSUB 50 /* GOSUB */ +#define C_GOTO 51 /* GOTO */ +#define C_HELP 52 /* HELP */ +#define C_IF 53 /* IF */ +#define C_IF_THEN 54 /* IF THEN */ +#define C_INPUT 55 /* INPUT */ +#define C_LET 56 /* LET */ +#define C_LINE 57 /* LINE */ +#define C_LIST 58 /* LIST */ +#define C_LOAD 59 /* LOAD */ +#define C_LOOP 60 /* LOOP */ +#define C_LOOP_UNTIL 61 /* LOOP UNTIL */ +#define C_LOOP_WHILE 62 /* LOOP WHILE */ +#define C_LPRINT 63 /* LPRINT */ +#define C_LSET 64 /* LSET */ +#define C_MAINTAINER 65 /* MAINTAINER */ +#define C_MERGE 66 /* MERGE */ +#define C_MID_ 67 /* MID$ */ +#define C_NAME 68 /* NAME */ +#define C_NEW 69 /* NEW */ +#define C_NEXT 70 /* NEXT */ +#define C_ON 71 /* ON */ +#define C_ON_ERROR_GOTO 72 /* ON ERROR GOTO */ +#define C_ON_TIMER 73 /* ON TIMER */ +#define C_OPEN 74 /* OPEN */ +#define C_OPTION 75 /* OPTION */ +#define C_OPTION_ANGLE_DEGREES 76 /* OPTION ANGLE DEGREES */ +#define C_OPTION_ANGLE_RADIANS 77 /* OPTION ANGLE RADIANS */ +#define C_OPTION_ARITHMETIC_DECIMAL 78 /* OPTION ARITHMETIC DECIMAL */ +#define C_OPTION_ARITHMETIC_FIXED 79 /* OPTION ARITHMETIC FIXED */ +#define C_OPTION_ARITHMETIC_NATIVE 80 /* OPTION ARITHMETIC NATIVE */ +#define C_OPTION_BASE_0 81 /* OPTION BASE 0 */ +#define C_OPTION_BASE_1 82 /* OPTION BASE 1 */ +#define C_OPTION_BUGS_OFF 83 /* OPTION BUGS OFF */ +#define C_OPTION_BUGS_ON 84 /* OPTION BUGS ON */ +#define C_OPTION_COMMENT 85 /* OPTION COMMENT */ +#define C_OPTION_COMPARE_BINARY 86 /* OPTION COMPARE BINARY */ +#define C_OPTION_COMPARE_DATABASE 87 /* OPTION COMPARE DATABASE */ +#define C_OPTION_COMPARE_TEXT 88 /* OPTION COMPARE TEXT */ +#define C_OPTION_COVERAGE_OFF 89 /* OPTION COVERAGE OFF */ +#define C_OPTION_COVERAGE_ON 90 /* OPTION COVERAGE ON */ +#define C_OPTION_DATE 91 /* OPTION DATE */ +#define C_OPTION_DISABLE_COMMAND 92 /* OPTION DISABLE COMMAND */ +#define C_OPTION_DISABLE_FUNCTION 93 /* OPTION DISABLE FUNCTION */ +#define C_OPTION_DISABLE_OPERATOR 94 /* OPTION DISABLE OPERATOR */ +#define C_OPTION_ENABLE_COMMAND 95 /* OPTION ENABLE COMMAND */ +#define C_OPTION_ENABLE_FUNCTION 96 /* OPTION ENABLE FUNCTION */ +#define C_OPTION_ENABLE_OPERATOR 97 /* OPTION ENABLE OPERATOR */ +#define C_OPTION_INDENT 98 /* OPTION INDENT */ +#define C_OPTION_LABELS_OFF 99 /* OPTION LABELS OFF */ +#define C_OPTION_LABELS_ON 100 /* OPTION LABELS ON */ +#define C_OPTION_STATEMENT 101 /* OPTION STATEMENT */ +#define C_OPTION_STRICT_OFF 102 /* OPTION STRICT OFF */ +#define C_OPTION_STRICT_ON 103 /* OPTION STRICT ON */ +#define C_OPTION_TERMINAL_ADM_3A 104 /* OPTION TERMINAL ADM-3A */ +#define C_OPTION_TERMINAL_ANSI 105 /* OPTION TERMINAL ANSI */ +#define C_OPTION_TERMINAL_NONE 106 /* OPTION TERMINAL NONE */ +#define C_OPTION_TIME 107 /* OPTION TIME */ +#define C_OPTION_TRACE_OFF 108 /* OPTION TRACE OFF */ +#define C_OPTION_TRACE_ON 109 /* OPTION TRACE ON */ +#define C_OPTION_VERSION 110 /* OPTION VERSION */ +#define C_PRINT 111 /* PRINT */ +#define C_QUIT 112 /* QUIT */ +#define C_READ 113 /* READ */ +#define C_REM 114 /* REM */ +#define C_RENUM 115 /* RENUM */ +#define C_RESTORE 116 /* RESTORE */ +#define C_RESUME 117 /* RESUME */ +#define C_RETURN 118 /* RETURN */ +#define C_RSET 119 /* RSET */ +#define C_RUN 120 /* RUN */ +#define C_SAVE 121 /* SAVE */ +#define C_SELECT 122 /* SELECT */ +#define C_SELECT_CASE 123 /* SELECT CASE */ +#define C_STOP 124 /* STOP */ +#define C_SUB 125 /* SUB */ +#define C_SWAP 126 /* SWAP */ +#define C_SYSTEM 127 /* SYSTEM */ +#define C_TIMER 128 /* TIMER */ +#define C_UEND 129 /* UEND */ +#define C_UNTIL 130 /* UNTIL */ +#define C_USER_LBL 131 /* USER LBL */ +#define C_VARS 132 /* VARS */ +#define C_WEND 133 /* WEND */ +#define C_WHILE 134 /* WHILE */ +#define C_WRITE 135 /* WRITE */ +#define C_OPTION_ERROR_GOSUB 136 /* OPTION ERROR GOSUB */ +#define C_OPTION_ERROR_GOTO 137 /* OPTION ERROR GOTO */ +#define C_ON_ERROR_GOSUB 138 /* ON ERROR GOSUB */ +#define C_ON_ERROR_RETURN_NEXT 139 /* ON ERROR RESUME NEXT */ +#define C_ON_ERROR_RESUME_NEXT 140 /* ON ERROR RETURN NEXT */ +#define C_TIMER_OFF 141 /* TIMER OFF */ +#define C_TIMER_ON 142 /* TIMER ON */ +#define C_TIMER_STOP 143 /* TIMER STOP */ +#define NUM_COMMANDS 143 + + + + + +/* FUNCTIONS */ +#define F_ABS_X_N 1 /* N = ABS( X ) */ +#define F_ACOS_X_N 2 /* N = ACOS( X ) */ +#define F_ANGLE_X_Y_N 3 /* N = ANGLE( X, Y ) */ +#define F_ARGC_N 4 /* N = ARGC */ +#define F_ARGT_X_S 5 /* S$ = ARGT$( X ) */ +#define F_ARGV_X_N 6 /* N = ARGV( X ) */ +#define F_ARGV_X_S 7 /* S$ = ARGV$( X ) */ +#define F_ASC_A_N 8 /* N = ASC( A$ ) */ +#define F_ASIN_X_N 9 /* N = ASIN( X ) */ +#define F_ATN_X_N 10 /* N = ATN( X ) */ +#define F_CCUR_X_N 11 /* N = CCUR( X ) */ +#define F_CDBL_X_N 12 /* N = CDBL( X ) */ +#define F_CEIL_X_N 13 /* N = CEIL( X ) */ +#define F_CHDIR_A_N 14 /* N = CHDIR( A$ ) */ +#define F_CHR_X_S 15 /* S$ = CHR$( X ) */ +#define F_CINT_X_N 16 /* N = CINT( X ) */ +#define F_CLNG_X_N 17 /* N = CLNG( X ) */ +#define F_CLOSE_X_N 18 /* N = CLOSE( X ) */ +#define F_CLS_N 19 /* N = CLS */ +#define F_COLOR_X_Y_N 20 /* N = COLOR( X, Y ) */ +#define F_COS_X_N 21 /* N = COS( X ) */ +#define F_COSH_X_N 22 /* N = COSH( X ) */ +#define F_COT_X_N 23 /* N = COT( X ) */ +#define F_CSC_X_N 24 /* N = CSC( X ) */ +#define F_CSNG_X_N 25 /* N = CSNG( X ) */ +#define F_CVC_A_N 26 /* N = CVC( A$ ) */ +#define F_CVD_A_N 27 /* N = CVD( A$ ) */ +#define F_CVI_A_N 28 /* N = CVI( A$ ) */ +#define F_CVL_A_N 29 /* N = CVL( A$ ) */ +#define F_CVS_A_N 30 /* N = CVS( A$ ) */ +#define F_DATE_N 31 /* N = DATE */ +#define F_DATE_S 32 /* S$ = DATE$ */ +#define F_DEF_FN_N 33 /* N = DEF FN */ +#define F_DEG_X_N 34 /* N = DEG( X ) */ +#define F_ENVIRON_A_N 35 /* N = ENVIRON( A$ ) */ +#define F_ENVIRON_A_S 36 /* S$ = ENVIRON$( A$ ) */ +#define F_EOF_X_N 37 /* N = EOF( X ) */ +#define F_EPS_X_N 38 /* N = EPS( X ) */ +#define F_ERL_N 39 /* N = ERL */ +#define F_ERR_N 40 /* N = ERR */ +#define F_ERR_S 41 /* S$ = ERR$ */ +#define F_ERROR_X_N 42 /* N = ERROR( X ) */ +#define F_ERROR_X_A_N 43 /* N = ERROR( X, A$ ) */ +#define F_EXP_X_N 44 /* N = EXP( X ) */ +#define F_FILEATTR_X_Y_N 45 /* N = FILEATTR( X, Y ) */ +#define F_FILES_N 46 /* N = FILES */ +#define F_FILES_A_N 47 /* N = FILES( A$ ) */ +#define F_FIX_X_N 48 /* N = FIX( X ) */ +#define F_FP_X_N 49 /* N = FP( X ) */ +#define F_FRE_N 50 /* N = FRE */ +#define F_FRE_X_N 51 /* N = FRE( X ) */ +#define F_FRE_A_N 52 /* N = FRE( A$ ) */ +#define F_FREEFILE_N 53 /* N = FREEFILE */ +#define F_GET_X_N 54 /* N = GET( X ) */ +#define F_GET_X_Y_N 55 /* N = GET( X, Y ) */ +#define F_HEX_X_S 56 /* S$ = HEX$( X ) */ +#define F_INKEY_S 57 /* S$ = INKEY$ */ +#define F_INP_X_N 58 /* N = INP( X ) */ +#define F_INPUT_X_S 59 /* S$ = INPUT$( X ) */ +#define F_INPUT_X_Y_S 60 /* S$ = INPUT$( X, Y ) */ +#define F_INSTR_A_B_N 61 /* N = INSTR( A$, B$ ) */ +#define F_INSTR_X_A_B_N 62 /* N = INSTR( X, A$, B$ ) */ +#define F_INT_X_N 63 /* N = INT( X ) */ +#define F_IP_X_N 64 /* N = IP( X ) */ +#define F_KILL_A_N 65 /* N = KILL( A$ ) */ +#define F_LCASE_A_S 66 /* S$ = LCASE$( A$ ) */ +#define F_LEFT_A_X_S 67 /* S$ = LEFT$( A$, X ) */ +#define F_LEN_A_N 68 /* N = LEN( A$ ) */ +#define F_LOC_X_N 69 /* N = LOC( X ) */ +#define F_LOCATE_X_Y_N 70 /* N = LOCATE( X, Y ) */ +#define F_LOF_X_N 71 /* N = LOF( X ) */ +#define F_LOG_X_N 72 /* N = LOG( X ) */ +#define F_LOG10_X_N 73 /* N = LOG10( X ) */ +#define F_LOG2_X_N 74 /* N = LOG2( X ) */ +#define F_LPOS_N 75 /* N = LPOS */ +#define F_LTRIM_A_S 76 /* S$ = LTRIM$( A$ ) */ +#define F_LWIDTH_X_N 77 /* N = LWIDTH( X ) */ +#define F_MAX_X_Y_N 78 /* N = MAX( X, Y ) */ +#define F_MAXBYT_N 79 /* N = MAXBYT */ +#define F_MAXCUR_N 80 /* N = MAXCUR */ +#define F_MAXDBL_N 81 /* N = MAXDBL */ +#define F_MAXDEV_N 82 /* N = MAXDEV */ +#define F_MAXINT_N 83 /* N = MAXINT */ +#define F_MAXLEN_A_N 84 /* N = MAXLEN( A$ ) */ +#define F_MAXLNG_N 85 /* N = MAXLNG */ +#define F_MAXLVL_N 86 /* N = MAXLVL */ +#define F_MAXNUM_N 87 /* N = MAXNUM */ +#define F_MAXSNG_N 88 /* N = MAXSNG */ +#define F_MID_A_X_S 89 /* S$ = MID$( A$, X ) */ +#define F_MID_A_X_Y_S 90 /* S$ = MID$( A$, X, Y ) */ +#define F_MIN_X_Y_N 91 /* N = MIN( X, Y ) */ +#define F_MINBYT_N 92 /* N = MINBYT */ +#define F_MINCUR_N 93 /* N = MINCUR */ +#define F_MINDBL_N 94 /* N = MINDBL */ +#define F_MINDEV_N 95 /* N = MINDEV */ +#define F_MININT_N 96 /* N = MININT */ +#define F_MINLNG_N 97 /* N = MINLNG */ +#define F_MINNUM_N 98 /* N = MINNUM */ +#define F_MINSNG_N 99 /* N = MINSNG */ +#define F_MKC_X_S 100 /* S$ = MKC$( X ) */ +#define F_MKD_X_S 101 /* S$ = MKD$( X ) */ +#define F_MKDIR_A_N 102 /* N = MKDIR( A$ ) */ +#define F_MKI_X_S 103 /* S$ = MKI$( X ) */ +#define F_MKL_X_S 104 /* S$ = MKL$( X ) */ +#define F_MKS_X_S 105 /* S$ = MKS$( X ) */ +#define F_MOD_X_Y_N 106 /* N = MOD( X, Y ) */ +#define F_NAME_A_B_N 107 /* N = NAME( A$, B$ ) */ +#define F_NULL_X_N 108 /* N = NULL( X ) */ +#define F_OCT_X_S 109 /* S$ = OCT$( X ) */ +#define F_OPEN_A_X_B_N 110 /* N = OPEN( A$, X, B$ ) */ +#define F_OPEN_A_X_B_Y_N 111 /* N = OPEN( A$, X, B$, Y ) */ +#define F_ORD_A_N 112 /* N = ORD( A$ ) */ +#define F_OUT_X_Y_N 113 /* N = OUT( X, Y ) */ +#define F_PEEK_X_N 114 /* N = PEEK( X ) */ +#define F_PI_N 115 /* N = PI */ +#define F_POKE_X_Y_N 116 /* N = POKE( X, Y ) */ +#define F_POS_N 117 /* N = POS */ +#define F_POS_X_N 118 /* N = POS( X ) */ +#define F_POS_A_B_N 119 /* N = POS( A$, B$ ) */ +#define F_POS_A_B_X_N 120 /* N = POS( A$, B$, X ) */ +#define F_PUT_X_N 121 /* N = PUT( X ) */ +#define F_PUT_X_Y_N 122 /* N = PUT( X, Y ) */ +#define F_RAD_X_N 123 /* N = RAD( X ) */ +#define F_RANDOMIZE_N 124 /* N = RANDOMIZE */ +#define F_RANDOMIZE_X_N 125 /* N = RANDOMIZE( X ) */ +#define F_REMAINDER_X_Y_N 126 /* N = REMAINDER( X, Y ) */ +#define F_REPEAT_X_Y_S 127 /* S$ = REPEAT$( X, Y ) */ +#define F_REPEAT_X_A_S 128 /* S$ = REPEAT$( X, A$ ) */ +#define F_RESET_N 129 /* N = RESET */ +#define F_RIGHT_A_X_S 130 /* S$ = RIGHT$( A$, X ) */ +#define F_RMDIR_A_N 131 /* N = RMDIR( A$ ) */ +#define F_RND_N 132 /* N = RND */ +#define F_RND_X_N 133 /* N = RND( X ) */ +#define F_ROUND_X_Y_N 134 /* N = ROUND( X, Y ) */ +#define F_RTRIM_A_S 135 /* S$ = RTRIM$( A$ ) */ +#define F_SEC_X_N 136 /* N = SEC( X ) */ +#define F_SEEK_X_N 137 /* N = SEEK( X ) */ +#define F_SEEK_X_Y_N 138 /* N = SEEK( X, Y ) */ +#define F_SGN_X_N 139 /* N = SGN( X ) */ +#define F_SHELL_A_N 140 /* N = SHELL( A$ ) */ +#define F_SIN_X_N 141 /* N = SIN( X ) */ +#define F_SINH_X_N 142 /* N = SINH( X ) */ +#define F_SPACE_X_S 143 /* S$ = SPACE$( X ) */ +#define F_SPC_X_S 144 /* S$ = SPC( X ) */ +#define F_SQR_X_N 145 /* N = SQR( X ) */ +#define F_STR_X_S 146 /* S$ = STR$( X ) */ +#define F_STRING_X_A_S 147 /* S$ = STRING$( X, A$ ) */ +#define F_STRING_X_Y_S 148 /* S$ = STRING$( X, Y ) */ +#define F_TAB_X_S 149 /* S$ = TAB( X ) */ +#define F_TAN_X_N 150 /* N = TAN( X ) */ +#define F_TANH_X_N 151 /* N = TANH( X ) */ +#define F_TIME_N 152 /* N = TIME */ +#define F_TIME_S 153 /* S$ = TIME$ */ +#define F_TIMER_N 154 /* N = TIMER */ +#define F_TRIM_A_S 155 /* S$ = TRIM$( A$ ) */ +#define F_TROFF_N 156 /* N = TROFF */ +#define F_TRON_N 157 /* N = TRON */ +#define F_TRUNCATE_X_Y_N 158 /* N = TRUNCATE( X, Y ) */ +#define F_UCASE_A_S 159 /* S$ = UCASE$( A$ ) */ +#define F_VAL_A_N 160 /* N = VAL( A$ ) */ +#define F_WAIT_X_Y_N 161 /* N = WAIT( X, Y ) */ +#define F_WAIT_X_Y_Z_N 162 /* N = WAIT( X, Y, Z ) */ +#define F_WIDTH_X_N 163 /* N = WIDTH( X ) */ +#define F_WIDTH_X_Y_N 164 /* N = WIDTH( X, Y ) */ +#define NUM_FUNCTIONS 164 -/*************************************************************** - bwbasic.h Part II: Structures -***************************************************************/ -/* Typdef structure for strings under Bywater BASIC */ -typedef struct bstr - { - /* unsigned int was unsigned char (JBV 9/4/97) */ - unsigned int length; /* length of string */ - char *sbuffer; /* pointer to string buffer */ - int rab; /* is it a random-access buffer? */ -#if TEST_BSTRING - char name[ MAXVARNAMESIZE + 1 ]; /* name for test purposes */ -#endif - } bstring; -/* Structure used for all variables under Bywater BASIC */ +/*************************************************************** + + bwb_mes.h Header File for Natural-Language-Specific + Text Messages for Bywater BASIC Interpreter + + Copyright (c) 1993, Ted A. Campbell + Bywater Software + + email: tcamp@delphi.com + + Copyright and Permissions Information: + + All U.S. and international rights are claimed by the author, + Ted A. Campbell. + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + +***************************************************************/ -struct bwb_variable - { - char name[ MAXVARNAMESIZE + 1 ]; /* name */ - int type; /* type, i.e., STRING or NUMBER */ -#if OLDWAY - void *array; /* pointer to array memory */ -#endif - bnumber *memnum; /* memory for number */ - bstring *memstr; /* memory for string */ - size_t array_units; /* total number of units of memory */ - int *array_sizes; /* pointer to array of - integers, with sizes of each - dimension */ - int *array_pos; /* current position in array */ - int dimensions; /* number of dimensions, - 0 = not an array */ - struct bwb_variable *next; /* next variable in chain */ - int common; /* should this variable be common to chained programs? */ - int preset; /* preset variable: CLEAR should not alter */ - }; +/*---------------------------------------------------------------*/ +/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ +/* 11/1995 (eidetics@cerf.net). */ +/*---------------------------------------------------------------*/ -/* Structure to represent program lines under Bywater BASIC */ -struct bwb_line - { - struct bwb_line *next; /* pointer to next line in chain */ - int number; /* line number */ - char xnum; /* is there actually a line number? */ - char *buffer; /* buffer to hold the line */ - int position; /* current position in line */ - int lnpos; /* line number position in buffer */ - int lnum; /* line number read from buffer */ - int cmdpos; /* command position in buffer */ - int cmdnum; /* number of command in command table - read from buffer */ - int startpos; /* start of rest of line read from buffer */ - int marked; /* has line been checked yet? */ - }; - -/* Structure used for all predefined functions under Bywater BASIC */ +/* Standard English is taken as a default: if MES_SIGNON is not defined by + this time (i.e., by some other language definition), then + the following standard English definitions are utilized. */ -struct bwb_function - { - char name[ MAXVARNAMESIZE + 1 ]; /* name */ - int type; /* type, i.e., STRING or NUMBER */ - int arguments; /* number of args passed */ -#if ANSI_C - struct bwb_variable * (*vector) ( int argc, struct bwb_variable *argv, int unique_id ); /* vector to function to call */ -#else - struct bwb_variable * (*vector) (); /* vector to function to call */ +#ifndef MES_SIGNON +#define MES_SIGNON "Bywater BASIC Interpreter, version" +#define MES_COPYRIGHT_1 "Copyright (c) 1993, Ted A. Campbell" +#define MES_COPYRIGHT_2 "Copyright (c) 1995-1997, Jon B. Volkoff" +#define MES_COPYRIGHT_3 "Copyright (c) 2014-2015, Howard Wulf, AF5NE" +#define MES_LANGUAGE " " +#define ERROR_HEADER "ERROR in line" +#define ERRD_HEADER "ERROR" +#define MATHERR_HEADER "ERROR" +#define MES_BREAK "Program interrupted at line" +#define ERR_OPENFILE "Failed to open file %s" +#define ERR_GETMEM "Failed to find memory" +#define ERR_LINENO "Failed to link line number" +#define ERR_LNNOTFOUND "Line number %d not found" +#define ERR_LOADNOFN "LOAD: no filename specified" +#define ERR_NOLN "No line number" +#define ERR_NOFN "No file name" +#define ERR_RETNOGOSUB "RETURN without GOSUB" +#define ERR_INCOMPLETE "Incomplete statement" +#define ERR_ONNOGOTO "ON without GOTO or GOSUB" +#define ERR_VALOORANGE "Value is out of range" +#define ERR_SYNTAX "Syntax error" +#define ERR_DEVNUM "Invalid device number" +#define ERR_DEV "Device error" +#define ERR_OPSYS "Error in operating system command" +#define ERR_ARGSTR "Argument must be a string" +#define ERR_DEFCHAR "Incorrect argument for variable definition" +#define ERR_MISMATCH "Type mismatch" +#define ERR_DIMNOTARRAY "Argument is not an array name" +#define ERR_OD "Out of data" +#define ERR_OVERFLOW "Overflow" +#define ERR_NF "NEXT without FOR" +#define ERR_UF "Undefined function" +#define ERR_DBZ "Divide by zero" +#define ERR_REDIM "Variable cannot be redimensioned" +#define ERR_OBDIM "OPTION BASE must be called prior to DIM" +#define ERR_UC "Unknown command" +#define ERR_NOPROGFILE "Program file not specified" #endif - struct bwb_function *next; /* next function in chain */ - int id; /* id to identify multiple functions */ - }; - -/* Structure to represent all command statements under Bywater BASIC */ -struct bwb_command - { - char name[ MAXCMDNAMESIZE + 1 ]; -#if ANSI_C - struct bwb_line * (*vector) (struct bwb_line *); -#else - struct bwb_line * (*vector) (); -#endif - }; -/* Structure to define device stack for Bywater BASIC */ -struct dev_element - { - int mode; /* DEVMODE_ item */ - int width; /* width for output control */ - int col; /* current column */ - int reclen; /* record length for random access */ - int next_record; /* next record to read/write */ - int loc; /* location in file */ - int lof; /* length of file in bytes (JBV) */ - char filename[ MAXFILENAMESIZE + 1 ];/* filename */ - FILE *cfp; /* C file pointer for this device */ - char *buffer; /* pointer to character buffer for random access */ - }; -/* Structure to define expression stack elements under Bywater BASIC */ -struct exp_ese - { - int operation; /* operation at this level */ - char type; /* type of operation at this level: - STRING or NUMBER */ - bstring sval; /* string */ - bnumber nval; /* number */ - char string[ MAXSTRINGSIZE + 1 ]; /* string for writing */ - struct bwb_variable *xvar; /* pointer to external variable */ - struct bwb_function *function; /* pointer to function structure */ - int array_pos[ MAX_DIMS ]; /* array for variable positions */ - int pos_adv; /* position advanced in string */ - int rec_pos; /* position marker for recursive calls */ - }; - -/* structure for FUNCTION-SUB loopup table element */ -struct fslte - { - char *name; - struct bwb_line *line; - int code; - int startpos; /* starting position in line */ - struct fslte *next; - struct bwb_variable *local_variable; - }; -/* Structure to define EXEC stack elements */ -struct exse - { - struct bwb_line *line; /* line for execution */ - int code; /* code to note special operations */ - int position; /* position in line for restore */ - struct bwb_variable *local_variable; /* local variable chain and current FOR counter */ - struct bwb_variable *calling_variable[ MAX_FARGS ]; - int n_cvs; /* number of calling variables */ - int for_step; /* STEP value for FOR */ - int for_target; /* target value for FOR */ - struct bwb_line *while_line; /* return line for current WHILE */ - struct bwb_line *wend_line; /* breakout line for current WHILE (or FOR-NEXT) */ - struct exp_ese expression; /* expression for evaluation by SELECT CASE */ -#if MULTISEG_LINES - struct bwb_line *for_line; /* top line for FOR-NEXT loop, multisegmented */ - int for_position; /* position in top line for FOR-NEXT loop, multisegmented */ -#endif - }; - -struct xtxtsl - { - int position; - struct bwb_line l; - }; - -/* Structure to define bwBASIC task: UNDER CONSTRUCTION */ - -#if PARACT -struct bwb_task - { - char progfile[ MAXARGSIZE ]; /* program file */ - int rescan; /* program needs to be rescanned */ - int number; /* current line number */ - struct bwb_line *bwb_l; /* current line pointer */ - struct bwb_line bwb_start; /* starting line marker */ - struct bwb_line bwb_end; /* ending line marker */ - struct bwb_line *data_line; /* current line to read data */ - int data_pos; /* position in data_line */ - struct bwb_variable var_start; /* variable list start marker */ - struct bwb_variable var_end; /* variable list end marker */ - struct bwb_function fnc_start; /* function list start marker */ - struct bwb_function fnc_end; /* function list end marker */ - struct fslte fslt_start; /* function-sub-label lookup table start marker */ - struct fslte fslt_end; /* function-sub-label lookup table end marker */ - int exsc; /* EXEC stack counter */ - int expsc; /* expression stack counter */ - int xtxtsc; /* eXecute TeXT stack counter */ - struct exse excs[ EXECLEVELS ]; /* EXEC stack */ - struct exp_ese exps[ ESTACKSIZE ]; /* Expression stack */ - struct xtxtsl xtxts[ XTXTSTACKSIZE ];/* Execute Text stack */ - }; - -extern struct bwb_task *bwb_tasks[ TASKS ]; /* table of task pointers */ - -#else /* not multi-tasking */ - -extern char progfile[ MAXARGSIZE ]; /* program file */ -extern int rescan; /* program needs to be rescanned */ -extern int number; /* current line number */ -extern struct bwb_line *bwb_l; /* current line pointer */ -extern struct bwb_line bwb_start; /* starting line marker */ -extern struct bwb_line bwb_end; /* ending line marker */ -extern struct bwb_line *data_line; /* current line to read data */ -extern int data_pos; /* position in data_line */ -extern struct bwb_variable var_start; /* variable list start marker */ -extern struct bwb_variable var_end; /* variable list end marker */ -extern struct bwb_function fnc_start; /* function list start marker */ -extern struct bwb_function fnc_end; /* function list end marker */ -extern struct fslte fslt_start; /* function-sub-label lookup table start marker */ -extern struct fslte fslt_end; /* function-sub-label lookup table end marker */ -extern int exsc; /* EXEC stack counter */ -extern int expsc; /* expression stack counter */ -extern int xtxtsc; /* eXecute TeXT stack counter */ -extern struct exse *excs; /* EXEC stack */ -extern struct exp_ese *exps; /* Expression stack */ -extern struct xtxtsl *xtxts; /* Execute Text stack */ -#endif -extern int bwb_curtask; /* current task */ -extern struct bwb_variable *ed; /* EDITOR$ variable */ -extern struct bwb_variable *fi; /* FILES$ variable */ -extern struct bwb_variable *pr; /* PROMPT$ variable */ -extern struct bwb_variable *im; /* IMPLEMENTATION$ variable */ -extern struct bwb_variable *co; /* COLORS variable */ /*************************************************************** + + bwbasic.h Part II: Structures + +***************************************************************/ +typedef unsigned long OptionVersionType; /* OPTION VERSION bitmask, + * upto 32 flavors of BASIC */ - bwbasic.h Part III: Global Data -***************************************************************/ -extern char *bwb_ebuf; -extern int bwb_trace; -extern int dim_base; /* set by OPTION BASE */ -extern struct bwb_command bwb_cmdtable[ COMMANDS ]; -extern FILE *errfdevice; /* output device for error messages */ -extern int err_line; /* line in which error occurred */ -extern int err_number; /* number of last error */ -extern char err_gosubl[ MAXVARNAMESIZE + 1 ]; /* line for error GOSUB */ -extern char *err_table[ N_ERRORS ]; /* table of error messages */ -extern int prn_col; -extern struct bwb_function bwb_prefuncs[ FUNCTIONS ]; /* table of predefined functions */ - -#if COMMON_CMDS -extern struct dev_element *dev_table; /* table of devices */ -#endif +/* Typdef structure for strings under Bywater BASIC */ -/* Operator Structure and Table */ +typedef struct /* bstr */ +{ + /* unsigned int was unsigned char (JBV 9/4/97) */ + BasicStringLengthType length; /* length of string */ + char *sbuffer;/* pointer to string buffer */ + int rab; /* is it a random-access buffer? */ +} bstring; -struct bwb_op - { - char symbol[ 8 ]; /* BASIC symbol for the operator */ - int operation; /* internal code for the operator */ - int precedence; /* level of precedence, 0 = highest */ - }; +/* Structure used for all variables under Bywater BASIC */ -extern struct bwb_op exp_ops[ N_OPERATORS ]; /* the table itself, filled in in bwb_tbl.c */ +struct bwb_variable +{ + char name[BasicNameLengthMax + 1]; /* name */ + int type; /* type, i.e., STRING or NUMBER */ + BasicNumberType *memnum;/* memory for number */ + bstring *memstr; /* memory for string */ + size_t array_units; /* total number of units of memory, 1 + * == scalar */ + int *array_sizes; /* pointer to array of + * integers, with sizes of each + * dimension */ + int *array_pos; /* current position in array */ + int dimensions; /* number of dimensions, 0 = not an + * array */ + struct bwb_variable *next; /* next variable in chain */ + int common; /* should this variable be common to chained + * programs? */ + int preset; /* preset variable: CLEAR should not alter */ + int IsInDim; +}; -/*************************************************************** +/* Structure to represent program lines under Bywater BASIC */ - bwbasic.h Part IV: Function Prototypes +struct bwb_line +{ + struct bwb_line *next; /* pointer to next line in chain */ + BasicLineNumberType number; /* line number */ + char *buffer; /* buffer to hold the line */ + int position; /* current position in line */ + BasicUniqueType cmdnum; /* C_... */ + int Startpos; /* start of rest of line read from + * buffer */ + struct bwb_line *OtherLine; /* pointer to other line in loops */ + int Indention; + unsigned char LineFlags; /* '*' if executed, ' ' otherwise */ +}; + +/* Structure used for all INTRINSIC functions under Bywater BASIC */ -***************************************************************/ +struct bwb_function +{ + BasicUniqueType UniqueID; /* If USER, then LineNumber, else + * F_... */ + const char *Syntax; + const char *Description; + char Name[BasicNameLengthMax + 1]; + unsigned int ReturnType; /* MSB: 0x00==INTRINSIC, l->cmdnum; + * LSB == STRING or NUMBER */ + unsigned char ParameterCount; /* 0..MAX_FARGS, 255 == VARIANT (...) */ + unsigned long ParameterTypes; /* parameter signature, must hold + * MAX_FARGS bits */ + unsigned long ParameterTests; /* parameter checks , must hold 8 + * nibbles, only first 8 parameters */ + struct bwb_function *next; /* NextPointer */ + OptionVersionType OptionVersionBitmask; /* OPTION VERSION bitmask */ +}; + +/* Structure to represent all INTRINSIC commands under Bywater BASIC */ -#if ANSI_C -extern void *CALLOC(size_t nelem, size_t elsize, char *str); /* JBV */ -extern void FREE(void *ptr, char *str); /* JBV */ -extern void bwb_init( int argc, char **argv ); -extern int bwb_fload( FILE *file ); -extern int bwb_ladd( char *buffer, int replace ); -extern int bwb_findcmd( int argc, int a, struct bwb_line *l ); -extern struct bwb_line *bwb_xtxtline( char *buffer ); -extern void bwb_mainloop( void ); -extern void bwb_execline( void ); -extern int bwb_gets( char *buffer ); -extern int bwb_error( char *message ); -extern void break_handler( void ); -extern void break_mes( int x ); -extern struct bwb_line *bwb_null( struct bwb_line *l ); -extern struct bwb_line *bwb_rem( struct bwb_line *l ); -extern struct bwb_line *bwb_lerror( struct bwb_line *l ); -extern struct bwb_line *bwb_run( struct bwb_line *l ); -extern struct bwb_line *bwb_let( struct bwb_line *l ); -extern struct bwb_line *bwb_load( struct bwb_line *l ); -extern struct bwb_line *bwb_merge( struct bwb_line *l ); -extern struct bwb_line *bwb_chain( struct bwb_line *l ); -extern struct bwb_line *bwb_common( struct bwb_line *l ); -extern struct bwb_line *bwb_xload( struct bwb_line *l ); -extern struct bwb_line *bwb_new( struct bwb_line *l ); -extern struct bwb_line *bwb_save( struct bwb_line *l ); -extern struct bwb_line *bwb_list( struct bwb_line *l ); -extern struct bwb_line *bwb_xlist( struct bwb_line *l, FILE *file ); -extern struct bwb_line *bwb_go( struct bwb_line *l ); -extern struct bwb_line *bwb_goto( struct bwb_line *l ); -extern struct bwb_line *bwb_gosub( struct bwb_line *l ); -extern struct bwb_line *bwb_return( struct bwb_line *l ); -extern struct bwb_line *bwb_xend( struct bwb_line *l ); -extern struct bwb_line *bwb_system( struct bwb_line *l ); -extern struct bwb_line *bwb_tron( struct bwb_line *l ); -extern struct bwb_line *bwb_troff( struct bwb_line *l ); -extern struct bwb_line *bwb_randomize( struct bwb_line *l ); -extern struct bwb_line *bwb_stop( struct bwb_line *l ); -extern struct bwb_line *bwb_data( struct bwb_line *l ); -extern struct bwb_line *bwb_read( struct bwb_line *l ); -extern struct bwb_line *bwb_restore( struct bwb_line *l ); -extern struct bwb_line *bwb_delete( struct bwb_line *l ); -extern struct bwb_line *bwb_if( struct bwb_line *l ); -extern struct bwb_line *bwb_else( struct bwb_line *l ); -extern struct bwb_line *bwb_elseif( struct bwb_line *l ); -extern struct bwb_line *bwb_select( struct bwb_line *l ); -extern struct bwb_line *bwb_case( struct bwb_line *l ); -extern struct bwb_line *bwb_endselect( struct bwb_line *l ); -extern struct bwb_line *bwb_endif( struct bwb_line *l ); -extern struct bwb_line *bwb_while( struct bwb_line *l ); -extern struct bwb_line *bwb_wend( struct bwb_line *l ); -extern struct bwb_line *bwb_for( struct bwb_line *l ); -extern struct bwb_line *bwb_next( struct bwb_line *l ); -extern struct bwb_line *bwb_dim( struct bwb_line *l ); -extern struct bwb_line *bwb_option( struct bwb_line *l ); -extern struct bwb_line *bwb_open( struct bwb_line *l ); -extern struct bwb_line *bwb_close( struct bwb_line *l ); -extern struct bwb_line *bwb_get( struct bwb_line *l ); -extern struct bwb_line *bwb_put( struct bwb_line *l ); -extern struct bwb_line *bwb_rmdir( struct bwb_line *l ); -extern struct bwb_line *bwb_chdir( struct bwb_line *l ); -extern struct bwb_line *bwb_mkdir( struct bwb_line *l ); -extern struct bwb_line *bwb_kill( struct bwb_line *l ); -extern struct bwb_line *bwb_name( struct bwb_line *l ); -extern struct bwb_line *bwb_rset( struct bwb_line *l ); -extern struct bwb_line *bwb_lset( struct bwb_line *l ); -extern struct bwb_line *bwb_field( struct bwb_line *l ); -extern struct bwb_line *bwb_on( struct bwb_line *l ); -extern struct bwb_line *bwb_line( struct bwb_line *l ); -extern struct bwb_line *bwb_ddbl( struct bwb_line *l ); -extern struct bwb_line *bwb_dint( struct bwb_line *l ); -extern struct bwb_line *bwb_dsng( struct bwb_line *l ); -extern struct bwb_line *bwb_dstr( struct bwb_line *l ); -extern struct bwb_line *bwb_mid( struct bwb_line *l ); -extern struct bwb_line *bwb_clear( struct bwb_line *l ); -extern struct bwb_line *bwb_erase( struct bwb_line *l ); -extern struct bwb_line *bwb_swap( struct bwb_line *l ); -extern struct bwb_line *bwb_environ( struct bwb_line *l ); -extern struct bwb_line *bwb_width( struct bwb_line *l ); -extern struct bwb_line *bwb_write( struct bwb_line *l ); -extern struct bwb_line *bwb_edit( struct bwb_line *l ); -extern struct bwb_line *bwb_files( struct bwb_line *l ); -extern struct bwb_line *bwb_do( struct bwb_line *l ); -extern struct bwb_line *bwb_doloop( struct bwb_line *l ); -extern struct bwb_line *bwb_cls( struct bwb_line *l ); -extern struct bwb_line *bwb_locate( struct bwb_line *l ); -extern struct bwb_line *bwb_color( struct bwb_line *l ); -extern struct bwb_line *bwb_do( struct bwb_line *l ); -extern struct bwb_line *bwb_loop( struct bwb_line *l ); -extern struct bwb_line *bwb_exit( struct bwb_line *l ); -extern struct bwb_line *bwb_exitfor( struct bwb_line *l ); -extern struct bwb_line *bwb_exitdo( struct bwb_line *l ); - -extern struct bwb_line *bwb_zline( struct bwb_line *l ); - -extern void bwb_incexec( void ); -extern void bwb_decexec( void ); -extern int bwb_setexec( struct bwb_line *l, int position, int code ); -extern int bwb_getcnd( char *lb, char *lhs, char *rhs, char *op, int *n ); -extern int bwb_getlhs( char *lb, char *lhs, int *n ); -extern int bwb_getop( char *lb, char *op, int *n ); -extern int bwb_getrhs( char *lb, char *rhs, int *n ); -extern int bwb_evalcnd( char *lhs, char *rhs, char *op ); -extern int bwb_isstr( char *b ); -extern int eval_int( int l, int r, char *op ); -extern int eval_sng( float l, float r, char *op ); -extern int eval_dbl( double l, double r, char *op ); -extern struct exp_ese *bwb_exp( char *expression, int assignment, int *position ); -extern int exp_getvfname( char *source, char *destination ); -extern int exp_operation( int entry_level ); -extern int inc_esc( void ); -extern int dec_esc( void ); -extern int fnc_init( int task ); -extern struct bwb_function *fnc_find( char *buffer ); -extern struct bwb_line *bwb_def( struct bwb_line *l ); -extern int bwb_getargs( char *buffer ); -extern int bwb_stripcr( char *s ); -extern int bwb_numseq( char *buffer, int *start, int *end ); -extern int bwb_freeline( struct bwb_line *l ); -extern struct bwb_line *bwb_print( struct bwb_line *l ); -extern int bwb_xprint( struct bwb_line *l, FILE *f ); -extern int bwb_eltype( char *l_buffer, int p ); -extern int var_init( int task ); -extern int fslt_init( int task ); -extern int var_delcvars( void ); -extern struct bwb_variable *var_new( char *name ); -extern struct bwb_variable *var_islocal( char *buffer ); -extern int bwb_strel( char *lb, char *sb, int *n ); -extern struct bwb_variable *bwb_numel( char *lb, int *n ); -extern int bwb_const( char *lb, char *sb, int *n ); -extern int bwb_getvarname( char *lb, char *sb, int *n ); -extern struct bwb_variable *var_find( char *buffer ); -extern int bwb_isvar( char *buffer ); -extern struct bwb_line *bwb_input( struct bwb_line *l ); -extern int inp_adv( char *b, int *c ); -extern int var_make( struct bwb_variable *v, int type ); -extern bstring *var_getsval( struct bwb_variable *nvar ); -extern bstring *var_findsval( struct bwb_variable *v, int *pp ); -extern bstring *exp_getsval( struct exp_ese *e ); -extern int dim_getparams( char *buffer, int *pos, int *n_params, int **pp ); -extern int adv_element( char *buffer, int *pos, char *element ); -extern int adv_ws( char *buffer, int *pos ); -#if MULTISEG_LINES -extern int adv_eos( char *buffer, int *pos ); -#endif -extern int line_start( char *buffer, int *pos, int *lnpos, int *lnum, - int *cmdpos, int *cmdnum, int *startpos ); -extern int is_cmd( char *buffer, int *cmdnum ); -extern int is_let( char *buffer, int *cmdnum ); -extern int is_eol( char *buffer, int *position ); -extern int is_numconst( char *buffer ); -extern int is_label( char *buffer ); -extern struct bwb_line * find_label( char *buffer ); -extern struct bwb_line *find_loop( struct bwb_line *l ); -extern int int_qmdstr( char *buffer_a, char *buffer_b ); -extern struct bwb_line * cnd_xpline( struct bwb_line *l, char *buffer ); -extern int scan_element( char *buffer, int *pos, char *element ); - -extern int prn_precision( struct bwb_variable *v ); -extern int * prn_getcol( FILE *f ); -extern int prn_getwidth( FILE *f ); -extern int prn_xprintf( FILE *f, char *buffer ); -extern int prn_xxprintf( FILE *f, char *buffer ); /* JBV */ -extern int bwb_strtoupper( char *buffer ); -extern int getcmdnum( char *cmdstr ); - -extern int str_btoc( char *buffer, bstring *s ); -extern int str_btob( bstring *d, bstring *s ); -extern int str_ctob( bstring *s, char *buffer ); -extern int str_cmp( bstring *s, bstring *t ); -extern bstring * str_cat( bstring *s, bstring *t ); -extern int exp_findop( char *expression ); -extern int exp_isop( char *expression ); -extern int exp_isfn( char *expression ); -extern int exp_isufn( char *expression ); -extern int exp_isnc( char *expression ); -extern int exp_isvn( char *expression ); -extern int exp_iscmd( char *expression ); -extern int exp_paren( char *expression ); -extern int exp_strconst( char *expression ); -extern int exp_numconst( char *expression ); -extern int exp_function( char *expression ); -extern int exp_ufnc( char *expression ); -extern int exp_variable( char *expression ); -extern int exp_validarg( char *expression ); -extern int ln_asbuf( struct bwb_line *l, char *s ); -extern int xputc( FILE *f, char c ); -extern int bwx_signon( void ); -extern int bwx_message( char *m ); -extern int bwx_putc( char c ); -extern int bwx_errmes( char *m ); -extern int bwx_input( char *prompt, char *buffer ); -extern void bwx_terminate( void ); - -#if COMMAND_SHELL -extern int bwx_shell( struct bwb_line *l ); -#endif +struct bwb_command +{ + BasicUniqueType id; /* C_... */ + const char *Syntax; + const char *Description; + char name[BasicNameLengthMax + 1]; + OptionVersionType OptionVersionBitmask; /* OPTION VERSION bitmask */ +}; -int bwb_scan( void ); -struct bwb_line *bwb_call( struct bwb_line *l ); -struct bwb_line *bwb_sub( struct bwb_line *l ); -struct bwb_line *bwb_endsub( struct bwb_line *l ); -struct bwb_line *bwb_endfnc( struct bwb_line *l ); -struct bwb_line *bwb_function( struct bwb_line *l ); -extern bnumber var_getnval( struct bwb_variable *nvar ); -extern bnumber *var_findnval( struct bwb_variable *v, int *pp ); -extern bnumber exp_getnval( struct exp_ese *e ); -extern bnumber *exp_findnval( struct exp_ese *e ); +/* Structure to define DEVICE (file) for Bywater BASIC */ -#if PARACT -extern int bwb_newtask( int task_requested ); -#endif +struct dev_element +{ + int mode; /* DEVMODE_ item */ + int width; /* width for OUTPUT (and APPEND); record + * length for RANDOM; not used for INPUT or + * BINARY */ + int col; /* current column */ + char filename[FILENAME_MAX + 1]; /* filename */ + FILE *cfp; /* C file pointer for this device */ + char *buffer; /* pointer to character buffer for RANDOM */ +}; -#if INTERACTIVE -extern int bwb_interact( void ); -#endif +/* Structure to define expression stack elements under Bywater BASIC */ -#if DEBUG -extern int bwb_debug( char *message ); -extern struct bwb_line *bwb_cmds( struct bwb_line *l ); -extern struct bwb_line *bwb_vars( struct bwb_line *l ); -extern struct bwb_line *bwb_fncs( struct bwb_line *l ); -#endif +struct exp_ese +{ + int operation; /* operation at this level */ + char type; /* type of operation at this level: STRING or + * NUMBER */ + bstring sval; /* string */ + BasicNumberType nval; /* number */ + char string[BasicStringLengthMax + 1]; /* string for writing */ + struct bwb_variable *xvar; /* pointer to external variable */ + struct bwb_function *function; /* pointer to function structure */ + int array_pos[MAX_DIMS]; /* array for variable + * positions */ + int pos_adv;/* position advanced in string */ + int rec_pos;/* position marker for recursive calls */ +}; + +/* structure for FUNCTION-SUB lookup table element */ -#ifdef ALLOW_RENUM -extern struct bwb_line *bwb_renum( struct bwb_line *l ); -#endif +struct fslte +{ + char *name; + unsigned char ParameterCount; /* 0..MAX_FARGS, 255 == VARIANT (...) */ + unsigned long ParameterTypes; /* parameter signature, must hold + * MAX_FARGS bits */ + struct bwb_line *line; + int startpos; /* starting position in line */ + struct fslte *next; + struct bwb_variable *local_variable; + OptionVersionType OptionVersionBitmask; /* OPTION VERSION bitmask */ +}; -#if UNIX_CMDS -#if !HAVE_UNISTD /* Not needed if one has (JBV) */ -extern int rmdir( char *path ); -extern int chdir( char *path ); -#endif -#if !HAVE_SYSSTAT /* Not needed if one has (JBV) */ -#if MKDIR_ONE_ARG -extern int mkdir( char *path ); -#else -extern int mkdir( char *path, unsigned short permissions ); -#endif /* JBV */ -#endif -#endif +/* Structure to define EXEC stack elements */ -/* declarations of function commands */ +struct exse +{ + struct bwb_line *line; /* line for execution */ + int code; /* EXEC_... */ + struct bwb_variable *local_variable; /* local variable chain and + * current FOR counter + * variable */ + BasicNumberType for_step; /* STEP value of FOR */ + BasicNumberType for_target; /* target value of FOR */ + struct bwb_line *LoopTopLine; /* top line of FOR, DO, WHILE, UNTIL */ + struct bwb_line *LoopBottomLine; /* bottom line of NEXT, LOOP, + * WEND, UEND */ + BasicLineNumberType OnErrorGoto; /* ON ERROR GOTO line */ + struct exp_ese expression; /* expression of SELECT CASE */ +}; + + +/* Structure to define bwBASIC task: REMOVED */ + +/* Structure to define OPERATORS, such as +, -, *, /, and so on */ -extern struct bwb_variable *fnc_null( int argc, struct bwb_variable *argv, int unique_id ); -#if COMPRESS_FUNCS -extern struct bwb_variable *fnc_core( int argc, struct bwb_variable *argv, int unique_id ); -#else -extern struct bwb_variable *fnc_abs( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_atn( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_cos( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_log( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_sin( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_sqr( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_sgn( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_int( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_rnd( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_exp( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_tan( int argc, struct bwb_variable *argv, int unique_id ); -#endif -extern struct bwb_variable *fnc_tab( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_date( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_time( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_chr( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_mid( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_left( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_right( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_timer( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_val( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_len( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_hex( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_oct( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_cint( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_asc( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_mkd( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_mki( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_mks( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_cvi( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_cvd( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_cvs( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_string( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_spc( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_space( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_environ( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_pos( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_err( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_erl( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_loc( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_lof( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_eof( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_csng( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_instr( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_str( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable * fnc_inkey( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_cosh( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_sinh( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_tanh( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_log10( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_log2( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_acos( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_asin( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_cotan( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_secant( int argc, struct bwb_variable *argv, int unique_id ); -extern struct bwb_variable *fnc_cosecant( int argc, struct bwb_variable *argv, int unique_id ); - -extern bnumber trnc_int( bnumber x ); -extern int fnc_checkargs( int argc, struct bwb_variable *argv, - int min, int max ); -extern int ufsc; /* user function stack counter */ - -#if DEBUG || INTENSIVE_DEBUG -extern struct bwb_variable *fnc_test( int argc, struct bwb_variable *argv, int unique_id ); -#endif +struct bwb_op +{ + const char *symbol /* [ 8 ] */ ; /* BASIC symbol for the + * operator */ + const int operation; /* internal code for the operator */ + const int precedence; /* level of precedence, 0 = highest */ + OptionVersionType OptionVersionBitmask; /* OPTION VERSION + * bitmask */ +}; + +/* Structure to define VERSION information, for OPTION VERSION command */ + +struct bwb_version +{ + char *Name; + OptionVersionType OptionVersionBitmask; /* OPTION VERSION bitmask */ + char *Description; + unsigned short Year; + char *ID; + char OptionCommentChar; + char OptionStatementChar; + unsigned short OptionFlags; + char *OptionDateFormat; + char *OptionTimeFormat; +}; -#else /* ANSI_C */ - -extern void *CALLOC(); /* JBV */ -extern void FREE(); /* JBV */ -extern void bwb_init(); -extern int bwb_fload(); -extern int bwb_ladd(); -extern int bwb_findcmd(); -extern struct bwb_line *bwb_xtxtline(); -extern void bwb_mainloop(); -extern void bwb_execline(); -extern int bwb_gets(); -extern int bwb_error(); -extern void break_handler(); -extern void break_mes(); -extern struct bwb_line *bwb_null(); -extern struct bwb_line *bwb_rem(); -extern struct bwb_line *bwb_lerror(); -extern struct bwb_line *bwb_run(); -extern struct bwb_line *bwb_let(); -extern struct bwb_line *bwb_load(); -extern struct bwb_line *bwb_merge(); -extern struct bwb_line *bwb_chain(); -extern struct bwb_line *bwb_common(); -extern struct bwb_line *bwb_xload(); -extern struct bwb_line *bwb_new(); -extern struct bwb_line *bwb_save(); -extern struct bwb_line *bwb_list(); -extern struct bwb_line *bwb_xlist(); -extern struct bwb_line *bwb_go(); -extern struct bwb_line *bwb_goto(); -extern struct bwb_line *bwb_gosub(); -extern struct bwb_line *bwb_return(); -extern struct bwb_line *bwb_xend(); -extern struct bwb_line *bwb_system(); -extern struct bwb_line *bwb_tron(); -extern struct bwb_line *bwb_troff(); -extern struct bwb_line *bwb_randomize(); -extern struct bwb_line *bwb_stop(); -extern struct bwb_line *bwb_data(); -extern struct bwb_line *bwb_read(); -extern struct bwb_line *bwb_restore(); -extern struct bwb_line *bwb_delete(); -extern struct bwb_line *bwb_if(); -extern struct bwb_line *bwb_else(); -extern struct bwb_line *bwb_elseif(); -extern struct bwb_line *bwb_select(); -extern struct bwb_line *bwb_case(); -extern struct bwb_line *bwb_endselect(); -extern struct bwb_line *bwb_endif(); -extern struct bwb_line *bwb_while(); -extern struct bwb_line *bwb_wend(); -extern struct bwb_line *bwb_for(); -extern struct bwb_line *bwb_next(); -extern struct bwb_line *bwb_dim(); -extern struct bwb_line *bwb_option(); -extern struct bwb_line *bwb_open(); -extern struct bwb_line *bwb_close(); -extern struct bwb_line *bwb_get(); -extern struct bwb_line *bwb_put(); -extern struct bwb_line *bwb_rmdir(); -extern struct bwb_line *bwb_chdir(); -extern struct bwb_line *bwb_mkdir(); -extern struct bwb_line *bwb_kill(); -extern struct bwb_line *bwb_name(); -extern struct bwb_line *bwb_rset(); -extern struct bwb_line *bwb_lset(); -extern struct bwb_line *bwb_field(); -extern struct bwb_line *bwb_on(); -extern struct bwb_line *bwb_line(); -extern struct bwb_line *bwb_ddbl(); -extern struct bwb_line *bwb_dint(); -extern struct bwb_line *bwb_dsng(); -extern struct bwb_line *bwb_dstr(); -extern struct bwb_line *bwb_mid(); -extern struct bwb_line *bwb_clear(); -extern struct bwb_line *bwb_erase(); -extern struct bwb_line *bwb_swap(); -extern struct bwb_line *bwb_environ(); -extern struct bwb_line *bwb_width(); -extern struct bwb_line *bwb_write(); -extern struct bwb_line *bwb_edit(); -extern struct bwb_line *bwb_files(); -extern struct bwb_line *bwb_do(); -extern struct bwb_line *bwb_doloop(); -extern struct bwb_line *bwb_cls(); -extern struct bwb_line *bwb_locate(); -extern struct bwb_line *bwb_color(); -extern struct bwb_line *bwb_do(); -extern struct bwb_line *bwb_loop(); -extern struct bwb_line *bwb_exit(); -extern struct bwb_line *bwb_exitfor(); -extern struct bwb_line *bwb_exitdo(); - -extern struct bwb_line *bwb_zline(); - -extern void bwb_incexec(); -extern void bwb_decexec(); -extern int bwb_setexec(); -extern int bwb_getcnd(); -extern int bwb_getlhs(); -extern int bwb_getop(); -extern int bwb_getrhs(); -extern int bwb_evalcnd(); -extern int bwb_isstr(); -extern int eval_int(); -extern int eval_sng(); -extern int eval_dbl(); -extern struct exp_ese *bwb_exp(); -extern int exp_getvfname(); -extern int exp_operation(); -extern int inc_esc(); -extern int dec_esc(); -extern int fnc_init(); -extern struct bwb_function *fnc_find(); -extern struct bwb_line *bwb_def(); -extern int bwb_getargs(); -extern int bwb_stripcr(); -extern int bwb_numseq(); -extern int bwb_freeline(); -extern struct bwb_line *bwb_print(); -extern int bwb_xprint(); -extern int bwb_eltype(); -extern int var_init(); -extern int fslt_init(); -extern int var_delcvars(); -extern struct bwb_variable *var_new(); -extern struct bwb_variable *var_islocal(); -extern int bwb_strel(); -extern struct bwb_variable *bwb_numel(); -extern int bwb_const(); -extern int bwb_getvarname(); -extern struct bwb_variable *var_find(); -extern int bwb_isvar(); -extern struct bwb_line *bwb_input(); -extern int inp_adv(); -extern int var_make(); -extern bstring *var_getsval(); -extern bstring *var_findsval(); -extern bstring *exp_getsval(); -extern int dim_getparams(); -extern int adv_element(); -extern int adv_ws(); -#if MULTISEG_LINES -extern int adv_eos(); -#endif -extern int line_start(); -extern int is_cmd(); -extern int is_let(); -extern int is_eol(); -extern int is_numconst(); -extern int is_label(); -extern struct bwb_line * find_label(); -extern struct bwb_line *find_loop(); -extern int int_qmdstr(); -extern struct bwb_line * cnd_xpline(); -extern int scan_element(); - -extern int prn_precision(); -extern int * prn_getcol(); -extern int prn_getwidth(); -extern int prn_xprintf(); -extern int prn_xxprintf(); /* JBV */ -extern int bwb_strtoupper(); -extern int getcmdnum(); - -extern int str_btoc(); -extern int str_btob(); -extern int str_ctob(); -extern int str_cmp(); -extern bstring * str_cat(); -extern int exp_findop(); -extern int exp_isop(); -extern int exp_isfn(); -extern int exp_isufn(); -extern int exp_isnc(); -extern int exp_isvn(); -extern int exp_iscmd(); -extern int exp_paren(); -extern int exp_strconst(); -extern int exp_numconst(); -extern int exp_function(); -extern int exp_ufnc(); -extern int exp_variable(); -extern int exp_validarg(); -extern int ln_asbuf(); -extern int xputc(); -extern int bwx_signon(); -extern int bwx_message(); -extern int bwx_putc(); -extern int bwx_errmes(); -extern int bwx_input(); -extern void bwx_terminate(); - -#if COMMAND_SHELL -extern int bwx_shell(); -#endif -int bwb_scan(); -struct bwb_line *bwb_call(); -struct bwb_line *bwb_sub(); -struct bwb_line *bwb_endsub(); -struct bwb_line *bwb_endfnc(); -struct bwb_line *bwb_function(); -extern bnumber var_getnval(); -extern bnumber *var_findnval(); -extern bnumber exp_getnval(); -extern bnumber *exp_findnval(); -#if PARACT -extern int bwb_newtask(); -#endif +/*************************************************************** + + bwbasic.h Part III: Global Data + +***************************************************************/ -#if INTERACTIVE -extern int bwb_interact(); -#endif -#if DEBUG -extern int bwb_debug(); -extern struct bwb_line *bwb_cmds(); -extern struct bwb_line *bwb_vars(); -extern struct bwb_line *bwb_fncs(); -#endif -#ifdef ALLOW_RENUM -extern struct bwb_line *bwb_renum(); -#endif +extern struct bwb_variable *ed; /* EDITOR$ variable */ +extern struct bwb_variable *fi; /* FILES$ variable */ +extern struct bwb_variable *pr; /* PROMPT$ variable */ +extern struct bwb_variable *im; /* IMPLEMENTATION$ variable */ +extern struct bwb_variable *co; /* COLORS variable */ + +extern char progfile[FILENAME_MAX + 1]; /* program filename */ +extern int rescan; /* program needs to be rescanned */ +extern int number; /* current line number */ +extern struct bwb_line *bwb_l; /* current line pointer */ +extern struct bwb_line bwb_start; /* starting line marker */ +extern struct bwb_line bwb_end; /* ending line marker */ +extern struct bwb_line *data_line; /* current line to read data */ +extern int data_pos; /* position in data_line */ +extern struct bwb_variable var_start; /* variable list start marker */ +extern struct bwb_variable var_end; /* variable list end marker */ +extern struct bwb_function fnc_start; /* function list start marker */ +extern struct bwb_function fnc_end; /* function list end marker */ +extern struct fslte fslt_start; /* function-sub-label lookup table start + * marker */ +extern struct fslte fslt_end; /* function-sub-label lookup table end marker */ +extern int exsc; /* EXEC stack counter */ +extern int expsc; /* expression stack counter */ +extern struct exse *excs; /* EXEC stack */ +extern struct exp_ese *exps; /* Expression stack */ +extern int bwb_curtask; /* current task */ + +extern char *bwb_ebuf; +extern int bwb_trace; +extern int dim_base; /* set by OPTION BASE */ +extern int option_degrees; /* set by OPTION ANGLE */ +extern FILE *errfdevice; /* output device for error messages */ +extern struct bwb_line *err_line; /* ERL */ +extern int err_number; /* ERR */ +#if 0 +extern char err_gosubl[BasicNameLengthMax + 1]; /* line for error GOSUB */ +extern int err_fired; +#endif +extern char ErrMsg[256]; /* ERR$ */ +extern int stopped_line; +extern struct dev_element *dev_table; /* table of devices */ +extern struct bwb_op exp_ops[NUM_OPERATORS]; /* the table itself, filled + * in in bwb_tbl.c */ +extern struct bwb_command bwb_cmdtable[NUM_COMMANDS]; /* */ +extern struct bwb_function bwb_prefuncs[NUM_FUNCTIONS]; /* table of predefined + * functions */ +/* OptionVersionBitmask values for compatibility via OPTION VERSION ... */ +extern struct bwb_version bwb_vertable[NUM_VERSIONS]; +extern OptionVersionType OptionVersion; /* VersionBitmask for compatibility + * via OPTION VERSION ... */ +extern char OptionCommentChar; /* ', ! */ +extern char OptionStatementChar; /* :, \ */ +extern unsigned short OptionFlags; +extern char OptionDateFormat[81]; +extern char OptionTimeFormat[81]; +extern int OptionIndentValue; +extern int OptionTerminalType; + +extern BasicLineNumberType tmr_gotol; +extern BasicNumberType tmr_count; +extern BasicNumberType tmr_expires; + +extern int IsInteractive; +extern int IsCommandLineFile; +extern int LPRINT_COLUMN; /* LPRINT_FILE_NUMBER */ +extern int LPRINT_WIDTH; /* LPRINT_FILE_NUMBER */ +extern int LPRINT_NULLS; /* LPRINT_FILE_NUMBER */ +extern jmp_buf mark; + +#if AUTOMATED_REGRESSION +extern FILE *ExternalInputFile; /* for automated testing - INPUT + * responses */ +#endif /* AUTOMATED_REGRESSION */ +extern int MaintainerDebugOn; +extern int DefaultVariableType[26]; /* bwb_variable->type, A-Z */ + + + +/**************************************************************** + + External Definitions for Error Messages + +****************************************************************/ +extern char err_openfile[]; +extern char err_getmem[]; +extern char err_noln[]; +extern char err_nofn[]; +extern char err_lnnotfound[]; +extern char err_incomplete[]; +extern char err_valoorange[]; +extern char err_syntax[]; +extern char err_devnum[]; +extern char err_dev[]; +extern char err_opsys[]; +extern char err_argstr[]; +extern char err_defchar[]; +extern char err_mismatch[]; +extern char err_dimnotarray[]; +extern char err_retnogosub[]; +extern char err_od[]; +extern char err_overflow[]; +extern char err_nf[]; +extern char err_uf[]; +extern char err_dbz[]; +extern char err_redim[]; +extern char err_obdim[]; +extern char err_uc[]; +extern char err_noprogfile[]; -#if UNIX_CMDS -extern int rmdir(); -extern int chdir(); -#if MKDIR_ONE_ARG -extern int mkdir(); -#else -extern int mkdir(); -#endif -#endif -/* declarations of function commands */ -extern struct bwb_variable *fnc_null(); -#if COMPRESS_FUNCS -extern struct bwb_variable *fnc_core(); -#else -extern struct bwb_variable *fnc_abs(); -extern struct bwb_variable *fnc_atn(); -extern struct bwb_variable *fnc_cos(); -extern struct bwb_variable *fnc_log(); -extern struct bwb_variable *fnc_sin(); -extern struct bwb_variable *fnc_sqr(); -extern struct bwb_variable *fnc_sgn(); -extern struct bwb_variable *fnc_int(); -extern struct bwb_variable *fnc_rnd(); -extern struct bwb_variable *fnc_exp(); -extern struct bwb_variable *fnc_tan(); -#endif -extern struct bwb_variable *fnc_tab(); -extern struct bwb_variable *fnc_date(); -extern struct bwb_variable *fnc_time(); -extern struct bwb_variable *fnc_chr(); -extern struct bwb_variable *fnc_mid(); -extern struct bwb_variable *fnc_left(); -extern struct bwb_variable *fnc_right(); -extern struct bwb_variable *fnc_timer(); -extern struct bwb_variable *fnc_val(); -extern struct bwb_variable *fnc_len(); -extern struct bwb_variable *fnc_hex(); -extern struct bwb_variable *fnc_oct(); -extern struct bwb_variable *fnc_cint(); -extern struct bwb_variable *fnc_asc(); -extern struct bwb_variable *fnc_mkd(); -extern struct bwb_variable *fnc_mki(); -extern struct bwb_variable *fnc_mks(); -extern struct bwb_variable *fnc_cvi(); -extern struct bwb_variable *fnc_cvd(); -extern struct bwb_variable *fnc_cvs(); -extern struct bwb_variable *fnc_string(); -extern struct bwb_variable * fnc_spc(); -extern struct bwb_variable * fnc_space(); -extern struct bwb_variable * fnc_environ(); -extern struct bwb_variable * fnc_pos(); -extern struct bwb_variable * fnc_err(); -extern struct bwb_variable * fnc_erl(); -extern struct bwb_variable * fnc_loc(); -extern struct bwb_variable * fnc_lof(); -extern struct bwb_variable * fnc_eof(); -extern struct bwb_variable * fnc_csng(); -extern struct bwb_variable * fnc_instr(); -extern struct bwb_variable * fnc_str(); -extern struct bwb_variable * fnc_inkey(); - -extern bnumber trnc_int(); -extern int fnc_checkargs(); -extern int ufsc; /* user function stack counter */ - -#if DEBUG -extern struct bwb_variable *fnc_test(); -#endif +/*************************************************************** + + bwbasic.h Part IV: Function Prototypes + +***************************************************************/ -#endif /* ANSI_C */ - -#if COMPRESS_FUNCS -#define F_ABS 1 -#define F_ATN 2 -#define F_COS 3 -#define F_EXP 4 -#define F_INT 5 -#define F_LOG 6 -#define F_RND 7 -#define F_SGN 8 -#define F_SIN 9 -#define F_SQR 10 -#define F_TAN 11 -#endif + + +extern BasicNumberType +fnc_timer(BasicNumberType Seconds); +extern void +bwb_Timer_On(void); +extern void +bwb_Timer_Off(void); +extern struct bwb_line * +bwb_ON_TIMER(struct bwb_line * l); +extern struct bwb_line * +bwb_TIMER(struct bwb_line * l); +extern struct bwb_line * +bwb_TIMER_OFF(struct bwb_line * l); +extern struct bwb_line * +bwb_TIMER_ON(struct bwb_line * l); +extern struct bwb_line * +bwb_TIMER_STOP(struct bwb_line * l); +extern int +adv_element(char *buffer, int *pos, char *element); +extern int +adv_eos(char *buffer, int *pos); +extern int +adv_ws(char *buffer, int *pos); +extern void +BasicNumerc(BasicNumberType Input, char *Output); +extern void +break_mes(int x); +extern struct bwb_line * +bwb_CALL(struct bwb_line * l); +extern struct bwb_line * +bwb_CASE(struct bwb_line * l); +extern struct bwb_line * +bwb_CASE_ELSE(struct bwb_line * l); +extern struct bwb_line * +bwb_CASE_IF(struct bwb_line * l); +extern struct bwb_line * +bwb_CASE_IS(struct bwb_line * l); +extern struct bwb_line * +bwb_CHAIN(struct bwb_line * l); +extern struct bwb_line * +bwb_CHANGE(struct bwb_line * l); +extern struct bwb_line * +bwb_CLEAR(struct bwb_line * l); +extern struct bwb_line * +bwb_CLOAD(struct bwb_line * l); +extern struct bwb_line * +bwb_CLOAD_(struct bwb_line * l); +extern struct bwb_line * +bwb_CMDS(struct bwb_line * l); +extern struct bwb_line * +bwb_COMMON(struct bwb_line * l); +extern int +bwb_const(char *lb, char *sb, int *n); +extern struct bwb_line * +bwb_CONT(struct bwb_line * l); +extern struct bwb_line * +bwb_CSAVE(struct bwb_line * l); +extern struct bwb_line * +bwb_CSAVE_(struct bwb_line * l); +extern struct bwb_line * +bwb_DATA(struct bwb_line * l); +extern void +bwb_decexec(void); +extern struct bwb_line * +bwb_DEF(struct bwb_line * l); +extern struct bwb_line * +bwb_DEFDBL(struct bwb_line * l); +extern struct bwb_line * +bwb_DEFINT(struct bwb_line * l); +extern struct bwb_line * +bwb_DEFSNG(struct bwb_line * l); +extern struct bwb_line * +bwb_DEFSTR(struct bwb_line * l); +extern struct bwb_line * +bwb_DEF_SUB(struct bwb_line * l); +extern struct bwb_line * +bwb_DELETE(struct bwb_line * l); +extern struct bwb_line * +bwb_DIM(struct bwb_line * l); +extern struct bwb_line * +bwb_DO(struct bwb_line * l); +extern struct bwb_line * +bwb_DO_UNTIL(struct bwb_line * l); +extern struct bwb_line * +bwb_DO_WHILE(struct bwb_line * l); +extern struct bwb_line * +bwb_ELSE(struct bwb_line * l); +extern struct bwb_line * +bwb_ELSEIF(struct bwb_line * l); +extern struct bwb_line * +bwb_END(struct bwb_line * l); +extern struct bwb_line * +bwb_END_FUNCTION(struct bwb_line * l); +extern struct bwb_line * +bwb_END_IF(struct bwb_line * l); +extern struct bwb_line * +bwb_END_SELECT(struct bwb_line * l); +extern struct bwb_line * +bwb_END_SUB(struct bwb_line * l); +extern struct bwb_line * +bwb_ERASE(struct bwb_line * l); +extern int +bwb_error(char *message); +extern struct bwb_variable * +bwb_etov(struct bwb_variable * dst, struct exp_ese * src); +extern void +bwb_execline(void); +extern struct bwb_line * +bwb_EXIT(struct bwb_line * l); +extern struct bwb_line * +bwb_EXIT_DO(struct bwb_line * l); +extern struct bwb_line * +bwb_EXIT_FOR(struct bwb_line * l); +extern struct bwb_line * +bwb_EXIT_FUNCTION(struct bwb_line * l); +extern struct bwb_line * +bwb_EXIT_SUB(struct bwb_line * l); +extern struct bwb_line * +bwb_EXIT_UNTIL(struct bwb_line * l); +extern struct bwb_line * +bwb_EXIT_WHILE(struct bwb_line * l); +extern struct exp_ese * +bwb_exp(char *expression, int assignment, int *position); +extern struct bwb_line * +bwb_FIELD(struct bwb_line * l); +extern int +bwb_fload(FILE * file); +extern struct bwb_line * +bwb_FNCS(struct bwb_line * l); +extern struct bwb_line * +bwb_FOR(struct bwb_line * l); +extern int +bwb_freeline(struct bwb_line * l); +extern struct bwb_line * +bwb_FUNCTION(struct bwb_line * l); +extern int +bwb_gets(char *buffer); +extern int +bwb_getvarname(char *lb, char *sb, int *n); +extern struct bwb_line * +bwb_GO(struct bwb_line * l); +extern struct bwb_line * +bwb_GOSUB(struct bwb_line * l); +extern struct bwb_line * +bwb_GOTO(struct bwb_line * l); +extern struct bwb_line * +bwb_HELP(struct bwb_line * l); +extern struct bwb_line * +bwb_IF(struct bwb_line * l); +extern struct bwb_line * +bwb_IF_THEN(struct bwb_line * l); +extern void +bwb_incexec(void); +extern void +bwb_init(int argc, char **argv); +extern struct bwb_line * +bwb_INPUT(struct bwb_line * l); +extern int +bwb_interact(void); +extern int +bwb_isvar(char *buffer); +extern int +bwb_ladd(char *buffer, struct bwb_line * p); +extern struct bwb_line * +bwb_LET(struct bwb_line * l); +extern struct bwb_line * +bwb_LINE(struct bwb_line * l); +extern struct bwb_line * +bwb_LIST(struct bwb_line * l); +extern struct bwb_line * +bwb_LOAD(struct bwb_line * l); +extern struct bwb_line * +bwb_LOOP(struct bwb_line * l); +extern struct bwb_line * +bwb_LOOP_UNTIL(struct bwb_line * l); +extern struct bwb_line * +bwb_LOOP_WHILE(struct bwb_line * l); +extern struct bwb_line * +bwb_LPRINT(struct bwb_line * l); +extern struct bwb_line * +bwb_LSET(struct bwb_line * l); +extern void +bwb_mainloop(void); +extern struct bwb_line * +bwb_MAINTAINER(struct bwb_line * l); +extern struct bwb_line * +bwb_MERGE(struct bwb_line * l); +extern struct bwb_line * +bwb_MID_(struct bwb_line * l); +extern struct bwb_line * +bwb_NAME(struct bwb_line * l); +extern struct bwb_line * +bwb_NEW(struct bwb_line * l); +extern struct bwb_line * +bwb_NEXT(struct bwb_line * l); +extern struct bwb_line * +bwb_null(struct bwb_line * l); +extern int +bwb_numseq(char *buffer, BasicLineNumberType * start, BasicLineNumberType * end); +extern struct bwb_line * +bwb_ON(struct bwb_line * l); +extern struct bwb_line * +bwb_ON_ERROR_GOTO(struct bwb_line * l); +extern struct bwb_line * +bwb_ON_ERROR_GOSUB(struct bwb_line * l); +extern struct bwb_line * +bwb_ON_ERROR_RESUME_NEXT(struct bwb_line * l); +extern struct bwb_line * +bwb_ON_ERROR_RETURN_NEXT(struct bwb_line * l); +extern struct bwb_line * +bwb_OPEN(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ANGLE_DEGREES(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ANGLE_RADIANS(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ARITHMETIC_DECIMAL(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ARITHMETIC_FIXED(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ARITHMETIC_NATIVE(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_BASE_0(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_BASE_1(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_BUGS_OFF(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_BUGS_ON(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_COMMENT(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_COMPARE_BINARY(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_COMPARE_DATABASE(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_COMPARE_TEXT(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_COVERAGE_OFF(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_COVERAGE_ON(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_DATE(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_DISABLE_COMMAND(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_DISABLE_FUNCTION(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_DISABLE_OPERATOR(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ENABLE_COMMAND(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ENABLE_FUNCTION(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ENABLE_OPERATOR(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ERROR_GOSUB(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_ERROR_GOTO(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_INDENT(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_LABELS_OFF(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_LABELS_ON(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_STATEMENT(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_STRICT_OFF(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_STRICT_ON(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_TERMINAL_NONE(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_TERMINAL_ADM_3A(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_TERMINAL_ANSI(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_TIME(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_TRACE_OFF(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_TRACE_ON(struct bwb_line * l); +extern struct bwb_line * +bwb_OPTION_VERSION(struct bwb_line * l); +extern struct bwb_line * +bwb_PRINT(struct bwb_line * l); +extern struct bwb_line * +bwb_QUEST(struct bwb_line * l); +extern struct bwb_line * +bwb_QUIT(struct bwb_line * l); +extern struct bwb_line * +bwb_READ(struct bwb_line * l); +extern struct bwb_line * +bwb_REM(struct bwb_line * l); +extern struct bwb_line * +bwb_RESTORE(struct bwb_line * l); +extern struct bwb_line * +bwb_RESUME(struct bwb_line * l); +extern struct bwb_line * +bwb_RETURN(struct bwb_line * l); +extern struct bwb_line * +bwb_RSET(struct bwb_line * l); +extern struct bwb_line * +bwb_RUN(struct bwb_line * l); +extern struct bwb_line * +bwb_SAVE(struct bwb_line * l); +extern int +bwb_scan(void); +extern struct bwb_line * +bwb_SELECT(struct bwb_line * l); +extern struct bwb_line * +bwb_SELECT_CASE(struct bwb_line * l); +extern int +bwb_setexec(struct bwb_line * l, int position, int code); +extern struct bwb_line * +bwb_STOP(struct bwb_line * l); +extern int +bwb_stripcr(char *s); +extern struct bwb_line * +bwb_SUB(struct bwb_line * l); +extern struct bwb_line * +bwb_SWAP(struct bwb_line * l); +extern struct bwb_line * +bwb_SYSTEM(struct bwb_line * l); +extern struct bwb_line * +bwb_UEND(struct bwb_line * l); +extern struct bwb_line * +bwb_UNTIL(struct bwb_line * l); +extern struct bwb_line * +bwb_USER_LBL(struct bwb_line * l); +extern struct bwb_line * +bwb_VARS(struct bwb_line * l); +extern struct bwb_line * +bwb_vector(struct bwb_line * l); +extern struct bwb_variable * +bwb_vtov(struct bwb_variable * dst, struct bwb_variable * src); +extern void +bwb_Warning(int ErrorLevel, char *ErrorMessage); +extern void +bwb_Warning_Clear(void); +extern void +bwb_Warning_InvalidParameter(char *Message); +extern void +bwb_Warning_OutOfData(char *Message); +extern void +bwb_Warning_Overflow(char *Message); +extern void +bwb_Warning_AdvancedFeature(char *Message); +extern int +bwb_Warning_Pending(void); +extern struct bwb_line * +bwb_WEND(struct bwb_line * l); +extern struct bwb_line * +bwb_WHILE(struct bwb_line * l); +extern struct bwb_line * +bwb_WRITE(struct bwb_line * l); +extern struct bwb_line * +bwb_xlist(struct bwb_line * l, FILE * file); +extern struct bwb_line * +bwb_xload(struct bwb_line * l); +extern void +bwb_xnew(struct bwb_line * l); +extern struct bwb_line * +bwb_xtxtline(char *buffer); +extern struct bwb_line * +bwb_zline(struct bwb_line * l); +extern void * +CALLOC(size_t nelem, size_t elsize, char *str); +extern int +dec_esc(void); +extern int +DetermineNumberOfDimensions(char *expression, int LastPosition); +extern int +dim_getparams(char *buffer, int *pos, int *n_params, int **pp); +extern int +dim_getparams_FIXED(char *buffer, int *pos, int params[]); +extern void +DumpAllCommandSwitchStatement(void); +extern void +DumpAllCommandSyntax(void); +extern void +DumpAllCommandTableDefinitions(void); +extern void +DumpAllCommandUniqueID(void); +extern void +DumpAllFuctionSyntax(void); +extern void +DumpAllFuctionTableDefinitions(void); +extern void +DumpAllFuctionUniqueID(void); +extern void +DumpAllFunctionSwitch(void); +extern void +DumpOneCommandSyntax(int n, int lp); +extern void +DumpOneFunctionSyntax(int n, int lp); +extern int +exp_findop(char *expression); +extern int +exp_function(char *expression); +extern BasicNumberType +exp_getnval(struct exp_ese * e); +extern int +exp_getival(struct exp_ese * e); +extern bstring * +exp_getsval(struct exp_ese * e); +extern int +exp_getvfname(char *source, char *destination); +extern int +exp_iscmd(char *expression); +extern int +exp_isfn(char *expression); +extern int +exp_isnc(char *expression); +extern int +exp_isop(char *expression); +extern int +exp_isvn(char *expression); +extern int +exp_numconst(char *expression); +extern int +exp_operation(int entry_level); +extern int +exp_paren(char *expression); +extern int +exp_strconst(char *expression); +extern int +exp_validarg(char *expression); +extern int +exp_variable(char *expression); +extern struct bwb_line * +find_BottomLineInCode(struct bwb_line * l); +extern struct bwb_line * +find_label(char *buffer); +extern void +fnc_add_deffn(struct fslte * F); +extern struct bwb_variable * +fnc_deffn(int argc, struct bwb_variable * argv, int unique_id); +extern struct bwb_function * +fnc_find(char *name); +extern struct bwb_function * +fnc_find_by_id(int unique_id); +extern struct bwb_function * +fnc_find_exact(char *name, int ParameterCount, int ParameterTypes); +extern int +fnc_init(int task); +extern struct bwb_variable * +fnc_intrinsic(int argc, struct bwb_variable * argv, int unique_id); +extern struct bwb_variable * +fnc_null(int argc, struct bwb_variable * argv, int unique_id); +extern void +FREE(void *ptr, char *str); +extern int +fslt_add(struct bwb_line * line); +extern int +fslt_addcallvar(struct bwb_variable * v); +extern int +fslt_addlocalvar(struct fslte * f, struct bwb_variable * v); +extern struct fslte * +fslt_find_name(char *name); +extern int +fslt_init(int task); +extern void +FunctionDefinitionCheck(struct bwb_function * f); +extern void +FunctionSyntax(struct bwb_function * f, char *Syntax); +extern void +FunctionUniqueID(struct bwb_function * f, char *UniqueID); +extern char * +GetKeyword(struct bwb_line * l, char *OutputBuffer, char *Keyword); +extern char * +GetRestOfLine(struct bwb_line * l, char *OutputBuffer); +extern int +ImplicitDim(char *tbuf, int n_params); +extern int +inc_esc(void); +extern int +inp_adv(char *b, int *c); +extern BasicNumberType +inp_numconst(char *expression, int *ResultCode); +extern int +int_qmdstr(char *buffer_a, char *buffer_b); +extern int +IsLastKeyword(struct bwb_line * l, char *Keyword); +extern int +is_cmd(char *buffer); +extern int +is_eol(char *buffer, int *position); +extern int +is_label(char *buffer); +extern int +is_let(char *buffer); +extern int +is_ln(char *buffer); +extern int +is_numconst(char *buffer); +extern int +line_start(struct bwb_line * l); +extern int +ln_asbuf(struct bwb_line * l, char *s); +extern int +NumberValueCheck(unsigned long ParameterTests, BasicNumberType X); +extern void +OptionBaseHelper(int newval, struct bwb_line * l); +extern void +OptionVersionSet(int i); +extern int +prn_iprintf(char *buffer); +extern int +prn_lprintf(char *buffer); +extern int +prn_precision(struct bwb_variable * v); +extern int +prn_xprintf(char *buffer); +extern int +ResetConsoleColumn(void); +extern int +scan_element(char *buffer, int *pos, char *element); +extern void +SortAllCommands(void); +extern void +SortAllFunctions(void); +extern int +StringLengthCheck(unsigned long ParameterTests, int s); +extern int +str_btob(bstring * d, bstring * s); +extern int +str_btoc(char *buffer, bstring * s); +extern bstring * +str_cat(bstring * a, bstring * b); +extern int +str_cmp(bstring * a, bstring * b); +extern int +str_ctob(bstring * s, char *buffer); +extern struct bwb_variable * +var_chain(struct bwb_variable * argv); +extern int +var_delcvars(void); +extern struct bwb_variable * +var_find(char *buffer); +extern BasicNumberType * +var_findnval(struct bwb_variable * v, int *pp); +extern bstring * +var_findsval(struct bwb_variable * v, int *pp); +extern struct bwb_variable * +var_free(struct bwb_variable * v); +extern BasicNumberType +var_getnval(struct bwb_variable * nvar); +extern bstring * +var_getsval(struct bwb_variable * nvar); +extern int +var_init(int task); +extern int +var_make(struct bwb_variable * v, int type); +extern struct bwb_variable * +var_new(char *name); +extern struct bwb_variable * +var_pos(struct bwb_variable * firstvar, int p); +extern int +var_setnval(struct bwb_variable * v, BasicNumberType i); +extern BasicNumberType +VerifyNumeric(BasicNumberType Value); +extern void +SetOnError(int LineNumber); +extern int +GetOnError(void); +extern int +ToUpper(int c); +extern int +ToLower(int c); +extern void +var_CLEAR(void); +extern void +break_handler(void); +extern struct bwb_line * +bwb_EDIT(struct bwb_line * l); +extern struct bwb_line * +bwb_RENUM(struct bwb_line * l); +extern int +bwx_CHDIR(char *A); +extern int +bwx_CLS(void); +extern int +bwx_COLOR(int X, int Y); +extern int +bwx_CONSOLE_WIDTH(void); +extern int +bwx_DEBUG(const char *A); +extern int +bwx_errmes(char *m); +extern int +bwx_FILES(char *A); +extern int +bwx_FRE(void); +extern int +bwx_INKEY(char *S); +extern int +bwx_INP(int X); +extern int +bwx_input(char *prompt, char *buffer); +extern int +bwx_INPUT(int x, char *S); +extern int +bwx_KILL(char *A); +extern int +bwx_LOCATE(int X, int Y); +extern int +bwx_LPRINT(char a); +extern int +bwx_LPRINT_WIDTH(void); +extern int +bwx_message(char *m); +extern int +bwx_MKDIR(char *A); +extern int +bwx_NAME(char *A, char *B); +extern int +bwx_OUT(int X, int Y); +extern int +bwx_OUTPUT_WIDTH(void); +extern int +bwx_PEEK(int X); +extern int +bwx_POKE(int X, int Y); +extern int +bwx_PRINT(char c); +extern int +bwx_RANDOM_RECORD_SIZE(void); +extern int +bwx_RMDIR(char *A); +extern int +bwx_SHELL(char *A); +extern void +bwx_STOP(void); +extern void +bwx_terminate(void); +extern BasicNumberType +bwx_TIMER(BasicNumberType Seconds); +extern int +bwx_WAIT(int X, int Y, int Z); +extern int +bwx_signon(void); + + + +#if HAVE_ISNAN + +/* these are intrinsic C functions in my environment using -ansi */ + +#else /* ! HAVE_ISNAN */ + +extern int +isnan(double X); +extern int +isinf(double X); +extern double +rint(double X); +extern int +strcasecmp(const char *s1, const char *s2); +extern int +strncasecmp(const char *s1, const char *s2, size_t n); + +#endif /* ! HAVE_ISNAN */ + +#if BROKEN_STRCPY +#undef strcpy +#define strcpy broken_strcpy +extern void +broken_strcpy( char * Target, char * Source ); +#endif + +/* EOF */ diff --git a/bwbasic2.jcl b/bwbasic2.jcl index 38a44b3..1cda0a8 100644 --- a/bwbasic2.jcl +++ b/bwbasic2.jcl @@ -15,20 +15,20 @@ //* //ALLOC EXEC PGM=IEFBR14 //DD1 DD DSN=&BWBPREF..SOURCE,DISP=(,CATLG), -// DCB=(RECFM=VB,LRECL=255,BLKSIZE=6144), -// SPACE=(6144,(160,160,44)),UNIT=SYSALLDA +// DCB=(RECFM=VB,LRECL=255,BLKSIZE=6233), +// SPACE=(6233,(180,180,44)),UNIT=SYSALLDA //DD2 DD DSN=&BWBPREF..INCLUDE,DISP=(,CATLG), -// DCB=(RECFM=VB,LRECL=255,BLKSIZE=6144), -// SPACE=(6144,(22,22,44)),UNIT=SYSALLDA +// DCB=(RECFM=VB,LRECL=255,BLKSIZE=6233), +// SPACE=(6233,(26,26,44)),UNIT=SYSALLDA //DD3 DD DSN=&BWBPREF..NCALIB,DISP=(,CATLG), // DCB=(RECFM=U,LRECL=0,BLKSIZE=6144), -// SPACE=(6144,(60,60,44)),UNIT=SYSALLDA +// SPACE=(6144,(130,130,44)),UNIT=SYSALLDA //DD4 DD DSN=&BWBPREF..LINKLIB,DISP=(,CATLG), // DCB=(RECFM=U,LRECL=0,BLKSIZE=6144), -// SPACE=(6144,(70,70,44)),UNIT=SYSALLDA +// SPACE=(6144,(130,130,44)),UNIT=SYSALLDA //DD5 DD DSN=&BWBPREF..JCL,DISP=(,CATLG), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=6080), -// SPACE=(6080,(60,60,44)),UNIT=SYSALLDA +// SPACE=(6080,(130,130,44)),UNIT=SYSALLDA // PEND //* //S1 EXEC CREATE diff --git a/bwbasic3.jcl b/bwbasic3.jcl index cacf1ee..a07da5f 100644 --- a/bwbasic3.jcl +++ b/bwbasic3.jcl @@ -1,19 +1,21 @@ //BWBGEN JOB CLASS=C,REGION=0K //* -//TRANSFER PROC BWBPREF='BWBASIC' +//TRANSFER PROC BWBPREF='BWBASIC',PDPPREF='PDPCLIB' //DELETE EXEC PGM=IEFBR14 //DD1 DD DSN=&BWBPREF..ALLZIPS,DISP=(MOD,DELETE), // UNIT=SYSALLDA,SPACE=(TRK,(0)) //* -//COPY EXEC PGM=IEBGENER -//SYSUT1 DD DSN=HERC02.IN,DISP=OLD, +//COPY EXEC PGM=COPYFILE,PARM='-bb dd:in dd:out' +//STEPLIB DD DSN=&PDPPREF..LINKLIB,DISP=SHR +//IN DD DSN=HERC02.IN,DISP=OLD, // UNIT=TAPE,VOL=SER=PCTOMF,LABEL=(1,NL), -// DCB=(RECFM=U,LRECL=0,BLKSIZE=6144) -//SYSUT2 DD DSN=&BWBPREF..ALLZIPS,DISP=(,CATLG), -// SPACE=(6144,(200,200),RLSE),UNIT=SYSALLDA, -// DCB=(RECFM=U,LRECL=0,BLKSIZE=6144) +// DCB=(RECFM=U,LRECL=0,BLKSIZE=32760) +//OUT DD DSN=&BWBPREF..ALLZIPS,DISP=(,CATLG), +// SPACE=(6233,(220,220),RLSE),UNIT=SYSALLDA, +// DCB=(RECFM=U,LRECL=0,BLKSIZE=6233) //SYSIN DD DUMMY //SYSPRINT DD SYSOUT=* +//SYSTERM DD SYSOUT=* // PEND //* //S1 EXEC TRANSFER diff --git a/bwbasic4.jcl b/bwbasic4.jcl index 01b1227..3ba3868 100644 --- a/bwbasic4.jcl +++ b/bwbasic4.jcl @@ -2,8 +2,8 @@ //* //CREATE EXEC PGM=IEFBR14 //DD1 DD DSN=&&ZIPS,DISP=(,PASS), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120), -// SPACE=(6144,(100,100,44)),UNIT=SYSALLDA +// DCB=(RECFM=U,LRECL=0,BLKSIZE=6233), +// SPACE=(6233,(220,220,44)),UNIT=SYSALLDA //* //UNZIP1 PROC MINPREF='MINIZIP',BWBPREF='BWBASIC' //MINI EXEC PGM=MINIUNZ,PARM='dd:input dd:output' diff --git a/bwbasic5.jcl b/bwbasic5.jcl index f4e7674..7eccd56 100644 --- a/bwbasic5.jcl +++ b/bwbasic5.jcl @@ -35,7 +35,7 @@ //SYSIN DD DSN=&&TEMP1,DISP=(OLD,DELETE) //* //LKED EXEC PGM=IEWL,PARM='NCAL', -// COND=((4,LT,COMP),(4,LT,ASM)) +// COND=((4,LT,COMP),(0,LT,ASM)) //SYSLIN DD DSN=&&OBJSET,DISP=(OLD,DELETE) //SYSLMOD DD DSN=&BWBPREF..NCALIB(&MEMBER),DISP=SHR //SYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(2,1)) @@ -56,9 +56,11 @@ //BWB@DIO EXEC BWBCMP,MEMBER=BWB@DIO //BWB@STR EXEC BWBCMP,MEMBER=BWB@STR //BWB@ELX EXEC BWBCMP,MEMBER=BWB@ELX -//BWB@MTH EXEC BWBCMP,MEMBER=BWB@MTH //BWB@STC EXEC BWBCMP,MEMBER=BWB@STC //BWX@TTY EXEC BWBCMP,MEMBER=BWX@TTY +//BWD@CMD EXEC BWBCMP,MEMBER=BWD@CMD +//BWD@FUN EXEC BWBCMP,MEMBER=BWD@FUN //UNIXIO EXEC BWBCMP,MEMBER=UNIXIO +//RENUM EXEC BWBCMP,MEMBER=RENUM //* // diff --git a/bwbasic6.jcl b/bwbasic6.jcl index 7520c9d..abc5dfd 100644 --- a/bwbasic6.jcl +++ b/bwbasic6.jcl @@ -1,13 +1,13 @@ //BWBGEN JOB CLASS=C,REGION=0K -//LINK PROC BWBPREF='BWBASIC',PDPPREF='PDPCLIB' +//LINK PROC BWBPREF='BWBASIC',PDPPREF='PDPCLIB',EXE='' //LKED EXEC PGM=IEWL,PARM='MAP,LIST,SIZE=(999424,65536)' //SYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(30,10)) //SYSPRINT DD SYSOUT=* //SYSLIB DD DSN=&PDPPREF..NCALIB,DISP=SHR,DCB=BLKSIZE=32760 // DD DSN=&BWBPREF..NCALIB,DISP=SHR -//SYSLMOD DD DSN=&BWBPREF..LINKLIB(BWBASIC),DISP=SHR +//SYSLMOD DD DSN=&BWBPREF..LINKLIB(&EXE),DISP=SHR // PEND -//DOLINK EXEC LINK +//DOLINK1 EXEC LINK,EXE=BWBASIC //LKED.SYSLIN DD * INCLUDE SYSLIB(BWBASIC) INCLUDE SYSLIB(BWB@INT) @@ -23,10 +23,18 @@ INCLUDE SYSLIB(BWB@DIO) INCLUDE SYSLIB(BWB@STR) INCLUDE SYSLIB(BWB@ELX) - INCLUDE SYSLIB(BWB@MTH) INCLUDE SYSLIB(BWB@STC) INCLUDE SYSLIB(BWX@TTY) + INCLUDE SYSLIB(BWD@CMD) + INCLUDE SYSLIB(BWD@FUN) INCLUDE SYSLIB(UNIXIO) ENTRY @@MAIN /* +//* +//DOLINK2 EXEC LINK,EXE=RENUM +//LKED.SYSLIN DD * + INCLUDE SYSLIB(RENUM) + ENTRY @@MAIN +/* +//* // diff --git a/bwbasic7.jcl b/bwbasic7.jcl index 0bf7871..a2e164b 100644 --- a/bwbasic7.jcl +++ b/bwbasic7.jcl @@ -8,6 +8,14 @@ //SYSTERM DD SYSOUT=* // PEND //* +//RUNRE PROC BWBPREF='BWBASIC' +//BWBASIC EXEC PGM=RENUM,PARM='DD:INPUT' +//STEPLIB DD DSN=&BWBPREF..LINKLIB,DISP=SHR +//SYSIN DD DUMMY +//SYSPRINT DD SYSOUT=* +//SYSTERM DD SYSOUT=* +// PEND +//* //CLEAN PROC BWBPREF='BWBASIC' //DELETE EXEC PGM=IEFBR14 //DD0 DD DSN=&BWBPREF..ALLZIPS,DISP=(MOD,DELETE), @@ -22,7 +30,16 @@ x = 1 print "hello, world",x x = 2 print "hello, world",x -quit +end /* -//S2 EXEC CLEAN +//* +//S2 EXEC RUNRE +//INPUT DD * +5 hi +7 folks +9 there +/* +//EDITFL DD SYSOUT=* +//* +//S3 EXEC CLEAN // diff --git a/bwbmvs.txt b/bwbmvs.txt deleted file mode 100644 index 809902c..0000000 --- a/bwbmvs.txt +++ /dev/null @@ -1,50 +0,0 @@ -BWBASIC for MVS (3.8 and above) and CMS (VM/370 and above) ----------------------------------------------------------- - -To compile bwbasic for MVS, you will need a suitable MVS C -compiler such as GCCMVS. - -You then need to transfer all the source code to the -mainframe. zipmvs.bat may be useful for doing this, but the -process of transferring files is beyond the scope of this -document and site-specific. - - -On the mainframe, modify (according to your site's -requirements), then run, the following bits of JCL: -bwbasic1.jcl -bwbasic2.jcl -bwbasic3.jcl (optional - example only) -bwbasic4.jcl (optional - example only) -bwbasic5.jcl -bwbasic6.jcl -bwbasic7.jcl - -Note that the batch file "allmvs" provides an example of how -the process was automated at one site. - - -The end result of this process is that a BWBASIC load module -will be created in BWBASIC.LINKLIB. - - - -Version: - -bwbasic.h contains the version number, and this is displayed -when you invoke the program with no parameters. - - - -Support: - -For BWBASIC for MVS support, try here: -http://tech.groups.yahoo.com/group/hercules-os380/ - - - -CMS: - -The steps for CMS are similar, except instead of running JCL, -you need to execute the "compile" exec. An example "allcms" -Windows batch file shows one way of automating this process. diff --git a/bwbtest/00readme.txt b/bwbtest/00readme.txt new file mode 100644 index 0000000..0000c2a --- /dev/null +++ b/bwbtest/00readme.txt @@ -0,0 +1 @@ +These programs are part of regression testing. diff --git a/bwbtest/00test.sh b/bwbtest/00test.sh new file mode 100644 index 0000000..5d52b01 --- /dev/null +++ b/bwbtest/00test.sh @@ -0,0 +1,80 @@ +# Puropose: Verify existing BWBASIC behavior +# Author: Howard Wulf +# Date: 2014-02-28 +# Usage: implementatino defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic3/bwbtest +# ash ./00test.sh +# + +rm *.80 +rm *.OUT +rm *.dif + +# ---------------------------------------------- +# Regression Tests +# ---------------------------------------------- +testcase() +{ + TESTCASE=${1} + echo "TESTCASE=${TESTCASE}" + ~/bwbasic ${TESTCASE} > ${TESTCASE}.OUT + echo "500 DATA ${TESTCASE}.OUT, ${TESTCASE}.80" > PAD80.INP + ~/bwbasic PAD80.BAS + diff ${TESTCASE}.run ${TESTCASE}.80 > ${TESTCASE}.dif + if test -s ${TESTCASE}.dif + then + echo less ${TESTCASE}.dif + fi +} + +# --------------------------------------------- +echo "OPTION VERSION BYWATER" > profile.bas + +testcase abs +testcase assign +testcase callfunc +testcase callsub +testcase chain1 +testcase chain2 +testcase dataread +testcase deffn +testcase dim +testcase doloop +testcase dowhile +testcase elseif +testcase end +testcase err +testcase fncallfn +testcase fornext +testcase function +testcase gosub +testcase gotolabl +testcase ifline +testcase input +testcase lof +testcase loopuntl +testcase main +testcase mlifthen +testcase on +testcase onerr +testcase onerrlbl +testcase ongosub +testcase opentest +testcase option +testcase pascaltr +testcase putget +testcase random +testcase selcase +testcase snglfunc +testcase stop +testcase term +testcase whilwend +testcase width +testcase writeinp + + +cat *.dif > dif.OUT +less dif.OUT + +# EOF diff --git a/bwbtest/PAD80.BAS b/bwbtest/PAD80.BAS new file mode 100644 index 0000000..f08eb98 --- /dev/null +++ b/bwbtest/PAD80.BAS @@ -0,0 +1,43 @@ +010 OPTION VERSION BYWATER +020 OPTION BUGS OFF +100 REM PAD80.BAS +101 REM Pad the test output to 80 characters. +102 REM bwbasic P001.BAS > P001.OUT +103 REM echo "500 DATA P001.OUT, P001.80" > PAD80.INP +104 REM bwbasic PAD80.BAS +105 REM diff P001.run P001.80 +109 REM ---------------------------------------------------------- +120 REM GET FILE NAME INTO A$ +125 DELETE 500 +126 MERGE "PAD80.INP" +127 RESTORE 500 +130 READ A$ +135 REM PRINT "SOURCE:"; A$ +140 READ B$ +145 REM PRINT "TARGET:"; B$ +300 REM ---------------------------------------------------------- +301 REM PROCESS FILENAME IN A$ +302 REM ---------------------------------------------------------- +310 OPEN A$ FOR INPUT AS #2 +315 OPEN B$ FOR OUTPUT AS #3 +320 REM PRINT "PROCESS TEXT LINE" +330 IF EOF( 2 ) THEN 390 +335 REM PRINT "NOT EOF" +340 LINE INPUT #2, C$ +345 REM PRINT "C$=";C$ +350 C$ = LEFT$( C$ + SPACE$( 80 ), 80 ) +355 REM PRINT "yyy" +360 REM WRITE OUTPUT LINE +370 PRINT #3, C$ +375 REM PRINT "zzz" +380 GOTO 320 +390 REM CLOSE FILES +400 CLOSE #3 +410 CLOSE #2 +499 REM ---------------------------------------------------------- +500 REM REPLACED BY CONTENTS OF "PAD80.INP" +501 REM ---------------------------------------------------------- +900 REM ---------------------------------------------------------- +910 REM THE END +920 REM ---------------------------------------------------------- +999 END diff --git a/bwbtest/PAD80.INP b/bwbtest/PAD80.INP new file mode 100644 index 0000000..2712f34 --- /dev/null +++ b/bwbtest/PAD80.INP @@ -0,0 +1 @@ +500 DATA writeinp.OUT, writeinp.80 diff --git a/bwbtest/abs.80 b/bwbtest/abs.80 new file mode 100644 index 0000000..cb01bcc --- /dev/null +++ b/bwbtest/abs.80 @@ -0,0 +1,2 @@ +The absolute value of -1.23457 is 1.23457 +Is that correct? diff --git a/bwbtest/abs.OUT b/bwbtest/abs.OUT new file mode 100644 index 0000000..77ccd52 --- /dev/null +++ b/bwbtest/abs.OUT @@ -0,0 +1,2 @@ +The absolute value of -1.23457 is 1.23457 +Is that correct? diff --git a/bwbtest/abs.dif b/bwbtest/abs.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/abs.run b/bwbtest/abs.run new file mode 100644 index 0000000..cb01bcc --- /dev/null +++ b/bwbtest/abs.run @@ -0,0 +1,2 @@ +The absolute value of -1.23457 is 1.23457 +Is that correct? diff --git a/bwbtest/assign.80 b/bwbtest/assign.80 new file mode 100644 index 0000000..f160add --- /dev/null +++ b/bwbtest/assign.80 @@ -0,0 +1,2 @@ +TEST.BAS -- TEST +X is 7 diff --git a/bwbtest/assign.OUT b/bwbtest/assign.OUT new file mode 100644 index 0000000..4b21412 --- /dev/null +++ b/bwbtest/assign.OUT @@ -0,0 +1,2 @@ +TEST.BAS -- TEST +X is 7 diff --git a/bwbtest/assign.dif b/bwbtest/assign.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/assign.run b/bwbtest/assign.run new file mode 100644 index 0000000..f160add --- /dev/null +++ b/bwbtest/assign.run @@ -0,0 +1,2 @@ +TEST.BAS -- TEST +X is 7 diff --git a/bwbtest/callfunc.80 b/bwbtest/callfunc.80 new file mode 100644 index 0000000..edfedfb --- /dev/null +++ b/bwbtest/callfunc.80 @@ -0,0 +1,14 @@ +CallFunc.BAS -- Test BASIC User-defined Function Statements +The next printed line should be from the Function. + +This is written from the Function. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 +The Function should return 104 + +This is back at the main program. +The value of variable is now 17 +The returned value from the function is 104 +Did it work? diff --git a/bwbtest/callfunc.OUT b/bwbtest/callfunc.OUT new file mode 100644 index 0000000..80d6813 --- /dev/null +++ b/bwbtest/callfunc.OUT @@ -0,0 +1,14 @@ +CallFunc.BAS -- Test BASIC User-defined Function Statements +The next printed line should be from the Function. + +This is written from the Function. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 +The Function should return 104 + +This is back at the main program. +The value of variable is now 17 +The returned value from the function is 104 +Did it work? diff --git a/bwbtest/callfunc.dif b/bwbtest/callfunc.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/callfunc.run b/bwbtest/callfunc.run new file mode 100644 index 0000000..edfedfb --- /dev/null +++ b/bwbtest/callfunc.run @@ -0,0 +1,14 @@ +CallFunc.BAS -- Test BASIC User-defined Function Statements +The next printed line should be from the Function. + +This is written from the Function. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 +The Function should return 104 + +This is back at the main program. +The value of variable is now 17 +The returned value from the function is 104 +Did it work? diff --git a/bwbtest/callsub.80 b/bwbtest/callsub.80 new file mode 100644 index 0000000..ce661ec --- /dev/null +++ b/bwbtest/callsub.80 @@ -0,0 +1,12 @@ +CallSub.BAS -- Test BASIC Call and Sub Statements +The next printed line should be from the Subroutine. + +This is written from the Subroutine. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 + +This is back at the main program. +The value of variable is now 17 +Did it work? diff --git a/bwbtest/callsub.OUT b/bwbtest/callsub.OUT new file mode 100644 index 0000000..ff48923 --- /dev/null +++ b/bwbtest/callsub.OUT @@ -0,0 +1,12 @@ +CallSub.BAS -- Test BASIC Call and Sub Statements +The next printed line should be from the Subroutine. + +This is written from the Subroutine. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 + +This is back at the main program. +The value of variable is now 17 +Did it work? diff --git a/bwbtest/callsub.bas b/bwbtest/callsub.bas index 4682909..1315eff 100644 --- a/bwbtest/callsub.bas +++ b/bwbtest/callsub.bas @@ -8,7 +8,7 @@ Print "The next printed line should be from the Subroutine." Print testvar = 17 -Call TestSub 5, "Hello", testvar +Call TestSub( 5, "Hello", testvar) Print Print "This is back at the main program. " diff --git a/bwbtest/callsub.dif b/bwbtest/callsub.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/callsub.run b/bwbtest/callsub.run new file mode 100644 index 0000000..ce661ec --- /dev/null +++ b/bwbtest/callsub.run @@ -0,0 +1,12 @@ +CallSub.BAS -- Test BASIC Call and Sub Statements +The next printed line should be from the Subroutine. + +This is written from the Subroutine. +The value of variable is 5 +The value of variable is Hello +The value of variable is 17 +The value of variable is reset to 99 + +This is back at the main program. +The value of variable is now 17 +Did it work? diff --git a/bwbtest/chain1.80 b/bwbtest/chain1.80 new file mode 100644 index 0000000..dc7fb99 --- /dev/null +++ b/bwbtest/chain1.80 @@ -0,0 +1,6 @@ +This is program CHAIN1.BAS +The value of X is 5.6789 +We shall no pass execution to program CHAIN2.BAS... +This is program CHAIN2.BAS +The value of X is now 5.6789 +This concludes our CHAIN test. diff --git a/bwbtest/chain1.OUT b/bwbtest/chain1.OUT new file mode 100644 index 0000000..103ce9e --- /dev/null +++ b/bwbtest/chain1.OUT @@ -0,0 +1,6 @@ +This is program CHAIN1.BAS +The value of X is 5.6789 +We shall no pass execution to program CHAIN2.BAS... +This is program CHAIN2.BAS +The value of X is now 5.6789 +This concludes our CHAIN test. diff --git a/bwbtest/chain1.dif b/bwbtest/chain1.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/chain1.run b/bwbtest/chain1.run new file mode 100644 index 0000000..dc7fb99 --- /dev/null +++ b/bwbtest/chain1.run @@ -0,0 +1,6 @@ +This is program CHAIN1.BAS +The value of X is 5.6789 +We shall no pass execution to program CHAIN2.BAS... +This is program CHAIN2.BAS +The value of X is now 5.6789 +This concludes our CHAIN test. diff --git a/bwbtest/chain2.80 b/bwbtest/chain2.80 new file mode 100644 index 0000000..944fef8 --- /dev/null +++ b/bwbtest/chain2.80 @@ -0,0 +1,3 @@ +This is program CHAIN2.BAS +The value of X is now 0 +This concludes our CHAIN test. diff --git a/bwbtest/chain2.OUT b/bwbtest/chain2.OUT new file mode 100644 index 0000000..d969a44 --- /dev/null +++ b/bwbtest/chain2.OUT @@ -0,0 +1,3 @@ +This is program CHAIN2.BAS +The value of X is now 0 +This concludes our CHAIN test. diff --git a/bwbtest/chain2.dif b/bwbtest/chain2.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/chain2.run b/bwbtest/chain2.run new file mode 100644 index 0000000..944fef8 --- /dev/null +++ b/bwbtest/chain2.run @@ -0,0 +1,3 @@ +This is program CHAIN2.BAS +The value of X is now 0 +This concludes our CHAIN test. diff --git a/bwbtest/data.tmp b/bwbtest/data.tmp new file mode 100644 index 0000000..1b9c026 --- /dev/null +++ b/bwbtest/data.tmp @@ -0,0 +1 @@ +"String 1", 1.12346,"String 2", 2.23457,"String 3", 3.34568 diff --git a/bwbtest/dataread.80 b/bwbtest/dataread.80 new file mode 100644 index 0000000..60299f5 --- /dev/null +++ b/bwbtest/dataread.80 @@ -0,0 +1,4 @@ +DATAREAD.BAS -- Test DATA, READ, and RESTORE Statements +Data read: Ted 56.789 Dale 45.678 +After RESTORE: +Data read: Ted 56.789 Dale 45.678 diff --git a/bwbtest/dataread.OUT b/bwbtest/dataread.OUT new file mode 100644 index 0000000..260ea3b --- /dev/null +++ b/bwbtest/dataread.OUT @@ -0,0 +1,4 @@ +DATAREAD.BAS -- Test DATA, READ, and RESTORE Statements +Data read: Ted 56.789 Dale 45.678 +After RESTORE: +Data read: Ted 56.789 Dale 45.678 diff --git a/bwbtest/dataread.dif b/bwbtest/dataread.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/dataread.run b/bwbtest/dataread.run new file mode 100644 index 0000000..60299f5 --- /dev/null +++ b/bwbtest/dataread.run @@ -0,0 +1,4 @@ +DATAREAD.BAS -- Test DATA, READ, and RESTORE Statements +Data read: Ted 56.789 Dale 45.678 +After RESTORE: +Data read: Ted 56.789 Dale 45.678 diff --git a/bwbtest/deffn.80 b/bwbtest/deffn.80 new file mode 100644 index 0000000..5c4be7f --- /dev/null +++ b/bwbtest/deffn.80 @@ -0,0 +1,3 @@ +DEFFN.BAS -- Test DEF FN Statement + 5 +Correct diff --git a/bwbtest/deffn.OUT b/bwbtest/deffn.OUT new file mode 100644 index 0000000..21ad404 --- /dev/null +++ b/bwbtest/deffn.OUT @@ -0,0 +1,3 @@ +DEFFN.BAS -- Test DEF FN Statement + 5 +Correct diff --git a/bwbtest/deffn.dif b/bwbtest/deffn.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/deffn.run b/bwbtest/deffn.run new file mode 100644 index 0000000..5c4be7f --- /dev/null +++ b/bwbtest/deffn.run @@ -0,0 +1,3 @@ +DEFFN.BAS -- Test DEF FN Statement + 5 +Correct diff --git a/bwbtest/dif.OUT b/bwbtest/dif.OUT new file mode 100644 index 0000000..77571f3 --- /dev/null +++ b/bwbtest/dif.OUT @@ -0,0 +1,39 @@ +--- function.run ++++ function.80 +@@ -1,6 +1,6 @@ + ABS(-2.2): 2.2 +-DATE$: <03/07/2015> +-TIME$: <21:07:44> ++DATE$: <05/09/2015> ++TIME$: <20:53:42> + ATN(-2.2): -1.14417 + COS(-2.2): -.588501 + LOG(2.2): .788457 +@@ -19,7 +19,7 @@ + MID$(0123456789, 5, 4): <4567> + LEFT$(0123456789, 5): <01234> + RIGHT$(0123456789, 5): <56789> +-TIMER: 76064 ++TIMER: 75222 + Paused? A + VAL(X): 0 + ERR: 0 +--- random.run ++++ random.80 +@@ -1,10 +1,10 @@ + This is a first sequence of three RND numbers: +- .682314 +- .77127 +- .648104 ++ .76199 ++ .413139 ++ .68009 + This is a second sequence of three RND numbers: +- .356755 +- .453898 +- .940124 ++ .436431 ++ .095767 ++ .972111 + The second sequence should have been differrent + from the first. diff --git a/bwbtest/dim.80 b/bwbtest/dim.80 new file mode 100644 index 0000000..e104629 --- /dev/null +++ b/bwbtest/dim.80 @@ -0,0 +1,6 @@ +The value at position 0 is 2 +The value at position 1 is 3 +The value at position 2 is 4 +The value at position 3 is 5 +The value at position 4 is 6 +The value at position 5 is 7 diff --git a/bwbtest/dim.OUT b/bwbtest/dim.OUT new file mode 100644 index 0000000..a1d329f --- /dev/null +++ b/bwbtest/dim.OUT @@ -0,0 +1,6 @@ +The value at position 0 is 2 +The value at position 1 is 3 +The value at position 2 is 4 +The value at position 3 is 5 +The value at position 4 is 6 +The value at position 5 is 7 diff --git a/bwbtest/dim.dif b/bwbtest/dim.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/dim.run b/bwbtest/dim.run new file mode 100644 index 0000000..e104629 --- /dev/null +++ b/bwbtest/dim.run @@ -0,0 +1,6 @@ +The value at position 0 is 2 +The value at position 1 is 3 +The value at position 2 is 4 +The value at position 3 is 5 +The value at position 4 is 6 +The value at position 5 is 7 diff --git a/bwbtest/doloop.80 b/bwbtest/doloop.80 new file mode 100644 index 0000000..46d5c3c --- /dev/null +++ b/bwbtest/doloop.80 @@ -0,0 +1,14 @@ +i is 1 +i is 2 +i is 3 +i is 4 +i is 5 +i is 6 +i is 7 +i is 8 +i is 9 +i is 10 +i is 11 +i is 12 +i is 13 +End diff --git a/bwbtest/doloop.OUT b/bwbtest/doloop.OUT new file mode 100644 index 0000000..0860e38 --- /dev/null +++ b/bwbtest/doloop.OUT @@ -0,0 +1,14 @@ +i is 1 +i is 2 +i is 3 +i is 4 +i is 5 +i is 6 +i is 7 +i is 8 +i is 9 +i is 10 +i is 11 +i is 12 +i is 13 +End diff --git a/bwbtest/doloop.bas b/bwbtest/doloop.bas index 78bf47a..f8eddda 100644 --- a/bwbtest/doloop.bas +++ b/bwbtest/doloop.bas @@ -2,6 +2,8 @@ 20 do 30 i = i + 1 40 print "i is";i -50 if i > 12 then exit do +50 if i > 12 then + exit do + end if 60 loop 70 print "End" diff --git a/bwbtest/doloop.dif b/bwbtest/doloop.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/doloop.run b/bwbtest/doloop.run new file mode 100644 index 0000000..46d5c3c --- /dev/null +++ b/bwbtest/doloop.run @@ -0,0 +1,14 @@ +i is 1 +i is 2 +i is 3 +i is 4 +i is 5 +i is 6 +i is 7 +i is 8 +i is 9 +i is 10 +i is 11 +i is 12 +i is 13 +End diff --git a/bwbtest/dowhile.80 b/bwbtest/dowhile.80 new file mode 100644 index 0000000..90353ba --- /dev/null +++ b/bwbtest/dowhile.80 @@ -0,0 +1,77 @@ +START +x is 0 +y is 0 +y is 1 +x is 1 +y is 0 +y is 1 +x is 2 +y is 0 +y is 1 +x is 3 +y is 0 +y is 1 +x is 4 +y is 0 +y is 1 +x is 5 +y is 0 +y is 1 +x is 6 +y is 0 +y is 1 +x is 7 +y is 0 +y is 1 +x is 8 +y is 0 +y is 1 +x is 9 +y is 0 +y is 1 +x is 10 +y is 0 +y is 1 +x is 11 +y is 0 +y is 1 +x is 12 +y is 0 +y is 1 +x is 13 +y is 0 +y is 1 +x is 14 +y is 0 +y is 1 +x is 15 +y is 0 +y is 1 +x is 16 +y is 0 +y is 1 +x is 17 +y is 0 +y is 1 +x is 18 +y is 0 +y is 1 +x is 19 +y is 0 +y is 1 +x is 20 +y is 0 +y is 1 +x is 21 +y is 0 +y is 1 +x is 22 +y is 0 +y is 1 +x is 23 +y is 0 +y is 1 +x is 24 +y is 0 +y is 1 +END diff --git a/bwbtest/dowhile.OUT b/bwbtest/dowhile.OUT new file mode 100644 index 0000000..a488c30 --- /dev/null +++ b/bwbtest/dowhile.OUT @@ -0,0 +1,77 @@ +START +x is 0 +y is 0 +y is 1 +x is 1 +y is 0 +y is 1 +x is 2 +y is 0 +y is 1 +x is 3 +y is 0 +y is 1 +x is 4 +y is 0 +y is 1 +x is 5 +y is 0 +y is 1 +x is 6 +y is 0 +y is 1 +x is 7 +y is 0 +y is 1 +x is 8 +y is 0 +y is 1 +x is 9 +y is 0 +y is 1 +x is 10 +y is 0 +y is 1 +x is 11 +y is 0 +y is 1 +x is 12 +y is 0 +y is 1 +x is 13 +y is 0 +y is 1 +x is 14 +y is 0 +y is 1 +x is 15 +y is 0 +y is 1 +x is 16 +y is 0 +y is 1 +x is 17 +y is 0 +y is 1 +x is 18 +y is 0 +y is 1 +x is 19 +y is 0 +y is 1 +x is 20 +y is 0 +y is 1 +x is 21 +y is 0 +y is 1 +x is 22 +y is 0 +y is 1 +x is 23 +y is 0 +y is 1 +x is 24 +y is 0 +y is 1 +END diff --git a/bwbtest/dowhile.dif b/bwbtest/dowhile.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/dowhile.run b/bwbtest/dowhile.run new file mode 100644 index 0000000..90353ba --- /dev/null +++ b/bwbtest/dowhile.run @@ -0,0 +1,77 @@ +START +x is 0 +y is 0 +y is 1 +x is 1 +y is 0 +y is 1 +x is 2 +y is 0 +y is 1 +x is 3 +y is 0 +y is 1 +x is 4 +y is 0 +y is 1 +x is 5 +y is 0 +y is 1 +x is 6 +y is 0 +y is 1 +x is 7 +y is 0 +y is 1 +x is 8 +y is 0 +y is 1 +x is 9 +y is 0 +y is 1 +x is 10 +y is 0 +y is 1 +x is 11 +y is 0 +y is 1 +x is 12 +y is 0 +y is 1 +x is 13 +y is 0 +y is 1 +x is 14 +y is 0 +y is 1 +x is 15 +y is 0 +y is 1 +x is 16 +y is 0 +y is 1 +x is 17 +y is 0 +y is 1 +x is 18 +y is 0 +y is 1 +x is 19 +y is 0 +y is 1 +x is 20 +y is 0 +y is 1 +x is 21 +y is 0 +y is 1 +x is 22 +y is 0 +y is 1 +x is 23 +y is 0 +y is 1 +x is 24 +y is 0 +y is 1 +END diff --git a/bwbtest/elseif.80 b/bwbtest/elseif.80 new file mode 100644 index 0000000..f1b51f0 --- /dev/null +++ b/bwbtest/elseif.80 @@ -0,0 +1,6 @@ +ELSEIF.BAS -- Test MultiLine IF-THEN-ELSE Constructions + +The program should detect if the number you enter is 4 or 5 or 6. +Please enter a number, 1-9? 5 +The number is 5. +This concludes our test. diff --git a/bwbtest/elseif.INP b/bwbtest/elseif.INP new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/bwbtest/elseif.INP @@ -0,0 +1 @@ +5 diff --git a/bwbtest/elseif.OUT b/bwbtest/elseif.OUT new file mode 100644 index 0000000..cee7e6b --- /dev/null +++ b/bwbtest/elseif.OUT @@ -0,0 +1,6 @@ +ELSEIF.BAS -- Test MultiLine IF-THEN-ELSE Constructions + +The program should detect if the number you enter is 4 or 5 or 6. +Please enter a number, 1-9? 5 +The number is 5. +This concludes our test. diff --git a/bwbtest/elseif.dif b/bwbtest/elseif.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/elseif.run b/bwbtest/elseif.run new file mode 100644 index 0000000..f1b51f0 --- /dev/null +++ b/bwbtest/elseif.run @@ -0,0 +1,6 @@ +ELSEIF.BAS -- Test MultiLine IF-THEN-ELSE Constructions + +The program should detect if the number you enter is 4 or 5 or 6. +Please enter a number, 1-9? 5 +The number is 5. +This concludes our test. diff --git a/bwbtest/end.80 b/bwbtest/end.80 new file mode 100644 index 0000000..f89e2f5 --- /dev/null +++ b/bwbtest/end.80 @@ -0,0 +1,2 @@ +END.BAS -- Test END Statement +If the program ends after this line, END worked OK. diff --git a/bwbtest/end.OUT b/bwbtest/end.OUT new file mode 100644 index 0000000..65a5f31 --- /dev/null +++ b/bwbtest/end.OUT @@ -0,0 +1,2 @@ +END.BAS -- Test END Statement +If the program ends after this line, END worked OK. diff --git a/bwbtest/end.dif b/bwbtest/end.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/end.run b/bwbtest/end.run new file mode 100644 index 0000000..f89e2f5 --- /dev/null +++ b/bwbtest/end.run @@ -0,0 +1,2 @@ +END.BAS -- Test END Statement +If the program ends after this line, END worked OK. diff --git a/bwbtest/err.80 b/bwbtest/err.80 new file mode 100644 index 0000000..28e67d0 --- /dev/null +++ b/bwbtest/err.80 @@ -0,0 +1,5 @@ + +ERROR in line 20: SUBSCRIPT OUT OF RANGE n(7) + +STACK TRACE: +20:print n(7) diff --git a/bwbtest/err.OUT b/bwbtest/err.OUT new file mode 100644 index 0000000..a975ded --- /dev/null +++ b/bwbtest/err.OUT @@ -0,0 +1,5 @@ + +ERROR in line 20: SUBSCRIPT OUT OF RANGE n(7) + +STACK TRACE: +20:print n(7) diff --git a/bwbtest/err.dif b/bwbtest/err.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/err.run b/bwbtest/err.run new file mode 100644 index 0000000..28e67d0 --- /dev/null +++ b/bwbtest/err.run @@ -0,0 +1,5 @@ + +ERROR in line 20: SUBSCRIPT OUT OF RANGE n(7) + +STACK TRACE: +20:print n(7) diff --git a/bwbtest/fncallfn.80 b/bwbtest/fncallfn.80 new file mode 100644 index 0000000..bbb61b1 --- /dev/null +++ b/bwbtest/fncallfn.80 @@ -0,0 +1,3 @@ +Test user-defined function calling user-defined function +The result should be: 2.45678 +The result is: : 2.45678 diff --git a/bwbtest/fncallfn.OUT b/bwbtest/fncallfn.OUT new file mode 100644 index 0000000..a0a1d43 --- /dev/null +++ b/bwbtest/fncallfn.OUT @@ -0,0 +1,3 @@ +Test user-defined function calling user-defined function +The result should be: 2.45678 +The result is: : 2.45678 diff --git a/bwbtest/fncallfn.dif b/bwbtest/fncallfn.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/fncallfn.run b/bwbtest/fncallfn.run new file mode 100644 index 0000000..bbb61b1 --- /dev/null +++ b/bwbtest/fncallfn.run @@ -0,0 +1,3 @@ +Test user-defined function calling user-defined function +The result should be: 2.45678 +The result is: : 2.45678 diff --git a/bwbtest/fornext.80 b/bwbtest/fornext.80 new file mode 100644 index 0000000..2ba3db4 --- /dev/null +++ b/bwbtest/fornext.80 @@ -0,0 +1,24 @@ +FORNEXT.BAS: Test FOR-NEXT Statements +A FOR-NEXT Loop with STEP statement: +FOR: i is 1 +FOR: i is 3 +FOR: i is 5 +FOR: i is 7 +FOR: i is 9 +FOR: i is 11 +FOR: i is 13 +FOR: i is 15 +FOR: i is 17 +FOR: i is 19 +FOR: i is 21 +FOR: i is 23 +FOR: i is 25 +FOR: i is 27 +FOR: i is 29 +A FOR-NEXT Loop without STEP statement: +FOR: i is 2 +FOR: i is 3 +FOR: i is 4 +FOR: i is 5 +FOR: i is 6 +FOR: i is 7 diff --git a/bwbtest/fornext.OUT b/bwbtest/fornext.OUT new file mode 100644 index 0000000..aa11186 --- /dev/null +++ b/bwbtest/fornext.OUT @@ -0,0 +1,24 @@ +FORNEXT.BAS: Test FOR-NEXT Statements +A FOR-NEXT Loop with STEP statement: +FOR: i is 1 +FOR: i is 3 +FOR: i is 5 +FOR: i is 7 +FOR: i is 9 +FOR: i is 11 +FOR: i is 13 +FOR: i is 15 +FOR: i is 17 +FOR: i is 19 +FOR: i is 21 +FOR: i is 23 +FOR: i is 25 +FOR: i is 27 +FOR: i is 29 +A FOR-NEXT Loop without STEP statement: +FOR: i is 2 +FOR: i is 3 +FOR: i is 4 +FOR: i is 5 +FOR: i is 6 +FOR: i is 7 diff --git a/bwbtest/fornext.dif b/bwbtest/fornext.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/fornext.run b/bwbtest/fornext.run new file mode 100644 index 0000000..2ba3db4 --- /dev/null +++ b/bwbtest/fornext.run @@ -0,0 +1,24 @@ +FORNEXT.BAS: Test FOR-NEXT Statements +A FOR-NEXT Loop with STEP statement: +FOR: i is 1 +FOR: i is 3 +FOR: i is 5 +FOR: i is 7 +FOR: i is 9 +FOR: i is 11 +FOR: i is 13 +FOR: i is 15 +FOR: i is 17 +FOR: i is 19 +FOR: i is 21 +FOR: i is 23 +FOR: i is 25 +FOR: i is 27 +FOR: i is 29 +A FOR-NEXT Loop without STEP statement: +FOR: i is 2 +FOR: i is 3 +FOR: i is 4 +FOR: i is 5 +FOR: i is 6 +FOR: i is 7 diff --git a/bwbtest/function.80 b/bwbtest/function.80 new file mode 100644 index 0000000..e027225 --- /dev/null +++ b/bwbtest/function.80 @@ -0,0 +1,47 @@ +ABS(-2.2): 2.2 +DATE$: <05/09/2015> +TIME$: <20:53:42> +ATN(-2.2): -1.14417 +COS(-2.2): -.588501 +LOG(2.2): .788457 +SIN(-2.2): -.808496 +SQR(2.2): 1.48324 +TAN(-2.2): 1.37382 +SGN(-2.2): -1 +INT(-2.2): -3 +Paused? c +RND(-2.2): .396465 +CHR$(&h60): ` +TAB(52): < > +SPC(5): < > +SPACE$(5): < > +STRING$(5,X): +MID$(0123456789, 5, 4): <4567> +LEFT$(0123456789, 5): <01234> +RIGHT$(0123456789, 5): <56789> +TIMER: 75222 +Paused? A +VAL(X): 0 +ERR: 0 +ERL: 0 +LEN(0123456789): 10 +CSNG(-2.2): -2.2 +EXP(-2.2): .110803 +INSTR(0123456789, 234): 3 +STR$(-2.2): <-2.2> +HEX$(27): <1B> +Paused? B +OCT$(27): <33> +CINT(-2.2): -2 +ASC(0123456789): 48 +ENVIRON$(PATH): < +/data/data/com.pdaxrom.cctools/root/cctools/sbin:/data/data/com.pdaxrom.cctools/ +root/cctools/bin:/system/xbin:/system/bin:/data/data/com.pdaxrom.cctools/root/cc +tools/bin:/data/data/com.pdaxrom.cctools/root/cctools/sbin:/sbin:/vendor/bin:/sy +stem/sbin:/system/bin:/system/xbin> +MKD$(17): <> +MKI$(17): < > +MKS$(17): <> +CVD(MKD$(17)): 17 +CVS(MKS$(17)): 17 +CVI(MKI$(17)): 17 diff --git a/bwbtest/function.INP b/bwbtest/function.INP new file mode 100644 index 0000000..ed3c9fb --- /dev/null +++ b/bwbtest/function.INP @@ -0,0 +1,5 @@ +c +A +B +A +D diff --git a/bwbtest/function.OUT b/bwbtest/function.OUT new file mode 100644 index 0000000..f7ceca0 --- /dev/null +++ b/bwbtest/function.OUT @@ -0,0 +1,47 @@ +ABS(-2.2): 2.2 +DATE$: <05/09/2015> +TIME$: <20:53:42> +ATN(-2.2): -1.14417 +COS(-2.2): -.588501 +LOG(2.2): .788457 +SIN(-2.2): -.808496 +SQR(2.2): 1.48324 +TAN(-2.2): 1.37382 +SGN(-2.2): -1 +INT(-2.2): -3 +Paused? c +RND(-2.2): .396465 +CHR$(&h60): ` +TAB(52): < > +SPC(5): < > +SPACE$(5): < > +STRING$(5,X): +MID$(0123456789, 5, 4): <4567> +LEFT$(0123456789, 5): <01234> +RIGHT$(0123456789, 5): <56789> +TIMER: 75222 +Paused? A +VAL(X): 0 +ERR: 0 +ERL: 0 +LEN(0123456789): 10 +CSNG(-2.2): -2.2 +EXP(-2.2): .110803 +INSTR(0123456789, 234): 3 +STR$(-2.2): <-2.2> +HEX$(27): <1B> +Paused? B +OCT$(27): <33> +CINT(-2.2): -2 +ASC(0123456789): 48 +ENVIRON$(PATH): < +/data/data/com.pdaxrom.cctools/root/cctools/sbin:/data/data/com.pdaxrom.cctools/ +root/cctools/bin:/system/xbin:/system/bin:/data/data/com.pdaxrom.cctools/root/cc +tools/bin:/data/data/com.pdaxrom.cctools/root/cctools/sbin:/sbin:/vendor/bin:/sy +stem/sbin:/system/bin:/system/xbin> +MKD$(17): <> +MKI$(17): <> +MKS$(17): <> +CVD(MKD$(17)): 17 +CVS(MKS$(17)): 17 +CVI(MKI$(17)): 17 diff --git a/bwbtest/function.dif b/bwbtest/function.dif new file mode 100644 index 0000000..91a8316 --- /dev/null +++ b/bwbtest/function.dif @@ -0,0 +1,20 @@ +--- function.run ++++ function.80 +@@ -1,6 +1,6 @@ + ABS(-2.2): 2.2 +-DATE$: <03/07/2015> +-TIME$: <21:07:44> ++DATE$: <05/09/2015> ++TIME$: <20:53:42> + ATN(-2.2): -1.14417 + COS(-2.2): -.588501 + LOG(2.2): .788457 +@@ -19,7 +19,7 @@ + MID$(0123456789, 5, 4): <4567> + LEFT$(0123456789, 5): <01234> + RIGHT$(0123456789, 5): <56789> +-TIMER: 76064 ++TIMER: 75222 + Paused? A + VAL(X): 0 + ERR: 0 diff --git a/bwbtest/function.run b/bwbtest/function.run new file mode 100644 index 0000000..b419b98 --- /dev/null +++ b/bwbtest/function.run @@ -0,0 +1,47 @@ +ABS(-2.2): 2.2 +DATE$: <03/07/2015> +TIME$: <21:07:44> +ATN(-2.2): -1.14417 +COS(-2.2): -.588501 +LOG(2.2): .788457 +SIN(-2.2): -.808496 +SQR(2.2): 1.48324 +TAN(-2.2): 1.37382 +SGN(-2.2): -1 +INT(-2.2): -3 +Paused? c +RND(-2.2): .396465 +CHR$(&h60): ` +TAB(52): < > +SPC(5): < > +SPACE$(5): < > +STRING$(5,X): +MID$(0123456789, 5, 4): <4567> +LEFT$(0123456789, 5): <01234> +RIGHT$(0123456789, 5): <56789> +TIMER: 76064 +Paused? A +VAL(X): 0 +ERR: 0 +ERL: 0 +LEN(0123456789): 10 +CSNG(-2.2): -2.2 +EXP(-2.2): .110803 +INSTR(0123456789, 234): 3 +STR$(-2.2): <-2.2> +HEX$(27): <1B> +Paused? B +OCT$(27): <33> +CINT(-2.2): -2 +ASC(0123456789): 48 +ENVIRON$(PATH): < +/data/data/com.pdaxrom.cctools/root/cctools/sbin:/data/data/com.pdaxrom.cctools/ +root/cctools/bin:/system/xbin:/system/bin:/data/data/com.pdaxrom.cctools/root/cc +tools/bin:/data/data/com.pdaxrom.cctools/root/cctools/sbin:/sbin:/vendor/bin:/sy +stem/sbin:/system/bin:/system/xbin> +MKD$(17): <> +MKI$(17): < > +MKS$(17): <> +CVD(MKD$(17)): 17 +CVS(MKS$(17)): 17 +CVI(MKI$(17)): 17 diff --git a/bwbtest/gosub.80 b/bwbtest/gosub.80 new file mode 100644 index 0000000..1ff06e3 --- /dev/null +++ b/bwbtest/gosub.80 @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +Test GOSUB Statements +--------------------- + +1 - Run Subroutine +9 - Exit to system +x - Exit to BASIC + +? 1 + + + + + + + + + + + + + + + + + + + + + + + + + +This is the subroutine. +Press any key: ? a + + + + + + + + + + + + + + + + + + + + + + + + + +Test GOSUB Statements +--------------------- + +1 - Run Subroutine +9 - Exit to system +x - Exit to BASIC + +? 9 + + + + + + + + + + + + + + + + + + + + + + + + + +Exit from Bywater BASIC Test Program + diff --git a/bwbtest/gosub.INP b/bwbtest/gosub.INP new file mode 100644 index 0000000..c9046ae --- /dev/null +++ b/bwbtest/gosub.INP @@ -0,0 +1,3 @@ +1 +a +9 diff --git a/bwbtest/gosub.OUT b/bwbtest/gosub.OUT new file mode 100644 index 0000000..f5f0a3f --- /dev/null +++ b/bwbtest/gosub.OUT @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +Test GOSUB Statements +--------------------- + +1 - Run Subroutine +9 - Exit to system +x - Exit to BASIC + +? 1 + + + + + + + + + + + + + + + + + + + + + + + + + +This is the subroutine. +Press any key: ? a + + + + + + + + + + + + + + + + + + + + + + + + + +Test GOSUB Statements +--------------------- + +1 - Run Subroutine +9 - Exit to system +x - Exit to BASIC + +? 9 + + + + + + + + + + + + + + + + + + + + + + + + + +Exit from Bywater BASIC Test Program + diff --git a/bwbtest/gosub.bas b/bwbtest/gosub.bas index 1c51e9a..1f666b1 100644 --- a/bwbtest/gosub.bas +++ b/bwbtest/gosub.bas @@ -10,10 +10,18 @@ 92 PRINT "x - Exit to BASIC" 100 PRINT 110 INPUT c$ -120 IF c$ = "1" then gosub 430 -130 IF c$ = "9" then goto 600 -132 IF c$ = "x" then end -134 IF c$ = "X" then end +120 IF c$ = "1" then + gosub 430 + end if +125 IF c$ = "9" then + goto 600 + end if +130 IF c$ = "x" then + end + end if +135 IF c$ = "X" then + end + end if 140 GOTO 10 150 END 160 REM subroutine to clear screen diff --git a/bwbtest/gosub.dif b/bwbtest/gosub.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/gosub.run b/bwbtest/gosub.run new file mode 100644 index 0000000..1ff06e3 --- /dev/null +++ b/bwbtest/gosub.run @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +Test GOSUB Statements +--------------------- + +1 - Run Subroutine +9 - Exit to system +x - Exit to BASIC + +? 1 + + + + + + + + + + + + + + + + + + + + + + + + + +This is the subroutine. +Press any key: ? a + + + + + + + + + + + + + + + + + + + + + + + + + +Test GOSUB Statements +--------------------- + +1 - Run Subroutine +9 - Exit to system +x - Exit to BASIC + +? 9 + + + + + + + + + + + + + + + + + + + + + + + + + +Exit from Bywater BASIC Test Program + diff --git a/bwbtest/gotolabl.80 b/bwbtest/gotolabl.80 new file mode 100644 index 0000000..f8404bf --- /dev/null +++ b/bwbtest/gotolabl.80 @@ -0,0 +1,4 @@ +Hello +This is the subroutine. +This is the sub-subroutine. +Goodbye diff --git a/bwbtest/gotolabl.OUT b/bwbtest/gotolabl.OUT new file mode 100644 index 0000000..f3f45d3 --- /dev/null +++ b/bwbtest/gotolabl.OUT @@ -0,0 +1,4 @@ +Hello +This is the subroutine. +This is the sub-subroutine. +Goodbye diff --git a/bwbtest/gotolabl.dif b/bwbtest/gotolabl.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/gotolabl.run b/bwbtest/gotolabl.run new file mode 100644 index 0000000..f8404bf --- /dev/null +++ b/bwbtest/gotolabl.run @@ -0,0 +1,4 @@ +Hello +This is the subroutine. +This is the sub-subroutine. +Goodbye diff --git a/bwbtest/ifline.80 b/bwbtest/ifline.80 new file mode 100644 index 0000000..963f2f7 --- /dev/null +++ b/bwbtest/ifline.80 @@ -0,0 +1 @@ +The program succeeded diff --git a/bwbtest/ifline.OUT b/bwbtest/ifline.OUT new file mode 100644 index 0000000..05316b3 --- /dev/null +++ b/bwbtest/ifline.OUT @@ -0,0 +1 @@ +The program succeeded diff --git a/bwbtest/ifline.dif b/bwbtest/ifline.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/ifline.run b/bwbtest/ifline.run new file mode 100644 index 0000000..963f2f7 --- /dev/null +++ b/bwbtest/ifline.run @@ -0,0 +1 @@ +The program succeeded diff --git a/bwbtest/input.80 b/bwbtest/input.80 new file mode 100644 index 0000000..95e528d --- /dev/null +++ b/bwbtest/input.80 @@ -0,0 +1,4 @@ +INPUT.BAS -- Test INPUT Statement +Input string, number: ? abc,123 +The string is: abc +The number is: 123 diff --git a/bwbtest/input.INP b/bwbtest/input.INP new file mode 100644 index 0000000..7e00f52 --- /dev/null +++ b/bwbtest/input.INP @@ -0,0 +1 @@ +abc,123 diff --git a/bwbtest/input.OUT b/bwbtest/input.OUT new file mode 100644 index 0000000..cbdcff9 --- /dev/null +++ b/bwbtest/input.OUT @@ -0,0 +1,4 @@ +INPUT.BAS -- Test INPUT Statement +Input string, number: ? abc,123 +The string is: abc +The number is: 123 diff --git a/bwbtest/input.dif b/bwbtest/input.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/input.run b/bwbtest/input.run new file mode 100644 index 0000000..95e528d --- /dev/null +++ b/bwbtest/input.run @@ -0,0 +1,4 @@ +INPUT.BAS -- Test INPUT Statement +Input string, number: ? abc,123 +The string is: abc +The number is: 123 diff --git a/bwbtest/lof.80 b/bwbtest/lof.80 new file mode 100644 index 0000000..1fcc4fa --- /dev/null +++ b/bwbtest/lof.80 @@ -0,0 +1,3 @@ +Test LOF() Function +Filename? lof.bas +Length of file lof.bas is 142 bytes diff --git a/bwbtest/lof.INP b/bwbtest/lof.INP new file mode 100644 index 0000000..7e1bde0 --- /dev/null +++ b/bwbtest/lof.INP @@ -0,0 +1 @@ +lof.bas diff --git a/bwbtest/lof.OUT b/bwbtest/lof.OUT new file mode 100644 index 0000000..432f09d --- /dev/null +++ b/bwbtest/lof.OUT @@ -0,0 +1,3 @@ +Test LOF() Function +Filename? lof.bas +Length of file lof.bas is 142 bytes diff --git a/bwbtest/lof.dif b/bwbtest/lof.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/lof.run b/bwbtest/lof.run new file mode 100644 index 0000000..1fcc4fa --- /dev/null +++ b/bwbtest/lof.run @@ -0,0 +1,3 @@ +Test LOF() Function +Filename? lof.bas +Length of file lof.bas is 142 bytes diff --git a/bwbtest/loopuntl.80 b/bwbtest/loopuntl.80 new file mode 100644 index 0000000..255bc69 --- /dev/null +++ b/bwbtest/loopuntl.80 @@ -0,0 +1,13 @@ +Value of i is 1 +Value of i is 2 +Value of i is 3 +Value of i is 4 +Value of i is 5 +Value of i is 6 +Value of i is 7 +Value of i is 8 +Value of i is 9 +Value of i is 10 +Value of i is 11 +Value of i is 12 +Value of i is 13 diff --git a/bwbtest/loopuntl.OUT b/bwbtest/loopuntl.OUT new file mode 100644 index 0000000..781eaf1 --- /dev/null +++ b/bwbtest/loopuntl.OUT @@ -0,0 +1,13 @@ +Value of i is 1 +Value of i is 2 +Value of i is 3 +Value of i is 4 +Value of i is 5 +Value of i is 6 +Value of i is 7 +Value of i is 8 +Value of i is 9 +Value of i is 10 +Value of i is 11 +Value of i is 12 +Value of i is 13 diff --git a/bwbtest/loopuntl.dif b/bwbtest/loopuntl.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/loopuntl.run b/bwbtest/loopuntl.run new file mode 100644 index 0000000..255bc69 --- /dev/null +++ b/bwbtest/loopuntl.run @@ -0,0 +1,13 @@ +Value of i is 1 +Value of i is 2 +Value of i is 3 +Value of i is 4 +Value of i is 5 +Value of i is 6 +Value of i is 7 +Value of i is 8 +Value of i is 9 +Value of i is 10 +Value of i is 11 +Value of i is 12 +Value of i is 13 diff --git a/bwbtest/main.80 b/bwbtest/main.80 new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/main.OUT b/bwbtest/main.OUT new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/main.bas b/bwbtest/main.bas index c527072..4562510 100644 --- a/bwbtest/main.bas +++ b/bwbtest/main.bas @@ -14,4 +14,6 @@ Sub Subsequent Print "This should not print." End Sub +Main + diff --git a/bwbtest/main.dif b/bwbtest/main.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/main.run b/bwbtest/main.run new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/mlifthen.80 b/bwbtest/mlifthen.80 new file mode 100644 index 0000000..b153c40 --- /dev/null +++ b/bwbtest/mlifthen.80 @@ -0,0 +1,4 @@ +MLIFTHEN.BAS -- Test MultiLine IF-THEN-ELSE Constructions +The condition is false. +And it still is false. +This concludes our test. diff --git a/bwbtest/mlifthen.OUT b/bwbtest/mlifthen.OUT new file mode 100644 index 0000000..222ee8e --- /dev/null +++ b/bwbtest/mlifthen.OUT @@ -0,0 +1,4 @@ +MLIFTHEN.BAS -- Test MultiLine IF-THEN-ELSE Constructions +The condition is false. +And it still is false. +This concludes our test. diff --git a/bwbtest/mlifthen.dif b/bwbtest/mlifthen.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/mlifthen.run b/bwbtest/mlifthen.run new file mode 100644 index 0000000..b153c40 --- /dev/null +++ b/bwbtest/mlifthen.run @@ -0,0 +1,4 @@ +MLIFTHEN.BAS -- Test MultiLine IF-THEN-ELSE Constructions +The condition is false. +And it still is false. +This concludes our test. diff --git a/bwbtest/on.80 b/bwbtest/on.80 new file mode 100644 index 0000000..778dcd6 --- /dev/null +++ b/bwbtest/on.80 @@ -0,0 +1,3 @@ +ON.BAS -- Test ON...GOTO Statement +Enter a number 1-5:? 5 +You entered 5 diff --git a/bwbtest/on.INP b/bwbtest/on.INP new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/bwbtest/on.INP @@ -0,0 +1 @@ +5 diff --git a/bwbtest/on.OUT b/bwbtest/on.OUT new file mode 100644 index 0000000..5633166 --- /dev/null +++ b/bwbtest/on.OUT @@ -0,0 +1,3 @@ +ON.BAS -- Test ON...GOTO Statement +Enter a number 1-5:? 5 +You entered 5 diff --git a/bwbtest/on.dif b/bwbtest/on.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/on.run b/bwbtest/on.run new file mode 100644 index 0000000..778dcd6 --- /dev/null +++ b/bwbtest/on.run @@ -0,0 +1,3 @@ +ON.BAS -- Test ON...GOTO Statement +Enter a number 1-5:? 5 +You entered 5 diff --git a/bwbtest/onerr.80 b/bwbtest/onerr.80 new file mode 100644 index 0000000..5ec02e9 --- /dev/null +++ b/bwbtest/onerr.80 @@ -0,0 +1,6 @@ +Test bwBASIC ON ERROR GOSUB statement +The next line will include an error +This is the error handler +The error number is 4 +The error line is 50 +This is the line after the error diff --git a/bwbtest/onerr.OUT b/bwbtest/onerr.OUT new file mode 100644 index 0000000..3b7d4c0 --- /dev/null +++ b/bwbtest/onerr.OUT @@ -0,0 +1,6 @@ +Test bwBASIC ON ERROR GOSUB statement +The next line will include an error +This is the error handler +The error number is 4 +The error line is 50 +This is the line after the error diff --git a/bwbtest/onerr.bas b/bwbtest/onerr.bas index 8c60352..5fdb84b 100644 --- a/bwbtest/onerr.bas +++ b/bwbtest/onerr.bas @@ -1,8 +1,9 @@ +1 OPTION ERROR GOSUB 10 rem onerr.bas -- test bwBASIC ON ERROR GOSUB statement 20 print "Test bwBASIC ON ERROR GOSUB statement" 30 on error gosub 100 40 print "The next line will include an error" -50 if d$ = 78.98 then print "This should not print" +50 READ d$ ' if d$ = 78.98 then print "This should not print" 60 print "This is the line after the error" 70 end 100 rem Error handler diff --git a/bwbtest/onerr.dif b/bwbtest/onerr.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/onerr.run b/bwbtest/onerr.run new file mode 100644 index 0000000..5ec02e9 --- /dev/null +++ b/bwbtest/onerr.run @@ -0,0 +1,6 @@ +Test bwBASIC ON ERROR GOSUB statement +The next line will include an error +This is the error handler +The error number is 4 +The error line is 50 +This is the line after the error diff --git a/bwbtest/onerrlbl.80 b/bwbtest/onerrlbl.80 new file mode 100644 index 0000000..db8d090 --- /dev/null +++ b/bwbtest/onerrlbl.80 @@ -0,0 +1,6 @@ +Test bwBASIC ON ERROR GOSUB statement +The next line will include an error +This is the error handler +The error number is 4 +The error line is 1040 +This is the line after the error diff --git a/bwbtest/onerrlbl.OUT b/bwbtest/onerrlbl.OUT new file mode 100644 index 0000000..96da707 --- /dev/null +++ b/bwbtest/onerrlbl.OUT @@ -0,0 +1,6 @@ +Test bwBASIC ON ERROR GOSUB statement +The next line will include an error +This is the error handler +The error number is 4 +The error line is 1040 +This is the line after the error diff --git a/bwbtest/onerrlbl.bas b/bwbtest/onerrlbl.bas index e3a0026..061e4aa 100644 --- a/bwbtest/onerrlbl.bas +++ b/bwbtest/onerrlbl.bas @@ -1,12 +1,13 @@ -rem onerrlbl.bas -- test bwBASIC ON ERROR GOSUB statement with label -print "Test bwBASIC ON ERROR GOSUB statement" -on error gosub handler -print "The next line will include an error" -if d$ = 78.98 then print "This should not print" -print "This is the line after the error" -end -handler: -print "This is the error handler" -print "The error number is ";err -print "The error line is ";erl -return +1 OPTION ERROR GOSUB +1000 rem onerrlbl.bas -- test bwBASIC ON ERROR GOSUB statement with label +1010 print "Test bwBASIC ON ERROR GOSUB statement" +1020 on error gosub handler +1030 print "The next line will include an error" +1040 READ d$ ' if d$ = 78.98 then print "This should not print" +1050 print "This is the line after the error" +1060 end +1070 handler: +1080 print "This is the error handler" +1090 print "The error number is ";err +1100 print "The error line is ";erl +1110 return diff --git a/bwbtest/onerrlbl.dif b/bwbtest/onerrlbl.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/onerrlbl.run b/bwbtest/onerrlbl.run new file mode 100644 index 0000000..db8d090 --- /dev/null +++ b/bwbtest/onerrlbl.run @@ -0,0 +1,6 @@ +Test bwBASIC ON ERROR GOSUB statement +The next line will include an error +This is the error handler +The error number is 4 +The error line is 1040 +This is the line after the error diff --git a/bwbtest/ongosub.80 b/bwbtest/ongosub.80 new file mode 100644 index 0000000..66af63b --- /dev/null +++ b/bwbtest/ongosub.80 @@ -0,0 +1,4 @@ +ONGOSUB.BAS -- Test ON..GOSUB Statement +Enter a number 1-5? 5 +You entered 5 +The End diff --git a/bwbtest/ongosub.INP b/bwbtest/ongosub.INP new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/bwbtest/ongosub.INP @@ -0,0 +1 @@ +5 diff --git a/bwbtest/ongosub.OUT b/bwbtest/ongosub.OUT new file mode 100644 index 0000000..3a0d472 --- /dev/null +++ b/bwbtest/ongosub.OUT @@ -0,0 +1,4 @@ +ONGOSUB.BAS -- Test ON..GOSUB Statement +Enter a number 1-5? 5 +You entered 5 +The End diff --git a/bwbtest/ongosub.dif b/bwbtest/ongosub.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/ongosub.run b/bwbtest/ongosub.run new file mode 100644 index 0000000..66af63b --- /dev/null +++ b/bwbtest/ongosub.run @@ -0,0 +1,4 @@ +ONGOSUB.BAS -- Test ON..GOSUB Statement +Enter a number 1-5? 5 +You entered 5 +The End diff --git a/bwbtest/opentest.80 b/bwbtest/opentest.80 new file mode 100644 index 0000000..05008fe --- /dev/null +++ b/bwbtest/opentest.80 @@ -0,0 +1,4 @@ +OPENTEST.BAS -- Test OPEN, PRINT#, LINE INPUT#, and CLOSE +Read from file: +>This is line 1. +>This is line 2. diff --git a/bwbtest/opentest.OUT b/bwbtest/opentest.OUT new file mode 100644 index 0000000..3bf3072 --- /dev/null +++ b/bwbtest/opentest.OUT @@ -0,0 +1,4 @@ +OPENTEST.BAS -- Test OPEN, PRINT#, LINE INPUT#, and CLOSE +Read from file: +>This is line 1. +>This is line 2. diff --git a/bwbtest/opentest.dif b/bwbtest/opentest.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/opentest.run b/bwbtest/opentest.run new file mode 100644 index 0000000..05008fe --- /dev/null +++ b/bwbtest/opentest.run @@ -0,0 +1,4 @@ +OPENTEST.BAS -- Test OPEN, PRINT#, LINE INPUT#, and CLOSE +Read from file: +>This is line 1. +>This is line 2. diff --git a/bwbtest/option.80 b/bwbtest/option.80 new file mode 100644 index 0000000..5d64184 --- /dev/null +++ b/bwbtest/option.80 @@ -0,0 +1,6 @@ +OPTION.BAS -- Test OPTION BASE Statement +The value at position 1 is 3 +The value at position 2 is 4 +The value at position 3 is 5 +The value at position 4 is 6 +The value at position 5 is 7 diff --git a/bwbtest/option.OUT b/bwbtest/option.OUT new file mode 100644 index 0000000..e6d0777 --- /dev/null +++ b/bwbtest/option.OUT @@ -0,0 +1,6 @@ +OPTION.BAS -- Test OPTION BASE Statement +The value at position 1 is 3 +The value at position 2 is 4 +The value at position 3 is 5 +The value at position 4 is 6 +The value at position 5 is 7 diff --git a/bwbtest/option.dif b/bwbtest/option.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/option.run b/bwbtest/option.run new file mode 100644 index 0000000..5d64184 --- /dev/null +++ b/bwbtest/option.run @@ -0,0 +1,6 @@ +OPTION.BAS -- Test OPTION BASE Statement +The value at position 1 is 3 +The value at position 2 is 4 +The value at position 3 is 5 +The value at position 4 is 6 +The value at position 5 is 7 diff --git a/bwbtest/pascaltr.80 b/bwbtest/pascaltr.80 new file mode 100644 index 0000000..3e69331 --- /dev/null +++ b/bwbtest/pascaltr.80 @@ -0,0 +1,14 @@ + 0 : 1 + 1 : 1 1 + 2 : 1 2 1 + 3 : 1 3 3 1 + 4 : 1 4 6 4 1 + 5 : 1 5 10 10 5 1 + 6 : 1 6 15 20 15 6 1 + 7 : 1 7 21 35 35 21 7 1 + 8 : 1 8 28 56 70 56 28 8 1 + 9 : 1 9 36 84 126 126 84 36 9 1 + 10 : 1 10 45 120 210 252 210 120 45 10 1 + 11 : 1 11 55 165 330 462 462 330 165 55 11 1 + 12 : 1 12 66 220 495 792 924 792 495 220 66 12 1 + 13 : 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 diff --git a/bwbtest/pascaltr.OUT b/bwbtest/pascaltr.OUT new file mode 100644 index 0000000..2b75321 --- /dev/null +++ b/bwbtest/pascaltr.OUT @@ -0,0 +1,14 @@ + 0 : 1 + 1 : 1 1 + 2 : 1 2 1 + 3 : 1 3 3 1 + 4 : 1 4 6 4 1 + 5 : 1 5 10 10 5 1 + 6 : 1 6 15 20 15 6 1 + 7 : 1 7 21 35 35 21 7 1 + 8 : 1 8 28 56 70 56 28 8 1 + 9 : 1 9 36 84 126 126 84 36 9 1 + 10 : 1 10 45 120 210 252 210 120 45 10 1 + 11 : 1 11 55 165 330 462 462 330 165 55 11 1 + 12 : 1 12 66 220 495 792 924 792 495 220 66 12 1 + 13 : 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 diff --git a/bwbtest/pascaltr.dif b/bwbtest/pascaltr.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/pascaltr.run b/bwbtest/pascaltr.run new file mode 100644 index 0000000..3e69331 --- /dev/null +++ b/bwbtest/pascaltr.run @@ -0,0 +1,14 @@ + 0 : 1 + 1 : 1 1 + 2 : 1 2 1 + 3 : 1 3 3 1 + 4 : 1 4 6 4 1 + 5 : 1 5 10 10 5 1 + 6 : 1 6 15 20 15 6 1 + 7 : 1 7 21 35 35 21 7 1 + 8 : 1 8 28 56 70 56 28 8 1 + 9 : 1 9 36 84 126 126 84 36 9 1 + 10 : 1 10 45 120 210 252 210 120 45 10 1 + 11 : 1 11 55 165 330 462 462 330 165 55 11 1 + 12 : 1 12 66 220 495 792 924 792 495 220 66 12 1 + 13 : 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 diff --git a/bwbtest/profile.bas b/bwbtest/profile.bas new file mode 100644 index 0000000..bccdd9f --- /dev/null +++ b/bwbtest/profile.bas @@ -0,0 +1 @@ +OPTION VERSION BYWATER diff --git a/bwbtest/putget.80 b/bwbtest/putget.80 new file mode 100644 index 0000000..8c8335a --- /dev/null +++ b/bwbtest/putget.80 @@ -0,0 +1,8 @@ +name: abc +address: 123 main +phone: 111-222-3333 +name: xyz +address: 987 any street +phone: 999-888-7777 +abc 123 main 111-222- +xyz 987 any street 999-888- diff --git a/bwbtest/putget.INP b/bwbtest/putget.INP new file mode 100644 index 0000000..2f51905 --- /dev/null +++ b/bwbtest/putget.INP @@ -0,0 +1,6 @@ +abc +123 main +111-222-3333 +xyz +987 any street +999-888-7777 diff --git a/bwbtest/putget.OUT b/bwbtest/putget.OUT new file mode 100644 index 0000000..33b8c76 --- /dev/null +++ b/bwbtest/putget.OUT @@ -0,0 +1,8 @@ +name: abc +address: 123 main +phone: 111-222-3333 +name: xyz +address: 987 any street +phone: 999-888-7777 +abc 123 main 111-222- +xyz 987 any street 999-888- diff --git a/bwbtest/putget.dif b/bwbtest/putget.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/putget.run b/bwbtest/putget.run new file mode 100644 index 0000000..8c8335a --- /dev/null +++ b/bwbtest/putget.run @@ -0,0 +1,8 @@ +name: abc +address: 123 main +phone: 111-222-3333 +name: xyz +address: 987 any street +phone: 999-888-7777 +abc 123 main 111-222- +xyz 987 any street 999-888- diff --git a/bwbtest/random.80 b/bwbtest/random.80 new file mode 100644 index 0000000..661e644 --- /dev/null +++ b/bwbtest/random.80 @@ -0,0 +1,10 @@ +This is a first sequence of three RND numbers: + .76199 + .413139 + .68009 +This is a second sequence of three RND numbers: + .436431 + .095767 + .972111 +The second sequence should have been differrent +from the first. diff --git a/bwbtest/random.OUT b/bwbtest/random.OUT new file mode 100644 index 0000000..1b7797a --- /dev/null +++ b/bwbtest/random.OUT @@ -0,0 +1,10 @@ +This is a first sequence of three RND numbers: + .76199 + .413139 + .68009 +This is a second sequence of three RND numbers: + .436431 + .095767 + .972111 +The second sequence should have been differrent +from the first. diff --git a/bwbtest/random.dif b/bwbtest/random.dif new file mode 100644 index 0000000..63ff7ea --- /dev/null +++ b/bwbtest/random.dif @@ -0,0 +1,19 @@ +--- random.run ++++ random.80 +@@ -1,10 +1,10 @@ + This is a first sequence of three RND numbers: +- .682314 +- .77127 +- .648104 ++ .76199 ++ .413139 ++ .68009 + This is a second sequence of three RND numbers: +- .356755 +- .453898 +- .940124 ++ .436431 ++ .095767 ++ .972111 + The second sequence should have been differrent + from the first. diff --git a/bwbtest/random.run b/bwbtest/random.run new file mode 100644 index 0000000..8de88a4 --- /dev/null +++ b/bwbtest/random.run @@ -0,0 +1,10 @@ +This is a first sequence of three RND numbers: + .682314 + .77127 + .648104 +This is a second sequence of three RND numbers: + .356755 + .453898 + .940124 +The second sequence should have been differrent +from the first. diff --git a/bwbtest/selcase.80 b/bwbtest/selcase.80 new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/selcase.OUT b/bwbtest/selcase.OUT new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/selcase.dif b/bwbtest/selcase.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/selcase.run b/bwbtest/selcase.run new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/snglfunc.80 b/bwbtest/snglfunc.80 new file mode 100644 index 0000000..4e2f96c --- /dev/null +++ b/bwbtest/snglfunc.80 @@ -0,0 +1,5 @@ +SnglFunc.BAS -- Test Single-Line User-defined Function Statement + + +The sum of 6 and 4 is 10 +Did it work properly? diff --git a/bwbtest/snglfunc.OUT b/bwbtest/snglfunc.OUT new file mode 100644 index 0000000..f3c577f --- /dev/null +++ b/bwbtest/snglfunc.OUT @@ -0,0 +1,5 @@ +SnglFunc.BAS -- Test Single-Line User-defined Function Statement + + +The sum of 6 and 4 is 10 +Did it work properly? diff --git a/bwbtest/snglfunc.dif b/bwbtest/snglfunc.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/snglfunc.run b/bwbtest/snglfunc.run new file mode 100644 index 0000000..4e2f96c --- /dev/null +++ b/bwbtest/snglfunc.run @@ -0,0 +1,5 @@ +SnglFunc.BAS -- Test Single-Line User-defined Function Statement + + +The sum of 6 and 4 is 10 +Did it work properly? diff --git a/bwbtest/stop.80 b/bwbtest/stop.80 new file mode 100644 index 0000000..838ba4c --- /dev/null +++ b/bwbtest/stop.80 @@ -0,0 +1,4 @@ +STOP.BAS -- Test STOP Statement +If the program is interrupted after this line, STOP worked OK + +Program interrupted at line 40 diff --git a/bwbtest/stop.OUT b/bwbtest/stop.OUT new file mode 100644 index 0000000..372cc2d --- /dev/null +++ b/bwbtest/stop.OUT @@ -0,0 +1,4 @@ +STOP.BAS -- Test STOP Statement +If the program is interrupted after this line, STOP worked OK + +Program interrupted at line 40 diff --git a/bwbtest/stop.dif b/bwbtest/stop.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/stop.run b/bwbtest/stop.run new file mode 100644 index 0000000..838ba4c --- /dev/null +++ b/bwbtest/stop.run @@ -0,0 +1,4 @@ +STOP.BAS -- Test STOP Statement +If the program is interrupted after this line, STOP worked OK + +Program interrupted at line 40 diff --git a/bwbtest/term.80 b/bwbtest/term.80 new file mode 100644 index 0000000..e49fe2d --- /dev/null +++ b/bwbtest/term.80 @@ -0,0 +1,2 @@ + [2J Bywater BASIC +? abc diff --git a/bwbtest/term.INP b/bwbtest/term.INP new file mode 100644 index 0000000..8baef1b --- /dev/null +++ b/bwbtest/term.INP @@ -0,0 +1 @@ +abc diff --git a/bwbtest/term.OUT b/bwbtest/term.OUT new file mode 100644 index 0000000..fce878d --- /dev/null +++ b/bwbtest/term.OUT @@ -0,0 +1,2 @@ + Bywater BASIC +? abc diff --git a/bwbtest/term.dif b/bwbtest/term.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/term.run b/bwbtest/term.run new file mode 100644 index 0000000..e49fe2d --- /dev/null +++ b/bwbtest/term.run @@ -0,0 +1,2 @@ + [2J Bywater BASIC +? abc diff --git a/bwbtest/test.out b/bwbtest/test.out new file mode 100644 index 0000000..f9d10fb --- /dev/null +++ b/bwbtest/test.out @@ -0,0 +1,2 @@ +This is line 1. +This is line 2. diff --git a/bwbtest/whilwend.80 b/bwbtest/whilwend.80 new file mode 100644 index 0000000..90353ba --- /dev/null +++ b/bwbtest/whilwend.80 @@ -0,0 +1,77 @@ +START +x is 0 +y is 0 +y is 1 +x is 1 +y is 0 +y is 1 +x is 2 +y is 0 +y is 1 +x is 3 +y is 0 +y is 1 +x is 4 +y is 0 +y is 1 +x is 5 +y is 0 +y is 1 +x is 6 +y is 0 +y is 1 +x is 7 +y is 0 +y is 1 +x is 8 +y is 0 +y is 1 +x is 9 +y is 0 +y is 1 +x is 10 +y is 0 +y is 1 +x is 11 +y is 0 +y is 1 +x is 12 +y is 0 +y is 1 +x is 13 +y is 0 +y is 1 +x is 14 +y is 0 +y is 1 +x is 15 +y is 0 +y is 1 +x is 16 +y is 0 +y is 1 +x is 17 +y is 0 +y is 1 +x is 18 +y is 0 +y is 1 +x is 19 +y is 0 +y is 1 +x is 20 +y is 0 +y is 1 +x is 21 +y is 0 +y is 1 +x is 22 +y is 0 +y is 1 +x is 23 +y is 0 +y is 1 +x is 24 +y is 0 +y is 1 +END diff --git a/bwbtest/whilwend.OUT b/bwbtest/whilwend.OUT new file mode 100644 index 0000000..a488c30 --- /dev/null +++ b/bwbtest/whilwend.OUT @@ -0,0 +1,77 @@ +START +x is 0 +y is 0 +y is 1 +x is 1 +y is 0 +y is 1 +x is 2 +y is 0 +y is 1 +x is 3 +y is 0 +y is 1 +x is 4 +y is 0 +y is 1 +x is 5 +y is 0 +y is 1 +x is 6 +y is 0 +y is 1 +x is 7 +y is 0 +y is 1 +x is 8 +y is 0 +y is 1 +x is 9 +y is 0 +y is 1 +x is 10 +y is 0 +y is 1 +x is 11 +y is 0 +y is 1 +x is 12 +y is 0 +y is 1 +x is 13 +y is 0 +y is 1 +x is 14 +y is 0 +y is 1 +x is 15 +y is 0 +y is 1 +x is 16 +y is 0 +y is 1 +x is 17 +y is 0 +y is 1 +x is 18 +y is 0 +y is 1 +x is 19 +y is 0 +y is 1 +x is 20 +y is 0 +y is 1 +x is 21 +y is 0 +y is 1 +x is 22 +y is 0 +y is 1 +x is 23 +y is 0 +y is 1 +x is 24 +y is 0 +y is 1 +END diff --git a/bwbtest/whilwend.dif b/bwbtest/whilwend.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/whilwend.run b/bwbtest/whilwend.run new file mode 100644 index 0000000..90353ba --- /dev/null +++ b/bwbtest/whilwend.run @@ -0,0 +1,77 @@ +START +x is 0 +y is 0 +y is 1 +x is 1 +y is 0 +y is 1 +x is 2 +y is 0 +y is 1 +x is 3 +y is 0 +y is 1 +x is 4 +y is 0 +y is 1 +x is 5 +y is 0 +y is 1 +x is 6 +y is 0 +y is 1 +x is 7 +y is 0 +y is 1 +x is 8 +y is 0 +y is 1 +x is 9 +y is 0 +y is 1 +x is 10 +y is 0 +y is 1 +x is 11 +y is 0 +y is 1 +x is 12 +y is 0 +y is 1 +x is 13 +y is 0 +y is 1 +x is 14 +y is 0 +y is 1 +x is 15 +y is 0 +y is 1 +x is 16 +y is 0 +y is 1 +x is 17 +y is 0 +y is 1 +x is 18 +y is 0 +y is 1 +x is 19 +y is 0 +y is 1 +x is 20 +y is 0 +y is 1 +x is 21 +y is 0 +y is 1 +x is 22 +y is 0 +y is 1 +x is 23 +y is 0 +y is 1 +x is 24 +y is 0 +y is 1 +END diff --git a/bwbtest/width.80 b/bwbtest/width.80 new file mode 100644 index 0000000..4476b6e --- /dev/null +++ b/bwbtest/width.80 @@ -0,0 +1 @@ +Check file to see if the printing wrapped at col 35 diff --git a/bwbtest/width.OUT b/bwbtest/width.OUT new file mode 100644 index 0000000..a0054b1 --- /dev/null +++ b/bwbtest/width.OUT @@ -0,0 +1 @@ +Check file to see if the printing wrapped at col 35 diff --git a/bwbtest/width.dif b/bwbtest/width.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/width.run b/bwbtest/width.run new file mode 100644 index 0000000..4476b6e --- /dev/null +++ b/bwbtest/width.run @@ -0,0 +1 @@ +Check file to see if the printing wrapped at col 35 diff --git a/bwbtest/writeinp.80 b/bwbtest/writeinp.80 new file mode 100644 index 0000000..39a2b00 --- /dev/null +++ b/bwbtest/writeinp.80 @@ -0,0 +1,6 @@ +WRITEINP.BAS -- Test WRITE # and INPUT # Statements +This is what was written: +"String 1", 1.12346,"String 2", 2.23457,"String 3", 3.34568 +This is what was read: +"String 1", 1.12346,"String 2", 2.23457,"String 3", 3.34568 +End of WRITEINP.BAS diff --git a/bwbtest/writeinp.OUT b/bwbtest/writeinp.OUT new file mode 100644 index 0000000..b51a73c --- /dev/null +++ b/bwbtest/writeinp.OUT @@ -0,0 +1,6 @@ +WRITEINP.BAS -- Test WRITE # and INPUT # Statements +This is what was written: +"String 1", 1.12346,"String 2", 2.23457,"String 3", 3.34568 +This is what was read: +"String 1", 1.12346,"String 2", 2.23457,"String 3", 3.34568 +End of WRITEINP.BAS diff --git a/bwbtest/writeinp.dif b/bwbtest/writeinp.dif new file mode 100644 index 0000000..e69de29 diff --git a/bwbtest/writeinp.run b/bwbtest/writeinp.run new file mode 100644 index 0000000..39a2b00 --- /dev/null +++ b/bwbtest/writeinp.run @@ -0,0 +1,6 @@ +WRITEINP.BAS -- Test WRITE # and INPUT # Statements +This is what was written: +"String 1", 1.12346,"String 2", 2.23457,"String 3", 3.34568 +This is what was read: +"String 1", 1.12346,"String 2", 2.23457,"String 3", 3.34568 +End of WRITEINP.BAS diff --git a/bwd_cmd.c b/bwd_cmd.c new file mode 100644 index 0000000..d8c34b1 --- /dev/null +++ b/bwd_cmd.c @@ -0,0 +1,1174 @@ +/*************************************************************** + + bwd_cmd.c Command Table + for Bywater BASIC Interpreter + + Copyright (c) 1993, Ted A. Campbell + Bywater Software + + email: tcamp@delphi.com + + Copyright and Permissions Information: + + All U.S. and international rights are claimed by the author, + Ted A. Campbell. + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + +***************************************************************/ + +/*---------------------------------------------------------------*/ +/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ +/* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ +/*---------------------------------------------------------------*/ + +/* COMMAND TABLE */ + +#include "bwbasic.h" + +struct bwb_command bwb_cmdtable[NUM_COMMANDS] = +{ + { + C_QUEST, /* UniqueID */ + "? expressions...", /* Syntax */ + "This is just a shortcut for PRINT.", /* Description */ + "?", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CALL, /* UniqueID */ + "CALL subroutine-name( [parameter [, ...] ] )", /* Syntax */ + "Calls a subroutine that was defined by SUB and END SUB.", /* Description */ + "CALL", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CASE, /* UniqueID */ + "CASE constant", /* Syntax */ + "Introduces an element of a SELECT CASE statement.", /* Description */ + "CASE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CASE_ELSE, /* UniqueID */ + "CASE ELSE", /* Syntax */ + "Introduces a default SELECT CASE element.", /* Description */ + "CASE ELSE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CASE_IF, /* UniqueID */ + "CASE IF partial-expression", /* Syntax */ + "Introduces a conditional SELECT CASE element.", /* Description */ + "CASE IF", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CASE_IS, /* UniqueID */ + "CASE IS", /* Syntax */ + "Same as CASE IF.", /* Description */ + "CASE IS", /* Name */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + C_CHAIN, /* UniqueID */ + "CHAIN filename$", /* Syntax */ + "Load and execute another BASIC program, without clearing vari" + "ables.", /* Description */ + "CHAIN", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CHANGE, /* UniqueID */ + "CHANGE A$ TO X | CHANGE X TO A$", /* Syntax */ + "Changes a string to a numeric array or a numeric array to a s" + "tring.", /* Description */ + "CHANGE", /* Name */ + B14 | D64 /* OptionVersionBitmask */ + }, + { + C_CLEAR, /* UniqueID */ + "CLEAR", /* Syntax */ + "Sets all numeric variables to 0, and all string variables to " + "empty strings.", /* Description */ + "CLEAR", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CLOAD, /* UniqueID */ + "CLOAD [file-name$]", /* Syntax */ + "Loads an ASCII BASIC program into memory.", /* Description */ + "CLOAD", /* Name */ + B14 | M80 | T83 | T84 | M85 /* OptionVersionBitmask */ + }, + { + C_CLOAD_, /* UniqueID */ + "CLOAD* ArrayName", /* Syntax */ + "Loads a numeric array from a file saved using CSAVE*.", /* Description */ + "CLOAD*", /* Name */ + B14 | M80 | T83 | T84 | M85 /* OptionVersionBitmask */ + }, + { + C_CMDS, /* UniqueID */ + "CMDS", /* Syntax */ + "Prints a list of all implemented BASIC commands.", /* Description */ + "CMDS", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_COMMON, /* UniqueID */ + "COMMON variable [, ...]", /* Syntax */ + "Designates variables to be passed to a CHAINed program.", /* Description */ + "COMMON", /* Name */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CONT, /* UniqueID */ + "CONT", /* Syntax */ + "Continue a BASIC program after a STOP has been executed. Pro" + "gram resumes at the line after the STOP.", /* Description */ + "CONT", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_CSAVE, /* UniqueID */ + "CSAVE [file-name$]", /* Syntax */ + "Saves the current program into the file file-name$ in ASCII f" + "ormat.", /* Description */ + "CSAVE", /* Name */ + B14 | M80 | T83 | T84 | M85 /* OptionVersionBitmask */ + }, + { + C_CSAVE_, /* UniqueID */ + "CSAVE* ArrayName", /* Syntax */ + "Saves a numeric array into a file.", /* Description */ + "CSAVE*", /* Name */ + B14 | M80 | T83 | T84 | M85 /* OptionVersionBitmask */ + }, + { + C_DATA, /* UniqueID */ + "DATA constant [, ...]", /* Syntax */ + "Stores numeric and string constants to be accessed by READ.", /* Description */ + "DATA", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DEF, /* UniqueID */ + "DEF FNname(arg...)] = expression", /* Syntax */ + "Defines a single line user-written function. For multiple li" + "ne functions use the FUNCTION command.", /* Description */ + "DEF", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DEF_SUB, /* UniqueID */ + "DEF SUB", /* Syntax */ + "An internal command that allows the BASIC program to execute " + "any function as though it were a command. You do not directl" + "y call this command. If your program has a line beginning w" + "ith a functio name, then DEF SUB is used to execute the funct" + "ion and ignore the result.", /* Description */ + "DEF SUB", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DEFDBL, /* UniqueID */ + "DEFDBL letter[-letter] [, ...]", /* Syntax */ + "Declares variables with single-letter names as numeric variab" + "les. TODO: enforce the rnage of [MINDBL,MAXDBL].", /* Description */ + "DEFDBL", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DEFINT, /* UniqueID */ + "DEFINT letter[-letter] [, ...]", /* Syntax */ + "Declares variables with single-letter names as numeric variab" + "les. TODO: enforce the rnage of [MININT,MAXINT].", /* Description */ + "DEFINT", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DEFSNG, /* UniqueID */ + "DEFSNG letter[-letter] [, ...]", /* Syntax */ + "Declares variables with single-letter names as numeric variab" + "les. TODO: enforce the rnage of [MINSNG,MAXSNG].", /* Description */ + "DEFSNG", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DEFSTR, /* UniqueID */ + "DEFSTR letter[-letter] [, ...]", /* Syntax */ + "Declares variables with single-letter names as string variabl" + "es. TODO: enforce the range of [MINLEN,MAXLEN].", /* Description */ + "DEFSTR", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DELETE, /* UniqueID */ + "DELETE line [- line]", /* Syntax */ + "Deletes program lines indicated by the argument(s). All prog" + "ram lines have a number, which is visible with the LIST comma" + "nd. If line numbers are not provided, they are assigned begi" + "nning with 1.", /* Description */ + "DELETE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DIM, /* UniqueID */ + "DIM variable( elements [, ...]) [, ...]", /* Syntax */ + "Specifies the dimensions of an array variables.", /* Description */ + "DIM", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DO, /* UniqueID */ + "DO", /* Syntax */ + "Top of a DO - LOOP structure. If the loop is not terminated " + "by EXIT DO or LOOP UNTIL or LOOP WHILE, then it will loop for" + "ever.", /* Description */ + "DO", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DO_UNTIL, /* UniqueID */ + "DO UNTIL expression", /* Syntax */ + "Top of a DO - LOOP structure. If the expression is zero, the" + "n the loop is terminated.", /* Description */ + "DO UNTIL", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_DO_WHILE, /* UniqueID */ + "DO WHILE expression", /* Syntax */ + "Top of a DO - LOOP structure. If the expression is non-zero," + " then the loop is terminated.", /* Description */ + "DO WHILE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_EDIT, /* UniqueID */ + "EDIT", /* Syntax */ + "implementation defined.", /* Description */ + "EDIT", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_ELSE, /* UniqueID */ + "ELSE", /* Syntax */ + "Introduces a default condition in a multi-line IF statement.", /* Description */ + "ELSE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_ELSEIF, /* UniqueID */ + "ELSEIF", /* Syntax */ + "Introduces a secondary condition in a multi-line IF statement" + ".", /* Description */ + "ELSEIF", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_END, /* UniqueID */ + "END", /* Syntax */ + "Terminates program execution. If the BASIC program was execut" + "ed from the operating system level, then control returns to t" + "he operating system, oterwise control reuturns to the BASIC p" + "rompt.", /* Description */ + "END", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_END_FUNCTION, /* UniqueID */ + "END FUNCTION", /* Syntax */ + "Specifies the last line of a multi-line FUNCTION definition.", /* Description */ + "END FUNCTION", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_END_IF, /* UniqueID */ + "END IF", /* Syntax */ + "Specifies the last line of a multi-line IF definition.", /* Description */ + "END IF", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_END_SELECT, /* UniqueID */ + "END SELECT", /* Syntax */ + "Specifies the last line of a multi-line SELECT CASE definitio" + "n.", /* Description */ + "END SELECT", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_END_SUB, /* UniqueID */ + "END SUB", /* Syntax */ + "Specifies the last line of a multi-line SUB definition.", /* Description */ + "END SUB", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_ERASE, /* UniqueID */ + "ERASE variable [, ...]", /* Syntax */ + "Eliminates arrayed variables from a program.", /* Description */ + "ERASE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_EXIT, /* UniqueID */ + "EXIT", /* Syntax */ + "EXIT by itself is a syntax error. Use EXIT DO, EXIT FOR, EXI" + "T FUNCTION, EXIT SUB, EXIT UNTIL, or EXIT WHILE.", /* Description */ + "EXIT", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_EXIT_DO, /* UniqueID */ + "EXIT DO", /* Syntax */ + "Immediately exits the inner-most DO-LOOP strucure.", /* Description */ + "EXIT DO", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_EXIT_FOR, /* UniqueID */ + "EXIT FOR", /* Syntax */ + "Immediately exits the inner-most FOR-NEXT strucure.", /* Description */ + "EXIT FOR", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_EXIT_FUNCTION, /* UniqueID */ + "EXIT FUNCTION", /* Syntax */ + "Immediately exits the inner-most multi-line FUNCTION strucure" + ".", /* Description */ + "EXIT FUNCTION", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_EXIT_SUB, /* UniqueID */ + "EXIT SUB", /* Syntax */ + "Immediately exits the inner-most multi-line SUB strucure.", /* Description */ + "EXIT SUB", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_EXIT_UNTIL, /* UniqueID */ + "EXIT UNTIL", /* Syntax */ + "Immediately exits the inner-most UNTIL-UEND strucure.", /* Description */ + "EXIT UNTIL", /* Name */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + C_EXIT_WHILE, /* UniqueID */ + "EXIT WHILE", /* Syntax */ + "Immediately exits the inner-most WHILE-END strucure.", /* Description */ + "EXIT WHILE", /* Name */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + C_FIELD, /* UniqueID */ + "FIELD [#] device-number, number AS string-variable$ [, ...]", /* Syntax */ + "Assigns 'number' bytes in the buffer of random file 'device-n" + "umber' to the variable 'string-variable$'. GET will automati" + "cally update the variable, and PUT will automatically use the" + " variable.", /* Description */ + "FIELD", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_FNCS, /* UniqueID */ + "FNCS", /* Syntax */ + "Prints a list of all pre-defined BASIC functions.", /* Description */ + "FNCS", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_FOR, /* UniqueID */ + "FOR variable = start TO finish [STEP increment]", /* Syntax */ + "Top of a FOR - NEXT structure. The loop will continue a fixe" + "d number of times, which is determined by the values of start" + ", finish, and increment.", /* Description */ + "FOR", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_FUNCTION, /* UniqueID */ + "FUNCTION [ ( parameter [, ... ] ) ]", /* Syntax */ + "Top line of a multi-line FUNCTION definition. The variable n" + "ames specified are local to the FUNCTION definition, and are " + "initialized BYVAL when the function is invoked by another rou" + "tine.", /* Description */ + "FUNCTION", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_GO, /* UniqueID */ + "GO", /* Syntax */ + "GO by itself is a syntax error. Use GOTO or GOSUB instead.", /* Description */ + "GO", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_GOSUB, /* UniqueID */ + "GOSUB line", /* Syntax */ + "Initiates a subroutine call to the line specified. The subro" + "utine must end with RETURN. The 'line' may be a number or a " + "label.", /* Description */ + "GOSUB", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_GOTO, /* UniqueID */ + "GOTO line", /* Syntax */ + "Branches program execution to the specified line. The 'line'" + " may be a number or a label.", /* Description */ + "GOTO", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_HELP, /* UniqueID */ + "HELP name", /* Syntax */ + "Provides help on the specified 'name' which is a command name" + " or function name.", /* Description */ + "HELP", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_IF, /* UniqueID */ + "IF expression THEN line1 [ELSE line2]", /* Syntax */ + "Single line standard IF command. If the value of expression " + "is non-zero, then branh to line1. If the value of expression" + " is zero and ELSE is provided, then branch to line2. If the " + "value of expression is zero and ELSE is not provided, continu" + "e to the next line. LABELS are not allowed.", /* Description */ + "IF", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_IF_THEN, /* UniqueID */ + "IF expression THEN", /* Syntax */ + "Top of a multi-line IF - END IF structure. If the value of e" + "xpression is non-zero, then the program lines upto the next E" + "LSE or ELSE IF command are executed, otherwise the program br" + "anches to the next ELSE or ELSE IF command.", /* Description */ + "IF THEN", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_INPUT, /* UniqueID */ + "INPUT [# device-number]|[;][\"prompt string\";] variable [, ...]" + "s", /* Syntax */ + "Reads input from the terminal or athe file specified by devic" + "e-number.", /* Description */ + "INPUT", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LET, /* UniqueID */ + "[LET] variable = expression",/* Syntax */ + "Assigns the value of expression to variable. The 'LET' keywo" + "rd is optional.", /* Description */ + "LET", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LINE, /* UniqueID */ + "LINE INPUT [[#] device-number,][\"prompt string\";] string-vari" + "able$", /* Syntax */ + "Reads entire line from the keyboard or a file into string-var" + "iable$.", /* Description */ + "LINE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LIST, /* UniqueID */ + "LIST line1 [- line2]", /* Syntax */ + "Lists BASIC program lines from 'line1' to 'line2'", /* Description */ + "LIST", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LOAD, /* UniqueID */ + "LOAD [file-name$]", /* Syntax */ + "Loads an ASCII BASIC program into memory.", /* Description */ + "LOAD", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LOOP, /* UniqueID */ + "LOOP", /* Syntax */ + "Bottom of a DO - LOOP structure. IF the loop is not terminat" + "ed by EXIT DO or DO UNTIL or DO WHILE, then it will loop fore" + "ver.", /* Description */ + "LOOP", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LOOP_UNTIL, /* UniqueID */ + "LOOP UNTIL", /* Syntax */ + "Bottom of a DO - LOOP structure. If the expression is zero, " + "then the loop is terminated.", /* Description */ + "LOOP UNTIL", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LOOP_WHILE, /* UniqueID */ + "LOOP WHILE", /* Syntax */ + "Bottom of a DO - LOOP structure. If the expression is non-ze" + "ro, then the loop is terminated.", /* Description */ + "LOOP WHILE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LPRINT, /* UniqueID */ + "LPRINT [USING format-string$;] expressions...", /* Syntax */ + "Send output to the default printer which is implementation de" + "fined.", /* Description */ + "LPRINT", /* Name */ + B14 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_LSET, /* UniqueID */ + "LSET string-variable$ = expression", /* Syntax */ + "Left-aligns the value of expression into string-variable$. I" + "f the length of the value is too short, then it is padded on " + "the right with spaces. If the length of the value is too lon" + "g, then it is truncated on the right. This is only for use w" + "ith variables assigned to a random access buffer with FIELD c" + "ommand.", /* Description */ + "LSET", /* Name */ + B14 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_MAINTAINER, /* UniqueID */ + "MAINTAINER", /* Syntax */ + "This command is reserved for use by the Bywater BASIC maintai" + "ner and does whatever the maintainer wants it to do. It is n" + "ot for the BASIC programmer.", /* Description */ + "MAINTAINER", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_MERGE, /* UniqueID */ + "MERGE file-name", /* Syntax */ + "Merges the BASIC program in file-name into the current BASIC " + "program. Lines in file-name replace any matching lines in th" + "e current program.", /* Description */ + "MERGE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_MID_, /* UniqueID */ + "MID$( variable$, start [, count ] ) = expression", /* Syntax */ + "Replaces a subtring of variable$ with expression.", /* Description */ + "MID$", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_NAME, /* UniqueID */ + "NAME old-file-name AS new-file-name", /* Syntax */ + "Changes the name of an existing file.", /* Description */ + "NAME", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_NEW, /* UniqueID */ + "NEW", /* Syntax */ + "Deletes the program in memory and clears all variables.", /* Description */ + "NEW", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_NEXT, /* UniqueID */ + "NEXT [variable]", /* Syntax */ + "The bottom line of a FOR - NEXT structure.", /* Description */ + "NEXT", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_ON, /* UniqueID */ + "ON expression GOTO | GOSUB line [, ...]", /* Syntax */ + "Branches (GOTO) or calls (GOSUB) based on the rounded value o" + "f variable.", /* Description */ + "ON", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_ON_ERROR_GOTO, /* UniqueID */ + "ON ERROR GOTO errline", /* Syntax */ + "When a trappable error occurs, execute 'GOTO errline'. " + "The error handler must terminate with a RESUME command. " + "If the line number is 0 (zerp), then use the default error handler. " + "Valid when OPTION ERROR GOTO.", /* Description */ + "ON ERROR GOTO", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_ON_ERROR_GOSUB, /* UniqueID */ + "ON ERROR GOSUB errline", /* Syntax */ + "When a trappable error occurs, execute 'GOSUB errline'. " + "The error handler must terminate with a RETURN command. " + "If the line number is 0 (zerp), then use the default error handler. " + "Valid when OPTION ERROR GOSUB.", /* Description */ + "ON ERROR GOSUB", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_ON_ERROR_RESUME_NEXT, /* UniqueID */ + "ON ERROR RESUME NEXT", /* Syntax */ + "When a trappable error occurs, execution continues with the next line. " + "Valid when OPTION ERROR GOTO.", /* Description */ + "ON ERROR RESUME NEXT", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_ON_ERROR_RETURN_NEXT, /* UniqueID */ + "ON ERROR RETURN NEXT", /* Syntax */ + "When a trappable error occurs, execution continues with the next line. " + "Valid when OPTION ERROR GOSUB.", /* Description */ + "ON ERROR RETURN NEXT", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_ON_TIMER, /* UniqueID */ + "ON TIMER count GOSUB line", /* Syntax */ + "Specifies a line (or label) to gosub when count seconds have " + "elaspsed after TIMER ON is executed. The interrupt routine s" + "hould end with a RETURN command. Timer events only occur in " + "running BASIC programs. The resolution of the clock is imple" + "mentation defined.", /* Description */ + "ON TIMER", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_OPEN, /* UniqueID */ + "OPEN file-name [FOR INPUT|OUTPUT|APPEND|BINARY|RANDOM] AS [#]" + "device-number [LEN = record-length]", /* Syntax */ + "Opens a file for use. INPUT, OUTPUT, and APPEND are for text" + " files. BINARY is for binary files. RANDOM is for structure" + "d binary files and requires LEN. Files opened for RANDOM use" + " GET and PUT.", /* Description */ + "OPEN", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_OPTION, /* UniqueID */ + "OPTION ...", /* Syntax */ + "OPTION by itself is a syntax error.", /* Description */ + "OPTION", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_OPTION_ANGLE_DEGREES, /* UniqueID */ + "OPTION ANGLE DEGREES", /* Syntax */ + "Configures the math functions to accept and return angles in " + "degrees.", /* Description */ + "OPTION ANGLE DEGREES", /* Name */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + C_OPTION_ANGLE_RADIANS, /* UniqueID */ + "OPTION ANGLE RADIANS", /* Syntax */ + "Configures the math functions to accept and return angles in " + "radians.", /* Description */ + "OPTION ANGLE RADIANS", /* Name */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + C_OPTION_ARITHMETIC_DECIMAL, /* UniqueID */ + "OPTION ARITHMETIC DECIMAL", /* Syntax */ + "Currently has no effect.", /* Description */ + "OPTION ARITHMETIC DECIMAL", /* Name */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + C_OPTION_ARITHMETIC_FIXED, /* UniqueID */ + "OPTION ARITHMETIC FIXED", /* Syntax */ + "Currently has no effect.", /* Description */ + "OPTION ARITHMETIC FIXED", /* Name */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + C_OPTION_ARITHMETIC_NATIVE, /* UniqueID */ + "OPTION ARITHMETIC NATIVE", /* Syntax */ + "Currently has no effect.", /* Description */ + "OPTION ARITHMETIC NATIVE", /* Name */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + C_OPTION_BASE_0, /* UniqueID */ + "OPTION BASE 0", /* Syntax */ + "Sets the lowest array subscript to 0.", /* Description */ + "OPTION BASE 0", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_OPTION_BASE_1, /* UniqueID */ + "OPTION BASE 1", /* Syntax */ + "Sets the lowest array subscript to 1.", /* Description */ + "OPTION BASE 1", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_OPTION_BUGS_OFF, /* UniqueID */ + "OPTION BUGS OFF", /* Syntax */ + "Disables bugs commonly found in BASIC-80 derivatives and clon" + "es.", /* Description */ + "OPTION BUGS OFF", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_BUGS_ON, /* UniqueID */ + "OPTION BUGS ON", /* Syntax */ + "Enables bugs commonly found in BASIC-80 derivatives and clone" + "s.", /* Description */ + "OPTION BUGS ON", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_COMMENT, /* UniqueID */ + "OPTION COMMENT char", /* Syntax */ + "Sets the comment character.", /* Description */ + "OPTION COMMENT", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_COMPARE_BINARY, /* UniqueID */ + "OPTION COMPARE BINARY", /* Syntax */ + "Causes string comparisons to be case-sensitive.", /* Description */ + "OPTION COMPARE BINARY", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_COMPARE_DATABASE, /* UniqueID */ + "OPTION COMPARE DATABASE", /* Syntax */ + "Causes string comparisons to be case-insensitive.", /* Description */ + "OPTION COMPARE DATABASE", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_COMPARE_TEXT, /* UniqueID */ + "OPTION COMPARE TEXT", /* Syntax */ + "Causes string comparisons to be case-insensitive.", /* Description */ + "OPTION COMPARE TEXT", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_COVERAGE_OFF, /* UniqueID */ + "OPTION COVERAGE OFF", /* Syntax */ + "Disables BASIC code coverage recording, displayed using the L" + "IST command.", /* Description */ + "OPTION COVERAGE OFF", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_COVERAGE_ON, /* UniqueID */ + "OPTION COVERAGE ON", /* Syntax */ + "Enables BASIC code coverage recording, displayed using the LI" + "ST command.", /* Description */ + "OPTION COVERAGE ON", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_DATE, /* UniqueID */ + "OPTION DATE format", /* Syntax */ + "Sets the date format string used by C strftime() for DATE$.", /* Description */ + "OPTION DATE", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_DISABLE_COMMAND, /* UniqueID */ + "OPTION DISABLE COMMAND name", /* Syntax */ + "Disables the specified BASIC command.", /* Description */ + "OPTION DISABLE COMMAND", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_DISABLE_FUNCTION, /* UniqueID */ + "OPTION DISABLE FUNCTION name", /* Syntax */ + "Disables the specified BASIC function.", /* Description */ + "OPTION DISABLE FUNCTION", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_DISABLE_OPERATOR, /* UniqueID */ + "OPTION DISABLE OPERATOR name", /* Syntax */ + "Disables the specified BASIC operator.", /* Description */ + "OPTION DISABLE OPERATOR", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_ENABLE_COMMAND, /* UniqueID */ + "OPTION ENABLE COMMAND name", /* Syntax */ + "Enables the specified BASIC command.", /* Description */ + "OPTION ENABLE COMMAND", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_ENABLE_FUNCTION, /* UniqueID */ + "OPTION ENABLE FUNCTION name", /* Syntax */ + "Enables the specified BASIC function.", /* Description */ + "OPTION ENABLE FUNCTION", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_ENABLE_OPERATOR, /* UniqueID */ + "OPTION ENABLE OPERATOR name", /* Syntax */ + "Enables the specified BASIC operator.", /* Description */ + "OPTION ENABLE OPERATOR", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_ERROR_GOSUB, /* UniqueID */ + "OPTION ERROR GOSUB", /* Syntax */ + "When an error occurs, GOSUB to the error handler. " + "The error handler exits with RETURN.", /* Description */ + "OPTION ERROR GOSUB", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_ERROR_GOTO, /* UniqueID */ + "OPTION ERROR GOTO", /* Syntax */ + "When an error occurs, GOTO to the error handler. " + "The error handler exits with RESUME.", /* Description */ + "OPTION ERROR GOTO", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_INDENT, /* UniqueID */ + "OPTION INDENT number", /* Syntax */ + "Sets indention level for LIST. Zero means no indention. Def" + "ault is 2.", /* Description */ + "OPTION INDENT", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_LABELS_OFF, /* UniqueID */ + "OPTION LABELS OFF", /* Syntax */ + "Disables text labels.", /* Description */ + "OPTION LABELS OFF", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_LABELS_ON, /* UniqueID */ + "OPTION LABELS ON", /* Syntax */ + "Enables text labels.", /* Description */ + "OPTION LABELS ON", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_STATEMENT, /* UniqueID */ + "OPTION STATEMENT char", /* Syntax */ + "Sets the statement seperator character.", /* Description */ + "OPTION STATEMENT", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_STRICT_OFF, /* UniqueID */ + "OPTION STRICT OFF", /* Syntax */ + "Disables checking for implicit array creation without using t" + "he DIM command.", /* Description */ + "OPTION STRICT OFF", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_STRICT_ON, /* UniqueID */ + "OPTION STRICT ON", /* Syntax */ + "Enables checking for implicit array creation without using th" + "e DIM command.", /* Description */ + "OPTION STRICT ON", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_TERMINAL_ADM_3A, /* UniqueID */ + "OPTION TERMINAL ADM-3A", /* Syntax */ + "Enables ADM-3A terminal control codes for CLS, COLOR, and LOC" + "ATE.", /* Description */ + "OPTION TERMINAL ADM-3A", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_TERMINAL_ANSI, /* UniqueID */ + "OPTION TERMINAL ANSI", /* Syntax */ + "Enables ANSI terminal control codes for CLS, COLOR, and LOCAT" + "E.", /* Description */ + "OPTION TERMINAL ANSI", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_TERMINAL_NONE, /* UniqueID */ + "OPTION TERMINAL NONE", /* Syntax */ + "Disables terminal control codes for CLS, COLOR, and LOCATE.", /* Description */ + "OPTION TERMINAL NONE", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_TIME, /* UniqueID */ + "OPTION TIME format", /* Syntax */ + "Sets the time format string used by C strftime() for TIME$.", /* Description */ + "OPTION TIME", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_TRACE_OFF, /* UniqueID */ + "OPTION TRACE OFF", /* Syntax */ + "Disables displaying a stack trace when an ERROR occurs.", /* Description */ + "OPTION TRACE OFF", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_TRACE_ON, /* UniqueID */ + "OPTION TRACE ON", /* Syntax */ + "Enables displaying a stack trace when an ERROR occurs.", /* Description */ + "OPTION TRACE ON", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_OPTION_VERSION, /* UniqueID */ + "OPTION VERSION [version] ", /* Syntax */ + "Selects a combination of OPTION settings and enables certain " + "commands and functions. If no version is specified, displays" + " a list of the available versions.", /* Description */ + "OPTION VERSION", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_PRINT, /* UniqueID */ + "PRINT [# device-number,][USING format-string$;] expressions.." + ".", /* Syntax */ + "Sends output to the console or a file.", /* Description */ + "PRINT", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_QUIT, /* UniqueID */ + "QUIT", /* Syntax */ + "Exits to the operating system.", /* Description */ + "QUIT", /* Name */ + B14 | D64 | E78 | E86 /* OptionVersionBitmask */ + }, + { + C_READ, /* UniqueID */ + "READ variable [, ...]", /* Syntax */ + "Reads values from DATA statements.", /* Description */ + "READ", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_REM, /* UniqueID */ + "REM ...", /* Syntax */ + "Remark.", /* Description */ + "REM", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_RENUM, /* UniqueID */ + "RENUM", /* Syntax */ + "Implementation defined.", /* Description */ + "RENUM", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_RESTORE, /* UniqueID */ + "RESTORE [line]", /* Syntax */ + "Resets the line used for the next READ statement. 'line' may" + " be either a number or a label.", /* Description */ + "RESTORE", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_RESUME, /* UniqueID */ + "RESUME [ 0 | line | NEXT ]", /* Syntax */ + "Used in an error handler to specify the next line to execute." + " RESUME and RESUME 0 branch to ERL. RESUME NEXT branches to" + " the line after ERL. RESUME line branches to the specified l" + "ine. 'line' may be either a number or a label.", /* Description */ + "RESUME", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_RETURN, /* UniqueID */ + "RETURN", /* Syntax */ + "Concludes a subroutine called by GOSUB.", /* Description */ + "RETURN", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_RSET, /* UniqueID */ + "RSET string-variable$ = expression", /* Syntax */ + "Right-aligns the value of expression into string-variable$. " + "If the length of the value is too short, then it is padded on" + " the left with spaces. If the length of the value is too lon" + "g, then it is truncated on the right. This is only for use w" + "ith variables assigned to a random access buffer with FIELD c" + "ommand.", /* Description */ + "RSET", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_RUN, /* UniqueID */ + "RUN [line | file-name$]", /* Syntax */ + "RUN executes the program in memory from the start. RUN line " + "exexecutes the program in memory beginning at 'line'. RUN fi" + "le-name$ loads a new BAASIC program and executes the program " + "from the start.", /* Description */ + "RUN", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_SAVE, /* UniqueID */ + "SAVE [file-name$]", /* Syntax */ + "Saves the current program into the file file-name$ in ASCII f" + "ormat.", /* Description */ + "SAVE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_SELECT, /* UniqueID */ + "SELECT", /* Syntax */ + "SELECT by itself is a syntax error. Use SELECT CASE instead." + "", /* Description */ + "SELECT", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_SELECT_CASE, /* UniqueID */ + "SELECT CASE expression", /* Syntax */ + "Introduces a multi-line conditional selection statement.", /* Description */ + "SELECT CASE", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_STOP, /* UniqueID */ + "STOP", /* Syntax */ + "Interrupts program execution and displays the line number of " + "the STOP command. For use when debugging BASIC programs. Wh" + "ether STOP issues a SIGINT signal is implementation defined.", /* Description */ + "STOP", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_SUB, /* UniqueID */ + "SUB name [ ( parameter [,...] ) ]", /* Syntax */ + "Top line of a multi-line SUB definition. The variable names " + "specified are local to the SUB definition, and are initialize" + "d BYVAL when the subroutine is invoked by another routine.", /* Description */ + "SUB", /* Name */ + B14 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_SWAP, /* UniqueID */ + "SWAP variable, variable", /* Syntax */ + "Swaps the values of two variables. Both variables must be of " + "the same type.", /* Description */ + "SWAP", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_SYSTEM, /* UniqueID */ + "SYSTEM", /* Syntax */ + "Exits to the operating system.", /* Description */ + "SYSTEM", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_TIMER, /* UniqueID */ + "TIMER", /* Syntax */ + "TIMER by itself is a syntax error. " + "Use TIMER OFF, TIMER ON, or TIMER STOP instead.", /* Description */ + "TIMER", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_TIMER_OFF, /* UniqueID */ + "TIMER OFF", /* Syntax */ + "TIMER OFF terminates the timer interrupt.", /* Description */ + "TIMER OFF", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_TIMER_ON, /* UniqueID */ + "TIMER ON", /* Syntax */ + "TIMER ON enables the timer interrupt. When the specified seconds have elapsed, TIMER STOP " + "is internaly executed before the interrupt is taken. TIMER ON" + " should be executed just before the RETURN command if you wan" + "t the interrupt to occur again.", /* Description */ + "TIMER ON", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_TIMER_STOP, /* UniqueID */ + "TIMER STOP", /* Syntax */ + "TIMER STOP disables the interrupt, but the count continues.", /* Description */ + "TIMER STOP", /* Name */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_UEND, /* UniqueID */ + "UEND", /* Syntax */ + "Bottom of a UNTIL - UEND structure.", /* Description */ + "UEND", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_UNTIL, /* UniqueID */ + "UNTIL expression", /* Syntax */ + "Top of a UNTIL - UEND structure. If the expression is zero, " + "then the loop is terminated.", /* Description */ + "UNTIL", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_USER_LBL, /* UniqueID */ + "USER LBL", /* Syntax */ + "An internal command that allows the BASIC program to find a u" + "ser label. You do not directly call this command. If your p" + "rogram has a line with a label, then USER LBL is used to mark" + " the line.", /* Description */ + "USER LBL", /* Name */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_VARS, /* UniqueID */ + "VARS", /* Syntax */ + "Prints a list of all global variables.", /* Description */ + "VARS", /* Name */ + B14 /* OptionVersionBitmask */ + }, + { + C_WEND, /* UniqueID */ + "WEND", /* Syntax */ + "Bottom of a WHILE - WEND structure.", /* Description */ + "WEND", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_WHILE, /* UniqueID */ + "WHILE", /* Syntax */ + "Top of a WHILE - WEND structure. If the expression is non-ze" + "ro, then the loop is terminated.", /* Description */ + "WHILE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + C_WRITE, /* UniqueID */ + "WRITE [# device-number,] element [, .... ]", /* Syntax */ + "Outputs variables to the screen or to a file.", /* Description */ + "WRITE", /* Name */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, +}; + + +/* EOF */ diff --git a/bwd_fun.c b/bwd_fun.c new file mode 100644 index 0000000..f31653e --- /dev/null +++ b/bwd_fun.c @@ -0,0 +1,2155 @@ +/*************************************************************** + + bwd_fun.c Function Table + for Bywater BASIC Interpreter + + Copyright (c) 1993, Ted A. Campbell + Bywater Software + + email: tcamp@delphi.com + + Copyright and Permissions Information: + + All U.S. and international rights are claimed by the author, + Ted A. Campbell. + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + +***************************************************************/ + +/*---------------------------------------------------------------*/ +/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ +/* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ +/*---------------------------------------------------------------*/ + + + +/* FUNCTION TABLE */ + +#include "bwbasic.h" + +struct bwb_function bwb_prefuncs[NUM_FUNCTIONS] = +{ + { + F_ABS_X_N, /* UniqueID */ + "N = ABS( X )", /* Syntax */ + "The absolute value of X.", /* Description */ + "ABS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ACOS_X_N, /* UniqueID */ + "N = ACOS( X )", /* Syntax */ + "The arccosine of X in radians, where 0 <= ACOS(X) <= PI. X s" + "hall be in the range -1 <= X <= 1.", /* Description */ + "ACOS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_ANGLE_X_Y_N, /* UniqueID */ + "N = ANGLE( X, Y )", /* Syntax */ + "The angle in radians between the positive x-axis and the vect" + "or joining the origin to the point with coordinates (X, Y), w" + "here -PI < ANGLE(X,Y) <= PI. X and Y must not both be 0. No" + "te that the counterclockwise is positive, e.g., ANGLE(1,1) = " + "45 degrees.", /* Description */ + "ANGLE", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_ARGC_N, /* UniqueID */ + "N = ARGC", /* Syntax */ + "The number of parameters passed to a FUNCTION or SUB. If not" + " in a FUNCTION or SUB, returns -1.", /* Description */ + "ARGC", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_ARGT_X_S, /* UniqueID */ + "S$ = ARGT$( X )", /* Syntax */ + "The value of the X'th parameter to a FUNCTION or SUB; '$' or " + "'#'. X in [1,ARGC].", /* Description */ + "ARGT$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_ARGV_X_N, /* UniqueID */ + "N = ARGV( X )", /* Syntax */ + "The value of the X'th parameter to a FUNCTION or SUB. X in [" + "1,ARGC] and ARGT$( X ) = '#'.", /* Description */ + "ARGV", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_ARGV_X_S, /* UniqueID */ + "S$ = ARGV$( X )", /* Syntax */ + "The value of the X'th parameter to a FUNCTION or SUB. X in [" + "1,ARGC] and ARGT$( X ) = '$'.", /* Description */ + "ARGV$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_ASC_A_N, /* UniqueID */ + "N = ASC( A$ )", /* Syntax */ + "The ASCII code for the first letter in A$.", /* Description */ + "ASC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ASIN_X_N, /* UniqueID */ + "N = ASIN( X )", /* Syntax */ + "The arcsine of X in radians, where -PI/2 <= ASIN(X) <= PI/2; " + "X shall be in the range -1 <= X <= 1.", /* Description */ + "ASIN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_ATN_X_N, /* UniqueID */ + "N = ATN( X )", /* Syntax */ + "The arctangent of X in radians, i.e. the angle whose tangent " + "is X, where -PI/2 < ATN(X) < PI/2.", /* Description */ + "ATN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CCUR_X_N, /* UniqueID */ + "N = CCUR( X )", /* Syntax */ + "The currency (64-bit) integer value of X.", /* Description */ + "CCUR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1CUR, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_CDBL_X_N, /* UniqueID */ + "N = CDBL( X )", /* Syntax */ + "The double-precision value of X.", /* Description */ + "CDBL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DBL, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CEIL_X_N, /* UniqueID */ + "N = CEIL( X )", /* Syntax */ + "The smallest integer not less than X.", /* Description */ + "CEIL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_CHDIR_A_N, /* UniqueID */ + "N = CHDIR( A$ )", /* Syntax */ + "Changes to the directory named to A$.", /* Description */ + "CHDIR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CHR_X_S, /* UniqueID */ + "S$ = CHR$( X )", /* Syntax */ + "The one-character string with the character corresponding to " + "the ASCII code X.", /* Description */ + "CHR$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CINT_X_N, /* UniqueID */ + "N = CINT( X )", /* Syntax */ + "The short (16-bit) integer value of X.", /* Description */ + "CINT", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CLNG_X_N, /* UniqueID */ + "N = CLNG( X )", /* Syntax */ + "The long (32-bit) integer value of X.", /* Description */ + "CLNG", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LNG, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CLOSE_X_N, /* UniqueID */ + "N = CLOSE( X )", /* Syntax */ + "Close file number X.", /* Description */ + "CLOSE", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CLS_N, /* UniqueID */ + "N = CLS", /* Syntax */ + "Clears the screen. Cursor is positioned at row 1, column 1.", /* Description */ + "CLS", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_COLOR_X_Y_N, /* UniqueID */ + "N = COLOR( X, Y )", /* Syntax */ + "Sets the foreground text color to X, and the background text " + "color to Y.", /* Description */ + "COLOR", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1BYT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_COS_X_N, /* UniqueID */ + "N = COS( X )", /* Syntax */ + "The cosine of X, where X is in radians.", /* Description */ + "COS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_COSH_X_N, /* UniqueID */ + "N = COSH( X )", /* Syntax */ + "The hyperbolic cosine of X.",/* Description */ + "COSH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_COT_X_N, /* UniqueID */ + "N = COT( X )", /* Syntax */ + "The cotangent of X, where X is in radians.", /* Description */ + "COT", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_CSC_X_N, /* UniqueID */ + "N = CSC( X )", /* Syntax */ + "The cosecant of X, where X is in radians.", /* Description */ + "CSC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_CSNG_X_N, /* UniqueID */ + "N = CSNG( X )", /* Syntax */ + "The single-precision value of X.", /* Description */ + "CSNG", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1FLT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CVC_A_N, /* UniqueID */ + "N = CVC( A$ )", /* Syntax */ + "The currency (64-bit) integer value in A$, which was created " + "by MKC$.", /* Description */ + "CVC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1CUR, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_CVD_A_N, /* UniqueID */ + "N = CVD( A$ )", /* Syntax */ + "The double-precision value in A$, which was created by MKD$.", /* Description */ + "CVD", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1DBL, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CVI_A_N, /* UniqueID */ + "N = CVI( A$ )", /* Syntax */ + "The short (16-bit) integer value in A$, which was created by " + "MKI$.", /* Description */ + "CVI", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CVL_A_N, /* UniqueID */ + "N = CVL( A$ )", /* Syntax */ + "The long (32-bit) integer value in A$, which was created by M" + "KL$.", /* Description */ + "CVL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1LNG, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_CVS_A_N, /* UniqueID */ + "N = CVS( A$ )", /* Syntax */ + "The single-precision value in A$, which was created by MKS$.", /* Description */ + "CVS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1FLT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_DATE_N, /* UniqueID */ + "N = DATE", /* Syntax */ + "The current date in decimal form YYYDDD, where YYY are the nu" + "mber of years since 1900 and DDD is the ordinal number of the" + " current day of the year; e.g., the value of DATE on May 9, 1" + "977 was 77129. If there is no calendar available, then the v" + "alue of DATE shall be -1.", /* Description */ + "DATE", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_DATE_S, /* UniqueID */ + "S$ = DATE$", /* Syntax */ + "BASIC-80: The current date based on the computer's internal c" + "lock as a string in the form 'MM-DD-YYYY'.ECMA-116: The date " + "in the string representation 'YYYYMMDD' according to ISO 2014" + ". For example, the value of DATE$ on May 9, 1977 was '197705" + "09'. If there is not calendar available, then the value of D" + "ATE$ shall be '00000000'.", /* Description */ + "DATE$", /* Name */ + STRING, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_DEF_FN_N, /* UniqueID */ + "N = DEF FN", /* Syntax */ + "User Function.", /* Description */ + "DEF FN", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_DEG_X_N, /* UniqueID */ + "N = DEG( X )", /* Syntax */ + "The number of degrees in X radians.", /* Description */ + "DEG", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_ENVIRON_A_N, /* UniqueID */ + "N = ENVIRON( A$ )", /* Syntax */ + "Sends the environment variable expression contained in A$ to " + "the host operating system. A$ must contain the '=' characte" + "r.", /* Description */ + "ENVIRON", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ENVIRON_A_S, /* UniqueID */ + "S$ = ENVIRON$( A$ )", /* Syntax */ + "The value of the environment variable named A$.", /* Description */ + "ENVIRON$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_EOF_X_N, /* UniqueID */ + "N = EOF( X )", /* Syntax */ + "If device number X is at the end-of-file, then -1, otherwise " + "0.", /* Description */ + "EOF", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_EPS_X_N, /* UniqueID */ + "N = EPS( X )", /* Syntax */ + "The maximum of (X-X1,X2-X, sigma) where X1 and X2 are the pre" + "decessor and successor of X and signma is the smallest positi" + "ve value representable. If X has no predecessor the X1=X and" + " if X has no successor the X2=X. Note EPS(0) is the smallest" + " positive number representable by the implementation, and is " + "therefor implementation-defined. Note also that EPS may prod" + "uce different results for different arithmetic options (see O" + "PTION ARITHMETIC).", /* Description */ + "EPS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_ERL_N, /* UniqueID */ + "N = ERL", /* Syntax */ + "The line number of the most recent error.", /* Description */ + "ERL", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ERR_N, /* UniqueID */ + "N = ERR", /* Syntax */ + "The error number of the most recent error.", /* Description */ + "ERR", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ERR_S, /* UniqueID */ + "S$ = ERR$", /* Syntax */ + "The last error message.", /* Description */ + "ERR$", /* Name */ + STRING, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ERROR_X_N, /* UniqueID */ + "N = ERROR( X )", /* Syntax */ + "Simulate the error number in X.", /* Description */ + "ERROR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ERROR_X_A_N, /* UniqueID */ + "N = ERROR( X, A$ )", /* Syntax */ + "Simulate the error number in X, with a custom message in A$.", /* Description */ + "ERROR", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2STR, /* ParameterTypes */ + P1BYT | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_EXP_X_N, /* UniqueID */ + "N = EXP( X )", /* Syntax */ + "The exponential value of X, i.e., the value of the base of na" + "tural logarithms (e = 2.71828) raised to the power of X; if " + "EXP(X) is less that machine infinitesimal, then its value sha" + "ll be replaced with zero.", /* Description */ + "EXP", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_FILEATTR_X_Y_N, /* UniqueID */ + "N = FILEATTR( X, Y )", /* Syntax */ + "For file X, if Y = 1 then returns open mode, otherwise return" + "s zero.", /* Description */ + "FILEATTR", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_FILES_N, /* UniqueID */ + "N = FILES", /* Syntax */ + "Displays all the file names.", /* Description */ + "FILES", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_FILES_A_N, /* UniqueID */ + "N = FILES( A$ )", /* Syntax */ + "Displays all the file names matching A$.", /* Description */ + "FILES", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_FIX_X_N, /* UniqueID */ + "N = FIX( X )", /* Syntax */ + "The truncated integer, part of X. FIX (X) is equivalent to SG" + "N(X)*INT(ABS(X)). The major difference between FIX and INT is" + " that FIX does not return the next lower number for negative " + "X.", /* Description */ + "FIX", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_FP_X_N, /* UniqueID */ + "N = FP( X )", /* Syntax */ + "The fractional part of X, i.e. X - IP(X).", /* Description */ + "FP", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_FRE_N, /* UniqueID */ + "N = FRE", /* Syntax */ + "The number of bytes of available memory. This function is pr" + "ovided for backward compatibility and it always returns a fix" + "ed value of 32000.", /* Description */ + "FRE", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_FRE_X_N, /* UniqueID */ + "N = FRE( X )", /* Syntax */ + "The number of bytes of available memory. This function is pr" + "ovided for backward compatibility and it always returns a fix" + "ed value of 32000. The value of X is ignored.", /* Description */ + "FRE", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_FRE_A_N, /* UniqueID */ + "N = FRE( A$ )", /* Syntax */ + "The number of bytes of available memory. This function is pr" + "ovided for backward compatibility and it always returns a fix" + "ed value of 32000.The value of A$ is ignored.", /* Description */ + "FRE", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_FREEFILE_N, /* UniqueID */ + "N = FREEFILE", /* Syntax */ + "The next available file number.", /* Description */ + "FREEFILE", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_GET_X_N, /* UniqueID */ + "N = GET( X )", /* Syntax */ + "For file X, gets the next available record.", /* Description */ + "GET", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_GET_X_Y_N, /* UniqueID */ + "N = GET( X, Y )", /* Syntax */ + "For file X, gets record number Y. The first record number is" + " 1.", /* Description */ + "GET", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_HEX_X_S, /* UniqueID */ + "S$ = HEX$( X )", /* Syntax */ + "The the hexadecimal (base 16) representation of X.", /* Description */ + "HEX$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_INKEY_S, /* UniqueID */ + "S$ = INKEY$", /* Syntax */ + "The keypress, if available. If a keypress is not available, t" + "hen immediately returns a null string (''). If not supported" + " by the platform, then always returns an empty string, so use" + " INPUT$(1) instead.", /* Description */ + "INKEY$", /* Name */ + STRING, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_INP_X_N, /* UniqueID */ + "N = INP( X )", /* Syntax */ + "The value read from machine port X. Not supported on all pla" + "tforms.", /* Description */ + "INP", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_INPUT_X_S, /* UniqueID */ + "S$ = INPUT$( X )", /* Syntax */ + "The string of X characters, read from the terminal.", /* Description */ + "INPUT$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_INPUT_X_Y_S, /* UniqueID */ + "S$ = INPUT$( X, Y )", /* Syntax */ + "The string of X characters, read from file Y.", /* Description */ + "INPUT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1LEN | P2DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_INSTR_A_B_N, /* UniqueID */ + "N = INSTR( A$, B$ )", /* Syntax */ + "The position at which B$ occurs in A$, beginning at position " + "1.", /* Description */ + "INSTR", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2STR, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_INSTR_X_A_B_N, /* UniqueID */ + "N = INSTR( X, A$, B$ )", /* Syntax */ + "The position at which B$ occurs in A$, beginning at position " + "X.", /* Description */ + "INSTR", /* Name */ + NUMBER, /* ReturnType */ + 3, /* ParameterCount */ + P1NUM | P2STR | P3STR, /* ParameterTypes */ + P1POS | P2ANY | P3ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_INT_X_N, /* UniqueID */ + "N = INT( X )", /* Syntax */ + "The largest integer not greater than X; e.g. INT(1.3) = 1 and" + " INT(-1.3) = 2.", /* Description */ + "INT", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_IP_X_N, /* UniqueID */ + "N = IP( X )", /* Syntax */ + "The integer part of X, i.e., SGN(X)*INT(ABS(X)).", /* Description */ + "IP", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_KILL_A_N, /* UniqueID */ + "N = KILL( A$ )", /* Syntax */ + "Removes the file named in A$.", /* Description */ + "KILL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LCASE_A_S, /* UniqueID */ + "S$ = LCASE$( A$ )", /* Syntax */ + "The string of characters from the value associatedwith A$ by " + "replacing each upper-case-letter in the string by its lower-c" + "ase version.", /* Description */ + "LCASE$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LEFT_A_X_S, /* UniqueID */ + "S$ = LEFT$( A$, X )", /* Syntax */ + "The X left-most characters of A$, beginning from postion 1.", /* Description */ + "LEFT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2NUM, /* ParameterTypes */ + P1ANY | P2LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LEN_A_N, /* UniqueID */ + "N = LEN( A$ )", /* Syntax */ + "The length of A$.", /* Description */ + "LEN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LOC_X_N, /* UniqueID */ + "N = LOC( X )", /* Syntax */ + "The location of file X; the next record that GET or PUT state" + "ments will use.", /* Description */ + "LOC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LOCATE_X_Y_N, /* UniqueID */ + "N = LOCATE( X, Y )", /* Syntax */ + "Locates the cursor to row X, column Y.", /* Description */ + "LOCATE", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1BYT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LOF_X_N, /* UniqueID */ + "N = LOF( X )", /* Syntax */ + "The length of file X.", /* Description */ + "LOF", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LOG_X_N, /* UniqueID */ + "N = LOG( X )", /* Syntax */ + "The natural logarithm of X; X shall be greater than zero.", /* Description */ + "LOG", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1GTZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LOG10_X_N, /* UniqueID */ + "N = LOG10( X )", /* Syntax */ + "The common logarithm of X; X shall be greater than zero.", /* Description */ + "LOG10", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1GTZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_LOG2_X_N, /* UniqueID */ + "N = LOG2( X )", /* Syntax */ + "The base 2 logarithm of X; X shall be greater than zero.", /* Description */ + "LOG2", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1GTZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_LPOS_N, /* UniqueID */ + "N = LPOS", /* Syntax */ + "The current cursor position in the line for the printer.", /* Description */ + "LPOS", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LTRIM_A_S, /* UniqueID */ + "S$ = LTRIM$( A$ )", /* Syntax */ + "The string of characters resulting from the value associated " + "with A$ by deleting all leading space characters.", /* Description */ + "LTRIM$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_LWIDTH_X_N, /* UniqueID */ + "N = LWIDTH( X )", /* Syntax */ + "For printer, sets the line width to X. Zero means no wrapping" + " will occur.", /* Description */ + "LWIDTH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_MAX_X_Y_N, /* UniqueID */ + "N = MAX( X, Y )", /* Syntax */ + "The smaller (algebraically) of the parameters.", /* Description */ + "MAX", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_MAXBYT_N, /* UniqueID */ + "N = MAXBYT", /* Syntax */ + "The largest finite positive number representable as a BYTE; i" + "mplementation-defined.", /* Description */ + "MAXBYT", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MAXCUR_N, /* UniqueID */ + "N = MAXCUR", /* Syntax */ + "The largest finite positive number representable as a CURRENC" + "Y; implementation-defined.", /* Description */ + "MAXCUR", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MAXDBL_N, /* UniqueID */ + "N = MAXDBL", /* Syntax */ + "The largest finite positive number representable as a DOUBLE;" + " implementation-defined.", /* Description */ + "MAXDBL", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MAXDEV_N, /* UniqueID */ + "N = MAXDEV", /* Syntax */ + "The largest finite positive number useable as a FILE NUMBER; " + "implementation-defined.", /* Description */ + "MAXDEV", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MAXINT_N, /* UniqueID */ + "N = MAXINT", /* Syntax */ + "The largest finite positive number representable as an INTEGE" + "R; implementation-defined.", /* Description */ + "MAXINT", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MAXLEN_A_N, /* UniqueID */ + "N = MAXLEN( A$ )", /* Syntax */ + "The maximum length associated with the simple-string-variable" + " A$.", /* Description */ + "MAXLEN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_MAXLNG_N, /* UniqueID */ + "N = MAXLNG", /* Syntax */ + "The largest finite positive number representable as a LONG; i" + "mplementation-defined.", /* Description */ + "MAXLNG", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MAXLVL_N, /* UniqueID */ + "N = MAXLVL", /* Syntax */ + "The maximum stack level; implementation-defined.", /* Description */ + "MAXLVL", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MAXNUM_N, /* UniqueID */ + "N = MAXNUM", /* Syntax */ + "The largest finite positive number representable and manipula" + "ble by the implementation; implementation-defined. MAXNUM ma" + "y represent diffent number for different arithmetic options (" + "see OPTION ARITHMETIC).", /* Description */ + "MAXNUM", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_MAXSNG_N, /* UniqueID */ + "N = MAXSNG", /* Syntax */ + "The largest finite positive number representable as a SINGLE;" + " implementation-defined.", /* Description */ + "MAXSNG", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MID_A_X_S, /* UniqueID */ + "S$ = MID$( A$, X )", /* Syntax */ + "The characters of A$, starting from postion X.", /* Description */ + "MID$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2NUM, /* ParameterTypes */ + P1ANY | P2POS, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_MID_A_X_Y_S, /* UniqueID */ + "S$ = MID$( A$, X, Y )", /* Syntax */ + "The Y characters of A$, starting from postion X.", /* Description */ + "MID$", /* Name */ + STRING, /* ReturnType */ + 3, /* ParameterCount */ + P1STR | P2NUM | P3NUM, /* ParameterTypes */ + P1ANY | P2POS | P3LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_MIN_X_Y_N, /* UniqueID */ + "N = MIN( X, Y )", /* Syntax */ + "The smaller (algebraically) of the parameters.", /* Description */ + "MIN", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_MINBYT_N, /* UniqueID */ + "N = MINBYT", /* Syntax */ + "The largest finite negative number representable as a BYTE; i" + "mplementation-defined.", /* Description */ + "MINBYT", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MINCUR_N, /* UniqueID */ + "N = MINCUR", /* Syntax */ + "The largest finite negative number representable as a CURRENC" + "Y; implementation-defined.", /* Description */ + "MINCUR", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MINDBL_N, /* UniqueID */ + "N = MINDBL", /* Syntax */ + "The largest finite negative number representable as a DOUBLE;" + " implementation-defined.", /* Description */ + "MINDBL", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MINDEV_N, /* UniqueID */ + "N = MINDEV", /* Syntax */ + "The largest finite negative number useable as a FILE NUMBER; " + "implementation-defined.", /* Description */ + "MINDEV", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MININT_N, /* UniqueID */ + "N = MININT", /* Syntax */ + "The largest finite negative number representable as an INTEGE" + "R; implementation-defined.", /* Description */ + "MININT", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MINLNG_N, /* UniqueID */ + "N = MINLNG", /* Syntax */ + "The largest finite negative number representable as a LONG; i" + "mplementation-defined.", /* Description */ + "MINLNG", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MINNUM_N, /* UniqueID */ + "N = MINNUM", /* Syntax */ + "The largest finite negative number representable and manipula" + "ble by the implementation; implementation-defined. MINNUM ma" + "y represent diffent number for different arithmetic options (" + "see OPTION ARITHMETIC).", /* Description */ + "MINNUM", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MINSNG_N, /* UniqueID */ + "N = MINSNG", /* Syntax */ + "The largest finite negative number representable as a SINGLE;" + " implementation-defined.", /* Description */ + "MINSNG", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MKC_X_S, /* UniqueID */ + "S$ = MKC$( X )", /* Syntax */ + "The internal representation of the currency (64-bit) integer " + "X as a string.", /* Description */ + "MKC$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1CUR, /* ParameterTests */ + NULL, /* NextPointer */ + B14 /* OptionVersionBitmask */ + }, + { + F_MKD_X_S, /* UniqueID */ + "S$ = MKD$( X )", /* Syntax */ + "The internal representation of X as a string.", /* Description */ + "MKD$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DBL, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_MKDIR_A_N, /* UniqueID */ + "N = MKDIR( A$ )", /* Syntax */ + "Makes the directory named in A$.", /* Description */ + "MKDIR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_MKI_X_S, /* UniqueID */ + "S$ = MKI$( X )", /* Syntax */ + "The internal representation of the short (16-bit) integer X a" + "s a string.", /* Description */ + "MKI$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_MKL_X_S, /* UniqueID */ + "S$ = MKL$( X )", /* Syntax */ + "The internal representation of the long (32-bit) integer X as" + " a string.", /* Description */ + "MKL$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LNG, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_MKS_X_S, /* UniqueID */ + "S$ = MKS$( X )", /* Syntax */ + "The internal representation of X as a string.", /* Description */ + "MKS$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1FLT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_MOD_X_Y_N, /* UniqueID */ + "N = MOD( X, Y )", /* Syntax */ + "X modulo Y, i.e., X-Y*INT(X/Y). Y shall not equal zero.", /* Description */ + "MOD", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2NEZ, /* ParameterTests */ + NULL, /* NextPointer */ + E86 /* OptionVersionBitmask */ + }, + { + F_NAME_A_B_N, /* UniqueID */ + "N = NAME( A$, B$ )", /* Syntax */ + "Rename the file named A$ into B$.", /* Description */ + "NAME", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2STR, /* ParameterTypes */ + P1BYT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_NULL_X_N, /* UniqueID */ + "N = NULL( X )", /* Syntax */ + "Appends X null characters after each line printed by LPRINT o" + "r LLIST.", /* Description */ + "NULL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_OCT_X_S, /* UniqueID */ + "S$ = OCT$( X )", /* Syntax */ + "The the octal (base 8) representation of X.", /* Description */ + "OCT$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_OPEN_A_X_B_N, /* UniqueID */ + "N = OPEN( A$, X, B$ )", /* Syntax */ + "Open file number X. A$ is the mode: I, O, A, R. B$ is the f" + "ile name. Default the record length.", /* Description */ + "OPEN", /* Name */ + NUMBER, /* ReturnType */ + 3, /* ParameterCount */ + P1STR | P2NUM | P3STR, /* ParameterTypes */ + P1BYT | P2DEV | P3BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_OPEN_A_X_B_Y_N, /* UniqueID */ + "N = OPEN( A$, X, B$, Y )", /* Syntax */ + "Open file number X. A$ is the mode: I, O, A, R. B$ is the f" + "ile name. Y is the record length.", /* Description */ + "OPEN", /* Name */ + NUMBER, /* ReturnType */ + 4, /* ParameterCount */ + P1STR | P2NUM | P3STR | P4NUM,/* ParameterTypes */ + P1BYT | P2DEV | P3BYT | P4INT,/* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ORD_A_N, /* UniqueID */ + "N = ORD( A$ )", /* Syntax */ + "The ordinal position of the character named by the string ass" + "ociated with A$ in the collating sequence of ASCII character " + "set, where the first member of the character set is in positi" + "on zero. The acceptable values for the standard character se" + "t are shown in Table 1.", /* Description */ + "ORD", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_OUT_X_Y_N, /* UniqueID */ + "N = OUT( X, Y )", /* Syntax */ + "Sends Y to hardware port X. Not supported on all platforms.", /* Description */ + "OUT", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1INT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_PEEK_X_N, /* UniqueID */ + "N = PEEK( X )", /* Syntax */ + "The value read from hardware address X. Not supported on all" + " platforms.", /* Description */ + "PEEK", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LNG, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_PI_N, /* UniqueID */ + "N = PI", /* Syntax */ + "The constant 3.14159 which is the ratio of the circumference " + "of a circle to its diameter.", /* Description */ + "PI", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_POKE_X_Y_N, /* UniqueID */ + "N = POKE( X, Y )", /* Syntax */ + "Sends Y to hardware address X. Not supported on all platform" + "s.", /* Description */ + "POKE", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1LNG | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_POS_N, /* UniqueID */ + "N = POS", /* Syntax */ + "The current cursor position in the line.", /* Description */ + "POS", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_POS_X_N, /* UniqueID */ + "N = POS( X )", /* Syntax */ + "The current cursor position in the line for file X.", /* Description */ + "POS", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_POS_A_B_N, /* UniqueID */ + "N = POS( A$, B$ )", /* Syntax */ + "The character position, within the value assocated with A$, o" + "f the first character of the first occurence of the value ass" + "ociated with B$, starting at the first character of A$. If t" + "here is not such occurence, then the value returned is zero.", /* Description */ + "POS", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2STR, /* ParameterTypes */ + P1ANY | P2ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_POS_A_B_X_N, /* UniqueID */ + "N = POS( A$, B$, X )", /* Syntax */ + "The character position, within the value assocated with A$, o" + "f the first character of the first occurence of the value ass" + "ociated with B$, starting at the Xth character of A$. If the" + "re is not such occurence, then the value returned is zero.", /* Description */ + "POS", /* Name */ + NUMBER, /* ReturnType */ + 3, /* ParameterCount */ + P1STR | P2STR | P3NUM, /* ParameterTypes */ + P1ANY | P2ANY | P3POS, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_PUT_X_N, /* UniqueID */ + "N = PUT( X )", /* Syntax */ + "For file X, puts the next available record.", /* Description */ + "PUT", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_PUT_X_Y_N, /* UniqueID */ + "N = PUT( X, Y )", /* Syntax */ + "For file X, puts record number Y. The first record number is" + " 1.", /* Description */ + "PUT", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_RAD_X_N, /* UniqueID */ + "N = RAD( X )", /* Syntax */ + "The number of radians in X degrees.", /* Description */ + "RAD", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_RANDOMIZE_N, /* UniqueID */ + "N = RANDOMIZE", /* Syntax */ + "Seeds the pseudo-random number generator with TIME.", /* Description */ + "RANDOMIZE", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_RANDOMIZE_X_N, /* UniqueID */ + "N = RANDOMIZE( X )", /* Syntax */ + "Seeds the pseudo-random number generator with X.", /* Description */ + "RANDOMIZE", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_REMAINDER_X_Y_N, /* UniqueID */ + "N = REMAINDER( X, Y )", /* Syntax */ + "The remainder function, i.e., X-Y*IP(X/Y). Y shall not equal" + " zero.", /* Description */ + "REMAINDER", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2NEZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_REPEAT_X_Y_S, /* UniqueID */ + "S$ = REPEAT$( X, Y )", /* Syntax */ + "The string consisting of X copies of CHR$(Y); X > 0.", /* Description */ + "REPEAT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1LEN | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_REPEAT_X_A_S, /* UniqueID */ + "S$ = REPEAT$( X, A$ )", /* Syntax */ + "The string consisting of X copies of A$; X > 0.", /* Description */ + "REPEAT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2STR, /* ParameterTypes */ + P1LEN | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_RESET_N, /* UniqueID */ + "N = RESET", /* Syntax */ + "Close all open files.", /* Description */ + "RESET", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_RIGHT_A_X_S, /* UniqueID */ + "S$ = RIGHT$( A$, X )", /* Syntax */ + "The right-most X characters of A$.", /* Description */ + "RIGHT$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1STR | P2NUM, /* ParameterTypes */ + P1ANY | P2LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_RMDIR_A_N, /* UniqueID */ + "N = RMDIR( A$ )", /* Syntax */ + "Removes the directory named in A$.", /* Description */ + "RMDIR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_RND_N, /* UniqueID */ + "N = RND", /* Syntax */ + "The next pseudo-random number in an implementation-defined se" + "quence of pseudo-random numbers uniformly distributed in the " + "range 0 <= RND < 1.", /* Description */ + "RND", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_RND_X_N, /* UniqueID */ + "N = RND( X )", /* Syntax */ + "Returns a pseudorandom number in the range [0,1]. The value " + "of X is ignored.", /* Description */ + "RND", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_ROUND_X_Y_N, /* UniqueID */ + "N = ROUND( X, Y )", /* Syntax */ + "The value of X rounded to Y decimal digits to the right of th" + "e decimal point (or -Y digits to the left if Y < 0); i.e., IN" + "T(X*10^Y+.5)/10^Y. Y must be in [-32,32].", /* Description */ + "ROUND", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_RTRIM_A_S, /* UniqueID */ + "S$ = RTRIM$( A$ )", /* Syntax */ + "The string of characters resulting from the value associated " + "with A$ by deleting all trailing space characters.", /* Description */ + "RTRIM$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_SEC_X_N, /* UniqueID */ + "N = SEC( X )", /* Syntax */ + "The secant of X, where X is in radians.", /* Description */ + "SEC", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_SEEK_X_N, /* UniqueID */ + "N = SEEK( X )", /* Syntax */ + "The location of file X; the next record that GET or PUT state" + "ments will use.", /* Description */ + "SEEK", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1DEV, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_SEEK_X_Y_N, /* UniqueID */ + "N = SEEK( X, Y )", /* Syntax */ + "For file X, move to record number Y; the first record number " + "is 1.", /* Description */ + "SEEK", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_SGN_X_N, /* UniqueID */ + "N = SGN( X )", /* Syntax */ + "The sign of X: -1 if X < 0, 0 if X = 0, and +1 if X > 0.", /* Description */ + "SGN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_SHELL_A_N, /* UniqueID */ + "N = SHELL( A$ )", /* Syntax */ + "The exit code resulting from the execution of an operating sy" + "stem command.", /* Description */ + "SHELL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_SIN_X_N, /* UniqueID */ + "N = SIN( X )", /* Syntax */ + "The sine of X, where X is in radians.", /* Description */ + "SIN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_SINH_X_N, /* UniqueID */ + "N = SINH( X )", /* Syntax */ + "The hyperbolic sine of X.", /* Description */ + "SINH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_SPACE_X_S, /* UniqueID */ + "S$ = SPACE$( X )", /* Syntax */ + "The string of X blank spaces.", /* Description */ + "SPACE$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1LEN, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_SPC_X_S, /* UniqueID */ + "S$ = SPC( X )", /* Syntax */ + "The string of X blank spaces. Only for use within the PRINT " + "command.", /* Description */ + "SPC", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_SQR_X_N, /* UniqueID */ + "N = SQR( X )", /* Syntax */ + "The non-negative square root of X; X shall be non-negative.", /* Description */ + "SQR", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1GEZ, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_STR_X_S, /* UniqueID */ + "S$ = STR$( X )", /* Syntax */ + "The string generated by the print-statement as the numeric-re" + "presentation of the value associated with X.", /* Description */ + "STR$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_STRING_X_A_S, /* UniqueID */ + "S$ = STRING$( X, A$ )", /* Syntax */ + "The string X bytes long consisting of the first character of " + "A$.", /* Description */ + "STRING$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2STR, /* ParameterTypes */ + P1LEN | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_STRING_X_Y_S, /* UniqueID */ + "S$ = STRING$( X, Y )", /* Syntax */ + "The string X bytes long consisting of CHR$(Y).", /* Description */ + "STRING$", /* Name */ + STRING, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1LEN | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_TAB_X_S, /* UniqueID */ + "S$ = TAB( X )", /* Syntax */ + "The string required to advance to column X. Only for use wit" + "hin the PRINT command.", /* Description */ + "TAB", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_TAN_X_N, /* UniqueID */ + "N = TAN( X )", /* Syntax */ + "The tangent of X, where X is in radians.", /* Description */ + "TAN", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_TANH_X_N, /* UniqueID */ + "N = TANH( X )", /* Syntax */ + "The hyperbolic tangent of X.", /* Description */ + "TANH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_TIME_N, /* UniqueID */ + "N = TIME", /* Syntax */ + "The time elapsed since the previous midnight, expressed in se" + "conds; e.g., the value of TIME at 11:15 AM is 40500. If ther" + "e is no clock available, then the value of TIME shall be -1. " + " The value of TIME at midnight shall be zero (not 86400).", /* Description */ + "TIME", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_TIME_S, /* UniqueID */ + "S$ = TIME$", /* Syntax */ + "The time of day in 24-hour notation according to ISO 3307. F" + "or example, the value of TIME$ at 11:15 AM is '11:15:00'. If" + " there is no clock available, then the value of TIME$ shall b" + "e '99:99:99'. The value of TIME$ at midnight is '00:00:00'.", /* Description */ + "TIME$", /* Name */ + STRING, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_TIMER_N, /* UniqueID */ + "N = TIMER", /* Syntax */ + "The time in the system clock in seconds elapsed since midnigh" + "t.", /* Description */ + "TIMER", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_TRIM_A_S, /* UniqueID */ + "S$ = TRIM$( A$ )", /* Syntax */ + "The string resulting from removing both leading and trailing " + "spaces from A$.", /* Description */ + "TRIM$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_TROFF_N, /* UniqueID */ + "N = TROFF", /* Syntax */ + "Turn tracing OFF", /* Description */ + "TROFF", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_TRON_N, /* UniqueID */ + "N = TRON", /* Syntax */ + "Turn tracing ON", /* Description */ + "TRON", /* Name */ + NUMBER, /* ReturnType */ + 0, /* ParameterCount */ + PNONE, /* ParameterTypes */ + PNONE, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_TRUNCATE_X_Y_N, /* UniqueID */ + "N = TRUNCATE( X, Y )", /* Syntax */ + "The value of X truncated to Y decimal digits to the right of " + "the decimal point (or -Y digits to the left if Y < 0); i.e., " + "IP(X*10^Y)/10^Y. Y in [-32,32].", /* Description */ + "TRUNCATE", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1ANY | P2INT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | E86 /* OptionVersionBitmask */ + }, + { + F_UCASE_A_S, /* UniqueID */ + "S$ = UCASE$( A$ )", /* Syntax */ + "The string of characters resulting from the value associated " + "with A$ by replacing each lower-case-letter in the string by " + "its upper-case version.", /* Description */ + "UCASE$", /* Name */ + STRING, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1ANY, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_VAL_A_N, /* UniqueID */ + "N = VAL( A$ )", /* Syntax */ + "The value of the numeric-constant associated with A$, if the " + "string associated with A$ is a numeric-constant. Leading and" + " trailing spaces in the string are ignored. If the evaluatio" + "n of the numeric-constant would result in a value which cause" + "s an underflow, then the value returned shall be zero. For e" + "xample, VAL(' 123.5 ' ) = 123.5, VAL('2.E-99') could be zero," + " and VAL('MCMXVII') causes an exception.", /* Description */ + "VAL", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1STR, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | D64 | E78 | M80 | T83 | T84 | M85 | E86 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_WAIT_X_Y_N, /* UniqueID */ + "N = WAIT( X, Y )", /* Syntax */ + "Waits for the value of (INP(X) AND Y) to become nonzero. Not" + " supported on all platforms.", /* Description */ + "WAIT", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1INT | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_WAIT_X_Y_Z_N, /* UniqueID */ + "N = WAIT( X, Y, Z )", /* Syntax */ + "Waits for the value of ((INP(X) XOR Z) AND Y) to become nonze" + "ro. Not supported on all platforms.", /* Description */ + "WAIT", /* Name */ + NUMBER, /* ReturnType */ + 3, /* ParameterCount */ + P1NUM | P2NUM | P3NUM, /* ParameterTypes */ + P1INT | P2BYT | P3BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_WIDTH_X_N, /* UniqueID */ + "N = WIDTH( X )", /* Syntax */ + "For console, sets the line width to X. Zero means no wrapping" + " will occur.", /* Description */ + "WIDTH", /* Name */ + NUMBER, /* ReturnType */ + 1, /* ParameterCount */ + P1NUM, /* ParameterTypes */ + P1BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, + { + F_WIDTH_X_Y_N, /* UniqueID */ + "N = WIDTH( X, Y )", /* Syntax */ + "For file X, sets the line width to Y. Zero means no wrapping" + " will occur.", /* Description */ + "WIDTH", /* Name */ + NUMBER, /* ReturnType */ + 2, /* ParameterCount */ + P1NUM | P2NUM, /* ParameterTypes */ + P1DEV | P2BYT, /* ParameterTests */ + NULL, /* NextPointer */ + B14 | M80 | T83 | T84 | M85 | M88 | M90 | M91 | M92 | M93 | M95 | M97 | M98 /* OptionVersionBitmask */ + }, +}; + + + +/* EOF */ diff --git a/bwd_six.h b/bwd_six.h new file mode 100644 index 0000000..334d2db --- /dev/null +++ b/bwd_six.h @@ -0,0 +1,451 @@ +/*************************************************************** + + bwx_tty.c Six character extern redefinitions + for Bywater BASIC Interpreter + + Copyright (c) 1993, Ted A. Campbell + Bywater Software + + email: tcamp@delphi.com + + Copyright and Permissions Information: + + All U.S. and international rights are claimed by the author, + Ted A. Campbell. + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + +***************************************************************/ + +/*---------------------------------------------------------------*/ +/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ +/* 11/1995 (eidetics@cerf.net). */ +/* */ +/* Those additionally marked with "DD" were at the suggestion of */ +/* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ +/*---------------------------------------------------------------*/ + +#define ed X00000 +#define fi X00001 +#define pr X00002 +#define im X00003 +#define co X00004 +#define progfile X00005 +#define rescan X00006 +#define number X00007 +#define bwb_l X00008 +#define bwb_start X00009 +#define bwb_end X0000A +#define data_line X0000B +#define data_pos X0000C +#define var_start X0000D +#define var_end X0000E +#define fnc_start X0000F +#define fnc_end X00010 +#define fslt_start X00011 +#define fslt_end X00012 +#define exsc X00013 +#define expsc X00014 +#define excs X00015 +#define exps X00016 +#define bwb_curtask X00017 +#define bwb_ebuf X00018 +#define bwb_trace X00019 +#define dim_base X0001A +#define option_degrees X0001B +#define errfdevice X0001C +#define err_line X0001D +#define err_number X0001E +#define err_gosubl X0001F +#define err_fired X00020 +#define ErrMsg X00021 +#define stopped_line X00022 +#define dev_table X00023 +#define exp_ops X00024 +#define bwb_cmdtable X00025 +#define bwb_prefuncs X00026 +#define bwb_vertable X00027 +#define OptionVersion X00028 +#define OptionCommentChar X00029 +#define OptionStatementChar X0002A +#define OptionFlags X0002B +#define OptionDateFormat X0002C +#define OptionTimeFormat X0002D +#define OptionIndentValue X0002E +#define OptionTerminalType X0002F +#define tmr_gotol X00030 +#define tmr_count X00031 +#define tmr_expires X00032 +#define IsInteractive X00033 +#define IsCommandLineFile X00034 +#define LPRINT_COLUMN X00035 +#define LPRINT_WIDTH X00036 +#define LPRINT_NULLS X00037 +#define mark X00038 +#define ExternalInputFile X00039 +#define MaintainerDebugOn X0003A +#define DefaultVariableType X0003B +#define err_openfile X0003C +#define err_getmem X0003D +#define err_noln X0003E +#define err_nofn X0003F +#define err_lnnotfound X00040 +#define err_incomplete X00041 +#define err_valoorange X00042 +#define err_syntax X00043 +#define err_devnum X00044 +#define err_dev X00045 +#define err_opsys X00046 +#define err_argstr X00047 +#define err_defchar X00048 +#define err_mismatch X00049 +#define err_dimnotarray X0004A +#define err_retnogosub X0004B +#define err_od X0004C +#define err_overflow X0004D +#define err_nf X0004E +#define err_uf X0004F +#define err_dbz X00050 +#define err_redim X00051 +#define err_obdim X00052 +#define err_uc X00053 +#define err_noprogfile X00054 +#define fnc_timer X00055 +#define bwb_Timer_On X00056 +#define bwb_Timer_Off X00057 +#define bwb_ON_TIMER X00058 +#define bwb_TIMER X00059 +#define bwb_TIMER_OFF X0005A +#define bwb_TIMER_ON X0005B +#define bwb_TIMER_STOP X0005C +#define adv_element X0005D +#define adv_eos X0005E +#define adv_ws X0005F +#define BasicNumerc X00060 +#define break_mes X00061 +#define bwb_CALL X00062 +#define bwb_CASE X00063 +#define bwb_CASE_ELSE X00064 +#define bwb_CASE_IF X00065 +#define bwb_CASE_IS X00066 +#define bwb_CHAIN X00067 +#define bwb_CHANGE X00068 +#define bwb_CLEAR X00069 +#define bwb_CLOAD X0006A +#define bwb_CLOAD_ X0006B +#define bwb_CMDS X0006C +#define bwb_COMMON X0006D +#define bwb_const X0006E +#define bwb_CONT X0006F +#define bwb_CSAVE X00070 +#define bwb_CSAVE_ X00071 +#define bwb_DATA X00072 +#define bwb_decexec X00073 +#define bwb_DEF X00074 +#define bwb_DEFDBL X00075 +#define bwb_DEFINT X00076 +#define bwb_DEFSNG X00077 +#define bwb_DEFSTR X00078 +#define bwb_DEF_SUB X00079 +#define bwb_DELETE X0007A +#define bwb_DIM X0007B +#define bwb_DO X0007C +#define bwb_DO_UNTIL X0007D +#define bwb_DO_WHILE X0007E +#define bwb_ELSE X0007F +#define bwb_ELSEIF X00080 +#define bwb_END X00081 +#define bwb_END_FUNCTION X00082 +#define bwb_END_IF X00083 +#define bwb_END_SELECT X00084 +#define bwb_END_SUB X00085 +#define bwb_ERASE X00086 +#define bwb_error X00087 +#define bwb_etov X00088 +#define bwb_execline X00089 +#define bwb_EXIT X0008A +#define bwb_EXIT_DO X0008B +#define bwb_EXIT_FOR X0008C +#define bwb_EXIT_FUNCTION X0008D +#define bwb_EXIT_SUB X0008E +#define bwb_EXIT_UNTIL X0008F +#define bwb_EXIT_WHILE X00090 +#define bwb_exp X00091 +#define bwb_FIELD X00092 +#define bwb_fload X00093 +#define bwb_FNCS X00094 +#define bwb_FOR X00095 +#define bwb_freeline X00096 +#define bwb_FUNCTION X00097 +#define bwb_gets X00098 +#define bwb_getvarname X00099 +#define bwb_GO X0009A +#define bwb_GOSUB X0009B +#define bwb_GOTO X0009C +#define bwb_HELP X0009D +#define bwb_IF X0009E +#define bwb_IF_THEN X0009F +#define bwb_incexec X000A0 +#define bwb_init X000A1 +#define bwb_INPUT X000A2 +#define bwb_interact X000A3 +#define bwb_isvar X000A4 +#define bwb_ladd X000A5 +#define bwb_LET X000A6 +#define bwb_LINE X000A7 +#define bwb_LIST X000A8 +#define bwb_LOAD X000A9 +#define bwb_LOOP X000AA +#define bwb_LOOP_UNTIL X000AB +#define bwb_LOOP_WHILE X000AC +#define bwb_LPRINT X000AD +#define bwb_LSET X000AE +#define bwb_mainloop X000AF +#define bwb_MAINTAINER X000B0 +#define bwb_MERGE X000B1 +#define bwb_MID_ X000B2 +#define bwb_NAME X000B3 +#define bwb_NEW X000B4 +#define bwb_NEXT X000B5 +#define bwb_null X000B6 +#define bwb_numseq X000B7 +#define bwb_ON X000B8 +#define bwb_ON_ERROR_GOTO X000B9 +#define bwb_ON_ERROR_GOSUB X000BA +#define bwb_ON_ERROR_RESUME_NEXT X000BB +#define bwb_ON_ERROR_RETURN_NEXT X000BC +#define bwb_OPEN X000BD +#define bwb_OPTION X000BE +#define bwb_OPTION_ANGLE_DEGREES X000BF +#define bwb_OPTION_ANGLE_RADIANS X000C0 +#define bwb_OPTION_ARITHMETIC_DECIMAL X000C1 +#define bwb_OPTION_ARITHMETIC_FIXED X000C2 +#define bwb_OPTION_ARITHMETIC_NATIVE X000C3 +#define bwb_OPTION_BASE_0 X000C4 +#define bwb_OPTION_BASE_1 X000C5 +#define bwb_OPTION_BUGS_OFF X000C6 +#define bwb_OPTION_BUGS_ON X000C7 +#define bwb_OPTION_COMMENT X000C8 +#define bwb_OPTION_COMPARE_BINARY X000C9 +#define bwb_OPTION_COMPARE_DATABASE X000CA +#define bwb_OPTION_COMPARE_TEXT X000CB +#define bwb_OPTION_COVERAGE_OFF X000CC +#define bwb_OPTION_COVERAGE_ON X000CD +#define bwb_OPTION_DATE X000CE +#define bwb_OPTION_DISABLE_COMMAND X000CF +#define bwb_OPTION_DISABLE_FUNCTION X000D0 +#define bwb_OPTION_DISABLE_OPERATOR X000D1 +#define bwb_OPTION_ENABLE_COMMAND X000D2 +#define bwb_OPTION_ENABLE_FUNCTION X000D3 +#define bwb_OPTION_ENABLE_OPERATOR X000D4 +#define bwb_OPTION_ERROR_GOSUB X000D5 +#define bwb_OPTION_ERROR_GOTO X000D6 +#define bwb_OPTION_INDENT X000D7 +#define bwb_OPTION_LABELS_OFF X000D8 +#define bwb_OPTION_LABELS_ON X000D9 +#define bwb_OPTION_STATEMENT X000DA +#define bwb_OPTION_STRICT_OFF X000DB +#define bwb_OPTION_STRICT_ON X000DC +#define bwb_OPTION_TERMINAL_NONE X000DD +#define bwb_OPTION_TERMINAL_ADM_3A X000DE +#define bwb_OPTION_TERMINAL_ANSI X000DF +#define bwb_OPTION_TIME X000E0 +#define bwb_OPTION_TRACE_OFF X000E1 +#define bwb_OPTION_TRACE_ON X000E2 +#define bwb_OPTION_VERSION X000E3 +#define bwb_PRINT X000E4 +#define bwb_QUEST X000E5 +#define bwb_QUIT X000E6 +#define bwb_READ X000E7 +#define bwb_REM X000E8 +#define bwb_RESTORE X000E9 +#define bwb_RESUME X000EA +#define bwb_RETURN X000EB +#define bwb_RSET X000EC +#define bwb_RUN X000ED +#define bwb_SAVE X000EE +#define bwb_scan X000EF +#define bwb_SELECT X000F0 +#define bwb_SELECT_CASE X000F1 +#define bwb_setexec X000F2 +#define bwb_STOP X000F3 +#define bwb_stripcr X000F4 +#define bwb_SUB X000F5 +#define bwb_SWAP X000F6 +#define bwb_SYSTEM X000F7 +#define bwb_UEND X000F8 +#define bwb_UNTIL X000F9 +#define bwb_USER_LBL X000FA +#define bwb_VARS X000FB +#define bwb_vector X000FC +#define bwb_vtov X000FD +#define bwb_Warning X000FE +#define bwb_Warning_Clear X000FF +#define bwb_Warning_InvalidParameter X00100 +#define bwb_Warning_OutOfData X00101 +#define bwb_Warning_Overflow X00102 +#define bwb_Warning_AdvancedFeature X00103 +#define bwb_Warning_Pending X00104 +#define bwb_WEND X00105 +#define bwb_WHILE X00106 +#define bwb_WRITE X00107 +#define bwb_xlist X00108 +#define bwb_xload X00109 +#define bwb_xnew X0010A +#define bwb_xtxtline X0010B +#define bwb_zline X0010C +#define CALLOC X0010D +#define dec_esc X0010E +#define DetermineNumberOfDimensions X0010F +#define dim_getparams X00110 +#define dim_getparams_FIXED X00111 +#define DumpAllCommandSwitchStatement X00112 +#define DumpAllCommandSyntax X00113 +#define DumpAllCommandTableDefinitions X00114 +#define DumpAllCommandUniqueID X00115 +#define DumpAllFuctionSyntax X00116 +#define DumpAllFuctionTableDefinitions X00117 +#define DumpAllFuctionUniqueID X00118 +#define DumpAllFunctionSwitch X00119 +#define DumpOneCommandSyntax X0011A +#define DumpOneFunctionSyntax X0011B +#define exp_findop X0011C +#define exp_function X0011D +#define exp_getnval X0011E +#define exp_getival X0011F +#define exp_getsval X00120 +#define exp_getvfname X00121 +#define exp_iscmd X00122 +#define exp_isfn X00123 +#define exp_isnc X00124 +#define exp_isop X00125 +#define exp_isvn X00126 +#define exp_numconst X00127 +#define exp_operation X00128 +#define exp_paren X00129 +#define exp_strconst X0012A +#define exp_validarg X0012B +#define exp_variable X0012C +#define find_BottomLineInCode X0012D +#define find_label X0012E +#define fnc_add_deffn X0012F +#define fnc_deffn X00130 +#define fnc_find X00131 +#define fnc_find_by_id X00132 +#define fnc_find_exact X00133 +#define fnc_init X00134 +#define fnc_intrinsic X00135 +#define fnc_null X00136 +#define FREE X00137 +#define fslt_add X00138 +#define fslt_addcallvar X00139 +#define fslt_addlocalvar X0013A +#define fslt_find_name X0013B +#define fslt_init X0013C +#define FunctionDefinitionCheck X0013D +#define FunctionSyntax X0013E +#define FunctionUniqueID X0013F +#define GetKeyword X00140 +#define GetRestOfLine X00141 +#define ImplicitDim X00142 +#define inc_esc X00143 +#define inp_adv X00144 +#define inp_numconst X00145 +#define int_qmdstr X00146 +#define IsLastKeyword X00147 +#define is_cmd X00148 +#define is_eol X00149 +#define is_label X0014A +#define is_let X0014B +#define is_ln X0014C +#define is_numconst X0014D +#define line_start X0014E +#define ln_asbuf X0014F +#define NumberValueCheck X00150 +#define OptionBaseHelper X00151 +#define OptionVersionSet X00152 +#define prn_iprintf X00153 +#define prn_lprintf X00154 +#define prn_precision X00155 +#define prn_xprintf X00156 +#define ResetConsoleColumn X00157 +#define scan_element X00158 +#define SortAllCommands X00159 +#define SortAllFunctions X0015A +#define StringLengthCheck X0015B +#define str_btob X0015C +#define str_btoc X0015D +#define str_cat X0015E +#define str_cmp X0015F +#define str_ctob X00160 +#define var_chain X00161 +#define var_delcvars X00162 +#define var_find X00163 +#define var_findnval X00164 +#define var_findsval X00165 +#define var_free X00166 +#define var_getnval X00167 +#define var_getsval X00168 +#define var_init X00169 +#define var_make X0016A +#define var_new X0016B +#define var_pos X0016C +#define var_setnval X0016D +#define VerifyNumeric X0016E +#define SetOnError X0016F +#define GetOnError X00170 +#define ToUpper X00171 +#define ToLower X00172 +#define var_CLEAR X00173 +#define break_handler X00174 +#define bwb_EDIT X00175 +#define bwb_RENUM X00176 +#define bwx_CHDIR X00177 +#define bwx_CLS X00178 +#define bwx_COLOR X00179 +#define bwx_CONSOLE_WIDTH X0017A +#define bwx_DEBUG X0017B +#define bwx_errmes X0017C +#define bwx_FILES X0017D +#define bwx_FRE X0017E +#define bwx_INKEY X0017F +#define bwx_INP X00180 +#define bwx_input X00181 +#define bwx_INPUT X00182 +#define bwx_KILL X00183 +#define bwx_LOCATE X00184 +#define bwx_LPRINT X00185 +#define bwx_LPRINT_WIDTH X00186 +#define bwx_message X00187 +#define bwx_MKDIR X00188 +#define bwx_NAME X00189 +#define bwx_OUT X0018A +#define bwx_OUTPUT_WIDTH X0018B +#define bwx_PEEK X0018C +#define bwx_POKE X0018D +#define bwx_PRINT X0018E +#define bwx_RANDOM_RECORD_SIZE X0018F +#define bwx_RMDIR X00190 +#define bwx_SHELL X00191 +#define bwx_STOP X00192 +#define bwx_terminate X00193 +#define bwx_TIMER X00194 +#define bwx_WAIT X00195 +#define bwx_signon X00196 +#define isnan X00197 +#define isinf X00198 +#define rint X00199 +#define strcasecmp X0019A +#define strncasecmp X0019B +#define broken_strcpy X0019C + +/* EOF */ diff --git a/bwx_iqc.c b/bwx_iqc.c deleted file mode 100644 index 4edb680..0000000 --- a/bwx_iqc.c +++ /dev/null @@ -1,775 +0,0 @@ -/*************************************************************** - - bwx_iqc.c Environment-dependent implementation - of Bywater BASIC Interpreter - for IBM PC and Compatibles - using the Microsoft QuickC (tm) Compiler - - Copyright (c) 1993, Ted A. Campbell - Bywater Software - - email: tcamp@delphi.com - - Copyright and Permissions Information: - - All U.S. and international rights are claimed by the author, - Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -***************************************************************/ - -/*---------------------------------------------------------------*/ -/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ -/* 11/1995 (eidetics@cerf.net). */ -/* */ -/* Those additionally marked with "DD" were at the suggestion of */ -/* Dale DePriest (daled@cadence.com). */ -/*---------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include - -#include "bwbasic.h" -#include "bwb_mes.h" - -extern int prn_col; -extern jmp_buf mark; -short oldfgd; -long oldbgd; -int reset_mode = FALSE; - -static int iqc_setpos( void ); - -/*************************************************************** - - FUNCTION: main() - - DESCRIPTION: As in any C program, main() is the basic - function from which the rest of the - program is called. Some environments, - however, provide their own main() functions - (Microsoft Windows (tm) is an example). - In these cases, the following code will - have to be included in the initialization - function that is called by the environment. - -***************************************************************/ - -int -main( int argc, char **argv ) - { -#if MS_CMDS - struct videoconfig vc; - short videomode; - - /* Save original foreground, background, and text position. */ - - _getvideoconfig( &vc ); - oldfgd = _gettextcolor(); - oldbgd = _getbkcolor(); - - if ( vc.mode != _TEXTC80 ) - { - if ( _setvideomode( _TEXTC80 ) == 0 ) - { - _getvideoconfig( &vc ); - prn_xprintf( stderr, "Failed to set color video mode\n" ); - } - else - { - reset_mode = FALSE; - } - } - else - { - reset_mode = FALSE; - } - -#endif /* MS_CMDS */ - - bwb_init( argc, argv ); - -#if INTERACTIVE - setjmp( mark ); -#endif - - /* now set the number of colors available */ - - * var_findnval( co, co->array_pos ) = (bnumber) vc.numcolors; - - /* main program loop */ - - while( !feof( stdin ) ) /* condition !feof( stdin ) added in v1.11 */ - { - bwb_mainloop(); - } - - return (0); - } - -/*************************************************************** - - FUNCTION: bwx_signon() - - DESCRIPTION: - -***************************************************************/ - -int -bwx_signon( void ) - { - - sprintf( bwb_ebuf, "\r%s %s\n", MES_SIGNON, VERSION ); - prn_xprintf( stdout, bwb_ebuf ); - sprintf( bwb_ebuf, "\r%s\n", MES_COPYRIGHT ); - prn_xprintf( stdout, bwb_ebuf ); - sprintf( bwb_ebuf, "\r%s\n", MES_COPYRIGHT_2 ); /* JBV 1/97 */ - prn_xprintf( stdout, bwb_ebuf ); -#if PERMANENT_DEBUG - sprintf( bwb_ebuf, "\r%s\n", "Debugging Mode" ); - prn_xprintf( stdout, bwb_ebuf ); -#else - sprintf( bwb_ebuf, "\r%s\n", MES_LANGUAGE ); - prn_xprintf( stdout, bwb_ebuf ); -#endif - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_message() - - DESCRIPTION: - -***************************************************************/ - -int -bwx_message( char *m ) - { - -#if DEBUG - _outtext( "" ); -#endif - - _outtext( m ); - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_putc() - - DESCRIPTION: - -***************************************************************/ - -extern int -bwx_putc( char c ) - { - static char tbuf[ 2 ]; - - tbuf[ 0 ] = c; - tbuf[ 1 ] = '\0'; - _outtext( tbuf ); - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_error() - - DESCRIPTION: - -***************************************************************/ - -int -bwx_errmes( char *m ) - { - static char tbuf[ MAXSTRINGSIZE + 1 ]; /* this memory should be - permanent in case of memory - overrun errors */ - - if (( prn_col != 1 ) && ( errfdevice == stderr )) - { - prn_xprintf( errfdevice, "\n" ); - } - if ( CURTASK number == 0 ) - { - sprintf( tbuf, "\n%s: %s\n", ERRD_HEADER, m ); - } - else - { - sprintf( tbuf, "\n%s %d: %s\n", ERROR_HEADER, CURTASK number, m ); - } - -#if INTENSIVE_DEBUG - prn_xprintf( stderr, "" ); -#endif - - prn_xprintf( errfdevice, tbuf ); - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_input() - - DESCRIPTION: As implemented here, the input facility - is a hybrid of _outtext output (which allows - the color to be set) and standard output - (which does not). The reason is that I've - found it helpful to use the DOS facility - for text entry, with its backspace-delete - and recognition of the SIGINT, depite the - fact that its output goes to stdout. - -***************************************************************/ - -int -bwx_input( char *prompt, char *buffer ) - { - -#if INTENSIVE_DEBUG - prn_xprintf( stdout, "" ); -#endif - - prn_xprintf( stdout, prompt ); - - fgets( buffer, MAXREADLINESIZE, stdin ); - prn_xprintf( stdout, "\n" ); /* let _outtext catch up */ - - * prn_getcol( stdout ) = 1; /* reset column */ - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_terminate() - - DESCRIPTION: - -***************************************************************/ - -void -bwx_terminate( void ) - { -#if MS_CMDS - - if ( reset_mode == TRUE ) - { - - _setvideomode( _DEFAULTMODE ); - - /* Restore original foreground and background. */ - - _settextcolor( oldfgd ); - _setbkcolor( oldbgd ); - - } - -#endif - - exit( 0 ); - } - -/*************************************************************** - - FUNCTION: bwx_shell() - - DESCRIPTION: - -***************************************************************/ - -#if COMMAND_SHELL -extern int -bwx_shell( struct bwb_line *l ) - { - static char *s_buffer; - static int init = FALSE; - static int position; - - /* get memory for temporary buffer if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( s_buffer = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ) )) == NULL ) - { - bwb_error( err_getmem ); - return FALSE; - } - } - - /* get the first element and check for a line number */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): line buffer is <%s>.", l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - position = 0; - adv_element( l->buffer, &position, s_buffer ); - if ( is_numconst( s_buffer ) != TRUE ) /* not a line number */ - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): no line number, command <%s>.", - l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - if ( system( l->buffer ) == 0 ) - { - iqc_setpos(); - return TRUE; - } - else - { - iqc_setpos(); - return FALSE; - } - } - - else /* advance past line number */ - { - adv_ws( l->buffer, &position ); /* advance past whitespace */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): line number, command <%s>.", - l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - if ( system( &( l->buffer[ position ] ) ) == 0 ) - { - iqc_setpos(); - return TRUE; - } - else - { - iqc_setpos(); - return FALSE; - } - } - } -#endif - -/*************************************************************** - - FUNCTION: iqc_setpos() - - DESCRIPTION: - -***************************************************************/ - -static int -iqc_setpos( void ) - { - union REGS ibm_registers; - - /* call the BDOS function 0x10 to read the current cursor position */ - - ibm_registers.h.ah = 3; - ibm_registers.h.bh = (unsigned char) _getvisualpage(); - int86( 0x10, &ibm_registers, &ibm_registers ); - - /* set text to this position */ - - _settextposition( ibm_registers.h.dh, ibm_registers.h.dl ); - - /* and move down one position */ - - prn_xprintf( stdout, "\n" ); - - return TRUE; - } - - -#if COMMON_CMDS - -/*************************************************************** - - FUNCTION: bwb_edit() - - DESCRIPTION: - -***************************************************************/ - -struct bwb_line * -bwb_edit( struct bwb_line *l ) - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - char edname[ MAXSTRINGSIZE + 1 ]; - struct bwb_variable *ed; - FILE *loadfile; - - ed = var_find( DEFVNAME_EDITOR ); - str_btoc( edname, var_getsval( ed )); - - sprintf( tbuf, "%s %s", edname, CURTASK progfile ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_edit(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - system( tbuf ); -#endif - - /* open edited file for read */ - - if ( ( loadfile = fopen( CURTASK progfile, "r" )) == NULL ) - { - sprintf( bwb_ebuf, err_openfile, CURTASK progfile ); - bwb_error( bwb_ebuf ); - - iqc_setpos(); - return bwb_zline( l ); - } - - /* clear current contents */ - - bwb_new( l ); /* Relocated by JBV (bug found by DD) */ - - /* and (re)load the file into memory */ - - bwb_fload( loadfile ); - - - iqc_setpos(); - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_renum() - - DESCRIPTION: This function implements the BASIC RENUM - command by shelling out to a default - renumbering program called "renum". - Added by JBV 10/95 - - SYNTAX: RENUM - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_renum( struct bwb_line *l ) -#else -struct bwb_line * -bwb_renum( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - FILE *loadfile; - - sprintf( tbuf, "renum %s\0", CURTASK progfile ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_renum(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - system( tbuf ); -#endif - - /* open edited file for read */ - - if ( ( loadfile = fopen( CURTASK progfile, "r" )) == NULL ) - { - sprintf( bwb_ebuf, err_openfile, CURTASK progfile ); - bwb_error( bwb_ebuf ); - - iqc_setpos(); - return bwb_zline( l ); - } - - /* clear current contents */ - - bwb_new( l ); /* Relocated by JBV (bug found by DD) */ - - /* and (re)load the file into memory */ - - bwb_fload( loadfile ); - - - iqc_setpos(); - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_files() - - DESCRIPTION: - -***************************************************************/ - -struct bwb_line * -bwb_files( struct bwb_line *l ) - { - char tbuf[ MAXVARNAMESIZE + 1 ]; - char finame[ MAXVARNAMESIZE + 1 ]; - char argument[ MAXVARNAMESIZE + 1 ]; - struct bwb_variable *fi; - struct exp_ese *e; - - fi = var_find( DEFVNAME_FILES ); - str_btoc( finame, var_getsval( fi )); - - /* get argument */ - - adv_ws( l->buffer, &( l->position )); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\r': - case '\n': - argument[ 0 ] = '\0'; - break; - default: - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - if ( e->type != STRING ) - { - bwb_error( err_mismatch ); - return bwb_zline( l ); - } - str_btoc( argument, exp_getsval( e ) ); - break; - } - - - sprintf( tbuf, "%s %s", finame, argument ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_files(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - system( tbuf ); -#endif - - iqc_setpos(); - return bwb_zline( l ); - - } - -#endif /* COMMON_CMDS */ - -#if INTERACTIVE - -/*************************************************************** - - FUNCTION: fnc_inkey() - - DESCRIPTION: This C function implements the BASIC INKEY$ - function. It is implementation-specific. - -***************************************************************/ - -extern struct bwb_variable * -fnc_inkey( int argc, struct bwb_variable *argv ) - { - static struct bwb_variable nvar; - char tbuf[ MAXSTRINGSIZE + 1 ]; - static int init = FALSE; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING, "fnc_inkey" ); - } - - /* check arguments */ - -#if PROG_ERRORS - if ( argc > 0 ) - { - sprintf( bwb_ebuf, "Two many arguments to function INKEY$()" ); - bwb_error( bwb_ebuf ); - return &nvar; - } - -#else - if ( fnc_checkargs( argc, argv, 0, 0 ) == FALSE ) - { - return NULL; - } -#endif - - /* body of the INKEY$ function */ - - if ( _bios_keybrd( _KEYBRD_READY ) == 0 ) - { - tbuf[ 0 ] = '\0'; - } - else - { - tbuf[ 0 ] = (char) _bios_keybrd( _KEYBRD_READ ); - tbuf[ 1 ] = '\0'; - } - - /* assign value to nvar variable */ - - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - - /* return value contained in nvar */ - - return &nvar; - - } - -#endif /* INTERACTIVE */ - -#if MS_CMDS - -/*************************************************************** - - FUNCTION: bwb_cls() - - DESCRIPTION: This C function implements the BASIC CLS - command. It is implementation-specific. - -***************************************************************/ - -extern struct bwb_line * -bwb_cls( struct bwb_line *l ) - { - - _clearscreen( _GCLEARSCREEN ); - - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_locate() - - DESCRIPTION: This C function implements the BASIC LOCATE - command. It is implementation-specific. - -***************************************************************/ - -extern struct bwb_line * -bwb_locate( struct bwb_line *l ) - { - struct exp_ese *e; - int row, column; - - /* get first argument */ - - e = bwb_exp( l->buffer, FALSE, &( l->position )); - row = (int) exp_getnval( e ); - - /* advance past comma */ - - adv_ws( l->buffer, &( l->position )); - if ( l->buffer[ l->position ] != ',' ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } - ++( l->position ); - - /* get second argument */ - - e = bwb_exp( l->buffer, FALSE, &( l->position )); - column = (int) exp_getnval( e ); - - /* position the cursor */ - - _settextposition( row, column ); - - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_color() - - DESCRIPTION: This C function implements the BASIC COLOR - command. It is implementation-specific. - -***************************************************************/ - -extern struct bwb_line * -bwb_color( struct bwb_line *l ) - { - struct exp_ese *e; - int color; - - /* get first argument */ - - e = bwb_exp( l->buffer, FALSE, &( l->position )); - color = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Setting text color to %d", color ); - bwb_debug( bwb_ebuf ); -#endif - - _settextcolor( (short) color ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Set text color to %d", color ); - bwb_debug( bwb_ebuf ); -#endif - - /* advance past comma */ - - adv_ws( l->buffer, &( l->position )); - if ( l->buffer[ l->position ] == ',' ) - { - - ++( l->position ); - - /* get second argument */ - - e = bwb_exp( l->buffer, FALSE, &( l->position )); - color = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Setting background color to %d", color ); - bwb_debug( bwb_ebuf ); -#endif - - /* set the background color */ - - _setbkcolor( (long) color ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Setting background color to %d\n", color ); - bwb_debug( bwb_ebuf ); -#endif - - } - - return bwb_zline( l ); - } - -#endif /* MS_CMDS */ - diff --git a/bwx_iqc.h b/bwx_iqc.h deleted file mode 100644 index d888420..0000000 --- a/bwx_iqc.h +++ /dev/null @@ -1,39 +0,0 @@ -/*************************************************************** - - bwx_iqc.h Header File for IBM PC and Compatible - Implementation of bwBASIC - Using Microsoft QuickC (tm) Compiler - - Copyright (c) 1993, Ted A. Campbell - Bywater Software - - email: tcamp@delphi.com - - Copyright and Permissions Information: - - All U.S. and international rights are claimed by the author, - Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -***************************************************************/ - -#define IMP_IDSTRING "IQC" /* unique ID string for this implementation */ - -/* Definitions indicating which commands and functions are implemented */ - -#define IMP_FNCINKEY 1 /* 0 if INKEY$ is not implemented, 1 if it is */ -#define IMP_CMDCLS 1 /* 0 if CLS is not implemented, 1 if it is */ -#define IMP_CMDLOC 1 /* 0 if LOCATE is not implemented, 1 if it is */ -#define IMP_CMDCOLOR 1 /* 0 if COLOR is not implemented, 1 if it is */ - -#define UNIX_CMDS TRUE -#define MKDIR_ONE_ARG TRUE /* TRUE if your mkdir has but one argument; - FALSE if it has two */ -#define PERMISSIONS 493 /* permissions to set in Unix-type system */ diff --git a/bwx_ncu.c b/bwx_ncu.c deleted file mode 100644 index 45bda3b..0000000 --- a/bwx_ncu.c +++ /dev/null @@ -1,816 +0,0 @@ -/*************************************************************** - - bwx_ncu.c Environment-dependent implementation - of Bywater BASIC Interpreter - for Linux (and others?) using Ncurses - library, - - This BWBASIC file hacked together by L.C. Benschop, - Eindhoven, The Netherlands. 1997/01/14 and - 1997/01/15 derived from the iqc version. - (benschop@eb.ele.tue.nl) - - All the shell commands (like FILES) interact badly - with curses. I should replace them with popen/addch - - Copyright (c) 1993, Ted A. Campbell - Bywater Software - - email: tcamp@delphi.com - - Copyright and Permissions Information: - - All U.S. and international rights are claimed by the author, - Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -***************************************************************/ - -/*---------------------------------------------------------------*/ -/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ -/* 11/1995 (eidetics@cerf.net). */ -/* */ -/* Those additionally marked with "DD" were at the suggestion of */ -/* Dale DePriest (daled@cadence.com). */ -/*---------------------------------------------------------------*/ - -#include -#include -#include /* Should be the ncurses version */ -#include -#include -#undef TRUE -#undef FALSE - -/* So curses TRUE and FALSE conflict with the ones defined by bwbasic. - Doesn't this suck big time? - */ - -#include "bwbasic.h" -#include "bwb_mes.h" - -extern int prn_col; -extern jmp_buf mark; -short oldfgd; -long oldbgd; -int reset_mode = FALSE; - -static int ncu_setpos( void ); - -/*************************************************************** - - FUNCTION: main() - - DESCRIPTION: As in any C program, main() is the basic - function from which the rest of the - program is called. Some environments, - however, provide their own main() functions - (Microsoft Windows (tm) is an example). - In these cases, the following code will - have to be included in the initialization - function that is called by the environment. - -***************************************************************/ - - -static int col_arr[]={COLOR_BLACK,COLOR_RED,COLOR_GREEN,COLOR_YELLOW, - COLOR_BLUE,COLOR_MAGENTA,COLOR_CYAN,COLOR_WHITE}; - - -int /* Nobody shall declare main() as void!!!!! (L.C. Benschop)*/ -main( int argc, char **argv ) - { - int i,j; - initscr(); - start_color(); - if(has_colors()) { - /* so there are 63 color pairs, from 1 to 63. Just 1 too few for - all the foreground/background combinations. */ - for(i=0;i<8;i++) - for(j=0;j<8;j++) - if(i||j) init_pair(i*8+j,col_arr[i],col_arr[j]); - } - cbreak(); - nonl(); - noecho(); - scrollok(stdscr,1); - bwb_init( argc, argv ); - -#if INTERACTIVE - setjmp( mark ); -#endif - - while( !feof( stdin ) ) /* condition !feof( stdin ) added in v1.11 */ - { - bwb_mainloop(); - } - return (0); - } - -/*************************************************************** - - FUNCTION: bwx_signon() - - DESCRIPTION: - -***************************************************************/ - -int -bwx_signon( void ) - { - - sprintf( bwb_ebuf, "\r%s %s\n", MES_SIGNON, VERSION ); - prn_xprintf( stdout, bwb_ebuf ); - sprintf( bwb_ebuf, "\r%s\n", MES_COPYRIGHT ); - prn_xprintf( stdout, bwb_ebuf ); - sprintf( bwb_ebuf, "\r%s\n", MES_COPYRIGHT_2 ); /* JBV 1/97 */ - prn_xprintf( stdout, bwb_ebuf ); -#if PERMANENT_DEBUG - sprintf( bwb_ebuf, "\r%s\n", "Debugging Mode" ); - prn_xprintf( stdout, bwb_ebuf ); -#else - sprintf( bwb_ebuf, "\r%s\n", MES_LANGUAGE ); - prn_xprintf( stdout, bwb_ebuf ); -#endif - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_message() - - DESCRIPTION: - -***************************************************************/ - -int -bwx_message( char *m ) - { - -#if DEBUG - addstr( "" ); -#endif - - addstr( m ); - refresh(); - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_putc() - - DESCRIPTION: - -***************************************************************/ - -extern int -bwx_putc( char c ) - { - addch(c); - refresh(); - } - -/*************************************************************** - - FUNCTION: bwx_error() - - DESCRIPTION: - -***************************************************************/ - -int -bwx_errmes( char *m ) - { - static char tbuf[ MAXSTRINGSIZE + 1 ]; /* this memory should be - permanent in case of memory - overrun errors */ - - if (( prn_col != 1 ) && ( errfdevice == stderr )) - { - prn_xprintf( errfdevice, "\n" ); - } - if ( CURTASK number == 0 ) - { - sprintf( tbuf, "\n%s: %s\n", ERRD_HEADER, m ); - } - else - { - sprintf( tbuf, "\n%s %d: %s\n", ERROR_HEADER, CURTASK number, m ); - } - -#if INTENSIVE_DEBUG - prn_xprintf( stderr, "" ); -#endif - - prn_xprintf( errfdevice, tbuf ); - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_input() - - DESCRIPTION: (w)get(n)str seems to interact badly with last line - on screen condition and scrolling. - - -***************************************************************/ - -int -bwx_input( char *prompt, char *buffer ) - { - int y,x,my,mx; -#if INTENSIVE_DEBUG - prn_xprintf( stdout, "" ); -#endif - prn_xprintf( stdout, prompt ); - getyx(stdscr,y,x); - echo(); - wgetnstr(stdscr, buffer, MAXREADLINESIZE); - noecho(); - getmaxyx(stdscr,my,mx); - /* printf("%d %d",my,mx);*/ - if(y+1==my)scroll(stdscr); - /* So this is an extreeeeemely ugly kludge to work around some - bug/feature/wart in ncurses FIXME - I should replace it with getch/addch in a loop */ - - /* prn_xprintf( stdout, "\n" );*/ /* let _outtext catch up */ - - * prn_getcol( stdout ) = 1; /* reset column */ - - return TRUE; - - } - -/*************************************************************** - - FUNCTION: bwx_terminate() - - DESCRIPTION: - -***************************************************************/ - -void -bwx_terminate( void ) - { - nodelay(stdscr,FALSE); - echo(); - nl(); - nocbreak(); - endwin(); - exit( 0 ); - } - -/*************************************************************** - - FUNCTION: bwx_shell() - - DESCRIPTION: - -***************************************************************/ - -#if COMMAND_SHELL -extern int -bwx_shell( struct bwb_line *l ) - { - static char *s_buffer; - static int init = FALSE; - static int position; - - /* get memory for temporary buffer if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( s_buffer = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ),"bwx_shell" )) == NULL ) - { - bwb_error( err_getmem ); - return FALSE; - } - } - - /* get the first element and check for a line number */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): line buffer is <%s>.", l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - position = 0; - adv_element( l->buffer, &position, s_buffer ); - if ( is_numconst( s_buffer ) != TRUE ) /* not a line number */ - { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): no line number, command <%s>.", - l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - nl(); - endwin(); /* Added by JBV 10/11/97 */ - if ( system( l->buffer ) == 0 ) - { - refresh(); /* Added by JBV 10/11/97 */ - nonl(); - ncu_setpos(); - return TRUE; - } - else - { - refresh(); /* Added by JBV 10/11/97 */ - nonl(); - ncu_setpos(); - return FALSE; - } - } - - else /* advance past line number */ - { - adv_ws( l->buffer, &position ); /* advance past whitespace */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): line number, command <%s>.", - l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - nl(); - endwin(); /* Added by JBV 10/11/97 */ - if ( system( &( l->buffer[ position ] ) ) == 0 ) - { - refresh(); /* Added by JBV 10/11/97 */ - nonl(); - ncu_setpos(); - return TRUE; - } - else - { - refresh(); /* Added by JBV 10/11/97 */ - nonl(); - ncu_setpos(); - return FALSE; - } - } - } -#endif - -/*************************************************************** - - FUNCTION: ncu_setpos() - - DESCRIPTION: - -***************************************************************/ - -static int -ncu_setpos( void ) - { - int x,y; - getyx(stdscr,y,x); - move(y,x); - /* and move down one position */ - - prn_xprintf( stdout, "\n" ); - - return TRUE; - } - - -#if COMMON_CMDS - -/*************************************************************** - - FUNCTION: bwb_edit() - - DESCRIPTION: - -***************************************************************/ - -struct bwb_line * -bwb_edit( struct bwb_line *l ) - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - char edname[ MAXSTRINGSIZE + 1 ]; - struct bwb_variable *ed; - FILE *loadfile; - - ed = var_find( DEFVNAME_EDITOR ); - str_btoc( edname, var_getsval( ed )); - - sprintf( tbuf, "%s %s", edname, CURTASK progfile ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_edit(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - nl(); - endwin(); /* Added by JBV 10/11/97 */ - system( tbuf ); - - /*-----------------------*/ - /* Added by JBV 10/11/97 */ - /*-----------------------*/ - fprintf( stderr, "Press RETURN when ready..." ); - fgets( tbuf, MAXREADLINESIZE, stdin ); - refresh(); - - nonl(); -#endif - - /* open edited file for read */ - - if ( ( loadfile = fopen( CURTASK progfile, "r" )) == NULL ) - { - sprintf( bwb_ebuf, err_openfile, CURTASK progfile ); - bwb_error( bwb_ebuf ); - - ncu_setpos(); - return bwb_zline( l ); - } - - /* clear current contents */ - - bwb_new( l ); /* Relocated by JBV (bug found by DD) */ - - /* and (re)load the file into memory */ - - bwb_fload( loadfile ); - - - ncu_setpos(); - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_renum() - - DESCRIPTION: This function implements the BASIC RENUM - command by shelling out to a default - renumbering program called "renum". - Added by JBV 10/95 - - SYNTAX: RENUM - -***************************************************************/ - -#if ANSI_C -struct bwb_line * -bwb_renum( struct bwb_line *l ) -#else -struct bwb_line * -bwb_renum( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - FILE *loadfile; - - sprintf( tbuf, "renum %s\0", CURTASK progfile ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_renum(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - nl(); - endwin(); /* Added by JBV 10/11/97 */ - system( tbuf ); - - /*-----------------------*/ - /* Added by JBV 10/11/97 */ - /*-----------------------*/ - fprintf( stderr, "Press RETURN when ready..." ); - fgets( tbuf, MAXREADLINESIZE, stdin ); - refresh(); - - nonl(); -#endif - - /* open edited file for read */ - - if ( ( loadfile = fopen( CURTASK progfile, "r" )) == NULL ) - { - sprintf( bwb_ebuf, err_openfile, CURTASK progfile ); - bwb_error( bwb_ebuf ); - - ncu_setpos(); - return bwb_zline( l ); - } - - /* clear current contents */ - - bwb_new( l ); /* Relocated by JBV (bug found by DD) */ - - /* and (re)load the file into memory */ - - bwb_fload( loadfile ); - - - ncu_setpos(); - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_files() - - DESCRIPTION: - -***************************************************************/ - -struct bwb_line * -bwb_files( struct bwb_line *l ) - { - char tbuf[ MAXVARNAMESIZE + 1 ]; - char finame[ MAXVARNAMESIZE + 1 ]; - char argument[ MAXVARNAMESIZE + 1 ]; - struct bwb_variable *fi; - struct exp_ese *e; - - fi = var_find( DEFVNAME_FILES ); - str_btoc( finame, var_getsval( fi )); - - /* get argument */ - - adv_ws( l->buffer, &( l->position )); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\r': - case '\n': - argument[ 0 ] = '\0'; - break; - default: - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - if ( e->type != STRING ) - { - bwb_error( err_mismatch ); - return bwb_zline( l ); - } - str_btoc( argument, exp_getsval( e ) ); - break; - } - - - sprintf( tbuf, "%s %s", finame, argument ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_files(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - nl(); - endwin(); /* Added by JBV 10/11/97 */ - system( tbuf ); - - /*-----------------------*/ - /* Added by JBV 10/11/97 */ - /*-----------------------*/ - fprintf( stderr, "Press RETURN when ready..." ); - fgets( tbuf, MAXREADLINESIZE, stdin ); - refresh(); - - nonl(); -#endif - - ncu_setpos(); - return bwb_zline( l ); - - } - -#endif /* COMMON_CMDS */ - -#if INTERACTIVE - -/*************************************************************** - - FUNCTION: fnc_inkey() - - DESCRIPTION: This C function implements the BASIC INKEY$ - function. It is implementation-specific. - -***************************************************************/ - -extern struct bwb_variable * -fnc_inkey( int argc, struct bwb_variable *argv,int unique) - { - static struct bwb_variable nvar; - char tbuf[ MAXSTRINGSIZE + 1 ]; - static int init = FALSE; - int c; - - /* initialize the variable if necessary */ - - if ( init == FALSE ) - { - init = TRUE; - var_make( &nvar, STRING); - } - - /* check arguments */ - -#if PROG_ERRORS - if ( argc > 0 ) - { - sprintf( bwb_ebuf, "Two many arguments to function INKEY$()" ); - bwb_error( bwb_ebuf ); - return &nvar; - } - -#else - if ( fnc_checkargs( argc, argv, 0, 0 ) == FALSE ) - { - return NULL; - } -#endif - - /* body of the INKEY$ function */ - - nodelay(stdscr,1); - if ( (c=getch())==EOF ) - { - tbuf[ 0 ] = '\0'; - } - else - { - tbuf[ 0 ] = (char) c; - tbuf[ 1 ] = '\0'; - } - nodelay(stdscr,0); - /* assign value to nvar variable */ - - str_ctob( var_findsval( &nvar, nvar.array_pos ), tbuf ); - - /* return value contained in nvar */ - - return &nvar; - - } - -#endif /* INTERACTIVE */ - -#if MS_CMDS - -/*************************************************************** - - FUNCTION: bwb_cls() - - DESCRIPTION: This C function implements the BASIC CLS - command. It is implementation-specific. - -***************************************************************/ - -extern struct bwb_line * -bwb_cls( struct bwb_line *l ) - { - - clear(); - refresh(); - - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_locate() - - DESCRIPTION: This C function implements the BASIC LOCATE - command. It is implementation-specific. - -***************************************************************/ - -extern struct bwb_line * -bwb_locate( struct bwb_line *l ) - { - struct exp_ese *e; - int row, column; - - /* get first argument */ - - e = bwb_exp( l->buffer, FALSE, &( l->position )); - row = (int) exp_getnval( e ); - - /* advance past comma */ - - adv_ws( l->buffer, &( l->position )); - if ( l->buffer[ l->position ] != ',' ) - { - bwb_error( err_syntax ); - return bwb_zline( l ); - } - ++( l->position ); - - /* get second argument */ - - e = bwb_exp( l->buffer, FALSE, &( l->position )); - column = (int) exp_getnval( e ); - - /* position the cursor */ - - move( row-1, column-1 ); - - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_color() - - DESCRIPTION: This C function implements the BASIC COLOR - command. It is implementation-specific. - -***************************************************************/ - - -extern struct bwb_line * -bwb_color( struct bwb_line *l ) - { - struct exp_ese *e; - int fgcolor,bgcolor; - - /* get first argument */ - - e = bwb_exp( l->buffer, FALSE, &( l->position )); - fgcolor = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Setting text color to %d", fgcolor ); - bwb_debug( bwb_ebuf ); -#endif - - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Set text color to %d", fgcolor ); - bwb_debug( bwb_ebuf ); -#endif - - /* advance past comma */ - - adv_ws( l->buffer, &( l->position )); - if ( l->buffer[ l->position ] == ',' ) - { - - ++( l->position ); - - /* get second argument */ - - e = bwb_exp( l->buffer, FALSE, &( l->position )); - bgcolor = (int) exp_getnval( e ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Setting background color to %d", bgcolor ); - bwb_debug( bwb_ebuf ); -#endif - - /* set the foreground and background color */ - if (has_colors()) { - attrset(A_NORMAL); - bkgdset(COLOR_PAIR((bgcolor&7))|' '); - if((fgcolor&7)==0 && (bgcolor&7)==0){ - /* we didn't reserve a color pair for fg and bg both black. - Bright black(color 8)==dark gray as foreground color A_DIM - A_INVIS doesn't seem to work. wait for next version of - ncurses, don't bother for now.*/ - if(fgcolor<8) attrset(A_INVIS); else attrset(A_DIM); - } else - attrset(COLOR_PAIR((8*(fgcolor&7)+(bgcolor&7))) | - ((fgcolor>7)*A_BOLD)); - /* fg colors 8--15 == extra brightness */ - } else { /* no colors, have a go at it with reverse/bold/dim */ - attrset(A_NORMAL); - bkgdset(A_REVERSE*((fgcolor&7)<(bgcolor&7))|' '); - attrset(A_BOLD*(fgcolor>8)| - A_REVERSE*((fgcolor&7)<(bgcolor&7))|A_INVIS*(fgcolor==bgcolor)); - } - - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "Setting background color to %d\n", bgcolor ); - bwb_debug( bwb_ebuf ); -#endif - - } - - return bwb_zline( l ); - } -#endif /* MS_CMDS */ - - - - - - diff --git a/bwx_ncu.h b/bwx_ncu.h deleted file mode 100644 index 58b6453..0000000 --- a/bwx_ncu.h +++ /dev/null @@ -1,42 +0,0 @@ -/*************************************************************** - - bwx_ncu.h Header File for Linux (and others?) using Ncurses - library, - - This BWBASIC file hacked together by L.C. Benschop, - Eindhoven, The Netherlands. - (benschop@eb.ele.tue.nl) - - Copyright (c) 1993, Ted A. Campbell - Bywater Software - - email: tcamp@delphi.com - - Copyright and Permissions Information: - - All U.S. and international rights are claimed by the author, - Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -***************************************************************/ - -#define IMP_IDSTRING "NCU" /* unique ID string for this implementation */ - -/* Definitions indicating which commands and functions are implemented */ - -#define IMP_FNCINKEY 1 /* 0 if INKEY$ is not implemented, 1 if it is */ -#define IMP_CMDCLS 1 /* 0 if CLS is not implemented, 1 if it is */ -#define IMP_CMDLOC 1 /* 0 if LOCATE is not implemented, 1 if it is */ -#define IMP_CMDCOLOR 1 /* 0 if COLOR is not implemented, 1 if it is */ - -#define UNIX_CMDS TRUE -#define MKDIR_ONE_ARG FALSE /* TRUE if your mkdir has but one argument; - FALSE if it has two */ -#define PERMISSIONS 644 /* permissions to set in Unix-type system */ diff --git a/bwx_tty.c b/bwx_tty.c index 4483738..20d0e54 100644 --- a/bwx_tty.c +++ b/bwx_tty.c @@ -1,31 +1,26 @@ /*************************************************************** - - bwx_tty.c Environment-dependent implementation + + bwx_tty.c TTY front-end for Bywater BASIC Interpreter - using simple TTY-style input/output - - This file should be used as a template - for developing more sophisticated - environment-dependent implementations - + Copyright (c) 1993, Ted A. Campbell - Bywater Software - + Bywater Software + email: tcamp@delphi.com - + Copyright and Permissions Information: - + All U.S. and international rights are claimed by the author, Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - + + This software is released under the terms of the GNU General + Public License (GPL), which is distributed with this software + in the file "COPYING". The GPL specifies the terms under + which users may copy and use the software in this distribution. + + A separate license is available for commercial distribution, + for information on which you should contact the author. + ***************************************************************/ /*---------------------------------------------------------------*/ @@ -34,563 +29,438 @@ /* */ /* Those additionally marked with "DD" were at the suggestion of */ /* Dale DePriest (daled@cadence.com). */ +/* */ +/* Version 3.00 by Howard Wulf, AF5NE */ +/* */ /*---------------------------------------------------------------*/ -#include -#include "bwbasic.h" -#include "bwb_mes.h" -#if HAVE_LONGJUMP /* Revised by JBV (bug found by DD) */ -#include -#endif - -extern int prn_col; -#if HAVE_LONGJUMP /* Revised by JBV (bug found by DD) */ -extern jmp_buf mark; -#endif -/*************************************************************** +#include "bwbasic.h" - FUNCTION: main() - DESCRIPTION: As in any C program, main() is the basic - function from which the rest of the - program is called. Some environments, - however, provide their own main() functions - (Microsoft Windows (tm) is an example). - In these cases, the following code will - have to be included in the initialization - function that is called by the environment. -***************************************************************/ -#if ANSI_C -int -main( int argc, char **argv ) -#else -main( argc, argv ) - int argc; - char **argv; +#if REDIRECT_STDERR +static FILE *newerr; #endif - { - bwb_init( argc, argv ); -#if HAVE_LONGJUMP /* Revised by JBV (bug found by DD) */ -#if INTERACTIVE - setjmp( mark ); -#endif -#endif - /* main program loop */ +static int program_run = 0;/* has the command-line program been run? */ +jmp_buf mark; - while( !feof( stdin ) ) /* condition !feof( stdin ) added in v1.11 */ - { - bwb_mainloop(); - } - - bwx_terminate(); /* allow ^D (Unix) exit with grace */ - return (0); +static +void +strupper(char *C) +{ + if (C == NULL) + { + return; } - -/*************************************************************** - - FUNCTION: bwx_signon() - - DESCRIPTION: This function prints out the sign-on - message for bwBASIC. - -***************************************************************/ - -#if ANSI_C -int -bwx_signon( void ) -#else -int -bwx_signon() -#endif + while (*C) { + *C = ToUpper(*C); + C++; + } +} - sprintf( bwb_ebuf, "\r%s %s\n", MES_SIGNON, VERSION ); - prn_xprintf( stdout, bwb_ebuf ); - sprintf( bwb_ebuf, "\r%s\n", MES_COPYRIGHT ); - prn_xprintf( stdout, bwb_ebuf ); - sprintf( bwb_ebuf, "\r%s\n", MES_COPYRIGHT_2 ); /* JBV 1/97 */ - prn_xprintf( stdout, bwb_ebuf ); -#if PERMANENT_DEBUG - sprintf( bwb_ebuf, "\r%s\n", "Debugging Mode" ); - prn_xprintf( stdout, bwb_ebuf ); -#else - sprintf( bwb_ebuf, "\r%s\n", MES_LANGUAGE ); - prn_xprintf( stdout, bwb_ebuf ); -#endif - - return TRUE; - +static +void +strlower(char *C) +{ + if (C == NULL) + { + return; } + while (*C) + { + *C = ToLower(*C); + C++; + } +} /*************************************************************** - - FUNCTION: bwx_message() - - DESCRIPTION: This function outputs a message to the - default output device. - + + FUNCTION: main() + + DESCRIPTION: As in any C program, main() is the basic + function from which the rest of the + program is called. Some environments, + however, provide their own main() functions + (Microsoft Windows (tm) is an example). + In these cases, the following code will + have to be included in the initialization + function that is called by the environment. + ***************************************************************/ -#if ANSI_C -int -bwx_message( char *m ) -#else + int -bwx_message( m ) - char *m; +main(int argc, char **argv) +{ +#if PROFILE + struct bwb_variable *v; + FILE *profile; #endif - { -#if INTENSIVE_DEBUG - fprintf( stderr, "" ); -#endif - prn_xprintf( stdout, m ); + bwx_DEBUG(__FUNCTION__); - return TRUE; + /* Redirect stderr if specified */ +#if REDIRECT_STDERR + newerr = freopen(ERRFILE, "w", stderr); + if (newerr == NULL) + { + sprintf(bwb_ebuf, "Failed to redirect error messages to file <%s>\n", + ERRFILE); + errfdevice = stdout; + prn_xprintf(bwb_ebuf); + } + else + { + sprintf(bwb_ebuf, "NOTE: Error messages are redirected to file <%s>\n", + ERRFILE); + prn_xprintf(bwb_ebuf); + errfdevice = stderr; } - -/*************************************************************** - - FUNCTION: bwx_putc() - - DESCRIPTION: This function outputs a single character - to the default output device. - -***************************************************************/ - -#if ANSI_C -int -bwx_putc( char c ) #else -int -bwx_putc( c ) - char c; + errfdevice = stdout; #endif - { - return fputc( c, stdout ); - } -/*************************************************************** - FUNCTION: bwx_error() + bwb_init(argc, argv); - DESCRIPTION: This function outputs a message to the - default error-message device. -***************************************************************/ - -#if ANSI_C -int -bwx_errmes( char *m ) -#else -int -bwx_errmes( m ) - char *m; -#endif + if (err_number < 0 /* bwb_init() failed */ ) { - static char tbuf[ MAXSTRINGSIZE + 1 ]; /* this memory should be - permanent in case of memory - overrun errors */ - - if (( prn_col != 1 ) && ( errfdevice == stderr )) - { - prn_xprintf( errfdevice, "\n" ); - } - if ( CURTASK number == 0 ) + /* FATAL */ + return 1; + } + /* Signon message banner */ + if (argc < 2) + { + if (IsInteractive) { - sprintf( tbuf, "\n%s: %s\n", ERRD_HEADER, m ); + bwx_signon(); } - else + else { - sprintf( tbuf, "\n%s %d: %s\n", ERROR_HEADER, CURTASK number, m ); + /* if INTERACTIVE is FALSE, then we must have a + * program file */ + puts(err_noprogfile); + return 1; } - -#if INTENSIVE_DEBUG - fprintf( stderr, "" ); -#endif - - prn_xprintf( errfdevice, tbuf ); - - return TRUE; - } -/*************************************************************** - FUNCTION: bwx_input() + /* initialize preset variables */ - DESCRIPTION: This function outputs the string pointed - to by 'prompt', then inputs a character - string. + ed = var_find(DEFVNAME_EDITOR); + ed->preset = TRUE; + ed->common = TRUE; + str_ctob(var_findsval(ed, ed->array_pos), DEF_EDITOR); -***************************************************************/ + fi = var_find(DEFVNAME_FILES); + fi->preset = TRUE; + fi->common = TRUE; + str_ctob(var_findsval(fi, fi->array_pos), DEF_FILES); -#if ANSI_C -int -bwx_input( char *prompt, char *buffer ) -#else -int -bwx_input( prompt, buffer ) - char *prompt; - char *buffer; -#endif - { + pr = var_find(DEFVNAME_PROMPT); + pr->preset = TRUE; + pr->common = TRUE; + str_ctob(var_findsval(pr, pr->array_pos), PROMPT); -#if INTENSIVE_DEBUG - fprintf( stderr, "" ); -#endif + im = var_find(DEFVNAME_IMPL); + im->preset = TRUE; + im->common = TRUE; + str_ctob(var_findsval(im, im->array_pos), IMP_IDSTRING); - prn_xprintf( stdout, prompt ); + co = var_find(DEFVNAME_COLORS); + co->preset = TRUE; + co->common = TRUE; + *var_findnval(co, co->array_pos) = DEF_COLORS; - fflush( stdout ); - fgets( buffer, MAXREADLINESIZE, stdin ); - * prn_getcol( stdout ) = 1; /* reset column */ - - return TRUE; + /* if there is a profile.bas, execute it */ +#if PROFILE + /* AS-IS */ + if (IsInteractive) + { + program_run = 0; + signal(SIGINT, break_mes); + setjmp(mark); + if (program_run > 0) + { + /* error in profile */ + return 1; + } + program_run++; } + profile = fopen(PROFILENAME, "r"); + if (profile != NULL) + { + /* FOUND */ + bwb_fload(profile); /* load profile */ + if (err_number < 0 /* file load failed */ ) + { + /* the file load has failed, so do NOT run the + * program */ + return 1; + } + bwb_RUN(&CURTASK bwb_start); /* run profile */ -/*************************************************************** + /* profile must be run immediately, not by scheduler */ - FUNCTION: bwx_terminate() + while (CURTASK exsc > -1) + { + bwb_execline(); + } - DESCRIPTION: This function terminates program execution. + /* mark all profiled variables as preset */ -***************************************************************/ + for (v = CURTASK var_start.next; v != &CURTASK var_end; v = v->next) + { + v->preset = TRUE; + } -#if ANSI_C -void -bwx_terminate( void ) -#else -void -bwx_terminate() -#endif - { - exit( 0 ); + bwb_NEW(&CURTASK bwb_start); /* remove profile from memory */ } +#endif -/*************************************************************** - - FUNCTION: bwx_shell() - - DESCRIPTION: This function runs a shell program. - -***************************************************************/ -#if COMMAND_SHELL + /* set a buffer for jump: program execution returns to this point in + * case of a jump (error, interrupt, or finish program) */ -#if ANSI_C -extern int -bwx_shell( struct bwb_line *l ) -#else -extern int -bwx_shell( l ) - struct bwb_line *l; -#endif + if (IsInteractive) { - static char *s_buffer; - static int init = FALSE; - static int position; - - /* get memory for temporary buffer if necessary */ - - if ( init == FALSE ) + program_run = 0; + signal(SIGINT, break_mes); + setjmp(mark); + if (program_run > 0) { - init = TRUE; - - /* Revised to CALLOC pass-thru call by JBV */ - if ( ( s_buffer = CALLOC( MAXSTRINGSIZE + 1, sizeof( char ), "bwx_shell" )) == NULL ) - { - bwb_error( err_getmem ); - return FALSE; - } + /* error in command line file */ + return 1; } + program_run++; + } + /* check to see if there is a program file: but do this only the + * first time around! */ + IsCommandLineFile = FALSE; +#if AUTOMATED_REGRESSION + /* for automated testing */ + ExternalInputFile = NULL; +#endif /* AUTOMATED_REGRESSION */ - /* get the first element and check for a line number */ -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): line buffer is <%s>.", l->buffer ); - bwb_debug( bwb_ebuf ); -#endif + if (argc > 1) + { + FILE *input = NULL; - position = 0; - adv_element( l->buffer, &position, s_buffer ); - if ( is_numconst( s_buffer ) != TRUE ) /* not a line number */ + input = NULL; + if (input == NULL) { - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): no line number, command <%s>.", - l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - if ( system( l->buffer ) == 0 ) - { - return TRUE; - } - else - { - return FALSE; - } + /* AS-IS */ + strcpy(CURTASK progfile, argv[1]); + input = fopen(CURTASK progfile, "r"); } - - else /* advance past line number */ + if (input == NULL) { - adv_ws( l->buffer, &position ); /* advance past whitespace */ - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwx_shell(): line number, command <%s>.", - l->buffer ); - bwb_debug( bwb_ebuf ); -#endif - - if ( system( &( l->buffer[ position ] ) ) == 0 ) - { - return TRUE; - } - else - { - return FALSE; - } + /* UPPERCASE */ + strcpy(CURTASK progfile, argv[1]); + strupper(CURTASK progfile); + input = fopen(CURTASK progfile, "r"); + } + if (input == NULL) + { + /* LOWERCASE */ + strcpy(CURTASK progfile, argv[1]); + strlower(CURTASK progfile); + input = fopen(CURTASK progfile, "r"); + } + if (input == NULL) + { + /* UPPERCASE + EXTENSION */ + strcpy(CURTASK progfile, argv[1]); + strcat(CURTASK progfile, ".BAS"); + strupper(CURTASK progfile); + input = fopen(CURTASK progfile, "r"); + } + if (input == NULL) + { + /* LOWERCASE + EXTENSION */ + strcpy(CURTASK progfile, argv[1]); + strcat(CURTASK progfile, ".bas"); + strlower(CURTASK progfile); + input = fopen(CURTASK progfile, "r"); + } + if (input == NULL) + { + /* NOT FOUND */ + CURTASK progfile[0] = 0; + sprintf(bwb_ebuf, err_openfile, argv[1]); + bwb_error(bwb_ebuf); + /* the file load has failed, so do NOT run the + * program */ + return 1; + } + if (input != NULL) + { + /* FOUND */ +#if AUTOMATED_REGRESSION + /* for automated testing */ + char ExternalInputFileName[FILENAME_MAX + 1]; + strcpy(ExternalInputFileName, argv[1]); + strcat(ExternalInputFileName, ".INP"); + ExternalInputFile = fopen(ExternalInputFileName, "r"); +#endif /* AUTOMATED_REGRESSION */ + + + IsCommandLineFile = TRUE; + bwb_fload(input); + if (err_number < 0 /* file load failed */ ) + { + /* the file load has failed, so do NOT run + * the program */ + return 1; + } + bwb_RUN(&CURTASK bwb_start); } } -#endif + if (IsInteractive) + { + program_run = 0; + signal(SIGINT, break_mes); + setjmp(mark); + if (program_run > 0) + { + /* error in console mode */ + } + program_run++; + } + /* main program loop */ -/*************************************************************** + while (!feof(stdin)) /* condition !feof( stdin ) added in v1.11 */ + { + bwb_mainloop(); + } - FUNCTION: matherr() + bwx_terminate(); /* allow ^D (Unix) exit with grace */ - DESCRIPTION: This function is called to handle math - errors in Bywater BASIC. It displays - the error message, then calls the - break_handler() routine. - Note that this function isn't supported - by all compilers (it's not part of C90). - If it exists, it's an extension in math.h - and it will be called whenever there's - a divide by zero or something like that. -***************************************************************/ -#if HAVE_MATHERR + return 0; +} -#if ANSI_C -int -matherr( struct exception *except ) -#else -int -matherr( except ) - struct exception *except; -#endif - { - perror( MATHERR_HEADER ); - break_handler(); - return FALSE; - } -#endif -#if COMMON_CMDS /*************************************************************** - - FUNCTION: bwb_edit() - - DESCRIPTION: This function implements the BASIC EDIT - program by shelling out to a default editor - specified by the variable BWB.EDITOR$. - - SYNTAX: EDIT - + + FUNCTION: bwb_edit() + + DESCRIPTION: This function implements the BASIC EDIT + program by shelling out to a default editor + specified by the variable BWB.EDITOR$. + + SYNTAX: EDIT + ***************************************************************/ -#if ANSI_C -struct bwb_line * -bwb_edit( struct bwb_line *l ) -#else struct bwb_line * -bwb_edit( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - char edname[ MAXSTRINGSIZE + 1 ]; - struct bwb_variable *ed; - FILE *loadfile; +bwb_EDIT(struct bwb_line * l) +{ + char tbuf[BasicStringLengthMax + 1]; + FILE *loadfile; + struct bwb_variable *v; - ed = var_find( DEFVNAME_EDITOR ); - str_btoc( edname, var_getsval( ed )); + bwx_DEBUG(__FUNCTION__); - sprintf( tbuf, "%s %s", edname, CURTASK progfile ); + v = var_find(DEFVNAME_EDITOR); + str_btoc(tbuf, var_getsval(v)); + strcat( tbuf, " " ); + strcat( tbuf, CURTASK progfile ); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_edit(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - system( tbuf ); -#endif + system(tbuf); /* open edited file for read */ - if ( ( loadfile = fopen( CURTASK progfile, "r" )) == NULL ) - { - sprintf( bwb_ebuf, err_openfile, CURTASK progfile ); - bwb_error( bwb_ebuf ); - - return bwb_zline( l ); - } + if ((loadfile = fopen(CURTASK progfile, "r")) == NULL) + { + sprintf(bwb_ebuf, err_openfile, CURTASK progfile); + bwb_error(bwb_ebuf); + return bwb_zline(l); + } /* clear current contents */ - bwb_new( l ); /* Relocated by JBV (bug found by DD) */ + bwb_NEW(l); /* Relocated by JBV (bug found by DD) */ /* and (re)load the file into memory */ - bwb_fload( loadfile ); + bwb_fload(loadfile); - return bwb_zline( l ); - } + return bwb_zline(l); +} /*************************************************************** - + FUNCTION: bwb_renum() - - DESCRIPTION: This function implements the BASIC RENUM - command by shelling out to a default - renumbering program called "renum". - Added by JBV 10/95 - - SYNTAX: RENUM - + + DESCRIPTION: This function implements the BASIC RENUM + command by shelling out to a default + renumbering program called "renum". + Added by JBV 10/95 + + SYNTAX: RENUM + ***************************************************************/ -#if ANSI_C struct bwb_line * -bwb_renum( struct bwb_line *l ) -#else -struct bwb_line * -bwb_renum( l ) - struct bwb_line *l; -#endif - { - char tbuf[ MAXSTRINGSIZE + 1 ]; - FILE *loadfile; - - sprintf( tbuf, "renum %s\0", CURTASK progfile ); - -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_renum(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - system( tbuf ); -#endif - - /* open edited file for read */ +bwb_RENUM(struct bwb_line * l) +{ + char tbuf[BasicStringLengthMax + 1]; + FILE *loadfile; - if ( ( loadfile = fopen( CURTASK progfile, "r" )) == NULL ) - { - sprintf( bwb_ebuf, err_openfile, CURTASK progfile ); - bwb_error( bwb_ebuf ); - - return bwb_zline( l ); - } - - /* clear current contents */ - - bwb_new( l ); /* Relocated by JBV (bug found by DD) */ - - /* and (re)load the file into memory */ - - bwb_fload( loadfile ); - - - return bwb_zline( l ); - } - -/*************************************************************** - - FUNCTION: bwb_files() + bwx_DEBUG(__FUNCTION__); - DESCRIPTION: This function implements the BASIC FILES - command, in this case by shelling out to - a directory listing program or command - specified in the variable BWB.FILES$. + sprintf(tbuf, "renum %s", CURTASK progfile); - SYNTAX: FILES filespec$ + system(tbuf); -***************************************************************/ + /* open edited file for read */ -#if ANSI_C -struct bwb_line * -bwb_files( struct bwb_line *l ) -#else -struct bwb_line * -bwb_files( l ) - struct bwb_line *l; -#endif + if ((loadfile = fopen(CURTASK progfile, "r")) == NULL) { - char tbuf[ MAXVARNAMESIZE + 1 ]; - char finame[ MAXVARNAMESIZE + 1 ]; - char argument[ MAXVARNAMESIZE + 1 ]; - struct bwb_variable *fi; - struct exp_ese *e; + sprintf(bwb_ebuf, err_openfile, CURTASK progfile); + bwb_error(bwb_ebuf); - fi = var_find( DEFVNAME_FILES ); - str_btoc( finame, var_getsval( fi )); + return bwb_zline(l); + } + /* clear current contents */ - /* get argument */ - adv_ws( l->buffer, &( l->position )); - switch( l->buffer[ l->position ] ) - { - case '\0': - case '\r': - case '\n': - argument[ 0 ] = '\0'; - break; - default: - e = bwb_exp( l->buffer, FALSE, &( l->position ) ); - if ( e->type != STRING ) - { - bwb_error( err_mismatch ); - return bwb_zline( l ); - } - str_btoc( argument, exp_getsval( e ) ); - break; - } + bwb_NEW(l); /* Relocated by JBV (bug found by DD) */ + /* and (re)load the file into memory */ - sprintf( tbuf, "%s %s", finame, argument ); + bwb_fload(loadfile); -#if INTENSIVE_DEBUG - sprintf( bwb_ebuf, "in bwb_files(): command line <%s>", tbuf ); - bwb_debug( bwb_ebuf ); -#else - system( tbuf ); -#endif - return bwb_zline( l ); + return bwb_zline(l); +} - } -#endif /* COMMON_CMDS */ +/* EOF */ diff --git a/bwx_tty.h b/bwx_tty.h deleted file mode 100644 index 02c8e50..0000000 --- a/bwx_tty.h +++ /dev/null @@ -1,47 +0,0 @@ -/*************************************************************** - - bwx_tty.h Header file for TTY-style hardware - implementation of bwBASIC - - This file may be used as a template - for developing more sophisticated - hardware implementations - - Copyright (c) 1993, Ted A. Campbell - Bywater Software - - email: tcamp@delphi.com - - Copyright and Permissions Information: - - All U.S. and international rights are claimed by the author, - Ted A. Campbell. - - This software is released under the terms of the GNU General - Public License (GPL), which is distributed with this software - in the file "COPYING". The GPL specifies the terms under - which users may copy and use the software in this distribution. - - A separate license is available for commercial distribution, - for information on which you should contact the author. - -***************************************************************/ - -/*---------------------------------------------------------------*/ -/* NOTE: Modifications marked "JBV" were made by Jon B. Volkoff, */ -/* 11/1995 (eidetics@cerf.net). */ -/*---------------------------------------------------------------*/ - -#define IMP_IDSTRING "TTY" /* unique ID string for this implementation */ - -/* Definitions indicating which commands and functions are implemented */ - -#define IMP_FNCINKEY 0 /* 0 if INKEY$ is not implemented, 1 if it is */ -#define IMP_CMDCLS 0 /* 0 if CLS is not implemented, 1 if it is */ -#define IMP_CMDLOC 0 /* 0 if LOCATE is not implemented, 1 if it is */ -#define IMP_CMDCOLOR 0 /* 0 if COLOR is not implemented, 1 if it is */ - -#define UNIX_CMDS TRUE /* It better be for UNIX systems (JBV) */ -#define MKDIR_ONE_ARG FALSE /* TRUE if your mkdir has but one argument; - FALSE if it has two */ -#define PERMISSIONS 644 /* permissions to set in Unix-type system */ diff --git a/cmds.htm b/cmds.htm new file mode 100644 index 0000000..7df3f6c --- /dev/null +++ b/cmds.htm @@ -0,0 +1,169 @@ +

LEGEND


+ + + + + + + + + + + + + + + + + + +
IDNAMEDESCRIPTION
B14BYWATERBywater BASIC
D64DARTMOUTHDartmouth BASIC
E78ECMA-55ECMA-55
M80BASIC-80Microsoft BASIC-80
T83TRS-83TRS-80 Model III
T84TRS-84TRS-80 Model 4
M85GW-BASICMicrosoft GW-BASIC
E86ECMA-116ECMA-116
M88QBASICMicrosoft QBASIC
M90VBDOSMicrosoft VBDOS
M91VB1Microsoft VB1
M92VB2Microsoft VB2
M93VB3Microsoft VB3
M95VB4Microsoft VB4
M97VB5Microsoft VB5
M98VB6Microsoft VB6
+
+

DETAILS


+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
COMMANDB14D64E78M80T83T84M85E86M88M90M91M92M93M95M97M98
?X XXXX XXXXXXXX
CALLX XXXXXXXX
CASEX XXXXXXXXX
CASE ELSEX XXXXXXXXX
CASE IFX XXXXXXXXX
CASE ISX X
CHAINX XXXX XXXXXXXX
CHANGEXX
CLEARX XXXX XXXXXXXX
CLOADX XXXX
CLOAD*X XXXX
CMDSX
COMMONX XXXXXXXXXXXXX
CONTX XXXX XXXXXXXX
CSAVEX XXXX
CSAVE*X XXXX
DATAXXXXXXXXXXXXXXXX
DEFXXXXXXXXXXXXXXXX
DEF SUBXXXXXXXXXXXXXXXX
DEFDBLX XXXX XXXXXXXX
DEFINTX XXXX XXXXXXXX
DEFSNGX XXXX XXXXXXXX
DEFSTRX XXXX XXXXXXXX
DELETEX XXXX XXXXXXXX
DIMXXXXXXXXXXXXXXXX
DOX XXXXXXXXX
DO UNTILX XXXXXXXXX
DO WHILEX XXXXXXXXX
EDITX XXXX XXXXXXXX
ELSEX XXXXXXXXX
ELSEIFX XXXXXXXXX
ENDXXXXXXXXXXXXXXXX
END FUNCTIONX XXXXXXXXX
END IFX XXXXXXXXX
END SELECTX XXXXXXXXX
END SUBX XXXXXXXXX
ERASEX XXXX XXXXXXXX
EXITX XXXXXXXXX
EXIT DOX XXXXXXXXX
EXIT FORX XXXXXXXXX
EXIT FUNCTIONX XXXXXXXXX
EXIT SUBX XXXXXXXXX
EXIT UNTILX X
EXIT WHILEX X
FIELDX XXXX XXXXXXXX
FNCSX
FORXXXXXXXXXXXXXXXX
FUNCTIONX XXXXXXXXX
GOXXXXXXXXXXXXXXXX
GOSUBXXXXXXXXXXXXXXXX
GOTOXXXXXXXXXXXXXXXX
HELPX
IFXXXXXXXXXXXXXXXX
IF THENX XXXXXXXXX
INPUTXXXXXXXXXXXXXXXX
LETXXXXXXXXXXXXXXXX
LINEX XXXX XXXXXXXX
LISTX XXXX XXXXXXXX
LOADX XXXX XXXXXXXX
LOOPX XXXXXXXXX
LOOP UNTILX XXXXXXXXX
LOOP WHILEX XXXXXXXXX
LPRINTX XXXXXXXXXXXXXX
LSETX XXXXXXXXXXXXXX
MAINTAINERX
MERGEX XXXX XXXXXXXX
MID$X XXXX XXXXXXXX
NAMEX XXXX XXXXXXXX
NEWX XXXX XXXXXXXX
NEXTXXXXXXXXXXXXXXXX
ONXXXXXXXXXXXXXXXX
ON ERROR GOSUBX
ON ERROR GOTOX XXXX XXXXXXXX
ON ERROR RESUME NEXTX XXXX XXXXXXXX
ON ERROR RETURN NEXTX
ON TIMERX XXXXXXXX
OPENX XXXX XXXXXXXX
OPTIONXXXXXXXXXXXXXXXX
OPTION ANGLE DEGREESX X
OPTION ANGLE RADIANSX X
OPTION ARITHMETIC DECIMALX X
OPTION ARITHMETIC FIXEDX X
OPTION ARITHMETIC NATIVEX X
OPTION BASE 0XXXXXXXXXXXXXXXX
OPTION BASE 1XXXXXXXXXXXXXXXX
OPTION BUGS OFFX
OPTION BUGS ONX
OPTION COMMENTX
OPTION COMPARE BINARYX
OPTION COMPARE DATABASEX
OPTION COMPARE TEXTX
OPTION COVERAGE OFFX
OPTION COVERAGE ONX
OPTION DATEX
OPTION DISABLE COMMANDX
OPTION DISABLE FUNCTIONX
OPTION DISABLE OPERATORX
OPTION ENABLE COMMANDX
OPTION ENABLE FUNCTIONX
OPTION ENABLE OPERATORX
OPTION ERROR GOSUBX
OPTION ERROR GOTOX
OPTION INDENTX
OPTION LABELS OFFX
OPTION LABELS ONX
OPTION STATEMENTX
OPTION STRICT OFFX
OPTION STRICT ONX
OPTION TERMINAL ADM-3AX
OPTION TERMINAL ANSIX
OPTION TERMINAL NONEX
OPTION TIMEX
OPTION TRACE OFFX
OPTION TRACE ONX
OPTION VERSIONXXXXXXXXXXXXXXXX
PRINTXXXXXXXXXXXXXXXX
QUITXXX X
READXXXXXXXXXXXXXXXX
REMXXXXXXXXXXXXXXXX
RENUMX XXXX XXXXXXXX
RESTOREXXXXXXXXXXXXXXXX
RESUMEX XXXX XXXXXXXX
RETURNXXXXXXXXXXXXXXXX
RSETX XXXX XXXXXXXX
RUNX XXXX XXXXXXXX
SAVEX XXXX XXXXXXXX
SELECTX XXXXXXXXX
SELECT CASEX XXXXXXXXX
STOPXXXXXXXXXXXXXXXX
SUBX XXXXXXXXX
SWAPX XXXX XXXXXXXX
SYSTEMX XXXX XXXXXXXX
TIMERX XXXXXXXX
TIMER OFFX XXXXXXXX
TIMER ONX XXXXXXXX
TIMER STOPX XXXXXXXX
UENDX
UNTILX
USER LBLXXXXXXXXXXXXXXXX
VARSX
WENDX XXXX XXXXXXXX
WHILEX XXXX XXXXXXXX
WRITEX XXXX XXXXXXXX
+ diff --git a/cms.bas b/cms.bas new file mode 100644 index 0000000..0cd6b1e --- /dev/null +++ b/cms.bas @@ -0,0 +1,81 @@ +rem Purpose: re-define externals to only 6 characters for CMS +rem Author: Howard Wulf, AF5NE +rem Date: 2015-02-10 +rem Usage: implementation defined +rem Example: +rem ~/bwbasic cms.bas +rem +rem ------------------------------------------------------------------------------- +rem File File Name IN/OUT Description +rem #1 "bwbasic.h" INPUT read looking for "extern" statements +rem #2 "cms.h" OUTPUT written with "#define" statements +rem ------------------------------------------------------------------------------- +rem Variable Description +rem N The number of "extern" statements so far processed +rem E$ The constant value "extern " +rem E The length of E$ +rem L$ The input line read from "bwbasic.h" +rem M$ The next line from "bwbasic.h" when L$ does not contain a semicolon +rem X The location of special characters in L$ +rem H$ The hexadecimal value of N +rem ------------------------------------------------------------------------------- +rem +let N = 0 +let E$ = "extern " +let E = len( E$ ) +open "bwbasic.h" for input as #1 +open "cms.h" for output as #2 +while not eof( #1 ) + line input #1, L$ + L$ = trim$( L$ ) + if left$( L$, E ) = E$ then + rem extern .... + while instr( L$, ";" ) = 0 + ' read more lines until we get a semicolon + line input #1, M$ + M$ = trim$( M$ ) + L$ = L$ + " " + M$ + wend + rem extern ...; + L$ = trim$(mid$( L$, E + 1 )) + ' truncate trailing semicolon + X = instr( L$, ";" ) + if X > 0 then + L$ = trim$(left$( L$, X - 1 )) + end if + ' truncate trailing parenthesis + X = instr( L$, "(" ) + if X > 0 then + L$ = trim$(left$( L$, X - 1 )) + end if + ' truncate trailing bracket + X = instr( L$, "[" ) + if X > 0 then + L$ = trim$(left$( L$, X - 1 )) + end if + ' find the last word + X = instr(L$, " " ) + while X > 0 + L$ = trim$(mid$( L$, X + 1 )) + X = instr(L$, " " ) + wend + ' skip leading asterick + while left$( L$, 1 ) = "*" + L$ = trim$(mid$( L$, 2 )) + wend + if L$ = "main" then + ' ignore magic function name + else + ' pad for alignment + L$ = L$ + space$(32) + L$ = left$( L$, 32 ) + H$ = "00000" + hex$(N) + H$ = right$( H$, 5 ) + print #2, "#define ";L$;" X";H$ + N = N + 1 + end if + end if +wend +close #2 +close #1 +end diff --git a/compile.bat b/compile.bat index d624442..430e5fe 100644 --- a/compile.bat +++ b/compile.bat @@ -16,10 +16,10 @@ call stdcomp bwb_ops.c call stdcomp bwb_dio.c call stdcomp bwb_str.c call stdcomp bwb_elx.c -call stdcomp bwb_mth.c call stdcomp bwb_stc.c call stdcomp bwx_tty.c -call stdcomp unixio.c +call stdcomp bwd_cmd.c +call stdcomp bwd_fun.c rem gcc -mno-cygwin -s -o bwbasic.exe *.o bcc32 -O -ebwbasic.exe *.obj diff --git a/compile.exec b/compile.exec index 143a012..686bbfe 100644 --- a/compile.exec +++ b/compile.exec @@ -31,9 +31,10 @@ EXEC GCCE BWB_OPS C &SRC (PARM STDBWB EXEC GCCE BWB_DIO C &SRC (PARM STDBWB EXEC GCCE BWB_STR C &SRC (PARM STDBWB EXEC GCCE BWB_ELX C &SRC (PARM STDBWB -EXEC GCCE BWB_MTH C &SRC (PARM STDBWB EXEC GCCE BWB_STC C &SRC (PARM STDBWB EXEC GCCE BWX_TTY C &SRC (PARM STDBWB +EXEC GCCE BWD_CMD C &SRC (PARM STDBWB +EXEC GCCE BWD_FUN C &SRC (PARM STDBWB EXEC GCCE UNIXIO C &SRC (PARM STDBWB @@ -52,9 +53,10 @@ INCLUDE BWB_OPS (NOAUTO INCLUDE BWB_DIO (NOAUTO INCLUDE BWB_STR (NOAUTO INCLUDE BWB_ELX (NOAUTO -INCLUDE BWB_MTH (NOAUTO INCLUDE BWB_STC (NOAUTO INCLUDE BWX_TTY (NOAUTO +INCLUDE BWD_CMD (NOAUTO +INCLUDE BWD_FUN (NOAUTO &STACK RT INCLUDE UNIXIO (NOAUTO diff --git a/cpm/00LINK.txt b/cpm/00LINK.txt new file mode 100644 index 0000000..abc9015 --- /dev/null +++ b/cpm/00LINK.txt @@ -0,0 +1 @@ +http://www.classiccmp.org/cpmarchives/cpm/Software/WalnutCD/cpm/basic/ diff --git a/cpm/555-ic.INP b/cpm/555-ic.INP new file mode 100644 index 0000000..83b33d2 --- /dev/null +++ b/cpm/555-ic.INP @@ -0,0 +1 @@ +1000 diff --git a/cpm/555-ic.bas b/cpm/555-ic.bas new file mode 100644 index 0000000..bdfff87 --- /dev/null +++ b/cpm/555-ic.bas @@ -0,0 +1,66 @@ +10 PRINT CHR$(11) : REM SCREEN CLEAR +20 DIM A(25),R(77) +30 PRINT "THIS PROGRAM AS DESIGNED TO SELECT THE" +40 PRINT "PROPER VALUES OF RESISTANCE AND CAPA-" +50 PRINT "CITANCE FOR THE PROPER OPERATION OF THE" +60 PRINT "555 TIMER-OSCILLATOR." +70 PRINT +80 PRINT "ENTER THE DESIRED FREQUENCY OF OSCILLATION( hz )" +90 INPUT F +100 PRINT CHR$(11) +110 PRINT +120 S=1 +130 FOR I=1 TO 13 +140 READ A(I) +150 NEXT I +160 PRINT +170 PRINT "THE FOLLOWING VALUES OF RESISTANCE" +180 PRINT "AND CAPACITANCE DETERMINE THE FRE-" +190 PRINT "QUENCY OF ";F;"HZ." +191 PRINT" ---------------------" +192 PRINT" 1-| GND VCC |-8" +193 PRINT" | |" +194 PRINT" 2-| TRIGGER DISCHG |-7 R(b) TO VCC" +195 PRINT" | 555-IC |" +196 PRINT" 3-| OUTPUT THRESHOLD|-6 R(a) TO 7, C1 TO GND" +197 PRINT" | |" +198 PRINT" 4-| RESET CONT. VOLT|-5" +199 PRINT" --------------------- " +200 Z=1 +210 B=1 +220 FOR J=2 TO 7 +230 FOR I=3 TO 13 +240 R(Z)=A(I)*10^J +250 R(B)=R(Z) +260 Z=Z+1 +270 B=B+1 +280 NEXT I +290 NEXT J +300 FOR Z=1 TO 66 +310 FOR B=1 TO 66 +320 C=1.44/((R(Z)+2*R(B))*F) +330 IF C<10^(-9) THEN 430 +340 FOR H=1 TO 9 +350 D=C/10^(-H) +360 IF 1>D THEN 380 +370 IF D<10 THEN 390 +380 NEXT H +390 FOR I=1 TO 6 +400 IF .995*A(I)>D THEN 420 +410 IF D<1.005*A(I) THEN 460 +420 NEXT I +430 NEXT B +440 NEXT Z +450 GOTO 560 +460 PRINT +470 PRINT +475 FOR TIME=1 TO 10:PRINT CHR$(7);:NEXT TIME +480 PRINT "SET";S;":" +490 PRINT "R(A)=";R(Z);"OHMS" +500 PRINT "R(B)=";R(B);"OHMS" +510 PRINT "C=";1E+06*C;"UF" +520 S=S+1 +530 PRINT +540 GOTO 440 +550 DATA 5.0,10.0,1.0,2.2,3.3,4.7,1.2,1.5,1.8,3.9,5.6,6.2,8.2 +560 END diff --git a/cpm/567-ic.INP b/cpm/567-ic.INP new file mode 100644 index 0000000..83b33d2 --- /dev/null +++ b/cpm/567-ic.INP @@ -0,0 +1 @@ +1000 diff --git a/cpm/567-ic.bas b/cpm/567-ic.bas new file mode 100644 index 0000000..9562e01 --- /dev/null +++ b/cpm/567-ic.bas @@ -0,0 +1,50 @@ +10 PRINT CHR$(11) : REM SCREEN CLEAR +20 DIM A(25),R(77) +30 PRINT "THIS PROGRAM IS DESIGNED TO SELECT THE" +40 PRINT "PROPER VALUES OF RESISTANCE AND CAPA-" +50 PRINT "CITANCE FOR THE PROPER OPERATION OF THE" +60 PRINT "567 TONE DECODER." +70 PRINT +80 PRINT "ENTER THE DESIRED FREQUENCY OF OPERATION" +90 INPUT F +100 PRINT CHR$(11) +110 PRINT +120 S=1 +130 FOR I=1 TO 13 +140 READ A(I) +150 NEXT I +160 PRINT +170 PRINT "THE FOLLOWING VALUES OF RESISTANCE" +180 PRINT "AND CAPACITANCE DETERMINE THE FRE-" +190 PRINT "QUENCY OF";F;"HZ" +200 A=1 +210 FOR J=2 TO 7 +220 FOR I=3 TO 13 +230 R(A)=A(I)*10 ^ J +240 A=A+1 +250 NEXT I +260 NEXT J +270 FOR A=1 TO 66 +280 C=1/(R(A)*F) +290 IF C<10^(-9) THEN 390 +300 FOR H=1 TO 9 +310 D=C/10^(-H) +320 IF 1>D THEN 340 +330 IF D<10 THEN 350 +340 NEXT H +350 FOR I=1 TO 6 +360 IF .95*A(I)>D THEN 380 +370 IF D<1.05*A(I) THEN 410 +380 NEXT I +390 NEXT A +400 GOTO 500 +410 PRINT +420 PRINT +430 PRINT "SET";S;":" +440 PRINT "R1 =";R(A);"OHMS" +450 PRINT "C1 =";1E+06*C;"UF" +460 S=S+1 +470 PRINT +480 GOTO 390 +490 DATA 5.0,10.0,1.0,2.2,3.3,4.7,1.2,1.5,1.8,3.9,5.6,6.2,8.2 +500 END diff --git a/cpm/airmiles.INP b/cpm/airmiles.INP new file mode 100644 index 0000000..5e6330c --- /dev/null +++ b/cpm/airmiles.INP @@ -0,0 +1,3 @@ +DALLAS +PARIS +NO diff --git a/cpm/airmiles.bas b/cpm/airmiles.bas new file mode 100644 index 0000000..234d3f8 --- /dev/null +++ b/cpm/airmiles.bas @@ -0,0 +1,253 @@ +10 'Tested on CP/M and Added CLS change 18 July 87, Jim Lill +20 'fixed misspellings and redundancies in data +30 CLS$=CHR$(26):' set for your terminal +40 C%=330:' THIS IS NUMBER OF CITIES +50 DIM A1%(26) +60 DIM N$(C%),LA(C%),LO(C%) +70 PI= 4 * ATN(1):'added in CP/M conversion +80 PI2=2 * PI +90 DG=360/PI2 '2 pi radians in 360 degrees +100 'arc cosine function using arc tangent & sin2(x) + cos2(x) = 1 +110 DEF FNACOS(V1)=ATN(SQR(1-V1*V1)/V1)*DG 'answer returned in degrees +120 'GREAT CIRCLE MILEAGE +130 'Note: If you wish to add cities to the data list, they +140 'must be inserted alphabetically (by first letter only), and the +150 'value of "C%" (in the first line) increased accordingly. +160 'The data for each city is the name, latitude and longitude. +170 'Latitude is +/- 90 degrees. Negative values are below the equator. +180 'Longitude is +/- 180 degrees. Negative values are East of Greenwich. +190 'Duplicate entries arise when data sources disagree on lat/long. +200 PRINT CLS$:PRINT "AIRLINE DISTANCES BETWEEN CITIES" +210 PRINT:PRINT:PRINT"If you are not sure of the spelling of a city," +220 PRINT "type in only the first letters of which you are confident." +230 PRINT +240 PRINT "All entries must be in UPPER CASE." +250 PRINT:PRINT "PLEASE WAIT FOR ARRAYS TO BE SET UP." +260 X%=1 'Index to letters of alphabet +270 FOR Y=1 TO C%: READ N$(Y),LA(Y),LO(Y) +280 'Find data positions for each letter of the alphabet +290 'Brackets search positions and makes database updates easier. +300 IF ASC(LEFT$(N$(Y),1))<=64+X% THEN GOTO 330 'First occurrence of new letter +310 A1%(X%)=Y-1:X%=X%+1 'Number of last city in the list with letter# X% +320 GOTO 300 'In case no cities started with X%-1 +330 NEXT Y +340 A1%(26)=C% 'guarantee last entry +350 PRINT +360 INPUT "TYPE IN CITY OF ORIGIN ";A$ +370 GOSUB 560 +380 IF C1%>0 THEN GOTO 400 +390 PRINT "NO CITY SELECTED":PRINT:GOTO 550 +400 LAT1=LA(C1%)/DG:LONG1=LO(C1%)/DG:L$=N$(C1%) +410 PRINT +420 INPUT "TYPE IN DESTINATION CITY NAME ";A$ +430 GOSUB 560 +440 IF C1%>0 THEN GOTO 460 +450 PRINT "NO CITY SELECTED":PRINT:GOTO 550 +460 LAT2=LA(C1%)/DG:LONG2=LO(C1%)/DG:M$=N$(C1%) +470 DAB=SIN(LAT1)*SIN(LAT2)+COS(LAT1)*COS(LAT2)*COS(LONG1-LONG2) +480 DIST=ABS(FNACOS(DAB)) +490 PRINT Z$ +500 PRINT"THE DISTANCE FROM ";L$;" TO ";M$;" IS:" +510 PRINT USING "#####,.#";DIST*69.113;:PRINT" STATUTE MILES "; +520 PRINT USING "#####,.#";DIST*60.0576;:PRINT" NAUTICAL MILES "; +530 PRINT USING "#####,.#";DIST*111.203;:PRINT" KILOMETERS" +540 PRINT +550 INPUT "RUN AGAIN? ",A$: IF LEFT$(A$,1)="Y" OR LEFT$(A$,1)="Y" THEN GOTO 350 ELSE END +560 'Subroutine to find the city's name. +570 T=ASC(LEFT$(A$,1))-64 'Number (1-26) of first letter of city name. +580 BOT%=A1%(T-1)+1:TOP%=A1%(T) +590 'First & last cities starting with this letter. +600 'A1%(T-1) is the last position of the letter before this one. +610 'Thus the next one, A1%(T-1)+1, must be the first one with this letter. +620 'Your version of Basic must allow A1%(0) to exist or this won't work +630 'when a city begins with "A". +640 IF LEN(A$)>1 THEN GOTO 720 'Go try and match spelling +650 FOR M%=BOT% TO TOP% 'For each city +660 TT=24*(M% MOD 3) +670 PRINT M%;N$(M%);TAB(TT); 'Print a list of name & number +680 NEXT M% +690 PRINT:PRINT "CHOOSE THE NUMBER OF THE CITY YOU WANT" +700 INPUT "ENTER 0, TO QUIT";C1% +710 RETURN +720 'If more than one letter is given, try to match spelling. +730 C1%=0:J=0 +740 FOR M%=BOT% TO TOP% +750 IF LEFT$(N$(M%),LEN(A$))=A$ THEN PRINT M%,N$(M%) :C1%=M%:J=J+1 +760 NEXT +770 IF J=1 THEN RETURN +780 IF C1%<>0 THEN GOTO 690 ELSE GOTO 650 +790 DATA ABILENE, 32.4514 , 99.7308, ACAPULCO, 16.85 , 99.9333 +800 DATA ADDIS ABABA, 9.05 ,-38.7 ,AKRON, 41.0833 , 81.5122 +810 DATA ALBANY, 42.6502 , 73.7502 ,ALBUQUERQUE, 33.0836 , 106.651 +820 DATA ALLENTOWN, 40.6031 , 75.4683 ,ALTOONA, 40.5153 , 78.4008 +830 DATA AMARILLO, 35.2075 , 101.834 ,AMSTERDAM, 52.35 ,-4.9 +840 DATA ANCHORAGE, 61.1667 , 149.983 ,ANKARA, 39.9167 ,-32.8333 +850 DATA ANN ARBOR, 42.2831 , 83.7478 ,ASHVILLE, 35.595 , 82.5572 +860 DATA ATHENS, 37.9667 ,-23.7333 ,ATLANTA, 33.6381 , 84.4278 +870 DATA AUGUSTA GA, 33.4722 , 81.9667 ,AUGUSTA ME, 44.3147 , 69.7747 +880 DATA AUSTIN, 30.2692 , 97.7436 ,BAKERSFIELD, 35.3753 , 119.022 +890 DATA BALBOA, 8.95 , 79.5667 ,BALTIMORE, 39.0175 , 76.67 +900 DATA BANGOR, 44.8036 , 68.7717 ,BARCELONA, 41.4167 ,-2.1667 +910 DATA BATON ROUGE, 30.4494 , 91.1833 ,BATTLE CREEK, 42.3161 , 85.18 +920 DATA BEAUMONT, 30.3467 , 94.1025 ,BELFAST, 54.6667 , 5.833 +930 DATA BELLINGHAM, 48.7594 , 122.467 ,BERKELEY, 37.8694 , 122.271 +940 DATA BERLIN, 52.5333 ,-13.0833 ,BERN, 46.95 ,-7.3333 +950 DATA BETHLEHEM, 40.6211 , 75.3761 ,BILLINGS, 45.7928 , 108.501 +960 DATA BILOXI, 30.3967 , 88.8833 ,BINGHAMTON, 42.2075 , 75.9794 +970 DATA BIRMINGHAM, 33.5169 , 86.81 ,BISMARCK, 46.8064 , 100.788 +980 DATA BLOOMINGTON, 40.4828 , 88.9933 ,BOGOTA, 4.6333 , 74.0833 +990 DATA BOISE, 43.6186 , 116.199 ,BOMBAY, 18.9333 ,-72.85 +1000 DATA BOSTON, 42.3642 , 71.0056 ,BOWLING GREEN, 36.9947 , 86.4425 +1010 DATA BRIDGEPORT, 41.1803 , 73.1894 ,BRISBANE,-27.5 ,-153 +1020 DATA BRISTOL, 36.5833 , 82.2 ,BROCKTON, 42.0839 , 71.0236 +1030 DATA BROWNSVILLE, 25.9019 , 97.4994 ,BRUSSELLS, 50.8333 ,-4.35 +1040 DATA BUFFALO, 42.9406 , 78.7325 ,BURLINGTON VT, 44.4761 , 73.2128 +1050 DATA BUTTE, 46.0183 , 112.536 ,CALCUTTA, 22.5833 ,-88.35 +1060 DATA CAMBRIDGE, 42.3669 , 71.1061 ,CAMDEN, 39.9447 , 75.1206 +1070 DATA CANBERRA,-35.3 ,-149.133 ,CANTON, 40.7972 , 81.3769 +1080 DATA CARACAS, 10.5833 , 60.9333 ,CARSON CITY, 39.1667 , 119.767 +1090 DATA CASABLANCA, 33.65 , 7.5833 ,CEDAR RAPIDS, 41.9669 , 91.6647 +1100 DATA CEDAR RAPIDS, 41.8844 , 91.7086 ,CHAMPAIGN, 40.0397 , 88.2781 +1110 DATA CHAMPAIGN, 40.118 , 88.2467 ,CHARLESTON SC, 32.8986 , 80.04 +1120 DATA CHARLESTON WV, 38.3731 , 81.5933 ,CHARLOTTE, 35.2147 , 80.9383 +1130 DATA CHATTANOOGA, 35.0447 , 85.3089 ,CHEYENNE, 41.1358 , 104.819 +1140 DATA CHICAGO, 41.9825 , 87.9069 ,CINCINNATI, 39.0478 , 84.6667 +1150 DATA CLARKSBURG, 39.2956 , 80.2289 ,CLEVELAND, 41.4103 , 81.8489 +1160 DATA COLORADO SPRINGS, 38.8353 , 104.821 ,COLUMBIA, 34.0006 , 81.0333 +1170 DATA COLUMBUS, 39.9947 , 82.8856 ,COLUMBUS GA, 32.4686 , 84.99 +1180 DATA CONCORD, 43.2061 , 71.5403 ,CORPUS CHRISTI, 27.7975 , 97.3959 +1190 DATA DAKAR, 14.6333 , 17.3333 ,DALLAS, 32.8967 , 97.0336 +1200 DATA DAVENPORT, 41.5219 , 90.5758 ,DAYTON, 39.9011 , 84.22 +1210 DATA DAYTONA BEACH, 29.2122 , 81.0194 ,DECATUR, 39.845 , 88.9464 +1220 DATA DECATUR, 39.8342 , 88.8681 ,DENVER, 39.7742 , 104.878 +1230 DATA DES MOINES, 41.4872 , 93.6167 ,DETROIT, 42.2153 , 83.3486 +1240 DATA DODGE CITY, 37.7547 , 100.019 ,DUBLIN, 53.3333 , 6.25 +1250 DATA DUBUQUE, 42.4986 , 90.6689 ,DULUTH, 46.7822 , 92.1067 +1260 DATA DURHAM, 36 , 78.9125 ,EAU CLAIRE, 44.8086 , 91.4969 +1270 DATA EL PASO, 31.78 , 106.486 ,ELIZABETH, 40.6619 , 74.2164 +1280 DATA ELMIRA, 42.1595 , 76.8925 ,ENID, 36.3944 , 97.8764 +1290 DATA EUGENE, 44.0544 , 123.092 ,EVANSVILLE, 37.9722 , 87.5725 +1300 DATA FAIRBANKS, 64.8 , 147.85 ,FARGO, 46.875 , 96.7883 +1310 DATA FLAGSTAFF, 35.1933 , 111.652 ,FLINT, 43.0139 , 83.6925 +1320 DATA FRANKFURT, 50.1 ,-8.6833 ,FRESNO, 36.7367 , 119.786 +1330 DATA FT. SMITH, 35.3861 , 94.4267 ,FT. WAYNE, 41.0725 , 85.1406 +1340 DATA FT. WORTH, 32.7486 , 97.3289 ,GADSDEN, 34.0158 , 86.0114 +1350 DATA GAINSVILLE, 29.6486 , 82.3219 ,GALLOP, 35.525 , 108.742 +1360 DATA GALVESTON, 29.3028 , 94.7953 ,GARY, 41.6033 , 87.3386 +1370 DATA GENOA, 44.4 ,-8.9333 ,GLASGOW, 55.8833 , 4.6833 +1380 DATA GRAND JUNCTION, 39.0683 , 108.565 ,GRAND RAPIDS, 42.9675 , 85.6703 +1390 DATA GREAT FALLS, 47.4925 , 111.306 ,GREEN BAY, 44.4106 , 88.0139 +1400 DATA GREENSBORO, 36.0714 , 79.7903 ,GREENVILLE, 34.8964 , 82.2186 +1410 DATA GUADALAJARA, 20.5 , 103.333 ,GUAYAQUIL,-2.5167 , 79.9 +1420 DATA GULFPORT, 30.3678 , 89.0933 ,HALIFAX, 44.6442 , 63.5761 +1430 DATA HARRISBURG, 40.2019 , 76.8831 ,HARTFORD, 41.7361 , 72.6506 +1440 DATA HARTFORD, 41.77 , 72.6803 ,HELENA, 46.4925 , 112.04 +1450 DATA HELSINKI, 60.1355 ,-25 ,HILO, 19.725 , 155.09 +1460 DATA HOLYOKE, 42.2081 , 72.61 ,HONOLULU, 21.3061 , 157.86 +1470 DATA HOUSTON, 29.9828 , 95.3458 ,HUNTINGTON, 38.3667 , 82.5581 +1480 DATA HUNTINGTON, 38.42 , 82.4425 ,HUNTSVILLE, 34.7383 , 86.5886 +1490 DATA INDIANAPOLIS, 39.7244 , 86.2833 ,ITHACA, 42.4903 , 76.4578 +1500 DATA JACKSON MI, 42.2453 , 84.4061 ,JACKSON MS, 32.2989 , 90.185 +1510 DATA JACKSONVILLE, 30.4925 , 81.69 ,JERSEY CITY, 40.7306 , 74.0656 +1520 DATA JERUSALEM, 31.7833 ,-35.2167 ,JOHANNESBURG,-26.1667 ,-28.0333 +1530 DATA JOPLIN, 37.0906 , 90.7031 ,JUNEAU, 58.3033 , 134.408 +1540 DATA KANSAS CITY, 39.2992 , 94.7178 ,KNOXVILLE, 35.9608 , 83.9186 +1550 DATA LAFAYETTE, 40.4197 , 86.8942 ,LANCASTER, 40.0403 , 76.3081 +1560 DATA LANSING, 42.7336 , 84.5542 ,LAREDO, 27.5061 , 99.5083 +1570 DATA LAS VEGAS, 36.08 , 115.152 +1580 DATA LENINGRAD, 59.9167 ,-30.4167 ,LEXINGTON, 38.0367 , 84.6058 +1590 DATA LIMA OH, 40.7431 , 84.1056 ,LIMA PERU,-12.1 , 77.05 +1600 DATA LINCOLN, 40.8164 , 96.7042 ,LISBON, 38.7333 , 9.1333 +1610 DATA LITTLE ROCK, 34.7303 , 92.2331 ,LIVERPOOL, 53.7167 , 1.6833 +1620 DATA LONDON, 51.5 , 0 ,LONG BEACH, 33.7706 , 118.188 +1630 DATA LOS ANGELES, 33.9419 , 118.406 ,LOUISVILLE, 38.1778 , 85.7364 +1640 DATA LOWELL, 42.6403 , 71.3206 ,LUBBOCK, 33.5847 , 101.843 +1650 DATA LUXEMBOURG, 49.6167 ,-6.1333 ,MACON, 32.8367 , 83.6267 +1660 DATA MADISON, 43.0731 , 89.3819 ,MADISON, 43.1389 , 89.3375 +1670 DATA MADRID, 40.4167 , 3.7167 ,MALAGA, 36.7167 , 4.4167 +1680 DATA MARSHALL, 32.55 , 94.3833 ,MEMPHIS, 35.05 , 89.9789 +1690 DATA MEXICO CITY, 19.4292 , 99.1167 ,MIAMI, 25.7944 , 80.2881 +1700 DATA MILWAUKEE, 42.948 , 87.8964 ,MINNEAPOLIS, 44.8842 , 93.215 +1710 DATA MINOT, 48.2358 , 101.294 ,MOBILE, 30.6933 , 88.0425 +1720 DATA MOLINE, 41.4486 , 90.5081 ,MONTERREY, 25.6667 , 100.333 +1730 DATA MONTGOMERY, 32.3758 , 86.3086 ,MONTIVIDEO,-17.55 , 51.1333 +1740 DATA MONTPELIER, 44.26 , 72.5781 ,MONTREAL, 45.5083 , 73.5556 +1750 DATA MOSCOW, 55.75 ,-37.7 ,NASHVILLE, 36.1267 , 86.6819 +1760 DATA NASSAU, 25.0833 , 77.3333 ,NATCHEZ, 31.5633 , 91.3917 +1770 DATA NEW BEDFORD, 42.6369 , 70.9281 +1780 DATA NEW DELHI, 28.6333 ,-77.2 ,NEW HAVEN, 41.3069 , 72.925 +1790 DATA NEW ORLEANS, 29.9928 , 90.2564 ,NEW YORK JFK, 40.6403 , 73.7783 +1800 DATA NEW YORK LGA, 40.7772 , 73.8742 ,NEWARK, 40.6931 , 74.1686 +1810 DATA NIAGARA FALLS, 43.0928 , 79.0572 ,NOME, 64.5 , 165.417 +1820 DATA NORFOLK, 36.8953 , 76.2 ,OAKLAND, 37.8008 , 122.265 +1830 DATA OGDEN, 41.2253 , 111.973 ,OKLAHOMA CITY, 35.3936 , 97.5997 +1840 DATA OMAHA, 41.3011 , 95.885 ,ORLANDO, 28.4317 , 81.3247 +1850 DATA OSLO, 59.9333 ,-10.75 ,OTTAWA, 45.4278 , 75.7125 +1860 DATA PADUCAH, 37.0869 , 88.5989 ,PALERMO, 38.1333 ,-13.3833 +1870 DATA PANAMA CITY FL, 30.1667 , 85.6833 ,PARIS, 48.8372 ,-2.3372 +1880 DATA PASADENA, 34.1456 , 118.145 ,PEKING, 39.9 ,-116.467 +1890 DATA PENSACOLA, 30.4142 , 87.2156 ,PEORIA, 40.6642 , 89.69 +1900 DATA PERTH,-31.9667 ,-115.817 ,PHILADELPHIA, 39.8703 , 75.2453 +1910 DATA PHOENIX, 33.4361 , 112.009 ,PIERRE, 44.3717 , 100.348 +1920 DATA PITTSBURGH, 40.4936 , 80.2317 ,POCATELLO, 42.8606 , 112.45 +1930 DATA PORT ARTHUR, 29.875 , 93.9375 +1940 DATA PORTLAND ME, 43.6592 , 70.2553 ,PORTLAND OR, 45.5183 , 122.676 +1950 DATA PRAGUE, 49.65 ,-13.8167 ,PROVIDENCE, 41.8256 , 71.4114 +1960 DATA PROVO, 40.235 , 111.657 ,PUEBLO, 38.2714 , 104.609 +1970 DATA QUEBEC, 46.8128 , 71.2056 ,QUITO,-.14 , 78.3 +1980 DATA RACINE, 42.7303 , 87.7867 ,RALEIGH, 35.7772 , 78.6392 +1990 DATA RAPID CITY, 44.0811 , 103.22 ,READING, 40.3358 , 75.9278 +2000 DATA RENO, 39.5242 , 119.811 +2010 DATA RICHMOND, 37.5375 , 77.4358 ,RIO DE JANEIRO,-22.8953 , 43.2228 +2020 DATA ROANOKE, 37.2703 , 79.9456 ,ROCHESTER NY, 43.1189 , 77.6728 +2030 DATA ROCKFORD, 42.2686 , 89.0967 ,ROME, 41.8833 ,-12.5 +2040 DATA SACREMENTO, 38.5825 , 121.495 ,SAGINAW, 43.4311 , 83.9347 +2050 DATA SALEM OR, 44.94 , 123.033 ,SALINA, 38.8433 , 97.6128 +2060 DATA SALT LAKE CITY, 40.7842 , 111.967 ,SAN ANGELO, 31.4608 , 100.434 +2070 DATA SAN ANTONIO, 29.5333 , 98.4697 ,SAN BERNADINO, 34.1083 , 117.291 +2080 DATA SAN DIEGO, 32.7336 , 117.187 ,SAN FRANCISCO, 37.6194 , 122.374 +2090 DATA SAN JOSE, 37.3614 , 121.927 ,SAN JUAN, 18.4414 , 66.0022 +2100 DATA SAN SALVADOR, 13.6667 , 89.1667 ,SANTA BARBABRA, 34.4217 , 119.699 +2110 DATA SANTA FE, 35.6864 , 105.936 ,SANTIAGO,-33.5 , 70.4 +2120 DATA SAO PAULA,-23.55 , 46.65 ,SARASOTA, 27.3347 , 82.5417 +2130 DATA SAVANNAH, 32.0783 , 81.0936 ,SCHENECTADY, 42.8117 , 73.9283 +2140 DATA SCRANTON, 41.4089 , 75.6628 ,SEATTLE, 47.4492 , 122.308 +2150 DATA SHANGHAI, 31.2167 ,-121.417 ,SHEBOYGAN, 43.7628 , 87.7144 +2160 DATA SHERIDAN, 44.7986 , 106.953 ,SHREVEPORT, 32.5128 , 93.7494 +2170 DATA SINGAPORE, 1.3333 ,-103.833 ,SIOUX CITY, 42.4961 , 96.075 +2180 DATA SIOUX FALLS, 43.5431 , 96.7264 ,SOUTH BEND, 41.6758 , 86.2503 +2190 DATA SPARTANBURG, 34.9508 , 81.935 ,SPOKANE, 47.6589 , 117.426 +2200 DATA SPRINGFIELD, 39.8433 , 89.6678 ,ST. JOSEPH, 39.7658 , 94.8506 +2210 DATA ST. LOUIS, 38.7481 , 90.3622 ,ST. PAUL, 44.9553 , 93.1019 +2220 DATA PETERSBURG, 27.7717 , 82.6386 ,STANFORD, 41.0525 , 73.54 +2230 DATA STOCKHOLM, 59.3333 ,-18.95 ,STOCKTON, 37.9583 , 121.288 +2240 DATA SYDNEY,-33.8667 ,-151.2 +2250 DATA SYRACUSE, 43.1122 , 76.1089 ,TACOMA, 47.2497 , 122.438 +2260 DATA TALLAHASSEE, 30.4417 , 84.2822 ,TAMPA, 27.9739 , 82.5328 +2270 DATA TEHERAN, 35.6667 ,-51.4333 ,TEL AVIV, 32.0833 ,-34.7667 +2280 DATA TENERIFE, 28.25 , 16.588 ,TERRE HAUTE, 39.4675 , 87.4072 +2290 DATA TEXARKANA, 33.43 , 94.0417 ,TOKYO, 35.75 ,-139.75 +2300 DATA TOLEDO, 41.6539 , 83.5442 ,TOPEKA, 39.0544 , 95.6731 +2310 DATA TORONTO, 43.6533 , 79.3833 ,TRENTON, 40.2206 , 74.7703 +2320 DATA TUCSON, 32.2208 , 110.969 ,TULSA, 36.1986 , 95.8878 +2330 DATA UTICA, 43.1033 , 75.2258 ,VANCOUVER, 49.275 , 123.125 +2340 DATA VICTORIA, 48.4278 , 123.363 ,WACO, 31.5533 , 97.1333 +2350 DATA WARSAW, 52.25 ,-21 ,WASHINGTON, 38.9436 , 77.4544 +2360 DATA WATERLOO, 42.4944 , 92.3389 ,WEST PALM BEACH, 26.71 , 80.0519 +2370 DATA WHEELING, 40.0675 , 80.7222 ,WHITE PLAINS, 41.0333 , 73.7633 +2380 DATA WHITEHORSE, 60.7208 , 136.054 ,WICHITA, 37.6517 , 97.4308 +2390 DATA WICHITA FALLS, 33.9094 , 98.4911 ,WILKESBARRE, 41.2422 , 75.8881 +2400 DATA WILMINGTON DE, 39.7461 , 75.5475 ,WILMINGTON NC, 34.2372 , 77.9494 +2410 DATA WINDSOR, 42.3306 , 83.05 ,WINNIPEG, 49.8989 , 97.1389 +2420 DATA WINSTON-SALEM, 36.0978 , 80.245 ,WORCESTER, 42.2603 , 71.8047 +2430 DATA YAKIMA, 46.6025 , 120.511 ,YONKERS, 40.9319 , 73.8983 +2440 DATA YORK, 39.9597 , 87.7267 ,YOUNGSTOWN, 41.0992 , 80.6506 +2450 DATA YUMA, 32.715 , 114.623 ,ZANESVILLE, 39.9383 , 82.0083 +2460 DATA ZURICH, 47.3833 ,-8.55 +2470 'Norman Goldsmith +2480 '5 Ranger Road +2490 '7/5/87 +2500 REM --------------------------------------------------------- +2510 REM Updates for bwBASIC 3.0 by Howard Wulf, AF5NE, May 7th 2015: +2520 REM a) added semicolons between print items on line 500 +2599 END diff --git a/cpm/asm2mac.txt b/cpm/asm2mac.txt new file mode 100644 index 0000000..9a909da --- /dev/null +++ b/cpm/asm2mac.txt @@ -0,0 +1,168 @@ +10 PRINT "Conversion from Intel 8080 Mnemonics to Zilog Z80":PRINT +20 INPUT "INPUT file name? ",NI$ +30 INPUT "OUTPUT file name? ",NO$ +40 INPUT "Does space terminate the operand (Y/N)? ",IN$ +50 SPC$=" ":IF LEFT$(IN$+" ",1)="Y" THEN 80 +60 IF LEFT$(IN$+" ",1)<>"N" THEN PRINT "Please answer Y)es or N)o":GOTO 40 +70 SPC$="" +80 RESET:EF=0:RC=0:OPEN "I",1,NI$:OPEN "O",2,NO$ +90 IF EOF(1) THEN CLOSE:STOP +100 LINE INPUT #1,IN$ +110 REM +120 REM *** PARSE THE LABEL, OPERATION CODE, OPERAND, AND COMMENT +130 REM +140 IF RIGHT$(IN$,1)=" " THEN IN$=LEFT$(IN$,LEN(IN$)-1):GOTO 140 +150 IL=LEN(IN$):IF IL=0 THEN IN$=";" +160 IF IL<2 OR LEFT$(IN$,1)=";" THEN 1430 +170 BF=0:QF=0:LB$="":OPC$="":OPD$="":CM$="" +180 IF LEFT$(IN$,1)<>" " AND LEFT$(IN$,1)<>CHR$(9) THEN LC=1 ELSE LC=2 +190 FOR IC=1 TO IL +200 CH$=MID$(IN$,IC,1) +210 IF LC<4 THEN 240 +220 CM$=CM$+CH$:IF CM$=" " OR CM$=CHR$(9) THEN CM$="" +230 GOTO 360 +240 IF CH$=":" AND LC=1 THEN 360 +250 IF ASC(CH$)=34 OR ASC(CH$)=39 THEN QF=1-QF +260 IF QF THEN 340 +270 IF CH$=";" THEN LC=4:GOTO 360 +280 BL$=" ":IF LC=3 THEN BL$=SPC$ +290 IF CH$<>BL$ AND CH$<>CHR$(9) THEN BF=1:GOTO 320 +300 IF BF=1 THEN LC=LC+1:BF=0 +310 GOTO 360 +320 IF CH$ >= "a" AND CH$ <= "z" THEN CH$=CHR$(ASC(CH$)-32) +330 IF LC=3 AND CH$=";" THEN LC=4:GOTO 360 +340 IF LC=1 THEN LB$=LB$+CH$:GOTO 360 +350 IF LC=2 THEN OPC$=OPC$+CH$ ELSE OPD$=OPD$+CH$ +360 NEXT IC +370 REM +380 REM *** CONVERT THE OPERATION CODES +390 REM +400 IF OPC$<>"LD" THEN 430 +410 GOSUB 1490:IF LEFT$(B$,1)<>"(" THEN B$="("+B$+")" +420 OPD$=A$+","+B$ +430 IF OPC$<>"STO" THEN 460 +440 GOSUB 1490:IF LEFT$(B$,1)<>"(" THEN B$="("+B$+")" +450 OPD$=B$+","+A$:OPC$="LD" +460 IF OPC$="LHLD" THEN OPC$="LD":OPD$="HL,("+OPD$+")" +470 IF OPC$="LDED" THEN OPC$="LD":OPD$="DE,("+OPD$+")" +480 IF OPC$="LBCD" THEN OPC$="LD":OPD$="BC,("+OPD$+")" +490 IF OPC$="SHLD" THEN OPC$="LD":OPD$="("+OPD$+"),HL" +500 IF OPC$="SDED" THEN OPD$="("+OPD$+"),DE":OPC$="LD" +510 IF OPC$="SBCD" THEN OPD$="("+OPD$+"),BC":OPC$="LD" +520 IF OPC$="LDA" THEN OPC$="LD":OPD$="A,("+OPD$+")" +530 IF OPC$="LDAX" THEN OPC$="LD":GOSUB 1630:OPD$="A,("+OPD$+")" +540 IF OPC$="STA" THEN OPC$="LD":OPD$="("+OPD$+"),A" +550 IF OPC$="STAX" THEN OPC$="LD":GOSUB 1630:OPD$="("+OPD$+"),A" +560 IF (OPC$<>"MOV") AND (OPC$<>"MVI") THEN 600 +570 GOSUB 1490:IF A$="M" THEN A$="(HL)" +580 IF B$="M" THEN B$="(HL)" +590 OPC$="LD":OPD$=A$+","+B$ +600 IF OPC$="XRI" THEN OPC$="XOR" +610 IF OPC$="CP" THEN OPC$="CALL":OPD$="P,"+OPD$ +620 IF OPC$="CZ" THEN OPC$="CALL":OPD$="Z,"+OPD$ +630 IF OPC$="CNZ" THEN OPC$="CALL":OPD$="NZ,"+OPD$ +640 IF OPC$="CC" THEN OPC$="CALL":OPD$="C,"+OPD$ +650 IF OPC$="CNC" THEN OPC$="CALL":OPD$="NC,"+OPD$ +660 IF OPC$="CPO" THEN OPC$="CALL":OPD$="PO,"+OPD$ +670 IF OPC$="CPE" THEN OPC$="CALL":OPD$="PE,"+OPD$ +680 IF OPC$="CM" THEN OPC$="CALL":OPD$="M,"+OPD$ +690 IF (OPC$="CPI") OR (OPC$="CMP") THEN OPC$="CP":GOSUB 1580 +700 IF OPC$="ADD" THEN GOSUB 1490:GOSUB 1580:IF B$="" THEN OPD$="A,"+OPD$ +710 IF OPC$="DAD" THEN OPC$="ADD":GOSUB 1630:OPD$="HL,"+OPD$ +720 IF OPC$="ADI" THEN OPC$="ADD":OPD$="A,"+OPD$ +730 IF OPC$="DAD" THEN OPC$="ADD":OPD$="HL,"+OPD$ +740 IF OPC$="SUI" OR OPC$="SUB" THEN OPC$="SUB":GOSUB 1580 +750 IF OPC$="SBB" OR OPC$="SBI" THEN OPC$="SBC":GOSUB 1580:OPD$="A,"+OPD$ +760 IF OPC$="ACI" THEN OPC$="ADC" +770 IF OPC$="ADC" THEN OPD$="A,"+OPD$ +780 IF OPC$="DCR" THEN OPC$="DEC":GOSUB 1580 +790 IF OPC$="DCX" THEN OPC$="DEC":GOSUB 1630 +800 IF OPC$="INR" THEN OPC$="INC":GOSUB 1580 +810 IF OPC$="INX" THEN OPC$="INC":GOSUB 1630 +820 IF OPC$="CBIT" THEN OPC$="RES" +830 IF OPC$="SBIT" THEN OPC$="SET" +840 IF OPC$="ANA" THEN GOSUB 1580:OPC$="AND" +850 IF OPC$="ANI" THEN OPC$="AND" +860 IF (OPC$="ORA") OR (OPC$="ORI") THEN OPC$="OR":GOSUB 1580 +870 IF (OPC$="XRA") OR (OPC$="XRI") THEN OPC$="XOR":GOSUB 1580 +880 IF OPC$="CMC" THEN OPC$="CCF" +890 IF OPC$="STC" THEN OPC$="SCF" +900 IF OPC$="CMA" THEN OPC$="CPL" +910 IF OPC$="RLC" THEN OPC$="RLCA" +920 IF OPC$="RLC#" THEN OPC$="RLC" +930 IF OPC$="RRC" THEN OPC$="RRCA" +940 IF OPC$="RRC#" THEN OPC$="RRC" +950 IF OPC$="RAL" THEN OPC$="RLA" +960 IF OPC$="RAR" THEN OPC$="RRA" +970 IF OPC$="HLT" THEN OPC$="HALT" +980 IF OPC$="OUT" THEN OPD$="("+OPD$+"),A" +990 IF OPC$="OT,C" THEN OPC$="OUT":OPD$="(C),"+OPD$ +1000 IF OPC$="IN" THEN OPD$="A,("+OPD$+")" +1010 IF OPC$="IN,C" THEN OPC$="IN":OPD$=OPD$+",(C)" +1020 IF OPC$="XTHL" THEN OPC$="EX":OPD$="(SP),HL" +1030 IF (OPC$="EX") AND (OPD$="AF") THEN OPD$="AF,AF'" +1040 IF OPC$="XCHG" THEN OPC$="EX":OPD$="DE,HL" +1050 IF (OPC$="PUSH") OR (OPC$="POP") THEN GOSUB 1630 +1060 IF OPC$="LXI" THEN GOSUB 1490:OPD$=A$:GOSUB 1630:OPD$=OPD$+","+B$:OPC$="LD" +1070 IF OPC$="LK" THEN OPC$="LD" +1080 IF OPC$="SPHL" THEN OPC$="LD":OPD$="SP,HL" +1090 IF OPC$="RZ" THEN OPD$="Z":OPC$="RET" +1100 IF OPC$="RNZ" THEN OPD$="NZ":OPC$="RET" +1110 IF OPC$="RC" THEN OPD$="C":OPC$="RET" +1120 IF OPC$="RNC" THEN OPD$="NC":OPC$="RET" +1130 IF OPC$="RPE" THEN OPD$="PE":OPC$="RET" +1140 IF OPC$="RPO" THEN OPD$="PO":OPC$="RET" +1150 IF OPC$="RP" THEN OPD$="P":OPC$="RET" +1160 IF OPC$="RM" THEN OPD$="M":OPC$="RET" +1170 IF OPC$="RST" THEN OPD$="8*("+OPD$+")" +1180 IF OPC$="JP" THEN OPD$="P,"+OPD$ +1190 IF OPC$="JZ" THEN OPC$="JP":OPD$="Z,"+OPD$ +1200 IF OPC$="JNZ" THEN OPC$="JP":OPD$="NZ,"+OPD$ +1210 IF OPC$="JC" THEN OPC$="JP":OPD$="C,"+OPD$ +1220 IF OPC$="JNC" THEN OPC$="JP":OPD$="NC,"+OPD$ +1230 IF OPC$="JPE" THEN OPC$="JP":OPD$="PE,"+OPD$ +1240 IF OPC$="JPO" THEN OPC$="JP":OPD$="PO,"+OPD$ +1250 IF OPC$="JM" THEN OPC$="JP":OPD$="M,"+OPD$ +1260 IF OPC$="JRZ" THEN OPC$="JR":OPD$="Z,"+OPD$ +1270 IF OPC$="JRNZ" THEN OPC$="JR":OPD$="NZ,"+OPD$ +1280 IF OPC$="JRC" THEN OPC$="JR":OPD$="C,"+OPD$ +1290 IF OPC$="JRNC" THEN OPC$="JR":OPD$="NC,"+OPD$ +1300 IF OPC$="JMP" THEN OPC$="JP" +1310 IF OPC$="PCHL" THEN OPC$="JP":OPD$="(HL)" +1320 REM +1330 REM *** GENERATE THE OUTPUT RECORD +1340 REM +1350 IN$=LB$ +1360 IF IN$<>"" AND OPC$<>"MACRO" AND OPC$<>"EQU" THEN IN$=IN$+":" +1370 IF (LEN(OPC$)>0) OR (LEN(OPD$)>0) OR (LEN(CM$)>0) THEN IN$=IN$+CHR$(9)+OPC$ +1380 IF (LEN(OPD$)>0) OR (LEN(CM$)>0) THEN IN$=IN$+CHR$(9)+OPD$ +1390 IF LEN(CM$)=0 THEN 1430 +1400 IF LEN(OPD$)<8 THEN IN$=IN$+CHR$(9) +1410 IF LEFT$(CM$,1)<>";" THEN CM$=";"+CM$ +1420 IN$=IN$+CHR$(9)+CM$ +1430 PRINT IN$ +1440 PRINT #2,IN$ +1450 GOTO 90 +1460 REM +1470 REM *** SPLIT THE OPERANDS +1480 REM +1490 A$="":B$="":IF LEN(OPD$)<1 THEN RETURN +1500 LC=1:QF=-1:FOR IC=1 TO LEN(OPD$) +1505 IF MID$(OPD$,IC,1)="'" THEN QF=-QF-1 +1510 IF QF AND MID$(OPD$,IC,1)="," THEN LC=2:GOTO 1530 +1520 IF LC=1 THEN A$=A$+MID$(OPD$,IC,1) ELSE B$=B$+MID$(OPD$,IC,1) +1530 NEXT IC +1540 RETURN +1550 REM +1560 REM *** CHANGE MEMORY REGISTER TO (HL) +1570 REM +1580 IF OPD$="M" THEN OPD$="(HL)" +1590 RETURN +1600 REM +1610 REM *** CONVERT REGISTER PAIRS +1620 REM +1630 IF OPD$="B" THEN OPD$="BC" +1640 IF OPD$="H" THEN OPD$="HL" +1650 IF OPD$="D" THEN OPD$="DE" +1660 IF OPD$="PSW" THEN OPD$="AF" +1670 RETURN diff --git a/cpm/astrnmy2.INP b/cpm/astrnmy2.INP new file mode 100644 index 0000000..ec662a2 --- /dev/null +++ b/cpm/astrnmy2.INP @@ -0,0 +1,21 @@ +1 +12 +34 +56 +98 +54 +32 +6 + +2 +123 +11 +22 +33 + +3 +123 +123 +6 + +4 diff --git a/cpm/astrnmy2.bas b/cpm/astrnmy2.bas new file mode 100644 index 0000000..b01dabb --- /dev/null +++ b/cpm/astrnmy2.bas @@ -0,0 +1,171 @@ +10 '============================================================== +20 ' ADAPTED FROM ASTRONMY.LBR, author unknown +30 ' Adaption: 21 Jul 87, Jim Lill +40 ' Combining the 3 individual programs into one with menu +50 ' Other changes: - Added better PI value technique +60 ' - Added CLS$ +70 ' - correct SOP error in DEC-RA (line 1560) +80 '=============================================================== +90 CLS$=CHR$(26): ' Set for your terminal +100 LAT = 43.5 : ' LAT is your Latitude in Decimal Degrees +110 '============================================================== +120 PI = 4 * ATN(1) : RAD = 180/PI +130 '============================================================== +140 ' The following are used in menu 2 but are placed here for convenience +150 ' K1,K2, AND K3 ARE CONSTANTS. K1 CHANGES EACH YEAR. +160 ' LONG IS YOUR LONGITUDE IN DECIMAL HOURS +170 ' TZ IS THE DIFFERENCE IN HOURS BETWEEN YOUR +180 ' TIME ZONE AND GREENWICH. +190 ' GMST IS GREENWICH MEAN SIDEREAL TIME +200 ' LMST IS LOCAL MEAN SIDEREAL TIME +210 ' +220 K1 = 6.606550000000003# : ' This is 1987 +230 K2 = .06570982320000008# +240 K3 = 1.0027379093# +250 LONG = 5.1234 +260 TZ = 5 +270 '================================================================ +280 ' Start of actual program........ +290 ' MENU: +300 PRINT CLS$ +310 PRINT "Astronomy Programs":PRINT +320 PRINT "1- Find Altitude and Azimuth, given Right Ascension and Declination" +330 PRINT "2- Find Local Sidereal Time, given Day of Year and Local Time" +340 PRINT "3- Find Right Ascension and Declination, given ALT, AZ and LST" +350 PRINT "4- QUIT Program, Return to MBASIC":PRINT +360 INPUT "Enter Choice ==> ",CHOICE +370 IF CHOICE = 1 THEN GOTO 420 +380 IF CHOICE = 2 THEN GOTO 950 +390 IF CHOICE = 3 THEN GOTO 1270 +400 IF CHOICE = 4 THEN STOP +410 GOTO 360 +420 ' ************************ MENU CHOICE 1 *********************** +430 ' ------ALT/AZ CONVERSION ----------- +440 ' +450 ' -------INPUT OBJECT'S POSITION --------- +460 ' +470 PRINT CLS$ +480 PRINT "Find Altitude and Azimuth":PRINT:PRINT +490 PRINT "RA (HOURS)"; +500 INPUT RH +510 PRINT "RA (MINUTES)"; +520 INPUT RM +530 PRINT "RA (SECONDS)"; +540 INPUT RS +550 RA = RH + (RM/60) + (RS/3600) +560 PRINT +570 PRINT "DEC (DEGREES)"; +580 INPUT DD +590 PRINT "DEC (MINUTES)"; +600 INPUT DM +610 PRINT "DEC (SECONDS)"; +620 INPUT DS +630 DEC = DD + (DM/60) + (DS/3600) +640 ' +650 ' -------INPUT LMST & GET HA ----------- +660 ' +670 PRINT +680 PRINT "LMST (DECIMAL HOURS)"; +690 INPUT LMST +700 PRINT +710 HA = LMST - RA +720 HAD =HA *15 +730 ' +740 ' ------ CONVERT TO RADIANS ---------- +750 ' +760 L = LAT / RAD +770 H = HAD / RAD +780 D = DEC / RAD +790 ' +800 ' ---------- CALCULATE ALT / AZ -------- +810 ' +820 A = ( SIN (D) * (L)) + (COS (D) *COS (L)*COS (H)) +830 AA = ATN (A/SQR(-A * A +1)) +840 ALT = AA*RAD +850 AZ = (SIN (D) - (SIN (L)* SIN (A))) / (COS (L) * COS (A)) +860 AZA = - ATN(AZ/SQR (-AZ*AZ+1))+1.5708 +870 AZM = AZA*RAD +880 IF SIN (H) >0 THEN AZM = 360 - AZM +890 ' +900 ' -------- PRINT OUT RESULTS ------ +910 ' +920 PRINT " ALTITUDE = " ; ALT +930 PRINT " AZIMUTH = " ; AZM +940 PRINT:PRINT:INPUT " to Continue";CR:GOTO 290 +950 ' ****************** MENU CHOICE 2 ******************* +960 ' ------ LOCAL MEAN SIDEREAL TIME ------ +970 ' +980 ' The constants were moved from here to beginning of program +990 ' ----- INPUT VARIABLES ------ +1000 ' +1010 PRINT CLS$ +1020 PRINT "Find Local Sidereal Time, LST":PRINT:PRINT +1030 PRINT "DAY OF YEAR " ; +1040 INPUT D +1050 PRINT "LOCAL TIME (HOURS)"; +1060 INPUT H +1070 PRINT "LOCAL TIME (MINUTES)"; +1080 INPUT M +1090 PRINT "LOCAL TIME (SECONDS)"; +1100 INPUT S +1110 ' +1120 ' ------ CALCULATE QUANTITIES ------ +1130 ' +1140 PRINT +1150 SDT = H + ( M / 60 ) + (S / 3600) +1160 UT = SDT + TZ +1170 GMST = K1 + (K2*D) + (K3*UT) +1180 IF GMST > 24 THEN GMST = GMST - 24 : GOTO 1180 +1190 LMST = GMST - LONG +1200 ' +1210 ' ----- PRINT RESULTS ------ +1220 ' +1230 PRINT "LOCAL MEAN TIME =" ; SDT +1240 PRINT " GMST = " ; GMST +1250 PRINT " LMST = " ; LMST +1260 PRINT:PRINT:INPUT " to Continue";CR:GOTO 290 +1270 ' *************** MENU CHOICE 3 ********************* +1280 ' ADAPTED FROM RA-DEC.BAS +1290 ' ---------- RA & DEC CALCULATION ----- +1300 ' +1310 ' +1320 PRINT CLS$ +1330 PRINT "Find Right Ascension and Declination":PRINT:PRINT +1340 PRINT "ALTITUDE"; +1350 INPUT ALT +1360 PRINT "AZIMUTH"; +1370 INPUT AZ +1380 IF AZ > 180 THEN AZ = 360 - AZ : FLAG = 1 +1390 PRINT "LOCAL SIDEREAL TIME (DECIMAL HOURS)"; +1400 INPUT LMST +1410 ' +1420 ' ------ CONVERT TO RADIANS ------ +1430 ' +1440 A = ALT / RAD +1450 AZR = AZ / RAD +1460 L = LAT / RAD +1470 ' +1480 ' ------ CALCULATE RA AND DEC ------ +1490 ' +1500 ' D is sin(declination), A is altitude, L is latitude, AZR is azimuth +1510 D = (SIN(A)* SIN (L) ) + (COS (A) * COS (L) * COS (AZR) ) +1520 DC = ATN (D / SQR ( - D * D + 1 ) ) +1530 ' DC is declination +1540 H = (SIN (A) - (SIN (L) * D)) / (COS (L) * COS (DC)) +1550 ' H is cos(hour-angle) +1560 HC = -ATN (H / SQR (-H * H + 1)) + PI/2 +1570 ' HC is the hour-angle +1580 DEC = DC * RAD +1590 HA = HC * RAD +1600 IF FLAG = 1 GOTO 1620 +1610 IF SIN (HC) >0 THEN HA = 360 - HA +1620 HAH = HA / 15 +1630 RA = LMST - HAH +1640 IF RA <0 THEN RA = RA +24: GOTO 1640 +1650 ' +1660 ' ------ PRINT OUT RESULT ------ +1670 ' +1680 PRINT +1690 PRINT "RA = ";RA +1700 PRINT "DEC = ";DEC +1710 PRINT:PRINT:INPUT " to Continue";CR:GOTO 290 diff --git a/cpm/atten.INP b/cpm/atten.INP new file mode 100644 index 0000000..a4e8f01 --- /dev/null +++ b/cpm/atten.INP @@ -0,0 +1,12 @@ +PI +75 +50 +3 +TEE +75 +50 +3 +MIN +75 +50 +QUIT diff --git a/cpm/atten.bas b/cpm/atten.bas new file mode 100644 index 0000000..a8a0fdb --- /dev/null +++ b/cpm/atten.bas @@ -0,0 +1,73 @@ +10 'ATTENUATOR DESIGN PROGRAM +12 'Written in MICROSOOFT BASIC 7/31/82 by +14 ' Trevor Marshall, SYSOP, Thousand Oaks Technical RBBS +16 ' +20 'This program designs T, PI, or minimum loss attenuators +30 ' T PI Min Loss Z1>Z2 Z1X THEN GOTO 2600 'Loss too low +170 PRINT "Asymmetrical" +172 IF LEFT$(A$,1)="P" OR LEFT$(A$,1)="p" THEN GOTO 1000 +180 PRINT "Tee Section" : PRINT +190 PRINT "--R1-----R2--" +200 PRINT " |" +210 PRINT " R3" +220 PRINT " |" +230 PRINT "-------------" : PRINT : GOTO 2000 +1000 PRINT " PI Section" :PRINT +1010 PRINT "------R3------" +1020 PRINT " | |" +1030 PRINT " R1 R2" +1040 PRINT " | |" +1050 PRINT "--------------" +2000 PRINT "Source Impedance=";A;: PRINT ",Terminating Impedance=";B; +2010 PRINT "Loss (dB)=";X +2020 Y=10!^(X/10!) : IF LEFT$(A$,1)="P" OR LEFT$(A$,1)="p" THEN GOTO 2500 +2040 R3=SQR(Y*A*B)*2!/(Y-1) +2060 PRINT "R1=";A*((Y+1!)/(Y-1!))-R3; +2080 PRINT ",R2=";B*((Y+1!)/(Y-1!))-R3; +2090 PRINT ",R3=";R3 : PRINT : PRINT : GOTO 10 +2500 R3=((Y-1!)/2!)*SQR(A*B/Y) +2510 PRINT "R1=";1!/(((Y+1!)/(A*(Y-1!)))-1!/R3); +2520 PRINT ",R2=";1!/(((Y+1!)/(B*(Y-1!)))-1!/R3); +2530 PRINT ",R3=";R3 : PRINT : PRINT : GOTO 10 +2600 PRINT "Specified loss is too low..adjusting to...." +3000 PRINT "MINIMUM LOSS PAD DESIGN" : PRINT +3010 IF A>B THEN GOTO 5000 +3020 PRINT "Pad for Z2 > Z1" : PRINT +3030 PRINT "--------R1----" +3040 PRINT " |" +3050 PRINT " R2" +3060 PRINT " |" +3070 PRINT "--------------" : PRINT +4000 PRINT "Source Impedance=";A;: PRINT ",Terminating Impedance=";B +4010 GOSUB 6000 +4020 PRINT "R1=,";R0*SQR(1!-R1/R0);: PRINT ",R2=";R1/(SQR(1!-R1/R0)) +4030 PRINT "Loss (dB)=";R2 : PRINT : PRINT : GOTO 10 +5000 PRINT "Pad for Z1 > Z2" : PRINT +5010 PRINT "----R1--------" +5020 PRINT " |" +5030 PRINT " R2" +5040 PRINT " |" +5050 PRINT "--------------" +5060 GOTO 4000 +6000 R0=A : R1=B : IF B>A THEN R0=B : IF B>A THEN R1=A +6010 R2=10!*LOG((SQR(R0/R1)+SQR(R0/R1-1!))^2!)/2.30259 : RETURN +7000 REM ---------------------------------------------------------------- +7010 REM Updated for bwBASIC 3.0 by Howard Wulf, AF5NE, May 7th 2015: +7020 REM a) Added line 105 for automated testing +7030 REM +7999 END + diff --git a/cpm/audiolab.INP b/cpm/audiolab.INP new file mode 100644 index 0000000..259638a --- /dev/null +++ b/cpm/audiolab.INP @@ -0,0 +1,11 @@ +1 +120 +50 +N +Y +2 +1000 +50 +N +Y +0 diff --git a/cpm/audiolab.bas b/cpm/audiolab.bas new file mode 100644 index 0000000..2b6ebcc --- /dev/null +++ b/cpm/audiolab.bas @@ -0,0 +1,192 @@ +5 PRINT CHR$(27);CHR$(42) +10 REM Audiolab Program +20 PRINT TAB(20);"-=*AUDIO LAB PROGRAM*=-" +25 REM---------Menu--------- +30 PRINT"Select the program you require from the following menu" +50 PRINT TAB(10);"(0) Exit from program. (Changed my mind)" +70 PRINT TAB(10);"(1) Calculate power, given voltage and impedance" +90 PRINT TAB(10);"(2) Calculate voltage, given power and impedance" +110 PRINT TAB(10);"(3) Calculate the dB ratio of two voltages" +130 PRINT TAB(10);"(4) Calculate the dB ratio of two power values" +150 PRINT TAB(10);"(5) Change percent (%), to dB" +170 PRINT TAB(10);"(6) Change dB to percent (%)" +190 PRINT TAB(10);"(7) Calculate dBf, given a number in microvolts" +210 PRINT TAB(10);"(8) Calculate microvolts (uV), given dBf" +230 PRINT TAB(10);"(9) Damping factor of an amplifier with 8-ohm loads" +235 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT +240 PRINT"ENTER THE NUMBER OF YOUR CHOICE AND PRESS 'RETURN'" +250 INPUT C +260 IF C=0 GOTO 1430 REM (exit) +270 ON C GOTO 290,420,550,680,810,900,990,1110,1220 +280 IF C>9 GOTO 20 +285 REM--------Power/voltage +290 PRINT"To calculate POWER enter the VOLTAGE" +295 LPRINT CHR$(&H1F);CHR$(1); +300 LPRINT"To calculate POWER enter the VOLTAGE" +310 INPUT V +320 LPRINT V;" volts" +330 PRINT"Now enter the impedance, in ohms" +340 LPRINT"Now enter the impedance, in ohms" +350 INPUT R +360 LPRINT R;" ohms" +370 LET P=V^2/R +380 PRINT"Power equals> ";P;"< watts" +390 LPRINT"Power equals> ";P;"< WATTS" +400 LPRINT +401 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +402 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)" +405 IF ANS$="Y" THEN 290 +407 LPRINT ANS$ +408 PRINT +410 GOTO 1370 REM (again? or exit program) +420 PRINT"To calculate VOLTAGE,for a given power, enter POWER, in watts" +430 LPRINT"To calculate VOLTAGE, for a given power, enter POWER, in watts" +440 INPUT P +450 LPRINT P;" watts" +460 PRINT"Now enter the load impedance, in ohms" +470 LPRINT"Now enter the load impedance, in ohms" +480 INPUT Z +490 LPRINT Z;" ohms" +500 LET V=SQR(P*Z) +510 PRINT"Voltage for that power equals> ";V;"< volts" +520 LPRINT"Voltage for that power equals> ";V;"< volts" +530 LPRINT +531 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +532 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)" +533 IF ANS$="Y" THEN 420 +538 LPRINT ANS$ +539 PRINT +540 GOTO 1370 +545 REM--------dB/voltage ratios-------- +550 PRINT"To calculate the dB ratio of two voltages, enter larger voltage" +560 LPRINT"To calculate the dB ratio of two voltages, enter larger voltage" +570 INPUT V1 +580 LPRINT V1;" volts" +590 PRINT"Now enter the smaller voltage" +600 LPRINT"Now enter the smaller voltage" +610 INPUT V2 +620 LPRINT V2;" volts" +630 LET DB=20*LOG(V1/V2)/LOG(10) +640 PRINT"The voltage ratio, in decibels, is> ";DB;"< dB" +650 LPRINT"The voltage ratio, in decibels, is> ";DB;"< dB" +660 LPRINT +661 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +662 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N) +663 IF ANS$="Y" THEN 550 +664 LPRINT ANS$ +667 PRINT +670 GOTO 1370 +675 REM--------dB/power ratios--------- +680 PRINT"To calculate the dB ratio of two powers, enter larger power" +690 LPRINT"To calculate the dB ratio of two powers, enter larger power" +700 INPUT P1 +710 LPRINT P1;" watts" +720 PRINT"Now enter the smaller power value" +730 LPRINT"Now enter the smaller power value" +740 INPUT P2 +750 LPRINT P2;" watts +760 LET DB=10*LOG(P1/P2)/LOG(10) +770 PRINT"The power ratio, in dB, is> ";DB;"< dB" +780 LPRINT"The power ratio, in dB, is> ";DB;"< dB" +790 LPRINT +791 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +792 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)" +793 IF ANS$="Y" THEN 680 +794 LPRINT ANS$ +797 PRINT +800 GOTO 1370 +805 REM--------dB/percent-------- +810 PRINT"To change percent to dB, enter the percentage (numerals only)" +820 LPRINT"To change percent to dB, enter the percentage (numerals only)" +830 INPUT P +840 LPRINT P;" %" +850 LET DB=20*LOG(1/(P/100))/LOG(10) +860 PRINT"The equivalent decibel ratio is> ";DB;"< dB" +870 LPRINT"The equivalent decibel ratio is> ";DB;"< dB" +880 LPRINT +881 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +882 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)" +883 IF ANS$="Y" THEN 810 +884 LPRINT ANS$ +887 PRINT +890 GOTO 1370 +900 PRINT"To change dB to percent (%), enter the value in dB" +910 LPRINT"To change dB to percent (%), enter the value in dB" +920 INPUT DB +930 LPRINT DB;" dB +940 LET P=100*10^(-DB/20) +950 PRINT"The equivalent percentage is> ";P;"< %" +960 LPRINT"The equivalent percentage is> ";P;"< %" +970 LPRINT +971 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +972 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)" +973 IF ANS$="Y" THEN 900 +974 LPRINT ANS$ +977 PRINT +980 GOTO 1370 +985 REM--------uV/dBf------- +990 PRINT"To convert microvolts (uV), to dBf, enter the value in uV" +1000 LPRINT"To convert microvolts (uV), to dBf, enter the value in uV" +1010 INPUT UV +1020 LPRINT UV;" uV" +1030 LET DB=20*LOG(UV/.55)/LOG(10) +1040 PRINT"For a 300-ohm input, the dBf value is> ";DB;"< dBf" +1050 LPRINT"For a 300-ohm input, the dBf, value is> ";DB;"< dBf" +1060 PRINT +1070 PRINT"For a 75-ohm input, the dBf value is> ";DB+6;"< dBf" +1080 LPRINT"For a 75-ohm input, the dBf value is> ";DB+6;"< dBf" +1090 LPRINT +1091 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +1092 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)" +1093 IF ANS$="Y" THEN 990 +1094 LPRINT ANS$ +1097 PRINT +1100 GOTO 1370 +1110 PRINT"To convert dBf to microvolts, (uV), enter the number of dBf" +1120 LPRINT"To convert dBf to microvolts, (uV), enter the number of dBf" +1130 INPUT DB +1140 LPRINT DB;" dBf" +1150 LET UV=10^(DB/20)*.55 +1160 PRINT"For a 300-ohm input, the microvolt value is> ";UV;"< uV" +1170 LPRINT"For a 300-ohm input, the microvolt value is> ";UV;"< uV" +1180 PRINT +1190 PRINT"For a 75-ohm input, the microvolt value is> ";UV/2;"< uV" +1200 LPRINT"For a 75-ohm input, the microvolt value is> ";UV/2;"< uV" +1203 LPRINT +1205 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +1206 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)" +1207 IF ANS$="Y" THEN 1110 +1208 LPRINT ANS$ +1209 PRINT +1210 GOTO 1370 +1215 REM--------Damping factor-------- +1220 PRINT"To calculate the damping factor of an amplifier working into" +1230 LPRINT"To calculate the damping factor of an amplifier working into" +1240 PRINT"8-ohm loads, ENTER THE VOLTAGE UNDER NO-LOAD CONDITIONS" +1250 LPRINT"8-ohm loads, ENTER THE VOLTAGE UNDER NO-LOAD CONDITIONS" +1260 INPUT V1 +1270 LPRINT V1;" no-load volts" +1280 PRINT"Now ENTER VOLTAGE WHEN LOAD IS APPLIED (should be lower value)" +1290 LPRINT"Now ENTER VOLTAGE WHEN LOAD IS APPLIED (should be lower value)" +1300 INPUT V2 +1310 LPRINT V2;" volts, under load" +1320 LET D=V2/(V1-V2) +1330 PRINT"The damping factor for the amplifier is> ";D;"< ." +1340 LPRINT"The damping factor for the amplifier is> ";D;"< " +1350 LPRINT +1355 PRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)":INPUT ANS$ +1356 LPRINT"DO YOU WISH TO DO THIS CALCULATION AGAIN? (Y/N)" +1357 IF ANS$="Y" THEN 1220 +1358 LPRINT ANS$ +1359 PRINT +1360 GOTO 1370 +1370 PRINT +1375 REM-------reselect/exit---------- +1380 PRINT"Do you wish to return to the menu? (Y/N)" +1390 LPRINT"Do you wish to return to the menu? (Y/N)" +1400 INPUT A$ +1410 LPRINT A$ +1420 IF A$="Y" GOTO 5 +1430 PRINT"Happy to have been of service!! SEE YOU LATER!!" +1440 LPRINT"Happy to have been of service!! SEE YOU LATER!!" +1450 END diff --git a/cpm/bigcal2.INP b/cpm/bigcal2.INP new file mode 100644 index 0000000..b1971b4 --- /dev/null +++ b/cpm/bigcal2.INP @@ -0,0 +1,10 @@ +10 +EA +1234567.89 +EB +9876543.21 +ADD +XAB +XAB +DIV +QUIT diff --git a/cpm/bigcal2.bas b/cpm/bigcal2.bas new file mode 100644 index 0000000..2c86437 --- /dev/null +++ b/cpm/bigcal2.bas @@ -0,0 +1,349 @@ +90 PRINT CHR$(26): 'Put your clear screen code here !! +100 PRINT TAB(25);"EXTENDED PRECISION CALCULATOR":PRINT +110 ' +120 PRINT TAB(30); "JUDSON D. MCCLENDON":PRINT +130 ' 844 Sun Valley Road +140 ' Birmingham, AL 35215 +150 ' +160 ' Compuserve 74415,1003 +170 ' +180 PRINT TAB(20);" Modified for S-Basic by R.J. Sandel" +190 ' Added always dump and fundamental operations print. +191 ' Corrected obvious errors, and added initial instructions +192 PRINT:PRINT:PRINT:PRINT: +193 PRINT "Legal commands are: ADD, SUB, MUL, & DIV for math operations" +194 PRINT:PRINT "A or EA for Enter into Register A: "; +195 PRINT " PA for Print A: CA for Clear A " +196 PRINT: PRINT "XAB for Exchange A and B: MAB for Move A into B: "; +197 PRINT " similar for other registers":PRINT +198 PRINT "ZAP for Clear All: END or QUIT or Q for termination.":PRINT +199 PRINT:PRINT "Warning !!! 100 place divisions take a while !!!":PRINT:PRINT +200 PRINT TAB(30);:INPUT "Enter maximum (10 to 100) precision desired ";SZ$ +205 ' SIZE = MAXIMUM DIGITS PRECISION +206 PRINT CHR$(26): ' Clear Screen Again +210 DEFINT A-Z : I=0:J=0:K=0:L=0 +220 SIZE = VAL(SZ$) +221 IF SIZE <10 THEN 200 +222 IF SIZE > 100 THEN 200 +230 E1=0:E2=0:E3=0:E4=0: ' DIGITS TO LEFT OF DECIMAL POINT +240 E6=0:E7=0:E8=0:E9=0: ' NUMBER LENGTH +250 DIM EA(SIZE),EB(SIZE),EC(SIZE),EH(SIZE): ' REGISTERS EH IS TEMP HOLD +1000 ' *** Command Loop +1010 PRINT +1015 GOSUB 8000:PRINT +1020 LINE INPUT "ENTER COMMAND: ",COMMAND$ +1025 COMMAND$=TRIM$(COMMAND$) +1030 IF COMMAND$="END" THEN END +1031 IF COMMAND$="Q" THEN END +1032 IF COMMAND$="QUIT" THEN END +1040 IF COMMAND$="ADD" THEN GOSUB 3000:GOTO 1000 +1050 IF COMMAND$="SUB" THEN GOSUB 4000:GOTO 1000 +1060 IF COMMAND$="MUL" THEN GOSUB 5000:GOTO 1000 +1070 IF COMMAND$="DIV" THEN GOSUB 6000:GOTO 1000 +1200 IF COMMAND$="DMP" THEN GOSUB 8000:GOTO 1000 +1210 IF COMMAND$="EA" THEN GOSUB 8100:GOTO 1000 +1211 IF COMMAND$="A" THEN GOSUB 8100:GOTO 1000 +1220 IF COMMAND$="PA" THEN GOSUB 8200:GOTO 1000 +1230 IF COMMAND$="EB" THEN GOSUB 8300:GOTO 1000 +1231 IF COMMAND$="B" THEN GOSUB 8300:GOTO 1000 +1240 IF COMMAND$="PB" THEN GOSUB 8400:GOTO 1000 +1250 IF COMMAND$="EC" THEN GOSUB 8500:GOTO 1000 +1251 IF COMMAND$="C" THEN GOSUB 8500:GOTO 1000 +1260 IF COMMAND$="PC" THEN GOSUB 8600:GOTO 1000 +1270 IF COMMAND$="XAB" THEN GOSUB 8700:GOTO 1000 +1280 IF COMMAND$="XAC" THEN GOSUB 8800:GOTO 1000 +1290 IF COMMAND$="XBC" THEN GOSUB 8900:GOTO 1000 +1300 IF COMMAND$="ZAP" THEN GOSUB 9000:GOTO 1000 +1310 IF COMMAND$="MAB" THEN GOSUB 9100:GOTO 1000 +1320 IF COMMAND$="MAC" THEN GOSUB 9200:GOTO 1000 +1330 IF COMMAND$="CA" THEN GOSUB 9300:GOTO 1000 +1340 IF COMMAND$="MBA" THEN GOSUB 9400:GOTO 1000 +1350 IF COMMAND$="MBC" THEN GOSUB 9500:GOTO 1000 +1360 IF COMMAND$="CB" THEN GOSUB 9600:GOTO 1000 +1370 IF COMMAND$="MCA" THEN GOSUB 9700:GOTO 1000 +1380 IF COMMAND$="MCB" THEN GOSUB 9800:GOTO 1000 +1390 IF COMMAND$="CC" THEN GOSUB 9900:GOTO 1000 +1900 PRINT "Invalid Command" +1910 GOTO 1000 +3000 PRINT:PRINT " B = B + A ":PRINT +3010 IF E19 THEN EB(I-1)=EB(I-1)+1:EB(I)=EB(I)-10 +3130 NEXT +3140 GOSUB 7700 +3150 GOSUB 7800 +3190 RETURN +4000 PRINT:PRINT " B = B - A ":PRINT +4010 IF E1=SIZE THEN 5100 +5070 WHILE EC(K+1)>9 +5080 EC(K)=EC(K)+1:EC(K+1)=EC(K+1)-10 +5090 WEND +5100 NEXT +5110 FOR L=E8 TO 0 STEP -1 +5120 EC(L+1)=EC(L) +5130 NEXT :EC(0)=0 +5140 E8=E8+1 +5150 NEXT +5160 E8=E6+E7:E3=E1+E2 +5170 GOSUB 7900 +5190 RETURN +6000 PRINT:PRINT " C = B / A ":PRINT +6010 IF E6=0 THEN PRINT "Divide by Zero":RETURN +6020 GOSUB 9900 +6030 E9=E7:E4=E2:FOR I=0 TO E7:EH(I)=EB(I):NEXT +6040 IF E20 THEN ZF=0 +6530 EB(I-1)=EB(I) +6540 NEXT +6560 IF E8E1) AND (EA(E6)=0):E6=E6-1:WEND +7720 IF E6=0 THEN E1=0:GOTO 7790 +7730 IF EA(0)<>0 THEN SC=1:GOSUB 7200:GOTO 7790 +7740 I=1:WHILE (I1 THEN SC=I-1:GOSUB 7100 +7790 RETURN +7800 ' Normalize B +7810 WHILE (E7>E2) AND (EB(E7)=0):E7=E7-1:WEND +7820 IF E7=0 THEN E2=0:GOTO 7890 +7830 IF EB(0)<>0 THEN SC=1:GOSUB 7400:GOTO 7890 +7840 I=1:WHILE (I1 THEN SC=I-1:GOSUB 7300 +7890 RETURN +7900 ' Normalize C +7910 WHILE (E8>E3) AND (EC(E8)=0):E8=E8-1:WEND +7920 IF E8=0 THEN E3=0:GOTO 7990 +7930 IF EC(0)<>0 THEN SC=1:GOSUB 7600:GOTO 7990 +7940 I=1:WHILE (I1 THEN SC=I-1:GOSUB 7500 +7990 RETURN +8000 ' Dump Registers +8010 GOSUB 8200 +8020 GOSUB 8400 +8030 GOSUB 8600 +8090 RETURN +8100 ' Extract EA from string +8110 GOSUB 9300 :INPUT "Enter A: ",EN$ :E1=LEN(EN$) +8120 FOR I=1 TO LEN(EN$) +8130 X$=MID$(EN$,I,1) +8140 IF X$="." THEN E1=E6:GOTO 8180 +8150 IF X$<"0" OR X$>"9" THEN PRINT "Error in A, char:";I +8160 E6=E6+1 +8170 EA(E6)=VAL(X$) +8180 NEXT :GOSUB 7700 +8190 RETURN +8200 ' PRINT A +8210 PRINT "A: "; :CC=3 +8220 IF E1=0 THEN PRINT "0"; :CC=4 +8230 FOR I=1 TO E6 +8240 IF I=E1+1 THEN PRINT "."; :CC=CC+1 +8250 PRINT USING "#";EA(I); :CC=CC+1 +8260 IF I<>E1 THEN IF ABS(I-E1)MOD 5=0 THEN PRINT " "; +8261 CC=CC+1:IF CC>70 THEN PRINT:PRINT " ";:CC=3 +8262 IF E1=0 THEN PRINT " ";:CC=4 +8270 NEXT:PRINT +8290 RETURN +8300 ' EXTRACT EB FROM STRING +8310 GOSUB 9600 :INPUT "Enter B: ",EN$ :E2=LEN(EN$) +8320 FOR I=1 TO LEN(EN$) +8330 X$=MID$(EN$,I,1) +8340 IF X$="." THEN E2=E7:GOTO 8380 +8350 IF X$<"0" OR X$>"9" THEN PRINT "Error in B, char:";I +8360 E7=E7+1 +8370 EB(E7)=VAL(X$) +8380 NEXT :GOSUB 7800 +8390 RETURN +8400 ' PRINT B +8410 PRINT "B: "; :CC=3 +8420 IF E2=0 THEN PRINT "0"; :CC=4 +8430 FOR I=1 TO E7 +8440 IF I=E2+1 THEN PRINT "."; :CC=CC+1 +8450 PRINT USING "#";EB(I); :CC=CC+1 +8460 IF I<>E2 THEN IF ABS(I-E2)MOD 5=0 THEN PRINT " ";:CC=CC+1 +8461 IF CC>70 THEN PRINT:PRINT " ";:CC=3:IF E2=0 THEN PRINT " ";:CC=4 +8470 NEXT:PRINT +8490 RETURN +8500 ' Extract EC from string +8510 GOSUB 9900 :INPUT "Enter C: ",EN$ :E3=LEN(EN$) +8520 FOR I=1 TO LEN(EN$) +8530 X$=MID$(EN$,I,1) +8540 IF X$="." THEN E3=E8:GOTO 8580 +8550 IF X$<"0" OR X$>"9" THEN PRINT "Error in C, char";I +8560 E8=E8+1 +8570 EC(E8)=VAL(X$) +8580 NEXT :GOSUB 7900 +8590 RETURN +8600 ' Print C +8610 PRINT "C: "; :CC=3 +8620 IF E3=0 THEN PRINT "0"; :CC=4 +8630 FOR I=1 TO E8 +8640 IF I=E3+1 THEN PRINT "."; :CC=CC+1 +8650 PRINT USING "#";EC(I); :CC=CC+1 +8660 IF I<>E3 THEN IF ABS(I-E3)MOD 5=0 THEN PRINT " "; +8661 CC=CC+1:IF CC>70 THEN PRINT:PRINT " "; +8662 CC=3:IF E3=0 THEN PRINT " ";:CC=4 +8670 NEXT:PRINT +8690 RETURN +8700 ' Exchange A BT +8710 IF E6>E7 THEN J=E6 ELSE J=E7 +8720 FOR I=0 TO J:T=EA(I):EA(I)=EB(I):EB(I)=T:NEXT ' FOR I=0 TO J:SWAP EA(I),EB(I):NEXT +8730 SWAP E6,E7:SWAP E1,E2 +8790 RETURN +8800 ' Exchange A C +8810 IF E6>E8 THEN J=E6 ELSE J=E8 +8820 FOR I=0 TO J:T=EA(I):EA(I)=EC(I):EC(I)=T:NEXT ' FOR I=0 TO J:SWAP EA(I),EC(I):NEXT +8830 SWAP E6,E8:SWAP E1,E3 +8890 RETURN +8900 ' Exchange B C +8910 IF E7>E8 THEN J=E7 ELSE J=E8 +8920 FOR I=0 TO J:T=EB(I):EB(I)=EC(I):EC(I)=T:NEXT ' FOR I=0 TO J:SWAP EB(I),EC(I):NEXT +8930 SWAP E7,E8:SWAP E2,E3 +8990 RETURN +9000 ' Clear all regs +9010 GOSUB 9300 +9020 GOSUB 9600 +9030 GOSUB 9900 +9090 RETURN +9100 ' Move A B T +9110 IF E6>E7 THEN J=E6 ELSE J=E7 +9120 FOR I=0 TO J:EB(I)=EA(I):NEXT +9130 E7=E6:E2=E1 +9190 RETURN +9200 ' Move A C " +9210 IF E6>E8 THEN J=E6 ELSE J=E8 +9220 FOR I=0 TO J:EC(I)=EA(I):NEXT +9230 E8=E6:E3=E1 +9290 RETURN +9300 ' Clear A +9320 FOR I=0 TO E6:EA(I)=0:NEXT +9330 E6=0:E1=0 +9390 RETURN +9400 ' Move B A +9410 IF E6>E7 THEN J=E6 ELSE J=E7 +9420 FOR I=0 TO J:EA(I)=EB(I):NEXT +9430 E6=E7:E1=E2 +9490 RETURN +9500 ' Move B C +9510 IF E7>E8 THEN J=E7 ELSE J=E8 +9520 FOR I=0 TO J:EC(I)=EB(I):NEXT +9530 E8=E7:E3=E2 +9590 RETURN +9600 ' Clear BNT +9620 FOR I=0 TO E7:EB(I)=0:NEXT +9630 E7=0:E2=0 +9690 RETURN +9700 ' Move C A +9710 IF E6>E8 THEN J=E6 ELSE J=E8 +9720 FOR I=0 TO J:EA(I)=EC(I):NEXT +9730 E6=E8:E1=E3 +9790 RETURN +9800 ' Move C B +9810 IF E7>E8 THEN J=E7 ELSE J=E8 +9820 FOR I=0 TO J:EB(I)=EC(I):NEXT +9830 E7=E8:E2=E3 +9890 RETURN +9900 ' Clear C +9920 FOR I=0 TO E8:EC(I)=0:NEXT +9930 E8=0:E3=0 +9990 RETURN +9991 REM --------------------------------- +9992 REM Updated for bwBASIC 3.0 by Howard Wulf, AF5NE, May 7th 2015: +9993 REM a) added line 1025 +9994 REM b) changed SWAP EA(I),EB(I) +9999 END + diff --git a/cpm/birthday.INP b/cpm/birthday.INP new file mode 100644 index 0000000..2e14629 --- /dev/null +++ b/cpm/birthday.INP @@ -0,0 +1,10 @@ +05,07,2015 +TOM CAT +NO +JERRY MOUSE +123 +12 +NO +1 +JANUARY +2 diff --git a/cpm/birthday.bas b/cpm/birthday.bas new file mode 100644 index 0000000..e3f8114 --- /dev/null +++ b/cpm/birthday.bas @@ -0,0 +1,155 @@ +100 REM BIRTHDAY UPDATED 5-5-77 TO "MITS" BY D. NIXON +110 DIM Z$(12),L(12),N(60),Y$(7) +120 DIM G$(12),H$(32) +130 FOR I=1 TO 12:READ Z$(I):NEXT +140 FOR I=1 TO 12:READ L(I):NEXT +150 FOR I=1 TO 7:READ Y$(I): NEXT +160 FOR I=1 TO 12:READ G$(I):NEXT +170 FOR I=1 TO 32:READ H$(I):NEXT +180 DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST: +190 DATA SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER: +200 DATA 31,28,31,30,31,30,31,31,30,31,30,31: +210 DATA THURS,FRI,SATUR,SUN,MON,TUES,WEDNES: +220 DATA THE MOON,THE SUN,THE EARTH,THE PLANET MERCURY,VENUS,MARS: +230 DATA JUPITER,SATURN,THE PLANET URANUS,THE PLANET NEPTUNE: +240 DATA THE PLANET PLUTO,PEANUT BUTTER: +250 DATA JUXTAROTATION,CONTRAPOSITION,CONTRASTING PHASES,TRANSPOSITION: +260 DATA SATISFIED,HAPPY,INTERESTING,TOLERANT: +270 DATA OFTEN,OCCASIONALLY,SOMETIMES: +280 DATA TEND TO BE,ARE,ARE INCLINED TO BE: +290 DATA SHORT OF PATIENCE,UNEASY,AT ODDS: +300 DATA OTHERS.,CLOSE FRIENDS.,YOUNGER PEOPLE.,THOSE IN AUTHORITY.: +310 DATA ": BEWARE OF "," AVOID " +320 DATA APPLE PIE,BEING ALONE,DARK PLACES,STRANGERS,UNUSUAL SITUATIONS: +330 DATA BE TAKING A TRIP YOU HAVE NOT MADE BEFORE. +340 DATA BE MEETING SOMEONE YOU WILL KNOW FOR THE REST OF YOUR LIFE. +350 DATA MAKE SEVERAL IMPORTANT DECISIONS INVOLVING OTHERS. +360 DATA BECOME ILL IF YOU DO NOT LESSEN YOUR UNUSUAL ACTIVITIES. +370 PRINT "TYPE IN TODAY'S DATE NUMERICALLY: MO,DAY,YEAR"; +380 INPUT X1,Y1,Z1 +390 IF Z1>99 GOTO 410 +400 Z1=Z1+1900 +410 XF=X1:YF=Y1:ZF=Z1:GOSUB 1220:U=ND +420 PRINT "TODAY IS ";Y$(U-7*INT(U/7)+1);"DAY (I HOPE)" +430 PRINT +440 PRINT "HI, I'M A MICROPROCESSOR." +450 PRINT "TELL ME YOUR NAME"; +460 INPUT N$ +470 I=INSTR(N$," ")-1 +480 IF I<0 THEN 580 +490 K$=LEFT$(N$,I) +500 PRINT "ARE YOU USUALLY CALLED ";K$; +510 INPUT A$ +520 GOSUB 1140 +530 ON NA GOTO 540,560,510 +540 PRINT "WHAT DO YOU LIKE TO BE CALLED"; +550 INPUT K$ +560 PRINT "SO YOUR FULL NAME IS ";N$;", BUT YOU" +570 PRINT "LIKE TO BE CALLED ";K$;"." +580 PRINT "HOW OLD ARE YOU, ";K$; +590 INPUT A +600 A=INT(A) +610 IF INT((A-5)/95)=0 GOTO 640 +620 PRINT "COME ON, ";K$;", YOU'RE PULLING MY LEG." +630 GOTO 580 +640 PRINT "SO YOU ARE";A;"YEARS OLD." +650 PRINT "DO YOU KNOW, OFF HAND, HOW MANY DAYS OLD YOU ARE"; +660 INPUT A$ +670 GOSUB 1140 +680 ON NA GOTO 720,690,660 +690 PRINT "OK, SMARTY, HOW MANY?" +700 PRINT "SORRY, ";K$;", YOU'LL HAVE TO BE FASTER THAN THAT!" +710 GOTO 1600 +720 PRINT "OK, I'LL TELL YOU." +730 PRINT "IN WHAT MONTH WERE YOU BORN"; +740 INPUT M$ +750 FOR X=1 TO 12 +760 IF M$=Z$(X) GOTO 800 +770 NEXT X +780 PRINT K$;", YOU MAY BE NICE BUT YOU CAN'T SPELL." +790 GOTO 730 +800 PRINT "ON WHAT DAY"; +810 INPUT Y +820 Z=Z1-A +830 IF INT((Y-1)/L(X))=0 GOTO 870 +840 IF (X-1)*(Y-28)*(Z-4*INT(Z/4)+1)=1 GOTO 870 +850 PRINT "COME ON, ";N$;", YOU'RE GIVING ME A HARD TIME." +860 GOTO 800 +870 REM +880 XF=X1:YF=Y1:ZF=Z:GOSUB 1220:W=ND +890 XF=X:YF=Y:ZF=Z:GOSUB 1220:V=ND +900 IF W >= V GOTO 920 +910 Z=Z-1 +920 IF ABS(W-V)>30 GOTO 990 +930 ON SGN(W-V)+2 GOTO 940,980,960 +940 PRINT "YOU HAVE A BIRTHDAY COMING UP IN ONLY";V-W;"DAYS!" +950 GOTO 990 +960 PRINT "YOUR BIRTHDAY WAS ONLY";W-V;"DAYS AGO. CONGRATULATIONS!" +970 GOTO 990 +980 PRINT "HAPPY BIRTHDAY, DEAR ";K$;", HAPPY BIRTHDAY TO YOU." +990 XF=X:YF=Y:ZF=Z:GOSUB 1220:V=ND +1000 PRINT "YOU WERE BORN ON ";Y$(V-7*INT(V/7)+1);"DAY, ";Z$(X);Y;",";Z +1010 PRINT "WHICH MAKES YOU";U-V;"DAYS OLD." +1020 PRINT "YOU WERE BORN ON THE DAY";V;"AD, AND ON JAN. 1, 2000" +1030 PRINT "YOU WILL BE";730480!-V;"DAYS OLD." +1040 PRINT "HOW ABOUT THAT!!!" +1050 PRINT +1060 GOSUB 1350 +1070 PRINT "WELL, ";N$; +1080 IF N$=K$ GOTO 1100 +1090 PRINT " (ALIAS ";K$;")" +1100 PRINT " IT HAS BEEN NICE CHATTING WITH YOU. DO COME AGAIN." +1110 PRINT "GOOD BYE" +1120 GOTO 1600 +1130 REM SUBROUTINE FOR YES NO REQUEST +1140 NA=1 +1150 IF A$="NO" GOTO 1210 +1160 IF A$="N0" GOTO 1210 +1170 NA=2 +1180 IF A$="YES" GOTO 1210 +1190 NA=3 +1200 PRINT "A SIMPLE YES OR NO WILL DO! " +1210 RETURN +1220 REM SUBROUTINE TO SOLVE FOR NUMBER OF DAYS +1230 ND=YF-1 +1240 FOR I1=1 TO XF-1 +1250 ND=ND+L(I1) +1260 NEXT I1 +1270 I1=INT(ZF/100) +1280 IF ZF<>4*INT(ZF/4) GOTO 1330 +1290 IF ZF/100=I1 GOTO 1330 +1300 IF ND>59 GOTO 1330 +1310 IF XF=3 GOTO 1330 +1320 ND=ND-1 +1330 ND=ND+36524!*I1+INT(365.25*(ZF-100*I1)) +1340 RETURN +1350 REM GENERATE RANDOM HOROSCOPE +1360 R1=INT(12*RND(1))+1 +1370 R2 = INT(12*RND(1))+1 +1380 IF R1=R2 GOTO 1370 +1390 R=1 +1400 X=4:GOSUB 1570 +1410 PRINT "YOU WERE BORN UNDER THE ";H$(NR);" OF ";G$(R1) +1420 X=4:GOSUB 1570 +1430 PRINT "AND ";G$(R2);". YOU ARE A BASICALLY ";H$(NR) +1440 X=3:GOSUB 1570 +1450 PRINT "PERSON BUT ";H$(NR); +1460 GOSUB 1570 +1470 PRINT " YOU ";H$(NR) +1480 GOSUB 1570:N1=NR:X=4:GOSUB 1570:N2=NR:X=2:GOSUB 1570 +1490 PRINT H$(N1);" WITH ";H$(N2);H$(NR) +1500 X=5:GOSUB 1570 +1510 PRINT H$(NR);" FOR THE NEXT WEEK. I PREDICT YOU WILL SOON" +1520 X=4:GOSUB 1570 +1530 PRINT H$(NR) +1540 PRINT +1550 RETURN +1560 REM SUBROUTINE TO SELECT RANDOM WORDS +1570 NR=INT(X*RND(1))+R +1580 R=R+X +1590 RETURN +1600 REM END +9991 REM --------------------------------- +9992 REM Updated for bwBASIC 3.0 by Howard Wulf, AF5NE, May 7th 2015: +9993 REM a) changed => to >= on line 900 +9999 END diff --git a/cpm/budget.txt b/cpm/budget.txt new file mode 100644 index 0000000..4fd3e13 --- /dev/null +++ b/cpm/budget.txt @@ -0,0 +1,250 @@ +10 REM ************ RECURSIVE BUDGETING ***************** +20 REM +30 REM by O.E. Dial +40 REM +50 REM Ref. 'PERSONAL COMPUTING' May/June 1977 +60 REM pgs. 54-59 +70 REM +80 REM -------------------------------------------------- +90 REM +100 Q=27: V$="###.#" : W$="$$#####," : U$="###" +110 CL$=CHR$(27)+CHR$(69):REM Screen clear +120 DIM D(18),E$(Q),V(Q),F(Q) +130 PRINT CL$; +140 PRINT TAB(19)"RECURSIVE BUDGETING MODEL": PRINT: PRINT TAB(28)"* * *" +150 PRINT CL$; +160 DATA SALARY/WAGES,OTHER INCOME,FED INC TAX,STATE AND LOCAL TAX +170 DATA SOCIAL SECURITY,UNEMPLOYMENT INS,HEALTH INS +180 DATA LIFE INS,CONTRIBUTIONS,OTHER DEDUCTIONS +190 DATA RENT/MORTGAGE,LIFE INS, HEALTH INS, HOUSE INS +200 DATA AUTO INS,CAR PAYMENTS,LOAN PAYMENTS,TRASH REMOVAL +210 DATA OTHER FIXED EXP +220 DATA FOOD/BEVERAGES,CLOTHING,DRY CLEANING,BARBER/BEAUTY +230 DATA HOME MAINT,HOME HEAT'G FUEL,WATER,ELECTRICITY,TELEPHONE +240 DATA GAS/OIL,AUTO MAINT,FARES/TOLLS/PARKING,DENTIST +250 DATA PHYSICIAN,DRUGS/SUNDRIES,SCHOOL EXPENSE,FAMILY ALLOWANCE +260 DATA CLUBS/LODGES,THEATER/SPORTS,RESTAURANTS +270 DATA OTHER ENT'MENT,MAG'S/BOOKS/PAPERS,SITTERS,CHILD CARE +280 DATA VACATION SAVINGS,OTHER SAVINGS,CONTRIBUTIONS,OTHER EXPENSES +290 REM +300 REM +310 PRINT: PRINT"Select your budgeting period by number. Later on it will" +320 PRINT"be extended to one year.": PRINT +330 PRINT TAB(10)"1-WEEKLY" +340 PRINT TAB(10)"2-BIWEEKLY" +350 PRINT TAB(10)"3-SEMIMONTHLY" +360 PRINT TAB(10)"4-MONTHLY" +370 PRINT +380 INPUT": ",P +390 IF P>4 THEN PRINT"Try again!" ELSE 410 +400 GOTO 310 +410 IF P=1 THEN P=52 +420 IF P=2 THEN P=26 +430 IF P=3 THEN P=24 +440 IF P=4 THEN P=12 +450 PRINT CL$; +460 PRINT:PRINT"Alright, first let's look at income for the period." +470 PRINT +480 READ A$:PRINT A$;" $";: INPUT"",D(0):READ A$:PRINT A$;" $";:INPUT"",D(1) +490 TI=D(0)+D(1) +500 PRINT CL$; +510 PRINT:PRINT"Ok, now let's look at paycheck deductions.":PRINT +520 FOR J=2 TO 9: READ A$: PRINT A$;" $";:INPUT"",D(J):TD=TD+D(J): NEXT J +530 PRINT CL$; +540 PRINT"Ok, now let's look at fixed expenses.": PRINT +550 FOR J=10 TO 18:READ A$:PRINT A$;" $";:INPUT"",D(J):TF=TF+D(J): NEXT J +560 DF=TD+TF: SI=TI-DF: S=64 +570 PRINT CL$; +580 PRINT"Ok, at this point our table looks like this: ": PRINT +590 PRINT +600 GOSUB 2110: PRINT: PRINT TAB(19); +610 PRINT"RECURSIVE BUDGETING MODEL": PRINT: PRINT TAB(27)"* * *": PRINT +620 GOSUB 2110 +630 PRINT:PRINT TAB(20)"SPENDABLE INCOME SUMMARY": PRINT +640 GOSUB 2100: PRINT TAB(3)"ACCOUNT"TAB(42)"PERIOD"TAB(57)"ANNUAL" +650 GOSUB 2100: PRINT"TOTAL INCOME"TAB(40); +660 PRINT USING W$;TI;:PRINT TAB(55); +670 PRINT USING W$;TI*P: PRINT:PRINT TAB(3)"PAYCHECK DEDUCTIONS"TAB(25); +680 PRINT USING W$;TD*(-1): PRINT +690 PRINT TAB(3)"FIXED EXPENSES"TAB(25);: PRINT USING W$;TF*(-1); +700 PRINT TAB(40);: PRINT USING W$;DF*(-1);: PRINT TAB(55); +710 PRINT USING W$;DF*(-1)*P +720 PRINT TAB(41)"-------"TAB(55)"--------":PRINT"SPENDABLE INCOME"; +730 PRINT TAB(40);:PRINT USING W$;SI;:PRINT TAB(55);:PRINT USING W$;SI*P +740 PRINT TAB(41)"========"TAB(55)"========":PRINT: +750 GOSUB 2110: PRINT: PRINT +760 GOSUB 2120 +770 RO=0 +780 PRINT:PRINT"Ok, now for the first round of variable expense. Don't" +790 PRINT"pinch yourself in your estimates (within reason). Let the" +800 PRINT"computer help you to refine your budget later on.": PRINT +810 FOR J=0 TO Q:READ E$(J):PRINT E$(J);" $";: INPUT"",V(J):VT=VT+V(J):NEXT J +820 RESTORE +830 PRINT:PRINT +840 PRINT"Your budget for the first round totalled $"VT". This" +850 PRINT"compares to spendable income of $"SI". We have" +860 PRINT"prorated the difference, $"SI-VT", over all variable expense" +870 PRINT"accounts.": PRINT +880 GOSUB 2120: FOR J=0 TO Q:V(J)=INT(V(J)/VT*SI): NEXT J: VT=SI: PRINT +890 PRINT CL$; +900 PRINT"Now we begin the budget refinement phase. Make as many" +910 PRINT"passes as you like. As you review each account, decide" +920 PRINT"whether to FREEZE it or leave it for another pass.": PRINT +930 PRINT"HINT: Don't be in a hurry to freeze an account.": PRINT +940 PRINT"Your task is finished when all accounts are frozen!": PRINT +950 GOSUB 2120 +960 FOR J=0 TO Q: IF V(J)=0 THEN 1180 +970 PRINT +980 PRINT E$(J);" $";V(J): INPUT"Change ('Y' or 'N') ",A$ +990 A$=LEFT$(A$,1) +1000 IF A$="N" THEN 1030 ELSE IF A$="Y" THEN 1010 ELSE 980 +1010 INPUT"Revised amount $";A: IF A60 THEN A=60 +2440 PRINT TAB(21);:FOR K=1 TO A: PRINT"]";:NEXT K: PRINT +2450 RETURN +2460 REM +2470 GOTO 2490 +2480 REM +2490 PRINT: PRINT: +2500 END diff --git a/cpm/cpm-pert.txt b/cpm/cpm-pert.txt new file mode 100644 index 0000000..cb59215 --- /dev/null +++ b/cpm/cpm-pert.txt @@ -0,0 +1,277 @@ +10 REM CPM-PERT PROGRAM FROM INTERFACE AGE, FEB. 1981 +12 REM WRITTEN BY RICHARD PARRY +14 REM ADAPTED TO MICROSOFT BASIC BY CHARLES H STROM +16 REM +17 REM NOTE: PRINTER OPERATION REQUIRES LOADING SETUP.ASM BEFORE MBASIC +18 REM *INITIALIZE NORMAL DISTRIBUTION CONSTANTS +20 RN=15: RS=SQR(3/RN) +25 CL$=CHR$(27)+CHR$(28): REM CHARACTER STRING TO HOME CURSOR & CLEAR SCREEN +30 REM ************** +40 REM * INPUT DATA * +50 REM ************** +55 PRINT CL$ +60 INPUT "CPM or PERT Simulation (C/P) "; Q$ +65 INPUT "Do you want a HARD-COPY record (Y/N)"; HC$: HC$=LEFT$(HC$,1) +66 IF HC$="Y"THEN PRINT "NOTE - SETUP.ASM MUST BE LOADED BEFORE MBASIC OR PRINTER WILL NOT FUNCTION!" +68 PRINT +70 INPUT "Number of Activities"; N +80 DIM ML(N), MO(N), MP(N), CP(N), ME(N), SD(N), IC(20) +90 DIM S(N), F(N), D(N), E(N), L(N), F1(N) +100 FOR I=1 TO N +110 PRINT CL$: PRINT "ACTIVITY"; I: PRINT +120 REM * GO TO INPUT DATA ROUTINE +130 GOSUB 1920 +140 NEXT I +150 PRINT CL$: INPUT "Would you like to examine or edit the input data (Y/N)";Q1$ +160 IF LEFT$(Q1$,1) = "N" THEN 430 +170 REM *SORT INPUT DATA +180 GOSUB 2080 +190 REM ********************** +200 REM * DISPLAY INPUT DATA * +210 REM ********************** +215 IF HC$="Y" THEN POKE 37,195 +220 PRINT CL$: IF LEFT$(Q$,1)<>"C" THEN 280 +230 PRINT "ACTIVITY # FROM TO DURATION" +240 FOR I = 1 TO N +250 PRINT TAB(5); I; TAB(15); S(I); TAB(25); F(I); TAB(35); D(I) +260 NEXT I +270 GOTO 340 +280 PRINT "ACTIVITY # FROM TO ML MO MP" +290 FOR I = 1 TO N +300 PRINT TAB(5); I; TAB(15); S(I); TAB(25); F(I); +310 PRINT TAB(35); ML(I); TAB(45); MO(I); TAB(55); MP(I) +320 NEXT I +330 PRINT +340 POKE 37,201:PRINT: INPUT "Would you like to edit an activity (Y/N)"; Q1$ +350 IF LEFT$(Q1$,1) = "N" THEN 430 +360 REM * EDIT MODE +370 PRINT: INPUT "What activity needs alteration (0 to end)"; I +380 IF I=0 THEN 150 +390 REM * GO TO INPUT DATA ROUTINE +400 GOSUB 1920 +410 GOTO 370 +420 REM * GO TO SORT ROUTINE +430 GOSUB 2080 +440 IF LEFT$(Q$,1) <>"C" THEN 760 +450 REM *********************************************************** +460 REM * CRITICAL PATH ANALYSIS REQUESTED. PERFORM CRITICAL PATH * +470 REM * ANALYSIS ONCE AND DISPLAY RESULTS. * +480 REM *********************************************************** +490 GOSUB 2340 +500 C2=0 +505 IF HC$="Y" THEN POKE 37,195 +510 PRINT CL$: PRINT "CP ANALYSIS IS:" +520 PRINT: PRINT: PRINT "FROM","TO","EST","LFT","FLOAT": PRINT +530 FOR I = 1 TO N +540 PRINT S(I),F(I),E(S(I)),L(F(I)),F1(I) +550 NEXT I +560 PRINT "THE CRITICAL PATH LENGTH IS ";PL +570 PRINT: PRINT "THE CRITICAL PATH IS:": PRINT"FROM","TO": PRINT +580 FOR I = 1 TO N +590 IF F1(I) = 0 THEN 610 +600 NEXT I +610 PRINT S(I),F(I): C2=C2+1: IF I>N THEN 650 +620 FOR M= 1 TO N +630 IF S(M)=F(I) AND F1(M) = 0 THEN I=M: GOTO 610 +640 NEXT M +650 IF C1<>C2 THEN PRINT: PRINT "THERE IS MORE THAN ONE CRITICAL PATH" +660 PRINT: POKE 37,201 +670 INPUT "Would you like to edit an activity or stop program (E/S)"; Q1$ +680 IF LEFT$(Q1$,1) = "E" THEN PRINT: GOTO 220: +690 END +700 REM ***************************************************************** +710 REM * PERT SIMULATION REQUESTED. PERFORM CRITICAL PATH ANALYSIS THE * +720 REM * NUMBER OF TIMES SPECIFIED. STORE PATH LENGTHS AND INCREMENT * +730 REM * ACTIVITIES WHICH APPEAR ON CRITICAL PATH. CONSTRUCT HISTOGRAM * +740 REM * AND DISPLAY RESULTS. * +750 REM ***************************************************************** +760 FOR I = 1 TO N +770 REM * COMPUTE MEAN OF EACH ACTIVITY +780 ME(I) = (MO(I)+4*ML(I)+MP(I))/6 +790 REM * COMPUTE STANDARD DEVIATION OF EACH ACTIVITY +800 SD(I) = (MP(I)-MO(I))/6 +810 NEXT I +820 REM * COMPUTE MOST OPTIMISTIC PATH LENGTH +830 DU=0: FOR I=1 TO N: CP(I)=0: E(I)=0: L(I)=0: NEXT I +840 FOR I = 1 TO N +850 D(I)=MO(I) +860 NEXT I +870 GOSUB 2340 +880 BC=PL +890 REM * COMPUTE MOST PESSIMISTIC PATH LENGTH +900 DU=0: FOR I=1 TO N: CP(I)=0: E(I)=0: L(I)=0: NEXT I +910 FOR I = 1 TO N +920 D(I)=MP(I) +930 NEXT I +940 GOSUB 2340 +950 WC=PL +960 REM * INITIALIZ KEY VARIABLES +970 DU=0: FOR I = 1 TO N: CP(I)=0: E(I)=0: L(I)=0: NEXT I +980 LS=0: HS=0: FOR I=1 TO 20: IC(I)=0: NEXT I +990 REM * INITIALIZE RANDOM NUMBER GENERATOR +1000 RANDOMIZE +1010 REM * PROPOSE # OF TRANSACTIONS AS 20 TIMES # OF ACTIVITIES +1020 PRINT "Number of transactions should be >= "; 20*N +1030 INPUT "Number of transactions"; NS +1040 PRINT: PRINT "++SIMULATION IN PROGRESS++" +1050 REM *********************** +1060 REM * CONSTRUCT HISTOGRAM * +1070 REM *********************** +1080 REM * SET APPROPRIATE INTERVAL (I.E. INTEGER >=1) +1090 LL=INT(BC) +1100 IF WC-BC<=20 THEN IN=1 +1110 IN=INT((WC-BC)/20)+1 +1120 REM ********************** +1130 REM * PERFORM SIMULATION * +1140 REM ********************** +1150 TC=100 +1160 FOR K=1 TO NS +1170 IF K=TC THEN PRINT "++SIMULATION IN PROGRESS++", TC: TC=TC+100 +1180 FOR J=1 TO N +1190 S=0: E(J)=0: L(J)=0 +1200 IF ML(J)=0 THEN D(J)=0: GOTO 1250 +1210 FOR I=1 TO RN +1220 S=S+2*RND-1 +1230 NEXT I +1240 D(J)=ME(J)+SD(J)*S*RS +1250 NEXT J +1260 GOSUB 2340 +1270 REM * FIND INTERVAL FOR THIS PATH LENGTH +1280 I3=(PL-LL)/IN+2 +1290 IF I3<1 THEN LS=LS+1: GOTO 1330 +1300 IF I3>20 THEN HS=HS+1: GOTO 1330 +1310 I3=INT(I3) +1320 IC(I3)=IC(I3)+1 +1330 NEXT K +1340 REM ************************************** +1350 REM * PRINT FREQUENCY DISTRIBUTION TABLE * +1360 REM ************************************** +1365 IF HC$="Y" THEN POKE 37,195 +1370 PRINT CL$: PRINT "++FREQUENCY DISTRIBUTION TABLE++": PRINT +1380 PRINT "Most OPTIMISTIC path length"; BC +1390 PRINT "Most PESSIMISTIC path length"; WC +1400 PRINT "Number of transactions LOWER than histogram range ";LS +1410 PRINT "Number of transactions HIGHER than histogram range ";HS: PRINT +1420 PRINT " INTERVAL FREQ. PCT." +1430 I1=LL-IN: I2=LL +1440 FOR M=1 TO 20 +1450 PRINT"=>";I1;"<";I2;TAB(20);IC(M);TAB(30);INT(.5+100*IC(M)/NS) +1460 I1=I1+IN: I2=I2+IN +1470 NEXT M +1480 REM ******************* +1490 REM * PRINT HISTOGRAM * +1500 REM ******************* +1510 REM * COMPUTE HISTOGRAM SCALE FACTOR +1520 SC=0: LO=18: J=0: LL=INT(BC) +1530 FOR M=1 TO 20 +1540 IF IC(M)>SC THEN SC=IC(M) +1550 NEXT M +1560 SC=50/SC +1570 X$="PATH LENGTH" +1580 PRINT: PRINT: PRINT TAB(24); "++ HISTOGRAM ++": PRINT +1590 PRINT TAB(18);"RELATIVE FREQUENCY OF PATH LENGTHS" +1600 PRINT TAB(LO); "+------------------------------------------------+" +1610 FOR M=1 TO 20 +1620 HM=IC(M)*SC +1630 FOR K=1 TO 3 +1640 J=J+1: PRINT MID$(X$,J,1);TAB(2); +1650 IF K=2 THEN PRINT ">=";LL-IN;"<";LL;: LL=LL+IN +1660 PRINT TAB(LO); +1670 IF IC(M)=0 THEN PRINT: GOTO 1720 +1680 FOR I=1 TO HM +1690 PRINT "*"; +1700 NEXT I +1710 PRINT +1720 NEXT K +1730 NEXT M +1740 REM *************************** +1750 REM * PRINT ACTIVITY ANALYSIS * +1760 REM *************************** +1770 PRINT: PRINT +1780 PRINT TAB(10); "+++ CP ACTIVITY ANALYSIS TABLE +++": PRINT +1790 PRINT "ACTIVITY # FROM TO CP FREQ. PCT." +1800 FOR I=1 TO N +1810 PRINT TAB(5);I;TAB(15);S(I);TAB(25);F(I); +1820 PRINT TAB(35);CP(I);TAB(45);INT(.5+100*CP(I)/NS) +1830 NEXT I +1840 PRINT: PRINT "DUPLICATE critical paths occurred";DU;"times." +1850 PRINT: POKE 37,201 +1860 INPUT "Would you like to edit an activity or stop program (E/S)"; Q1$ +1870 IF LEFT$(Q1$,1)="E" THEN PRINT: GOTO 220 +1880 END +1890 REM ********************** +1900 REM * INPUT DATA ROUTINE * +1910 REM ********************** +1920 INPUT "FROM";S(I) +1930 INPUT "TO";F(I) +1940 IF F(I)>N THEN PRINT "++END NODE # NOT <= # OF ACTIVITIES++":GOTO 1930 +1950 IF S(I)>F(I) THEN PRINT "++START NODE MUST BE < END NODE++":GOTO 1920 +1960 IF LEFT$(Q$,1)="C" THEN INPUT "DURATION";D(I): GOTO 2040 +1970 INPUT "MOST LIKELY";ML(I) +1980 REM * CHECK FOR DUMMY ACTIVITY +1990 IF ML(I)=0 THEN MO(I)=0: MP(I)=0: GOTO 2040 +2000 INPUT "MOST OPTIMISTIC"; MO(I) +2010 IF MO(I)>ML(I) THEN PRINT "++MO MUST BE <= ML++": GOTO 2000 +2020 INPUT "MOST PESSIMISTIC"; MP(I) +2030 IF MP(I)= ML++": GOTO 2020 +2040 RETURN +2050 REM ************************************* +2060 REM * SORT DATA USING START NODE AS KEY * +2070 REM ************************************* +2080 PRINT: PRINT "SORTING IN PROGRESS": PRINT +2090 SW=0 +2100 FOR I=1 TO N-1 +2110 J=I+1 +2120 IF S(I)<=S(J) THEN 2200 +2130 EX=S(I): S(I)=S(J): S(J)=EX +2140 EX=F(I): F(I)=F(J): F(J)=EX +2150 EX=D(I): D(I)=D(J): D(J)=EX +2160 EX=ML(I): ML(I)=ML(J): ML(J)=EX +2170 EX=MO(I): MO(I)=MO(J): MO(J)=EX +2180 EX=MP(I): MP(I)=MP(J): MP(J)=EX +2190 SW=1 +2200 NEXT I +2210 IF SW=1 THEN 2090 +2220 RETURN +2230 REM ************************************************************* +2240 REM * THE FOLLOWING SUBROUTINE IS USED BY BOTH THE CPM ANALYSIS * +2250 REM * AS WELL AS THE PERT SIMULATION ANALYSIS. WHILE THE CPM * +2260 REM * ANALYSIS CALLS THE ROUTINE ONLY ONCE, THE SIMULATION * +2270 REM * CALLS THE ROUTINE THE NUMBER OF TIMES REQUESTED BY THE * +2280 REM * USER. THE EARLIEST, LATEST, AND FLOAT TIMES ARE COMPUTED * +2290 REM * AND FROM THIS DATA THE CRITICAL PATH LENGTH AND CRITICAL * +2300 REM * PATH ARE CALCULATED. DUPLICATE CRITICAL PATHS ARE ONLY * +2310 REM * COUNTED ONCE. * +2320 REM ************************************************************* +2330 REM * COMPUTE EARLIEST STARTING TIME +2340 C1=0: C2=0: PL=0 +2350 FOR I=1 TO N +2360 M1=E(S(I))+D(I) +2370 IF E(F(I))<=M1 THEN E(F(I))=M1 +2380 NEXT I +2390 REM * COMPUTE LATEST FINISHING TIME +2400 L(F(N))=E(F(N)) +2410 FOR I=N TO 1 STEP -1 +2420 L1=S(I): M2=L(F(I))-D(I) +2430 IF L(L1)>=M2 OR L(L1)=0 THEN L(L1)=M2 +2440 NEXT I +2450 REM * COMPUTE FLOAT TIME +2460 FOR I=1 TO N +2470 F1(I)=L(F(I))-E(S(I))-D(I) +2480 IF F1(I)<.0001 THEN F1(I)=0: C1=C1+1 +2490 NEXT I +2500 REM * COMPUTE CRITICAL PATH LENGTH +2510 FOR I=1 TO N +2520 IF L(F(I))>PL THEN PL=L(F(I)) +2530 NEXT I +2540 REM * COMPUTE CRITICAL PATH +2550 FOR I=1 TO N +2560 IF F1(I)=0 THEN 2580 +2570 NEXT I +2580 C2=C2+1: CP(I)=CP(I)+1 +2590 IF I>N THEN 2630 +2600 FOR M=1 TO N +2610 IF S(M)=F(I) AND F1(M)=0 THEN I=M: GOTO 2580 +2620 NEXT M +2630 IF C1<>C2 THEN DU=DU+1 +2640 RETURN diff --git a/cpm/deprec.txt b/cpm/deprec.txt new file mode 100644 index 0000000..3ac386f --- /dev/null +++ b/cpm/deprec.txt @@ -0,0 +1,78 @@ +10 REM DEPRECIATION PROGRAM +20 DIM I$(25), DP$(8), Z$(3) +30 PRINT +40 PRINT " TAX DEPRECIATION" +50 PRINT +60 REM *** INPUT DATA *** +70 INPUT "NAME OF ITEM"; I$ +80 INPUT "ENTER TODAYS DATE (MM/DD/YY)"; DP$ +90 INPUT "PURCHASE DATE (MM/DD/YY)"; D$ +100 INPUT "COST OF ITEM"; C +110 INPUT "USEFUL LIFE"; L +120 PRINT "DEPRECIATION RATE" +121 INPUT "(NEW=200%; USED=150%)"; R +130 REM *** CALCULATE YEARLY RATE *** +140 YR = R / (100 * L) +150 REM *** CALCULATE EXTRA FIRST YR DEPRECIATION *** +160 IF L > = 6 THEN ED = .2 * C +165 IF L < 6 THEN ED = 0 +170 CV = C - ED +180 REM *** CALCULATE INVESTMENT CREDIT *** +190 IF L < 3 THEN IC = 0 +200 IF L > = 3 THEN IC = C / 30 +210 IF L > = 5 THEN IC = C / 15 +220 IF L > = 7 THEN IC = C / 10 +230 MM = VAL ( LEFT$ (D$,2)) +240 DD = VAL ( MID$ (D$,4,2)) +250 YY = VAL ( RIGHT$ (D$,2)) +260 IF DD < = 15 THEN FY = 13 - MM +270 IF DD > 15 THEN FY = 12 - MM +275 LY = 12 - FY +280 REM *** FIRST YEAR DEPRECIATION *** +290 CY = 1 +300 D(CY) = CV * YR * (FY / 12) +310 CV = CV - D(CY) +320 REM *** MIDDLE YEARS DEPRECIATION *** +330 FOR CY = 2 TO L +340 D(CY) = YR * CV +350 CV = CV - D(CY) +360 NEXT +370 REM *** LAST YEAR DEPRECIATION *** +380 IF CY = 0 THEN 410 +385 CY = L + 1 +390 D(CY) = YR * CV * (LY / 12) +400 CV = CV - D(CY) +410 REM *** OUTPUT TO SCREEN *** +420 PRINT : PRINT +430 PRINT TAB(6) "DEPRECIATION ANALYSIS FOR ";I$ +440 PRINT TAB(10) "DATE PREPARED; ",DP$ +450 PRINT +460 PRINT "ITEM NAME: "; TAB(20) I$ +470 PRINT "DATE OF PURCHASE: "; TAB(20) D$ +480 PRINT "COST: "; TAB(17); +481 PRINT USING "$$#,###.##"; C +490 PRINT "USEFUL LIFE: "; TAB(20) L; "YEARS" +500 PRINT "DEPRECIATION RATE: "; TAB(20); R; "%" +510 PRINT +520 CY = 1 +530 Y = 1899 + YY +540 INPUT "PRESS RETURN TO CONTINUE "; Z$ +550 PRINT +560 PRINT " YEAR"; TAB(10);"INVESTMENT CREDIT"; + TAB(30);"EXTRA FIRST YEAR DEPRECIATION" +570 PRINT Y + CY; TAB(10); +571 PRINT USING "###.##";IC; +572 PRINT TAB(30); +573 PRINT USING "###.##";ED +580 PRINT +590 PRINT " YEAR"; TAB(10) "DEPRECIATION" +600 IF LY <> 0 THEN 620 +610 FOR CY = 1 TO L: GOTO 630 +630 PRINT Y + CY; TAB(9); +631 PRINT USING "#,###.##"; D(CY) +640 NEXT +650 IF D(CY) < = 0 THEN 670 +660 PRINT +670 PRINT "SALVAGE VALUE AT END OF";CY+Y-1;"IS"; +671 PRINT USING "$$#,###.##"; CV +680 REM *** PRINTOUT ROUTINE GOES HERE *** diff --git a/cpm/directry.txt b/cpm/directry.txt new file mode 100644 index 0000000..d6bb6b0 --- /dev/null +++ b/cpm/directry.txt @@ -0,0 +1,236 @@ +5 RESET +9 PRINT TAB(21); +10 PRINT "DIRECTORY" +19 PRINT TAB(7); +20 PRINT "CHOOSE ONE OF THE FOLLOWING BY NUMBER:" +29 PRINT TAB(10); +30 PRINT "1. EXAMINE a record on file" +39 PRINT TAB(10); +40 PRINT "2. ADD a record to the file" +49 PRINT TAB(10); +50 PRINT "3. DELETE a record from the file" +59 PRINT TAB(10); +60 PRINT "4. PRINT OUT the entire file" +69 PRINT TAB(21); +70 INPUT "Input #: ",CHOICE +72 IF CHOICE<1 THEN 70 +73 IF CHOICE>4 THEN 70 +75 ON CHOICE GOTO 80, 120, 130, 170 +80 MATCH=0 +81 GOSUB 600 +83 IF MATCH = 0 THEN 9 +84 LAST.NAME$ = L$ +85 FIRST.NAME$ = F$ +86 STREET$ = S$ +87 CITY$ = C$ +88 STATE$ = ST$ +89 ZIP$ = Z$ +90 TELEPHONE$ = T$ +92 GOSUB 300 +93 IF MID$(RESPONSE$,1,1)="N" THEN 9 +94 GOSUB 200 +95 GOSUB 300 +96 IF MID$(RESPONSE$,1,1)="Y" THEN 94 +97 IF L$+F$ <>LAST.NAME$+FIRST.NAME$ THEN 112 +99 OPEN "R",1,"DIRECTRY.BAS",104 +100 FIELD #1,20 AS L$,20 AS F$,25 AS S$,20 AS C$,2 AS ST$,5 AS Z$,12 AS T$ +101 LSET L$ = LAST.NAME$ +102 LSET F$ = FIRST.NAME$ +103 LSET S$ = STREET$ +104 LSET C$ = CITY$ +105 LSET ST$ = STATE$ +106 LSET Z$ = ZIP$ +107 LSET T$ = TELEPHONE$ +108 PUT #1, RECORD.NUMBER +109 CLOSE #1 +110 GOTO 9 +112 PRINT "LAST AND FIRST NAMES MAY NOT BE CHANGED." +114 PRINT "YOUR MUST DELETE THE OLD RECORD AND THEN" +116 PRINT "ADD THE NEW ONE." +118 INPUT "PRESS RETURN TO CONTINUE",Y$ +119 GOTO 9 +120 GOSUB 200 +122 GOSUB 300 +124 IF MID$(RESPONSE$,1,1)="Y" THEN 120 +126 GOSUB 400 +128 GOTO 9 +130 GOSUB 500 +132 GOTO 9 +170 OPEN "R", 1,"DIRECTRY.BAS",104 +172 FIELD #1, 104 AS ENTIRE.RECORD$ +174 LPRINT "DIRECTORY": LPRINT +176 GET #1 +177 IF EOF(1)=-1 THEN 192 +178 LPRINT MID$(ENTIRE.RECORD$,21,20) +179 LPRINT MID$(ENTIRE.RECORD$,1,20) +180 LPRINT MID$(ENTIRE.RECORD$,41,25) +182 LPRINT MID$(ENTIRE.RECORD$,66,20) +184 LPRINT MID$(ENTIRE.RECORD$,86,2) +186 LPRINT MID$(ENTIRE.RECORD$,88,5) +188 LPRINT MID$(ENTIRE.RECORD$,93,12) +189 LPRINT: LPRINT: LPRINT +190 GOTO 176 +192 CLOSE #1 +194 GOTO 9 +200 REM ********** INPUT ROUTINE ********** +202 PRINT CHR$(26) +204 GOSUB 244 +206 PRINT TAB(21); "DIRECTORY" +208 PRINT TAB(12); "PLEASE SUPPLY THE FOLLOWING:" +210 GOSUB 244 +212 PRINT TAB(8); +214 INPUT "Last Name: ",LAST.NAME$ +216 PRINT TAB(8); +218 INPUT "First Name: ",FIRST.NAME$ +219 GOSUB 700 +220 PRINT TAB(8); +222 INPUT "Street Address: ",STREET$ +224 PRINT TAB(8); +226 INPUT "City: ",CITY$ +228 PRINT TAB(8); +230 INPUT "State (ex: NY): ",STATE$ +232 PRINT TAB(8); +234 INPUT "Zip Code: ",ZIP$ +236 PRINT TAB(8); +238 INPUT "Telephone (###-####): ",TELEPHONE$ +240 GOSUB 244 +242 RETURN +244 FOR I = 1 TO 5 +246 PRINT +248 NEXT I +250 RETURN +300 REM ************* OUTPUT ROUTINE ********** +302 PRINT CHR$(26) +304 GOSUB 336 +306 PRINT TAB(21);"DIRECTORY" +308 GOSUB 336 +310 PRINT TAB(8); "Last Name: "; LAST.NAME$ +312 PRINT TAB(8); "First Name: "; FIRST.NAME$ +314 PRINT TAB(8); "Street Address: "; STREET$ +316 PRINT TAB(8); "City: "; CITY$ +318 PRINT TAB(8); "State: "; STATE$ +320 PRINT TAB(8); "Zip Code: "; ZIP$ +322 PRINT TAB(8); "Tel (###-####): "; TELEPHONE$ +324 GOSUB 336 +325 REM PRINT "DO YOU WISH TO MAKE ANY CHANGES"; RESPONSE$ +326 INPUT "DO YOU WISH TO MAKE ANY CHANGES"; RESPONSE$ +328 IF MID$(RESPONSE$,1,1) = "Y" THEN 334 +330 IF MID$(RESPONSE$,1,1) <> "N" THEN 326 +332 RETURN +334 GOTO 332 +336 FOR I = 1 TO 5 +338 PRINT +340 NEXT I +342 RETURN +400 REM ************* ADD ROUTINE ************* +402 PRINT CHR$(26) +404 MARKER = 0 +406 FULL.NAME$ = LAST.NAME$ + FIRST.NAME$ +408 OPEN "R", 1, "DIRECTRY.BAS", 104 +410 OPEN "R", 2, "UPDATE.BAS", 104 +412 FIELD #1,20 AS L$,20 AS F$,25 AS S$,20 AS C$,2 AS ST$,5 AS Z$,12 AS T$ +414 FIELD #2,20 AS A$,20 AS B$,25 AS D$,20 AS E$,2 AS G$,5 AS H$,12 AS I$ +416 GET #1 +418 IF EOF(1) = -1 THEN 452 +420 IF MARKER = 1 THEN 434 +422 GOSUB 462 +424 IF F.N$ <> FULL.NAME$ THEN 434 +426 PRINT TAB(11);"THAT RECORD IS ALREADY ON FILE." +428 INPUT "PRESS RETURN TO CONTINUE.",Y$ +429 CLOSE #1: CLOSE #2 +430 KILL "UPDATE.BAS" +432 GOTO 460 +434 LSET A$ = L$ +436 LSET B$ = F$ +438 LSET D$ = S$ +440 LSET E$ = C$ +442 LSET G$ = ST$ +444 LSET H$ = Z$ +446 LSET I$ = T$ +448 PUT #2 +450 GOTO 416 +452 IF MARKER = 1 THEN 455 +454 GOSUB 466 +455 CLOSE #1: CLOSE #2 +456 KILL "DIRECTRY.BAS" +458 NAME "UPDATE.BAS" AS "DIRECTRY.BAS" +460 CLOSE #1: CLOSE #2: RETURN +462 IF F.N$ <=FULL.NAME$ THEN 482 +466 LSET A$ = LAST.NAME$ +468 LSET B$ = FIRST.NAME$ +470 LSET D$ = STREET$ +472 LSET E$ = CITY$ +474 LSET I$ = TELEPHONE$ +476 LSET H$ = ZIP$ +478 LSET I$ = TELEPHONE$ +480 PUT #2: MARKER = 1 +482 RETURN +500 REM *********** DELETE ROUTINE ********* +502 MARKER = 0 +504 PRINT CHR$(26) +506 PRINT TAB(7); +508 PRINT "FOR THE RECORD THAT YOU WISH TO DELETE:" +510 PRINT TAB(15); +516 INPUT "FIRST NAME: ",FIRST.NAME$ +517 GOSUB 700 +518 FULL.NAME$ = LAST.NAME$ + FIRST.NAME$ +520 OPEN "R", 1, "DIRECTRY.BAS", 104 +522 OPEN "R", 2, "UPDATE.BAS", 104 +524 FIELD #1, 40 AS F.N$, 64 AS REST$ +526 FIELD #2, 40 AS F.N2$, 64 AS REST2$ +528 GET #1 +530 IF EOF(1)=-1 THEN 546 +532 IF MARKER = 0 THEN IF F.N$ = FULL.NAME$ THEN 542 +534 LSET F.N2$ = F.N$ +536 LSET REST2$ = REST$ +538 PUT #2 +540 GOTO 528 +542 MARKER = 1 +544 GOTO 528 +546 IF MARKER = 1 THEN 555 +548 PRINT: PRINT: PRINT TAB(17); +550 PRINT "RECORD NOT ON FILE." +552 PRINT: PRINT TAB(14); +554 INPUT "PRESS RETURN TO CONTINUE",Y$ +555 CLOSE #1: CLOSE #2 +556 KILL "DIRECTRY.BAS" +558 NAME "UPDATE.BAS" AS "DIRECTRY.BAS" +560 CLOSE #1: CLOSE #2: RETURN +600 REM ********** SEARCH ROUTINE ********** +602 PRINT CHR$(26) +604 OPEN "R", 1, "DIRECTRY.BAS", 104 +606 FIELD #1,20 AS L$,20 AS F$,25 AS S$,20 AS C$,2 AS ST$,5 AS Z$,12 AS T$ +608 GOSUB 652 +610 PRINT TAB(12); +612 PRINT "PLEASE SUPPLY THE FOLLOWING:" +614 GOSUB 652 +616 PRINT TAB(15); +618 INPUT "LAST NAME: ";LAST.NAME$ +620 PRINT TAB(15); +622 INPUT "FIRST NAME: ";FIRST.NAME$ +623 GOSUB 700 +624 RECORD.NUMBER = 1 +626 GET #1, RECORD.NUMBER +628 IF L$ <> LAST.NAME$ THEN 634 +630 IF F$ <> FIRST.NAME$ THEN 634 +631 MATCH = 1 +632 CLOSE #1: RETURN +634 IF EOF(1) <> -1 THEN 648 +636 GOSUB 652 +638 PRINT TAB(17); +640 PRINT "RECORD NOT ON FILE." +642 PRINT: PRINT TAB(14); +644 PRINT "PRESS RETURN TO CONTINUE.",Y$ +646 GOTO 632 +648 RECORD.NUMBER = RECORD.NUMBER + 1 +650 GOTO 626 +652 FOR P = 1 TO 6 +654 PRINT +656 NEXT P +658 RETURN +700 SPACER$=" " +710 LAST.NAME$ = LAST.NAME$+SPACER$ +720 LAST.NAME$ = MID$(LAST.NAME$,1,20) +730 FIRST.NAME$ = FIRST.NAME$+SPACER$ +740 FIRST.NAME$ = MID$(FIRST.NAME$,1,20) +750 RETURN diff --git a/cpm/el-e.txt b/cpm/el-e.txt new file mode 100644 index 0000000..e94e405 --- /dev/null +++ b/cpm/el-e.txt @@ -0,0 +1,565 @@ + PRINT " *** ELECTRICAL ENGENEERING & DESIGN ***" + PRINT " J. Schrabal, April 1979" + PRINT + PRINT "File cleaned up of typos and put somewhat of a structure" + PRINT "in it: 8/25/82 by S. Kluger" + PRINT + pi = 3.141592654 REM pi constant +10 PRINT "To select one of the programs just type it's number" + PRINT "and hit 'RETURN' key. Enter all alphabetic answers in UPPER CASE!" + PRINT +20 PRINT "Select from the following routines (0 to quit) :" + PRINT " 1. Ohm's law (DC)" + PRINT " 2. Zener stabilized DC supply" + PRINT " 3. DC power supply design" + PRINT " 4. Low pass 2-pole Butterworth filter" + PRINT " 5. Series resonant frequency circuit" + PRINT " 6. Passive band-pass filter" + PRINT " 7. Small coil design & inductance calculations" + PRINT " 8. Long wire antenna" + PRINT " 9. Dipole or half wave antenna" + PRINT " 10. Time constant calculation" + PRINT " 11. Resistance of wire" + PRINT " 12. Crystal (rec./tr.) frequency calculations" + PRINT + INPUT "What routine do you wish to select";SELECTION + IF SELECTION>0 AND SELECTION<13 THEN 30 + IF SELECTION=0 THEN 9999 + PRINT "Please answer with number fom 0 to 12":GOTO 20 +30 ON SELECTION GO TO 100,200,250,300,400,500,600,700,800,900,1000,1200 + + REM PART 1 (100) + +100 PRINT + PRINT " *** OHM's LAW (DC) ***" +110 PRINT + PRINT " ENTER values for 2 (two) known" + PRINT " ENTER 0 (zero) for unknown values to be calculated" + PRINT + INPUT "Potential in volts ";E + INPUT "Current flow in amperes ";I + IF E>0 AND I>0 THEN 111 + INPUT "Resistance in ohms";R + IF I>0 AND R>0 AND E=0 THEN 120 + IF E>0 AND R>0 AND I=0 THEN 130 + INPUT "Power in watts ";P + IF E>0 AND I=0 AND R=0 THEN 141 + IF I>0 AND E=0 AND R=0 THEN 142 + IF R>0 AND E=0 AND I=0 THEN 143 +111 R=E/I + GOTO 140 +120 E=I*R + GOTO 140 +130 I=E/R +140 P=E*I + GOTO 150 +141 I=P/E + R=(E^2)/P + GOTO 150 +142 E=P/I + R=E/I + GOTO 150 +143 E=(P*R)^.5 + I=E/R +150 PRINT + PRINT "Potential = ";E;" volts" + PRINT "Current flow = ";I;" amperes" + PRINT "Resistance = ";R;" ohms" + PRINT "Power = ";P;" watts" + PRINT + INPUT "MORE CALCULATIONS? (YES/NO)";ANS$ + IF ANS$="YES" THEN GOTO 110 ELSE GOTO 20 + + REM Part 2 (200) + +200 PRINT + PRINT " *** ZENER STABILIZED CIRCUIT DESIGN ***" +210 PRINT + INPUT "Voltage rating of zener diode";A + INPUT "Wattage rating of zener diode";W + INPUT "Maximum DC voltage of power supply";B + R=((B-A)^2)/W + I=(W/R)^.5 REM in amperes + PRINT "For an open circuit, or for load up to ";I*1000;" miliamperes" + PRINT "Use ";R;"ohms ";W;" watt resistor" + PRINT + PRINT "Will the load (device) you use have larger than "; + PRINT W;"watts consumption?" + INPUT "(YES/NO)";A$ + IF A$="NO" THEN 220 + INPUT "What is the maximum wattage of the device you use:";C + X=((B-A)^2)/((W/2)+C) + PRINT "Use ";X; "ohms ";W+C;" watts resistor" + PRINT "WARNING: Zener diode will probably burn out if the load" + PRINT " should be removed and circuit left open." + PRINT +220 INPUT "More calculations? (YES/NO)";ANS$ + IF ANS$="YES" THEN GOTO 210 ELSE GOTO 20 + +250 REM Part 2.1 + + PRINT " *** POWER SUPPLY DESIGN ***" + PRINT + INPUT "What is LINE AC voltage supplied by utility";A +251 INPUT "What is transformer's primary rating (or tap)";B +252 INPUT "What is RMS voltage of secondary winding";C + D=(C*A)/B REM D is max.RMS + P=D*1.4 REM P is peak voltage + M=P+(P/4) REM M is maximum peak +256 INPUT "What is the needed (desired) DC voltage";O + IF C>(2*O) THEN 267 + IF O>C THEN 268 + PRINT "What is the voltage rating of REGULATORS" + INPUT " used with the power supply";Z + IF ((Z+2.5)+(Z*.1))>O THEN 269 + IF ((Z+3.5)+(Z*.25))100 THEN 330 + PRINT "Value of C2 in mF (microFarads)" + INPUT "Note: 0.02 mF = 0.000 000 02 F ";C + R=A/(4*pi*F*C/1000000) + PRINT + PRINT " .---------. C1 = ";(4*(1+H)*C)/(A^2) + PRINT " X : C2 = ";C + PRINT " X R2 = C2 R1 = ";R/H + PRINT " X : R2 = ";R + PRINT " R1 : R3 : - o R3 = ";R/(H+1) + PRINT "--XXXXXX--:--XXXXXX-:---o o" + PRINT " : o o" + PRINT " E-in : o o---------------" + PRINT " = C1 + o o" + PRINT " : ---o o" + PRINT " : : o E-out" + PRINT " : :" + PRINT "----------:----------:--------------------------" + INPUT "Another gain/alpha ratio? (YES/NO)";ANS$ + IF ANS$="YES" THEN 320 + INPUT "Another filter configuration (YES/NO)";B$ + IF B$="YES" THEN GOTO 310 ELSE GOTO 20 +330 PRINT"Because operational amplifiers are non-ideal, pass-" + PRINT "band gain should be chosen to be less than 10 when peaking" + PRINT "factor Alpha = 0-1" + PRINT "Gain of 100 with peaking factor=1 is acceptable for " + PRINT "for peaking gain 80 dB in 2-pole Batterworth config-" + PRINT "uration." + PRINT + GOTO 320 + + REM Part 4 (400) + +400 PRINT + PRINT " *** SERIES RESONANT FREQUENCY CIRCUITS ***" +410 PRINT + INPUT "Inductance in MH (Milli-Henrys)";L + INPUT "Capacitance in NF (Nano-Farads)";C + PRINT + PRINT "Series L/C resonant frequency is ";\ + 1000/(6.283185307*((L*C)^0.5));" KHz (Kilo Hertz)" + PRINT "Note: this frequency is not affected by resistance in the circuit" + PRINT + INPUT "More calculations? (YES/NO)";ANS$ + IF ANS$="YES" THEN 410 + GOTO 20 + + REM Part 5 (500) + +500 PRINT + PRINT " *** PASSIVE BANDPASS FILTER DESIGN ***" + PRINT + PRINT" This program is based on ELECTRICAL ENGINEERING &" + PRINT "CIRCUITS DESIGN by Skilling, Willey, 1961." + PRINT " It will calculate ideal component values for the" + PRINT "T-section and PI-Section filters, given F1, F2,and R" +510 PRINT + INPUT "What is F1, low cut-off frequency (in Hertz)";L + INPUT "What is F2, high cut-off frequency (in Hertz)";H + IF L>H THEN 560 + INPUT "What is R, image impedance in mid-frequency (in ohms)";R + IF L<0 THEN 581 + IF H<0 THEN 581 + IF R<0 THEN 581 + X=H-L + Y=12.56637061*L*H + Z=pi +520 INPUT "If you want T-section type 'T'";T$ + IF T$<>"T" THEN 550 + PRINT + PRINT "2Ca=";X/Y*R*2," Cb=";1/Z*R," R=";R + PRINT "La/2=";R/Z/2," Lb=";R*X/Y + PRINT + PRINT " 2Ca La/2 La/2 2Ca" + PRINT "o----!!----mmmmmmm---:-----:---mmmmmmm---!!-....." + PRINT " : : :" + PRINT " : m X" + PRINT " Cb = m Lb R X" + PRINT " : m X" + PRINT " : : :" + PRINT "o--------------------:-----:----------------....:" +550 PRINT + INPUT "If you want PI-section type 'P'";P$ + IF P$<>"P" THEN 582 + PRINT + PRINT "La=";R/Z," 2Lb=";2*R*X/Y," R=";R + PRINT "Ca=";X/Y*R," Cb/2=";1/Z*R/2 + PRINT + PRINT " La Ca" + PRINT "o-------:----:-mmmmmmm----!!-----:----:..........:" + PRINT " : : : : :" + PRINT " m : : m X" + PRINT " 2Lb m = Cb/2 Cb/2 = m 2Lb R X" + PRINT " m : : m X" + PRINT " : : : : :" + PRINT "o-------:----:-------------------:----:..........:" + PRINT + INPUT "Another passive filter calculation (YES/NO)";A$ + IF A$="YES" THEN GOTO 510 ELSE GOTO 20 +560 PRINT "High cut-off frequency must be higher than low-" + PRINT "cut-off frequency":GOTO 510 +581 PRINT "This value must be larger than 0 (zero)":GOTO 510 +582 PRINT "Answer 'P' or 'T' only":GOTO 510 + + REM Part 6 + +600 PRINT " *** SMALL COIL DESIGN ***" + PRINT + PRINT "Program limitations:" + PRINT " Inductance = 100 microhenries MAXIMUM" + PRINT " Wire size = 12 size MAXIMUM" + PRINT " 40 gage MINIMUM" + PRINT " (resistors used as form must be of composite type)" +610 PRINT + PRINT "PROGRAMS:" + PRINT " 1. INDUCTANCE" + PRINT " 2. INDUCTIVE REACTANCE" + PRINT + INPUT " WHICH ONE OF THE TWO PROGRAMS ABOVE YOU WANT COMPUTED";A + IF A=1 THEN 650 + IF A>2 THEN 610 + IF A<0 THEN 610 +620 INPUT "WHAT IS THE DESIRED INDUCTIVE REACTANCE IN OHMS";I + INPUT "AT WHAT FREQUENCY IN MHZ";F + H=I/(2*3.14159*F) + PRINT "INDUCTANCE = ";H;" MICROHENRIES" + IF H<100 THEN 660 +640 PRINT "Program limitation is 100 microhenries MAXIMUM" + GOTO 610 +650 INPUT "What is the desired coil inductance in microhenries";H + IF H>100 THEN 640 +660 PRINT "Coil forms:" + PRINT " A = 1/4 WATT RESISTOR" + PRINT " B = 1/2 WATT RESISTOR" + PRINT " C = 1 WATT RESISTOR" + PRINT " D = 2 WATT RESISTOR" + PRINT " E = OTHER FORM" + INPUT " SELECT COIL FORM FROM ABOVE (A,B,C,D,E)";FORM$ + IF FORM$="A" THEN D=.09 + IF FORM$="B" THEN D= .14 + IF FORM$="C" THEN D= .22 + IF FORM$="D" THEN D= .312 + IF FORM$="E" THEN GOTO 601 ELSE GOTO 602 +601 INPUT "What is the diameter of the coil in inches";D +602 PRINT "What gage enameled wire will be used:" + INPUT " (gage 12 to 40)";G + IF G=12 THEN W=.081 + IF G=13 THEN W=.072 + IF G=14 THEN W=.064 + IF G=15 THEN W=.057 + IF G=16 THEN W=.051 + IF G=17 THEN W=.045 + IF G=18 THEN W=.040 + IF G=19 THEN W=.036 + IF G=20 THEN W=.32 + IF G=21 THEN W=.0285 + IF G=22 THEN W=.0253 + IF G=23 THEN W=.0226 + IF G=24 THEN W=.0201 + IF G=25 THEN W=.0179 + IF G=26 THEN W=.0159 + IF G=27 THEN W=.0142 + IF G=28 THEN W=.0126 + IF G=29 THEN W=.0113 + IF G=30 THEN W=.01 + IF G=31 THEN W=.0089 + IF G=32 THEN W=.008 + IF G=33 THEN W=.0071 + IF G=34 THEN W=.0063 + IF G=35 THEN W=.0056 + IF G=36 THEN W=.005 + IF G=37 THEN W=.0045 + IF G=38 THEN W=.004 + IF G=39 THEN W=.0035 + IF G=40 THEN W=.0031 + IF G<12 OR G>40 THEN 602 + N=((40*H*W)+SQR (((4*H*W)*(4*H*W))+(4*D*D*D*18*H)))/(2*D*D) + N1=((40*H*W)-SQR (((4*H*W)*(4*H*W))+(4*D*D*D*18*H)))/(2*D*D) + IF N>N1 THEN N2=N ELSE N2=N1 + N2=(INT(N2*10))/10 + PRINT:PRINT "Wire size = ";G;" gage" + PRINT "Coil diameter = ";D;" inches" + PRINT "Number of turns = ";N2 + PRINT "Coil length = ";(INT(N2*W*100))/100;" inches" + INPUT "More calculations? (YES/NO)";ANS$ + IF ANS$="YES" THEN GOTO 610 ELSE GOTO 20 + + REM Part 7 (700) + +700 PRINT + PRINT " *** LONG WIRE ANTENNA ***" + PRINT + PRINT " When an antenna is more than half wavelength long" + PRINT "it is called 'long wire' or 'harmonic' antenna." + PRINT +710 INPUT "What frequency in MHz (Mega Hertz)";F + INPUT "How many half-waves long";N + L=492*(N-0.05)/F + PRINT "Length = ";L;" Feet" + PRINT "Note: If this antenna is fed in exact center at ";L/2;" ft." + PRINT "no unbalance will occur on any harmonic frequency." + PRINT + INPUT "More calculations? (YES/NO)";ANS$ + IF ANS$="YES" THEN 710 + GOTO 20 + + REM Part 8 (800) + +800 PRINT + PRINT " *** DIPOLE OR HALF WAVE ANTENNA ***" + PRINT +810 INPUT "Frequency in MHz (Mega Hertz)";F + L=492/F + PRINT:PRINT "Actual half-wave lenght is ";L;" feet" + IF F<30 THEN L=L*.95 + IF F<150 THEN L=L*.97 + IF F>149.9 THEN L=L*.98 + PRINT "Lenght corrected to free space factor and to capacitance" + PRINT "of insulators is ";L;" feet" + PRINT + C=118/F + E=148/F + PRINT "<----------";L;" ft-------->" + PRINT " <-";C;"ft->" + PRINT "o----------o-------o----------o" + PRINT " o o ^" + PRINT " o o E = ";E;" ft" + PRINT " o=o <- 600 ohms line 3.75 in spaced #16 wire" + PRINT " o o 5 in spaced #14 wire" + PRINT " o o 6 in spaced #12 wire" + PRINT + INPUT "More calculations (YES/NO)";ANS$ + IF ANS$="YES" THEN 810 + GOTO 20 + + REM Part 9 + +900 PRINT + PRINT " *** TIME CONSTANT CALCULATIONS ***" + PRINT +910 PRINT "NOTE: If you wish to substitute Farads by MICROfarads then you" + PRINT " must use resistance in MEGohms in order to get result" + PRINT " in seconds." + INPUT "What is the resistance in ohms";R + INPUT "What is the capacitance in farads";C + PRINT "Time constant = ";R*C;"seconds" + INPUT "More calculations? (YES/NO)";ANS$ + IF ANS$="YES" THEN GOTO 910 ELSE GOTO 20 + + REM Part 10 + +1000 PRINT + PRINT " *** RESISTANCE OF WIRE ***" + PRINT +1010 INPUT "What is the desired resistance in ohms";R + PRINT "What A.W.G.(B&S) size wire NO. is available?" + INPUT " (if unknown, enter '0')";WN + IF WN=0 THEN 1050 + IF WN=1 THEN RW=.1264 + IF WN=2 THEN RW=.1593 + IF WN=3 THEN RW=.2009 + IF WN=4 THEN RW=.2533 + IF WN=5 THEN RW=.3195 + IF WN=6 THEN RW=.4028 + IF WN=7 THEN RW=.5080 + IF WN=8 THEN RW=.6405 + IF WN=9 THEN RW=.8077 + IF WN=10 THEN RW=1.018 + IF WN=11 THEN RW=1.284 + IF WN=12 THEN RW=1.619 + IF WN=13 THEN RW=2.042 + IF WN=14 THEN RW=2.575 + IF WN=15 THEN RW=3.247 + IF WN=16 THEN RW=4.094 + IF WN=17 THEN RW=5.163 + IF WN=18 THEN RW=6.51 + IF WN=19 THEN RW=8.21 + IF WN=20 THEN RW=10.35 + IF WN=21 THEN RW=13.05 + IF WN=22 THEN RW=16.46 + IF WN=23 THEN RW=20.76 + IF WN=24 THEN RW=26.17 + IF WN=25 THEN RW=33 + IF WN=26 THEN RW=41.62 + IF WN=27 THEN RW=52.48 + IF WN=28 THEN RW=66.17 + IF WN=29 THEN RW=83.44 + IF WN=30 THEN RW=105.2 + IF WN=31 THEN RW=132.7 + IF WN=32 THEN RW=167.3 + IF WN=33 THEN RW=211 + IF WN=34 THEN RW=266 + IF WN=35 THEN RW=335 + IF WN=36 THEN RW=423 + IF WN=37 THEN RW=533 + IF WN=38 THEN RW=672.6 + IF WN=39 THEN RW=848.1 + IF WN=40 THEN RW=1069 +1040 INPUT "Of what MATERIAL is the wire";MATERIAL$ + MAT$=LEFT$(MATERIAL$,3) + TEST = RW REM set up test for illegal entry + IF MAT$="COP" THEN RW=RW*1 + IF MAT$="ALU" THEN RW=RW*1.6 + IF MAT$="BRA" THEN RW=RW*4 + IF MAT$="CAD" THEN RW=RW*4.4 + IF MAT$="CHR" THEN RW=RW*1.8 + IF MAT$="GOL" THEN RW=RW*1.4 + IF MAT$="IRO" THEN RW=RW*5.68 + IF MAT$="LEA" THEN RW=RW*12.8 + IF MAT$="NIC" THEN RW=RW*5.1 + IF MAT$="BRO" THEN RW=RW*4 + IF MAT$="SIL" THEN RW=RW*.94 + IF MAT$="STE" THEN RW=RW*11 + IF MAT$="TIN" THEN RW=RW*6.7 + IF MAT$="ZIN" THEN RW=RW*3.4 + IF (RW=TEST) AND (MAT$<>"COP") THEN 1040 + L=1000*R/RW + PRINT "For ";R;"ohms use ";L;" feet of No.";WN;MATERIAL$;" wire" + GOTO 1090 +1050 INPUT "What is distance in feet";D + RX=R*1000/D + IF RX>.1264 THEN W=1 + IF RX>.1593 THEN W=2 + IF RX>.2009 THEN W=3 + IF RX>.2533 THEN W=4 + IF RX>.3195 THEN W=5 + IF RX>.4028 THEN W=6 + IF RX>.5080 THEN W=7 + IF RX>.6405 THEN W=8 + IF RX>.8077 THEN W=9 + IF RX>1.018 THEN W=10 + IF RX>1.284 THEN W=11 + IF RX>1.619 THEN W=12 + IF RX>2.042 THEN W=13 + IF RX>2.575 THEN W=14 + IF RX>3.247 THEN W=15 + IF RX>4.094 THEN W=16 + IF RX>5.163 THEN W=17 + IF RX>6.51 THEN W=18 + IF RX>8.21 THEN W=19 + IF RX>10.35 THEN W=20 + IF RX>13.05 THEN W=21 + IF RX>16.46 THEN W=22 + IF RX>20.76 THEN W=23 + IF RX>26.17 THEN W=24 + IF RX>33 THEN W=25 + IF RX>41.62 THEN W=26 + IF RX>52.48 THEN W=27 + IF RX>66.17 THEN W=28 + IF RX>83.44 THEN W=29 + IF RX>105.2 THEN W=30 + IF RX>132.7 THEN W=31 + IF RX>167.3 THEN W=32 + IF RX>211 THEN W=33 + IF RX>266 THEN W=34 + IF RX>335 THEN W=35 + IF RX>423 THEN W=36 + IF RX>533 THEN W=37 + IF RX>672.6 THEN W=38 + IF RX>848.1 THEN W=39 + IF RX>1069 THEN W=40 + PRINT "The smallest copper wire for ";R;" ohms at distance of ";D;" feet" + PRINT " that can be safely used is No.";W;" A.W.G.(B&S)" +1090 INPUT "More calculations? (YES/NO)";ANS$ + IF ANS$="YES" THEN GOTO 1010 ELSE GOTO 20 + +1200 REM Part 12 tr/rec. crystals + + PRINT + PRINT " ***RECEIVING & TRANSMITTING CRYSTAL CALCULATIONS*** " + PRINT +1221 INPUT "What is the receiving frequency? (in MHz)";R + INPUT "What is the transmitting frequency? (in MHz)";T + GOTO 1250 +1222 INPUT "What is 1st IF freq.(in MHz) of rec.";I + INPUT "What is RECEIVING crystal divider";RD + INPUT "What is TRANSMITTING crystal multiplier";TD +1230 PRINT + PRINT "For receiving on ";R;" MHz (with ";I;" MHz IF) & ";RD;" divider" + PRINT " ORDER ";(R-I)/RD*1000;"KHz receiving crystal" + PRINT "For transmitting on ";T;" MHz (tranmit multiplier=";TD;")" + PRINT "ORDER ";T/TD*1000;" KHz transmitting crystal" + PRINT + INPUT "More crystal freq. calculations? (YES/NO)";ANS$ + IF ANS$="YES" THEN GOTO 1221 ELSE GOTO 20 +1250 PRINT "What make and model transceiver?" + PRINT " STANDARD 146A - MOTOROLA 80D - VOICECOMMANDER"; + INPUT RADIO$ + RADIO$ = LEFT$(RADIO$,3) + IF RADIO$="STA" THEN 1260 + IF RADIO$="MOT" THEN I=5.5:RD=5:TD=24:GOTO 1230 + IF RADIO$="VOI" THEN I=8.7:RD=3:TD=8:GOTO 1230 + GOTO 1222 +1260 I=11.7:RD=9:TD=18:GOTO 1230 + +9999 END diff --git a/cpm/finance.txt b/cpm/finance.txt new file mode 100644 index 0000000..7779ab1 --- /dev/null +++ b/cpm/finance.txt @@ -0,0 +1,187 @@ +10 L1=9 +20 DEF FNR(X)=INT(X*100+.5)/100 +30 CL$=CHR$(26):REM SCREEN CLEAR CHAR. +40 REM ******************************************************** +50 REM +60 PRINT CL$;"THIS PROGRAM IS A COLLECTION OF BUSINESS" +70 PRINT "APPLICATIONS. HERE IS A LIST OF THE VALUES THAT" +80 PRINT "CAN BE COMPUTED GIVEN SUPPORTING DATA:" +90 PRINT +100 PRINT "1) FUTURE VALUE OF AN INVESTMENT" +110 PRINT "2) FUTURE VALUE OF REGULAR DEPOSITS (ANNUITY)" +120 PRINT "3) REGULAR DEPOSITS" +130 PRINT "4) REGULAR DEPOSITS FROM AN INVESTMENT" +140 PRINT "5) INITIAL INVESTMENT" +150 PRINT "6) MINIMUM INVESTMENT FOR WITHDRAWALS" +160 PRINT "7) NOMINAL INTEREST RATE ON INVESTMENTS" +170 PRINT "8) EFFECTIVE INTEREST RATE ON INVESTMENTS" +180 PRINT "9) EARNED INTEREST TABLE" +190 PRINT +200 PRINT "WHICH OF THE ABOVE VALUES WOULD YOU LIKE" +210 PRINT "TO COMPUTE ( 1 TO";L1;", OR 0 TO END RUN )"; +220 INPUT X +230 PRINT CL$ +240 IF X=0 THEN 1860 +250 ON X GOSUB 270,360,470,590,690,800,910,1010,1150 +260 GOTO 90 +270 PRINT "FUTURE VALUE OF AN INVESTMENT" +280 PRINT:INPUT "INITIAL INVESTMENT (0 TO STOP) ";P:IFP=0 THEN RETURN +290 GOSUB 1130 +300 GOSUB 1140 +310 GOSUB 1110 +320 I=I/N/100 +330 T=P*(I+1)^(N*Y) +340 GOSUB 1100 +350 GOTO 280 +360 PRINT "FUTURE VALUE OF REGULAR DEPOSITS (ANNUITY)" +370 PRINT +380 INPUT "AMOUNT OF REGULAR DEPOSITS (0 TO STOP)";R +390 IFR=0 THEN RETURN +400 GOSUB 1130 +410 INPUT "NUMBER OF DEPOSITS PER YEAR";N +420 GOSUB 1110 +430 I=I/N/100 +440 T=R*((I+1)^(N*Y)-1)/I +450 GOSUB 1100 +460 GOTO 370 +470 PRINT "REGULAR DEPOSITS" +480 PRINT +490 INPUT "TOTAL VALUE AFTER Y YEARS (0 TO STOP) ";T +500 IF T=0 THEN RETURN +510 GOSUB 1130 +520 DEF FNR(X)=INT(X*100+.5)/100 +530 INPUT "NUMBER OF DEPOSITS PER YEAR";N +540 GOSUB 1110 +550 I=I/N/100 +560 R=T*I/((I+1)^(N+Y)-1) +570 PRINT "REGULAR DEPOSITS: $";INT(R*100+.5)/100 +580 GOTO 480 +590 PRINT "REGULAR WITHDRAWALS FROM AN INVESTMENT" +600 PRINT:INPUT"INITIAL INVESTMENT (0 TO STOP) ";P +610 IF P=0 THEN RETURN +620 GOSUB 1130 +630 INPUT "NUMBER OF WITHDRAWALS PER YEAR";N +640 GOSUB 1110 +650 I=I/N/100 +660 R=P*(I/((I+1)^(N*Y)-1)+I) +670 PRINT "AMOUNT OF EACH WITHDRAWAL = $";INT(R*100+.5)/100 +680 GOTO 600 +690 PRINT "INITIAL INVESTMENT" +700 PRINT +710 INPUT "TOTAL VALUE AFTER Y YEARS (0 TO STOP) ";T +720 IF T=0 THEN RETURN +730 GOSUB 1140 +740 GOSUB 1110 +750 GOSUB 1130 +760 I=I/N/100 +770 P=T/(I+1)^(N*Y) +780 PRINT "INITIAL INVESTMENT = $";INT(P*100+.5)/100 +790 GOTO 700 +800 PRINT "MINIMUM INVESTMENT FOR WITHDRAWALS" +810 PRINT +820 INPUT "AMOUNT OF WITHDRAWALS (0 TO STOP) ";R +830 IF R=0 THEN RETURN +840 GOSUB 1130 +850 INPUT "NUMBER OF WITHDRAWALS PER YEAR";N +860 GOSUB 1110 +870 I=I/100 +880 P=R*N/I*(1-1/((1+I/N)^(N*Y))) +890 PRINT "MINIMUM INVESTMENT = $";INT(100*P+.5)/100 +900 GOTO 810 +910 PRINT "NOMINAL INTEREST RATE ON INVESTMENTS" +920 PRINT +930 INPUT "PRINCIPAL (0 TO STOP)";P +940 IF P=0 THEN RETURN +950 INPUT "TOTAL VALUE";T +960 GOSUB 1110 +970 GOSUB 1140 +980 I2=N*((T/P)^(1/(N*Y))-1)*100 +990 PRINT "NOMINAL INTEREST RATE = ";I2;"%" +1000 GOTO 920 +1010 PRINT "EFFECTIVE INTEREST RATE ON INVESTMENTS" +1020 PRINT +1030 INPUT "INITIAL INVESTMENT (0 TO STOP) ";P +1040 IF P=0 THEN RETURN +1050 INPUT "TOTAL VALUE AFTER Y YEARS";T +1060 GOSUB 1110 +1070 PRINT "ANNUAL INTEREST RATE = ";((T/P)^(1/Y)-1)*100;"%" +1080 GOTO 1020 +1090 REM ******* +1100 PRINT "FUTURE VALUE = $"; INT(T*100+.5)/100:RETURN +1110 INPUT "NUMBER OF YEARS AND MONTHS (2 NUMBERS WITH A COMMA BETWEEN THEM)";Y0,M +1120 Y=(12*Y0+M)/12:RETURN +1130 INPUT "NOMINAL INTEREST RATE (0 TO 100) ";I:RETURN +1140 INPUT "NUMBER OF COMPOUNDING PERIODS PER YEAR";N:RETURN +1150 PRINT "**** EARNED INTEREST TABLE GENERATOR ***" +1160 PRINT +1170 INPUT "PRINCIPAL";P +1180 GOSUB 1130 +1190 I=I/100 +1200 INPUT "NUMBER OF DEPOSITS/WITHDRAWALS PER YEAR";N1 +1210 IF N1=0 THEN 1260 +1220 INPUT "AMOUNT OF DEPOSIT/WITHDRAWAL";R +1230 N=360 +1240 L2=N1 +1250 GOTO 1290 +1260 GOSUB 1140 +1270 N1=0 +1280 L2=4 +1290 INPUT "START WITH WHAT YEAR (WHERE 1 MEANS THE FIRST, 2 THE SECOND, ETC.) ";X +1300 INPUT "END WITH WHAT YEAR";Y +1310 X=INT(X) +1320 B0=P:I1=0:I2=0:I3=0:K=66:P1=4 +1330 FOR J0=1 TO INT(Y)+1 +1340 IF J0N1 THEN 1590 +1560 IF N2/N1>J1/N THEN 1590 +1570 B0=B0+R +1580 N2=N2+1 +1590 B2=B0*(1+I/N) +1600 I1=B2-B0 +1610 I3=I3+I1 +1620 I2=I2+I1 +1630 IF P2/P1>J1/N THEN 1670 +1640 I2=FNR(I2) +1650 B2=FNR(B2) +1660 P2=P2+1 +1670 IF J0=Y THEN 1820 +1770 NEXT J1 +1780 IF J0 to input your own Local Coordinates: ";: INPUT MHC$ +150 IF (MHC$="H")OR(MHC$="h")THEN II$="East Charlotte" : A=35.208 : G=80.808 : GOTO 220 +160 IF (MHC$="W")OR(MHC$="w")THEN II$="Wilmington NC" : A=34.167 : G=77.867 : GOTO 220 +170 IF (MHC$="M")OR(MHC$="m")THEN II$="Myrtle Beach SC" : A=33.7 : G=78.85 : GOTO 220 +180 IF (MHC$="C")OR(MHC$="c")THEN II$="Charleston SC" : A=32.783 : G=79.933 : GOTO 220 +190 PRINT :PRINT +200 INPUT "Enter The Name of Your Location ";II$ +210 PRINT :INPUT "Enter Your LATITUDE in Degrees";A:PRINT :INPUT "Your LONGITUDE in Degrees";G +220 PRINT CLS$ :PRINT :GOSUB 1220:PRINT +230 INPUT "What is the Name of the Hurricane ";A$:PRINT +240 PRINT "Input LATITUDE of Hurricane ";A$;" in Degrees";:INPUT B:PRINT +250 PRINT "Input LONGITUDE of Hurricane ";A$;" in Degrees";:INPUT H +260 PRINT :PRINT "What is ";A$;"'s Current Direction of Travel (in Degrees)";:INPUT DD +270 PRINT :PRINT "What is ";A$;"'s Current Speed (MPH)";:INPUT SS +280 :' **** CALCULATE LOCATION AND DISTANCE **** +290 PRINT CLS$ :IF A=B AND G=H THEN H=H+.1 +300 PRINT :GOSUB 1220:I=G-H:L=I +310 IF (I<180) AND (I>-180) GOTO 350 +320 J=I+360:L=J +330 IF (J<180) AND (J>-180) GOTO 350 +340 L=I-360 +350 IF L>0 THEN R=1 +360 IF L<0 THEN R=0 +370 E=SIN(A*.0174533):F=SIN(B*.0174533):K=COS(A*.0174533) +380 M=COS(B*.0174533):N=COS(L*.0174533):D=(E*F)+(K*M*N) +390 O=(-ATN(D/SQR(-D*D+1))+1.5708)*57.2958 +400 P=SIN(O*.0174533):Q=(F-(E*D))/(K*P) +410 C=INT((-ATN(Q/SQR(-Q*Q+1))+1.5708)*57.2958) +420 IF R=0 THEN C=360-C +430 QQ=(E-(F*D))/(M*P) +440 CC=INT((-ATN(QQ/SQR(-QQ*QQ+1))+1.5708)* 57.2958) +450 IF R=1 THEN CC=360-CC +460 D=O*60*1.15078:D=INT(D+.5):PRINT +470 :' **** DETERMINE DIRECTION **** +480 IF C>=0 AND C<15 THEN G$="NORTH":GOTO 570 +490 IF C>=15 AND C<75 THEN G$="NORTHEAST":GOTO 570 +500 IF C>=75 AND C<105 THEN G$="EAST":GOTO 570 +510 IF C>=105 AND C<165 THEN G$="SOUTHEAST":GOTO 570 +520 IF C>=165 AND C<195 THEN G$="SOUTH":GOTO 570 +530 IF C>=195 AND C<225 THEN G$="SOUTHWEST":GOTO 570 +540 IF C>=255 AND C<285 THEN G$="WEST":GOTO 570 +550 IF C>=285 AND C<345 THEN G$="NORTWEST":GOTO 570 +560 G$="NORTH" +570 GOSUB 780:GOSUB 1210 +580 :' **** PRINT NO ALARM TEXT **** +590 PRINT "HURRICANE ";A$;" is Currently ";D;" Miles ";G$;" Of" +600 PRINT II$;". Bearing From ";II$ +610 PRINT "IS ";C;" Degrees From True North." +620 GOSUB 1210 +630 PRINT "If Hurricane ";A$;" Maintains its Current Speed of ";SS;"(mph) +640 PRINT "THERE IS NO CAUSE FOR ALARM. Please Continue To Monitor" +650 PRINT "Hurricane ";A$;" Closely." +660 GOSUB 1210 +670 PRINT :PRINT +680 PRINT" N O A A Weather Radio" : PRINT +690 PRINT" Charlotte 162.475 MHz" +700 PRINT" Wilmington NC 162.55" +710 PRINT" Myrtle Beach SC 162.4" +720 PRINT" Charleston SC 162.55" +730 PRINT" Beaufort SC 162.475" +740 PRINT" Cape Hatteras 162.55" : PRINT +750 PRINT :FOR TT= 1 TO 1000:NEXT :PRINT "Press to Input New Status On Hurricane ";A$;:INPUT UU$ +760 PRINT CLS$ :PRINT :GOSUB 1220:PRINT :GOTO 240 +770 :' **** DETERMINE IF PATH IS IN YOUR DIRECTION **** +780 KK=10:IF D<200 THEN KK=20 +790 IF D<400 THEN KK=15 +800 IF D<90 THEN 1450 +810 P$=II$ +820 IF DD<(CC+KK) AND DD>(CC-KK) THEN 880 +830 IF DD360-(KK-DD) THEN 880 +840 IF DD>(360-KK) AND CC> To Continue";UU$:PRINT CLS$ +1360 PRINT :PRINT " H U R R I C A N E C O N D I T I O N S":PRINT +1370 PRINT " D. H U R C O N 2: A HURRICANE HAS BECOME A THREAT" +1380 PRINT " TO THE ";II$;" AREA. SURFACE WINDS IN EXCESS OF 50" +1390 PRINT " KNOTS COULD ARRIVE WITHIN 24 HOURS.":PRINT +1400 PRINT " E. H U R C O N 1: A HURRICANE HAS BECOME A THREAT" +1410 PRINT " TO THE ";II$;" AREA. SURFACE WINDS IN EXCESS OF 50" +1420 PRINT " KNOTS COULD ARRIVE WITHIN 12 HOURS.":PRINT :PRINT +1430 INPUT " Press <> To Continue";UU$:PRINT CLS$ :GOTO 1030 +1440 :' **** TOO LATE MESSAGE **** +1450 PRINT CLS$ :PRINT "YOU ARE NOW IN A HURRICANE " +1460 EE=FIX(LEN(A$)/2) +1470 IF EE/2<>INT(EE/2) THEN EE=EE+1 +1480 PRINT "* * * ";A$;" * * *" +1490 PRINT "G O O D L U C K" +1500 FOR X=1 TO 250:NEXT +1510 PRINT "+ - + - + - + - + " +1520 FOR X= 1 TO 250:NEXT +1530 GOTO 1490 diff --git a/cpm/ic-timer.txt b/cpm/ic-timer.txt new file mode 100644 index 0000000..eef45ae --- /dev/null +++ b/cpm/ic-timer.txt @@ -0,0 +1,89 @@ +10 REM ****************** Timer Calculations ************* +20 REM By Ken L. Greene +30 REM #63 - 13435 97 Street +40 REM Edmonton, Alberta, Canada +50 REM T5E 4C8 +60 REM (403) 475 2456 +70 N=8 +80 GOSUB 770 +90 PRINT" TIMER CALCULATIONS" +100 PRINT" This program calculates values and times for these timers:" +110 PRINT TAB(10)"1 9601" +120 PRINT TAB(10)"2 9602" +130 PRINT TAB(10)"3 96L02" +140 PRINT TAB(10)"4 74121" +150 PRINT TAB(10)"5 74122" +160 PRINT TAB(10)"6 74123" +170 PRINT TAB(10)"7 555" +180 PRINT TAB(10)"8 556 (Dual 555)" +190 PRINT TAB(10)"9 To end" +200 PRINT:PRINT +210 INPUT"Enter the number corresponding to the desired timer :";T +220 IF T=9 THEN END +230 IF T>9 THEN GOTO 10 +240 K1=K1(T):K2=K2(T):K3=K3(T) +250 RMAX=RMAX(T) +260 GOSUB 600 +270 IF T$<>"T" AND T$<>"t" GOTO 340 +280 GOSUB 540:GOSUB 560 +290 T=K1+K2*R*C*(1+K3)/R) +300 SC=T:GOSUB 670:T=SC +310 T= INT(T*10)/10 +320 PRINT "THE TIME IS ";T;SC$;"sec" +330 GOTO 260 +340 IF T$<>"R" AND T$<>"r" THEN GOTO 450 +350 GOSUB 560:GOSUB 580 +360 R=((T-K1)/(K2*C))-K3 +370 R1=R +380 SC=R:GOSUB 670:R=SC +390 R=INT(R*10)/10 +400 PRINT "THE RESISTANCE IS ";R;SC$;"ohms" +410 IF R1<=RMAX THEN GOTO 260 +420 PRINT:PRINT:PRINT"Resistance is greater than maximum resistance for this timer." +430 PRINT"use a larger value of capacitance for this time value.":PRINT:PRINT +440 GOTO 260 +450 IF T$<>"C" AND T$<>"c" THEN GOTO 520 +460 GOSUB 550:GOSUB 580 +470 C=((T-K1)/K2)/(R+K3) +480 SC=C:GOSUB 670:C=SC +490 C=INT(C*10)/10 +500 PRINT "THE CAPACITANCE IS ";C;SC$;"farads" +510 GOTO 260 +520 IF T$<>"E" AND T$<> "e" THEN GOTO 260 +530 GOTO 90 +540 REM SUBROUTINE TO ASK FOR VALUE OF "R" +550 INPUT "Enter value for 'R' in ohms :";R:RETURN +560 REM SUBROUTINE TO ASK FOR VALUE FOR "C" +570 INPUT"Enter value for 'C' in farads";C:RETURN +580 REM SUBROUTINE TO ASK FOR VALUE FOR "T" +590 INPUT"Enter value for 'T' in seconds :";T:RETURN +600 REM SUBROUTINE TO ASK WHICH VARIABLE +610 PRINT"Enter letter for variable you wish to find :" +620 PRINT TAB(10)"R resistor" +630 PRINT TAB(10)"C Capacitor" +640 PRINT TAB(10)"T Time" +650 PRINT TAB(10)"E Exit" +660 INPUT T$:RETURN +670 REM SUBROUTINE TO SCALE VARIABLES & FIND SCALE FACTOR +680 IF SC>1E+06 THEN SC=SC/1E+06:SC$="M":RETURN +690 IF SC>1000! THEN SC=SC/1000!:SC$="K":RETURN +700 IF SC<1 THEN SC$="":RETURN +710 IF SC<1E-12 THEN SC=0:SC$="":RETURN +720 IF SC<1E-09 THEN SC=SC/1E-12:SC$="p":RETURN +730 IF SC<.000001 THEN SC=SC/1E-09:SC$="n":RETURN +740 IF SC<.001 THEN SC=SC/.000001:SC$="u":RETURN +750 IF SC<1 THEN SC=SC/.001:SC$="m":RETURN +760 RETURN +770 REM INITIALIZE TIMER CONSTANTS +780 FOR I=1 TO N +790 READ K1(I),K2(I),K3(I),RMAX(I):NEXT +800 RESTORE +810 DATA 0,.32,.7,20000 +820 DATA 0,.31,1,20000 +830 DATA 0,.33,3,200000 +840 DATA 0,.693147,0,40000 +850 DATA 0,.693147,0,40000 +860 DATA 0,.693147,0,40000 +870 DATA 0,1.1,0,20E6 +880 DATA 0,1.1,0,20E6 +890 RETURN diff --git a/cpm/interest.txt b/cpm/interest.txt new file mode 100644 index 0000000..456d202 --- /dev/null +++ b/cpm/interest.txt @@ -0,0 +1,39 @@ +2 PRINT TAB(30);"INTEREST" +4 PRINT +8 PRINT +9 PA=0 +10 REM -PROGRAM TO COMPUTE INTEREST PAYMENTS +20 PRINT "INTEREST IN PERCENT"; +25 INPUT J +26 J=J/100 +30 PRINT "AMOUNT OF LOAN"; +35 INPUT A +40 PRINT "NUMBER OF YEARS"; +45 INPUT N +50 PRINT "NUMBER OF PAYMENTS PER YEAR"; +55 INPUT M +60 N=N*M +65 I=J/M +70 B=1+I +75 R=A*I/(1-1/B^N) +78 PRINT +80 PRINT "AMOUNT PER PAYMENT=";INT(R*100)/100 +85 PRINT "TOTAL INTEREST =";INT((R*N-A)*100)/100 +90 B=A +95 PRINT "PAYMENT NO.";TAB(15);"INTEREST";TAB(30);"PRINCIPAL";TAB(45);"BALANCE" +100 L=B*I +110 P=R-L +120 B=B-P +122 L=INT(L*100)/100 +124 P=INT(P*100)/100 +126 B=INT(B*100)/100 +128 PA=PA+1 +130 PRINT PA;TAB(15);"$";L;TAB(30);"$";P;TAB(45);"$";B +140 IF B>=R THEN 100 +150 PRINT TAB(30);"$";INT((B*1)*100)/100;TAB(45);"$";INT((R-B*I)*100)/100 +155 PRINT +160 PRINT PA+1;"LAST PAYMENT =";TAB(30);"$";INT((B*I+B)*100)/100 +170 PRINT +180 PRINT +190 PRINT +200 END diff --git a/cpm/intrate.txt b/cpm/intrate.txt new file mode 100644 index 0000000..256f8be --- /dev/null +++ b/cpm/intrate.txt @@ -0,0 +1,51 @@ +10 K=0:T0=0:T1=0 +20 INPUT "INTEREST RATE (%) ",I2 +30 J=I2/1200 +40 INPUT "TERM IN MONTHS" ,N +50 D=1-(1+J)^-N +60 R=1000*J/D +70 P=9.9995E-03 +80 F=R+P +90 F=(INT(F*100)/100) +100 PRINT "RATE PER $1000 = $", +110 PRINT %7F2,F +120 INPUT "AMOUNT OF MORTGAGE ",Z +130 INPUT "PAYMENT IF KNOWN, ELSE 0 ",B +140 IF B>0 THEN 190 +150 B=(Z/1000)*F +160 INPUT "DO YOU WANT PAYMENT IN EVEN DOLLARS ",Y$ +170 IF Y$(1,1) ="N" THEN 190 +180 B=INT (B+.99) +190 PRINT "MONTHLY PAYMENT = $", +200 PRINT %7F2,B +210 INPUT "DO YOU WANT TO AMORTIZE THIS LOAN ",Y$ +220 IF Y$(1,1)="N" THEN 10 +230 INPUT "DO YOU WANT DETAIL DISPLAYED ",Y$ +240 IF Y$(1,1) ="N" THEN S=1 ELSE S=0 +250 IF S=1 THEN 280 +260 INPUT "DISPLAY INTERVAL ",D1 +270 INPUT "DISPLAY START PERIOD ",D2 +280 PRINT "PMT# BALANCE INT PRIN RED PER INT TOT INT" +290 I1=J*Z +300 I1=I1+5E-03:I1=(INT(I1*100)/100) +310 T0=T0+I1:T1=T1+I1 +320 P1=Z +330 Q=B-I1 +340 Z=Z-Q +350 X=P1:Y=Q:X=X-Y +360 IF X>0 THEN 380 +370 Z=0:B=P1+I1:Q=B-I1 +380 K=K+1 +390 IF S=1 THEN 460 +400 IF K<>D1+D2 THEN 420 +410 PRINT%3I,K, +420 IF K K THEN 460 ELSE D2=D2+D1 +440 PRINT %9F2,Z,I1,Q,T0,T1 +450 T0=0 +460 IF Z>0 THEN 290 +470 PRINT:PRINT "FINAL TOTALS":PRINT +480 PRINT%3I,K, +490 PRINT %9F2,Z,I1,Q,T0,T1 +500 PRINT "LAST PAYMENT = $",%7F2,B +510 STOP diff --git a/cpm/keywrdfx.txt b/cpm/keywrdfx.txt new file mode 100644 index 0000000..2caa9bd --- /dev/null +++ b/cpm/keywrdfx.txt @@ -0,0 +1,117 @@ +10 ' +20 ' +30 ' PROGRAM: Key Word Fix +40 ' DATE WRITTEN: July 4, 1982 +50 ' VERSION: 1.0 +60 ' AUTHOR: Timothy D. Winslow +70 ' +80 ' This program is written in microsoft basic for the +90 ' Heathkit H-89 computer. It takes a file that is messed up +100 ' by having the key words e.g. 'PRINT' being mashed next to a +110 ' variable, statement, etc. and puts a space afterwards, if it +120 ' doesn't already have one. +130 ' +140 ' It's a long process, the program isn't in good +150 ' order, and it's not full proof. It also does words in quotes. +160 ' I'm only human. +170 ' +180 ' This program may error out depending on the amount of +190 ' RAM 'Random Access Memory' you have. If it does, lower the +200 ' Level of Z$ by a couple of hundred. +210 ' +220 ' This program isn't looking at these key words: +230 ' 'INPUT', 'ERROR', 'FOR', 'GOTO', 'XOR', 'NOR', and 'LPRINT'. +240 ' The reasons are 'INPUT' is done with 'PUT', 'ERROR', 'FOR', 'XOR', +250 ' and 'NOR are done with 'OR', 'GOTO' is done with 'TO' and 'LPRINT' +260 ' is done with 'PRINT'. This is done so the program works a little +270 ' faster and to save array space. +280 ' +290 ' This program is public domain softward. Please treat +300 ' as such. I made it to help people not to sit and work putting +310 ' spaces in there program. This program make take long, but it +320 ' works. +330 ' +340 ' +350 CLEAR +360 ON ERROR GOTO 980 +370 E$=CHR$(27)+"E":PRINT E$; +380 PRINT "DO YOU NEED INSTUCTIONS (Y/N/Q=QUIT): "; +390 Y$=INKEY$:IF Y$="" THEN 390 +400 IF Y$="Q" OR Y$="q" THEN 1010 +410 IF Y$="Y" OR Y$="y" THEN GOSUB 1030 ELSE 420 +420 IF Y$="N" OR Y$="n" THEN 430 ELSE 380 +430 PRINT E$; +440 DIM Z$(5000),Q(27),A$(27) +450 FOR X=1 TO 27 +460 READ A$(X),Q(X) +470 NEXT X +480 INPUT "FILENAME TO BE WORKED FROM";N$ +490 IF LEN(N$)>12 THEN PRINT "INVALID FILENAME":GOTO 480 +500 IF LEN(N$)<1 THEN PRINT "INVALID FILENAME":GOTO 480 +510 FOR X=1 TO 9 +520 IF MID$(N$,X,4)=".BAS" THEN 590 +530 NEXT +540 FOR X=1 TO 9 +550 IF MID$(N$,X,1)="." THEN PRINT "INVALID FILENAME":GOTO 480 +560 NEXT X +570 IF LEN(N$)>8 THEN PRINT "INVALID FILENAME":GOTO 480 +580 N$=N$+".BAS" +590 INPUT "FILENAME TO BE OUTPUTED";O$ +600 IF LEN(O$)>12 OR LEN(O$)<1 THEN PRINT "INVALID FILENAME":GOTO 590 +610 FOR X=1 TO 9 +620 IF MID$(O$,X,4)=".BAS" THEN 690 +630 NEXT X +640 FOR X=1 TO 9 +650 IF MID$(O$,X,1)="." THEN PRINT "INVALID FILENAME":GOTO 590 +660 NEXT X +670 IF LEN(O$)>8 THEN PRINT "INVALID FILENAME":GOTO 590 +680 O$=O$+".BAS" +690 OPEN "I",1,N$ +700 OPEN "O",2,O$ +710 FOR X=1 TO 1300 +720 LINE INPUT #1,Z$(X) +730 PRINT E$; +740 IF POS(0) THEN PRINT:PRINT Z$(X) +750 A=LEN(Z$(X)) +760 P=0 +770 PRINT "WORKING ON . . ."; +780 FOR M=1 TO 27 +790 IF POS(0)>75 THEN PRINT +800 PRINT LEFT$(A$(M),Q(M)-1);", "; +810 FOR Z=1 TO A+P +820 IF MID$(Z$(X),Z,Q(M)-1)=LEFT$(A$(M),Q(M)-1) THEN 880 +830 NEXT Z +840 NEXT M +850 PRINT #2,Z$(X) +860 NEXT X +870 GOTO 1010 +880 IF MID$(Z$(X),Z,Q(M))=A$(M)THEN GOTO 830 +890 FOR W=1 TO 500:NEXT W:Z$(X)=LEFT$(Z$(X),Z-1)+A$(M)+MID$(Z$(X),Z+(Q(M)-1),A) +900 PRINT E$; +910 IF POS(0) THEN PRINT:PRINT Z$(X) +920 PRINT"WORKING ON . . ."; +930 GOTO 780 +940 DATA "AND ",4,"CALL ",5,"CLEAR ",6,"DATA ",5,"DEF ",4,"DIM ",4,"ELSE ",5 +950 DATA "GET ",4,"GOSUB ",6,"IF ",3,"LET ",4,"LINE ",5,"NEXT ",5,"ON ",3 +960 DATA "OR ",3,"OUT ",4,"PRINT ",6,"POKE ",5,"PUT ",4,"READ ",5,"REM ",4 +970 DATA "RESUME ",7,"RETURN ",7,"STEP ",5,"THEN ",5,"TO ",3,"WHILE ",6 +980 IF ERR=62 THEN RESUME 1010 +990 IF ERR=53 THEN PRINT "Filename not found.....Please retry.":RESUME 480 +1000 RESUME 1020 +1010 PRINT E$:CLOSE:CLEAR:END +1020 PRINT E$;:PRINT ERR;"AT";ERL:CLOSE:CLEAR:END +1030 ' INSTRUCTIONS +1040 Y$="N" +1050 PRINT E$ +1060 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT +1070 PRINT" This program is to fix key words in a Ascii +1080 PRINT" program. It will find a key word and put a space after it, +1090 PRINT" If it needs one. +1100 PRINT +1110 PRINT" This program takes a lone time because it checks +1120 PRINT" every letter in every line with all the key words. +1130 PRINT +1140 PRINT +1150 PRINT:PRINT "Press enter..."; +1160 I$=INKEY$:IF I$<> CHR$(13) THEN 1160 +1170 RETURN diff --git a/cpm/loan2.txt b/cpm/loan2.txt new file mode 100644 index 0000000..c724693 --- /dev/null +++ b/cpm/loan2.txt @@ -0,0 +1,757 @@ +1000 REM LOAN CALCULATION PROGRAM (WRITTEN TO RUN WITH BASIC-80 v5.21) +1020 REM WRITTEN BY MARK MCKIBBEN, WOLD COMMUNICATIONS +1040 REM THIS PROGRAM WAS WRITTEN IN STAGES AND NEVER REALLY STRAIGHTENED +1060 REM OUT, SO IT IS A BIT OF A MESS. +1080 REM THE PROGRAM IS MENU-DRIVEN AND MORE OR LESS SELF-DOCUMENTING. +1100 REM ONLY ONE STATEMENT NEEDS TO BE CORRECTED (IF RUN UNDER MBASIC) +1120 REM FOR SPECIFIC TERMINALS: ONE OF THE FIRST STATEMENTS BELOW +1140 REM DEFINES CLS$, WHICH IS SENT TO THE CONSOLE TO CLEAR SCREEN AND +1160 REM HOME CURSOR. +1180 REM THERE IS ONE UNDOCUMENTED MENU ITEM: "L", WHICH LOADS SAMPLE +1200 REM VALUES INTO THE VARIABLES FOR TESTING. +1220 REM +1240 DEFDBL D:DEFSNG S:DEFSTR A-C:DEFINT I:REM GLOBAL VARIABLE DEFINITIONS +1260 REM CHANGE THE STATMENT BELOW FOR YOUR CLEAR SCREEN SEQUENCE +1280 CLEAR +1300 CLS$=CHR$(27)+CHR$(42):REM THIS VARIABLE WILL CLEAR THE SCREEN +1320 ON ERROR GOTO 1360 +1340 GOTO 1480 +1360 PRINT CLS$ +1380 PRINT:PRINT:PRINT:PRINT " AN ENTRY HAS BEEN MADE WHICH CANNOT BE USED FOR LOAN CALCULATIONS.":PRINT:PRINT +1400 PRINT " PLEASE DOUBLE CHECK YOUR ENTRIES AND TRY AGAIN. PRESS ANY KEY TO CONTINUE. "; +1420 ANS$=INPUT$(1) +1440 RESUME 1280 +1460 REM +1480 WIDTH 79:REM SET WIDTH TO 79 ON SCREEN +1500 REM +1520 GOTO 2660 +1540 REM MENU PROCESSING SUBROUTINE +1560 PRINT +1580 PRINT " >>>>>>>>>>>>> NOW WAITING FOR YOUR SELECTION >>>>> "; +1600 ANS$=INPUT$(1) +1620 IF ANS$<"a" OR ANS$>"z" THEN GOTO 1660 +1640 ANS$=CHR$(ASC(ANS$)-32) +1660 FOR MENUNUM%=1 TO LEN(MENULIST$) +1680 IF ANS$=MID$(MENULIST$,MENUNUM%,1) THEN PRINT ANS$;CHR$(13);SPC(70);CHR$(13);:RETURN +1700 NEXT +1720 GOTO 1600 +1740 REM ***** YES/NO SUBROUTINE ****** (MENUNUM% = 1 FOR YES, 2 FOR NO) +1760 ANS$ = INPUT$(1) +1780 IF ANS$ = "Y" OR ANS$ = "y" THEN MENUNUM% = 1 : PRINT "Yes" : RETURN +1800 IF ANS$ = "N" OR ANS$ = "n" THEN MENUNUM% = 2 : PRINT "No" : RETURN +1820 GOTO 1760 +1840 REM ******* SUBROUTINE FOR PRINTING REUSED MESSAGE #1 +1860 PRINT:PRINT " The calculated amount above will be automatically recalculated anytime you":PRINT " change one of the VARIABLES. Use the menu to select.":RETURN +1880 REM ******* SUBROUTINE FOR PRINTING REUSED MESSAGE #2 +1900 PRINT " Please enter each missing variable using the menu to select each item.":RETURN +1920 REM ******* SUBROUTINE FOR PRINTING REUSED MESSAGE #3 +1940 PRINT:PRINT " Variables needed for calculation:":PRINT:PRINT " VARIABLE CURRENT VALUE":RETURN +1960 REM ******* SUBROUTINE FOR PRINTING REUSED MESSAGE #4 +1980 PRINT:PRINT " PRESS (H) for HELP." +2000 PRINT " PRESS (M) to return to the MAIN MENU.":RETURN +2020 REM ****** SUBROUTINE FOR PRINTING REUSED MESSAGE #5 +2040 PRINT " NEGATIVE numbers are not allowed in loan calculations. HIT ANY KEY.";ANS$=INPUT$(1); +2060 PRINT CHR$(13);SPC(75);CHR$(13); +2080 RETURN +2100 REM ORIGINAL TERM LOAN PRINICIPAL USING INTEREST RATE, THE AMOUNT +2120 REM OF REGULAR PAYMENTS, NUMBER OF PAYMENTS PER YEAR AND TERM OF THE +2140 REM LOAN. +2160 REM +2180 REM REGULAR PAYMENT ON A LOAN USING ORIGINAL LOAN PRINCIPAL, INTEREST +2200 REM RATE, NUMBER OF PAYMENTS PER YEAR, AND NUMBER OF YEARS TO PAY. +2220 REM ASSUMES ALL PAYMENTS WILL BE EQUAL. +2240 REM +2260 REM LAST PAYMENT ON A LOAN USING AMOUNT OF THE LOAN, THE AMOUNT OF +2280 REM THE PAYMENTS, INTEREST RATE CHARGED, NUMBER OF PAYMENTS PER YEAR +2300 REM AND THE TERM OF THE PAYMENTS +2320 REM +2340 REM REMAINING BALANCE ON A LOAN AFTER A SPECIFIC NUMBER OF PAYMENTS +2360 REM USING PAYMENT AMOUNT, NUMBER OF PAYMENTS PER YEAR, AMOUNT OF THE +2380 REM PRINCIPAL, ANNUAL INTEREST RATE, AND THE PAYMENTS NUMBER. THERE +2400 REM ALSO A SUBROUTINE THAT WILL CALCULATE THE PAYMENT NUMBER GIVEN +2420 REM THE FIRST PAYMENT DATE AND THE CURRENT OR PROJECTED DATE. +2440 REM +2460 REM TERM OF A LOAN (PERIOD NEEDED TO REPAY) USING PAYMENT AMOUNTS, +2480 REM NUMBER OF PAYMENTS, ANNUAL INTEREST RATE AND ORIGINAL LOAN AMOUNT. +2500 REM ALL PAYMENTS ARE ASSUMED TO BE EQUAL. +2520 REM +2540 REM ANNUAL INTEREST RATE ON A LOAN USING AMOUNT OF LOAN, AMOUNT OF +2560 REM PAYMENT, NUMBER OF PAYMENTS PER YEAR, AND TERM OF LOAN. +2580 REM +2600 REM MORTGAGE AMORTIZATION TABLE USING PAYMENT AMOUNT, TERM OF PAYMENT +2620 REM NUMBER OF PAYMENTS PER YEAR, PRINCIPAL AMOUNT AND INTEREST RATE. +2640 REM +2660 REM **************************************************************** +2680 REM BEGINNING OF PROGRAM +2700 REM *************************************************************** +2720 REM FIRST COMES THE STARTUP MENU +2740 REM +2760 PRINT CLS$ +2780 REM +2800 REM +2820 PRINT:PRINT" *************** MAIN MENU ***************" +2840 PRINT " This is a program for LOAN CALCULATIONS. Please select the " +2860 PRINT " module you would like to run below." +2880 PRINT +2900 PRINT " (Press the corresponding letter from the menu.)" +2920 PRINT +2940 PRINT " (A) LOAN PRINCIPAL AMOUNT" +2960 PRINT " (B) REGULAR LOAN PAYMENT AMOUNT" +2980 PRINT " (C) LAST PAYMENT ON A LOAN" +3000 PRINT " (D) REMAINING BALANCE ON A LOAN" +3020 PRINT " (E) TERM OF A LOAN" +3040 PRINT " (F) ANNUAL INTEREST RATE ON A LOAN" +3060 PRINT " (G) LOAN AMORTIZATION TABLE" +3080 PRINT +3100 PRINT " (H)ELP-- Choose this for an explanation of the modules above." +3120 PRINT +3140 PRINT " (X) EXIT BACK TO THE OPERATING SYSTEM" +3160 REM +3180 MENULIST$="ABCDEFGHXL" +3200 GOSUB 1540 +3220 ON MENUNUM% GOTO 3240,4380,4960,5660,6600,7440,8180,13240,15580,15880 +3240 REM *******************MENU CHOICE A***************************** +3260 PRINT CLS$; +3280 PRINT " PRINCIPAL ON A LOAN " +3300 PRINT " Calculates an initial amount borrowed." +3320 GOSUB 1920 +3340 PRINT " (A) ";:GOSUB 3360:GOTO 3400 +3360 PRINT "Amount of Regular Payment: "; +3380 PRINT USING "$$#########.##";DPAYMENT:RETURN +3400 PRINT " (B) ";:GOSUB 3420:GOTO 3480 +3420 PRINT "Annual Interest rate: "; +3440 PRINT USING " ###.##";SINTEREST; +3460 PRINT "%":RETURN +3480 PRINT " (C) ";:GOSUB 3500:GOTO 3540 +3500 PRINT "Payments per Year: "; +3520 PRINT USING " ###";IPAYMENTNUM:RETURN +3540 PRINT " (D) ";:GOSUB 3560:GOTO 3600 +3560 PRINT "Number of Years: "; +3580 PRINT USING " ###.#";SYEARS:RETURN +3600 PRINT:PRINT +3620 IF (DPAYMENT*SINTEREST*IPAYMENTNUM*SYEARS)<>0 THEN GOSUB 4180 ELSE LET DPRINCIPAL=0 +3640 IF DPRINCIPAL=0 THEN GOTO 3720 +3660 PRINT " The calculated PRINCIPAL amount is: "; +3680 PRINT USING "$$###########.##";DPRINCIPAL +3700 GOSUB 1840:GOTO 3740 +3720 GOSUB 1880 +3740 GOSUB 1960 +3760 MENULIST$="MABCDH" +3780 GOSUB 1540 +3800 IF MENUNUM%=1 THEN GOTO 2660 ELSE LET MENUNUM%=MENUNUM%-1 +3820 ON MENUNUM% GOSUB 3860,3940,4020,4100,13360 +3840 GOTO 3240 +3860 REM ************************** ROUTINE TO GET DPAYMENT *** +3880 INPUT " Please enter the amount of regular payment.... ",DPAYMENT +3900 IF DPAYMENT<0 THEN GOSUB 2020:GOTO 3880 +3920 RETURN +3940 REM ************************** ROUTINE TO GET SINTEREST *** +3960 INPUT " Please enter the annual interest rate.... ",SINTEREST +3980 IF SINTEREST<0 THEN GOSUB 2020:GOTO 3960 +4000 RETURN +4020 REM ************************** ROUTINE TO GET IPAYMENTNUM *** +4040 INPUT " Please enter the number of payments per year.... ",IPAYMENTNUM +4060 IF IPAYMENTNUM<0 THEN GOSUB 2020:GOTO 4040 +4080 RETURN +4100 REM ************************** ROUTINE TO GET SYEARS *** +4120 INPUT " Please enter the term of the loan in years.... ",SYEARS +4140 IF SYEARS<0 THEN GOSUB 2020:GOTO 4120 +4160 RETURN +4180 REM ************************** ROUTINE TO CALCULATE PRINCIPAL ******* +4200 REM +4220 REM +4240 DTEMPSTORE=DPAYMENT*IPAYMENTNUM*(1-1/((SINTEREST/100)/IPAYMENTNUM+1)^(IPAYMENTNUM*SYEARS))/(SINTEREST/100) +4260 DPRINCIPAL=INT(DTEMPSTORE*100+.5)/100 +4280 RETURN +4300 REM ************************** ROUTINE TO GET DPRINCIPAL *** +4320 INPUT " Please enter the loan principal.... ",DPRINCIPAL +4340 IF DPRINCIPAL<0 THEN GOSUB 2020:GOTO 4320 +4360 RETURN +4380 REM *******************MENU CHOICE B***************************** +4400 PRINT CLS$; +4420 PRINT " REGULAR PAYMENT" +4440 PRINT " Calculates the amount of each payment." +4460 GOSUB 1920 +4480 PRINT " (A) ";:GOSUB 3420 +4500 PRINT " (B) ";:GOSUB 4520:GOTO 4560 +4520 PRINT "Amount of Principal: "; +4540 PRINT USING "$$#########.##";DPRINCIPAL:RETURN +4560 PRINT " (C) ";:GOSUB 3500 +4580 PRINT " (D) ";:GOSUB 3560 +4600 PRINT:PRINT +4620 IF (SINTEREST*DPRINCIPAL*IPAYMENTNUM*SYEARS)<>0 THEN GOSUB 4860 ELSE LET DPAYMENT=0 +4640 IF DPAYMENT=0 THEN GOTO 4720 +4660 PRINT " The calculated PAYMENT amount is: "; +4680 PRINT USING "$$############.##";DPAYMENT +4700 GOSUB 1840:GOTO 4740 +4720 GOSUB 1880 +4740 GOSUB 1960 +4760 MENULIST$="MABCDH" +4780 GOSUB 1540 +4800 IF MENUNUM%=1 THEN GOTO 2660 ELSE LET MENUNUM%=MENUNUM%-1 +4820 ON MENUNUM% GOSUB 3940,4300,4020,4100,13760 +4840 GOTO 4380 +4860 REM ************************** ROUTINE TO CALCULATE DPAYMENT *** +4880 DTEMPSTORE=((SINTEREST/100)*DPRINCIPAL/IPAYMENTNUM)/(1-1/((SINTEREST/100)/IPAYMENTNUM+1)^(IPAYMENTNUM*SYEARS)) +4900 DPAYMENT=INT(DTEMPSTORE*100+.5)/100 +4920 RETURN +4940 STOP +4960 REM *******************MENU CHOICE C***************************** +4980 PRINT CLS$; +5000 PRINT " LAST PAYMENT ON A LOAN" +5020 PRINT " Finds the final payment at the end of the term." +5040 GOSUB 1920 +5060 PRINT " (A) ";:GOSUB 3360 +5080 PRINT " (B) ";:GOSUB 4520 +5100 PRINT " (C) ";:GOSUB 3560 +5120 PRINT " (D) ";:GOSUB 3420 +5140 PRINT " (E) ";:GOSUB 3500 +5160 PRINT:PRINT +5180 IF (DPAYMENT*DPRINCIPAL*SYEARS*SINTEREST*IPAYMENTNUM)<>0 THEN GOSUB 5400 ELSE LET DLASTPAYMENT=0 +5200 IF DLASTPAYMENT=0 THEN GOTO 5280 +5220 PRINT " The calculated LAST PAYMENT amount is: "; +5240 PRINT USING "$$#############.##";DLASTPAYMENT +5260 GOSUB 1840:GOSUB 1960:GOTO 5300 +5280 GOSUB 1880:GOSUB 1960 +5300 MENULIST$="MABCDEH" +5320 GOSUB 1540 +5340 IF MENUNUM%=1 THEN GOTO 2660 ELSE LET MENUNUM%=MENUNUM%-1 +5360 ON MENUNUM% GOSUB 3860,4300,4100,3940,4020,13980 +5380 GOTO 4960 +5400 REM ************************* CALCULATION OF DLASTPAYMENT *** +5420 PRINT " Please wait. This calculation can take quite a while to run."; +5440 DBO=DPRINCIPAL +5460 SI=((SINTEREST/100)/IPAYMENTNUM)*100 +5480 IJ2=IPAYMENTNUM*SYEARS +5500 FOR IJ1=1 TO IJ2 +5520 IF DBO<0 THEN PRINT CHR$(13);SPC(75);CHR$(13);" The payment entered is too large. Press any key to RECALCULATE. ";:ANS$=INPUT$(1):GOSUB 4860:GOTO 4960 +5540 DBO=DBO-DPAYMENT+INT(DBO*SI+.5)*.01 +5560 NEXT IJ1 +5580 TEMPSTORE=INT((DPAYMENT+DBO)*100+.5)/100 +5600 DLASTPAYMENT=TEMPSTORE +5620 PRINT CHR$(13);SPC(70);CHR$(13); +5640 RETURN +5660 REM *******************MENU CHOICE D***************************** +5680 PRINT CLS$; +5700 PRINT " REMAINING BALANCE ON A LOAN" +5720 PRINT " Finds the balance after a specified number of payments." +5740 GOSUB 1920 +5760 PRINT " (A) ";:GOSUB 3360 +5780 PRINT " (B) ";:GOSUB 4520 +5800 PRINT " (C) ";:GOSUB 3500 +5820 PRINT " (D) ";:GOSUB 3420 +5840 PRINT " (E) ";:GOSUB 5900 +5860 PRINT " --- ";:GOSUB 3560 +5880 GOTO 5980 +5900 PRINT "Last Payment made (#,year):"; +5920 PRINT USING " ###";SLSTPAYMENT; +5940 PRINT ",";SLSTPAYMENTYEAR +5960 RETURN +5980 PRINT:PRINT +6000 IF (DPAYMENT*DPRINCIPAL*IPAYMENTNUM*SINTEREST*SLSTPAYMENT*SLSTPAYMENTYEAR)<>0 THEN GOSUB 6360 ELSE LET DREMAINING=0:GOTO 6080 +6020 PRINT " The calculated REMAINING BALANCE amount is: "; +6040 PRINT USING "$$#############.##";DREMAINING +6060 GOSUB 1840:GOSUB 1960:GOTO 6100 +6080 GOSUB 1880:GOSUB 1960 +6100 MENULIST$="MABCDEH" +6120 GOSUB 1540 +6140 IF MENUNUM%=1 THEN GOTO 2660 ELSE LET MENUNUM%=MENUNUM%-1 +6160 ON MENUNUM% GOSUB 3860,4300,4020,3940,6200,14260 +6180 GOTO 5660 +6200 REM ********************** ROUTINE TO GET SLSTPAYMENT & SLSTPAYMENTYEAR *** +6220 INPUT " Enter the number of the last payment made for this year.... ",SLSTPAYMENT +6240 IF SLSTPAYMENT<0 THEN GOSUB 2020:GOTO 6220 +6260 IF SLSTPAYMENT>IPAYMENTNUM THEN PRINT CHR$(7);:PRINT " This value cannot be greater than the number of payments per year. ":GOTO 6220 +6280 INPUT " Now enter the year number to calculate remaining balance.... ",SLSTPAYMENTYEAR +6300 IF SLSTPAYMENTYEAR<0 THEN GOSUB 2020:GOTO 6280 +6320 IF SLSTPAYMENTYEAR>SYEARS THEN PRINT CHR$(7);:PRINT " This value cannot be greater than the loan term. ":GOTO 6280 +6340 RETURN +6360 REM ******************* ROUTINE TO CALCULATE DREMAINING *** +6380 PRINT " Please wait. This calculation can take quite a while to run."; +6400 DBO=DPRINCIPAL +6420 SI=SINTEREST/100 +6440 SJ2=IPAYMENTNUM*(SLSTPAYMENTYEAR-1)+SLSTPAYMENT +6460 SI2=(SI/IPAYMENTNUM)*100 +6480 FOR SJ1=1 TO SJ2 +6500 DBO=DBO-DPAYMENT+INT(DBO*SI2+.5)*.01 +6520 NEXT SJ1 +6540 DREMAINING=INT(DBO*100+.5)/100 +6560 PRINT CHR$(13);SPC(75);CHR$(13); +6580 RETURN +6600 REM *******************MENU CHOICE E***************************** +6620 PRINT CLS$; +6640 PRINT " TERM OF A LOAN" +6660 PRINT " Finds the period of time needed to repay." +6680 GOSUB 1920 +6700 PRINT " (A) ";:GOSUB 3360 +6720 PRINT " (B) ";:GOSUB 4520 +6740 PRINT " (C) ";:GOSUB 3420 +6760 PRINT " (D) ";:GOSUB 3500 +6780 PRINT:PRINT +6800 IF (DPAYMENT*DPRINCIPAL*SINTEREST*IPAYMENTNUM)<>0 THEN GOSUB 7040 ELSE LET SYEARS=0:GOTO 6900 +6820 PRINT " The calculated TERM OF LOAN is: "; +6840 PRINT USING "####.#";SYEARS; +6860 PRINT " years" +6880 GOSUB 1840:GOSUB 1960:GOTO 6920 +6900 GOSUB 1880:GOSUB 1960 +6920 MENULIST$="MABCDH" +6940 GOSUB 1540 +6960 IF MENUNUM%=1 THEN GOTO 2660 ELSE LET MENUNUM%=MENUNUM%-1 +6980 ON MENUNUM% GOSUB 3860,4300,3940,4020,14520 +7000 GOTO 6600 +7020 STOP +7040 REM ********************** ROUTINE TO CALCULATE SYEARS *** +7060 DTEMPSTORE=DPAYMENT-(DPRINCIPAL*((SINTEREST*.01)/IPAYMENTNUM)) +7080 IF DTEMPSTORE<0 THEN 7160 +7100 SYEAR1=-(LOG(1-(DPRINCIPAL*(SINTEREST/100))/(IPAYMENTNUM*DPAYMENT))/(LOG(1+SINTEREST/100/IPAYMENTNUM)*IPAYMENTNUM)) +7120 SYEARS=INT(SYEAR1*10+.5)/10 +7140 RETURN +7160 REM --- COMPLAIN IF PAYMENT WILL NOT AMORTIZE LOAN +7180 PRINT CLS$:PRINT:PRINT:PRINT:PRINT +7200 DPAYMENT=(INT((DPRINCIPAL*((SINTEREST*.01)/IPAYMENTNUM))*100+.5)*.01)+.01 +7220 PRINT " WARNING" +7240 PRINT " THE PAYMENT ENTERED IS NOT SUFFICIENT TO AMORTIZE THIS LOAN." +7260 PRINT " THE MINIMUM PAYMENT NEEDED HAS BEEN CALCULATED AND ENTERED" +7280 PRINT " FOR YOU. IT IS: "; +7300 PRINT USING "$$###########.##";DPAYMENT +7320 PRINT +7340 PRINT " USE THE MAIN MENU IF YOU WANT TO CALCULATE A DIFFERENT AMOUNT." +7360 PRINT +7380 PRINT " PRESS ANY KEY TO CONTINUE....... "; +7400 ANS$=INPUT$(1) +7420 GOTO 6600 +7440 REM *******************MENU CHOICE F***************************** +7460 PRINT CLS$ +7480 PRINT " ANNUAL INTEREST RATE" +7500 PRINT " Finds the interest rate on a specific loan." +7520 GOSUB 1920 +7540 PRINT " (A) ";:GOSUB 3360 +7560 PRINT " (B) ";:GOSUB 3560 +7580 PRINT " (C) ";:GOSUB 4520 +7600 PRINT " (D) ";:GOSUB 3500 +7620 PRINT:PRINT +7640 IF (DPAYMENT*SYEARS*DPRINCIPAL*IPAYMENTNUM)<>0 THEN GOSUB 7860 ELSE LET SINTEREST=0:GOTO 7740 +7660 PRINT " The calculated INTEREST RATE is: "; +7680 PRINT USING " ###.##";SINTEREST; +7700 PRINT "%" +7720 GOSUB 1840:GOSUB 1960:GOTO 7760 +7740 GOSUB 1880:GOSUB 1960 +7760 MENULIST$="MABCDH" +7780 GOSUB 1540 +7800 IF MENUNUM%=1 THEN GOTO 2660 ELSE LET MENUNUM%=MENUNUM%-1 +7820 ON MENUNUM% GOSUB 3860,4100,4300,4020,14760 +7840 GOTO 7440 +7860 REM ******************* ROUTINE TO CALCULATE SINTEREST *** +7880 SINTEREST=13 +7900 PRINT " Please wait. This calculation can take a while to run."; +7920 SI2=0 +7940 DR1=(SINTEREST*.01*DPRINCIPAL/IPAYMENTNUM)/(1-1/((SINTEREST*.01/IPAYMENTNUM+1)^(IPAYMENTNUM*SYEARS))) +7960 DR1=INT(DR1*100+.5)/100 +7980 DI3=ABS(SINTEREST-SI2)/2 +8000 SI2=SINTEREST +8020 IF SINTEREST>=25.9 THEN PRINT CHR$(13);SPC(70);CHR$(13);:PRINT:PRINT:PRINT " The calculated INTEREST rate is in excess of 25%. This program cannot":PRINT " determine the exact rate. Press any key to return to the MAIN MENU. "; +8040 IF SINTEREST>=25.9 THEN ANS$=INPUT$(1):SINTEREST=25.5:GOTO 2720 +8060 IF (DR1-DPAYMENT)<.02 AND (DR1-DPAYMENT)>-.02 THEN PRINT CHR$(13);SPC(70);CHR$(13);:RETURN +8080 IF DR1>DPAYMENT THEN 8140 +8100 SINTEREST=SINTEREST+DI3 +8120 GOTO 7940 +8140 SINTEREST=SINTEREST-DI3 +8160 GOTO 7940 +8180 REM *******************MENU CHOICE G***************************** +8200 IF PRINTER=1 THEN LPRINT CHR$(12):PRINTER=0 +8220 TEST=0:DINTTOTAL=0:DPRINTOTAL=0:DINTYEAR=0:DPRINYEAR=0 +8240 PRINT CLS$ +8260 PRINT " LOAN AMORTIZATION TABLE" +8280 PRINT " Provides complete loan progress chart." +8300 GOSUB 1920 +8320 PRINT " (A) ";:GOSUB 3360 +8340 PRINT " (B) ";:GOSUB 3560 +8360 PRINT " (C) ";:GOSUB 4520 +8380 PRINT " (D) ";:GOSUB 3420 +8400 PRINT " --- ";:GOSUB 3500 +8420 REM +8440 PRINT:PRINT +8460 IF TEST=1 THEN GOTO 8500 +8480 IF (DPAYMENT*SYEARS*DPRINCIPAL*SINTEREST*IPAYMENTNUM)<>0 THEN GOTO 8640 ELSE LET TEST=0 +8500 PRINT " Choose from the above menu the item that you would like to change.":GOSUB 1960 +8520 MENULIST$="MABCDH" +8540 GOSUB 1540 +8560 IF MENUNUM%=6 THEN GOSUB 15000:GOTO 8180 +8580 IF MENUNUM%=1 THEN GOTO 2660 ELSE LET MENUNUM%=MENUNUM%-1 +8600 ON MENUNUM% GOTO 4380,6600,3240,7440 +8620 LET TEST=0:GOTO 8180 +8640 REM +8660 PRINT " THE VARIABLES MUST BE PRECISELY CALCULATED FOR THE TABLE TO BE CORRECT." +8680 PRINT : PRINT " Do you want to change any of the above VARIABLES?" +8700 PRINT " ENTER (Y)ES or (N)O or ..."; : PRINT +8720 MENULIST$="MYNH" +8740 GOSUB 1960 +8760 GOSUB 1540 +8780 IF MENUNUM%=4 THEN GOSUB 15000:GOTO 8180 +8800 IF MENUNUM%=1 THEN GOTO 2660 ELSE LET MENUNUM%=MENUNUM%-1 +8820 ON MENUNUM% GOTO 8840,8900 +8840 LET TEST=1:GOTO 8240 +8860 REM +8880 REM +8900 REM ********************BEGINNING OF AMORTIZATION ROUTINE ***** +8920 PRINT CLS$ +8940 SCOUNTER=0 +8960 LET TEST=0 +8980 PRINT " Do you want this run to go to the printer? (Enter Y or N) "; +9000 GOSUB 1740 +9020 ON MENUNUM% GOTO 9040,9080 +9040 LET PRINTER=1:REM-- SET PRINTER FLAG TO ON +9060 GOTO 9100 +9080 LET PRINTER=0:REM-- SET PRINTER FLAG OFF +9100 PRINT:PRINT:PRINT " Do you want to display annual totals only? (Enter Y or N) ";:GOSUB 1740:ON MENUNUM% GOTO 9120,9160 +9120 LET IDISPLAY=1 +9140 GOTO 9180 +9160 LET IDISPLAY=0 +9180 REM - INITIALIZE VARIABLES +9200 GOSUB 13100 +9220 SI=(SINTEREST*.01)/IPAYMENTNUM:REM CONVERT INTEREST TO DECIMAL +9240 IPAGE=0 +9260 GOSUB 10020 +9280 DBO=DPRINCIPAL +9300 DPAY=(INT(DPAYMENT*100+.5))*.01 +9320 SJ2=IPAYMENTNUM*SYEARS +9340 SI2=(SINTEREST/IPAYMENTNUM) +9360 SCURRENTYEAR=1 +9380 MENUNUM%=0 +9400 REM ************************** HERE'S THE LOOP ********* +9420 FOR SJ1=1 TO SJ2 +9440 DI3=(INT(DBO*SI2+.5))*.01 +9460 IF DBO=21 THEN GOSUB 10740:ON MENUNUM% GOTO 9620,8180,9580 +9560 GOTO 9620 +9580 IF SCOUNTER>=21 THEN GOSUB 12100 +9600 IF MENUNUM%=2 GOTO 8180 +9620 DINTYEAR=DINTYEAR+DI3:DPRINYEAR=DPRINYEAR+DBI +9640 GOSUB 10400 +9660 IF SJ1=SCURRENTYEAR*IPAYMENTNUM THEN DINTTOTAL=DINTTOTAL+DINTYEAR:DPRINTOTAL=DPRINTOTAL+DPRINYEAR:GOSUB 11780:SCURRENTYEAR=SCURRENTYEAR+1 +9680 IF PRINTER=1 AND SLCOUNTER>=60 THEN GOSUB 12940:GOSUB 12460 +9700 NEXT SJ1:REM ***************** END OF LOOP ************************ +9720 IF SJ1<>SCURRENTYEAR*IPAYMENTNUM THEN DINTTOTAL=DINTTOTAL+DINTYEAR:DPRINTOTAL=DPRINTOTAL+DPRINYEAR +9740 IF SCOUNTER>=21 THEN GOSUB 10740:ON MENUNUM% GOTO 9760,8180,9760 ESLE GOSUB 12100 +9760 PRINT:PRINT "*TOTALS: "; +9780 IF PRINTER=0 THEN GOTO 9840 +9800 IF SLCOUNTER>=60 THEN GOSUB 12940:GOSUB 12460 +9820 LPRINT "*TOTALS: "; +9840 PRINT USING "$$###########.##";DINTTOTAL; +9860 IF PRINTER=0 THEN GOTO 9900 +9880 LPRINT USING "$$###########.##";DINTTOTAL; +9900 SCOUNTER=SCOUNTER+2 +9920 PRINT USING " $$###########.##";DPRINTOTAL +9940 IF PRINTER=0 THEN GOTO 10000 +9960 LPRINT USING " $$###########.##";DPRINTOTAL +9980 SLCOUNTER=SLCOUNTER+2 +10000 GOTO 11480 +10020 REM - ROUTINE TO SET UP SCREEN DISPLAY +10040 IF PRINTER=1 THEN GOSUB 10960 +10060 PRINT CLS$; +10080 PRINT " ********************* LOAN AMORTIZATION TABLE ***********************" +10100 SCOUNTER=SCOUNTER+4 +10120 PRINT " PRINCIPAL AMOUNT: "; +10140 PRINT USING "$$###########.##";DPRINCIPAL; +10160 PRINT " PAYMENT AMOUNT: "; +10180 PRINT USING "$$#########.##";DPAYMENT +10200 PRINT " TERM IN YEARS: "; +10220 PRINT USING " ###.# ";SYEARS; +10240 PRINT " INTEREST RATE: "; +10260 PRINT USING " ###.##";SINTEREST;:PRINT "%" +10280 PRINT " ***********************************************************************" +10300 REM - HEADER FOR SCREEN DISPLAY PAGE +10320 PRINT " PAYMENT # INTEREST PRINCIPAL BALANCE AFTER PAYMENT" +10340 PRINT " -----------------------------------------------------------------------" +10360 LET SCOUNTER=SCOUNTER+2 +10380 RETURN +10400 REM - SCREEN DISPLAY FOR EACH PAYMENT +10420 IF IDISPLAY=1 OR SCURRENTYEAR2 THEN GOSUB 10060 +10940 RETURN +10960 REM - SUBROUTINE TO SET UP PRINTER AND CHECK TO SEE IF IT'S READY +10980 PRINT +11000 PRINT " NOW CHECKING TO SEE IF THE PRINTER IS READY TO ACCEPT PRINTOUT." +11020 PRINT +11040 PRINT "PRINTER IS NOT READY.... PLEASE CHECK IT. PROCESSING CANNOT CONTINUE.";:LPRINT CHR$(13); +11060 PRINT CHR$(13);SPC(70); +11080 PRINT:PRINT " THE PRINTER IS NOW READY..... HERE WE GO!" +11100 FOR HI=1 TO 300 +11120 NEXT HI +11140 PRINT CLS$:PRINT:PRINT +11160 PRINT "WHEN ENTERING THE ITEMS BELOW, DO NOT USE COMMAS. PRESS RETURN WHEN DONE.":PRINT +11180 PRINT " PRESS THE RETURN TO LEAVE AN ENTRY WITHOUT CHANGING IT.":PRINT:PRINT +11200 PRINT " (These entries are for the title block on the printout only.":PRINT " You may enter anything you like, but there must be something entered.)":PRINT +11220 PRINT " Enter a title for this report..... ";:PRINT LABEL$;:PRINT CHR$(13);:PRINT " Enter a title for this report..... ";:INPUT "",LABEL1$ +11240 IF LABEL1$="" THEN GOTO 11260 ELSE LABEL$=LABEL1$ +11260 PRINT:PRINT " Enter today's date..... ";:PRINT DATE$;:PRINT CHR$(13);:PRINT " Enter today's date..... ";:INPUT "",DATE1$ +11280 IF DATE1$="" THEN GOTO 11300 ELSE DATE$=DATE1$ +11300 PRINT:PRINT " Enter the name of the recipient of this report... ";:PRINT PERSON$;:PRINT CHR$(13);:PRINT " Enter the name of the recipient of this report... ";:INPUT "",PERSON1$ +11320 IF PERSON1$="" THEN GOTO 11340 ELSE PERSON$=PERSON1$ +11340 PRINT:PRINT " Are the above entries correct? (Y or N) ";:GOSUB 1740:ON MENUNUM% GOTO 11360,11140 +11360 REM +11380 LPRINT:PRINT CLS$:PRINT:PRINT:PRINT " NOW SENDING TITLE BLOCK TO PRINTER.... PLEASE STAND BY." +11400 LPRINT " ";LABEL$ +11420 LPRINT:LPRINT " ";" prepared for: ";PERSON$;" on ";DATE$ +11440 LPRINT:GOSUB 12460:SLCOUNTER=11 +11460 RETURN +11480 REM +11500 ITEMPSTORE=22-SCOUNTER +11520 FOR ICOUNT=1 TO ITEMPSTORE +11540 PRINT +11560 NEXT ICOUNT +11580 IF PRINTER=1 THEN GOSUB 12940 +11600 PRINT " PRESS (Y) TO RETURN TO MENU." +11620 MENULIST$="Y" +11640 GOSUB 1540 +11660 REM +11680 GOTO 8180 +11700 STOP +11720 REM +11740 REM +11760 REM +11780 REM - SUBROUTINE FOR PRINTING YEARLY TOTALS +11800 IF SCURRENTYEAR=21 AND MENUNUM%<>3 THEN GOSUB 10740 +11840 IF PRINTER=1 THEN GOSUB 12760 +11860 IF SCOUNTER>=21 AND MENUNUM%=3 THEN GOSUB 12100 +11880 IF IDISPLAY<>1 THEN PRINT:SCOUNTER=SCOUNTER+1 +11900 PRINT "*YEAR:"; +11920 PRINT USING "###";SCURRENTYEAR; +11940 PRINT USING "$$###########.##";DINTYEAR; +11960 PRINT USING " $$###########.##";DPRINYEAR; +11980 PRINT USING " $$#############.##";DBO +12000 SCOUNTER=SCOUNTER+1 +12020 IF SCOUNTER<21 AND IDISPLAY<>1 THEN PRINT:SCOUNTER=SCOUNTER+1 +12040 IF SJ1<>SJ2 AND SCOUNTER<21 THEN PRINT:SCOUNTER=SCOUNTER+1 +12060 DINTYEAR=0:DPRINYEAR=0 +12080 RETURN +12100 REM ******************** ROUTINE TO DISABLE SCREEN PAUSE *********** +12120 TEST$=INKEY$ +12140 IF TEST$=CHR$(13) THEN GOTO 12300 +12160 PRINT CHR$(13);SPC(75);CHR$(13); +12180 SCOUNTER=0 +12200 PRINT " ******** SCREEN PAUSE DISABLED. PRESS RETURN TO ENABLE. *******"; +12220 FOR ILOOP=1 TO 800 +12240 NEXT ILOOP +12260 TEST$=INKEY$ +12280 IF TEST$<>CHR$(13) THEN GOSUB 10060:RETURN +12300 SCOUNTER=0 +12320 PRINT CHR$(13);SPC(75);CHR$(13); +12340 PRINT " SELECT (C)ONTINUE OR (A)BORT " +12360 MENULIST$="CA" +12380 GOSUB 1540 +12400 IF MENUNUM%=1 THEN GOSUB 10060:MENUNUM%=0:RETURN +12420 IF MENUNUM%=2 THEN RETURN +12440 STOP +12460 REM ----------------ROUTINE FOR PRINTER PAGE HEADER----------------- +12480 LPRINT " ********************* LOAN AMORTIZATION TABLE ***********************" +12500 LPRINT " PRINCIPAL AMOUNT: "; +12520 LPRINT USING "$$###########.##";DPRINCIPAL; +12540 LPRINT " PAYMENT AMOUNT: "; +12560 LPRINT USING "$$#########.##";DPAYMENT +12580 LPRINT " TERM IN YEARS: "; +12600 LPRINT USING " ###.# ";SYEARS; +12620 LPRINT " INTEREST RATE: "; +12640 LPRINT USING " ###.##";SINTEREST;:LPRINT "%" +12660 LPRINT " ***********************************************************************" +12680 LPRINT " PAYMENT # INTEREST PRINCIPAL BALANCE AFTER PAYMENT" +12700 LPRINT " -----------------------------------------------------------------------" +12720 LET SLCOUNTER=6 +12740 RETURN +12760 REM --------------------------- ROUTINE TO LPRINT YEARLY TOTALS ----- +12780 IF IDISPLAY=1 THEN LPRINT:SLCOUNTER=SLCOUNTER+1 +12800 LPRINT "*YEAR:"; +12820 LPRINT USING "###";SCURRENTYEAR; +12840 LPRINT USING "$$###########.##";DINTYEAR; +12860 LPRINT USING " $$###########.##";DPRINYEAR; +12880 LPRINT USING " $$#############.##";DBO +12900 LPRINT:SLCOUNTER=SLCOUNTER+2 +12920 RETURN +12940 REM ---------- ROUTINE TO PUT PAGE NUMBERS ON PRINTOUT +12960 REM +12980 IPAGE=IPAGE+1 +13000 FOR PAGECOUNT=1 TO (62-SLCOUNTER) +13020 LPRINT:NEXT PAGECOUNT +13040 LPRINT " ";IPAGE +13060 LPRINT CHR$(12) +13080 RETURN +13100 REM SUBROUTINE FOR SETTING FLAG FOR FIRST YEAR OF PRINTOUT +13120 PRINT:PRINT:PRINT " Do you want to start with a year other than 1? (Y or N) "; +13140 GOSUB 1740 +13160 IF MENUNUM%=2 THEN ISTART=0:RETURN +13180 INPUT " Please enter the year you want to start with..... ",ISTART +13200 IF ISTART>SYEARS THEN LET ISTART=SYEARS +13220 RETURN +13240 REM *******************MENU CHOICE H***************************** +13260 PRINT " From the above menu, please select the item you need help with." +13280 MENULIST$="ABCDEFGX" +13300 GOSUB 1540 +13320 ON MENUNUM% GOSUB 13360,13760,13980,14260,14520,14760,15000,15500 +13340 GOTO 1320 +13360 REM ---- MENU SELECTION A +13380 PRINT CLS$ +13400 PRINT +13420 PRINT " *** LOAN PRINCIPAL AMOUNT ***" +13440 PRINT +13460 PRINT " This module will calculate the amount of money initially borrowed." +13480 PRINT " You must enter the amount of the payments, the interest rate, the" +13500 PRINT " number of payments within a year and the number of years over which" +13520 PRINT " the loan is going to be amortized." +13540 PRINT:GOSUB 13560:RETURN +13560 PRINT " Using the menu, select each item that needs to be entered. As soon" +13580 PRINT " as you've entered the needed variables, the program will perform the" +13600 PRINT " calculation and display the results. To try a different variable," +13620 PRINT " use the menu to select which one you want to change. Enter the new" +13640 PRINT " value and the calculation will be redone automatically for you." +13660 PRINT +13680 PRINT " You cannot enter a negative number for any variable in this program." +13700 PRINT " Do not use any commas when entering variables. Press the return" +13720 PRINT " after entering each variable." +13740 GOSUB 15540:RETURN +13760 REM HELP FOR MENU CHOICE B +13780 PRINT CLS$; +13800 PRINT +13820 PRINT " ** REGULAR PAYMENT **" +13840 PRINT +13860 PRINT " This module will calculate the amount of the regular payment needed to" +13880 PRINT " pay off a loan over a given time. You must enter the amount borrowed," +13900 PRINT " the interest rate, the number of payments per year and the number of years" +13920 PRINT " or term of the loan." +13940 PRINT +13960 GOSUB 13560:RETURN +13980 REM HELP FOR ITEM C +14000 PRINT CLS$; +14020 PRINT +14040 PRINT " ** LAST PAYMENT ON A LOAN **" +14060 PRINT +14080 PRINT " Because of rounding errors, the last payment on a loan is usually slightly" +14100 PRINT " different than the regular payment. This module actually does a com-" +14120 PRINT " plete loan amortization table in memory and calculates the exact amount" +14140 PRINT " of the final payment. You must enter the regular payment, the principal," +14160 PRINT " the term (in years) the interest rate and the number of payments per" +14180 PRINT " year. If any of these variables need to be calculated, use the other" +14200 PRINT " modules first and then select this module from the MAIN MENU." +14220 PRINT +14240 GOSUB 13560:RETURN +14260 REM HELP FOR MENU ITEM D +14280 PRINT CLS$ +14300 PRINT +14320 PRINT " ** REMAINING BALANCE ON A LOAN **" +14340 PRINT +14360 PRINT " This module will calculate the amount remaining on the principal of a" +14380 PRINT " loan after a specific number of payments have been made. Typically," +14400 PRINT " this would be needed in the event that it was desired to pay off a loan" +14420 PRINT " early. The module actually does a loan amortization table in memory" +14440 PRINT " and stops at the payment you have specified. The balance of the +14460 PRINT " PRINCIPAL is then displayed. +14480 PRINT +14500 GOSUB 13560:RETURN +14520 REM HELP FOR MENU ITEM E +14540 PRINT CLS$ +14560 PRINT +14580 PRINT " ** TERM OF A LOAN ** +14600 PRINT +14620 PRINT " This module will determine the time (in years) needed to repay a loan" +14640 PRINT " for a given set of variables. For example, this could be used to see +14660 PRINT " what effect changing the payment or the interest would have on the +14680 PRINT " period required to repay the loan. The program will not allow an entry +14700 PRINT " that would result in the loan being under-amortized such as would happen +14720 PRINT " in the event that the payment was too small to ever repay the loan. +14740 PRINT:GOSUB 13560:RETURN +14760 REM HELP FOR MENU ITEM F +14780 PRINT CLS$ +14800 PRINT +14820 PRINT " ** ANNUAL INTEREST RATE ON A LOAN ** +14840 PRINT +14860 PRINT " This module will calculate the interest rate on a loan given a specific +14880 PRINT " set of variables. This is useful if the interest rate is unknown or if +14900 PRINT " it is desired to determine the impact on interest of changes in other +14920 PRINT " variables. The program cannot calculate interest rates that are greater +14940 PRINT " than 25%. +14960 PRINT +14980 GOSUB 13560:RETURN +15000 REM HELP FOR ITEM G +15020 PRINT CLS$; +15040 PRINT " ** LOAN AMORTIZATION TABLE ** +15060 PRINT +15080 PRINT " This module will show the amount of interest and principal paid for +15100 PRINT " each payment on a loan. This listing can be displayed on the console +15120 PRINT " screen only or it can be listed to a printer simultaneously. Since +15140 PRINT " the table can only be accurate if the variables are precisely calculated, +15160 PRINT " you have to use other modules to make changes to the variables before +15180 PRINT " you can run the amortization table module. Selecting an item from +15200 PRINT " the menu to be changed will automatically chain you into the appropriate +15220 PRINT " module. +15240 PRINT +15260 PRINT " If the printer is selected, you will be asked for information to go +15280 PRINT " on the title block on the printer. This information will be saved +15300 PRINT " and does not have to be reentered if you go to another module and then +15320 PRINT " return to the amortization module. +15340 PRINT +15360 PRINT " You should check the printer to be sure it is ready prior to trying +15380 PRINT " to send a listing to the printer. If the printer is not ready, the +15400 PRINT " program will display a message and the program will stop. If the" +15420 PRINT " printer cannot be made ready, you will have to abort the program using" +15440 PRINT " the ^C key." +15460 PRINT +15480 GOSUB 15540:RETURN +15500 REM +15520 REM +15540 PRINT:PRINT " PRESS ANY KEY TO RETURN TO THE MENU. ";:ANS$=INPUT$(1):RETURN +15560 REM +15580 REM *******************MENU CHOICE X***************************** +15600 PRINT CLS$ +15620 PRINT +15640 PRINT +15660 PRINT " RETURN TO OPERATING SYSTEM? (Y OR N)" +15680 MENULIST$="YN" +15700 GOSUB 1540 +15720 ON MENUNUM% GOTO 15760,2660 +15740 REM +15760 PRINT +15780 PRINT +15800 PRINT +15820 PRINT " Now returning control to the operating system." +15840 PRINT +15860 SYSTEM +15880 REM "L" TEST LOAD OPTION +15900 DPRINCIPAL=15000 +15920 SINTEREST=8 +15940 DPAYMENT=263 +15960 SYEARS=6 +15980 IPAYMENTNUM=12 +16000 PRINT " ******** NOW LOADING TEST VALUES INTO VARIABLES *******"; +16020 FOR G=1 TO 200 +16040 NEXT G +16060 PRINT CHR$(13);SPC(70);CHR$(13); +16080 MENULIST$="ABCDEFGHX" +16100 GOSUB 1580 +16120 GOTO 3220 diff --git a/cpm/log10k.txt b/cpm/log10k.txt new file mode 100644 index 0000000..919e0e5 --- /dev/null +++ b/cpm/log10k.txt @@ -0,0 +1,54 @@ +10 '************************************** +20 ' T.A. Elkins Log(10k!) Benchmark +30 ' ------------------------------- +40 ' +50 ' Computes number of decimal digits in +60 ' 10,000 factorial. (Exact answer is +70 ' 35660.) +80 ' +90 ' See COMPUTERWORD, April 20, 1987, for +100 ' more information. +110 ' +120 ' Translated to CP/M MBASIC 5.0 +130 ' Jim Lill 19 July 87 +140 ' +150 '************************************** +160 ' +170 ' IBM PC Results: +180 ' +190 ' Compiler/ Code Time +200 ' Intrepreter Size (sec) Error +210 ' ------------ ---- ----- ----- +220 ' TrueBASIC 82K 3.5 +230 ' Better BASIC 48K 10 +240 ' Quick BASIC 27K 56 +250 ' GW-BASIC n/a 149 +260 ' +270 ' (Error results were not given.) +280 ' +290 ' Amiga Results: +300 ' +310 ' AmigaBASIC n/a 103 0.5457 +320 ' +330 ' CP/M Results: +340 ' +350 ' MBASIC 5.0 \ +360 ' @ 10MHz \ n/a 110 0.5462 +370 ' @ 6MHz / n/a 184 0.5462 +380 '************************************** +390 DEFINT I +400 DEFDBL E,X,Y,Z +410 Z=10 +420 X=0 +430 EXACT = 35660# +440 PRINT "Elkins Log(10k!) Benchmark" +450 PRINT +460 PRINT "Note the Start Time!";CHR$(7) +470 FOR I=2 TO 10000 +480 Y=I +490 X=X+LOG(Y) +500 NEXT I +510 PRINT "Note the End Time!";CHR$(7) +520 PRINT +530 PRINT "Error: ";EXACT - X/LOG(Z) +540 END diff --git a/cpm/mbrsv13.txt b/cpm/mbrsv13.txt new file mode 100644 index 0000000..562ae67 --- /dev/null +++ b/cpm/mbrsv13.txt @@ -0,0 +1,627 @@ +10 ' FILE NAME: MBRS.BAS - Creates, lists, adds to, corrects, and queries +20 ' church member personal information and donation files. +30 ESC$=CHR$(27):CLR$=ESC$+"*" +40 DEF FNCTR$(A$)=SPACE$(40-(LEN(A$)/2))+A$ +50 DEF FNAT$(V,H)=ESC$+"="+CHR$(31+V)+CHR$(31+H) +60 RET$=FNAT$(24,1)+FNCTR$("Hit RETURN to continue: "):BTM$=FNAT$(24,1) +70 HT$="Home Town":ST$="NC":YR$="1984" +80 OPTION BASE 1 +90 DATA "ATTENTION, PROGRAMMERS AND USERS","" +100 DATA "For distribution purposes, the World Famous Toad Hall" +110 DATA "Church Membership Record Program (Public Domain)" +120 DATA "needs a few patches to tailor it to YOUR environment and use.","" +130 DATA "Change the name of the program itself from MBRSV13.BAS to MBRS.BAS." +140 DATA "(V13 is to tell apart the versions, but the program itself needs" +150 DATA "the program name to be MBRS.BAS (for file existence checking).","" +160 DATA "At the very beginning of the code, change HT$ and ST$ to your own" +170 DATA "local city/town and state. Change YR$ to keep up to date." +180 DATA "Change MY CHURCH right below this in code to your own church name." +190 DATA "If you'd like to add your own letterhead to the donation reports," +200 DATA "fill in the appropriate lines down in the code printing to" +210 DATA "#5 - that's the printout. You'll see the 'blanks'." +220 DATA "Enjoy it -- just a gesture in the spirit of Public Domain Software." +230 DATA "","(Oh, yeah -- peel out all this stuff too!" +240 DATA "The Author, Toad Hall, March 1984",* +250 PRINT CLR$:RESTORE 90:GOSUB 390:STOP +260 DATA "MY CHURCH Member Records","" +270 DATA "Courtesy of Toad Hall","Home of Bionic Toad Software" +280 DATA "David P Kirschbaum, Author","Version 1.3, 29 Mar 84" +290 DATA "(C) 1983 All rights reserved.","" +300 DATA "Please contact the author for comments, bugs, recommendations.","" +310 DATA "Also, any church group using this software:" +320 DATA "Please drop me a card or call with your name, tel #, and address." +330 DATA "It gives me great personal satisfaction to know people are using" +340 DATA "this program of mine, (my resume could use the references!)," +350 DATA "and I can provide you with updates (my software never stays static!)" +360 DATA "","My address is","Toad Hall","7573 Jennings Lane" +370 DATA "Fayetteville NC 28303","tel (919) 868-3471",*** +380 PRINT CLR$:RESTORE 260:GOSUB 390:GOTO 470 +390 READ T$ +400 IF T$="*" THEN RETURN ELSE IF T$="**" OR T$="***" THEN 420 +410 PRINT FNCTR$(T$):GOTO 390 +420 IF T$="***" THEN PRINT BTM$; +430 PRINT RET$; +440 INPUT "",T1$:IF T$="***" THEN PRINT CLR$; +450 T$="":RETURN +460 '== Program Start == +470 DEFINT A-C,E-Z:DEFSNG D:MAX=200 +480 DIM MNR(MAX+2),P(MAX+2),FSKIL$(4),FCOMM$(4),SKIL$(4),COMM$(4),F$(4) +490 FOR I=1 TO 3:F$(I)="MBRS-"+MID$(STR$(I),2,1)+".DAT":NEXT I +500 IF F$(4)="" OR QTR$="" OR OPT=9 THEN GOSUB 5720 +510 GOSUB 820:GOSUB 920 +520 DATA "==== Church Membership Program Menu ====","" +530 DATA "The following options are available:","" +540 DATA "1 - Membership List (with record numbers)" +550 DATA "2 - Add new members. " +560 DATA "3 - Correct member information. " +570 DATA "4 - Query member record. " +580 DATA "5 - Enter Weekly Donation. " +590 DATA "6 - Review Quarterly Donations. " +600 DATA "7 - Create Formatted Donation Report File" +610 DATA "8 - Set Quarter. " +620 DATA "Q - Return to System. ","",* +630 PRINT CLR$:RESTORE 520:GOSUB 390 +640 IF QTR$="" THEN 660 +650 PRINT FNCTR$("Current Quarter is "+QTR$+" Quarter."):GOTO 670 +660 PRINT FNCTR$("No current Quarter initialized.") +670 PRINT:PRINT FNCTR$("Enter option desired: "); +680 T$=INKEY$:IF LEN(T$)<1 THEN 680 ELSE PRINT T$; +690 IF T$="Q" OR T$="q" THEN PRINT "uit":GOTO 800 ELSE 750 +700 IF OPT=6 THEN FLAG=2 'needed in GOSUB +710 IF OPT=8 THEN F$(4)="" +720 ON OPT GOSUB 2490,1300,2700,2200,4510,4510,4510,500:GOTO 630 +730 PRINT FNCTR$("Do you wish to continue? (Y/N): "); +740 T$=INKEY$:IF LEN(T$)<1 THEN 740 ELSE PRINT T$ +750 OPT=INSTR("12345678YyNn",T$) +760 IF OPT=9 OR OPT=10 THEN 670 'get menu selection +770 IF OPT=11 OR OPT=12 THEN 800 'endit +780 IF OPT>0 AND OPT<9 THEN 700 ELSE 730 'make sure in range 1-9 +790 DATA "","","Processing complete","","Bye...",* +800 RESTORE 790:GOSUB 390:END +810 '== Open and define files == +820 RESET:OPEN "R",#1,F$(1) +830 FIELD #1,2 AS FZ1$,2 AS FXNR1$,30 AS FXN$,30 AS FA1$,30 AS FA2$,15 AS FA3$, + 2 AS FA4$,5 AS FA5$,7 AS FTEL$ +840 OPEN "R",#2,F$(2) +850 FIELD #2,2 AS FZ1$,2 AS FXNR1$,6 AS FANNIV$,6 AS FTDJN$,10 AS FPSN$, + 4 AS FXREF$,6 AS FBDAY$,10 AS FSKIL$(1), 10 AS FSKIL$(2),10 AS FSKIL$(3), + 10 AS FSKIL$(4), 10 AS FCOMM$(1),10 AS FCOMM$(2),10 AS FCOMM$(3), + 10 AS FCOMM$(4) +860 OPEN "R",#3,F$(3) +870 FIELD #3,2 AS FZ1$,2 AS FXNR1$,120 AS FCMT$ +880 OPEN "R",#4,F$(4) +890 FIELD #4,2 AS FZ1$,2 AS FXNR1$,2 AS FWK$,52 AS FTD$,15 AS FSP1N$, + 52 AS FSP1D$ +900 RETURN +910 '== Table Build == +920 FOR REC=1 TO MAX +930 GET #1,REC:IF LEFT$(FXN$,1)="Z" THEN MNR(REC)=0 ELSE MNR(REC)=REC +940 GET #1,REC:X$=FXN$:IF LEFT$(X$,1)="Z" THEN MNR(REC)=0:GOTO 950 +950 NEXT REC +960 RETURN +970 '== Find Member Record == +980 FOR N=1 TO MAX +990 IF REC=MNR(N) THEN 1030 'found it; return +1000 NEXT N:IF FLAG=5 THEN REC=0:GOTO 1030 'special use +1010 PRINT:PRINT FNCTR$("Member # "+STR$(REC)+" not presently in use."):PRINT +1020 FOR N=1 TO 500:REC=0:NEXT +1030 RETURN +1040 '== File Write == +1050 LSET FZ1$="**" +1060 LSET FXNR1$=MKI$(REC) +1070 LSET FXN$=NAM$ +1080 LSET FA1$=T1$ +1090 LSET FA2$=T2$ +1100 LSET FA3$=T3$ +1110 LSET FA4$=T4$ +1120 LSET FA5$=T5$ +1130 LSET FTEL$=TEL$ +1140 LSET FANNIV$=ANNIV$ +1150 LSET FTDJN$=DTJN$ +1160 LSET FPSN$=PSN$ +1170 LSET FXREF$=XREF$ +1180 LSET FBDAY$=BDAY$ +1190 FOR I=1 TO 4:LSET FSKIL$(I)=SKIL$(I):NEXT I +1200 FOR I=1 TO 4:LSET FCOMM$(I)=COMM$(I):NEXT I +1210 LSET FCMT$=CMT$ +1220 '== File Rewrite Entry Point == +1230 PUT #1,REC +1240 PUT #2,REC +1250 PUT #3,REC +1260 PUT #4,REC +1270 ' +1280 RETURN +1290 '== Add New Member(s) == +1300 DATA "== Entering New Members ==","" +1310 DATA "Enter new Member Number (up to 4 digits), RETURN to quit," +1320 DATA "or ? for me to find an unused Member number.","",* +1330 PRINT CLR$:RESTORE 1300:GOSUB 390 +1340 PRINT FNCTR$("Enter selection (# or ? and RETURN) or RETURN to quit: "); +1350 INPUT "",A$:IF A$="" THEN 2030 'return +1360 IF A$="?" THEN FLAG=1 ELSE FLAG=0 'find next avail mbr # +1370 GOSUB 2060 'find member # +1380 IF FLAG=1 THEN FLAG=0:GOTO 2030 'a problem - gotta quit. +1390 PRINT FNCTR$("Family Head Member # (1-3 digits) or RETURN if Head: "); +1400 INPUT "",XREF$:IF XREF$="" OR XREF$=STR$(REC) THEN XREF=0:GOTO 1560 +1410 XREF=VAL(XREF$) +1420 TEMP=REC:REC=XREF:GOSUB 980:XREF=RC=TEMP +1430 IF XREF>0 THEN 1540 +1440 DATA "ERROR! The Family Head Member # is not on file!" +1450 DATA "Enter the correct number, or this member # for now.","",* +1460 RESTORE 1440:GOSUB 390:GOTO 1390 +1470 DATA "","Because you've cross-referenced this member to another member," +1480 DATA "you may use the 'Head of Family' (HOF) information for addresses," +1490 DATA "telephone numbers, date joined church, anniversary, etc." +1500 DATA "(Fields that will accept a HOF default are marked with an *." +1510 DATA "Just hit RETURN to use the HOF data.)","" +1520 DATA "This does NOT work for church position, skills, and those personal" +1530 DATA "things not shared with a Head of Family.","",* +1540 RESTORE 1470:GOSUB 390 +1550 GET #1,XREF:GET #2,XREF:GET #3,XREF +1560 PRINT TAB(10);:LINE INPUT "Member name (L,FMI): ",NAM$ +1570 IF NAM$="Q" THEN MNR(REC)=0:GOTO 1330 +1580 IF LEN(NAM$)>1 THEN 1610 +1590 PRINT FNCTR$("You really must enter a name, you know, or Q to quit.") +1600 GOTO 1560 +1610 PRINT TAB(10);:INPUT "First address line: *",T1$ +1620 IF T1$<>"" THEN 1640 ELSE IF XREF<=0 THEN T1$="~":GOTO 1640 +1630 T1$=FA1$:T2$=FA2$:T3$=FA3$:T4$=FA4$:T5$=FA5$:GOTO 1720 'Use HOF data +1640 PRINT TAB(10);:INPUT "Second address line: *",T2$:IF T2$="" THEN T2$="~" +1650 PRINT TAB(10);"City (if ";HT$;", enter H): *";:INPUT "",T3$ +1660 IF T3$="H" THEN T3$=HT$:T4$=ST$:GOTO 1710 +1670 IF T3$<>"" THEN 1690 ELSE IF XREF<=0 THEN T3$="~":GOTO 1690 +1680 T3$=FA3$:T4$=FA4$:T5$=FA5$:GOTO 1720 'Use HOF data +1690 PRINT TAB(10);"State (2-char, if ";ST$;" hit RETURN): ";:INPUT "",T4$ +1700 IF T4$="" THEN T4$=ST$ +1710 PRINT TAB(10);:INPUT "ZIP code (5 digits): ",T5$ +1720 PRINT TAB(10);:INPUT "Telephone number (7 digits, no dash): *",TEL$ +1730 IF TEL$="" THEN IF XREF>0 THEN TEL$=FTEL$ ELSE TEL$="~" +1740 IF LEN(TEL$)<=7 THEN 1760 +1750 PRINT FNCTR$("ERROR! 7 numbers only, please."):GOTO 1720 +1760 PRINT TAB(10);:INPUT "Date joined church (YYMMDD): *",DTJN$ +1770 IF DTJN$="" THEN IF XREF>0 THEN DTJN$=FDTJN$ ELSE DTJN$="~" +1780 PRINT TAB(10);:INPUT "Anniversary date (YYMMDD): *",ANNIV$ +1790 IF ANNIV$="" THEN IF XREF>0 THEN ANNIV$=FANNIV$ ELSE ANNIV$="~" +1800 PRINT TAB(10);:INPUT "Church Position (max 10 chars): ",PSN$ +1810 IF PSN$="" THEN PSN$="~" +1820 PRINT TAB(10);:INPUT "Birth Date (YYMMDD): ",BDAY$ +1830 IF BDAY$="" THEN BDAY$="~" +1840 PRINT "Enter up to 4 Special Skills (max 10 chars, RETURN to stop):" +1850 FLAG=0 +1860 FOR I=1 TO 4 +1870 IF FLAG=1 THEN SKIL$(I)="~":GOTO 1900 +1880 PRINT TAB(10);"Skill";I;:INPUT ": ",SKIL$(I) +1890 IF SKIL$(I)="" THEN SKIL$(I)="~":FLAG=1 +1900 NEXT I:FLAG=0 +1910 PRINT "Enter up to 4 Committee memberships (present and past;" +1920 PRINT "put past ones in parentheses, e.g., '(Building)')." +1930 PRINT "(max 10 characters, RETURN to stop):" +1940 FOR I=1 TO 4 +1950 IF FLAG=1 THEN COMM$(I)="~":GOTO 1980 +1960 PRINT TAB(10);"Committee";I;:INPUT ": ",COMM$(I) +1970 IF COMM$(I)="" THEN COMM$(I)="~":FLAG=1 +1980 NEXT I:FLAG=0 +1990 PRINT "Enter other desired information or comments (up to 1 line):" +2000 PRINT:LINE INPUT "",CMT$:IF CMT$="" THEN CMT$="None" +2010 GOSUB 1050:GOSUB 820 +2020 GOTO 1300 +2030 RETURN +2040 '== Find Record Number for New Member == +2050 ' Must bring in A$ +2060 IF A$="?" THEN 2130 ELSE IF A$="" THEN FLAG=1:GOTO 2180 +2070 REC=VAL(A$) +2080 IF MNR(REC)=0 THEN 2160 +2090 PRINT "ERROR! Duplicate Member Number. Select another, please," +2100 PRINT "? for next available number, or RETURN to quit." +2110 INPUT "Enter selection ( # or ? ) or RETURN to quit: ",A$ +2120 GOTO 2060 +2130 FOR REC=1 TO MAX:IF MNR(REC)=0 THEN 2160:NEXT REC +2140 PRINT FNCTR$("Sorry - no more records are available.") +2150 FLAG=1:REC=0:GOTO 2180 +2160 FLAG=0:MNR(REC)=REC +2170 PRINT FNCTR$("Confirming Member Record #"+STR$(REC)) +2180 RETURN +2190 '== Query Member Record == +2200 REC=0:PRINT CLR$;FNCTR$("== Query Member Record =="):PRINT +2210 PRINT FNCTR$("Enter Member Number (#, ?-Listing, A-All, Q-Quit): "); +2220 INPUT; "",A$:IF A$="Q" OR A$="q" THEN PRINT "uit":GOTO 2300 +2230 PRINT:IF A$="?" THEN GOSUB 2490:GOTO 2200 +2240 IF A$<>"A" AND A$<>"a" THEN 2270 +2250 IF REC0 THEN GOSUB 2330:GOTO 2280 +2260 IF REC>=MAX THEN 2200 ELSE 2250 +2270 REC=VAL(A$):GOSUB 980:IF REC=0 THEN 2200 ELSE GOSUB 2330:REC=0 +2280 IF T$="Q" OR T$="q" THEN PRINT "uitting...":GOTO 2300 +2290 IF REC=0 THEN 2200 ELSE 2250 +2300 RETURN +2310 PRINT FNCTR$("Getting Member #");REC:GOTO 2250 +2320 '-- gosub to show member rec -- +2330 GET #1,REC:GET #2,REC:GET #3,REC +2340 T7$=MID$(FTEL$,1,3):T8$=MID$(FTEL$,4,4) +2350 PRINT CLR$;"MBR #";TAB(12);"NAME";TAB(40);"ADDRESS":PRINT +2360 PRINT REC;TAB(10);FXN$;TAB(40);FA1$ +2370 IF ASC(FA2$)>32 THEN PRINT TAB(40);FA2$ +2380 PRINT TAB(40);FA3$;FA4$;" ";FA5$:PRINT +2390 PRINT "Position: ";FPSN$;TAB(40);"Tel #: ";T7$;"-";T8$ +2400 PRINT "Joined: ";FTDJN$;TAB(40);"Birth Date: ";FBDAY$ +2410 PRINT "Family Head #: ";FXREF$;TAB(40);"Anniversary: ";FANNIV$ +2420 PRINT:PRINT TAB(15);"Skills";TAB(40);"Committees ('(past)')" +2430 FOR I=1 TO 4:PRINT TAB(15);FSKIL$(I);TAB(40);FCOMM$(I):NEXT I +2440 PRINT:PRINT:PRINT FCMT$ +2450 PRINT FNCTR$("Hit RETURN to continue, or Q to quit: "); +2460 T$=INKEY$:IF LEN(T$)<1 THEN 2460 +2470 RETURN +2480 '== Print Member Numbers == +2490 GOSUB 2500:GOTO 2540 +2500 PRINT CLR$;FNCTR$("== Member Number List =="):PRINT +2510 PRINT "NBR";TAB(5);"NAME";TAB(35);"XREF"; +2520 PRINT TAB(40);"NBR";TAB(45);"NAME";TAB(75);"XREF" +2530 RETURN +2540 T=MAX/2 '2 columns +2550 FOR REC=1 TO T +2560 T0=0:T1=REC:T2=0 +2570 IF MNR(T1)=0 THEN 2620 +2580 GET #1,T1:GET #2,T1 +2590 PRINT TAB(T2);:PRINT USING "###";REC; +2600 PRINT TAB(T2+5);FXN$;TAB(T2+35);FXREF$; +2610 IF T2=0 THEN PRINT "|"; ELSE PRINT +2620 IF T2>0 THEN 2650 +2630 IF T2=0 THEN T1=T+REC:T2=40:GOTO 2570 +2640 IF REC MOD 20=0 AND REC"DELETE" THEN 2900 ELSE IF FLAG=1 THEN 2890 +2820 DATA "","WARNING! If you delete this record, ALL record of ALL data" +2830 DATA "on this member is PERMANENTLY and FOREVER destroyed in this file." +2840 DATA "There are other options available: Change the member's number;" +2850 DATA "Move the member to an inactive file." +2860 DATA "Consider these, and be ABSOLUTELY sure you want to delete this!" +2870 DATA "If you do not, enter ANYTHING but 'DELETE' to abort.","",* +2880 RESTORE 2820:GOSUB 390:IF FLAG=1 THEN FLAG=0 ELSE FLAG=1:GOTO 2800 +2890 TEMP=REC:GOSUB 3770 'delete rec +2900 FLAG=0:RETURN +2910 '== Regular member data change == +2920 PRINT FNCTR$("== Member Record Correction =="):PRINT +2930 PRINT "Enter the information to be changed (only one at a time, please):" +2940 DATA "Member Number:","#","Member Name:","N","Position:","P" +2950 DATA "Telephone:","T","Address:","A","Birth Date:","B" +2960 DATA "Date Joined:","J","Anniversary:","M","Skill(s):","S" +2970 DATA "Committee(s):","C","Family Head:","H","Other Comments:","O" +2980 DATA "Delete Member:","D" +2990 RESTORE 2940:FOR N=1 TO 13:READ A$,B$:PRINT,A$;TAB(30);B$:NEXT N +3000 PRINT:PRINT FNCTR$("(#,N,P,T,A,B,J,M,S,C,H,O,D, or ESC to quit): "); +3010 A$=INKEY$:IF LEN(A$)<1 THEN 3010 ELSE IF ASC(A$)=11 OR ASC(A$)=17 THEN 3010 +3020 IF A$=ESC$ THEN PRINT "ESC" ELSE PRINT A$:GOTO 3050 +3030 PRINT FNCTR$("Now updating all changes to files...") +3040 GOSUB 1230:PRINT CLR$:GOTO 2700 +3050 T=INSTR("#NPTABJMSCHOD",A$) +3060 IF T<1 THEN PRINT FNCTR$("ERROR! Try again, please."):PRINT:GOTO 3000 +3070 DATA "Remember, use RETURN to accept Present data, 'ERASE' to erase" +3080 DATA "an entry, or enter new data as desired. DO NOT use this utility" +3090 DATA "to go right back and check a new entry (and then hit RETURN to" +3100 DATA "accept that new entry) -- the new data is not actually written" +3110 DATA "to the disk yet, and your RETURN will erase it!","",* +3120 PRINT CLR$:RESTORE 3070:GOSUB 390 +3130 ON T GOSUB 3600,3170,4030,3260,3330,3890,3820,3960,4280,4390,4100,4170,2800 +3140 IF T=1 THEN 3030 ELSE IF T=13 THEN 2700 +3150 PRINT:PRINT:PRINT FNCTR$("Change posted."):FOR I=1 TO 500:NEXT:GOTO 2920 +3160 '== Change Name == +3170 PRINT "Present Name: ";FXN$ +3180 LINE INPUT; "Enter corrected name (max 30 char): ",A$ +3190 IF A$="" THEN PRINT FXN$:GOTO 3240 ELSE PRINT +3200 IF A$<>"ERASE" THEN 3230 +3210 PRINT FNCTR$("ERROR! You cannot ERASE a name field, only change.") +3220 PRINT:GOTO 3170 +3230 LSET FXN$=A$ +3240 RETURN +3250 '== Change Telephone Number == +3260 PRINT "Present Telephone Number: ";FTEL$ +3270 INPUT; "Enter new telephone number (max 7 characters, no dashes): ",A$ +3280 IF A$="" THEN PRINT FTEL$:GOTO 3310 +3290 IF A$="ERASE" THEN A$="~" +3300 PRINT:LSET FTEL$=A$ +3310 RETURN +3320 '== Change Address == +3330 PRINT "Present Address: ";TAB(20);FA1$ +3340 PRINT TAB(20);FA2$:PRINT TAB(20);FA3$ +3350 PRINT TAB(20);FA4$:PRINT TAB(20);FA5$ +3360 PRINT:PRINT FNCTR$("Enter new information, or RETURN to accept the old:") +3370 PRINT:INPUT; "Enter first address line: ",A$ +3380 IF A$="" THEN PRINT FA1$:GOTO 3410 +3390 IF A$="ERASE" THEN A$="~":PRINT A$ +3400 LSET FA1$=A$ +3410 PRINT:INPUT; "Enter second address line: ",A$ +3420 IF A$="" THEN PRINT FA2$:GOTO 3450 +3430 IF A$="ERASE" THEN A$="~":PRINT A$ +3440 LSET FA2$=A$ +3450 PRINT:INPUT; "Enter City (20 char): ",A$ +3460 IF A$<>"" THEN 3480 +3470 PRINT "City & State: ";FA3$;" ";FA4$:GOTO 3540 +3480 IF A$="ERASE" THEN A$="~":PRINT A$ +3490 LSET FA3$=A$ +3500 PRINT:INPUT; "Enter State (2 char abbrev.): ",A$ +3510 IF A$="" THEN PRINT FA4$:GOTO 3540 +3520 IF A$="ERASE" THEN A$="~":PRINT A$ +3530 LSET FA4$=A$ +3540 PRINT:INPUT; "Enter ZIP code (5 char): ",A$ +3550 IF A$="" THEN PRINT FA5$:GOTO 3580 +3560 IF A$="ERASE" THEN A$="~":PRINT A$ +3570 LSET FA5$=A$ +3580 PRINT:RETURN +3590 '== Change Member Number == +3600 DATA "== Changing Member Numbers ==","" +3610 DATA "You may assign a member a new number. However it CANNOT be one" +3620 DATA "already assigned. You must first Delete that other member" +3630 DATA "from the files, COMPLETELY and FOREVER erasing all data you have" +3640 DATA "on that person -- and that's pretty drastic!","" +3650 DATA "I recommend you change the old member's number to a high unused" +3660 DATA "number, and then assign the vacant number as you desire.","",*** +3670 PRINT CLR$:RESTORE 3600:GOSUB 390:TEMP=REC +3680 FOR I=1 TO 4:GET #I,REC:NEXT +3690 PRINT:PRINT FNCTR$("Present Member's Number: "+STR$(REC)) +3700 PRINT FNCTR$("Enter new desired number (4 digits, or RETURN to quit): "); +3710 INPUT "",A$:IF A$="" THEN 3800 +3720 IF A$="ERASE" THEN PRINT "ERROR!":GOTO 3690 +3730 GOSUB 2060:IF REC=0 OR FLAG=1 THEN 3800 +3740 '-- OK to use new number -- +3750 LSET FXNR1$=MKI$(REC):MNR(REC)=REC:GOSUB 1230 'post new data +3760 LSET FZ1$="ZZ":LSET FXNR1$=MKI$(0):LSET FXN$="" +3770 REC=TEMP:MNR(REC)=0:GOSUB 1230 'purge old +3780 PRINT FNCTR$("Deletion Posted"):PRINT RET$; +3790 A$=INKEY$:IF LEN(A$)<1 THEN 3790 +3800 RETURN +3810 '== Change Date Joined == +3820 PRINT "Present Date Joined: ";FTDJN$ +3830 INPUT; "Enter new Date Joined (YYMMDD): ",A$ +3840 IF A$="" THEN PRINT FTDJN$:GOTO 3870 +3850 IF A$="ERASE" THEN A$="~":PRINT A$ +3860 LSET FTDJN$=A$ +3870 RETURN 'to member field change +3880 '== Change Birth Date == +3890 PRINT "Present Birth Date: ";FBDAY$ +3900 INPUT; "Enter new Birth Date (YYMMDD): ",A$ +3910 IF A$="" THEN PRINT FBDAY$:GOTO 3940 +3920 IF A$="ERASE" THEN A$="~":PRINT A$ +3930 LSET FBDAY$=A$ +3940 RETURN +3950 '== Change Anniversary == +3960 PRINT "Present Anniversary: ";FANNIV$ +3970 INPUT; "Enter new Anniversary (YYMMDD): ",A$ +3980 IF A$="" THEN PRINT FANNIV$:GOTO 4010 +3990 IF A$="ERASE" THEN A$="~":PRINT A$ +4000 LSET FANNIV$=A$ +4010 RETURN +4020 '== Change Church Position == +4030 PRINT "Present Church Position: ";FPSN$ +4040 INPUT; "Enter new Church Position (10 char): ",A$ +4050 IF A$="" THEN PRINT FPSN$:GOTO 4080 +4060 IF A$="ERASE" THEN A$="~":PRINT A$ +4070 LSET FPSN$=A$ +4080 RETURN +4090 '== Change Family Head # == +4100 PRINT "Present Family Head Member #: ",FXREF$ +4110 INPUT; "Enter new Family Head Member #: ",A$ +4120 IF A$="" THEN PRINT FXREF$:GOTO 4150 +4130 IF A$="ERASE" THEN A$="~":PRINT A$ +4140 LSET FXREF$=A$ +4150 RETURN 'to member field change +4160 '== Change Other Comments == +4170 PRINT "Present Comment Line:":PRINT:PRINT FCMT$:PRINT:T$=FCMT$ +4180 PRINT "Enter new Comment Line:":LINE INPUT; "*",A$ +4190 IF A$="" THEN PRINT T$:A$=T$:GOTO 4250 +4200 IF A$="ERASE" THEN A$="None.":GOTO 4250 +4210 PRINT "A double-check ... here's your new line. If OK, hit RETURN." +4220 PRINT "If you don't like it, do it again." +4230 PRINT:PRINT A$:PRINT:T$=A$ +4240 GOTO 4180 +4250 LSET FCMT$=A$ +4260 RETURN +4270 '== Change Skills == +4280 PRINT "Present Skills:" +4290 FOR I=1 TO 4:PRINT USING "#. ";I; +4300 PRINT FSKIL$(I);:IF I<>4 THEN PRINT ", "; +4310 NEXT I:PRINT +4320 PRINT "Enter new skills (10 chars):" +4330 FOR I=1 TO 4:PRINT USING "#. ";I;:INPUT; "",A$ +4340 IF A$="" THEN PRINT FSKIL$(I):GOTO 4360 ELSE IF A$="ERASE" THEN A$="~" +4350 LSET FSKIL$(I)=A$ +4360 PRINT:NEXT I +4370 RETURN +4380 '== Change Committee Membership == +4390 PRINT "Present Committee Membership:" +4400 FOR I=1 TO 4:PRINT USING "#. ";I; +4410 PRINT FCOMM$(I);:IF I<>4 THEN PRINT ", "; +4420 NEXT I:PRINT +4430 PRINT "Enter new Committee Membership(s) (10 chars):" +4440 FOR I=1 TO 4:PRINT USING "#. ";I;:INPUT; "",A$ +4450 IF A$="" THEN PRINT FCOMM$(I):GOTO 4480 +4460 IF A$="ERASE" THEN A$="~":PRINT A$ +4470 LSET FCOMM$(I)=A$ +4480 PRINT:NEXT I +4490 RETURN 'to member field change +4500 '== Actual Donation Posting/Listing == +4510 PRINT CLR$;FNCTR$("== Donation Posting/Listing ==") +4520 PRINT FNCTR$("Current Quarter: "+QTR$+" Quarter"):PRINT +4530 REC=1:IF OPT=7 THEN OPEN "O",#5,"MBRS-DON.RPT" +4540 LSET FSP1N$="" +4550 PRINT FNCTR$("Enter Member Number (or ?-Listing, A-All, RETURN-quit): "); +4560 INPUT "",A$:REC=1 +4570 IF A$="A" OR A$="a" THEN FLAG=1:GOTO 4610 +4580 IF A$="" THEN IF OPT=7 THEN CLOSE #5:RETURN ELSE RETURN +4590 IF A$="?" THEN GOSUB 2490:GOTO 4510 +4600 REC=VAL(A$):FLAG=0:GOSUB 980:IF REC=0 THEN 4550 +4610 IF MNR(REC)=0 THEN 4720 +4620 GET #1,REC:GET #2,REC:GET #4,REC +4630 A=CVI(FXNR1$):IF ASC(FSP1N$)>32 THEN L=1 ELSE LSET FSP1N$="None":L=0 +4640 IF LEN(FWK$)=0 THEN WK=0:TD$="":SP1D$="":GOTO 4680 +4650 T=CVI(FWK$):WK=T +4660 TD$=LEFT$(FTD$,T*4) +4670 SP1D$=LEFT$(FSP1D$,T*4) +4680 WK=WK+1:LSET FWK$=MKI$(WK) +4690 IF OPT=5 THEN GOSUB 4740 +4700 IF OPT=6 THEN GOSUB 4980:IF T$="Q" THEN A$="":GOTO 4580 +4710 IF OPT=7 THEN GOSUB 5340 +4720 IF FLAG=0 OR REC>MAX THEN 4550 ELSE REC=REC+1:GOTO 4610 +4730 '-- Donation Entry -- +4740 LSET FZ1$="**":LSET FSP1D$="":LSET FTD$="" +4750 PRINT CLR$;"Donation for Member ";FXN$ +4760 PRINT "Type Donation (S - Special, RETURN - Sunday, ESC - Next Mbr): "; +4770 TYP$=INKEY$:IF LEN(TYP$)<1 THEN 4770 +4780 IF TYP$=ESC$ THEN PRINT "Next Member...":GOTO 4960 'return +4790 IF TYP$="S" OR TYP$="s" THEN TYP=1:TYP$="Special":GOTO 4810 +4800 TYP$="Regular":TYP=0 +4810 PRINT:PRINT:PRINT "Now posting ";TYP$;" Donation, Week #";WK +4820 IF TYP=0 THEN 4890 +4830 PRINT FNCTR$("The Special Donation name is "+FSP1N$) +4840 PRINT FNCTR$("Enter name of new Special Donation (max 15 chars),") +4850 PRINT FNCTR$("or RETURN for no change/none: ");:LINE INPUT;"",A$ +4860 IF L=1 AND LEN(A$)=0 THEN PRINT "Accepted.":GOTO 4890 +4870 IF L=0 AND LEN(A$)=0 THEN A$="None":PRINT A$ +4880 LSET FSP1N$=A$:GOTO 4830 +4890 PRINT "Enter ";TYP$;" Donation Amount (no $ or ,): ";:INPUT "",DNEW +4900 PRINT "The amount entered is ";:PRINT USING "$###.##";DNEW +4910 PRINT "Hit RETURN to accept, or enter corrected donation amount: "; +4920 INPUT "",A:IF A<>0 THEN DNEW=A:GOTO 4900 +4930 DNEW$=MKS$(DNEW) +4940 IF TYP=1 THEN LSET FSP1D$=SP1D$+DNEW$ ELSE LSET FTD$=TD$+DNEW$ +4950 PUT #4,REC:GOTO 4760 +4960 CLOSE #4:GOSUB 880:RETURN +4970 '== Screen Donation Report == +4980 PRINT CLR$;FNCTR$("DONATIONS") +4990 PRINT TAB(30);FXN$;TAB(70);FXNR1$ +5000 PRINT TAB(30);FA1$ +5010 IF ASC(FA2$)<>32 AND ASC(FA2$)<>126 THEN PRINT TAB(30);FA2$ +5020 PRINT TAB(30);FA3$;FA4$;" ";FA5$ +5030 PRINT FNCTR$(QTR$+" Quarter "+YR$):PRINT +5040 PRINT TAB(20);"Sunday";TAB(50);"Special" +5050 PRINT TAB(10);"Week";TAB(20);"Donation";TAB(50);"Donation"; +5060 PRINT TAB(60);"Purpose" +5070 PRINT TAB(10);"----";TAB(20);"--------";TAB(50);"--------"; +5080 PRINT TAB(60);"-------" +5090 DT=0:DSP1T=0 +5100 FOR I=1 TO 13 +5110 IF WK=1 THEN PRINT:PRINT FNCTR$("No donations entered."):GOTO 5280 +5120 IF I=WK THEN 5220 +5130 D$=MID$(FTD$,((I-1)*4)+1,4) +5140 SP1D$=MID$(FSP1D$,((I-1)*4)+1,4) +5150 D=CVS(D$):DSP1=CVS(SP1D$) +5160 PRINT TAB(10);:PRINT USING "###";I; +5170 PRINT TAB(20);:PRINT USING " ###.##";D; +5180 PRINT TAB(50);:PRINT USING " ###.##";DSP1; +5190 PRINT TAB(60);:IF I=WK-1 THEN PRINT FSP1N$ ELSE PRINT +5200 DT=DT+D:DSP1T=DSP1T+DSP1 +5210 NEXT I +5220 DAV=DT/(I-1) +5230 PRINT TAB(20);"---------";TAB(50);"---------":PRINT +5240 PRINT TAB(10);"Total:";TAB(20);:PRINT USING " $###.##";DT; +5250 PRINT TAB(50);:PRINT USING " $###.##";DSP1T +5260 PRINT "Weekly average:";TAB(20);:PRINT USING " $###.##";DAV; +5270 PRINT TAB(35);"Comb. Total:";TAB(50);:PRINT USING " $###.##";DT+DSP1T +5280 PRINT BTM$;FNCTR$("Hit RETURN to continue or Q to quit: "); +5290 T$=INKEY$:IF LEN(T$)<1 THEN 5290 ELSE PRINT CLR$:RETURN +5300 '== Print Formatted Donation Report to File == +5310 PRINT #5,CLR$; 'FNCTR$("MY CHURCH") +5320 'PRINT #5,FNCTR$("100 Sanctity Lane") +5330 'PRINT #5,FNCTR$(HT$+" "+ST$+" 28303"):PRINT #5,"" +5340 PRINT #5,FNCTR$("DONATIONS"):PRINT #5,"" +5350 PRINT #5,TAB(30);FXN$;TAB(70);FXNR1$ +5360 PRINT #5,TAB(30);FA1$ +5370 IF ASC(FA2$)<>32 AND ASC(FA2$)<>126 THEN PRINT #5,TAB(30);FA2$ +5380 PRINT #5,TAB(30);FA3$;FA4$;" ";FA5$:PRINT #5,"" +5390 PRINT #5,FNCTR$(QTR$+" Quarter +YR$):PRINT #5,"" +5400 PRINT #5,TAB(20);"Sunday";TAB(50);"Special" +5410 PRINT #5,TAB(10);"Week";TAB(20);"Donation";TAB(50);"Donation"; +5420 PRINT #5,TAB(60);"Purpose" +5430 PRINT #5,TAB(10);"----";TAB(20);"--------";TAB(50);"--------"; +5440 PRINT #5,TAB(60);"-------" +5450 DT=0:DSP1T=0 +5460 FOR I=1 TO 13:IF WK<>1 THEN 5480 +5470 PRINT #5,"":PRINT #5,FNCTR$("No donations entered."):GOTO 5580 +5480 IF I=WK THEN 5580 +5490 FD$=MID$(FTD$,(I-1)*4+1,4) +5500 SP1D$=MID$(FSP1D$,(I-1)*4+1,4) +5510 D=CVS(FD$):DSP1=CVS(SP1D$) +5520 PRINT #5,TAB(10);:PRINT #5,USING "###";I; +5530 PRINT #5,TAB(20);:PRINT #5,USING " ###.##";D; +5540 PRINT #5,TAB(50);:PRINT #5,USING " ###.##";DSP1; +5550 PRINT #5,TAB(60);:IF I=WK-1 THEN PRINT #5,FSP1N$ ELSE PRINT #5 +5560 DT=DT+D:DSP1T=DSP1T+DSP1 +5570 NEXT I +5580 DAV=DT/I +5590 PRINT #5,TAB(20);"---------";TAB(50);"---------":PRINT #5,"" +5600 PRINT #5,TAB(10);"Total:";TAB(20);:PRINT #5,USING " $###.##";DT; +5610 PRINT #5,TAB(50);:PRINT #5,USING " $###.##";DSP1T +5620 PRINT #5,"":PRINT #5,"Weekly average:";TAB(20); +5630 PRINT #5,USING " $###.##";DAV;:PRINT #5,TAB(35);"Comb. Total:"; +5640 PRINT #5,TAB(50);:PRINT #5,USING " $###.##";DT+DSP1T;:PRINT #5,CHR$(12) +5650 RETURN +5660 '-- Small Gosub to field all files -- +5670 FOR I=1 TO 4 +5680 OPEN "R",#I,F$(I):FIELD #I,126 AS FA$ +5690 PRINT FNCTR$("Now opening and fielding "+F$(I)+" (File #"+STR$(I)+").") +5700 NEXT I:RETURN +5710 '== Quarter File Init== +5720 DATA "== Quarter Initialization ==","" +5730 DATA "You may now set the present Quarter to access current Quarterly" +5740 DATA "Donation Files. If this is a new Quarter, that file will be" +5750 DATA "created automatically.","",* +5760 PRINT CLR$:RESTORE 5720:GOSUB 390 +5770 GOSUB 6150:IF T$<>"Q" THEN 5820 +5780 IF LEN(F$(4))>0 THEN 6120 +5790 PRINT FNCTR$("Your file names are NOT initialized, and you cannot access") +5800 PRINT FNCTR$("your files until that is done! Please select a Quarter.") +5810 GOTO 5770 +5820 QTR$=MID$("1st2nd3rd4th",(VAL(T$)-1)*3+1,3) +5830 PRINT:PRINT FNCTR$("Here are your file names for the "+QTR$+" Quarter:") +5840 PRINT:PRINT TAB(20); +5850 FOR I=1 TO 4:PRINT F$(I);" ";:NEXT I:PRINT +5860 RESET:ON ERROR GOTO 5940 +5870 ' The following file test requires that MBRS.BAS exist on this disk. +5880 ' So DON'T change MBRS.BAS to anything else, or change these names. +5890 NAME "MBRS.BAS" AS F$(1) +5900 NAME F$(1) AS "MBRS.BAS":ON ERROR GOTO 0 +5910 GOTO 6050 +5920 NAME "MBRS.BAS" AS F$(4) +5930 NAME F$(4) AS "MBRS.BAS":GOTO 5980 +5940 IF ERR=58 AND ERL=5890 THEN RESUME 5920 +5950 IF ERR=58 AND ERL=5920 THEN RESUME 6120 +5960 PRINT "Untrapped ERR=";ERR;"at Line ";ERL:STOP +5970 '--Quarter files do not exist - initialize them.-- +5980 ON ERROR GOTO 0 +5990 PRINT FNCTR$("Creating new "+QTR$+" Quarter Donation File "+F$(4)+"...") +6000 OPEN "R",#4,F$(4):FIELD #4,2 AS FZ1$,2 AS FXNR1$,2 AS FWK$,120 AS FA$ +6010 LSET FZ1$="ZZ":LSET FXNR1$=MKI$(0):LSET FWK$=MKI$(0) +6020 FOR REC=1 TO MAX:PUT #4,REC:NEXT REC:CLOSE #4 +6030 GOTO 6120 +6040 '-- Initialize All Files -- +6050 FOR I=1 TO 3 +6060 PRINT FNCTR$("Creating File "+F$(I)) +6070 OPEN "R",#I,F$(I):FIELD #I,2 AS FZ1$,2 AS FXNR1$,122 AS FA$ +6080 LSET FZ1$="ZZ":LSET FXNR1$=MKI$(0) +6090 FOR REC=1 TO MAX:PUT #I,REC:NEXT REC:CLOSE #I +6100 NEXT I:GOTO 5980 +6110 '-- End of All File Initialization -- +6120 ON ERROR GOTO 0 +6130 RETURN +6140 '-- Prompt for and Get Quarter Data -- +6150 IF QTR$="" THEN T$="No Quarter Initialized" ELSE T$=QTR$+" Quarter" +6160 PRINT FNCTR$("Current Quarter: "+T$):PRINT +6170 PRINT FNCTR$("Enter Quarter desired (1,2,3,4) or ESC or RET to quit: "); +6180 T$=INKEY$:IF LEN(T$)<1 THEN 6180 +6190 IF T$=ESC$ OR T$="" THEN T$="Q":PRINT "Quit":GOTO 6220 +6200 F$(4)="DONQTR"+T$+".DAT" +6210 IF INSTR("1234",T$)<1 THEN PRINT FNCTR$("ERROR! Try again."):GOTO 6170 +6220 RETURN diff --git a/cpm/million.txt b/cpm/million.txt new file mode 100644 index 0000000..4142faf --- /dev/null +++ b/cpm/million.txt @@ -0,0 +1,276 @@ +0 PRINT "Press any key to begin.":FOR I=-32767 TO 32767 :X$=INKEY$:IF LEN(X$)=1 THEN GOTO 1 ELSE NEXT I +1 PRINT CHR$(26);TAB(23);"MILLIONAIRE" +2 PRINT TAB(20);"CREATIVE COMPUTING" +3 PRINT TAB(18);"MORRISTOWN, NEW JERSEY" +4 PRINT:PRINT:PRINT +5 F$="$###,###" +10 REM MILLIONAIRE BY CRAIG GUNNETT +20 PRINT "THIS IS THE GAME OF 'MILLIONAIRE'. ALL YOU MUST DO IS" +30 PRINT "TYPE IN YOUR NAME AND ANSWER SOME QUESTIONS. THE" +40 PRINT "DECISIONS YOU MAKE WILL DETERMINE HOW MUCH MONEY YOU" +50 PRINT "MAKE. AT THE TIME OF YOUR DEATH, YOUR LIFE WILL BE" +60 PRINT "RATED BY THE AMOUNT OF MONEY YOU MADE THROUGHOUT" +70 PRINT "YOUR LIFE. IF YOU HAVE MADE $1,000,000 , YOU WILL BE" +80 PRINT "A MILLIONAIRE AND WIN THE GAME. NAME PLEASE"; +100 LET O=-1 +110 DIM A$(20),Z$(1),M$(36),S(9),Q(16) +120 FOR I=1 TO 4 +130 LET S(I)=150 +140 NEXT I +150 INPUT A$ +160 PRINT +170 PRINT "O.K., ";A$;", THIS IS YOUR NEW LIFE!" +180 LET M$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" +190 IF RND(1)>.5 GOTO 220 +200 PRINT "ON A BIG FARM"; +210 GOTO 230 +220 PRINT "IN A SMALL TOWN"; +230 LET T=INT(RND(1)*12)+1 +240 PRINT ", ON ";MID$(M$,3*T-2,3);INT(RND(1)*28)+1;CHR$(8);", 1980,"; +250 PRINT " ";A$;" IS BORN." +260 PRINT "YOUR PARENTS ARE VERY "; +270 IF RND(1)>.5 GOTO 310 +280 PRINT "RICH. "; +290 LET M=INT(RND(1)*5000)+10000 +300 GOTO 330 +310 PRINT "POOR. "; +320 LET M=INT((RND(1)+RND(1))/2*1000) +330 LET T=INT(RND(1)*12)+1 +340 LET Y=1996+INT(RND(1)*10) +350 PRINT "ON ";MID$(M$,T*3-2,3);T*2;CHR$(8);",";Y;CHR$(8);", YOU" +360 PRINT "LEAVE HOME WITH ";:PRINT USING F$;M;:PRINT "." +370 LET Y=Y+INT(RND(1)*3)+1 +380 GOSUB 680 +390 FOR J=1 TO 13 +400 IF (J/3)-INT(J/3)+E=0 THEN GOSUB 680 +410 LET D=INT(28*RND(1))+1 +420 LET M1=(INT(12*RND(1))+1)*3 +430 PRINT +440 PRINT MID$(M$,M1-2,3);D;CHR$(8);",";Y +450 IF Y-1980<70 GOTO 500 +460 IF RND(1)>.5 GOTO 500 +470 PRINT "YOU ARE DEAD (COULD'NT TELL, COULD YOU?) AT THE" +480 PRINT "AGE OF";Y-1980;CHR$(8);"." +490 GOTO 2370 +500 IF M>=0 GOTO 540 +510 LET I=INT(.07*Y9*(-M)) +520 LET M=M-I +530 PRINT "THE INTEREST ON YOUR LOAN IS ";:PRINT USING F$;I;: + PRINT ". YOU HAVE ";:PRINT USING F$;M;:PRINT "." +540 LET Q=INT(13*RND(1))+1 +550 IF Q(Q)=1 GOTO 540 +560 LET Q(Q)=1 +570 ON Q GOTO 890, 1010, 1100, 1220, 1280, 1430, 1530 +580 ON (Q-7) GOTO 1850, 1930, 2060, 2120, 2240, 2280 +590 PRINT "YOU NOW HAVE ";:PRINT USING F$;M;:PRINT "." +600 IF O=-2 GOTO 1530 +610 IF J=1 GOTO 640 +620 LET M=M+(E-C)*Y9 +630 PRINT "YOUR EARNINGS AND EXPENSES LEAVE YOU WITH ";: + PRINT USING F$;M;:PRINT "." +640 LET Y9=INT(RND(1)*6)+5 +650 LET Y=Y+Y9 +660 NEXT J +670 GOTO 470 +680 REM JOB SUB +690 PRINT "YOU GOT A NEW JOB AS A "; +700 ON INT(RND(1)*5)+1 GOTO 740, 770, 800, 830 +710 PRINT "TEACHER"; +720 LET E=INT(RND(1)*4000)+17000 +730 GOTO 850 +740 PRINT "LAWYER"; +750 LET E=INT(RND(1)*40000!)+80000! +760 GOTO 850 +770 PRINT "COMPUTER PROGRAMMER"; +780 LET E=INT(RND(1)*5000)+20000 +790 GOTO 850 +800 PRINT "BUS DRIVER"; +810 LET E=INT(RND(1)*2000)+16000 +820 GOTO 850 +830 PRINT "FOOTBALL PLAYER"; +840 LET E=INT(RND(1)*100000!)+100000! +850 LET C=E-10000+INT((RND(1)+RND(1))*5000) +860 PRINT ". YOU EARN ";:PRINT USING F$;E;:PRINT " A YEAR." +870 PRINT "YOU ADJUST YOUR EXPENSES TO ";:PRINT USING F$;C;:PRINT" A YEAR." +880 RETURN +890 PRINT "YOU GO TO LAS VEGAS TO GAMBLE. HOW MUCH DO YOU BET"; +900 INPUT S +910 PRINT +920 IF S<=0 GOTO 1000 +930 IF RND(1)>.7 GOTO 970 +940 LET S2=-INT(RND(1)*S) +950 PRINT "HA! HA! YOU LOST ";:PRINT USING F$;-S2;:PRINT "." +960 GOTO 990 +970 LET S2=INT((RND(1)+RND(1))*S) +980 PRINT "YOU WON ";:PRINT USING F$;S2;:PRINT "." +990 LET M=M+S2 +1000 GOTO 590 +1010 PRINT "YOU ARE OFFERED A COIN SUPPOSEDLY WORTH $100,000." +1020 PRINT "DO YOU BUY IT"; +1030 INPUT Z$ +1035 Z$=LEFT$(Z$,1) +1040 PRINT +1050 LET V7=INT(RND(1)*200000!)+1 +1060 IF Z$<>"Y" GOTO 1080 +1070 LET M=M-100000!+V7 +1080 PRINT "THE VALUE OF THE COIN IS ";:PRINT USING F$;V7;:PRINT "." +1090 GOTO 590 +1100 PRINT "YOU ARE SERIOUSLY SICK. (COULDN'T TELL, COULD YOU?)" +1110 PRINT "YOU HAVE "; +1120 ON (INT(RND(1)*3)+1) GOTO 1150, 1170 +1130 PRINT "THE ASIO-DISPEPSIA REGIONALY HYPNOTIC FLU! (OH!)." +1140 GOTO 1180 +1150 PRINT "COMPUTERITIS." +1160 GOTO 1180 +1170 PRINT "INFECTIOUS FATALY REOCCURING CHRONIC BAD BREATH." +1180 LET U=INT(RND(1)*1000)+500 +1190 LET M=M-U +1200 PRINT "HEALTH EXPENSES COST YOU ";:PRINT USING F$;U;:PRINT "." +1210 GOTO 590 +1220 LET F=INT(RND(1)*100000!) +1230 LET C8=INT(F/2)-INT(RND(1)*(F/2)) +1240 PRINT "YOUR GRANDFATHER GROVERS JUST DIED. (OH!) HE LEFT" +1250 PRINT "YOU ";:PRINT USING F$;F;:PRINT ", BUT FUNERAL EXPENSES ARE ";: + PRINT USING F$;C8;:PRINT "." +1260 LET M=M-C8+F +1270 GOTO 590 +1280 IF E=0 GOTO 890 +1290 PRINT "NEWS FROM YOUR BOSS:" +1300 ON (INT(RND(1)*3)+1) GOTO 1350, 1390 +1310 LET L=INT(RND(1)*3000)+1 +1320 LET E=E-L +1330 PRINT "YOU GOT A ";:PRINT USING F$;L;: + PRINT " DECREASE IN PAY. YOU NOW EARN ";:PRINT USING F$;E;:PRINT "." +1340 GOTO 590 +1350 PRINT "YOU'RE FIRED! (HA!)" +1360 LET E=0 +1370 LET C=INT(C/4) +1380 GOTO 590 +1390 LET R6=INT(RND(1)*5000)+1 +1400 LET E=E+R6 +1410 PRINT "YOU GOT A RAISE OF ";:PRINT USING F$;R6;: + PRINT ". YOU NOW EARN ";:PRINT USING F$;E;:PRINT "." +1420 GOTO 590 +1430 PRINT "THE DOCTOR SAYS YOU NEED A VACATION. DO YOU GO"; +1440 INPUT Z$ +1445 Z$=LEFT$(Z$,1) +1450 PRINT +1460 LET V=INT(RND(1)*2000)+1000 +1470 IF Z$="N" GOTO 1500 +1480 PRINT "GOOD, THE VACATION COSTS ";:PRINT USING F$;V;:PRINT "." +1490 GOTO 1510 +1500 PRINT "YOU JUST HAD A NERVOUS BREAKDOWN. MEDICAL COSTS ";: + PRINT USING F$;-V;:PRINT "." +1510 LET M=M-V +1520 GOTO 590 +1530 FOR I=1 TO 4 +1540 LET S(I)=INT((INT(RND(1)*100)+100+2*S(I))/3) +1550 NEXT I +1560 PRINT "# STOCK NAME PRICE SHARES OWNED" +1562 PRINT "-- ---------- ----- ------------" +1570 PRINT "1 IBM (INCREDIBLY BAD MACHINES) ";S(1);" ";S(5) +1580 PRINT "2 USS (USELESS & STINKY STEEL) ";S(2);" ";S(6) +1590 PRINT "3 NCR (NO CASH RETURN) ";S(3);" ";S(7) +1600 PRINT "4 TWA (TOTAL WRECK AIRLINES) ";S(4);" ";S(8) +1602 PRINT +1610 IF S(9)=1 GOTO 2410 +1620 PRINT "DO YOU BUY, SELL ($100 FEE), OR NOT (B,S, OR N)"; +1630 INPUT Z$ +1635 Z$=LEFT$(Z$,1) +1640 PRINT +1650 IF Z$="S" GOTO 1740 +1660 IF Z$="N" GOTO 1810 +1670 PRINT "STOCK # AND QUANTITY"; +1680 INPUT S3,S(0) +1690 PRINT +1700 LET S(4+S3)=S(4+S3)+S(0) +1710 LET O=-2 +1720 LET M=M-S(S3)*S(0)-100 +1730 GOTO 1620 +1740 PRINT "STOCK # AND QUANTITY"; +1750 INPUT S2,S5 +1760 IF RND(1)<.5 GOTO 1880 +1770 IF S5>S(4+S2) GOTO 1740 +1780 LET S(4+S2)=S(4+S2)-S5 +1790 LET M=M+S(S2)*S5-100 +1800 GOTO 1620 +1810 LET S1=S(5)+S(6)+S(7)+S(8) +1820 IF S1>0 GOTO 610 +1830 LET O=-1 +1840 GOTO 610 +1850 PRINT "NEWS FLASH!!! "; +1860 PRINT "A TORNADO HAS JUST HIT THE HOME OF ";A$;"." +1870 GOTO 1890 +1880 PRINT "AN AIRPLANE HAS JUST CRASHED INTO THE HOME OF ";A$;"." +1890 LET D8=INT(RND(1)*50000!)+1 +1900 LET M=M-D8 +1910 PRINT "DAMAGES HAVE BEEN ESTIMATED AT ";:PRINT USING F$;D8;:PRINT "." +1920 GOTO 590 +1930 PRINT "OH! YOU JUST GOT "; +1940 IF Y-1980<55 GOTO 2000 +1950 IF RND(1)>.4 GOTO 1980 +1960 PRINT "CANCER"; +1970 GOTO 2010 +1980 PRINT "A HEART ATTACK"; +1990 GOTO 2010 +2000 PRINT "LEUKEMIA"; +2010 LET M2=INT(RND(1)*5000)+1000 +2020 LET M=M-M2 +2030 PRINT ". MEDICAL BILLS ARE ";:PRINT USING F$;M2;:PRINT "." +2040 IF RND(1)<.5 GOTO 470 +2050 GOTO 590 +2060 PRINT "YOU JUST HAD A CAR ACCIDENT! MEDICAL COSTS" +2070 LET M3=INT(RND(1)*3000)+1000 +2080 LET Q7=INT(RND(1)*5000)+100 +2090 PRINT "ARE ";:PRINT USING F$;M3;:PRINT ". REPAIRS COST ";: + PRINT USING F$;Q7;:PRINT "." +2100 LET M=M-M3-Q7 +2110 GOTO 590 +2120 IF E=0 GOTO 1010 +2130 LET E2=10000+INT(RND(1)*5000) +2140 PRINT "YOU ARE OFFERED ANOTHER JOB FOR ";: + PRINT USING F$;E2;:PRINT " A YEAR." +2150 PRINT "WOULD YOU LIKE TO MOONLIGHT"; +2160 INPUT Z$ +2170 PRINT +2180 IF LEFT$(Z$,1)="N" THEN 590 +2190 ON INT(RND(1)*3) GOTO 1350, 2220 +2200 LET E=E+E2 +2210 GOTO 590 +2220 PRINT "FROM OVERWORK YOU GET "; +2230 GOTO 1980 +2240 LET R2=INT(RND(1)*10000)+5000 +2250 LET M=M-R2 +2260 PRINT "YOUR HOME HAS BEEN ROBBED OF GOODS WORTH ";: + PRINT USING F$;R2;:PRINT "." +2270 GOTO 590 +2280 IF O=-1 GOTO 1430 +2290 IF RND(1)>.7 GOTO 1430 +2300 LET B4=INT(RND(1)*4) +2310 PRINT "STOCK MARKET CRASH!!! EACH OF YOUR";S1;"SHARES OF" +2320 PRINT "STOCK IS WORTH ";:PRINT USING F$;B4;: + PRINT ". YOU MUST SELL ALL OF THEM" +2330 PRINT "FOR A TOTAL OF ";:PRINT USING F$;S1*B4;:PRINT "." +2340 LET M=M+S1*B4 +2350 LET O=-1 +2360 GOTO 590 +2370 PRINT "YOU HAD ";:PRINT USING F$;M;:PRINT "." +2380 IF O=-1 GOTO 2430 +2390 LET S(9)=1 +2400 GOTO 1530 +2410 LET M=M+S(1)*S(5)+S(2)*S(6)+S(3)*S(7)+S(4)*S(8) +2420 PRINT "WITH STOCK VALUE YOU HAVE ";:PRINT USING F$;M;:PRINT "." +2430 IF M<0 GOTO 2480 +2440 IF M<500000! GOTO 2510 +2450 IF M<1E+06 GOTO 2530 +2460 PRINT A$;" WON!! YOU ARE A MILLIONAIRE!!" +2470 GOTO 2540 +2480 PRINT "YOU LOUSY #$%&'*!!! NOW YOUR POOR FAMILY HAS TO PAY" +2490 PRINT "OFF YOUR DEBTS.......................... " +2500 GOTO 2540 +2510 PRINT "NOT BAD, ";A$;"." +2520 GOTO 2540 +2530 PRINT "CLOSE, ";A$;". MAYBE NEXT LIFE." +2540 PRINT "THANKS FOR PLAYING 'MILLIONAIRE', ";A$;"!!!!" +2545 PRINT:PRINT +2550 END diff --git a/cpm/mortgage.txt b/cpm/mortgage.txt new file mode 100644 index 0000000..27752d6 --- /dev/null +++ b/cpm/mortgage.txt @@ -0,0 +1,171 @@ +10 REM *****MORGAG*****BUSINESS PROGRAM +20 REM MORGAG**********VERSION #1 (7/31/69)*****MORTGAGE ANALYSIS***** +30 REM +40 PRINT "* MORTGAGE ANALYSIS *" +50 PRINT +60 PRINT "IF YOU WANT TO FIND:" +70 PRINT " THE RATE, TYPE '1'" +80 PRINT " THE LIFE, TYPE '2'" +90 PRINT " THE AMOUNT BORROWED, TYPE '3'" +100 PRINT " THE MONTHLY PAYMENT, TYPE '4'" +110 PRINT "WHICH DO YOU WANT"; +120 INPUT Z +130 PRINT +140 IF Z=1 THEN 220 +150 PRINT "WHAT IS THE NOMINAL ANNUAL RATE USING DECIMAL NOTATION"; +160 INPUT R +170 IF R<1 THEN 200 +180 PRINT "IT APPEARS THAT YOU HAVE FORGOTTEN TO USE DECIMAL NOTATION" +190 GOTO 150 +200 PRINT +210 IF Z=2 THEN 260 +220 PRINT "WHAT IS THE LIFE OF THE MORTGAGE: YEARS, MONTHS"; +230 INPUT Y,M +240 PRINT +250 IF Z=3 THEN 300 +260 PRINT "WHAT IS THE AMOUNT TO BE BORROWED"; +270 INPUT A +280 PRINT +290 IF Z=4 THEN 330 +300 PRINT "WHAT IS THE AMOUNT OF ONE MONTHLY PAYMENT"; +310 INPUT P +320 PRINT +330 PRINT "WHAT IS THE MONTH (JAN=1,ETC.), AND YEAR IN WHICH THE MORTGAGE LOAN IS" +340 PRINT "TO BE MADE"; +350 INPUT T1,T2 +360 PRINT +370 PRINT "FOR HOW MANY CALENDAR YEARS DO YOU WANT THE MORTGAGE TABLE PRINTED"; +380 INPUT T3 +390 PRINT +400 PRINT "TYPE A ONE (1) IF YOU WANT ONLY AN ANNUAL SUMMARY OF THE MORTGAGE" +410 PRINT "TABLE; TYPE A ZERO (0) FOR A MONTHLY TABLE"; +420 INPUT Z1 +430 PRINT +440 IF Z=2 THEN 470 +450 N=12*Y+M +460 IF Z=1 THEN 660 +470 R1=R/12 +480 IF Z=3 THEN 580 +490 IF Z=4 THEN 610 +500 IF (A*R1/P)<1 THEN 530 +510 PRINT "THE FIRST MONTHS PAYMENT WILL NOT EVEN COVER ITS INTEREST CHARGE" +520 RUN "DIR" +530 N=-(LOG(1-(A*R1)/P))/LOG(1+R1) +540 N=INT(N)+1 +550 Y=INT(N/12) +560 M=N-12*Y +570 GOTO 770 +580 A=(P*(1-1/((1+R1)^N)))/R1 +590 A=INT((A+5)/10)*10 +600 GOTO 770 +610 P=(A*R1)/(1-1/((1+R1)^N)) +620 P=(P*1000+5)/10 +630 P=INT(P) +640 P=P/100 +650 GOTO 770 +660 R1=0 +670 FOR O=1 TO 5 +680 FOR I=1 TO 10 +690 Q=I*(1/(10^O))+R1 +700 C=(P*(1-1/((1+Q)^N)))/Q +710 IF C
(R*A+1) THEN 830 +790 PRINT "YOUR FIRST YEARS'S PAYMENTS ARE"12*P +800 PRINT "THE FIRST YEARS'S INTEREST IS"R*A +810 PRINT "THEREFORE, THE LIFE OF THE MORTGAGE IS UNDEFINED" +820 RUN "DIR" +830 PRINT "***********************************************************************" +840 PRINT +850 PRINT " MORTGAGE TERMS" +860 PRINT +870 PRINT " NOMINAL ANNUAL RATE =";R*100;"PERCENT" +880 PRINT " LIFE OF MORTGAGE =";Y;"YEARS,";M;"MONTHS" +890 PRINT " AMOUNT BORROWED = $";A +900 PRINT " MONTHLY PAYMENT = $";P +910 IF Z=1 THEN 950 +920 IF Z=3 THEN 990 +930 IF Z=2 THEN 970 +940 GOTO 1000 +950 PRINT " (NOTE: THE ANNUAL RATE HAS BEEN ROUNDED TO NEAREST 1/100 PERCENT)" +960 GOTO 1000 +970 PRINT " (NOTE: THE MORTGAGE LIFE HAS BEEN ROUNDED UPWARD TO NEAREST MONTH)" +980 GOTO 1000 +990 PRINT " (NOTE: THE AMOUNT BORROWED ROUNDED TO NEAREST $10)" +1000 PRINT +1010 PRINT "----------------------------------------------------------------------" +1020 PRINT +1030 PRINT " MORTGAGE TABLE" +1040 PRINT +1050 PRINT +1060 Z2=0 +1070 S1=0 +1080 S2=0 +1090 IF T1=12 THEN 1120 +1100 M2=T1 +1110 GOTO 1140 +1120 T2=T2+1 +1130 M2=0 +1140 M3=M2+1 +1150 IF Z1=1 THEN 1230 +1160 PRINT " ","BEGINNING" +1170 PRINT " ","PRINCIPAL"," ","PRINCIPAL" +1180 PRINT "MONTH","OUTSTANDING","INTEREST","REPAYMENT" +1190 PRINT +1200 PRINT +1210 PRINT " ","FOR THE CALENDAR YEAR"T2 +1220 GOTO 1280 +1230 PRINT " "," "," ","ENDING" +1240 PRINT " "," ","PRINCIPAL","PRINCIPAL" +1250 PRINT "YEAR","INTEREST","REPAYMENT","OUTSTANDING" +1260 PRINT +1270 PRINT +1280 FOR M1=M3 TO 12*T3 +1290 I1=A*R1 +1300 I1=(I1*1000+5)/10 +1310 I1=INT(I1) +1320 I1=I1/100 +1330 IF P<(A+I1) THEN 1360 +1340 P1=A +1350 GOTO 1370 +1360 P1=P-I1 +1370 A1=A +1380 A=A1-P1 +1390 S1=S1+I1 +1400 S2=S2+P1 +1410 M2=M2+1 +1420 IF Z1=1 THEN 1590 +1430 PRINT M2,A1,I1,P1 +1440 IF M2=12 THEN 1470 +1450 IF A>0 THEN 1690 +1460 Z2=1 +1470 PRINT +1480 PRINT " INTEREST PAID DURING";T2;TAB(42);"=";S1 +1490 PRINT " PRINCIPLE REPAID DURING";T2;TAB(42);"=";S2 +1500 PRINT " PRINCIPLE OUTSTANDING AT YEAR END";TAB(42);"=";A +1510 IF Z2=1 THEN 1700 +1520 T2=T2+1 +1530 PRINT +1540 PRINT "-----" +1550 PRINT +1560 IF M1=12*T3 THEN 1700 +1570 PRINT " ","FOR THE CALENDAR YEAR"T2 +1580 GOTO 1660 +1590 IF M2=12 THEN 1620 +1600 IF A>0 THEN 1690 +1610 Z2=1 +1620 PRINT T2,S1,S2,A +1630 T2=T2+1 +1640 IF M1=12*T3 THEN 1700 +1650 IF Z2=1 THEN 1700 +1660 S1=0 +1670 S2=0 +1680 M2=0 +1690 NEXT M1 +1700 PRINT "**********************************************************************" +1710 RUN "DIR" diff --git a/cpm/ohmslaw.txt b/cpm/ohmslaw.txt new file mode 100644 index 0000000..a2fed57 --- /dev/null +++ b/cpm/ohmslaw.txt @@ -0,0 +1,417 @@ +0 REM - COMPACTED:6/08/84 +10 PRINT CHR$(27);CHR$(42):PRINT" -=*OHM'S LAW*=-" +40 PRINT" MENU" +50 PRINT:PRINT TAB(10);"(1) Find I, given VOLTAGE and RESISTANCE (E and R)" +70 PRINT TAB(10);"(2) Find R, given VOLTAGE and CURRENT (V and I)" +90 PRINT TAB(10);"(3) Find E, given CURRENT and RESISTANCE (I and R)" +110 PRINT TAB(10);"(4) Find P (POWER), given VOLTAGE and CURRENT (E and I)" +130 PRINT TAB(10);"(5) Find P (POWER), given CURRENT and RESISTANCE (I and R)" +150 PRINT TAB(10);"(6) Find P (POWER), given VOLTAGE and RESISTANCE (E and R)" +170 PRINT TAB(10);"(7) Find two resistances in parallel, given R1 and R2" +190 PRINT TAB(10);"(8) Find RT, given unequal R1, R2, R3, R4 in parallel" +270 PRINT TAB(10);"(9) Find RT, given R1,R2,R3,R4 in SERIES-PARALLEL" +290 PRINT TAB(10);"(10) Find TOTAL CAPACITANCE (CT), in series circuit" +310 PRINT TAB(10);"(11) Find TOTAL CAPACITANCE (CT), 2 caps, parallel circuit" +330 PRINT TAB(10);"(12) Find TOTAL CAPACITANCE (CT), 3 caps in parallel" +350 PRINT TAB(10);"(13) Find PEAK AC VOLTAGE, given RMS value" +370 PRINT TAB(10);"(14) Find RMS VOLTAGE, given PEAK value" +390 PRINT TAB(10);"(15) Find INDUCTIVE REACTANCE (XL)" +410 PRINT TAB(10);"(16) Find CAPACITIVE REACTANCE (XC)" +430 PRINT TAB(10);"(17) Find IMPEDANCE (Z) of a series circuit" +445 PRINT TAB(10);"(18) Find IMPEDANCE (Z) of a parallel circuit" +446 PRINT +450 PRINT" Select the number you require from the menu and press 'RETURN'" +460 LPRINT CHR$(&H1F);CHR$(1); +470 LPRINT:LPRINT CHR$(14) +480 LPRINT TAB(10);"-=*OHM'S LAW*=-" +485 LPRINT CHR$(15) +490 INPUT"Enter choice:",C +500 LPRINT"Enter choice:" +510 LPRINT"Choice is:";C +520 IF C= 0 OR C> 18 THEN 10 +530 ON C GOTO 540,710,880,1050,1220,1380,1540,1700,1930,2190,2360,2560,2770, + 2930,3070,3260,3430,3680 +540 PRINT"Calculate CURRENT (I), given VOLTAGE and RESISTANCE (E and R)" +550 LPRINT"Calculate CURRENT (I), given VOLTAGE and RESISTANCE (E and R)" +555 PRINT:LPRINT +560 INPUT"What is the value of E, in volts:",V +570 LPRINT"What is the value of E in volts?":LPRINT;V:LPRINT +580 INPUT"Now enter the value of R, in ohms:",R +590 LPRINT"Now input the value of R, in ohms":LPRINT ;R:LPRINT +600 LET I= (V/R) +610 PRINT" I= ";(V/R);"amperes" +620 LPRINT"I= ";(V/R);"amperes" +630 PRINT:LPRINT +640 PRINT" Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +650 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +660 IF ANS$="Y" THEN 540 +670 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +680 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +690 IF ANS$="Y" THEN 10 +700 GOTO 10020 +710 PRINT"Calculate RESISTANCE (R), given VOLTAGE and CURRENT (E and I)" +720 LPRINT"Calculate RESISTANCE (R), given VOLTAGE and CURRENT (E and I)" +730 PRINT:LPRINT +740 INPUT"Input the value of E, in volts:",V +750 LPRINT"Input E, in volts":LPRINT V +760 INPUT"Now enter the value of I, in amperes:",I +770 LPRINT"Now input the value for I, in amperes":LPRINT I +780 LET R=(V/I):PRINT"R= ";(V/I);"ohms" +790 LPRINT"R= ";(V/I);"ohms" +800 PRINT:LPRINT +810 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +820 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +830 IF ANS$="Y" THEN 710 +835 PRINT:LPRINT +840 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +850 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +860 IF ANS$="Y" THEN 10 +870 GOTO 10020 +875 PRINT:LPRINT +880 PRINT"Calculate VOLTAGE (E), given CURRENT and RESISTANCE (I and R)" +890 LPRINT"Calculate VOLTAGE (E), given CURRENT and RESISTANCE (I and R)" +895 PRINT:LPRINT +900 INPUT"Enter the value for I, in amperes:",I +910 LPRINT"Input the value for I, in amperes":LPRINT I +920 INPUT"Now enter the value for R, in ohms:",R +930 LPRINT"Now enter the value for R, in ohms":LPRINT R +940 LET E=(I*R):PRINT"E= ";(I*R);"volts" +950 LPRINT"E= ";(I*R);"volts" +960 PRINT:LPRINT +970 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +980 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +990 IF ANS$="Y" THEN 880 +995 PRINT:LPRINT +1000 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +1010 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +1020 IF ANS$="Y" THEN 10 +1030 GOTO 10020 +1040 PRINT:LPRINT +1050 PRINT"Calculate POWER(P), given VOLTAGE(E) and CURRENT(I)" +1060 LPRINT"Calculate POWER (P), given VOLTAGE(E) and CURRENT(I)" +1065 PRINT:LPRINT +1070 INPUT"Input the value for E, in volts:",V +1080 LPRINT"Input value for E, in volts":LPRINT V +1090 INPUT"Now enter the value for I, in amperes:",I +1100 LPRINT"Now input the value for I, in amperes":LPRINT I +1110 LET P=V*I:PRINT"I= ";(V*I);"watts" +1120 LPRINT"I= ";(V*I);"watts" +1130 PRINT:LPRINT +1140 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +1150 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +1160 IF ANS$="Y" THEN 1050 +1170 LPRINT ANS$ +1175 PRINT:LPRINT +1180 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +1190 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +1200 IF ANS$="Y" THEN 10 +1210 GOTO 10020 +1220 PRINT"Calculate POWER(P), given CURRENT(I) and RESISTANCE(R)" +1230 LPRINT"Calculate POWER(P), given CURRENT(I) and RESISTANCE(R)" +1235 PRINT:LPRINT +1240 INPUT"Enter the value for I, in amperes:",I +1250 LPRINT"Input the value for I, in amperes":LPRINT I +1260 INPUT"Now enter the value for R, in ohms:",R +1270 LPRINT"Now enter the value for R, in ohms":LPRINT R +1280 LET P=(I*I)*R:PRINT"P= ";(I*I)*R;"watts" +1290 LPRINT"P= ";(I*I)*R;"watts" +1300 PRINT:LPRINT +1310 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +1320 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +1330 IF ANS$="Y" THEN 1220 +1335 PRINT:LPRINT +1340 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +1350 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +1360 IF ANS$="Y" THEN 10 +1370 GOTO 10020 +1380 PRINT"Calculate POWER(P), given VOLTAGE(E) and RESISTANCE(R)" +1385 PRINT:LPRINT +1390 LPRINT"Calculate POWER(P), given VOLTAGE(E) and RESISTANCE(R)" +1400 INPUT"Enter the value for E, in volts:",V +1410 LPRINT"Input the value for E, in volts":LPRINT V +1420 INPUT"Now enter the value for R, in ohms:",R +1430 LPRINT"Now enter the value for R, in ohms":LPRINT R +1440 LET P=(V*V)/(R):PRINT"P= ";(V*V)/(R);"watts" +1450 LPRINT"P= ";(V*V)/(R);"watts" +1460 PRINT:LPRINT +1470 PRINT"Do you wish to do this calculation again ? (Y/N)":INPUT ANS$ +1480 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +1490 IF ANS$="Y" THEN 1380 +1495 PRINT:LPRINT +1500 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +1510 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +1520 IF ANS$="Y" THEN 10 +1530 GOTO 10020 +1535 PRINT:LPRINT +1540 PRINT"Calculate TOTAL RESISTANCE(RT) in parallel, given R1,R2" +1550 LPRINT"Calculate TOTAL RESISTANCE(RT) in parallel, given R1,R2" +1555 PRINT:LPRINT +1560 INPUT"Input the value for R1:",R1 +1570 LPRINT"Input value for R1, in ohms":LPRINT R1 +1580 INPUT"Now input the value for R2:",R2 +1590 LPRINT"Now enter value for R2, in ohms":LPRINT R2 +1600 LET RT= (R1*R2)/(R1+R2):PRINT"RT= ";(R1*R2)/(R1+R2);"ohms" +1610 LPRINT"RT= ";(R1*R2)/(R1+R2);"ohms" +1620 PRINT:LPRINT +1630 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +1640 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +1650 IF ANS$="Y" THEN 1540 +1655 PRINT:LPRINT +1660 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +1670 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +1680 IF ANS$="Y" THEN 10 +1690 GOTO 10020 +1695 PRINT:LPRINT +1700 PRINT"Calculate TOTAL RESISTANCE(RT), given unequal R1,R2,R3,R4 values" +1710 LPRINT"Calculate TOTAL RESISTANCE(RT), given unequal R1,R2,R3,R4 values" +1715 PRINT:LPRINT +1720 PRINT"Enter the values for R1,R2,R3 and R4, in ohms" +1730 LPRINT"Enter the values for R1,R2,R3 and R4, in ohms" +1740 INPUT"R1=",R1 +1750 INPUT"R2=",R2 +1760 INPUT"R3=",R3 +1770 INPUT"R4=",R4 +1780 LPRINT"R1=";R1;"ohms" +1790 LPRINT"R2=";R2;"ohms" +1800 LPRINT"R3=";R3;"ohms" +1810 LPRINT"R4=";R4;"ohms":LPRINT +1820 LET RT=(1)/(1/R1+1/R2+1/R3+1/R4) +1830 PRINT"RT= ";(1)/(1/R1+1/R2+1/R3+1/R4);"ohms" +1840 LPRINT"RT= ";(1)/(1/R1+1/R2+1/R3+1/R4);"ohms" +1850 PRINT:LPRINT +1860 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +1870 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +1880 IF ANS$="Y" THEN 1700 +1885 PRINT:LPRINT +1890 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +1900 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +1910 IF ANS$="Y" THEN 10 +1920 GOTO 10020 +1925 PRINT:LPRINT +1930 PRINT"Calculate TOTAL RESISTANCE(RT), in series-parallel," +1940 PRINT"given R1, R2, R3 and R4" +1950 LPRINT"Calculate TOTAL RESISTANCE(RT), in series-parallel," +1960 LPRINT"given R1, R2, R3 and R4" +1965 PRINT:LPRINT +1970 PRINT"Enter the values for R1, R2, R3 and R4" +1980 LPRINT"Enter the values for R1, R2, R3 and R4" +1990 INPUT"R1=",R1 +2000 INPUT"R2=",R2 +2010 INPUT"R3=",R3 +2020 INPUT"R4=",R4 +2030 LPRINT"R1=";R1;"ohms" +2040 LPRINT"R2=";R2;"ohms" +2050 LPRINT"R3=";R3;"ohms" +2060 LPRINT"R4=";R4;"ohms" +2070 PRINT:LPRINT +2080 LET RT=(1)/(1/(R1+R2))+(1/(R3+R4)) +2090 PRINT"RT=";(1)/(1/(R1+R2))+(1/(R3+R4));"ohms" +2100 LPRINT"RT=";(1)/(1/(R1+R2))+(1/(R3+R4));"ohms" +2110 PRINT:LPRINT +2120 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +2130 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +2140 IF ANS$="Y" THEN 1930 +2145 PRINT:LPRINT +2150 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +2160 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +2170 IF ANS$="Y" THEN 10 +2180 GOTO 10020 +2185 PRINT:LPRINT +2190 PRINT"Calculate TOTAL CAPACITANCE(CT), in series circuit, given C1 and C2" +2200 LPRINT"Calculate TOTAL CAPACITANCE(CT), series circuit, given C1 and C2" +2205 PRINT:LPRINT +2210 INPUT"Enter value for C1, in MFD:",C1 +2220 INPUT"Now enter the value for C2, in MFD:",C2 +2230 LPRINT"Now enter the value for C2" +2240 LPRINT"C1=";C1;"mfd" +2250 LPRINT"C2=";C2;"mfd" +2260 LET CT=(C1*C2)/(C1+C2):PRINT"CT=";(C1*C2)/(C1+C2);"mfd" +2270 LPRINT"TOTAL CAPACITANCE(CT)=";(C1*C2)/(C1+C2);"mfd" +2280 PRINT:LPRINT +2290 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +2300 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +2310 IF ANS$="Y" THEN 2190 +2315 PRINT:LPRINT +2320 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +2330 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +2340 IF ANS$="Y" THEN 10 +2350 GOTO 10020 +2355 PRINT:LPRINT +2360 PRINT"Calculate TOTAL CAPACITANCE(CT), parallel circuit, given C1 and C2" +2380 LPRINT"Calculate TOTAL CAPACITANCE(CT), parallel circuit, given C1 and C2" +2395 PRINT:LPRINT +2400 INPUT"Enter the value for C1, in mfd:",C1 +2410 LPRINT"Enter the value for C1, in mfd" +2420 INPUT"Now enter the value for C2, in mfd:",C2 +2430 LPRINT"Now enter the value for C2, in mfd" +2440 LPRINT"C1=";C1;"mfd" +2450 LPRINT"C2=";C2;"mfd" +2460 LET CT=(C1*C2)/(C1+C2):PRINT"CT=";(C1*C2)/(C1+C2);"mfd" +2470 LPRINT"CT=";(C1*C2)/(C1+C2);"mfd" +2480 PRINT:LPRINT +2490 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +2500 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +2510 IF ANS$="Y" THEN 2360 +2515 PRINT:LPRINT +2520 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +2530 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +2540 IF ANS$="Y" THEN 10 +2550 GOTO 10020 +2555 PRINT:LPRINT +2560 PRINT"Calculate TOTAL CAPACITANCE(CT) for a parallel circuit," +2570 PRINT"given C1, C2 and C3, in mfd" +2580 LPRINT"Calculate TOTAL CAPACITANCE(CT) for a parallel circuit," +2590 LPRINT"given C1, C2 and C3, in mfd" +2595 PRINT:LPRINT +2600 INPUT"C1=",C1 +2610 INPUT"C2=",C2 +2620 INPUT"C3=",C3 +2630 LPRINT"C1=";C1;"mfd" +2640 LPRINT"C2=";C2;"mfd" +2650 LPRINT"C3=";C3;"mfd" +2660 PRINT:LPRINT +2670 LET CT=(C1+C2+C3):PRINT"CT=";(C1+C2+C3);"mfd" +2680 LPRINT"CT=";(C1+C2+C3);"mfd" +2690 PRINT:LPRINT +2700 PRINT"D0 you wish to do this calculation again? (Y/N)":INPUT ANS$ +2710 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +2720 IF ANS$="Y" THEN 2560 +2725 PRINT:LPRINT +2730 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +2740 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +2750 IF ANS$="Y" THEN 10 +2760 GOTO 10020 +2765 PRINT:LPRINT +2770 PRINT"Calculate PEAK AC VOLTAGE, given RMS value" +2780 LPRINT"Calculate PEAK AC VOLTAGE, given RMS value" +2785 PRINT:LPRINT +2790 INPUT"Enter the RMS value, in volts:",RMS +2800 LPRINT"Enter the RMS value, in volts" +2810 LPRINT"RMS=";RMS;"volts" +2820 LET PEAK=(RMS*1.414):PRINT"PEAK=";(RMS*1.414);"volts" +2830 LPRINT"PEAK=";(RMS*1.414);"volts" +2840 PRINT:LPRINT +2850 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +2860 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +2870 IF ANS$="Y" THEN 2770 +2875 PRINT:LPRINT +2880 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +2890 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +2900 IF ANS$="Y" THEN 10 +2910 GOTO 10020 +2920 PRINT:LPRINT +2930 PRINT"Calculate RMS VOLTAGE, given a value in PEAK VOLTS" +2940 LPRINT"Calculate RMS VOLTAGE, given a value in PEAK VOLTS" +2945 PRINT:LPRINT +2950 INPUT"Enter the PEAK value, in volts AC:",PEAK +2960 LPRINT"PEAK VOLTS=";PEAK +2970 LET RMS=(.707*PEAK):PRINT"RMS=";(.707*PEAK);"volts AC" +2980 LPRINT"RMS=";(.707*PEAK);"volts AC" +2990 PRINT:LPRINT +3000 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +3010 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +3020 IF ANS$="Y" THEN 2930 +3025 PRINT:LPRINT +3030 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +3040 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +3050 IF ANS$="Y" THEN 10 +3060 GOTO 10020 +3065 PRINT:LPRINT +3070 PRINT"Calculate INDUCTIVE REACTANCE (XL), given FREQUENCY and INDUCTANCE" +3080 LPRINT"Calculate INDUCTIVE REACTANCE(XL), given FREQUENCY and INDUCTANCE" +3090 PRINT:LPRINT +3100 INPUT"Enter FREQUENCY (F), in Hertz:",FREQ +3110 LPRINT"Enter FREQUENCY (F), in Hertz" +3120 LPRINT"FREQUENCY=";FREQ;"Hertz +3130 INPUT"Now enter the value for INDUCTANCE (L), in henrys:",L +3140 LPRINT"Now enter the value for INDUCTANCE (L), in henrys" +3150 LPRINT"INDUCTANCE=";L;"henrys" +3160 LET XL=(2*3.1416)*FREQ*L:PRINT"XL=";(2*3.1416)*FREQ*L;"ohms" +3170 LPRINT"INDUCTIVE REACTANCE (XL)=";(2*3.1416)*FREQ*L;"ohms" +3180 PRINT:LPRINT +3190 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +3200 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +3210 IF ANS$="Y" THEN 3070 +3215 PRINT:LPRINT +3220 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +3230 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +3240 IF ANS$="Y" THEN 10 +3245 GOTO 10020 +3250 PRINT:LPRINT +3260 PRINT"Calculate CAPACITIVE REACTANCE (XC), given FREQ(F) and CAP(C)" +3270 LPRINT"Calculate CAPACITIVE REACTANCE (XC), given FREQ(F) and CAP(C)" +3275 PRINT:LPRINT +3280 INPUT"Enter the value for FREQ(F), in Hertz:",F +3290 LPRINT"FREQ(F)=";F;"Hertz" +3300 INPUT"Now enter the value for CAP(C), in mfd:",C +3305 LPRINT"Now enter the value for CAP(C), in mfd" +3310 LPRINT"CAP(C)=";C;"mfd" +3320 PRINT:LPRINT +3330 LET XC=(1)/((2*3.1416)*F*C):PRINT"XC=";(1)/((2*3.1416)*F*C);"ohms" +3340 LPRINT"CAPACITIVE REACTANCE(XC)=";(1)/((2*3.1416)*F*C);"ohms" +3350 PRINT:LPRINT +3360 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +3370 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +3380 IF ANS$="Y" THEN 3260 +3385 PRINT:LPRINT +3390 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +3400 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +3410 IF ANS$="Y" THEN 10 +3415 GOTO 10020 +3420 PRINT:LPRINT +3430 PRINT"Calculate IMPEDANCE(Z) of a series circuit, given values of" +3435 PRINT"RES(R), CAPACITIVE REACTANCE(XC) and INDUCTIVE REACTANCE(XL)" +3440 LPRINT"Calculate IMPEDANCE(Z) of a series circuit, given values of" +3445 LPRINT"RES(R), CAPACITIVE REACTANCE(XC) and INDUCTIVE REACTANCE(XL)" +3446 PRINT:LPRINT +3450 INPUT"Enter the value for RESISTANCE(R), in ohms:",R +3460 LPRINT"Enter the value for RESISTANCE(R), in ohms" +3470 INPUT"Enter the value for CAPACITIVE REACTANCE(XC), in ohms:",XC +3480 LPRINT"Enter the value for CAPACITIVE REACTANCE(XC), in ohms" +3490 INPUT"Enter the value for INDUCTIVE REACTANCE(XL), in ohms:",XL +3500 LPRINT"Enter the value for INDUCTIVE REACTANCE(XL), in ohms" +3510 PRINT:LPRINT +3520 LPRINT"RESISTANCE(R)=";R;"ohms" +3530 LPRINT"CAPACITIVE REACTANCE(XC)=";XC;"ohms" +3540 LPRINT"INDUCTIVE REACTANCE(XL)=";XL;"ohms" +3550 PRINT:LPRINT +3560 LET Z=SQR(R^2+((XL-XC)^2)) +3570 PRINT"IMPEDANCE(Z)=";SQR(R^2+((XL-XC)^2));"ohms" +3580 LPRINT"IMPEDANCE(Z)=";SQR(R^2+((XL-XC)^2));"ohms" +3590 PRINT:LPRINT +3600 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +3610 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +3620 IF ANS$="Y" THEN 3430 +3625 PRINT:LPRINT +3630 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +3640 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +3650 IF ANS$="Y" THEN 10 +3660 GOTO 10020 +3670 PRINT:LPRINT +3680 PRINT"Calculate IMPEDANCE (Z) of a parallel circuit" +3690 LPRINT"Calculate IMPEDANCE (Z) of a parallel circuit" +3700 PRINT:LPRINT +3710 INPUT"Enter the value of L, in henrys:",L +3720 LPRINT"Enter the value of L, in henrys" +3730 INPUT"Enter the value for FREQ (F), in Hertz:",F +3740 LPRINT"Enter the value for FREQ (F), in Hertz" +3750 INPUT"Now enter the value for RESISTANCE (R) in ohms:",R +3760 LPRINT"Now enter the value for RESISTANCE (R), in ohms" +3765 LPRINT"INDUCTANCE (L)=";L;"henrys" +3770 LPRINT"FREQ (F)=";F;" Hertz" +3775 LPRINT"RESISTANCE (R)=";R;"ohms" +3776 PRINT:LPRINT +3780 LET Z=((2*3.1416*F*L)^2)/(R) +3790 PRINT"IMPEDANCE (Z)=";((2*3.1416*F*L)^2)/(R);"ohms" +3800 LPRINT"IMPEDANCE (Z)=";((2*3.1416*F*L)^2)/(R);"ohms" +3810 PRINT"Do you wish to do this calculation again? (Y/N)":INPUT ANS$ +3820 LPRINT"Do you wish to do this calculation again? (Y/N)":LPRINT ANS$ +3830 IF ANS$="Y" THEN 3680 +3840 PRINT:LPRINT +3850 PRINT"Do you wish to return to the menu? (Y/N)":INPUT ANS$ +3860 LPRINT"Do you wish to return to the menu? (Y/N)":LPRINT ANS$ +3870 IF ANS$="Y" THEN 10 +3880 GOTO 10020 +3890 PRINT:LPRINT +10020 PRINT"Glad to have been of service! BYE!! +10030 LPRINT"Glad to have been of service! BYE!! diff --git a/cpm/poker.txt b/cpm/poker.txt new file mode 100644 index 0000000..d1b5597 --- /dev/null +++ b/cpm/poker.txt @@ -0,0 +1,418 @@ +0 RANDOMIZE +1 WIDTH 80:PRINT CHR$(26) +2 PRINT TAB(33);"POKER":PRINT +4 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +6 PRINT: PRINT: PRINT +10 DIM A(50),B(15) +20 DEF FNA(X)=INT(10*RND(1)) +30 DEF FNB(X)=X-100*INT(X/100) +40 PRINT "WELCOME TO THE CASINO. WE EACH HAVE $200." +50 PRINT "I WILL OPEN THE BETTING BEFORE THE DRAW; YOU OPEN AFTER." +60 PRINT "TO FOLD BET 0; TO CHECK BET .5.":PRINT +70 PRINT "ENOUGH TALK -- LET'S GET DOWN TO BUSINESS." +80 PRINT +90 LET O=1 +100 LET C=200 +110 LET S=200 +120 LET P=0 +130 REM +140 PRINT +150 IF C<=5 THEN 3670 +160 PRINT "THE ANTE IS $5. I WILL DEAL:" +170 PRINT +180 IF S>5 THEN 200 +190 GOSUB 3830 +200 LET P=P+10 +210 LET S=S-5 +220 LET C=C-5 +230 FOR Z=1 TO 10 +240 GOSUB 1740 +250 NEXT Z +260 PRINT "YOUR HAND:":PRINT "---------" +270 N=1 +280 GOSUB 1850 +290 N=6 +300 I=2 +310 GOSUB 2170 +320 PRINT +330 IF I<>6 THEN 470 +340 IF FNA(0)<=7 THEN 370 +350 LET X=11100 +360 GOTO 420 +370 IF FNA(0)<=7 THEN 400 +380 LET X=11110 +390 GOTO 420 +400 IF FNA(0)>=1 THEN 450 +410 X=11111 +420 I=7 +430 Z=23 +440 GOTO 580 +450 Z=1 +460 GOTO 510 +470 IF U>=13 THEN 540 +480 IF FNA(0)>=2 THEN 500 +490 GOTO 420 +500 Z=0 +510 K=0 +520 PRINT "I CHECK." +530 GOTO 620 +540 IF U<=16 THEN 570 +550 Z=2 +560 IF FNA(0)>=1 THEN 580 +570 Z=35 +580 V=Z+FNA(0) +590 GOSUB 3480 +600 PRINT "I'LL OPEN WITH $";V;CHR$(8);"." +610 K=V +620 GOSUB 3050 +630 GOSUB 650 +640 GOTO 820 +650 IF I<>3 THEN 760 +660 PRINT +670 PRINT "I WIN." +680 C=C+P +690 PRINT:PRINT "NOW I HAVE $"C"AND YOU HAVE $"S;CHR$(8);"." +700 PRINT:PRINT "DO YOU WISH TO CONTINUE"; +710 INPUT H$ +720 IF LEFT$(H$,1)="Y" THEN 120 +730 IF LEFT$(H$,1)="N" THEN 4100 +740 PRINT "ANSWER YES OR NO, PLEASE." +750 GOTO 700 +760 IF I<>4 THEN 810 +770 PRINT +780 PRINT "YOU WIN." +790 S=S+P +800 GOTO 690 +810 RETURN +820 PRINT +830 PRINT "NOW WE DRAW -- HOW MANY CARDS DO YOU WANT"; +840 INPUT T +850 IF T=0 THEN 980 +860 Z=10 +870 IF T<4 THEN 900 +880 PRINT "YOU CAN'T DRAW MORE THAN THREE CARDS." +890 GOTO 840 +900 IF T=1 THEN PRINT "WHAT IS ITS NUMBER:" ELSE PRINT"WHAT ARE THEIR NUMBERS:" +910 FOR Q=1 TO T +920 INPUT U +930 GOSUB 1730 +940 NEXT Q +950 PRINT:PRINT "YOUR NEW HAND:":PRINT "-------------" +960 N=1 +970 GOSUB 1850 +980 Z=10+T +990 FOR U=6 TO 10 +1000 IF INT(X/10^(U-6))<>10*INT(X/10^(U-5)) THEN 1020 +1010 GOSUB 1730 +1020 NEXT U +1030 PRINT +1040 PRINT "I AM TAKING"Z-10-T"CARD"; +1050 IF Z=11+T THEN PRINT ".":GOTO 1090 +1060 PRINT "S." +1070 PRINT +1080 GOTO 1100 +1090 PRINT +1100 N=6 +1110 V=I +1120 I=1 +1130 GOSUB 2170 +1140 B=U +1150 M=D +1160 IF V<>7 THEN 1190 +1170 Z=28 +1180 GOTO 1330 +1190 IF I<>6 THEN 1220 +1200 Z=1 +1210 GOTO 1330 +1220 IF U>=13 THEN 1270 +1230 Z=2 +1240 IF FNA(0)<>6 THEN 1260 +1250 Z=19 +1260 GOTO 1330 +1270 IF U>=16 THEN 1320 +1280 Z=19 +1290 IF FNA(0)<>8 THEN 1310 +1300 Z=11 +1310 GOTO 1330 +1320 Z=2 +1330 K=0 +1340 GOSUB 3050 +1350 IF T<>.5 THEN 1450 +1360 IF V=7 THEN 1400 +1370 IF I<>6 THEN 1400 +1380 PRINT "I'LL CHECK." +1390 GOTO 1460 +1400 V=Z+FNA(0) +1410 GOSUB 3480 +1420 PRINT "I'LL BET $";V;CHR$(8);"." +1430 K=V +1440 GOSUB 3060 +1450 GOSUB 650 +1460 PRINT +1470 PRINT "NOW WE COMPARE HANDS:" +1480 J$=H$ +1490 K$=I$ +1500 PRINT:PRINT "MY HAND:":PRINT "-------" +1510 N=6 +1520 GOSUB 1850 +1530 N=1 +1540 GOSUB 2170 +1550 PRINT +1560 PRINT "YOU HAVE "; +1570 K=D +1580 GOSUB 3690 +1590 H$=J$ +1600 I$=K$ +1610 K=M +1620 PRINT "AND I HAVE "; +1630 GOSUB 3690 +1640 IF B>U THEN 670 +1650 IF U>B THEN 780 +1660 IF H$="A FLUS" THEN 1700 +1662 IF FNB(M)FNB(D) THEN 670 +1670 PRINT "THE HAND IS DRAWN." +1680 PRINT "ALL $"P"REMAINS IN THE POT." +1690 GOTO 140 +1700 IF FNB(M)>FNB(D) THEN 670 +1710 IF FNB(D)>FNB(M) THEN 780 +1720 GOTO 1670 +1730 Z=Z+1 +1740 A(Z)=100*INT(4*RND(1))+INT(100*RND(1)) +1750 IF INT(A(Z)/100)>3 THEN 1740 +1760 IF A(Z)-100*INT(A(Z)/100)>12 THEN 1740 +1765 IF Z=1 THEN 1840 +1770 FOR K=1 TO Z-1 +1780 IF A(Z)=A(K) THEN 1740 +1790 NEXT K +1800 IF Z<=10 THEN 1840 +1810 N=A(U) +1820 A(U)=A(Z) +1830 A(Z)=N +1840 RETURN +1850 FOR Z=N TO N+4 +1860 PRINT USING "##";Z;:PRINT " --"; +1870 GOSUB 1950 +1880 PRINT " OF"; +1890 GOSUB 2070 +1900 ' IF Z/2<>INT(Z/2) THEN 1920 +1910 PRINT +1920 NEXT Z +1930 PRINT +1940 RETURN +1950 K=FNB(A(Z)) +1960 IF K<>9 THEN 1980 +1970 PRINT " JACK"; +1980 IF K<>10 THEN 2000 +1990 PRINT " QUEEN"; +2000 IF K<>11 THEN 2020 +2010 PRINT " KING"; +2020 IF K<>12 THEN 2040 +2030 PRINT " ACE"; +2040 IF K>=9 THEN 2060 +2050 PRINT K+2;CHR$(8); +2060 RETURN +2070 K=INT(A(Z)/100) +2080 IF K<>0 THEN 2100 +2090 PRINT " CLUBS", +2100 IF K<>1 THEN 2120 +2110 PRINT " DIAMONDS", +2120 IF K<>2 THEN 2140 +2130 PRINT " HEARTS", +2140 IF K<>3 THEN 2160 +2150 PRINT " SPADES", +2160 RETURN +2170 U=0 +2180 FOR Z=N TO N+4 +2190 B(Z)=FNB(A(Z)) +2200 IF Z=N+4 THEN 2230 +2210 IF INT(A(Z)/100)<>INT(A(Z+1)/100) THEN 2230 +2220 U=U+1 +2230 NEXT Z +2240 IF U<>4 THEN 2310 +2250 X=11111 +2260 D=A(N) +2270 H$="A FLUS" +2280 I$="H IN" +2290 U=15 +2300 RETURN +2310 FOR Z=N TO N+3 +2320 FOR K=Z+1 TO N+4 +2330 IF B(Z)<=B(K) THEN 2390 +2340 X=A(Z) +2350 A(Z)=A(K) +2360 B(Z)=B(K) +2370 A(K)=X +2380 B(K)=A(K)-100*INT(A(K)/100) +2390 NEXT K +2400 NEXT Z +2410 X=0 +2420 FOR Z=N TO N+3 +2430 IF B(Z)<>B(Z+1) THEN 2470 +2440 X=X+11*10^(Z-N) +2450 D=A(Z) +2460 GOSUB 2760 +2470 NEXT Z +2480 IF X<>0 THEN 2620 +2490 IF B(N)+3<>B(N+3) THEN 2520 +2500 X=1111 +2510 U=10 +2520 IF B(N+1)+3<>B(N+4) THEN 2620 +2530 IF U<>10 THEN 2600 +2540 U=14 +2550 H$="STRAIG" +2560 I$="HT" +2570 X=11111 +2580 D=A(N+4) +2590 RETURN +2600 U=10 +2610 X=11110 +2620 IF U>=10 THEN 2690 +2630 D=A(N+4) +2640 H$="SCHMAL" +2650 I$="TZ, " +2660 U=9 +2670 X=11000 +2680 GOTO 2740 +2690 IF U<>10 THEN 2720 +2700 IF I=1 THEN 2740 +2710 GOTO 2750 +2720 IF U>12 THEN 2750 +2730 IF FNB(D)>6 THEN 2750 +2740 I=6 +2750 RETURN +2760 IF U>=11 THEN 2810 +2770 U=11 +2780 H$="A PAIR" +2790 I$=" OF " +2800 RETURN +2810 IF U<>11 THEN 2910 +2820 IF B(Z)<>B(Z-1) THEN 2870 +2830 H$="THREE" +2840 I$=" " +2850 U=13 +2860 RETURN +2870 H$="TWO P" +2880 I$="AIR, " +2890 U=12 +2900 RETURN +2910 IF U>12 THEN 2960 +2920 U=16 +2930 H$="FULL H" +2940 I$="OUSE, " +2950 RETURN +2960 IF B(Z)<>B(Z-1) THEN 3010 +2970 U=17 +2980 H$="FOUR" +2990 I$=" " +3000 RETURN +3010 U=16 +3020 H$="FULL H" +3030 I$="OUSE, " +3040 RETURN +3050 G=0 +3060 PRINT:PRINT "WHAT IS YOUR BET"; +3070 INPUT T +3080 IF T-INT(T)=0 THEN 3140 +3090 IF K<>0 THEN 3120 +3100 IF G<>0 THEN 3120 +3110 IF T=.5 THEN 3410 +3120 PRINT "NO SMALL CHANGE, PLEASE." +3130 GOTO 3060 +3140 IF S-G-T>=0 THEN 3170 +3150 GOSUB 3830 +3160 GOTO 3060 +3170 IF T<>0 THEN 3200 +3180 I=3 +3190 GOTO 3380 +3200 IF G+T>=K THEN 3230 +3210 PRINT "IF YOU CAN'T SEE MY BET, THEN FOLD." +3220 GOTO 3060 +3230 G=G+T +3240 IF G=K THEN 3380 +3250 IF Z<>1 THEN 3420 +3260 IF G>5 THEN 3300 +3270 IF Z>=2 THEN 3350 +3280 V=5 +3290 GOTO 3420 +3300 IF Z=1 THEN 3320 +3310 IF T<=25 THEN 3350 +3320 I=4 +3330 PRINT "I FOLD." +3340 RETURN +3350 IF Z=2 THEN 3430 +3360 PRINT "I'LL SEE YOU." +3370 K=G +3380 S=S-G +3390 C=C-K +3400 P=P+G+K +3410 RETURN +3420 IF G>3*Z THEN 3350 +3430 V=G-K+FNA(0) +3440 GOSUB 3480 +3450 PRINT "I'LL SEE YOU, AND RAISE YOU"V;CHR$(8);"." +3460 K=G+V +3470 GOTO 3060 +3480 IF C-G-V>=0 THEN 3660 +3490 IF G<>0 THEN 3520 +3500 V=C +3510 RETURN +3520 IF C-G>=0 THEN 3360 +3530 IF (O/2)<>INT(O/2) THEN 3600 +3540 PRINT "WOULD YOU LIKE TO BUY BACK YOUR WATCH FOR $50"; +3550 INPUT J$ +3560 IF LEFT$(J$,1)="N" THEN 3600 +3570 C=C+50 +3580 O=O/2 +3590 RETURN +3600 IF O/3<>INT(O/3) THEN 3670 +3610 PRINT "WOULD YOU LIKE TO BUY BACK YOUR TIE TACK FOR $50"; +3620 INPUT J$ +3630 IF LEFT$(J$,1)="N" THEN 3670 +3640 C=C+50 +3650 O=O/3 +3660 RETURN +3670 PRINT "I'M BUSTED. CONGRATULATIONS!" +3680 STOP +3690 PRINT H$;I$; +3700 IF H$<>"A FLUS" THEN 3750 +3710 K=INT(K/100) +3720 GOSUB 2080 +3730 PRINT +3740 RETURN +3750 K=FNB(K) +3760 GOSUB 1960 +3770 IF H$="SCHMAL" THEN 3790 +3780 IF H$<>"STRAIG" THEN 3810 +3790 PRINT " HIGH" +3800 RETURN +3810 PRINT "'S" +3820 RETURN +3830 PRINT +3840 PRINT "YOU CAN'T BET WITH WHAT YOU HAVEN'T GOT." +3850 IF O/2=INT(O/2) THEN 3970 +3860 PRINT "WOULD YOU LIKE TO SELL YOUR WATCH"; +3870 INPUT J$ +3880 IF LEFT$(J$,1)="N" THEN 3970 +3890 IF FNA(0)>=7 THEN 3930 +3900 PRINT "I'LL GIVE YOU $75 FOR IT." +3910 S=S+75 +3920 GOTO 3950 +3930 PRINT "THAT'S A PRETTY CRUMMY WATCH - I'LL GIVE YOU $25." +3940 S=S+25 +3950 O=O*2 +3960 RETURN +3970 IF O/3<>INT(O/3) THEN 4090 +3980 PRINT "WILL YOU PART WITH THAT DIAMOND TIE TACK": +3990 INPUT J$ +4000 IF LEFT$(J$,1)="N" THEN 4080 +4010 IF FNA(0)>=6 THEN 4050 +4020 PRINT "YOU ARE NOW $100 RICHER." +4030 S=S+100 +4040 GOTO 4070 +4050 PRINT "IT'S PASTE. $25." +4060 S=S+25 +4070 O=O*3 +4080 RETURN +4090 PRINT "YOUR WAD IS SHOT. SO LONG, SUCKER!" +4100 RUN "MENU" diff --git a/cpm/profile.bas b/cpm/profile.bas new file mode 100644 index 0000000..c90d265 --- /dev/null +++ b/cpm/profile.bas @@ -0,0 +1,3 @@ +OPTION DISABLE FUNCTION PI +OPTION DISABLE FUNCTION RAD +REM OPTION DISABLE FUNCTION COMMAND$ diff --git a/cpm/rc5.txt b/cpm/rc5.txt new file mode 100644 index 0000000..a18b342 --- /dev/null +++ b/cpm/rc5.txt @@ -0,0 +1,108 @@ +10 REM ****************************************************************** +20 REM * * +30 REM * PROGRAM NAME: RC5% * +40 REM * * +50 REM * COMPUTES THE NEAREST STANDARD VALUE OF 5% RESISTORS OR * +60 REM * CAPACITORS GIVEN A CALCULATED VALUE INPUT * +70 REM * BY: M.F. KAVANAUGH--BRADLEY UNIVERSITY * +80 REM * * +90 REM ****************************************************************** +100 PRINT:PRINT " DO YOU WISH:" +110 PRINT " (R)ESISTOR (1 OHM-100 MEG)" +120 PRINT " (C)APACITOR (1PF-1000 MFD)" +130 PRINT " (E)XIT" +140 PRINT:INPUT I$ +150 IF I$="R" GOTO 500 +160 IF I$="C" GOTO 1000 +170 IF I$="E" GOTO 9000 ELSE GOTO 100 +500 REM +510 REM ********************* RESISTORS ********************************* +520 REM +530 T$="RESISTORS":GOSUB 1530 +540 PRINT "ENTER THE RESISTOR VALUES USING THE POWER OF TEN FORMAT." +550 PRINT "ERRORS MAY BE CORRECTED AFTER ALL VALUES HAVE BEEN ENTERED." +560 FOR I=1 TO N:GOSUB 1640:PRINT:NEXT I +561 FOR I=1 TO N: V$(I)="":NEXT I +562 GOSUB 1570 +590 FOR I= 1 TO N +600 IF V(I)>=1E+06 THEN V(I)=V(I)/1E+06:V$(I)="M":GOTO 630 +610 IF V(I)>=1000! THEN V(I)=V(I)/1000:V$(I)="K":GOTO 630 +620 V$(I)="OHMS" +630 NEXT I +632 GOSUB 1920 +640 REM ***** DISPLAY STANDARD VALUE *************** +650 GOSUB 1750:GOTO 1820 +1000 REM +1010 REM ******************* CAPACITORS ********************************** +1020 REM +1030 T$="CAPACITORS":GOSUB 1530 +1040 PRINT "ENTER THE VALUE OF CAPACITOR,IN MFD.,USING THE POWER OF TEN FORMAT." +1050 PRINT "ERRORS MAY BE CORRECTED AFTER ALL THE VALUES HAVE BEEN ENTERED." +1060 FOR I=1 TO N:GOSUB 1640:PRINT:NEXT I +1061 FOR I= 1 TO N:V$(I)="":NEXT I +1062 GOSUB 1570 +1090 FOR I=1 TO N:V(I)=V(I)*1E+06:NEXT I +1120 FOR I=1 TO N +1130 IF V(I)>=1000! THEN V(I)=V(I)/1E+06:V$(I)="MFD":GOTO 1150 +1140 V$(I)="PF" +1150 NEXT I +1152 GOSUB 1920 +1160 REM ***** DISPLAY STANDARD VALUES ************* +1170 GOSUB 1750 +1180 GOTO 1820 +1500 REM +1510 REM ******************** ENTER VALUES ******************************* +1520 REM +1530 PRINT:PRINT "NUMBER OF ";T$;" TO BE ENTERED:":INPUT N +1540 IF N<=100 GOTO 1550 +1545 PRINT "100 MAX":GOTO 1530 +1550 PRINT:RETURN +1560 REM ******** CHECK INPUT VALUES *************** +1570 GOSUB 1750 +1580 INPUT "ARE THESE VALUES CORRECT (Y/N)";A$ +1590 IF A$="Y" THEN RETURN +1600 IF A$="N" GOTO 1610 ELSE 1580 +1610 INPUT "ENTER COMPONENT VALUE TO BE CHANGED";I:PRINT +1620 GOSUB 1640:GOTO 1570 +1630 REM ******* VALUE AND RANGE TEST ************** +1640 PRINT I$;I;"=":INPUT; V(I) +1650 IF I$="C" GOTO 1690 +1660 IF V(I)<1 GOTO 1720 +1670 IF V(I)>1E+08 GOTO 1730 +1680 RETURN +1690 IF V(I)<.000001 GOTO 1720 +1700 IF V(I)>1000! GOTO 1730 +1710 RETURN +1720 PRINT:PRINT I$;I;" IS TOO SMALL":PRINT:GOTO 1640 +1730 PRINT:PRINT I$;I;" IS TOO LARGE":PRINT:GOTO 1640 +1740 REM ******** PUT VALUES ON TERMINAL *********** +1750 PRINT:FOR I=1 TO N STEP 4 +1760 IF I<=N THEN PRINT TAB(2);I$;I;"=";V(I);V$(I); +1770 IF (I+1)<=N THEN PRINT TAB(20);I$;I+1;"=";V(I+1);V$(I+1); +1780 IF (I+2)<=N THEN PRINT TAB(38);I$;I+2;"=";V(I+2);V$(I+2); +1790 IF (I+3)<=N THEN PRINT TAB(56);I$;I+3;"=";V(I+3);V$(I+3) +1800 NEXT I:PRINT:RETURN +1810 REM ******* PUT VALUES ON A PRINTER *********** +1820 PRINT:INPUT "DO YOU WANT HARDCOPY (Y/N)";HC$ +1830 IF HC$="N" GOTO 100 +1840 IF HC$<>"Y" GOTO 1820 +1850 LPRINT: FOR I=1 TO N STEP 4 +1860 IF I<=N THEN LPRINT TAB(2);I$;I;"=";V(I);V$(I); +1870 IF (I+1)<=N THEN LPRINT TAB(20);I$;I+1;"=";V(I+1);V$(I+1); +1880 IF (I+2)<=N THEN LPRINT TAB(38);I$;I+2;"=";V(I+2);V$(I+2); +1890 IF (I+3)<=N THEN LPRINT TAB(56);I$;I+3;"=";V(I+3);V$(I+3) +1900 NEXT I:LPRINT:RETURN +1910 REM ******* FIND STANDARD VALUES ************** +1920 PRINT:PRINT " CALCULATING STANDARD VALUES" +1930 FOR I=1 TO N:L=1 +1940 IF V(I)>10 THEN L=L*10:V(I)=V(I)/10:GOTO 1940 +1945 IF V(I)<1 THEN L=L/10:V(I)=V(I)*10:GOTO 1945 +1950 READ D2 +1960 D1=D2:READ D2:IF V(I)>D2 GOTO 1960 +1970 MD=(D1+D2)/2:IF V(I) TO GO ON";X +1330 PRINT "TYPES OF BETS" +1340 PRINT +1350 PRINT "THE NUMBERS 1 TO 36 SIGNIFY A STRAIGHT BET" +1360 PRINT "ON THAT NUMBER" +1370 PRINT "THESE PAY OFF 35:1" +1380 PRINT +1390 PRINT "THE 2:1 BETS ARE:" +1400 PRINT " 37) 1-12 40) FIRST COLUMN" +1410 PRINT " 38) 13-24 41) SECOND COLUMN" +1420 PRINT " 39) 25-36 42) THIRD COLUMN" +1430 PRINT +1440 PRINT "THE EVEN MONEY BETS ARE:" +1450 PRINT " 43) 1-18 46) ODD" +1460 PRINT " 44) 19-36 47) RED" +1470 PRINT " 45) EVEN 48) BLACK" +1480 PRINT +1490 PRINT " 49)0 AND 50)00 PAY OFF 35:1" +1500 PRINT " NOTE: 0 AND 00 DO NOT COUNT UNDER ANY" +1510 PRINT " BETS EXCEPT THEIR OWN" +1520 PRINT :INPUT "PRESS TO GO ON";X +1530 PRINT "WHEN I ASK FOR EACH BET,TYPE THE NUMBER" +1540 PRINT "AND THE AMOUNT,SEPERATED BY A COMMA" +1550 PRINT "FOR EXAMPLE:TO BET $500 ON BLACK,TYPE 48,500" +1560 PRINT "WHEN I ASK FOR A BET" +1570 PRINT +1580 PRINT "MINIMUM BET IS $5,MAXIMUM IS $500" +1590 PRINT +1600 REM-PROGRAM BEGINS HERE +1610 REM-TYPE OF BET(NUMBER) ODDS +1620 REM +1630 DIM B(100),C(100),T(100),X(38) +1640 DIM A(50) +1650 FOR I=1 TO 38: X(I)=0: NEXT I: REM MAT X=ZER +1660 P=1000 +1670 D=100000! +1680 PRINT "HOW MANY BETS"; +1690 INPUT Y +1700 IF Y<1 OR Y<>INT(Y) THEN 1680 +1710 FOR I=1 TO 50: A(I)=0: NEXT I: REM MAT A=ZER +1720 FOR C=1 TO Y +1730 PRINT "NUMBER";C; +1740 INPUT X,Z +1750 B(C)=Z +1760 T(C)=X +1770 IF X<1 OR X>50 OR X<>INT(X) THEN 1730 +1780 IF Z<1 OR Z<>INT(Z) THEN 1730 +1790 IF Z<5 OR Z>500 THEN 1730 +1800 IF A(X)=0 THEN 1830 +1810 PRINT "YOU MADE THAT BET ONCE ALREADY,DUM-DUM" +1820 GOTO 1730 +1830 A(X)=1 +1840 NEXT C +1850 PRINT "SPINNING" +1860 PRINT +1870 PRINT +1880 S=INT(RND(1)*100) +1890 IF S=0 OR S>38 THEN 1880 +1900 X(S)=X(S)+1 +1910 IF S<37 THEN 1970 +1920 IF S=37 THEN 1950 +1930 PRINT "00" +1940 GOTO 2070 +1950 PRINT "0" +1960 GOTO 2070 +1970 RESTORE +1980 FOR I1=1 TO 18 +1990 READ R +2000 IF R=S THEN 2050 +2010 NEXT I1 +2020 A$="BLACK" +2030 PRINT S;A$ +2040 GOTO 2070 +2050 A$="RED" +2060 GOTO 2030 +2070 PRINT +2080 FOR C=1 TO Y +2090 IF T(C)<37 THEN 2760 +2100 ON T(C)-36 GOTO 2140,2240,2270,2300,2350,2400,2450,2520,2550 +2110 ON T(C)-45 GOTO 2580,2610,2680 +2120 GOTO 2760 +2130 STOP +2140 REM 1-12(37) 2:1 +2150 IF S <= 12 THEN 2200 +2160 PRINT "YOU LOSE";B(C);"DOLLARS ON BET ";C +2170 D=D+B(C) +2180 P=P-B(C) +2190 GOTO 2230 +2200 PRINT "YOU WIN ";B(C)*2;"DOLLARS ON BET "C +2210 D=D-B(C)*2 +2220 P=P+B(C)*2 +2230 GOTO 2860 +2240 REM 13-24(38) 2:1 +2250 IF S>12 AND S<25 THEN 2200 +2260 GOTO 2160 +2270 REM 25-36(39) 2:1 +2280 IF S>24 AND S<37 THEN 2200 +2290 GOTO 2160 +2300 REM FIRST COLUMN(40) 2:1 +2310 FOR I=1 TO 34 STEP 3 +2320 IF S=I THEN 2200 +2330 NEXT I +2340 GOTO 2160 +2350 REM SECOND COLUMN(41) 2:1 +2360 FOR I=2 TO 35 STEP 3 +2370 IF S=I THEN 2200 +2380 NEXT I +2390 GOTO 2160 +2400 REM THIRD COLUMN(42) 2:1 +2410 FOR I=3 TO 36 STEP 3 +2420 IF S=I THEN 2200 +2430 NEXT I +2440 GOTO 2160 +2450 REM 1-18(43) 1:1 +2460 IF S<19 THEN 2480 +2470 GOTO 2160 +2480 PRINT "YOU WIN ";B(C);"DOLLARS ON BET ";C +2490 D=D-B(C) +2500 P=P+B(C) +2510 GOTO 2860 +2520 REM 19-36(44) 1:1 +2530 IF S<37 AND S>18 THEN 2480 +2540 GOTO 2160 +2550 REM EVEN(45) 1:1 +2560 IF S/2=INT(S/2) AND S<37 THEN 2480 +2570 GOTO 2160 +2580 REM ODD(46) 1:1 +2590 IF S/2<>INT(S/2) AND S<37 THEN 2480 +2600 GOTO 2160 +2610 REM RED(47) 1:1 +2620 RESTORE +2630 FOR I=1 TO 18 +2640 READ R +2650 IF S=R THEN 2480 +2660 NEXT I +2670 GOTO 2160 +2680 REM BLACK(48) 1:1 +2690 RESTORE +2700 FOR I=1 TO 18 +2710 READ R +2720 IF S=R THEN 2160 +2730 NEXT I +2740 IF S>36 THEN 2160 +2750 GOTO 2480 +2760 REM--1TO36,0,00(1-36,49,50)35:1 +2770 IF T(C)<49 THEN 2810 +2780 IF T(C)=49 AND S=37 THEN 2830 +2790 IF T(C)=50 AND S=38 THEN 2830 +2800 GOTO 2160 +2810 IF T(C)=S THEN 2830 +2820 GOTO 2160 +2830 PRINT "YOU WIN ";B(C)*35;"DOLLARS ON BET";C +2840 D=D-B(C)*35 +2850 P=P+B(C)*35 +2860 NEXT C +2870 PRINT +2880 PRINT "TOTALS:","ME","YOU" +2890 PRINT " ",D,P +2900 IF P>0 THEN 2930 +2910 PRINT "OOPS! YOU JUST SPENT YOUR LAST DOLLAR" +2920 GOTO 3240 +2930 IF D>0 THEN 2970 +2940 PRINT "YOU BROKE THE HOUSE!" +2950 P=101000! +2960 GOTO 3010 +2970 PRINT "AGAIN"; +2980 INPUT Y$ +2990 IF LEFT$(Y$,1)="Y" THEN 1680 +3000 DATA 1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36 +3010 IF P<1 THEN 3240 +3020 PRINT "TO WHOM SHALL I MAKE THE CHECK"; +3030 INPUT B$ +3040 PRINT +3050 FOR I=1 TO 62: PRINT "-";: NEXT I: REM PRINT 72 DASHES +3060 PRINT TAB(50)"CHECK NO. ";INT(RND(1)*100) +3070 PRINT +3080 GOSUB 3280 +3090 PRINT TAB(40);M$ +3100 PRINT +3110 PRINT +3120 PRINT "PAY TO THE ORDER OF-----";B$;"-----$ "; +3130 PRINT P +3140 PRINT +3150 PRINT +3160 PRINT TAB(10),"THE MEMORY BANK OF VIRGINIA" +3170 PRINT +3180 PRINT TAB(40),"THE COMPUTER" +3190 PRINT TAB(40)"----------X-----" +3200 PRINT +3210 FOR I=1 TO 62: PRINT "-";: NEXT I +3220 PRINT "COME BACK SOON!" +3230 GOTO 3260 +3240 PRINT "THANKS FOR YOUR MONEY" +3250 PRINT "I'LL USE IT TO BUY A SOLID GOLD ROULETTE WHEEL" +3260 PRINT +3270 GOTO 3380 +3280 REM +3290 REM THIS ROUTINE RETURNS THE CURRENT DATE IN M$ +3300 REM IF YOU HAVE SYSTEM FUNCTIONS TO HANDLE THIS +3310 REM THEY CAN BE USED HERE. HOWEVER IN THIS +3320 REM PROGRAM, WE JUST INPUT THE DATE AT THE START +3330 REM THE GAME +3340 REM +3350 REM THE DATE IS RETURNED IN VARIABLE M$ +3360 M$=D$+", "+E$ +3370 RETURN +3380 REM RUN"MENU +3390 SYSTEM diff --git a/cpm/rs2ms.txt b/cpm/rs2ms.txt new file mode 100644 index 0000000..0470c92 --- /dev/null +++ b/cpm/rs2ms.txt @@ -0,0 +1,136 @@ +10 DEFSTR A-D: DEFINT E-Z : Q$=CHR$(34) +11 REM MYRS2MB (v) 1.0 28 May 1983 by Ed Mahoney +12 REM ******************************************************************* +13 REM This program will convert a Radio Shack BASIC program to a +14 REM Microsoft MBASIC 5.1 program. +15 REM Instructions are given as the program runs. +16 REM INSTALLATION: The conversion process will make certain Radio Shack +17 REM statements into printable 'escape codes'. You must now the two +18 REM escape code sequences for your computer (or terminal): *********************************************************** +19 REM 1) clear the screen and home the cursor +20 CLS$=CHR$(27)+"*" : REM For the MAX-80 +22 REM CLS$=CHR$(27)+"E" : REM For the Heath +23 A1="1 CLS$=CHR$(27)+"+Q$+"*"+Q$ : REM For the MAX-80 +24 REM A1="1 CLS$=CHR$(27)+Q$+"E"+Q$ : REM For the Heath +25 REM ********************************************************************* +26 REM 2) print at a screen location (Row,Column) +27 DEF FNAT$(R9,C9)=CHR$(27)+"="+CHR$(R9+32)+CHR$(C9+32) : REM For MAX-80 +28 REM DEF FNAT$(R9,C9)=CHR$(27)+"Y"+CHR$(R9+32)+CHR$(C9+32) :REM FOR HEATH +29 A2="2 DEF FNAT$(AT%)=CHR$(27)+"+Q$+"="+Q$+"+CHR$(INT(AT%/64)+32)+CHR$((AT% MOD 64)+32)" : REM For the MAX-80 +30 REM A2="2 DEF FNAT$(AT%)=CHR$(27)+"+Q$+"Y"+Q$+"+CHR$(INT(AT%/64)+32)+CHR$((AT% MOD 64)+32)" : REM For the Heath +31 REM ******************END OF INSTALLATION****************************** +45 GOSUB 60000:PRINT CLS$;"Initializing..............." +50 SP=0:RP=0 +60 DIM Z(1000),C(130),L(130),D(130),B(9) +61 READ A: IF A="XXXX" THEN 91 +62 RP=RP+1: C(RP)=A: M=LEN(A):L(RP)=M:B="" +63 FOR I=1 TO M:V=ASC(MID$(A,I)):IF V>64 THEN B=B+CHR$(V+32) ELSE B=B+CHR$(V) +64 NEXT I:D(RP)=B +65 GOTO 61 +70 REM +71 REM RESERVED WORDS +72 REM +73 DATA ABS,AND,ASC,AS,ATN,AUTO,CDBL,CHR$,CINT,CLEAR,CLOSE,CONT +74 DATA COS,CSNG,CVD,CVI,CVS,DATA +75 DATA DEFDBL,DEFINT,DEFSNG,DEFSTR,DEFUSR,DEF,DELETE,DIM +76 DATA EDIT,ELSE,END,EOF,ERL,ERR,EXP,FIELD,FILES,FOR +77 DATA FRE,GET,GOSUB,GOTO,HEX$ +78 DATA IF,IMP,INPUT,INP,INSTR,KILL,LEFT$,LEN,LET,LINE +79 DATA LIST,LLIST,LOAD,LOC,LOF,LOG,LPRINT,LSET,MERGE,MID$,MKD$,MKI$ +80 DATA MKS$,NEW,NEXT,NOT,ON,OPEN,OR,OUT +81 DATA POS,PRINT,PUT +82 DATA READ,REM,RESTORE,RESUME,RETURN,RIGHT$,RND,RSET,RUN +83 DATA SAVE,SGN,SIN,SQR,STEP,STOP,STR$,STRING$ +84 DATA TAB(,TAN,THEN,TO,TROFF,TRON +85 DATA USING,USR,VAL,VARPTR +90 DATA XXXX +91 READ A: IF A="XXXX" THEN 100 +92 QP=QP+1: B(QP)=A:GOTO 91 +95 DATA PEEK,POKE,SET(,RESET,POINT +96 DATA XXXX +100 LINE INPUT"WHAT IS RADIO SHACK PROGRAM ...... > ";R$ +110 LINE INPUT"WHAT WILL BE THE MICROSOFT PROGRAM'S NAME > ";M$ +120 OPEN"I",1,R$ +130 OPEN"O",2,M$ +132 A1=A1+" : WIDTH(64)":PRINT A1: PRINT#2,A1 +136 PRINT A2: PRINT#2,A2 +140 IF EOF(1) THEN 20000 +150 LINE INPUT#1, A +500 PRINT LL$;A;HL$ +1000 REM LOOK FOR THE RANDOM FUNCTION +1010 P=1 +1020 R=INSTR(P,A,"RND(") +1030 IF R=0 THEN 2000 +1040 V=VAL(MID$(A,R+4)) +1060 Q=INSTR(R,A,")") +1065 IF V>0 THEN 1500 +1070 A=LEFT$(A,R-1)+"RND"+MID$(A,Q+1) +1080 P=R+1:GOTO 1020 +1500 A=LEFT$(A,R-1)+"INT(RND*"+STR$(V)+"+1)"+MID$(A,Q+1):P=P+6:GOTO 1020 +2000 REM CLS TO PRINT CLS$ +2010 P=1 +2020 R=INSTR(P,A,"CLS") +2030 IF R=0 THEN 3000 +2040 A=LEFT$(A,R-1)+"PRINT CLS$;"+MID$(A,R+3): P=R+9: GOTO 2020 +3000 REM PRINT @###, +3010 P=1 +3020 R=INSTR(P,A,"PRINT@"): IF R=0 THEN R=INSTR(P,A,"PRINT @") +3030 IF R=0 THEN 4000 +3040 Q=INSTR(R,A,","):S=INSTR(R,A,"@") +3050 A=LEFT$(A,S-1)+" FNAT$("+MID$(A,S+1,Q-S-1)+");"+MID$(A,Q+1): GOTO 3020 +4000 REM WARNINGS +4005 F=0 +4010 FOR I=1 TO QP:IF INSTR(A,B(I)) THEN F=1 +4020 NEXT I +4030 IF F THEN SP=SP+1: Z(SP)=VAL(A): A=A+":REM WARNING!" +5000 REM SPACES +5010 FOR I=1 TO RP +5020 P=1 +5030 R=INSTR(P,A,C(I)): IF R=0 THEN 5500 +5035 MID$(A,R)=D(I) +5040 IF MID$(A,R-1,1)<>" " THEN A=LEFT$(A,R-1)+" "+MID$(A,R):R=R+1 +5050 R=R+L(I) +5060 IF MID$(A,R,1)<>" " THEN A=LEFT$(A,R-1)+" "+MID$(A,R) +5070 P=R:GOTO 5030 +5500 NEXT I +10000 PRINT A +11000 PRINT #2,A +15000 GOTO 140 +20000 CLOSE +30000 IF SP=0 THEN END +40000 PRINT:PRINT:PRINT"WARNING - THE FOLLOWING LINES STILL HAVE EITHER RADIO SHACK GRAPHICS":PRINT" OR HAVE EITHER PEEKS AND POKES." +40100 FOR I=1 TO SP:PRINT Z(I),:NEXT +49999 END +50000 I$=INKEY$:IF I$="" THEN 50000 ELSE RETURN +60000 PRINT CLS;"MYRS2MB My Radio Shack to Microsoft BASIC conversion utility" +60010 PRINT"By Ed Mahoney 28 May 83 Version 1.0 " +60020 PRINT:PRINT"This program will convert a Radio Shack Model I or Model 3 BASIC (or +60030 PRINT"Disk BASIC) program to a Microsoft BASIC 5.1 program." +60040 PRINT:PRINT"REQUIREMENTS:":PRINT"1) Your computer that will be running the Microsoft program +60050 PRINT" must be able to 'print at' specific locations on your screen." +60060 PRINT"2) The Radio Shack program that is to be converted, must exist on disk +60070 PRINT" and be stored in ASCII format." +60080 PRINT" a) This program must not have line numbers 1 or 2 (the conversion +60090 PRINT" process will place statements in these positions)" +60100 PRINT" b) The statements in the Radio Shack program must not be extreemly +60110 PRINT" long, say greater than 220 characters long. (The program will +60120 PRINT" expand each line.)" +60130 PRINT" c) The Radio Program should not have the following statements: +60140 PRINT" PEEK POKE SET(x,y) RESET(x,y) POINT(x,y) +60150 PRINT" (These statements are machine dependent) +60160 PRINT" If these 5 statements are present, they will be passed on to the MBASIC" +60170 PRINT" with a REM statement appended to the end that warns you that you will +60180 PRINT" have to do some additional conversion (good luck!)." +60190 PRINT"3) FINAL WARNING: This is only version 1.0. This utility has not been +60200 PRINT" extensivly tested."; +60250 GOSUB 50000:PRINT CLS$; +60300 PRINT"WHAT IT DOES: +60310 PRINT"1) converts the RND function to MBASIC standards +60320 PRINT"2) converts Radio Shack's CLS statement to a print code +60330 PRINT"3) converts Radio Shack's PRINT @ ##, to a printable code +60340 PRINT"4) 'pads' all statements with spaces which MBASIC requires (and Radio +60350 PRINT" Shack does not). +60360 PRINT"5) Identifies statements that are machine dependent (ex. PEEK or SET +60370 PRINT" with a warning at the end of the statement and provides a table of +60380 PRINT" the bad statements oa the end of execution. +60430 GOSUB 50000:RETURN diff --git a/cpm/satelite.txt b/cpm/satelite.txt new file mode 100644 index 0000000..752cdac --- /dev/null +++ b/cpm/satelite.txt @@ -0,0 +1,113 @@ +5 LET CLS$=CHR$(26) +10 REM Program to locate television satellites for a given latitude +20 REM and longitude. This program is useful for TVRO owners. +30 REM Additional satellites can be placed in the data table. +40 REM +50 REM P.G. Wohlmut Copyright 1983 July 8, 1983 +60 REM +70 PRINT +100 PI=3.141592654000001# +110 DIM SAT$(50),ANGLE(50),CITY$(500),LAT(500,3),LONG(500,3) +120 FOR I= 1 TO 50:READ SAT$(I):IF SAT$(I)="end" THEN 181 +130 READ ANGLE(I):NEXT I +140 DATA Satcom F5,143,Satcom 1R,139,Satcom F1,135,Satcom F3,131,Comstar D4,127 +150 DATA Westar 5,123,Satcom F2,119,Anik A3,114,Anik B,109,Anik D1,104 +160 DATA Westar 4,99,Comstar D1/D2,95,Westar 3,91,Comstar D3,87 +170 DATA Satcom F4,83,Westar 1/2,79 +180 DATA end +181 TOPS=I-1 +185 FOR I= 1 TO 500:READ CITY$(I):IF CITY$(I)="end" THEN 187 ELSE FOR J=1 TO 3:READ LAT(I,J):NEXT J:FOR J=1 TO 3:READ LONG(I,J) +186 NEXT J:NEXT I +187 CIT=I-1 +190 RESTORE +210 PRINT CLS$:FOR I= 1 TO CIT STEP 20:FOR J= 1 TO 20:K=I+J-1:IF CITY$(K)="end" THEN 212 ELSE PRINT USING "###: \ \";J,CITY$(K):NEXT J +212 INPUT "Which city # (#,m=more) ";Z$ +213 IF Z$="m" OR Z$="M" THEN CLS:GOTO 218 ELSE Z=VAL(Z$):IF Z<1 OR Z>20 THEN 218 +214 Z=Z+I-1:DT=LAT(Z,1):MT=LAT(Z,2):ST=LAT(Z,3):DG=LONG(Z,1):MG=LONG(Z,2):SG=LONG(Z,3):CIT$=CITY$(Z):GOTO 240 +218 NEXT I:LOCATE 24,1:PRINT "No more cities :"; +220 INPUT"Your Latitude (dd,mm,ss) ";DT,MT,ST +230 INPUT"Your Longitude (dd,mm,ss) ";DG,MG,SG +240 SITELONG=DG+MG/60+SG/3600:SITELAT=DT+MT/60+ST/3600 +250 SITELONG = SITELONG*PI/180:SITELAT=SITELAT*PI/180 +260 PRINT CLS$:PRINT "=======================================" +270 PRINT ": SATELLITE : ELEVATION : AZIMUTH :" +280 PRINT ": : DD'MM'SS : DD'MM'SS :" +290 PRINT "=======================================" +300 FOR NUM=1 TO TOPS +310 SATLONG=ANGLE(NUM)*PI/180:GOSUB 420 +320 ELD=INT(EL):ELM1=EL-ELD:ELM=INT(ELM1*60):ELS=CINT(ELM1*3600-ELM*60) +330 AZD=INT(AZ):AZM1=AZ-AZD:AZM=INT(AZM1*60):AZS=CINT(AZM1*3600-AZM*60) +340 PRINT USING ":\ \: ###'##'## : ###'##'## :";SAT$(NUM),ELD,ELM,ELS,AZD,AZM,AZS +350 NEXT NUM +360 PRINT "=======================================" +370 PRINT USING "Latitude ###'##'##";DT,MT,ST; +380 PRINT USING "Longitude ###'##'##";DG,MG,SG; +382 PRINT +384 PRINT CIT$; +386 PRINT +390 PRINT "Another location? "; +400 Z$=INKEY$:IF Z$="" THEN 400 ELSE IF Z$="Y" OR Z$="y" THEN PRINT Z$;:GOTO 210 +410 END +420 ' calculate azimuth & elevation of satellite at site. +430 EL = ATN((COS(SATLONG-SITELONG)*COS(SITELAT)-.15126)/SQR(1-(COS(SATLONG-SITELONG)*COS(SITELAT))^2))*180/PI +440 AZ=180+ATN(TAN(SATLONG-SITELONG)/SIN(SITELAT))*180/PI +450 RETURN +1000 DATA Albuquerque,35,0,0,106,40,0 +1100 DATA Anchorage,61,10,0,150,0,0 +1200 DATA Atlanta,33,30,0,84,20,0 +1300 DATA Bakersfield,35,30,0,120,10,0 +1400 DATA Baltimore,39,15,0,76,40,0 +1500 DATA Bangor,44,45,0,68,45,0 +1600 DATA Birmingham,33,30,0,86,45,0 +1700 DATA Bismarck,46,45,0,100,45,0 +1800 DATA Boston,42,20,0,71,5,0 +1900 DATA Buffallo,43,0,0,78,50,0 +2000 DATA Butte,46,0,0,112,30,0 +2100 DATA Charleston,38,20,0,81,35,0 +2200 DATA Chicago,41,10,0,87,40,0 +2300 DATA Cleveland,41,20,0,81,40,0 +2400 DATA Dallas,33,0,0,97,0,0 +2500 DATA Denver,39,45,0,105,0,0 +2600 DATA Des Moines,41,30,0,93,40,0 +2700 DATA Detroit,42,30,0,83,0,0 +2800 DATA Elko,40,50,0,115,40,0 +2900 DATA Eureka,40,45,0,124,10,0 +3000 DATA Flagstaff,35,25,0,111,30,0 +3100 DATA Fresno,36,55,0,119,45,0 +3200 DATA Hartford,41,45,0,72,40,0 +3300 DATA Honolulu,21,20,0,157,50,0 +3400 DATA Houston,29,50,0,95,10,0 +3500 DATA Indianapolis,39,45,0,86,10,0 +3600 DATA Jackson,32,15,0,90,10,0 +3700 DATA Jacksonville,30,15,0,81,40,0 +3800 DATA Kansas City,39,0,0,94,30,0 +3900 DATA Las Vegas,36,10,0,115,10,0 +4000 DATA Little Rock,34,45,0,92,15,0 +4100 DATA Los Angeles,34,0,0,118,15,0 +4200 DATA Louisville,38,10,0,85,45,0 +4300 DATA Miami,25,45,0,80,15,0 +4400 DATA Milwaukee,43,0,0,88,0,0 +4500 DATA Minneapolis,45,0,0,93,15,0 +4600 DATA Nashville,36,15,0,86,45,0 +4700 DATA New Orleans,30,0,0,90,0,0 +4800 DATA New York,40,45,0,74,0,0 +4900 DATA Omaha,41,15,0,96,0,0 +5000 DATA Orlando,28,35,0,81,30,0 +5100 DATA Philadelphia,40,0,0,75,0,0 +5200 DATA Phoenix,33,30,0,112,5,0 +5300 DATA Portland,45,30,0,122,35,0 +5400 DATA Providence,41,45,0,71,15,0 +5500 DATA Reno,39,30,0,119,45,0 +5600 DATA Sacramento,38,40,0,121,30,0 +5700 DATA Saint Louis,38,40,0,90,10,0 +5800 DATA Salt Lake City,40,50,0,112,0,0 +5900 DATA San Diego,33,0,0,117,10,0 +6000 DATA Seattle,47,30,0,122,15,0 +6100 DATA San Francisco,37,40,0,122,30,0 +6200 DATA San Jose,37,15,0,121,50,0 +6300 DATA Tampa,28,0,0,82,30,0 +6400 DATA Tucson,32,10,0,111,35,0 +6500 DATA Tulsa,36,10,0,96,0,0 +6600 DATA Washington DC,38,55,0,77,5,0 +6700 DATA Winston Salem,36,10,0,80,15,0 +6800 DATA end diff --git a/cpm/survival.txt b/cpm/survival.txt new file mode 100644 index 0000000..c38fbb7 --- /dev/null +++ b/cpm/survival.txt @@ -0,0 +1,482 @@ +5 DIM T$(65):DIM M(42,8):DIM O(17) +10 PRINT CHR$(26):PRINT"Welcome to the game of SURVIVAL" +15 PRINT:PRINT"You have had an accident in space, escaped in a lifeboat capsule" +20 PRINT"and crash landed on the moon near an abandoned base. Your food and" +25 PRINT"water were destroyed in the crash but your space suit contains a power" +30 PRINT"unit and oxygen unit which will keep you alive for a while.":PRINT +35 PRINT"To explore enter single word directions such as NORTH, WEST and UP" +40 PRINT"or single letter directions such as N, S, E, W, U and D (up and down)." +45 PRINT"You will encounter various items and situations during your travels." +50 PRINT"To communicate, enter commands (verbs), followed by object names," +55 PRINT"if applicable. The following commands are valid -" +60 PRINT:PRINT"LOOK FIND GET DROP INVENTORY QUIT TRANSPORT" +65 PRINT"USE ON OFF DIG READ FIX BLASTOFF" +70 PRINT:PRINT"as well as a few others you may eventually figure out for yourself!" +75 PRINT:PRINT"Once you have survived, the object then is to achieve the" +80 PRINT"optimum survival time. Good luck!!!!" +85 PRINT:PRINT"Enter for beginner or '1' for expert":INPUT"which";CX:IF CX>1 THEN 85 +90 PRINT CHR$(26) +95 PRINT:PRINT"Your crash landing has shaken things up a bit." +100 PRINT"Please wait while I sort it all out.":PRINT +105 FOR I=0 TO 65:READ T$(I):PRINT".":T$=T$(I):GOSUB 125:T$(I)=EC$:GOSUB 120:NEXT I +110 PRINT" Almost there. I'll try to hurry!" +115 FOR I=1 TO 42:FOR J=1 TO 8:READ M(I,J):NEXT J:PRINT".":NEXT I:GOTO 130 +120 IF I<>37 THEN RETURN ELSE PRINT" What a mess! Half done!":RETURN +125 EC$="":FOR II=1 TO LEN(T$):CD=ASC(MID$(T$,II,1))-4:EC$=EC$+CHR$(CD):NEXT II:RETURN +130 P=1:C=2:T1=0:V=0:F0=1:O(1)=21:O(2)=19:O(3)=99:O(4)=6:O(5)=32:O(6)=0: + O(7)=38:O(8)=36:O(9)=0:O(10)=35:O(11)=99:O(12)=33:O(13)=34:O(14)=37: + O(17)=20:M(14,4)=0:Z=0:PRINT"."; +135 IF CX=0 THEN T2=275:P1=320:P2=75:PRINT".";:GOTO 145 +140 T2=185:P1=230:P2=50:PRINT"."; +145 M(14,8)=M(14,7)+1:M(2,8)=M(2,7)+1:PRINT". OK! Ready!" +150 F0=1:F1=0:F2=0:F3=0:F4=0:F5=0:F6=0:F7=0:F8=0:F9=0:OF=0: + BG=0:P3=1:T0=120 +155 PRINT:PRINT"Elapsed Time: "; T1; "Minutes":T1=T1+5 +160 IF F4=1 THEN T0=T0-5 +165 O(15)=0:O(16)=0:MF=0 +170 IF F1=2 THEN F1=0 +175 IF F2=2 THEN 1320 +180 IF F3=2 THEN F3=0 +185 IF F4=2 THEN F4=0 +190 IF T2=0 THEN 1240 +195 IF O(11)=99 THEN PRINT"Power Unit: "; P1; "Units" +200 IF O(14)=99 THEN PRINT"Power Pack: "; P2; "Units" +205 IF P=38 THEN 215 +210 IF P>21 AND F9=0 THEN 245 +215 IF O(11)<>99 THEN 230 +220 IF P1=0 OR P3=0 THEN 1230 +225 P1=P1-5:GOTO 245 +230 IF O(14)<>99 THEN 1230 +235 IF P2=0 OR P4=0 THEN 1230 +240 P2=P2-5 +245 IF CX=1 THEN 270 +250 IF T1>600 THEN 1260 +255 IF T1>500 THEN 1425 +260 IF T1=365 THEN PRINT"You've been here 6 hours! Getting thirsty?" +265 GOTO 280 +270 IF T1>500 THEN 1260 +275 IF T1>400 THEN 1425 +280 IF T1>175 THEN 1410 +285 IF F0=1 THEN T2=T2-5 +290 IF T2<0 THEN T2=0 +295 IF F0=0 THEN 305 +300 IF T2>0 THEN 340 +305 IF F9=0 THEN 315 +310 IF P>21 THEN 1240 +315 IF P<18 THEN 1240 +320 IF P<>38 THEN 340 +325 IF O(3)<>99 OR F0<>1 OR T2=0 THEN 1240 +330 IF F9=1 OR R<>29 THEN 340 +335 F9=1:PRINT"You have just blown the air seal in the space station." +340 IF O(3)=99 THEN PRINT"Oxygen Remaining: "; T2; "Minutes" +345 IF P<18 OR P>21 THEN 360 +350 IF O(4)=P AND F4=1 AND T0<>0 THEN 360 +355 IF O(4)<>99 OR F4=0 OR T0=0 THEN 420 +360 PRINT"Present Location Status: You are" +365 FOR I=M(P,7)TO M(P,8):PRINT T$(I):NEXT I +370 PRINT CHR$(27);")";"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" +375 PRINT CHR$(27);"(" +380 IF P<>2 THEN 395 +385 IF O(4)<>99 THEN 395 ELSE O(4)=100:C=C-1 +390 PRINT"You dropped your illuminator!":PRINT"You can't retrieve it!" +395 FOR I=1 TO 14 +400 IF O(I)<>P THEN 415 +405 GOSUB 1660 +410 PRINT"There is ";B$; " here." +415 NEXT I:GOTO 895 +420 INPUT B$:I=0:OF=0 +425 IF LEN(B$)<>1 THEN 545 +430 IF B$="N"OR B$="n"OR B$="NORTH"OR B$="north"THEN I=1 +435 IF B$="S"OR B$="s"OR B$="SOUTH"OR B$="south"THEN I=2 +440 IF B$="E"OR B$="e"OR B$="EAST"OR B$="east"THEN I=3 +445 IF B$="W"OR B$="w"OR B$="WEST"OR B$="west"THEN I=4 +450 IF B$="U"OR B$="u"OR B$="UP"OR B$="up"THEN I=5 +455 IF B$="D"OR B$="d"OR B$="DOWN"OR B$="down"THEN I=6 +460 IF B$="Q"OR B$="q"OR B$="QUIT"OR B$="quit"THEN 1275 +465 IF I=0 THEN 660 +470 IF P=37 AND O(5)=35 AND I=2 THEN Q=35:GOTO 525 +475 IF P=35 AND O(5)=35 AND I=1 THEN Q=37:GOTO 525 +480 IF P=14 AND R=2 AND I=5 THEN Q=2:GOTO 525 +485 IF M(P,I)>21 AND BG=1 THEN 540 +490 IF M(P,I)=0 THEN 540 +495 IF M(P,I)=99 THEN 1250 +500 Q=M(P,I) +505 IF P=12 THEN 1290 +510 IF P=13 AND M(P,I)=22 THEN 1335 +515 IF P=22 THEN 1355 +520 IF P=29 THEN 1380 +525 R=P:P=Q:IF P=35 THEN V=V+1 +530 IF P<>23 THEN 155 +535 IF O(4)<>99 OR F4=0 THEN 1250 ELSE 155 +540 PRINT"You cannot go in that direction!":GOTO 420 +545 C$=LEFT$(B$,3) +550 IF C$="LOO"OR C$="loo"THEN 670 +555 IF C$="FIN"OR C$="fin"THEN 730 +560 IF C$="GET"OR C$="get"THEN 960 +565 IF C$="USE"OR C$="use"THEN 690 +570 IF C$="DRO"OR C$="dro"THEN 1130 +575 IF C$="OFF"OR C$="off"THEN OF=1:GOTO 750 +580 IF C$="ON "OR C$="on "THEN OF=0:GOTO 750 +585 IF C$="INV"OR C$="inv"THEN 1205 +590 IF C$="QUI"OR C$="qui"THEN 1275 +595 IF C$="TRA"OR C$="tra"THEN 845 +600 IF C$="DIG"OR C$="dig"THEN 885 +605 IF C$="TEL"OR C$="tel"THEN 715 +610 IF C$="FUE"OR C$="fue"THEN 1520 +615 IF C$="REA"OR C$="rea"THEN 1605 +620 IF C$="FIX"OR C$="fix"THEN 1430 +625 IF C$="BLA"OR C$="bla"THEN 1545 +630 IF C$="UP"OR C$="up"THEN I=5:GOTO 480 +635 IF C$="DOW"OR C$="dow"THEN I=6:GOTO 490 +640 IF C$="NOR"OR C$="nor"THEN I=1:GOTO 490 +645 IF C$="SOU"OR C$="sou"THEN I=2:GOTO 490 +650 IF C$="EAS"OR C$="eas"THEN I=3:GOTO 490 +655 IF C$="WES"OR C$="wes"THEN I=4:GOTO 490 +660 PRINT"INVALID COMMAND!":GOTO 420 +665 PRINT"I CANNOT PROCESS YOUR REQUEST!":GOTO 420 +670 IF P<18 OR P>21 THEN 360 +675 IF O(4)=P AND F4=1 AND T0<>0 THEN 360 +680 IF O(4)<>99 OR F4=0 OR T0=0 THEN PRINT"Can't see in the dark!":GOTO 420 +685 GOTO 360 +690 GOSUB 1735:IF I=0 THEN 975 +695 IF I<0 THEN 980 +700 IF O(I)<>99 THEN 1180 +705 ON I GOTO 1345,1310,775,1370,840,1470,1440,845,1520,840,785, + 1400,1125,785,840,1125,840 +710 GOTO 975 +715 PRINT"Enter Code Number" +720 INPUT TP:P=(TP-P)/100:IF P<1 OR P>42 THEN PRINT"Lost in LIMBO":GOTO 1270 +725 GOTO 155 +730 IF P=14 AND R=2 THEN PRINT"A square metal object":MF=1:O(15)=14 +735 IF P=30 THEN PRINT"A metal cylinder":MF=1:O(16)=30 +740 IF MF=0 THEN PRINT"Can't find anything!" +745 GOTO 420 +750 GOSUB 1735 +755 IF I=17 THEN 800 +760 IF O(I)<>99 THEN 1180 +765 ON I GOTO 840,840,775,820,840,840,840,830,840,840,785,840,840, + 790,840,840 +770 GOTO 975 +775 IF OF=1 THEN F0=0ELSE F0=1 +780 PRINT"OK!":GOTO 420 +785 IF OF=1 THEN P3=0ELSE P3=1 +790 IF OF=1 THEN P4=0ELSE P4=1 +795 PRINT"OK!":GOTO 420 +800 IF P<>21 THEN 1510 +805 IF O(4)<>99 OR F4=0 OR T0=0 THEN 1495 +810 IF OF=1 THEN F8=0ELSE F8=1 +815 PRINT"OK!":GOTO 420 +820 IF OF=1 THEN F4=0ELSE F4=1 +825 PRINT"OK!":GOTO 420 +830 IF OF=1 THEN F3=0ELSE F3=1 +835 PRINT"OK!":GOTO 420 +840 PRINT"It can't be used that way":GOTO 420 +845 IF P<>36 AND P<>35 THEN 665 +850 IF O(8)<>P AND O(8)<>99 THEN 665 +855 IF F3=0 THEN 665 +860 IF O(8)=35 THEN O(8)=36:P=36:GOTO 880 +865 IF O(8)=36 THEN O(8)=35:V=V+1:P=35 +870 IF O(8)=99 AND P=35 THEN P=36:GOTO 880 +875 IF O(8)=99 AND P=36 THEN P=35:V=V+1 +880 PRINT"Beaming in process.":FOR I=1 TO 450:NEXT I:GOTO 155 +885 IF P<>10 THEN 665 +890 O(9)=10:Z=Z+1:GOTO 380 +895 IF O(5)=37 THEN O(5)=35 +900 IF O(5)=29 THEN O(5)=37 +905 IF O(5)=28 THEN O(5)=29 +910 IF O(5)=42 THEN O(5)=28 +915 IF O(5)=41 THEN O(5)=42 +920 IF O(5)=27 THEN O(5)=41 +925 IF O(5)=25 THEN O(5)=27 +930 IF O(5)=35 THEN M(37,2)=35 +935 IF O(5)<>32 THEN 420 +940 IF P<>32 THEN 420 +945 O(5)=25:IF O(13)=99 THEN 420 +950 PRINT"The robot fails to recognize you." +955 PRINT"It fires its weapon at you!!":GOTO 1270 +960 GOSUB 1735 +965 IF I>0 THEN 985 +970 IF I<0 THEN 980 +975 PRINT "I don't recognize "; RIGHT$(B$,LEN(B$)-J);".":GOTO 420 +980 PRINT"What item?":GOTO 420 +985 IF O(I)<>P THEN 1075 +990 IF CX=1 AND C>2 THEN 1080 +995 IF CX=1 THEN 1005 +1000 IF C>3 THEN 1080 +1005 IF I=5 THEN 1085 +1010 IF I=9 THEN 1090 +1015 IF I=10 THEN 1100 +1020 IF I=11 THEN 1110 +1025 IF I=14 THEN 1115 +1030 IF P=14 AND I=15 AND MF=1 THEN I=6:GOTO 1060 +1035 IF I<>16 THEN 1055 +1040 IF P<>30 OR MF=0 THEN 1075 +1045 IF T2<156 THEN T2=T2+30 +1050 GOTO 1065 +1055 IF I=17 THEN GOTO 1085 +1060 C=C+1:O(I)=99 +1065 PRINT"O.K." +1070 GOTO 420 +1075 PRINT"I don't see any "; RIGHT$(B$,LEN(B$)-J);" here!":GOTO 420 +1080 PRINT"You can't carry any more!":GOTO 420 +1085 PRINT"You can't carry it!":GOTO 420 +1090 IF Z<2 THEN 1060 +1095 PRINT"The two crystals reacted with your power supply!":GOTO 1245 +1100 PRINT"You can't get the message," +1105 PRINT"it's on the terminal screen.":GOTO 420 +1110 IF O(14)=99 THEN 1120ELSE 1060 +1115 IF O(11)=99 THEN 1120ELSE 1060 +1120 PRINT"You can't have more than one power supply, sorry.":GOTO 420 +1125 PRINT"How?":GOTO 420 +1130 GOSUB 1735 +1135 IF I>0 THEN 1150 +1140 IF I<0 THEN 980 +1145 GOTO 975 +1150 IF O(I)<>99 THEN 1180 +1155 IF I=9 THEN Z=Z-1 +1160 C=C-1:O(I)=P +1165 IF I=11 THEN 1185 +1170 IF I=14 THEN 1185 +1175 GOTO 1065 +1180 PRINT"You don't have "; RIGHT$(B$,LEN(B$)-J);"!":GOTO 420 +1185 IF P<22 THEN 1230 +1190 IF P=38 THEN 1230 +1195 IF F9=1 THEN 1230 +1200 GOTO 1065 +1205 FOR I=1 TO 14 +1210 IF O(I)<>99 THEN 1225 +1215 GOSUB 1660 +1220 PRINT"You have "; B$; "." +1225 NEXT I:GOTO 420 +1230 PRINT"You have no power!" +1235 PRINT"You have frozen to death!":GOTO 1270 +1240 PRINT"Oxygen required here. None available.":GOTO 1270 +1245 PRINT"A nuclear detonation has just occured.":GOTO 1270 +1250 PRINT"You have fallen to your death!":GOTO 1270 +1255 PRINT"You have been zapped by the laser.":GOTO 1270 +1260 PRINT"The moon base has just been destroyed by a large asteroid!":BG=1 +1265 IF P<22 THEN 285 +1270 PRINT"You have failed to survive." +1275 INPUT"Do you wish to try again";D$ +1280 IF D$="Y"OR D$="y"OR D$="YES"OR D$="yes"THEN PRINT CHR$(27);CHR$(69):GOTO 130 +1285 END +1290 IF M(P,I)<>13 THEN 525 +1295 IF F2<>0 THEN 525 +1300 PRINT"There is a metor shower!" +1305 PRINT"Your space suit has developed a leak!":F2=2:GOTO 420 +1310 IF F2<>2 THEN 840 +1315 PRINT"Your suit is now sealed.":F2=1:O(2)=0:C=C-1:GOTO 525 +1320 IF F0=1 THEN T2=T2-20 +1325 IF T2<0 THEN T2=5 +1330 GOTO 180 +1335 IF BG=1 THEN PRINT"The door is blocked by rubble!":GOTO 420 +1340 IF F1=0 THEN PRINT"The shed is locked!":F1=2:GOTO 420 +1345 IF F1=2 THEN PRINT"You are in the shed air lock":F1=0:GOTO 525 +1350 IF F1=3 THEN PRINT:PRINT"Authority Confirmed!":PRINT:GOTO 1580 +1355 IF M(P,I)<>23 THEN 525 +1360 IF F4>0 THEN 525 +1365 PRINT"It is dangerous to proceed in the dark!":F4=2:GOTO 420 +1370 IF F4<>2 THEN F4=1:GOTO 420 +1375 PRINT"The shaft is now illuminated.":F4=1:GOTO 525 +1380 IF M(P,I)<>37 THEN 525 +1385 IF F3=1 AND O(12)=37 THEN 525 +1390 PRINT"There is a laser beam here." +1395 PRINT"Passage is not possible when beam is present.":F3=2:GOTO 420 +1400 IF F3<>2 THEN 1125 +1405 PRINT"The beam is deflected.":F3=1:C=C-1:O(12)=37:GOTO 525 +1410 IF F5=1 THEN 285 +1415 IF O(6)=0 THEN O(6)=14 +1420 M(2,8)=M(2,7):M(14,8)=M(14,7):M(14,4)=2:F5=1:GOTO 285 +1425 IF F6=0 THEN 1245ELSE 285 +1430 GOSUB 1735:IF I=7 THEN 1470 +1435 IF I<>17 THEN 1515 +1440 IF O(7)<>99 THEN 1500 +1445 IF O(4)<>99 AND O(4)<>I THEN 1495 +1450 IF F4=0 OR T0=0 THEN 1495 +1455 IF P<>20 THEN 1510 +1460 IF F7<>1 THEN F6=1 +1465 PRINT"The engine is now repaired.":F7=2:O(7)=0:C=C-1:GOTO 420 +1470 IF O(6)<>99 THEN 1500 +1475 IF O(7)<>99 THEN 1505 +1480 IF P<18 OR P>21 THEN 1490 +1485 IF O(4)<>99 OR F4=0 OR T0=0 THEN 1495 +1490 PRINT"Motor is now regulated.":F7=1:O(6)=0:C=C-1:GOTO 420 +1495 PRINT"You can't see to do it!":GOTO 420 +1500 PRINT"You have nothing to do it with!":GOTO 420 +1505 PRINT"There is nothing to do it to!":GOTO 420 +1510 PRINT"You can't do it from here!":GOTO 420 +1515 PRINT"You can't fix THAT!":GOTO 420 +1520 IF P<>19 THEN 1510 +1525 IF O(9)<>99 THEN 1500 +1530 IF O(4)<>99 OR F4=0 OR T0=0 THEN 1495 +1535 O(9)=98:C=C-1 +1540 PRINT"Fuel is now loaded.":GOTO 420 +1545 IF P<>21 THEN 1510 +1550 IF O(9)<>98 THEN 1600 +1555 IF F7=2 THEN 1565 +1560 PRINT"Repairs not yet completed.":GOTO 420 +1565 IF F8=0 THEN 665 +1570 PRINT:PRINT"Spacecraft repairs completed.":PRINT +1575 PRINT"Insert `Command Authority' in slot!":F1=3:GOTO 420 +1580 IF F6=1 THEN PRINT"Your ships engine has malfunctioned!":GOTO 1245 +1585 PRINT"Congratulations, you have just blasted" +1590 PRINT"off and are now on your way to earth." +1595 PRINT"Your escape time:"; T1; "Minutes.":GOTO 1275 +1600 PRINT"Your space craft has no fuel!":GOTO 420 +1605 IF P<>35 THEN 1510 +1610 IF V>6 THEN V=0 +1615 ON V GOTO 1620,1625,1630,1635,1640,1645 +1620 PRINT T$(48):PRINT T$(49):GOTO 420 +1625 PRINT T$(50):GOTO 420 +1630 PRINT T$(51):GOTO 420 +1635 PRINT T$(0):GOTO 420 +1640 PRINT T$(23):GOTO 420 +1645 IF O(5)<>35 THEN PRINT"The message is garbled!":GOTO 420 +1650 PRINT T$(21) +1655 PRINT T$(22):GOTO 420 +1660 IF I=1 THEN B$=T$(52) +1665 IF I=2 THEN B$=T$(53) +1670 IF I=3 THEN B$=T$(54) +1675 IF I=4 THEN B$=T$(55) +1680 IF I=5 THEN B$=T$(56) +1685 IF I=6 THEN B$=T$(57) +1690 IF I=7 THEN B$=T$(58) +1695 IF I=8 THEN B$=T$(59) +1700 IF I=9 THEN B$=T$(60) +1705 IF I=10 THEN B$=T$(61) +1710 IF I=11 THEN B$=T$(62) +1715 IF I=12 THEN B$=T$(63) +1720 IF I=13 THEN B$=T$(64) +1725 IF I=14 THEN B$=T$(65) +1730 RETURN +1735 FOR J=1 TO LEN(B$):IF MID$(B$,J,1)=" "THEN 1745 +1740 NEXT J:I=-1:RETURN +1745 C$=MID$(B$,J+1,3):I=0 +1750 IF C$="KEY"OR C$="key"THEN I=1 +1755 IF C$="SEA"OR C$="sea"THEN I=2 +1760 IF C$="OXY"OR C$="oxy"THEN I=3 +1765 IF C$="MOD"OR C$="mod"THEN I=3 +1770 IF C$="ILL"OR C$="ill"THEN I=4 +1775 IF C$="ROB"OR C$="rob"THEN I=5 +1780 IF C$="REG"OR C$="reg"THEN I=6 +1785 IF C$="MOT"OR C$="mot"THEN I=7 +1790 IF C$="TRA"OR C$="tra"THEN I=8 +1795 IF C$="DIL"OR C$="dil"THEN I=9 +1800 IF C$="CRY"OR C$="cry"THEN I=9 +1805 IF C$="MES"OR C$="mes"THEN I=10 +1810 IF C$="UNI"OR C$="uni"THEN I=11 +1815 IF C$="MIR"OR C$="mir"THEN I=12 +1820 IF C$="BAD"OR C$="bad"THEN I=13 +1825 IF C$="PAC"OR C$="pac"THEN I=14 +1830 IF C$="OBJ"OR C$="obj"THEN I=15 +1835 IF C$="CYL"OR C$="cyl"THEN I=16 +1840 IF C$="ENG"OR C$="eng"THEN I=17 +1845 RETURN +1850 DATA"I|xve$s|}kir$wxsvih$mr$wxexmsr" +1855 DATA"ex$Qevi$Wivirmxexmw2" +1860 DATA"sr$vmq$sj$Tswmhsrmyw2" +1865 DATA"Xsxep$hevoriww$xs$xli$Iewx2" +1870 DATA"X{m|x$He{iw$erh$Tpmrmyw2" +1875 DATA"ex$teww$mr$Leiqyw$Qsyrxemrw" +1880 DATA"ex$gvexiv$Qermpyw2" +1885 DATA"ex$Qevi$Zetsvyq2" +1890 DATA"ex$Qx2$Iyhs|yw2" +1895 DATA"mrwmhi$Evmwxsxipiw2" +1900 DATA"mr$glerkmrk$evie2" +1905 DATA"mr$Pegyw$Wsqrmsvyq2" +1910 DATA"ex$Pegyw$Qsvxmw2" +1915 DATA"xli$wyvjegi$mw$ziv}$wsjx$livi2" +1920 DATA"mr$Qevi$Mqfvmyq2" +1925 DATA"ex$xli$fewi$sj$Tpexs$gvexiv2$$E" +1930 DATA"wlmr}$sfnigx$mw$wiir${iwx2" +1935 DATA"fijsvi$e$qixep$wlih2$$E$wmkr$viehw" +1940 DATA"Zirxmpexmsr$wlejx$'62" +1945 DATA"iewx$sj$Qevi$Wivirmxexmw2" +1950 DATA"xlivi$mw$xsxep$hevoriww2" +1955 DATA"$$$$$$$$$$$$$$$$XIPITSVX$MRWXVYGXMSRW" +1960 DATA"$$$$We}$8$ryqfivw>$5wx$6$1$xlivi0$pewx$6$1$livi" +1965 DATA"]sy$gsyph$wezi$xmqi$f}$xipitsvxmrk$mj$}sy$ori{$ls{%" +1970 DATA"mr$xli$emv$psgo$gleqfiv$sj$xli$wlmt" +1975 DATA"mr$xli$ejx$wlejx$gevks$erh$jyip$wxsveki$vssq2" +1980 DATA"mr$xli$irkmri$vssq$sj$xli$wtegigvejx2" +1985 DATA"mr$xli$wlmt+w$gsrxvsp$vssq2" +1990 DATA"mr$er$emv$psgo$gleqfiv2" +1995 DATA"mrwmhi$e$zirxppexsv$wlih2$$E$pehhiv" +2000 DATA"piehw$hs{r$mrxs$e$pevki$qixep$wlejx2" +2005 DATA"mr$e$zirxmppexsv$tewweki2" +2010 DATA"ex$e$zirxmppexsv$stirmrk2$$Xlvsykl$xli" +2015 DATA"stirmrk$e$pmx$tewweki{e}$ger$fi$wiir2" +2020 DATA"mr$e$pmklxih$wtegi$wxexmsr$gsvvmhsv2" +2025 DATA"mr$xli$wtegi$wxexmsr$mrjmvqev}2" +2030 DATA"mr$xli$vigviexmsr$vssq$erh$pmfvev}2" +2035 DATA"mr$xli$qiww$lepp2$$Eferhsrih$jssh$xve}w" +2040 DATA"evi$wxmpp$sr$xli$xefpiw2" +2045 DATA"mr$xli$wxsveki$vssq$erh$wyttp}$evie2" +2050 DATA"mr$xli$wpiitmrk$uyevxivw2" +2055 DATA"mr$er$ipizexsv$ex$wyfwyvjegi$pizip2" +2060 DATA"mr$er$ipizexsv$ex$wyvjegi$pizip2" +2065 DATA"mr$xli$wxexmsr$gsrxvsp$girxiv2" +2070 DATA"mr$xli$xverwtsvxiv$vssq2" +2075 DATA"mr$xli$wtegi$wxexmsr$pefsvexsv}2" +2080 DATA"mr$xli$lerkiv$evie2$$Xli$peyrgl$evie" +2085 DATA"mw$nywx$wsyxl$sj$livi2" +2090 DATA"Rygpiev$vikypexsv$psgexih$wsqi{livi$iewx" +2095 DATA"sj$wtegi$wxexmsr$sr$qssr+w$wyvjegi" +2100 DATA"Psgep$jyip$wsyvgi1$Hmpmxlmyq$gv}wxep" +2105 DATA"Hmpmxlmyq$jsyrh$mr$xli$kvsyrh" +2110 DATA"er$ipigxvsrmg$oi}" +2115 DATA"wieperx" +2120 DATA"er$s|}kir$qshypi" +2125 DATA"er$mppyqmrexsv" +2130 DATA"e$vsfsx" +2135 DATA"e$rygpiev$qsxsv$vikypexsv" +2140 DATA"e$ywih$rygpiev$qsxsv" +2145 DATA"e$xverwtsvxiv$yrmx" +2150 DATA"e$hmpmxlmyq$gv}wxep" +2155 DATA"e$gsqtyxiv$qiwweki" +2160 DATA"e$ts{iv$yrmx" +2165 DATA"e$qmvvsv" +2170 DATA"e$gshih$fehki" +2175 DATA"e$ts{iv$tego" +2180 DATA 07,04,02,15,00,00,01,01 +2185 DATA 09,03,14,01,00,00,02,03 +2190 DATA 02,05,14,04,00,00,04,04 +2195 DATA 01,00,03,00,00,06,05,05 +2200 DATA 03,00,14,06,00,00,06,06 +2205 DATA 00,00,05,00,04,00,07,07 +2210 DATA 08,01,09,11,00,00,08,08 +2215 DATA 00,07,10,00,00,00,09,09 +2220 DATA 10,02,14,07,00,00,11,11 +2225 DATA 00,09,14,08,00,00,12,13 +2230 DATA 12,15,07,16,17,16,14,14 +2235 DATA 00,11,00,13,00,00,15,16 +2240 DATA 00,16,12,22,00,00,17,18 +2245 DATA 99,99,99,99,00,00,19,20 +2250 DATA 11,18,01,00,00,17,14,14 +2255 DATA 16,17,11,16,11,16,14,14 +2260 DATA 16,17,00,17,15,16,14,14 +2265 DATA 15,19,00,00,00,00,24,24 +2270 DATA 18,00,00,20,00,00,25,25 +2275 DATA 00,00,19,00,21,00,26,26 +2280 DATA 00,00,00,00,00,20,27,27 +2285 DATA 00,00,13,00,00,23,29,30 +2290 DATA 24,00,00,00,22,00,31,31 +2295 DATA 25,23,00,00,00,25,32,33 +2300 DATA 27,26,33,32,24,00,34,34 +2305 DATA 25,00,30,31,00,00,34,34 +2310 DATA 00,25,41,34,00,00,34,34 +2315 DATA 00,29,42,36,00,00,34,34 +2320 DATA 28,38,40,37,00,00,34,34 +2325 DATA 00,00,00,26,00,00,35,35 +2330 DATA 00,00,26,00,00,00,36,36 +2335 DATA 00,00,25,00,00,00,37,38 +2340 DATA 00,00,00,25,00,00,40,40 +2345 DATA 00,00,27,00,00,00,39,39 +2350 DATA 00,00,00,00,00,24,43,43 +2355 DATA 00,00,28,00,00,00,44,44 +2360 DATA 00,00,29,00,00,00,45,45 +2365 DATA 29,00,39,00,00,00,46,47 +2370 DATA 40,00,00,38,00,16,28,28 +2375 DATA 00,39,00,29,00,00,10,10 +2380 DATA 00,00,00,27,42,00,41,41 +2385 DATA 00,00,00,28,00,41,42,42 diff --git a/cpm/ttl-scrl.txt b/cpm/ttl-scrl.txt new file mode 100644 index 0000000..7275271 --- /dev/null +++ b/cpm/ttl-scrl.txt @@ -0,0 +1,30 @@ +10 'Banner Title Program +20 'Glenn Wilson +30 'May 2, 1986 +40 'Modified for Microsoft(c) Basic +50 'from Nhan Khai Hoang's WP-TITLE.INC +60 'of Word Pro for Turbo Pascal(c)... +70 CLR$=CHR$(26) 'clear screen code +80 PRINT CLR$ +90 DEF FNC$(X,Y)=CHR$(27)+CHR$(61)+CHR$(X+32)+CHR$(Y+32) +100 '^^^^^^cursor addressing for Xerox 820-II +110 PRINT FNC$(8,25);"-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-" +120 PRINT FNC$(9,25);"-/ /-" +130 PRINT FNC$(10,25);"-/ /-" +140 PRINT FNC$(11,25);"-/ /-" +150 PRINT FNC$(12,25);"-/ /-" +160 PRINT FNC$(13,25);"-/ /-" +170 PRINT FNC$(14,25);"-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- +180 M$="Banner Title Program...By Glenn Wilson...May 2, 1986...Modified from" +190 M$=M$+" WP-TITLE of Word Pro, v 1.0, by Nhan Khai Hoang..." +200 '^^^^^^messgage of choice goes here +210 MSG$=MID$(M$,1,25) +220 CDR$=MID$(M$,2,(LEN(M$)-1)) +230 CAR$=MID$(M$,1,1) +240 M$=CDR$+CAR$ +250 PRINT FNC$(11,28);MSG$ +260 GOSUB 280 'gosub for delay +270 GOTO 210 'do again +280 FOR X=1 TO 40 'delay loop +290 NEXT X +300 RETURN diff --git a/cpm/vader.txt b/cpm/vader.txt new file mode 100644 index 0000000..985d741 --- /dev/null +++ b/cpm/vader.txt @@ -0,0 +1,679 @@ +3 RANDOMIZE +10 REM PROGRAM FROM CREATIVE COMPUTING +20 REM MODIFIED AND MAINTAINED BY STEVE GILBREATH (CMRLBLG, TEGAMES) +30 PRINT CHR$(26) +40 PRINT +50 PRINT +60 PRINT +70 PRINT TAB(5);"************************ VADER ************************" +80 S1=0 +90 DIM P(1) +100 PRINT +110 X8=0 +120 Q=1 +130 PRINT +140 PRINT"WHAT IS YOUR NAME "; +150 INPUT A$ +160 H9=0 +170 D9=0 +180 S1=0 +190 PRINT +200 A1$="NO" +210 IF A2$="YES" THEN 1200 +220 PRINT"GREETINGS ";A$;", THIS IS DARTH VADER." +230 PRINT"I'M ABOUT TO WIPE THE FLOOR WITH YOU, BUT FOR THE SAKE OF" +240 PRINT"SORT, I WILL GIVE YOU A CHANCE TO DEFEND YOURSELF AND" +250 PRINT"PERHAPS, THOUGH I SINCERLY DOUBT IT, DESTROY ME INSTEAD." +260 PRINT +270 H9=0 +280 D9=0 +290 S1=0 +300 PRINT"ENTER A SECRET PASSWORD, ";A$ +310 PRINT"IT MUST NOT BE OVER SEVEN LETTERS" +320 INPUT P4$ +330 IF LEN(P4$)<=7 THEN 370 +340 PRINT +350 PRINT"ARE YOU DEAF OR SOMETHING....I SAID..." +360 GOTO 310 +370 PRINT +380 PRINT"THIS IS YOUR DISRUPTER PASSWORD. IF YOU DECIDE TO" +390 PRINT"USE THE DISRUPTERS YOU WILL NEED THIS THIS PASSWORD." +400 PRINT +410 PRINT +420 PRINT"DO YOU THINK THAT INSTRUCTIONS WILL HELP YOU ";A$; +430 INPUT B$ +440 IF B$="NO" THEN 730 +450 IF B$="N" THEN 730 +460 PRINT +470 PRINT +480 PRINT +490 PRINT"HISTORY TAPE - DATA LIBRARY - A FEW MILLENIA AGO" +500 PRINT +510 PRINT"YOU ARE THE CAPTAIN OF THE MILLENNIUM FALCON, YOU AND YOUR CO-PILOT," +520 PRINT"THE WOOKIE CHEWBACCA, ARE MERCENARIES, PLYING YOUR TRADE THOUGHOUT" +530 PRINT"THE GALAXY. AFTER TAKING ON FOUR PASSENGERS, LUKE SKYWALKER," +540 PRINT"OBI-WAN-KENOBI, AND TWO DRIODS, R2D2, AND 3CPO, AND ESCAPING" +550 PRINT"THE IMPERIAL FORCES AT MOSE EISLEY, IN THE TATOOINE SYSTEM," +560 PRINT"YOU HAVE RESCUED THE PRINCESS LEIA ORGANA OF ALDERAAN FROM" +570 PRINT"THE EVIL CLUTCHES OF EVIL GRAND MOTH TARKIN AND THE DARK" +580 PRINT"LORD OF THE SITH, DARTH VADER." +590 PRINT +600 PRINT"YOUR MISSION IS TO REACH THE REBEL BASE LOCATED ON YAVIN-4." +610 PRINT"DARTH VADER IS BETWEEN YOU AND YAVIN-4. HIS SHIP HAS THE SAME AMOUNT" +620 PRINT"OF POWER AVAILABLE. YOU MUST DEFEAT HIM IN ORDER TO REACH SAFTEY." +630 PRINT"AND DELIVER YOUR CARGO-(THE PRINCESS LEIA AND THE DETAILED" +640 PRINT"PLANS OF THE DEATHSTAR STORED IN THE MEMORY CIRCUITS OF R2D2)" +650 PRINT +660 PRINT +670 PRINT"DO YOU WISH FURTHER INSTRUCTIONS, ";A$; +680 INPUT B$ +690 IF B$="NO" THEN 720 +700 IF B$="N" THEN 720 +710 GOSUB 5090 +720 PRINT +730 PRINT"DO YOU WISH ARMAMENT INFORMATION "; +740 INPUT B$ +750 IF B$="N" THEN 1190 +760 IF B$="NO" THEN 1190 +770 PRINT +780 PRINT +790 PRINT TAB(15);"HERE ARE YOUR VITAL DATUM:" +800 PRINT +810 PRINT"YOU ARE EQUIPED WITH 100,000 STROMS OF ENERGY." +820 PRINT"WHEN YOU RUN OUT DARTH VADER WILL DESTROY YOU." +830 PRINT +840 PRINT +850 PRINT TAB(25);"ARMAMENT:" +860 PRINT +870 PRINT"TYPE";TAB(10);"DESCRIPTION";TAB(30);"RANGE(KILOMETERS)";TAB(50);"FUEL DRAIN" +880 PRINT"1";TAB(10);"HEAVY GUNS";TAB(30);"0-11,000";TAB(50);"10 STROMS" +890 PRINT"2";TAB(10);"WARHEADS";TAB(30);"10,000-100,000";TAB(50);"100 STROMS" +900 PRINT"3";TAB(10);"LASERS";TAB(30);"100,000-200,000";TAB(50);"1,000 STROMS" +910 PRINT +920 PRINT +930 PRINT TAB(25);"OPTIONS:" +940 PRINT +950 PRINT"4";TAB(10);"APPROACH";TAB(50);"100 STROMS" +960 PRINT"5";TAB(10);"RETREAT";TAB(50);"100 STROMS" +970 PRINT"6";TAB(10);"WE WILL CONTINUE TO YAVIN-4 AND GAIN ENERGY AT .9C" +980 PRINT"7";TAB(10);"ENTER HYPERSPACE" +990 PRINT"8";TAB(10);"DISRUPTERS" +1000 PRINT"9";TAB(10);"DEFLECTOR SCREENS" +1010 PRINT +1020 PRINT"ENTER ANY NUMBER WHEN READY TO CONTINUE "; +1030 INPUT Z9 +1040 PRINT +1050 PRINT +1060 PRINT +1070 PRINT +1080 PRINT"DARTH VADER HAS THE SAME CAPABILITES AS YOU." +1090 PRINT +1100 PRINT"EACH TIME A SHIP IS HIT, THE ENERGY DRAIN FROM THE SCREENS IS EQUAL" +1110 PRINT"TO THE AMOUNT OF ENERGY EXPENDED BY THE STRIKING WEAPON TIMES TEN," +1120 PRINT"(EXCEPT LASERS, WHICH ARE EQUAL TO AN EXPENDITURE THAT VARIES WITH" +1130 PRINT"DISTANCE TO THE TARGET)" +1140 PRINT +1150 PRINT"NOTE: YOU ARE CONTINUOUSLY BEING DRAWN TOWARD DARTH VADER" +1160 PRINT"WATCH YOUR RANGE CLOSELY!!" +1170 PRINT +1180 PRINT +1190 PRINT"THIS IS COMPUTER CONTROL." +1200 P=100000! +1210 B1=9.45426E+12 +1220 P(1)=100000! +1230 A=INT(RND(1)*200000!) +1240 PRINT +1250 PRINT"DARTH VADER APPROACHING AT ";A;" KILOMETERS" +1260 PRINT"DISTANCE TO YAVIN-4 IS ";B1;" KILOMETERS" +1270 PRINT +1280 PRINT"MAY THE FORCE BE WITH YOU!!" +1290 PRINT +1300 PRINT +1310 PRINT +1320 ON ATTENTION GOTO 1520 +1330 IF A2$<>"Y" THEN 1540 +1340 D9=D9+1 +1350 C=INT(RND(1)*3.14159*(RND(1)*3.14159)) +1360 O=INT(RND(1)*2+1) +1370 IF A>200050! THEN 3180 +1380 IF C=O THEN 1350 +1390 IF A>50000! THEN 1410 +1400 IF C=4 THEN 1770 +1410 IF C=5 THEN 1350 +1420 IF C<>6 THEN 1440 +1430 IF P>5000 THEN 1350 +1440 IF C<7 THEN 1460 +1450 IF C=7 THEN 1500 +1460 IF C>7 THEN 1350 +1470 N=0 +1480 B1=B1-(2.23119E+10) +1490 GOTO 2060 +1500 IF N>0 THEN 1350 +1510 GOTO 2060 +1520 X7=0 +1530 X8=0 +1540 PRINT +1550 X7=X7+1 +1560 IF X7=1 THEN 1640 +1630 GOTO 1730 +1640 IF C<=9 THEN 1770 +1650 IF C<>10 THEN 1720 +1660 PRINT"ENTER NUMBER OF AUTO-PLAYS "; +1670 INPUT X8 +1675 GOSUB 6720 +1680 PRINT"ENTER COMMAND TO EXECUTE "; +1690 INPUT C +1700 ON ATTENTION GOTO 1520 +1710 GOTO 1620 +1720 REM C +1730 PRINT +1740 PRINT"THAT NUMBER IS NOT A COMMAND ";A$ +1750 PRINT"TRY AGAIN" +1760 GOTO 1540 +1770 D9=D9+1 +1780 O=INT(RND(1)*2+1) +1790 REM X +1800 GOTO 1820 +1810 IF C<6 THEN 2510 +1820 IF C=1 THEN 1840 +1830 GOTO 1880 +1840 IF A>=0 THEN 1860 +1850 GOTO 2510 +1860 IF A<11001 THEN 2000 +1870 GOTO 2510 +1880 IF C=2 THEN 1900 +1890 GOTO 1940 +1900 IF A>10999 THEN 1920 +1910 GOTO 2510 +1920 IF A<100001! THEN 2000 +1930 GOTO 2510 +1940 IF C=3 THEN 1960 +1950 GOTO 2000 +1960 IF A>99999! THEN 1980 +1970 GOTO 2510 +1980 IF A<200001! THEN 2000 +1990 GOTO 2510 +2000 IF C<7 THEN 2040 +2010 IF C=7 THEN 2060 +2020 IF C=8 THEN 5420 +2030 IF C=9 THEN 5900 +2040 N=0 +2050 B1=B1-(2.33119E+10) +2060 IF C=1 THEN 2530 +2070 IF C=2 THEN 2680 +2080 IF C=3 THEN 2840 +2090 IF C=4 THEN 2970 +2100 IF C=5 THEN 3070 +2110 IF C=6 THEN 3180 +2120 IF A2$<>"Y" THEN 2180 +2130 H=INT(RND(1)*10+1) +2140 IF P-(10000*H^.3)<500 THEN 1350 +2150 IF H=0 THEN 2130 +2160 GOSUB 6070 +2170 GOTO 2230 +2180 IF C>77 THEN 2490 +2190 PRINT"PLEASE INDICATE HYPER-FACTOR"; +2200 INPUT H +2210 IF S1>0 THEN 2160 +2220 H2=1 +2230 IF H<13 THEN 2250 +2240 GOTO 2180 +2250 P=P-(10000*(H^.3)) +2260 N=N+1 +2270 PRINT"COMPUTING COURSE AT H-F: ";H +2280 H9=H9+1 +2290 IF P<100 THEN 4440 +2300 IF B1-((H^3*299793!)*60^2)<1E+06 THEN 4190 +2310 IF N>1 THEN 4410 +2320 A=A+((H^3*299793!)*60^2) +2330 IF O=1 THEN 4970 +2340 O2=INT(RND(1)*3.1415926#+1) +2350 IF O2=1 THEN 4970 +2360 IF O2=4 THEN 4940 +2370 B1=B1-(H^3*299793!)*(INT(3.14159^3*RND(1)+29)^2) +2380 PRINT"SORRY, ERROR PUT US OFF LINE." +2390 IF O2=3 THEN 2450 +2400 IF P(1)=P(1)-(H^.3*10000)<10000 THEN 3350 +2410 PRINT"DARTH VADER FOLLOWED!!" +2420 P(1)=P(1)-(10000*(H^.3)) +2430 A=INT(RND(1)*200000!) +2440 GOTO 3210 +2450 PRINT"NO SIGN OF DARTH VADER, CRUISING AT .9C" +2460 B1=B1-(2.33118E+10) +2470 IF B1<1E+06 THEN 4530 +2480 GOTO 4050 +2490 IF O=1 THEN 4020 +2500 GOTO 1330 +2510 PRINT A$;", LETS NOT CRACK UNDER PRESSURE, CHECK YOUR RANGE!!" +2520 GOTO 1330 +2530 IF A>11005 THEN 2490 +2540 IF A<10 THEN 2490 +2550 P=P-100 +2560 PRINT +2570 PRINT"GUNS HAVE BEEN FIRE..." +2580 IF O=1 THEN 2610 +2590 PRINT"DARTH VADER MANUEVERING..." +2600 GOTO 2780 +2610 PRINT"AWAITING DAMAGE ASSESSMENT" +2620 IF O=1 THEN 2650 +2630 PRINT"MISSED - DRAT!!" +2640 GOTO 3210 +2650 PRINT"HIT!!! - - HIS POWER DOWN!!" +2660 P(1)=P(1)-100 +2670 GOTO 3210 +2680 IF A>100000! THEN 2490 +2690 IF A<10000 THEN 2490 +2700 P=P-100 +2710 PRINT +2720 PRINT"WE HAVE LAUNCHED A WARHEAD..." +2730 O1=INT(RND(1)*2)+1 +2740 IF O1=1 THEN 2770 +2750 PRINT"DARTH VADER MANEUVERING..." +2760 GOTO 2780 +2770 PRINT"DARTH VADER IS TRYING AVOID..." +2780 IF O=1 THEN 2810 +2790 PRINT"MISSED!! - - DRAT!!" +2800 GOTO 3210 +2810 PRINT"GOT HIM!!!" +2820 P(1)=P(1)-1000 +2830 GOTO 3210 +2840 IF A<100000! THEN 2490 +2850 P=P-1000 +2860 PRINT"LASERS FIRED!!" +2870 O1=INT(RND(1)*2+1) +2880 IF 1=1 THEN 2900 +2890 PRINT"I THINK...I THINK..." +2900 PRINT"MAYBE..." +2910 IF 0=1 THEN 2940 +2920 PRINT"MISSED!!...PHOOEY!!" +2930 GOTO 3210 +2940 PRINT"GOT HIM!!! GOOD SHOOTING ";A$;"!" +2950 P(1)=P(1)-(((200000!-A)/100000!)*3000) +2960 GOTO 3290 +2970 PRINT +2980 PRINT"APPROACHING, ";A$ +2990 B=INT(RND(1)*30000+60000!) +3000 A=A-B +3010 P=P-100 +3020 IF A<1 THEN 3040 +3030 GOTO 3210 +3040 PRINT TAB(15);">>COLLISION<<" +3050 Q=4 +3060 GOTO 5670 +3070 PRINT +3080 PRINT"RETREATING ";A$ +3090 B=RND(1)*40000!+10000 +3100 A=A+B +3110 P=P-100 +3120 IF A>175000! THEN 4290 +3130 GOTO 3210 +3140 PRINT A$;" YOUR RANGE IS ";A;", WE CANNOT RUN." +3150 A=200000! +3160 IF O1=1 THEN 4290 +3170 GOTO 3210 +3180 PRINT +3190 PRINT"RESTING, ";A$ +3200 P=P+1000 +3210 PRINT +3220 PRINT +3230 IF O=1 THEN 3290 +3240 PRINT +3250 PRINT +3260 PRINT TAB(10);"SENSOR READINGS ON DARTH VADER'S SHIP" +3270 PRINT +3280 PRINT"RANGE: ";INT(A);TAB(30);"POWER: ";INT(P(1)) +3290 IF A>200050! THEN 3350 +3300 IF P(1)<100 THEN 4510 +3310 IF P(1)<5000 THEN 4230 +3320 IF A>175000! THEN 4290 +3330 IF A<5000 THEN 4350 +3340 GOTO 3420 +3350 IF P(1)-(10000*H^.3)<2000 THEN 4230 +3360 P(1)=P(1)-(10000*H^.3) +3370 O1=INT(RND(1)*3.14159+1) +3380 PRINT +3390 IF O1=4 THEN 4920 +3400 A=INT(RND(1)*40000!+10000) +3410 PRINT"DARTH VADER IS ON US!!!!" +3420 IF B1<1.5E+06 THEN 4530 +3430 G=INT(RND(1)*30+1) +3440 IF G=3 THEN 6660 +3450 R=INT(RND(1)*3.14159+1) +3460 O=INT(RND(1)*2+1) +3470 IF R=1 THEN 3880 +3480 IF R=2 THEN 3730 +3490 IF R=4 THEN 4270 +3500 IF R=3 THEN 3750 +3510 IF A<100000! THEN 3430 +3520 PRINT +3530 IF A<10001 THEN 3930 +3540 IF A<100001! THEN 3800 +3550 IF A>200001! THEN 3430 +3560 PRINT +3570 P(1)=P(1)-1000 +3580 PRINT +3590 PRINT"DARTH VADER HAS FIRED LASERS..." +3600 O1=INT(RND(1)*2+1) +3610 IF O1=1 THEN 3640 +3620 PRINT"VH-OH..." +3630 GOTO 3650 +3640 PRINT"SCREEN AT FULL POWER..." +3650 IF O1=1 THEN 3680 +3660 PRINT"MISSED...WHEW!!!" +3670 GOTO 4050 +3680 IF O1=2 THEN 3700 +3690 PRINT" OOOOFF..." +3700 PRINT"DARTH VADER GOT US!!!" +3710 Q=1 +3720 GOTO 5670 +3730 IF A<100000! THEN 3430 +3740 IF A>10000 THEN 3430 +3750 IF A>10999 THEN 3770 +3760 GOTO 3430 +3770 IF A<1E+06 THEN 3790 +3780 GOTO 3430 +3790 REM X +3800 P(1)=P(1)-100 +3810 PRINT"DARTH VADER HAS LAUNCHED A WARHEAD..." +3820 IF O=1 THEN 3850 +3830 PRINT"MISSED!!!..HA!!" +3840 GOTO 4050 +3850 PRINT" HIT!!! OUR POWER DOWN!!" +3860 Q=2 +3870 GOTO 5670 +3880 IF A>200000! THEN 3430 +3890 IF A<11001 THEN 3940 +3900 IF A<100001! THEN 3800 +3910 IF A<200001! THEN 3570 +3920 REM X +3930 P(1)=P(1)-10 +3940 PRINT"DARTH VADER HAS FIRED A SHELL..." +3950 PRINT"I AM ATTEMPTING TO AVOID..." +3960 IF O=1 THEN 4020 +3970 PRINT"MISSED!!" +3980 IF O1=1 THEN 4050 +3990 PRINT"THAT'LL TEACH YOU WHAT CLEAN LIVING DOES "; +4000 PRINT"FOR YA', ";A$ +4010 GOTO 4050 +4020 PRINT"DIRECT HIT!!! POWER DOWN!!" +4030 Q=3 +4040 GOTO 5670 +4050 PRINT +4060 PRINT +4070 PRINT TAB(10);"STATUS OF MILLENNIUM FALCON" +4080 PRINT +4090 A=(A*.98) +4100 PRINT"POWER IN PRIMARY SCREENS:";INT(S1) +4110 PRINT"RANGE:";INT(A);TAB(30);"POWER:";INT(P) +4120 IF P<1 THEN 4580 +4130 IF O=1 THEN 4170 +4140 PRINT"DISTANCE TO YAVIN-4 :";B1;" KILOMETERS" +4150 Q=Q+1 +4160 PRINT"DAYS IN TRANSIT:";D9;" HYPER SPACE JUMPS:";H9 +4170 IF D9>=365 THEN 4570 +4180 IF B1>1E+06 THEN 4220 +4190 IF O=1 THEN 4530 +4200 PRINT"WE ARE GOING TO COLLIDE IN YAVIN-4 !!!" +4210 GOTO 4450 +4220 GOTO 1330 +4230 PRINT +4240 P(1)=P(1)+1000 +4250 PRINT"DARTH VADER RESTING, ";A$ +4260 GOTO 4050 +4270 IF A<150000! THEN 3430 +4280 IF A>200050! THEN 3290 +4290 B=RND(1)*40000!+10000 +4300 A=A+B +4310 PRINT +4320 PRINT"DARTH VADER APPROACHING, ";A$ +4330 P(1)=P(1)-100 +4340 GOTO 4050 +4350 B=RND(1)*40000!+10000 +4360 A=A+B +4370 PRINT +4380 PRINT"?"DARTH VADER RETREATING, ";A$ +4390 P(1)=P(1)-100 +4400 GOTO 4050 +4410 PRINT A$;", YOU HAVE JUST ENTERED HYPERSPACE TWICE...ENGINES BLOWN!!!" +4420 PRINT"WE'RE STUCK HERE FOR EVER!!!!" +4430 GOTO 4450 +4440 PRINT"YOU JUST HYPERED AWAY ALL OUR POWER..." +4450 PRINT"THAT WAS A PRETTY DUMB THING FOR YOU TO DO!! YOUR" +4460 PRINT"MISSION WAS TO DELIVER YOUR PASSENGERS AND THE VITAL INFORMATION" +4470 PRINT"TO YAVIN-4, NOT TO GET EVERYBODY KILLED!!" +4480 PRINT +4490 PRINT A$;", YOUR A FIEG!!" +4500 GOTO 4590 +4510 PRINT"DARTH VADER'S SHIP'S POWER GONE...NO LIFE FORMS PRESENT." +4520 GOTO 4550 +4530 PRINT"HA! HA! DARTH VADER GOT TOO CLOSE TO OUR HIDDEN BASE." +4540 PRINT"GROUND BASED LASERS DESTROYED HIS SHIP!!" +4550 PRINT"MISSION SUCCESSFUL!!!!" +4560 GOTO 4830 +4570 PRINT"WE HAVE BEEN IN TRANSIT FOR MORE THAN A YEAR" +4580 PRINT"DARTH VADER IS THE VICTOR!!!" +4590 PRINT"LIFE SUPPORT SYSTEMS GONE..." +4600 PRINT"LIFE SUPPORT FADING..." +4610 PRINT"C" +4620 PRINT" R" +4630 PRINT" E" +4640 PRINT" W" +4650 PRINT" " +4660 PRINT" D" +4670 PRINT" Y" +4680 PRINT" I" +4690 PRINT" N" +4700 PRINT" G" +4710 PRINT" ." +4720 PRINT" ." +4730 PRINT" ." +4740 PRINT" ." +4750 PRINT" ." +4760 PRINT" ." +4770 V=V+1 +4780 D3=INT(5*RND(1))+1 +4790 IF D3=5 THEN 6150 +4800 IF D3=4 THEN 6340 +4810 IF D3=3 THEN 6470 +4820 PRINT +4830 PRINT"PLAY AGAIN "; +4840 INPUT B$ +4850 N=0 +4860 IF B$="YES" THEN 260 +4870 IF B$="Y" THEN 130 +4880 C5$="LOST" +4890 PRINT"VERY WELL" +4900 GOTO 6100 +4910 REM X +4920 PRINT"DARTH VADER IS BEING SUCKED INTO A BLACK HOLE!!" +4930 GOTO 4550 +4940 PRINT"OOPS...WE ARE BEING SUCKED INTO A BLACK HOLE!!" +4950 PRINT"SORRY ABOUT THAT CHIEF." +4960 GOTO 4610 +4970 O2=INT(RND(1)*3.14159+1) +4980 B1=B1-((H^3*299793!)*60^2) +4990 IF B1<1E+06 THEN 4940 +5000 IF P(1)-(H^.3*10000)<10000 THEN 3350 +5010 PRINT"DARTH VADER FOLLOWED US THROUGH!!" +5020 P(1)=P(1)-(10000*(H^.3)) +5030 A=INT(RND(1)*200000!) +5040 IF O2=4 THEN 5060 +5050 GOTO 3210 +5060 P=P+1000 +5070 P(1)=P(1)+1000 +5080 GOTO 4050 +5090 PRINT +5100 PRINT"YOU ARE BOUND YAVIN-4, WHICH IS ONE LIGHT YEAR DISTANT." +5110 PRINT +5120 PRINT +5130 PRINT TAB(10);"HYPERDRIVE INFORMATION" +5140 PRINT +5150 FOR I=1 TO 12 +5160 PRINT TAB(1);"H-F";I;TAB(10);"VELOCITY";299793!*I^3;TAB(35);"KPS" +5170 NEXT I +5180 PRINT +5190 PRINT +5200 PRINT"HYPERDRIVE CONSUMES ENERGY AT A MINIMUM OF 10,1000 STROMS AND A" +5210 PRINT"MAXIMUM OF 21,074 STROMS, AS FOLLOWS:" +5220 PRINT +5230 PRINT +5240 PRINT"ENTER ANY NUMBER WHEN READY TO CONTINUE "; +5250 INPUT Z9 +5260 PRINT +5270 PRINT +5280 FOR I=1 TO 12 +5290 II=I^.3*10000 +5300 PRINT"HF -";I;TAB(9);"POWER CONSUMED -";II;" STROMS" +5310 NEXT I +5320 PRINT +5330 PRINT"HYPERSPACE NAVIGATION TENDS TO BE A BIT ERRATIC, RESULTING IN" +5340 PRINT"NAVIGATION ERRORS; THE HIGHER THE HF FACTOR THE GREATER THE" +5350 PRINT"POTENTIAL ERROR." +5360 PRINT +5370 PRINT"THE DISRUPTERS ARE USED IF ALL ELSE FAILS. DISRUPTERS" +5380 PRINT"CREATE A HIGH ENERGY FIELD IN SPACE. THIS FIELD" +5390 PRINT"CAN DESTROY YOU OR DARTH VADER. HOWEVER, DISRUPTERS" +5400 PRINT"SHOULD BE CONSIDERED AS THE LAST RESORT." +5410 RETURN +5420 Z=INT(RND(1)*3+1) +5430 PRINT +5440 PRINT"CONDITION RED - DISRUPTER COMMAND ACTIVATED" +5450 PRINT +5460 PRINT"INPUT THE DISRUPTER PASSWORD ";:INPUT P6$ +5470 IF P6$=P4$ THEN 5540 +5480 PRINT +5490 PRINT"ILLEGAL PASSWORD - ABORT DISRUPTER COMMAND" +5500 PRINT +5510 GOTO 1540 +5520 PRINT +5530 PRINT +5540 PRINT +5550 PRINT"PASSWORD CORRECT - ENGAGE DISRUPTER COMMAND" +5560 PRINT +5570 PRINT +5580 PRINT"DISRUPTERS ENGAGED..." +5590 PRINT"POWER BUILDING..." +5600 PRINT"DISRUPTERS FIRED!!!" +5610 IF Z=2 THEN 5640 +5620 PRINT"THE DISRUPTERS HAVE FAILED!!!!...GAD!!!" +5630 GOTO 4450 +5640 PRINT"THE DISRUPTERS HAVE DESTROYED DARTH VADER!!!!" +5650 PRINT +5660 GOTO 4510 +5670 IF Q=1 THEN 5710 +5680 IF Q=2 THEN 5750 +5690 IF Q=3 THEN 5790 +5700 IF Q=4 THEN 5840 +5710 S1=S1-(((200000!-A)/100000!)*3000) +5720 IF S1<1 THEN 5880 +5730 GOTO 5810 +5740 REM X +5750 S1=S1-1000 +5760 IF S1<1 THEN 5880 +5770 GOTO 5810 +5780 REM X +5790 S1=S1-100 +5800 IF S1-1 THEN 6040 +6010 PRINT"YOU CAN'T CHEAT ME ";A$;"!!" +6020 PRINT +6030 GOTO 5900 +6040 P=P-S3 +6050 S1=S1+S3 +6060 GOTO 4050 +6070 PRINT"ALL SCREEN ENERGY LOST." +6080 S1=0 +6090 RETURN +6100 PRINT +6110 PRINT +6120 END +6130 PRINT +6140 PRINT +6150 PRINT +6160 PRINT"TO: GRAND MOTH TARKIN" +6170 PRINT"FROM: LORD DARTH VADER DATE: 26575" +6180 PRINT +6190 PRINT"TARKIN, THE VESSEL CONTAINING PRINCESS LEIA HAS BEEN" +6200 PRINT"DESTROYED. ALL CREW MEMBERS AND PASSENGERS ARE DEAD." +6210 PRINT"THE PLAN OF THE DEATHSTAR ARE SAFE." +6220 PRINT"I SHALL RETURN SHORTLY, AFTER I HARASS PSGAMES AND" +6230 PRINT"SNARF THE *UPDATE* ON FORUM." +6240 PRINT +6250 PRINT +6260 PRINT" LORD DARTH VADER" +6270 PRINT +6280 PRINT +6290 PRINT +6300 PRINT +6310 GOTO 4830 +6320 STOP +6330 PRINT +6340 PRINT +6350 PRINT"TO: REBEL BASES ON YAVIN-4" +6360 PRINT"FROM: SCOUT SHIP #13 DATE: 26768" +6370 PRINT +6380 PRINT"REGRET TO INFORM YOU THAT SPACE WRECKAGE WAS DISCOVERED" +6390 PRINT"IN SECTION #6. THOUGHT TO BE REMAINS OF THE MILLENNIUM" +6400 PRINT"FALCON. NO SURVIVORS." +6410 PRINT +6420 PRINT +6430 PRINT" CAPT. ERNEST" +6440 PRINT +6450 PRINT +6460 GOTO 4830 +6470 PRINT +6480 PRINT +6490 PRINT +6500 PRINT"TO: STARFLEET COMMAND" +6510 PRINT"FROM: USS ENTERPRISE STARDATE: 2324" +6520 PRINT"OFFICER REPORTING: CAPTAIN JAMES T. KIRK" +6530 PRINT +6540 PRINT +6550 PRINT"AFTER A LONG TOUR OF QUADANT H9 THE ENTERPRISE ENTERED" +6560 PRINT"A SPACE STORM WHICH PUT US OFF COURSE. LONG RANGE" +6570 PRINT"SENORS DETECTED A SMALL MASS OF DEBRIS. AFTER CLOSE" +6580 PRINT"INSPECTION FIRST OFFICER SPOCK DETERMINED THAT IT WAS" +6590 PRINT"A SPACE VESSEL BUILT BY A PRIMITIVE RACE." +6600 PRINT +6610 PRINT" USS ENTERPRISE" +6620 PRINT" CAPTAIN JAMES T. KIRK" +6630 PRINT +6640 PRINT +6650 GOTO 4830 +6660 PRINT +6670 PRINT"LUCK...LUCK...LUCK..." +6680 PRINT +6690 PRINT"DARTH VADER LURKING, ";A$ +6700 GOTO 3450 +6710 END +6720 PRINT"1) HEAVY GUNS 4)APPROACH 7) ENTER HYPERSPACE" +6730 PRINT"2) WARHEADS 5) RETREAT 8) DISRUPTERS" +6740 PRINT"3) LASERS 6) CONTINUE TO YAVIN-4 9) DEFLECTOR SCREEN" +6750 PRINT +6760 RETURN diff --git a/cpm/xformer.txt b/cpm/xformer.txt new file mode 100644 index 0000000..cdd6c4c --- /dev/null +++ b/cpm/xformer.txt @@ -0,0 +1,565 @@ +1 CLEAR +2 RESTORE +10 REM BRUCE A. KIMBALL/JANUARY 29,1983 +15 REM ***** INTRODUCTION SECTION ***** +20 PRINT CHR$(26) +30 FOR A=1 TO 53:PRINT CHR$(160);:NEXT A +40 PRINT +50 PRINT:PRINT TAB(15) "TRANSFORMER DESIGNER" +60 FOR A=1 TO 53:PRINT CHR$(160);:NEXT A +70 PRINT:PRINT +80 PRINT "THIS PROGRAM WILL CALCULATE THE NECESSARY NUMBER OF" +85 PRINT +90 PRINT "TURNS AND THE REQUIRED CORE PRODUCT GIVEN PARAMETERS" +95 PRINT +100 PRINT "SUCH AS FREQUENCY, CURRENT DENSITY, SECONDARY LEVELS" +105 PRINT +110 PRINT "AND FLUX DENSITY." +115 PRINT +120 PRINT "THIS PROGRAM WILL ALSO CONDUCT A 'CORE SEARCH' IF A" +125 PRINT +130 PRINT "CROSS SECTIOAL AREA IS NOT SPECIFIED. THIS SEARCH" +135 PRINT +140 PRINT "WILL RESULT IN A NUMBER OF DESIGNS BASED ON CORES IN" +145 PRINT +150 PRINT "THE MAGNETICS INC. CATALOG AND LIMITED BY THE USERS" +155 PRINT +160 PRINT "AREA AND CORE PRODUCT DESCRIPTION." +165 PRINT +170 LINE INPUT "READY TO CONTINUE ---(Y/N)---> ";A$ +180 IF A$="Y" THEN 200 +190 SYSTEM +200 REM ***** GATHER INFORMATION ***** +210 PRINT CHR$(26) +215 FOR A=1 TO 53:PRINT CHR$(160);:NEXT A +220 PRINT:PRINT +225 PRINT TAB(15) "OPERATIONAL DATA" +235 FOR A=1 TO 53:PRINT CHR$(160);:NEXT A +240 PRINT:PRINT +245 INPUT "WHAT IS YOUR CURRENT DENSITY (CM/A) ";DENSITY +250 PRINT +255 INPUT "ENTER THE OPERATIONAL FREQUENCY (HZ) ";FREQUENCY +260 PRINT +265 INPUT "ENTER THE OPERATIONAL FLUX DENSITY (GAUSS) ";FLUX +266 PRINT +267 FLX=FLUX +270 LINE INPUT "ENTER WAVESHAPE (SINUSOID/SQUARE) ";WAVESHAPE$ +275 IF WAVESHAPE$="SQUARE" THEN CONSTANT=4:GOTO 280 +276 IF WAVESHAPE$="SINUSOID" THEN CONSTANT=4.44:GOTO 280 +277 GOTO 266 +280 PRINT +281 INPUT "NUMBER OF SECONDARIES ";NS +285 PRINT +290 INPUT "PRIMARY VOLTAGE (RMS) ";VP +300 REM ***** OUTPUT DATA ***** +310 PRINT CHR$(26) +315 FOR A=1 TO 53:PRINT CHR$(160);:NEXT A +320 PRINT:PRINT +325 PRINT TAB(20) "OUTPUT DATA" +335 FOR A=1 TO 53:PRINT CHR$(160);:NEXT A +340 PRINT:PRINT +345 FOR A=1 TO NS +350 PRINT "OUTPUT #";A +353 PRINT +355 INPUT " VOLTAGE=";V(A) +357 PRINT +360 INPUT " CURRENT=";I(A) +363 TOTALPOWER=TOTALPOWER+(V(A)*I(A)) +365 PRINT:NEXT A +370 PRODUCT=(17.26*DENSITY*TOTALPOWER)/(FREQUENCY*FLUX):PDT=PRODUCT +375 PRINT CHR$(26) +380 FOR A=1 TO 53:PRINT CHR$(160);:NEXT A +383 PRINT:PRINT +385 PRINT TAB(20) "CORE SELECTION" +390 FOR A=1 TO 53:PRINT CHR$(160);:NEXT A +391 PRINT:PRINT:PRINT "MINIMUM CORE PRODUCT = ";PRODUCT;" QUARTIC INCHES":PRINT +392 PRINT "PLEASE SELECT ONE OPTION:" +393 PRINT:PRINT +394 PRINT " (A) USER SELECTED CORE" +395 PRINT +396 PRINT " (B) USER SELECTED CORE AREA" +397 PRINT +398 PRINT " (C) USER SELECTED PRODUCT" +399 PRINT:PRINT +400 LINE INPUT "PLEASE CHOOSE ONE ---A/B/C---> ";O$ +401 IF O$="A" THEN 410 +402 IF O$="B" THEN 420 +403 IF O$="C" THEN 420 +409 GOTO 375 +410 PRINT CHR$(26):PRINT "MINIMUM CORE PRODUCT = ";PRODUCT;" SQ.IN." +411 PRINT:INPUT "PLEASE ENTER YOUR CORE AREA ---(SQ.IN.)---> ";COREAREA +412 PRINT +413 INPUT "PLEASE ENTER YOUR WINDOW AREA ---(SQ.IN.)---> ";WINDOWAREA +414 PRINT +415 IF WINDOWAREA*COREAREA"A" THEN GOTO 420 +598 GOTO 1 +600 PRINT CHR$(26) +610 FOR A=1 TO NS +615 PRINT TAB(10) "DATA FOR OUTPUT #";A +620 PRINT TAB(10) "-------------------" +625 PRINT +630 PRINT "SECONDARY #";A;" TURNS = ";N(A) +635 PRINT +640 PRINT "SECONDARY #";A;" POWER = ";V(A)*I(A);" WATTS" +645 PRINT +650 PRINT "SECONDARY #";A;" VOLTAGE = ";V(A) +655 PRINT +660 PRINT "SECONDARY #";A;" CURRENT = ";I(A) +665 PRINT +670 PRINT "SECONDARY #";A;" WIRE AREA = ";(WIREAREA(A)*1273239.5#)/N(A);" CM" +675 PRINT +680 PRINT "CONTRIBUTION TO BUILD = ";(WIREAREA(A)*100)/TOTALWIREAREA;" %" +685 PRINT +686 PRINT "PRIMARY TURNS = ";NP +687 PRINT +688 PRINT "PRIMARY WIRE AREA = ";(WIREAREAP*1273239.5#)/NP;" CM" +689 PRINT +690 LINE INPUT "READY TO CONTINUE---(Y/N)---> ";H$ +692 IF H$="Y" THEN 695 +693 IF O$<>"A" THEN A=0:GOTO 420 +694 GOTO 1 +695 PRINT CHR$(26) +696 NEXT A +697 PRINT:LINE INPUT "DO YOU NEED HARD COPY FOR THIS CORE (Y/N) ? ";D$:IF D$="Y" THEN GOTO 800 +698 IF O$="A" THEN GOTO 1 +699 GOTO 420 +700 PRINT CHR$(26):PRODUCT=PDT +701 LINE INPUT "CORE TYPE-(LAMININATION,TOROID OR CUT) ";CORETYPE$ +702 IF CORETYPE$="LAMINATION" THEN CT=1:GOTO 707 +703 IF CORETYPE$="TOROID" THEN CT=2:GOTO 707 +704 IF CORETYPE$="CUT" THEN CT=3:GOTO 707 +705 PRINT:GOTO 701 +706 PRINT +707 IF O$="C" THEN 735 +708 LINE INPUT "SPECIFY WINDOW OR CROSS SECTION AREA (W/C) ";A$ +710 IF (A$="C" AND CT=1) THEN 725 +711 IF A$="W" THEN 720 +715 PRINT:PRINT "CROSS SECTON IS NOT A VARIABLE FOR THIS CORE":GOTO 708 +716 PRINT:GOTO 708 +720 PRINT:PRINT "WINDOWAREA IS NOT VARIABLE FOR ";CORETYPE$;" TYPE CORE":PRINT:GOTO 708 +725 PRINT:INPUT "WHAT IS CROSS SECTION (SQ.IN.) ";SELECTEDCROSSAREA:GOTO 739 +730 PRINT:INPUT "WHAT IS WINDOW AREA (SQ.IN.) ";SELECTEDWINDOWAREA:GOTO 739 +735 PRINT:INPUT "WHAT IS YOUR PRODUCT (QUARTIC INCHES) ";SELECTEDPRODUCT +736 IF SELECTEDPRODUCT>=PRODUCT THEN 739 +737 PRINT:PRINT "*** SELECTED PRODUCT IS LESS THAN MINIMUM ***":GOTO 735 +739 PRINT CHR$(26):PRINT TAB(15) "***** CORE SEARCH *****" +740 READ CORETYPE,WINDOWAREA,COREAREA,CORE$ +741 IF COREAREA+WINDOWAREA=0 THEN 782 +745 IF CORETYPE<>CT THEN 740 +750 IF A$="C" THEN COREAREA=SELECTEDCROSSAREA +755 IF A$="W" THEN WINDOWAREA=SELECTEDWINDOWAREA +757 IF O$="C" THEN 770 +760 IF WINDOWAREA*COREAREA0 THEN 785 +782 PRINT CHR$(26) +783 PRINT "*** CORE NOT FOUND IN ";CORETYPE$;" DATA ***" +784 PRINT:PRINT:LINE INPUT "READY TO CONTINUE ---> ";Z$:GOTO 1 +785 PRINT:PRINT:PRINT +790 PRINT "FOUND CORE:" +791 PRINT:PRINT:PRINT TAB(10) "CORE NUMBER = ";CORE$ +792 PRINT:PRINT TAB(10) "CORE CROSS SECTION = ";COREAREA;" SQ.IN." +793 PRINT:PRINT TAB(10) "CORE WINDOW AREA = ";WINDOWAREA;" SQ.IN." +794 PRINT:PRINT TAB(10) "CORE PRODUCT = ";PRODUCT;" QUARTIC INCHES" +795 PRINT:PRINT:PRINT +797 LINE INPUT "READY TO CONTINUE ---> ";T$ +798 IF T$="N" THEN PRINT CHR$(26):GOTO 790 +799 PRINT CHR$(26):RETURN +800 PRINT CHR$(26) +810 PRINT "*********** PRINTING ***********" +815 LPRINT "CORE TYPE = ";CORETYPE$ +820 LPRINT "CORE NUMBER = ";CORE$ +823 LPRINT "CORE PRODUCT = ";PRODUCT;" QUARTIC INCHES" +825 LPRINT "WINDOWAREA = ";WINDOWAREA;" SQUARE INCHES" +830 LPRINT "CROSS SECTION AREA = ";COREAREA;" SQUARE INCHES" +833 LPRINT "TOTAL BUILD = ";BUILD;" %" +835 LPRINT "FLUX DENSITY = ";FLUX*10000;" GAUSS" +840 LPRINT "FREQUENCY = ";FREQUENCY;" HERTZ" +845 LPRINT "INPUT WAVEFORM = ";WAVESHAPE$ +850 LPRINT "PRIMARY VOLTAGE = ";VP;"VOLTS RMS" +855 LPRINT "PRIMARY CURRENT = ";IP;" AMPS RMS" +860 LPRINT "PRIMARY WIRE AREA = ";(WIREAREAP*1273239.5#)/NP;" CM" +865 LPRINT "PRIMARY CONTRIBUTION TO BUILD = ";(WIREAREAP*100)/TOTALWIREAREA;" %" +870 LPRINT "PRIMARY POWER = ";(TOTALPOWER/.85);" WATTS" +875 LPRINT "CURRENT DENSITY = ";DENSITY;" CM/A" +880 LPRINT "TOTAL SECONDARY POWER = ";TOTALPOWER;" VA" +885 LPRINT "NUMBER OF PRIMARY TURNS = ";NP;" TURNS" +887 FOR A=1 TO NS +888 LPRINT "SECONDARY #";A;" TURNS = ";N(A) +889 LPRINT "SECONDARY #";A;" POWER = ";V(A)*I(A);" WATTS" +890 LPRINT "SECONDARY #";A;" VOLTAGE = ";V(A);" VOLTS" +891 LPRINT "SECONDARY #";A;" CURRENT = ";I(A);" AMPS" +892 LPRINT "SECONDARY #";A;" WIRE AREA = ";(WIREAREA(A)*1273239.5#)/N(A);" CM" +893 LPRINT "SECONDARY #";A;" BUILD CONTRIBUTION = ";(WIREAREA(A)*100)/TOTALWIREAREA;" %" +894 NEXT A +895 FOR A=1 TO 18:LPRINT:NEXT A +896 LPRINT:LPRINT "ENGINEER _____________________","DATE ____________________" +897 LPRINT:LPRINT "MATERIAL _____________________","THICKNESS _______________" +898 LPRINT:LPRINT "TRANS. # _____________________","WEIGHT __________________" +899 GOTO 698 +900 DATA 1,.563,.0625,"DU-1" +901 DATA 1,.156,.0353,"DU-18" +902 DATA 1,.088,.0156,"DU-124" +903 DATA 1,.304,.0625,"DU-25" +904 DATA 1,1.125,.1406,"DU-37" +905 DATA 1,2,.25,"DU-50" +906 DATA 1,.039,.0038,"DU-63" +907 DATA 1,6.125,.7656,"DU-87" +908 DATA 1,.088,.0156,"DU-124" +909 DATA 1,.312,.0625,"U-BE" +910 DATA 1,.293,.0973,"UI-312" +911 DATA 1,.422,.1406,"UI-375" +912 DATA 1,.0413,.0225,"EL-32-33" +913 DATA 1,.125,.0625,"EL-24-25" +914 DATA 1,.104,.0196,"E-35" +915 DATA 1,.166,.1406,"E-38" +916 DATA 1,.125,.0625,"EE-24-25" +917 DATA 1,.172,.1406,"EE-26-27" +918 DATA 1,.039,.0156,"EE-28-29" +919 DATA 1,.026,.0088,"EE-30-31" +920 DATA 1,.041,.0196,"EE-32-33" +921 DATA 1,.129,.0353,"EE-186-187" +922 DATA 1,.574,.7656,"EI-11" +923 DATA 1,.255,.25,"EI-22" +924 DATA 1,.094,.0625,"EI-25" +925 DATA 1,.125,.1406,"EI-27" +926 DATA 1,.031,.0156,"EI-29" +927 DATA 1,.030,.0196,"EI-33" +928 DATA 1,.188,.25,"EI-50" +929 DATA 1,.422,.5625,"EI-75" +930 DATA 1,.010,.0088,"EI-093" +931 DATA 1,.016,.0088,"EI-095" +932 DATA 1,.047,.0353,"EI-186" +933 DATA 1,.082,.0353,"EI-187" +934 DATA 1,.246,.0625,"EI-201" +935 DATA 1,.234,.1406,"EI-375" +936 DATA 1,.293,.3906,"EI-625" +937 DATA 1,.188,.1183,"F-12" +938 DATA 1,.188,.1183,"F-12M" +939 DATA 1,.188,.1183,"F-13" +940 DATA 1,.047,.0353,"F-14" +941 DATA 1,.125,.0625,"F-15M" +942 DATA 1,.371,.1406,"F-20" +943 DATA 1,.257,.2500,"F-21" +944 DATA 1,.260,.2500,"F-50" +945 DATA 1,.1725,.1406,"F-26-27" +946 DATA 1,.0391,.0156,"F-28-29" +947 DATA 1,.086,.0353,"F-187" +948 DATA 1,.082,.0353,"F-187M" +949 DATA 1,.015,.0088,"F-094" +950 DATA 1,.750,.2500,"L-7" +951 DATA 1,.705,.1918,"L-101" +952 DATA 1,.196,.0156,"R-100" +953 DATA 1,.442,.0353,"R-101" +954 DATR 1,.994,.0353,"R-103" +955 DATA 1,2.074,.0353,"R-106" +956 DATA 1,.110,.0039,"R-153" +1000 DATA 3,1.0156,.1175,"ME1573" +1001 DATA 3,.438,.09375,"ME2160" +1002 DATA 3,.5625,.05273,"ME0043" +1003 DATA 3,.1875,.125,"ME1237" +1004 DATA 3,1.0156,.1875,"ME0025" +1005 DATA 3,.625,.1875,"ME1555" +1006 DATA 3,.594,.234375,"ME2540" +1007 DATA 3,1.5,.3125,"ME0067" +1008 DATA 3,.438,.1875,"ME0053" +1009 DATA 3,.7815,.1875,"ME2180" +1010 DATA 3,1.5,.28125,"ME3800" +1011 DATA 3,.7815,.28125,"ME1559" +1012 DATA 3,.5625,.28125,"ME1151" +1013 DATA 3,.859375,.375,"ME6200" +1014 DATA 3,2,.46875,"ME3001" +1015 DATA 3,1.586375,.508125,"ME1558" +1016 DATA 3,1.876,.25,"ME1551" +1017 DATA 3,1.5,.375,"ME1810" +1018 DATA 3,.7815,.5,"ME0078" +1019 DATA 3,1.5,.5,"ME0090" +1020 DATA 3,3,.5,"ME1440" +1021 DATA 3,3.6693,.625,"ME1560" +1022 DATA 3,1.75,.875,"ME1570" +1023 DATA 3,.625,.5625,"ME1561" +1024 DATA 3,3,.78125,"ME1562" +1025 DATA 3,7.3125,.46875,"ME1567" +1026 DATA 3,1.750,.875,"ME1570" +1027 DATA 3,.527625,.34375,"ME1572" +1028 DATA 3,1.091094,.375,"ME1571" +1029 DATA 3,1.25,.38,"ME1600" +1030 DATA 3,1.5,.75,"ME2250" +1031 DATA 3,3,.75,"ME1566" +1032 DATA 3,1.22,.75,"ME3002" +1033 DATA 3,6.51,1.01,"ME1565" +1034 DATA 3,1.69,1.13,"ME9200" +2000 DATA 2,.03,.02,"50944" +2001 DATA 2,.03,.04,"50815" +2002 DATA 2,.05,.01,"50937" +2003 DATA 2,.05,.46,"50492" +2004 DATA 2,.06,.004,"50302" +2005 DATA 2,.0573,.0075,"50927" +2006 DATA 2,.066,.02068,"50787" +2007 DATA 2,.066,.0275,"50940" +2008 DATA 2,.068,.03416,"50871" +2009 DATA 2,.07068,.025,"50726" +2010 DATA 2,.07068,.0375,"50798" +2011 DATA 2,.07694,.0095,"50924" +2012 DATA 2,.07694,.01169,"50740" +2013 DATA 2,.07694,.03401,"50853" +2014 DATA 2,.07694,.040875,"50912" +2015 DATA 2,.07694,.039788,"50861" +2016 DATA 2,.07694,.0195,"50831" +2017 DATA 2,.07694,.03125,"50686" +2018 DATA 2,.07694,.02239,"50854" +2019 DATA 2,.07694,.02886,"50938" +2020 DATA 2,.077,.025,"50848" +2021 DATA 2,.0924,.0098,"50810" +2022 DATA 2,.0924,.01946,"50935" +2023 DATA 2,.0951,.00825,"50822" +2024 DATA 2,.11045,.0118,"50695" +2025 DATA 2,.11045,.00406,"50402" +2026 DATA 2,.11045,.00394,"50367" +2027 DATA 2,.11045,.0078,"50153" +2028 DATA 2,.11045,.01562,"50681" +2029 DATA 2,.11045,.00969,"50934" +2030 DATA 2,.11045,.01175,"50933" +2031 DATA 2,.11045,.05625,"50916" +2032 DATA 2,.11045,.03125,"50319" +2033 DATA 2,.11045,.05,"50233" +2034 DATA 2,.11045,.0585,"50844" +2035 DATA 2,.11045,.05312,"50820" +2036 DATA 2,.11045,.0625,"50789" +2037 DATA 2,.11045,.04407,"50929" +2038 DATA 2,.11045,.078125,"50915" +2039 DATA 2,.12378,.0378,"50628" +2040 DATA 2,.12946,.007875,"50708" +2041 DATA 2,.12946,.061539,"50758" +2042 DATA 2,.12946,.04215,"50836" +2043 DATA 2,.139205,.007426,"50607" +2044 DATA 2,.15067,.003875,"50707" +2045 DATA 2,.15067,.0078,"50154" +2046 DATA 2,.15067,.0156,"50155" +2047 DATA 2,.15067,.03125,"50376" +2048 DATA 2,.15067,.00775,"50890" +2049 DATA 2,.15067,.0156,"50796" +2050 DATA 2,.15067,.03125,'50601" +2051 DATA 2,.15067,.0625,"54879" +2052 DATA 2,.15067,.014508,"50818" +2053 DATA 2,.15067,.0585,"50698" +2054 DATA 2,.15067,.080262,"50851" +2055 DATA 2,.15067,.149375,"50945" +2056 DATA 2,.15067,.07825,"50659" +2057 DATA 2,.1735,.017202,"50821" +2058 DATA 2,.1735,.04675,"50859" +2059 DATA 2,.1772,.009875,"50687" +2060 DATA 2,.19635,.00156,"50418" +2061 DATA 2,.19635,.003125,"50158" +2062 DATA 2,.19635,.0039375,"50107" +2063 DATA 2,.19635,.005125,"50576" +2064 DATA 2,.19635,.02185,"50919" +2065 DATA 2,.19635,.0039375,"50368" +2066 DATA 2,.19635,.0078125,"50056" +2067 DATA 2,.19635,.015625,"50218" +2068 DATA 2,.19635,.046875,"50217" +2069 DATA 2,.19635,.019375,"50895" +2070 DATA 2,.19635,.034125,"50657" +2071 DATA 2,.19635,.03822,"50656" +2072 DATA 2,.19635,.070125,"50569" +2073 DATA 2,.19635,.0188,"50942" +2074 DATA 2,.19635,.015625,"50000" +2075 DATA 2,.19635,.0235,"50632" +2076 DATA 2,.19635,.25,"50176" +2077 DATA 2,.19635,.039,"50904" +2078 DATA 2,.19635,.046875,"50768" +2079 DATA 2,.19635,.0625,"50216" +2080 DATA 2,.19635,.078125,"50760" +2081 DATA 2,.19635,.09375,"50332" +2082 DATA 2,.19635,.125,"50110" +2083 DATA 2,.19635,.0325,"50533" +2084 DATA 2,.19635,.0195,"50360" +2085 DATA 2,.19635,.029172,"50593" +2086 DATA 2,.19635,.0585,"50651" +2087 DATA 2,.19635,.078,"50359" +2088 DATA 2,.19635,.04375,"50677" +2089 DATA 2,.19635,.0315,"50743" +2090 DATA 2,.19635,.03525,"50742" +2091 DATA 2,.19635,.1125,"50705" +2092 DATA 2,.19635,.025,"50905" +2093 DATA 2,.19635,.053125,"50685" +2094 DATA 2,.19635,.08193,"50832" +2095 DATA 2,.19635,.11,"50247" +2096 DATA 2,.19635,.03125,"50712" +2097 DATA 2,.19635,.0625,"50558" +2098 DATA 2,.19635,.07825,"50792" +2099 DATA 2,.19635,.09375,"50551" +2100 DATA 2,.19635,.125,"50637" +2101 DATA 2,.19635,.15625,"50885" +2102 DATA 2,.19635,.1875,"50733" +2103 DATA 2,.19635,.1525,"50201" +2104 DATA 2,.19635,.09375,"50649" +2105 DATA 2,.19635,.19875,"50782" +2106 DATA 2,.19635,.25,"50585" +2107 DATA 2,.2165,.0328125,"50333" +2108 DATA 2,.2206,.0059,"50354" +2109 DATA 2,.2206,.00795,"50522" +2110 DATA 2,.2231,.27925,"50949" +2111 DATA 2,.2290,.01598,"50241" +2112 DATA 2,.2290,.02205,"50171" +2113 DATA 2,.2376,.1,"50437" +2114 DATA 2,.2463,.25,"50253" +2115 DATA 2,.2489,.003875,"50403" +2116 DATA 2,.2489,.00775,"50767" +2117 DATA 2,.2489,.0116875,"50138" +2118 DATA 2,.2489,.017578,"50736" +2119 DATA 2,.2489,.015625,"50713" +2120 DATA 2,.2489,.04675,"50930" +2121 DATA 2,.2489,.0819375,"50672" +2122 DATA 2,.2489,.0625,"50662" +2123 DATA 2,.2827,.00375,"50404" +2124 DATA 2,.2827,.004375,"50377" +2125 DATA 2,.2827,.0375,"50296" +2126 DATA 2,.2827,.1125,"50741" +2127 DATA 2,.2827,.1406,"50732" +2128 DATA2,.2827,.025,"50745" +2129 DATA 2,.2827,.3075,"50818" +2130 DATA 2,.2827,.09375,"50177" +2131 DATA 2,.3068,.00939,"50624" +2132 DATA 2,.3067,.00406,"50485" +2133 DATA 2,.3067,.009375,"50420" +2134 DATA 2,.3067,.0078,"50057" +2135 DATA 2,.3067,.01175,"50238" +2136 DATA 2,.3067,.015625,"50331" +2137 DATA 2,.3067,.0195625,"50625" +2138 DATA 2,.3067,.015625,"50063" +2139 DATA 2,.3067,.03125,"50033" +2140 DATA 2,.3067,.046975,"50671" +2141 DATA 2,.3067,.003,"50362" +2142 DATA 2,.3067,.03525,"50076" +2143 DATA 2,.3067,.046875,"50007" +2144 DATA 2,.3067,.05868,"50161" +2145 DATA 2,.3067,.0703,"50094" +2146 DATA 2,.3067,.09375,"50640" +2147 DATA 2,.3067,.105375,"50361" +2148 DATA 2,.3067,.1406,"50913" +2149 DATA 2,.3067,.1875,"50780" +2150 DATA 2,.3067,.0625,"50167" +2151 DATA 2,.3067,.125,"50668" +2152 DATA 2,.3067,.15625,"50768" +2153 DATA 2,.3067,.1875,"50785" +2154 DATA 2,.3067,.0819,"50900" +2155 DATA 2,.3067,.1172,"50917" +2156 DATA 2,.3067,.0625,"50728" +2157 DATA 2,.3067,.09375,"50817" +2158 DATA 2,.3067,.1640,"50023" +2159 DATA 2,.3067,.4375,"50737" +2160 DATA 2,.3147,.0264,"50588" +2161 DATA 2,.3318,.007,"50855" +2162 DATA 2,.3318,.0039,"50267" +2163 DATA 2,.3318,.0222,"50513" +2164 DATA 2,.3318,.0156,"50002" +2165 DATA 2,.3318,.1,"50852" +2166 DATA 2,.3318,.0531,"50509" +2167 DATA 2,.3318,.0625,"50249" +2168 DATA 2,.3318,.07825,"50519" +2169 DATA 2,.3318,.09375,"50133" +2170 DATA 2,.3318,.125,"50837" +2171 DATA 2,.3318,.1518,"5046X" +2172 DATA 2,.3318,.17375,"50468" +2173 DATA 2,.3318,.1812,"50893" +2174 DATA 2,.3718,.0038,"50356" +2175 DATA 2,.3718,.046875,"50230" +2176 DATA 2,.3718,.0715,"50838" +2177 DATA 2,.3739,.0160,"50242" +2178 DATA 2,.3848,.225,"50520" +2179 DATA 2,.3848,.0625,"50178" +2180 DATA 2,.3848,.125,"50179" +2181 DATA 2,.4128,.0042,"50394" +2182 DATA 2,.4417,.005,"50484" +2183 DATA 2,.4417,.01175,"50006" +2184 DATA 2,.4417,.0078,"50143" +2185 DATA 2,.4417,.0156,"50423" +2186 DATA 2,.4417,.0235,"50003" +2187 DATA 2,.4417,.00625,"50329" +2188 DATA 2,.4417,.0156,"50134" +2189 DATA 2,.4417,.0235,"50523" +2190 DATA 2,.4417,.03125,"50061" +2191 DATA 2,.4417,.0468,"50168" +2192 DATA 2,.4417,.0625,"50627" +2193 DATA 2,.4417,.125,"50415" +2194 DATA 2,.4417,.03525,"50106" +2195 DATA 2,.4417,.04687,"50084" +2196 DATA 2,.4417,.0703,"50034" +2197 DATA 2,.4417,.09375,"50099" +2198 DATA 2,.4417,.1875,"50771" +2199 DATA 2,.4417,.0244,"50527" +2200 DATA 2,.4417,.04085,"50364" +2201 DATA 2,.4417,.13656,"50363" +2202 DATA 2,.4417,.04675,"50923" +2203 DATA 2,.4417,.0625,"50318" +2204 DATA 2,.4417,.09375,"50188" +2205 DATA 2,.4417,.125,"50481" +2206 DATA 2,.4417,.1875,"50777" +2207 DATA 2,.4417,.25,"50124" +2208 DATA 2,.4417,.0351,"50674" +2209 DATA 2,.4417,.0390,"50226" +2210 DATA 2,.4417,.0781,"50193" +2211 DATA 2,.4417,.0975,"50931" +2212 DATA 2,.4417,.1172,"50189" +2213 DATA 2,.4417,.2343,"50776" +2214 DATA 2,.4417,.245,"50464" +2215 DATA 2,.4417,.0705,"50697" +2216 DATA 2,.4417,.1406,"50514" +2217 DATA 2,.4417,.1875,"50827" +2218 DATA 2,.4417,.375,"50779" +2219 DATA 2,.4417,.4687,"50901" +2220 DATA 2,.4417,.2187,"50719" +2221 DATA 2,.4417,.2734,"50786" +2222 DATA 2,.4417,.375,"50902" +2223 DATA 2,.4417,.5,"50259" +2224 DATA 2,.4417,.375,"50766" +2225 DATA 2,.4417,1.125,"50744" +2226 DATA 2,.5026,.0375,"50203" +5000 DATA 0,0,0,0 diff --git a/cpm/xref.txt b/cpm/xref.txt new file mode 100644 index 0000000..376f78b --- /dev/null +++ b/cpm/xref.txt @@ -0,0 +1,159 @@ +2 ' +4 'SEE INTERFACE AGE -- JUNE 1981 -- PAGE 98 +6 ' +10 PRINT:PRINT"CROSSREF - BASIC-80 VERSION OF 05/19/80" +20 PRINT:PRINT"COPYRIGHT (C) 1980 BY ADVANCED INFORMATICS" +30 PRINT:PRINT"LISTS ALL VARIABLES & REFERENCED LINE #'S" +40 PRINT"-------------------------------------------" +50 ' +60 DEFINT I-J:LW=80 +70 ON ERROR GOTO 1480 +80 DIM RW$(126),PT%(25),F$(10) +90 I=400:DIM VNXT%(I+90),V$(I+90),FRST%(I),LST%(I),RFL%(5*I),NXT%(5*I) +100 ' +110 ' RESERVED WORDS +120 ' +130 DATA ABS,AND,ASC,AS,ATN,AUTO,CDBL,CHR$,CINT,CLEAR,CLOSE,CONSOLE,CONT +140 DATA COS,CSNG,CVD,CVI,CVS,DATA +150 DATA DEFDBL,DEFINT,DEFSNG,DEFSTR,DEFUSR,DEF,DELETE,DIM,DSKI$,DSKO$,DSKF +160 DATA EDIT,ELSE,END,EOF,EQV,ERASE,ERL,ERR,EXP,FIELD,FILES,FIX,FOR +170 DATA FRE,GET,GOSUB,GOTO,HEX$ +180 DATA IF,IMP,INPUT,INP,INSTR,INT,KILL,LEFT$,LEN,LET,LINE +190 DATA LIST,LLIST,LOAD,LOC,LOF,LOG,LPRINT,LSET,MERGE,MID$,MKD$,MKI$ +200 DATA MKS$,MOD,MOUNT,NAME,NEW,NEXT,NOT,NULL,OCT$,ON,OPEN,OR,OUT +210 DATA PEEK,POKE,POS,PRINT,PUT +220 DATA READ,REM,RENUM,RESET,RESTORE,RESUME,RETURN,RIGHT$,RND,RSET,RUN +230 DATA SAVE,SGN,SIN,SPACE$,SPC(,SQR,STEP,STOP,STR$,STRING$,SWAP +240 DATA TAB(,TAN,THEN,TO,TROFF,TRON,UNLOAD +250 DATA USING,USR,VAL,VARPTR,WAIT,WIDTH,XOR,"\" +260 ' +270 'FILL ARRAY WITH RESERVED WORDS +280 ' +290 RW=0 +300 READ RW$ +310 RW=RW+1:RW$(RW)=RW$:IF RW$="\" THEN 350 +320 I=ASC(RW$)-ASC("A"):IF PT%(I)=0 THEN PT%(I)=RW +330 GOTO 300 +340 ' +350 FOR I=0 TO 25:IF PT%(I)=0 THEN PT%(I)=RW +360 NEXT +370 ' +380 'GET LIST OF FILE NAMES +390 ' +400 FX=0 +410 PRINT:PRINT " ASCII SAVED PROGRAM #" FX+1 " = ";:LINE INPUT L$ +420 IF L$="" THEN IF FX<1 THEN 570 ELSE 480 +430 IF INSTR(L$,".")=0 THEN L$=L$+".BAS" +440 NAME L$ AS L$ +450 FX=FX+1:F$(FX)=L$ +460 GOTO 410 +470 ' +480 PRINT:INPUT"DATE = ";D$ +490 PRINT:INPUT"1) CROSS REFERENCE 2) LIST 3) BOTH ";M +500 ' +510 'PROCESS LIST OF FILE NAMES +520 ' +530 FOR F=1 TO FX +540 CLOSE:OPEN"I",1,F$(F):PRG$="'"+F$(F)+"' - "+D$:GOSUB 610 +550 NEXT +560 LPRINT STRING$(65-LZ,CHR$(10)) +570 END +580 ' +590 'INITIALIZE FOR CROSS REFERENCE +600 ' +610 LC=0:BC=0:PZ=0:V$="":C$="":VC=91:RC=-1 +620 FOR I=0 TO 91:VNXT%(I)=-1:NEXT +630 IF M>1 THEN GOSUB 1520 +640 ' +650 ' INPUT LINE & EXTRACT LINE# +660 ' +670 IF EOF(1)THEN 1200 +680 LINE INPUT#1,L$:IF M>1 THEN GOSUB 1430:IF M=2 THEN 670 +690 LG=LEN(L$):BRNCH=0:ER$="":LC=LC+1:BC=BC+LG +700 LP=INSTR(L$," "):LN=VAL(LEFT$(L$,LP)):PRINT LN, +710 IF LN>32767 THEN LN=LN-65536! +720 ' +730 ' PARSE REST OF LINE +740 ' +750 LP=LP+1:IF LP>LG THEN GOSUB 1010:GOTO 670 +760 C$=MID$(L$,LP,1) +770 IF C$>="A"AND C$<="Z"THEN 890 ELSE IF C$>="0"AND C$<="9"THEN 1150 +780 IF C$=" "THEN 750 ELSE IF C$<>","THEN BRNCH=0 +790 IF C$=CHR$(34)THEN GOSUB 1010:LP=INSTR(LP+1,L$,C$):IF LP>0 THEN 750 ELSE 670 +800 IF C$="\"THEN GOSUB 1010:GOTO 670 +810 IF C$="&"THEN GOSUB 1010 :V$=C$:GOTO 750 +820 IF C$="$"OR C$="!"OR C$="%"OR C$="#"THEN GOSUB 1130:GOTO 750 +830 IF C$="("THEN GOSUB 1130 +840 GOSUB 1010:IF C$<>","THEN ER$="" +850 GOTO 750 +860 ' +870 ' TEST FOR COMMAND +880 ' +890 C=ASC(C$):P=PT%(C-ASC("A")):BRNCH=0 +900 IF CLP THEN P=P+1:GOTO 900 +920 GOSUB 1010:RW$=RW$(P) +930 IF RW$="DATA" THEN LP=INSTR(LP,L$,":"):IF LP>0 THEN 750 ELSE 670 +940 IF RW$="REM"THEN 670 +950 IF RW$="GOTO"OR RW$="GOSUB"OR RW$="THEN"OR RW$="ELSE"OR RW$="RESUME"THEN BRNCH=1 +960 IF RW$="ERASE"THEN ER$="("ELSE ER$="" +970 LP=LP+LEN(RW$)-1:GOTO 750 +980 ' +990 ' END VARIABLE +1000 ' +1010 IF V$=""THEN RETURN +1020 IF V$>="A"THEN V$=V$+ER$:C=ASC(V$)+1ELSE IF V$>="0"THEN V$=RIGHT$(" "+V$,5):C=VAL(LEFT$(V$,2)) ELSE 1090 +1030 IL=-1:I=C +1040 IF V$>V$(I)THEN IL=I:I=VNXT%(I):IF I>0 THEN 1040 ELSE 1060 +1050 IF V$=V$(I)THEN J=LST%(I-91):IF RFL%(J)=LN THEN 1090 ELSE RC=RC+1:NXT%(J)=RC:GOTO 1080 +1060 VC=VC+1:IF IL>=0 THEN VNXT%(IL)=VC +1070 V$(VC)=V$:VNXT%(VC)=I:RC=RC+1:FRST%(VC-91)=RC:I=VC +1080 RFL%(RC)=LN:NXT%(RC)=-1:LST%(I-91)=RC +1090 V$="":RETURN +1100 ' +1110 ' EXPAND VARIABLE +1120 ' +1130 IF V$<>""THEN V$=V$+C$ +1140 RETURN +1150 IF V$=""AND BRNCH=0 THEN 750 +1160 V$=V$+C$:GOTO 750 +1170 ' +1180 ' LIST VARIABLES +1190 ' +1200 IF M=2 THEN RETURN +1210 PZ=0:GOSUB 1520 +1220 FOR J=0 TO 91:V=J +1230 V=VNXT%(V):IF V<0 THEN 1340 +1240 IF LZ>56 THEN GOSUB 1400 ELSE SZ=SZ+1:IF SZ=3 THEN GOSUB 1410 +1250 RZ=0:I=FRST%(V-91):LPRINT V$(V); +1260 IF RZ=0 THEN LPRINT TAB(16); +1270 LN=RFL%(I):IF LN<0 THEN LN=LN+65536! +1280 LPRINT USING" #####";LN, +1290 RZ=RZ+1 +1300 IF RZ>6 THEN RZ=0:LPRINT:LZ=LZ+1:IF LZ>56 THEN GOSUB 1400 +1310 I=NXT%(I):IF I>0 THEN 1260 +1320 IF RZ>0 THEN LPRINT:LZ=LZ+1 +1330 GOTO 1230 +1340 NEXT J +1350 ' +1360 LPRINT STRING$(80,"=") +1370 LPRINT"LINES:"LC" BYTES:"BC" SYMBOLS:"VC-91" REFERENCES:"RC+1 +1380 LZ=LZ+2:RETURN +1390 ' +1400 GOSUB 1520:LPRINT"SYMBOL"TAB(20)"REFERENCE LINE":LZ=LZ+1 +1410 LPRINT STRING$(80,"-"):LZ=LZ+1:SZ=0:RETURN +1420 ' +1430 X=1 +1440 IF LZ>60 OR RIGHT$(L$,3)="'PG"THEN GOSUB 1520 +1450 Y=INSTR(X,L$,CHR$(10)):IF Y>0 THEN LPRINT MID$(L$,X,Y-X):LZ=LZ+1:X=Y+1:GOTO 1450 +1460 LPRINT MID$(L$,X,LW):LZ=LZ+1:X=X+LW:IF X1 THEN GOSUB 1990 +980 ' +990 ' INPUT LINE AND EXTRACT LINE NUMBER +1000 ' +1010 IF EOF(1) THEN 1660 +1020 LINE INPUT#1,L$:IF M>1 THEN GOSUB 1890:IF M=2 THEN 1010 +1030 LG=LEN(L$):BRNCH=0:ER$="":LC=LC+1:BC=BC+LG +1040 GOSUB 2070 +1050 PRINT "LEN=";LG;TAB(10);LEFT$(L$,65);TAB(78);"<" +1060 IF LN<10 THEN LP=2:GOTO 1110 +1070 IF LN<100 THEN LP=3:GOTO 1110 +1080 IF LN<1000 THEN LP=4:GOTO 1110 +1090 IF LN<10000 THEN LP=5:GOTO 1110 +1100 LP=6 +1110 IF LN>32767 THEN LN=LN-65536! +1120 ' +1130 ' PARSE REST OF LINE +1140 ' +1150 LP=LP+1:IF LP>LG THEN GOSUB 1470:GOTO 1010 +1160 C$=MID$(L$,LP,1) +1170 IF C$=CHR$(10) THEN LZ=LZ+1 +1180 IF C$>="A" AND C$<="Z" THEN 1300 ELSE IF C$>="0" AND C$<="9" THEN 1610 +1190 IF C$=" " THEN 1200 ELSE IF C$<>"," THEN BRNCH=0 +1200 IF C$=CHR$(34) THEN GOSUB 1470:LP=INSTR(LP+1,L$,C$):IF LP>0 THEN 1150 + ELSE 1010 +1210 IF C$="'" THEN GOSUB 1470:GOTO 1010 +1220 IF C$="&" THEN GOSUB 1470:V$=C$:GOTO 1150 +1230 IF C$="$" OR C$="!" OR C$="%" OR C$="#" THEN GOSUB 1590:GOTO 1150 +1240 IF C$="(" THEN GOSUB 1590 +1250 GOSUB 1470:IF C$<>"," THEN ER$="" +1260 GOTO 1150 +1270 ' +1280 ' TEST FOR COMMAND +1290 ' +1300 C=ASC(C$):P=PT%(C-ASC("A")):BRNCH=0 +1310 IF CLP THEN P=P+1:GOTO 1310 +1330 N$=MID$(L$,LP+LEN(RW$(P)),1) +1340 N=VAL(N$) +1350 IF N>47 AND N<58 AND N>64 AND N<90 AND N>94 THEN P=P+1:GOTO 1310 +1360 T$=MID$(L$,LP-1,1) +1370 IF (T$>="A" AND T$<="Z") OR (T$>="0" AND T$<="9") OR T$="." THEN 1620 +1380 GOSUB 1470:RW$=RW$(P) +1390 IF RW$="DATA" THEN LP=INSTR(LP,L$,":"):IF LP>0 THEN 1150 ELSE 1010 +1400 IF RW$="REM" THEN 1010 +1410 IF RW$="GOTO" OR RW$="GOSUB" OR RW$="THEN" OR RW$="ELSE" OR RW$="RESUME" + THEN BRNCH=1 +1420 IF RW$="ERASE" THEN ER$="(" ELSE ER$="" +1430 LP=LP+LEN(RW$)-1:GOTO 1150 +1440 ' +1450 ' END VARIABLE +1460 ' +1470 IF V$=""THEN RETURN +1480 IF V$>="A" THEN V$=V$+ER$:C=ASC(V$)+1 ELSE IF V$>="0" THEN + V$=RIGHT$(" "+V$,5):C=VAL(LEFT$(V$,2)) ELSE 1550 +1490 IL=-1:I=C +1500 IF V$>V$(I) THEN IL=I:I=VNXT%(I):IF I>0 THEN 1500 ELSE 1520 +1510 IF V$=V$(I) THEN J=LST%(I-91):IF RFL%(J)=LN THEN 1550 ELSE RC=RC+1: + NXT%(J)=RC:GOTO 1540 +1520 VC=VC+1:IF IL>=0 THEN VNXT%(IL)=VC +1530 V$(VC)=V$:VNXT%(VC)=I:RC=RC+1:FRST%(VC-91)=RC:I=VC +1540 RFL%(RC)=LN:NXT%(RC)=-1:LST%(I-91)=RC +1550 V$="":RETURN +1560 ' +1570 ' EXPAND VARIABLE +1580 ' +1590 IF V$<>"" THEN V$=V$+C$ +1600 RETURN +1610 IF V$="" AND BRNCH=0 THEN 1150 +1620 V$=V$+C$:GOTO 1150 +1630 ' +1640 ' LIST VARIABLES +1650 ' +1660 IF M=2 THEN RETURN +1670 GOSUB 1860 +1680 FOR J=0 TO 91:V=J +1690 V=VNXT%(V):IF V<0 THEN 1800 +1700 IF LZ>56 THEN GOSUB 1860 ELSE SZ=SZ+1:IF SZ=3 THEN GOSUB 1870 +1710 RZ=0:I=FRST%(V-91):LPRINT TAB(10) V$(V); +1720 IF RZ=0 THEN LPRINT TAB(26); +1730 LN=RFL%(I):IF LN<0 THEN LN=LN+65536! +1740 LPRINT USING " #####";LN, +1750 RZ=RZ+1 +1760 IF RZ>10 THEN RZ=0:LPRINT:LZ=LZ+1:IF LZ>56 THEN GOSUB 1870 +1770 I=NXT%(I):IF I>0 THEN 1720 +1780 IF RZ>0 THEN LPRINT:LZ=LZ+1 +1790 GOTO 1690 +1800 NEXT J +1810 ' +1820 LPRINT TAB(10) STRING$(122,"=") +1830 LPRINT TAB(10) "LINES: " LC " BYTES: " BC " SYMBOLS: " + VC-91 " REFERENCES: " RC+1 +1840 LZ=LZ+2:RETURN +1850 ' +1860 GOSUB 1990:LPRINT TAB(10) "SYMBOL" TAB(30) "REFERENCE LINE":LZ=LZ+1 +1870 LPRINT TAB(10) STRING$(122,"-"):LZ=LZ+1:SZ=0:RETURN +1880 ' +1890 X=1 +1900 IF LZ>60 THEN GOSUB 1990 +1910 IF RIGHT$(L$,3)="'PG" THEN GOSUB 1990 +1920 Y=INSTR(X,L$,CHR$(10)):IF Y>0 THEN LPRINT TAB(10) MID$(L$,X,Y-X): + LZ=LZ+1:IF ASC(MID$(L$,Y+1,1))=13 THEN X=Y+2 ELSE X=Y+1:GOTO 1920 +1930 LPRINT TAB(10) MID$(L$,X,LW):LZ=LZ+1:X=X+LW: + IF X This program presently supports the following printers:":PRINT +2560 FOR I=1 TO 8 STEP 2 +2570 PRINT " " CHR$(I+48) ") " PRNAME$(I) TAB(41) + CHR$(I+1+48) ") " PRNAME$(I+1) +2580 NEXT I +2590 PRINT:PRINT "> Please select the printer you wish to use .... "; +2600 R$=INKEY$:IF R$="" THEN 2600 ELSE PRINT R$ +2610 P=VAL(R$) +2620 IF P<1 OR P>8 THEN 2590 +2630 RETURN diff --git a/cppcheck1.txt b/cppcheck1.txt new file mode 100644 index 0000000..073e166 --- /dev/null +++ b/cppcheck1.txt @@ -0,0 +1,96 @@ +Checking bwb_cmd.c... +Checking bwb_cmd.c: __CMS__... +Checking bwb_cmd.c: __GNUC__... +Checking bwb_cmd.c: __MVS__... +1/20 files checked 12% done +Checking bwb_cnd.c... +Checking bwb_cnd.c: __CMS__... +Checking bwb_cnd.c: __GNUC__... +Checking bwb_cnd.c: __MVS__... +2/20 files checked 21% done +Checking bwb_dio.c... +Checking bwb_dio.c: __CMS__... +Checking bwb_dio.c: __GNUC__... +Checking bwb_dio.c: __MVS__... +3/20 files checked 22% done +Checking bwb_elx.c... +Checking bwb_elx.c: __CMS__... +Checking bwb_elx.c: __GNUC__... +Checking bwb_elx.c: __MVS__... +4/20 files checked 26% done +Checking bwb_exp.c... +Checking bwb_exp.c: __CMS__... +Checking bwb_exp.c: __GNUC__... +Checking bwb_exp.c: __MVS__... +5/20 files checked 30% done +Checking bwb_fnc.c... +Checking bwb_fnc.c: __CMS__... +Checking bwb_fnc.c: __GNUC__... +Checking bwb_fnc.c: __MVS__... +6/20 files checked 40% done +Checking bwb_inp.c... +Checking bwb_inp.c: __CMS__... +Checking bwb_inp.c: __GNUC__... +Checking bwb_inp.c: __MVS__... +7/20 files checked 46% done +Checking bwb_int.c... +Checking bwb_int.c: __CMS__... +Checking bwb_int.c: __GNUC__... +Checking bwb_int.c: __MVS__... +8/20 files checked 51% done +Checking bwb_ops.c... +Checking bwb_ops.c: __CMS__... +Checking bwb_ops.c: __GNUC__... +Checking bwb_ops.c: __MVS__... +9/20 files checked 57% done +Checking bwb_prn.c... +Checking bwb_prn.c: __CMS__... +Checking bwb_prn.c: __GNUC__... +Checking bwb_prn.c: __MVS__... +10/20 files checked 62% done +Checking bwb_stc.c... +Checking bwb_stc.c: __CMS__... +Checking bwb_stc.c: __GNUC__... +Checking bwb_stc.c: __MVS__... +11/20 files checked 63% done +Checking bwb_str.c... +Checking bwb_str.c: __CMS__... +Checking bwb_str.c: __GNUC__... +Checking bwb_str.c: __MVS__... +12/20 files checked 64% done +Checking bwb_tbl.c... +Checking bwb_tbl.c: __CMS__... +Checking bwb_tbl.c: __GNUC__... +Checking bwb_tbl.c: __MVS__... +13/20 files checked 65% done +Checking bwb_var.c... +Checking bwb_var.c: __CMS__... +Checking bwb_var.c: __GNUC__... +Checking bwb_var.c: __MVS__... +14/20 files checked 74% done +Checking bwbasic.c... +Checking bwbasic.c: __CMS__... +Checking bwbasic.c: __GNUC__... +Checking bwbasic.c: __MVS__... +15/20 files checked 81% done +Checking bwd_cmd.c... +Checking bwd_cmd.c: __CMS__... +Checking bwd_cmd.c: __GNUC__... +Checking bwd_cmd.c: __MVS__... +16/20 files checked 87% done +Checking bwd_fun.c... +Checking bwd_fun.c: __CMS__... +Checking bwd_fun.c: __GNUC__... +Checking bwd_fun.c: __MVS__... +17/20 files checked 96% done +Checking bwx_tty.c... +Checking bwx_tty.c: __CMS__... +Checking bwx_tty.c: __GNUC__... +Checking bwx_tty.c: __MVS__... +18/20 files checked 97% done +Checking renum.c... +19/20 files checked 99% done +Checking unixio.c... +Checking unixio.c: fileno... +20/20 files checked 100% done +Checking usage of global functions.. diff --git a/cppcheck2.txt b/cppcheck2.txt new file mode 100644 index 0000000..e3d9e3d --- /dev/null +++ b/cppcheck2.txt @@ -0,0 +1,27 @@ +[bwb_elx.c:438]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_elx.c:522]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_elx.c:580]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_elx.c:641]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_fnc.c:2005]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:937]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:1884]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:1967]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:2023]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:2083]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwbasic.c:1339]: (style) Variable 'LastChar' is assigned a value that is never used. +[renum.c:534]: (style) The scope of the variable 'm' can be reduced. +[unixio.c:92]: (error) Uninitialized variable: wb +[unixio.c:1]: (information) Skipping configuration 'fileno' since the value of 'fileno' is unknown. Use -D if you want to check it. You can use -U to skip it explicitly. +[unixio.c:131]: (style) The function 'access' is never used. +[unixio.c:95]: (style) The function 'close' is never used. +[unixio.c:126]: (style) The function 'fileno' is never used. +[unixio.c:136]: (style) The function 'fstat' is never used. +[unixio.c:105]: (style) The function 'getcwd' is never used. +[unixio.c:152]: (style) The function 'mktemp' is never used. +[unixio.c:25]: (style) The function 'open' is never used. +[unixio.c:142]: (style) The function 'pwait' is never used. +[unixio.c:61]: (style) The function 'read' is never used. +[unixio.c:120]: (style) The function 'stat' is never used. +[unixio.c:114]: (style) The function 'unlink' is never used. +[unixio.c:76]: (style) The function 'write' is never used. +(information) Cppcheck cannot find all the include files (use --check-config for details) diff --git a/cppcheck3.txt b/cppcheck3.txt new file mode 100644 index 0000000..9f1184a --- /dev/null +++ b/cppcheck3.txt @@ -0,0 +1,27 @@ +(information) Cppcheck cannot find all the include files (use --check-config for details) +[bwb_elx.c:438]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_elx.c:522]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_elx.c:580]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_elx.c:641]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_fnc.c:2005]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:1884]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:1967]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:2023]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:2083]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwb_inp.c:937]: (portability) scanf without field width limits can crash with huge input data on some versions of libc. +[bwbasic.c:1339]: (style) Variable 'LastChar' is assigned a value that is never used. +[renum.c:534]: (style) The scope of the variable 'm' can be reduced. +[unixio.c:105]: (style) The function 'getcwd' is never used. +[unixio.c:114]: (style) The function 'unlink' is never used. +[unixio.c:120]: (style) The function 'stat' is never used. +[unixio.c:126]: (style) The function 'fileno' is never used. +[unixio.c:131]: (style) The function 'access' is never used. +[unixio.c:136]: (style) The function 'fstat' is never used. +[unixio.c:142]: (style) The function 'pwait' is never used. +[unixio.c:152]: (style) The function 'mktemp' is never used. +[unixio.c:1]: (information) Skipping configuration 'fileno' since the value of 'fileno' is unknown. Use -D if you want to check it. You can use -U to skip it explicitly. +[unixio.c:25]: (style) The function 'open' is never used. +[unixio.c:61]: (style) The function 'read' is never used. +[unixio.c:76]: (style) The function 'write' is never used. +[unixio.c:92]: (error) Uninitialized variable: wb +[unixio.c:95]: (style) The function 'close' is never used. diff --git a/difflogs.bas b/difflogs.bas new file mode 100644 index 0000000..bc61bea --- /dev/null +++ b/difflogs.bas @@ -0,0 +1,36 @@ +rem Purpose: compare debug output from different systems +rem Author: Howard Wulf, AF5NE +rem Date: 2015-04-22 +rem Usage: implementation defined +rem Example: +rem ~/bwbasic difflogs.bas +rem +line input "six input file name:", A$ +line input "text input file name:", B$ +line input "diff output file name:", C$ +C = 32 +rem +open A$ for input as #1 +open B$ for input as #2 +open C$ for output as #3 +rem +do until eof( #1 ) or eof( #2 ) +line input #1, A$ +line input #2, B$ +A$ = trim$( A$ ) +B$ = trim$( B$ ) +A$ = left$( A$ + space$(C), C ) +B$ = left$( B$ + space$(C), C ) +C$ = A$ + B$ +if A$ <> B$ then + C$ = C$ + "<--- DIFFERENT" +end if +print #3, C$ +loop +rem +close #1 +close #2 +close #3 +rem +end + diff --git a/example.bas b/example.bas index a7e4118..d9c4c4b 100644 --- a/example.bas +++ b/example.bas @@ -2,4 +2,4 @@ x = 1 print "hello, world",x x = 2 print "hello, world",x -quit +end diff --git a/fncs.htm b/fncs.htm new file mode 100644 index 0000000..867be39 --- /dev/null +++ b/fncs.htm @@ -0,0 +1,190 @@ +

LEGEND


+ + + + + + + + + + + + + + + + + + +
IDNAMEDESCRIPTION
B14BYWATERBywater BASIC
D64DARTMOUTHDartmouth BASIC
E78ECMA-55ECMA-55
M80BASIC-80Microsoft BASIC-80
T83TRS-83TRS-80 Model III
T84TRS-84TRS-80 Model 4
M85GW-BASICMicrosoft GW-BASIC
E86ECMA-116ECMA-116
M88QBASICMicrosoft QBASIC
M90VBDOSMicrosoft VBDOS
M91VB1Microsoft VB1
M92VB2Microsoft VB2
M93VB3Microsoft VB3
M95VB4Microsoft VB4
M97VB5Microsoft VB5
M98VB6Microsoft VB6
+
+

DETAILS


+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FUNCTIONB14D64E78M80T83T84M85E86M88M90M91M92M93M95M97M98
ABSXXXXXXXXXXXXXXXX
ACOSX X
ANGLEX X
ARGCX
ARGT$X
ARGVX
ARGV$X
ASCXXXXXXXXXXXXXXXX
ASINX X
ATNXXXXXXXXXXXXXXXX
CCURX
CDBLX XXXX XXXXXXXX
CEILX X
CHDIRX XXXX XXXXXXXX
CHR$XXXXXXXXXXXXXXXX
CINTX XXXX XXXXXXXX
CLNGX XXXX XXXXXXXX
CLOSEX XXXX XXXXXXXX
CLSX XXXX XXXXXXXX
COLORX XXXX XXXXXXXX
COSXXXXXXXXXXXXXXXX
COSHX X
COTX X
CSCX X
CSNGX XXXX XXXXXXXX
CVCX
CVDX XXXX XXXXXXXX
CVIX XXXX XXXXXXXX
CVLX XXXX XXXXXXXX
CVSX XXXX XXXXXXXX
DATEX X
DATE$X XXXXXXXXXXXXX
DEF FNXXXXXXXXXXXXXXXX
DEGX X
ENVIRONX XXXX XXXXXXXX
ENVIRON$X XXXX XXXXXXXX
EOFX XXXX XXXXXXXX
EPSX X
ERLX XXXX XXXXXXXX
ERRX XXXX XXXXXXXX
ERR$X XXXX XXXXXXXX
ERRORX XXXX XXXXXXXX
ERRORX
EXPXXXXXXXXXXXXXXXX
FILEATTRX XXXX XXXXXXXX
FILESX XXXX XXXXXXXX
FILESX XXXX XXXXXXXX
FIXXXXXXXXXXXXXXXXX
FPX X
FREX XXXX XXXXXXXX
FREX XXXX XXXXXXXX
FREX XXXX XXXXXXXX
FREEFILEX XXXXXXXX
GETX XXXX XXXXXXXX
GETX XXXX XXXXXXXX
HEX$X XXXX XXXXXXXX
INKEY$X XXXX XXXXXXXX
INPX XXXX XXXXXXXX
INPUT$X XXXX XXXXXXXX
INPUT$X XXXX XXXXXXXX
INSTRX XXXX XXXXXXXX
INSTRX XXXX XXXXXXXX
INTXXXXXXXXXXXXXXXX
IPX X
KILLX XXXX XXXXXXXX
LCASE$X XXXXXXXXXXXXX
LEFT$X XXXXXXXXXXXXX
LENXXXXXXXXXXXXXXXX
LOCX XXXXXXXXXXXXX
LOCATEX XXXX XXXXXXXX
LOFX XXXXXXXXXXXXX
LOGXXXXXXXXXXXXXXXX
LOG10X X
LOG2X X
LPOSX XXXX XXXXXXXX
LTRIM$X XXXXXXXXXXXXX
LWIDTHX XXXX XXXXXXXX
MAXX X
MAXBYTX
MAXCURX
MAXDBLX
MAXDEVX
MAXINTX
MAXLENX X
MAXLNGX
MAXLVLX
MAXNUMX X
MAXSNGX
MID$X XXXXXXXXXXXXX
MID$X XXXXXXXXXXXXX
MINX X
MINBYTX
MINCURX
MINDBLX
MINDEVX
MININTX
MINLNGX
MINNUMX
MINSNGX
MKC$X
MKD$X XXXX XXXXXXXX
MKDIRX XXXX XXXXXXXX
MKI$X XXXX XXXXXXXX
MKL$X XXXX XXXXXXXX
MKS$X XXXX XXXXXXXX
MOD X
NAMEX XXXX XXXXXXXX
NULLX XXXX XXXXXXXX
OCT$X XXXX XXXXXXXX
OPENX XXXX XXXXXXXX
OPENX XXXX XXXXXXXX
ORDX X
OUTX XXXX XXXXXXXX
PEEKX XXXX XXXXXXXX
PIX X
POKEX XXXX XXXXXXXX
POSX XXXX XXXXXXXX
POSX XXXX XXXXXXXX
POSX X
POSX X
PUTX XXXX XXXXXXXX
PUTX XXXX XXXXXXXX
RADX X
RANDOMIZEXXXXXXXXXXXXXXXX
RANDOMIZEXXXXXXXXXXXXXXXX
REMAINDERX X
REPEAT$X XXXX XXXXXXXX
REPEAT$X XXXX XXXXXXXX
RESETX XXXX XXXXXXXX
RIGHT$X XXXXXXXXXXXXX
RMDIRX XXXX XXXXXXXX
RNDXXXXXXXXXXXXXXXX
RNDXXXXXXXXXXXXXXXX
ROUNDX X
RTRIM$X XXXXXXXXXXXXX
SECX X
SEEKX XXXXXXXXXXXXX
SEEKX XXXX XXXXXXXX
SGNXXXXXXXXXXXXXXXX
SHELLX XXXX XXXXXXXX
SINXXXXXXXXXXXXXXXX
SINHX X
SPACE$X XXXX XXXXXXXX
SPCXXXXXXXXXXXXXXXX
SQRXXXXXXXXXXXXXXXX
STR$XXXXXXXXXXXXXXXX
STRING$X XXXXXXXXXXXXX
STRING$X XXXXXXXXXXXXX
TABXXXXXXXXXXXXXXXX
TANXXXXXXXXXXXXXXXX
TANHX X
TIMEX X
TIME$X XXXXXXXXXXXXX
TIMERX XXXX XXXXXXXX
TRIM$X XXXXXXXXXXXXX
TROFFX XXXXXXXXXXXXX
TRONX XXXXXXXXXXXXX
TRUNCATEX X
UCASE$X XXXXXXXXXXXXX
VALXXXXXXXXXXXXXXXX
WAITX XXXX XXXXXXXX
WAITX XXXX XXXXXXXX
WIDTHX XXXX XXXXXXXX
WIDTHX XXXX XXXXXXXX
+ diff --git a/makefile.qcl b/makefile.qcl index 601da3a..007c7ed 100644 --- a/makefile.qcl +++ b/makefile.qcl @@ -4,9 +4,7 @@ # the QuickC integrated environment. To make the program: # type "nmake -f makefile.qcl". # -# To implement the bwx_iqc implementation (using specific -# features for the IBM PC and compatibles), chainge each -# instance of "bwx_tty" to "bwx_iqc". +# 2015-04-25 Updated for version 3.00 by Howard Wulf, AF5NE # PROJ= bwbasic CC= qcl @@ -22,12 +20,12 @@ CFLAGS= -O -AL -W3 -Za -DMSDOS LFLAGS= /NOE /ST:8192 -OFILES= bwbasic.obj bwb_int.obj bwb_tbl.obj bwb_cmd.obj bwb_prn.obj\ - bwb_exp.obj bwb_var.obj bwb_inp.obj bwb_fnc.obj bwb_cnd.obj\ - bwb_ops.obj bwb_dio.obj bwb_str.obj bwb_elx.obj bwb_mth.obj\ - bwb_stc.obj bwb_par.obj bwx_tty.obj +OFILES= bwbasic.obj bwb_cmd.obj bwb_cnd.obj bwb_dio.obj bwb_elx.obj\ + bwb_exp.obj bwb_fnc.obj bwb_inp.obj bwb_int.obj bwb_ops.obj\ + bwb_prn.obj bwb_stc.obj bwb_str.obj bwb_tbl.obj bwb_var.obj\ + bwd_cmd.obj bwd_fun.obj bwx_tty.obj -HFILES= bwbasic.h bwb_mes.h +HFILES= bwbasic.h all: $(PROJ).exe @@ -38,20 +36,20 @@ $(PROJ).exe: $(OFILES) bwbasic.obj + bwb_cmd.obj + bwb_cnd.obj + +bwb_dio.obj + +bwb_elx.obj + +bwb_exp.obj + bwb_fnc.obj + bwb_inp.obj + bwb_int.obj + +bwb_ops.obj + bwb_prn.obj + +bwb_stc.obj + +bwb_str.obj + bwb_tbl.obj + bwb_var.obj + -bwb_exp.obj + -bwb_ops.obj + -bwb_dio.obj + -bwb_str.obj + -bwb_elx.obj + -bwb_mth.obj + -bwb_stc.obj + -bwb_par.obj + +bwd_cmd.obj + +bwd_fun.obj + bwx_tty.obj + $(OBJS_EXT) $(PROJ).exe @@ -61,3 +59,4 @@ $(LIBS_EXT); link $(LFLAGS) @$(PROJ).crf erase $(PROJ).crf +# EOF diff --git a/makefile.wcl386 b/makefile.wcl386 index d1912cd..d7910c5 100644 --- a/makefile.wcl386 +++ b/makefile.wcl386 @@ -4,11 +4,9 @@ # Adapted from makefile.qcl # by Bill Chatfield # -# To make the program type: wmake -f makefile.wcl386 +# 2015-04-25 Updated for version 3.00 by Howard Wulf, AF5NE # -# To implement the bwx_iqc implementation (using specific -# features for the IBM PC and compatibles), chainge each -# instance of "bwx_tty" to "bwx_iqc". +# To make the program type: wmake -f makefile.wcl386 # # The WATCOM environment variable should have been set # to the top directory of the Open Watcom C installation. @@ -40,15 +38,14 @@ CFLAGS= -bc -c -ox -q -wx -za -DMSDOS LFLAGS= OPTION QUIET -OFILES= bwbasic.obj bwb_int.obj bwb_tbl.obj bwb_cmd.obj bwb_prn.obj & - bwb_exp.obj bwb_var.obj bwb_inp.obj bwb_fnc.obj bwb_cnd.obj & - bwb_ops.obj bwb_dio.obj bwb_str.obj bwb_elx.obj bwb_mth.obj & - bwb_stc.obj bwx_tty.obj +OFILES= bwbasic.obj bwb_cmd.obj bwb_cnd.obj bwb_dio.obj bwb_elx.obj & + bwb_exp.obj bwb_fnc.obj bwb_inp.obj bwb_int.obj bwb_ops.obj & + bwb_prn.obj bwb_stc.obj bwb_str.obj bwb_tbl.obj bwb_var.obj & + bwd_cmd.obj bwd_fun.obj bwx_tty.obj -HFILES= bwbasic.h bwb_mes.h +HFILES= bwbasic.h -ZFILES= bwbasic.exe bwbasic.doc INSTALL COPYING README & - README.patch01 README.patch02 +ZFILES= bwbasic.exe bwbasic.doc INSTALL COPYING README all: $(PROJ).exe @@ -59,43 +56,45 @@ clean: .SYMBOLIC del $(OFILES) *.err $(PROJ).exe dist: .SYMBOLIC - zip bwbasic-2.30-win32.zip $(ZFILES) - + zip bwbasic-3.00-win32.zip $(ZFILES) .c.obj: .AUTODEPEND $(CC) $(CFLAGS) $[@ bwbasic.obj: bwbasic.c $(HFILES) $(__MAKEFILES__) -bwb_int.obj: bwb_int.c $(HFILES) $(__MAKEFILES__) +bwb_cmd.obj: bwb_cmd.c $(HFILES) $(__MAKEFILES__) -bwb_tbl.obj: bwb_tbl.c $(HFILES) $(__MAKEFILES__) +bwb_cnd.obj: bwb_cnd.c $(HFILES) $(__MAKEFILES__) -bwb_cmd.obj: bwb_cmd.c $(HFILES) $(__MAKEFILES__) +bwb_dio.obj: bwb_dio.c $(HFILES) $(__MAKEFILES__) -bwb_prn.obj: bwb_prn.c $(HFILES) $(__MAKEFILES__) +bwb_elx.obj: bwb_elx.c $(HFILES) $(__MAKEFILES__) bwb_exp.obj: bwb_exp.c $(HFILES) $(__MAKEFILES__) -bwb_var.obj: bwb_var.c $(HFILES) $(__MAKEFILES__) +bwb_fnc.obj: bwb_fnc.c $(HFILES) $(__MAKEFILES__) bwb_inp.obj: bwb_inp.c $(HFILES) $(__MAKEFILES__) -bwb_fnc.obj: bwb_fnc.c $(HFILES) $(__MAKEFILES__) - -bwb_cnd.obj: bwb_cnd.c $(HFILES) $(__MAKEFILES__) +bwb_int.obj: bwb_int.c $(HFILES) $(__MAKEFILES__) bwb_ops.obj: bwb_ops.c $(HFILES) $(__MAKEFILES__) -bwb_dio.obj: bwb_dio.c $(HFILES) $(__MAKEFILES__) +bwb_prn.obj: bwb_prn.c $(HFILES) $(__MAKEFILES__) + +bwb_stc.obj: bwb_stc.c $(HFILES) $(__MAKEFILES__) bwb_str.obj: bwb_str.c $(HFILES) $(__MAKEFILES__) -bwb_elx.obj: bwb_elx.c $(HFILES) $(__MAKEFILES__) +bwb_tbl.obj: bwb_tbl.c $(HFILES) $(__MAKEFILES__) -bwb_mth.obj: bwb_mth.c $(HFILES) $(__MAKEFILES__) +bwb_var.obj: bwb_var.c $(HFILES) $(__MAKEFILES__) -bwb_stc.obj: bwb_stc.c $(HFILES) $(__MAKEFILES__) +bwd_cmd.obj: bwd_cmd.c $(HFILES) $(__MAKEFILES__) + +bwd_fun.obj: bwd_fun.c $(HFILES) $(__MAKEFILES__) bwx_tty.obj: bwx_tty.c $(HFILES) $(__MAKEFILES__) +# EOF diff --git a/profile.bas b/profile.bas index bfc3acb..fbfce41 100644 --- a/profile.bas +++ b/profile.bas @@ -1 +1,56 @@ -rem dummy +REM OPTION VERSION BYWATER ' Bywater BASIC +REM OPTION VERSION DARTMOUTH ' Dartmouth BASIC +REM OPTION VERSION ECMA-55 ' ECMA-55 +REM OPTION VERSION BASIC-80 ' Microsoft BASIC-80 +REM OPTION VERSION TRS-83 ' TRS-80 Model III +REM OPTION VERSION TRS-84 ' TRS-80 Model 4 +REM OPTION VERSION GW-BASIC ' Microsoft GW-BASIC +REM OPTION VERSION ECMA-116 ' ECMA-116 +REM OPTION VERSION QBASIC ' Microsoft QBASIC +REM OPTION VERSION VBDOS ' Microsoft VBDOS +REM OPTION VERSION VB1 ' Microsoft VB1 +REM OPTION VERSION VB2 ' Microsoft VB2 +REM OPTION VERSION VB3 ' Microsoft VB3 +REM OPTION VERSION VB4 ' Microsoft VB4 +REM OPTION VERSION VB5 ' Microsoft VB5 +REM OPTION VERSION VB6 ' Microsoft VB6 +REM OPTION ANGLE DEGREES +REM OPTION ANGLE RADIANS +REM OPTION ARITHMETIC DECIMAL +REM OPTION ARITHMETIC FIXED +REM OPTION ARITHMETIC NATIVE +REM OPTION BASE 0 +REM OPTION BASE 1 +REM OPTION BUGS OFF +REM OPTION BUGS ON +REM OPTION COMMENT ! +REM OPTION COMPARE BINARY +REM OPTION COMPARE DATABASE +REM OPTION COMPARE TEXT +REM OPTION COVERAGE OFF +REM OPTION COVERAGE ON +REM OPTION DATE "%m/%d/%Y" +REM OPTION DISABLE COMMAND QUIT +REM OPTION DISABLE FUNCTION PI +REM OPTION DISABLE OPERATOR MOD +REM OPTION ENABLE COMMAND QUIT +REM OPTION ENABLE FUNCTION PI +REM OPTION ENABLE OPERATOR MOD +REM OPTION ERROR GOSUB +REM OPTION ERROR GOTO +REM OPTION INDENT number +REM OPTION LABELS OFF +REM OPTION LABELS ON +REM OPTION STATEMENT \ +REM OPTION STRICT OFF +REM OPTION STRICT ON +REM OPTION TERMINAL ADM-3A +REM OPTION TERMINAL ANSI +REM OPTION TERMINAL NONE +REM OPTION TIME "%H:%M:%S" +REM OPTION TRACE OFF +REM OPTION TRACE ON +REM MAINTAINER DEBUG ON +REM LET BWB.EDITOR$ = "nano" +REM LET BWB.FILES$ = "ls -Fx" +REM LET BWB.PROMPT$ = "bwBASIC: " diff --git a/profile.bas.log b/profile.bas.log new file mode 100644 index 0000000..c7e162e --- /dev/null +++ b/profile.bas.log @@ -0,0 +1 @@ +MAINTAINER DEBUG ON diff --git a/renum.c b/renum.c index 4b87daf..ba41e16 100644 --- a/renum.c +++ b/renum.c @@ -6,6 +6,7 @@ /*-------------------------------------------------------------------*/ #include +#include int instr(); char *midstr1(); @@ -45,7 +46,11 @@ main(argc, argv) } strcpy(f9str, pstr); +#if !defined(__MVS__) && !defined(__CMS__) strcpy(pstr, "editfl"); +#else + strcpy(pstr, "dd:editfl"); +#endif fdout = fopen(pstr, "w"); if (fdout == NULL) { @@ -88,6 +93,8 @@ main(argc, argv) } } fclose(fdin); + + strcpy(pstr, ""); if (s == 0) { @@ -465,8 +472,10 @@ main(argc, argv) fclose(fdin); fclose(fdout); +#if !defined(__MVS__) && !defined(__CMS__) sprintf(tempstr, "mv editfl %s\0", f9str); system(tempstr); +#endif return (0); } @@ -474,13 +483,19 @@ main(argc, argv) int instr(astr, bstr) char *astr, *bstr; { - int p; + char *p; + int q; p = strstr(astr, bstr); - if (p == NULL) p = (int)(astr) - 1; - p = p - (int)(astr) + 1; - - return p; + if (p == NULL) + { + q = 0; + } + else + { + q = (p - astr) + 1; + } + return q; } diff --git a/six2text.bas b/six2text.bas new file mode 100644 index 0000000..e8eed69 --- /dev/null +++ b/six2text.bas @@ -0,0 +1,76 @@ +rem Purpose: convert 6 character (CMS/MVS) debug output to text +rem Author: Howard Wulf, AF5NE +rem Date: 2015-04-22 +rem Usage: implementation defined +rem Example: +rem ~/bwbasic six2text.bas +rem +line input " six input file name:", A$ +A = len( A$ ) +line input "text output file name:", B$ +B = len( B$) +REM line input " six lookup file name:", C$ +C$ = "bwd_six.h" +C = len( C$ ) +D$ = "#define " +D = len( D$ ) +X$ = "X" +X = len( X$ ) +Z$ = "" +Z = 0 +rem Open files +open A$ for input as #1 +open B$ for output as #2 +open C$ for input as #3 +rem For Each line in the six debug output +do until eof( #1 ) + line input #1, A$ + rem A$ = "X123456" + rem print A$ + Z = Z + 1 + print "line #"; Z + A$ = trim$( A$ ) + A = len( A$ ) + rem default the output + B$ = A$ + if A = 6 and left$( A$, X ) = X$ then + rem A$ = "X123456" + rem Search "bwd_six.h" for a line that looks like "#define ... X123456" + seek #3, 1 + do until eof( #3 ) + line input #3, C$ + C$ = trim$( C$ ) + C = len( C$ ) + if left$( C$, D ) = D$ and right$( C$, A ) = A$ then + rem C$ = "#define ... X123456" + rem print C$ + B$ = mid$( C$, D, C - D - A ) + B$ = trim$( B$ ) + rem FOUND + exit do + end if + loop + end if + print #2, B$ +loop +rem +close #1 +close #2 +close #3 +rem +rem Variable Usage +rem +rem A$ Input File Name; Input Text Line +rem A Length of A$ +rem B$ Output File Name; Output Text Line +rem B Length of B$ +rem C$ Lookup file Name; Lookup Text Line +rem C Length of C$ +rem D$ Constant "#define " +rem D Length of D$ +rem X$ Constant "X" +rem X Length of X$ +rem Z$ Not Used +rem Z Line Count +rem +end diff --git a/vvv.sh b/vvv.sh new file mode 100644 index 0000000..5307ea1 --- /dev/null +++ b/vvv.sh @@ -0,0 +1,12 @@ +# Filename: vvv.sh +# Purpose: source code review, similar to "lint" +# Author: Howard Wulf, AF5NE +# Date: 2015-01-29 +# Uasage: implementation defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic-2.62/ +# ash ./vvv.sh +# +cppcheck --std=c89 --enable=all . 1> cppcheck1.txt 2> cppcheck2.txt +sort < cppcheck2.txt > cppcheck3.txt +# EOF diff --git a/xxx.sh b/xxx.sh new file mode 100644 index 0000000..b7e27d5 --- /dev/null +++ b/xxx.sh @@ -0,0 +1,44 @@ +# Filename: xxx.sh +# Purpose: compile source code +# Author: Howard Wulf, AF5NE +# Date: 2015-01-29 +# Uasage: implementation defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic-2.62/ +# ash ./yyy.sh +# + +# cleanup +rm -f bwbasic +rm -f *.o + +# for normal compile +# gcc -DHAVE_ISNAN -o bwbasic -lm -ansi -pedantic -Wall -Werror bw*.c + + +# for broken strpcy() +# gcc -DHAVE_ISNAN -DBROKEN_STRCPY -o bwbasic -lm -ansi -pedantic -Wall -Werror bw*.c + + + +# for regression testing +gcc -DHAVE_ISNAN -DAUTOMATED_REGRESSION -o bwbasic -lm -ansi -pedantic -Wall -Werror bw*.c + + +# for regression testing with broken strpcy() +# gcc -DHAVE_ISNAN -DAUTOMATED_REGRESSION -DBROKEN_STRCPY -o bwbasic -lm -ansi -pedantic -Wall -Werror bw*.c + + +# On my system, I have to copy the binary to another location +cp bwbasic ~/ + +# cleanup +rm -f bwbasic + +# make executable +chmod 764 ~/bwbasic + +# start exectuable +~/bwbasic + +# EOF diff --git a/zzz.sh b/zzz.sh new file mode 100644 index 0000000..da4a0f8 --- /dev/null +++ b/zzz.sh @@ -0,0 +1,31 @@ +# Filename: zzz.sh +# Purpose: execute all regression tests +# Author: Howard Wulf, AF5NE +# Date: 2015-05-09 +# Uasage: implementation defined +# Example: +# cd /sdcard/Download/BASIC/bwbasic-2.62/ +# ash ./zzz.sh + +cd BP100 +ash ./00test.sh +cd .. + +cd SCBP/ +ash ./00test.sh +cd .. + +cd SKYTEL/ +ash ./00test.sh +cd .. + +cd bwbtest/ +ash ./00test.sh +cd .. + +cd NBS2/ +ash ./00test.sh +ash ./01test.sh +cd .. + +# EOF